{"report_id":"94bca47d-b9d2-4506-b7e3-7ed07e235731","version":0,"status":"done","tags":[],"date":"2026-07-27T09:47:44Z","url":{"schema":"https","addr":"bit-core.top/","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"91.108.98.181","port":0,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"final":{"url":{"schema":"https","addr":"bit-core.top/","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"title":"bit-core.top","dom":{"size":43010,"mime_type":"text/html; charset=utf-8","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (998)","md5":"336a3f675a0005c8c6badc14bb342985","sha1":"48c3593f5a15ea625d54a1f10be350f0759fab15","sha256":"5ff36698275a8f943cd6cb9c61019cf7d7e960b8c07e3927a1516077a12d22e0","sha512":"78d9229bdf5e39bab59356f9a0cbdeabb080ff7e0d54fd4eee66071c3655c9caa1e0bacd514f979c136b55dddb08b39aadacb060054db192606ad58d1aea4ff4","ssdeep":"384:3gecrzzzWuu1RubJpTH/SOixYZkYvXGFR5G2SbmLg0fkEKlJGp2b:3gegnzl8KTgxgvWFxC","tlshash":"d413a36154f31017428380e6b7b6ab2a6f95d103ca0bcd55bbfc4a898fd7d928e5336c","dom_hash":"domhashf891dc58747bb882d73631dbdfc9ef79","first_seen":"","last_seen":"","times_seen":0,"resource_available":false,"data":null}},"submit":{"url":{"schema":"https","addr":"bit-core.top/","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"91.108.98.181","port":0,"asn":47583,"as":"Hostinger International Limited","country":"The Netherlands","country_code":"NL"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-31T09:47:44Z","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":0}},"detection":{"ids":null,"analyzer":null,"urlquery":null},"summary":[{"fqdn":"bit-core.top","ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"domain_registered":"2025-10-13","domain_rank":0,"first_seen":"2026-07-27T08:06:11.388048Z","last_seen":"2026-07-27T08:06:11.388049Z","alert_count":0,"request_count":21,"received_data":1826442,"sent_data":11517,"comment":"","tags":null,"fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Bootstrap:3.3.7","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"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":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]},{"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":"Stimulus","description":"A modest JavaScript framework for the HTML you already have.","website":"https://stimulusjs.org/","common_platform_enumeration":"","icon":"Stimulus.svg","categories":["JavaScript frameworks"]},{"name":"OneSignal","description":"OneSignal is a customer engagement messaging solution.","website":"https://onesignal.com","common_platform_enumeration":"","icon":"OneSignal.svg","categories":["Marketing automation","A/B Testing"]},{"name":"Tidio","description":"Tidio is a customer communication product. It provides multi-channel support so users can communicate with customers on the go. Live chat, messenger, or email are all supported.","website":"https://www.tidio.com","common_platform_enumeration":"","icon":"Tidio.svg","categories":["Live chat"]},{"name":"PHP:7.4.33","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]}]},{"fqdn":"widget.intercom.io","ip":{"addr":"52.84.50.103","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"domain_registered":"2011-08-15","domain_rank":19213,"first_seen":"2020-07-20T12:16:46Z","last_seen":"2026-07-20T12:36:38.877299Z","alert_count":0,"request_count":1,"received_data":8366,"sent_data":461,"comment":"","tags":null,"fingerprints":[{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]},{"name":"Amazon CloudFront","description":"Amazon CloudFront is a fast content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to customers globally with low latency, high transfer speeds.","website":"https://aws.amazon.com/cloudfront/","common_platform_enumeration":"","icon":"Amazon Cloudfront.svg","categories":["CDN"]},{"name":"Amazon S3","description":"Amazon S3 or Amazon Simple Storage Service is a service offered by Amazon Web Services (AWS) that provides object storage through a web service interface.","website":"https://aws.amazon.com/s3/","common_platform_enumeration":"","icon":"Amazon S3.svg","categories":["CDN"]}]},{"fqdn":"socket.tidio.co","ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2014-06-01","domain_rank":107322,"first_seen":"2017-11-23T13:17:52Z","last_seen":"2026-07-24T07:25:34.813483Z","alert_count":0,"request_count":1,"received_data":597,"sent_data":764,"comment":"","tags":null,"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"]}]},{"fqdn":"metrics-collector.tidio.co","ip":{"addr":"104.26.0.115","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2014-06-01","domain_rank":836147,"first_seen":"2023-04-24T07:30:30Z","last_seen":"2026-07-25T14:53:18.367331Z","alert_count":0,"request_count":2,"received_data":1197,"sent_data":1127,"comment":"","tags":null,"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"]}]},{"fqdn":"api-iam.intercom.io","ip":{"addr":"52.2.13.117","port":443,"asn":14618,"as":"AMAZON-AES","country":"United States","country_code":"US"},"domain_registered":"2011-08-15","domain_rank":17818,"first_seen":"2018-08-02T22:07:54Z","last_seen":"2026-07-22T18:36:33.363011Z","alert_count":0,"request_count":2,"received_data":2248,"sent_data":1137,"comment":"","tags":null,"fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Nginx","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}]},{"fqdn":"cdnjs.cloudflare.com","ip":{"addr":"104.17.25.14","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2009-02-17","domain_rank":1222,"first_seen":"2012-05-23T12:49:49Z","last_seen":"2026-07-26T22:43:30.214545Z","alert_count":0,"request_count":3,"received_data":220302,"sent_data":1704,"comment":"","tags":null,"fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"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"]}]},{"fqdn":"js.intercomcdn.com","ip":{"addr":"3.164.240.120","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"domain_registered":"2013-04-25","domain_rank":23692,"first_seen":"2020-02-19T12:43:00Z","last_seen":"2026-07-20T20:30:03.464796Z","alert_count":0,"request_count":2,"received_data":1647079,"sent_data":917,"comment":"","tags":null,"fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Amazon CloudFront","description":"Amazon CloudFront is a fast content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to customers globally with low latency, high transfer speeds.","website":"https://aws.amazon.com/cloudfront/","common_platform_enumeration":"","icon":"Amazon Cloudfront.svg","categories":["CDN"]},{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]},{"name":"Amazon S3","description":"Amazon S3 or Amazon Simple Storage Service is a service offered by Amazon Web Services (AWS) that provides object storage through a web service interface.","website":"https://aws.amazon.com/s3/","common_platform_enumeration":"","icon":"Amazon S3.svg","categories":["CDN"]}]},{"fqdn":"code.tidio.co","ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2014-06-01","domain_rank":120056,"first_seen":"2014-11-27T09:26:14Z","last_seen":"2026-07-24T11:10:32.108544Z","alert_count":0,"request_count":11,"received_data":1647647,"sent_data":5660,"comment":"","tags":null,"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"]}]}],"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":"code.tidio.co/widget-v4/1_447_0/static/js/widget.c201a34ef1bfdb786fba.js","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"9e5c54a1193f203bb8b8256bc777cb32","sha1":"0d6532cdd75d9546375c06a489f24f1e0b770235","sha256":"939b501bd754a041cbc5e5a2076a158b66a96e7b9a0247b6e9398b95cfd61a41","sha512":"8cb3ad5ec0d7f695defb9ab5cc2bc0ced2de2eb335285c0264c685225024d7a593abafd610643692469c8ec946ea0be4d0d5e5a88c5cd274ec1407fa2ad58cae","ssdeep":"6144:g0lLcSomMqTNITNVihh+tsAitql5ELWlStVLBUExehbP17Vll4XP1S+kiZv:g0dcSomQTNIhh+oWI/LhehbPtyVZv","tlshash":"61c41ad871d2f06247e311a6407f5107f33e195a380d8490f668edeab87958ea237fad","size":590626,"data":"","first_seen":"2026-07-27T07:44:11.949124Z","last_seen":"2026-07-27T10:17:04.952912Z","times_seen":9,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"widget.intercom.io/widget/p60ru8yf","fqdn":"widget.intercom.io","domain":"intercom.io","tld":"io"},"ip":{"addr":"52.84.50.103","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"64323637c5757fe2bdc37bc1697c131b","sha1":"17615e72f6a5c035e9d59f979f1d74472a2839d1","sha256":"8891fe40795928600c2b6a8981fe3f0cb1c4aea8950005aa4a01fb1c00f769bb","sha512":"582c9429172ba70962ec855b69346da532af2a1e9018380eec47ca06694e19bc5efbd5a7007f034ba6e0aaa446b4c7e4080662d3de965a0aecc8f8f5ec43219a","ssdeep":"96:p2NH8/xVRyhsXtpZ8HEZgOM09SP0FfpdYMYozfDsJeiMw938I5Zv1JVqUP:p2YVNCH8bMFOrYMYoMMiZ935pqUP","tlshash":"1ff195feb6c2793806a31576623b770c3e3b654528494490d066c8cc7a76dcbc16bfad","size":7614,"data":"","first_seen":"2026-07-24T18:07:21.49761Z","last_seen":"2026-07-27T12:56:09.795236Z","times_seen":282,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"js.intercomcdn.com/frame.592a94f6.js","fqdn":"js.intercomcdn.com","domain":"intercomcdn.com","tld":"com"},"ip":{"addr":"3.164.240.120","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"5bf2177017b3e1915d1fcef960ccbef3","sha1":"30b428a5f19dfe0aaef8afbccb40ff829a5bbbd5","sha256":"31f4adefb7aec429b24ce1cf7e98614e50b7eea5ab82669b4786c3a5a858f004","sha512":"31401f77ddcfea44b91a53073dc8fc55b46d4ed56737c1d1744e36b75f7701ce8878970173bdeb02c66e8f27a8b609d37cedb37d1e720fa08be8c06d71f0b8a5","ssdeep":"12288:kNmFat0p7kl4r+RdFnGMgo/aH/5w7ZqSPUs/8kxs:TKlfFnG/d/8Wkxs","tlshash":"0745b6ccb2d6f06a43976175813f200af33e6996b44d8054e629e8d1bcb958da237f7c","size":1247851,"data":"","first_seen":"2026-07-24T18:07:21.559236Z","last_seen":"2026-07-27T12:56:09.804149Z","times_seen":278,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"js.intercomcdn.com/vendor.f6b64953.js","fqdn":"js.intercomcdn.com","domain":"intercomcdn.com","tld":"com"},"ip":{"addr":"3.164.240.120","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"4d9436d68f9ee1f2389a2de10ddbbdd3","sha1":"a472e4820eef593bcf64720e8c11175598a34036","sha256":"94b057d90fbc8cc546a4d555f636fd8ff6a9013c892081a180e2b9023dba9e49","sha512":"fd612974dcbff1a442af50f95441ee1f520eb30b9d8af4687fa2c1f15e077262bef5072b504e3a0144653a4c7170178ba0c9eb3fbbf431a67d315caf82f444d8","ssdeep":"6144:gO9oPLOHjCCmnwIRTyphvMFWfwuTqhhOA4OpF:gOqPLOHjCrwIRTyplMFWfwT3","tlshash":"88843a9db691f47107a712f6807f140bf3ba1969344c4450faa9c8dd28f998d923bf2e","size":397454,"data":"","first_seen":"2026-07-14T15:01:34.133346Z","last_seen":"2026-07-29T07:01:07.111324Z","times_seen":1861,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":true,"md5":"89b789a9f8847e5121b485c26371e785","sha1":"5078681955585ff147d04dd7bf851fd7c58064b5","sha256":"8bd237d850c376e34f24724783d432477fc74c78d6c4f832ad6e73c06db6a9a4","sha512":"0ce11b3e46bf6e22fd033ba439f728158a45babbbeaa3d86def4c3470d1a493607065183fcb33625194df6782ce41991c529390aafa723498d8c706c53d9af57","ssdeep":"","tlshash":"cdf0e50f25f5da90102b382cc95fa44571b2831304e6ee103fed46e0aff022e99b2e46","size":608,"data":"","first_seen":"2026-07-27T02:49:41.073088Z","last_seen":"2026-07-27T09:48:29.903955Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":true,"md5":"a999dcdbd3aea5e4e855d36e95b6f58f","sha1":"dc985086ecd67eac1fd0dc013baa6f6e3062fc7a","sha256":"1c2684e77da91db50fc0a926ab3036b9eea0b8ef6cf442181328878233891f1c","sha512":"03996d0632ed518ed2a061ac58a71442fe17977c2df22c211e147ad5fa3b8116a62f7a702548d268fae15d9d2ac0e3c3b75a013f3aa90d0902f42a2a6ea30e96","ssdeep":"","tlshash":"ae21b15b5dd7106c5a27b0394b7fb1092a36508b2484cc00be4cd54c9f959b54b7dbed","size":1433,"data":"","first_seen":"2026-07-27T02:49:41.074152Z","last_seen":"2026-07-27T09:48:29.904802Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":true,"md5":"6b57fb2010cd7aadbaf17ee61654e9cc","sha1":"571850a9c0446bc5bc33d2483ed5e555496a4af1","sha256":"706d681ba4dcf5f6be4a60b27e598a076e93706ff8e30b073ee8f66a28b18a55","sha512":"d554bd148b98f0e0b38045583e72c9859dda07d4fa7b72e67c7d76938ae86b49935257f243fd25663870d0f070e23c85d957912eea6baf1cda51b755c9a8044f","ssdeep":"","tlshash":"6b119c0e688f107c22c3b03ac77e8406235ce2577768d56ab90d8ec28f125d6eda0a9d","size":958,"data":"","first_seen":"2026-07-27T02:49:41.076205Z","last_seen":"2026-07-27T09:48:29.905599Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":true,"md5":"6bd43cf0ae158526c6ab93dc3be79f28","sha1":"15c289e342bd3fdf5b1e95f7abf25a2bc78bf357","sha256":"7a13d5ae0755d86c09084ec300c4a0f1a0a06921f74d9980eba9d966ff17ad38","sha512":"5190eb107c27f5d655eab378cd468228aa031d088f59082f257f41d464a29fbdb23594043afe89a3f9b63ce86d91efad6c2901c816d85196389293a6a5a28521","ssdeep":"","tlshash":"df90040100513554711530d00134c3dd157df075dc4dd335754f57004040405c53c401","size":40,"data":"","first_seen":"2023-03-07T01:02:07Z","last_seen":"2026-07-29T06:52:04.465178Z","times_seen":25723,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.tidio.co/k73j8w15xddb6w8hwe6twxuiqv0xw2w9.js","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"f50ef2f0e821cfc64938842add1cc13e","sha1":"fee28952aff5040f82f194e698541efbe7f889e2","sha256":"025bffde9b6e41274392e86a310c510f63d534bc6e955203b25c9e9034ac18df","sha512":"af36c95e7cd17efdf5a2a1e19f87e83ecf5bfa101c8cb06742f0db6e3f1d9720b0e032f10e193a0b13330732ae22f242a320014ca6ff49d1eafe5612f32f9716","ssdeep":"96:oGyozLgGyMGBAMa4qc8uLetLu9qinoAXKNEvydcQ7fFB/4Dw9O9GBdYPuH:2ozxy841LeEbn6gy1sFkzYPU","tlshash":"d2d1c891316824681266d66c307fb30732a9712f650e91a4636cdcedbd38ec6814feda","size":6370,"data":"","first_seen":"2026-07-27T07:44:11.912183Z","last_seen":"2026-07-27T10:17:04.98652Z","times_seen":9,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.tidio.co/widget-v4/1_447_0/static/js/chunk-WidgetIframe-c201a34ef1bfdb786fba.js","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"f44f86c6dbadfb4a2ead495d28b3049b","sha1":"847cbc37e19884b2674bd542d0a0669246e87d78","sha256":"3a9fa94d8cb80a07be745de9bdd8174c384e37f087101d103863a949f6ae6825","sha512":"c585d358882ac1a52f03a4326114d519617faac69119470b07f0b9b697ff57952df2a34cf4c2b1205314c399efda697ec402380d16e50f1ec2b7436699096c9c","ssdeep":"12288:sr09SF4bvdyHry58wMERZtDCXUUCZ9IF2mHKP0j:z9SF4bvdyLkZkXUUCZ9IF2mHKP0j","tlshash":"1c946dc270537468bbe351ead4a75848767e340dba488478f6bcbce8158a4d85373fac","size":435705,"data":"","first_seen":"2026-07-27T07:44:11.917931Z","last_seen":"2026-07-27T10:17:04.972353Z","times_seen":9,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/js/vendors.js?v=1681460523","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"a8ab6269b10f87faa9ccabe38cc127bd","sha1":"06741de6f158cafec153fb62a61432a70f951313","sha256":"9d94a0f9cdbb6deb6239e86322a35e5ac366931497be579b5381b6437370b003","sha512":"2b20e9869d52f7dd3913f7ea31f96f024fd273e879e73a2e8c6966f0f1992ceecfa8bab23fa1704a5d8ca94ddf5c591fee1ba7fe5ab4cae2a816cb9b925c8295","ssdeep":"12288:b+5PkviVmySXoHP6LkyEkNbBfgiVXIeaGM:b+5PFVbeN9gimem","tlshash":"ba052a46f256347385d2119dd86f1207a3726959644a80acf9bcd8e72cb8e8831fff78","size":852692,"data":"","first_seen":"2026-07-27T02:49:41.001609Z","last_seen":"2026-07-29T06:16:17.91354Z","times_seen":7,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/js/app.js?v=1684946825","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"3e5132621504d036256cf63373fe03c0","sha1":"1a460ed5dd953011072e00b0c19a01aa82c72fef","sha256":"fc307c165e547184a53a96ac052f3c32f5aa1a07cb852d010be895f32a3af295","sha512":"b0a0d2bc486acc222161d998755aead741d2385f7f6bc15e1e2bfdc5f1947ab7dbb281597c4c6b8a3c535d1330bc56616d23d01b6c691e222a6bb8d84ccb9324","ssdeep":"384:wSAUKWRrVHuPkOY2Hqnj46ldmXMxZ53BUaZe2MEgVnZDZDz9PdmnMybxko7NMuDc:wHhkxkCjRldLgOkLDZD1QnbbN7CuglwK","tlshash":"6fc2b540b2c5b4bb43a7d56284178106b0647249a81b94bcf7bdbcd48baac04f67af77","size":27696,"data":"","first_seen":"2026-07-27T02:49:41.0193Z","last_seen":"2026-07-29T06:16:17.90991Z","times_seen":7,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":null},"http":[{"url":{"schema":"https","addr":"bit-core.top/img/bit-graph.png","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"lazy-img","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.152Z","timestamp":1785145636152,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /img/bit-graph.png HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: image/webp\r\ncontent-length: 21264\r\ncache-control: public, max-age=604800\r\nage: 6412\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: c9e962b5e5d4ae5770962dfa9d090c8e-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":21264,"size_decoded":21570,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"ff4f49d8f9b5373bdc4779883e23cd4d","sha1":"b58eb5f9d18d81e06489b147d420e8524b6559c3","sha256":"2a94462fa4016adaae7e5038216686388406dc92bbb28ced9af0e37f25c39069","sha512":"d6f0fac798c9ee839101b25e683b403364a0fa614d8c95297aad14c0415456338a246a298957e815e216890764d402a74cbc061a174b19df43bbc9f08deb62ce","ssdeep":"384:t5cjPqxBPpdOJs3BThZ1jDl8a2LV4DW21Q632NoyKdDzsHBU605qPghim1Hy1tl:t8cBpMsxNZ1Hlzw4DJQuhP68qPghim1A","tlshash":"8aa2e1fb0c859166ca702c3d459d6fd21079dc52342ebcbaaf403f966f742624726dd2","first_seen":"2026-07-27T08:06:16.622741Z","last_seen":"2026-07-27T09:48:29.889499Z","times_seen":3,"resource_available":false,"data":"UklGRghTAABXRUJQVlA4WAoAAAAYAAAAfwIA/QEAQUxQSPoUAAAB8CJtm95m27btaAfiPYCeggYgkgkIGHgEUWUWQSICcZWxaYZgkgoz+CEqMxMRD+EQ3zZgx5Ja3bLU93Vdd0RMgITUWGNtnud5lVtjrEpMm9i8quq65pN1XVdVbpMoxuZVzd7rqspN1JKYqqo5dF3lJlYxVcWOdT8k6yo3EYqtarpcVzYyySveg3gKRH8kqywe0bQiCfaOvsjKxiGa1xwe6IesbPyRVDVdRS9kZeMOW9V0Gb2wziMOW9V0Hj2QlYk0TFVzlOiBdR5l5DV9Wpnowlb0bG0jixwcObqReUyRVPRypbGE2ppeRDdWGknkoLerJIqo6PPKRBAVvYpOrEz0UNH3lYkcKvq/NlFDxRBWGjFUCAKraEEt6Hs8YBUr2JqBBPM4IakZztpGCRWDCIIgKo0QcoYQJAmSrOIDUwfhSTCLDbRiIPGIrE1kkDOAuCMJEgSruMDUIXgMkiAJ5lFBxVDiAUkQtYkITB0MEgRBEGQVEVQMJ0iQIAjWJhowDCpIkCDBKhqoQgOCIAjYSMDUYeEfBFFFAhUDC4IEQRBZHFCHh/irigJyBhckCAIEbASgVXgIEATvqgjAMrzgHyBgFj/NA0QCBEEAyBc/qQIE4tlalz57DBAJ8C/kS1/OEIP4m6yWvipoBMHaLHtJHSQ+IgiS+bKXHYNFEARJVsteTr/CsT9rs+hVnnEYBIkHQB7lgH+CqJa8pA7V3wCBOlnwzDFoAIh7s+Bl55ABxONswcsZbgDEPcFqudPAASAILnkSMgLgI9S63FUhIwCCIEmz2GngSBAESbvYmdCB4MN8sdNj0Aj+XUQ6z1aLXTIZjrrY1ZPBLHXmGPtI9KOTgYudTIbjcldNBdroJ4t+0qVO89hHpoNZ6tROheNiJ9kx9tHoR6qpkMQ+W11cVNUX+VSQpTRJ39Yfn5+73eFw+FxbH6iJK9ZXgE/itkvHJ8lxGqQLib2y8y0dn1QxxRrduPNAPgnOZiEp2OOPjs+cp8BRFtLPPm7J+GQbeVgPFFOgWPbseQKky15yDN/RLHtShW8rC589B69Y+mQbPLP4ZaE7yuJnjoErlj+pAmciAD0G7SgRgBRBS6MAew7YUTQG0CJghSyoPpPkHKyjiQS0CtZWIgFJjoE6mmhA80AVEg2IHoN0NDGBPYeokIhAtAjQUaICSY7hSSMDsefQFBIbaB6Yo0YHItugHI1ECOYYkkJiBLHncGxlgd11gY9Us2AcdYFJDl0I4JYOklibvq3Xb2nijogUgTgaWWA/0IkAd2+ptT297a5XXAHcbrfD7uNNXZFtEI5GFleTfl7ZI8grrtfD7vPNdrJXdt2pK7oNwNHIopqk68/DFRwY192HfS7t9s+6IsnWe8dUFtRkvbsCdBI82KdsN6bOiNl67pjKgppe6fQheSbFiMRsvXY0spxqcqXb/1JfiG49djSypBZ0GSQLb4huvbU1sqh+OvfpD5HCT8dCFtadczufSNp46JjKwpocnPtRn6g9++ZYqCwuN+cOiU9EzJdfjqlM1SR9W398fH7udrvPdWpnhTR0IkXjj2OhMlXtAfwbvN0On3ZGQPDEfHniWBiZrh/s/jnnWO+IrhsPHAsjU/azh53ONzcPiZqvsR0LI9O2j59kLtBpICLp15iOqUzeOUPe3Lr3lWh6Hss2VYlCRDQ9j+ErlUm8kIhI+tW41ayNTORZI58WImZ9due8NqIL0MfUEJFsfW4cOK9TmdKzxtq9f/4TEbP+aoZozutUZVrPGsU0URFN11/nc9Olac5f69TI9F5eHqqImHSdrtdfX+uv9df6KzVGRFRimccqKi/govMizhrr6KeIxBDpvDH2WfeQRzafTxCPiigm/SNZX58hcHd4S20Sx9j15xXsE7fDYbfWeUuNMS9f+nnlsLtkltJVWe73p9OpaZpTWa5S87rZKwcvZqmCz4IATvZl++TwPzpH7Tvcb1623SB4cEhmKP3tYf+q6cGBm53J9EVLroM8/jdJNElsYk0SPDw4jOE0HxgXmE6N5GN3OByu94fd7nOdhmY3M9kp9smut08NSnp9iri7rd/S1Npknkmn2KETbzYMibVv64/dlb0CuF4Pu8+1nV8sXMgnhl67/QtB8rG7XgEOfePBzi7pdXolYfqks8XsYmeS5OrObnZJZ5IUMxbmpp9I5c0lnV04j6wdOiRzy5sT77PKz/yC/zZx+A81RfTzFv2sIxM199YaozGOKfanU9M0JJvTvixXJrYp+CQIEr8msimfe2gjm30PWfSz+g8PaoyxNsusMaqT6DRBHv/ONcWpaXgPNKfffWmmWBEi03QBeTHzjGn4J/jwV6eOToSCTwME0GTGGNW5RS07Xcy8ocbYbFWU7AoAZNOcTvuyXGVmRpGsW2uDlE4kXZWnpiE4fLNaNLQPTqWSzuJkXilOLkmfwqN8GpmTO2ztKwXvZN6zOz6NB4fU2umjli5n88kqKEn69rE7XNkrrrfDYfeRThqZqbKQfFyvHBY33opJkzm1mk9WAfmgkzc7bbDsHAbD3b90yqzocrFAJFc3WMQr6XCPd/HKG/7Xn7Uz+p9+fuKVj2gqiX40+kn+44/+x5/k/9yozVYPi7JYZdaY2Mbs+SzA5lRMLi48Kz5Hkq2dWlh4ih6YTS0uPGUfq6mF/zePRj/yn3J+/u8V/+MPZieJU1KHdv+p5hr7WCfw4D1SkZ0D4P3Nxirp4UagH/zR3v+kEqtIkubv77ufw60bybZt25/39zy1MmjscZ+oJunhOZBs27bNjYqKSuzyMEWXlm37Lk5GI8m1y31ks+vhn41qpI/bf/B5/BPZfPZwmHc4CyWzDuagn/+fkclWT2aZ1eWOoSoaNnyIFmhxykJhnvpzoTux8yZg5dyHMCURARgm08M+YJu4xjYdQPI7rlnxaQAEGvMyPC5mkiZIxqRF8xxBkM1+lVkz1fZ9lMuE2lW5PzXsEQDZ8HQ6lYWZYHrqBHIztTgZftVvq4YDAySbbHpl6ACQPJmJhTBpaNTSTfya6aTG2GxVNuwKgDyVqyy1xswa0sfFa7JyACTZTiWzKk+nhj0D4H1zOu1LO19ocEpXmE2jrKGTYMNmNVvIBHlceC1zajWIaeguLmYCMUwanL0z5WTIBrFwBiTsBEKY5CWz3lg5A5JcTSASIdJXTJ1qhynpdDmJHPSRhEZPzmx8JqZxA3cX80ohTPqS6d4J8H4vQ6pjm7lCXjLJLgAwAADw4SUbRF4QhEhfMzGr8vtyaQF0Ae5Itm1dV2VmZNhvt74nEF30kYTGuPPtuYfGZuVvJz6sq8waURl8/2ogTPrKiYqY03Pgw28VR09u7ecKeenuy14KcVR/ZyF9+VbPPW6zWU1ePtvHxcxq+urpVDGrsmtmXhZ59cRME/3l8wCweVn01VPTPIWpoBbPgSQv5lWRV0+mibxUOkf8ToDslZKXT0996Kym0Y/MEft5TeeIX0/9zhUyR+xfNhIh0rjAQR9JTIAwafQj0Y9GPxIXIEQaFzjoI4l+NPqRhYIvlC4UeKEk+tHoR6IfjX4kJiCCpDEBGCSJCRgmjQkQJol+NCZgmCT60ZgAYZKYgAiSRgUu+khiAoRJ4wEbKokHUo/87YjGAzZUslBwihU9rNzQXpIFAC+U9KLz34o9tvZVUY/pnFP0wWzylGMRjyUzju57AMsJVrqhC4IaY7PVqijLX3YFgIbf5Sqzxhh1Yz0Kjmz/HEhw44Z4TOeW1W/TsHcAINmQzel0KgvjQDEKjMUYa222ap572KysMUaH0sUgA51tyJP1DEZl9k3TsCsAggCb5nQ67UsziIxgPVOVdBcky+HW4Sg5NAiUg6i/djOLnhy6/9WhNBy6H+z+exDxEWYZ0zh2MUNJOGQoPNjrEOoxma3gxrt7t7GYkxOXQWQEbzMVHGvtYG/BkPHpQqDWN0kaDDM+WQgk8428jYKjSManI0gnxMcLx2woTUeBUZjxyQjs1ZHPMO1mAwlHMj4dQeJKPu9penPuMBYzPhmBHAZ7nAZK5wIZRepE3i0Zn47h041/QVj3ITNOMhIzPhmDvQ2EBzsNwRu6vc9vyfh0DJLubugPvG9/rIRAi93hcLj9+fPz/p7MB4l7P0l6HQS9mfHJKETSfHdDN9yxbduf91R694yIaJIYa6yxJhFRlRnh4NxORpKMT0ciInZ96ACSbNu2ShMRDYcHX5fdCCxGYcYn4xGx1+fu27ZNRURlwPlMdnDpvpD0OopkfDom+XgKJFu2PzL0jPbp2r9cLFxIu5nxyahSPPPn+3Kwdi6V9DqKZHw6KnvtIV8OkoNDIPmTiB2HGZ/0kowpXQ4kvQGOgCRTGUsyPu1FnUmWDUl3JAAHSN7eRSRx4Z/tZsYnnvm3KIimu8M/YhCAZNu+WxERPQzy+JZ0S8anvrHLgkiS7n6IngCSvP28p0Ye7xz40W5mfLJk3atofugHJNuf3IrK3+PQ8enSdZ/s0ANItrl0fMNw79LdjE+WMLGHbiDZvktX3Q3W2h50fLqISYFO9z9JJ0l26AkkW7J9lx7N+GQZS/vZSY/6trt1A0i2bdu+p9Knjk+XseTWBXd5HyKa7jqAJNu2bXMr2osZnyxjcujjX9qPiOyeAkm2bfueiEq/Oj5dyHZd7gew1w4tW96s9G7GJxGC7J4AH/9I/zo+Xcg++7jZ/j57qAYw45MY4aOH9wF0fBojvPWQD2DGJ3HD30Po+DRKQLd0ADM+iRFSp3R82ksSU5jxSeyh49OnEGOY8UnsoePTXkxUsR+dxB7ixn4QjT7KgR7vZVAbexRObAZRw8jDlA2A3vCgzQYR+8yfkYWIsVlR/jZPAcDd5XL5/t5UVoZd9YAsshAVEcmaJ8DH38YYlQHVGGOzrOwEsjAaVzwun/h7JYOacn9qGnbE3f2+LMvVKjODyeEJRADFE3Bjz55xz4Zkw6ZZDbZ74s+fZMFb9ZANoqe+/gbv94PZ3c/hdrvdyH+328/P+7uVmKAdxjRDPb7oUCJJYhNr09TaJFFRiU7McE+qODqRZJFxNhrQOeF3npPoR2cEmSPsNQAyI2gf32HilEi73ax/dEaQfQ+bly/ZocPtXfwjc0L51OMyUJgQInmx2+12P7uf9/f3PLXiIZ012mwGeFITTcRVx2ROMOX+crmgRQu0l+9Nmcmc4LRjOieIiBpjrM2yzKg47dp+XpCZ4V5V3PcMXiydIUbp2u9QfLFkjtvPCxr9yOJW9JIETWOAQ9hkgYDn1ngOdz8SNJ2HxC/0XHrroQibzET7CSXFjcQ9wfvDp4ZNlzex+fv7+2632/3sft5za8S/jslM9O3W91Dw3r3KY03Ex47pTLR3Bk4wCJ53TGai0q3NvKDh0pdC5xyZQJspJHOOBuw3EpCZaAWnynlBwyX7V0KtW6t5QSZQOYXENK7ct3Ze0JlISkdwdzHzggSsfC3MNwA4spF5QScNHqy8oyZN1+uv9df6KzWJ+kI021xIAIOAZLtRB/BSScBWzmReMen669zw2eb8tU79ICImK/cXoA88JNvLd2Vl8IzgS6UByzDcw9b4I1l/Ney1OX+lxgv3prx0A0jysikya8TFjMBLJQEzv4PhwcUb6VfDIc/bIlUviNimC3j/bUREZc5RD4m9wIlS/Jie6eBxmxof6KqX1oi7r5ecHBEfqyl+CfQHkmw3xgvpma4et+n4xDTPgfff+lJlrpVD4cHeSyJisvIX3XBPsm2/Sys+NF90+bhNR6e/fZTy4tlhTPnbAIOtfCUiJjt1AXj/vcqMiKgH1g0dP27NyGTfR/FSqUWnvRlGRI3Nis2pH7C9XL43mfhcbfMc+HAjvtQzR3gsknGVfaxeKpHyhJYAwLa97DeFEQdVxJQ9tEWWWZOI77V4Cnx4Mb5IG47zaOcdUWOzbFUUq8waUXHWNN1qEVHxv1r08C2eXDcc67GYd0RVHqu43MdFJYym6aH0g35xzIXOOuPUkJ08Zb447qMJk1o41r4QMi0KH+gXx340QRL37OugAVM/JV8c/9GESM3lZZMXQ7/ow60GSB7gJdPXQtf04zZYLl/M6yCvRUpfFgHSPYDXTF8JtY03mIZHSty785u8DvJSnOnPowlP9gAk4cRGXkft41em2pY+3YZHVheSAMCBgbvVCyHm1KldTbWUfk3DI2a12V9IEugFBHFPsi30lZCs3P+emqZpcbnsN+XKyETTs2eOJjwioiYrvi8kOgH8+3LZFFZeTjXGWGszFRHRqVbQt0WQHpriQnR5ePnelEVmExF9PUREVSW0vjGNd44mWCJZ2wEPaiP3KvOxb7b07zZguu+lkNnZL2obDx1NuKTsJVs2ZEsfFwEr2ENrFw21jZeOSbhWWFpkSz+n4cr6uJhFQ8+e2gZLZzL57WE1mpSePppQyVy279basejWV0wXrqwB8Ihke9mvZKzm7K2tU0Uf2dIhJivKzeZ7v99/lytrVEZb0NtHdSlDp3aji0dHVRnv1l80Lkm22e9/L5cGLXD53RRWRjzPjdk2HkudEhE199ZaoyK6nGX0eOHaQ72XkS8thc+Oo/Di0rL1msYQydFrJoYw9LqNITK/pTFE4bc8glDPFRGEbP22jndA3BUxxNFTBEFyHe3gIVFEEOoxAswjCPEU8TiGUF+RBIEsghCPkYSNdYCYYuslgiCJOol3AAKsNILQwlv3lUQQkvsIf+UxhFqv2RhC7NlDBEEAtYki9OgjgiBRSRQhW18hnsh9BIIEbLAs8NTDRcOevUQQtQbLtD1sZLnU5OgfkCBYSbhXvy1AEiDB9rLJdMEQqfxDECRswERNluWrotxsvjdlprJsqvUMSBAEK4kmk6Nf/kYeT2juHZBgbeIJMWffPKwkotTKI3gAsjYxhdizP56sJKbUpPIG/qpNVCFivfFkLpGlVr6pNLYQc/SMlehScx/giUoiTK088GSVxBhijx4xEmfm/sgl1sx9UUm0qZUfKok4k8oHlcYcYqrxVUaiTk2qsVVGIk9NqnFVRiLQ3Dk8U0kcamvHnq0kDlXRyiE8U2cSkWa1M89WRuLSonasziU6TfJ6IDxVV4lEqVlVD/FsXVmJVk1e1YPVlZHI1eZVDeKe6FRXuZHoVUXVVlXNznVd5UZUolgVEWvzqqrrmmRdV1WV20TiW2vzx5kRUYlxVURU5kpWUDggJj0AALAlAZ0BKoAC/gE+USaQRaOiI6Els2qIcAoJTdnzI9H/tz3GA8kBAf0C/NOel30v7vdQ+esY9n2/Exf7ii8gqd7x/+u/yfdFzP6g/L/4P9rP71+x/z38k9s/tz7t+p/yl+cHe12T5pPmf7F/u/8t+4H9+//////CX+l/4ntC/tf+p/7HuCf2H+2/7D+//kH9bv+L6ofMF/RP7//u/8p+//y0f8n/nf6L3h/2P/g/rt/mfkE/nf9+/6ftNf9/2bv7D/0v/N7h/8h/u3/z9pb/sf+7/W/9T5TP23/cb/p/I3/Ov7//8/YA/7/qAf832If4B+//t/+c/4P/G/jl75/nX79/uP8P+2/ZhfFZdDidrVfM/yT/S9i39z4N8Bf2v6gr31wX7f/hPOE/D83vtf7Afld/4/Dm++f+L2Av5j/lv/L7Rf+r/9v936A/2P/e//D3DP149Oj2Ffut///dG/Yz/8FW+9W91MQ94xZR9b28JcBnVMcO6uVPf4dJemvcoPmNi2RKZb7A32BvsDfYG+wN9gb62W6QxZFhUMp8yedDVb5PwVp1mZNi3BWv9x3bh//zzpF9Wo1tqRKZb7A32BvsDfYG+wN9gbBMg8ODKZ1YZirhIKKem0czfydfK0oWQTTGSL4S8VGR4mW+W5TjSs9+AWs8Uh2RBsLCMrKLxBTIemQ9Mh6ZD0yHpinTD6uH87o2lDI1oDgsvOqrFNtMvEa5Pwhlr43Qt8HDoasq6rvEfX6VV6ZD0yHpkPTIemQ9Mh6ZCO55CQDjQ/ItRZPf05Nee8L3s8yTLsDKw0mchhgYnf1LVGn4qNBBQnTXVGrNil8YyTLfYG+wN9gb7A32A5FB6MgIsJq0kJMEQwehtJN3hgjwpN7wIGG2In6z8JqfQy2ILGPZYW9sb5wN9gb7A32BvsDfYG+Lo4/w6Q4zM9F1nBA7QGSyFpQCAinzJNzJM+FEt54D5gVZMIaa9es7tHzWc0qsugn387CmQ9Mh6ZD0yHpkPSSULMkDnV9ufrAg00ZP0aQlCV5q7c7r5J/TtgtQV4pb1vSJBPK8k+8wgcOQfA32C3RBOc4aZD0xJXs0Fjhn5p9Mh6ZD0yHo9j6R9SIdUZAlpvV+bAMeiSB5FifdOcNw6n7ul9nWLeEaD2wXlJFBgrwglfm+VA/6Nr9hvu+MZJRI31yQ1dHb29uL6ZD0yHpkPRoTZQdFm6f1Klo02WjsQKGucSZX9aYQez/bI6Q2k4d11Uld8+b/TD3ADKSnzKiNs3q6HHJNk/2LcIup+EdJTSKgotzTRBTIemLRcuk7fZ23dfO+ACPqS9gb7AVpVmvATgSHT5z+hXGaEfbqIflj3J9wi2Ev0yHkMEkysovEEMjObnmNT0srCTDw8V6GdSkOiPpVBOizJCFlDtiKoP0bJH+Igw1+9z/xSwmGbQ9znmdoIXAyLDSqcvL99Mh6ZDwyM50zKR1BE4xL8xJ1amEtWisGkUHYGN2WfLNtstDCz4hT9wjFRevlr20s8pMt9gb5M3NfnMW/+/6Zq4zZR5ToObYcax97aPfpyah6Qo9wJCkY4EN5QqRXByTYUQ7WMTKd1Ema5kYymW2IZw3eXBd5RdJfDyEwzdCa0CZCWX2Rtl5IjfsslKrfV86dMDr0CFuWYYNE8fg1yKXwv2L4Lj/x4XAncmZ51qVgpkecrIqDXeM1ACkyeFojOKZV/aK8xfXg79Kdm6MysoOO7IEpfuTM+ukMyFCm5xlduS7CXJw2tbeiDFR8ALMPjY2nMm0cO3i50vxmmMsekNiMO3OBQzhlXLOAhZ68QOKsVpgY9iNdvHUCRyUYH65glFrx4XAncmZ6HzENwOe28cvucrKfvUUdbBrJuDnFfAmO235Tjiia/EF1SwjOucYiomkZtn+2tc929YvyQP13GptcjNiYFm4rvy2z2dY9KNAeGmFjNAmr/LWw6DphLun6YyZ8PMYTowQV+5Mzb7Db5CHS4N1RcibY+nx/xyXhNvsbYhmthNRe0gM1fQTtWJj9GrYwnRghpgxOX4lxIMSTkG0gA7Bu7x27j18vOPK+NExbMVX/I+MnjkGHFJk0AnHGAIV7XQvztGiHzAcg+fIXVI4RRs4gFu0Vy9mCsDcEL/lWEnlNlix7R93+3PUXkcqo0ZgKObtBz9AC3CZe9A1tHGPBNiuk+TSHpfmIZNbAIP0nC5aytOIsF/gNzolZQLFAlk/avSPiPE/dserAwETBUAOjGmFAPDssfm9RrOvjLAzXnzdX2F92JXJxIGlbrHPyB3hhfLo7RM9saw5/TrYLoxBEGK3+nPlnz5pFyb93Za7Vkycp6t9RcCPxn370abY1Ons/quWPoI4+o2Ogjgf0gzbBwTbPpDuax7iWinwGcQS7dxRBz/NdcfTJDmzWCpXTiCp7I32N9gbEhqmJBHSbfYbxisGQASwxuNTKqILFaL1uCV8RHiaiFmYpxn0zJGgFeTaZQ6eGdhbg0QUbC8ARCkgms50VOkrR0oaaYKw5kOaP4U33dwKOGsUHdIAr+NF4kkdmgR310cJM0kEewGdz08yVhf73QACgWZ4rB8R++VQKmKyKN/oEV0z89XBWa3nIn/cHB6KvlVVPztH4Pa+gptrB0IDY9AapkKuLtrQru+LASO2IIlFZ2gXaTyvLxRZOE3zE8++2d1tn5F0KJumT2AMhA6BmcoDMVAfvtk8v/k5UHelhTANqgMs2hXFavNTefRAXVFY9mpIln+8DywEOAvv2F+BOaLvTK3gSsovEFMPCZ8t9sHil7kmSl4w04AY6efoQMdDIE0wgOReyqC4+ILlne/mEsfiy2FjdSgBYmHzJbtF9RSnmG3UXfmhl4X0cn0uBPHItTuEwMNZ6LxBTIemQ9Mh4hxj+mkK9fQ13wTmgGajOJhcx4ZDMT062U4zDSfvR+CzyMWrGlhCASjc/uqVNuzdGZWUXiCmQ9Mh6ZD0w6Hq3LdrMlT6lFBeLl/8AbrF9HRExav9yVdoiJtA67Wu7nqB4go8EtkUdUu7tM3/XA32BvsDfYG+wN9gbKhjm8SF7MDc9wDhAgMMQb3ILf8P8BOIvfD7qY3ZIV7EcO473hFf2FMh6ZD0yHpkPTIemtzGTo6+zNRAWQeFTtZRYJQiYaHzwMMfYUyHpkPTDAAD++xE/FedoRr7bVXGSMwPoyj7woO/l3sFGMeuBDaqp6K1ABohVG/iLohTjqKP2GNjj6OcCMruh9KxLe7184bK8dhIGDyQvdpjMwUaIcknsEQU9PJ+bUCkD7pGRjAcTQsUaHUyfnAxAld6PBls84rJBDp7/Rb1weoKG/Ml2yTrrkayz+MFF9MAJRVXHEWF0sCvnqa+CHg33JkvC5yBZEcoWaZ/J3UgL+V/2qgP/GpWN5yCivPLWGO777Zw+oXqHn/vnBE65WtFNj/R0SHTxZX863yxLnQyqPSc3IHSNASTKMb2uKRlD7d+DpBmvcHLWGPApvwHiiaxUcAhZNxNno3b3ThgBoQf5EWSqS+XwfNRg5ubps8bvTR6HUzVazbYNHH0+nq4eSgJ5n10TWJUqh9WAAAAAB3DnG+xYDvZeSF8Uoy+VOBLzaSshwlLXEF6NfNBqza1fY5ZpqENFTynmxcy/scdZSmJ1D/GYTSVfZZ2/lkWn4WtwyoFtz+N1gb66nv7kyeoKeYF9VghU8HnspcGJNS41PNNPZP+0oUQontiEF1rEb6gVDicPkd19U5APfPlSWAh8nV9hlus6pzTLGI52m2vodaUE+EkU/3wodKNB0rBJUeYncOsv4/69HBE+OwsDRrvNiF6x0q0w830qSFtnPSTRxZTfy1bJ7Kibx8PUUtq+0PO4bQXo1R5+0OPSQNJ3xxcmlSMjd/n8tY24oIAdBVGGwyORqTA4t1iIDIsKrAz2aSoTRzv1M25WM7RNUgOSqL5bUpZbRDkIi1vW1O2i3gyuJw9gN+zEzRFgT4b5wx8SDgC2tSDfIa2rRd22HPUuOwBiPf8frXlqhRhIXHFchg+0VN9ssoR6oUFQ5xCJO+damvdc3xEIyrgpWXvwAAAAc5TuMuWhlp/PeMo2VCcC5G1RcAVrAmbKAvfLtvWrKJcytpj9tVYe2DgCHvG8FWcew4bi4hCRbvFArCXhnj0InHc7nQolEOa6yagKdZfRKvzZTCtDHkJ7Enx58QJFefrI/MuXxrEmKEXrMng3Wo49syCX7HC4FDaX7zMOpDCTN3+7qArWQvM2ftN+R/47Kw5tEhp21hoi1yFtbPSpn8R0vh2fzbxDlD8p6TIN5frVTmbtZJ5gpMr0IiJ9fPJ3rbM3YJWbBui8a/uzXQ0O5PI8n/dMDzrePVAZ+RwlLfTVrGM9tHlsp17JYQzhCscQzTG9V/tIVtPETPcU6RA+7W4fXcevlr0NDu2reByH+EirNP3EI7Fvwd934J3UlAJ46Rs/chqiHpxAQROV1S/oPH/INWSxKuqNusUyfb9gzsTFLUsdAvZduBtMD9XzkILSvHOw4wFBoh+q6Nq4LeUDKRPakKpcRmWRZJMjW7c35I3tlmDt+JRQylln7DfH1k2pKLJhJRVsHY04i7FHF3YrVi1TSqxAie6Lf9uengklfMm76Ar8bcdJbZwqA1L6xKpyXdXMEKV4Y2I3KJmP6ykBrRA3OXzKk+Di4HcocQ2f9WnyR767rKLeGVFfQ7ETGnvEAAABHuv/iGv/8TlD1D1r3163CB/kAJhh5L5tVy/CNVe46KEhuhfYPPSp5ouPa9+tofAU6jibSi00H8ZB4GGw52psswoxNvv+w7JWHUQN9s3sQFTJqfW0BgUwXX/YdcPuVAcHHgKjjG1y3MJ3L6QBHE2Gb8HXupu9nInbkKI8MSpVFZjmxHyzO+1lkbwz0ODqd8CtlIX2LIbdYKTrhWw13TQjLFzhsH47TlSLzhugrHGRpywNHA2FyTqzHk8RmL65x/l65yI/oBP7DiiRKVTxiv6HdIMa1QUcASPokX6vbwjkcmrjQejpwtjGzPt5e4MHek2SOpBWQDvGwVzgiJWaNDGyfMt+FxAKxj1VeNUD6Luj5pWKnGhwpbW+LFRe6zkDqS7S+ANAoK4fZ841y/z7nJ6dqUEx2uUGwuEbTq/E/pQIe4xQ6IxImFs7OA/vM9Jend61q7Sc6kscV+yQmGXj8PQh/eV7ocjuMyKBQypLkexWeqjoCw41XEtbl9AR0lsbgXXUaTwMqbnbAeqYQvZgvVJVdVswNpVams/GHAfysSRKD8CSAHQHtePF5IT94nhpzPFj20sTmd25Z+ZBQFfdrTGe/itFZUAAAAHW/nwBGvfIuB+hl+CiYLM6+JTyuTNVQ3xtR2Di6MmYrf85tXwzgym0Bs58IjZSIyyrP5H/V8PojZGGATYiA8l6K95HeRnLO8NJ6yigek+0g8GLG8Zff2ssivbDHhK+jfF3+TvvHcqsUbkGCGcRU2EgLBxsV9NWQSj/xKd+aEvsIge4R83pxa8veeLvmRm49KAPnKx9eRrrnicXPJAx7UQcBtd/fsX/scCvenDrzmNDyv4yPlgY5o2MyuXEfCsYEcqbhtVpq5PQbwUsxJj2i0qNv0st1n4BMYDy/yrA/gCb2gqLqStfGyulU5ykbYYAtOjjKzttKPp934/72InoAoGl7DlfKtk9riK5i03SVAlZu2fQRaQd5OFDz4yeAI/JkBuhgg8dcBfL7LRmBq5ddzURRfvjq5STPjAjBvfg6RHK4r6JRX+QXvGxR1ErMWd4uAF5+b7v1exK0e9VgOkgqepOAqR5g2xoKNe+JIEeNQqg+4+fm1O4YwB/z5A9MEQnlXS57RCjE1XMX8fdMjwP9fdw/OWCV/fNaUk3x+kn7voXCQdNGD6xdJpgAAAAcFcPk3LXzZskZrxkApdX6s5Hwl0YNLJQZ9t9vaeMdG1pFGexP3QwlU2NMvRH0d2VKnJma51yjtwnNLSdVi1xDAzdnhnVmNRsYpZTN8WXVxgtS+gEq3OzzkG5Diubnnv+hQTYrdDUAkHvLJfQF17bd1xmVb4Xepu+2VvkfKsoxDHFyrAOIDeebOSE3sTMnmIsmT7NyjrI3UTHbq/UD2irgEGP7/ewRlKEUWg/0YW3q2/zlvlLRKodCGjq08dF/PGSAHMcnZ1M0vTdDdVvWdnII9TBZPVDS4I41Ukz+MN2p1ss2GPfKV5cEXGEse0CSt71R0Xs/3aWE5HXs65b5UF7bLUsZecw5s9SHRM1XrqZLPrwFSeaIf0KCLIWjZ2h4SPQU556i7iLaNyPw6Yp2T4Wi3EBI8v4JJ2cZ7oAPYlZjO8A+IpDngZHS2NbvhllGvZt96oz0Jl39dBJwTNxeAXh+gnFjMTZT81aMV26RqTWxdY4L1hZDm80iI9Nnveh9KrW1UxZaf2FjgZYrGARHoUjJZzaM8R2COWovTNiR7O7QeQMP8tL6EUYKVQryACsGx9wf4LqiNu1fr+vSAPAAAAOVkA8ThrR9B9eFkLWioI5AQZTlcxl8jtWTINxLX0pWGPGPwzBTHPNjtc4uOUmOGtdLDfAuZ5krWcLMyqZLYq7j1BvlU6UrKLhF1HqsKab0CKut7GtyyWg1NFUsj/u3zyAXmD//TDzuZJZRsxGYe9B+uCaGeM8mk3foikD8QCN4PemjMBaN3fIVO5j9mf5T7wxj6PbVPES9Y0VvnxK/QfPn+PQyyww/k+hyQxTQ4AypbhtdLwHGexJw75HHbCjaiXFi+1cyVRAzN98JKPm+O3jT14pKKuFBdYFsQ/LwbxtKR+WdsGlHWoJOMTl0Vv6SLJq6WSYIA3thSfhcwotGnpYiLGAqdFgxxcFT5z8G8NetHqGEXTlHoiEHkKUmdk6eBE+eCOFfPfCw2HxKjEPfJeLjwh5tx3vwFOONKpwpmvPwFfm18cJFyTB4/tgHEEGD/FGjshFNAYH7wHqDIqUyyu9l0IZDRMskvreab0n4V0bZ1I0cNk3C3hrwEeBdO6ytYM+YbE6fPFmdZvbcE22NFf7fEK0f7Tz80iabkIiS4j/C147vIX4y2qy57gyCT6bUvqx8GqgwUQqk6QuMMDT+qLzuFSyOV66RURiMDGcWyEhJFk8mQH/HHbv5/NnhxgCKPokK+rsHt+IEFPhh9X/W8IiRCfH4VP6JR8dwADuDE2grvG239URS8lkccLstp7vP2u7zYUzRiSMWa2S0dVCgGTH4bsgGrsemOshR4Xdu0PLW5eRovAO0zZuhJxPVKIDnQYwWgAACSoObo+SgraAN9aUHxGX7RPE1GgIwXgRuBdOBgMv0cpsr7osWPAzrthXjy5d/fMXCRrcb7C+OizStWlWkkQggJxrAr7uJduBKzHV/1vCaPS5lf6b6F/8g1AOIEgSdgDB72Jk8XIgrpaWMsMRaT/abactyGhydC/5aNtVOX9geuurgoMl/zdM6aLlGTLW5m8Revr/sUMKo3P0Pw0mgR+IUBgIHG9JS3BNrHm1KK2Q/UG1NffN82lf8dNW5A9B1A8V+BCDI8ZfAAe++SpGS+t7Xiv3EABDA4av59KecMGGXc0GwfaeOjZeRHmzwQY23GO3bQFYUkNMCk/u5bsFGU/XU1pVol72MUNa+YmSTwdE83vDMYI0E6mcj4bcmOtug1xQb5BFBgrlo7xu9kZOz/r9dNLDhtpXgmebWTy+Bn/YH8zaO81Y9IJNj1qL8TyeEneVfKkkafWhLP/nwBOjBsic808WoFrN7Qfk9wqzc0+fXYOuFUykqi+EBfM/HUc/EBw3fNQjZH0vvbBK1pLDeoxgve6hfxr6XVSfTbMcx0R5P6j2t1jaGNYm3zcEuM/jT/KU1MARPDpIOg+WUOH0LYuCyXPED0BFWhDXz1Z0fH10kKciMFp+aNToduRF6ZxffPMlgOUp4VIVhNgOZPTF5FkUfaiu7kTlzm54J6ibzsPJId7EmpWXJRoFF3CMunpmP70xxqftcQw12iMtrYp41Lw1/apZdFlFW4SrBoc9rxq9mPEYAAM4RKRutjjtZAAFowtIyS1iR2G0QSPFK2t+6gN9IfZABsgACaKIAY5D2e0O2U66XbU8NgBi+5XSptf0u0UXgiQLp/U2PHeD45oZ2wgQ/jR01DZZZpus1WbwcSJpL2GJVcWDrHbYEyQdk5TN4x57ctn/bQ4KppRC8uuYAJTagRGGpPjVkegqRV/pyBcZa6ef2/nhhQnfEqPIRrxGm6r4hqGGbbCgpCl0nwVIfJH4GMRtjI2MtAc3NS18MD8gQFD1Ft8EHvQi23yiMkD8FfuU+wM3jjqAeuBWHH0pBAtxhiXSf5kEeMKN2/KcF5oR8o+zCiNjkNw7pK7so82gS30hjoEDWnTOZ2J0tDZ3f/HCaHl9WFaT1iKVN6+OYdc42HwUT0ZOCrFo1bQWy720FHl9IoX8NOMuqYl/GtxfWgieJbbavr/CbJhAakQMlLqMrh7ccjYS0OnKMPOkOxbrXublK7PKL3+CIQtaDVd0hwMGTxJ9ep7Btln9mLf/eQf7vV3l/dbOPK4WaQyR15+hkaS5+E7tKaqlI1FJURuHPqol7KziMEJJzPJQV3tF6yk2p886mW2mlb1Eujz7gsI39BTj6NTkgIh794ab8DI1+7oeVJAcE27zsBZw2IDMnLrokotciMn6+qjswVwTML5QiGhR/L+NpkGx/5UccSiFzyMM5fVPtMSnht0INLnCwB6YX1LmfRTyENP/Yj3wj6oufl7Aa/YuPQ+vAJoS0FLatEwU84l3s+6V80Ymu6hB8d8uz5otbHDp2OBtld6ieNLqpGE1UvZW+LsPLu8GMQ0LG5+6iqhJ0BpdqAAOsYkAha0U3G/9jsf3s9Oag4wMMMTFeihMl6e5wSDhVavJ7l16pvADZtR+L2l8DODatCYGFtYDmt4EAjNqs0T+g2w3+I/xi6f5P5ojLHrmlhEyM2hyVtlvkO5FrkEAO3abY30NCugtlGVtSPveIkBwny54MCHw7CO9GHzXFQHy8wRpIwSufsfmkBOpyYzmdi8I4vjdHbj50ChCTo/5Gj79tDEG6Kyw30cH/o4kAKczUNDjSSv+BggKQjbD5KrQ21vRSliegAAAKQ+j/AGGGmKXRCBBi984cQ7ADrcIJVYzX3ycgudPbMEaSzO2xSv4VhvuzUv8SUR26pDzGaFkZB5QnZCXF5kxM3H9D+C0f6KxklyqVlE2kqqkzSCK8GesqYGQly0RP25z9aK8UVhWx3g9saqNyrubn1waU6APrndxnaqDCxpqxmgi0hboU5pFPe2OOrH9SFFII/5i2X3Pwx4bUxHKurvEyGnTFYEfOYX0dbwfy6V6f0f35Z49wPxfCIlchSCcbCRK4vjImLgFFa9GZH5CtcI/bdN2sfG6yWkWXn3JtaSKTI6BUSfoZAk8BLG+8HvEenIru08AK6U7sltcEUsoeUb29yb+TmLfHx6kJZwy+mMKUQDxNWiS0iZQSI70VV7jyDfTYADORtFJ3brWOFDtsHeFH5gkpmD9rc819YveOAQ6pUajCks0gPm0ymkj/hnYt0nLzeqw7aJXhB3UHWWv9ET+gdQ5BMDFQzlFy70d7lPqW3pe4tonW03V291keuATmrwNuaHbNVOj0RYoBE5GQvdB5P/KhIlfeq8Dy9K1ho0r5RQip9XnzfC4ir8lXpCsrJKgKXcWbfbw2e+T8yUDlP5bTdGfXj1gk6VN7NVAr+cqBEVco9Elq3Y6CmX2t3HwS0KA6bPf/gxuGlbjRsgoPxlJNYyT6IOCTNGJNs/SJJlgAGViu5jrIpqaDjnF95rHNDFxGogMNWTfsmnyfX9KIzgeoGzvujU6l3py6PJ5/H+MqSvudJ61k4Oj/GBEEOeLlqM9uF/L69xdIXaS+bgCMfPEd/k8Ok5P3ITLYcRSob+tbDwTWtS6qb8L4oQqAkddijDHIh6r3nV+J/J6p/wTb/AOWW9Ug6Zr7A83fCK5CJLwsfRqpOm3+Xmq9XNMyJCDHnlhnVB5PmRJ8ElPIFO6aTpbVYVMGhPvCzFcwtetWaCGqrOJB5rsctMmnf+18omwieHVHzCIR3swk3ZzvF6S38f+vARWuTzEyXSLnP7xp4n10t0tScHRqMnQYgqgDN5p4VJ57WzpP7E5EwoJ0jWPHAZvSmGaEXnTPZCO3Fz0o/nxe8KxZCp1EcaA3iPValqFq2M8NBUREOuC3Ag3GadPIY1Yic4Bfy7IiP/ahVoIJasc5WeyDpxXwrF9JDZ3i4w9uL+ACgQK/ciC9fcfRVWb8+eKiBBp2t6r675d7ZdbQhsaFQDO3N1dtvBdrHXRbEezfXyYSTaqCaxl7ZtLkMr46ekXtjY4LnLDj33C31waWSgv1HQHQpqS65ukpn9e9PjlGOYaTe8oO9ElTIhDbAaFybcb5mpnlW6yRRfSqYEf9bG3HqCL/8HpFTyJcnGyfKw8ooUeecrUVWqJ2hKBr29frKTqEYBRWU7/GP4CTWMhKREGqzLxoZHRpxXBhfnyBxyuHQIkbndG7vK+5RFsuBfYSFMoxAuLgrwzC6jvL2J+8kNLnYABH+Gf+45JJhXsW/04wczsDdiqPgd4OsSrvxnKl+nVBKi3octyFckH2Dpwv5RKpVRLokAhwh3oJ87CX5FGj/Q986Vpg+NKKLX4vKy8IwAbjLgHOtdqkrHxTz7B8rNyAeINebzOM20CorRE5qD0+MvdlAmdewAtg9Eo5/aI8bGhIm04ToMj3mW16kM+qbDoa2dxILsK9xJqPQLIe3sbVOb96v9M5l+0ebDcdcYR7CIgX6ciyK1wVMDGEXHdmMb/baHcKbtU9DkqSal9axvhl3wuTayCPhU8fJEIJjxdnI7hFgHxDolRdD86Xir2ah0D1pqs0cp/VIo/bH8FTkpJv22GwXEP2FDG56JAIVV2bDDAHAdZMGYPlkb5EwiJek8nduN/bk+M80HZlfCmyYOBxMbxFrwdE8DpcCa8IX1YL/uybAoLuhVti4FN+ueNCzPY22R9M7wBGZH4QtolLdUUn91cn9Mw4urMXMbIrFfWaV4xcz//0ZyWCBftOAAMUNVIyjjbpU8EM+D0kmuZi5NzhC3UcmA4UvVcC0r/QiPV61xoXnGc9emWWPlenwDKEXVJNOSLqJJNfvDwCjkpqz9ZsOp+Yn2ah4Ifnxp7Y6g6cwTnIVVqH4jkAq1eZAJfdCyFvF4hDwg4XKd10ud/Uusx4MOxFTHNkEEA8zXqbXi4efE+lwRdFoRh7JUzGpwGBklxk9UNeGqUAHdc/AolVGHdWDUOiKPpEKu1m+vVJ/WjAJAE1tFZkCpWLXYzx1mbKPfFYBY5C50t/sd/w1WIo1jluWF1+A9sSa89IHYHtL6kEeuWVV7/m0Im3t4CJloJ412XMWFnHguGx9OtpB6N17M2R/6E0xijSKDVRyl34CgS3V2zELsyl3xEyrFd6c2XaeKV3JCqe8TKDajfBmL42iFVM/THtMscngEJnQ9+NThthnMZPEDsKRGFJbhPPKG0yQfyADGKxsnt/yZcmr4CBCSHCYXwHRVUQIEtVd6uE11uEQS+XqgMsQQ5k/GXvSg4B+1+uh/OeAdR/OeAcqvgyaclYd4uexZxVXfUOs77Yine+XQmHwuq1m4DtGSFzxzDc+1SW6B+5jiyATfVI8iLTALyrJmo87mFKnv6HIuV/scuW/sefOjI9wUk4lv7hFmxTMafI5P4VMxWL0+A2dl74F1Zy9TkYMZGuuMXBDthefWOvNjX4rwmadYIQA2KOgVHsSXCffik704na6e7sqHsoFFPjc8I+9l10jqCDIP8x7866J+NmI2m8M9qaD0mlZtsgrO0osr0hUols8h4HLbuha5z1svAOTkAqXsxGJ7r+mdvEPPEeW3gcl8TXP5ujmEXFFv0gi2jJouRcwKauQxWeq93cxB9IYa0MRwZIn4PhFQoxoeSLVMhH84aPiZ040vRLpHfET+Tva/YnsGU7puf3U6LvkfNETLvHrCszKe/y4sIsow3qFRtdwUu7KgkW54cfWDjxABh4OsMnwZ4dMKXE7/aoUCDj58Bfo45pOBbDE+5rEBFJFTObrPawFQ41oQxoDttzDoe1JBwthT0hixtPHxdjDNs6XGbpCvrGqNjx/OB9z/vVkPpZIl66D8VwLClOeGnbuUMJdPJ/HlTh8/iKvlHnN8W4VI1NfxvDufcAXaEEKbTsV4ZE7f9CpsIyeH6p+KxLbe4F3AmK6Nz+eUYT7wfuBJ5dxEtOcJMl9zBkBsZHwvTsLQ/pdGycjMSCsKDRbB/LkZtsAhEqJHRFNOGQH5Z2GQt+pTs19rxLK4Ws6UdFWeFzt67OEm+7uLlN28FRcNqD5Db3VIU8/v+5GfdVzecjRTvM9DQLDyYdcOXInSnYC21wIcYEK8ftEsD4qOldE+Nwpb43+qPRtQd+xwISIWa25IsohRa05yWfw8PVBoSS3MrR/pJfvNPHx0bR+1vX3uTCxqSARsJWFRbBkct/jkcBUfm/4HqCjMCG0Xvpsg2EP8OkNYeZflBaoeiW6jxEwX2qm8uQqhypr2DWWQasWYnBCItBhA/Jpf+qRIRJyC5Z9PW8LM+S/Xg28K6CpBQCSZ5lGh24ReEN8JEV83sX3gLOA8L4fKHqORJtQzprLaHQ1FjZ5WeCywHPC97yvTQ0T0brZAChmSGx+iZUqAF9emIj/rm3kl7J/P9h6lC+JJ1uDqDCHavAnl3U/aFEjhLGsy/PYc8fjgQ/cRMjF8ClcVV+okaQgSyZKFlQZiVkwrzSrlXE38UwNqacFwAAWxqcbFyRdmXbDhpPorZf7aD++oaPTrJ9cYajk8E0K3pk6FDfoIAbA3qFSBPx5iYcM+0FhQ0wAzseuUJTgEleq5uzXrLBgzJb8EBFCcBuMR/aOIMtMp5CYffen4gnyOmhgvYKxldJG3KHnDjnUmIciL1tmVgXyXghwSAzuUuzk43yo1n6ieYGSRyL93fhDBQEkGB4tl+n6U9FtrQuQj+A/hMCVs6pI39gdju33PaIa76L4P2Ea8Sg61kZPo6y9ncUkPPXlulmAFDdJE6cAIs+BQN8fuXpHLoy9jhjwul4khoUBD7cc+AhMf/eeDXvrbd6xBrTIGQR32bNs++iRrn6hSOvSidQP2NbAPkO98ecpo1y9Wdk5+KftAGxC33k029AB1dcV43VNlgpBxdR9pxLaemgkttJ2lw3zgV3Dn05XwtQ2Gf4bSbLVk2iQLvKsTf9/0nfj4cmby+w7WHAszetRlY/qq9MWXO6sVvxQ2ieaIlAvp+YQu1JNaDqYWPhWY1ezBt0lFbp6YyJn0Cnp1jMojmzAYR5vMY7dqmNMlnKJ1Vzete5/PYg8aXfzwfL2Ej7C9YcJq7+l/TD5irGkErMjC2zfSn/T9jEvTZggUfusl3RF/g0pcD6bXpZFNmqHJ5o8C+vsfUghRPFO4XHfnKLe3yF7XZKQueHVCMYh1IRDGv21r/hBzDLkjmurn2lQAJfppweDFYwooB1igNeapqid3VVIqonAhFc48RGaQCfUyAJjt8g3O00iUX0/x5uJ+tz+oP9m6OUpwhOkWEjUxHJ/ieHrTYjqmWpHcMr7ARLE4O7KJv7Q9wgfCwDPCyFWVGPmvRISppSumFygHCht/yEsdfN3dcnkDig7GL1Pn0ySo9r9AYjh0RGF6DHbxJsXn7byAct8QXvbKMbOEVNzXX9RF9aEpZNDy/sc2lvaTvab8/tmbiTpgJQUoeSQbogVErl0wKZXVQlYe6pUbou2oWR4uUoDhcLAMWuG6f4vRiMh02ljHEbPvbCJeHMUF3sSzZHx0/HC7vvurldya31BY0SAF4mK8Kuezggme60LpHvChdXqy4qUi8D1Hrkw8Ui87G4uYrfePjr6qMfm4wkNCrXI1KS5bEQszKKDjZGrsOfmh3ZiyxczwSaChihAy6BqfbnB03h5pOahITD+SmsKIA1MxwBvejrLHJnDJnFay+bkvp4Bnq/9vtMUtB7HzoKrK3vtBmu7JoJWqySFPVRb488iHjAZwCY0Va25f//d1blYZZWvCBcuX6/ViEaifCY0MJTVdOmKGiCleND5AdPmNVwhpYCZBD/hPDGLYLyh7Q9q4dXDeO9bNRBf03MwcIXLo/JbZNJX6mU0JrhkUkdVEJn7QbaTu4/B/H/pVmm2xxaPJeHwxBXWPnHuOvdl84/9Lw/LYvc8UZNNLV4CKty4ndS7GmF/3MWqAFskv8DSTVsJ9VkfCYSSUiTM2fSSC1QY0qTCTqhUYRaEQw0UETYbsHxrogq8Ot6IyfV8w+xrX8vKtareFn/JzYlB/KHdGHyxx1ZQVYLBEtbBoYh4ZvlloR2B3FHeFJSR3tLU+45u0GK1k5J/WrrM1an6RD/0iZCx8EX4w+QjuUeXUjczoegf5ia8Jk+K0/aFqDZgtWLe8SshKNReDPhYm+Xi7kz5skUHRvZAH4MJI+4hDw4LMXL2o60FtV2aWYmQ+QryxucOf6k6yWeIKHE6VgcA8Vgsr62zRyrtCb0xdUcnnQ3D0/rb6CgsEQvMcVUEfCHC+gupRKoLpEL5I1+0Jf5YhZLPZpYREyZwpnJfO8USMcXRtBCRfdODunCXHxBdViZuFREUidM8ivzPIBERIFZJaYGvz0UihaiY2J6HFuf/p/lPDaaq7n0rkcA8yoxhFKLjqHQ6TdOTWx8wLSZjKo8KmGaoLD2Vfu4iyLCp4aWXrn0yKGVA7sbwPuEnl5zE0OMjveV6aGiein0zMyGtyw3cNhC3+6siRZglGO9dOYMzIg5wNhY0mnGTMWi9lToUtPsApbvZtyxx6ZOxpO8Ugt4lNIRkeH6qJhOnmL8RgTqthPfRQYn8GcoPM4xpgEv9m8S83wiHXhXb+t7TSx22EZqHq8hWJYWH48ds3A9n1jqzDcU7h9tnYYAwTLdy1LT9LvkBrgsTXf3IUVSZ1/oA/f29YvscON92Xr1LikaYoCPUF0cGFTJQVSHoKeQPYaa2v7OJrUiNif6A9bpRkd/F/ijr3mTZ0zClWo/RXjc6QXGlLpi+j9hfXMnBvjlc/4FHBsV/OUNZJzivs/FIMrSNQuQWITrQegUrjWGRMA9/pYL5JItee6N9xq4mSFiBnd+AFXnEhbw9HiZpBMaJZTLHknEotDgUDf6ShJ3faMvFaNolqmQ/OOHmEhmXiCRCqbkMRPTz1RM/kmJkLmWgOUadz/ISPbnxZorZD1eaOKuAFkuaXknczEuba5TQMc7rkJ2rgz9Ek45VArTVGiUO++bNlBsn1lPpqLBB7SGyva/1EWIVrgvT4xSY30spdb/tLmTEDAw4aKZm0bRc+8P2o5FV0+QCKYBgwjjbtGvZ69aGLGJPNdrwqRxBaX0jHFHBbcIgS4xrUepdIDCK8zlP1f2Dxc9dinS8/h+wDk4Y5o1r7t7aQ/j9pW2FOQ0bfiiIukRV4ioXo/vL/BhFzaZUFxzv2z10KQzxtj7QGnGEZ0jFT+11HVTKnW7ZLsC4I8rX1kixupP4Oyq75CRalpINRCrrdmzdcqNyZjEG0X+zFkiD5poRIBzOCMvr7nFPrzpMad05cDb35cILsGdOh7v3g2Zoim/0Cs+FS0flQPYORYb4QaglvU5DlTbLKpI9nBVR2AF1w8k9PoNE/f5/zdZepdjS/tZH5UQg1xwHra0bbzx1vRHBZCF7qilRngZTNxGOl0A4XEWZLjf8rkJBuywRGOhAUgX+Lo5HPjRlqrMubiUwp8FuIuXNRhtsucSIxb6du778UruJiHXD7oTEfjCQzy+UCtXos6dVBWc/AylM9R8qdb2jYa1CulR+b/jLMx5McjcmYrjKx5Nj4I3HqosKNrYvpAxUXerRIvc9pI2XIYiCgMDEBSHP6mclXVnvHFBHwGNP72uGXWlyVMsC48isref5BONzfKHbz0kRz4caxtA0B02rlsQqv+17XBbuez6Yiec74LTjClgVYW1XnfSxojgLS0x/eGfNnhqtsFMY40LZgL6fD0phhDVuRbd+KUulAqPleyF1K4JkJR5tCcmlVNDbZcf6b2ZXHrWmWzfHAoL/DRFrzRCzK/oyQaCMj53CJm+jcKcdWMBoRshV5UQVW4XGyR8HaE8o9pr30rAPLhkbKBv3hCMhI/oCzV+a0gBN6dh20dkkW0zS+tf9+eip2+n0VO30+ip2+m63LHbNkmm1zwVPqYGbAUV2U8ZgaokAiAx6O1+Pjo0crt7o/jaZ5PtEQHfSZN26iDtwdnpxb+5c2Tc+hc7xlMPDDxtLUJHQElufC2Z9vEC4WtVAbF1RYRLeg5wYuPmY+f7YTvrxVhJP4gXIGDKANxLwMhHGkczGnj8iUu0DLyAeKGjie/VoLx6nTElUOJtIQjjIV4CJ+ERA72UP03QrE+unhehvqGTzz8FjZ5MwdFBeEp0hGqMCgoZn2ThVaoj4dhpfIHQW+Wni5OQyh21bUbraeAIj0/u6Bf9/qJP2P8tDsncqFi24880VbJu3qm3moVlpzVhnG/YF5SVX101aiK6eeTHIu5C2vQ2HKzAhWfYvXvkNbcM41I8gBNvBCw2D9lKMHKn/7oNUtamd4lcS2HMgRjAHWz7d4MBy5rnI3AGCEPkxoQNrEnj+YSM7OLcsK0lq7l2D6JNSHsY/g0Uan9AG4i+S7OkGnz96uX378L/z+QYCVdr/koPkVC1XJJI+vRmsGl0eh1d+cdnvLFhPTofQO3OCm5tLnfk0x04LmObKqe2sjJX6hzrH7IsVRFc7a3bAX1gUm368WzPLDl1OJyGY+t6/Rd//TA/VKfOGlipz5V2R6sgV/dVdeosYnZfqvLkzlzWFws0EyUuTqcMMhN4yOYA2yqNPth7gXVAOaAfDC+xN+kKD7Q1G1ry8rmPTfi4jQlMrGfpFR+cMXGowQwqK9OltaQiSRE3NvfPw07EIxrUQ2YJPjF4kPxQafcAClFti3GrYZY011mMVJ5Ot1g5Dug9A1eEYdtbJz7j+RPKKCkfYYMslXDjXPTtBY55kdbolEJhRcDTG/5EHmic1wBjyl/oMBrAcygybV93Wab1sxCJqkKvMbDpYeA4XTxtKLCqlFydy+SQHYzp8C6HIK2G9HhxY2ZWSiCS9d6+YrpJxP95xVCRC5bgcM2hBr5J7Vv9kG49VJbfBW6qrfHgY2VApFBiQnUsq9I7yTrsRHs/KuU59j8b8ucH9rbmZ8anjbzLASEE/vinyz8LirtgWNskj8hTVbByrEIo9NJrbHwTsPo/zsHX9kvCUYFpe3+GLtl8j+4/6R/hfzl1itDJ3pf+OteEzoYMof2rnKUUTCkM0HsbzXe8HGmkWO72Nb871L44WYQoATv2wwBrP9l72YV/ajg6jtXB5NZ6h5Bk2zIEecqGEVCpZwzbsZADf892HHR9pBJyr3cmUwp3WDD3i0aTgKzWTjlSt+oiaBSDmMDoE+/GPGYGJCt8A3WsybOLNCaHGCHrK/cgHUHKLROYwT1rq/8TrGjF0GS/CR0KhU49awlpvYzx7FZpDyAHzmYTuaUk06SzFVkTvSmZr+y/6m5B4Oyqv5eiekS2vagpec8B9n522I7d+ek4YHDoP4Ov48VB9nVBPP56dWdPA24FtD4MnV64xcBo6CsICv+hvaHdfB7Y9R2g8v9AmdNfc4NPTZG/YYyH7okNr8Qe6dxTq1tKG7DxUA5wibw8QAyI4c4j+RDOtAMHKIL4Nn6iUCBn8Xd/VNRPnlI3Lv8TNIHryV0NvzOxKpyL1ioRq8CO7QsZ36biemxpkyrRCSTQkMY9snr9cmojdas9RbFRfzBB+eOZZjm29jUB4zaX8qfE6nxOl/D6KKYsxMfpwy+HYi3580r31Zbzhqc08rVg431cLQD0grVrGrr8W1i7OGp3WXVN0gdHSRjQNtcW89HV5Y5wx+Rk0f+gnKxxgSkh1fLHHzuuxuVOaoTD2o9g1ebXgzolGiKw7Z7A1zCdQ1R19qm3N+AABqR4rii5c6oYgcilpXfAdloZ4EKTVpa5tFSm6AeohZuhJsNnSJzWroF9OlwRz0kMk0GowCWIqsPMsRP2428u9FNGQABE5TP6I6YFSGZ26H1NcZYB96KrpeswXvfJupgcfy/wf6Q3N/L0/Tv41nXuqI10HN/AnotvXZP1WM8GGYAZj+0Ujy5QT+3Q/mQCvGTbRWQMG3UUwuKdv5ZFp9WVNww8W8aS+e0fp5Calg3rrSN1VHNlkVIgY311GN/1bCMRxA4zU29eX5W+zkx5FtelBl5C/uEtVW8fZVkMGJpxdL+C/i7Qwtcl3vDKWcwbPjMWW+QXA4pgejMEwD53wkQEm+qI89zC8EsUge+a6Gvv9dJ8ZsZoDAAqeLLHmd5Yf2l9460yMSnVqj511/bleE8Uj+E/nLJEHwvWoE4DQ4VRmnaTrWe/2Q9ZzEiF3KXzazvf4fPPfMHHGe3veYXTJotxx4o36UP+8cP5aFLfHfX+PPPQEDV00U0K4y3BDFLv+SiQ86PHUjKyexI/+jTCpRdMcSnfRSTlfWgHiad98oES6RWq65xKWhIsDPaV6nslOIrA79egkWkv3skkrUbVsRX+1TLshzie3zorO1zpGM4KTkqapOSr0EX0ewUeeq9VWq1lZbm83G07uUT0/kzio31EDPDpCG5sWeZSVBLCS98Z8UoCbe4x6BaG/xeJswRsNGRkUhakH4btPXNaVxuNC7tKNL506vSUDRvCik6DWM9kZWyAyljY+F7VNokMceAUzT08Bp4BCol66ofD/J+hAWz6zHfPZ3avZQwEU1WHF36Slo/difPNSYcCKcX9L9PzD3ONGgeJNwGRc68oRjpcxbAZcg0adCJhUw5PWfKUCZrw2/4NFGaBBb/dzsyrXsKT7FRQodfbKg6GbwZHxvUw5IzLeBWXiD+ebtOEvddjDX3RUvVEoIX/K5zNKq/aVthjeG8nZY4aR3NIwJ8zoR7fgxUd8l/TTS+ODHZ2oNg+AI7rM3mhPuTyc91AAAAAEj61cZpMX/d+p5SIIUb5qYm4vyYfVd+LGXh3SXBYvaPdRYlWfduJneFbvSSasTmn61zh/0kPAgkidGSaQdtUS82cof1BGAN0k5S1kRWYCQYPZXwvRsDu1UCp9J2T0QUxilIXRXvpAHmvUFqlTc/3ypPjVFadk/ze9njk5cCgh4hQQ5L0uQCLWiEQq+NZ2YyxOo7nwuZqF/AQGt2InktOTEbBDpjHXVkQYQTIpm2t4BsZleiLUsVCLX/j2/JbLskXbYzZQFGMB8HpzQngLRGs8iHKlHKenxMU0Pj4JtXoSYjTBSmAVmccbEnDPyN2jZOMqauUT+J0NIJS9b1hs7aNyiAcdjzjIm2MYF1SkFrxFK82H0TEKWHkliThveC18fAGD5Ya4xrIcB2paZhEYpPGHa0PRSblhEy02OonAlq9h5tAodr/Lm2ohM4sNnD3QzTAcg64FhMKVSAo4RdOXvU5Vbl+jYM0CPqz/yeubnS/BKd6dnNZ0jPjcW8v04HbLwRkhorWMwAAALtZ1kCo2bt6/7qmK92JAyxa0Adcj355whORLnkYwuwy+FKMBMBA9ExU/HEzvymeOSMLZY4MHOT41RGkwx8dzz0dr/1FCJLhbmqZ3XARecVFe5vugCg7ZisQgS8QH7zfLkdXU3VrS1Q9iEPmGGN1rygn8fwimYG2wJS8vX28sRfVRXWtVsw5d6o8ixng9lrswVa5jV28Sm5AP3Z9FQKB8lS6fzuQaDrJShtU515GnQXsRLTkK9Fr25+CMg8Jlye3TzPlsNSUbdgc8RZruxKGbswi3AwR3cqL2okbC1xPGiZ6m5CtK1+FRjDe1LGpQ6B9WtFy6eG9mmWn5GYrSSwXrmytUXwmu766QXS3EJMqtwodPh1uOb/vrSa0OtoP712EBmaElHQ9yUJWBi+99iLWvhqREhlvpM5kQy37Td5jThx8YcXTJ9/kDDGN8wCMVj5qzhgV7yaQITddsnyMSdDap3ZmRF5JuWLWf90AFiFOb5BQCpCdt4hoGxAKVNWOdS9Y5FOVz1BmV/X/fHf8WCeCcXAm0PL0vknkrAXMMT6t8Nthu1S23qSfuAa7Piy7i8bEQQG0USOkjFKY7SLNqhiVI9EE8AAAOHgs3XcS6xxBjddyMLgxjnB7RZ1AwgWgdlNXmbr/N5DsZsihH4unvmyJ0GbicGaNUTorp+/14yHQpxwj51qq79wq2EQZgKdOSmqyy5ifhtxou8TTPznXBomxbE2TqwXVsIxY/sTGAv3EML7zgpCfkvOCd6IckZe433NpJTXK7/++7h/yuqEugF6Yq03mwzad87nhpBqyLvmU9xmwUE0yXc0W+qyIdKu+qgtV1njo1s24831MwwImX7e3am7MAhAQot2x9E09hy2ZjFFP9C1WSlL4zN8pSK9SOg0CH0544Gol+WSKbcZki5FnyIgIrmQFDhdmSYsCAPclHIxe+RVoQCAhJmQJ6J0vqCVX7y4g5aC7hPWpUCe2DlppwUQN0r7sESkOBc7IQHAtQ6ZkXHZ8KYJlF+Y3uoUZX/tqrrsokk+6YkvJ3hqfyKfL6goI4trrGFoT5E/N++pfA/4hXU7QNtfGitd2cgAAAAAABUObssfsEz4k7InE782xbyYUZsLkdpkai3VXwjH5AMdiSR8sKDRRJx0JYZInf2BqrOuAl0t7E9XQEqonyi6vXvwzandhX3EwqMaiveywKBvD3o0ImxvcYkADerlZBgRmKWKUnXv3u/K7/gMaQbd4RdGQEog5DKqQ3hnsA2UFQBzEAgTCry3lXQjRzNNG1gjZBiM73NXBlQ0BZjcJlMDQYoqpT0EUKEATn12dlzQ1MzQShe+OnIWE4RvTcDJT0hVaL1NxNh4agqkkYBIUnW1ElZCEdMI5oywQ+GoOJ2CZNdJNM0sF2PQ/z8pIFc7HewaXKwAAAAAAEVYSUa6AAAARXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAAIACAAADoAQAAQAAAP4BAAAAAAAA"}},"time_used":35,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":35,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/apple-touch-icon.png","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.340Z","timestamp":1785145636340,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /apple-touch-icon.png HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\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\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: text/html\r\ncontent-length: 1759\r\ncontent-encoding: br\r\netag: W/\"119f-68074bd6-26e1064d10a7233;;;\"\r\nlast-modified: Tue, 22 Apr 2025 07:57:10 GMT\r\npanel: hpanel\r\nplatform: hostinger\r\nx-turbo-charged-by: LiteSpeed\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 1d97041a552b561bcd8bc604a421b373-fra-edge4\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Bootstrap:3.3.7","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"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":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]},{"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":4511,"size_decoded":2144,"mime_type":"text/html","magic":"HTML document, ASCII text, with very long lines (371)","md5":"b16e9097fc7d3af8ebfcfce7aba0a42d","sha1":"2af3c8408b8445fe81d9a7c8d7cc8e8a05bf80f5","sha256":"e7db95c97a5d45787cc3e40cbcb93b748fefc65bc14e162c746e37f979861729","sha512":"53a7a2c276fbc5159231c162eb863504448515f1a078832b81f1bffeedb1c82932810b66748fd4111d1b8fb866622a5cc63e79e497227b611c90886ba45d3f3b","ssdeep":"96:tr+ulojsBwJG8YqVcqHL/GSrrLc1VhrJuzeK:tyoasBwJG8nVjaSeVhrJgeK","tlshash":"0891f88f25f381452603c99037f9b61499554007f685eca8bdee9228cfc4b8a41e3bdc","first_seen":"2025-04-22T08:45:29.599713Z","last_seen":"2026-07-29T06:51:10.952413Z","times_seen":37893,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuLXVzIgogICAgcHJlZml4PSJjb250ZW50OiBodHRwOi8vcHVybC5vcmcvcnNzLzEuMC9tb2R1bGVzL2NvbnRlbnQvIGRjOiBodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIGZvYWY6IGh0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvIG9nOiBodHRwOi8vb2dwLm1lL25zIyByZGZzOiBodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3JkZi1zY2hlbWEjIHNpb2M6IGh0dHA6Ly9yZGZzLm9yZy9zaW9jL25zIyBzaW9jdDogaHR0cDovL3JkZnMub3JnL3Npb2MvdHlwZXMjIHNrb3M6IGh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDIvc2tvcy9jb3JlIyB4c2Q6IGh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIyI+Cgo8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgICAgQGNoYXJzZXQgIlVURi04IjsKCiAgICAgICAgW25nXDpjbG9ha10sCiAgICAgICAgW25nLWNsb2FrXSwKICAgICAgICBbZGF0YS1uZy1jbG9ha10sCiAgICAgICAgW3gtbmctY2xvYWtdLAogICAgICAgIC5uZy1jbG9haywKICAgICAgICAueC1uZy1jbG9haywKICAgICAgICAubmctaGlkZTpub3QoLm5nLWhpZGUtYW5pbWF0ZSkgewogICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICBuZ1w6Zm9ybSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLm5nLWFuaW1hdGUtc2hpbSB7CiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5uZy1hbmNob3IgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICAgPHRpdGxlPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iT29wcywgbG9va3MgbGlrZSB0aGUgcGFnZSBpcyBsb3N0LiI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMy43L2Nzcy9ib290c3RyYXAubWluLmNzcyI+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9RE0rU2FuczozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bzozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz0iIgogICAgICAgIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLTlRNkgwUUVUUkYmYW1wO2N4PWMmYW1wO19zbGM9MSI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IGFzeW5jPSIiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQ+CiAgICAgICAgKGZ1bmN0aW9uIChpLCBzLCBvLCBnLCByLCBhLCBtKSB7CiAgICAgICAgICAgIGlbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddID0gcjsgaVtyXSA9IGlbcl0gfHwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgKGlbcl0ucSA9IGlbcl0ucSB8fCBbXSkucHVzaChhcmd1bWVudHMpCiAgICAgICAgICAgIH0sIGlbcl0ubCA9IDEgKiBuZXcgRGF0ZSgpOyBhID0gcy5jcmVhdGVFbGVtZW50KG8pLAogICAgICAgICAgICAgICAgbSA9IHMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07IGEuYXN5bmMgPSAxOyBhLnNyYyA9IGc7IG0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwgbSkKICAgICAgICB9KSh3aW5kb3csIGRvY3VtZW50LCAnc2NyaXB0JywgJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsICdnYScpOwoKICAgICAgICBnYSgnY3JlYXRlJywgJ1VBLTI2NTc1OTg5LTQ2JywgJ2F1dG8nKTsKICAgICAgICBnYSgnc2VuZCcsICdwYWdldmlldycpOwoKICAgIDwvc2NyaXB0Pgo8L2hlYWQ+Cgo8Ym9keT4KICAgIDxpZnJhbWUgYWxsb3c9ImpvaW4tYWQtaW50ZXJlc3QtZ3JvdXAiIGRhdGEtdGFnZ2luZy1pZD0iRy05UTZIMFFFVFJGIiBkYXRhLWxvYWQtdGltZT0iMTc0NDcwOTQ2NDA5MyIgaGVpZ2h0PSIwIgogICAgICAgIHdpZHRoPSIwIgogICAgICAgIHNyYz0iaHR0cHM6Ly90ZC5kb3VibGVjbGljay5uZXQvdGQvZ2EvcnVsP3RpZD1HLTlRNkgwUUVUUkYmYW1wO2dhY2lkPTE2Njk1ODM0ODYuMTc0NDcwOTQ2MyZhbXA7Z3RtPTQ1amU1NGIwdjkxMjU5NTkxMTJ6YTIwMCZhbXA7ZG1hPTEmYW1wO2RtYV9jcHM9c3lwaGFtbyZhbXA7Z2NkPTEzbDNsUGwybDJsMSZhbXA7bnBhPTAmYW1wO3BzY2RsPW5vYXBpJmFtcDthaXA9MSZhbXA7ZmxlZGdlPTEmYW1wO2ZybT0wJmFtcDt0YWdfZXhwPTEwMjUwOTY4M34xMDI4MDMyNzl+MTAyODEzMTA5fjEwMjg4NzgwMH4xMDI5MjYwNjJ+MTAzMDIxODMwfjEwMzAyNzAxNn4xMDMwNTE5NTN+MTAzMDU1NDY1fjEwMzA3Nzk1MCZhbXA7ej0yMTA4NTA0Mzg5IgogICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lOyB2aXNpYmlsaXR5OiBoaWRkZW47Ij4KICAgIDwvaWZyYW1lPgogICAgPGRpdiBjbGFzcz0icGFnZS1ub3QtZm91bmQiPgogICAgICAgIDxpbWcgY2xhc3M9ImltYWdlIiBhbHQ9IlBhZ2UgTm90IEZvdW5kIiBzcmM9Ii9odGRvY3NfZXJyb3IvcGFnZV9ub3RfZm91bmQuc3ZnIiAvPgogICAgICAgIDxoMSBjbGFzcz0idGl0bGUiPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvaDE+CiAgICAgICAgPHAgY2xhc3M9InRleHQiPgogICAgICAgICAgICBTb3JyeSwgdGhlIHBhZ2UgeW91IGFyZSBsb29raW5nIGZvciBjb3VsZCBub3QgYmUgZm91bmQuIEl0J3MganVzdCBhbgogICAgICAgICAgICBhY2NpZGVudCB0aGF0IHdhcyBub3QgaW50ZW50aW9uYWwuCiAgICAgICAgPC9wPgogICAgPC9kaXY+Cgo8L2JvZHk+CjxzdHlsZT4KICAgIGJvZHkgewogICAgICAgIGNvbG9yOiAjMWQxZTIwOwogICAgICAgIGJhY2tncm91bmQ6ICNmNGY1ZmY7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LWZhbWlseTogIkRNIFNhbnMiLCAiUm9ib3RvIiwgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICAgIH0KCiAgICAucGFnZS1ub3QtZm91bmQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwoKICAgICAgICBpbWcgewogICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuaW1hZ2UgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMycHg7CiAgICAgICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICB9CgogICAgICAgIC50aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIH0KCiAgICAgICAgLnRleHQgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1heC13aWR0aDogNjUwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgICAgIGNvbG9yOiAjNkQ3MDgxOwogICAgICAgIH0KCgogICAgfQo8L3N0eWxlPgoKPC9odG1sPgo="}},"time_used":114,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":114,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"widget.intercom.io/widget/p60ru8yf","fqdn":"widget.intercom.io","domain":"intercom.io","tld":"io"},"ip":{"addr":"52.84.50.103","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.357Z","timestamp":1785145636357,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.intercom.com","organization":""},"issuer":{"commonName":"Amazon RSA 2048 M04","organization":"Amazon"},"validity":{"start":"Thu, 13 Nov 2025 00:00:00 GMT","end":"Fri, 11 Dec 2026 23:59:59 GMT"},"fingerprint":{"sha1":"E2:7C:0F:4C:CC:B1:6F:45:04:99:4A:D4:CB:5C:0B:60:CA:75:CD:8E","sha256":"A6:51:D4:CB:51:4E:EF:B9:AD:B6:95:84:A1:3B:92:C1:BF:81:F5:22:36:A3:50:A2:8E:92:09:4A:15:D0:7E:CC"}}},"request":{"raw":"GET /widget/p60ru8yf HTTP/1.1\r\nHost: widget.intercom.io\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://bit-core.top/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ncontent-type: application/javascript; charset=UTF-8\r\ncontent-length: 3160\r\nlast-modified: Fri, 24 Jul 2026 17:56:13 GMT\r\nx-amz-server-side-encryption: AES256\r\ncontent-encoding: gzip\r\nx-amz-version-id: Uiv7MXZX4JwemUiaazIo3wyySC0w7QIY\r\naccept-ranges: bytes\r\nserver: AmazonS3\r\ndate: Mon, 27 Jul 2026 09:46:24 GMT\r\ncache-control: max-age=300, s-maxage=300, public\r\netag: \"ab29a6cceffa42565bd243f1b5ea6058\"\r\nx-cache: Error from cloudfront\r\nvia: 1.1 6a7eeeb375db56eafe74d447721ccbb8.cloudfront.net (CloudFront)\r\nx-amz-cf-pop: OSL50-P3\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-amz-cf-id: YZwwU-1k1s4x9Dd9NC3B7w1i5Dvf-grZytN0AfP26bf9EAUKN3f0PQ==\r\nage: 204\r\ncross-origin-resource-policy: cross-origin\r\nvary: Accept-Encoding, Origin\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]},{"name":"Amazon CloudFront","description":"Amazon CloudFront is a fast content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to customers globally with low latency, high transfer speeds.","website":"https://aws.amazon.com/cloudfront/","common_platform_enumeration":"","icon":"Amazon Cloudfront.svg","categories":["CDN"]},{"name":"Amazon S3","description":"Amazon S3 or Amazon Simple Storage Service is a service offered by Amazon Web Services (AWS) that provides object storage through a web service interface.","website":"https://aws.amazon.com/s3/","common_platform_enumeration":"","icon":"Amazon S3.svg","categories":["CDN"]}],"data":{"size":7614,"size_decoded":3912,"mime_type":"application/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (7614), with no line terminators","md5":"64323637c5757fe2bdc37bc1697c131b","sha1":"17615e72f6a5c035e9d59f979f1d74472a2839d1","sha256":"8891fe40795928600c2b6a8981fe3f0cb1c4aea8950005aa4a01fb1c00f769bb","sha512":"582c9429172ba70962ec855b69346da532af2a1e9018380eec47ca06694e19bc5efbd5a7007f034ba6e0aaa446b4c7e4080662d3de965a0aecc8f8f5ec43219a","ssdeep":"96:p2NH8/xVRyhsXtpZ8HEZgOM09SP0FfpdYMYozfDsJeiMw938I5Zv1JVqUP:p2YVNCH8bMFOrYMYoMMiZ935pqUP","tlshash":"1ff195feb6c2793806a31576623b770c3e3b654528494490d066c8cc7a76dcbc16bfad","first_seen":"2026-07-24T18:07:21.49761Z","last_seen":"2026-07-27T12:56:09.795236Z","times_seen":282,"resource_available":true,"data":"IWZ1bmN0aW9uKCl7dmFyIGU9ezc4MzkwOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz17c291cmNlX21hcDoiaGlkZGVuLXNvdXJjZS1tYXAiLGFwaV9iYXNlOiJodHRwczovL2FwaS1pYW0uaW50ZXJjb20uaW8iLHRlbGVtZXRyeV9iYXNlOiJodHRwczovL2FwaS1pYW0uaW50ZXJjb20uaW8iLHB1YmxpY19wYXRoOiJodHRwczovL2pzLmludGVyY29tY2RuLmNvbS8iLHl0X2lmcmFtZV9wcm94eV9wYXRoOiJodHRwczovL2ludGVyY29tLXNoZWV0cy5jb20veW91dHViZV9pZnJhbWVfcHJveHkiLHNoZWV0c19wcm94eV9wYXRoOiJodHRwczovL2ludGVyY29tLXNoZWV0cy5jb20vc2hlZXRzX3Byb3h5IixzZW50cnlfcHJveHlfcGF0aDoiaHR0cHM6Ly93d3cuaW50ZXJjb20tcmVwb3J0aW5nLmNvbS9zZW50cnkvaW5kZXguaHRtbCIsaW5zdGFsbF9tb2RlX2Jhc2U6Imh0dHBzOi8vYXBwLmludGVyY29tLmNvbSIsc2VudHJ5X2RzbjoiaHR0cHM6Ly9mMzA1ZGU2OWNhYzY0YTg0YTQ5NDU1NmQ1MzAzZGMyZEBhcHAuZ2V0c2VudHJ5LmNvbS8yNDI4NyIsaW50ZXJzZWN0aW9uX2pzOiJodHRwczovL2pzLmludGVyY29tY2RuLmNvbS9pbnRlcnNlY3Rpb24vYXNzZXRzL2FwcC5qcyIsaW50ZXJzZWN0aW9uX3N0eWxlczoiaHR0cHM6Ly9qcy5pbnRlcmNvbWNkbi5jb20vaW50ZXJzZWN0aW9uL2Fzc2V0cy9zdHlsZXMuanMiLGFydGljbGVfc2VhcmNoX21lc3Nlbmdlcl9hcHBfaWQ6MjcsbW9kZToicHJvZHVjdGlvbiJ9fX0sdD17fTtmdW5jdGlvbiBuKHIpe3ZhciBpPXRbcl07aWYodm9pZCAwIT09aSlyZXR1cm4gaS5leHBvcnRzO3ZhciBvPXRbcl09e2V4cG9ydHM6e319O3JldHVybiBlW3JdKG8sby5leHBvcnRzLG4pLG8uZXhwb3J0c30hZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9L2lwaG9uZXxpcGFkfGlwb2R8YW5kcm9pZHxibGFja2JlcnJ5fG9wZXJhIG1pbml8aWVtb2JpbGUvaSx0PVsiLmludGVyY29tLWxpZ2h0d2VpZ2h0LWFwcC1sYXVuY2hlciIsIi5pbnRlcmNvbS1sYXVuY2hlci1mcmFtZSIsIiNpbnRlcmNvbS1jb250YWluZXIiLCIuaW50ZXJjb20tbWVzc2VuZ2VyIiwiLmludGVyY29tLW5vdGlmaWNhdGlvbnMiXTtmdW5jdGlvbiByKGUpe3RyeXtpZighKGUgaW4gd2luZG93KSlyZXR1cm4hMTt2YXIgdD13aW5kb3dbZV07cmV0dXJuIG51bGwhPT10JiYodC5zZXRJdGVtKCJpbnRlcmNvbS10ZXN0IiwiMCIpLHQucmVtb3ZlSXRlbSgiaW50ZXJjb20tdGVzdCIpLCEwKX1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gaSgpe3ZhciBlPW8oKS52ZW5kb3J8fCIiLHQ9bygpLnVzZXJBZ2VudHx8IiI7cmV0dXJuIDA9PT1lLmluZGV4T2YoIkFwcGxlIikmJi9cc1NhZmFyaVwvLy50ZXN0KHQpfWZ1bmN0aW9uIG8oKXtyZXR1cm4gbmF2aWdhdG9yfHx7fX1mdW5jdGlvbiBhKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1vKCkudXNlckFnZW50KSwvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChlKSYmIXdpbmRvdy5NU1N0cmVhbX1mdW5jdGlvbiBzKCl7dmFyIGU7cmV0dXJuKG51bGw9PShlPWZ1bmN0aW9uKCl7aWYoYSgpKXt2YXIgZT1vKCkuYXBwVmVyc2lvbi5tYXRjaCgvT1MgKFxkKylfKFxkKylfPyhcZCspPy8pO3JldHVybnttYWpvcjpwYXJzZUludChlWzFdLDEwKSxtaW5vcjpwYXJzZUludChlWzJdLDEwKSxwYXRjaDpwYXJzZUludChlWzNdfHwwLDEwKX19cmV0dXJuIG51bGx9KCkpP3ZvaWQgMDplLm1ham9yKT49MTV9dmFyIGM9e2hhc1hocjJTdXBwb3J0OmZ1bmN0aW9uKCl7cmV0dXJuIlhNTEh0dHBSZXF1ZXN0ImluIHdpbmRvdyYmIndpdGhDcmVkZW50aWFscyJpbiBuZXcgWE1MSHR0cFJlcXVlc3R9LGhhc0xvY2FsU3RvcmFnZVN1cHBvcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gcigibG9jYWxTdG9yYWdlIil9LGhhc1Nlc3Npb25TdG9yYWdlU3VwcG9ydDpmdW5jdGlvbigpe3JldHVybiByKCJzZXNzaW9uU3RvcmFnZSIpfSxoYXNGaWxlU3VwcG9ydDpmdW5jdGlvbigpe3JldHVybiEhKHdpbmRvdy5GaWxlUmVhZGVyJiZ3aW5kb3cuRmlsZSYmd2luZG93LkZpbGVMaXN0JiZ3aW5kb3cuRm9ybURhdGEpfSxoYXNBdWRpb1N1cHBvcnQ6ZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhdWRpbyIpO3JldHVybiEhZS5jYW5QbGF5VHlwZSYmISFlLmNhblBsYXlUeXBlKCJhdWRpby9tcGVnOyIpLnJlcGxhY2UoL15ubyQvLCIiKX0saGFzVmlzaWJpbGl0eVN1cHBvcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09ZG9jdW1lbnQuaGlkZGVufHx2b2lkIDAhPT1kb2N1bWVudC5tb3pIaWRkZW58fHZvaWQgMCE9PWRvY3VtZW50Lm1zSGlkZGVufHx2b2lkIDAhPT1kb2N1bWVudC53ZWJraXRIaWRkZW59LG1lc3NlbmdlcklzVmlzaWJsZTpmdW5jdGlvbigpe3JldHVybiB0LnNvbWUoKGZ1bmN0aW9uKGUpe3ZhciB0PXdpbmRvdy5wYXJlbnQuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKTtpZih0KXt2YXIgbj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBuJiZuLndpZHRoPjAmJm4uaGVpZ2h0PjB9fSkpfSxtZXNzZW5nZXJIYXNEaXNwbGF5Tm9uZVNldDpmdW5jdGlvbigpe3JldHVybiB0LnNvbWUoKGZ1bmN0aW9uKGUpe3ZhciB0PXdpbmRvdy5wYXJlbnQuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKTtpZih0KXt2YXIgbj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KTtyZXR1cm4gbnVsbD09PW58fCJub25lIj09PW4uZGlzcGxheX19KSl9LGlzTW9iaWxlQnJvd3NlcjpmdW5jdGlvbigpe3ZhciB0PW8oKS51c2VyQWdlbnQ7cmV0dXJuISF0JiYobnVsbCE9PXQubWF0Y2goZSkmJnZvaWQgMCE9PXdpbmRvdy5wYXJlbnQpfSxpc0lPU0ZpcmVmb3g6ZnVuY3Rpb24oKXtyZXR1cm4hIW8oKS51c2VyQWdlbnQubWF0Y2goIkZ4aU9TIil9LGlzRmlyZWZveDpmdW5jdGlvbigpe3JldHVybiEhbygpLnVzZXJBZ2VudC5tYXRjaCgiRmlyZWZveCIpfSxpc1NhZmFyaTppLGlzRWxlY3Ryb246ZnVuY3Rpb24oKXt2YXIgZT1vKCkudXNlckFnZW50fHwiIix0PXdpbmRvdy5wYXJlbnR8fHt9LG49dC5wcm9jZXNzJiZ0LnZlcnNpb25zJiZ0LnZlcnNpb25zLmVsZWN0cm9uO3JldHVybi9cc0VsZWN0cm9uXC8vLnRlc3QoZSl8fG59LGlzSUU6ZnVuY3Rpb24oKXt2YXIgZT1vKCkudXNlckFnZW50fHwiIjtyZXR1cm4gZS5pbmRleE9mKCJNU0lFIik+MHx8ZS5pbmRleE9mKCJUcmlkZW50Iik+MH0saXNFZGdlOmZ1bmN0aW9uKCl7cmV0dXJuKG8oKS51c2VyQWdlbnR8fCIiKS5pbmRleE9mKCJFZGdlIik+MH0saXNOYXRpdmVNb2JpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gbygpLmlzTmF0aXZlTW9iaWxlfSxpc0Nocm9tZTpmdW5jdGlvbigpe3ZhciBlPXdpbmRvdy5jaHJvbWUsdD1vKCkudmVuZG9yLG49bygpLnVzZXJBZ2VudC5pbmRleE9mKCJPUFIiKT4tMSxyPW8oKS51c2VyQWdlbnQuaW5kZXhPZigiRWRnZSIpPi0xO3JldHVybiEhbygpLnVzZXJBZ2VudC5tYXRjaCgiQ3JpT1MiKXx8bnVsbCE9ZSYmIkdvb2dsZSBJbmMuIj09PXQmJiExPT09biYmITE9PT1yfSxpc0lPUzphLGlzSU9TMTVTYWZhcmk6ZnVuY3Rpb24oKXt2YXIgZT1vKCkudXNlckFnZW50LHQ9YShlKSxuPSEhZS5tYXRjaCgvV2ViS2l0L2kpO3JldHVybiB0JiZuJiYhZS5tYXRjaCgvQ3JpT1MvaSkmJnMoKX0saXNBbmRyb2lkOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1vKCkudXNlckFnZW50KSxlJiZlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiYW5kcm9pZCIpPi0xfSxpc01hY09TOmZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCJNYWMiKT49MH19LHU9WyJ0dXJibzp2aXNpdCIsInR1cmJvbGlua3M6dmlzaXQiLCJwYWdlOmJlZm9yZS1jaGFuZ2UiXSxkPVsidHVyYm86YmVmb3JlLWNhY2hlIiwidHVyYm9saW5rczpiZWZvcmUtY2FjaGUiXSxtPVsidHVyYm86bG9hZCIsInR1cmJvbGlua3M6bG9hZCIsInBhZ2U6Y2hhbmdlIl07dmFyIHA9ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtyZXR1cm4gci50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLHIuY2hhcnNldD0idXRmLTgiLHIuc3JjPWUsdCYmIW4mJihyLmludGVncml0eT10LHIuY3Jvc3NPcmlnaW49ImFub255bW91cyIpLHJ9LGw9big3ODM5MCkucHVibGljX3BhdGgsZj0ic2hhMzg0LU5lQkJ2am9hbXF3NUFoVncyamRTaDhEbzViZWhTN1pqMUFGY0xiWVRLMGQzMmIreFJhdXdoQmtNZCtyQ09jUm8iLGg9InNoYTM4NC04M2o0dmNBS3Vub2NKZlBmQW9mZ3ZXM2ZTMUFSV3p0WDlVampEVEU3MzI1RlFEaFpHZThqOEZLQ3RBT2dFM3BiIix3PSJzaGEzODQtRDBPREtnZDlVcmFOd3QwdGt5Und2WmN6TkpuWHkzQm1MczlsVjlCa2ppSWg3TzZ6UWNvZnZoa2UrZlBaeXZMeSIsZz0ic2hhMzg0LXFwcEZpa3EwWFBhaXp2ZXFjU2lvbHpQZU52cW5LaXlKaTM5aWxQUVlNaEdhVTVBNGRyaHVITXoyaE9zNnFKdmIiLHY9bCsiZnJhbWUuNTkyYTk0ZjYuanMiLF89bCsidmVuZG9yLmY2YjY0OTUzLmpzIixiPWwrImZyYW1lLW1vZGVybi4yMGY2Yzg2ZS5qcyIseT1sKyJ2ZW5kb3ItbW9kZXJuLjE0NmEzZmUxLmpzIixFPSJJbnRlcmNvbSIsQT0vYm90fGdvb2dsZWJvdHxjcmF3bGVyfHNwaWRlcnxyb2JvdHxjcmF3bGluZ3xmYWNlYm9va2V4dGVybmFsaGl0fGNlZnNoYXJwfGhlYWRsZXNzY2hyb21lfHBoYW50b21qcy9pLFM9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93W0VdJiZ3aW5kb3dbRV0uYm9vdGVkfSx4PWZ1bmN0aW9uKCl7dmFyIGUsdD0hIShlPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0Nocm9tKD86ZXxpdW0pXC8oWzAtOVwuXSspLykpJiZlWzFdO3JldHVybiEhdCYmdC5zcGxpdCgiLiIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KGUpfSkpfSxJPW5ldyBTZXQoWyJuby1yZWZlcnJlciIsIm5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlIiwic2FtZS1vcmlnaW4iLCJvcmlnaW4iLCJzdHJpY3Qtb3JpZ2luIiwib3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIiwic3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbiIsInVuc2FmZS11cmwiXSk7dmFyIE8sTSxSPWZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7ZS5pZD0iaW50ZXJjb20tZnJhbWUiLGUuc2V0QXR0cmlidXRlKCJzdHlsZSIsInBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OyBvcGFjaXR5OiAwICFpbXBvcnRhbnQ7IHdpZHRoOiAxcHggIWltcG9ydGFudDsgaGVpZ2h0OiAxcHggIWltcG9ydGFudDsgdG9wOiAwICFpbXBvcnRhbnQ7IGxlZnQ6IDAgIWltcG9ydGFudDsgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IHotaW5kZXg6IC0xICFpbXBvcnRhbnQ7IHBvaW50ZXItZXZlbnRzOiBub25lOyIpLGkoKSYmZS5zZXRBdHRyaWJ1dGUoInN0eWxlIixlLmdldEF0dHJpYnV0ZSgic3R5bGUiKSsidmlzaWJpbGl0eTogaGlkZGVuOyIpLGUuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSxlLnNldEF0dHJpYnV0ZSgidGFiSW5kZXgiLCItMSIpLGUuc2V0QXR0cmlidXRlKCJ0aXRsZSIsIkludGVyY29tIiksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKSxmdW5jdGlvbihlLHQsbil7aWYodm9pZCAwPT09biYmKG49ImVuIiksZS5jb250ZW50RG9jdW1lbnQpe2lmKGMuaXNGaXJlZm94KCkpe3ZhciByPWUuY29udGVudERvY3VtZW50Lm9wZW4oKTtyLndyaXRlKCI8IURPQ1RZUEUgaHRtbD4iKSxyLmNsb3NlKCl9IWZ1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT1uJiYobj0iZW4iKSxlLmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUw9dCxlLmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoImxhbmciLG4pfShlLmNvbnRlbnREb2N1bWVudCx0LG4pfX0oZSwnPCFET0NUWVBFIGh0bWw+XG4gICAgPGh0bWwgbGFuZz0iZW4iPlxuICAgICAgPGhlYWQ+PC9oZWFkPlxuICAgICAgPGJvZHk+XG4gICAgICA8L2JvZHk+XG4gICAgPC9odG1sPicpLGZ1bmN0aW9uKGUsdCl7dmFyIG49dC5xdWVyeVNlbGVjdG9yKCdtZXRhW25hbWU9InJlZmVycmVyIl0nKTtpZihuKXt2YXIgcj0obi5nZXRBdHRyaWJ1dGUoImNvbnRlbnQiKXx8IiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO2lmKEkuaGFzKHIpKXt2YXIgaT1lLmNyZWF0ZUVsZW1lbnQoIm1ldGEiKTtpLnNldEF0dHJpYnV0ZSgibmFtZSIsInJlZmVycmVyIiksaS5zZXRBdHRyaWJ1dGUoImNvbnRlbnQiLHIpLGUuaGVhZC5hcHBlbmRDaGlsZChpKX19fShlLmNvbnRlbnREb2N1bWVudCxkb2N1bWVudCk7dmFyIHQsbj0hISh0PXgoKSkmJnRbMF0+PTEyMCxyPW4/ZzpoLG89ITEsYT1wKG4/Yjp2LG4/dzpmLG8pLHM9cChuP3k6XyxyLG8pO3JldHVybiBlLmNvbnRlbnREb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGEpLGUuY29udGVudERvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyksd2luZG93Ll9faW50ZXJjb21Bc3NpZ25Mb2NhdGlvbj1mdW5jdGlvbihlKXt3aW5kb3cubG9jYXRpb24uYXNzaWduKGUpfSx3aW5kb3cuX19pbnRlcmNvbVJlbG9hZExvY2F0aW9uPWZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfSxlfSxDPWZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImludGVyY29tLWZyYW1lIik7ZSYmZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSksZGVsZXRlIHdpbmRvdy5fX2ludGVyY29tQXNzaWduTG9jYXRpb24sZGVsZXRlIHdpbmRvdy5fX2ludGVyY29tUmVsb2FkTG9jYXRpb259LEw9ZnVuY3Rpb24oKXtpZighd2luZG93W0VdKXt2YXIgZT1mdW5jdGlvbiBlKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07ZS5xLnB1c2gobil9O2UucT1bXSx3aW5kb3dbRV09ZX19LGo9ZnVuY3Rpb24oKXtTKCl8fChMKCksUigpLHdpbmRvd1tFXS5ib290ZWQ9ITApfTsiYXR0YWNoRXZlbnQiaW4gd2luZG93JiYhd2luZG93LmFkZEV2ZW50TGlzdGVuZXJ8fG5hdmlnYXRvciYmbmF2aWdhdG9yLnVzZXJBZ2VudCYmL01TSUUgOVwuMC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJiF3aW5kb3cuYXRvYnx8Im9ucHJvcGVydHljaGFuZ2UiaW4gZG9jdW1lbnQmJndpbmRvdy5tYXRjaE1lZGlhJiYvTVNJRSAxMFwuMC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KXx8KHZvaWQgMD09PU8mJihPPW51bGw9PShNPW5hdmlnYXRvcik/dm9pZCAwOk0udXNlckFnZW50KSxPJiZBLnRlc3QoTykpfHx3aW5kb3cuaXNJbnRlcmNvbU1lc3NlbmdlclNoZWV0fHxTKCl8fChqKCksZnVuY3Rpb24oZSx0LG4pe20uZm9yRWFjaCgoZnVuY3Rpb24odCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0LGUpfSkpLGQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihlLHQpfSkpLHUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihlLG4pfSkpfShqLEMsKGZ1bmN0aW9uKCl7d2luZG93W0VdKCJzaHV0ZG93biIsITEpLGRlbGV0ZSB3aW5kb3dbRV0sQygpLEwoKX0pKSl9KCl9KCk7"}},"time_used":324,"timings":{"blocked":-1,"dns":3,"connect":1,"send":0,"wait":310,"receive":0,"ssl":10},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/api/soc-proof/index","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"xhr","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:30.368Z","timestamp":1785145650368,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /api/soc-proof/index HTTP/1.1\r\nHost: bit-core.top\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/json, text/plain, */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nx-client: web\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://bit-core.top/\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: 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 404 \r\ndate: Mon, 27 Jul 2026 09:47:30 GMT\r\ncontent-type: text/html\r\ncontent-length: 1626\r\nlast-modified: Tue, 22 Apr 2025 07:57:10 GMT\r\netag: \"119f-68074bd6-26e1064d10a7233;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: b5915821fba9624beb6f4bdee0ea4c9f-fra-edge4\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Bootstrap:3.3.7","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"name":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]}],"data":{"size":4511,"size_decoded":1978,"mime_type":"text/html","magic":"HTML document, ASCII text, with very long lines (371)","md5":"b16e9097fc7d3af8ebfcfce7aba0a42d","sha1":"2af3c8408b8445fe81d9a7c8d7cc8e8a05bf80f5","sha256":"e7db95c97a5d45787cc3e40cbcb93b748fefc65bc14e162c746e37f979861729","sha512":"53a7a2c276fbc5159231c162eb863504448515f1a078832b81f1bffeedb1c82932810b66748fd4111d1b8fb866622a5cc63e79e497227b611c90886ba45d3f3b","ssdeep":"96:tr+ulojsBwJG8YqVcqHL/GSrrLc1VhrJuzeK:tyoasBwJG8nVjaSeVhrJgeK","tlshash":"0891f88f25f381452603c99037f9b61499554007f685eca8bdee9228cfc4b8a41e3bdc","first_seen":"2025-04-22T08:45:29.599713Z","last_seen":"2026-07-29T06:51:10.952413Z","times_seen":37893,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuLXVzIgogICAgcHJlZml4PSJjb250ZW50OiBodHRwOi8vcHVybC5vcmcvcnNzLzEuMC9tb2R1bGVzL2NvbnRlbnQvIGRjOiBodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIGZvYWY6IGh0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvIG9nOiBodHRwOi8vb2dwLm1lL25zIyByZGZzOiBodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3JkZi1zY2hlbWEjIHNpb2M6IGh0dHA6Ly9yZGZzLm9yZy9zaW9jL25zIyBzaW9jdDogaHR0cDovL3JkZnMub3JnL3Npb2MvdHlwZXMjIHNrb3M6IGh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDIvc2tvcy9jb3JlIyB4c2Q6IGh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIyI+Cgo8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgICAgQGNoYXJzZXQgIlVURi04IjsKCiAgICAgICAgW25nXDpjbG9ha10sCiAgICAgICAgW25nLWNsb2FrXSwKICAgICAgICBbZGF0YS1uZy1jbG9ha10sCiAgICAgICAgW3gtbmctY2xvYWtdLAogICAgICAgIC5uZy1jbG9haywKICAgICAgICAueC1uZy1jbG9haywKICAgICAgICAubmctaGlkZTpub3QoLm5nLWhpZGUtYW5pbWF0ZSkgewogICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICBuZ1w6Zm9ybSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLm5nLWFuaW1hdGUtc2hpbSB7CiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5uZy1hbmNob3IgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICAgPHRpdGxlPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iT29wcywgbG9va3MgbGlrZSB0aGUgcGFnZSBpcyBsb3N0LiI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMy43L2Nzcy9ib290c3RyYXAubWluLmNzcyI+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9RE0rU2FuczozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bzozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz0iIgogICAgICAgIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLTlRNkgwUUVUUkYmYW1wO2N4PWMmYW1wO19zbGM9MSI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IGFzeW5jPSIiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQ+CiAgICAgICAgKGZ1bmN0aW9uIChpLCBzLCBvLCBnLCByLCBhLCBtKSB7CiAgICAgICAgICAgIGlbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddID0gcjsgaVtyXSA9IGlbcl0gfHwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgKGlbcl0ucSA9IGlbcl0ucSB8fCBbXSkucHVzaChhcmd1bWVudHMpCiAgICAgICAgICAgIH0sIGlbcl0ubCA9IDEgKiBuZXcgRGF0ZSgpOyBhID0gcy5jcmVhdGVFbGVtZW50KG8pLAogICAgICAgICAgICAgICAgbSA9IHMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07IGEuYXN5bmMgPSAxOyBhLnNyYyA9IGc7IG0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwgbSkKICAgICAgICB9KSh3aW5kb3csIGRvY3VtZW50LCAnc2NyaXB0JywgJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsICdnYScpOwoKICAgICAgICBnYSgnY3JlYXRlJywgJ1VBLTI2NTc1OTg5LTQ2JywgJ2F1dG8nKTsKICAgICAgICBnYSgnc2VuZCcsICdwYWdldmlldycpOwoKICAgIDwvc2NyaXB0Pgo8L2hlYWQ+Cgo8Ym9keT4KICAgIDxpZnJhbWUgYWxsb3c9ImpvaW4tYWQtaW50ZXJlc3QtZ3JvdXAiIGRhdGEtdGFnZ2luZy1pZD0iRy05UTZIMFFFVFJGIiBkYXRhLWxvYWQtdGltZT0iMTc0NDcwOTQ2NDA5MyIgaGVpZ2h0PSIwIgogICAgICAgIHdpZHRoPSIwIgogICAgICAgIHNyYz0iaHR0cHM6Ly90ZC5kb3VibGVjbGljay5uZXQvdGQvZ2EvcnVsP3RpZD1HLTlRNkgwUUVUUkYmYW1wO2dhY2lkPTE2Njk1ODM0ODYuMTc0NDcwOTQ2MyZhbXA7Z3RtPTQ1amU1NGIwdjkxMjU5NTkxMTJ6YTIwMCZhbXA7ZG1hPTEmYW1wO2RtYV9jcHM9c3lwaGFtbyZhbXA7Z2NkPTEzbDNsUGwybDJsMSZhbXA7bnBhPTAmYW1wO3BzY2RsPW5vYXBpJmFtcDthaXA9MSZhbXA7ZmxlZGdlPTEmYW1wO2ZybT0wJmFtcDt0YWdfZXhwPTEwMjUwOTY4M34xMDI4MDMyNzl+MTAyODEzMTA5fjEwMjg4NzgwMH4xMDI5MjYwNjJ+MTAzMDIxODMwfjEwMzAyNzAxNn4xMDMwNTE5NTN+MTAzMDU1NDY1fjEwMzA3Nzk1MCZhbXA7ej0yMTA4NTA0Mzg5IgogICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lOyB2aXNpYmlsaXR5OiBoaWRkZW47Ij4KICAgIDwvaWZyYW1lPgogICAgPGRpdiBjbGFzcz0icGFnZS1ub3QtZm91bmQiPgogICAgICAgIDxpbWcgY2xhc3M9ImltYWdlIiBhbHQ9IlBhZ2UgTm90IEZvdW5kIiBzcmM9Ii9odGRvY3NfZXJyb3IvcGFnZV9ub3RfZm91bmQuc3ZnIiAvPgogICAgICAgIDxoMSBjbGFzcz0idGl0bGUiPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvaDE+CiAgICAgICAgPHAgY2xhc3M9InRleHQiPgogICAgICAgICAgICBTb3JyeSwgdGhlIHBhZ2UgeW91IGFyZSBsb29raW5nIGZvciBjb3VsZCBub3QgYmUgZm91bmQuIEl0J3MganVzdCBhbgogICAgICAgICAgICBhY2NpZGVudCB0aGF0IHdhcyBub3QgaW50ZW50aW9uYWwuCiAgICAgICAgPC9wPgogICAgPC9kaXY+Cgo8L2JvZHk+CjxzdHlsZT4KICAgIGJvZHkgewogICAgICAgIGNvbG9yOiAjMWQxZTIwOwogICAgICAgIGJhY2tncm91bmQ6ICNmNGY1ZmY7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LWZhbWlseTogIkRNIFNhbnMiLCAiUm9ib3RvIiwgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICAgIH0KCiAgICAucGFnZS1ub3QtZm91bmQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwoKICAgICAgICBpbWcgewogICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuaW1hZ2UgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMycHg7CiAgICAgICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICB9CgogICAgICAgIC50aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIH0KCiAgICAgICAgLnRleHQgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1heC13aWR0aDogNjUwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgICAgIGNvbG9yOiAjNkQ3MDgxOwogICAgICAgIH0KCgogICAgfQo8L3N0eWxlPgoKPC9odG1sPgo="}},"time_used":285,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":285,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/img/green-oval.png","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.146Z","timestamp":1785145636146,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /img/green-oval.png HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/css/main.css?v=1684946825\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\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 200 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: image/webp\r\ncontent-length: 197702\r\ncache-control: public, max-age=604800\r\nage: 6412\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 695567865a2e12fee5ee0cef5092ca03-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":197702,"size_decoded":198009,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"9feb157096f19d73fbe0133ae5d4f93c","sha1":"c1878c2d022b93a2132166e32032f11712a76646","sha256":"6f31d500e3f35d3369e83fe2db28989d4b695cafaf206fd7a192890523ceba3d","sha512":"fd329942d60aee89ffedd5bab452707b6653ea018136e1039800e5bc318cbcf31513d1c7562a1723cf3661acb0cdc003ff8b73e6a8d3398c80fa7affe98b9d1f","ssdeep":"3072:51au+fBIyRaUAAjy7K7ZInkFN4GueBDN8xkqdnN1e+HuQjA/D:54IyRa7w0MNXuqCW4nG+OQEr","tlshash":"6d14231f1f237908b297e9b7d5ef32c5c39e9f98e022d58d584502ba2225362f5853a8","first_seen":"2026-07-27T08:06:16.640924Z","last_seen":"2026-07-27T09:48:29.867962Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":84,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":21,"receive":63,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/favicon-16x16.png","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.341Z","timestamp":1785145636341,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /favicon-16x16.png HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\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\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: text/html\r\ncontent-length: 1759\r\ncontent-encoding: br\r\netag: W/\"119f-68074bd6-26e1064d10a7233;;;\"\r\nlast-modified: Tue, 22 Apr 2025 07:57:10 GMT\r\npanel: hpanel\r\nplatform: hostinger\r\nx-turbo-charged-by: LiteSpeed\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 5280b6089a5a10903c648a7c53c2f0f8-fra-edge4\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Bootstrap:3.3.7","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"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 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":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"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":4511,"size_decoded":2144,"mime_type":"text/html","magic":"HTML document, ASCII text, with very long lines (371)","md5":"b16e9097fc7d3af8ebfcfce7aba0a42d","sha1":"2af3c8408b8445fe81d9a7c8d7cc8e8a05bf80f5","sha256":"e7db95c97a5d45787cc3e40cbcb93b748fefc65bc14e162c746e37f979861729","sha512":"53a7a2c276fbc5159231c162eb863504448515f1a078832b81f1bffeedb1c82932810b66748fd4111d1b8fb866622a5cc63e79e497227b611c90886ba45d3f3b","ssdeep":"96:tr+ulojsBwJG8YqVcqHL/GSrrLc1VhrJuzeK:tyoasBwJG8nVjaSeVhrJgeK","tlshash":"0891f88f25f381452603c99037f9b61499554007f685eca8bdee9228cfc4b8a41e3bdc","first_seen":"2025-04-22T08:45:29.599713Z","last_seen":"2026-07-29T06:51:10.952413Z","times_seen":37893,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuLXVzIgogICAgcHJlZml4PSJjb250ZW50OiBodHRwOi8vcHVybC5vcmcvcnNzLzEuMC9tb2R1bGVzL2NvbnRlbnQvIGRjOiBodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIGZvYWY6IGh0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvIG9nOiBodHRwOi8vb2dwLm1lL25zIyByZGZzOiBodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3JkZi1zY2hlbWEjIHNpb2M6IGh0dHA6Ly9yZGZzLm9yZy9zaW9jL25zIyBzaW9jdDogaHR0cDovL3JkZnMub3JnL3Npb2MvdHlwZXMjIHNrb3M6IGh0dHA6Ly93d3cudzMub3JnLzIwMDQvMDIvc2tvcy9jb3JlIyB4c2Q6IGh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIyI+Cgo8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgICAgQGNoYXJzZXQgIlVURi04IjsKCiAgICAgICAgW25nXDpjbG9ha10sCiAgICAgICAgW25nLWNsb2FrXSwKICAgICAgICBbZGF0YS1uZy1jbG9ha10sCiAgICAgICAgW3gtbmctY2xvYWtdLAogICAgICAgIC5uZy1jbG9haywKICAgICAgICAueC1uZy1jbG9haywKICAgICAgICAubmctaGlkZTpub3QoLm5nLWhpZGUtYW5pbWF0ZSkgewogICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICBuZ1w6Zm9ybSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLm5nLWFuaW1hdGUtc2hpbSB7CiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5uZy1hbmNob3IgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICAgPHRpdGxlPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iT29wcywgbG9va3MgbGlrZSB0aGUgcGFnZSBpcyBsb3N0LiI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMy43L2Nzcy9ib290c3RyYXAubWluLmNzcyI+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9RE0rU2FuczozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bzozMDAsMzAwaSw0MDAsNDAwaSw2MDAsNjAwaSw3MDAsNzAwaSw4MDAsODAwaSIKICAgICAgICByZWw9InN0eWxlc2hlZXQiPgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz0iIgogICAgICAgIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLTlRNkgwUUVUUkYmYW1wO2N4PWMmYW1wO19zbGM9MSI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IGFzeW5jPSIiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQ+CiAgICAgICAgKGZ1bmN0aW9uIChpLCBzLCBvLCBnLCByLCBhLCBtKSB7CiAgICAgICAgICAgIGlbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddID0gcjsgaVtyXSA9IGlbcl0gfHwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgKGlbcl0ucSA9IGlbcl0ucSB8fCBbXSkucHVzaChhcmd1bWVudHMpCiAgICAgICAgICAgIH0sIGlbcl0ubCA9IDEgKiBuZXcgRGF0ZSgpOyBhID0gcy5jcmVhdGVFbGVtZW50KG8pLAogICAgICAgICAgICAgICAgbSA9IHMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07IGEuYXN5bmMgPSAxOyBhLnNyYyA9IGc7IG0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwgbSkKICAgICAgICB9KSh3aW5kb3csIGRvY3VtZW50LCAnc2NyaXB0JywgJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsICdnYScpOwoKICAgICAgICBnYSgnY3JlYXRlJywgJ1VBLTI2NTc1OTg5LTQ2JywgJ2F1dG8nKTsKICAgICAgICBnYSgnc2VuZCcsICdwYWdldmlldycpOwoKICAgIDwvc2NyaXB0Pgo8L2hlYWQ+Cgo8Ym9keT4KICAgIDxpZnJhbWUgYWxsb3c9ImpvaW4tYWQtaW50ZXJlc3QtZ3JvdXAiIGRhdGEtdGFnZ2luZy1pZD0iRy05UTZIMFFFVFJGIiBkYXRhLWxvYWQtdGltZT0iMTc0NDcwOTQ2NDA5MyIgaGVpZ2h0PSIwIgogICAgICAgIHdpZHRoPSIwIgogICAgICAgIHNyYz0iaHR0cHM6Ly90ZC5kb3VibGVjbGljay5uZXQvdGQvZ2EvcnVsP3RpZD1HLTlRNkgwUUVUUkYmYW1wO2dhY2lkPTE2Njk1ODM0ODYuMTc0NDcwOTQ2MyZhbXA7Z3RtPTQ1amU1NGIwdjkxMjU5NTkxMTJ6YTIwMCZhbXA7ZG1hPTEmYW1wO2RtYV9jcHM9c3lwaGFtbyZhbXA7Z2NkPTEzbDNsUGwybDJsMSZhbXA7bnBhPTAmYW1wO3BzY2RsPW5vYXBpJmFtcDthaXA9MSZhbXA7ZmxlZGdlPTEmYW1wO2ZybT0wJmFtcDt0YWdfZXhwPTEwMjUwOTY4M34xMDI4MDMyNzl+MTAyODEzMTA5fjEwMjg4NzgwMH4xMDI5MjYwNjJ+MTAzMDIxODMwfjEwMzAyNzAxNn4xMDMwNTE5NTN+MTAzMDU1NDY1fjEwMzA3Nzk1MCZhbXA7ej0yMTA4NTA0Mzg5IgogICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lOyB2aXNpYmlsaXR5OiBoaWRkZW47Ij4KICAgIDwvaWZyYW1lPgogICAgPGRpdiBjbGFzcz0icGFnZS1ub3QtZm91bmQiPgogICAgICAgIDxpbWcgY2xhc3M9ImltYWdlIiBhbHQ9IlBhZ2UgTm90IEZvdW5kIiBzcmM9Ii9odGRvY3NfZXJyb3IvcGFnZV9ub3RfZm91bmQuc3ZnIiAvPgogICAgICAgIDxoMSBjbGFzcz0idGl0bGUiPlRoaXMgUGFnZSBEb2VzIE5vdCBFeGlzdDwvaDE+CiAgICAgICAgPHAgY2xhc3M9InRleHQiPgogICAgICAgICAgICBTb3JyeSwgdGhlIHBhZ2UgeW91IGFyZSBsb29raW5nIGZvciBjb3VsZCBub3QgYmUgZm91bmQuIEl0J3MganVzdCBhbgogICAgICAgICAgICBhY2NpZGVudCB0aGF0IHdhcyBub3QgaW50ZW50aW9uYWwuCiAgICAgICAgPC9wPgogICAgPC9kaXY+Cgo8L2JvZHk+CjxzdHlsZT4KICAgIGJvZHkgewogICAgICAgIGNvbG9yOiAjMWQxZTIwOwogICAgICAgIGJhY2tncm91bmQ6ICNmNGY1ZmY7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LWZhbWlseTogIkRNIFNhbnMiLCAiUm9ib3RvIiwgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICAgIH0KCiAgICAucGFnZS1ub3QtZm91bmQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwoKICAgICAgICBpbWcgewogICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuaW1hZ2UgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMycHg7CiAgICAgICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICB9CgogICAgICAgIC50aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIH0KCiAgICAgICAgLnRleHQgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1heC13aWR0aDogNjUwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgICAgIGNvbG9yOiAjNkQ3MDgxOwogICAgICAgIH0KCgogICAgfQo8L3N0eWxlPgoKPC9odG1sPgo="}},"time_used":121,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":121,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.tidio.co/widget-v4/1_447_0/static/js/chunk-WidgetIframe-c201a34ef1bfdb786fba.js","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.366Z","timestamp":1785145636366,"http_version":"HTTP/2","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":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"GET /widget-v4/1_447_0/static/js/chunk-WidgetIframe-c201a34ef1bfdb786fba.js HTTP/1.1\r\nHost: code.tidio.co\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=1\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: application/javascript\r\naccess-control-allow-origin: *\r\ncache-control: public, max-age=31536000, immutable\r\ncontent-encoding: gzip\r\netag: W/\"6a670aff-6a5f9\"\r\nlast-modified: Mon, 27 Jul 2026 07:38:39 GMT\r\nserver: cloudflare\r\nvary: Accept-Encoding\r\nage: 7431\r\ncf-cache-status: HIT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=qJWc4eeUTOQeAMS3APQOhR4lVhtrqiW9Ck4XwYR7x2qLVBm7Odi5aKi%2FjlEFmYbPQ%2BCLjKn0cDwcrA36MkyP7W9fpJFtLXZS68WFSGHXbhUF2QIUwCYM2F88tp9kVO8%3D\"}]}\r\ncf-ray: a21ab8c34bde723c-OSL\r\nX-Firefox-Spdy: h2\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"]}],"data":{"size":435705,"size_decoded":151068,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (65536), with no line terminators","md5":"f44f86c6dbadfb4a2ead495d28b3049b","sha1":"847cbc37e19884b2674bd542d0a0669246e87d78","sha256":"3a9fa94d8cb80a07be745de9bdd8174c384e37f087101d103863a949f6ae6825","sha512":"c585d358882ac1a52f03a4326114d519617faac69119470b07f0b9b697ff57952df2a34cf4c2b1205314c399efda697ec402380d16e50f1ec2b7436699096c9c","ssdeep":"12288:sr09SF4bvdyHry58wMERZtDCXUUCZ9IF2mHKP0j:z9SF4bvdyLkZkXUUCZ9IF2mHKP0j","tlshash":"1c946dc270537468bbe351ead4a75848767e340dba488478f6bcbce8158a4d85373fac","first_seen":"2026-07-27T07:44:11.917931Z","last_seen":"2026-07-27T10:17:04.972353Z","times_seen":9,"resource_available":true,"data":"IWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e30sdD0obmV3IGUuRXJyb3IpLnN0YWNrO3QmJihlLl9zZW50cnlEZWJ1Z0lkcz1lLl9zZW50cnlEZWJ1Z0lkc3x8e30sZS5fc2VudHJ5RGVidWdJZHNbdF09ImY4YTAxNWQwLTUwYjctNDE1Yi04MDJiLTA3YjcyMGU2NjFhNiIsZS5fc2VudHJ5RGVidWdJZElkZW50aWZpZXI9InNlbnRyeS1kYmlkLWY4YTAxNWQwLTUwYjctNDE1Yi04MDJiLTA3YjcyMGU2NjFhNiIpfWNhdGNoKGUpe319KCksZnVuY3Rpb24oKXt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2UuX3NlbnRyeU1vZHVsZU1ldGFkYXRhPWUuX3NlbnRyeU1vZHVsZU1ldGFkYXRhfHx7fSxmdW5jdGlvbigpe3ZhciB0LG49KG5ldyBlLkVycm9yKS5zdGFjayxpPWUuX3NlbnRyeU1vZHVsZU1ldGFkYXRhW25dfHx7fSxhPXsiX3NlbnRyeUJ1bmRsZXJQbHVnaW5BcHBLZXk6dGlkaW8tc2VudHJ5LXdpZGdldC1hcHAta2V5IjohMH0sbz17fTtmb3IodCBpbiBpKWkuaGFzT3duUHJvcGVydHkodCkmJihvW3RdPWlbdF0pO2Zvcih0IGluIGEpYS5oYXNPd25Qcm9wZXJ0eSh0KSYmKG9bdF09YVt0XSk7ZS5fc2VudHJ5TW9kdWxlTWV0YWRhdGFbbl09b30oKX0oKTt2YXIgX2dsb2JhbD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O19nbG9iYWwuU0VOVFJZX1JFTEVBU0U9e2lkOiIxLjQ0Ny4wIn0sKHNlbGYud2VicGFja0NodW5rdGlkaW9fd2lkZ2V0X3Y0PXNlbGYud2VicGFja0NodW5rdGlkaW9fd2lkZ2V0X3Y0fHxbXSkucHVzaChbWzk4N10sezEwMzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtSVjpmdW5jdGlvbigpe3JldHVybiBBfSxDUzpmdW5jdGlvbigpe3JldHVybiBLbn0sdG86ZnVuY3Rpb24oKXtyZXR1cm4gTW59LG4kOmZ1bmN0aW9uKCl7cmV0dXJuIFl0fSx6aDpmdW5jdGlvbigpe3JldHVybiBDbn0sVTI6ZnVuY3Rpb24oKXtyZXR1cm4gU259LHBuOmZ1bmN0aW9uKCl7cmV0dXJuIERufX0pO3ZhciBpPXgoKSxhPWU9PmgoZSxpKSxvPXgoKTthLndyaXRlPWU9PmgoZSxvKTt2YXIgcj14KCk7YS5vblN0YXJ0PWU9PmgoZSxyKTt2YXIgcz14KCk7YS5vbkZyYW1lPWU9PmgoZSxzKTt2YXIgbD14KCk7YS5vbkZpbmlzaD1lPT5oKGUsbCk7dmFyIGQ9W107YS5zZXRUaW1lb3V0PShlLHQpPT57Y29uc3Qgbj1hLm5vdygpK3QsaT0oKT0+e2NvbnN0IGU9ZC5maW5kSW5kZXgoZT0+ZS5jYW5jZWw9PWkpO35lJiZkLnNwbGljZShlLDEpLGYtPX5lPzE6MH0sbz17dGltZTpuLGhhbmRsZXI6ZSxjYW5jZWw6aX07cmV0dXJuIGQuc3BsaWNlKGMobiksMCxvKSxmKz0xLGcoKSxvfTt2YXIgYz1lPT5+KH5kLmZpbmRJbmRleCh0PT50LnRpbWU+ZSl8fH5kLmxlbmd0aCk7YS5jYW5jZWw9ZT0+e3IuZGVsZXRlKGUpLHMuZGVsZXRlKGUpLGwuZGVsZXRlKGUpLGkuZGVsZXRlKGUpLG8uZGVsZXRlKGUpfSxhLnN5bmM9ZT0+e209ITAsYS5iYXRjaGVkVXBkYXRlcyhlKSxtPSExfSxhLnRocm90dGxlPWU9PntsZXQgdDtmdW5jdGlvbiBuKCl7dHJ5e2UoLi4udCl9ZmluYWxseXt0PW51bGx9fWZ1bmN0aW9uIGkoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShlKSxvPTA7bzxlO28rKylpW29dPWFyZ3VtZW50c1tvXTt0PWksYS5vblN0YXJ0KG4pfXJldHVybiBpLmhhbmRsZXI9ZSxpLmNhbmNlbD0oKT0+e3IuZGVsZXRlKG4pLHQ9bnVsbH0saX07dmFyIHU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTooKT0+e307YS51c2U9ZT0+dT1lLGEubm93PSJ1bmRlZmluZWQiIT10eXBlb2YgcGVyZm9ybWFuY2U/KCk9PnBlcmZvcm1hbmNlLm5vdygpOkRhdGUubm93LGEuYmF0Y2hlZFVwZGF0ZXM9ZT0+ZSgpLGEuY2F0Y2g9Y29uc29sZS5lcnJvcixhLmZyYW1lTG9vcD0iYWx3YXlzIixhLmFkdmFuY2U9KCk9PnsiZGVtYW5kIiE9PWEuZnJhbWVMb29wP2NvbnNvbGUud2FybigiQ2Fubm90IGNhbGwgdGhlIG1hbnVhbCBhZHZhbmNlbWVudCBvZiByYWZ6IHdoaWxzdCBmcmFtZUxvb3AgaXMgbm90IHNldCBhcyBkZW1hbmQiKTp2KCl9O3ZhciBwPS0xLGY9MCxtPSExO2Z1bmN0aW9uIGgoZSx0KXttPyh0LmRlbGV0ZShlKSxlKDApKToodC5hZGQoZSksZygpKX1mdW5jdGlvbiBnKCl7cDwwJiYocD0wLCJkZW1hbmQiIT09YS5mcmFtZUxvb3AmJnUoYikpfWZ1bmN0aW9uIGIoKXt+cCYmKHUoYiksYS5iYXRjaGVkVXBkYXRlcyh2KSl9ZnVuY3Rpb24gdigpe2NvbnN0IGU9cDtwPWEubm93KCk7Y29uc3QgdD1jKHApO3QmJih5KGQuc3BsaWNlKDAsdCksZT0+ZS5oYW5kbGVyKCkpLGYtPXQpLGY/KHIuZmx1c2goKSxpLmZsdXNoKGU/TWF0aC5taW4oNjQscC1lKToxNi42NjcpLHMuZmx1c2goKSxvLmZsdXNoKCksbC5mbHVzaCgpKTpwPS0xfWZ1bmN0aW9uIHgoKXtsZXQgZT1uZXcgU2V0LHQ9ZTtyZXR1cm57YWRkKG4pe2YrPXQhPWV8fGUuaGFzKG4pPzA6MSxlLmFkZChuKX0sZGVsZXRlKG4pe3JldHVybiBmLT10PT1lJiZlLmhhcyhuKT8xOjAsZS5kZWxldGUobil9LGZsdXNoKG4pe3Quc2l6ZSYmKGU9bmV3IFNldCxmLT10LnNpemUseSh0LHQ9PnQobikmJmUuYWRkKHQpKSxmKz1lLnNpemUsdD1lKX19fWZ1bmN0aW9uIHkoZSx0KXtlLmZvckVhY2goZT0+e3RyeXt0KGUpfWNhdGNoKGUpe2EuY2F0Y2goZSl9fSl9dmFyIHc9bigzNDgwKSxrPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxBPXt9O2Z1bmN0aW9uIEMoKXt9KChlLHQpPT57Zm9yKHZhciBuIGluIHQpayhlLG4se2dldDp0W25dLGVudW1lcmFibGU6ITB9KX0pKEEse2Fzc2lnbjooKT0+UCxjb2xvcnM6KCk9Pk8sY3JlYXRlU3RyaW5nSW50ZXJwb2xhdG9yOigpPT5JLHNraXBBbmltYXRpb246KCk9PlIsdG86KCk9Pl8sd2lsbEFkdmFuY2U6KCk9Pmp9KTt2YXIgRT17YXJyOkFycmF5LmlzQXJyYXksb2JqOmU9PiEhZSYmIk9iamVjdCI9PT1lLmNvbnN0cnVjdG9yLm5hbWUsZnVuOmU9PiJmdW5jdGlvbiI9PXR5cGVvZiBlLHN0cjplPT4ic3RyaW5nIj09dHlwZW9mIGUsbnVtOmU9PiJudW1iZXIiPT10eXBlb2YgZSx1bmQ6ZT0+dm9pZCAwPT09ZX07ZnVuY3Rpb24gUyhlLHQpe2lmKEUuYXJyKGUpKXtpZighRS5hcnIodCl8fGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspaWYoZVtuXSE9PXRbbl0pcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIGU9PT10fXZhciBEPShlLHQpPT5lLmZvckVhY2godCk7ZnVuY3Rpb24gWShlLHQsbil7aWYoRS5hcnIoZSkpZm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspdC5jYWxsKG4sZVtpXSxgJHtpfWApO2Vsc2UgZm9yKGNvbnN0IGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiZ0LmNhbGwobixlW2ldLGkpfXZhciBUPWU9PkUudW5kKGUpP1tdOkUuYXJyKGUpP2U6W2VdO2Z1bmN0aW9uIEYoZSx0KXtpZihlLnNpemUpe2NvbnN0IG49QXJyYXkuZnJvbShlKTtlLmNsZWFyKCksRChuLHQpfX12YXIgSSxfLE09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodD4xP3QtMTowKSxpPTE7aTx0O2krKyluW2ktMV09YXJndW1lbnRzW2ldO3JldHVybiBGKGUsZT0+ZSguLi5uKSl9LE49KCk9PiJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93Lm5hdmlnYXRvcnx8L1NlcnZlclNpZGVSZW5kZXJpbmd8XkRlbm9cLy8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCksTz1udWxsLFI9ITEsaj1DLFA9ZT0+e2UudG8mJihfPWUudG8pLGUubm93JiYoYS5ub3c9ZS5ub3cpLHZvaWQgMCE9PWUuY29sb3JzJiYoTz1lLmNvbG9ycyksbnVsbCE9ZS5za2lwQW5pbWF0aW9uJiYoUj1lLnNraXBBbmltYXRpb24pLGUuY3JlYXRlU3RyaW5nSW50ZXJwb2xhdG9yJiYoST1lLmNyZWF0ZVN0cmluZ0ludGVycG9sYXRvciksZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUmJmEudXNlKGUucmVxdWVzdEFuaW1hdGlvbkZyYW1lKSxlLmJhdGNoZWRVcGRhdGVzJiYoYS5iYXRjaGVkVXBkYXRlcz1lLmJhdGNoZWRVcGRhdGVzKSxlLndpbGxBZHZhbmNlJiYoaj1lLndpbGxBZHZhbmNlKSxlLmZyYW1lTG9vcCYmKGEuZnJhbWVMb29wPWUuZnJhbWVMb29wKX0sej1uZXcgU2V0LEw9W10sVT1bXSxCPTAsSD17Z2V0IGlkbGUoKXtyZXR1cm4hei5zaXplJiYhTC5sZW5ndGh9LHN0YXJ0KGUpe0I+ZS5wcmlvcml0eT8oei5hZGQoZSksYS5vblN0YXJ0KHEpKTooVihlKSxhKFcpKX0sYWR2YW5jZTpXLHNvcnQoZSl7aWYoQilhLm9uRnJhbWUoKCk9Pkguc29ydChlKSk7ZWxzZXtjb25zdCB0PUwuaW5kZXhPZihlKTt+dCYmKEwuc3BsaWNlKHQsMSksJChlKSl9fSxjbGVhcigpe0w9W10sei5jbGVhcigpfX07ZnVuY3Rpb24gcSgpe3ouZm9yRWFjaChWKSx6LmNsZWFyKCksYShXKX1mdW5jdGlvbiBWKGUpe0wuaW5jbHVkZXMoZSl8fCQoZSl9ZnVuY3Rpb24gJChlKXtMLnNwbGljZShmdW5jdGlvbihlLHQpe2NvbnN0IG49ZS5maW5kSW5kZXgodCk7cmV0dXJuIG48MD9lLmxlbmd0aDpufShMLHQ9PnQucHJpb3JpdHk+ZS5wcmlvcml0eSksMCxlKX1mdW5jdGlvbiBXKGUpe2NvbnN0IHQ9VTtmb3IobGV0IG49MDtuPEwubGVuZ3RoO24rKyl7Y29uc3QgaT1MW25dO0I9aS5wcmlvcml0eSxpLmlkbGV8fChqKGkpLGkuYWR2YW5jZShlKSxpLmlkbGV8fHQucHVzaChpKSl9cmV0dXJuIEI9MCwoVT1MKS5sZW5ndGg9MCwoTD10KS5sZW5ndGg+MH12YXIgSz0iWy0rXT9cXGQqXFwuP1xcZCsiLEc9SysiJSI7ZnVuY3Rpb24gWCgpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiJcXChcXHMqKCIrdC5qb2luKCIpXFxzKixcXHMqKCIpKyIpXFxzKlxcKSJ9dmFyIFE9bmV3IFJlZ0V4cCgicmdiIitYKEssSyxLKSksWj1uZXcgUmVnRXhwKCJyZ2JhIitYKEssSyxLLEspKSxKPW5ldyBSZWdFeHAoImhzbCIrWChLLEcsRykpLGVlPW5ldyBSZWdFeHAoImhzbGEiK1goSyxHLEcsSykpLHRlPS9eIyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KSQvLG5lPS9eIyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkkLyxpZT0vXiMoWzAtOWEtZkEtRl17Nn0pJC8sYWU9L14jKFswLTlhLWZBLUZdezh9KSQvO2Z1bmN0aW9uIG9lKGUsdCxuKXtyZXR1cm4gbjwwJiYobis9MSksbj4xJiYobi09MSksbjwxLzY/ZSs2Kih0LWUpKm46bjwuNT90Om48Mi8zP2UrKHQtZSkqKDIvMy1uKSo2OmV9ZnVuY3Rpb24gcmUoZSx0LG4pe2NvbnN0IGk9bjwuNT9uKigxK3QpOm4rdC1uKnQsYT0yKm4taSxvPW9lKGEsaSxlKzEvMykscj1vZShhLGksZSkscz1vZShhLGksZS0xLzMpO3JldHVybiBNYXRoLnJvdW5kKDI1NSpvKTw8MjR8TWF0aC5yb3VuZCgyNTUqcik8PDE2fE1hdGgucm91bmQoMjU1KnMpPDw4fWZ1bmN0aW9uIHNlKGUpe2NvbnN0IHQ9cGFyc2VJbnQoZSwxMCk7cmV0dXJuIHQ8MD8wOnQ+MjU1PzI1NTp0fWZ1bmN0aW9uIGxlKGUpe3JldHVybihwYXJzZUZsb2F0KGUpJTM2MCszNjApJTM2MC8zNjB9ZnVuY3Rpb24gZGUoZSl7Y29uc3QgdD1wYXJzZUZsb2F0KGUpO3JldHVybiB0PDA/MDp0PjE/MjU1Ok1hdGgucm91bmQoMjU1KnQpfWZ1bmN0aW9uIGNlKGUpe2NvbnN0IHQ9cGFyc2VGbG9hdChlKTtyZXR1cm4gdDwwPzA6dD4xMDA/MTp0LzEwMH1mdW5jdGlvbiB1ZShlKXtsZXQgdD1mdW5jdGlvbihlKXtsZXQgdDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/ZT4+PjA9PT1lJiZlPj0wJiZlPD00Mjk0OTY3Mjk1P2U6bnVsbDoodD1pZS5leGVjKGUpKT9wYXJzZUludCh0WzFdKyJmZiIsMTYpPj4+MDpPJiZ2b2lkIDAhPT1PW2VdP09bZV06KHQ9US5leGVjKGUpKT8oc2UodFsxXSk8PDI0fHNlKHRbMl0pPDwxNnxzZSh0WzNdKTw8OHwyNTUpPj4+MDoodD1aLmV4ZWMoZSkpPyhzZSh0WzFdKTw8MjR8c2UodFsyXSk8PDE2fHNlKHRbM10pPDw4fGRlKHRbNF0pKT4+PjA6KHQ9dGUuZXhlYyhlKSk/cGFyc2VJbnQodFsxXSt0WzFdK3RbMl0rdFsyXSt0WzNdK3RbM10rImZmIiwxNik+Pj4wOih0PWFlLmV4ZWMoZSkpP3BhcnNlSW50KHRbMV0sMTYpPj4+MDoodD1uZS5leGVjKGUpKT9wYXJzZUludCh0WzFdK3RbMV0rdFsyXSt0WzJdK3RbM10rdFszXSt0WzRdK3RbNF0sMTYpPj4+MDoodD1KLmV4ZWMoZSkpPygyNTV8cmUobGUodFsxXSksY2UodFsyXSksY2UodFszXSkpKT4+PjA6KHQ9ZWUuZXhlYyhlKSk/KHJlKGxlKHRbMV0pLGNlKHRbMl0pLGNlKHRbM10pKXxkZSh0WzRdKSk+Pj4wOm51bGx9KGUpO2lmKG51bGw9PT10KXJldHVybiBlO3Q9dHx8MDtyZXR1cm5gcmdiYSgkeyg0Mjc4MTkwMDgwJnQpPj4+MjR9LCAkeygxNjcxMTY4MCZ0KT4+PjE2fSwgJHsoNjUyODAmdCk+Pj44fSwgJHsoMjU1JnQpLzI1NX0pYH12YXIgcGU9KGUsdCxuKT0+e2lmKEUuZnVuKGUpKXJldHVybiBlO2lmKEUuYXJyKGUpKXJldHVybiBwZSh7cmFuZ2U6ZSxvdXRwdXQ6dCxleHRyYXBvbGF0ZTpufSk7aWYoRS5zdHIoZS5vdXRwdXRbMF0pKXJldHVybiBJKGUpO2NvbnN0IGk9ZSxhPWkub3V0cHV0LG89aS5yYW5nZXx8WzAsMV0scj1pLmV4dHJhcG9sYXRlTGVmdHx8aS5leHRyYXBvbGF0ZXx8ImV4dGVuZCIscz1pLmV4dHJhcG9sYXRlUmlnaHR8fGkuZXh0cmFwb2xhdGV8fCJleHRlbmQiLGw9aS5lYXNpbmd8fChlPT5lKTtyZXR1cm4gZT0+e2NvbnN0IHQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MTtuPHQubGVuZ3RoLTEmJiEodFtuXT49ZSk7KytuKTtyZXR1cm4gbi0xfShlLG8pO3JldHVybiBmdW5jdGlvbihlLHQsbixpLGEsbyxyLHMsbCl7bGV0IGQ9bD9sKGUpOmU7aWYoZDx0KXtpZigiaWRlbnRpdHkiPT09cilyZXR1cm4gZDsiY2xhbXAiPT09ciYmKGQ9dCl9aWYoZD5uKXtpZigiaWRlbnRpdHkiPT09cylyZXR1cm4gZDsiY2xhbXAiPT09cyYmKGQ9bil9aWYoaT09PWEpcmV0dXJuIGk7aWYodD09PW4pcmV0dXJuIGU8PXQ/aTphO3Q9PT0tMS8wP2Q9LWQ6bj09PTEvMD9kLT10OmQ9KGQtdCkvKG4tdCk7ZD1vKGQpLGk9PT0tMS8wP2Q9LWQ6YT09PTEvMD9kKz1pOmQ9ZCooYS1pKStpO3JldHVybiBkfShlLG9bdF0sb1t0KzFdLGFbdF0sYVt0KzFdLGwscixzLGkubWFwKX19O3ZhciBmZT0xLjcwMTU4LG1lPTEuNTI1KmZlLGhlPWZlKzEsZ2U9MipNYXRoLlBJLzMsYmU9MipNYXRoLlBJLzQuNSx2ZT1lPT57Y29uc3QgdD03LjU2MjUsbj0yLjc1O3JldHVybiBlPDEvbj90KmUqZTplPDIvbj90KihlLT0xLjUvbikqZSsuNzU6ZTwyLjUvbj90KihlLT0yLjI1L24pKmUrLjkzNzU6dCooZS09Mi42MjUvbikqZSsuOTg0Mzc1fSx4ZT17bGluZWFyOmU9PmUsZWFzZUluUXVhZDplPT5lKmUsZWFzZU91dFF1YWQ6ZT0+MS0oMS1lKSooMS1lKSxlYXNlSW5PdXRRdWFkOmU9PmU8LjU/MiplKmU6MS1NYXRoLnBvdygtMiplKzIsMikvMixlYXNlSW5DdWJpYzplPT5lKmUqZSxlYXNlT3V0Q3ViaWM6ZT0+MS1NYXRoLnBvdygxLWUsMyksZWFzZUluT3V0Q3ViaWM6ZT0+ZTwuNT80KmUqZSplOjEtTWF0aC5wb3coLTIqZSsyLDMpLzIsZWFzZUluUXVhcnQ6ZT0+ZSplKmUqZSxlYXNlT3V0UXVhcnQ6ZT0+MS1NYXRoLnBvdygxLWUsNCksZWFzZUluT3V0UXVhcnQ6ZT0+ZTwuNT84KmUqZSplKmU6MS1NYXRoLnBvdygtMiplKzIsNCkvMixlYXNlSW5RdWludDplPT5lKmUqZSplKmUsZWFzZU91dFF1aW50OmU9PjEtTWF0aC5wb3coMS1lLDUpLGVhc2VJbk91dFF1aW50OmU9PmU8LjU/MTYqZSplKmUqZSplOjEtTWF0aC5wb3coLTIqZSsyLDUpLzIsZWFzZUluU2luZTplPT4xLU1hdGguY29zKGUqTWF0aC5QSS8yKSxlYXNlT3V0U2luZTplPT5NYXRoLnNpbihlKk1hdGguUEkvMiksZWFzZUluT3V0U2luZTplPT4tKE1hdGguY29zKE1hdGguUEkqZSktMSkvMixlYXNlSW5FeHBvOmU9PjA9PT1lPzA6TWF0aC5wb3coMiwxMCplLTEwKSxlYXNlT3V0RXhwbzplPT4xPT09ZT8xOjEtTWF0aC5wb3coMiwtMTAqZSksZWFzZUluT3V0RXhwbzplPT4wPT09ZT8wOjE9PT1lPzE6ZTwuNT9NYXRoLnBvdygyLDIwKmUtMTApLzI6KDItTWF0aC5wb3coMiwtMjAqZSsxMCkpLzIsZWFzZUluQ2lyYzplPT4xLU1hdGguc3FydCgxLU1hdGgucG93KGUsMikpLGVhc2VPdXRDaXJjOmU9Pk1hdGguc3FydCgxLU1hdGgucG93KGUtMSwyKSksZWFzZUluT3V0Q2lyYzplPT5lPC41PygxLU1hdGguc3FydCgxLU1hdGgucG93KDIqZSwyKSkpLzI6KE1hdGguc3FydCgxLU1hdGgucG93KC0yKmUrMiwyKSkrMSkvMixlYXNlSW5CYWNrOmU9PmhlKmUqZSplLWZlKmUqZSxlYXNlT3V0QmFjazplPT4xK2hlKk1hdGgucG93KGUtMSwzKStmZSpNYXRoLnBvdyhlLTEsMiksZWFzZUluT3V0QmFjazplPT5lPC41P01hdGgucG93KDIqZSwyKSooNy4xODk4MTkqZS1tZSkvMjooTWF0aC5wb3coMiplLTIsMikqKChtZSsxKSooMiplLTIpK21lKSsyKS8yLGVhc2VJbkVsYXN0aWM6ZT0+MD09PWU/MDoxPT09ZT8xOi1NYXRoLnBvdygyLDEwKmUtMTApKk1hdGguc2luKCgxMCplLTEwLjc1KSpnZSksZWFzZU91dEVsYXN0aWM6ZT0+MD09PWU/MDoxPT09ZT8xOk1hdGgucG93KDIsLTEwKmUpKk1hdGguc2luKCgxMCplLS43NSkqZ2UpKzEsZWFzZUluT3V0RWxhc3RpYzplPT4wPT09ZT8wOjE9PT1lPzE6ZTwuNT8tTWF0aC5wb3coMiwyMCplLTEwKSpNYXRoLnNpbigoMjAqZS0xMS4xMjUpKmJlKS8yOk1hdGgucG93KDIsLTIwKmUrMTApKk1hdGguc2luKCgyMCplLTExLjEyNSkqYmUpLzIrMSxlYXNlSW5Cb3VuY2U6ZT0+MS12ZSgxLWUpLGVhc2VPdXRCb3VuY2U6dmUsZWFzZUluT3V0Qm91bmNlOmU9PmU8LjU/KDEtdmUoMS0yKmUpKS8yOigxK3ZlKDIqZS0xKSkvMixzdGVwczpmdW5jdGlvbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ImVuZCI7cmV0dXJuIG49Pntjb25zdCBpPShuPSJlbmQiPT09dD9NYXRoLm1pbihuLC45OTkpOk1hdGgubWF4KG4sLjAwMSkpKmUsYT0iZW5kIj09PXQ/TWF0aC5mbG9vcihpKTpNYXRoLmNlaWwoaSk7cmV0dXJuIG89MCxyPTEscz1hL2UsTWF0aC5taW4oTWF0aC5tYXgocyxvKSxyKTt2YXIgbyxyLHN9fX0seWU9U3ltYm9sLmZvcigiRmx1aWRWYWx1ZS5nZXQiKSx3ZT1TeW1ib2wuZm9yKCJGbHVpZFZhbHVlLm9ic2VydmVycyIpLGtlPWU9PkJvb2xlYW4oZSYmZVt5ZV0pLEFlPWU9PmUmJmVbeWVdP2VbeWVdKCk6ZSxDZT1lPT5lW3dlXXx8bnVsbDtmdW5jdGlvbiBFZShlLHQpe2NvbnN0IG49ZVt3ZV07biYmbi5mb3JFYWNoKGU9PnshZnVuY3Rpb24oZSx0KXtlLmV2ZW50T2JzZXJ2ZWQ/ZS5ldmVudE9ic2VydmVkKHQpOmUodCl9KGUsdCl9KX12YXIgU2U9Y2xhc3N7Y29uc3RydWN0b3IoZSl7aWYoIWUmJiEoZT10aGlzLmdldCkpdGhyb3cgRXJyb3IoIlVua25vd24gZ2V0dGVyIik7RGUodGhpcyxlKX19LERlPShlLHQpPT5JZShlLHllLHQpO2Z1bmN0aW9uIFllKGUsdCl7aWYoZVt5ZV0pe2xldCBuPWVbd2VdO258fEllKGUsd2Usbj1uZXcgU2V0KSxuLmhhcyh0KXx8KG4uYWRkKHQpLGUub2JzZXJ2ZXJBZGRlZCYmZS5vYnNlcnZlckFkZGVkKG4uc2l6ZSx0KSl9cmV0dXJuIHR9ZnVuY3Rpb24gVGUoZSx0KXtjb25zdCBuPWVbd2VdO2lmKG4mJm4uaGFzKHQpKXtjb25zdCBpPW4uc2l6ZS0xO2k/bi5kZWxldGUodCk6ZVt3ZV09bnVsbCxlLm9ic2VydmVyUmVtb3ZlZCYmZS5vYnNlcnZlclJlbW92ZWQoaSx0KX19dmFyIEZlLEllPShlLHQsbik9Pk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksX2U9L1srXC1dPyg/OjB8WzEtOV1cZCopKD86XC5cZCopPyg/OltlRV1bK1wtXT9cZCspPy9nLE1lPS8oIyg/OlswLTlhLWZdezJ9KXsyLDR9fCgjWzAtOWEtZl17M30pfChyZ2J8aHNsKWE/XCgoLT9cZCslP1ssXHNdKyl7MiwzfVxzKltcZFwuXSslP1wpKS9naSxOZT1uZXcgUmVnRXhwKGAoJHtfZS5zb3VyY2V9KSglfFthLXpdKylgLCJpIiksT2U9L3JnYmFcKChbMC05XC4tXSspLCAoWzAtOVwuLV0rKSwgKFswLTlcLi1dKyksIChbMC05XC4tXSspXCkvZ2ksUmU9L3ZhclwoKC0tW2EtekEtWjAtOS1fXSspLD8gPyhbYS16QS1aMC05ICgpJSMuLC1dKyk/XCkvLGplPWU9Pntjb25zdFt0LG5dPVBlKGUpO2lmKCF0fHxOKCkpcmV0dXJuIGU7Y29uc3QgaT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUodCk7aWYoaSlyZXR1cm4gaS50cmltKCk7aWYobiYmbi5zdGFydHNXaXRoKCItLSIpKXtjb25zdCB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShuKTtyZXR1cm4gdHx8ZX1yZXR1cm4gbiYmUmUudGVzdChuKT9qZShuKTpufHxlfSxQZT1lPT57Y29uc3QgdD1SZS5leGVjKGUpO2lmKCF0KXJldHVyblssXTtjb25zdFssbixpXT10O3JldHVybltuLGldfSx6ZT0oZSx0LG4saSxhKT0+YHJnYmEoJHtNYXRoLnJvdW5kKHQpfSwgJHtNYXRoLnJvdW5kKG4pfSwgJHtNYXRoLnJvdW5kKGkpfSwgJHthfSlgLExlPWU9PntGZXx8KEZlPU8/bmV3IFJlZ0V4cChgKCR7T2JqZWN0LmtleXMoTykuam9pbigifCIpfSkoPyFcXHcpYCwiZyIpOi9eXGIkLyk7Y29uc3QgdD1lLm91dHB1dC5tYXAoZT0+QWUoZSkucmVwbGFjZShSZSxqZSkucmVwbGFjZShNZSx1ZSkucmVwbGFjZShGZSx1ZSkpLG49dC5tYXAoZT0+ZS5tYXRjaChfZSkubWFwKE51bWJlcikpLGk9blswXS5tYXAoKGUsdCk9Pm4ubWFwKGU9PntpZighKHQgaW4gZSkpdGhyb3cgRXJyb3IoJ1RoZSBhcml0eSBvZiBlYWNoICJvdXRwdXQiIHZhbHVlIG11c3QgYmUgZXF1YWwnKTtyZXR1cm4gZVt0XX0pKS5tYXAodD0+cGUoey4uLmUsb3V0cHV0OnR9KSk7cmV0dXJuIGU9Pntjb25zdCBuPSFOZS50ZXN0KHRbMF0pJiZ0LmZpbmQoZT0+TmUudGVzdChlKSk/LnJlcGxhY2UoX2UsIiIpO2xldCBhPTA7cmV0dXJuIHRbMF0ucmVwbGFjZShfZSwoKT0+YCR7aVthKytdKGUpfSR7bnx8IiJ9YCkucmVwbGFjZShPZSx6ZSl9fSxVZT0icmVhY3Qtc3ByaW5nOiAiLEJlPWU9Pntjb25zdCB0PWU7bGV0IG49ITE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtVZX1vbmNlIHJlcXVpcmVzIGEgZnVuY3Rpb24gcGFyYW1ldGVyYCk7cmV0dXJuIGZ1bmN0aW9uKCl7bnx8KHQoLi4uYXJndW1lbnRzKSxuPSEwKX19LEhlPUJlKGNvbnNvbGUud2Fybik7dmFyIHFlPUJlKGNvbnNvbGUud2Fybik7ZnVuY3Rpb24gVmUoZSl7cmV0dXJuIEUuc3RyKGUpJiYoIiMiPT1lWzBdfHwvXGQvLnRlc3QoZSl8fCFOKCkmJlJlLnRlc3QoZSl8fGUgaW4oT3x8e30pKX12YXIgJGU9TigpP3cudXNlRWZmZWN0OncudXNlTGF5b3V0RWZmZWN0LFdlPSgpPT57Y29uc3QgZT0oMCx3LnVzZVJlZikoITEpO3JldHVybiAkZSgoKT0+KGUuY3VycmVudD0hMCwoKT0+e2UuY3VycmVudD0hMX0pLFtdKSxlfTtmdW5jdGlvbiBLZSgpe2NvbnN0IGU9KDAsdy51c2VTdGF0ZSkoKVsxXSx0PVdlKCk7cmV0dXJuKCk9Pnt0LmN1cnJlbnQmJmUoTWF0aC5yYW5kb20oKSl9fXZhciBHZT1lPT4oMCx3LnVzZUVmZmVjdCkoZSxYZSksWGU9W107ZnVuY3Rpb24gUWUoZSl7Y29uc3QgdD0oMCx3LnVzZVJlZikoKTtyZXR1cm4oMCx3LnVzZUVmZmVjdCkoKCk9Pnt0LmN1cnJlbnQ9ZX0pLHQuY3VycmVudH12YXIgWmU9U3ltYm9sLmZvcigiQW5pbWF0ZWQ6bm9kZSIpLEplPWU9PmUmJmVbWmVdLGV0PShlLHQpPT57cmV0dXJuIG49ZSxpPVplLGE9dCxPYmplY3QuZGVmaW5lUHJvcGVydHkobixpLHt2YWx1ZTphLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pO3ZhciBuLGksYX0sdHQ9ZT0+ZSYmZVtaZV0mJmVbWmVdLmdldFBheWxvYWQoKSxudD1jbGFzc3tjb25zdHJ1Y3Rvcigpe2V0KHRoaXMsdGhpcyl9Z2V0UGF5bG9hZCgpe3JldHVybiB0aGlzLnBheWxvYWR8fFtdfX0saXQ9Y2xhc3MgZXh0ZW5kcyBudHtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuX3ZhbHVlPWUsdGhpcy5kb25lPSEwLHRoaXMuZHVyYXRpb25Qcm9ncmVzcz0wLEUubnVtKHRoaXMuX3ZhbHVlKSYmKHRoaXMubGFzdFBvc2l0aW9uPXRoaXMuX3ZhbHVlKX1zdGF0aWMgY3JlYXRlKGUpe3JldHVybiBuZXcgaXQoZSl9Z2V0UGF5bG9hZCgpe3JldHVyblt0aGlzXX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX1zZXRWYWx1ZShlLHQpe3JldHVybiBFLm51bShlKSYmKHRoaXMubGFzdFBvc2l0aW9uPWUsdCYmKGU9TWF0aC5yb3VuZChlL3QpKnQsdGhpcy5kb25lJiYodGhpcy5sYXN0UG9zaXRpb249ZSkpKSx0aGlzLl92YWx1ZSE9PWUmJih0aGlzLl92YWx1ZT1lLCEwKX1yZXNldCgpe2NvbnN0e2RvbmU6ZX09dGhpczt0aGlzLmRvbmU9ITEsRS5udW0odGhpcy5fdmFsdWUpJiYodGhpcy5lbGFwc2VkVGltZT0wLHRoaXMuZHVyYXRpb25Qcm9ncmVzcz0wLHRoaXMubGFzdFBvc2l0aW9uPXRoaXMuX3ZhbHVlLGUmJih0aGlzLmxhc3RWZWxvY2l0eT1udWxsKSx0aGlzLnYwPW51bGwpfX0sYXQ9Y2xhc3MgZXh0ZW5kcyBpdHtjb25zdHJ1Y3RvcihlKXtzdXBlcigwKSx0aGlzLl9zdHJpbmc9bnVsbCx0aGlzLl90b1N0cmluZz1wZSh7b3V0cHV0OltlLGVdfSl9c3RhdGljIGNyZWF0ZShlKXtyZXR1cm4gbmV3IGF0KGUpfWdldFZhbHVlKCl7Y29uc3QgZT10aGlzLl9zdHJpbmc7cmV0dXJuIG51bGw9PWU/dGhpcy5fc3RyaW5nPXRoaXMuX3RvU3RyaW5nKHRoaXMuX3ZhbHVlKTplfXNldFZhbHVlKGUpe2lmKEUuc3RyKGUpKXtpZihlPT10aGlzLl9zdHJpbmcpcmV0dXJuITE7dGhpcy5fc3RyaW5nPWUsdGhpcy5fdmFsdWU9MX1lbHNle2lmKCFzdXBlci5zZXRWYWx1ZShlKSlyZXR1cm4hMTt0aGlzLl9zdHJpbmc9bnVsbH1yZXR1cm4hMH1yZXNldChlKXtlJiYodGhpcy5fdG9TdHJpbmc9cGUoe291dHB1dDpbdGhpcy5nZXRWYWx1ZSgpLGVdfSkpLHRoaXMuX3ZhbHVlPTAsc3VwZXIucmVzZXQoKX19LG90PXtkZXBlbmRlbmNpZXM6bnVsbH0scnQ9Y2xhc3MgZXh0ZW5kcyBudHtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuc291cmNlPWUsdGhpcy5zZXRWYWx1ZShlKX1nZXRWYWx1ZShlKXtjb25zdCB0PXt9O3JldHVybiBZKHRoaXMuc291cmNlLChuLGkpPT57dmFyIGE7KGE9bikmJmFbWmVdPT09YT90W2ldPW4uZ2V0VmFsdWUoZSk6a2Uobik/dFtpXT1BZShuKTplfHwodFtpXT1uKX0pLHR9c2V0VmFsdWUoZSl7dGhpcy5zb3VyY2U9ZSx0aGlzLnBheWxvYWQ9dGhpcy5fbWFrZVBheWxvYWQoZSl9cmVzZXQoKXt0aGlzLnBheWxvYWQmJkQodGhpcy5wYXlsb2FkLGU9PmUucmVzZXQoKSl9X21ha2VQYXlsb2FkKGUpe2lmKGUpe2NvbnN0IHQ9bmV3IFNldDtyZXR1cm4gWShlLHRoaXMuX2FkZFRvUGF5bG9hZCx0KSxBcnJheS5mcm9tKHQpfX1fYWRkVG9QYXlsb2FkKGUpe290LmRlcGVuZGVuY2llcyYma2UoZSkmJm90LmRlcGVuZGVuY2llcy5hZGQoZSk7Y29uc3QgdD10dChlKTt0JiZEKHQsZT0+dGhpcy5hZGQoZSkpfX0sc3Q9Y2xhc3MgZXh0ZW5kcyBydHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKX1zdGF0aWMgY3JlYXRlKGUpe3JldHVybiBuZXcgc3QoZSl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5zb3VyY2UubWFwKGU9PmUuZ2V0VmFsdWUoKSl9c2V0VmFsdWUoZSl7Y29uc3QgdD10aGlzLmdldFBheWxvYWQoKTtyZXR1cm4gZS5sZW5ndGg9PXQubGVuZ3RoP3QubWFwKCh0LG4pPT50LnNldFZhbHVlKGVbbl0pKS5zb21lKEJvb2xlYW4pOihzdXBlci5zZXRWYWx1ZShlLm1hcChsdCkpLCEwKX19O2Z1bmN0aW9uIGx0KGUpe3JldHVybihWZShlKT9hdDppdCkuY3JlYXRlKGUpfWZ1bmN0aW9uIGR0KGUpe2NvbnN0IHQ9SmUoZSk7cmV0dXJuIHQ/dC5jb25zdHJ1Y3RvcjpFLmFycihlKT9zdDpWZShlKT9hdDppdH12YXIgY3Q9KGUsdCk9Pntjb25zdCBuPSFFLmZ1bihlKXx8ZS5wcm90b3R5cGUmJmUucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ7cmV0dXJuKDAsdy5mb3J3YXJkUmVmKSgoaSxvKT0+e2NvbnN0IHI9KDAsdy51c2VSZWYpKG51bGwpLHM9biYmKDAsdy51c2VDYWxsYmFjaykoZT0+e3IuY3VycmVudD1mdW5jdGlvbihlLHQpe2UmJihFLmZ1bihlKT9lKHQpOmUuY3VycmVudD10KTtyZXR1cm4gdH0obyxlKX0sW29dKSxbbCxkXT1mdW5jdGlvbihlLHQpe2NvbnN0IG49bmV3IFNldDtvdC5kZXBlbmRlbmNpZXM9bixlLnN0eWxlJiYoZT17Li4uZSxzdHlsZTp0LmNyZWF0ZUFuaW1hdGVkU3R5bGUoZS5zdHlsZSl9KTtyZXR1cm4gZT1uZXcgcnQoZSksb3QuZGVwZW5kZW5jaWVzPW51bGwsW2Usbl19KGksdCksYz1LZSgpLHU9KCk9Pntjb25zdCBlPXIuY3VycmVudDtpZihuJiYhZSlyZXR1cm47ITE9PT0oISFlJiZ0LmFwcGx5QW5pbWF0ZWRWYWx1ZXMoZSxsLmdldFZhbHVlKCEwKSkpJiZjKCl9LHA9bmV3IHV0KHUsZCksZj0oMCx3LnVzZVJlZikoKTskZSgoKT0+KGYuY3VycmVudD1wLEQoZCxlPT5ZZShlLHApKSwoKT0+e2YuY3VycmVudCYmKEQoZi5jdXJyZW50LmRlcHMsZT0+VGUoZSxmLmN1cnJlbnQpKSxhLmNhbmNlbChmLmN1cnJlbnQudXBkYXRlKSl9KSksKDAsdy51c2VFZmZlY3QpKHUsW10pLEdlKCgpPT4oKT0+e2NvbnN0IGU9Zi5jdXJyZW50O0QoZS5kZXBzLHQ9PlRlKHQsZSkpfSk7Y29uc3QgbT10LmdldENvbXBvbmVudFByb3BzKGwuZ2V0VmFsdWUoKSk7cmV0dXJuIHcuY3JlYXRlRWxlbWVudChlLHsuLi5tLHJlZjpzfSl9KX0sdXQ9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnVwZGF0ZT1lLHRoaXMuZGVwcz10fWV2ZW50T2JzZXJ2ZWQoZSl7ImNoYW5nZSI9PWUudHlwZSYmYS53cml0ZSh0aGlzLnVwZGF0ZSl9fTt2YXIgcHQ9U3ltYm9sLmZvcigiQW5pbWF0ZWRDb21wb25lbnQiKSxmdD1lPT5FLnN0cihlKT9lOmUmJkUuc3RyKGUuZGlzcGxheU5hbWUpP2UuZGlzcGxheU5hbWU6RS5mdW4oZSkmJmUubmFtZXx8bnVsbDtmdW5jdGlvbiBtdChlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0PjE/dC0xOjApLGk9MTtpPHQ7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIEUuZnVuKGUpP2UoLi4ubik6ZX12YXIgaHQ9KGUsdCk9PiEwPT09ZXx8ISEodCYmZSYmKEUuZnVuKGUpP2UodCk6VChlKS5pbmNsdWRlcyh0KSkpLGd0PShlLHQpPT5FLm9iaihlKT90JiZlW3RdOmUsYnQ9KGUsdCk9PiEwPT09ZS5kZWZhdWx0P2VbdF06ZS5kZWZhdWx0P2UuZGVmYXVsdFt0XTp2b2lkIDAsdnQ9ZT0+ZSx4dD1mdW5jdGlvbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dnQsbj15dDtlLmRlZmF1bHQmJiEwIT09ZS5kZWZhdWx0JiYoZT1lLmRlZmF1bHQsbj1PYmplY3Qua2V5cyhlKSk7Y29uc3QgaT17fTtmb3IoY29uc3QgYSBvZiBuKXtjb25zdCBuPXQoZVthXSxhKTtFLnVuZChuKXx8KGlbYV09bil9cmV0dXJuIGl9LHl0PVsiY29uZmlnIiwib25Qcm9wcyIsIm9uU3RhcnQiLCJvbkNoYW5nZSIsIm9uUGF1c2UiLCJvblJlc3VtZSIsIm9uUmVzdCJdLHd0PXtjb25maWc6MSxmcm9tOjEsdG86MSxyZWY6MSxsb29wOjEscmVzZXQ6MSxwYXVzZToxLGNhbmNlbDoxLHJldmVyc2U6MSxpbW1lZGlhdGU6MSxkZWZhdWx0OjEsZGVsYXk6MSxvblByb3BzOjEsb25TdGFydDoxLG9uQ2hhbmdlOjEsb25QYXVzZToxLG9uUmVzdW1lOjEsb25SZXN0OjEsb25SZXNvbHZlOjEsaXRlbXM6MSx0cmFpbDoxLHNvcnQ6MSxleHBpcmVzOjEsaW5pdGlhbDoxLGVudGVyOjEsdXBkYXRlOjEsbGVhdmU6MSxjaGlsZHJlbjoxLG9uRGVzdHJveWVkOjEsa2V5czoxLGNhbGxJZDoxLHBhcmVudElkOjF9O2Z1bmN0aW9uIGt0KGUpe2NvbnN0IHQ9ZnVuY3Rpb24oZSl7Y29uc3QgdD17fTtsZXQgbj0wO2lmKFkoZSwoZSxpKT0+e3d0W2ldfHwodFtpXT1lLG4rKyl9KSxuKXJldHVybiB0fShlKTtpZih0KXtjb25zdCBuPXt0bzp0fTtyZXR1cm4gWShlLChlLGkpPT5pIGluIHR8fChuW2ldPWUpKSxufXJldHVybnsuLi5lfX1mdW5jdGlvbiBBdChlKXtyZXR1cm4gZT1BZShlKSxFLmFycihlKT9lLm1hcChBdCk6VmUoZSk/QS5jcmVhdGVTdHJpbmdJbnRlcnBvbGF0b3Ioe3JhbmdlOlswLDFdLG91dHB1dDpbZSxlXX0pKDEpOmV9ZnVuY3Rpb24gQ3QoZSl7Zm9yKGNvbnN0IHQgaW4gZSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBFdChlKXtyZXR1cm4gRS5mdW4oZSl8fEUuYXJyKGUpJiZFLm9iaihlWzBdKX1mdW5jdGlvbiBTdChlLHQpe2UucmVmPy5kZWxldGUoZSksdD8uZGVsZXRlKGUpfWZ1bmN0aW9uIER0KGUsdCl7dCYmZS5yZWYhPT10JiYoZS5yZWY/LmRlbGV0ZShlKSx0LmFkZChlKSxlLnJlZj10KX1mdW5jdGlvbiBZdChlLHQpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxZTM7JGUoKCk9PntpZih0KXtsZXQgaT0wO0QoZSwoZSxhKT0+e2NvbnN0IG89ZS5jdXJyZW50O2lmKG8ubGVuZ3RoKXtsZXQgcj1uKnRbYV07aXNOYU4ocik/cj1pOmk9cixEKG8sZT0+e0QoZS5xdWV1ZSxlPT57Y29uc3QgdD1lLmRlbGF5O2UuZGVsYXk9ZT0+cittdCh0fHwwLGUpfSl9KSxlLnN0YXJ0KCl9fSl9ZWxzZXtsZXQgdD1Qcm9taXNlLnJlc29sdmUoKTtEKGUsZT0+e2NvbnN0IG49ZS5jdXJyZW50O2lmKG4ubGVuZ3RoKXtjb25zdCBpPW4ubWFwKGU9Pntjb25zdCB0PWUucXVldWU7cmV0dXJuIGUucXVldWU9W10sdH0pO3Q9dC50aGVuKCgpPT4oRChuLChlLHQpPT5EKGlbdF18fFtdLHQ9PmUucXVldWUucHVzaCh0KSkpLFByb21pc2UuYWxsKGUuc3RhcnQoKSkpKX19KX19KX12YXIgVHQ9e3RlbnNpb246MTcwLGZyaWN0aW9uOjI2LG1hc3M6MSxkYW1waW5nOjEsZWFzaW5nOnhlLmxpbmVhcixjbGFtcDohMX0sRnQ9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnZlbG9jaXR5PTAsT2JqZWN0LmFzc2lnbih0aGlzLFR0KX19O2Z1bmN0aW9uIEl0KGUsdCl7aWYoRS51bmQodC5kZWNheSkpe2NvbnN0IG49IUUudW5kKHQudGVuc2lvbil8fCFFLnVuZCh0LmZyaWN0aW9uKTshbiYmRS51bmQodC5mcmVxdWVuY3kpJiZFLnVuZCh0LmRhbXBpbmcpJiZFLnVuZCh0Lm1hc3MpfHwoZS5kdXJhdGlvbj12b2lkIDAsZS5kZWNheT12b2lkIDApLG4mJihlLmZyZXF1ZW5jeT12b2lkIDApfWVsc2UgZS5kdXJhdGlvbj12b2lkIDB9dmFyIF90PVtdLE10PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5jaGFuZ2VkPSExLHRoaXMudmFsdWVzPV90LHRoaXMudG9WYWx1ZXM9bnVsbCx0aGlzLmZyb21WYWx1ZXM9X3QsdGhpcy5jb25maWc9bmV3IEZ0LHRoaXMuaW1tZWRpYXRlPSExfX07ZnVuY3Rpb24gTnQoZSx0KXtsZXR7a2V5Om4scHJvcHM6aSxkZWZhdWx0UHJvcHM6byxzdGF0ZTpyLGFjdGlvbnM6c309dDtyZXR1cm4gbmV3IFByb21pc2UoKHQsbCk9PntsZXQgZCxjLHU9aHQoaS5jYW5jZWw/P28/LmNhbmNlbCxuKTtpZih1KW0oKTtlbHNle0UudW5kKGkucGF1c2UpfHwoci5wYXVzZWQ9aHQoaS5wYXVzZSxuKSk7bGV0IGU9bz8ucGF1c2U7ITAhPT1lJiYoZT1yLnBhdXNlZHx8aHQoZSxuKSksZD1tdChpLmRlbGF5fHwwLG4pLGU/KHIucmVzdW1lUXVldWUuYWRkKGYpLHMucGF1c2UoKSk6KHMucmVzdW1lKCksZigpKX1mdW5jdGlvbiBwKCl7ci5yZXN1bWVRdWV1ZS5hZGQoZiksci50aW1lb3V0cy5kZWxldGUoYyksYy5jYW5jZWwoKSxkPWMudGltZS1hLm5vdygpfWZ1bmN0aW9uIGYoKXtkPjAmJiFBLnNraXBBbmltYXRpb24/KHIuZGVsYXllZD0hMCxjPWEuc2V0VGltZW91dChtLGQpLHIucGF1c2VRdWV1ZS5hZGQocCksci50aW1lb3V0cy5hZGQoYykpOm0oKX1mdW5jdGlvbiBtKCl7ci5kZWxheWVkJiYoci5kZWxheWVkPSExKSxyLnBhdXNlUXVldWUuZGVsZXRlKHApLHIudGltZW91dHMuZGVsZXRlKGMpLGU8PShyLmNhbmNlbElkfHwwKSYmKHU9ITApO3RyeXtzLnN0YXJ0KHsuLi5pLGNhbGxJZDplLGNhbmNlbDp1fSx0KX1jYXRjaChlKXtsKGUpfX19KX12YXIgT3Q9KGUsdCk9PjE9PXQubGVuZ3RoP3RbMF06dC5zb21lKGU9PmUuY2FuY2VsbGVkKT9QdChlLmdldCgpKTp0LmV2ZXJ5KGU9PmUubm9vcCk/UnQoZS5nZXQoKSk6anQoZS5nZXQoKSx0LmV2ZXJ5KGU9PmUuZmluaXNoZWQpKSxSdD1lPT4oe3ZhbHVlOmUsbm9vcDohMCxmaW5pc2hlZDohMCxjYW5jZWxsZWQ6ITF9KSxqdD1mdW5jdGlvbihlLHQpe3JldHVybnt2YWx1ZTplLGZpbmlzaGVkOnQsY2FuY2VsbGVkOmFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl19fSxQdD1lPT4oe3ZhbHVlOmUsY2FuY2VsbGVkOiEwLGZpbmlzaGVkOiExfSk7ZnVuY3Rpb24genQoZSx0LG4saSl7Y29uc3R7Y2FsbElkOm8scGFyZW50SWQ6cixvblJlc3Q6c309dCx7YXN5bmNUbzpsLHByb21pc2U6ZH09bjtyZXR1cm4gcnx8ZSE9PWx8fHQucmVzZXQ/bi5wcm9taXNlPShhc3luYygpPT57bi5hc3luY0lkPW8sbi5hc3luY1RvPWU7Y29uc3QgYz14dCh0LChlLHQpPT4ib25SZXN0Ij09PXQ/dm9pZCAwOmUpO2xldCB1LHA7Y29uc3QgZj1uZXcgUHJvbWlzZSgoZSx0KT0+KHU9ZSxwPXQpKSxtPWU9Pntjb25zdCB0PW88PShuLmNhbmNlbElkfHwwKSYmUHQoaSl8fG8hPT1uLmFzeW5jSWQmJmp0KGksITEpO2lmKHQpdGhyb3cgZS5yZXN1bHQ9dCxwKGUpLGV9LGg9KGUsdCk9Pntjb25zdCBhPW5ldyBVdCxyPW5ldyBCdDtyZXR1cm4oYXN5bmMoKT0+e2lmKEEuc2tpcEFuaW1hdGlvbil0aHJvdyBMdChuKSxyLnJlc3VsdD1qdChpLCExKSxwKHIpLHI7bShhKTtjb25zdCBzPUUub2JqKGUpP3suLi5lfTp7Li4udCx0bzplfTtzLnBhcmVudElkPW8sWShjLChlLHQpPT57RS51bmQoc1t0XSkmJihzW3RdPWUpfSk7Y29uc3QgbD1hd2FpdCBpLnN0YXJ0KHMpO3JldHVybiBtKGEpLG4ucGF1c2VkJiZhd2FpdCBuZXcgUHJvbWlzZShlPT57bi5yZXN1bWVRdWV1ZS5hZGQoZSl9KSxsfSkoKX07bGV0IGc7aWYoQS5za2lwQW5pbWF0aW9uKXJldHVybiBMdChuKSxqdChpLCExKTt0cnl7bGV0IHQ7dD1FLmFycihlKT8oYXN5bmMgZT0+e2Zvcihjb25zdCB0IG9mIGUpYXdhaXQgaCh0KX0pKGUpOlByb21pc2UucmVzb2x2ZShlKGgsaS5zdG9wLmJpbmQoaSkpKSxhd2FpdCBQcm9taXNlLmFsbChbdC50aGVuKHUpLGZdKSxnPWp0KGkuZ2V0KCksITAsITEpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBVdClnPWUucmVzdWx0O2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgQnQpKXRocm93IGU7Zz1lLnJlc3VsdH19ZmluYWxseXtvPT1uLmFzeW5jSWQmJihuLmFzeW5jSWQ9cixuLmFzeW5jVG89cj9sOnZvaWQgMCxuLnByb21pc2U9cj9kOnZvaWQgMCl9cmV0dXJuIEUuZnVuKHMpJiZhLmJhdGNoZWRVcGRhdGVzKCgpPT57cyhnLGksaS5pdGVtKX0pLGd9KSgpOmR9ZnVuY3Rpb24gTHQoZSx0KXtGKGUudGltZW91dHMsZT0+ZS5jYW5jZWwoKSksZS5wYXVzZVF1ZXVlLmNsZWFyKCksZS5yZXN1bWVRdWV1ZS5jbGVhcigpLGUuYXN5bmNJZD1lLmFzeW5jVG89ZS5wcm9taXNlPXZvaWQgMCx0JiYoZS5jYW5jZWxJZD10KX12YXIgVXQ9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJBbiBhc3luYyBhbmltYXRpb24gaGFzIGJlZW4gaW50ZXJydXB0ZWQuIFlvdSBzZWUgdGhpcyBlcnJvciBiZWNhdXNlIHlvdSBmb3Jnb3QgdG8gdXNlIGBhd2FpdGAgb3IgYC5jYXRjaCguLi4pYCBvbiBpdHMgcmV0dXJuZWQgcHJvbWlzZS4iKX19LEJ0PWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiU2tpcEFuaW1hdGlvblNpZ25hbCIpfX0sSHQ9ZT0+ZSBpbnN0YW5jZW9mIFZ0LHF0PTEsVnQ9Y2xhc3MgZXh0ZW5kcyBTZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pZD1xdCsrLHRoaXMuX3ByaW9yaXR5PTB9Z2V0IHByaW9yaXR5KCl7cmV0dXJuIHRoaXMuX3ByaW9yaXR5fXNldCBwcmlvcml0eShlKXt0aGlzLl9wcmlvcml0eSE9ZSYmKHRoaXMuX3ByaW9yaXR5PWUsdGhpcy5fb25Qcmlvcml0eUNoYW5nZShlKSl9Z2V0KCl7Y29uc3QgZT1KZSh0aGlzKTtyZXR1cm4gZSYmZS5nZXRWYWx1ZSgpfXRvKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIEEudG8odGhpcyx0KX1pbnRlcnBvbGF0ZSgpe0hlKGAke1VlfVRoZSAiaW50ZXJwb2xhdGUiIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgaW4gdjkgKHVzZSAidG8iIGluc3RlYWQpYCk7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIEEudG8odGhpcyx0KX10b0pTT04oKXtyZXR1cm4gdGhpcy5nZXQoKX1vYnNlcnZlckFkZGVkKGUpezE9PWUmJnRoaXMuX2F0dGFjaCgpfW9ic2VydmVyUmVtb3ZlZChlKXswPT1lJiZ0aGlzLl9kZXRhY2goKX1fYXR0YWNoKCl7fV9kZXRhY2goKXt9X29uQ2hhbmdlKGUpe0VlKHRoaXMse3R5cGU6ImNoYW5nZSIscGFyZW50OnRoaXMsdmFsdWU6ZSxpZGxlOmFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV19KX1fb25Qcmlvcml0eUNoYW5nZShlKXt0aGlzLmlkbGV8fEguc29ydCh0aGlzKSxFZSh0aGlzLHt0eXBlOiJwcmlvcml0eSIscGFyZW50OnRoaXMscHJpb3JpdHk6ZX0pfX0sJHQ9U3ltYm9sLmZvcigiU3ByaW5nUGhhc2UiKSxXdD1lPT4oMSZlWyR0XSk+MCxLdD1lPT4oMiZlWyR0XSk+MCxHdD1lPT4oNCZlWyR0XSk+MCxYdD0oZSx0KT0+dD9lWyR0XXw9MzplWyR0XSY9LTMsUXQ9KGUsdCk9PnQ/ZVskdF18PTQ6ZVskdF0mPS01LFp0PWNsYXNzIGV4dGVuZHMgVnR7Y29uc3RydWN0b3IoZSx0KXtpZihzdXBlcigpLHRoaXMuYW5pbWF0aW9uPW5ldyBNdCx0aGlzLmRlZmF1bHRQcm9wcz17fSx0aGlzLl9zdGF0ZT17cGF1c2VkOiExLGRlbGF5ZWQ6ITEscGF1c2VRdWV1ZTpuZXcgU2V0LHJlc3VtZVF1ZXVlOm5ldyBTZXQsdGltZW91dHM6bmV3IFNldH0sdGhpcy5fcGVuZGluZ0NhbGxzPW5ldyBTZXQsdGhpcy5fbGFzdENhbGxJZD0wLHRoaXMuX2xhc3RUb0lkPTAsdGhpcy5fbWVtb2l6ZWREdXJhdGlvbj0wLCFFLnVuZChlKXx8IUUudW5kKHQpKXtjb25zdCBuPUUub2JqKGUpP3suLi5lfTp7Li4udCxmcm9tOmV9O0UudW5kKG4uZGVmYXVsdCkmJihuLmRlZmF1bHQ9ITApLHRoaXMuc3RhcnQobil9fWdldCBpZGxlKCl7cmV0dXJuIShLdCh0aGlzKXx8dGhpcy5fc3RhdGUuYXN5bmNUbyl8fEd0KHRoaXMpfWdldCBnb2FsKCl7cmV0dXJuIEFlKHRoaXMuYW5pbWF0aW9uLnRvKX1nZXQgdmVsb2NpdHkoKXtjb25zdCBlPUplKHRoaXMpO3JldHVybiBlIGluc3RhbmNlb2YgaXQ/ZS5sYXN0VmVsb2NpdHl8fDA6ZS5nZXRQYXlsb2FkKCkubWFwKGU9PmUubGFzdFZlbG9jaXR5fHwwKX1nZXQgaGFzQW5pbWF0ZWQoKXtyZXR1cm4gV3QodGhpcyl9Z2V0IGlzQW5pbWF0aW5nKCl7cmV0dXJuIEt0KHRoaXMpfWdldCBpc1BhdXNlZCgpe3JldHVybiBHdCh0aGlzKX1nZXQgaXNEZWxheWVkKCl7cmV0dXJuIHRoaXMuX3N0YXRlLmRlbGF5ZWR9YWR2YW5jZShlKXtsZXQgdD0hMCxuPSExO2NvbnN0IGk9dGhpcy5hbmltYXRpb247bGV0e3RvVmFsdWVzOmF9PWk7Y29uc3R7Y29uZmlnOm99PWkscj10dChpLnRvKTshciYma2UoaS50bykmJihhPVQoQWUoaS50bykpKSxpLnZhbHVlcy5mb3JFYWNoKChzLGwpPT57aWYocy5kb25lKXJldHVybjtjb25zdCBkPXMuY29uc3RydWN0b3I9PWF0PzE6cj9yW2xdLmxhc3RQb3NpdGlvbjphW2xdO2xldCBjPWkuaW1tZWRpYXRlLHU9ZDtpZighYyl7aWYodT1zLmxhc3RQb3NpdGlvbixvLnRlbnNpb248PTApcmV0dXJuIHZvaWQocy5kb25lPSEwKTtsZXQgdD1zLmVsYXBzZWRUaW1lKz1lO2NvbnN0IG49aS5mcm9tVmFsdWVzW2xdLGE9bnVsbCE9cy52MD9zLnYwOnMudjA9RS5hcnIoby52ZWxvY2l0eSk/by52ZWxvY2l0eVtsXTpvLnZlbG9jaXR5O2xldCByO2NvbnN0IHA9by5wcmVjaXNpb258fChuPT1kPy4wMDU6TWF0aC5taW4oMSwuMDAxKk1hdGguYWJzKGQtbikpKTtpZihFLnVuZChvLmR1cmF0aW9uKSlpZihvLmRlY2F5KXtjb25zdCBlPSEwPT09by5kZWNheT8uOTk4Om8uZGVjYXksaT1NYXRoLmV4cCgtKDEtZSkqdCk7dT1uK2EvKDEtZSkqKDEtaSksYz1NYXRoLmFicyhzLmxhc3RQb3NpdGlvbi11KTw9cCxyPWEqaX1lbHNle3I9bnVsbD09cy5sYXN0VmVsb2NpdHk/YTpzLmxhc3RWZWxvY2l0eTtjb25zdCB0PW8ucmVzdFZlbG9jaXR5fHxwLzEwLGk9by5jbGFtcD8wOm8uYm91bmNlLGw9IUUudW5kKGkpLGY9bj09ZD9zLnYwPjA6bjxkO2xldCBtLGg9ITE7Y29uc3QgZz0xLGI9TWF0aC5jZWlsKGUvZyk7Zm9yKGxldCBlPTA7ZTxiJiYobT1NYXRoLmFicyhyKT50LG18fChjPU1hdGguYWJzKGQtdSk8PXAsIWMpKTsrK2Upe2wmJihoPXU9PWR8fHU+ZD09ZixoJiYocj0tcippLHU9ZCkpO3IrPSgxZS02Ki1vLnRlbnNpb24qKHUtZCkrLjAwMSotby5mcmljdGlvbipyKS9vLm1hc3MqZyx1Kz1yKmd9fWVsc2V7bGV0IGk9MTtvLmR1cmF0aW9uPjAmJih0aGlzLl9tZW1vaXplZER1cmF0aW9uIT09by5kdXJhdGlvbiYmKHRoaXMuX21lbW9pemVkRHVyYXRpb249by5kdXJhdGlvbixzLmR1cmF0aW9uUHJvZ3Jlc3M+MCYmKHMuZWxhcHNlZFRpbWU9by5kdXJhdGlvbipzLmR1cmF0aW9uUHJvZ3Jlc3MsdD1zLmVsYXBzZWRUaW1lKz1lKSksaT0oby5wcm9ncmVzc3x8MCkrdC90aGlzLl9tZW1vaXplZER1cmF0aW9uLGk9aT4xPzE6aTwwPzA6aSxzLmR1cmF0aW9uUHJvZ3Jlc3M9aSksdT1uK28uZWFzaW5nKGkpKihkLW4pLHI9KHUtcy5sYXN0UG9zaXRpb24pL2UsYz0xPT1pfXMubGFzdFZlbG9jaXR5PXIsTnVtYmVyLmlzTmFOKHUpJiYoY29uc29sZS53YXJuKCJHb3QgTmFOIHdoaWxlIGFuaW1hdGluZzoiLHRoaXMpLGM9ITApfXImJiFyW2xdLmRvbmUmJihjPSExKSxjP3MuZG9uZT0hMDp0PSExLHMuc2V0VmFsdWUodSxvLnJvdW5kKSYmKG49ITApfSk7Y29uc3Qgcz1KZSh0aGlzKSxsPXMuZ2V0VmFsdWUoKTtpZih0KXtjb25zdCBlPUFlKGkudG8pO2w9PT1lJiYhbnx8by5kZWNheT9uJiZvLmRlY2F5JiZ0aGlzLl9vbkNoYW5nZShsKToocy5zZXRWYWx1ZShlKSx0aGlzLl9vbkNoYW5nZShlKSksdGhpcy5fc3RvcCgpfWVsc2UgbiYmdGhpcy5fb25DaGFuZ2UobCl9c2V0KGUpe3JldHVybiBhLmJhdGNoZWRVcGRhdGVzKCgpPT57dGhpcy5fc3RvcCgpLHRoaXMuX2ZvY3VzKGUpLHRoaXMuX3NldChlKX0pLHRoaXN9cGF1c2UoKXt0aGlzLl91cGRhdGUoe3BhdXNlOiEwfSl9cmVzdW1lKCl7dGhpcy5fdXBkYXRlKHtwYXVzZTohMX0pfWZpbmlzaCgpe2lmKEt0KHRoaXMpKXtjb25zdHt0bzplLGNvbmZpZzp0fT10aGlzLmFuaW1hdGlvbjthLmJhdGNoZWRVcGRhdGVzKCgpPT57dGhpcy5fb25TdGFydCgpLHQuZGVjYXl8fHRoaXMuX3NldChlLCExKSx0aGlzLl9zdG9wKCl9KX1yZXR1cm4gdGhpc311cGRhdGUoZSl7cmV0dXJuKHRoaXMucXVldWV8fCh0aGlzLnF1ZXVlPVtdKSkucHVzaChlKSx0aGlzfXN0YXJ0KGUsdCl7bGV0IG47cmV0dXJuIEUudW5kKGUpPyhuPXRoaXMucXVldWV8fFtdLHRoaXMucXVldWU9W10pOm49W0Uub2JqKGUpP2U6ey4uLnQsdG86ZX1dLFByb21pc2UuYWxsKG4ubWFwKGU9PnRoaXMuX3VwZGF0ZShlKSkpLnRoZW4oZT0+T3QodGhpcyxlKSl9c3RvcChlKXtjb25zdHt0bzp0fT10aGlzLmFuaW1hdGlvbjtyZXR1cm4gdGhpcy5fZm9jdXModGhpcy5nZXQoKSksTHQodGhpcy5fc3RhdGUsZSYmdGhpcy5fbGFzdENhbGxJZCksYS5iYXRjaGVkVXBkYXRlcygoKT0+dGhpcy5fc3RvcCh0LGUpKSx0aGlzfXJlc2V0KCl7dGhpcy5fdXBkYXRlKHtyZXNldDohMH0pfWV2ZW50T2JzZXJ2ZWQoZSl7ImNoYW5nZSI9PWUudHlwZT90aGlzLl9zdGFydCgpOiJwcmlvcml0eSI9PWUudHlwZSYmKHRoaXMucHJpb3JpdHk9ZS5wcmlvcml0eSsxKX1fcHJlcGFyZU5vZGUoZSl7Y29uc3QgdD10aGlzLmtleXx8IiI7bGV0e3RvOm4sZnJvbTppfT1lO249RS5vYmoobik/blt0XTpuLChudWxsPT1ufHxFdChuKSkmJihuPXZvaWQgMCksaT1FLm9iaihpKT9pW3RdOmksbnVsbD09aSYmKGk9dm9pZCAwKTtjb25zdCBhPXt0bzpuLGZyb206aX07cmV0dXJuIFd0KHRoaXMpfHwoZS5yZXZlcnNlJiYoW24saV09W2ksbl0pLGk9QWUoaSksRS51bmQoaSk/SmUodGhpcyl8fHRoaXMuX3NldChuKTp0aGlzLl9zZXQoaSkpLGF9X3VwZGF0ZShlLHQpe2xldHsuLi5ufT1lO2NvbnN0e2tleTppLGRlZmF1bHRQcm9wczphfT10aGlzO24uZGVmYXVsdCYmT2JqZWN0LmFzc2lnbihhLHh0KG4sKGUsdCk9Pi9eb24vLnRlc3QodCk/Z3QoZSxpKTplKSkscm4odGhpcyxuLCJvblByb3BzIiksc24odGhpcywib25Qcm9wcyIsbix0aGlzKTtjb25zdCBvPXRoaXMuX3ByZXBhcmVOb2RlKG4pO2lmKE9iamVjdC5pc0Zyb3plbih0aGlzKSl0aHJvdyBFcnJvcigiQ2Fubm90IGFuaW1hdGUgYSBgU3ByaW5nVmFsdWVgIG9iamVjdCB0aGF0IGlzIGZyb3plbi4gRGlkIHlvdSBmb3JnZXQgdG8gcGFzcyB5b3VyIGNvbXBvbmVudCB0byBgYW5pbWF0ZWQoLi4uKWAgYmVmb3JlIGFuaW1hdGluZyBpdHMgcHJvcHM/Iik7Y29uc3Qgcj10aGlzLl9zdGF0ZTtyZXR1cm4gTnQoKyt0aGlzLl9sYXN0Q2FsbElkLHtrZXk6aSxwcm9wczpuLGRlZmF1bHRQcm9wczphLHN0YXRlOnIsYWN0aW9uczp7cGF1c2U6KCk9PntHdCh0aGlzKXx8KFF0KHRoaXMsITApLE0oci5wYXVzZVF1ZXVlKSxzbih0aGlzLCJvblBhdXNlIixqdCh0aGlzLEp0KHRoaXMsdGhpcy5hbmltYXRpb24udG8pKSx0aGlzKSl9LHJlc3VtZTooKT0+e0d0KHRoaXMpJiYoUXQodGhpcywhMSksS3QodGhpcykmJnRoaXMuX3Jlc3VtZSgpLE0oci5yZXN1bWVRdWV1ZSksc24odGhpcywib25SZXN1bWUiLGp0KHRoaXMsSnQodGhpcyx0aGlzLmFuaW1hdGlvbi50bykpLHRoaXMpKX0sc3RhcnQ6dGhpcy5fbWVyZ2UuYmluZCh0aGlzLG8pfX0pLnRoZW4oZT0+e2lmKG4ubG9vcCYmZS5maW5pc2hlZCYmKCF0fHwhZS5ub29wKSl7Y29uc3QgZT1lbihuKTtpZihlKXJldHVybiB0aGlzLl91cGRhdGUoZSwhMCl9cmV0dXJuIGV9KX1fbWVyZ2UoZSx0LG4pe2lmKHQuY2FuY2VsKXJldHVybiB0aGlzLnN0b3AoITApLG4oUHQodGhpcykpO2NvbnN0IGk9IUUudW5kKGUudG8pLG89IUUudW5kKGUuZnJvbSk7aWYoaXx8byl7aWYoISh0LmNhbGxJZD50aGlzLl9sYXN0VG9JZCkpcmV0dXJuIG4oUHQodGhpcykpO3RoaXMuX2xhc3RUb0lkPXQuY2FsbElkfWNvbnN0e2tleTpyLGRlZmF1bHRQcm9wczpzLGFuaW1hdGlvbjpsfT10aGlzLHt0bzpkLGZyb206Y309bDtsZXR7dG86dT1kLGZyb206cD1jfT1lOyFvfHxpfHx0LmRlZmF1bHQmJiFFLnVuZCh1KXx8KHU9cCksdC5yZXZlcnNlJiYoW3UscF09W3AsdV0pO2NvbnN0IGY9IVMocCxjKTtmJiYobC5mcm9tPXApLHA9QWUocCk7Y29uc3QgbT0hUyh1LGQpO20mJnRoaXMuX2ZvY3VzKHUpO2NvbnN0IGg9RXQodC50bykse2NvbmZpZzpnfT1sLHtkZWNheTpiLHZlbG9jaXR5OnZ9PWc7KGl8fG8pJiYoZy52ZWxvY2l0eT0wKSx0LmNvbmZpZyYmIWgmJmZ1bmN0aW9uKGUsdCxuKXtuJiYoSXQobj17Li4ubn0sdCksdD17Li4ubiwuLi50fSksSXQoZSx0KSxPYmplY3QuYXNzaWduKGUsdCk7Zm9yKGNvbnN0IHQgaW4gVHQpbnVsbD09ZVt0XSYmKGVbdF09VHRbdF0pO2xldHtmcmVxdWVuY3k6aSxkYW1waW5nOmF9PWU7Y29uc3R7bWFzczpvfT1lO0UudW5kKGkpfHwoaTwuMDEmJihpPS4wMSksYTwwJiYoYT0wKSxlLnRlbnNpb249TWF0aC5wb3coMipNYXRoLlBJL2ksMikqbyxlLmZyaWN0aW9uPTQqTWF0aC5QSSphKm8vaSl9KGcsbXQodC5jb25maWcsciksdC5jb25maWchPT1zLmNvbmZpZz9tdChzLmNvbmZpZyxyKTp2b2lkIDApO2xldCB4PUplKHRoaXMpO2lmKCF4fHxFLnVuZCh1KSlyZXR1cm4gbihqdCh0aGlzLCEwKSk7Y29uc3QgeT1FLnVuZCh0LnJlc2V0KT9vJiYhdC5kZWZhdWx0OiFFLnVuZChwKSYmaHQodC5yZXNldCxyKSx3PXk/cDp0aGlzLmdldCgpLGs9QXQodSksQT1FLm51bShrKXx8RS5hcnIoayl8fFZlKGspLEM9IWgmJighQXx8aHQocy5pbW1lZGlhdGV8fHQuaW1tZWRpYXRlLHIpKTtpZihtKXtjb25zdCBlPWR0KHUpO2lmKGUhPT14LmNvbnN0cnVjdG9yKXtpZighQyl0aHJvdyBFcnJvcihgQ2Fubm90IGFuaW1hdGUgYmV0d2VlbiAke3guY29uc3RydWN0b3IubmFtZX0gYW5kICR7ZS5uYW1lfSwgYXMgdGhlICJ0byIgcHJvcCBzdWdnZXN0c2ApO3g9dGhpcy5fc2V0KGspfX1jb25zdCBZPXguY29uc3RydWN0b3I7bGV0IEY9a2UodSksST0hMTtpZighRil7Y29uc3QgZT15fHwhV3QodGhpcykmJmY7KG18fGUpJiYoST1TKEF0KHcpLGspLEY9IUkpLChTKGwuaW1tZWRpYXRlLEMpfHxDKSYmUyhnLmRlY2F5LGIpJiZTKGcudmVsb2NpdHksdil8fChGPSEwKX1pZihJJiZLdCh0aGlzKSYmKGwuY2hhbmdlZCYmIXk/Rj0hMDpGfHx0aGlzLl9zdG9wKGQpKSwhaCYmKChGfHxrZShkKSkmJihsLnZhbHVlcz14LmdldFBheWxvYWQoKSxsLnRvVmFsdWVzPWtlKHUpP251bGw6WT09YXQ/WzFdOlQoaykpLGwuaW1tZWRpYXRlIT1DJiYobC5pbW1lZGlhdGU9QyxDfHx5fHx0aGlzLl9zZXQoZCkpLEYpKXtjb25zdHtvblJlc3Q6ZX09bDtEKG9uLGU9PnJuKHRoaXMsdCxlKSk7Y29uc3QgaT1qdCh0aGlzLEp0KHRoaXMsZCkpO00odGhpcy5fcGVuZGluZ0NhbGxzLGkpLHRoaXMuX3BlbmRpbmdDYWxscy5hZGQobiksbC5jaGFuZ2VkJiZhLmJhdGNoZWRVcGRhdGVzKCgpPT57bC5jaGFuZ2VkPSF5LGU/LihpLHRoaXMpLHk/bXQocy5vblJlc3QsaSk6bC5vblN0YXJ0Py4oaSx0aGlzKX0pfXkmJnRoaXMuX3NldCh3KSxoP24oenQodC50byx0LHRoaXMuX3N0YXRlLHRoaXMpKTpGP3RoaXMuX3N0YXJ0KCk6S3QodGhpcykmJiFtP3RoaXMuX3BlbmRpbmdDYWxscy5hZGQobik6bihSdCh3KSl9X2ZvY3VzKGUpe2NvbnN0IHQ9dGhpcy5hbmltYXRpb247ZSE9PXQudG8mJihDZSh0aGlzKSYmdGhpcy5fZGV0YWNoKCksdC50bz1lLENlKHRoaXMpJiZ0aGlzLl9hdHRhY2goKSl9X2F0dGFjaCgpe2xldCBlPTA7Y29uc3R7dG86dH09dGhpcy5hbmltYXRpb247a2UodCkmJihZZSh0LHRoaXMpLEh0KHQpJiYoZT10LnByaW9yaXR5KzEpKSx0aGlzLnByaW9yaXR5PWV9X2RldGFjaCgpe2NvbnN0e3RvOmV9PXRoaXMuYW5pbWF0aW9uO2tlKGUpJiZUZShlLHRoaXMpfV9zZXQoZSl7bGV0IHQ9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTtjb25zdCBuPUFlKGUpO2lmKCFFLnVuZChuKSl7Y29uc3QgZT1KZSh0aGlzKTtpZighZXx8IVMobixlLmdldFZhbHVlKCkpKXtjb25zdCBpPWR0KG4pO2UmJmUuY29uc3RydWN0b3I9PWk/ZS5zZXRWYWx1ZShuKTpldCh0aGlzLGkuY3JlYXRlKG4pKSxlJiZhLmJhdGNoZWRVcGRhdGVzKCgpPT57dGhpcy5fb25DaGFuZ2Uobix0KX0pfX1yZXR1cm4gSmUodGhpcyl9X29uU3RhcnQoKXtjb25zdCBlPXRoaXMuYW5pbWF0aW9uO2UuY2hhbmdlZHx8KGUuY2hhbmdlZD0hMCxzbih0aGlzLCJvblN0YXJ0IixqdCh0aGlzLEp0KHRoaXMsZS50bykpLHRoaXMpKX1fb25DaGFuZ2UoZSx0KXt0fHwodGhpcy5fb25TdGFydCgpLG10KHRoaXMuYW5pbWF0aW9uLm9uQ2hhbmdlLGUsdGhpcykpLG10KHRoaXMuZGVmYXVsdFByb3BzLm9uQ2hhbmdlLGUsdGhpcyksc3VwZXIuX29uQ2hhbmdlKGUsdCl9X3N0YXJ0KCl7Y29uc3QgZT10aGlzLmFuaW1hdGlvbjtKZSh0aGlzKS5yZXNldChBZShlLnRvKSksZS5pbW1lZGlhdGV8fChlLmZyb21WYWx1ZXM9ZS52YWx1ZXMubWFwKGU9PmUubGFzdFBvc2l0aW9uKSksS3QodGhpcyl8fChYdCh0aGlzLCEwKSxHdCh0aGlzKXx8dGhpcy5fcmVzdW1lKCkpfV9yZXN1bWUoKXtBLnNraXBBbmltYXRpb24/dGhpcy5maW5pc2goKTpILnN0YXJ0KHRoaXMpfV9zdG9wKGUsdCl7aWYoS3QodGhpcykpe1h0KHRoaXMsITEpO2NvbnN0IG49dGhpcy5hbmltYXRpb247RChuLnZhbHVlcyxlPT57ZS5kb25lPSEwfSksbi50b1ZhbHVlcyYmKG4ub25DaGFuZ2U9bi5vblBhdXNlPW4ub25SZXN1bWU9dm9pZCAwKSxFZSh0aGlzLHt0eXBlOiJpZGxlIixwYXJlbnQ6dGhpc30pO2NvbnN0IGk9dD9QdCh0aGlzLmdldCgpKTpqdCh0aGlzLmdldCgpLEp0KHRoaXMsZT8/bi50bykpO00odGhpcy5fcGVuZGluZ0NhbGxzLGkpLG4uY2hhbmdlZCYmKG4uY2hhbmdlZD0hMSxzbih0aGlzLCJvblJlc3QiLGksdGhpcykpfX19O2Z1bmN0aW9uIEp0KGUsdCl7Y29uc3Qgbj1BdCh0KTtyZXR1cm4gUyhBdChlLmdldCgpKSxuKX1mdW5jdGlvbiBlbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ZS5sb29wLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOmUudG87Y29uc3QgaT1tdCh0KTtpZihpKXtjb25zdCBhPSEwIT09aSYma3QoaSksbz0oYXx8ZSkucmV2ZXJzZSxyPSFhfHxhLnJlc2V0O3JldHVybiB0bih7Li4uZSxsb29wOnQsZGVmYXVsdDohMSxwYXVzZTp2b2lkIDAsdG86IW98fEV0KG4pP246dm9pZCAwLGZyb206cj9lLmZyb206dm9pZCAwLHJlc2V0OnIsLi4uYX0pfX1mdW5jdGlvbiB0bihlKXtjb25zdHt0bzp0LGZyb206bn09ZT1rdChlKSxpPW5ldyBTZXQ7cmV0dXJuIEUub2JqKHQpJiZhbih0LGkpLEUub2JqKG4pJiZhbihuLGkpLGUua2V5cz1pLnNpemU/QXJyYXkuZnJvbShpKTpudWxsLGV9ZnVuY3Rpb24gbm4oZSl7Y29uc3QgdD10bihlKTtyZXR1cm4gRS51bmQodC5kZWZhdWx0KSYmKHQuZGVmYXVsdD14dCh0KSksdH1mdW5jdGlvbiBhbihlLHQpe1koZSwoZSxuKT0+bnVsbCE9ZSYmdC5hZGQobikpfXZhciBvbj1bIm9uU3RhcnQiLCJvblJlc3QiLCJvbkNoYW5nZSIsIm9uUGF1c2UiLCJvblJlc3VtZSJdO2Z1bmN0aW9uIHJuKGUsdCxuKXtlLmFuaW1hdGlvbltuXT10W25dIT09YnQodCxuKT9ndCh0W25dLGUua2V5KTp2b2lkIDB9ZnVuY3Rpb24gc24oZSx0KXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShuPjI/bi0yOjApLGE9MjthPG47YSsrKWlbYS0yXT1hcmd1bWVudHNbYV07ZS5hbmltYXRpb25bdF0/LiguLi5pKSxlLmRlZmF1bHRQcm9wc1t0XT8uKC4uLmkpfXZhciBsbj1bIm9uU3RhcnQiLCJvbkNoYW5nZSIsIm9uUmVzdCJdLGRuPTEsY249Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmlkPWRuKyssdGhpcy5zcHJpbmdzPXt9LHRoaXMucXVldWU9W10sdGhpcy5fbGFzdEFzeW5jSWQ9MCx0aGlzLl9hY3RpdmU9bmV3IFNldCx0aGlzLl9jaGFuZ2VkPW5ldyBTZXQsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9zdGF0ZT17cGF1c2VkOiExLHBhdXNlUXVldWU6bmV3IFNldCxyZXN1bWVRdWV1ZTpuZXcgU2V0LHRpbWVvdXRzOm5ldyBTZXR9LHRoaXMuX2V2ZW50cz17b25TdGFydDpuZXcgTWFwLG9uQ2hhbmdlOm5ldyBNYXAsb25SZXN0Om5ldyBNYXB9LHRoaXMuX29uRnJhbWU9dGhpcy5fb25GcmFtZS5iaW5kKHRoaXMpLHQmJih0aGlzLl9mbHVzaD10KSxlJiZ0aGlzLnN0YXJ0KHtkZWZhdWx0OiEwLC4uLmV9KX1nZXQgaWRsZSgpe3JldHVybiF0aGlzLl9zdGF0ZS5hc3luY1RvJiZPYmplY3QudmFsdWVzKHRoaXMuc3ByaW5ncykuZXZlcnkoZT0+ZS5pZGxlJiYhZS5pc0RlbGF5ZWQmJiFlLmlzUGF1c2VkKX1nZXQgaXRlbSgpe3JldHVybiB0aGlzLl9pdGVtfXNldCBpdGVtKGUpe3RoaXMuX2l0ZW09ZX1nZXQoKXtjb25zdCBlPXt9O3JldHVybiB0aGlzLmVhY2goKHQsbik9PmVbbl09dC5nZXQoKSksZX1zZXQoZSl7Zm9yKGNvbnN0IHQgaW4gZSl7Y29uc3Qgbj1lW3RdO0UudW5kKG4pfHx0aGlzLnNwcmluZ3NbdF0uc2V0KG4pfX11cGRhdGUoZSl7cmV0dXJuIGUmJnRoaXMucXVldWUucHVzaCh0bihlKSksdGhpc31zdGFydChlKXtsZXR7cXVldWU6dH09dGhpcztyZXR1cm4gZT90PVQoZSkubWFwKHRuKTp0aGlzLnF1ZXVlPVtdLHRoaXMuX2ZsdXNoP3RoaXMuX2ZsdXNoKHRoaXMsdCk6KGJuKHRoaXMsdCksdW4odGhpcyx0KSl9c3RvcChlLHQpe2lmKGUhPT0hIWUmJih0PWUpLHQpe2NvbnN0IG49dGhpcy5zcHJpbmdzO0QoVCh0KSx0PT5uW3RdLnN0b3AoISFlKSl9ZWxzZSBMdCh0aGlzLl9zdGF0ZSx0aGlzLl9sYXN0QXN5bmNJZCksdGhpcy5lYWNoKHQ9PnQuc3RvcCghIWUpKTtyZXR1cm4gdGhpc31wYXVzZShlKXtpZihFLnVuZChlKSl0aGlzLnN0YXJ0KHtwYXVzZTohMH0pO2Vsc2V7Y29uc3QgdD10aGlzLnNwcmluZ3M7RChUKGUpLGU9PnRbZV0ucGF1c2UoKSl9cmV0dXJuIHRoaXN9cmVzdW1lKGUpe2lmKEUudW5kKGUpKXRoaXMuc3RhcnQoe3BhdXNlOiExfSk7ZWxzZXtjb25zdCB0PXRoaXMuc3ByaW5ncztEKFQoZSksZT0+dFtlXS5yZXN1bWUoKSl9cmV0dXJuIHRoaXN9ZWFjaChlKXtZKHRoaXMuc3ByaW5ncyxlKX1fb25GcmFtZSgpe2NvbnN0e29uU3RhcnQ6ZSxvbkNoYW5nZTp0LG9uUmVzdDpufT10aGlzLl9ldmVudHMsaT10aGlzLl9hY3RpdmUuc2l6ZT4wLGE9dGhpcy5fY2hhbmdlZC5zaXplPjA7KGkmJiF0aGlzLl9zdGFydGVkfHxhJiYhdGhpcy5fc3RhcnRlZCkmJih0aGlzLl9zdGFydGVkPSEwLEYoZSxlPT57bGV0W3Qsbl09ZTtuLnZhbHVlPXRoaXMuZ2V0KCksdChuLHRoaXMsdGhpcy5faXRlbSl9KSk7Y29uc3Qgbz0haSYmdGhpcy5fc3RhcnRlZCxyPWF8fG8mJm4uc2l6ZT90aGlzLmdldCgpOm51bGw7YSYmdC5zaXplJiZGKHQsZT0+e2xldFt0LG5dPWU7bi52YWx1ZT1yLHQobix0aGlzLHRoaXMuX2l0ZW0pfSksbyYmKHRoaXMuX3N0YXJ0ZWQ9ITEsRihuLGU9PntsZXRbdCxuXT1lO24udmFsdWU9cix0KG4sdGhpcyx0aGlzLl9pdGVtKX0pKX1ldmVudE9ic2VydmVkKGUpe2lmKCJjaGFuZ2UiPT1lLnR5cGUpdGhpcy5fY2hhbmdlZC5hZGQoZS5wYXJlbnQpLGUuaWRsZXx8dGhpcy5fYWN0aXZlLmFkZChlLnBhcmVudCk7ZWxzZXtpZigiaWRsZSIhPWUudHlwZSlyZXR1cm47dGhpcy5fYWN0aXZlLmRlbGV0ZShlLnBhcmVudCl9YS5vbkZyYW1lKHRoaXMuX29uRnJhbWUpfX07ZnVuY3Rpb24gdW4oZSx0KXtyZXR1cm4gUHJvbWlzZS5hbGwodC5tYXAodD0+cG4oZSx0KSkpLnRoZW4odD0+T3QoZSx0KSl9YXN5bmMgZnVuY3Rpb24gcG4oZSx0LG4pe2NvbnN0e2tleXM6aSx0bzpvLGZyb206cixsb29wOnMsb25SZXN0Omwsb25SZXNvbHZlOmR9PXQsYz1FLm9iaih0LmRlZmF1bHQpJiZ0LmRlZmF1bHQ7cyYmKHQubG9vcD0hMSksITE9PT1vJiYodC50bz1udWxsKSwhMT09PXImJih0LmZyb209bnVsbCk7Y29uc3QgdT1FLmFycihvKXx8RS5mdW4obyk/bzp2b2lkIDA7dT8odC50bz12b2lkIDAsdC5vblJlc3Q9dm9pZCAwLGMmJihjLm9uUmVzdD12b2lkIDApKTpEKGxuLG49Pntjb25zdCBpPXRbbl07aWYoRS5mdW4oaSkpe2NvbnN0IGE9ZS5fZXZlbnRzW25dO3Rbbl09ZT0+e2xldHtmaW5pc2hlZDp0LGNhbmNlbGxlZDpufT1lO2NvbnN0IG89YS5nZXQoaSk7bz8odHx8KG8uZmluaXNoZWQ9ITEpLG4mJihvLmNhbmNlbGxlZD0hMCkpOmEuc2V0KGkse3ZhbHVlOm51bGwsZmluaXNoZWQ6dHx8ITEsY2FuY2VsbGVkOm58fCExfSl9LGMmJihjW25dPXRbbl0pfX0pO2NvbnN0IHA9ZS5fc3RhdGU7dC5wYXVzZT09PSFwLnBhdXNlZD8ocC5wYXVzZWQ9dC5wYXVzZSxNKHQucGF1c2U/cC5wYXVzZVF1ZXVlOnAucmVzdW1lUXVldWUpKTpwLnBhdXNlZCYmKHQucGF1c2U9ITApO2NvbnN0IGY9KGl8fE9iamVjdC5rZXlzKGUuc3ByaW5ncykpLm1hcChuPT5lLnNwcmluZ3Nbbl0uc3RhcnQodCkpLG09ITA9PT10LmNhbmNlbHx8ITA9PT1idCh0LCJjYW5jZWwiKTsodXx8bSYmcC5hc3luY0lkKSYmZi5wdXNoKE50KCsrZS5fbGFzdEFzeW5jSWQse3Byb3BzOnQsc3RhdGU6cCxhY3Rpb25zOntwYXVzZTpDLHJlc3VtZTpDLHN0YXJ0KHQsbil7bT8oTHQocCxlLl9sYXN0QXN5bmNJZCksbihQdChlKSkpOih0Lm9uUmVzdD1sLG4oenQodSx0LHAsZSkpKX19fSkpLHAucGF1c2VkJiZhd2FpdCBuZXcgUHJvbWlzZShlPT57cC5yZXN1bWVRdWV1ZS5hZGQoZSl9KTtjb25zdCBoPU90KGUsYXdhaXQgUHJvbWlzZS5hbGwoZikpO2lmKHMmJmguZmluaXNoZWQmJighbnx8IWgubm9vcCkpe2NvbnN0IG49ZW4odCxzLG8pO2lmKG4pcmV0dXJuIGJuKGUsW25dKSxwbihlLG4sITApfXJldHVybiBkJiZhLmJhdGNoZWRVcGRhdGVzKCgpPT5kKGgsZSxlLml0ZW0pKSxofWZ1bmN0aW9uIGZuKGUsdCl7Y29uc3Qgbj17Li4uZS5zcHJpbmdzfTtyZXR1cm4gdCYmRChUKHQpLGU9PntFLnVuZChlLmtleXMpJiYoZT10bihlKSksRS5vYmooZS50byl8fChlPXsuLi5lLHRvOnZvaWQgMH0pLGduKG4sZSxlPT5obihlKSl9KSxtbihlLG4pLG59ZnVuY3Rpb24gbW4oZSx0KXtZKHQsKHQsbik9PntlLnNwcmluZ3Nbbl18fChlLnNwcmluZ3Nbbl09dCxZZSh0LGUpKX0pfWZ1bmN0aW9uIGhuKGUsdCl7Y29uc3Qgbj1uZXcgWnQ7cmV0dXJuIG4ua2V5PWUsdCYmWWUobix0KSxufWZ1bmN0aW9uIGduKGUsdCxuKXt0LmtleXMmJkQodC5rZXlzLGk9PnsoZVtpXXx8KGVbaV09bihpKSkpLl9wcmVwYXJlTm9kZSh0KX0pfWZ1bmN0aW9uIGJuKGUsdCl7RCh0LHQ9PntnbihlLnNwcmluZ3MsdCx0PT5obih0LGUpKX0pfXZhciB2bix4bix5bj1lPT57bGV0e2NoaWxkcmVuOnQsLi4ubn09ZTtjb25zdCBpPSgwLHcudXNlQ29udGV4dCkod24pLGE9bi5wYXVzZXx8ISFpLnBhdXNlLG89bi5pbW1lZGlhdGV8fCEhaS5pbW1lZGlhdGU7bj1mdW5jdGlvbihlLHQpe2NvbnN0W25dPSgwLHcudXNlU3RhdGUpKCgpPT4oe2lucHV0czp0LHJlc3VsdDplKCl9KSksaT0oMCx3LnVzZVJlZikoKSxhPWkuY3VycmVudDtsZXQgbz1hO28/Qm9vbGVhbih0JiZvLmlucHV0cyYmZnVuY3Rpb24oZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKWlmKGVbbl0hPT10W25dKXJldHVybiExO3JldHVybiEwfSh0LG8uaW5wdXRzKSl8fChvPXtpbnB1dHM6dCxyZXN1bHQ6ZSgpfSk6bz1uO3JldHVybigwLHcudXNlRWZmZWN0KSgoKT0+e2kuY3VycmVudD1vLGE9PW4mJihuLmlucHV0cz1uLnJlc3VsdD12b2lkIDApfSxbb10pLG8ucmVzdWx0fSgoKT0+KHtwYXVzZTphLGltbWVkaWF0ZTpvfSksW2Esb10pO2NvbnN0e1Byb3ZpZGVyOnJ9PXduO3JldHVybiB3LmNyZWF0ZUVsZW1lbnQocix7dmFsdWU6bn0sdCl9LHduPSh2bj15bix4bj17fSxPYmplY3QuYXNzaWduKHZuLHcuY3JlYXRlQ29udGV4dCh4bikpLHZuLlByb3ZpZGVyLl9jb250ZXh0PXZuLHZuLkNvbnN1bWVyLl9jb250ZXh0PXZuLHZuKTt5bi5Qcm92aWRlcj13bi5Qcm92aWRlcix5bi5Db25zdW1lcj13bi5Db25zdW1lcjt2YXIga249KCk9Pntjb25zdCBlPVtdLHQ9ZnVuY3Rpb24odCl7cWUoYCR7VWV9RGlyZWN0bHkgY2FsbGluZyBzdGFydCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBhcGkgb2JqZWN0IGlzIGRlcHJlY2F0ZWQgaW4gdjkgKHVzZSAiLnN0YXJ0IiBpbnN0ZWFkKSwgdGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gbGF0ZXIgMC5YLjAgdmVyc2lvbnNgKTtjb25zdCBpPVtdO3JldHVybiBEKGUsKGUsYSk9PntpZihFLnVuZCh0KSlpLnB1c2goZS5zdGFydCgpKTtlbHNle2NvbnN0IG89bih0LGUsYSk7byYmaS5wdXNoKGUuc3RhcnQobykpfX0pLGl9O3QuY3VycmVudD1lLHQuYWRkPWZ1bmN0aW9uKHQpe2UuaW5jbHVkZXModCl8fGUucHVzaCh0KX0sdC5kZWxldGU9ZnVuY3Rpb24odCl7Y29uc3Qgbj1lLmluZGV4T2YodCk7fm4mJmUuc3BsaWNlKG4sMSl9LHQucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4gRChlLGU9PmUucGF1c2UoLi4uYXJndW1lbnRzKSksdGhpc30sdC5yZXN1bWU9ZnVuY3Rpb24oKXtyZXR1cm4gRChlLGU9PmUucmVzdW1lKC4uLmFyZ3VtZW50cykpLHRoaXN9LHQuc2V0PWZ1bmN0aW9uKHQpe0QoZSwoZSxuKT0+e2NvbnN0IGk9RS5mdW4odCk/dChuLGUpOnQ7aSYmZS5zZXQoaSl9KX0sdC5zdGFydD1mdW5jdGlvbih0KXtjb25zdCBuPVtdO3JldHVybiBEKGUsKGUsaSk9PntpZihFLnVuZCh0KSluLnB1c2goZS5zdGFydCgpKTtlbHNle2NvbnN0IGE9dGhpcy5fZ2V0UHJvcHModCxlLGkpO2EmJm4ucHVzaChlLnN0YXJ0KGEpKX19KSxufSx0LnN0b3A9ZnVuY3Rpb24oKXtyZXR1cm4gRChlLGU9PmUuc3RvcCguLi5hcmd1bWVudHMpKSx0aGlzfSx0LnVwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gRChlLChlLG4pPT5lLnVwZGF0ZSh0aGlzLl9nZXRQcm9wcyh0LGUsbikpKSx0aGlzfTtjb25zdCBuPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gRS5mdW4oZSk/ZShuLHQpOmV9O3JldHVybiB0Ll9nZXRQcm9wcz1uLHR9O2Z1bmN0aW9uIEFuKGUsdCxuKXtjb25zdCBpPUUuZnVuKHQpJiZ0O2kmJiFuJiYobj1bXSk7Y29uc3QgYT0oMCx3LnVzZU1lbW8pKCgpPT5pfHwzPT1hcmd1bWVudHMubGVuZ3RoP2tuKCk6dm9pZCAwLFtdKSxvPSgwLHcudXNlUmVmKSgwKSxyPUtlKCkscz0oMCx3LnVzZU1lbW8pKCgpPT4oe2N0cmxzOltdLHF1ZXVlOltdLGZsdXNoKGUsdCl7Y29uc3Qgbj1mbihlLHQpO3JldHVybiBvLmN1cnJlbnQ+MCYmIXMucXVldWUubGVuZ3RoJiYhT2JqZWN0LmtleXMobikuc29tZSh0PT4hZS5zcHJpbmdzW3RdKT91bihlLHQpOm5ldyBQcm9taXNlKGk9PnttbihlLG4pLHMucXVldWUucHVzaCgoKT0+e2kodW4oZSx0KSl9KSxyKCl9KX19KSxbXSksbD0oMCx3LnVzZVJlZikoWy4uLnMuY3RybHNdKSxkPVtdLGM9UWUoZSl8fDA7ZnVuY3Rpb24gdShlLG4pe2ZvcihsZXQgYT1lO2E8bjthKyspe2NvbnN0IGU9bC5jdXJyZW50W2FdfHwobC5jdXJyZW50W2FdPW5ldyBjbihudWxsLHMuZmx1c2gpKSxuPWk/aShhLGUpOnRbYV07biYmKGRbYV09bm4obikpfX0oMCx3LnVzZU1lbW8pKCgpPT57RChsLmN1cnJlbnQuc2xpY2UoZSxjKSxlPT57U3QoZSxhKSxlLnN0b3AoITApfSksbC5jdXJyZW50Lmxlbmd0aD1lLHUoYyxlKX0sW2VdKSwoMCx3LnVzZU1lbW8pKCgpPT57dSgwLE1hdGgubWluKGMsZSkpfSxuKTtjb25zdCBwPWwuY3VycmVudC5tYXAoKGUsdCk9PmZuKGUsZFt0XSkpLGY9KDAsdy51c2VDb250ZXh0KSh5biksbT1RZShmKSxoPWYhPT1tJiZDdChmKTskZSgoKT0+e28uY3VycmVudCsrLHMuY3RybHM9bC5jdXJyZW50O2NvbnN0e3F1ZXVlOmV9PXM7ZS5sZW5ndGgmJihzLnF1ZXVlPVtdLEQoZSxlPT5lKCkpKSxEKGwuY3VycmVudCwoZSx0KT0+e2E/LmFkZChlKSxoJiZlLnN0YXJ0KHtkZWZhdWx0OmZ9KTtjb25zdCBuPWRbdF07biYmKER0KGUsbi5yZWYpLGUucmVmP2UucXVldWUucHVzaChuKTplLnN0YXJ0KG4pKX0pfSksR2UoKCk9PigpPT57RChzLmN0cmxzLGU9PmUuc3RvcCghMCkpfSk7Y29uc3QgZz1wLm1hcChlPT4oey4uLmV9KSk7cmV0dXJuIGE/W2csYV06Z31mdW5jdGlvbiBDbihlLHQpe2NvbnN0IG49RS5mdW4oZSksW1tpXSxhXT1BbigxLG4/ZTpbZV0sbj90fHxbXTp0KTtyZXR1cm4gbnx8Mj09YXJndW1lbnRzLmxlbmd0aD9baSxhXTppfXZhciBFbj0oKT0+a24oKSxTbj0oKT0+KDAsdy51c2VTdGF0ZSkoRW4pWzBdO2Z1bmN0aW9uIERuKGUsdCxuKXtjb25zdCBpPUUuZnVuKHQpJiZ0LHtyZXNldDphLHNvcnQ6byx0cmFpbDpyPTAsZXhwaXJlczpzPSEwLGV4aXRCZWZvcmVFbnRlcjpsPSExLG9uRGVzdHJveWVkOmQscmVmOmMsY29uZmlnOnV9PWk/aSgpOnQscD0oMCx3LnVzZU1lbW8pKCgpPT5pfHwzPT1hcmd1bWVudHMubGVuZ3RoP2tuKCk6dm9pZCAwLFtdKSxmPVQoZSksbT1bXSxoPSgwLHcudXNlUmVmKShudWxsKSxnPWE/bnVsbDpoLmN1cnJlbnQ7JGUoKCk9PntoLmN1cnJlbnQ9bX0pLEdlKCgpPT4oRChtLGU9PntwPy5hZGQoZS5jdHJsKSxlLmN0cmwucmVmPXB9KSwoKT0+e0QoaC5jdXJyZW50LGU9PntlLmV4cGlyZWQmJmNsZWFyVGltZW91dChlLmV4cGlyYXRpb25JZCksU3QoZS5jdHJsLHApLGUuY3RybC5zdG9wKCEwKX0pfSkpO2NvbnN0IGI9ZnVuY3Rpb24oZSx0LG4pe2xldHtrZXk6aSxrZXlzOmE9aX09dDtpZihudWxsPT09YSl7Y29uc3QgdD1uZXcgU2V0O3JldHVybiBlLm1hcChlPT57Y29uc3QgaT1uJiZuLmZpbmQobj0+bi5pdGVtPT09ZSYmImxlYXZlIiE9PW4ucGhhc2UmJiF0LmhhcyhuKSk7cmV0dXJuIGk/KHQuYWRkKGkpLGkua2V5KTpZbisrfSl9cmV0dXJuIEUudW5kKGEpP2U6RS5mdW4oYSk/ZS5tYXAoYSk6VChhKX0oZixpP2koKTp0LGcpLHY9YSYmaC5jdXJyZW50fHxbXTskZSgoKT0+RCh2LGU9PntsZXR7Y3RybDp0LGl0ZW06bixrZXk6aX09ZTtTdCh0LHApLG10KGQsbixpKX0pKTtjb25zdCB4PVtdO2lmKGcmJkQoZywoZSx0KT0+e2UuZXhwaXJlZD8oY2xlYXJUaW1lb3V0KGUuZXhwaXJhdGlvbklkKSx2LnB1c2goZSkpOn4odD14W3RdPWIuaW5kZXhPZihlLmtleSkpJiYobVt0XT1lKX0pLEQoZiwoZSx0KT0+e21bdF18fChtW3RdPXtrZXk6Ylt0XSxpdGVtOmUscGhhc2U6Im1vdW50IixjdHJsOm5ldyBjbn0sbVt0XS5jdHJsLml0ZW09ZSl9KSx4Lmxlbmd0aCl7bGV0IGU9LTE7Y29uc3R7bGVhdmU6bn09aT9pKCk6dDtEKHgsKHQsaSk9Pntjb25zdCBhPWdbaV07fnQ/KGU9bS5pbmRleE9mKGEpLG1bZV09ey4uLmEsaXRlbTpmW3RdfSk6biYmbS5zcGxpY2UoKytlLDAsYSl9KX1FLmZ1bihvKSYmbS5zb3J0KChlLHQpPT5vKGUuaXRlbSx0Lml0ZW0pKTtsZXQgeT0tcjtjb25zdCBrPUtlKCksQT14dCh0KSxDPW5ldyBNYXAsUz0oMCx3LnVzZVJlZikobmV3IE1hcCksWT0oMCx3LnVzZVJlZikoITEpO0QobSwoZSxuKT0+e2NvbnN0IGE9ZS5rZXksbz1lLnBoYXNlLGQ9aT9pKCk6dDtsZXQgcCxmO2NvbnN0IG09bXQoZC5kZWxheXx8MCxhKTtpZigibW91bnQiPT1vKXA9ZC5lbnRlcixmPSJlbnRlciI7ZWxzZXtjb25zdCBlPWIuaW5kZXhPZihhKTwwO2lmKCJsZWF2ZSIhPW8paWYoZSlwPWQubGVhdmUsZj0ibGVhdmUiO2Vsc2V7aWYoIShwPWQudXBkYXRlKSlyZXR1cm47Zj0idXBkYXRlIn1lbHNle2lmKGUpcmV0dXJuO3A9ZC5lbnRlcixmPSJlbnRlciJ9fWlmKHA9bXQocCxlLml0ZW0sbikscD1FLm9iaihwKT9rdChwKTp7dG86cH0sIXAuY29uZmlnKXtjb25zdCB0PXV8fEEuY29uZmlnO3AuY29uZmlnPW10KHQsZS5pdGVtLG4sZil9eSs9cjtjb25zdCB2PXsuLi5BLGRlbGF5Om0reSxyZWY6YyxpbW1lZGlhdGU6ZC5pbW1lZGlhdGUscmVzZXQ6ITEsLi4ucH07aWYoImVudGVyIj09ZiYmRS51bmQodi5mcm9tKSl7Y29uc3QgYT1pP2koKTp0LG89RS51bmQoYS5pbml0aWFsKXx8Zz9hLmZyb206YS5pbml0aWFsO3YuZnJvbT1tdChvLGUuaXRlbSxuKX1jb25zdHtvblJlc29sdmU6eH09djt2Lm9uUmVzb2x2ZT1lPT57bXQoeCxlKTtjb25zdCB0PWguY3VycmVudCxuPXQuZmluZChlPT5lLmtleT09PWEpO2lmKG4mJighZS5jYW5jZWxsZWR8fCJ1cGRhdGUiPT1uLnBoYXNlKSYmbi5jdHJsLmlkbGUpe2NvbnN0IGU9dC5ldmVyeShlPT5lLmN0cmwuaWRsZSk7aWYoImxlYXZlIj09bi5waGFzZSl7Y29uc3QgdD1tdChzLG4uaXRlbSk7aWYoITEhPT10KXtjb25zdCBpPSEwPT09dD8wOnQ7aWYobi5leHBpcmVkPSEwLCFlJiZpPjApcmV0dXJuIHZvaWQoaTw9MjE0NzQ4MzY0NyYmKG4uZXhwaXJhdGlvbklkPXNldFRpbWVvdXQoayxpKSkpfX1lJiZ0LnNvbWUoZT0+ZS5leHBpcmVkKSYmKFMuY3VycmVudC5kZWxldGUobiksbCYmKFkuY3VycmVudD0hMCksaygpKX19O2NvbnN0IHc9Zm4oZS5jdHJsLHYpOyJsZWF2ZSI9PT1mJiZsP1MuY3VycmVudC5zZXQoZSx7cGhhc2U6ZixzcHJpbmdzOncscGF5bG9hZDp2fSk6Qy5zZXQoZSx7cGhhc2U6ZixzcHJpbmdzOncscGF5bG9hZDp2fSl9KTtjb25zdCBGPSgwLHcudXNlQ29udGV4dCkoeW4pLEk9UWUoRiksXz1GIT09SSYmQ3QoRik7JGUoKCk9PntfJiZEKG0sZT0+e2UuY3RybC5zdGFydCh7ZGVmYXVsdDpGfSl9KX0sW0ZdKSxEKEMsKGUsdCk9PntpZihTLmN1cnJlbnQuc2l6ZSl7Y29uc3QgZT1tLmZpbmRJbmRleChlPT5lLmtleT09PXQua2V5KTttLnNwbGljZShlLDEpfX0pLCRlKCgpPT57RChTLmN1cnJlbnQuc2l6ZT9TLmN1cnJlbnQ6QywoZSx0KT0+e2xldHtwaGFzZTpuLHBheWxvYWQ6aX09ZTtjb25zdHtjdHJsOmF9PXQ7dC5waGFzZT1uLHA/LmFkZChhKSxfJiYiZW50ZXIiPT1uJiZhLnN0YXJ0KHtkZWZhdWx0OkZ9KSxpJiYoRHQoYSxpLnJlZiksIWEucmVmJiYhcHx8WS5jdXJyZW50PyhhLnN0YXJ0KGkpLFkuY3VycmVudCYmKFkuY3VycmVudD0hMSkpOmEudXBkYXRlKGkpKX0pfSxhP3ZvaWQgMDpuKTtjb25zdCBNPWU9PncuY3JlYXRlRWxlbWVudCh3LkZyYWdtZW50LG51bGwsbS5tYXAoKHQsbik9Pntjb25zdHtzcHJpbmdzOml9PUMuZ2V0KHQpfHx0LmN0cmwsYT1lKHsuLi5pfSx0Lml0ZW0sdCxuKTtyZXR1cm4gYSYmYS50eXBlP3cuY3JlYXRlRWxlbWVudChhLnR5cGUsey4uLmEucHJvcHMsa2V5OkUuc3RyKHQua2V5KXx8RS5udW0odC5rZXkpP3Qua2V5OnQuY3RybC5pZCxyZWY6YS5yZWZ9KTphfSkpO3JldHVybiBwP1tNLHBdOk19dmFyIFluPTE7dmFyIFRuPWNsYXNzIGV4dGVuZHMgVnR7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMuc291cmNlPWUsdGhpcy5pZGxlPSEwLHRoaXMuX2FjdGl2ZT1uZXcgU2V0LHRoaXMuY2FsYz1wZSguLi50KTtjb25zdCBuPXRoaXMuX2dldCgpLGk9ZHQobik7ZXQodGhpcyxpLmNyZWF0ZShuKSl9YWR2YW5jZShlKXtjb25zdCB0PXRoaXMuX2dldCgpO1ModCx0aGlzLmdldCgpKXx8KEplKHRoaXMpLnNldFZhbHVlKHQpLHRoaXMuX29uQ2hhbmdlKHQsdGhpcy5pZGxlKSksIXRoaXMuaWRsZSYmSW4odGhpcy5fYWN0aXZlKSYmX24odGhpcyl9X2dldCgpe2NvbnN0IGU9RS5hcnIodGhpcy5zb3VyY2UpP3RoaXMuc291cmNlLm1hcChBZSk6VChBZSh0aGlzLnNvdXJjZSkpO3JldHVybiB0aGlzLmNhbGMoLi4uZSl9X3N0YXJ0KCl7dGhpcy5pZGxlJiYhSW4odGhpcy5fYWN0aXZlKSYmKHRoaXMuaWRsZT0hMSxEKHR0KHRoaXMpLGU9PntlLmRvbmU9ITF9KSxBLnNraXBBbmltYXRpb24/KGEuYmF0Y2hlZFVwZGF0ZXMoKCk9PnRoaXMuYWR2YW5jZSgpKSxfbih0aGlzKSk6SC5zdGFydCh0aGlzKSl9X2F0dGFjaCgpe2xldCBlPTE7RChUKHRoaXMuc291cmNlKSx0PT57a2UodCkmJlllKHQsdGhpcyksSHQodCkmJih0LmlkbGV8fHRoaXMuX2FjdGl2ZS5hZGQodCksZT1NYXRoLm1heChlLHQucHJpb3JpdHkrMSkpfSksdGhpcy5wcmlvcml0eT1lLHRoaXMuX3N0YXJ0KCl9X2RldGFjaCgpe0QoVCh0aGlzLnNvdXJjZSksZT0+e2tlKGUpJiZUZShlLHRoaXMpfSksdGhpcy5fYWN0aXZlLmNsZWFyKCksX24odGhpcyl9ZXZlbnRPYnNlcnZlZChlKXsiY2hhbmdlIj09ZS50eXBlP2UuaWRsZT90aGlzLmFkdmFuY2UoKToodGhpcy5fYWN0aXZlLmFkZChlLnBhcmVudCksdGhpcy5fc3RhcnQoKSk6ImlkbGUiPT1lLnR5cGU/dGhpcy5fYWN0aXZlLmRlbGV0ZShlLnBhcmVudCk6InByaW9yaXR5Ij09ZS50eXBlJiYodGhpcy5wcmlvcml0eT1UKHRoaXMuc291cmNlKS5yZWR1Y2UoKGUsdCk9Pk1hdGgubWF4KGUsKEh0KHQpP3QucHJpb3JpdHk6MCkrMSksMCkpfX07ZnVuY3Rpb24gRm4oZSl7cmV0dXJuITEhPT1lLmlkbGV9ZnVuY3Rpb24gSW4oZSl7cmV0dXJuIWUuc2l6ZXx8QXJyYXkuZnJvbShlKS5ldmVyeShGbil9ZnVuY3Rpb24gX24oZSl7ZS5pZGxlfHwoZS5pZGxlPSEwLEQodHQoZSksZT0+e2UuZG9uZT0hMH0pLEVlKGUse3R5cGU6ImlkbGUiLHBhcmVudDplfSkpfXZhciBNbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0PjE/dC0xOjApLGk9MTtpPHQ7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIG5ldyBUbihlLG4pfTtBLmFzc2lnbih7Y3JlYXRlU3RyaW5nSW50ZXJwb2xhdG9yOkxlLHRvOihlLHQpPT5uZXcgVG4oZSx0KX0pO0guYWR2YW5jZTt2YXIgTm49big5NjQ1KSxPbj0vXi0tLztmdW5jdGlvbiBSbihlLHQpe3JldHVybiBudWxsPT10fHwiYm9vbGVhbiI9PXR5cGVvZiB0fHwiIj09PXQ/IiI6Im51bWJlciIhPXR5cGVvZiB0fHwwPT09dHx8T24udGVzdChlKXx8UG4uaGFzT3duUHJvcGVydHkoZSkmJlBuW2VdPygiIit0KS50cmltKCk6dCsicHgifXZhciBqbj17fTt2YXIgUG49e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlckltYWdlU2xpY2U6ITAsYm9yZGVySW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDohMCxib3hPcmRpbmFsR3JvdXA6ITAsY29sdW1uQ291bnQ6ITAsY29sdW1uczohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFydDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblNwYW46ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LHpuPVsiV2Via2l0IiwiTXMiLCJNb3oiLCJPIl07UG49T2JqZWN0LmtleXMoUG4pLnJlZHVjZSgoZSx0KT0+KHpuLmZvckVhY2gobj0+ZVsoKGUsdCk9PmUrdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnN1YnN0cmluZygxKSkobix0KV09ZVt0XSksZSksUG4pO3ZhciBMbj0vXihtYXRyaXh8dHJhbnNsYXRlfHNjYWxlfHJvdGF0ZXxza2V3KS8sVW49L14odHJhbnNsYXRlKS8sQm49L14ocm90YXRlfHNrZXcpLyxIbj0oZSx0KT0+RS5udW0oZSkmJjAhPT1lP2UrdDplLHFuPShlLHQpPT5FLmFycihlKT9lLmV2ZXJ5KGU9PnFuKGUsdCkpOkUubnVtKGUpP2U9PT10OnBhcnNlRmxvYXQoZSk9PT10LFZuPWNsYXNzIGV4dGVuZHMgcnR7Y29uc3RydWN0b3IoZSl7bGV0e3g6dCx5Om4sejppLC4uLmF9PWU7Y29uc3Qgbz1bXSxyPVtdOyh0fHxufHxpKSYmKG8ucHVzaChbdHx8MCxufHwwLGl8fDBdKSxyLnB1c2goZT0+W2B0cmFuc2xhdGUzZCgke2UubWFwKGU9PkhuKGUsInB4IikpLmpvaW4oIiwiKX0pYCxxbihlLDApXSkpLFkoYSwoZSx0KT0+e2lmKCJ0cmFuc2Zvcm0iPT09dClvLnB1c2goW2V8fCIiXSksci5wdXNoKGU9PltlLCIiPT09ZV0pO2Vsc2UgaWYoTG4udGVzdCh0KSl7aWYoZGVsZXRlIGFbdF0sRS51bmQoZSkpcmV0dXJuO2NvbnN0IG49VW4udGVzdCh0KT8icHgiOkJuLnRlc3QodCk/ImRlZyI6IiI7by5wdXNoKFQoZSkpLHIucHVzaCgicm90YXRlM2QiPT09dD9lPT57bGV0W3QsaSxhLG9dPWU7cmV0dXJuW2Byb3RhdGUzZCgke3R9LCR7aX0sJHthfSwke0huKG8sbil9KWAscW4obywwKV19OmU9PltgJHt0fSgke2UubWFwKGU9PkhuKGUsbikpLmpvaW4oIiwiKX0pYCxxbihlLHQuc3RhcnRzV2l0aCgic2NhbGUiKT8xOjApXSl9fSksby5sZW5ndGgmJihhLnRyYW5zZm9ybT1uZXcgJG4obyxyKSksc3VwZXIoYSl9fSwkbj1jbGFzcyBleHRlbmRzIFNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLmlucHV0cz1lLHRoaXMudHJhbnNmb3Jtcz10LHRoaXMuX3ZhbHVlPW51bGx9Z2V0KCl7cmV0dXJuIHRoaXMuX3ZhbHVlfHwodGhpcy5fdmFsdWU9dGhpcy5fZ2V0KCkpfV9nZXQoKXtsZXQgZT0iIix0PSEwO3JldHVybiBEKHRoaXMuaW5wdXRzLChuLGkpPT57Y29uc3QgYT1BZShuWzBdKSxbbyxyXT10aGlzLnRyYW5zZm9ybXNbaV0oRS5hcnIoYSk/YTpuLm1hcChBZSkpO2UrPSIgIitvLHQ9dCYmcn0pLHQ/Im5vbmUiOmV9b2JzZXJ2ZXJBZGRlZChlKXsxPT1lJiZEKHRoaXMuaW5wdXRzLGU9PkQoZSxlPT5rZShlKSYmWWUoZSx0aGlzKSkpfW9ic2VydmVyUmVtb3ZlZChlKXswPT1lJiZEKHRoaXMuaW5wdXRzLGU9PkQoZSxlPT5rZShlKSYmVGUoZSx0aGlzKSkpfWV2ZW50T2JzZXJ2ZWQoZSl7ImNoYW5nZSI9PWUudHlwZSYmKHRoaXMuX3ZhbHVlPW51bGwpLEVlKHRoaXMsZSl9fTtBLmFzc2lnbih7YmF0Y2hlZFVwZGF0ZXM6Tm4udW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMsY3JlYXRlU3RyaW5nSW50ZXJwb2xhdG9yOkxlLGNvbG9yczp7dHJhbnNwYXJlbnQ6MCxhbGljZWJsdWU6NDA0Mjg1MDMwMyxhbnRpcXVld2hpdGU6NDIwOTc2MDI1NSxhcXVhOjE2Nzc3MjE1LGFxdWFtYXJpbmU6MjE0NzQ3MjYzOSxhenVyZTo0MDQzMzA5MDU1LGJlaWdlOjQxMjY1MzA4MTUsYmlzcXVlOjQyOTMxODI3MTksYmxhY2s6MjU1LGJsYW5jaGVkYWxtb25kOjQyOTM2NDM3NzUsYmx1ZTo2NTUzNSxibHVldmlvbGV0OjIzMTgxMzE5NjcsYnJvd246Mjc3MTAwNDE1OSxidXJseXdvb2Q6MzczNjYzNTM5MSxidXJudHNpZW5uYTozOTM0MTUwMTQzLGNhZGV0Ymx1ZToxNjA0MjMxNDIzLGNoYXJ0cmV1c2U6MjE0NzQxODM2NyxjaG9jb2xhdGU6MzUzMDEwNDU3NSxjb3JhbDo0Mjg2NTMzODg3LGNvcm5mbG93ZXJibHVlOjE2ODc1NDczOTEsY29ybnNpbGs6NDI5NDQ5OTU4Myxjcmltc29uOjM2OTIzMTM4NTUsY3lhbjoxNjc3NzIxNSxkYXJrYmx1ZTozNTgzOSxkYXJrY3lhbjo5MTQ1MzQzLGRhcmtnb2xkZW5yb2Q6MzA5NTc5MjYzOSxkYXJrZ3JheToyODQ2NDY4NjA3LGRhcmtncmVlbjo2NTUzODU1LGRhcmtncmV5OjI4NDY0Njg2MDcsZGFya2toYWtpOjMxODI5MTQ1NTksZGFya21hZ2VudGE6MjMzMjA2ODg2MyxkYXJrb2xpdmVncmVlbjoxNDMzMDg3OTk5LGRhcmtvcmFuZ2U6NDI4NzM2NTM3NSxkYXJrb3JjaGlkOjI1NzAyNDMzMjcsZGFya3JlZDoyMzMyMDMzMjc5LGRhcmtzYWxtb246MzkxODk1MzIxNSxkYXJrc2VhZ3JlZW46MjQxMTQ5OTUxOSxkYXJrc2xhdGVibHVlOjEyMTE5OTMwODcsZGFya3NsYXRlZ3JheTo3OTM3MjY5NzUsZGFya3NsYXRlZ3JleTo3OTM3MjY5NzUsZGFya3R1cnF1b2lzZToxMzU1NDE3NSxkYXJrdmlvbGV0OjI0ODMwODIyMzksZGVlcHBpbms6NDI3OTUzODY4NyxkZWVwc2t5Ymx1ZToxMjU4MjkxMSxkaW1ncmF5OjE3Njg1MTYwOTUsZGltZ3JleToxNzY4NTE2MDk1LGRvZGdlcmJsdWU6NTEyODE5MTk5LGZpcmVicmljazoyOTg4NTgxNjMxLGZsb3JhbHdoaXRlOjQyOTQ2MzU3NzUsZm9yZXN0Z3JlZW46NTc5NTQzODA3LGZ1Y2hzaWE6NDI3ODI1NTYxNSxnYWluc2Jvcm86MzcwNTQ2MjAxNSxnaG9zdHdoaXRlOjQxNzcwNjgwMzEsZ29sZDo0MjkyMjgwNTc1LGdvbGRlbnJvZDozNjY4MjU0OTc1LGdyYXk6MjE1NTkwNTI3OSxncmVlbjo4Mzg4ODYzLGdyZWVueWVsbG93OjI5MTkxODIzMzUsZ3JleToyMTU1OTA1Mjc5LGhvbmV5ZGV3OjQwNDMzMDUyMTUsaG90cGluazo0Mjg1MTE3Njk1LGluZGlhbnJlZDozNDQ1MzgyMzk5LGluZGlnbzoxMjU4MzI0NzM1LGl2b3J5OjQyOTQ5NjM0NTUsa2hha2k6NDA0MTY0MTIxNSxsYXZlbmRlcjozODczODk3MjE1LGxhdmVuZGVyYmx1c2g6NDI5Mzk4MTY5NSxsYXduZ3JlZW46MjA5Njg5MDExMSxsZW1vbmNoaWZmb246NDI5NDYyNjgxNSxsaWdodGJsdWU6MjkxNjY3MzI3OSxsaWdodGNvcmFsOjQwMzQ5NTM0NzEsbGlnaHRjeWFuOjM3NzQ4NzM1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6NDIxMDc0MjAxNSxsaWdodGdyYXk6MzU1Mzg3NDk0MyxsaWdodGdyZWVuOjI0MzE1NTM3OTEsbGlnaHRncmV5OjM1NTM4NzQ5NDMsbGlnaHRwaW5rOjQyOTAxNjcyOTUsbGlnaHRzYWxtb246NDI4ODcwNzMyNyxsaWdodHNlYWdyZWVuOjU0ODU4MDA5NSxsaWdodHNreWJsdWU6MjI3ODQ4ODgzMSxsaWdodHNsYXRlZ3JheToyMDA1NDQxMDIzLGxpZ2h0c2xhdGVncmV5OjIwMDU0NDEwMjMsbGlnaHRzdGVlbGJsdWU6Mjk2NTY5MjE1OSxsaWdodHllbGxvdzo0Mjk0OTU5MzU5LGxpbWU6MTY3MTE5MzUsbGltZWdyZWVuOjg1MjMwODczNSxsaW5lbjo0MjEwMDkxNzc1LG1hZ2VudGE6NDI3ODI1NTYxNSxtYXJvb246MjE0NzQ4MzkwMyxtZWRpdW1hcXVhbWFyaW5lOjE3MjQ3NTQ2ODcsbWVkaXVtYmx1ZTo1MjczNSxtZWRpdW1vcmNoaWQ6MzEyNjE4NzAwNyxtZWRpdW1wdXJwbGU6MjQ3MzY0NzEwMyxtZWRpdW1zZWFncmVlbjoxMDE4MzkzMDg3LG1lZGl1bXNsYXRlYmx1ZToyMDcwNDc0NDk1LG1lZGl1bXNwcmluZ2dyZWVuOjE2NDIzNjc5LG1lZGl1bXR1cnF1b2lzZToxMjIxNzA5MDU1LG1lZGl1bXZpb2xldHJlZDozMzQwMDc2NTQzLG1pZG5pZ2h0Ymx1ZTo0MjEwOTc3MjcsbWludGNyZWFtOjQxMjcxOTM4NTUsbWlzdHlyb3NlOjQyOTMxOTAxNDMsbW9jY2FzaW46NDI5MzE3ODg3OSxuYXZham93aGl0ZTo0MjkyNzgzNjE1LG5hdnk6MzMwMjMsb2xkbGFjZTo0MjYwNzUxMTAzLG9saXZlOjIxNTU4NzI1MTEsb2xpdmVkcmFiOjE4MDQ0Nzc0Mzksb3JhbmdlOjQyODkwMDM3NzUsb3JhbmdlcmVkOjQyODI3MTIzMTksb3JjaGlkOjM2NjQ4MjgxNTkscGFsZWdvbGRlbnJvZDo0MDA4MjI1NTM1LHBhbGVncmVlbjoyNTY2NjI1NTM1LHBhbGV0dXJxdW9pc2U6Mjk1MTY3MTU1MSxwYWxldmlvbGV0cmVkOjM2ODE1ODgyMjMscGFwYXlhd2hpcDo0MjkzOTA3OTY3LHBlYWNocHVmZjo0MjkyNTI0NTQzLHBlcnU6MzQ0ODA2MTk1MSxwaW5rOjQyOTA4MjUyMTUscGx1bTozNzE4MzA3MzI3LHBvd2RlcmJsdWU6Mjk2NzUyOTIxNSxwdXJwbGU6MjE0NzUxNjY3MSxyZWJlY2NhcHVycGxlOjE3MTQ2NTc3OTEscmVkOjQyNzgxOTAzMzUscm9zeWJyb3duOjMxNjM1MjUxMTkscm95YWxibHVlOjEwOTc0NTgxNzUsc2FkZGxlYnJvd246MjMzNjU2MDEyNyxzYWxtb246NDIwMjcyMjA0NyxzYW5keWJyb3duOjQxMDQ0MTM0Mzksc2VhZ3JlZW46NzgwODgzOTY3LHNlYXNoZWxsOjQyOTQzMDc1ODMsc2llbm5hOjI2ODk3NDAyODcsc2lsdmVyOjMyMzM4NTc3OTEsc2t5Ymx1ZToyMjc4NDg0OTkxLHNsYXRlYmx1ZToxNzg0MzM1ODcxLHNsYXRlZ3JheToxODg3NDczOTE5LHNsYXRlZ3JleToxODg3NDczOTE5LHNub3c6NDI5NDYzODMzNSxzcHJpbmdncmVlbjoxNjc0NDQ0NyxzdGVlbGJsdWU6MTE4Mjk3MTEzNSx0YW46MzUzNTA0NzkzNSx0ZWFsOjg0MjE2MzEsdGhpc3RsZTozNjM2NDUxNTgzLHRvbWF0bzo0Mjg0Njk2NTc1LHR1cnF1b2lzZToxMDg4NDc1MzkxLHZpb2xldDo0MDAxNTU4MjcxLHdoZWF0OjQxMjUwMTI5OTEsd2hpdGU6NDI5NDk2NzI5NSx3aGl0ZXNtb2tlOjQxMjY1MzcyMTUseWVsbG93OjQyOTQ5MDIwMTUseWVsbG93Z3JlZW46MjU5NzEzOTE5OX19KTt2YXIgV249ZnVuY3Rpb24oZSl7bGV0e2FwcGx5QW5pbWF0ZWRWYWx1ZXM6dD0oKT0+ITEsY3JlYXRlQW5pbWF0ZWRTdHlsZTpuPWU9Pm5ldyBydChlKSxnZXRDb21wb25lbnRQcm9wczppPWU9PmV9PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtjb25zdCBhPXthcHBseUFuaW1hdGVkVmFsdWVzOnQsY3JlYXRlQW5pbWF0ZWRTdHlsZTpuLGdldENvbXBvbmVudFByb3BzOml9LG89ZT0+e2NvbnN0IHQ9ZnQoZSl8fCJBbm9ueW1vdXMiO3JldHVybihlPUUuc3RyKGUpP29bZV18fChvW2VdPWN0KGUsYSkpOmVbcHRdfHwoZVtwdF09Y3QoZSxhKSkpLmRpc3BsYXlOYW1lPWBBbmltYXRlZCgke3R9KWAsZX07cmV0dXJuIFkoZSwodCxuKT0+e0UuYXJyKGUpJiYobj1mdCh0KSksb1tuXT1vKHQpfSkse2FuaW1hdGVkOm99fShbImEiLCJhYmJyIiwiYWRkcmVzcyIsImFyZWEiLCJhcnRpY2xlIiwiYXNpZGUiLCJhdWRpbyIsImIiLCJiYXNlIiwiYmRpIiwiYmRvIiwiYmlnIiwiYmxvY2txdW90ZSIsImJvZHkiLCJiciIsImJ1dHRvbiIsImNhbnZhcyIsImNhcHRpb24iLCJjaXRlIiwiY29kZSIsImNvbCIsImNvbGdyb3VwIiwiZGF0YSIsImRhdGFsaXN0IiwiZGQiLCJkZWwiLCJkZXRhaWxzIiwiZGZuIiwiZGlhbG9nIiwiZGl2IiwiZGwiLCJkdCIsImVtIiwiZW1iZWQiLCJmaWVsZHNldCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJmb290ZXIiLCJmb3JtIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhlYWRlciIsImhncm91cCIsImhyIiwiaHRtbCIsImkiLCJpZnJhbWUiLCJpbWciLCJpbnB1dCIsImlucyIsImtiZCIsImtleWdlbiIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWFpbiIsIm1hcCIsIm1hcmsiLCJtZW51IiwibWVudWl0ZW0iLCJtZXRhIiwibWV0ZXIiLCJuYXYiLCJub3NjcmlwdCIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJvdXRwdXQiLCJwIiwicGFyYW0iLCJwaWN0dXJlIiwicHJlIiwicHJvZ3Jlc3MiLCJxIiwicnAiLCJydCIsInJ1YnkiLCJzIiwic2FtcCIsInNjcmlwdCIsInNlY3Rpb24iLCJzZWxlY3QiLCJzbWFsbCIsInNvdXJjZSIsInNwYW4iLCJzdHJvbmciLCJzdHlsZSIsInN1YiIsInN1bW1hcnkiLCJzdXAiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0aXRsZSIsInRyIiwidHJhY2siLCJ1IiwidWwiLCJ2YXIiLCJ2aWRlbyIsIndiciIsImNpcmNsZSIsImNsaXBQYXRoIiwiZGVmcyIsImVsbGlwc2UiLCJmb3JlaWduT2JqZWN0IiwiZyIsImltYWdlIiwibGluZSIsImxpbmVhckdyYWRpZW50IiwibWFzayIsInBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsR3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN2ZyIsInRleHQiLCJ0c3BhbiJdLHthcHBseUFuaW1hdGVkVmFsdWVzOmZ1bmN0aW9uKGUsdCl7aWYoIWUubm9kZVR5cGV8fCFlLnNldEF0dHJpYnV0ZSlyZXR1cm4hMTtjb25zdCBuPSJmaWx0ZXIiPT09ZS5ub2RlTmFtZXx8ZS5wYXJlbnROb2RlJiYiZmlsdGVyIj09PWUucGFyZW50Tm9kZS5ub2RlTmFtZSx7Y2xhc3NOYW1lOmksc3R5bGU6YSxjaGlsZHJlbjpvLHNjcm9sbFRvcDpyLHNjcm9sbExlZnQ6cyx2aWV3Qm94OmwsLi4uZH09dCxjPU9iamVjdC52YWx1ZXMoZCksdT1PYmplY3Qua2V5cyhkKS5tYXAodD0+bnx8ZS5oYXNBdHRyaWJ1dGUodCk/dDpqblt0XXx8KGpuW3RdPXQucmVwbGFjZSgvKFtBLVpdKS9nLGU9PiItIitlLnRvTG93ZXJDYXNlKCkpKSk7dm9pZCAwIT09byYmKGUudGV4dENvbnRlbnQ9byk7Zm9yKGNvbnN0IHQgaW4gYSlpZihhLmhhc093blByb3BlcnR5KHQpKXtjb25zdCBuPVJuKHQsYVt0XSk7T24udGVzdCh0KT9lLnN0eWxlLnNldFByb3BlcnR5KHQsbik6ZS5zdHlsZVt0XT1ufXUuZm9yRWFjaCgodCxuKT0+e2Uuc2V0QXR0cmlidXRlKHQsY1tuXSl9KSx2b2lkIDAhPT1pJiYoZS5jbGFzc05hbWU9aSksdm9pZCAwIT09ciYmKGUuc2Nyb2xsVG9wPXIpLHZvaWQgMCE9PXMmJihlLnNjcm9sbExlZnQ9cyksdm9pZCAwIT09bCYmZS5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLGwpfSxjcmVhdGVBbmltYXRlZFN0eWxlOmU9Pm5ldyBWbihlKSxnZXRDb21wb25lbnRQcm9wczplPT57bGV0e3Njcm9sbFRvcDp0LHNjcm9sbExlZnQ6biwuLi5pfT1lO3JldHVybiBpfX0pLEtuPVduLmFuaW1hdGVkfSwxNDY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7VjpmdW5jdGlvbigpe3JldHVybiBhfSxiOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7Y29uc3QgaT17bmFtZToiMTFjNmpuaSIsc3R5bGVzOiJwYWRkaW5nOjhweCAxMnB4O2JhY2tncm91bmQ6cmdiYSgyMjAsIDIzMywgMjU1LCAwLjQwKTtjb2xvcjojNjQ3NDkxO3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MTRweDtib3JkZXItcmFkaXVzOjRweCAxMnB4IDEycHggMTJweDtnYXA6MTJweDtzdmd7ZmlsbDojMDU2NkZGO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7ZmxleC1zaHJpbms6MDt9In0sYT17bmFtZToicDlqZXI0IixzdHlsZXM6ImNvbG9yOiMwNTY2RkY7bGluZS1oZWlnaHQ6MjBweDttYXJnaW4tdG9wOjJweDsmOmZvY3Vze291dGxpbmU6bm9uZTt9In19LDIzMjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkZyYW1lPXZvaWQgMDt2YXIgaT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciBpIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4saSkmJihlW2ldPW5baV0pfXJldHVybiBlfSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaS5rZXksaSl9fXJldHVybiBmdW5jdGlvbih0LG4saSl7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksaSYmZSh0LGkpLHR9fSgpLG89bigzNDgwKSxyPXUobykscz11KG4oOTY0NSkpLGw9dShuKDIyMDApKSxkPW4oNTQwOSksYz11KG4oNzM1OSkpO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBwPXQuRnJhbWU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4peyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO3ZhciBpPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcyxlLG4pKTtyZXR1cm4gaS5zZXRSZWY9ZnVuY3Rpb24oZSl7aS5ub2RlUmVmLmN1cnJlbnQ9ZSxlJiYoZS5zcmNkb2N8fGkuaGFuZGxlTG9hZCgpKTt2YXIgdD1pLnByb3BzLmZvcndhcmRlZFJlZjsiZnVuY3Rpb24iPT10eXBlb2YgdD90KGUpOnQmJih0LmN1cnJlbnQ9ZSl9LGkuaGFuZGxlTG9hZD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoaS5sb2FkQ2hlY2spLGkuc3RhdGUuaWZyYW1lTG9hZGVkfHxpLnNldFN0YXRlKHtpZnJhbWVMb2FkZWQ6ITB9KX0saS5sb2FkQ2hlY2s9ZnVuY3Rpb24oKXtyZXR1cm4gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtpLmhhbmRsZUxvYWQoKX0sNTAwKX0saS5faXNNb3VudGVkPSExLGkubm9kZVJlZj1yLmRlZmF1bHQuY3JlYXRlUmVmKCksaS5zdGF0ZT17aWZyYW1lTG9hZGVkOiExfSxpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksYSh0LFt7a2V5OiJjb21wb25lbnREaWRNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9pc01vdW50ZWQ9ITAsdGhpcy5nZXREb2MoKSYmdGhpcy5ub2RlUmVmLmN1cnJlbnQuY29udGVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIix0aGlzLmhhbmRsZUxvYWQpfX0se2tleToiY29tcG9uZW50V2lsbFVubW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5faXNNb3VudGVkPSExLHRoaXMubm9kZVJlZi5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHRoaXMuaGFuZGxlTG9hZCl9fSx7a2V5OiJnZXREb2MiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZVJlZi5jdXJyZW50P3RoaXMubm9kZVJlZi5jdXJyZW50LmNvbnRlbnREb2N1bWVudDpudWxsfX0se2tleToiZ2V0TW91bnRUYXJnZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXREb2MoKTtpZih0aGlzLnByb3BzLm1vdW50VGFyZ2V0KXJldHVybiBlLnF1ZXJ5U2VsZWN0b3IodGhpcy5wcm9wcy5tb3VudFRhcmdldCk7aWYoMD09PWU/LmJvZHk/LmNoaWxkcmVuPy5sZW5ndGgpe3RoaXMucHJvcHMubm9TcmNEb2NCb2R5UHJvcHMmJk9iamVjdC5lbnRyaWVzKHRoaXMucHJvcHMubm9TcmNEb2NCb2R5UHJvcHMpLmZvckVhY2godD0+e2xldFtuLGldPXQ7ZS5ib2R5LnNldEF0dHJpYnV0ZShuLGkpfSksdGhpcy5wcm9wcy5ub1NyY0RvY0hlYWRUYWdzJiYoZS5oZWFkLmlubmVySFRNTD10aGlzLnByb3BzLm5vU3JjRG9jSGVhZFRhZ3MpO3ZhciB0PWUuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZS5ib2R5LmFwcGVuZENoaWxkKHQpfXJldHVybiBlLmJvZHkuY2hpbGRyZW5bMF19fSx7a2V5OiJyZW5kZXJGcmFtZUNvbnRlbnRzIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLl9pc01vdW50ZWQpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5nZXREb2MoKTtpZighZSlyZXR1cm4gbnVsbDt2YXIgdD10aGlzLnByb3BzLmNvbnRlbnREaWRNb3VudCxuPXRoaXMucHJvcHMuY29udGVudERpZFVwZGF0ZSxpPWUuZGVmYXVsdFZpZXd8fGUucGFyZW50VmlldyxhPXIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGMuZGVmYXVsdCx7Y29udGVudERpZE1vdW50OnQsY29udGVudERpZFVwZGF0ZTpufSxyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkLkZyYW1lQ29udGV4dFByb3ZpZGVyLHt2YWx1ZTp7ZG9jdW1lbnQ6ZSx3aW5kb3c6aX19LHIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImZyYW1lLWNvbnRlbnQifSx0aGlzLnByb3BzLmNoaWxkcmVuKSkpLG89dGhpcy5nZXRNb3VudFRhcmdldCgpO3JldHVybiBvP1tzLmRlZmF1bHQuY3JlYXRlUG9ydGFsKHRoaXMucHJvcHMuaGVhZCx0aGlzLmdldERvYygpLmhlYWQpLHMuZGVmYXVsdC5jcmVhdGVQb3J0YWwoYSxvKV06bnVsbH19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1pKHt9LHRoaXMucHJvcHMse3NyY0RvYzp0aGlzLnByb3BzLmluaXRpYWxDb250ZW50LGNoaWxkcmVuOnZvaWQgMH0pO3JldHVybiBkZWxldGUgZS5oZWFkLGRlbGV0ZSBlLmluaXRpYWxDb250ZW50LGRlbGV0ZSBlLm1vdW50VGFyZ2V0LGRlbGV0ZSBlLmNvbnRlbnREaWRNb3VudCxkZWxldGUgZS5jb250ZW50RGlkVXBkYXRlLGRlbGV0ZSBlLmZvcndhcmRlZFJlZixkZWxldGUgZS5ub1NyY0RvY0JvZHlQcm9wcyxkZWxldGUgZS5ub1NyY0RvY0hlYWRUYWdzLHIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiLGkoe30sZSx7cmVmOnRoaXMuc2V0UmVmLG9uTG9hZDp0aGlzLmhhbmRsZUxvYWR9KSx0aGlzLnN0YXRlLmlmcmFtZUxvYWRlZCYmdGhpcy5yZW5kZXJGcmFtZUNvbnRlbnRzKCkpfX1dKSx0fShvLkNvbXBvbmVudCk7cC5wcm9wVHlwZXM9e3N0eWxlOmwuZGVmYXVsdC5vYmplY3QsaGVhZDpsLmRlZmF1bHQubm9kZSxpbml0aWFsQ29udGVudDpsLmRlZmF1bHQuc3RyaW5nLG1vdW50VGFyZ2V0OmwuZGVmYXVsdC5zdHJpbmcsY29udGVudERpZE1vdW50OmwuZGVmYXVsdC5mdW5jLGNvbnRlbnREaWRVcGRhdGU6bC5kZWZhdWx0LmZ1bmMsY2hpbGRyZW46bC5kZWZhdWx0Lm9uZU9mVHlwZShbbC5kZWZhdWx0LmVsZW1lbnQsbC5kZWZhdWx0LmFycmF5T2YobC5kZWZhdWx0LmVsZW1lbnQpXSksbm9TcmNEb2NCb2R5UHJvcHM6bC5kZWZhdWx0Lm9iamVjdCxub1NyY0RvY0hlYWRUYWdzOmwuZGVmYXVsdC5zdHJpbmd9LHAuZGVmYXVsdFByb3BzPXtzdHlsZTp7fSxoZWFkOm51bGwsY2hpbGRyZW46dm9pZCAwLG1vdW50VGFyZ2V0OnZvaWQgMCxjb250ZW50RGlkTW91bnQ6ZnVuY3Rpb24oKXt9LGNvbnRlbnREaWRVcGRhdGU6ZnVuY3Rpb24oKXt9LGluaXRpYWxDb250ZW50Oic8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+PGRpdiBjbGFzcz0iZnJhbWUtcm9vdCI+PC9kaXY+PC9ib2R5PjwvaHRtbD4nLG5vU3JjRG9jQm9keVByb3BzOnZvaWQgMCxub1NyY0RvY0hlYWRUYWdzOnZvaWQgMH0sdC5kZWZhdWx0PXIuZGVmYXVsdC5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHAsaSh7fSxlLHtmb3J3YXJkZWRSZWY6dH0pKX0pfSw2MDA6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDg3MjcpLGE9bigzMTE3KSxvPW4oOTcyOSkscj1uKDExNjkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3QmJiJzdHJpbmciPT10eXBlb2YgZXx8YShlKTt2YXIgbj1yKGUpO3JldHVybiBvKGEodm9pZCAwIT09bj9pKG4sZSk6ZSkpfX0sMTgxODpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBpLGE9big4OTY2KSxvPShpPWEpJiZpLl9fZXNNb2R1bGU/aTp7ZGVmYXVsdDppfTt2YXIgcj0tMTtmdW5jdGlvbiBzKGUsdCl7aWYoZT09PXIpcmV0dXJuIG8uZGVmYXVsdC50cmFuc2Zvcm0odCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIm5hbWUiLHt2YWx1ZToic3R5bGlzUlRMUGx1Z2luIn0pLHQuQXk9c30sMjIwMDpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjAwMikoKX0sMjQyMTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oMzkzMiksYT1uKDg3MjcpLG89big4MDApLHI9bigzMTE3KSxzPW4oOTcyOSksbD1uKDYwMCksZD1uKDg1MjQpLGM9bigzOTc3KSx1PW4oNzcwOSkscD1uKDE1MTApLGY9big3MzY4KSxtPSF1JiYhcCgiZmxhdE1hcCIsZnVuY3Rpb24oKXt9KSxoPSF1JiYhbSYmZigiZmxhdE1hcCIsVHlwZUVycm9yKSxnPXV8fG18fGgsYj1kKGZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQsbj10aGlzLml0ZXJhdG9yLGk9dGhpcy5tYXBwZXI7Oyl7aWYodD10aGlzLmlubmVyKXRyeXtpZighKGU9cihhKHQubmV4dCx0Lml0ZXJhdG9yKSkpLmRvbmUpcmV0dXJuIGUudmFsdWU7dGhpcy5pbm5lcj1udWxsfWNhdGNoKGUpe2MobiwidGhyb3ciLGUpfWlmKGU9cihhKHRoaXMubmV4dCxuKSksdGhpcy5kb25lPSEhZS5kb25lKXJldHVybjt0cnl7dGhpcy5pbm5lcj1sKGkoZS52YWx1ZSx0aGlzLmNvdW50ZXIrKyksITEpfWNhdGNoKGUpe2MobiwidGhyb3ciLGUpfX19KTtpKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpnfSx7ZmxhdE1hcDpmdW5jdGlvbihlKXtyKHRoaXMpO3RyeXtvKGUpfWNhdGNoKGUpe2ModGhpcywidGhyb3ciLGUpfXJldHVybiBoP2EoaCx0aGlzLGUpOm5ldyBiKHModGhpcykse21hcHBlcjplLGlubmVyOm51bGx9KX19KX0sMzY2MjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0KXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGkoZSx0KX1uLmQodCx7QTpmdW5jdGlvbigpe3JldHVybiBpfX0pfSw0MDE5OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse0tzOmZ1bmN0aW9uKCl7cmV0dXJuIGJ9LGx6OmZ1bmN0aW9uKCl7cmV0dXJuIGd9fSk7big4MzU2KSxuKDU3MTgpLG4oNTg1NSk7dmFyIGk9bigzNDgwKSxhPW4oNDA1NSksbz1uKDE2Mikscj1uLm4obykscz1uKDg5NDgpLGw9big4OTQ1KSxkPW4oNTgzKSxjPW4oMzY1MCksdT1uKDk3ODgpLHA9big4Mjg5KTtjb25zdCBmPXIoKSgpLG09KDAsaS5jcmVhdGVDb250ZXh0KSh7c3RhdGU6bnVsbCxkaXNwYXRjaDooKT0+e30saWNlQ2FuZGlkYXRlc1F1ZXVlUmVmOm51bGx9KSxoPShlLHQpPT57c3dpdGNoKHQudHlwZSl7Y2FzZSJTRVRfT1BFUkFUT1JfVklERU9fQ0FMTF9PRkZFUiI6cmV0dXJuIGU/ey4uLmUsLi4udC5wYXlsb2FkfTp0LnBheWxvYWQ7Y2FzZSJSRVNFVF9PUEVSQVRPUl9WSURFT19DQUxMX09GRkVSIjpyZXR1cm4gbnVsbDtjYXNlIlNFVF9WSURFT0NBTExfSU5TVEFOQ0VfSUQiOnJldHVybiBlP3suLi5lLGluc3RhbmNlSWQ6dC5wYXlsb2FkLmluc3RhbmNlSWR9Om51bGw7ZGVmYXVsdDpyZXR1cm4gZX19LGc9KCk9Pntjb25zdCBlPSgwLGkudXNlQ29udGV4dCkobSk7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoInVzZVZpZGVvQ2FsbE9mZmVyIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBWaWRlb0NhbGxQcm92aWRlciIpO2NvbnN0IHQ9KDAsYS53QSkoKSxuPWUuZGlzcGF0Y2gse3N0YXRlOm99PWUscj1vPy5vcGVyYXRvcklkLHM9Qm9vbGVhbihvPy5vZmZlciksbD1vPy5pbnN0YW5jZUlkPT09ZjtyZXR1cm57c3RhdGU6byxyZXNldFZpZGVvQ2FsbDooMCxpLnVzZUNhbGxiYWNrKShlPT57ciYmcyYmKGx8fGU/LmZvcmNlKSYmdCgoMCxkLkFqUCkoe29wZXJhdG9ySWQ6cixvZmZlcjpudWxsfSkpLG4oe3R5cGU6IlJFU0VUX09QRVJBVE9SX1ZJREVPX0NBTExfT0ZGRVIifSl9LFtuLHQscixzLGxdKSxpbnN0YW5jZUlkOmZ9fSxiPWU9Pntjb25zdCB0PSgwLGkudXNlQ29udGV4dCkobSk7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoInVzZVZpZGVvQ2FsbE9mZmVyIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBWaWRlb0NhbGxQcm92aWRlciIpO2NvbnN0e2ljZUNhbmRpZGF0ZXNRdWV1ZVJlZjpufT10OygwLGkudXNlRWZmZWN0KSgoKT0+bC5BLnN1YnNjcmliZSgib3BlcmF0b3JWaWRlb0NhbGxJY2VDYW5kaWRhdGVzT2ZmZXJlZCIsdD0+e3QuaWNlQ2FuZGlkYXRlcy5mb3JFYWNoKHQ9Pnt0JiZlKHQpfSl9KSxbZV0pO3JldHVybntwb3BJbml0aWFsT3BlcmF0b3JJY2VDYW5kaWRhdGVzUG9vbDooMCxpLnVzZUNhbGxiYWNrKSgoKT0+e2lmKCFuKXJldHVybltdO2NvbnN0IGU9KDAscy5tZykobi5jdXJyZW50KTtyZXR1cm4gbi5jdXJyZW50PVtdLGV9LFtuXSl9fTt0LkF5PWU9PntsZXR7Y2hpbGRyZW46dH09ZTtjb25zdFtuLG9dPSgwLGkudXNlUmVkdWNlcikoaCxudWxsKSxyPSgwLGkudXNlUmVmKShbXSkscz0oMCxhLmQ0KShjLktaKSxnPSgwLGEud0EpKCksYj1uPy5pbnN0YW5jZUlkLHY9KDAsYS5kNCkoYy5PMSk7KDAsaS51c2VFZmZlY3QpKCgpPT5sLkEuc3Vic2NyaWJlKCJvcGVyYXRvclZpZGVvQ2FsbE9mZmVyZWQiLGU9PntlPy5vZmZlcj8oInN0cmluZyI9PXR5cGVvZiBlLm9mZmVyLmluc3RhbmNlSWQmJmUub2ZmZXIuaW5zdGFuY2VJZD09PWZ8fHZvaWQgMD09PWUub2ZmZXIuaW5zdGFuY2VJZCkmJihzIT09dS5Tcy5DSEFUJiZnKCgwLGQuZzZRKSh1LlNzLkNIQVQpKSwiY29udmVyc2F0aW9ucyIhPT12JiZnKCgwLGQucTd2KSgiY29udmVyc2F0aW9ucyIpKSxvKHt0eXBlOiJTRVRfT1BFUkFUT1JfVklERU9fQ0FMTF9PRkZFUiIscGF5bG9hZDplfSkpOihvKHt0eXBlOiJSRVNFVF9PUEVSQVRPUl9WSURFT19DQUxMX09GRkVSIn0pLHIuY3VycmVudD1bXSl9KSxbcyx2LGddKSwoMCxpLnVzZUVmZmVjdCkoKCk9PmwuQS5zdWJzY3JpYmUoIm9wZXJhdG9yVmlkZW9DYWxsSWNlQ2FuZGlkYXRlc09mZmVyZWQiLGU9PntlLmljZUNhbmRpZGF0ZXMuZm9yRWFjaChlPT57ZSYmci5jdXJyZW50LnB1c2goZSl9KX0pLFtdKSwoMCxpLnVzZUVmZmVjdCkoKCk9PmwuQS5zdWJzY3JpYmUoInZpc2l0b3JWaWRlb0NhbGxPZmZlciIsZT0+e2NvbnN0IHQ9ZT8ub2ZmZXI/Lmluc3RhbmNlSWQ7dCE9PWY/byh7dHlwZToiUkVTRVRfT1BFUkFUT1JfVklERU9fQ0FMTF9PRkZFUiJ9KTpiIT09dCYmbyh7dHlwZToiU0VUX1ZJREVPQ0FMTF9JTlNUQU5DRV9JRCIscGF5bG9hZDp7aW5zdGFuY2VJZDp0fX0pfSksW2JdKTtjb25zdCB4PSgwLGkudXNlTWVtbykoKCk9Pih7c3RhdGU6bixkaXNwYXRjaDpvLGljZUNhbmRpZGF0ZXNRdWV1ZVJlZjpyfSksW25dKTtyZXR1cm4oMCxwLlkpKG0uUHJvdmlkZXIse3ZhbHVlOngsY2hpbGRyZW46dH0pfX0sNDA2MjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24ucih0KSxuLmQodCx7YWRkSW1wb3J0YW50VG9EZWZhdWx0U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHF1fSxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuIG5wfX0pO3ZhciBpPW4oNDQ2NyksYT0obig1NzE4KSxuKDU4NTUpLG4oMjAyMCksbigzNDgwKSksbz1uKDUxMjYpLHI9big0MDU1KSxzPW4oNzM2NiksbD1uKDc4ODgpLGQ9big2MTc3KSxjPW4oMTAzKSx1PW4oMTgxOCkscD1uKDk1MzUpLGY9big4OTQ4KTtjb25zdCBtPWU9PntsZXQgdD1lLnJlcGxhY2UoIiMiLCIiKTszPT09dC5sZW5ndGgmJih0PXQuc3BsaXQoIiIpLm1hcChlPT5lK2UpLmpvaW4oIiIpKTtyZXR1cm4oMjk5KnBhcnNlSW50KHQuc2xpY2UoMCwyKSwxNikrNTg3KnBhcnNlSW50KHQuc2xpY2UoMiw0KSwxNikrMTE0KnBhcnNlSW50KHQuc2xpY2UoNCw2KSwxNikpLzFlMzwxNTV9O3ZhciBoPW4oMTg0MyksZz1uKDY5MjQpLGI9bigyMzE4KSx2PW4oNzMyNikseD1uKDY1NDIpLHk9big4NDQ4KSx3PW4oMjcyNCksaz1uKDU4MyksQT1uKDYwNTgpLEM9bigzNjUwKTt2YXIgRT1uKDgxNjgpLFM9big4NTg3KSxEPW4oMzY2Mik7ZnVuY3Rpb24gWShlLHQpe2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsKDAsRC5BKShlLHQpfWZ1bmN0aW9uIFQoZSx0KXtyZXR1cm4gZS5yZXBsYWNlKG5ldyBSZWdFeHAoIihefFxccykiK3QrIig/Olxcc3wkKSIsImciKSwiJDEiKS5yZXBsYWNlKC9ccysvZywiICIpLnJlcGxhY2UoL15ccyp8XHMqJC9nLCIiKX12YXIgRj1uKDk2NDUpLEk9ITEsXz1hLmNyZWF0ZUNvbnRleHQobnVsbCksTT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zY3JvbGxUb3B9LE49InVubW91bnRlZCIsTz0iZXhpdGVkIixSPSJlbnRlcmluZyIsaj0iZW50ZXJlZCIsUD0iZXhpdGluZyIsej1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7dmFyIGk7aT1lLmNhbGwodGhpcyx0LG4pfHx0aGlzO3ZhciBhLG89biYmIW4uaXNNb3VudGluZz90LmVudGVyOnQuYXBwZWFyO3JldHVybiBpLmFwcGVhclN0YXR1cz1udWxsLHQuaW4/bz8oYT1PLGkuYXBwZWFyU3RhdHVzPVIpOmE9ajphPXQudW5tb3VudE9uRXhpdHx8dC5tb3VudE9uRW50ZXI/TjpPLGkuc3RhdGU9e3N0YXR1czphfSxpLm5leHRDYWxsYmFjaz1udWxsLGl9WSh0LGUpLHQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaW4mJnQuc3RhdHVzPT09Tj97c3RhdHVzOk99Om51bGx9O3ZhciBuPXQucHJvdG90eXBlO3JldHVybiBuLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dGhpcy51cGRhdGVTdGF0dXMoITAsdGhpcy5hcHBlYXJTdGF0dXMpfSxuLmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1udWxsO2lmKGUhPT10aGlzLnByb3BzKXt2YXIgbj10aGlzLnN0YXRlLnN0YXR1czt0aGlzLnByb3BzLmluP24hPT1SJiZuIT09aiYmKHQ9Uik6biE9PVImJm4hPT1qfHwodD1QKX10aGlzLnVwZGF0ZVN0YXR1cyghMSx0KX0sbi5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCl9LG4uZ2V0VGltZW91dHM9ZnVuY3Rpb24oKXt2YXIgZSx0LG4saT10aGlzLnByb3BzLnRpbWVvdXQ7cmV0dXJuIGU9dD1uPWksbnVsbCE9aSYmIm51bWJlciIhPXR5cGVvZiBpJiYoZT1pLmV4aXQsdD1pLmVudGVyLG49dm9pZCAwIT09aS5hcHBlYXI/aS5hcHBlYXI6dCkse2V4aXQ6ZSxlbnRlcjp0LGFwcGVhcjpufX0sbi51cGRhdGVTdGF0dXM9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT1lJiYoZT0hMSksbnVsbCE9PXQpaWYodGhpcy5jYW5jZWxOZXh0Q2FsbGJhY2soKSx0PT09Uil7aWYodGhpcy5wcm9wcy51bm1vdW50T25FeGl0fHx0aGlzLnByb3BzLm1vdW50T25FbnRlcil7dmFyIG49dGhpcy5wcm9wcy5ub2RlUmVmP3RoaXMucHJvcHMubm9kZVJlZi5jdXJyZW50OkYuZmluZERPTU5vZGUodGhpcyk7biYmTShuKX10aGlzLnBlcmZvcm1FbnRlcihlKX1lbHNlIHRoaXMucGVyZm9ybUV4aXQoKTtlbHNlIHRoaXMucHJvcHMudW5tb3VudE9uRXhpdCYmdGhpcy5zdGF0ZS5zdGF0dXM9PT1PJiZ0aGlzLnNldFN0YXRlKHtzdGF0dXM6Tn0pfSxuLnBlcmZvcm1FbnRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy5wcm9wcy5lbnRlcixpPXRoaXMuY29udGV4dD90aGlzLmNvbnRleHQuaXNNb3VudGluZzplLGE9dGhpcy5wcm9wcy5ub2RlUmVmP1tpXTpbRi5maW5kRE9NTm9kZSh0aGlzKSxpXSxvPWFbMF0scj1hWzFdLHM9dGhpcy5nZXRUaW1lb3V0cygpLGw9aT9zLmFwcGVhcjpzLmVudGVyOyFlJiYhbnx8ST90aGlzLnNhZmVTZXRTdGF0ZSh7c3RhdHVzOmp9LGZ1bmN0aW9uKCl7dC5wcm9wcy5vbkVudGVyZWQobyl9KToodGhpcy5wcm9wcy5vbkVudGVyKG8sciksdGhpcy5zYWZlU2V0U3RhdGUoe3N0YXR1czpSfSxmdW5jdGlvbigpe3QucHJvcHMub25FbnRlcmluZyhvLHIpLHQub25UcmFuc2l0aW9uRW5kKGwsZnVuY3Rpb24oKXt0LnNhZmVTZXRTdGF0ZSh7c3RhdHVzOmp9LGZ1bmN0aW9uKCl7dC5wcm9wcy5vbkVudGVyZWQobyxyKX0pfSl9KSl9LG4ucGVyZm9ybUV4aXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcy5leGl0LG49dGhpcy5nZXRUaW1lb3V0cygpLGk9dGhpcy5wcm9wcy5ub2RlUmVmP3ZvaWQgMDpGLmZpbmRET01Ob2RlKHRoaXMpO3QmJiFJPyh0aGlzLnByb3BzLm9uRXhpdChpKSx0aGlzLnNhZmVTZXRTdGF0ZSh7c3RhdHVzOlB9LGZ1bmN0aW9uKCl7ZS5wcm9wcy5vbkV4aXRpbmcoaSksZS5vblRyYW5zaXRpb25FbmQobi5leGl0LGZ1bmN0aW9uKCl7ZS5zYWZlU2V0U3RhdGUoe3N0YXR1czpPfSxmdW5jdGlvbigpe2UucHJvcHMub25FeGl0ZWQoaSl9KX0pfSkpOnRoaXMuc2FmZVNldFN0YXRlKHtzdGF0dXM6T30sZnVuY3Rpb24oKXtlLnByb3BzLm9uRXhpdGVkKGkpfSl9LG4uY2FuY2VsTmV4dENhbGxiYWNrPWZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMubmV4dENhbGxiYWNrJiYodGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsKCksdGhpcy5uZXh0Q2FsbGJhY2s9bnVsbCl9LG4uc2FmZVNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7dD10aGlzLnNldE5leHRDYWxsYmFjayh0KSx0aGlzLnNldFN0YXRlKGUsdCl9LG4uc2V0TmV4dENhbGxiYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj0hMDtyZXR1cm4gdGhpcy5uZXh0Q2FsbGJhY2s9ZnVuY3Rpb24oaSl7biYmKG49ITEsdC5uZXh0Q2FsbGJhY2s9bnVsbCxlKGkpKX0sdGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsPWZ1bmN0aW9uKCl7bj0hMX0sdGhpcy5uZXh0Q2FsbGJhY2t9LG4ub25UcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKGUsdCl7dGhpcy5zZXROZXh0Q2FsbGJhY2sodCk7dmFyIG49dGhpcy5wcm9wcy5ub2RlUmVmP3RoaXMucHJvcHMubm9kZVJlZi5jdXJyZW50OkYuZmluZERPTU5vZGUodGhpcyksaT1udWxsPT1lJiYhdGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcjtpZihuJiYhaSl7aWYodGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcil7dmFyIGE9dGhpcy5wcm9wcy5ub2RlUmVmP1t0aGlzLm5leHRDYWxsYmFja106W24sdGhpcy5uZXh0Q2FsbGJhY2tdLG89YVswXSxyPWFbMV07dGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcihvLHIpfW51bGwhPWUmJnNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssZSl9ZWxzZSBzZXRUaW1lb3V0KHRoaXMubmV4dENhbGxiYWNrLDApfSxuLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUuc3RhdHVzO2lmKGU9PT1OKXJldHVybiBudWxsO3ZhciB0PXRoaXMucHJvcHMsbj10LmNoaWxkcmVuLGk9KHQuaW4sdC5tb3VudE9uRW50ZXIsdC51bm1vdW50T25FeGl0LHQuYXBwZWFyLHQuZW50ZXIsdC5leGl0LHQudGltZW91dCx0LmFkZEVuZExpc3RlbmVyLHQub25FbnRlcix0Lm9uRW50ZXJpbmcsdC5vbkVudGVyZWQsdC5vbkV4aXQsdC5vbkV4aXRpbmcsdC5vbkV4aXRlZCx0Lm5vZGVSZWYsKDAsUy5BKSh0LFsiY2hpbGRyZW4iLCJpbiIsIm1vdW50T25FbnRlciIsInVubW91bnRPbkV4aXQiLCJhcHBlYXIiLCJlbnRlciIsImV4aXQiLCJ0aW1lb3V0IiwiYWRkRW5kTGlzdGVuZXIiLCJvbkVudGVyIiwib25FbnRlcmluZyIsIm9uRW50ZXJlZCIsIm9uRXhpdCIsIm9uRXhpdGluZyIsIm9uRXhpdGVkIiwibm9kZVJlZiJdKSk7cmV0dXJuIGEuY3JlYXRlRWxlbWVudChfLlByb3ZpZGVyLHt2YWx1ZTpudWxsfSwiZnVuY3Rpb24iPT10eXBlb2Ygbj9uKGUsaSk6YS5jbG9uZUVsZW1lbnQoYS5DaGlsZHJlbi5vbmx5KG4pLGkpKX0sdH0oYS5Db21wb25lbnQpO2Z1bmN0aW9uIEwoKXt9ei5jb250ZXh0VHlwZT1fLHoucHJvcFR5cGVzPXt9LHouZGVmYXVsdFByb3BzPXtpbjohMSxtb3VudE9uRW50ZXI6ITEsdW5tb3VudE9uRXhpdDohMSxhcHBlYXI6ITEsZW50ZXI6ITAsZXhpdDohMCxvbkVudGVyOkwsb25FbnRlcmluZzpMLG9uRW50ZXJlZDpMLG9uRXhpdDpMLG9uRXhpdGluZzpMLG9uRXhpdGVkOkx9LHouVU5NT1VOVEVEPU4sei5FWElURUQ9Tyx6LkVOVEVSSU5HPVIsei5FTlRFUkVEPWosei5FWElUSU5HPVA7dmFyIFU9eixCPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnQmJnQuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBpPXQsdm9pZCgobj1lKS5jbGFzc0xpc3Q/bi5jbGFzc0xpc3QucmVtb3ZlKGkpOiJzdHJpbmciPT10eXBlb2Ygbi5jbGFzc05hbWU/bi5jbGFzc05hbWU9VChuLmNsYXNzTmFtZSxpKTpuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLFQobi5jbGFzc05hbWUmJm4uY2xhc3NOYW1lLmJhc2VWYWx8fCIiLGkpKSk7dmFyIG4saX0pfSxIPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtmb3IodmFyIHQsbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4pLGE9MDthPG47YSsrKWlbYV09YXJndW1lbnRzW2FdO3JldHVybih0PWUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQoaSkpfHx0aGlzKS5hcHBsaWVkQ2xhc3Nlcz17YXBwZWFyOnt9LGVudGVyOnt9LGV4aXQ6e319LHQub25FbnRlcj1mdW5jdGlvbihlLG4pe3ZhciBpPXQucmVzb2x2ZUFyZ3VtZW50cyhlLG4pLGE9aVswXSxvPWlbMV07dC5yZW1vdmVDbGFzc2VzKGEsImV4aXQiKSx0LmFkZENsYXNzKGEsbz8iYXBwZWFyIjoiZW50ZXIiLCJiYXNlIiksdC5wcm9wcy5vbkVudGVyJiZ0LnByb3BzLm9uRW50ZXIoZSxuKX0sdC5vbkVudGVyaW5nPWZ1bmN0aW9uKGUsbil7dmFyIGk9dC5yZXNvbHZlQXJndW1lbnRzKGUsbiksYT1pWzBdLG89aVsxXT8iYXBwZWFyIjoiZW50ZXIiO3QuYWRkQ2xhc3MoYSxvLCJhY3RpdmUiKSx0LnByb3BzLm9uRW50ZXJpbmcmJnQucHJvcHMub25FbnRlcmluZyhlLG4pfSx0Lm9uRW50ZXJlZD1mdW5jdGlvbihlLG4pe3ZhciBpPXQucmVzb2x2ZUFyZ3VtZW50cyhlLG4pLGE9aVswXSxvPWlbMV0/ImFwcGVhciI6ImVudGVyIjt0LnJlbW92ZUNsYXNzZXMoYSxvKSx0LmFkZENsYXNzKGEsbywiZG9uZSIpLHQucHJvcHMub25FbnRlcmVkJiZ0LnByb3BzLm9uRW50ZXJlZChlLG4pfSx0Lm9uRXhpdD1mdW5jdGlvbihlKXt2YXIgbj10LnJlc29sdmVBcmd1bWVudHMoZSlbMF07dC5yZW1vdmVDbGFzc2VzKG4sImFwcGVhciIpLHQucmVtb3ZlQ2xhc3NlcyhuLCJlbnRlciIpLHQuYWRkQ2xhc3MobiwiZXhpdCIsImJhc2UiKSx0LnByb3BzLm9uRXhpdCYmdC5wcm9wcy5vbkV4aXQoZSl9LHQub25FeGl0aW5nPWZ1bmN0aW9uKGUpe3ZhciBuPXQucmVzb2x2ZUFyZ3VtZW50cyhlKVswXTt0LmFkZENsYXNzKG4sImV4aXQiLCJhY3RpdmUiKSx0LnByb3BzLm9uRXhpdGluZyYmdC5wcm9wcy5vbkV4aXRpbmcoZSl9LHQub25FeGl0ZWQ9ZnVuY3Rpb24oZSl7dmFyIG49dC5yZXNvbHZlQXJndW1lbnRzKGUpWzBdO3QucmVtb3ZlQ2xhc3NlcyhuLCJleGl0IiksdC5hZGRDbGFzcyhuLCJleGl0IiwiZG9uZSIpLHQucHJvcHMub25FeGl0ZWQmJnQucHJvcHMub25FeGl0ZWQoZSl9LHQucmVzb2x2ZUFyZ3VtZW50cz1mdW5jdGlvbihlLG4pe3JldHVybiB0LnByb3BzLm5vZGVSZWY/W3QucHJvcHMubm9kZVJlZi5jdXJyZW50LGVdOltlLG5dfSx0LmdldENsYXNzTmFtZXM9ZnVuY3Rpb24oZSl7dmFyIG49dC5wcm9wcy5jbGFzc05hbWVzLGk9InN0cmluZyI9PXR5cGVvZiBuLGE9aT8iIisoaSYmbj9uKyItIjoiIikrZTpuW2VdO3JldHVybntiYXNlQ2xhc3NOYW1lOmEsYWN0aXZlQ2xhc3NOYW1lOmk/YSsiLWFjdGl2ZSI6bltlKyJBY3RpdmUiXSxkb25lQ2xhc3NOYW1lOmk/YSsiLWRvbmUiOm5bZSsiRG9uZSJdfX0sdH1ZKHQsZSk7dmFyIG49dC5wcm90b3R5cGU7cmV0dXJuIG4uYWRkQ2xhc3M9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXRoaXMuZ2V0Q2xhc3NOYW1lcyh0KVtuKyJDbGFzc05hbWUiXSxhPXRoaXMuZ2V0Q2xhc3NOYW1lcygiZW50ZXIiKS5kb25lQ2xhc3NOYW1lOyJhcHBlYXIiPT09dCYmImRvbmUiPT09biYmYSYmKGkrPSIgIithKSwiYWN0aXZlIj09PW4mJmUmJk0oZSksaSYmKHRoaXMuYXBwbGllZENsYXNzZXNbdF1bbl09aSxmdW5jdGlvbihlLHQpe2UmJnQmJnQuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBpPXQsdm9pZCgobj1lKS5jbGFzc0xpc3Q/bi5jbGFzc0xpc3QuYWRkKGkpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY2xhc3NMaXN0PyEhdCYmZS5jbGFzc0xpc3QuY29udGFpbnModCk6LTEhPT0oIiAiKyhlLmNsYXNzTmFtZS5iYXNlVmFsfHxlLmNsYXNzTmFtZSkrIiAiKS5pbmRleE9mKCIgIit0KyIgIil9KG4saSl8fCgic3RyaW5nIj09dHlwZW9mIG4uY2xhc3NOYW1lP24uY2xhc3NOYW1lPW4uY2xhc3NOYW1lKyIgIitpOm4uc2V0QXR0cmlidXRlKCJjbGFzcyIsKG4uY2xhc3NOYW1lJiZuLmNsYXNzTmFtZS5iYXNlVmFsfHwiIikrIiAiK2kpKSk7dmFyIG4saX0pfShlLGkpKX0sbi5yZW1vdmVDbGFzc2VzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5hcHBsaWVkQ2xhc3Nlc1t0XSxpPW4uYmFzZSxhPW4uYWN0aXZlLG89bi5kb25lO3RoaXMuYXBwbGllZENsYXNzZXNbdF09e30saSYmQihlLGkpLGEmJkIoZSxhKSxvJiZCKGUsbyl9LG4ucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PShlLmNsYXNzTmFtZXMsKDAsUy5BKShlLFsiY2xhc3NOYW1lcyJdKSk7cmV0dXJuIGEuY3JlYXRlRWxlbWVudChVLCgwLEUuQSkoe30sdCx7b25FbnRlcjp0aGlzLm9uRW50ZXIsb25FbnRlcmVkOnRoaXMub25FbnRlcmVkLG9uRW50ZXJpbmc6dGhpcy5vbkVudGVyaW5nLG9uRXhpdDp0aGlzLm9uRXhpdCxvbkV4aXRpbmc6dGhpcy5vbkV4aXRpbmcsb25FeGl0ZWQ6dGhpcy5vbkV4aXRlZH0pKX0sdH0oYS5Db21wb25lbnQpO0guZGVmYXVsdFByb3BzPXtjbGFzc05hbWVzOiIifSxILnByb3BUeXBlcz17fTt2YXIgcT1ILFY9big4Mjg5KTt2YXIgJD1lPT57bGV0e2NoaWxkcmVuOnQsdGltZW91dDpuPTIwMCxjbGFzc05hbWVzOmksaW46YSwuLi5vfT1lO3JldHVybigwLFYuWSkocSx7Li4ubyxpbjphLHRpbWVvdXQ6bixjbGFzc05hbWVzOmksbW91bnRPbkVudGVyOiEwLHVubW91bnRPbkV4aXQ6ITAsYXBwZWFyOiEwLGNoaWxkcmVuOnR9KX07dmFyIFc9ZnVuY3Rpb24oKXtsZXR7ZGlzYWJsZVNjYWxpbmc6ZT0hMX09YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9OygwLGEudXNlRWZmZWN0KSgoKT0+e2lmKCFlKXJldHVybjtsZXQgdD1udWxsLG49IiI7dHJ5e2NvbnN0IGk9KDAsaC5BTCkoKTtpZighaT8ucGFyZW50Py5kb2N1bWVudClyZXR1cm47Y29uc3QgYT1pLnBhcmVudC5kb2N1bWVudDt0PWEucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPSJ2aWV3cG9ydCJdJyksbj10Py5nZXRBdHRyaWJ1dGUoImNvbnRlbnQiKXx8IiI7Y29uc3Qgbz1uLmluY2x1ZGVzKCJ1c2VyLXNjYWxhYmxlPSIpO2lmKCF0KXtjb25zdCBlPWEuY3JlYXRlRWxlbWVudCgibWV0YSIpO2Uuc2V0QXR0cmlidXRlKCJuYW1lIiwidmlld3BvcnQiKSxhLmhlYWQuYXBwZW5kQ2hpbGQoZSksdD1lfWlmKHQpe2NvbnN0IGU9bz9uLnJlcGxhY2UoL3VzZXItc2NhbGFibGU9KHllc3xub3wxfDApLywidXNlci1zY2FsYWJsZT1ubyIpOmAke259JHtuPyIsICI6IiJ9dXNlci1zY2FsYWJsZT1ub2A7dC5zZXRBdHRyaWJ1dGUoImNvbnRlbnQiLGUpfXJldHVybigpPT57ZSYmKG4/byYmdCYmdC5zZXRBdHRyaWJ1dGUoImNvbnRlbnQiLG4pOnQ/LnJlbW92ZSgpKX19Y2F0Y2h7cmV0dXJufX0sW2VdKX0sSz0obigzMTQ3KSxuKDgyNjQpLG4oMjIwMCkpLEc9bi5uKEspO2Z1bmN0aW9uIFgoZSx0LG4saSl7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoZnVuY3Rpb24oYSxvKXtmdW5jdGlvbiByKGUpe3RyeXtsKGkubmV4dChlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gcyhlKXt0cnl7bChpLnRocm93KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9hKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbihmdW5jdGlvbihlKXtlKHQpfSkpLnRoZW4ocixzKX1sKChpPWkuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KX1PYmplY3QuY3JlYXRlO09iamVjdC5jcmVhdGU7ImZ1bmN0aW9uIj09dHlwZW9mIFN1cHByZXNzZWRFcnJvciYmU3VwcHJlc3NlZEVycm9yO2NvbnN0IFE9bmV3IE1hcChbWyIxa20iLCJhcHBsaWNhdGlvbi92bmQuMTAwMG1pbmRzLmRlY2lzaW9uLW1vZGVsK3htbCJdLFsiM2RtbCIsInRleHQvdm5kLmluM2QuM2RtbCJdLFsiM2RzIiwiaW1hZ2UveC0zZHMiXSxbIjNnMiIsInZpZGVvLzNncHAyIl0sWyIzZ3AiLCJ2aWRlby8zZ3AiXSxbIjNncHAiLCJ2aWRlby8zZ3BwIl0sWyIzbWYiLCJtb2RlbC8zbWYiXSxbIjd6IiwiYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkIl0sWyI3emlwIiwiYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkIl0sWyIxMjMiLCJhcHBsaWNhdGlvbi92bmQubG90dXMtMS0yLTMiXSxbImFhYiIsImFwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1iaW4iXSxbImFhYyIsImF1ZGlvL3gtYWNjIl0sWyJhYW0iLCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtbWFwIl0sWyJhYXMiLCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtc2VnIl0sWyJhYnciLCJhcHBsaWNhdGlvbi94LWFiaXdvcmQiXSxbImFjIiwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5hYyt4bWwiXSxbImFjMyIsImF1ZGlvL2FjMyJdLFsiYWNjIiwiYXBwbGljYXRpb24vdm5kLmFtZXJpY2FuZHluYW1pY3MuYWNjIl0sWyJhY2UiLCJhcHBsaWNhdGlvbi94LWFjZS1jb21wcmVzc2VkIl0sWyJhY3UiLCJhcHBsaWNhdGlvbi92bmQuYWN1Y29ib2wiXSxbImFjdXRjIiwiYXBwbGljYXRpb24vdm5kLmFjdWNvcnAiXSxbImFkcCIsImF1ZGlvL2FkcGNtIl0sWyJhZXAiLCJhcHBsaWNhdGlvbi92bmQuYXVkaW9ncmFwaCJdLFsiYWZtIiwiYXBwbGljYXRpb24veC1mb250LXR5cGUxIl0sWyJhZnAiLCJhcHBsaWNhdGlvbi92bmQuaWJtLm1vZGNhcCJdLFsiYWhlYWQiLCJhcHBsaWNhdGlvbi92bmQuYWhlYWQuc3BhY2UiXSxbImFpIiwiYXBwbGljYXRpb24vcGRmIl0sWyJhaWYiLCJhdWRpby94LWFpZmYiXSxbImFpZmMiLCJhdWRpby94LWFpZmYiXSxbImFpZmYiLCJhdWRpby94LWFpZmYiXSxbImFpciIsImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5haXItYXBwbGljYXRpb24taW5zdGFsbGVyLXBhY2thZ2UremlwIl0sWyJhaXQiLCJhcHBsaWNhdGlvbi92bmQuZHZiLmFpdCJdLFsiYW1pIiwiYXBwbGljYXRpb24vdm5kLmFtaWdhLmFtaSJdLFsiYW1yIiwiYXVkaW8vYW1yIl0sWyJhcGsiLCJhcHBsaWNhdGlvbi92bmQuYW5kcm9pZC5wYWNrYWdlLWFyY2hpdmUiXSxbImFwbmciLCJpbWFnZS9hcG5nIl0sWyJhcHBjYWNoZSIsInRleHQvY2FjaGUtbWFuaWZlc3QiXSxbImFwcGxpY2F0aW9uIiwiYXBwbGljYXRpb24veC1tcy1hcHBsaWNhdGlvbiJdLFsiYXByIiwiYXBwbGljYXRpb24vdm5kLmxvdHVzLWFwcHJvYWNoIl0sWyJhcmMiLCJhcHBsaWNhdGlvbi94LWZyZWVhcmMiXSxbImFyaiIsImFwcGxpY2F0aW9uL3gtYXJqIl0sWyJhc2MiLCJhcHBsaWNhdGlvbi9wZ3Atc2lnbmF0dXJlIl0sWyJhc2YiLCJ2aWRlby94LW1zLWFzZiJdLFsiYXNtIiwidGV4dC94LWFzbSJdLFsiYXNvIiwiYXBwbGljYXRpb24vdm5kLmFjY3BhYy5zaW1wbHkuYXNvIl0sWyJhc3giLCJ2aWRlby94LW1zLWFzZiJdLFsiYXRjIiwiYXBwbGljYXRpb24vdm5kLmFjdWNvcnAiXSxbImF0b20iLCJhcHBsaWNhdGlvbi9hdG9tK3htbCJdLFsiYXRvbWNhdCIsImFwcGxpY2F0aW9uL2F0b21jYXQreG1sIl0sWyJhdG9tZGVsZXRlZCIsImFwcGxpY2F0aW9uL2F0b21kZWxldGVkK3htbCJdLFsiYXRvbXN2YyIsImFwcGxpY2F0aW9uL2F0b21zdmMreG1sIl0sWyJhdHgiLCJhcHBsaWNhdGlvbi92bmQuYW50aXguZ2FtZS1jb21wb25lbnQiXSxbImF1IiwiYXVkaW8veC1hdSJdLFsiYXZpIiwidmlkZW8veC1tc3ZpZGVvIl0sWyJhdmlmIiwiaW1hZ2UvYXZpZiJdLFsiYXciLCJhcHBsaWNhdGlvbi9hcHBsaXh3YXJlIl0sWyJhemYiLCJhcHBsaWNhdGlvbi92bmQuYWlyemlwLmZpbGVzZWN1cmUuYXpmIl0sWyJhenMiLCJhcHBsaWNhdGlvbi92bmQuYWlyemlwLmZpbGVzZWN1cmUuYXpzIl0sWyJhenYiLCJpbWFnZS92bmQuYWlyemlwLmFjY2VsZXJhdG9yLmF6diJdLFsiYXp3IiwiYXBwbGljYXRpb24vdm5kLmFtYXpvbi5lYm9vayJdLFsiYjE2IiwiaW1hZ2Uvdm5kLnBjby5iMTYiXSxbImJhdCIsImFwcGxpY2F0aW9uL3gtbXNkb3dubG9hZCJdLFsiYmNwaW8iLCJhcHBsaWNhdGlvbi94LWJjcGlvIl0sWyJiZGYiLCJhcHBsaWNhdGlvbi94LWZvbnQtYmRmIl0sWyJiZG0iLCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtK3dieG1sIl0sWyJiZG9jIiwiYXBwbGljYXRpb24veC1iZG9jIl0sWyJiZWQiLCJhcHBsaWNhdGlvbi92bmQucmVhbHZuYy5iZWQiXSxbImJoMiIsImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzcHJzIl0sWyJiaW4iLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbImJsYiIsImFwcGxpY2F0aW9uL3gtYmxvcmIiXSxbImJsb3JiIiwiYXBwbGljYXRpb24veC1ibG9yYiJdLFsiYm1pIiwiYXBwbGljYXRpb24vdm5kLmJtaSJdLFsiYm1tbCIsImFwcGxpY2F0aW9uL3ZuZC5iYWxzYW1pcS5ibW1sK3htbCJdLFsiYm1wIiwiaW1hZ2UvYm1wIl0sWyJib29rIiwiYXBwbGljYXRpb24vdm5kLmZyYW1lbWFrZXIiXSxbImJveCIsImFwcGxpY2F0aW9uL3ZuZC5wcmV2aWV3c3lzdGVtcy5ib3giXSxbImJveiIsImFwcGxpY2F0aW9uL3gtYnppcDIiXSxbImJwayIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiYnBtbiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiYnNwIiwibW9kZWwvdm5kLnZhbHZlLnNvdXJjZS5jb21waWxlZC1tYXAiXSxbImJ0aWYiLCJpbWFnZS9wcnMuYnRpZiJdLFsiYnVmZmVyIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0sWyJieiIsImFwcGxpY2F0aW9uL3gtYnppcCJdLFsiYnoyIiwiYXBwbGljYXRpb24veC1iemlwMiJdLFsiYyIsInRleHQveC1jIl0sWyJjNGQiLCJhcHBsaWNhdGlvbi92bmQuY2xvbmsuYzRncm91cCJdLFsiYzRmIiwiYXBwbGljYXRpb24vdm5kLmNsb25rLmM0Z3JvdXAiXSxbImM0ZyIsImFwcGxpY2F0aW9uL3ZuZC5jbG9uay5jNGdyb3VwIl0sWyJjNHAiLCJhcHBsaWNhdGlvbi92bmQuY2xvbmsuYzRncm91cCJdLFsiYzR1IiwiYXBwbGljYXRpb24vdm5kLmNsb25rLmM0Z3JvdXAiXSxbImMxMWFtYyIsImFwcGxpY2F0aW9uL3ZuZC5jbHVldHJ1c3QuY2FydG9tb2JpbGUtY29uZmlnIl0sWyJjMTFhbXoiLCJhcHBsaWNhdGlvbi92bmQuY2x1ZXRydXN0LmNhcnRvbW9iaWxlLWNvbmZpZy1wa2ciXSxbImNhYiIsImFwcGxpY2F0aW9uL3ZuZC5tcy1jYWItY29tcHJlc3NlZCJdLFsiY2FmIiwiYXVkaW8veC1jYWYiXSxbImNhcCIsImFwcGxpY2F0aW9uL3ZuZC50Y3BkdW1wLnBjYXAiXSxbImNhciIsImFwcGxpY2F0aW9uL3ZuZC5jdXJsLmNhciJdLFsiY2F0IiwiYXBwbGljYXRpb24vdm5kLm1zLXBraS5zZWNjYXQiXSxbImNiNyIsImFwcGxpY2F0aW9uL3gtY2JyIl0sWyJjYmEiLCJhcHBsaWNhdGlvbi94LWNiciJdLFsiY2JyIiwiYXBwbGljYXRpb24veC1jYnIiXSxbImNidCIsImFwcGxpY2F0aW9uL3gtY2JyIl0sWyJjYnoiLCJhcHBsaWNhdGlvbi94LWNiciJdLFsiY2MiLCJ0ZXh0L3gtYyJdLFsiY2NvIiwiYXBwbGljYXRpb24veC1jb2NvYSJdLFsiY2N0IiwiYXBwbGljYXRpb24veC1kaXJlY3RvciJdLFsiY2N4bWwiLCJhcHBsaWNhdGlvbi9jY3htbCt4bWwiXSxbImNkYmNtc2ciLCJhcHBsaWNhdGlvbi92bmQuY29udGFjdC5jbXNnIl0sWyJjZGEiLCJhcHBsaWNhdGlvbi94LWNkZiJdLFsiY2RmIiwiYXBwbGljYXRpb24veC1uZXRjZGYiXSxbImNkZngiLCJhcHBsaWNhdGlvbi9jZGZ4K3htbCJdLFsiY2RrZXkiLCJhcHBsaWNhdGlvbi92bmQubWVkaWFzdGF0aW9uLmNka2V5Il0sWyJjZG1pYSIsImFwcGxpY2F0aW9uL2NkbWktY2FwYWJpbGl0eSJdLFsiY2RtaWMiLCJhcHBsaWNhdGlvbi9jZG1pLWNvbnRhaW5lciJdLFsiY2RtaWQiLCJhcHBsaWNhdGlvbi9jZG1pLWRvbWFpbiJdLFsiY2RtaW8iLCJhcHBsaWNhdGlvbi9jZG1pLW9iamVjdCJdLFsiY2RtaXEiLCJhcHBsaWNhdGlvbi9jZG1pLXF1ZXVlIl0sWyJjZHIiLCJhcHBsaWNhdGlvbi9jZHIiXSxbImNkeCIsImNoZW1pY2FsL3gtY2R4Il0sWyJjZHhtbCIsImFwcGxpY2F0aW9uL3ZuZC5jaGVtZHJhdyt4bWwiXSxbImNkeSIsImFwcGxpY2F0aW9uL3ZuZC5jaW5kZXJlbGxhIl0sWyJjZXIiLCJhcHBsaWNhdGlvbi9wa2l4LWNlcnQiXSxbImNmcyIsImFwcGxpY2F0aW9uL3gtY2ZzLWNvbXByZXNzZWQiXSxbImNnbSIsImltYWdlL2NnbSJdLFsiY2hhdCIsImFwcGxpY2F0aW9uL3gtY2hhdCJdLFsiY2htIiwiYXBwbGljYXRpb24vdm5kLm1zLWh0bWxoZWxwIl0sWyJjaHJ0IiwiYXBwbGljYXRpb24vdm5kLmtkZS5rY2hhcnQiXSxbImNpZiIsImNoZW1pY2FsL3gtY2lmIl0sWyJjaWkiLCJhcHBsaWNhdGlvbi92bmQuYW5zZXItd2ViLWNlcnRpZmljYXRlLWlzc3VlLWluaXRpYXRpb24iXSxbImNpbCIsImFwcGxpY2F0aW9uL3ZuZC5tcy1hcnRnYWxyeSJdLFsiY2pzIiwiYXBwbGljYXRpb24vbm9kZSJdLFsiY2xhIiwiYXBwbGljYXRpb24vdm5kLmNsYXltb3JlIl0sWyJjbGFzcyIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiY2xrayIsImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLmtleWJvYXJkIl0sWyJjbGtwIiwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIucGFsZXR0ZSJdLFsiY2xrdCIsImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLnRlbXBsYXRlIl0sWyJjbGt3IiwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIud29yZGJhbmsiXSxbImNsa3giLCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlciJdLFsiY2xwIiwiYXBwbGljYXRpb24veC1tc2NsaXAiXSxbImNtYyIsImFwcGxpY2F0aW9uL3ZuZC5jb3Ntb2NhbGxlciJdLFsiY21kZiIsImNoZW1pY2FsL3gtY21kZiJdLFsiY21sIiwiY2hlbWljYWwveC1jbWwiXSxbImNtcCIsImFwcGxpY2F0aW9uL3ZuZC55ZWxsb3dyaXZlci1jdXN0b20tbWVudSJdLFsiY214IiwiaW1hZ2UveC1jbXgiXSxbImNvZCIsImFwcGxpY2F0aW9uL3ZuZC5yaW0uY29kIl0sWyJjb2ZmZWUiLCJ0ZXh0L2NvZmZlZXNjcmlwdCJdLFsiY29tIiwiYXBwbGljYXRpb24veC1tc2Rvd25sb2FkIl0sWyJjb25mIiwidGV4dC9wbGFpbiJdLFsiY3BpbyIsImFwcGxpY2F0aW9uL3gtY3BpbyJdLFsiY3BwIiwidGV4dC94LWMiXSxbImNwdCIsImFwcGxpY2F0aW9uL21hYy1jb21wYWN0cHJvIl0sWyJjcmQiLCJhcHBsaWNhdGlvbi94LW1zY2FyZGZpbGUiXSxbImNybCIsImFwcGxpY2F0aW9uL3BraXgtY3JsIl0sWyJjcnQiLCJhcHBsaWNhdGlvbi94LXg1MDktY2EtY2VydCJdLFsiY3J4IiwiYXBwbGljYXRpb24veC1jaHJvbWUtZXh0ZW5zaW9uIl0sWyJjcnlwdG9ub3RlIiwiYXBwbGljYXRpb24vdm5kLnJpZy5jcnlwdG9ub3RlIl0sWyJjc2giLCJhcHBsaWNhdGlvbi94LWNzaCJdLFsiY3NsIiwiYXBwbGljYXRpb24vdm5kLmNpdGF0aW9uc3R5bGVzLnN0eWxlK3htbCJdLFsiY3NtbCIsImNoZW1pY2FsL3gtY3NtbCJdLFsiY3NwIiwiYXBwbGljYXRpb24vdm5kLmNvbW1vbnNwYWNlIl0sWyJjc3IiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbImNzcyIsInRleHQvY3NzIl0sWyJjc3QiLCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIl0sWyJjc3YiLCJ0ZXh0L2NzdiJdLFsiY3UiLCJhcHBsaWNhdGlvbi9jdS1zZWVtZSJdLFsiY3VybCIsInRleHQvdm5kLmN1cmwiXSxbImN3dyIsImFwcGxpY2F0aW9uL3Bycy5jd3ciXSxbImN4dCIsImFwcGxpY2F0aW9uL3gtZGlyZWN0b3IiXSxbImN4eCIsInRleHQveC1jIl0sWyJkYWUiLCJtb2RlbC92bmQuY29sbGFkYSt4bWwiXSxbImRhZiIsImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMuZGFmIl0sWyJkYXJ0IiwiYXBwbGljYXRpb24vdm5kLmRhcnQiXSxbImRhdGFsZXNzIiwiYXBwbGljYXRpb24vdm5kLmZkc24uc2VlZCJdLFsiZGF2bW91bnQiLCJhcHBsaWNhdGlvbi9kYXZtb3VudCt4bWwiXSxbImRiZiIsImFwcGxpY2F0aW9uL3ZuZC5kYmYiXSxbImRiayIsImFwcGxpY2F0aW9uL2RvY2Jvb2sreG1sIl0sWyJkY3IiLCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIl0sWyJkY3VybCIsInRleHQvdm5kLmN1cmwuZGN1cmwiXSxbImRkMiIsImFwcGxpY2F0aW9uL3ZuZC5vbWEuZGQyK3htbCJdLFsiZGRkIiwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kZGQiXSxbImRkZiIsImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG1kZGYreG1sIl0sWyJkZHMiLCJpbWFnZS92bmQubXMtZGRzIl0sWyJkZWIiLCJhcHBsaWNhdGlvbi94LWRlYmlhbi1wYWNrYWdlIl0sWyJkZWYiLCJ0ZXh0L3BsYWluIl0sWyJkZXBsb3kiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbImRlciIsImFwcGxpY2F0aW9uL3gteDUwOS1jYS1jZXJ0Il0sWyJkZmFjIiwiYXBwbGljYXRpb24vdm5kLmRyZWFtZmFjdG9yeSJdLFsiZGdjIiwiYXBwbGljYXRpb24veC1kZ2MtY29tcHJlc3NlZCJdLFsiZGljIiwidGV4dC94LWMiXSxbImRpciIsImFwcGxpY2F0aW9uL3gtZGlyZWN0b3IiXSxbImRpcyIsImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMuZGlzIl0sWyJkaXNwb3NpdGlvbi1ub3RpZmljYXRpb24iLCJtZXNzYWdlL2Rpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvbiJdLFsiZGlzdCIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiZGlzdHoiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbImRqdiIsImltYWdlL3ZuZC5kanZ1Il0sWyJkanZ1IiwiaW1hZ2Uvdm5kLmRqdnUiXSxbImRsbCIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiZG1nIiwiYXBwbGljYXRpb24veC1hcHBsZS1kaXNraW1hZ2UiXSxbImRtbiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiZG1wIiwiYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcCJdLFsiZG1zIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0sWyJkbmEiLCJhcHBsaWNhdGlvbi92bmQuZG5hIl0sWyJkb2MiLCJhcHBsaWNhdGlvbi9tc3dvcmQiXSxbImRvY20iLCJhcHBsaWNhdGlvbi92bmQubXMtd29yZC50ZW1wbGF0ZS5tYWNyb0VuYWJsZWQuMTIiXSxbImRvY3giLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCJdLFsiZG90IiwiYXBwbGljYXRpb24vbXN3b3JkIl0sWyJkb3RtIiwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQudGVtcGxhdGUubWFjcm9FbmFibGVkLjEyIl0sWyJkb3R4IiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGUiXSxbImRwIiwiYXBwbGljYXRpb24vdm5kLm9zZ2kuZHAiXSxbImRwZyIsImFwcGxpY2F0aW9uL3ZuZC5kcGdyYXBoIl0sWyJkcmEiLCJhdWRpby92bmQuZHJhIl0sWyJkcmxlIiwiaW1hZ2UvZGljb20tcmxlIl0sWyJkc2MiLCJ0ZXh0L3Bycy5saW5lcy50YWciXSxbImRzc2MiLCJhcHBsaWNhdGlvbi9kc3NjK2RlciJdLFsiZHRiIiwiYXBwbGljYXRpb24veC1kdGJvb2sreG1sIl0sWyJkdGQiLCJhcHBsaWNhdGlvbi94bWwtZHRkIl0sWyJkdHMiLCJhdWRpby92bmQuZHRzIl0sWyJkdHNoZCIsImF1ZGlvL3ZuZC5kdHMuaGQiXSxbImR1bXAiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbImR2YiIsInZpZGVvL3ZuZC5kdmIuZmlsZSJdLFsiZHZpIiwiYXBwbGljYXRpb24veC1kdmkiXSxbImR3ZCIsImFwcGxpY2F0aW9uL2F0c2MtZHdkK3htbCJdLFsiZHdmIiwibW9kZWwvdm5kLmR3ZiJdLFsiZHdnIiwiaW1hZ2Uvdm5kLmR3ZyJdLFsiZHhmIiwiaW1hZ2Uvdm5kLmR4ZiJdLFsiZHhwIiwiYXBwbGljYXRpb24vdm5kLnNwb3RmaXJlLmR4cCJdLFsiZHhyIiwiYXBwbGljYXRpb24veC1kaXJlY3RvciJdLFsiZWFyIiwiYXBwbGljYXRpb24vamF2YS1hcmNoaXZlIl0sWyJlY2VscDQ4MDAiLCJhdWRpby92bmQubnVlcmEuZWNlbHA0ODAwIl0sWyJlY2VscDc0NzAiLCJhdWRpby92bmQubnVlcmEuZWNlbHA3NDcwIl0sWyJlY2VscDk2MDAiLCJhdWRpby92bmQubnVlcmEuZWNlbHA5NjAwIl0sWyJlY21hIiwiYXBwbGljYXRpb24vZWNtYXNjcmlwdCJdLFsiZWRtIiwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmVkbSJdLFsiZWR4IiwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmVkeCJdLFsiZWZpZiIsImFwcGxpY2F0aW9uL3ZuZC5waWNzZWwiXSxbImVpNiIsImFwcGxpY2F0aW9uL3ZuZC5wZy5vc2FzbGkiXSxbImVsYyIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiZW1mIiwiaW1hZ2UvZW1mIl0sWyJlbWwiLCJtZXNzYWdlL3JmYzgyMiJdLFsiZW1tYSIsImFwcGxpY2F0aW9uL2VtbWEreG1sIl0sWyJlbW90aW9ubWwiLCJhcHBsaWNhdGlvbi9lbW90aW9ubWwreG1sIl0sWyJlbXoiLCJhcHBsaWNhdGlvbi94LW1zbWV0YWZpbGUiXSxbImVvbCIsImF1ZGlvL3ZuZC5kaWdpdGFsLXdpbmRzIl0sWyJlb3QiLCJhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCJdLFsiZXBzIiwiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJdLFsiZXB1YiIsImFwcGxpY2F0aW9uL2VwdWIremlwIl0sWyJlcyIsImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQiXSxbImVzMyIsImFwcGxpY2F0aW9uL3ZuZC5lc3ppZ25vMyt4bWwiXSxbImVzYSIsImFwcGxpY2F0aW9uL3ZuZC5vc2dpLnN1YnN5c3RlbSJdLFsiZXNmIiwiYXBwbGljYXRpb24vdm5kLmVwc29uLmVzZiJdLFsiZXQzIiwiYXBwbGljYXRpb24vdm5kLmVzemlnbm8zK3htbCJdLFsiZXR4IiwidGV4dC94LXNldGV4dCJdLFsiZXZhIiwiYXBwbGljYXRpb24veC1ldmEiXSxbImV2eSIsImFwcGxpY2F0aW9uL3gtZW52b3kiXSxbImV4ZSIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiZXhpIiwiYXBwbGljYXRpb24vZXhpIl0sWyJleHAiLCJhcHBsaWNhdGlvbi9leHByZXNzIl0sWyJleHIiLCJpbWFnZS9hY2VzIl0sWyJleHQiLCJhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZXh0Il0sWyJleiIsImFwcGxpY2F0aW9uL2FuZHJldy1pbnNldCJdLFsiZXoyIiwiYXBwbGljYXRpb24vdm5kLmV6cGl4LWFsYnVtIl0sWyJlejMiLCJhcHBsaWNhdGlvbi92bmQuZXpwaXgtcGFja2FnZSJdLFsiZiIsInRleHQveC1mb3J0cmFuIl0sWyJmNHYiLCJ2aWRlby9tcDQiXSxbImY3NyIsInRleHQveC1mb3J0cmFuIl0sWyJmOTAiLCJ0ZXh0L3gtZm9ydHJhbiJdLFsiZmJzIiwiaW1hZ2Uvdm5kLmZhc3RiaWRzaGVldCJdLFsiZmNkdCIsImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5mb3Jtc2NlbnRyYWwuZmNkdCJdLFsiZmNzIiwiYXBwbGljYXRpb24vdm5kLmlzYWMuZmNzIl0sWyJmZGYiLCJhcHBsaWNhdGlvbi92bmQuZmRmIl0sWyJmZHQiLCJhcHBsaWNhdGlvbi9mZHQreG1sIl0sWyJmZV9sYXVuY2giLCJhcHBsaWNhdGlvbi92bmQuZGVub3ZvLmZjc2VsYXlvdXQtbGluayJdLFsiZmc1IiwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNncCJdLFsiZmdkIiwiYXBwbGljYXRpb24veC1kaXJlY3RvciJdLFsiZmgiLCJpbWFnZS94LWZyZWVoYW5kIl0sWyJmaDQiLCJpbWFnZS94LWZyZWVoYW5kIl0sWyJmaDUiLCJpbWFnZS94LWZyZWVoYW5kIl0sWyJmaDciLCJpbWFnZS94LWZyZWVoYW5kIl0sWyJmaGMiLCJpbWFnZS94LWZyZWVoYW5kIl0sWyJmaWciLCJhcHBsaWNhdGlvbi94LXhmaWciXSxbImZpdHMiLCJpbWFnZS9maXRzIl0sWyJmbGFjIiwiYXVkaW8veC1mbGFjIl0sWyJmbGkiLCJ2aWRlby94LWZsaSJdLFsiZmxvIiwiYXBwbGljYXRpb24vdm5kLm1pY3JvZ3JhZnguZmxvIl0sWyJmbHYiLCJ2aWRlby94LWZsdiJdLFsiZmx3IiwiYXBwbGljYXRpb24vdm5kLmtkZS5raXZpbyJdLFsiZmx4IiwidGV4dC92bmQuZm1pLmZsZXhzdG9yIl0sWyJmbHkiLCJ0ZXh0L3ZuZC5mbHkiXSxbImZtIiwiYXBwbGljYXRpb24vdm5kLmZyYW1lbWFrZXIiXSxbImZuYyIsImFwcGxpY2F0aW9uL3ZuZC5mcm9nYW5zLmZuYyJdLFsiZm8iLCJhcHBsaWNhdGlvbi92bmQuc29mdHdhcmU2MDIuZmlsbGVyLmZvcm0reG1sIl0sWyJmb3IiLCJ0ZXh0L3gtZm9ydHJhbiJdLFsiZnB4IiwiaW1hZ2Uvdm5kLmZweCJdLFsiZnJhbWUiLCJhcHBsaWNhdGlvbi92bmQuZnJhbWVtYWtlciJdLFsiZnNjIiwiYXBwbGljYXRpb24vdm5kLmZzYy53ZWJsYXVuY2giXSxbImZzdCIsImltYWdlL3ZuZC5mc3QiXSxbImZ0YyIsImFwcGxpY2F0aW9uL3ZuZC5mbHV4dGltZS5jbGlwIl0sWyJmdGkiLCJhcHBsaWNhdGlvbi92bmQuYW5zZXItd2ViLWZ1bmRzLXRyYW5zZmVyLWluaXRpYXRpb24iXSxbImZ2dCIsInZpZGVvL3ZuZC5mdnQiXSxbImZ4cCIsImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5meHAiXSxbImZ4cGwiLCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuZnhwIl0sWyJmenMiLCJhcHBsaWNhdGlvbi92bmQuZnV6enlzaGVldCJdLFsiZzJ3IiwiYXBwbGljYXRpb24vdm5kLmdlb3BsYW4iXSxbImczIiwiaW1hZ2UvZzNmYXgiXSxbImczdyIsImFwcGxpY2F0aW9uL3ZuZC5nZW9zcGFjZSJdLFsiZ2FjIiwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1hY2NvdW50Il0sWyJnYW0iLCJhcHBsaWNhdGlvbi94LXRhZHMiXSxbImdiciIsImFwcGxpY2F0aW9uL3Jwa2ktZ2hvc3RidXN0ZXJzIl0sWyJnY2EiLCJhcHBsaWNhdGlvbi94LWdjYS1jb21wcmVzc2VkIl0sWyJnZGwiLCJtb2RlbC92bmQuZ2RsIl0sWyJnZG9jIiwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLmRvY3VtZW50Il0sWyJnZW8iLCJhcHBsaWNhdGlvbi92bmQuZHluYWdlbyJdLFsiZ2VvanNvbiIsImFwcGxpY2F0aW9uL2dlbytqc29uIl0sWyJnZXgiLCJhcHBsaWNhdGlvbi92bmQuZ2VvbWV0cnktZXhwbG9yZXIiXSxbImdnYiIsImFwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS5maWxlIl0sWyJnZ3QiLCJhcHBsaWNhdGlvbi92bmQuZ2VvZ2VicmEudG9vbCJdLFsiZ2hmIiwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1oZWxwIl0sWyJnaWYiLCJpbWFnZS9naWYiXSxbImdpbSIsImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaWRlbnRpdHktbWVzc2FnZSJdLFsiZ2xiIiwibW9kZWwvZ2x0Zi1iaW5hcnkiXSxbImdsdGYiLCJtb2RlbC9nbHRmK2pzb24iXSxbImdtbCIsImFwcGxpY2F0aW9uL2dtbCt4bWwiXSxbImdteCIsImFwcGxpY2F0aW9uL3ZuZC5nbXgiXSxbImdudW1lcmljIiwiYXBwbGljYXRpb24veC1nbnVtZXJpYyJdLFsiZ3BnIiwiYXBwbGljYXRpb24vZ3BnLWtleXMiXSxbImdwaCIsImFwcGxpY2F0aW9uL3ZuZC5mbG9ncmFwaGl0Il0sWyJncHgiLCJhcHBsaWNhdGlvbi9ncHgreG1sIl0sWyJncWYiLCJhcHBsaWNhdGlvbi92bmQuZ3JhZmVxIl0sWyJncXMiLCJhcHBsaWNhdGlvbi92bmQuZ3JhZmVxIl0sWyJncmFtIiwiYXBwbGljYXRpb24vc3JncyJdLFsiZ3JhbXBzIiwiYXBwbGljYXRpb24veC1ncmFtcHMteG1sIl0sWyJncmUiLCJhcHBsaWNhdGlvbi92bmQuZ2VvbWV0cnktZXhwbG9yZXIiXSxbImdydiIsImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaW5qZWN0b3IiXSxbImdyeG1sIiwiYXBwbGljYXRpb24vc3Jncyt4bWwiXSxbImdzZiIsImFwcGxpY2F0aW9uL3gtZm9udC1naG9zdHNjcmlwdCJdLFsiZ3NoZWV0IiwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnNwcmVhZHNoZWV0Il0sWyJnc2xpZGVzIiwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnByZXNlbnRhdGlvbiJdLFsiZ3RhciIsImFwcGxpY2F0aW9uL3gtZ3RhciJdLFsiZ3RtIiwiYXBwbGljYXRpb24vdm5kLmdyb292ZS10b29sLW1lc3NhZ2UiXSxbImd0dyIsIm1vZGVsL3ZuZC5ndHciXSxbImd2IiwidGV4dC92bmQuZ3JhcGh2aXoiXSxbImd4ZiIsImFwcGxpY2F0aW9uL2d4ZiJdLFsiZ3h0IiwiYXBwbGljYXRpb24vdm5kLmdlb25leHQiXSxbImd6IiwiYXBwbGljYXRpb24vZ3ppcCJdLFsiZ3ppcCIsImFwcGxpY2F0aW9uL2d6aXAiXSxbImgiLCJ0ZXh0L3gtYyJdLFsiaDI2MSIsInZpZGVvL2gyNjEiXSxbImgyNjMiLCJ2aWRlby9oMjYzIl0sWyJoMjY0IiwidmlkZW8vaDI2NCJdLFsiaGFsIiwiYXBwbGljYXRpb24vdm5kLmhhbCt4bWwiXSxbImhiY2kiLCJhcHBsaWNhdGlvbi92bmQuaGJjaSJdLFsiaGJzIiwidGV4dC94LWhhbmRsZWJhcnMtdGVtcGxhdGUiXSxbImhkZCIsImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1oZGQiXSxbImhkZiIsImFwcGxpY2F0aW9uL3gtaGRmIl0sWyJoZWljIiwiaW1hZ2UvaGVpYyJdLFsiaGVpY3MiLCJpbWFnZS9oZWljLXNlcXVlbmNlIl0sWyJoZWlmIiwiaW1hZ2UvaGVpZiJdLFsiaGVpZnMiLCJpbWFnZS9oZWlmLXNlcXVlbmNlIl0sWyJoZWoyIiwiaW1hZ2UvaGVqMmsiXSxbImhlbGQiLCJhcHBsaWNhdGlvbi9hdHNjLWhlbGQreG1sIl0sWyJoaCIsInRleHQveC1jIl0sWyJoanNvbiIsImFwcGxpY2F0aW9uL2hqc29uIl0sWyJobHAiLCJhcHBsaWNhdGlvbi93aW5obHAiXSxbImhwZ2wiLCJhcHBsaWNhdGlvbi92bmQuaHAtaHBnbCJdLFsiaHBpZCIsImFwcGxpY2F0aW9uL3ZuZC5ocC1ocGlkIl0sWyJocHMiLCJhcHBsaWNhdGlvbi92bmQuaHAtaHBzIl0sWyJocXgiLCJhcHBsaWNhdGlvbi9tYWMtYmluaGV4NDAiXSxbImhzajIiLCJpbWFnZS9oc2oyIl0sWyJodGMiLCJ0ZXh0L3gtY29tcG9uZW50Il0sWyJodGtlIiwiYXBwbGljYXRpb24vdm5kLmtlbmFtZWFhcHAiXSxbImh0bSIsInRleHQvaHRtbCJdLFsiaHRtbCIsInRleHQvaHRtbCJdLFsiaHZkIiwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi1kaWMiXSxbImh2cCIsImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtdm9pY2UiXSxbImh2cyIsImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtc2NyaXB0Il0sWyJpMmciLCJhcHBsaWNhdGlvbi92bmQuaW50ZXJnZW8iXSxbImljYyIsImFwcGxpY2F0aW9uL3ZuZC5pY2Nwcm9maWxlIl0sWyJpY2UiLCJ4LWNvbmZlcmVuY2UveC1jb29sdGFsayJdLFsiaWNtIiwiYXBwbGljYXRpb24vdm5kLmljY3Byb2ZpbGUiXSxbImljbyIsImltYWdlL3gtaWNvbiJdLFsiaWNzIiwidGV4dC9jYWxlbmRhciJdLFsiaWVmIiwiaW1hZ2UvaWVmIl0sWyJpZmIiLCJ0ZXh0L2NhbGVuZGFyIl0sWyJpZm0iLCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuZm9ybWRhdGEiXSxbImlnZXMiLCJtb2RlbC9pZ2VzIl0sWyJpZ2wiLCJhcHBsaWNhdGlvbi92bmQuaWdsb2FkZXIiXSxbImlnbSIsImFwcGxpY2F0aW9uL3ZuZC5pbnNvcnMuaWdtIl0sWyJpZ3MiLCJtb2RlbC9pZ2VzIl0sWyJpZ3giLCJhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5pZ3giXSxbImlpZiIsImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5pbnRlcmNoYW5nZSJdLFsiaW1nIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0sWyJpbXAiLCJhcHBsaWNhdGlvbi92bmQuYWNjcGFjLnNpbXBseS5pbXAiXSxbImltcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1pbXMiXSxbImluIiwidGV4dC9wbGFpbiJdLFsiaW5pIiwidGV4dC9wbGFpbiJdLFsiaW5rIiwiYXBwbGljYXRpb24vaW5rbWwreG1sIl0sWyJpbmttbCIsImFwcGxpY2F0aW9uL2lua21sK3htbCJdLFsiaW5zdGFsbCIsImFwcGxpY2F0aW9uL3gtaW5zdGFsbC1pbnN0cnVjdGlvbnMiXSxbImlvdGEiLCJhcHBsaWNhdGlvbi92bmQuYXN0cmFlYS1zb2Z0d2FyZS5pb3RhIl0sWyJpcGZpeCIsImFwcGxpY2F0aW9uL2lwZml4Il0sWyJpcGsiLCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQucGFja2FnZSJdLFsiaXJtIiwiYXBwbGljYXRpb24vdm5kLmlibS5yaWdodHMtbWFuYWdlbWVudCJdLFsiaXJwIiwiYXBwbGljYXRpb24vdm5kLmlyZXBvc2l0b3J5LnBhY2thZ2UreG1sIl0sWyJpc28iLCJhcHBsaWNhdGlvbi94LWlzbzk2NjAtaW1hZ2UiXSxbIml0cCIsImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5mb3JtdGVtcGxhdGUiXSxbIml0cyIsImFwcGxpY2F0aW9uL2l0cyt4bWwiXSxbIml2cCIsImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnAiXSxbIml2dSIsImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnUiXSxbImphZCIsInRleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlwdG9yIl0sWyJqYWRlIiwidGV4dC9qYWRlIl0sWyJqYW0iLCJhcHBsaWNhdGlvbi92bmQuamFtIl0sWyJqYXIiLCJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUiXSxbImphcmRpZmYiLCJhcHBsaWNhdGlvbi94LWphdmEtYXJjaGl2ZS1kaWZmIl0sWyJqYXZhIiwidGV4dC94LWphdmEtc291cmNlIl0sWyJqaGMiLCJpbWFnZS9qcGhjIl0sWyJqaXNwIiwiYXBwbGljYXRpb24vdm5kLmppc3AiXSxbImpscyIsImltYWdlL2pscyJdLFsiamx0IiwiYXBwbGljYXRpb24vdm5kLmhwLWpseXQiXSxbImpuZyIsImltYWdlL3gtam5nIl0sWyJqbmxwIiwiYXBwbGljYXRpb24veC1qYXZhLWpubHAtZmlsZSJdLFsiam9kYSIsImFwcGxpY2F0aW9uL3ZuZC5qb29zdC5qb2RhLWFyY2hpdmUiXSxbImpwMiIsImltYWdlL2pwMiJdLFsianBlIiwiaW1hZ2UvanBlZyJdLFsianBlZyIsImltYWdlL2pwZWciXSxbImpwZiIsImltYWdlL2pweCJdLFsianBnIiwiaW1hZ2UvanBlZyJdLFsianBnMiIsImltYWdlL2pwMiJdLFsianBnbSIsInZpZGVvL2pwbSJdLFsianBndiIsInZpZGVvL2pwZWciXSxbImpwaCIsImltYWdlL2pwaCJdLFsianBtIiwidmlkZW8vanBtIl0sWyJqcHgiLCJpbWFnZS9qcHgiXSxbImpzIiwiYXBwbGljYXRpb24vamF2YXNjcmlwdCJdLFsianNvbiIsImFwcGxpY2F0aW9uL2pzb24iXSxbImpzb241IiwiYXBwbGljYXRpb24vanNvbjUiXSxbImpzb25sZCIsImFwcGxpY2F0aW9uL2xkK2pzb24iXSxbImpzb25sIiwiYXBwbGljYXRpb24vanNvbmwiXSxbImpzb25tbCIsImFwcGxpY2F0aW9uL2pzb25tbCtqc29uIl0sWyJqc3giLCJ0ZXh0L2pzeCJdLFsianhyIiwiaW1hZ2UvanhyIl0sWyJqeHJhIiwiaW1hZ2UvanhyYSJdLFsianhycyIsImltYWdlL2p4cnMiXSxbImp4cyIsImltYWdlL2p4cyJdLFsianhzYyIsImltYWdlL2p4c2MiXSxbImp4c2kiLCJpbWFnZS9qeHNpIl0sWyJqeHNzIiwiaW1hZ2UvanhzcyJdLFsia2FyIiwiYXVkaW8vbWlkaSJdLFsia2FyYm9uIiwiYXBwbGljYXRpb24vdm5kLmtkZS5rYXJib24iXSxbImtkYiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsia2RieCIsImFwcGxpY2F0aW9uL3gta2VlcGFzczIiXSxbImtleSIsImFwcGxpY2F0aW9uL3gtaXdvcmsta2V5bm90ZS1zZmZrZXkiXSxbImtmbyIsImFwcGxpY2F0aW9uL3ZuZC5rZGUua2Zvcm11bGEiXSxbImtpYSIsImFwcGxpY2F0aW9uL3ZuZC5raWRzcGlyYXRpb24iXSxbImttbCIsImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua21sK3htbCJdLFsia216IiwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1lYXJ0aC5rbXoiXSxbImtuZSIsImFwcGxpY2F0aW9uL3ZuZC5raW5hciJdLFsia25wIiwiYXBwbGljYXRpb24vdm5kLmtpbmFyIl0sWyJrb24iLCJhcHBsaWNhdGlvbi92bmQua2RlLmtvbnRvdXIiXSxbImtwciIsImFwcGxpY2F0aW9uL3ZuZC5rZGUua3ByZXNlbnRlciJdLFsia3B0IiwiYXBwbGljYXRpb24vdm5kLmtkZS5rcHJlc2VudGVyIl0sWyJrcHh4IiwiYXBwbGljYXRpb24vdm5kLmRzLWtleXBvaW50Il0sWyJrc3AiLCJhcHBsaWNhdGlvbi92bmQua2RlLmtzcHJlYWQiXSxbImt0ciIsImFwcGxpY2F0aW9uL3ZuZC5rYWhvb3R6Il0sWyJrdHgiLCJpbWFnZS9rdHgiXSxbImt0eDIiLCJpbWFnZS9rdHgyIl0sWyJrdHoiLCJhcHBsaWNhdGlvbi92bmQua2Fob290eiJdLFsia3dkIiwiYXBwbGljYXRpb24vdm5kLmtkZS5rd29yZCJdLFsia3d0IiwiYXBwbGljYXRpb24vdm5kLmtkZS5rd29yZCJdLFsibGFzeG1sIiwiYXBwbGljYXRpb24vdm5kLmxhcy5sYXMreG1sIl0sWyJsYXRleCIsImFwcGxpY2F0aW9uL3gtbGF0ZXgiXSxbImxiZCIsImFwcGxpY2F0aW9uL3ZuZC5sbGFtYWdyYXBoaWNzLmxpZmUtYmFsYW5jZS5kZXNrdG9wIl0sWyJsYmUiLCJhcHBsaWNhdGlvbi92bmQubGxhbWFncmFwaGljcy5saWZlLWJhbGFuY2UuZXhjaGFuZ2UreG1sIl0sWyJsZXMiLCJhcHBsaWNhdGlvbi92bmQuaGhlLmxlc3Nvbi1wbGF5ZXIiXSxbImxlc3MiLCJ0ZXh0L2xlc3MiXSxbImxnciIsImFwcGxpY2F0aW9uL2xncit4bWwiXSxbImxoYSIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsibGluazY2IiwiYXBwbGljYXRpb24vdm5kLnJvdXRlNjYubGluazY2K3htbCJdLFsibGlzdCIsInRleHQvcGxhaW4iXSxbImxpc3QzODIwIiwiYXBwbGljYXRpb24vdm5kLmlibS5tb2RjYXAiXSxbImxpc3RhZnAiLCJhcHBsaWNhdGlvbi92bmQuaWJtLm1vZGNhcCJdLFsibGl0Y29mZmVlIiwidGV4dC9jb2ZmZWVzY3JpcHQiXSxbImxuayIsImFwcGxpY2F0aW9uL3gtbXMtc2hvcnRjdXQiXSxbImxvZyIsInRleHQvcGxhaW4iXSxbImxvc3R4bWwiLCJhcHBsaWNhdGlvbi9sb3N0K3htbCJdLFsibHJmIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0sWyJscm0iLCJhcHBsaWNhdGlvbi92bmQubXMtbHJtIl0sWyJsdGYiLCJhcHBsaWNhdGlvbi92bmQuZnJvZ2Fucy5sdGYiXSxbImx1YSIsInRleHQveC1sdWEiXSxbImx1YWMiLCJhcHBsaWNhdGlvbi94LWx1YS1ieXRlY29kZSJdLFsibHZwIiwiYXVkaW8vdm5kLmx1Y2VudC52b2ljZSJdLFsibHdwIiwiYXBwbGljYXRpb24vdm5kLmxvdHVzLXdvcmRwcm8iXSxbImx6aCIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsibTF2IiwidmlkZW8vbXBlZyJdLFsibTJhIiwiYXVkaW8vbXBlZyJdLFsibTJ2IiwidmlkZW8vbXBlZyJdLFsibTNhIiwiYXVkaW8vbXBlZyJdLFsibTN1IiwidGV4dC9wbGFpbiJdLFsibTN1OCIsImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIl0sWyJtNGEiLCJhdWRpby94LW00YSJdLFsibTRwIiwiYXBwbGljYXRpb24vbXA0Il0sWyJtNHMiLCJ2aWRlby9pc28uc2VnbWVudCJdLFsibTR1IiwiYXBwbGljYXRpb24vdm5kLm1wZWd1cmwiXSxbIm00diIsInZpZGVvL3gtbTR2Il0sWyJtMTMiLCJhcHBsaWNhdGlvbi94LW1zbWVkaWF2aWV3Il0sWyJtMTQiLCJhcHBsaWNhdGlvbi94LW1zbWVkaWF2aWV3Il0sWyJtMjEiLCJhcHBsaWNhdGlvbi9tcDIxIl0sWyJtYSIsImFwcGxpY2F0aW9uL21hdGhlbWF0aWNhIl0sWyJtYWRzIiwiYXBwbGljYXRpb24vbWFkcyt4bWwiXSxbIm1hZWkiLCJhcHBsaWNhdGlvbi9tbXQtYWVpK3htbCJdLFsibWFnIiwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5jaGFydCJdLFsibWFrZXIiLCJhcHBsaWNhdGlvbi92bmQuZnJhbWVtYWtlciJdLFsibWFuIiwidGV4dC90cm9mZiJdLFsibWFuaWZlc3QiLCJ0ZXh0L2NhY2hlLW1hbmlmZXN0Il0sWyJtYXAiLCJhcHBsaWNhdGlvbi9qc29uIl0sWyJtYXIiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbIm1hcmtkb3duIiwidGV4dC9tYXJrZG93biJdLFsibWF0aG1sIiwiYXBwbGljYXRpb24vbWF0aG1sK3htbCJdLFsibWIiLCJhcHBsaWNhdGlvbi9tYXRoZW1hdGljYSJdLFsibWJrIiwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tYmsiXSxbIm1ib3giLCJhcHBsaWNhdGlvbi9tYm94Il0sWyJtYzEiLCJhcHBsaWNhdGlvbi92bmQubWVkY2FsY2RhdGEiXSxbIm1jZCIsImFwcGxpY2F0aW9uL3ZuZC5tY2QiXSxbIm1jdXJsIiwidGV4dC92bmQuY3VybC5tY3VybCJdLFsibWQiLCJ0ZXh0L21hcmtkb3duIl0sWyJtZGIiLCJhcHBsaWNhdGlvbi94LW1zYWNjZXNzIl0sWyJtZGkiLCJpbWFnZS92bmQubXMtbW9kaSJdLFsibWR4IiwidGV4dC9tZHgiXSxbIm1lIiwidGV4dC90cm9mZiJdLFsibWVzaCIsIm1vZGVsL21lc2giXSxbIm1ldGE0IiwiYXBwbGljYXRpb24vbWV0YWxpbms0K3htbCJdLFsibWV0YWxpbmsiLCJhcHBsaWNhdGlvbi9tZXRhbGluayt4bWwiXSxbIm1ldHMiLCJhcHBsaWNhdGlvbi9tZXRzK3htbCJdLFsibWZtIiwiYXBwbGljYXRpb24vdm5kLm1mbXAiXSxbIm1mdCIsImFwcGxpY2F0aW9uL3Jwa2ktbWFuaWZlc3QiXSxbIm1ncCIsImFwcGxpY2F0aW9uL3ZuZC5vc2dlby5tYXBndWlkZS5wYWNrYWdlIl0sWyJtZ3oiLCJhcHBsaWNhdGlvbi92bmQucHJvdGV1cy5tYWdhemluZSJdLFsibWlkIiwiYXVkaW8vbWlkaSJdLFsibWlkaSIsImF1ZGlvL21pZGkiXSxbIm1pZSIsImFwcGxpY2F0aW9uL3gtbWllIl0sWyJtaWYiLCJhcHBsaWNhdGlvbi92bmQubWlmIl0sWyJtaW1lIiwibWVzc2FnZS9yZmM4MjIiXSxbIm1qMiIsInZpZGVvL21qMiJdLFsibWpwMiIsInZpZGVvL21qMiJdLFsibWpzIiwiYXBwbGljYXRpb24vamF2YXNjcmlwdCJdLFsibWszZCIsInZpZGVvL3gtbWF0cm9za2EiXSxbIm1rYSIsImF1ZGlvL3gtbWF0cm9za2EiXSxbIm1rZCIsInRleHQveC1tYXJrZG93biJdLFsibWtzIiwidmlkZW8veC1tYXRyb3NrYSJdLFsibWt2IiwidmlkZW8veC1tYXRyb3NrYSJdLFsibWxwIiwiYXBwbGljYXRpb24vdm5kLmRvbGJ5Lm1scCJdLFsibW1kIiwiYXBwbGljYXRpb24vdm5kLmNoaXBudXRzLmthcmFva2UtbW1kIl0sWyJtbWYiLCJhcHBsaWNhdGlvbi92bmQuc21hZiJdLFsibW1sIiwidGV4dC9tYXRobWwiXSxbIm1tciIsImltYWdlL3ZuZC5mdWppeGVyb3guZWRtaWNzLW1tciJdLFsibW5nIiwidmlkZW8veC1tbmciXSxbIm1ueSIsImFwcGxpY2F0aW9uL3gtbXNtb25leSJdLFsibW9iaSIsImFwcGxpY2F0aW9uL3gtbW9iaXBvY2tldC1lYm9vayJdLFsibW9kcyIsImFwcGxpY2F0aW9uL21vZHMreG1sIl0sWyJtb3YiLCJ2aWRlby9xdWlja3RpbWUiXSxbIm1vdmllIiwidmlkZW8veC1zZ2ktbW92aWUiXSxbIm1wMiIsImF1ZGlvL21wZWciXSxbIm1wMmEiLCJhdWRpby9tcGVnIl0sWyJtcDMiLCJhdWRpby9tcGVnIl0sWyJtcDQiLCJ2aWRlby9tcDQiXSxbIm1wNGEiLCJhdWRpby9tcDQiXSxbIm1wNHMiLCJhcHBsaWNhdGlvbi9tcDQiXSxbIm1wNHYiLCJ2aWRlby9tcDQiXSxbIm1wMjEiLCJhcHBsaWNhdGlvbi9tcDIxIl0sWyJtcGMiLCJhcHBsaWNhdGlvbi92bmQubW9waHVuLmNlcnRpZmljYXRlIl0sWyJtcGQiLCJhcHBsaWNhdGlvbi9kYXNoK3htbCJdLFsibXBlIiwidmlkZW8vbXBlZyJdLFsibXBlZyIsInZpZGVvL21wZWciXSxbIm1wZyIsInZpZGVvL21wZWciXSxbIm1wZzQiLCJ2aWRlby9tcDQiXSxbIm1wZ2EiLCJhdWRpby9tcGVnIl0sWyJtcGtnIiwiYXBwbGljYXRpb24vdm5kLmFwcGxlLmluc3RhbGxlcit4bWwiXSxbIm1wbSIsImFwcGxpY2F0aW9uL3ZuZC5ibHVlaWNlLm11bHRpcGFzcyJdLFsibXBuIiwiYXBwbGljYXRpb24vdm5kLm1vcGh1bi5hcHBsaWNhdGlvbiJdLFsibXBwIiwiYXBwbGljYXRpb24vdm5kLm1zLXByb2plY3QiXSxbIm1wdCIsImFwcGxpY2F0aW9uL3ZuZC5tcy1wcm9qZWN0Il0sWyJtcHkiLCJhcHBsaWNhdGlvbi92bmQuaWJtLm1pbmlwYXkiXSxbIm1xeSIsImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMubXF5Il0sWyJtcmMiLCJhcHBsaWNhdGlvbi9tYXJjIl0sWyJtcmN4IiwiYXBwbGljYXRpb24vbWFyY3htbCt4bWwiXSxbIm1zIiwidGV4dC90cm9mZiJdLFsibXNjbWwiLCJhcHBsaWNhdGlvbi9tZWRpYXNlcnZlcmNvbnRyb2wreG1sIl0sWyJtc2VlZCIsImFwcGxpY2F0aW9uL3ZuZC5mZHNuLm1zZWVkIl0sWyJtc2VxIiwiYXBwbGljYXRpb24vdm5kLm1zZXEiXSxbIm1zZiIsImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5tc2YiXSxbIm1zZyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vdXRsb29rIl0sWyJtc2giLCJtb2RlbC9tZXNoIl0sWyJtc2kiLCJhcHBsaWNhdGlvbi94LW1zZG93bmxvYWQiXSxbIm1zbCIsImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMubXNsIl0sWyJtc20iLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbIm1zcCIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsibXN0eSIsImFwcGxpY2F0aW9uL3ZuZC5tdXZlZS5zdHlsZSJdLFsibXRsIiwibW9kZWwvbXRsIl0sWyJtdHMiLCJtb2RlbC92bmQubXRzIl0sWyJtdXMiLCJhcHBsaWNhdGlvbi92bmQubXVzaWNpYW4iXSxbIm11c2QiLCJhcHBsaWNhdGlvbi9tbXQtdXNkK3htbCJdLFsibXVzaWN4bWwiLCJhcHBsaWNhdGlvbi92bmQucmVjb3JkYXJlLm11c2ljeG1sK3htbCJdLFsibXZiIiwiYXBwbGljYXRpb24veC1tc21lZGlhdmlldyJdLFsibXZ0IiwiYXBwbGljYXRpb24vdm5kLm1hcGJveC12ZWN0b3ItdGlsZSJdLFsibXdmIiwiYXBwbGljYXRpb24vdm5kLm1mZXIiXSxbIm14ZiIsImFwcGxpY2F0aW9uL214ZiJdLFsibXhsIiwiYXBwbGljYXRpb24vdm5kLnJlY29yZGFyZS5tdXNpY3htbCJdLFsibXhtZiIsImF1ZGlvL21vYmlsZS14bWYiXSxbIm14bWwiLCJhcHBsaWNhdGlvbi94dit4bWwiXSxbIm14cyIsImFwcGxpY2F0aW9uL3ZuZC50cmlzY2FwZS5teHMiXSxbIm14dSIsInZpZGVvL3ZuZC5tcGVndXJsIl0sWyJuLWdhZ2UiLCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLnN5bWJpYW4uaW5zdGFsbCJdLFsibjMiLCJ0ZXh0L24zIl0sWyJuYiIsImFwcGxpY2F0aW9uL21hdGhlbWF0aWNhIl0sWyJuYnAiLCJhcHBsaWNhdGlvbi92bmQud29sZnJhbS5wbGF5ZXIiXSxbIm5jIiwiYXBwbGljYXRpb24veC1uZXRjZGYiXSxbIm5jeCIsImFwcGxpY2F0aW9uL3gtZHRibmN4K3htbCJdLFsibmZvIiwidGV4dC94LW5mbyJdLFsibmdkYXQiLCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLmRhdGEiXSxbIm5pdGYiLCJhcHBsaWNhdGlvbi92bmQubml0ZiJdLFsibmx1IiwiYXBwbGljYXRpb24vdm5kLm5ldXJvbGFuZ3VhZ2Uubmx1Il0sWyJubWwiLCJhcHBsaWNhdGlvbi92bmQuZW5saXZlbiJdLFsibm5kIiwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LWRpcmVjdG9yeSJdLFsibm5zIiwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LXNlYWxlciJdLFsibm53IiwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LXdlYiJdLFsibnB4IiwiaW1hZ2Uvdm5kLm5ldC1mcHgiXSxbIm5xIiwiYXBwbGljYXRpb24vbi1xdWFkcyJdLFsibnNjIiwiYXBwbGljYXRpb24veC1jb25mZXJlbmNlIl0sWyJuc2YiLCJhcHBsaWNhdGlvbi92bmQubG90dXMtbm90ZXMiXSxbIm50IiwiYXBwbGljYXRpb24vbi10cmlwbGVzIl0sWyJudGYiLCJhcHBsaWNhdGlvbi92bmQubml0ZiJdLFsibnVtYmVycyIsImFwcGxpY2F0aW9uL3gtaXdvcmstbnVtYmVycy1zZmZudW1iZXJzIl0sWyJuemIiLCJhcHBsaWNhdGlvbi94LW56YiJdLFsib2EyIiwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXMyIl0sWyJvYTMiLCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czMiXSxbIm9hcyIsImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzIl0sWyJvYmQiLCJhcHBsaWNhdGlvbi94LW1zYmluZGVyIl0sWyJvYmd4IiwiYXBwbGljYXRpb24vdm5kLm9wZW5ibG94LmdhbWUreG1sIl0sWyJvYmoiLCJtb2RlbC9vYmoiXSxbIm9kYSIsImFwcGxpY2F0aW9uL29kYSJdLFsib2RiIiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5kYXRhYmFzZSJdLFsib2RjIiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5jaGFydCJdLFsib2RmIiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhIl0sWyJvZGZ0IiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhLXRlbXBsYXRlIl0sWyJvZGciLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmdyYXBoaWNzIl0sWyJvZGkiLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmltYWdlIl0sWyJvZG0iLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtbWFzdGVyIl0sWyJvZHAiLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvbiJdLFsib2RzIiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCJdLFsib2R0IiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0Il0sWyJvZ2EiLCJhdWRpby9vZ2ciXSxbIm9nZXgiLCJtb2RlbC92bmQub3BlbmdleCJdLFsib2dnIiwiYXVkaW8vb2dnIl0sWyJvZ3YiLCJ2aWRlby9vZ2ciXSxbIm9neCIsImFwcGxpY2F0aW9uL29nZyJdLFsib21kb2MiLCJhcHBsaWNhdGlvbi9vbWRvYyt4bWwiXSxbIm9uZXBrZyIsImFwcGxpY2F0aW9uL29uZW5vdGUiXSxbIm9uZXRtcCIsImFwcGxpY2F0aW9uL29uZW5vdGUiXSxbIm9uZXRvYyIsImFwcGxpY2F0aW9uL29uZW5vdGUiXSxbIm9uZXRvYzIiLCJhcHBsaWNhdGlvbi9vbmVub3RlIl0sWyJvcGYiLCJhcHBsaWNhdGlvbi9vZWJwcy1wYWNrYWdlK3htbCJdLFsib3BtbCIsInRleHQveC1vcG1sIl0sWyJvcHJjIiwiYXBwbGljYXRpb24vdm5kLnBhbG0iXSxbIm9wdXMiLCJhdWRpby9vZ2ciXSxbIm9yZyIsInRleHQveC1vcmciXSxbIm9zZiIsImFwcGxpY2F0aW9uL3ZuZC55YW1haGEub3BlbnNjb3JlZm9ybWF0Il0sWyJvc2ZwdmciLCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdC5vc2ZwdmcreG1sIl0sWyJvc20iLCJhcHBsaWNhdGlvbi92bmQub3BlbnN0cmVldG1hcC5kYXRhK3htbCJdLFsib3RjIiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5jaGFydC10ZW1wbGF0ZSJdLFsib3RmIiwiZm9udC9vdGYiXSxbIm90ZyIsImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZ3JhcGhpY3MtdGVtcGxhdGUiXSxbIm90aCIsImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC13ZWIiXSxbIm90aSIsImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuaW1hZ2UtdGVtcGxhdGUiXSxbIm90cCIsImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uLXRlbXBsYXRlIl0sWyJvdHMiLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0LXRlbXBsYXRlIl0sWyJvdHQiLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtdGVtcGxhdGUiXSxbIm92YSIsImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmEiXSxbIm92ZiIsImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmYiXSxbIm93bCIsImFwcGxpY2F0aW9uL3JkZit4bWwiXSxbIm94cHMiLCJhcHBsaWNhdGlvbi9veHBzIl0sWyJveHQiLCJhcHBsaWNhdGlvbi92bmQub3Blbm9mZmljZW9yZy5leHRlbnNpb24iXSxbInAiLCJ0ZXh0L3gtcGFzY2FsIl0sWyJwN2EiLCJhcHBsaWNhdGlvbi94LXBrY3M3LXNpZ25hdHVyZSJdLFsicDdiIiwiYXBwbGljYXRpb24veC1wa2NzNy1jZXJ0aWZpY2F0ZXMiXSxbInA3YyIsImFwcGxpY2F0aW9uL3BrY3M3LW1pbWUiXSxbInA3bSIsImFwcGxpY2F0aW9uL3BrY3M3LW1pbWUiXSxbInA3ciIsImFwcGxpY2F0aW9uL3gtcGtjczctY2VydHJlcXJlc3AiXSxbInA3cyIsImFwcGxpY2F0aW9uL3BrY3M3LXNpZ25hdHVyZSJdLFsicDgiLCJhcHBsaWNhdGlvbi9wa2NzOCJdLFsicDEwIiwiYXBwbGljYXRpb24veC1wa2NzMTAiXSxbInAxMiIsImFwcGxpY2F0aW9uL3gtcGtjczEyIl0sWyJwYWMiLCJhcHBsaWNhdGlvbi94LW5zLXByb3h5LWF1dG9jb25maWciXSxbInBhZ2VzIiwiYXBwbGljYXRpb24veC1pd29yay1wYWdlcy1zZmZwYWdlcyJdLFsicGFzIiwidGV4dC94LXBhc2NhbCJdLFsicGF3IiwiYXBwbGljYXRpb24vdm5kLnBhd2FhZmlsZSJdLFsicGJkIiwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjYiXSxbInBibSIsImltYWdlL3gtcG9ydGFibGUtYml0bWFwIl0sWyJwY2FwIiwiYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcCJdLFsicGNmIiwiYXBwbGljYXRpb24veC1mb250LXBjZiJdLFsicGNsIiwiYXBwbGljYXRpb24vdm5kLmhwLXBjbCJdLFsicGNseGwiLCJhcHBsaWNhdGlvbi92bmQuaHAtcGNseGwiXSxbInBjdCIsImltYWdlL3gtcGljdCJdLFsicGN1cmwiLCJhcHBsaWNhdGlvbi92bmQuY3VybC5wY3VybCJdLFsicGN4IiwiaW1hZ2UveC1wY3giXSxbInBkYiIsImFwcGxpY2F0aW9uL3gtcGlsb3QiXSxbInBkZSIsInRleHQveC1wcm9jZXNzaW5nIl0sWyJwZGYiLCJhcHBsaWNhdGlvbi9wZGYiXSxbInBlbSIsImFwcGxpY2F0aW9uL3gteDUwOS11c2VyLWNlcnQiXSxbInBmYSIsImFwcGxpY2F0aW9uL3gtZm9udC10eXBlMSJdLFsicGZiIiwiYXBwbGljYXRpb24veC1mb250LXR5cGUxIl0sWyJwZm0iLCJhcHBsaWNhdGlvbi94LWZvbnQtdHlwZTEiXSxbInBmciIsImFwcGxpY2F0aW9uL2ZvbnQtdGRwZnIiXSxbInBmeCIsImFwcGxpY2F0aW9uL3gtcGtjczEyIl0sWyJwZ20iLCJpbWFnZS94LXBvcnRhYmxlLWdyYXltYXAiXSxbInBnbiIsImFwcGxpY2F0aW9uL3gtY2hlc3MtcGduIl0sWyJwZ3AiLCJhcHBsaWNhdGlvbi9wZ3AiXSxbInBocCIsImFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwIl0sWyJwaHAzIiwiYXBwbGljYXRpb24veC1odHRwZC1waHAiXSxbInBocDQiLCJhcHBsaWNhdGlvbi94LWh0dHBkLXBocCJdLFsicGhwcyIsImFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwLXNvdXJjZSJdLFsicGh0bWwiLCJhcHBsaWNhdGlvbi94LWh0dHBkLXBocCJdLFsicGljIiwiaW1hZ2UveC1waWN0Il0sWyJwa2ciLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbInBraSIsImFwcGxpY2F0aW9uL3BraXhjbXAiXSxbInBraXBhdGgiLCJhcHBsaWNhdGlvbi9wa2l4LXBraXBhdGgiXSxbInBrcGFzcyIsImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5wa3Bhc3MiXSxbInBsIiwiYXBwbGljYXRpb24veC1wZXJsIl0sWyJwbGIiLCJhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctbGFyZ2UiXSxbInBsYyIsImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMucGxjIl0sWyJwbGYiLCJhcHBsaWNhdGlvbi92bmQucG9ja2V0bGVhcm4iXSxbInBscyIsImFwcGxpY2F0aW9uL3Bscyt4bWwiXSxbInBtIiwiYXBwbGljYXRpb24veC1wZXJsIl0sWyJwbWwiLCJhcHBsaWNhdGlvbi92bmQuY3RjLXBvc21sIl0sWyJwbmciLCJpbWFnZS9wbmciXSxbInBubSIsImltYWdlL3gtcG9ydGFibGUtYW55bWFwIl0sWyJwb3J0cGtnIiwiYXBwbGljYXRpb24vdm5kLm1hY3BvcnRzLnBvcnRwa2ciXSxbInBvdCIsImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50Il0sWyJwb3RtIiwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQucHJlc2VudGF0aW9uLm1hY3JvRW5hYmxlZC4xMiJdLFsicG90eCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50ZW1wbGF0ZSJdLFsicHBhIiwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQiXSxbInBwYW0iLCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5hZGRpbi5tYWNyb0VuYWJsZWQuMTIiXSxbInBwZCIsImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXBwZCJdLFsicHBtIiwiaW1hZ2UveC1wb3J0YWJsZS1waXhtYXAiXSxbInBwcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50Il0sWyJwcHNtIiwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGVzaG93Lm1hY3JvRW5hYmxlZC4xMiJdLFsicHBzeCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZXNob3ciXSxbInBwdCIsImFwcGxpY2F0aW9uL3Bvd2VycG9pbnQiXSxbInBwdG0iLCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5wcmVzZW50YXRpb24ubWFjcm9FbmFibGVkLjEyIl0sWyJwcHR4IiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbiJdLFsicHFhIiwiYXBwbGljYXRpb24vdm5kLnBhbG0iXSxbInByYyIsImFwcGxpY2F0aW9uL3gtcGlsb3QiXSxbInByZSIsImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1mcmVlbGFuY2UiXSxbInByZiIsImFwcGxpY2F0aW9uL3BpY3MtcnVsZXMiXSxbInByb3Z4IiwiYXBwbGljYXRpb24vcHJvdmVuYW5jZSt4bWwiXSxbInBzIiwiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJdLFsicHNiIiwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXNtYWxsIl0sWyJwc2QiLCJhcHBsaWNhdGlvbi94LXBob3Rvc2hvcCJdLFsicHNmIiwiYXBwbGljYXRpb24veC1mb250LWxpbnV4LXBzZiJdLFsicHNrY3htbCIsImFwcGxpY2F0aW9uL3Bza2MreG1sIl0sWyJwdGkiLCJpbWFnZS9wcnMucHRpIl0sWyJwdGlkIiwiYXBwbGljYXRpb24vdm5kLnB2aS5wdGlkMSJdLFsicHViIiwiYXBwbGljYXRpb24veC1tc3B1Ymxpc2hlciJdLFsicHZiIiwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXZhciJdLFsicHduIiwiYXBwbGljYXRpb24vdm5kLjNtLnBvc3QtaXQtbm90ZXMiXSxbInB5YSIsImF1ZGlvL3ZuZC5tcy1wbGF5cmVhZHkubWVkaWEucHlhIl0sWyJweXYiLCJ2aWRlby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5diJdLFsicWFtIiwiYXBwbGljYXRpb24vdm5kLmVwc29uLnF1aWNrYW5pbWUiXSxbInFibyIsImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFibyJdLFsicWZ4IiwiYXBwbGljYXRpb24vdm5kLmludHUucWZ4Il0sWyJxcHMiLCJhcHBsaWNhdGlvbi92bmQucHVibGlzaGFyZS1kZWx0YS10cmVlIl0sWyJxdCIsInZpZGVvL3F1aWNrdGltZSJdLFsicXdkIiwiYXBwbGljYXRpb24vdm5kLnF1YXJrLnF1YXJreHByZXNzIl0sWyJxd3QiLCJhcHBsaWNhdGlvbi92bmQucXVhcmsucXVhcmt4cHJlc3MiXSxbInF4YiIsImFwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcyJdLFsicXhkIiwiYXBwbGljYXRpb24vdm5kLnF1YXJrLnF1YXJreHByZXNzIl0sWyJxeGwiLCJhcHBsaWNhdGlvbi92bmQucXVhcmsucXVhcmt4cHJlc3MiXSxbInF4dCIsImFwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcyJdLFsicmEiLCJhdWRpby94LXJlYWxhdWRpbyJdLFsicmFtIiwiYXVkaW8veC1wbi1yZWFsYXVkaW8iXSxbInJhbWwiLCJhcHBsaWNhdGlvbi9yYW1sK3lhbWwiXSxbInJhcGQiLCJhcHBsaWNhdGlvbi9yb3V0ZS1hcGQreG1sIl0sWyJyYXIiLCJhcHBsaWNhdGlvbi94LXJhciJdLFsicmFzIiwiaW1hZ2UveC1jbXUtcmFzdGVyIl0sWyJyY3Byb2ZpbGUiLCJhcHBsaWNhdGlvbi92bmQuaXB1bnBsdWdnZWQucmNwcm9maWxlIl0sWyJyZGYiLCJhcHBsaWNhdGlvbi9yZGYreG1sIl0sWyJyZHoiLCJhcHBsaWNhdGlvbi92bmQuZGF0YS12aXNpb24ucmR6Il0sWyJyZWxvIiwiYXBwbGljYXRpb24vcDJwLW92ZXJsYXkreG1sIl0sWyJyZXAiLCJhcHBsaWNhdGlvbi92bmQuYnVzaW5lc3NvYmplY3RzIl0sWyJyZXMiLCJhcHBsaWNhdGlvbi94LWR0YnJlc291cmNlK3htbCJdLFsicmdiIiwiaW1hZ2UveC1yZ2IiXSxbInJpZiIsImFwcGxpY2F0aW9uL3JlZ2luZm8reG1sIl0sWyJyaXAiLCJhdWRpby92bmQucmlwIl0sWyJyaXMiLCJhcHBsaWNhdGlvbi94LXJlc2VhcmNoLWluZm8tc3lzdGVtcyJdLFsicmwiLCJhcHBsaWNhdGlvbi9yZXNvdXJjZS1saXN0cyt4bWwiXSxbInJsYyIsImltYWdlL3ZuZC5mdWppeGVyb3guZWRtaWNzLXJsYyJdLFsicmxkIiwiYXBwbGljYXRpb24vcmVzb3VyY2UtbGlzdHMtZGlmZit4bWwiXSxbInJtIiwiYXVkaW8veC1wbi1yZWFsYXVkaW8iXSxbInJtaSIsImF1ZGlvL21pZGkiXSxbInJtcCIsImF1ZGlvL3gtcG4tcmVhbGF1ZGlvLXBsdWdpbiJdLFsicm1zIiwiYXBwbGljYXRpb24vdm5kLmpjcC5qYXZhbWUubWlkbGV0LXJtcyJdLFsicm12YiIsImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWEtdmJyIl0sWyJybmMiLCJhcHBsaWNhdGlvbi9yZWxheC1uZy1jb21wYWN0LXN5bnRheCJdLFsicm5nIiwiYXBwbGljYXRpb24veG1sIl0sWyJyb2EiLCJhcHBsaWNhdGlvbi9ycGtpLXJvYSJdLFsicm9mZiIsInRleHQvdHJvZmYiXSxbInJwOSIsImFwcGxpY2F0aW9uL3ZuZC5jbG9hbnRvLnJwOSJdLFsicnBtIiwiYXVkaW8veC1wbi1yZWFsYXVkaW8tcGx1Z2luIl0sWyJycHNzIiwiYXBwbGljYXRpb24vdm5kLm5va2lhLnJhZGlvLXByZXNldHMiXSxbInJwc3QiLCJhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0Il0sWyJycSIsImFwcGxpY2F0aW9uL3NwYXJxbC1xdWVyeSJdLFsicnMiLCJhcHBsaWNhdGlvbi9ybHMtc2VydmljZXMreG1sIl0sWyJyc2EiLCJhcHBsaWNhdGlvbi94LXBrY3M3Il0sWyJyc2F0IiwiYXBwbGljYXRpb24vYXRzYy1yc2F0K3htbCJdLFsicnNkIiwiYXBwbGljYXRpb24vcnNkK3htbCJdLFsicnNoZWV0IiwiYXBwbGljYXRpb24vdXJjLXJlc3NoZWV0K3htbCJdLFsicnNzIiwiYXBwbGljYXRpb24vcnNzK3htbCJdLFsicnRmIiwidGV4dC9ydGYiXSxbInJ0eCIsInRleHQvcmljaHRleHQiXSxbInJ1biIsImFwcGxpY2F0aW9uL3gtbWFrZXNlbGYiXSxbInJ1c2QiLCJhcHBsaWNhdGlvbi9yb3V0ZS11c2QreG1sIl0sWyJydiIsInZpZGVvL3ZuZC5ybi1yZWFsdmlkZW8iXSxbInMiLCJ0ZXh0L3gtYXNtIl0sWyJzM20iLCJhdWRpby9zM20iXSxbInNhZiIsImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuc21hZi1hdWRpbyJdLFsic2FzcyIsInRleHQveC1zYXNzIl0sWyJzYm1sIiwiYXBwbGljYXRpb24vc2JtbCt4bWwiXSxbInNjIiwiYXBwbGljYXRpb24vdm5kLmlibS5zZWN1cmUtY29udGFpbmVyIl0sWyJzY2QiLCJhcHBsaWNhdGlvbi94LW1zc2NoZWR1bGUiXSxbInNjbSIsImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1zY3JlZW5jYW0iXSxbInNjcSIsImFwcGxpY2F0aW9uL3NjdnAtY3YtcmVxdWVzdCJdLFsic2NzIiwiYXBwbGljYXRpb24vc2N2cC1jdi1yZXNwb25zZSJdLFsic2NzcyIsInRleHQveC1zY3NzIl0sWyJzY3VybCIsInRleHQvdm5kLmN1cmwuc2N1cmwiXSxbInNkYSIsImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uZHJhdyJdLFsic2RjIiwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5jYWxjIl0sWyJzZGQiLCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmltcHJlc3MiXSxbInNka2QiLCJhcHBsaWNhdGlvbi92bmQuc29sZW50LnNka20reG1sIl0sWyJzZGttIiwiYXBwbGljYXRpb24vdm5kLnNvbGVudC5zZGttK3htbCJdLFsic2RwIiwiYXBwbGljYXRpb24vc2RwIl0sWyJzZHciLCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlciJdLFsic2VhIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0sWyJzZWUiLCJhcHBsaWNhdGlvbi92bmQuc2VlbWFpbCJdLFsic2VlZCIsImFwcGxpY2F0aW9uL3ZuZC5mZHNuLnNlZWQiXSxbInNlbWEiLCJhcHBsaWNhdGlvbi92bmQuc2VtYSJdLFsic2VtZCIsImFwcGxpY2F0aW9uL3ZuZC5zZW1kIl0sWyJzZW1mIiwiYXBwbGljYXRpb24vdm5kLnNlbWYiXSxbInNlbm1seCIsImFwcGxpY2F0aW9uL3Nlbm1sK3htbCJdLFsic2Vuc21seCIsImFwcGxpY2F0aW9uL3NlbnNtbCt4bWwiXSxbInNlciIsImFwcGxpY2F0aW9uL2phdmEtc2VyaWFsaXplZC1vYmplY3QiXSxbInNldHBheSIsImFwcGxpY2F0aW9uL3NldC1wYXltZW50LWluaXRpYXRpb24iXSxbInNldHJlZyIsImFwcGxpY2F0aW9uL3NldC1yZWdpc3RyYXRpb24taW5pdGlhdGlvbiJdLFsic2ZkLWhkc3R4IiwiYXBwbGljYXRpb24vdm5kLmh5ZHJvc3RhdGl4LnNvZi1kYXRhIl0sWyJzZnMiLCJhcHBsaWNhdGlvbi92bmQuc3BvdGZpcmUuc2ZzIl0sWyJzZnYiLCJ0ZXh0L3gtc2Z2Il0sWyJzZ2kiLCJpbWFnZS9zZ2kiXSxbInNnbCIsImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyLWdsb2JhbCJdLFsic2dtIiwidGV4dC9zZ21sIl0sWyJzZ21sIiwidGV4dC9zZ21sIl0sWyJzaCIsImFwcGxpY2F0aW9uL3gtc2giXSxbInNoYXIiLCJhcHBsaWNhdGlvbi94LXNoYXIiXSxbInNoZXgiLCJ0ZXh0L3NoZXgiXSxbInNoZiIsImFwcGxpY2F0aW9uL3NoZit4bWwiXSxbInNodG1sIiwidGV4dC9odG1sIl0sWyJzaWQiLCJpbWFnZS94LW1yc2lkLWltYWdlIl0sWyJzaWV2ZSIsImFwcGxpY2F0aW9uL3NpZXZlIl0sWyJzaWciLCJhcHBsaWNhdGlvbi9wZ3Atc2lnbmF0dXJlIl0sWyJzaWwiLCJhdWRpby9zaWxrIl0sWyJzaWxvIiwibW9kZWwvbWVzaCJdLFsic2lzIiwiYXBwbGljYXRpb24vdm5kLnN5bWJpYW4uaW5zdGFsbCJdLFsic2lzeCIsImFwcGxpY2F0aW9uL3ZuZC5zeW1iaWFuLmluc3RhbGwiXSxbInNpdCIsImFwcGxpY2F0aW9uL3gtc3R1ZmZpdCJdLFsic2l0eCIsImFwcGxpY2F0aW9uL3gtc3R1ZmZpdHgiXSxbInNpdiIsImFwcGxpY2F0aW9uL3NpZXZlIl0sWyJza2QiLCJhcHBsaWNhdGlvbi92bmQua29hbiJdLFsic2ttIiwiYXBwbGljYXRpb24vdm5kLmtvYW4iXSxbInNrcCIsImFwcGxpY2F0aW9uL3ZuZC5rb2FuIl0sWyJza3QiLCJhcHBsaWNhdGlvbi92bmQua29hbiJdLFsic2xkbSIsImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnNsaWRlLm1hY3JvZW5hYmxlZC4xMiJdLFsic2xkeCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZSJdLFsic2xpbSIsInRleHQvc2xpbSJdLFsic2xtIiwidGV4dC9zbGltIl0sWyJzbHMiLCJhcHBsaWNhdGlvbi9yb3V0ZS1zLXRzaWQreG1sIl0sWyJzbHQiLCJhcHBsaWNhdGlvbi92bmQuZXBzb24uc2FsdCJdLFsic20iLCJhcHBsaWNhdGlvbi92bmQuc3RlcG1hbmlhLnN0ZXBjaGFydCJdLFsic21mIiwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5tYXRoIl0sWyJzbWkiLCJhcHBsaWNhdGlvbi9zbWlsIl0sWyJzbWlsIiwiYXBwbGljYXRpb24vc21pbCJdLFsic212IiwidmlkZW8veC1zbXYiXSxbInNtemlwIiwiYXBwbGljYXRpb24vdm5kLnN0ZXBtYW5pYS5wYWNrYWdlIl0sWyJzbmQiLCJhdWRpby9iYXNpYyJdLFsic25mIiwiYXBwbGljYXRpb24veC1mb250LXNuZiJdLFsic28iLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbInNwYyIsImFwcGxpY2F0aW9uL3gtcGtjczctY2VydGlmaWNhdGVzIl0sWyJzcGR4IiwidGV4dC9zcGR4Il0sWyJzcGYiLCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnNtYWYtcGhyYXNlIl0sWyJzcGwiLCJhcHBsaWNhdGlvbi94LWZ1dHVyZXNwbGFzaCJdLFsic3BvdCIsInRleHQvdm5kLmluM2Quc3BvdCJdLFsic3BwIiwiYXBwbGljYXRpb24vc2N2cC12cC1yZXNwb25zZSJdLFsic3BxIiwiYXBwbGljYXRpb24vc2N2cC12cC1yZXF1ZXN0Il0sWyJzcHgiLCJhdWRpby9vZ2ciXSxbInNxbCIsImFwcGxpY2F0aW9uL3gtc3FsIl0sWyJzcmMiLCJhcHBsaWNhdGlvbi94LXdhaXMtc291cmNlIl0sWyJzcnQiLCJhcHBsaWNhdGlvbi94LXN1YnJpcCJdLFsic3J1IiwiYXBwbGljYXRpb24vc3J1K3htbCJdLFsic3J4IiwiYXBwbGljYXRpb24vc3BhcnFsLXJlc3VsdHMreG1sIl0sWyJzc2RsIiwiYXBwbGljYXRpb24vc3NkbCt4bWwiXSxbInNzZSIsImFwcGxpY2F0aW9uL3ZuZC5rb2Rhay1kZXNjcmlwdG9yIl0sWyJzc2YiLCJhcHBsaWNhdGlvbi92bmQuZXBzb24uc3NmIl0sWyJzc21sIiwiYXBwbGljYXRpb24vc3NtbCt4bWwiXSxbInNzdCIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsic3QiLCJhcHBsaWNhdGlvbi92bmQuc2FpbGluZ3RyYWNrZXIudHJhY2siXSxbInN0YyIsImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmNhbGMudGVtcGxhdGUiXSxbInN0ZCIsImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXcudGVtcGxhdGUiXSxbInN0ZiIsImFwcGxpY2F0aW9uL3ZuZC53dC5zdGYiXSxbInN0aSIsImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmltcHJlc3MudGVtcGxhdGUiXSxbInN0ayIsImFwcGxpY2F0aW9uL2h5cGVyc3R1ZGlvIl0sWyJzdGwiLCJtb2RlbC9zdGwiXSxbInN0cHgiLCJtb2RlbC9zdGVwK3htbCJdLFsic3RweHoiLCJtb2RlbC9zdGVwLXhtbCt6aXAiXSxbInN0cHoiLCJtb2RlbC9zdGVwK3ppcCJdLFsic3RyIiwiYXBwbGljYXRpb24vdm5kLnBnLmZvcm1hdCJdLFsic3R3IiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLnRlbXBsYXRlIl0sWyJzdHlsIiwidGV4dC9zdHlsdXMiXSxbInN0eWx1cyIsInRleHQvc3R5bHVzIl0sWyJzdWIiLCJ0ZXh0L3ZuZC5kdmIuc3VidGl0bGUiXSxbInN1cyIsImFwcGxpY2F0aW9uL3ZuZC5zdXMtY2FsZW5kYXIiXSxbInN1c3AiLCJhcHBsaWNhdGlvbi92bmQuc3VzLWNhbGVuZGFyIl0sWyJzdjRjcGlvIiwiYXBwbGljYXRpb24veC1zdjRjcGlvIl0sWyJzdjRjcmMiLCJhcHBsaWNhdGlvbi94LXN2NGNyYyJdLFsic3ZjIiwiYXBwbGljYXRpb24vdm5kLmR2Yi5zZXJ2aWNlIl0sWyJzdmQiLCJhcHBsaWNhdGlvbi92bmQuc3ZkIl0sWyJzdmciLCJpbWFnZS9zdmcreG1sIl0sWyJzdmd6IiwiaW1hZ2Uvc3ZnK3htbCJdLFsic3dhIiwiYXBwbGljYXRpb24veC1kaXJlY3RvciJdLFsic3dmIiwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giXSxbInN3aSIsImFwcGxpY2F0aW9uL3ZuZC5hcmlzdGFuZXR3b3Jrcy5zd2kiXSxbInN3aWR0YWciLCJhcHBsaWNhdGlvbi9zd2lkK3htbCJdLFsic3hjIiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuY2FsYyJdLFsic3hkIiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuZHJhdyJdLFsic3hnIiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLmdsb2JhbCJdLFsic3hpIiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuaW1wcmVzcyJdLFsic3htIiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwubWF0aCJdLFsic3h3IiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyIl0sWyJ0IiwidGV4dC90cm9mZiJdLFsidDMiLCJhcHBsaWNhdGlvbi94LXQzdm0taW1hZ2UiXSxbInQzOCIsImltYWdlL3QzOCJdLFsidGFnbGV0IiwiYXBwbGljYXRpb24vdm5kLm15bmZjIl0sWyJ0YW8iLCJhcHBsaWNhdGlvbi92bmQudGFvLmludGVudC1tb2R1bGUtYXJjaGl2ZSJdLFsidGFwIiwiaW1hZ2Uvdm5kLnRlbmNlbnQudGFwIl0sWyJ0YXIiLCJhcHBsaWNhdGlvbi94LXRhciJdLFsidGNhcCIsImFwcGxpY2F0aW9uL3ZuZC4zZ3BwMi50Y2FwIl0sWyJ0Y2wiLCJhcHBsaWNhdGlvbi94LXRjbCJdLFsidGQiLCJhcHBsaWNhdGlvbi91cmMtdGFyZ2V0ZGVzYyt4bWwiXSxbInRlYWNoZXIiLCJhcHBsaWNhdGlvbi92bmQuc21hcnQudGVhY2hlciJdLFsidGVpIiwiYXBwbGljYXRpb24vdGVpK3htbCJdLFsidGVpY29ycHVzIiwiYXBwbGljYXRpb24vdGVpK3htbCJdLFsidGV4IiwiYXBwbGljYXRpb24veC10ZXgiXSxbInRleGkiLCJhcHBsaWNhdGlvbi94LXRleGluZm8iXSxbInRleGluZm8iLCJhcHBsaWNhdGlvbi94LXRleGluZm8iXSxbInRleHQiLCJ0ZXh0L3BsYWluIl0sWyJ0ZmkiLCJhcHBsaWNhdGlvbi90aHJhdWQreG1sIl0sWyJ0Zm0iLCJhcHBsaWNhdGlvbi94LXRleC10Zm0iXSxbInRmeCIsImltYWdlL3RpZmYtZngiXSxbInRnYSIsImltYWdlL3gtdGdhIl0sWyJ0Z3oiLCJhcHBsaWNhdGlvbi94LXRhciJdLFsidGhteCIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2V0aGVtZSJdLFsidGlmIiwiaW1hZ2UvdGlmZiJdLFsidGlmZiIsImltYWdlL3RpZmYiXSxbInRrIiwiYXBwbGljYXRpb24veC10Y2wiXSxbInRtbyIsImFwcGxpY2F0aW9uL3ZuZC50bW9iaWxlLWxpdmV0diJdLFsidG9tbCIsImFwcGxpY2F0aW9uL3RvbWwiXSxbInRvcnJlbnQiLCJhcHBsaWNhdGlvbi94LWJpdHRvcnJlbnQiXSxbInRwbCIsImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdG9vbC10ZW1wbGF0ZSJdLFsidHB0IiwiYXBwbGljYXRpb24vdm5kLnRyaWQudHB0Il0sWyJ0ciIsInRleHQvdHJvZmYiXSxbInRyYSIsImFwcGxpY2F0aW9uL3ZuZC50cnVlYXBwIl0sWyJ0cmlnIiwiYXBwbGljYXRpb24vdHJpZyJdLFsidHJtIiwiYXBwbGljYXRpb24veC1tc3Rlcm1pbmFsIl0sWyJ0cyIsInZpZGVvL21wMnQiXSxbInRzZCIsImFwcGxpY2F0aW9uL3RpbWVzdGFtcGVkLWRhdGEiXSxbInRzdiIsInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXMiXSxbInR0YyIsImZvbnQvY29sbGVjdGlvbiJdLFsidHRmIiwiZm9udC90dGYiXSxbInR0bCIsInRleHQvdHVydGxlIl0sWyJ0dG1sIiwiYXBwbGljYXRpb24vdHRtbCt4bWwiXSxbInR3ZCIsImFwcGxpY2F0aW9uL3ZuZC5zaW10ZWNoLW1pbmRtYXBwZXIiXSxbInR3ZHMiLCJhcHBsaWNhdGlvbi92bmQuc2ltdGVjaC1taW5kbWFwcGVyIl0sWyJ0eGQiLCJhcHBsaWNhdGlvbi92bmQuZ2Vub21hdGl4LnR1eGVkbyJdLFsidHhmIiwiYXBwbGljYXRpb24vdm5kLm1vYml1cy50eGYiXSxbInR4dCIsInRleHQvcGxhaW4iXSxbInU4ZHNuIiwibWVzc2FnZS9nbG9iYWwtZGVsaXZlcnktc3RhdHVzIl0sWyJ1OGhkciIsIm1lc3NhZ2UvZ2xvYmFsLWhlYWRlcnMiXSxbInU4bWRuIiwibWVzc2FnZS9nbG9iYWwtZGlzcG9zaXRpb24tbm90aWZpY2F0aW9uIl0sWyJ1OG1zZyIsIm1lc3NhZ2UvZ2xvYmFsIl0sWyJ1MzIiLCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluIl0sWyJ1YmoiLCJhcHBsaWNhdGlvbi91Ympzb24iXSxbInVkZWIiLCJhcHBsaWNhdGlvbi94LWRlYmlhbi1wYWNrYWdlIl0sWyJ1ZmQiLCJhcHBsaWNhdGlvbi92bmQudWZkbCJdLFsidWZkbCIsImFwcGxpY2F0aW9uL3ZuZC51ZmRsIl0sWyJ1bHgiLCJhcHBsaWNhdGlvbi94LWdsdWx4Il0sWyJ1bWoiLCJhcHBsaWNhdGlvbi92bmQudW1hamluIl0sWyJ1bml0eXdlYiIsImFwcGxpY2F0aW9uL3ZuZC51bml0eSJdLFsidW9tbCIsImFwcGxpY2F0aW9uL3ZuZC51b21sK3htbCJdLFsidXJpIiwidGV4dC91cmktbGlzdCJdLFsidXJpcyIsInRleHQvdXJpLWxpc3QiXSxbInVybHMiLCJ0ZXh0L3VyaS1saXN0Il0sWyJ1c2R6IiwibW9kZWwvdm5kLnVzZHoremlwIl0sWyJ1c3RhciIsImFwcGxpY2F0aW9uL3gtdXN0YXIiXSxbInV0eiIsImFwcGxpY2F0aW9uL3ZuZC51aXEudGhlbWUiXSxbInV1IiwidGV4dC94LXV1ZW5jb2RlIl0sWyJ1dmEiLCJhdWRpby92bmQuZGVjZS5hdWRpbyJdLFsidXZkIiwiYXBwbGljYXRpb24vdm5kLmRlY2UuZGF0YSJdLFsidXZmIiwiYXBwbGljYXRpb24vdm5kLmRlY2UuZGF0YSJdLFsidXZnIiwiaW1hZ2Uvdm5kLmRlY2UuZ3JhcGhpYyJdLFsidXZoIiwidmlkZW8vdm5kLmRlY2UuaGQiXSxbInV2aSIsImltYWdlL3ZuZC5kZWNlLmdyYXBoaWMiXSxbInV2bSIsInZpZGVvL3ZuZC5kZWNlLm1vYmlsZSJdLFsidXZwIiwidmlkZW8vdm5kLmRlY2UucGQiXSxbInV2cyIsInZpZGVvL3ZuZC5kZWNlLnNkIl0sWyJ1dnQiLCJhcHBsaWNhdGlvbi92bmQuZGVjZS50dG1sK3htbCJdLFsidXZ1IiwidmlkZW8vdm5kLnV2dnUubXA0Il0sWyJ1dnYiLCJ2aWRlby92bmQuZGVjZS52aWRlbyJdLFsidXZ2YSIsImF1ZGlvL3ZuZC5kZWNlLmF1ZGlvIl0sWyJ1dnZkIiwiYXBwbGljYXRpb24vdm5kLmRlY2UuZGF0YSJdLFsidXZ2ZiIsImFwcGxpY2F0aW9uL3ZuZC5kZWNlLmRhdGEiXSxbInV2dmciLCJpbWFnZS92bmQuZGVjZS5ncmFwaGljIl0sWyJ1dnZoIiwidmlkZW8vdm5kLmRlY2UuaGQiXSxbInV2dmkiLCJpbWFnZS92bmQuZGVjZS5ncmFwaGljIl0sWyJ1dnZtIiwidmlkZW8vdm5kLmRlY2UubW9iaWxlIl0sWyJ1dnZwIiwidmlkZW8vdm5kLmRlY2UucGQiXSxbInV2dnMiLCJ2aWRlby92bmQuZGVjZS5zZCJdLFsidXZ2dCIsImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnR0bWwreG1sIl0sWyJ1dnZ1IiwidmlkZW8vdm5kLnV2dnUubXA0Il0sWyJ1dnZ2IiwidmlkZW8vdm5kLmRlY2UudmlkZW8iXSxbInV2dngiLCJhcHBsaWNhdGlvbi92bmQuZGVjZS51bnNwZWNpZmllZCJdLFsidXZ2eiIsImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcCJdLFsidXZ4IiwiYXBwbGljYXRpb24vdm5kLmRlY2UudW5zcGVjaWZpZWQiXSxbInV2eiIsImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcCJdLFsidmJveCIsImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12Ym94Il0sWyJ2Ym94LWV4dHBhY2siLCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmJveC1leHRwYWNrIl0sWyJ2Y2FyZCIsInRleHQvdmNhcmQiXSxbInZjZCIsImFwcGxpY2F0aW9uL3gtY2RsaW5rIl0sWyJ2Y2YiLCJ0ZXh0L3gtdmNhcmQiXSxbInZjZyIsImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdmNhcmQiXSxbInZjcyIsInRleHQveC12Y2FsZW5kYXIiXSxbInZjeCIsImFwcGxpY2F0aW9uL3ZuZC52Y3giXSxbInZkaSIsImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12ZGkiXSxbInZkcyIsIm1vZGVsL3ZuZC5zYXAudmRzIl0sWyJ2aGQiLCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmhkIl0sWyJ2aXMiLCJhcHBsaWNhdGlvbi92bmQudmlzaW9uYXJ5Il0sWyJ2aXYiLCJ2aWRlby92bmQudml2byJdLFsidmxjIiwiYXBwbGljYXRpb24vdmlkZW9sYW4iXSxbInZtZGsiLCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdm1kayJdLFsidm9iIiwidmlkZW8veC1tcy12b2IiXSxbInZvciIsImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyIl0sWyJ2b3giLCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluIl0sWyJ2cm1sIiwibW9kZWwvdnJtbCJdLFsidnNkIiwiYXBwbGljYXRpb24vdm5kLnZpc2lvIl0sWyJ2c2YiLCJhcHBsaWNhdGlvbi92bmQudnNmIl0sWyJ2c3MiLCJhcHBsaWNhdGlvbi92bmQudmlzaW8iXSxbInZzdCIsImFwcGxpY2F0aW9uL3ZuZC52aXNpbyJdLFsidnN3IiwiYXBwbGljYXRpb24vdm5kLnZpc2lvIl0sWyJ2dGYiLCJpbWFnZS92bmQudmFsdmUuc291cmNlLnRleHR1cmUiXSxbInZ0dCIsInRleHQvdnR0Il0sWyJ2dHUiLCJtb2RlbC92bmQudnR1Il0sWyJ2eG1sIiwiYXBwbGljYXRpb24vdm9pY2V4bWwreG1sIl0sWyJ3M2QiLCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIl0sWyJ3YWQiLCJhcHBsaWNhdGlvbi94LWRvb20iXSxbIndhZGwiLCJhcHBsaWNhdGlvbi92bmQuc3VuLndhZGwreG1sIl0sWyJ3YXIiLCJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUiXSxbIndhc20iLCJhcHBsaWNhdGlvbi93YXNtIl0sWyJ3YXYiLCJhdWRpby94LXdhdiJdLFsid2F4IiwiYXVkaW8veC1tcy13YXgiXSxbIndibXAiLCJpbWFnZS92bmQud2FwLndibXAiXSxbIndicyIsImFwcGxpY2F0aW9uL3ZuZC5jcml0aWNhbHRvb2xzLndicyt4bWwiXSxbIndieG1sIiwiYXBwbGljYXRpb24vd2J4bWwiXSxbIndjbSIsImFwcGxpY2F0aW9uL3ZuZC5tcy13b3JrcyJdLFsid2RiIiwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmtzIl0sWyJ3ZHAiLCJpbWFnZS92bmQubXMtcGhvdG8iXSxbIndlYmEiLCJhdWRpby93ZWJtIl0sWyJ3ZWJhcHAiLCJhcHBsaWNhdGlvbi94LXdlYi1hcHAtbWFuaWZlc3QranNvbiJdLFsid2VibSIsInZpZGVvL3dlYm0iXSxbIndlYm1hbmlmZXN0IiwiYXBwbGljYXRpb24vbWFuaWZlc3QranNvbiJdLFsid2VicCIsImltYWdlL3dlYnAiXSxbIndnIiwiYXBwbGljYXRpb24vdm5kLnBtaS53aWRnZXQiXSxbIndndCIsImFwcGxpY2F0aW9uL3dpZGdldCJdLFsid2tzIiwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmtzIl0sWyJ3bSIsInZpZGVvL3gtbXMtd20iXSxbIndtYSIsImF1ZGlvL3gtbXMtd21hIl0sWyJ3bWQiLCJhcHBsaWNhdGlvbi94LW1zLXdtZCJdLFsid21mIiwiaW1hZ2Uvd21mIl0sWyJ3bWwiLCJ0ZXh0L3ZuZC53YXAud21sIl0sWyJ3bWxjIiwiYXBwbGljYXRpb24vd21sYyJdLFsid21scyIsInRleHQvdm5kLndhcC53bWxzY3JpcHQiXSxbIndtbHNjIiwiYXBwbGljYXRpb24vdm5kLndhcC53bWxzY3JpcHRjIl0sWyJ3bXYiLCJ2aWRlby94LW1zLXdtdiJdLFsid214IiwidmlkZW8veC1tcy13bXgiXSxbIndteiIsImFwcGxpY2F0aW9uL3gtbXNtZXRhZmlsZSJdLFsid29mZiIsImZvbnQvd29mZiJdLFsid29mZjIiLCJmb250L3dvZmYyIl0sWyJ3b3JkIiwiYXBwbGljYXRpb24vbXN3b3JkIl0sWyJ3cGQiLCJhcHBsaWNhdGlvbi92bmQud29yZHBlcmZlY3QiXSxbIndwbCIsImFwcGxpY2F0aW9uL3ZuZC5tcy13cGwiXSxbIndwcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy13b3JrcyJdLFsid3FkIiwiYXBwbGljYXRpb24vdm5kLndxZCJdLFsid3JpIiwiYXBwbGljYXRpb24veC1tc3dyaXRlIl0sWyJ3cmwiLCJtb2RlbC92cm1sIl0sWyJ3c2MiLCJtZXNzYWdlL3ZuZC53ZmEud3NjIl0sWyJ3c2RsIiwiYXBwbGljYXRpb24vd3NkbCt4bWwiXSxbIndzcG9saWN5IiwiYXBwbGljYXRpb24vd3Nwb2xpY3kreG1sIl0sWyJ3dGIiLCJhcHBsaWNhdGlvbi92bmQud2VidHVyYm8iXSxbInd2eCIsInZpZGVvL3gtbXMtd3Z4Il0sWyJ4M2QiLCJtb2RlbC94M2QreG1sIl0sWyJ4M2RiIiwibW9kZWwveDNkK2Zhc3RpbmZvc2V0Il0sWyJ4M2RieiIsIm1vZGVsL3gzZCtiaW5hcnkiXSxbIngzZHYiLCJtb2RlbC94M2QtdnJtbCJdLFsieDNkdnoiLCJtb2RlbC94M2QrdnJtbCJdLFsieDNkeiIsIm1vZGVsL3gzZCt4bWwiXSxbIngzMiIsImFwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1iaW4iXSxbInhfYiIsIm1vZGVsL3ZuZC5wYXJhc29saWQudHJhbnNtaXQuYmluYXJ5Il0sWyJ4X3QiLCJtb2RlbC92bmQucGFyYXNvbGlkLnRyYW5zbWl0LnRleHQiXSxbInhhbWwiLCJhcHBsaWNhdGlvbi94YW1sK3htbCJdLFsieGFwIiwiYXBwbGljYXRpb24veC1zaWx2ZXJsaWdodC1hcHAiXSxbInhhciIsImFwcGxpY2F0aW9uL3ZuZC54YXJhIl0sWyJ4YXYiLCJhcHBsaWNhdGlvbi94Y2FwLWF0dCt4bWwiXSxbInhiYXAiLCJhcHBsaWNhdGlvbi94LW1zLXhiYXAiXSxbInhiZCIsImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzLmJpbmRlciJdLFsieGJtIiwiaW1hZ2UveC14Yml0bWFwIl0sWyJ4Y2EiLCJhcHBsaWNhdGlvbi94Y2FwLWNhcHMreG1sIl0sWyJ4Y3MiLCJhcHBsaWNhdGlvbi9jYWxlbmRhcit4bWwiXSxbInhkZiIsImFwcGxpY2F0aW9uL3hjYXAtZGlmZit4bWwiXSxbInhkbSIsImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0reG1sIl0sWyJ4ZHAiLCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGRwK3htbCJdLFsieGRzc2MiLCJhcHBsaWNhdGlvbi9kc3NjK3htbCJdLFsieGR3IiwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kb2N1d29ya3MiXSxbInhlbCIsImFwcGxpY2F0aW9uL3hjYXAtZWwreG1sIl0sWyJ4ZW5jIiwiYXBwbGljYXRpb24veGVuYyt4bWwiXSxbInhlciIsImFwcGxpY2F0aW9uL3BhdGNoLW9wcy1lcnJvcit4bWwiXSxbInhmZGYiLCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGZkZiJdLFsieGZkbCIsImFwcGxpY2F0aW9uL3ZuZC54ZmRsIl0sWyJ4aHQiLCJhcHBsaWNhdGlvbi94aHRtbCt4bWwiXSxbInhodG1sIiwiYXBwbGljYXRpb24veGh0bWwreG1sIl0sWyJ4aHZtbCIsImFwcGxpY2F0aW9uL3h2K3htbCJdLFsieGlmIiwiaW1hZ2Uvdm5kLnhpZmYiXSxbInhsIiwiYXBwbGljYXRpb24vZXhjZWwiXSxbInhsYSIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCJdLFsieGxhbSIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQuMTIiXSxbInhsYyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCJdLFsieGxmIiwiYXBwbGljYXRpb24veGxpZmYreG1sIl0sWyJ4bG0iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwiXSxbInhscyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCJdLFsieGxzYiIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLjEyIl0sWyJ4bHNtIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvRW5hYmxlZC4xMiJdLFsieGxzeCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Il0sWyJ4bHQiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwiXSxbInhsdG0iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGVtcGxhdGUubWFjcm9FbmFibGVkLjEyIl0sWyJ4bHR4IiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGUiXSxbInhsdyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCJdLFsieG0iLCJhdWRpby94bSJdLFsieG1sIiwiYXBwbGljYXRpb24veG1sIl0sWyJ4bnMiLCJhcHBsaWNhdGlvbi94Y2FwLW5zK3htbCJdLFsieG8iLCJhcHBsaWNhdGlvbi92bmQub2xwYy1zdWdhciJdLFsieG9wIiwiYXBwbGljYXRpb24veG9wK3htbCJdLFsieHBpIiwiYXBwbGljYXRpb24veC14cGluc3RhbGwiXSxbInhwbCIsImFwcGxpY2F0aW9uL3hwcm9jK3htbCJdLFsieHBtIiwiaW1hZ2UveC14cGl4bWFwIl0sWyJ4cHIiLCJhcHBsaWNhdGlvbi92bmQuaXMteHByIl0sWyJ4cHMiLCJhcHBsaWNhdGlvbi92bmQubXMteHBzZG9jdW1lbnQiXSxbInhwdyIsImFwcGxpY2F0aW9uL3ZuZC5pbnRlcmNvbi5mb3JtbmV0Il0sWyJ4cHgiLCJhcHBsaWNhdGlvbi92bmQuaW50ZXJjb24uZm9ybW5ldCJdLFsieHNkIiwiYXBwbGljYXRpb24veG1sIl0sWyJ4c2wiLCJhcHBsaWNhdGlvbi94bWwiXSxbInhzbHQiLCJhcHBsaWNhdGlvbi94c2x0K3htbCJdLFsieHNtIiwiYXBwbGljYXRpb24vdm5kLnN5bmNtbCt4bWwiXSxbInhzcGYiLCJhcHBsaWNhdGlvbi94c3BmK3htbCJdLFsieHVsIiwiYXBwbGljYXRpb24vdm5kLm1vemlsbGEueHVsK3htbCJdLFsieHZtIiwiYXBwbGljYXRpb24veHYreG1sIl0sWyJ4dm1sIiwiYXBwbGljYXRpb24veHYreG1sIl0sWyJ4d2QiLCJpbWFnZS94LXh3aW5kb3dkdW1wIl0sWyJ4eXoiLCJjaGVtaWNhbC94LXh5eiJdLFsieHoiLCJhcHBsaWNhdGlvbi94LXh6Il0sWyJ5YW1sIiwidGV4dC95YW1sIl0sWyJ5YW5nIiwiYXBwbGljYXRpb24veWFuZyJdLFsieWluIiwiYXBwbGljYXRpb24veWluK3htbCJdLFsieW1sIiwidGV4dC95YW1sIl0sWyJ5bXAiLCJ0ZXh0L3gtc3VzZS15bXAiXSxbInoiLCJhcHBsaWNhdGlvbi94LWNvbXByZXNzIl0sWyJ6MSIsImFwcGxpY2F0aW9uL3gtem1hY2hpbmUiXSxbInoyIiwiYXBwbGljYXRpb24veC16bWFjaGluZSJdLFsiejMiLCJhcHBsaWNhdGlvbi94LXptYWNoaW5lIl0sWyJ6NCIsImFwcGxpY2F0aW9uL3gtem1hY2hpbmUiXSxbIno1IiwiYXBwbGljYXRpb24veC16bWFjaGluZSJdLFsiejYiLCJhcHBsaWNhdGlvbi94LXptYWNoaW5lIl0sWyJ6NyIsImFwcGxpY2F0aW9uL3gtem1hY2hpbmUiXSxbIno4IiwiYXBwbGljYXRpb24veC16bWFjaGluZSJdLFsiemF6IiwiYXBwbGljYXRpb24vdm5kLnp6YXp6LmRlY2sreG1sIl0sWyJ6aXAiLCJhcHBsaWNhdGlvbi96aXAiXSxbInppciIsImFwcGxpY2F0aW9uL3ZuZC56dWwiXSxbInppcnoiLCJhcHBsaWNhdGlvbi92bmQuenVsIl0sWyJ6bW0iLCJhcHBsaWNhdGlvbi92bmQuaGFuZGhlbGQtZW50ZXJ0YWlubWVudCt4bWwiXSxbInpzaCIsInRleHQveC1zY3JpcHR6c2giXV0pO2Z1bmN0aW9uIFooZSx0LG4pe2NvbnN0IGk9ZnVuY3Rpb24oZSl7Y29uc3R7bmFtZTp0fT1lO2lmKHQmJi0xIT09dC5sYXN0SW5kZXhPZigiLiIpJiYhZS50eXBlKXtjb25zdCBuPXQuc3BsaXQoIi4iKS5wb3AoKS50b0xvd2VyQ2FzZSgpLGk9US5nZXQobik7aSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInR5cGUiLHt2YWx1ZTppLHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwfSl9cmV0dXJuIGV9KGUpLHt3ZWJraXRSZWxhdGl2ZVBhdGg6YX09ZSxvPSJzdHJpbmciPT10eXBlb2YgdD90OiJzdHJpbmciPT10eXBlb2YgYSYmYS5sZW5ndGg+MD9hOmAuLyR7ZS5uYW1lfWA7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBpLnBhdGgmJkooaSwicGF0aCIsbyksdm9pZCAwIT09biYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGksImhhbmRsZSIse3ZhbHVlOm4sd3JpdGFibGU6ITEsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITB9KSxKKGksInJlbGF0aXZlUGF0aCIsbyksaX1mdW5jdGlvbiBKKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwfSl9Y29uc3QgZWU9WyIuRFNfU3RvcmUiLCJUaHVtYnMuZGIiXTtmdW5jdGlvbiB0ZShlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lfWZ1bmN0aW9uIG5lKGUpe3JldHVybiBlLmZpbHRlcihlPT4tMT09PWVlLmluZGV4T2YoZS5uYW1lKSl9ZnVuY3Rpb24gaWUoZSl7aWYobnVsbD09PWUpcmV0dXJuW107Y29uc3QgdD1bXTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3QgaT1lW25dO3QucHVzaChpKX1yZXR1cm4gdH1mdW5jdGlvbiBhZShlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZS53ZWJraXRHZXRBc0VudHJ5KXJldHVybiByZShlKTtjb25zdCB0PWUud2Via2l0R2V0QXNFbnRyeSgpO3JldHVybiB0JiZ0LmlzRGlyZWN0b3J5P2xlKHQpOnJlKGUsdCl9ZnVuY3Rpb24gb2UoZSl7cmV0dXJuIGUucmVkdWNlKChlLHQpPT5bLi4uZSwuLi5BcnJheS5pc0FycmF5KHQpP29lKHQpOlt0XV0sW10pfWZ1bmN0aW9uIHJlKGUsdCl7cmV0dXJuIFgodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBuO2lmKGdsb2JhbFRoaXMuaXNTZWN1cmVDb250ZXh0JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRBc0ZpbGVTeXN0ZW1IYW5kbGUpe2NvbnN0IHQ9eWllbGQgZS5nZXRBc0ZpbGVTeXN0ZW1IYW5kbGUoKTtpZihudWxsPT09dCl0aHJvdyBuZXcgRXJyb3IoYCR7ZX0gaXMgbm90IGEgRmlsZWApO2lmKHZvaWQgMCE9PXQpe2NvbnN0IGU9eWllbGQgdC5nZXRGaWxlKCk7cmV0dXJuIGUuaGFuZGxlPXQsWihlKX19Y29uc3QgaT1lLmdldEFzRmlsZSgpO2lmKCFpKXRocm93IG5ldyBFcnJvcihgJHtlfSBpcyBub3QgYSBGaWxlYCk7cmV0dXJuIFooaSxudWxsIT09KG49bnVsbD09dD92b2lkIDA6dC5mdWxsUGF0aCkmJnZvaWQgMCE9PW4/bjp2b2lkIDApfSl9ZnVuY3Rpb24gc2UoZSl7cmV0dXJuIFgodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiBlLmlzRGlyZWN0b3J5P2xlKGUpOmZ1bmN0aW9uKGUpe3JldHVybiBYKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gbmV3IFByb21pc2UoKHQsbik9PntlLmZpbGUobj0+e2NvbnN0IGk9WihuLGUuZnVsbFBhdGgpO3QoaSl9LGU9PntuKGUpfSl9KX0pfShlKX0pfWZ1bmN0aW9uIGxlKGUpe2NvbnN0IHQ9ZS5jcmVhdGVSZWFkZXIoKTtyZXR1cm4gbmV3IFByb21pc2UoKGUsbik9Pntjb25zdCBpPVtdOyFmdW5jdGlvbiBhKCl7dC5yZWFkRW50cmllcyh0PT5YKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZih0Lmxlbmd0aCl7Y29uc3QgZT1Qcm9taXNlLmFsbCh0Lm1hcChzZSkpO2kucHVzaChlKSxhKCl9ZWxzZSB0cnl7Y29uc3QgdD15aWVsZCBQcm9taXNlLmFsbChpKTtlKHQpfWNhdGNoKGUpe24oZSl9fSksZT0+e24oZSl9KX0oKX0pfXZhciBkZT1uKDgxMDcpO2Z1bmN0aW9uIGNlKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBnZShlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGhlKGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHVlKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYoaT1pLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4saSl9cmV0dXJuIG59ZnVuY3Rpb24gcGUoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/dWUoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2ZlKGUsdCxuW3RdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnVlKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBmZShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gbWUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsPT1uKXJldHVybjt2YXIgaSxhLG89W10scj0hMCxzPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShyPShpPW4ubmV4dCgpKS5kb25lKSYmKG8ucHVzaChpLnZhbHVlKSwhdHx8by5sZW5ndGghPT10KTtyPSEwKTt9Y2F0Y2goZSl7cz0hMCxhPWV9ZmluYWxseXt0cnl7cnx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fXJldHVybiBvfShlLHQpfHxoZShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gaGUoZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGdlKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/Z2UoZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGdlKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAsaT1uZXcgQXJyYXkodCk7bjx0O24rKylpW25dPWVbbl07cmV0dXJuIGl9dmFyIGJlPSJmdW5jdGlvbiI9PXR5cGVvZiBkZT9kZTpkZS5kZWZhdWx0LHZlPSJmaWxlLWludmFsaWQtdHlwZSIseGU9ImZpbGUtdG9vLWxhcmdlIix5ZT0iZmlsZS10b28tc21hbGwiLHdlPSJ0b28tbWFueS1maWxlcyIsa2U9ZnVuY3Rpb24oKXt2YXIgZT0oYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiIiKS5zcGxpdCgiLCIpLHQ9ZS5sZW5ndGg+MT8ib25lIG9mICIuY29uY2F0KGUuam9pbigiLCAiKSk6ZVswXTtyZXR1cm57Y29kZTp2ZSxtZXNzYWdlOiJGaWxlIHR5cGUgbXVzdCBiZSAiLmNvbmNhdCh0KX19LEFlPWZ1bmN0aW9uKGUpe3JldHVybntjb2RlOnhlLG1lc3NhZ2U6IkZpbGUgaXMgbGFyZ2VyIHRoYW4gIi5jb25jYXQoZSwiICIpLmNvbmNhdCgxPT09ZT8iYnl0ZSI6ImJ5dGVzIil9fSxDZT1mdW5jdGlvbihlKXtyZXR1cm57Y29kZTp5ZSxtZXNzYWdlOiJGaWxlIGlzIHNtYWxsZXIgdGhhbiAiLmNvbmNhdChlLCIgIikuY29uY2F0KDE9PT1lPyJieXRlIjoiYnl0ZXMiKX19LEVlPXtjb2RlOndlLG1lc3NhZ2U6IlRvbyBtYW55IGZpbGVzIn07ZnVuY3Rpb24gU2UoZSx0KXt2YXIgbj0iYXBwbGljYXRpb24veC1tb3otZmlsZSI9PT1lLnR5cGV8fGJlKGUsdCk7cmV0dXJuW24sbj9udWxsOmtlKHQpXX1mdW5jdGlvbiBEZShlLHQsbil7aWYoWWUoZS5zaXplKSlpZihZZSh0KSYmWWUobikpe2lmKGUuc2l6ZT5uKXJldHVyblshMSxBZShuKV07aWYoZS5zaXplPHQpcmV0dXJuWyExLENlKHQpXX1lbHNle2lmKFllKHQpJiZlLnNpemU8dClyZXR1cm5bITEsQ2UodCldO2lmKFllKG4pJiZlLnNpemU+bilyZXR1cm5bITEsQWUobildfXJldHVyblshMCxudWxsXX1mdW5jdGlvbiBZZShlKXtyZXR1cm4gbnVsbCE9ZX1mdW5jdGlvbiBUZShlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZD9lLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk6dm9pZCAwIT09ZS5jYW5jZWxCdWJibGUmJmUuY2FuY2VsQnViYmxlfWZ1bmN0aW9uIEZlKGUpe3JldHVybiBlLmRhdGFUcmFuc2Zlcj9BcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGUuZGF0YVRyYW5zZmVyLnR5cGVzLGZ1bmN0aW9uKGUpe3JldHVybiJGaWxlcyI9PT1lfHwiYXBwbGljYXRpb24veC1tb3otZmlsZSI9PT1lfSk6ISFlLnRhcmdldCYmISFlLnRhcmdldC5maWxlc31mdW5jdGlvbiBJZShlKXtlLnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gX2UoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkobj4xP24tMTowKSxhPTE7YTxuO2ErKylpW2EtMV09YXJndW1lbnRzW2FdO3JldHVybiB0LnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIVRlKGUpJiZ0JiZ0LmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KGkpKSxUZShlKX0pfX1mdW5jdGlvbiBNZShlKXtyZXR1cm4iYXVkaW8vKiI9PT1lfHwidmlkZW8vKiI9PT1lfHwiaW1hZ2UvKiI9PT1lfHwidGV4dC8qIj09PWV8fCJhcHBsaWNhdGlvbi8qIj09PWV8fC9cdytcL1stKy5cd10rL2cudGVzdChlKX1mdW5jdGlvbiBOZShlKXtyZXR1cm4vXi4qXC5bXHddKyQvLnRlc3QoZSl9dmFyIE9lPVsiY2hpbGRyZW4iXSxSZT1bIm9wZW4iXSxqZT1bInJlZktleSIsInJvbGUiLCJvbktleURvd24iLCJvbkZvY3VzIiwib25CbHVyIiwib25DbGljayIsIm9uRHJhZ0VudGVyIiwib25EcmFnT3ZlciIsIm9uRHJhZ0xlYXZlIiwib25Ecm9wIl0sUGU9WyJyZWZLZXkiLCJvbkNoYW5nZSIsIm9uQ2xpY2siXTtmdW5jdGlvbiB6ZShlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gQmUoZSl9KGUpfHxmdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxVZShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBMZShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciBpLGEsbz1bXSxyPSEwLHM9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKHI9KGk9bi5uZXh0KCkpLmRvbmUpJiYoby5wdXNoKGkudmFsdWUpLCF0fHxvLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtzPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgYX19cmV0dXJuIG99KGUsdCl8fFVlKGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBVZShlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gQmUoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9CZShlLHQpOnZvaWQgMH19ZnVuY3Rpb24gQmUoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxpPW5ldyBBcnJheSh0KTtuPHQ7bisrKWlbbl09ZVtuXTtyZXR1cm4gaX1mdW5jdGlvbiBIZShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKGk9aS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLGkpfXJldHVybiBufWZ1bmN0aW9uIHFlKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP0hlKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbih0KXtWZShlLHQsblt0XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpIZShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gVmUoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uICRlKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixpLGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLGksYT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihpPTA7aTxvLmxlbmd0aDtpKyspbj1vW2ldLHQuaW5kZXhPZihuKT49MHx8KGFbbl09ZVtuXSk7cmV0dXJuIGF9KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKW49b1tpXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYoYVtuXT1lW25dKX1yZXR1cm4gYX12YXIgV2U9KDAsYS5mb3J3YXJkUmVmKShmdW5jdGlvbihlLHQpe3ZhciBuPWUuY2hpbGRyZW4saT1YZSgkZShlLE9lKSksbz1pLm9wZW4scj0kZShpLFJlKTtyZXR1cm4oMCxhLnVzZUltcGVyYXRpdmVIYW5kbGUpKHQsZnVuY3Rpb24oKXtyZXR1cm57b3BlbjpvfX0sW29dKSxhLmNyZWF0ZUVsZW1lbnQoYS5GcmFnbWVudCxudWxsLG4ocWUocWUoe30scikse30se29wZW46b30pKSl9KTtXZS5kaXNwbGF5TmFtZT0iRHJvcHpvbmUiO3ZhciBLZT17ZGlzYWJsZWQ6ITEsZ2V0RmlsZXNGcm9tRXZlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIFgodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0ZShlKSYmdGUoZS5kYXRhVHJhbnNmZXIpP2Z1bmN0aW9uKGUsdCl7cmV0dXJuIFgodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKGUuaXRlbXMpe2NvbnN0IG49aWUoZS5pdGVtcykuZmlsdGVyKGU9PiJmaWxlIj09PWUua2luZCk7aWYoImRyb3AiIT09dClyZXR1cm4gbjtyZXR1cm4gbmUob2UoeWllbGQgUHJvbWlzZS5hbGwobi5tYXAoYWUpKSkpfXJldHVybiBuZShpZShlLmZpbGVzKS5tYXAoZT0+WihlKSkpfSl9KGUuZGF0YVRyYW5zZmVyLGUudHlwZSk6ZnVuY3Rpb24oZSl7cmV0dXJuIHRlKGUpJiZ0ZShlLnRhcmdldCl9KGUpP2Z1bmN0aW9uKGUpe3JldHVybiBpZShlLnRhcmdldC5maWxlcykubWFwKGU9PlooZSkpfShlKTpBcnJheS5pc0FycmF5KGUpJiZlLmV2ZXJ5KGU9PiJnZXRGaWxlImluIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldEZpbGUpP2Z1bmN0aW9uKGUpe3JldHVybiBYKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4oeWllbGQgUHJvbWlzZS5hbGwoZS5tYXAoZT0+ZS5nZXRGaWxlKCkpKSkubWFwKGU9PlooZSkpfSl9KGUpOltdfSl9LG1heFNpemU6MS8wLG1pblNpemU6MCxtdWx0aXBsZTohMCxtYXhGaWxlczowLHByZXZlbnREcm9wT25Eb2N1bWVudDohMCxub0NsaWNrOiExLG5vS2V5Ym9hcmQ6ITEsbm9EcmFnOiExLG5vRHJhZ0V2ZW50c0J1YmJsaW5nOiExLHZhbGlkYXRvcjpudWxsLHVzZUZzQWNjZXNzQXBpOiExLGF1dG9Gb2N1czohMX07V2UuZGVmYXVsdFByb3BzPUtlLFdlLnByb3BUeXBlcz17Y2hpbGRyZW46Sy5mdW5jLGFjY2VwdDpLLm9iamVjdE9mKEsuYXJyYXlPZihLLnN0cmluZykpLG11bHRpcGxlOksuYm9vbCxwcmV2ZW50RHJvcE9uRG9jdW1lbnQ6Sy5ib29sLG5vQ2xpY2s6Sy5ib29sLG5vS2V5Ym9hcmQ6Sy5ib29sLG5vRHJhZzpLLmJvb2wsbm9EcmFnRXZlbnRzQnViYmxpbmc6Sy5ib29sLG1pblNpemU6Sy5udW1iZXIsbWF4U2l6ZTpLLm51bWJlcixtYXhGaWxlczpLLm51bWJlcixkaXNhYmxlZDpLLmJvb2wsZ2V0RmlsZXNGcm9tRXZlbnQ6Sy5mdW5jLG9uRmlsZURpYWxvZ0NhbmNlbDpLLmZ1bmMsb25GaWxlRGlhbG9nT3BlbjpLLmZ1bmMsdXNlRnNBY2Nlc3NBcGk6Sy5ib29sLGF1dG9Gb2N1czpLLmJvb2wsb25EcmFnRW50ZXI6Sy5mdW5jLG9uRHJhZ0xlYXZlOksuZnVuYyxvbkRyYWdPdmVyOksuZnVuYyxvbkRyb3A6Sy5mdW5jLG9uRHJvcEFjY2VwdGVkOksuZnVuYyxvbkRyb3BSZWplY3RlZDpLLmZ1bmMsb25FcnJvcjpLLmZ1bmMsdmFsaWRhdG9yOksuZnVuY307dmFyIEdlPXtpc0ZvY3VzZWQ6ITEsaXNGaWxlRGlhbG9nQWN0aXZlOiExLGlzRHJhZ0FjdGl2ZTohMSxpc0RyYWdBY2NlcHQ6ITEsaXNEcmFnUmVqZWN0OiExLGFjY2VwdGVkRmlsZXM6W10sZmlsZVJlamVjdGlvbnM6W119O2Z1bmN0aW9uIFhlKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9cWUocWUoe30sS2UpLGUpLG49dC5hY2NlcHQsaT10LmRpc2FibGVkLG89dC5nZXRGaWxlc0Zyb21FdmVudCxyPXQubWF4U2l6ZSxzPXQubWluU2l6ZSxsPXQubXVsdGlwbGUsZD10Lm1heEZpbGVzLGM9dC5vbkRyYWdFbnRlcix1PXQub25EcmFnTGVhdmUscD10Lm9uRHJhZ092ZXIsZj10Lm9uRHJvcCxtPXQub25Ecm9wQWNjZXB0ZWQsaD10Lm9uRHJvcFJlamVjdGVkLGc9dC5vbkZpbGVEaWFsb2dDYW5jZWwsYj10Lm9uRmlsZURpYWxvZ09wZW4sdj10LnVzZUZzQWNjZXNzQXBpLHg9dC5hdXRvRm9jdXMseT10LnByZXZlbnREcm9wT25Eb2N1bWVudCx3PXQubm9DbGljayxrPXQubm9LZXlib2FyZCxBPXQubm9EcmFnLEM9dC5ub0RyYWdFdmVudHNCdWJibGluZyxFPXQub25FcnJvcixTPXQudmFsaWRhdG9yLEQ9KDAsYS51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXtpZihZZShlKSlyZXR1cm4gT2JqZWN0LmVudHJpZXMoZSkucmVkdWNlKGZ1bmN0aW9uKGUsdCl7dmFyIG49bWUodCwyKSxpPW5bMF0sYT1uWzFdO3JldHVybltdLmNvbmNhdChjZShlKSxbaV0sY2UoYSkpfSxbXSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBNZShlKXx8TmUoZSl9KS5qb2luKCIsIil9KG4pfSxbbl0pLFk9KDAsYS51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXtpZihZZShlKSl7dmFyIHQ9T2JqZWN0LmVudHJpZXMoZSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3ZhciB0PW1lKGUsMiksbj10WzBdLGk9dFsxXSxhPSEwO3JldHVybiBNZShuKXx8KGNvbnNvbGUud2FybignU2tpcHBlZCAiJy5jb25jYXQobiwnIiBiZWNhdXNlIGl0IGlzIG5vdCBhIHZhbGlkIE1JTUUgdHlwZS4gQ2hlY2sgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9NSU1FX3R5cGVzL0NvbW1vbl90eXBlcyBmb3IgYSBsaXN0IG9mIHZhbGlkIE1JTUUgdHlwZXMuJykpLGE9ITEpLEFycmF5LmlzQXJyYXkoaSkmJmkuZXZlcnkoTmUpfHwoY29uc29sZS53YXJuKCdTa2lwcGVkICInLmNvbmNhdChuLCciIGJlY2F1c2UgYW4gaW52YWxpZCBmaWxlIGV4dGVuc2lvbiB3YXMgcHJvdmlkZWQuJykpLGE9ITEpLGF9KS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXt2YXIgbj1tZSh0LDIpLGk9blswXSxhPW5bMV07cmV0dXJuIHBlKHBlKHt9LGUpLHt9LGZlKHt9LGksYSkpfSx7fSk7cmV0dXJuW3tkZXNjcmlwdGlvbjoiRmlsZXMiLGFjY2VwdDp0fV19cmV0dXJuIGV9KG4pfSxbbl0pLFQ9KDAsYS51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBiP2I6WmV9LFtiXSksRj0oMCxhLnVzZU1lbW8pKGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGc/ZzpaZX0sW2ddKSxJPSgwLGEudXNlUmVmKShudWxsKSxfPSgwLGEudXNlUmVmKShudWxsKSxNPUxlKCgwLGEudXNlUmVkdWNlcikoUWUsR2UpLDIpLE49TVswXSxPPU1bMV0sUj1OLmlzRm9jdXNlZCxqPU4uaXNGaWxlRGlhbG9nQWN0aXZlLFA9KDAsYS51c2VSZWYpKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuaXNTZWN1cmVDb250ZXh0JiZ2JiYic2hvd09wZW5GaWxlUGlja2VyImluIHdpbmRvdyksej1mdW5jdGlvbigpeyFQLmN1cnJlbnQmJmomJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtfLmN1cnJlbnQmJihfLmN1cnJlbnQuZmlsZXMubGVuZ3RofHwoTyh7dHlwZToiY2xvc2VEaWFsb2cifSksRigpKSl9LDMwMCl9OygwLGEudXNlRWZmZWN0KShmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHosITEpLGZ1bmN0aW9uKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix6LCExKX19LFtfLGosRixQXSk7dmFyIEw9KDAsYS51c2VSZWYpKFtdKSxVPWZ1bmN0aW9uKGUpe0kuY3VycmVudCYmSS5jdXJyZW50LmNvbnRhaW5zKGUudGFyZ2V0KXx8KGUucHJldmVudERlZmF1bHQoKSxMLmN1cnJlbnQ9W10pfTsoMCxhLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXtyZXR1cm4geSYmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIixJZSwhMSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsVSwhMSkpLGZ1bmN0aW9uKCl7eSYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIixJZSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJvcCIsVSkpfX0sW0kseV0pLCgwLGEudXNlRWZmZWN0KShmdW5jdGlvbigpe3JldHVybiFpJiZ4JiZJLmN1cnJlbnQmJkkuY3VycmVudC5mb2N1cygpLGZ1bmN0aW9uKCl7fX0sW0kseCxpXSk7dmFyIEI9KDAsYS51c2VDYWxsYmFjaykoZnVuY3Rpb24oZSl7RT9FKGUpOmNvbnNvbGUuZXJyb3IoZSl9LFtFXSksSD0oMCxhLnVzZUNhbGxiYWNrKShmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5wZXJzaXN0KCksbmUoZSksTC5jdXJyZW50PVtdLmNvbmNhdCh6ZShMLmN1cnJlbnQpLFtlLnRhcmdldF0pLEZlKGUpJiZQcm9taXNlLnJlc29sdmUobyhlKSkudGhlbihmdW5jdGlvbih0KXtpZighVGUoZSl8fEMpe3ZhciBuPXQubGVuZ3RoLGk9bj4wJiZmdW5jdGlvbihlKXt2YXIgdD1lLmZpbGVzLG49ZS5hY2NlcHQsaT1lLm1pblNpemUsYT1lLm1heFNpemUsbz1lLm11bHRpcGxlLHI9ZS5tYXhGaWxlcyxzPWUudmFsaWRhdG9yO3JldHVybiEoIW8mJnQubGVuZ3RoPjF8fG8mJnI+PTEmJnQubGVuZ3RoPnIpJiZ0LmV2ZXJ5KGZ1bmN0aW9uKGUpe3ZhciB0PW1lKFNlKGUsbiksMSlbMF0sbz1tZShEZShlLGksYSksMSlbMF0scj1zP3MoZSk6bnVsbDtyZXR1cm4gdCYmbyYmIXJ9KX0oe2ZpbGVzOnQsYWNjZXB0OkQsbWluU2l6ZTpzLG1heFNpemU6cixtdWx0aXBsZTpsLG1heEZpbGVzOmQsdmFsaWRhdG9yOlN9KTtPKHtpc0RyYWdBY2NlcHQ6aSxpc0RyYWdSZWplY3Q6bj4wJiYhaSxpc0RyYWdBY3RpdmU6ITAsdHlwZToic2V0RHJhZ2dlZEZpbGVzIn0pLGMmJmMoZSl9fSkuY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIEIoZSl9KX0sW28sYyxCLEMsRCxzLHIsbCxkLFNdKSxxPSgwLGEudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnBlcnNpc3QoKSxuZShlKTt2YXIgdD1GZShlKTtpZih0JiZlLmRhdGFUcmFuc2Zlcil0cnl7ZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD0iY29weSJ9Y2F0Y2goZSl7fXJldHVybiB0JiZwJiZwKGUpLCExfSxbcCxDXSksVj0oMCxhLnVzZUNhbGxiYWNrKShmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5wZXJzaXN0KCksbmUoZSk7dmFyIHQ9TC5jdXJyZW50LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gSS5jdXJyZW50JiZJLmN1cnJlbnQuY29udGFpbnMoZSl9KSxuPXQuaW5kZXhPZihlLnRhcmdldCk7LTEhPT1uJiZ0LnNwbGljZShuLDEpLEwuY3VycmVudD10LHQubGVuZ3RoPjB8fChPKHt0eXBlOiJzZXREcmFnZ2VkRmlsZXMiLGlzRHJhZ0FjdGl2ZTohMSxpc0RyYWdBY2NlcHQ6ITEsaXNEcmFnUmVqZWN0OiExfSksRmUoZSkmJnUmJnUoZSkpfSxbSSx1LENdKSwkPSgwLGEudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKGUsdCl7dmFyIG49W10saT1bXTtlLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9TGUoU2UoZSxEKSwyKSxhPXRbMF0sbz10WzFdLGw9TGUoRGUoZSxzLHIpLDIpLGQ9bFswXSxjPWxbMV0sdT1TP1MoZSk6bnVsbDtpZihhJiZkJiYhdSluLnB1c2goZSk7ZWxzZXt2YXIgcD1bbyxjXTt1JiYocD1wLmNvbmNhdCh1KSksaS5wdXNoKHtmaWxlOmUsZXJyb3JzOnAuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlfSl9KX19KSwoIWwmJm4ubGVuZ3RoPjF8fGwmJmQ+PTEmJm4ubGVuZ3RoPmQpJiYobi5mb3JFYWNoKGZ1bmN0aW9uKGUpe2kucHVzaCh7ZmlsZTplLGVycm9yczpbRWVdfSl9KSxuLnNwbGljZSgwKSksTyh7YWNjZXB0ZWRGaWxlczpuLGZpbGVSZWplY3Rpb25zOmksaXNEcmFnUmVqZWN0OmkubGVuZ3RoPjAsdHlwZToic2V0RmlsZXMifSksZiYmZihuLGksdCksaS5sZW5ndGg+MCYmaCYmaChpLHQpLG4ubGVuZ3RoPjAmJm0mJm0obix0KX0sW08sbCxELHMscixkLGYsbSxoLFNdKSxXPSgwLGEudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnBlcnNpc3QoKSxuZShlKSxMLmN1cnJlbnQ9W10sRmUoZSkmJlByb21pc2UucmVzb2x2ZShvKGUpKS50aGVuKGZ1bmN0aW9uKHQpe1RlKGUpJiYhQ3x8JCh0LGUpfSkuY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIEIoZSl9KSxPKHt0eXBlOiJyZXNldCJ9KX0sW28sJCxCLENdKSxLPSgwLGEudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKCl7aWYoUC5jdXJyZW50KXtPKHt0eXBlOiJvcGVuRGlhbG9nIn0pLFQoKTt2YXIgZT17bXVsdGlwbGU6bCx0eXBlczpZfTt3aW5kb3cuc2hvd09wZW5GaWxlUGlja2VyKGUpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSl9KS50aGVuKGZ1bmN0aW9uKGUpeyQoZSxudWxsKSxPKHt0eXBlOiJjbG9zZURpYWxvZyJ9KX0pLmNhdGNoKGZ1bmN0aW9uKGUpe3ZhciB0Oyh0PWUpaW5zdGFuY2VvZiBET01FeGNlcHRpb24mJigiQWJvcnRFcnJvciI9PT10Lm5hbWV8fHQuY29kZT09PXQuQUJPUlRfRVJSKT8oRihlKSxPKHt0eXBlOiJjbG9zZURpYWxvZyJ9KSk6IWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiYoIlNlY3VyaXR5RXJyb3IiPT09ZS5uYW1lfHxlLmNvZGU9PT1lLlNFQ1VSSVRZX0VSUil9KGUpP0IoZSk6KFAuY3VycmVudD0hMSxfLmN1cnJlbnQ/KF8uY3VycmVudC52YWx1ZT1udWxsLF8uY3VycmVudC5jbGljaygpKTpCKG5ldyBFcnJvcigiQ2Fubm90IG9wZW4gdGhlIGZpbGUgcGlja2VyIGJlY2F1c2UgdGhlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9GaWxlX1N5c3RlbV9BY2Nlc3NfQVBJIGlzIG5vdCBzdXBwb3J0ZWQgYW5kIG5vIDxpbnB1dD4gd2FzIHByb3ZpZGVkLiIpKSl9KX1lbHNlIF8uY3VycmVudCYmKE8oe3R5cGU6Im9wZW5EaWFsb2cifSksVCgpLF8uY3VycmVudC52YWx1ZT1udWxsLF8uY3VycmVudC5jbGljaygpKX0sW08sVCxGLHYsJCxCLFksbF0pLEc9KDAsYS51c2VDYWxsYmFjaykoZnVuY3Rpb24oZSl7SS5jdXJyZW50JiZJLmN1cnJlbnQuaXNFcXVhbE5vZGUoZS50YXJnZXQpJiYoIiAiIT09ZS5rZXkmJiJFbnRlciIhPT1lLmtleSYmMzIhPT1lLmtleUNvZGUmJjEzIT09ZS5rZXlDb2RlfHwoZS5wcmV2ZW50RGVmYXVsdCgpLEsoKSkpfSxbSSxLXSksWD0oMCxhLnVzZUNhbGxiYWNrKShmdW5jdGlvbigpe08oe3R5cGU6ImZvY3VzIn0pfSxbXSksUT0oMCxhLnVzZUNhbGxiYWNrKShmdW5jdGlvbigpe08oe3R5cGU6ImJsdXIifSl9LFtdKSxaPSgwLGEudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKCl7d3x8KCFmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLTEhPT1lLmluZGV4T2YoIk1TSUUiKXx8LTEhPT1lLmluZGV4T2YoIlRyaWRlbnQvIil9KGUpfHxmdW5jdGlvbihlKXtyZXR1cm4tMSE9PWUuaW5kZXhPZigiRWRnZS8iKX0oZSl9KCk/SygpOnNldFRpbWVvdXQoSywwKSl9LFt3LEtdKSxKPWZ1bmN0aW9uKGUpe3JldHVybiBpP251bGw6ZX0sZWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGs/bnVsbDpKKGUpfSx0ZT1mdW5jdGlvbihlKXtyZXR1cm4gQT9udWxsOkooZSl9LG5lPWZ1bmN0aW9uKGUpe0MmJmUuc3RvcFByb3BhZ2F0aW9uKCl9LGllPSgwLGEudXNlTWVtbykoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1lLnJlZktleSxuPXZvaWQgMD09PXQ/InJlZiI6dCxhPWUucm9sZSxvPWUub25LZXlEb3duLHI9ZS5vbkZvY3VzLHM9ZS5vbkJsdXIsbD1lLm9uQ2xpY2ssZD1lLm9uRHJhZ0VudGVyLGM9ZS5vbkRyYWdPdmVyLHU9ZS5vbkRyYWdMZWF2ZSxwPWUub25Ecm9wLGY9JGUoZSxqZSk7cmV0dXJuIHFlKHFlKFZlKHtvbktleURvd246ZWUoX2UobyxHKSksb25Gb2N1czplZShfZShyLFgpKSxvbkJsdXI6ZWUoX2UocyxRKSksb25DbGljazpKKF9lKGwsWikpLG9uRHJhZ0VudGVyOnRlKF9lKGQsSCkpLG9uRHJhZ092ZXI6dGUoX2UoYyxxKSksb25EcmFnTGVhdmU6dGUoX2UodSxWKSksb25Ecm9wOnRlKF9lKHAsVykpLHJvbGU6InN0cmluZyI9PXR5cGVvZiBhJiYiIiE9PWE/YToicHJlc2VudGF0aW9uIn0sbixJKSxpfHxrP3t9Ont0YWJJbmRleDowfSksZil9fSxbSSxHLFgsUSxaLEgscSxWLFcsayxBLGldKSxhZT0oMCxhLnVzZUNhbGxiYWNrKShmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpfSxbXSksb2U9KDAsYS51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PWUucmVmS2V5LG49dm9pZCAwPT09dD8icmVmIjp0LGk9ZS5vbkNoYW5nZSxhPWUub25DbGljayxvPSRlKGUsUGUpO3JldHVybiBxZShxZSh7fSxWZSh7YWNjZXB0OkQsbXVsdGlwbGU6bCx0eXBlOiJmaWxlIixzdHlsZTp7Ym9yZGVyOjAsY2xpcDoicmVjdCgwLCAwLCAwLCAwKSIsY2xpcFBhdGg6Imluc2V0KDUwJSkiLGhlaWdodDoiMXB4IixtYXJnaW46IjAgLTFweCAtMXB4IDAiLG92ZXJmbG93OiJoaWRkZW4iLHBhZGRpbmc6MCxwb3NpdGlvbjoiYWJzb2x1dGUiLHdpZHRoOiIxcHgiLHdoaXRlU3BhY2U6Im5vd3JhcCJ9LG9uQ2hhbmdlOkooX2UoaSxXKSksb25DbGljazpKKF9lKGEsYWUpKSx0YWJJbmRleDotMX0sbixfKSksbyl9fSxbXyxuLGwsVyxpXSk7cmV0dXJuIHFlKHFlKHt9LE4pLHt9LHtpc0ZvY3VzZWQ6UiYmIWksZ2V0Um9vdFByb3BzOmllLGdldElucHV0UHJvcHM6b2Uscm9vdFJlZjpJLGlucHV0UmVmOl8sb3BlbjpKKEspfSl9ZnVuY3Rpb24gUWUoZSx0KXtzd2l0Y2godC50eXBlKXtjYXNlImZvY3VzIjpyZXR1cm4gcWUocWUoe30sZSkse30se2lzRm9jdXNlZDohMH0pO2Nhc2UiYmx1ciI6cmV0dXJuIHFlKHFlKHt9LGUpLHt9LHtpc0ZvY3VzZWQ6ITF9KTtjYXNlIm9wZW5EaWFsb2ciOnJldHVybiBxZShxZSh7fSxHZSkse30se2lzRmlsZURpYWxvZ0FjdGl2ZTohMH0pO2Nhc2UiY2xvc2VEaWFsb2ciOnJldHVybiBxZShxZSh7fSxlKSx7fSx7aXNGaWxlRGlhbG9nQWN0aXZlOiExfSk7Y2FzZSJzZXREcmFnZ2VkRmlsZXMiOnJldHVybiBxZShxZSh7fSxlKSx7fSx7aXNEcmFnQWN0aXZlOnQuaXNEcmFnQWN0aXZlLGlzRHJhZ0FjY2VwdDp0LmlzRHJhZ0FjY2VwdCxpc0RyYWdSZWplY3Q6dC5pc0RyYWdSZWplY3R9KTtjYXNlInNldEZpbGVzIjpyZXR1cm4gcWUocWUoe30sZSkse30se2FjY2VwdGVkRmlsZXM6dC5hY2NlcHRlZEZpbGVzLGZpbGVSZWplY3Rpb25zOnQuZmlsZVJlamVjdGlvbnMsaXNEcmFnUmVqZWN0OnQuaXNEcmFnUmVqZWN0fSk7Y2FzZSJyZXNldCI6cmV0dXJuIHFlKHt9LEdlKTtkZWZhdWx0OnJldHVybiBlfX1mdW5jdGlvbiBaZSgpe312YXIgSmU9big2OTcwKSxldD1uLm4oSmUpLHR0PW4oOTc4OCk7Y29uc3QgbnQ9KDAsZi5EaikoKS5uYW1lLnRvTG93ZXJDYXNlKCksaXQ9KDAsZi5ERCkoKTt2YXIgYXQ9KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShlPT5lLmFsbG93QXR0YWNobWVudHMpLG49KDAsci5kNCkoZT0+ZS5wZW5kaW5nQXR0YWNobWVudHMpLGk9KDAsci5kNCkoQy5WUSksYT0oMCxyLmQ0KShlPT5lLnNob3dPcHRpb25zRHJvcGRvd24pLG89KDAsci5kNCkoZT0+ZS5pc01vYmlsZSkscz0oMCxyLmQ0KShDLm80KSxsPSgwLHIuZDQpKEMuQW8pLGQ9KDAsci5kNCkoQy5maCksYz1sW2wubGVuZ3RoLTFdPy5mb3JtPy5zb21lKGU9PmUudHlwZT09PXR0LlZ3LkZJTEUpLHU9bi5sZW5ndGg+PWYucXUse2dldFJvb3RQcm9wczpwfT1YZSh7b25Ecm9wOm49PntpZih0KXtjb25zdCB0PW5bMF07ZSgoMCxrLnRLWikoITEpKSxlKCgwLGsuU0JRKShldCgpKCksdCkpfX0sb25EcmFnRW50ZXI6KCk9PntpfHxlKCgwLGsudEtaKSghMCkpfSxvbkRyYWdMZWF2ZTooKT0+e2UoKDAsay50S1opKCExKSl9LG5vQ2xpY2s6ITAsbm9LZXlib2FyZDohMCxkaXNhYmxlZDohbC5maW5kKGU9PiJ2aXNpdG9yIj09PWUuc2VuZGVyKXx8aXR8fHN8fGR8fGN8fHV8fCF0fSk7cmV0dXJue2Ryb3B6b25lUHJvcHM6cCh7b25DbGljazp0PT57dC5zdG9wUHJvcGFnYXRpb24oKSxhJiZvJiYiaW9zIj09PW50JiZlKCgwLGsuWjlxKSghMSkpfX0pfX07dmFyIG90PWU9PigwLFYuWSkoVSx7aW46ZS5pbix0aW1lb3V0OmUudGltZW91dCxhcHBlYXI6ITAsYWRkRW5kTGlzdGVuZXI6dD0+e3QuYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsZS5vbkFuaW1hdGlvbkVuZGVkLCExKX0sY2hpbGRyZW46dD0+KDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJ0cmFuc2l0aW9uLWNvbnRhaW5lciIsc3R5bGU6ey4uLmUuZGVmYXVsdFN0eWxlLC4uLmUudHJhbnNpdGlvblN0eWxlc1t0XX0sY2hpbGRyZW46ZS5jaGlsZHJlbn0pfSk7Y29uc3QgcnQ9KDAsYS5jcmVhdGVDb250ZXh0KShudWxsKTt2YXIgc3Q9ZT0+e2xldHtjaGlsZHJlbjp0fT1lO2NvbnN0W24saV09KDAsYS51c2VTdGF0ZSkobnVsbCk7cmV0dXJuKDAsVi5GRCkocnQuUHJvdmlkZXIse3ZhbHVlOm4sY2hpbGRyZW46WygwLFYuWSkoImRpdiIse3JlZjppfSksdF19KX0sbHQ9big0MTIxKTt2YXIgZHQ9e2JhY2tkcm9wOntuYW1lOiIxbjlhaGkyIixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowO3RvcDowO2JvdHRvbTowO2JhY2tncm91bmQ6cmdiYSgwLCAwLCAwLCAwLjUpO3otaW5kZXg6MTAifSxwYW5lbDooMCxkLkFIKSh7cG9zaXRpb246ImFic29sdXRlIixib3R0b206MCxsZWZ0OjgscmlnaHQ6OCx3aWR0aDoiY2FsYygxMDAlIC0gMTZweCkiLG1heEhlaWdodDoiY2FsYygxMDAlIC0gODdweCkiLGJhY2tncm91bmQ6IiNmZmYiLGJvcmRlclRvcExlZnRSYWRpdXM6MTIsYm9yZGVyVG9wUmlnaHRSYWRpdXM6MTIsZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixvdmVyZmxvdzoiaGlkZGVuIn0sIiIsIiIpfTt2YXIgY3Q9ZT0+e2xldHtpc09wZW46dCxvbkNsb3NlOm4sY2hpbGRyZW46aSxzaG91bGRDbG9zZU9uQmFja2Ryb3BDbGljazpvPSEwfT1lO2NvbnN0IHI9KDAsYy5wbikodCx7Y29uZmlnOnt0ZW5zaW9uOjE1MCxmcmljdGlvbjoyMH0sZnJvbTp7b3BhY2l0eTowfSxlbnRlcjp7b3BhY2l0eToxfSxsZWF2ZTp7b3BhY2l0eTowfX0pLHM9KDAsYy5wbikodCx7ZnJvbTp7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDEwMCUpIn0sZW50ZXI6e3RyYW5zZm9ybToidHJhbnNsYXRlWSgwJSkifSxsZWF2ZTp7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDEwMCUpIn19KSxsPSgwLGEudXNlQ2FsbGJhY2spKGU9PntlLnRhcmdldD09PWUuY3VycmVudFRhcmdldCYmbigpfSxbbl0pO3JldHVybigwLFYuWSkoVi5GSyx7Y2hpbGRyZW46cigoZSx0KT0+dCYmKDAsVi5ZKShjLkNTLmRpdix7Y3NzOmR0LmJhY2tkcm9wLHN0eWxlOmUsb25DbGljazpvP2w6dm9pZCAwLGNoaWxkcmVuOnMoKGUsdCk9PnQmJigwLFYuWSkoYy5DUy5kaXYse2NzczpkdC5wYW5lbCxzdHlsZTplLGNoaWxkcmVuOml9KSl9KSl9KX0sdXQ9big0MjE4KTtmdW5jdGlvbiBwdCgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTo4MjA7Y29uc3RbdCxuXT1hLnVzZVN0YXRlKCIiKSxpPWEudXNlUmVmKCk7cmV0dXJue3RyaWdnZXJTaGFrZTpmdW5jdGlvbigpe24oInNoYWtlIiksY2xlYXJUaW1lb3V0KGkuY3VycmVudCksaS5jdXJyZW50PW51bGwsaS5jdXJyZW50PXNldFRpbWVvdXQoKCk9PntuKCIiKX0sZSl9LHNoYWtlQ2xhc3NOYW1lOnQsc2hvdWxkU2hha2U6InNoYWtlIj09PXR9fWNvbnN0IGZ0PXt0ZXh0MjRCb2xkOntuYW1lOiIxdXA5b3N4IixzdHlsZXM6ImZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MzFweCJ9LHRleHQyMFNlbWk6e25hbWU6IjF5NXM4OTUiLHN0eWxlczoiZm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjMxcHgifSx0ZXh0MTY6e25hbWU6Iml0bTlmaCIsc3R5bGVzOiJmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyMHB4In0sdGV4dDE0TWVkaXVtOntuYW1lOiIxYXhiOWU4IixzdHlsZXM6ImZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoyMHB4In0sdGV4dDE0OntuYW1lOiIyNDRneGQiLHN0eWxlczoiZm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweCJ9LHRleHQxMkJvbGQ6e25hbWU6IjE0b3ZwZTAiLHN0eWxlczoiZm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6Ym9sZDtsaW5lLWhlaWdodDoxNnB4In0sdGV4dDEyTWVkaXVtOntuYW1lOiJpOTltNzYiLHN0eWxlczoiZm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjE2cHgifSx0ZXh0MTI6e25hbWU6InhvbHh3ciIsc3R5bGVzOiJmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxNnB4In0sdGV4dDEwOntuYW1lOiIxeGEydDFlIixzdHlsZXM6ImZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjE0cHgifX0sbXQ9e3RleHQyNEJvbGQ6KDAsZC5BSCkoIiIsIiIpLHRleHQyMFNlbWk6KDAsZC5BSCkoIiIsIiIpLHRleHQxNjooMCxkLkFIKSgiIiwiIiksdGV4dDE0TWVkaXVtOigwLGQuQUgpKCIiLCIiKSx0ZXh0MTQ6KDAsZC5BSCkoIiIsIiIpLHRleHQxMkJvbGQ6KDAsZC5BSCkoIiIsIiIpLHRleHQxMk1lZGl1bTooMCxkLkFIKSgiIiwiIiksdGV4dDEyOigwLGQuQUgpKCIiLCIiKSx0ZXh0MTA6KDAsZC5BSCkoIiIsIiIpfSxodD1lPT5lP2Z0Om10O24oMzkzOCk7Y29uc3R7ZW50cmllczpndCxzZXRQcm90b3R5cGVPZjpidCxpc0Zyb3plbjp2dCxnZXRQcm90b3R5cGVPZjp4dCxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6eXR9PU9iamVjdDtsZXR7ZnJlZXplOnd0LHNlYWw6a3QsY3JlYXRlOkF0fT1PYmplY3Qse2FwcGx5OkN0LGNvbnN0cnVjdDpFdH09InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0O3d0fHwod3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxrdHx8KGt0PWZ1bmN0aW9uKGUpe3JldHVybiBlfSksQ3R8fChDdD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4+Mj9uLTI6MCksYT0yO2E8bjthKyspaVthLTJdPWFyZ3VtZW50c1thXTtyZXR1cm4gZS5hcHBseSh0LGkpfSksRXR8fChFdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0PjE/dC0xOjApLGk9MTtpPHQ7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIG5ldyBlKC4uLm4pfSk7Y29uc3QgU3Q9VXQoQXJyYXkucHJvdG90eXBlLmZvckVhY2gpLER0PVV0KEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZiksWXQ9VXQoQXJyYXkucHJvdG90eXBlLnBvcCksVHQ9VXQoQXJyYXkucHJvdG90eXBlLnB1c2gpLEZ0PVV0KEFycmF5LnByb3RvdHlwZS5zcGxpY2UpLEl0PVV0KFN0cmluZy5wcm90b3R5cGUudG9Mb3dlckNhc2UpLF90PVV0KFN0cmluZy5wcm90b3R5cGUudG9TdHJpbmcpLE10PVV0KFN0cmluZy5wcm90b3R5cGUubWF0Y2gpLE50PVV0KFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSksT3Q9VXQoU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mKSxSdD1VdChTdHJpbmcucHJvdG90eXBlLnRyaW0pLGp0PVV0KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLFB0PVV0KFJlZ0V4cC5wcm90b3R5cGUudGVzdCksenQ9KEx0PVR5cGVFcnJvcixmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBFdChMdCx0KX0pO3ZhciBMdDtmdW5jdGlvbiBVdChlKXtyZXR1cm4gZnVuY3Rpb24odCl7dCBpbnN0YW5jZW9mIFJlZ0V4cCYmKHQubGFzdEluZGV4PTApO2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4+MT9uLTE6MCksYT0xO2E8bjthKyspaVthLTFdPWFyZ3VtZW50c1thXTtyZXR1cm4gQ3QoZSx0LGkpfX1mdW5jdGlvbiBCdChlLHQpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpJdDtidCYmYnQoZSxudWxsKTtsZXQgaT10Lmxlbmd0aDtmb3IoO2ktLTspe2xldCBhPXRbaV07aWYoInN0cmluZyI9PXR5cGVvZiBhKXtjb25zdCBlPW4oYSk7ZSE9PWEmJih2dCh0KXx8KHRbaV09ZSksYT1lKX1lW2FdPSEwfXJldHVybiBlfWZ1bmN0aW9uIEh0KGUpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtqdChlLHQpfHwoZVt0XT1udWxsKX1yZXR1cm4gZX1mdW5jdGlvbiBxdChlKXtjb25zdCB0PUF0KG51bGwpO2Zvcihjb25zdFtuLGldb2YgZ3QoZSkpe2p0KGUsbikmJihBcnJheS5pc0FycmF5KGkpP3Rbbl09SHQoaSk6aSYmIm9iamVjdCI9PXR5cGVvZiBpJiZpLmNvbnN0cnVjdG9yPT09T2JqZWN0P3Rbbl09cXQoaSk6dFtuXT1pKX1yZXR1cm4gdH1mdW5jdGlvbiBWdChlLHQpe2Zvcig7bnVsbCE9PWU7KXtjb25zdCBuPXl0KGUsdCk7aWYobil7aWYobi5nZXQpcmV0dXJuIFV0KG4uZ2V0KTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbi52YWx1ZSlyZXR1cm4gVXQobi52YWx1ZSl9ZT14dChlKX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19Y29uc3QgJHQ9d3QoWyJhIiwiYWJiciIsImFjcm9ueW0iLCJhZGRyZXNzIiwiYXJlYSIsImFydGljbGUiLCJhc2lkZSIsImF1ZGlvIiwiYiIsImJkaSIsImJkbyIsImJpZyIsImJsaW5rIiwiYmxvY2txdW90ZSIsImJvZHkiLCJiciIsImJ1dHRvbiIsImNhbnZhcyIsImNhcHRpb24iLCJjZW50ZXIiLCJjaXRlIiwiY29kZSIsImNvbCIsImNvbGdyb3VwIiwiY29udGVudCIsImRhdGEiLCJkYXRhbGlzdCIsImRkIiwiZGVjb3JhdG9yIiwiZGVsIiwiZGV0YWlscyIsImRmbiIsImRpYWxvZyIsImRpciIsImRpdiIsImRsIiwiZHQiLCJlbGVtZW50IiwiZW0iLCJmaWVsZHNldCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJmb250IiwiZm9vdGVyIiwiZm9ybSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWQiLCJoZWFkZXIiLCJoZ3JvdXAiLCJociIsImh0bWwiLCJpIiwiaW1nIiwiaW5wdXQiLCJpbnMiLCJrYmQiLCJsYWJlbCIsImxlZ2VuZCIsImxpIiwibWFpbiIsIm1hcCIsIm1hcmsiLCJtYXJxdWVlIiwibWVudSIsIm1lbnVpdGVtIiwibWV0ZXIiLCJuYXYiLCJub2JyIiwib2wiLCJvcHRncm91cCIsIm9wdGlvbiIsIm91dHB1dCIsInAiLCJwaWN0dXJlIiwicHJlIiwicHJvZ3Jlc3MiLCJxIiwicnAiLCJydCIsInJ1YnkiLCJzIiwic2FtcCIsInNlYXJjaCIsInNlY3Rpb24iLCJzZWxlY3QiLCJzaGFkb3ciLCJzbG90Iiwic21hbGwiLCJzb3VyY2UiLCJzcGFjZXIiLCJzcGFuIiwic3RyaWtlIiwic3Ryb25nIiwic3R5bGUiLCJzdWIiLCJzdW1tYXJ5Iiwic3VwIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGVtcGxhdGUiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0ciIsInRyYWNrIiwidHQiLCJ1IiwidWwiLCJ2YXIiLCJ2aWRlbyIsIndiciJdKSxXdD13dChbInN2ZyIsImEiLCJhbHRnbHlwaCIsImFsdGdseXBoZGVmIiwiYWx0Z2x5cGhpdGVtIiwiYW5pbWF0ZWNvbG9yIiwiYW5pbWF0ZW1vdGlvbiIsImFuaW1hdGV0cmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwcGF0aCIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImVudGVya2V5aGludCIsImV4cG9ydHBhcnRzIiwiZmlsdGVyIiwiZm9udCIsImciLCJnbHlwaCIsImdseXBocmVmIiwiaGtlcm4iLCJpbWFnZSIsImlucHV0bW9kZSIsImxpbmUiLCJsaW5lYXJncmFkaWVudCIsIm1hcmtlciIsIm1hc2siLCJtZXRhZGF0YSIsIm1wYXRoIiwicGFydCIsInBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN0eWxlIiwic3dpdGNoIiwic3ltYm9sIiwidGV4dCIsInRleHRwYXRoIiwidGl0bGUiLCJ0cmVmIiwidHNwYW4iLCJ2aWV3Iiwidmtlcm4iXSksS3Q9d3QoWyJmZUJsZW5kIiwiZmVDb2xvck1hdHJpeCIsImZlQ29tcG9uZW50VHJhbnNmZXIiLCJmZUNvbXBvc2l0ZSIsImZlQ29udm9sdmVNYXRyaXgiLCJmZURpZmZ1c2VMaWdodGluZyIsImZlRGlzcGxhY2VtZW50TWFwIiwiZmVEaXN0YW50TGlnaHQiLCJmZURyb3BTaGFkb3ciLCJmZUZsb29kIiwiZmVGdW5jQSIsImZlRnVuY0IiLCJmZUZ1bmNHIiwiZmVGdW5jUiIsImZlR2F1c3NpYW5CbHVyIiwiZmVJbWFnZSIsImZlTWVyZ2UiLCJmZU1lcmdlTm9kZSIsImZlTW9ycGhvbG9neSIsImZlT2Zmc2V0IiwiZmVQb2ludExpZ2h0IiwiZmVTcGVjdWxhckxpZ2h0aW5nIiwiZmVTcG90TGlnaHQiLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiXSksR3Q9d3QoWyJhbmltYXRlIiwiY29sb3ItcHJvZmlsZSIsImN1cnNvciIsImRpc2NhcmQiLCJmb250LWZhY2UiLCJmb250LWZhY2UtZm9ybWF0IiwiZm9udC1mYWNlLW5hbWUiLCJmb250LWZhY2Utc3JjIiwiZm9udC1mYWNlLXVyaSIsImZvcmVpZ25vYmplY3QiLCJoYXRjaCIsImhhdGNocGF0aCIsIm1lc2giLCJtZXNoZ3JhZGllbnQiLCJtZXNocGF0Y2giLCJtZXNocm93IiwibWlzc2luZy1nbHlwaCIsInNjcmlwdCIsInNldCIsInNvbGlkY29sb3IiLCJ1bmtub3duIiwidXNlIl0pLFh0PXd0KFsibWF0aCIsIm1lbmNsb3NlIiwibWVycm9yIiwibWZlbmNlZCIsIm1mcmFjIiwibWdseXBoIiwibWkiLCJtbGFiZWxlZHRyIiwibW11bHRpc2NyaXB0cyIsIm1uIiwibW8iLCJtb3ZlciIsIm1wYWRkZWQiLCJtcGhhbnRvbSIsIm1yb290IiwibXJvdyIsIm1zIiwibXNwYWNlIiwibXNxcnQiLCJtc3R5bGUiLCJtc3ViIiwibXN1cCIsIm1zdWJzdXAiLCJtdGFibGUiLCJtdGQiLCJtdGV4dCIsIm10ciIsIm11bmRlciIsIm11bmRlcm92ZXIiLCJtcHJlc2NyaXB0cyJdKSxRdD13dChbIm1hY3Rpb24iLCJtYWxpZ25ncm91cCIsIm1hbGlnbm1hcmsiLCJtbG9uZ2RpdiIsIm1zY2FycmllcyIsIm1zY2FycnkiLCJtc2dyb3VwIiwibXN0YWNrIiwibXNsaW5lIiwibXNyb3ciLCJzZW1hbnRpY3MiLCJhbm5vdGF0aW9uIiwiYW5ub3RhdGlvbi14bWwiLCJtcHJlc2NyaXB0cyIsIm5vbmUiXSksWnQ9d3QoWyIjdGV4dCJdKSxKdD13dChbImFjY2VwdCIsImFjdGlvbiIsImFsaWduIiwiYWx0IiwiYXV0b2NhcGl0YWxpemUiLCJhdXRvY29tcGxldGUiLCJhdXRvcGljdHVyZWlucGljdHVyZSIsImF1dG9wbGF5IiwiYmFja2dyb3VuZCIsImJnY29sb3IiLCJib3JkZXIiLCJjYXB0dXJlIiwiY2VsbHBhZGRpbmciLCJjZWxsc3BhY2luZyIsImNoZWNrZWQiLCJjaXRlIiwiY2xhc3MiLCJjbGVhciIsImNvbG9yIiwiY29scyIsImNvbHNwYW4iLCJjb250cm9scyIsImNvbnRyb2xzbGlzdCIsImNvb3JkcyIsImNyb3Nzb3JpZ2luIiwiZGF0ZXRpbWUiLCJkZWNvZGluZyIsImRlZmF1bHQiLCJkaXIiLCJkaXNhYmxlZCIsImRpc2FibGVwaWN0dXJlaW5waWN0dXJlIiwiZGlzYWJsZXJlbW90ZXBsYXliYWNrIiwiZG93bmxvYWQiLCJkcmFnZ2FibGUiLCJlbmN0eXBlIiwiZW50ZXJrZXloaW50IiwiZXhwb3J0cGFydHMiLCJmYWNlIiwiZm9yIiwiaGVhZGVycyIsImhlaWdodCIsImhpZGRlbiIsImhpZ2giLCJocmVmIiwiaHJlZmxhbmciLCJpZCIsImluZXJ0IiwiaW5wdXRtb2RlIiwiaW50ZWdyaXR5IiwiaXNtYXAiLCJraW5kIiwibGFiZWwiLCJsYW5nIiwibGlzdCIsImxvYWRpbmciLCJsb29wIiwibG93IiwibWF4IiwibWF4bGVuZ3RoIiwibWVkaWEiLCJtZXRob2QiLCJtaW4iLCJtaW5sZW5ndGgiLCJtdWx0aXBsZSIsIm11dGVkIiwibmFtZSIsIm5vbmNlIiwibm9zaGFkZSIsIm5vdmFsaWRhdGUiLCJub3dyYXAiLCJvcGVuIiwib3B0aW11bSIsInBhcnQiLCJwYXR0ZXJuIiwicGxhY2Vob2xkZXIiLCJwbGF5c2lubGluZSIsInBvcG92ZXIiLCJwb3BvdmVydGFyZ2V0IiwicG9wb3ZlcnRhcmdldGFjdGlvbiIsInBvc3RlciIsInByZWxvYWQiLCJwdWJkYXRlIiwicmFkaW9ncm91cCIsInJlYWRvbmx5IiwicmVsIiwicmVxdWlyZWQiLCJyZXYiLCJyZXZlcnNlZCIsInJvbGUiLCJyb3dzIiwicm93c3BhbiIsInNwZWxsY2hlY2siLCJzY29wZSIsInNlbGVjdGVkIiwic2hhcGUiLCJzaXplIiwic2l6ZXMiLCJzbG90Iiwic3BhbiIsInNyY2xhbmciLCJzdGFydCIsInNyYyIsInNyY3NldCIsInN0ZXAiLCJzdHlsZSIsInN1bW1hcnkiLCJ0YWJpbmRleCIsInRpdGxlIiwidHJhbnNsYXRlIiwidHlwZSIsInVzZW1hcCIsInZhbGlnbiIsInZhbHVlIiwid2lkdGgiLCJ3cmFwIiwieG1sbnMiLCJzbG90Il0pLGVuPXd0KFsiYWNjZW50LWhlaWdodCIsImFjY3VtdWxhdGUiLCJhZGRpdGl2ZSIsImFsaWdubWVudC1iYXNlbGluZSIsImFtcGxpdHVkZSIsImFzY2VudCIsImF0dHJpYnV0ZW5hbWUiLCJhdHRyaWJ1dGV0eXBlIiwiYXppbXV0aCIsImJhc2VmcmVxdWVuY3kiLCJiYXNlbGluZS1zaGlmdCIsImJlZ2luIiwiYmlhcyIsImJ5IiwiY2xhc3MiLCJjbGlwIiwiY2xpcHBhdGh1bml0cyIsImNsaXAtcGF0aCIsImNsaXAtcnVsZSIsImNvbG9yIiwiY29sb3ItaW50ZXJwb2xhdGlvbiIsImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyIsImNvbG9yLXByb2ZpbGUiLCJjb2xvci1yZW5kZXJpbmciLCJjeCIsImN5IiwiZCIsImR4IiwiZHkiLCJkaWZmdXNlY29uc3RhbnQiLCJkaXJlY3Rpb24iLCJkaXNwbGF5IiwiZGl2aXNvciIsImR1ciIsImVkZ2Vtb2RlIiwiZWxldmF0aW9uIiwiZW5kIiwiZXhwb25lbnQiLCJmaWxsIiwiZmlsbC1vcGFjaXR5IiwiZmlsbC1ydWxlIiwiZmlsdGVyIiwiZmlsdGVydW5pdHMiLCJmbG9vZC1jb2xvciIsImZsb29kLW9wYWNpdHkiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc2l6ZS1hZGp1c3QiLCJmb250LXN0cmV0Y2giLCJmb250LXN0eWxlIiwiZm9udC12YXJpYW50IiwiZm9udC13ZWlnaHQiLCJmeCIsImZ5IiwiZzEiLCJnMiIsImdseXBoLW5hbWUiLCJnbHlwaHJlZiIsImdyYWRpZW50dW5pdHMiLCJncmFkaWVudHRyYW5zZm9ybSIsImhlaWdodCIsImhyZWYiLCJpZCIsImltYWdlLXJlbmRlcmluZyIsImluIiwiaW4yIiwiaW50ZXJjZXB0IiwiayIsImsxIiwiazIiLCJrMyIsIms0Iiwia2VybmluZyIsImtleXBvaW50cyIsImtleXNwbGluZXMiLCJrZXl0aW1lcyIsImxhbmciLCJsZW5ndGhhZGp1c3QiLCJsZXR0ZXItc3BhY2luZyIsImtlcm5lbG1hdHJpeCIsImtlcm5lbHVuaXRsZW5ndGgiLCJsaWdodGluZy1jb2xvciIsImxvY2FsIiwibWFya2VyLWVuZCIsIm1hcmtlci1taWQiLCJtYXJrZXItc3RhcnQiLCJtYXJrZXJoZWlnaHQiLCJtYXJrZXJ1bml0cyIsIm1hcmtlcndpZHRoIiwibWFza2NvbnRlbnR1bml0cyIsIm1hc2t1bml0cyIsIm1heCIsIm1hc2siLCJtYXNrLXR5cGUiLCJtZWRpYSIsIm1ldGhvZCIsIm1vZGUiLCJtaW4iLCJuYW1lIiwibnVtb2N0YXZlcyIsIm9mZnNldCIsIm9wZXJhdG9yIiwib3BhY2l0eSIsIm9yZGVyIiwib3JpZW50Iiwib3JpZW50YXRpb24iLCJvcmlnaW4iLCJvdmVyZmxvdyIsInBhaW50LW9yZGVyIiwicGF0aCIsInBhdGhsZW5ndGgiLCJwYXR0ZXJuY29udGVudHVuaXRzIiwicGF0dGVybnRyYW5zZm9ybSIsInBhdHRlcm51bml0cyIsInBvaW50cyIsInByZXNlcnZlYWxwaGEiLCJwcmVzZXJ2ZWFzcGVjdHJhdGlvIiwicHJpbWl0aXZldW5pdHMiLCJyIiwicngiLCJyeSIsInJhZGl1cyIsInJlZngiLCJyZWZ5IiwicmVwZWF0Y291bnQiLCJyZXBlYXRkdXIiLCJyZXN0YXJ0IiwicmVzdWx0Iiwicm90YXRlIiwic2NhbGUiLCJzZWVkIiwic2hhcGUtcmVuZGVyaW5nIiwic2xvcGUiLCJzcGVjdWxhcmNvbnN0YW50Iiwic3BlY3VsYXJleHBvbmVudCIsInNwcmVhZG1ldGhvZCIsInN0YXJ0b2Zmc2V0Iiwic3RkZGV2aWF0aW9uIiwic3RpdGNodGlsZXMiLCJzdG9wLWNvbG9yIiwic3RvcC1vcGFjaXR5Iiwic3Ryb2tlLWRhc2hhcnJheSIsInN0cm9rZS1kYXNob2Zmc2V0Iiwic3Ryb2tlLWxpbmVjYXAiLCJzdHJva2UtbGluZWpvaW4iLCJzdHJva2UtbWl0ZXJsaW1pdCIsInN0cm9rZS1vcGFjaXR5Iiwic3Ryb2tlIiwic3Ryb2tlLXdpZHRoIiwic3R5bGUiLCJzdXJmYWNlc2NhbGUiLCJzeXN0ZW1sYW5ndWFnZSIsInRhYmluZGV4IiwidGFibGV2YWx1ZXMiLCJ0YXJnZXR4IiwidGFyZ2V0eSIsInRyYW5zZm9ybSIsInRyYW5zZm9ybS1vcmlnaW4iLCJ0ZXh0LWFuY2hvciIsInRleHQtZGVjb3JhdGlvbiIsInRleHQtcmVuZGVyaW5nIiwidGV4dGxlbmd0aCIsInR5cGUiLCJ1MSIsInUyIiwidW5pY29kZSIsInZhbHVlcyIsInZpZXdib3giLCJ2aXNpYmlsaXR5IiwidmVyc2lvbiIsInZlcnQtYWR2LXkiLCJ2ZXJ0LW9yaWdpbi14IiwidmVydC1vcmlnaW4teSIsIndpZHRoIiwid29yZC1zcGFjaW5nIiwid3JhcCIsIndyaXRpbmctbW9kZSIsInhjaGFubmVsc2VsZWN0b3IiLCJ5Y2hhbm5lbHNlbGVjdG9yIiwieCIsIngxIiwieDIiLCJ4bWxucyIsInkiLCJ5MSIsInkyIiwieiIsInpvb21hbmRwYW4iXSksdG49d3QoWyJhY2NlbnQiLCJhY2NlbnR1bmRlciIsImFsaWduIiwiYmV2ZWxsZWQiLCJjbG9zZSIsImNvbHVtbnNhbGlnbiIsImNvbHVtbmxpbmVzIiwiY29sdW1uc3BhbiIsImRlbm9tYWxpZ24iLCJkZXB0aCIsImRpciIsImRpc3BsYXkiLCJkaXNwbGF5c3R5bGUiLCJlbmNvZGluZyIsImZlbmNlIiwiZnJhbWUiLCJoZWlnaHQiLCJocmVmIiwiaWQiLCJsYXJnZW9wIiwibGVuZ3RoIiwibGluZXRoaWNrbmVzcyIsImxzcGFjZSIsImxxdW90ZSIsIm1hdGhiYWNrZ3JvdW5kIiwibWF0aGNvbG9yIiwibWF0aHNpemUiLCJtYXRodmFyaWFudCIsIm1heHNpemUiLCJtaW5zaXplIiwibW92YWJsZWxpbWl0cyIsIm5vdGF0aW9uIiwibnVtYWxpZ24iLCJvcGVuIiwicm93YWxpZ24iLCJyb3dsaW5lcyIsInJvd3NwYWNpbmciLCJyb3dzcGFuIiwicnNwYWNlIiwicnF1b3RlIiwic2NyaXB0bGV2ZWwiLCJzY3JpcHRtaW5zaXplIiwic2NyaXB0c2l6ZW11bHRpcGxpZXIiLCJzZWxlY3Rpb24iLCJzZXBhcmF0b3IiLCJzZXBhcmF0b3JzIiwic3RyZXRjaHkiLCJzdWJzY3JpcHRzaGlmdCIsInN1cHNjcmlwdHNoaWZ0Iiwic3ltbWV0cmljIiwidm9mZnNldCIsIndpZHRoIiwieG1sbnMiXSksbm49d3QoWyJ4bGluazpocmVmIiwieG1sOmlkIiwieGxpbms6dGl0bGUiLCJ4bWw6c3BhY2UiLCJ4bWxuczp4bGluayJdKSxhbj1rdCgvXHtce1tcd1xXXSp8W1x3XFddKlx9XH0vZ20pLG9uPWt0KC88JVtcd1xXXSp8W1x3XFddKiU+L2dtKSxybj1rdCgvXCRce1tcd1xXXSovZ20pLHNuPWt0KC9eZGF0YS1bXC1cdy5cdTAwQjctXHVGRkZGXSskLyksbG49a3QoL15hcmlhLVtcLVx3XSskLyksZG49a3QoL14oPzooPzooPzpmfGh0KXRwcz98bWFpbHRvfHRlbHxjYWxsdG98c21zfGNpZHx4bXBwfG1hdHJpeCk6fFteYS16XXxbYS16Ky5cLV0rKD86W15hLXorLlwtOl18JCkpL2kpLGNuPWt0KC9eKD86XHcrc2NyaXB0fGRhdGEpOi9pKSx1bj1rdCgvW1x1MDAwMC1cdTAwMjBcdTAwQTBcdTE2ODBcdTE4MEVcdTIwMDAtXHUyMDI5XHUyMDVGXHUzMDAwXS9nKSxwbj1rdCgvXmh0bWwkL2kpLGZuPWt0KC9eW2Etel1bLlx3XSooLVsuXHddKykrJC9pKTt2YXIgbW49T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQVJJQV9BVFRSOmxuLEFUVFJfV0hJVEVTUEFDRTp1bixDVVNUT01fRUxFTUVOVDpmbixEQVRBX0FUVFI6c24sRE9DVFlQRV9OQU1FOnBuLEVSQl9FWFBSOm9uLElTX0FMTE9XRURfVVJJOmRuLElTX1NDUklQVF9PUl9EQVRBOmNuLE1VU1RBQ0hFX0VYUFI6YW4sVE1QTElUX0VYUFI6cm59KTtjb25zdCBobj0xLGduPTMsYm49Nyx2bj04LHhuPTkseW49ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdz9udWxsOndpbmRvd307dmFyIHduPWZ1bmN0aW9uIGUoKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06eW4oKTtjb25zdCBuPXQ9PmUodCk7aWYobi52ZXJzaW9uPSIzLjMuMSIsbi5yZW1vdmVkPVtdLCF0fHwhdC5kb2N1bWVudHx8dC5kb2N1bWVudC5ub2RlVHlwZSE9PXhufHwhdC5FbGVtZW50KXJldHVybiBuLmlzU3VwcG9ydGVkPSExLG47bGV0e2RvY3VtZW50Oml9PXQ7Y29uc3QgYT1pLG89YS5jdXJyZW50U2NyaXB0LHtEb2N1bWVudEZyYWdtZW50OnIsSFRNTFRlbXBsYXRlRWxlbWVudDpzLE5vZGU6bCxFbGVtZW50OmQsTm9kZUZpbHRlcjpjLE5hbWVkTm9kZU1hcDp1PXQuTmFtZWROb2RlTWFwfHx0Lk1vek5hbWVkQXR0ck1hcCxIVE1MRm9ybUVsZW1lbnQ6cCxET01QYXJzZXI6Zix0cnVzdGVkVHlwZXM6bX09dCxoPWQucHJvdG90eXBlLGc9VnQoaCwiY2xvbmVOb2RlIiksYj1WdChoLCJyZW1vdmUiKSx2PVZ0KGgsIm5leHRTaWJsaW5nIikseD1WdChoLCJjaGlsZE5vZGVzIikseT1WdChoLCJwYXJlbnROb2RlIik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHMpe2NvbnN0IGU9aS5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2UuY29udGVudCYmZS5jb250ZW50Lm93bmVyRG9jdW1lbnQmJihpPWUuY29udGVudC5vd25lckRvY3VtZW50KX1sZXQgdyxrPSIiO2NvbnN0e2ltcGxlbWVudGF0aW9uOkEsY3JlYXRlTm9kZUl0ZXJhdG9yOkMsY3JlYXRlRG9jdW1lbnRGcmFnbWVudDpFLGdldEVsZW1lbnRzQnlUYWdOYW1lOlN9PWkse2ltcG9ydE5vZGU6RH09YTtsZXQgWT17YWZ0ZXJTYW5pdGl6ZUF0dHJpYnV0ZXM6W10sYWZ0ZXJTYW5pdGl6ZUVsZW1lbnRzOltdLGFmdGVyU2FuaXRpemVTaGFkb3dET006W10sYmVmb3JlU2FuaXRpemVBdHRyaWJ1dGVzOltdLGJlZm9yZVNhbml0aXplRWxlbWVudHM6W10sYmVmb3JlU2FuaXRpemVTaGFkb3dET006W10sdXBvblNhbml0aXplQXR0cmlidXRlOltdLHVwb25TYW5pdGl6ZUVsZW1lbnQ6W10sdXBvblNhbml0aXplU2hhZG93Tm9kZTpbXX07bi5pc1N1cHBvcnRlZD0iZnVuY3Rpb24iPT10eXBlb2YgZ3QmJiJmdW5jdGlvbiI9PXR5cGVvZiB5JiZBJiZ2b2lkIDAhPT1BLmNyZWF0ZUhUTUxEb2N1bWVudDtjb25zdHtNVVNUQUNIRV9FWFBSOlQsRVJCX0VYUFI6RixUTVBMSVRfRVhQUjpJLERBVEFfQVRUUjpfLEFSSUFfQVRUUjpNLElTX1NDUklQVF9PUl9EQVRBOk4sQVRUUl9XSElURVNQQUNFOk8sQ1VTVE9NX0VMRU1FTlQ6Un09bW47bGV0e0lTX0FMTE9XRURfVVJJOmp9PW1uLFA9bnVsbDtjb25zdCB6PUJ0KHt9LFsuLi4kdCwuLi5XdCwuLi5LdCwuLi5YdCwuLi5adF0pO2xldCBMPW51bGw7Y29uc3QgVT1CdCh7fSxbLi4uSnQsLi4uZW4sLi4udG4sLi4ubm5dKTtsZXQgQj1PYmplY3Quc2VhbChBdChudWxsLHt0YWdOYW1lQ2hlY2s6e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOm51bGx9LGF0dHJpYnV0ZU5hbWVDaGVjazp7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsdmFsdWU6bnVsbH0sYWxsb3dDdXN0b21pemVkQnVpbHRJbkVsZW1lbnRzOnt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTohMX19KSksSD1udWxsLHE9bnVsbDtjb25zdCBWPU9iamVjdC5zZWFsKEF0KG51bGwse3RhZ0NoZWNrOnt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTpudWxsfSxhdHRyaWJ1dGVDaGVjazp7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsdmFsdWU6bnVsbH19KSk7bGV0ICQ9ITAsVz0hMCxLPSExLEc9ITAsWD0hMSxRPSEwLFo9ITEsSj0hMSxlZT0hMSx0ZT0hMSxuZT0hMSxpZT0hMSxhZT0hMCxvZT0hMSxyZT0hMCxzZT0hMSxsZT17fSxkZT1udWxsO2NvbnN0IGNlPUJ0KHt9LFsiYW5ub3RhdGlvbi14bWwiLCJhdWRpbyIsImNvbGdyb3VwIiwiZGVzYyIsImZvcmVpZ25vYmplY3QiLCJoZWFkIiwiaWZyYW1lIiwibWF0aCIsIm1pIiwibW4iLCJtbyIsIm1zIiwibXRleHQiLCJub2VtYmVkIiwibm9mcmFtZXMiLCJub3NjcmlwdCIsInBsYWludGV4dCIsInNjcmlwdCIsInN0eWxlIiwic3ZnIiwidGVtcGxhdGUiLCJ0aGVhZCIsInRpdGxlIiwidmlkZW8iLCJ4bXAiXSk7bGV0IHVlPW51bGw7Y29uc3QgcGU9QnQoe30sWyJhdWRpbyIsInZpZGVvIiwiaW1nIiwic291cmNlIiwiaW1hZ2UiLCJ0cmFjayJdKTtsZXQgZmU9bnVsbDtjb25zdCBtZT1CdCh7fSxbImFsdCIsImNsYXNzIiwiZm9yIiwiaWQiLCJsYWJlbCIsIm5hbWUiLCJwYXR0ZXJuIiwicGxhY2Vob2xkZXIiLCJyb2xlIiwic3VtbWFyeSIsInRpdGxlIiwidmFsdWUiLCJzdHlsZSIsInhtbG5zIl0pLGhlPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIixnZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGJlPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtsZXQgdmU9YmUseGU9ITEseWU9bnVsbDtjb25zdCB3ZT1CdCh7fSxbaGUsZ2UsYmVdLF90KTtsZXQga2U9QnQoe30sWyJtaSIsIm1vIiwibW4iLCJtcyIsIm10ZXh0Il0pLEFlPUJ0KHt9LFsiYW5ub3RhdGlvbi14bWwiXSk7Y29uc3QgQ2U9QnQoe30sWyJ0aXRsZSIsInN0eWxlIiwiZm9udCIsImEiLCJzY3JpcHQiXSk7bGV0IEVlPW51bGw7Y29uc3QgU2U9WyJhcHBsaWNhdGlvbi94aHRtbCt4bWwiLCJ0ZXh0L2h0bWwiXTtsZXQgRGU9bnVsbCxZZT1udWxsO2NvbnN0IFRlPWkuY3JlYXRlRWxlbWVudCgiZm9ybSIpLEZlPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgUmVnRXhwfHxlIGluc3RhbmNlb2YgRnVuY3Rpb259LEllPWZ1bmN0aW9uKCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O2lmKCFZZXx8WWUhPT1lKXtpZihlJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlPXF0KGUpLEVlPS0xPT09U2UuaW5kZXhPZihlLlBBUlNFUl9NRURJQV9UWVBFKT8idGV4dC9odG1sIjplLlBBUlNFUl9NRURJQV9UWVBFLERlPSJhcHBsaWNhdGlvbi94aHRtbCt4bWwiPT09RWU/X3Q6SXQsUD1qdChlLCJBTExPV0VEX1RBR1MiKT9CdCh7fSxlLkFMTE9XRURfVEFHUyxEZSk6eixMPWp0KGUsIkFMTE9XRURfQVRUUiIpP0J0KHt9LGUuQUxMT1dFRF9BVFRSLERlKTpVLHllPWp0KGUsIkFMTE9XRURfTkFNRVNQQUNFUyIpP0J0KHt9LGUuQUxMT1dFRF9OQU1FU1BBQ0VTLF90KTp3ZSxmZT1qdChlLCJBRERfVVJJX1NBRkVfQVRUUiIpP0J0KHF0KG1lKSxlLkFERF9VUklfU0FGRV9BVFRSLERlKTptZSx1ZT1qdChlLCJBRERfREFUQV9VUklfVEFHUyIpP0J0KHF0KHBlKSxlLkFERF9EQVRBX1VSSV9UQUdTLERlKTpwZSxkZT1qdChlLCJGT1JCSURfQ09OVEVOVFMiKT9CdCh7fSxlLkZPUkJJRF9DT05URU5UUyxEZSk6Y2UsSD1qdChlLCJGT1JCSURfVEFHUyIpP0J0KHt9LGUuRk9SQklEX1RBR1MsRGUpOnF0KHt9KSxxPWp0KGUsIkZPUkJJRF9BVFRSIik/QnQoe30sZS5GT1JCSURfQVRUUixEZSk6cXQoe30pLGxlPSEhanQoZSwiVVNFX1BST0ZJTEVTIikmJmUuVVNFX1BST0ZJTEVTLCQ9ITEhPT1lLkFMTE9XX0FSSUFfQVRUUixXPSExIT09ZS5BTExPV19EQVRBX0FUVFIsSz1lLkFMTE9XX1VOS05PV05fUFJPVE9DT0xTfHwhMSxHPSExIT09ZS5BTExPV19TRUxGX0NMT1NFX0lOX0FUVFIsWD1lLlNBRkVfRk9SX1RFTVBMQVRFU3x8ITEsUT0hMSE9PWUuU0FGRV9GT1JfWE1MLFo9ZS5XSE9MRV9ET0NVTUVOVHx8ITEsdGU9ZS5SRVRVUk5fRE9NfHwhMSxuZT1lLlJFVFVSTl9ET01fRlJBR01FTlR8fCExLGllPWUuUkVUVVJOX1RSVVNURURfVFlQRXx8ITEsZWU9ZS5GT1JDRV9CT0RZfHwhMSxhZT0hMSE9PWUuU0FOSVRJWkVfRE9NLG9lPWUuU0FOSVRJWkVfTkFNRURfUFJPUFN8fCExLHJlPSExIT09ZS5LRUVQX0NPTlRFTlQsc2U9ZS5JTl9QTEFDRXx8ITEsaj1lLkFMTE9XRURfVVJJX1JFR0VYUHx8ZG4sdmU9ZS5OQU1FU1BBQ0V8fGJlLGtlPWUuTUFUSE1MX1RFWFRfSU5URUdSQVRJT05fUE9JTlRTfHxrZSxBZT1lLkhUTUxfSU5URUdSQVRJT05fUE9JTlRTfHxBZSxCPWUuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkd8fHt9LGUuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcmJkZlKGUuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrKSYmKEIudGFnTmFtZUNoZWNrPWUuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrKSxlLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HJiZGZShlLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmF0dHJpYnV0ZU5hbWVDaGVjaykmJihCLmF0dHJpYnV0ZU5hbWVDaGVjaz1lLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmF0dHJpYnV0ZU5hbWVDaGVjayksZS5DVVNUT01fRUxFTUVOVF9IQU5ETElORyYmImJvb2xlYW4iPT10eXBlb2YgZS5DVVNUT01fRUxFTUVOVF9IQU5ETElORy5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHMmJihCLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cz1lLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyksWCYmKFc9ITEpLG5lJiYodGU9ITApLGxlJiYoUD1CdCh7fSxadCksTD1bXSwhMD09PWxlLmh0bWwmJihCdChQLCR0KSxCdChMLEp0KSksITA9PT1sZS5zdmcmJihCdChQLFd0KSxCdChMLGVuKSxCdChMLG5uKSksITA9PT1sZS5zdmdGaWx0ZXJzJiYoQnQoUCxLdCksQnQoTCxlbiksQnQoTCxubikpLCEwPT09bGUubWF0aE1sJiYoQnQoUCxYdCksQnQoTCx0biksQnQoTCxubikpKSxlLkFERF9UQUdTJiYoImZ1bmN0aW9uIj09dHlwZW9mIGUuQUREX1RBR1M/Vi50YWdDaGVjaz1lLkFERF9UQUdTOihQPT09eiYmKFA9cXQoUCkpLEJ0KFAsZS5BRERfVEFHUyxEZSkpKSxlLkFERF9BVFRSJiYoImZ1bmN0aW9uIj09dHlwZW9mIGUuQUREX0FUVFI/Vi5hdHRyaWJ1dGVDaGVjaz1lLkFERF9BVFRSOihMPT09VSYmKEw9cXQoTCkpLEJ0KEwsZS5BRERfQVRUUixEZSkpKSxlLkFERF9VUklfU0FGRV9BVFRSJiZCdChmZSxlLkFERF9VUklfU0FGRV9BVFRSLERlKSxlLkZPUkJJRF9DT05URU5UUyYmKGRlPT09Y2UmJihkZT1xdChkZSkpLEJ0KGRlLGUuRk9SQklEX0NPTlRFTlRTLERlKSksZS5BRERfRk9SQklEX0NPTlRFTlRTJiYoZGU9PT1jZSYmKGRlPXF0KGRlKSksQnQoZGUsZS5BRERfRk9SQklEX0NPTlRFTlRTLERlKSkscmUmJihQWyIjdGV4dCJdPSEwKSxaJiZCdChQLFsiaHRtbCIsImhlYWQiLCJib2R5Il0pLFAudGFibGUmJihCdChQLFsidGJvZHkiXSksZGVsZXRlIEgudGJvZHkpLGUuVFJVU1RFRF9UWVBFU19QT0xJQ1kpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlLlRSVVNURURfVFlQRVNfUE9MSUNZLmNyZWF0ZUhUTUwpdGhyb3cgenQoJ1RSVVNURURfVFlQRVNfUE9MSUNZIGNvbmZpZ3VyYXRpb24gb3B0aW9uIG11c3QgcHJvdmlkZSBhICJjcmVhdGVIVE1MIiBob29rLicpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlLlRSVVNURURfVFlQRVNfUE9MSUNZLmNyZWF0ZVNjcmlwdFVSTCl0aHJvdyB6dCgnVFJVU1RFRF9UWVBFU19QT0xJQ1kgY29uZmlndXJhdGlvbiBvcHRpb24gbXVzdCBwcm92aWRlIGEgImNyZWF0ZVNjcmlwdFVSTCIgaG9vay4nKTt3PWUuVFJVU1RFRF9UWVBFU19QT0xJQ1ksaz13LmNyZWF0ZUhUTUwoIiIpfWVsc2Ugdm9pZCAwPT09dyYmKHc9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9dHlwZW9mIGV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmNyZWF0ZVBvbGljeSlyZXR1cm4gbnVsbDtsZXQgbj1udWxsO2NvbnN0IGk9ImRhdGEtdHQtcG9saWN5LXN1ZmZpeCI7dCYmdC5oYXNBdHRyaWJ1dGUoaSkmJihuPXQuZ2V0QXR0cmlidXRlKGkpKTtjb25zdCBhPSJkb21wdXJpZnkiKyhuPyIjIituOiIiKTt0cnl7cmV0dXJuIGUuY3JlYXRlUG9saWN5KGEse2NyZWF0ZUhUTUwoZSl7cmV0dXJuIGV9LGNyZWF0ZVNjcmlwdFVSTChlKXtyZXR1cm4gZX19KX1jYXRjaChlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUcnVzdGVkVHlwZXMgcG9saWN5ICIrYSsiIGNvdWxkIG5vdCBiZSBjcmVhdGVkLiIpLG51bGx9fShtLG8pKSxudWxsIT09dyYmInN0cmluZyI9PXR5cGVvZiBrJiYoaz13LmNyZWF0ZUhUTUwoIiIpKTt3dCYmd3QoZSksWWU9ZX19LF9lPUJ0KHt9LFsuLi5XdCwuLi5LdCwuLi5HdF0pLE1lPUJ0KHt9LFsuLi5YdCwuLi5RdF0pLE5lPWZ1bmN0aW9uKGUpe1R0KG4ucmVtb3ZlZCx7ZWxlbWVudDplfSk7dHJ5e3koZSkucmVtb3ZlQ2hpbGQoZSl9Y2F0Y2godCl7YihlKX19LE9lPWZ1bmN0aW9uKGUsdCl7dHJ5e1R0KG4ucmVtb3ZlZCx7YXR0cmlidXRlOnQuZ2V0QXR0cmlidXRlTm9kZShlKSxmcm9tOnR9KX1jYXRjaChlKXtUdChuLnJlbW92ZWQse2F0dHJpYnV0ZTpudWxsLGZyb206dH0pfWlmKHQucmVtb3ZlQXR0cmlidXRlKGUpLCJpcyI9PT1lKWlmKHRlfHxuZSl0cnl7TmUodCl9Y2F0Y2goZSl7fWVsc2UgdHJ5e3Quc2V0QXR0cmlidXRlKGUsIiIpfWNhdGNoKGUpe319LFJlPWZ1bmN0aW9uKGUpe2xldCB0PW51bGwsbj1udWxsO2lmKGVlKWU9IjxyZW1vdmU+PC9yZW1vdmU+IitlO2Vsc2V7Y29uc3QgdD1NdChlLC9eW1xyXG5cdCBdKy8pO249dCYmdFswXX0iYXBwbGljYXRpb24veGh0bWwreG1sIj09PUVlJiZ2ZT09PWJlJiYoZT0nPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjwvaGVhZD48Ym9keT4nK2UrIjwvYm9keT48L2h0bWw+Iik7Y29uc3QgYT13P3cuY3JlYXRlSFRNTChlKTplO2lmKHZlPT09YmUpdHJ5e3Q9KG5ldyBmKS5wYXJzZUZyb21TdHJpbmcoYSxFZSl9Y2F0Y2goZSl7fWlmKCF0fHwhdC5kb2N1bWVudEVsZW1lbnQpe3Q9QS5jcmVhdGVEb2N1bWVudCh2ZSwidGVtcGxhdGUiLG51bGwpO3RyeXt0LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUw9eGU/azphfWNhdGNoKGUpe319Y29uc3Qgbz10LmJvZHl8fHQuZG9jdW1lbnRFbGVtZW50O3JldHVybiBlJiZuJiZvLmluc2VydEJlZm9yZShpLmNyZWF0ZVRleHROb2RlKG4pLG8uY2hpbGROb2Rlc1swXXx8bnVsbCksdmU9PT1iZT9TLmNhbGwodCxaPyJodG1sIjoiYm9keSIpWzBdOlo/dC5kb2N1bWVudEVsZW1lbnQ6b30samU9ZnVuY3Rpb24oZSl7cmV0dXJuIEMuY2FsbChlLm93bmVyRG9jdW1lbnR8fGUsZSxjLlNIT1dfRUxFTUVOVHxjLlNIT1dfQ09NTUVOVHxjLlNIT1dfVEVYVHxjLlNIT1dfUFJPQ0VTU0lOR19JTlNUUlVDVElPTnxjLlNIT1dfQ0RBVEFfU0VDVElPTixudWxsKX0sUGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBwJiYoInN0cmluZyIhPXR5cGVvZiBlLm5vZGVOYW1lfHwic3RyaW5nIiE9dHlwZW9mIGUudGV4dENvbnRlbnR8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLnJlbW92ZUNoaWxkfHwhKGUuYXR0cmlidXRlcyBpbnN0YW5jZW9mIHUpfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5yZW1vdmVBdHRyaWJ1dGV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLnNldEF0dHJpYnV0ZXx8InN0cmluZyIhPXR5cGVvZiBlLm5hbWVzcGFjZVVSSXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUuaW5zZXJ0QmVmb3JlfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5oYXNDaGlsZE5vZGVzKX0semU9ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGwmJmUgaW5zdGFuY2VvZiBsfTtmdW5jdGlvbiBMZShlLHQsaSl7U3QoZSxlPT57ZS5jYWxsKG4sdCxpLFllKX0pfWNvbnN0IFVlPWZ1bmN0aW9uKGUpe2xldCB0PW51bGw7aWYoTGUoWS5iZWZvcmVTYW5pdGl6ZUVsZW1lbnRzLGUsbnVsbCksUGUoZSkpcmV0dXJuIE5lKGUpLCEwO2NvbnN0IGk9RGUoZS5ub2RlTmFtZSk7aWYoTGUoWS51cG9uU2FuaXRpemVFbGVtZW50LGUse3RhZ05hbWU6aSxhbGxvd2VkVGFnczpQfSksUSYmZS5oYXNDaGlsZE5vZGVzKCkmJiF6ZShlLmZpcnN0RWxlbWVudENoaWxkKSYmUHQoLzxbL1x3IV0vZyxlLmlubmVySFRNTCkmJlB0KC88Wy9cdyFdL2csZS50ZXh0Q29udGVudCkpcmV0dXJuIE5lKGUpLCEwO2lmKGUubm9kZVR5cGU9PT1ibilyZXR1cm4gTmUoZSksITA7aWYoUSYmZS5ub2RlVHlwZT09PXZuJiZQdCgvPFsvXHddL2csZS5kYXRhKSlyZXR1cm4gTmUoZSksITA7aWYoIShWLnRhZ0NoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24mJlYudGFnQ2hlY2soaSkpJiYoIVBbaV18fEhbaV0pKXtpZighSFtpXSYmSGUoaSkpe2lmKEIudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZQdChCLnRhZ05hbWVDaGVjayxpKSlyZXR1cm4hMTtpZihCLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZCLnRhZ05hbWVDaGVjayhpKSlyZXR1cm4hMX1pZihyZSYmIWRlW2ldKXtjb25zdCB0PXkoZSl8fGUucGFyZW50Tm9kZSxuPXgoZSl8fGUuY2hpbGROb2RlcztpZihuJiZ0KXtmb3IobGV0IGk9bi5sZW5ndGgtMTtpPj0wOy0taSl7Y29uc3QgYT1nKG5baV0sITApO2EuX19yZW1vdmFsQ291bnQ9KGUuX19yZW1vdmFsQ291bnR8fDApKzEsdC5pbnNlcnRCZWZvcmUoYSx2KGUpKX19fXJldHVybiBOZShlKSwhMH1yZXR1cm4gZSBpbnN0YW5jZW9mIGQmJiFmdW5jdGlvbihlKXtsZXQgdD15KGUpO3QmJnQudGFnTmFtZXx8KHQ9e25hbWVzcGFjZVVSSTp2ZSx0YWdOYW1lOiJ0ZW1wbGF0ZSJ9KTtjb25zdCBuPUl0KGUudGFnTmFtZSksaT1JdCh0LnRhZ05hbWUpO3JldHVybiEheWVbZS5uYW1lc3BhY2VVUkldJiYoZS5uYW1lc3BhY2VVUkk9PT1nZT90Lm5hbWVzcGFjZVVSST09PWJlPyJzdmciPT09bjp0Lm5hbWVzcGFjZVVSST09PWhlPyJzdmciPT09biYmKCJhbm5vdGF0aW9uLXhtbCI9PT1pfHxrZVtpXSk6Qm9vbGVhbihfZVtuXSk6ZS5uYW1lc3BhY2VVUkk9PT1oZT90Lm5hbWVzcGFjZVVSST09PWJlPyJtYXRoIj09PW46dC5uYW1lc3BhY2VVUkk9PT1nZT8ibWF0aCI9PT1uJiZBZVtpXTpCb29sZWFuKE1lW25dKTplLm5hbWVzcGFjZVVSST09PWJlPyEodC5uYW1lc3BhY2VVUkk9PT1nZSYmIUFlW2ldKSYmISh0Lm5hbWVzcGFjZVVSST09PWhlJiYha2VbaV0pJiYhTWVbbl0mJihDZVtuXXx8IV9lW25dKTohKCJhcHBsaWNhdGlvbi94aHRtbCt4bWwiIT09RWV8fCF5ZVtlLm5hbWVzcGFjZVVSSV0pKX0oZSk/KE5lKGUpLCEwKToibm9zY3JpcHQiIT09aSYmIm5vZW1iZWQiIT09aSYmIm5vZnJhbWVzIiE9PWl8fCFQdCgvPFwvbm8oc2NyaXB0fGVtYmVkfGZyYW1lcykvaSxlLmlubmVySFRNTCk/KFgmJmUubm9kZVR5cGU9PT1nbiYmKHQ9ZS50ZXh0Q29udGVudCxTdChbVCxGLEldLGU9Pnt0PU50KHQsZSwiICIpfSksZS50ZXh0Q29udGVudCE9PXQmJihUdChuLnJlbW92ZWQse2VsZW1lbnQ6ZS5jbG9uZU5vZGUoKX0pLGUudGV4dENvbnRlbnQ9dCkpLExlKFkuYWZ0ZXJTYW5pdGl6ZUVsZW1lbnRzLGUsbnVsbCksITEpOihOZShlKSwhMCl9LEJlPWZ1bmN0aW9uKGUsdCxuKXtpZihhZSYmKCJpZCI9PT10fHwibmFtZSI9PT10KSYmKG4gaW4gaXx8biBpbiBUZSkpcmV0dXJuITE7aWYoVyYmIXFbdF0mJlB0KF8sdCkpO2Vsc2UgaWYoJCYmUHQoTSx0KSk7ZWxzZSBpZihWLmF0dHJpYnV0ZUNoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24mJlYuYXR0cmlidXRlQ2hlY2sodCxlKSk7ZWxzZSBpZighTFt0XXx8cVt0XSl7aWYoIShIZShlKSYmKEIudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZQdChCLnRhZ05hbWVDaGVjayxlKXx8Qi50YWdOYW1lQ2hlY2sgaW5zdGFuY2VvZiBGdW5jdGlvbiYmQi50YWdOYW1lQ2hlY2soZSkpJiYoQi5hdHRyaWJ1dGVOYW1lQ2hlY2sgaW5zdGFuY2VvZiBSZWdFeHAmJlB0KEIuYXR0cmlidXRlTmFtZUNoZWNrLHQpfHxCLmF0dHJpYnV0ZU5hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZCLmF0dHJpYnV0ZU5hbWVDaGVjayh0LGUpKXx8ImlzIj09PXQmJkIuYWxsb3dDdXN0b21pemVkQnVpbHRJbkVsZW1lbnRzJiYoQi50YWdOYW1lQ2hlY2sgaW5zdGFuY2VvZiBSZWdFeHAmJlB0KEIudGFnTmFtZUNoZWNrLG4pfHxCLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZCLnRhZ05hbWVDaGVjayhuKSkpKXJldHVybiExfWVsc2UgaWYoZmVbdF0pO2Vsc2UgaWYoUHQoaixOdChuLE8sIiIpKSk7ZWxzZSBpZigic3JjIiE9PXQmJiJ4bGluazpocmVmIiE9PXQmJiJocmVmIiE9PXR8fCJzY3JpcHQiPT09ZXx8MCE9PU90KG4sImRhdGE6Iil8fCF1ZVtlXSl7aWYoSyYmIVB0KE4sTnQobixPLCIiKSkpO2Vsc2UgaWYobilyZXR1cm4hMX1lbHNlO3JldHVybiEwfSxIZT1mdW5jdGlvbihlKXtyZXR1cm4iYW5ub3RhdGlvbi14bWwiIT09ZSYmTXQoZSxSKX0scWU9ZnVuY3Rpb24oZSl7TGUoWS5iZWZvcmVTYW5pdGl6ZUF0dHJpYnV0ZXMsZSxudWxsKTtjb25zdHthdHRyaWJ1dGVzOnR9PWU7aWYoIXR8fFBlKGUpKXJldHVybjtjb25zdCBpPXthdHRyTmFtZToiIixhdHRyVmFsdWU6IiIsa2VlcEF0dHI6ITAsYWxsb3dlZEF0dHJpYnV0ZXM6TCxmb3JjZUtlZXBBdHRyOnZvaWQgMH07bGV0IGE9dC5sZW5ndGg7Zm9yKDthLS07KXtjb25zdCBvPXRbYV0se25hbWU6cixuYW1lc3BhY2VVUkk6cyx2YWx1ZTpsfT1vLGQ9RGUociksYz1sO2xldCB1PSJ2YWx1ZSI9PT1yP2M6UnQoYyk7aWYoaS5hdHRyTmFtZT1kLGkuYXR0clZhbHVlPXUsaS5rZWVwQXR0cj0hMCxpLmZvcmNlS2VlcEF0dHI9dm9pZCAwLExlKFkudXBvblNhbml0aXplQXR0cmlidXRlLGUsaSksdT1pLmF0dHJWYWx1ZSwhb2V8fCJpZCIhPT1kJiYibmFtZSIhPT1kfHwoT2UocixlKSx1PSJ1c2VyLWNvbnRlbnQtIit1KSxRJiZQdCgvKCgtLSE/fF0pPil8PFwvKHN0eWxlfHRpdGxlfHRleHRhcmVhKS9pLHUpKXtPZShyLGUpO2NvbnRpbnVlfWlmKCJhdHRyaWJ1dGVuYW1lIj09PWQmJk10KHUsImhyZWYiKSl7T2UocixlKTtjb250aW51ZX1pZihpLmZvcmNlS2VlcEF0dHIpY29udGludWU7aWYoIWkua2VlcEF0dHIpe09lKHIsZSk7Y29udGludWV9aWYoIUcmJlB0KC9cLz4vaSx1KSl7T2UocixlKTtjb250aW51ZX1YJiZTdChbVCxGLEldLGU9Pnt1PU50KHUsZSwiICIpfSk7Y29uc3QgcD1EZShlLm5vZGVOYW1lKTtpZihCZShwLGQsdSkpe2lmKHcmJiJvYmplY3QiPT10eXBlb2YgbSYmImZ1bmN0aW9uIj09dHlwZW9mIG0uZ2V0QXR0cmlidXRlVHlwZSlpZihzKTtlbHNlIHN3aXRjaChtLmdldEF0dHJpYnV0ZVR5cGUocCxkKSl7Y2FzZSJUcnVzdGVkSFRNTCI6dT13LmNyZWF0ZUhUTUwodSk7YnJlYWs7Y2FzZSJUcnVzdGVkU2NyaXB0VVJMIjp1PXcuY3JlYXRlU2NyaXB0VVJMKHUpfWlmKHUhPT1jKXRyeXtzP2Uuc2V0QXR0cmlidXRlTlMocyxyLHUpOmUuc2V0QXR0cmlidXRlKHIsdSksUGUoZSk/TmUoZSk6WXQobi5yZW1vdmVkKX1jYXRjaCh0KXtPZShyLGUpfX1lbHNlIE9lKHIsZSl9TGUoWS5hZnRlclNhbml0aXplQXR0cmlidXRlcyxlLG51bGwpfSxWZT1mdW5jdGlvbiBlKHQpe2xldCBuPW51bGw7Y29uc3QgaT1qZSh0KTtmb3IoTGUoWS5iZWZvcmVTYW5pdGl6ZVNoYWRvd0RPTSx0LG51bGwpO249aS5uZXh0Tm9kZSgpOylMZShZLnVwb25TYW5pdGl6ZVNoYWRvd05vZGUsbixudWxsKSxVZShuKSxxZShuKSxuLmNvbnRlbnQgaW5zdGFuY2VvZiByJiZlKG4uY29udGVudCk7TGUoWS5hZnRlclNhbml0aXplU2hhZG93RE9NLHQsbnVsbCl9O3JldHVybiBuLnNhbml0aXplPWZ1bmN0aW9uKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxpPW51bGwsbz1udWxsLHM9bnVsbCxkPW51bGw7aWYoeGU9IWUseGUmJihlPSJceDNjIS0tXHgzZSIpLCJzdHJpbmciIT10eXBlb2YgZSYmIXplKGUpKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZyl0aHJvdyB6dCgidG9TdHJpbmcgaXMgbm90IGEgZnVuY3Rpb24iKTtpZigic3RyaW5nIiE9dHlwZW9mKGU9ZS50b1N0cmluZygpKSl0aHJvdyB6dCgiZGlydHkgaXMgbm90IGEgc3RyaW5nLCBhYm9ydGluZyIpfWlmKCFuLmlzU3VwcG9ydGVkKXJldHVybiBlO2lmKEp8fEllKHQpLG4ucmVtb3ZlZD1bXSwic3RyaW5nIj09dHlwZW9mIGUmJihzZT0hMSksc2Upe2lmKGUubm9kZU5hbWUpe2NvbnN0IHQ9RGUoZS5ub2RlTmFtZSk7aWYoIVBbdF18fEhbdF0pdGhyb3cgenQoInJvb3Qgbm9kZSBpcyBmb3JiaWRkZW4gYW5kIGNhbm5vdCBiZSBzYW5pdGl6ZWQgaW4tcGxhY2UiKX19ZWxzZSBpZihlIGluc3RhbmNlb2YgbClpPVJlKCJceDNjIS0tLS1ceDNlIiksbz1pLm93bmVyRG9jdW1lbnQuaW1wb3J0Tm9kZShlLCEwKSxvLm5vZGVUeXBlPT09aG4mJiJCT0RZIj09PW8ubm9kZU5hbWV8fCJIVE1MIj09PW8ubm9kZU5hbWU/aT1vOmkuYXBwZW5kQ2hpbGQobyk7ZWxzZXtpZighdGUmJiFYJiYhWiYmLTE9PT1lLmluZGV4T2YoIjwiKSlyZXR1cm4gdyYmaWU/dy5jcmVhdGVIVE1MKGUpOmU7aWYoaT1SZShlKSwhaSlyZXR1cm4gdGU/bnVsbDppZT9rOiIifWkmJmVlJiZOZShpLmZpcnN0Q2hpbGQpO2NvbnN0IGM9amUoc2U/ZTppKTtmb3IoO3M9Yy5uZXh0Tm9kZSgpOylVZShzKSxxZShzKSxzLmNvbnRlbnQgaW5zdGFuY2VvZiByJiZWZShzLmNvbnRlbnQpO2lmKHNlKXJldHVybiBlO2lmKHRlKXtpZihuZSlmb3IoZD1FLmNhbGwoaS5vd25lckRvY3VtZW50KTtpLmZpcnN0Q2hpbGQ7KWQuYXBwZW5kQ2hpbGQoaS5maXJzdENoaWxkKTtlbHNlIGQ9aTtyZXR1cm4oTC5zaGFkb3dyb290fHxMLnNoYWRvd3Jvb3Rtb2RlKSYmKGQ9RC5jYWxsKGEsZCwhMCkpLGR9bGV0IHU9Wj9pLm91dGVySFRNTDppLmlubmVySFRNTDtyZXR1cm4gWiYmUFsiIWRvY3R5cGUiXSYmaS5vd25lckRvY3VtZW50JiZpLm93bmVyRG9jdW1lbnQuZG9jdHlwZSYmaS5vd25lckRvY3VtZW50LmRvY3R5cGUubmFtZSYmUHQocG4saS5vd25lckRvY3VtZW50LmRvY3R5cGUubmFtZSkmJih1PSI8IURPQ1RZUEUgIitpLm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lKyI+XG4iK3UpLFgmJlN0KFtULEYsSV0sZT0+e3U9TnQodSxlLCIgIil9KSx3JiZpZT93LmNyZWF0ZUhUTUwodSk6dX0sbi5zZXRDb25maWc9ZnVuY3Rpb24oKXtJZShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30pLEo9ITB9LG4uY2xlYXJDb25maWc9ZnVuY3Rpb24oKXtZZT1udWxsLEo9ITF9LG4uaXNWYWxpZEF0dHJpYnV0ZT1mdW5jdGlvbihlLHQsbil7WWV8fEllKHt9KTtjb25zdCBpPURlKGUpLGE9RGUodCk7cmV0dXJuIEJlKGksYSxuKX0sbi5hZGRIb29rPWZ1bmN0aW9uKGUsdCl7ImZ1bmN0aW9uIj09dHlwZW9mIHQmJlR0KFlbZV0sdCl9LG4ucmVtb3ZlSG9vaz1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMCE9PXQpe2NvbnN0IG49RHQoWVtlXSx0KTtyZXR1cm4tMT09PW4/dm9pZCAwOkZ0KFlbZV0sbiwxKVswXX1yZXR1cm4gWXQoWVtlXSl9LG4ucmVtb3ZlSG9va3M9ZnVuY3Rpb24oZSl7WVtlXT1bXX0sbi5yZW1vdmVBbGxIb29rcz1mdW5jdGlvbigpe1k9e2FmdGVyU2FuaXRpemVBdHRyaWJ1dGVzOltdLGFmdGVyU2FuaXRpemVFbGVtZW50czpbXSxhZnRlclNhbml0aXplU2hhZG93RE9NOltdLGJlZm9yZVNhbml0aXplQXR0cmlidXRlczpbXSxiZWZvcmVTYW5pdGl6ZUVsZW1lbnRzOltdLGJlZm9yZVNhbml0aXplU2hhZG93RE9NOltdLHVwb25TYW5pdGl6ZUF0dHJpYnV0ZTpbXSx1cG9uU2FuaXRpemVFbGVtZW50OltdLHVwb25TYW5pdGl6ZVNoYWRvd05vZGU6W119fSxufSgpLGtuPWZ1bmN0aW9uKCl7dmFyIGU9e2Jhc2U6Imh0dHBzOi8vdHdlbW9qaS5tYXhjZG4uY29tL3YvMTMuMS4xLyIsZXh0OiIucG5nIixzaXplOiI3Mng3MiIsY2xhc3NOYW1lOiJlbW9qaSIsY29udmVydDp7ZnJvbUNvZGVQb2ludDpmdW5jdGlvbihlKXt2YXIgdD0ic3RyaW5nIj09dHlwZW9mIGU/cGFyc2VJbnQoZSwxNik6ZTtpZih0PDY1NTM2KXJldHVybiBzKHQpO3JldHVybiBzKDU1Mjk2KygodC09NjU1MzYpPj4xMCksNTYzMjArKDEwMjMmdCkpfSx0b0NvZGVQb2ludDp2fSxvbmVycm9yOmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGwodGhpcy5hbHQsITEpLHRoaXMpfSxwYXJzZTpmdW5jdGlvbih0LG4pe24mJiJmdW5jdGlvbiIhPXR5cGVvZiBufHwobj17Y2FsbGJhY2s6bn0pO3JldHVybigic3RyaW5nIj09dHlwZW9mIHQ/bTpmKSh0LHtjYWxsYmFjazpuLmNhbGxiYWNrfHxjLGF0dHJpYnV0ZXM6ImZ1bmN0aW9uIj09dHlwZW9mIG4uYXR0cmlidXRlcz9uLmF0dHJpYnV0ZXM6ZyxiYXNlOiJzdHJpbmciPT10eXBlb2Ygbi5iYXNlP24uYmFzZTplLmJhc2UsZXh0Om4uZXh0fHxlLmV4dCxzaXplOm4uZm9sZGVyfHwoaT1uLnNpemV8fGUuc2l6ZSwibnVtYmVyIj09dHlwZW9mIGk/aSsieCIraTppKSxjbGFzc05hbWU6bi5jbGFzc05hbWV8fGUuY2xhc3NOYW1lLG9uZXJyb3I6bi5vbmVycm9yfHxlLm9uZXJyb3J9KTt2YXIgaX0scmVwbGFjZTpiLHRlc3Q6ZnVuY3Rpb24oZSl7bi5sYXN0SW5kZXg9MDt2YXIgdD1uLnRlc3QoZSk7cmV0dXJuIG4ubGFzdEluZGV4PTAsdH19LHQ9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwiJyI6IiYjMzk7IiwnIic6IiZxdW90OyJ9LG49Lyg/Olx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmYlx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjhcdWQ4M2NcdWRmZmNcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY4XHVkODNjXHVkZmZkXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmZVx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjhcdWQ4M2NcdWRmZmZcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZiXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmYlx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZFx1ZGM2OVx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmNcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZjXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkXHVkYzY5XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmZFx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmRcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2RcdWRjNjlcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZlXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmZVx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZFx1ZGM2OVx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmZcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZmXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkXHVkYzY5XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZVx1ZGRkMVx1ZDgzY1x1ZGZmYlx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZVx1ZGRkMVx1ZDgzY1tcdWRmZmMtXHVkZmZmXXxcdWQ4M2VcdWRkZDFcdWQ4M2NcdWRmZmNcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2VcdWRkZDFcdWQ4M2NbXHVkZmZiXHVkZmZkLVx1ZGZmZl18XHVkODNlXHVkZGQxXHVkODNjXHVkZmZkXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNlXHVkZGQxXHVkODNjW1x1ZGZmYlx1ZGZmY1x1ZGZmZVx1ZGZmZl18XHVkODNlXHVkZGQxXHVkODNjXHVkZmZlXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNlXHVkZGQxXHVkODNjW1x1ZGZmYi1cdWRmZmRcdWRmZmZdfFx1ZDgzZVx1ZGRkMVx1ZDgzY1x1ZGZmZlx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZVx1ZGRkMVx1ZDgzY1tcdWRmZmItXHVkZmZlXXxcdWQ4M2RcdWRjNjhcdWQ4M2NcdWRmZmJcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY4XHVkODNjXHVkZmZiXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYy1cdWRmZmZdfFx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmY1x1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjhcdWQ4M2NcdWRmZmNcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiXHVkZmZkLVx1ZGZmZl18XHVkODNkXHVkYzY4XHVkODNjXHVkZmZkXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmZFx1MjAwZFx1ZDgzZVx1ZGQxZFx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmJcdWRmZmNcdWRmZmVcdWRmZmZdfFx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmZVx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjhcdWQ4M2NcdWRmZmVcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZFx1ZGZmZl18XHVkODNkXHVkYzY4XHVkODNjXHVkZmZmXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmZlx1MjAwZFx1ZDgzZVx1ZGQxZFx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZlXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmJcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZiXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY5XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmYlx1MjAwZFx1ZDgzZVx1ZGQxZFx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmMtXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmJcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2RcdWRjNjlcdWQ4M2NbXHVkZmZjLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZjXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmY1x1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM2OVx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmNcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiXHVkZmZkLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZjXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNkXHVkYzY5XHVkODNjW1x1ZGZmYlx1ZGZmZC1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmZFx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmRcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjNjlcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZkXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYlx1ZGZmY1x1ZGZmZVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZkXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNkXHVkYzY5XHVkODNjW1x1ZGZmYlx1ZGZmY1x1ZGZmZVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZlXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmZVx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM2OVx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmVcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZFx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZlXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNkXHVkYzY5XHVkODNjW1x1ZGZmYi1cdWRmZmRcdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmZlx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmZcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjNjlcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZmXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmVdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmZlx1MjAwZFx1ZDgzZVx1ZGQxZFx1MjAwZFx1ZDgzZFx1ZGM2OVx1ZDgzY1tcdWRmZmItXHVkZmZlXXxcdWQ4M2VcdWRkZDFcdWQ4M2NcdWRmZmJcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2VcdWRkZDFcdWQ4M2NbXHVkZmZjLVx1ZGZmZl18XHVkODNlXHVkZGQxXHVkODNjXHVkZmZiXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNlXHVkZGQxXHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZVx1ZGRkMVx1ZDgzY1x1ZGZmY1x1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZVx1ZGRkMVx1ZDgzY1tcdWRmZmJcdWRmZmQtXHVkZmZmXXxcdWQ4M2VcdWRkZDFcdWQ4M2NcdWRmZmNcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2VcdWRkZDFcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNlXHVkZGQxXHVkODNjXHVkZmZkXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNlXHVkZGQxXHVkODNjW1x1ZGZmYlx1ZGZmY1x1ZGZmZVx1ZGZmZl18XHVkODNlXHVkZGQxXHVkODNjXHVkZmZkXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNlXHVkZGQxXHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZVx1ZGRkMVx1ZDgzY1x1ZGZmZVx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZVx1ZGRkMVx1ZDgzY1tcdWRmZmItXHVkZmZkXHVkZmZmXXxcdWQ4M2VcdWRkZDFcdWQ4M2NcdWRmZmVcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2VcdWRkZDFcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNlXHVkZGQxXHVkODNjXHVkZmZmXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNlXHVkZGQxXHVkODNjW1x1ZGZmYi1cdWRmZmVdfFx1ZDgzZVx1ZGRkMVx1ZDgzY1x1ZGZmZlx1MjAwZFx1ZDgzZVx1ZGQxZFx1MjAwZFx1ZDgzZVx1ZGRkMVx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjhcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2RcdWRjNjh8XHVkODNkXHVkYzY5XHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkW1x1ZGM2OFx1ZGM2OV18XHVkODNkXHVkYzY4XHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY4fFx1ZDgzZFx1ZGM2OVx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFtcdWRjNjhcdWRjNjldfFx1ZDgzZVx1ZGRkMVx1MjAwZFx1ZDgzZVx1ZGQxZFx1MjAwZFx1ZDgzZVx1ZGRkMXxcdWQ4M2RcdWRjNmJcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzZjXHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2ZFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjOGZcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzkxXHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFtcdWRjNmItXHVkYzZkXHVkYzhmXHVkYzkxXSl8KD86XHVkODNkW1x1ZGM2OFx1ZGM2OV18XHVkODNlXHVkZGQxKSg/Olx1ZDgzY1tcdWRmZmItXHVkZmZmXSk/XHUyMDBkKD86XHUyNjk1XHVmZTBmfFx1MjY5Nlx1ZmUwZnxcdTI3MDhcdWZlMGZ8XHVkODNjW1x1ZGYzZVx1ZGY3M1x1ZGY3Y1x1ZGY4NFx1ZGY5M1x1ZGZhNFx1ZGZhOFx1ZGZlYlx1ZGZlZF18XHVkODNkW1x1ZGNiYlx1ZGNiY1x1ZGQyN1x1ZGQyY1x1ZGU4MFx1ZGU5Ml18XHVkODNlW1x1ZGRhZi1cdWRkYjNcdWRkYmNcdWRkYmRdKXwoPzpcdWQ4M2NbXHVkZmNiXHVkZmNjXXxcdWQ4M2RbXHVkZDc0XHVkZDc1XXxcdTI2ZjkpKCg/Olx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWZlMGYpXHUyMDBkW1x1MjY0MFx1MjY0Ml1cdWZlMGYpfCg/Olx1ZDgzY1tcdWRmYzNcdWRmYzRcdWRmY2FdfFx1ZDgzZFtcdWRjNmVcdWRjNzBcdWRjNzFcdWRjNzNcdWRjNzdcdWRjODFcdWRjODJcdWRjODZcdWRjODdcdWRlNDUtXHVkZTQ3XHVkZTRiXHVkZTRkXHVkZTRlXHVkZWEzXHVkZWI0LVx1ZGViNl18XHVkODNlW1x1ZGQyNlx1ZGQzNVx1ZGQzNy1cdWRkMzlcdWRkM2RcdWRkM2VcdWRkYjhcdWRkYjlcdWRkY2QtXHVkZGNmXHVkZGQ0XHVkZGQ2LVx1ZGRkZF0pKD86XHVkODNjW1x1ZGZmYi1cdWRmZmZdKT9cdTIwMGRbXHUyNjQwXHUyNjQyXVx1ZmUwZnwoPzpcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjZcdTIwMGRcdWQ4M2RcdWRjNjZ8XHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY3XHUyMDBkXHVkODNkW1x1ZGM2Nlx1ZGM2N118XHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY2XHUyMDBkXHVkODNkXHVkYzY2fFx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2N1x1MjAwZFx1ZDgzZFtcdWRjNjZcdWRjNjddfFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2Nlx1MjAwZFx1ZDgzZFx1ZGM2NnxcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RbXHVkYzY2XHVkYzY3XXxcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjZcdTIwMGRcdWQ4M2RcdWRjNjZ8XHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY3XHUyMDBkXHVkODNkW1x1ZGM2Nlx1ZGM2N118XHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkW1x1ZGM2Nlx1ZGM2N118XHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkW1x1ZGM2Nlx1ZGM2N118XHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY2XHUyMDBkXHVkODNkXHVkYzY2fFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2N1x1MjAwZFx1ZDgzZFtcdWRjNjZcdWRjNjddfFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFtcdWRjNjZcdWRjNjddfFx1ZDgzY1x1ZGZmM1x1ZmUwZlx1MjAwZFx1MjZhN1x1ZmUwZnxcdWQ4M2NcdWRmZjNcdWZlMGZcdTIwMGRcdWQ4M2NcdWRmMDh8XHVkODNkXHVkZTM2XHUyMDBkXHVkODNjXHVkZjJiXHVmZTBmfFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGQyNXxcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2VcdWRlNzl8XHVkODNjXHVkZmY0XHUyMDBkXHUyNjIwXHVmZTBmfFx1ZDgzZFx1ZGMxNVx1MjAwZFx1ZDgzZVx1ZGRiYXxcdWQ4M2RcdWRjM2JcdTIwMGRcdTI3NDRcdWZlMGZ8XHVkODNkXHVkYzQxXHUyMDBkXHVkODNkXHVkZGU4fFx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFtcdWRjNjZcdWRjNjddfFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFtcdWRjNjZcdWRjNjddfFx1ZDgzZFx1ZGM2Zlx1MjAwZFx1MjY0MFx1ZmUwZnxcdWQ4M2RcdWRjNmZcdTIwMGRcdTI2NDJcdWZlMGZ8XHVkODNkXHVkZTJlXHUyMDBkXHVkODNkXHVkY2E4fFx1ZDgzZFx1ZGUzNVx1MjAwZFx1ZDgzZFx1ZGNhYnxcdWQ4M2VcdWRkM2NcdTIwMGRcdTI2NDBcdWZlMGZ8XHVkODNlXHVkZDNjXHUyMDBkXHUyNjQyXHVmZTBmfFx1ZDgzZVx1ZGRkZVx1MjAwZFx1MjY0MFx1ZmUwZnxcdWQ4M2VcdWRkZGVcdTIwMGRcdTI2NDJcdWZlMGZ8XHVkODNlXHVkZGRmXHUyMDBkXHUyNjQwXHVmZTBmfFx1ZDgzZVx1ZGRkZlx1MjAwZFx1MjY0Mlx1ZmUwZnxcdWQ4M2RcdWRjMDhcdTIwMGRcdTJiMWIpfFsjKjAtOV1cdWZlMGY/XHUyMGUzfCg/OltceGE5XHhhZVx1MjEyMlx1MjY1Zl1cdWZlMGYpfCg/Olx1ZDgzY1tcdWRjMDRcdWRkNzBcdWRkNzFcdWRkN2VcdWRkN2ZcdWRlMDJcdWRlMWFcdWRlMmZcdWRlMzdcdWRmMjFcdWRmMjQtXHVkZjJjXHVkZjM2XHVkZjdkXHVkZjk2XHVkZjk3XHVkZjk5LVx1ZGY5Ylx1ZGY5ZVx1ZGY5Zlx1ZGZjZFx1ZGZjZVx1ZGZkNC1cdWRmZGZcdWRmZjNcdWRmZjVcdWRmZjddfFx1ZDgzZFtcdWRjM2ZcdWRjNDFcdWRjZmRcdWRkNDlcdWRkNGFcdWRkNmZcdWRkNzBcdWRkNzNcdWRkNzYtXHVkZDc5XHVkZDg3XHVkZDhhLVx1ZGQ4ZFx1ZGRhNVx1ZGRhOFx1ZGRiMVx1ZGRiMlx1ZGRiY1x1ZGRjMi1cdWRkYzRcdWRkZDEtXHVkZGQzXHVkZGRjLVx1ZGRkZVx1ZGRlMVx1ZGRlM1x1ZGRlOFx1ZGRlZlx1ZGRmM1x1ZGRmYVx1ZGVjYlx1ZGVjZC1cdWRlY2ZcdWRlZTAtXHVkZWU1XHVkZWU5XHVkZWYwXHVkZWYzXXxbXHUyMDNjXHUyMDQ5XHUyMTM5XHUyMTk0LVx1MjE5OVx1MjFhOVx1MjFhYVx1MjMxYVx1MjMxYlx1MjMyOFx1MjNjZlx1MjNlZC1cdTIzZWZcdTIzZjFcdTIzZjJcdTIzZjgtXHUyM2ZhXHUyNGMyXHUyNWFhXHUyNWFiXHUyNWI2XHUyNWMwXHUyNWZiLVx1MjVmZVx1MjYwMC1cdTI2MDRcdTI2MGVcdTI2MTFcdTI2MTRcdTI2MTVcdTI2MThcdTI2MjBcdTI2MjJcdTI2MjNcdTI2MjZcdTI2MmFcdTI2MmVcdTI2MmZcdTI2MzgtXHUyNjNhXHUyNjQwXHUyNjQyXHUyNjQ4LVx1MjY1M1x1MjY2MFx1MjY2M1x1MjY2NVx1MjY2Nlx1MjY2OFx1MjY3Ylx1MjY3Zlx1MjY5Mi1cdTI2OTdcdTI2OTlcdTI2OWJcdTI2OWNcdTI2YTBcdTI2YTFcdTI2YTdcdTI2YWFcdTI2YWJcdTI2YjBcdTI2YjFcdTI2YmRcdTI2YmVcdTI2YzRcdTI2YzVcdTI2YzhcdTI2Y2ZcdTI2ZDFcdTI2ZDNcdTI2ZDRcdTI2ZTlcdTI2ZWFcdTI2ZjAtXHUyNmY1XHUyNmY4XHUyNmZhXHUyNmZkXHUyNzAyXHUyNzA4XHUyNzA5XHUyNzBmXHUyNzEyXHUyNzE0XHUyNzE2XHUyNzFkXHUyNzIxXHUyNzMzXHUyNzM0XHUyNzQ0XHUyNzQ3XHUyNzU3XHUyNzYzXHUyNzY0XHUyN2ExXHUyOTM0XHUyOTM1XHUyYjA1LVx1MmIwN1x1MmIxYlx1MmIxY1x1MmI1MFx1MmI1NVx1MzAzMFx1MzAzZFx1MzI5N1x1MzI5OV0pKD86XHVmZTBmfCg/IVx1ZmUwZSkpfCg/Oig/Olx1ZDgzY1tcdWRmY2JcdWRmY2NdfFx1ZDgzZFtcdWRkNzRcdWRkNzVcdWRkOTBdfFtcdTI2MWRcdTI2ZjdcdTI2ZjlcdTI3MGNcdTI3MGRdKSg/Olx1ZmUwZnwoPyFcdWZlMGUpKXwoPzpcdWQ4M2NbXHVkZjg1XHVkZmMyLVx1ZGZjNFx1ZGZjN1x1ZGZjYV18XHVkODNkW1x1ZGM0Mlx1ZGM0M1x1ZGM0Ni1cdWRjNTBcdWRjNjYtXHVkYzY5XHVkYzZlXHVkYzcwLVx1ZGM3OFx1ZGM3Y1x1ZGM4MS1cdWRjODNcdWRjODUtXHVkYzg3XHVkY2FhXHVkZDdhXHVkZDk1XHVkZDk2XHVkZTQ1LVx1ZGU0N1x1ZGU0Yi1cdWRlNGZcdWRlYTNcdWRlYjQtXHVkZWI2XHVkZWMwXHVkZWNjXXxcdWQ4M2VbXHVkZDBjXHVkZDBmXHVkZDE4LVx1ZGQxY1x1ZGQxZVx1ZGQxZlx1ZGQyNlx1ZGQzMC1cdWRkMzlcdWRkM2RcdWRkM2VcdWRkNzdcdWRkYjVcdWRkYjZcdWRkYjhcdWRkYjlcdWRkYmJcdWRkY2QtXHVkZGNmXHVkZGQxLVx1ZGRkZF18W1x1MjcwYVx1MjcwYl0pKSg/Olx1ZDgzY1tcdWRmZmItXHVkZmZmXSk/fCg/Olx1ZDgzY1x1ZGZmNFx1ZGI0MFx1ZGM2N1x1ZGI0MFx1ZGM2Mlx1ZGI0MFx1ZGM2NVx1ZGI0MFx1ZGM2ZVx1ZGI0MFx1ZGM2N1x1ZGI0MFx1ZGM3ZnxcdWQ4M2NcdWRmZjRcdWRiNDBcdWRjNjdcdWRiNDBcdWRjNjJcdWRiNDBcdWRjNzNcdWRiNDBcdWRjNjNcdWRiNDBcdWRjNzRcdWRiNDBcdWRjN2Z8XHVkODNjXHVkZmY0XHVkYjQwXHVkYzY3XHVkYjQwXHVkYzYyXHVkYjQwXHVkYzc3XHVkYjQwXHVkYzZjXHVkYjQwXHVkYzczXHVkYjQwXHVkYzdmfFx1ZDgzY1x1ZGRlNlx1ZDgzY1tcdWRkZTgtXHVkZGVjXHVkZGVlXHVkZGYxXHVkZGYyXHVkZGY0XHVkZGY2LVx1ZGRmYVx1ZGRmY1x1ZGRmZFx1ZGRmZl18XHVkODNjXHVkZGU3XHVkODNjW1x1ZGRlNlx1ZGRlN1x1ZGRlOS1cdWRkZWZcdWRkZjEtXHVkZGY0XHVkZGY2LVx1ZGRmOVx1ZGRmYlx1ZGRmY1x1ZGRmZVx1ZGRmZl18XHVkODNjXHVkZGU4XHVkODNjW1x1ZGRlNlx1ZGRlOFx1ZGRlOVx1ZGRlYi1cdWRkZWVcdWRkZjAtXHVkZGY1XHVkZGY3XHVkZGZhLVx1ZGRmZl18XHVkODNjXHVkZGU5XHVkODNjW1x1ZGRlYVx1ZGRlY1x1ZGRlZlx1ZGRmMFx1ZGRmMlx1ZGRmNFx1ZGRmZl18XHVkODNjXHVkZGVhXHVkODNjW1x1ZGRlNlx1ZGRlOFx1ZGRlYVx1ZGRlY1x1ZGRlZFx1ZGRmNy1cdWRkZmFdfFx1ZDgzY1x1ZGRlYlx1ZDgzY1tcdWRkZWUtXHVkZGYwXHVkZGYyXHVkZGY0XHVkZGY3XXxcdWQ4M2NcdWRkZWNcdWQ4M2NbXHVkZGU2XHVkZGU3XHVkZGU5LVx1ZGRlZVx1ZGRmMS1cdWRkZjNcdWRkZjUtXHVkZGZhXHVkZGZjXHVkZGZlXXxcdWQ4M2NcdWRkZWRcdWQ4M2NbXHVkZGYwXHVkZGYyXHVkZGYzXHVkZGY3XHVkZGY5XHVkZGZhXXxcdWQ4M2NcdWRkZWVcdWQ4M2NbXHVkZGU4LVx1ZGRlYVx1ZGRmMS1cdWRkZjRcdWRkZjYtXHVkZGY5XXxcdWQ4M2NcdWRkZWZcdWQ4M2NbXHVkZGVhXHVkZGYyXHVkZGY0XHVkZGY1XXxcdWQ4M2NcdWRkZjBcdWQ4M2NbXHVkZGVhXHVkZGVjLVx1ZGRlZVx1ZGRmMlx1ZGRmM1x1ZGRmNVx1ZGRmN1x1ZGRmY1x1ZGRmZVx1ZGRmZl18XHVkODNjXHVkZGYxXHVkODNjW1x1ZGRlNi1cdWRkZThcdWRkZWVcdWRkZjBcdWRkZjctXHVkZGZiXHVkZGZlXXxcdWQ4M2NcdWRkZjJcdWQ4M2NbXHVkZGU2XHVkZGU4LVx1ZGRlZFx1ZGRmMC1cdWRkZmZdfFx1ZDgzY1x1ZGRmM1x1ZDgzY1tcdWRkZTZcdWRkZThcdWRkZWEtXHVkZGVjXHVkZGVlXHVkZGYxXHVkZGY0XHVkZGY1XHVkZGY3XHVkZGZhXHVkZGZmXXxcdWQ4M2NcdWRkZjRcdWQ4M2NcdWRkZjJ8XHVkODNjXHVkZGY1XHVkODNjW1x1ZGRlNlx1ZGRlYS1cdWRkZWRcdWRkZjAtXHVkZGYzXHVkZGY3LVx1ZGRmOVx1ZGRmY1x1ZGRmZV18XHVkODNjXHVkZGY2XHVkODNjXHVkZGU2fFx1ZDgzY1x1ZGRmN1x1ZDgzY1tcdWRkZWFcdWRkZjRcdWRkZjhcdWRkZmFcdWRkZmNdfFx1ZDgzY1x1ZGRmOFx1ZDgzY1tcdWRkZTYtXHVkZGVhXHVkZGVjLVx1ZGRmNFx1ZGRmNy1cdWRkZjlcdWRkZmJcdWRkZmQtXHVkZGZmXXxcdWQ4M2NcdWRkZjlcdWQ4M2NbXHVkZGU2XHVkZGU4XHVkZGU5XHVkZGViLVx1ZGRlZFx1ZGRlZi1cdWRkZjRcdWRkZjdcdWRkZjlcdWRkZmJcdWRkZmNcdWRkZmZdfFx1ZDgzY1x1ZGRmYVx1ZDgzY1tcdWRkZTZcdWRkZWNcdWRkZjJcdWRkZjNcdWRkZjhcdWRkZmVcdWRkZmZdfFx1ZDgzY1x1ZGRmYlx1ZDgzY1tcdWRkZTZcdWRkZThcdWRkZWFcdWRkZWNcdWRkZWVcdWRkZjNcdWRkZmFdfFx1ZDgzY1x1ZGRmY1x1ZDgzY1tcdWRkZWJcdWRkZjhdfFx1ZDgzY1x1ZGRmZFx1ZDgzY1x1ZGRmMHxcdWQ4M2NcdWRkZmVcdWQ4M2NbXHVkZGVhXHVkZGY5XXxcdWQ4M2NcdWRkZmZcdWQ4M2NbXHVkZGU2XHVkZGYyXHVkZGZjXXxcdWQ4M2NbXHVkY2NmXHVkZDhlXHVkZDkxLVx1ZGQ5YVx1ZGRlNi1cdWRkZmZcdWRlMDFcdWRlMzItXHVkZTM2XHVkZTM4LVx1ZGUzYVx1ZGU1MFx1ZGU1MVx1ZGYwMC1cdWRmMjBcdWRmMmQtXHVkZjM1XHVkZjM3LVx1ZGY3Y1x1ZGY3ZS1cdWRmODRcdWRmODYtXHVkZjkzXHVkZmEwLVx1ZGZjMVx1ZGZjNVx1ZGZjNlx1ZGZjOFx1ZGZjOVx1ZGZjZi1cdWRmZDNcdWRmZTAtXHVkZmYwXHVkZmY0XHVkZmY4LVx1ZGZmZl18XHVkODNkW1x1ZGMwMC1cdWRjM2VcdWRjNDBcdWRjNDRcdWRjNDVcdWRjNTEtXHVkYzY1XHVkYzZhXHVkYzZmXHVkYzc5LVx1ZGM3Ylx1ZGM3ZC1cdWRjODBcdWRjODRcdWRjODgtXHVkYzhlXHVkYzkwXHVkYzkyLVx1ZGNhOVx1ZGNhYi1cdWRjZmNcdWRjZmYtXHVkZDNkXHVkZDRiLVx1ZGQ0ZVx1ZGQ1MC1cdWRkNjdcdWRkYTRcdWRkZmItXHVkZTQ0XHVkZTQ4LVx1ZGU0YVx1ZGU4MC1cdWRlYTJcdWRlYTQtXHVkZWIzXHVkZWI3LVx1ZGViZlx1ZGVjMS1cdWRlYzVcdWRlZDAtXHVkZWQyXHVkZWQ1LVx1ZGVkN1x1ZGVlYlx1ZGVlY1x1ZGVmNC1cdWRlZmNcdWRmZTAtXHVkZmViXXxcdWQ4M2VbXHVkZDBkXHVkZDBlXHVkZDEwLVx1ZGQxN1x1ZGQxZFx1ZGQyMC1cdWRkMjVcdWRkMjctXHVkZDJmXHVkZDNhXHVkZDNjXHVkZDNmLVx1ZGQ0NVx1ZGQ0Ny1cdWRkNzZcdWRkNzhcdWRkN2EtXHVkZGI0XHVkZGI3XHVkZGJhXHVkZGJjLVx1ZGRjYlx1ZGRkMFx1ZGRkZS1cdWRkZmZcdWRlNzAtXHVkZTc0XHVkZTc4LVx1ZGU3YVx1ZGU4MC1cdWRlODZcdWRlOTAtXHVkZWE4XHVkZWIwLVx1ZGViNlx1ZGVjMC1cdWRlYzJcdWRlZDAtXHVkZWQ2XXxbXHUyM2U5LVx1MjNlY1x1MjNmMFx1MjNmM1x1MjY3ZVx1MjZjZVx1MjcwNVx1MjcyOFx1Mjc0Y1x1Mjc0ZVx1Mjc1My1cdTI3NTVcdTI3OTUtXHUyNzk3XHUyN2IwXHUyN2JmXHVlNTBhXSl8XHVmZTBmL2csaT0vXHVGRTBGL2csYT1TdHJpbmcuZnJvbUNoYXJDb2RlKDgyMDUpLG89L1smPD4nIl0vZyxyPS9eKD86aWZyYW1lfG5vZnJhbWVzfG5vc2NyaXB0fHNjcmlwdHxzZWxlY3R8c3R5bGV8dGV4dGFyZWEpJC8scz1TdHJpbmcuZnJvbUNoYXJDb2RlO3JldHVybiBlO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodD9lLnJlcGxhY2UoaSwiIik6ZSl9ZnVuY3Rpb24gZChlKXtyZXR1cm4gZS5yZXBsYWNlKG8saCl9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiIiLmNvbmNhdCh0LmJhc2UsdC5zaXplLCIvIixlLHQuZXh0KX1mdW5jdGlvbiB1KGUsdCl7Zm9yKHZhciBuLGksYT1lLmNoaWxkTm9kZXMsbz1hLmxlbmd0aDtvLS07KTM9PT0oaT0obj1hW29dKS5ub2RlVHlwZSk/dC5wdXNoKG4pOjEhPT1pfHwib3duZXJTVkdFbGVtZW50ImluIG58fHIudGVzdChuLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpfHx1KG4sdCk7cmV0dXJuIHR9ZnVuY3Rpb24gcChlKXtyZXR1cm4gdihlLmluZGV4T2YoYSk8MD9lLnJlcGxhY2UoaSwiIik6ZSl9ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgaSxhLG8scixzLGQsYyxmLG0saCxnLGIsdix4PXUoZSxbXSkseT14Lmxlbmd0aDt5LS07KXtmb3Iobz0hMSxyPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxkPShzPXhbeV0pLm5vZGVWYWx1ZSxmPTA7Yz1uLmV4ZWMoZCk7KXtpZigobT1jLmluZGV4KSE9PWYmJnIuYXBwZW5kQ2hpbGQobChkLnNsaWNlKGYsbSksITApKSxiPXAoZz1jWzBdKSxmPW0rZy5sZW5ndGgsdj10LmNhbGxiYWNrKGIsdCksYiYmdil7Zm9yKGEgaW4oaD1uZXcgSW1hZ2UpLm9uZXJyb3I9dC5vbmVycm9yLGguc2V0QXR0cmlidXRlKCJkcmFnZ2FibGUiLCJmYWxzZSIpLGk9dC5hdHRyaWJ1dGVzKGcsYikpaS5oYXNPd25Qcm9wZXJ0eShhKSYmMCE9PWEuaW5kZXhPZigib24iKSYmIWguaGFzQXR0cmlidXRlKGEpJiZoLnNldEF0dHJpYnV0ZShhLGlbYV0pO2guY2xhc3NOYW1lPXQuY2xhc3NOYW1lLGguYWx0PWcsaC5zcmM9dixvPSEwLHIuYXBwZW5kQ2hpbGQoaCl9aHx8ci5hcHBlbmRDaGlsZChsKGcsITEpKSxoPW51bGx9byYmKGY8ZC5sZW5ndGgmJnIuYXBwZW5kQ2hpbGQobChkLnNsaWNlKGYpLCEwKSkscy5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChyLHMpKX1yZXR1cm4gZX1mdW5jdGlvbiBtKGUsdCl7cmV0dXJuIGIoZSxmdW5jdGlvbihlKXt2YXIgbixpLGE9ZSxvPXAoZSkscj10LmNhbGxiYWNrKG8sdCk7aWYobyYmcil7Zm9yKGkgaW4gYT0iPGltZyAiLmNvbmNhdCgnY2xhc3M9IicsdC5jbGFzc05hbWUsJyIgJywnZHJhZ2dhYmxlPSJmYWxzZSIgJywnYWx0PSInLGUsJyInLCcgc3JjPSInLHIsJyInKSxuPXQuYXR0cmlidXRlcyhlLG8pKW4uaGFzT3duUHJvcGVydHkoaSkmJjAhPT1pLmluZGV4T2YoIm9uIikmJi0xPT09YS5pbmRleE9mKCIgIitpKyI9IikmJihhPWEuY29uY2F0KCIgIixpLCc9IicsZChuW2ldKSwnIicpKTthPWEuY29uY2F0KCIvPiIpfXJldHVybiBhfSl9ZnVuY3Rpb24gaChlKXtyZXR1cm4gdFtlXX1mdW5jdGlvbiBnKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gYihlLHQpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZShuLHQpfWZ1bmN0aW9uIHYoZSx0KXtmb3IodmFyIG49W10saT0wLGE9MCxvPTA7bzxlLmxlbmd0aDspaT1lLmNoYXJDb2RlQXQobysrKSxhPyhuLnB1c2goKDY1NTM2KyhhLTU1Mjk2PDwxMCkrKGktNTYzMjApKS50b1N0cmluZygxNikpLGE9MCk6NTUyOTY8PWkmJmk8PTU2MzE5P2E9aTpuLnB1c2goaS50b1N0cmluZygxNikpO3JldHVybiBuLmpvaW4odHx8Ii0iKX19KCksQW49a247Y29uc3QgQ249e0FMTE9XRURfVEFHUzpbImltZyJdLEFMTE9XRURfQVRUUjpbImNsYXNzIiwic3JjIiwiYWx0Il19LEVuPXtBTExPV0VEX1RBR1M6WyJpbWciLCJhIiwic3Ryb25nIiwiYnIiLCJvbCIsInVsIiwibGkiXSxBTExPV0VEX0FUVFI6WyJjbGFzcyIsImhyZWYiLCJ0YXJnZXQiLCJzcmMiLCJhbHQiLCJyZWwiXX0sU249e0FMTE9XRURfVEFHUzpbImltZyIsImEiXSxBTExPV0VEX0FUVFI6WyJjbGFzcyIsImhyZWYiLCJ0YXJnZXQiLCJzcmMiLCJhbHQiXX0sRG49ZT0+ZS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKSxZbj17YmFzZToiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvdHdlbW9qaS8xMi4xLjEvIn0sVG49ZT0+e2xldCB0PWUucmVwbGFjZSgvKCg/OmhyZWZ8c3JjKT1bJyJdKT8oXGIoaHR0cHM/fGZ0cCk6XC9cL1stQS1aMC05KyZAIy8lPz1+X3whOiwuOygpJCdbXF0qXSpbLUEtWjAtOSsmQCMvJT1+X3xdKS9naW0sKGUsdCk9PnZvaWQgMCE9PXQ/ZTpgPGEgaHJlZj0iJHtlfSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+JHtlfTwvYT5gKTtyZXR1cm4gdD10LnJlcGxhY2UoLyhefFxzfHN0cm9uZz58bGk+KSgoW2EtekEtWjAtOS1fLitdKStAW2EtekEtWjAtOV9dKz8oXC5bYS16QS1aXXsyLH0pKykvZ2ltLCckMTxhIGhyZWY9Im1haWx0bzokMiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+JDI8L2E+JyksdD10LnJlcGxhY2UoLyhefFxzfHN0cm9uZz58bGk+KSh3d3dcLlstXHcuLEA/Xj0lJjovXSsoXGJ8JCkpL2dpbSwnJDE8YSBocmVmPSJodHRwOi8vJDIiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPiQyPC9hPicpLHR9LEZuPWU9PntpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIiI7bGV0IHQ9RG4oZSk7cmV0dXJuIHQ9VG4odCksdD1Bbi5wYXJzZSh0LFluKSx0PShlPT53bi5zYW5pdGl6ZShlLFNuKSkodCksdH0sSW49ZT0+e2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4iIjtsZXQgdD1EbihlKTt0PXQucmVwbGFjZSgvXHQvZywiIik7dD10LnJlcGxhY2UoLyFcWyhbXlxdXSopXF1cKChbXildKylcKS9nLCc8aW1nIHNyYz0iJDIiIGFsdD0iJDEiIGNsYXNzPSJtYXJrZG93bi1pbWFnZSIgLz4nKTtyZXR1cm4gdD10LnJlcGxhY2UoL1xbKFteXF1dKilcXVwoKFteKV0rKVwpL2csJzxhIGhyZWY9IiQyIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj4kMTwvYT4nKSx0PXQucmVwbGFjZSgvXCpcKiguKj8pXCpcKi9nLCI8c3Ryb25nPiQxPC9zdHJvbmc+IiksdD1Bbi5wYXJzZSh0LFluKSx0PVRuKHQpLHQ9d24uc2FuaXRpemUodCxFbiksdH0sX249ZT0+e2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4iIjtsZXQgdD1EbihlKTtyZXR1cm4gdD1Bbi5wYXJzZSh0LFluKSx0PXduLnNhbml0aXplKHQsQ24pLHR9LE1uPWU9Pntjb25zdCB0PWUudmFsdWVzLnJlZHVjZSgoZSx0KT0+KHsuLi5lLFt0XTooMCx5LnB3KSh0KX0pLHt9KTtyZXR1cm4gZS5yZW5kZXIodCl9O01uLnByb3BUeXBlcz17dmFsdWVzOkcoKS5hcnJheU9mKEcoKS5zdHJpbmcpLmlzUmVxdWlyZWQscmVuZGVyOkcoKS5mdW5jLmlzUmVxdWlyZWR9O2NvbnN0IE5uPWU9Pntjb25zdHt2YWx1ZTp0LGNoaWxkcmVuOm4scmVwbGFjZW1lbnRzOmksZmFsbGJhY2s6byxsaW5raWZ5OnIsZW1vamlmeTpzLG1hcmtkb3duaWZ5Omx9PWUsWyxkXT0oMCxhLnVzZVN0YXRlKSgwKSxjPSgpPT57ZChlPT4hZSl9O3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+KHkuRFIub24oInRyYW5zbGF0aW9uc0NoYW5nZWQiLGMpLCgpPT57eS5EUi5vZmYoInRyYW5zbGF0aW9uc0NoYW5nZWQiLGMpfSksW10pLG4/KDAsVi5ZKShNbix7dmFsdWVzOnQscmVuZGVyOm59KTppPygwLFYuWSkoVi5GSyx7Y2hpbGRyZW46KDAseS5wdykodCxpLG8pfSk6bD8oMCxWLlkpKCJzcGFuIix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpJbigoMCx5LnB3KSh0LG51bGwsbykpfX0pOnJ8fHM/KDAsVi5ZKSgic3BhbiIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6Rm4oKDAseS5wdykodCxudWxsLG8pKX19KTooMCxWLlkpKFYuRksse2NoaWxkcmVuOigwLHkucHcpKHQsbnVsbCxvKX0pfTtObi5kZWZhdWx0UHJvcHM9e2ZhbGxiYWNrOm51bGwscmVwbGFjZW1lbnRzOm51bGwsZW1vamlmeTohMSxsaW5raWZ5OiExLG1hcmtkb3duaWZ5OiExLGNoaWxkcmVuOnZvaWQgMH07dmFyIE9uPU5uO2NvbnN0IFJuPWh0KCEwKSxqbj0oMCxkLkFIKSh7aW5wdXQ6Um4udGV4dDE0LHRleHRhcmVhOlJuLnRleHQxNCxzdmc6e3RvcDo2fX0sIiIsIiIpO2Z1bmN0aW9uIFBuKGUsdCxuKXtyZXR1cm4gbj9uKGUpOiJlbWFpbCI9PT10PygwLGYuQjkpKGUpOiJ0ZWwiPT09dD8oMCxmLmxLKShlKToiIiE9PWUudHJpbSgpfWNsYXNzIHpuIGV4dGVuZHMgYS5Db21wb25lbnR7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksKDAsaS5BKSh0aGlzLCJvbkNoYW5nZSIsZT0+e2NvbnN0e3ZhbHVlOnQsY2hlY2tlZDpuLHR5cGU6aX09ZS50YXJnZXQsYT0iY2hlY2tib3giIT09aT90Om4sbz1QbihhLHRoaXMucHJvcHMudHlwZSx0aGlzLnByb3BzLnZhbGlkYXRvcik7dGhpcy5zZXRTdGF0ZSh7dmFsdWU6YSxpc1ZhbGlkOm99KSx0aGlzLnByb3BzLm9uQ2hhbmdlJiZ0aGlzLnByb3BzLm9uQ2hhbmdlKGEsbyksdGhpcy5wcm9wcy5pc1ZhbGlkQ2FsbGJhY2smJnRoaXMucHJvcHMuaXNWYWxpZENhbGxiYWNrKG8pfSksKDAsaS5BKSh0aGlzLCJvbkNvbXBvc2l0aW9uU3RhcnQiLCgpPT57dGhpcy5pc0NvbXBvc2luZz0hMH0pLCgwLGkuQSkodGhpcywib25Db21wb3NpdGlvbkVuZCIsKCk9PntzZXRUaW1lb3V0KCgpPT57dGhpcy5pc0NvbXBvc2luZz0hMX0sMCl9KSwoMCxpLkEpKHRoaXMsIm9uS2V5RG93biIsZT0+e2NvbnN0e2tleUNvZGU6dCxrZXk6bn09ZSxpPSJFbnRlciI9PT1ufHwxMz09PXQ7cmV0dXJuIWUubmF0aXZlRXZlbnQuaXNDb21wb3NpbmcmJiF0aGlzLmlzQ29tcG9zaW5nJiYyMjkhPT10JiYoaSYmIXRoaXMuc3RhdGUuaXNWYWxpZCYmKHRoaXMuc2V0U3RhdGUoe3Nob3dFcnJvckljb246ITB9KSx0aGlzLnByb3BzLm9uS2V5RG93biYmdGhpcy5wcm9wcy5vbktleURvd24oITEpLGNsZWFyVGltZW91dCh0aGlzLmVycm9ySWNvbkhpZGVUaW1lciksdGhpcy5lcnJvckljb25IaWRlVGltZXI9bnVsbCx0aGlzLmVycm9ySWNvbkhpZGVUaW1lcj1zZXRUaW1lb3V0KCgpPT57dGhpcy5zZXRTdGF0ZSh7c2hvd0Vycm9ySWNvbjohMX0pfSw4MjApKSwhKCFpfHwhdGhpcy5zdGF0ZS5pc1ZhbGlkKSYmKGUucHJldmVudERlZmF1bHQoKSx0aGlzLnByb3BzLm9uS2V5RG93biYmdGhpcy5wcm9wcy5vbktleURvd24odCksITApKX0pLCgwLGkuQSkodGhpcywib25Gb2N1cyIsKCk9Pnt0aGlzLnByb3BzLm9uRm9jdXMmJnRoaXMucHJvcHMub25Gb2N1cygpLHRoaXMucHJvcHMuc2hvdWxkVG9nZ2xlSGVhZGVyJiYhdGhpcy5wcm9wcy5kaXNhYmxlZCYmdGhpcy5pc01vYmlsZSYmdGhpcy5wcm9wcy5kaXNwYXRjaCgoMCxrLkUzUykoITApKX0pLCgwLGkuQSkodGhpcywib25CbHVyIiwoKT0+e3RoaXMucHJvcHMub25CbHVyJiZ0aGlzLnByb3BzLm9uQmx1cigpLHRoaXMucHJvcHMuc2hvdWxkVG9nZ2xlSGVhZGVyJiYhdGhpcy5wcm9wcy5kaXNhYmxlZCYmdGhpcy5pc01vYmlsZSYmc2V0VGltZW91dCgoKT0+e3RoaXMucHJvcHMuZGlzcGF0Y2goKDAsay5FM1MpKCExKSl9LDEwMCl9KSwoMCxpLkEpKHRoaXMsImdldEVycm9yIiwoKT0+dm9pZCAwPT09dGhpcy5wcm9wcy5mb3JjZUVycm9ySWNvbj90aGlzLnN0YXRlLnNob3dFcnJvckljb246dGhpcy5wcm9wcy5mb3JjZUVycm9ySWNvbik7Y29uc3QgdD1udWxsPT09ZS52YWx1ZT8iIjplLnZhbHVlO3RoaXMuc3RhdGU9e3ZhbHVlOnQsaXNWYWxpZDpQbih0LGUudHlwZSxlLnZhbGlkYXRvciksc2hvd0Vycm9ySWNvbjohMX0sdGhpcy5pc01vYmlsZT10aGlzLnByb3BzLmlzTW9iaWxlLHRoaXMuZXJyb3JJY29uSGlkZVRpbWVyPW51bGwsdGhpcy5pc0NvbXBvc2luZz0hMX1jb21wb25lbnREaWRNb3VudCgpe2NvbnN0e2lzVmFsaWQ6ZX09dGhpcy5zdGF0ZTt0aGlzLnN0YXRlLmlzVmFsaWQmJih0aGlzLnByb3BzLm9uQ2hhbmdlJiZ0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMuc3RhdGUudmFsdWUsZSksdGhpcy5wcm9wcy5pc1ZhbGlkQ2FsbGJhY2smJnRoaXMucHJvcHMuaXNWYWxpZENhbGxiYWNrKGUpKX1yZW5kZXIoKXtsZXQgZT1udWxsO3JldHVybiBlPSJjaGVja2JveCIhPT10aGlzLnByb3BzLnR5cGU/KDAsVi5ZKShPbix7dmFsdWU6W3RoaXMucHJvcHMucGxhY2Vob2xkZXJdLGNoaWxkcmVuOmU9PiJ0ZXh0YXJlYSI9PT10aGlzLnByb3BzLnR5cGU/KDAsVi5ZKSgidGV4dGFyZWEiLHtwbGFjZWhvbGRlcjplW3RoaXMucHJvcHMucGxhY2Vob2xkZXJdLG9uQ2hhbmdlOnRoaXMub25DaGFuZ2Usb25LZXlEb3duOnRoaXMub25LZXlEb3duLG9uQ29tcG9zaXRpb25TdGFydDp0aGlzLm9uQ29tcG9zaXRpb25TdGFydCxvbkNvbXBvc2l0aW9uRW5kOnRoaXMub25Db21wb3NpdGlvbkVuZCx2YWx1ZTp0aGlzLnN0YXRlLnZhbHVlLHJlYWRPbmx5OnRoaXMucHJvcHMuZGlzYWJsZWQsY2xhc3NOYW1lOnRoaXMucHJvcHMuZGlzYWJsZWQ/ImRpc2FibGVkIjoiIixyZWY6dGhpcy5wcm9wcy5iaW5kSW5wdXRSZWYsb25Gb2N1czp0aGlzLm9uRm9jdXMsb25CbHVyOnRoaXMub25CbHVyfSk6KDAsVi5ZKSgiaW5wdXQiLHt0eXBlOnRoaXMucHJvcHMudHlwZSxwbGFjZWhvbGRlcjplW3RoaXMucHJvcHMucGxhY2Vob2xkZXJdLG9uQ2hhbmdlOnRoaXMub25DaGFuZ2Usb25LZXlEb3duOnRoaXMub25LZXlEb3duLG9uQ29tcG9zaXRpb25TdGFydDp0aGlzLm9uQ29tcG9zaXRpb25TdGFydCxvbkNvbXBvc2l0aW9uRW5kOnRoaXMub25Db21wb3NpdGlvbkVuZCx2YWx1ZTp0aGlzLnN0YXRlLnZhbHVlLHJlYWRPbmx5OnRoaXMucHJvcHMuZGlzYWJsZWQsY2xhc3NOYW1lOnRoaXMucHJvcHMuZGlzYWJsZWQ/ImRpc2FibGVkIjoiIixyZWY6dGhpcy5wcm9wcy5iaW5kSW5wdXRSZWYsb25Gb2N1czp0aGlzLm9uRm9jdXMsb25CbHVyOnRoaXMub25CbHVyfSl9KTooMCxWLkZEKSgibGFiZWwiLHtodG1sRm9yOnRoaXMucHJvcHMuaWQsY2hpbGRyZW46WygwLFYuWSkoImlucHV0Iix7aWQ6dGhpcy5wcm9wcy5pZCx0eXBlOnRoaXMucHJvcHMudHlwZSxvbkNoYW5nZTp0aGlzLm9uQ2hhbmdlLGNoZWNrZWQ6dGhpcy5zdGF0ZS52YWx1ZSxkaXNhYmxlZDp0aGlzLnByb3BzLmRpc2FibGVkLGNsYXNzTmFtZTp0aGlzLnByb3BzLmRpc2FibGVkPyJkaXNhYmxlZCI6IiIscmVmOnRoaXMucHJvcHMuYmluZElucHV0UmVmfSksKDAsVi5ZKShPbix7dmFsdWU6dGhpcy5wcm9wcy5wbGFjZWhvbGRlcixsaW5raWZ5OiEwfSldfSksKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOmBmaWVsZC13cmFwcGVyICR7dGhpcy5wcm9wcy5zaGFrZUNsYXNzTmFtZX0gJHt0aGlzLmdldEVycm9yKCk/ImZpZWxkLXdyYXBwZXItd2l0aC1lcnJvciI6IiJ9YCxjc3M6dGhpcy5wcm9wcy5pc05ld1NraW4/am46dm9pZCAwLGNoaWxkcmVuOmV9KX19em4uZGVmYXVsdFByb3BzPXtwbGFjZWhvbGRlcjoiIixiaW5kSW5wdXRSZWY6dm9pZCAwLG9uQ2hhbmdlOnZvaWQgMCxvbktleURvd246bnVsbCxkaXNhYmxlZDohMSxpc1ZhbGlkQ2FsbGJhY2s6bnVsbCx2YWx1ZTpudWxsLGZvcmNlRXJyb3JJY29uOiExLGlkOnZvaWQgMCx2YWxpZGF0b3I6dm9pZCAwLHNob3VsZFRvZ2dsZUhlYWRlcjohMCxvbkZvY3VzOnZvaWQgMCxvbkJsdXI6dm9pZCAwLHNoYWtlQ2xhc3NOYW1lOiIiLGlzTmV3U2tpbjohMSxpc01vYmlsZTohMX07dmFyIExuPWU9Pntjb25zdCB0PSgwLHIud0EpKCksbj0oMCxyLmQ0KShDLk55KSx7aXNOZXdTa2luOml9PSgwLHAuQSkoKTtyZXR1cm4oMCxWLlkpKHpuLHsuLi5lLGRpc3BhdGNoOnQsaXNOZXdTa2luOmksaXNNb2JpbGU6bn0pfTtjb25zdCBVbj17bmFtZToiMWVqNWpvdiIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzozMnB4IDIwcHg7Lm1vYmlsZSAme3BhZGRpbmc6MjBweCAxNnB4O30ucHJlLWNoYXQsLmFsd2F5cy1vbmxpbmV7bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJTt9Zm9ybXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3Jvdy1nYXA6MjBweDttYXgtaGVpZ2h0OjQ2NXB4O30udXNlci1kYXRhLW1vZGFsLWZpZWxkc3ttYXJnaW4taW5saW5lOi0yMHB4O3BhZGRpbmctaW5saW5lOjIwcHg7ZmxleC1zaHJpbms6MTtvdmVyZmxvdy15OmF1dG87Lm1vYmlsZSAme21hcmdpbi1pbmxpbmU6LTE2cHg7cGFkZGluZy1pbmxpbmU6MTZweDt9Jj4qKyp7bWFyZ2luLXRvcDoxMnB4O30jaWNfYXJyb3d7ZmlsbDp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTt9c3Zne3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7fWlucHV0LHRleHRhcmVhe2JvcmRlcjpzb2xpZCAxcHggcmdiYSgxMDgsIDEyNSwgMTU5LCAwLjI0KTtmb250LXNpemU6MTVweDtwYWRkaW5nOjEycHggMTZweDtsaW5lLWhlaWdodDpub3JtYWw7bWFyZ2luOjA7Jlt0eXBlPSdjaGVja2JveCdde2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmc6OHB4O319bGFiZWx7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDtwYWRkaW5nOjAgMCAwIDJweDttYXJnaW46MDtpbnB1dHttaW4td2lkdGg6MTZweDttaW4taGVpZ2h0OjE4cHg7fSYuc21hbGwtdGV4dHtwYWRkaW5nLXRvcDowO3NwYW57Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MTZweDt9fXNwYW57Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MThweDt0ZXh0LWFsaWduOmp1c3RpZnk7Y29sb3I6IzAwMTIyZTtkaXNwbGF5OmJsb2NrO2F7Y29sb3I6IzAwMTIyZTt9fX19LmVtb2ppe21hcmdpbjowO30ifSxCbj17bmFtZToieDl0cTYwIixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjIwcHg7dG9wOjIwcHg7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ei1pbmRleDoyO3N2Z3tmaWxsOiM2ZDdlOWU7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDt9In0sSG49e25hbWU6IjVkN3o2aiIsc3R5bGVzOiJmb250LXNpemU6MjBweDtmb250LXdlaWdodDo2MDA7dGV4dC1hbGlnbjpsZWZ0O2NvbG9yOiMwMDEyMmUifTtjb25zdCBxbj17bmFtZToiemd6c2l0IixzdHlsZXM6ImZsZXgtc2hyaW5rOjA7d2lkdGg6MTAwJTtoZWlnaHQ6NDBweDtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo2MDA7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCA2cHgpO2JhY2tncm91bmQ6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcik7Y29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1jb250cmFzdCk7cG9zaXRpb246cmVsYXRpdmU7Jjo6YWZ0ZXJ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuMnM7Y29udGVudDonJztib3JkZXItcmFkaXVzOjZweDtiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMCk7bGVmdDowO3RvcDowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7fSY6aG92ZXJ7Jjo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDAuMDgpO319In07dmFyIFZuPSgpPT4oMCxWLlkpKCJidXR0b24iLHtjc3M6cW4sdHlwZToic3VibWl0IixjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToib2ZmbGluZVNlbmRCdXR0b24ifSl9KTtuKDc0NTApO2NvbnN0ICRuPShlLHQsbik9Pntjb25zdCBpPXQ/e3dpZHRoOnQsaGVpZ2h0OnR9Ont9O3JldHVybiBlJiYoaS5iYWNrZ3JvdW5kSW1hZ2U9YHVybCgkeygwLGYudnMpKGUpfSlgLG4mJihpLmJvcmRlclJhZGl1cz0iNHB4IixpLmJhY2tncm91bmRDb2xvcj0idmFyKC0tY3VzdG9tLWJhY2tncm91bmQpIikpLGl9LFduPWU9PntsZXR7YXZhdGFyU3JjOnQsY2xhc3NOYW1lOm4sc2l6ZTppLHdpdGhCYWNrZ3JvdW5kQ29sb3I6YX09ZTtyZXR1cm4oMCxWLlkpKCJkaXYiLHsiZGF0YS10ZXN0aWQiOiJvcGVyYXRvciIsY2xhc3NOYW1lOm58fHZvaWQgMCxzdHlsZTokbih0LGksYSl9KX07dmFyIEtuPWEubWVtbyhXbiksR249ImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3Q0VBQU1EQXdNREF3UUVCQVFGQlFVRkJRY0hCZ1lIQndzSUNRZ0pDQXNSQ3d3TEN3d0xFUThTRHc0UEVnOGJGUk1URlJzZkdoa2FIeVlpSWlZd0xUQStQbFFCQXdNREF3TURCQVFFQkFVRkJRVUZCd2NHQmdjSEN3Z0pDQWtJQ3hFTERBc0xEQXNSRHhJUERnOFNEeHNWRXhNVkd4OGFHUm9mSmlJaUpqQXRNRDQrVlAvQ0FCRUlBRHdBUEFNQklnQUNFUUVERVFIL3hBQWNBQUVBQVFVQkFRQUFBQUFBQUFBQUFBQUFCZ0VEQkFVSEFnbi8yZ0FJQVFFQUFBQUErbFlBajhjeTVuZEhPOFZOTjBJRnJrNjJnakVZdWRIOWlMUVBONmxlYyswVm10RzAzOEw5VXBXaC84UUFGQUVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9hQUFnQkFoQUFBQUFBQVAvRUFCUUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBRC8yZ0FJQVFNUUFBQUFBQUQveEFBdUVBQUJBd01BQ0FVRUF3QUFBQUFBQUFBQkFnTUVBQVVSQmhBU0V5QWhRVkVpTW1LUndTTnhjb0V4UXFILzJnQUlBUUVBQVQ4QTE0UEhkYnV1TXZjTVkyd1BHczg4WjZDbFQ1cXpsVWgwbjhxalhtYXdvRmF5OGpxbGZ3YVplYmtOSWRiT1VyR1J3Q3B4Sm15U2Y1M3F0ZGdKTnUrenErRzdON3U0eVBVb0s5eHJzeUMzYldmVVZMOXp3NlF4aVMxSUE1WTJGL0dwcGxiN3FHa2VaYXNDa05wYWJRaFBsUWtKSDY0Q01ESjVEdldraytHdTN1Um0zd3A1YWs0MkRrcDJUbkpOQzRTMmhoeVB2VDBXZzR6OXhWcW11TjNTTkpsL1RhYlVjSVR6eGtZMmozcGlSSGtqTExyYmc5S3MxZ2pWTDBubnZMVnVBbGxIVGxsZjdKcCtWS2tuTHo3am41SytLQUFHTlk4Snlra0h1RGcweGU3ckc1SmtxVUIvVlkyeC90UjlMa0J2RW1Nc3VkMi9LZmV1bXJ0WFN1OWRLRlpOZi8vRUFCUVJBUUFBQUFBQUFBQUFBQUFBQUFBQUFFRC8yZ0FJQVFJQkFUOEFCLy9FQUJRUkFRQUFBQUFBQUFBQUFBQUFBQUFBQUVELzJnQUlBUU1CQVQ4QUIvL1oiO2NvbnN0IFhuPXtuYW1lOiJ5cDlvYWYiLHN0eWxlczoidGV4dC1hbGlnbjpsZWZ0O3doaXRlLXNwYWNlOm5vd3JhcDttYXJnaW4tYm90dG9tOjIwcHgifSxRbj0oMCxkLkFIKSgid2lkdGg6NDhweDtoZWlnaHQ6NDhweDtib3JkZXItcmFkaXVzOjI0cHg7YmFja2dyb3VuZC1zaXplOmNvdmVyO2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQtaW1hZ2U6dXJsKCIsR24sIik7Ym9yZGVyOnNvbGlkIDFweCAjZmZmOyY6bm90KDpmaXJzdC1jaGlsZCl7bWFyZ2luLWxlZnQ6LTEycHg7fSIsIiIpO3ZhciBabj0oKT0+e2NvbnN0e2lzTmV3U2tpbjplfT0oMCxwLkEpKCksdD0oMCxyLmQ0KShDLkxkKSxuPSgwLHIuZDQpKEMubW0pO2lmKHQpcmV0dXJuKDAsVi5ZKSgiZGl2Iix7Y3NzOlhuLGNoaWxkcmVuOigwLFYuWSkoS24se2F2YXRhclNyYzp0LGNzczpRbix3aXRoQmFja2dyb3VuZENvbG9yOmV9LDEpfSk7Y29uc3QgaT1uLmZpbmQoZT0+ZS5pc09ubGluZSk/bi5maWx0ZXIoZT0+ZS5pc09ubGluZSk6bjtyZXR1cm4oMCxWLlkpKCJkaXYiLHtjc3M6WG4sY2hpbGRyZW46aS5zbGljZSgwLDQpLm1hcChlPT4oMCxWLlkpKEtuLHthdmF0YXJTcmM6ZS5hdmF0YXJTcmMsY3NzOlFufSxlLmlkKSl9KX07Y29uc3QgSm49KDAsZi5ERCkoKTt2YXIgZWk9KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShDLk55KSxbbixpXT1hLnVzZVN0YXRlKCIiKSxbbyxzXT1hLnVzZVN0YXRlKCExKSxbbCxkXT1hLnVzZVN0YXRlKCExKSx7dHJpZ2dlclNoYWtlOmMsc2hha2VDbGFzc05hbWU6dX09cHQoKSxwPWEudXNlUmVmKG51bGwpO2EudXNlRWZmZWN0KCgpPT57IXAuY3VycmVudHx8Sm58fHR8fHAuY3VycmVudC5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfSxbdF0pO2NvbnN0IGY9dD0+KHQmJnQucHJldmVudERlZmF1bHQoKSxvPyhlKCgwLGsua3hsKShuKSksITApOihkKCEwKSxjKCksITEpKTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJhbHdheXMtb25saW5lIixjaGlsZHJlbjpbKDAsVi5ZKShabix7fSksKDAsVi5GRCkoImZvcm0iLHtvblN1Ym1pdDpmLGNoaWxkcmVuOlsoMCxWLlkpKCJkaXYiLHtjc3M6SG4sY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6ImFsd2F5c09ubGluZUVuZ2FnZU1lc3NhZ2UiLGVtb2ppZnk6ITB9KX0pLCgwLFYuWSkoImRpdiIse2NsYXNzTmFtZToidXNlci1kYXRhLW1vZGFsLWZpZWxkcyIsY2hpbGRyZW46KDAsVi5ZKShMbix7dHlwZToiZW1haWwiLHBsYWNlaG9sZGVyOiJwcmVmb3JtSW5wdXRfZW1haWwiLG9uQ2hhbmdlOihlLHQpPT57aShlKSxzKHQpLGQoITEpfSxvbktleURvd246ZT0+ezEzPT09ZSYmZigpfSxkaXNhYmxlZDohMSxiaW5kSW5wdXRSZWY6cCxmb3JjZUVycm9ySWNvbjpsLHNoYWtlQ2xhc3NOYW1lOnV9KX0pLCgwLFYuWSkoVm4se30pXX0pXX0pfTtjb25zdCB0aT0oZSx0KT0+ZS50cmltKCkubGVuZ3RoPj10O3ZhciBuaT1lPT57bGV0e3ZhbHVlOnQ9IiIscGxhY2Vob2xkZXI6bj0iIixvbkNoYW5nZTppLG9uS2V5RG93bjpvLGRpc2FibGVkOnI9ITEsaXNWYWxpZENhbGxiYWNrOnMsZm9yY2VFcnJvckljb246bD0hMSxvbkZvY3VzOmQsb25CbHVyOmMsc2hha2VDbGFzc05hbWU6dT0iIixtaW5MZW5ndGg6cD0xfT1lO2NvbnN0W2YsbV09KDAsYS51c2VTdGF0ZSkodCksW2gsZ109KDAsYS51c2VTdGF0ZSkodGkoZixwKSksW2Isdl09KDAsYS51c2VTdGF0ZSkoITEpLHg9KDAsYS51c2VSZWYpKCkseT0oMCxhLnVzZVJlZikoITEpLHc9ZT0+e2NvbnN0IHQ9ZS50YXJnZXQudmFsdWUsbj10aSh0LHApO20odCksZyhuKSxpJiZpKHQsbikscyYmcyhoKX0saz0oKT0+e3kuY3VycmVudD0hMH0sQT0oKT0+e3NldFRpbWVvdXQoKCk9Pnt5LmN1cnJlbnQ9ITF9LDApfSxDPWU9Pntjb25zdHtrZXlDb2RlOnQsa2V5Om59PWUsaT0iRW50ZXIiPT09bnx8MTM9PT10O3JldHVybiFlLm5hdGl2ZUV2ZW50LmlzQ29tcG9zaW5nJiYheS5jdXJyZW50JiYyMjkhPT10JiYoaSYmIWgmJih2KCEwKSx4LmN1cnJlbnQmJmNsZWFyVGltZW91dCh4LmN1cnJlbnQpLHguY3VycmVudD1zZXRUaW1lb3V0KCgpPT57dighMSl9LDgyMCkpLCEoIWl8fCFoKSYmKGUucHJldmVudERlZmF1bHQoKSxvJiZvKHQpLCEwKSl9LEU9KCk9PntkJiZkKCl9LFM9KCk9PntjJiZjKCl9O3JldHVybigwLFYuWSkoImRpdiIse2NsYXNzTmFtZTpgZmllbGQtd3JhcHBlciAke3V9ICR7KHZvaWQgMD09PWw/YjpsKT8iZmllbGQtd3JhcHBlci13aXRoLWVycm9yIjoiIn1gLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOltuXSxjaGlsZHJlbjplPT4oMCxWLlkpKCJ0ZXh0YXJlYSIse3BsYWNlaG9sZGVyOmVbbl0sb25DaGFuZ2U6dyxvbktleURvd246QyxvbkNvbXBvc2l0aW9uU3RhcnQ6ayxvbkNvbXBvc2l0aW9uRW5kOkEsdmFsdWU6ZixyZWFkT25seTpyLGNsYXNzTmFtZTpyPyJkaXNhYmxlZCI6IiIsb25Gb2N1czpFLG9uQmx1cjpTLHJvd3M6NH0pfSl9KX07Y29uc3QgaWk9e25hbWU6IjFpZ3kxd2IiLHN0eWxlczoicG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3Jvdy1nYXA6MjBweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtiYWNrZ3JvdW5kOiNmZmY7cGFkZGluZzozMnB4IDIwcHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxMnB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjEycHg7c3Zne3Bvc2l0aW9uOnVuc2V0O3dpZHRoOjQ4cHg7aGVpZ2h0OjQ4cHg7fSJ9LGFpPSgwLGQuQUgpKEhuLCJ0ZXh0LWFsaWduOmNlbnRlcjsiLCIiKTt2YXIgb2k9KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShDLk55KSxuPSgwLHIuZDQpKEMuaGUpLFtpXT0oMCxhLnVzZVN0YXRlKSghbiksW28sc109KDAsYS51c2VTdGF0ZSkoIiIpLFtsLGRdPSgwLGEudXNlU3RhdGUpKCExKSx1PSgwLHIuZDQpKEMuZ3ApLFtwLGZdPSgwLGEudXNlU3RhdGUpKHU/PyIiKSxbbSxoXT0oMCxhLnVzZVN0YXRlKShwLmxlbmd0aD49MyksW2csYl09KDAsYS51c2VTdGF0ZSkoITEpLFt2LHhdPSgwLGEudXNlU3RhdGUpKCExKSx7dHJpZ2dlclNoYWtlOnksc2hha2VDbGFzc05hbWU6d309cHQoKSxBPWEudXNlUmVmKCk7YS51c2VFZmZlY3QoKCk9PntBLmN1cnJlbnQmJiF0JiZBLmN1cnJlbnQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX0sW3RdKTtjb25zdCBFPSgwLGMucG4pKHYse2Zyb206e29wYWNpdHk6MCx0cmFuc2Zvcm06InNjYWxlKDAuOSkifSxlbnRlcjp7b3BhY2l0eToxLHRyYW5zZm9ybToic2NhbGUoMSkifSxsZWF2ZTp7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMC45KSJ9LGNvbmZpZzp7dGVuc2lvbjozMDAsZnJpY3Rpb246MzB9fSk7cmV0dXJuKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6ImFsd2F5cy1vbmxpbmUiLCJkYXRhLXRlc3RpZCI6ImNyZWF0ZVRpY2tldE1vZGFsIixjaGlsZHJlbjpbKDAsVi5ZKShabix7fSksKDAsVi5GRCkoImZvcm0iLHtvblN1Ym1pdDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5wcmV2ZW50RGVmYXVsdCgpLChufHxsKSYmbT8oZSgoMCxrLnJ0Uikobnx8byxwKSkseCghMCksITApOihiKCEwKSx5KCksITEpfSxub1ZhbGlkYXRlOiEwLGNoaWxkcmVuOlsoMCxWLlkpKCJkaXYiLHtjc3M6SG4sY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6ImFsd2F5c09ubGluZUVuZ2FnZU1lc3NhZ2UiLGVtb2ppZnk6ITB9KX0pLCgwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6InVzZXItZGF0YS1tb2RhbC1maWVsZHMiLGNoaWxkcmVuOltpJiYoMCxWLlkpKExuLHt0eXBlOiJlbWFpbCIscGxhY2Vob2xkZXI6InByZWZvcm1JbnB1dF9lbWFpbCIsb25DaGFuZ2U6KGUsdCk9PntzKGUpLGQodCksYighMSl9LGRpc2FibGVkOiExLGJpbmRJbnB1dFJlZjpBLGZvcmNlRXJyb3JJY29uOiFsJiZnLHNoYWtlQ2xhc3NOYW1lOmw/IiI6d30pLCgwLFYuWSkobmkse3ZhbHVlOnAscGxhY2Vob2xkZXI6InByZWZvcm1JbnB1dF9maXJzdG1zZyIsbWluTGVuZ3RoOjMsb25DaGFuZ2U6KGUsdCk9PntmKGUpLGgodCksYighMSl9LGRpc2FibGVkOiExLGZvcmNlRXJyb3JJY29uOiFtJiZnLHNoYWtlQ2xhc3NOYW1lOm0/IiI6d30pXX0pLCgwLFYuWSkoVm4se30pXX0pXX0pLEUoKGUsdCk9PnQ/KDAsVi5GRCkoYy5DUy5kaXYse2NzczppaSxzdHlsZTplLGNoaWxkcmVuOlsoMCxWLlkpKHV0LmNRLHt9KSwoMCxWLlkpKCJkaXYiLHtjc3M6YWksY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6InRpY2tldFN1Ym1pdHRlZENvbmZpcm1hdGlvbiIsZW1vamlmeTohMH0pfSldfSk6bnVsbCldfSl9LHJpPShuKDU0NjkpLG4oMTg3NSkpLHNpPW4oODY4NyksbGk9big4NzA2KTtjb25zdCBkaT17bmFtZToiMWRhMjJxNiIsc3R5bGVzOiJwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjE7bWFyZ2luLWJvdHRvbTo4cHg7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDEwOCwgMTI1LCAxNTksIDAuMjQpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgNXB4KSJ9LGNpPXtuYW1lOiIxb285amZvIixzdHlsZXM6ImJvcmRlci1jb2xvcjojZjYzMDNhO3NlbGVjdHsmOm5vdCg6Zm9jdXMpOmludmFsaWR7Y29sb3I6I2Y2MzAzYTt9fXN2Z3tmaWxsOiNmNjMwM2E7fSJ9LHVpPXtuYW1lOiIxYXl6dXZkIixzdHlsZXM6ImJvcmRlci1jb2xvcjojMDU2NmZmO3N2Z3tmaWxsOiM2NDc0OTE7fSJ9LHBpPXtuYW1lOiIxdDJpeTlkIixzdHlsZXM6J292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZzoxMXB4IDQwcHggMTJweCAxNnB4O2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MDtvdXRsaW5lOm5vbmU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMDgwRjFBO2ZvbnQtc2l6ZToxNXB4O2FwcGVhcmFuY2U6bm9uZTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpczsmOm5vdCg6Zm9jdXMpOmludmFsaWR7Y29sb3I6Izg4OTRhYjt9b3B0aW9uW3ZhbHVlPSIiXVtkaXNhYmxlZF17ZGlzcGxheTpub25lO30nfSxmaT17bmFtZToiem5tYWI4IixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO3JpZ2h0OjhweDt3aWR0aDoyNHB4O2hlaWdodDoyNHB4O21hcmdpbjphdXRvO3BvaW50ZXItZXZlbnRzOm5vbmU7c3Zne3RvcDphdXRvO2xlZnQ6YXV0bztmaWxsOiM2NDc0OTE7fSJ9LG1pPSgwLGYuREQpKCk7dmFyIGhpPWU9PntsZXR7b25DaGFuZ2U6dCxoYXNFcnJvcjpuLHNoYWtlQ2xhc3NOYW1lOml9PWU7Y29uc3Qgbz0oMCxyLmQ0KShDLndZKSxbcyxsXT0oMCxhLnVzZVN0YXRlKSghMSksW2QsY109KDAsYS51c2VTdGF0ZSkoIiIpO2lmKCFvLmxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCB1PSgwLHkucHcpKCJyb3V0aW5nUnVsZXNfc2VsZWN0b3IiLG51bGwsIlNlbGVjdCBEZXBhcnRtZW50Li4uIik7cmV0dXJuKDAsVi5GRCkoImRpdiIse2NzczpbZGksbiYmY2kscyYmdWksIiIsIiJdLGNsYXNzTmFtZTppLGNoaWxkcmVuOlsoMCxWLkZEKSgic2VsZWN0Iix7Y3NzOnBpLHZhbHVlOmQscmVxdWlyZWQ6ITAsZm9ybToibm92YWxpZGF0ZWRmb3JtIixvbkZvY3VzOigpPT57bCghMCl9LG9uQmx1cjooKT0+e2woITEpfSxvbkNoYW5nZTplPT57Y29uc3Qgbj1lLnRhcmdldC52YWx1ZSxpPW8uZmluZChlPT5lLnBvc2l0aW9uPT09TnVtYmVyKG4pKT8uZGVwYXJ0bWVudElkO21pfHxjKG4pLHQmJmkmJnQoaSl9LHRpdGxlOnUsY2hpbGRyZW46WygwLFYuWSkoIm9wdGlvbiIse3ZhbHVlOiIiLGRpc2FibGVkOiEwLGNoaWxkcmVuOnV9KSxvLm1hcChlPT57bGV0e2FsaWFzOnQscG9zaXRpb246bn09ZTtyZXR1cm4oMCxWLlkpKCJvcHRpb24iLHt2YWx1ZTpuLGNoaWxkcmVuOnR9LG4pfSldfSksKDAsVi5ZKSgiZGl2Iix7Y3NzOmZpLGNoaWxkcmVuOigwLFYuWSkodXQueWQse30pfSldfSl9O2xldCBnaT1mdW5jdGlvbihlKXtyZXR1cm4gZS5FTUFJTD0iZW1haWwiLGUuTkFNRT0ibmFtZSIsZS5QSE9ORT0icGhvbmUiLGUuR0RQUl9DT05TRU5UPSJnZHByQ29uc2VudCIsZS5TSUdOX1VQX05FV1NMRVRURVI9InNpZ25VcE5ld3NsZXR0ZXIiLGUuUFJFQ0hBVF9GSUVMRF9UWVBFX0VNQUlMX0NPTlNFTlQ9ImVtYWlsQ29uc2VudCIsZX0oe30pO2NvbnN0IGJpPWEuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e3ZhbHVlOm4sdHlwZTppLHBsYWNlaG9sZGVyOm8sZm9yY2VFcnJvckljb246cj0hMSxkaXNhYmxlZDpzPSExLG9uS2V5RG93bjpsLG9uSW5wdXRDaGFuZ2U6ZD0oKT0+e30sc2hha2VDbGFzc05hbWU6Yz0iIn09ZSx1PSgwLGEudXNlTWVtbykoKCk9PihlPT57c3dpdGNoKGUpe2Nhc2UgZ2kuRU1BSUw6cmV0dXJuImVtYWlsIjtjYXNlIGdpLk5BTUU6cmV0dXJuInRleHQiO2Nhc2UgZ2kuUEhPTkU6cmV0dXJuInRlbCI7Y2FzZSBnaS5HRFBSX0NPTlNFTlQ6Y2FzZSBnaS5QUkVDSEFUX0ZJRUxEX1RZUEVfRU1BSUxfQ09OU0VOVDpjYXNlIGdpLlNJR05fVVBfTkVXU0xFVFRFUjpyZXR1cm4iY2hlY2tib3giO2RlZmF1bHQ6cmV0dXJuIiJ9fSkoaSksW2ldKSxwPSgwLGEudXNlTWVtbykoKCk9PigoZSx0KT0+e3N3aXRjaChlKXtjYXNlIGdpLlBSRUNIQVRfRklFTERfVFlQRV9FTUFJTF9DT05TRU5UOnJldHVybiB0JiYib2JqZWN0Ij09dHlwZW9mIHQ/e3ZhbGlkYXRvcjooKT0+ITAscGxhY2Vob2xkZXI6InNpZ25VcE5ld3NsZXR0ZXIiLHZhbHVlOiJzdWJzY3JpYmVkIj09PXQudmFsdWV9Ont2YWxpZGF0b3I6KCk9PiEwLHBsYWNlaG9sZGVyOiJzaWduVXBOZXdzbGV0dGVyIn07Y2FzZSBnaS5TSUdOX1VQX05FV1NMRVRURVI6cmV0dXJue3ZhbGlkYXRvcjooKT0+ITAscGxhY2Vob2xkZXI6InNpZ25VcE5ld3NsZXR0ZXIifTtkZWZhdWx0OnJldHVybnt9fX0pKGksbiksW2ksbl0pO3JldHVybiB1P2k9PT1naS5HRFBSX0NPTlNFTlQ/KDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOmBmaWVsZC13cmFwcGVyICR7Y30gJHtyPyJmaWVsZC13cmFwcGVyLXdpdGgtZXJyb3IiOiIifWAsY2hpbGRyZW46KDAsVi5GRCkoImxhYmVsIix7aHRtbEZvcjppLGNsYXNzTmFtZToic21hbGwtdGV4dCIsY2hpbGRyZW46WygwLFYuWSkoImlucHV0Iix7aWQ6aSx0eXBlOnUsY2hlY2tlZDpCb29sZWFuKG4pLG9uQ2hhbmdlOmU9PntkKGUudGFyZ2V0LmNoZWNrZWQsZS50YXJnZXQuY2hlY2tlZCxpKX0sZGlzYWJsZWQ6cyxjbGFzc05hbWU6cz8iZGlzYWJsZWQiOiIiLHJlZjp0fSksKDAsVi5ZKShPbix7dmFsdWU6byxsaW5raWZ5OiEwLG1hcmtkb3duaWZ5OiEwfSldfSl9KTooMCxWLlkpKExuLHtpZDppLHR5cGU6dSxvbkNoYW5nZTooZSx0KT0+e2QoZSx0LGkpfSx2YWx1ZTpuLGRpc2FibGVkOnMscGxhY2Vob2xkZXI6byxiaW5kSW5wdXRSZWY6dCxvbktleURvd246bCxmb3JjZUVycm9ySWNvbjpyLHNoYWtlQ2xhc3NOYW1lOmMsLi4ucH0pOm51bGx9KTt2YXIgdmk9Ymk7ZnVuY3Rpb24geGkoZSl7Y29uc3QgdD1lO3JldHVybltzaS5NMCwic2lnblVwTmV3c2xldHRlciJdLmZvckVhY2goZT0+e3ZvaWQgMCE9PXRbZV0mJih0W2VdPUJvb2xlYW4odFtlXSkpfSksImJvb2xlYW4iPT10eXBlb2YgdFtzaS5NMF0mJih0W3NpLk0wXT17dmFsdWU6dFtzaS5NMF0/InN1YnNjcmliZWQiOiJ1bnN1YnNjcmliZWQiLGRhdGU6TWF0aC5yb3VuZChEYXRlLm5vdygpLzFlMyksc2V0Qnk6InVzZXIifSksdH1jb25zdCB5aT0iU0VUX0lOUFVUIix3aT0iU0hPV19FUlJPUl9PTl9JTlZBTElEX0ZJRUxEUyI7ZnVuY3Rpb24ga2koZSx0KXtzd2l0Y2godC50eXBlKXtjYXNlIHlpOntjb25zdHtmaWVsZFR5cGU6bixpc1ZhbGlkOmksdmFsdWU6YX09dDtyZXR1cm57Li4uZSxpbnB1dFZhbHVlczp7Li4uZS5pbnB1dFZhbHVlcyxbbl06e2lzVmFsaWQ6aSx2YWx1ZTphfX0sZmllbGRzV2l0aEVycm9yczp7Li4uZS5maWVsZHNXaXRoRXJyb3JzLFtuXTohMX19fWNhc2Ugd2k6e2NvbnN0IHQ9T2JqZWN0LmVudHJpZXMoZS5pbnB1dFZhbHVlcykuZmlsdGVyKGU9PntsZXRbLHRdPWU7cmV0dXJuIXQuaXNWYWxpZH0pLnJlZHVjZSgoZSx0KT0+e2xldFtuXT10O3JldHVybnsuLi5lLFtuXTohMH19LHt9KTtyZXR1cm57Li4uZSxmaWVsZHNXaXRoRXJyb3JzOnR9fWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yfX1jb25zdCBBaT1lPT57Y29uc3QgdD1lLmFyZURlcGFydG1lbnRzRW5hYmxlZCYmIWUuaXNEZXBhcnRtZW50U2VsZWN0ZWQ/Wy4uLmUucHJlQ2hhdEZpZWxkcyx7dHlwZTpzaS5SNn1dOmUucHJlQ2hhdEZpZWxkcyxbbixpXT1hLnVzZVJlZHVjZXIoa2ksdCxmdW5jdGlvbih0KXtjb25zdCBuPXt9O3JldHVybiB0LmZvckVhY2goZT0+e25bZS50eXBlXT17aXNWYWxpZDohMSx2YWx1ZTplLnZhbHVlP2UudmFsdWU6IiJ9fSksZS5wcmVjaGF0U3Vic2NyaXB0aW9uQ2hlY2tib3hEZWZhdWx0VmFsdWUmJm4uZW1haWxDb25zZW50JiYhbi5lbWFpbENvbnNlbnQudmFsdWUmJihuLmVtYWlsQ29uc2VudD17Li4ubi5lbWFpbENvbnNlbnQsdmFsdWU6ITB9KSx7aW5wdXRWYWx1ZXM6bixmaWVsZHNXaXRoRXJyb3JzOnt9fX0pLHt0cmlnZ2VyU2hha2U6byxzaGFrZUNsYXNzTmFtZTpyfT1wdCgpO2NvbnN0IHM9KGUsdCxuKT0+e2koe3R5cGU6eWksZmllbGRUeXBlOm4sdmFsdWU6ZSxpc1ZhbGlkOnR9KX0sbD1lPT57aSh7dHlwZTp5aSxmaWVsZFR5cGU6c2kuUjYsdmFsdWU6ZSxpc1ZhbGlkOiEwfSl9LGQ9YS51c2VSZWYoKTthLnVzZUVmZmVjdCgoKT0+e2QuY3VycmVudCYmIWUuaXNNb2JpbGUmJmQuY3VycmVudC5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfSxbZS5pc01vYmlsZV0pLGEudXNlRWZmZWN0KCgpPT57ZS5pc0RlcGFydG1lbnRTZWxlY3RlZCYmbChlLnNlbGVjdGVkRGVwYXJ0bWVudElkKX0sW2UuaXNEZXBhcnRtZW50U2VsZWN0ZWQsZS5zZWxlY3RlZERlcGFydG1lbnRJZF0pO2NvbnN0IGM9YS51c2VSZWYoITEpO2Z1bmN0aW9uIHUodCl7dCYmdC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBPYmplY3QudmFsdWVzKG4uaW5wdXRWYWx1ZXMpLmV2ZXJ5KGU9PiEwPT09ZS5pc1ZhbGlkKT8oZS5kaXNwYXRjaCgoMCxrLlNySikoZnVuY3Rpb24oZSl7Y29uc3QgdD17fTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaChuPT57dFtuXT1lW25dLnZhbHVlfSksITA9PT10LnNpZ25VcE5ld3NsZXR0ZXImJih0LmVtYWlsQ29uc2VudD0hMCkseGkodCl9KG4uaW5wdXRWYWx1ZXMpKSksITApOihvKCksaSh7dHlwZTp3aX0pLCExKX1hLnVzZUVmZmVjdCgoKT0+e2lmKCFjLmN1cnJlbnQpe2NvbnN0IHQ9ZS5wcmVDaGF0RmllbGRzLm1hcChlPT5lLnR5cGUpOygwLGxpLnMpKCkudHJhY2tFdmVudCh7ZXZlbnROYW1lOiJ0aWRpb19wcmVjaGF0X3N0YXJ0ZWQiLHBhcmFtczp7ZW1haWw6dC5pbmNsdWRlcygiZW1haWwiKSxwaG9uZTp0LmluY2x1ZGVzKCJwaG9uZSIpLG5hbWU6dC5pbmNsdWRlcygibmFtZSIpLGNvbnNlbnRfZ2l2ZW46dC5pbmNsdWRlcygiZW1haWxDb25zZW50Iil9fSksYy5jdXJyZW50PSEwfX0sW2UucHJlQ2hhdEZpZWxkc10pO2NvbnN0IHA9ZT0+ezEzPT09ZSYmdSgpfSxmPShlLHQpPT4oMCxWLlkpKHZpLHt0eXBlOmUudHlwZSxwbGFjZWhvbGRlcjplLnBsYWNlaG9sZGVyLG9uSW5wdXRDaGFuZ2U6cyxkaXNhYmxlZDohMSxvbktleURvd246cCxmb3JjZUVycm9ySWNvbjpuLmZpZWxkc1dpdGhFcnJvcnNbZS50eXBlXSxzaGFrZUNsYXNzTmFtZTpuLmZpZWxkc1dpdGhFcnJvcnNbZS50eXBlXSYmcj9yOiIiLHJlZjowPT09dD9kOnZvaWQgMCx2YWx1ZTplLnZhbHVlfSxlLnR5cGUpLG09ZS5wcmVDaGF0RmllbGRzLm1hcChlPT57Y29uc3QgdD1uLmlucHV0VmFsdWVzW2UudHlwZV0/LnZhbHVlO3JldHVybnsuLi5lLHZhbHVlOnR9fSksaD1tLmZpbHRlcihlPT57bGV0e3R5cGU6dH09ZTtyZXR1cm4gdCE9PXNpLk0wJiZ0IT09c2kubjZ9KSxnPW0uZmluZChlPT57bGV0e3R5cGU6dH09ZTtyZXR1cm4gdD09PXNpLk0wfSksYj1tLmZpbmQoZT0+e2xldHt0eXBlOnR9PWU7cmV0dXJuIHQ9PT1zaS5uNn0pLHY9bi5maWVsZHNXaXRoRXJyb3JzW3NpLlI2XTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJwcmUtY2hhdCIsY2hpbGRyZW46WygwLFYuWSkoWm4se30pLCgwLFYuRkQpKCJmb3JtIix7b25TdWJtaXQ6dSxjaGlsZHJlbjpbKDAsVi5ZKSgiZGl2Iix7Y3NzOkhuLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJwcmVmb3JtTWVzc2FnZSIsZW1vamlmeTohMH0pfSksKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToidXNlci1kYXRhLW1vZGFsLWZpZWxkcyIsY2hpbGRyZW46W2gubWFwKGYpLGUuYXJlRGVwYXJ0bWVudHNFbmFibGVkJiYhZS5pc0RlcGFydG1lbnRTZWxlY3RlZCYmKDAsVi5ZKShoaSx7b25DaGFuZ2U6bCxzaGFrZUNsYXNzTmFtZTp2JiZyP3I6IiIsaGFzRXJyb3I6dn0pLGcmJmYoZyxoLmxlbmd0aCksYiYmZihiLGgubGVuZ3RoKV19KSwoMCxWLlkpKFZuLHt9KV19KV19KX07QWkuZGVmYXVsdFByb3BzPXtzZWxlY3RlZERlcGFydG1lbnRJZDpudWxsfTt2YXIgQ2k9KDAsci5OZykoZT0+KHtwcmVDaGF0RmllbGRzOigwLHJpLnRyKShlLnByZUNoYXQuZGF0YSxlLnZpc2l0b3IpLGFyZURlcGFydG1lbnRzRW5hYmxlZDooMCxDLlpYKShlKSxpc0RlcGFydG1lbnRTZWxlY3RlZDooMCxDLllOKShlKSxzZWxlY3RlZERlcGFydG1lbnRJZDooMCxDLnBRKShlKSxwcmVjaGF0U3Vic2NyaXB0aW9uQ2hlY2tib3hEZWZhdWx0VmFsdWU6KDAsQy5zZCkoZSksaXNNb2JpbGU6KDAsQy5OeSkoZSl9KSkoQWkpO3ZhciBFaT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx0PSgwLHIuZDQpKGU9PmUuc2hvd1VzZXJEYXRhTW9kYWwpLHtpc05ld1NraW46bn09KDAscC5BKSgpLGk9KDAsYS51c2VSZWYpKHQpO3QmJihpLmN1cnJlbnQ9dCk7Y29uc3Qgbz0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e2UoKDAsay5wTzYpKGx0LlguY2xvc2VNb2RhbENsaWNrZWQpKSxlKCgwLGsuZXN2KSghMSkpfSxbZV0pO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+e2kuY3VycmVudCYmIXQmJigwLGgueUcpKCl9LFt0XSksKDAsVi5ZKShjdCx7aXNPcGVuOiExIT09dCxvbkNsb3NlOm8sc2hvdWxkQ2xvc2VPbkJhY2tkcm9wQ2xpY2s6ITEsY2hpbGRyZW46KDAsVi5GRCkoImRpdiIseyJkYXRhLXRlc3RpZCI6InVzZXJEYXRhTW9kYWwiLGNzczpVbixjaGlsZHJlbjpbKDAsVi5ZKSgiYnV0dG9uIix7Y3NzOkJuLG9uQ2xpY2s6byx0eXBlOiJidXR0b24iLCJhcmlhLWxhYmVsIjooMCx5LnB3KSgiY2xvc2VVc2VyRGF0YU1vZGFsIixudWxsLCJDbG9zZSBtb2RhbCIpLGNoaWxkcmVuOm4/KDAsVi5ZKSh1dC5HLHt9KTooMCxWLlkpKHV0LnlRLHt9KX0pLCJwcmVjaGF0Ij09PWkuY3VycmVudCYmKDAsVi5ZKShDaSx7fSksImFsd2F5c09ubGluZSI9PT1pLmN1cnJlbnQmJigwLFYuWSkoZWkse30pLCJjcmVhdGVUaWNrZXQiPT09aS5jdXJyZW50JiYoMCxWLlkpKG9pLHt9KV19KX0pfTtjbGFzcyBTaSBleHRlbmRzIGEuQ29tcG9uZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSwoMCxpLkEpKHRoaXMsInN0YXRlIix7aGFzRXJyb3I6ITF9KX1zdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKCl7cmV0dXJue2hhc0Vycm9yOiEwfX1jb21wb25lbnREaWRDYXRjaChlKXsoMCx2LkRIKSgiRXJyb3Igd2hpbGUgbG9hZGluZyBhc3luYyBjaHVuayIse21lc3NhZ2U6ZS5tZXNzYWdlfSksdGhpcy5wcm9wcy5vbkRpZENhdGNoKCl9cmVuZGVyKCl7cmV0dXJuIHRoaXMuc3RhdGUuaGFzRXJyb3I/bnVsbDp0aGlzLnByb3BzLmNoaWxkcmVufX12YXIgRGk9U2ksWWk9big0MDE5KTtjb25zdCBUaT1hLmxhenkoKCk9Pm4uZSgxMzEpLnRoZW4obi5iaW5kKG4sODQzMSkpKTt2YXIgRmk9KCk9Pntjb25zdCBlPSgwLFlpLmx6KSgpLnN0YXRlLFt0LG5dPSgwLGEudXNlU3RhdGUpKEJvb2xlYW4oZSkpO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+e2UmJm4oITApfSxbZV0pLCgwLFYuWSkoRGkse29uRGlkQ2F0Y2g6KCk9Pnt9LGNoaWxkcmVuOigwLFYuWSkoYS5TdXNwZW5zZSx7ZmFsbGJhY2s6bnVsbCxjaGlsZHJlbjp0JiYoMCxWLlkpKFRpLHtyZXNldFZpZGVvQ2FsbENvbm5lY3Rpb25SZXF1ZXN0OigpPT57bighMSl9fSl9KX0pfTt2YXIgSWk9KCk9Pntjb25zdFtlLHRdPSgwLGEudXNlU3RhdGUpKCExKSxuPSgpPT57dCghMSl9O3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLG4pLCgpPT57ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsbil9KSxbXSkse2lzQ2xpY2tlZDplLGhhbmRsZUNsaWNrOigpPT57dCghMCl9LGhhbmRsZU1vdXNlRW50ZXI6KCk9Pnt0KCExKX19fTt2YXIgX2k9ZT0+KDAsVi5ZKSgkLHsuLi5lLGluOmUuaW4sY2xhc3NOYW1lczoiZmFkZSIsY2hpbGRyZW46ZS5jaGlsZHJlbn0pO3ZhciBNaT0oMCxkLkFIKSh7d2lkdGg6MzgsaGVpZ2h0OjM4LGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIscG9zaXRpb246InJlbGF0aXZlIixjb2xvcjoiY3VycmVudENvbG9yIixzdmc6e3dpZHRoOjIyLGhlaWdodDoyMixmaWxsOiJjdXJyZW50Q29sb3IiLHRyYW5zaXRpb246ImFsbCAwLjE2cyBlYXNlLWluLW91dCJ9LG91dGxpbmU6Im5vbmUiLCIubW9iaWxlICYiOnt3aWR0aDo0NCxoZWlnaHQ6NDR9LCImOjpiZWZvcmUiOntjb250ZW50OiciIicscG9zaXRpb246ImFic29sdXRlIix3aWR0aDozOCxoZWlnaHQ6MzgsYm9yZGVyUmFkaXVzOiI1MCUiLHpJbmRleDotMSx0cmFuc2l0aW9uOiJhbGwgMC4xNnMgZWFzZS1pbi1vdXQiLHRyYW5zZm9ybToic2NhbGUoMCkiLHRvcDoiY2FsYyg1MCUgLSAxOXB4KSIsbGVmdDoiY2FsYyg1MCUgLSAxOXB4KSJ9LCImOmhvdmVyOjpiZWZvcmUiOnt0cmFuc2Zvcm06InNjYWxlKDEpIn0sIiY6aG92ZXIiOntjb2xvcjoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcikiLCImOjpiZWZvcmUiOntiYWNrZ3JvdW5kQ29sb3I6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItYmFja2dyb3VuZCkifX0sIi5ncmlkLWxheW91dDpub3QoLm1vYmlsZSkgJiI6e3dpZHRoOjI0LGhlaWdodDoyNCxzdmc6e3dpZHRoOjIwLGhlaWdodDoyMH0sIiY6OmJlZm9yZSI6e3dpZHRoOjI4LGhlaWdodDoyOCx0cmFuc2Zvcm06InNjYWxlKDEpIix0b3A6ImNhbGMoNTAlIC0gMTRweCkiLGxlZnQ6ImNhbGMoNTAlIC0gMTRweCkiLGJhY2tncm91bmQ6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItYmFja2dyb3VuZCkiLGJvcmRlclJhZGl1czoidmFyKC0tcmFkaXVzLXNtYWxsLWNvbXBvbmVudCwgOHB4KSIsb3BhY2l0eTowfSwiJjpob3ZlciI6e2NvbG9yOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKSIsIiY6OmJlZm9yZSI6e29wYWNpdHk6MX19fSwiJi5kaXNhYmxlZCBzdmcsICYuZGlzYWJsZWQ6Zm9jdXMgc3ZnIjp7ZmlsbDoiI2M5Y2JkOCJ9LCImOmRpc2FibGVkIjp7IiY6OmJlZm9yZSI6e2JhY2tncm91bmQ6Im5vbmUgIWltcG9ydGFudCJ9LHN2Zzp7ZmlsbDoiI2M5Y2JkOCJ9fX0sIiIsIiIpO3ZhciBOaT17dG9vbHRpcEJ1dHRvbjpmdW5jdGlvbigpe2xldHtzaG93T25EaXNhYmxlZDplPSExfT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuKDAsZC5BSCkoeyJAbWVkaWEgKGhvdmVyOiBob3ZlcikiOntbYCY6JHtlPyIiOiJub3QoW2Rpc2FibGVkXSk6In1ob3ZlciAudG9vbHRpcDpub3QoLmNsaWNrZWQpYF06e29wYWNpdHk6MSx0cmFuc2Zvcm06InRyYW5zbGF0ZSgtNTAlLCAtMTBweCkifX0sW2AmOiR7ZT8iIjoibm90KFtkaXNhYmxlZF0pOiJ9YWN0aXZlIC50b29sdGlwYF06e29wYWNpdHk6MCxwb2ludGVyRXZlbnRzOiJub25lIn19LCIiLCIiKX0sdG9vbHRpcDp7bmFtZToiMXM0MW5yNCIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjVweCA4cHg7Y29sb3I6IzA4MEYxQTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNoYWRvdzowcHggOHB4IDIwcHggcmdiYSgwLCAyNywgNzEsIDAuMjQpO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE4cHg7dGV4dC1hbGlnbjpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOmNhbGMoMTAwJSAtIDRweCk7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCAxMHB4KTtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgMC4xNnMgZWFzZS1pbi1vdXQsIHRyYW5zZm9ybSAwLjE2cyBlYXNlLWluLW91dDt6LWluZGV4OjEwO3doaXRlLXNwYWNlOm5vd3JhcDtnYXA6OHB4In19O3ZhciBPaT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx7aXNOZXdTa2luOnR9PSgwLHAuQSkoKTtyZXR1cm4oMCxWLkZEKSgic3BhbiIse2Nzczoobj10LCgwLGQuQUgpKHttYXJnaW5JbmxpbmVTdGFydDowLCIucHVsc2UsIC5wdWxzZS13aGl0ZSI6e3dpbGxDaGFuZ2U6InRyYW5zZm9ybSIsZGlzcGxheToiYmxvY2siLHdpZHRoOm4/MjQ6MzgsaGVpZ2h0Om4/MjQ6MzgscG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsYm9yZGVyUmFkaXVzOiI1MCUiLGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiIxIixtYXJnaW5JbmxpbmVTdGFydDowfSwiLnB1bHNlIjp7YmFja2dyb3VuZDoiI2M5Y2JkOCIsekluZGV4OiItNCIsYW5pbWF0aW9uOiJ3YXRlclB1bHNlIDNzIiwiJi5hbmltYXRpb24tZGVsYXkiOnt6SW5kZXg6Ii0yIn19LCIucHVsc2Utd2hpdGUiOntiYWNrZ3JvdW5kOiIjZmZmIix6SW5kZXg6Ii0zIixhbmltYXRpb246IndhdGVyUHVsc2VXaGl0ZSAzcyIsIiYuYW5pbWF0aW9uLWRlbGF5Ijp7ekluZGV4OiItMSJ9LG1hcmdpbklubGluZVN0YXJ0OjB9LCIuYW5pbWF0aW9uLWRlbGF5Ijp7YW5pbWF0aW9uRGVsYXk6IjAuOHMifSwiQGtleWZyYW1lcyB3YXRlclB1bHNlV2hpdGUiOntmcm9tOnt0cmFuc2Zvcm06InNjYWxlKDAuNykifSwiMjklIjp7dHJhbnNmb3JtOiJzY2FsZSgwLjcpIn0sIjYwJSI6e3RyYW5zZm9ybToic2NhbGUoMi44KSJ9fSwiQGtleWZyYW1lcyB3YXRlclB1bHNlIjp7ZnJvbTp7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMC44KSJ9LCIxOSUiOntvcGFjaXR5Oi4zfSwiMjMlIjp7dHJhbnNmb3JtOiJzY2FsZSgwLjgpIn0sIjI0JSI6e29wYWNpdHk6LjUsdHJhbnNmb3JtOiJzY2FsZSgwLjgpIn0sIjMxJSI6e29wYWNpdHk6LjR9LCI1NSUiOntvcGFjaXR5Oi4xLHRyYW5zZm9ybToic2NhbGUoMi44KSJ9LCIxMDAlIjp7b3BhY2l0eTowfX19LCIiLCIiKSksY2hpbGRyZW46WygwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6InB1bHNlIn0pLCgwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6InB1bHNlLXdoaXRlIn0pLCgwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6InB1bHNlIGFuaW1hdGlvbi1kZWxheSIsb25BbmltYXRpb25FbmQ6KCk9PntlKCgwLGsuaG0pKCkpfX0pLCgwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6InB1bHNlLXdoaXRlIGFuaW1hdGlvbi1kZWxheSJ9KV19KTt2YXIgbn07Y29uc3QgUmk9e25hbWU6IjFycmZhMnEiLHN0eWxlczoiJi5ib3RzLWFuaW1hdGlvbntzdmd7d2lsbC1jaGFuZ2U6dHJhbnNmb3JtO2FuaW1hdGlvbjpib3RzQW5pbWF0aW9uIDNzO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6MTt9QGtleWZyYW1lcyBib3RzQW5pbWF0aW9uezEyJXt0cmFuc2Zvcm06c2NhbGUoMSk7fTIwJXt0cmFuc2Zvcm06c2NhbGUoMS4yKTt9MjUle3RyYW5zZm9ybTpzY2FsZSgwLjkpO30yOSV7dHJhbnNmb3JtOnNjYWxlKDEuMDUpO30zMSV7dHJhbnNmb3JtOnNjYWxlKDEpO319fSJ9LGppPXtuYW1lOiJtOTlyNHkiLHN0eWxlczoibGVmdDoxMDAlIn07dmFyIFBpPWU9PntsZXR7b25DbGljazp0LGRpc2FibGVCdXR0b25BbmltYXRpb246bixhcmlhTGFiZWw6aSxvbkJsdXI6YSxzaG91bGREaXNwbGF5VG9vbHRpcDpvPSExfT1lO2NvbnN0e2lzQ2xpY2tlZDpzLGhhbmRsZUNsaWNrOmwsaGFuZGxlTW91c2VFbnRlcjpkfT1JaSgpLGM9KDAsci5kNCkoZT0+ZS5pc0JvdEFjdGl2ZSksdT0oMCxyLmQ0KShlPT5lLmFzc2lnbmVkT3BlcmF0b3JzKSxwPSgwLHIuZDQpKEMuTnkpLGY9IWMmJjA9PT11Lmxlbmd0aCYmIW4mJiFwO3JldHVybigwLFYuRkQpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToicmlwcGxlICIrKGY/ImJvdHMtYW5pbWF0aW9uIjoiIiksb25DbGljazooKT0+e2woKSx0KCl9LG9uQmx1cjphLG9uTW91c2VFbnRlcjpkLCJhcmlhLWxhYmVsIjppLGNzczpvP1tNaSxSaSxOaS50b29sdGlwQnV0dG9uKCldOltNaSxSaV0sY2hpbGRyZW46WygwLFYuWSkodXQuWUgse30pLGYmJigwLFYuWSkoT2kse30pLG8mJigwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6InRvb2x0aXAgIisocz8iY2xpY2tlZCI6IiIpLGNzczpbTmkudG9vbHRpcCxqaSwiIiwiIl0sY2hpbGRyZW46KDAseS5wdykoInN0YXJ0VGhlQm90IixudWxsLCJTdGFydCB0aGUgQm90Iil9KV19KX07dmFyIHppPWU9PigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6ImJvdHMtZHJvcGRvd24iLGNoaWxkcmVuOltlLmlzQm90QWN0aXZlJiYoMCxWLlkpKCJ1bCIse2NsYXNzTmFtZToiYm90cy1jYW5jZWwiLGNoaWxkcmVuOigwLFYuWSkoImxpIix7Y2hpbGRyZW46KDAsVi5GRCkoInNwYW4iLHt0YWJJbmRleDoiMCIsb25DbGljazplLm9uQ2FuY2VsQm90Q2xpY2ssb25LZXlVcDp0PT57IkVudGVyIiE9PXQua2V5JiYxMyE9PXQua2V5Q29kZXx8ZS5vbkNhbmNlbEJvdENsaWNrKCl9LG9uRm9jdXM6ZS5vbkJvdEZvY3VzLG9uQmx1cjplLm9uQm90Qmx1cixyb2xlOiJidXR0b24iLGNoaWxkcmVuOlsoMCxWLlkpKHV0LmJtLHt9KSwiICIsKDAseS5wdykoInN0YXJ0T3ZlciIsbnVsbCwiU3RhcnQgb3ZlciIpXX0pfSl9KSwhZS5pc0JvdEFjdGl2ZSYmKDAsVi5ZKSgidWwiLHtjaGlsZHJlbjooMCxWLlkpKCJsaSIse2NoaWxkcmVuOigwLFYuRkQpKCJzcGFuIix7b25DbGljazooKT0+e2Uub25Cb3RDbGljaygpfSxvbktleVVwOnQ9PnsiRW50ZXIiIT09dC5rZXkmJjEzIT09dC5rZXlDb2RlfHxlLm9uQm90Q2xpY2soKX0sb25Gb2N1czplLm9uQm90Rm9jdXMsb25CbHVyOmUub25Cb3RCbHVyLHJvbGU6ImJ1dHRvbiIsdGFiSW5kZXg6ZS5pc0JvdEFjdGl2ZT8iLTEiOiIwIixjaGlsZHJlbjpbKDAsVi5ZKSh1dC5RNSx7fSksIiAiLCgwLHkucHcpKCJzdGFydFRoZUJvdCIsbnVsbCwiU3RhcnQgdGhlIEJvdCIpXX0pfSl9KV19KTt2YXIgTGk9KCk9Pntjb25zdFtlLHRdPSgwLGEudXNlU3RhdGUpKCExKSxuPSgwLHIuZDQpKGU9PmUuYm90cyksaT0oMCxyLmQ0KShlPT5lLmlzQm90QWN0aXZlKSxvPSgwLHIuZDQpKGU9PmUuZGlzYWJsZUJvdHNCdXR0b25BbmltYXRpb24pLHM9KDAsci53QSkoKSx7aXNOZXdTa2luOmx9PSgwLHAuQSkoKSxkPSgpPT4haSYmKHMoKDAsay5xYm8pKCkpLHQoITEpLCEwKTtpZighbnx8MD09PW4ubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IGM9ZT8oMCx5LnB3KSgiY2xvc2VCb3RzTGF1bmNoZXIiLG51bGwsIkNsb3NlIEJvdHMgTGF1bmNoZXIiKTooMCx5LnB3KSgib3BlbkJvdHNMYXVuY2hlciIsbnVsbCwiT3BlbiBCb3RzIExhdW5jaGVyIik7cmV0dXJuIGw/KDAsVi5ZKShQaSx7b25DbGljazpkLGRpc2FibGVCdXR0b25BbmltYXRpb246byxhcmlhTGFiZWw6YyxzaG91bGREaXNwbGF5VG9vbHRpcDohMH0pOigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKFBpLHtvbkJsdXI6KCk9Pnt0KCExKX0sb25DbGljazooKT0+e3MoKDAsay5IemgpKCExKSksdChlPT4hZSkscygoMCxrLnBPNikobHQuWC5ib3RzQnV0dG9uQ2xpY2tlZCkpfSxkaXNhYmxlQnV0dG9uQW5pbWF0aW9uOm8sYXJpYUxhYmVsOmN9KSwoMCxWLlkpKCQse2luOmUsY2xhc3NOYW1lczoiYm90c0xpc3RGYWRlIixjaGlsZHJlbjooMCxWLlkpKHppLHtvbkJvdENsaWNrOmQsb25Cb3RGb2N1czooKT0+e3QoITApfSxvbkJvdEJsdXI6KCk9Pnt0KCExKX0sb25DYW5jZWxCb3RDbGljazooKT0+e3MoKDAsay5wTzYpKGx0LlguYm90Q2FuY2VsZWQpKSxzKCgwLGsuTnMyKSgpKSx0KCExKX0saXNCb3RBY3RpdmU6aX0pfSldfSl9O2NvbnN0IFVpPSgpPT4oMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6ImVtb2ppLXdyYXBwZXIiLGNoaWxkcmVuOigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToiZW1vamktbWFydCJ9KX0pLEJpPWEubGF6eSgoKT0+bi5lKDE4MSkudGhlbihuLmJpbmQobiwyMjgwKSkpO3ZhciBIaT1lPT4oMCxWLlkpKERpLHtvbkRpZENhdGNoOmUuaGFuZGxlRW1vamlQYW5lbCxjaGlsZHJlbjooMCxWLlkpKGEuU3VzcGVuc2Use2ZhbGxiYWNrOigwLFYuWSkoVWkse30pLGNoaWxkcmVuOigwLFYuWSkoQmkse29uRW1vamlDbGljazplLm9uRW1vamlDbGljayxpc01vYmlsZTplLmlzTW9iaWxlfSl9KX0pO2NvbnN0IHFpPXtuYW1lOiJycTV0MXkiLHN0eWxlczoibWFyZ2luLXJpZ2h0OjBweDtmbG9hdDpyaWdodDtkaXNwbGF5OmZsZXg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6Izg4OTRhYjtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjEwcHg7LyogQG5vZmxpcCAqL2RpcmVjdGlvbjpsdHI7c3BhbnthbGlnbi1zZWxmOmNlbnRlcjsvKiBAbm9mbGlwICovbWFyZ2luLXJpZ2h0OjhweDt9In0sVmk9e25hbWU6IjZkYm10ZCIsc3R5bGVzOiJzdmd7d2lkdGg6MTcxcHg7fSJ9LCRpPXtuYW1lOiIxNWhkd2J1IixzdHlsZXM6InN2Z3t3aWR0aDoxMTlweDt9In0sV2k9e25hbWU6IjdrOHVoZiIsc3R5bGVzOiJtYXJnaW4tcmlnaHQ6MHB4O2Zsb2F0OnJpZ2h0Oy8qIEBub2ZsaXAgKi9kaXJlY3Rpb246bHRyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtpbWd7b2JqZWN0LWZpdDpjb250YWluO21heC13aWR0aDoxMjVweDttYXgtaGVpZ2h0OjMwcHg7fSJ9O3ZhciBLaT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx0PSgwLHIuZDQpKGU9PmUucHVibGljS2V5KSxuPSgwLHIuZDQpKGU9PmUucGxhdGZvcm0pLGk9KDAsci5kNCkoZT0+ZS5pc01vYmlsZSksYT0oMCxyLmQ0KShDLlR3KSxvPSgwLHIuZDQpKEMuSEUpLHM9KDAsci5kNCkoQy5aaCksbD0oMCxmLmxlKSgpLGQ9ISgwLGYuSFApKHQpO2lmKG8pcmV0dXJuKDAsVi5ZKSgiZGl2Iix7Y2hpbGRyZW46KDAsVi5ZKSgic3BhbiIse2NzczpXaSxjaGlsZHJlbjooMCxWLlkpKCJpbWciLHtzcmM6byxhbHQ6IkNvbXBhbnkgbG9nbyIsb25FcnJvcjooKT0+e2UoKDAsay51T3kpKHtjdXN0b21CcmFuZGluZzoiIn0pKX19KX0pfSk7Y29uc3QgYz1zP3V0LnRFOnV0LlFULHU9W3FpLHM/Vmk6JGldLHA9YGh0dHBzOi8vd3d3LnRpZGlvLmNvbS8ke3M/InBvd2VyZWQtYnktbHlybyI6InBvd2VyZWQtYnktdGlkaW8ifS8/cGxhdGZvcm09JHtufSZwcm9qZWN0PSR7dH0mZGV2aWNlPSR7aT8ibW9iaWxlIjoiZGVza3RvcCJ9JHtkP2AmdXRtX3NvdXJjZT1wbHVnaW5fcmVmJnV0bV9tZWRpdW09d2lkZ2V0X3Y0JnV0bV9jYW1wYWlnbj1wbHVnaW5fcmVmJnV0bV9yZWZlcnJlcj0ke2x9YDoiIn1gO3JldHVybiBhPygwLFYuWSkoImRpdiIse2NoaWxkcmVuOigwLFYuWSkoInNwYW4iLHtjc3M6dSxjaGlsZHJlbjooMCxWLlkpKGMse30pfSl9KTooMCxWLlkpKCJkaXYiLHtjaGlsZHJlbjooMCxWLlkpKCJhIix7Y3NzOnUsaHJlZjpwLHRhcmdldDoiX2JsYW5rIixyZWw6Im5vb3BlbmVyIG5vcmVmZXJyZXIiLCJhcmlhLWxhYmVsIjooMCx5LnB3KSgicG93ZXJlZEJ5IixudWxsLCJQb3dlcmVkIGJ5IFRpZGlvLiIpLGNoaWxkcmVuOigwLFYuWSkoYyx7fSl9KX0pfTtjbGFzcyBHaSBleHRlbmRzIGEuQ29tcG9uZW50e3JlbmRlcigpe3N3aXRjaCh0aGlzLnByb3BzLmV4dGVuc2lvbil7Y2FzZSJkb2MiOmNhc2UiZG9jeCI6cmV0dXJuKDAsVi5ZKSh1dC5KQSx7fSk7Y2FzZSJmbHYiOnJldHVybigwLFYuWSkodXQuTnAse30pO2Nhc2UibXBnIjpjYXNlIm1wNCI6Y2FzZSJhdmkiOnJldHVybigwLFYuWSkodXQuZnQse30pO2Nhc2UicGRmIjpyZXR1cm4oMCxWLlkpKHV0Lnp6LHt9KTtjYXNlInR4dCI6Y2FzZSJydGYiOnJldHVybigwLFYuWSkodXQuRHkse30pO2Nhc2Uid21hIjpjYXNlIm1wMyI6cmV0dXJuKDAsVi5ZKSh1dC5BSCx7fSk7Y2FzZSJ4bHMiOmNhc2UieGxzeCI6Y2FzZSJjc3YiOnJldHVybigwLFYuWSkodXQubWIse30pO2Nhc2UicG5nIjpjYXNlImpwZyI6Y2FzZSJqcGVnIjpjYXNlImdpZiI6cmV0dXJuKDAsVi5ZKSh1dC5FOSx7fSk7ZGVmYXVsdDpyZXR1cm4gbnVsbH19fXZhciBYaT1HaTtjb25zdCBRaT0yNCxaaT17ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6OCx3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixwYWRkaW5nOiI4cHggMTJweCIsYmFja2dyb3VuZENvbG9yOiIjZmZmIixib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpIixib3JkZXI6IjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IsICNEM0RCRTUpIiwiPiBzdmciOnt3aWR0aDpRaSxoZWlnaHQ6UWksZmxleFNocmluazowfX0sSmk9e25hbWU6Im8ybHhpYSIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7Z2FwOjhweDtwYWRkaW5nLXRvcDoxNnB4O292ZXJmbG93LXg6YXV0bztzY3JvbGxiYXItY29sb3I6I2FjYjhjYiB0cmFuc3BhcmVudDtzY3JvbGxiYXItd2lkdGg6dGhpbjsmOjotd2Via2l0LXNjcm9sbGJhcnt3aWR0aDoxMnB4O30mOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntib3JkZXI6M3B4IHNvbGlkICNlZmYyZjY7Ym9yZGVyLXJhZGl1czo2cHg7YmFja2dyb3VuZC1jb2xvcjojYWNiOGNiO30ifSxlYT0oMCxkLkFIKSh7cG9zaXRpb246InJlbGF0aXZlIixmbGV4U2hyaW5rOjAsd2lkdGg6NTIsaGVpZ2h0OjUyfSwiIiwiIiksdGE9KDAsZC5BSCkoe3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLGJvcmRlclJhZGl1czoidmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgMTJweCkiLGJvcmRlcjoiMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvciwgI0QzREJFNSkiLG92ZXJmbG93OiJoaWRkZW4iLCIubG9hZGVyLWljb24uY2lyY3VsYXIiOnt3aWR0aDpRaSxoZWlnaHQ6UWkscG9zaXRpb246InJlbGF0aXZlIixsZWZ0OjAsdG9wOjB9fSwiIiwiIiksbmE9e25hbWU6InE1ajkwOCIsc3R5bGVzOiJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y292ZXI7ZGlzcGxheTpibG9jayJ9LGlhPXtuYW1lOiIxMThva3NiIixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIn0sYWE9KDAsZC5BSCkoe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIix0b3A6LTYscmlnaHQ6LTYsaGVpZ2h0OjI4LHdpZHRoOjI4LGJvcmRlclJhZGl1czoiNTAlIixib3hTaGFkb3c6IjBweCAycHggNnB4IDBweCAjMDAxYjQ3MWYiLGJhY2tncm91bmQ6IiNmZmYiLHN2Zzp7d2lkdGg6MjAsaGVpZ2h0OjIwLGZpbGw6IiM4ODk0YWIifSwiJjpob3ZlciI6e2JhY2tncm91bmRDb2xvcjoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1iYWNrZ3JvdW5kKSIsc3ZnOntmaWxsOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKSJ9fX0sIiIsIiIpLG9hPSgwLGQuQUgpKFppLHtwb3NpdGlvbjoicmVsYXRpdmUiLGZsZXhTaHJpbms6MCx3aWR0aDoxOTIsaGVpZ2h0OjUyLGJveFNpemluZzoiYm9yZGVyLWJveCIsIi5sb2FkZXItaWNvbi5jaXJjdWxhciI6e3dpZHRoOlFpLGhlaWdodDpRaSxwb3NpdGlvbjoicmVsYXRpdmUiLGxlZnQ6MH19LCIiLCIiKSxyYT0oMCxkLkFIKShaaSx7cG9zaXRpb246InJlbGF0aXZlIixmbGV4U2hyaW5rOjAsd2lkdGg6MjIwLGhlaWdodDo1MiwiLmFsZXJ0LWljb24iOnt3aWR0aDoyMCxoZWlnaHQ6MjAsZmlsbDoiI2Y2MzAzYSJ9fSwiIiwiIiksc2E9e25hbWU6IjFiYnV3bmYiLHN0eWxlczoiZm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MTRweDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTotd2Via2l0LWJveDstd2Via2l0LWxpbmUtY2xhbXA6Mjstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7d29yZC1icmVhazpicmVhay13b3JkO2NvbG9yOnZhcigtLXRleHQtY29sb3IsICMwNjEzMkIpIn0sbGE9e25hbWU6ImxxOWJxNiIsc3R5bGVzOiJjb2xvcjojQUNCOENCIn0sZGE9e25hbWU6ImQ1OTlxIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweDtmbGV4OjE7bWluLXdpZHRoOjAifSxjYT17bmFtZToiMWlnbHBpcSIsc3R5bGVzOiJjb2xvcjojZjYzMDNhO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjE0cHgifTt2YXIgdWE9ZT0+e2xldHtvbkNsaWNrOnR9PWU7cmV0dXJuKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6YWEsb25DbGljazp0LCJhcmlhLWxhYmVsIjooMCx5LnB3KSgicmVtb3ZlQXR0YWNobWVudCIsbnVsbCwiUmVtb3ZlIGF0dGFjaG1lbnQiKSxjaGlsZHJlbjooMCxWLlkpKHV0LmJtLHt9KX0pfTt2YXIgcGE9ZT0+e2xldHthdHRhY2htZW50OnQsb25SZW1vdmU6bn09ZTtjb25zdHtpZDppLHVwbG9hZGVkVGh1bWI6byxmaWxlTmFtZTpyLHVwbG9hZFN0YXR1czpzLGVycm9yTWVzc2FnZTpsfT10LGQ9KDAsYS51c2VDYWxsYmFjaykoKCk9PntuKGkpfSxbaSxuXSksYz0idXBsb2FkaW5nIj09PXMsdT0iZXJyb3IiPT09cyxwPSgwLGEudXNlTWVtbykoKCk9PigwLHJpLlFDKShyfHwiIil8fCIiLFtyXSksZj0oMCxhLnVzZU1lbW8pKCgpPT4oMCxyaS5pVCkocCksW3BdKTtyZXR1cm4gdT8oMCxWLkZEKSgiZGl2Iix7Y3NzOnJhLGNoaWxkcmVuOlsoMCxWLlkpKHV0LkZjLHt9KSwoMCxWLlkpKCJkaXYiLHtjc3M6ZGEsY2hpbGRyZW46bCYmKDAsVi5ZKSgic3BhbiIse2NzczpjYSxjaGlsZHJlbjpsfSl9KSwoMCxWLlkpKHVhLHtvbkNsaWNrOmR9KV19KToiaW1hZ2UiPT09Zj8oMCxWLkZEKSgiZGl2Iix7Y3NzOmVhLGNoaWxkcmVuOlsoMCxWLlkpKCJkaXYiLHtjc3M6dGEsY2hpbGRyZW46Yz8oMCxWLlkpKCJkaXYiLHtjc3M6aWEsY2hpbGRyZW46KDAsVi5ZKSh1dC50Uix7fSl9KTooMCxWLlkpKCJpbWciLHtzcmM6byxhbHQ6cixjc3M6bmF9KX0pLCgwLFYuWSkodWEse29uQ2xpY2s6ZH0pXX0pOmM/KDAsVi5GRCkoImRpdiIse2NzczpvYSxjaGlsZHJlbjpbKDAsVi5ZKSh1dC50Uix7fSksKDAsVi5ZKSgic3BhbiIse2Nzczpbc2EsbGEsIiIsIiJdLGNoaWxkcmVuOnJ9KV19KTooMCxWLkZEKSgiZGl2Iix7Y3NzOm9hLGNoaWxkcmVuOlsoMCxWLlkpKFhpLHtleHRlbnNpb246cH0pLCgwLFYuWSkoInNwYW4iLHtjc3M6c2EsY2hpbGRyZW46cn0pLCgwLFYuWSkodWEse29uQ2xpY2s6ZH0pXX0pfTt2YXIgZmE9ZT0+e2xldHthdHRhY2htZW50czp0LG9uUmVtb3ZlOm59PWU7cmV0dXJuIDA9PT10Lmxlbmd0aD9udWxsOigwLFYuWSkoImRpdiIse2NzczpKaSxjaGlsZHJlbjp0Lm1hcChlPT4oMCxWLlkpKHBhLHthdHRhY2htZW50OmUsb25SZW1vdmU6bn0sZS5pZCkpfSl9O2NvbnN0IG1hPXtuYW1lOiIxNmZxMm16IixzdHlsZXM6ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDtmb250LXNpemU6MTJweDtjb2xvcjojNjQ3NDkxIn0saGE9e25hbWU6ImFtMXg4OSIsc3R5bGVzOiJsZWZ0OjAlIn0sZ2E9ZT0+KDAsZC5BSCkoe2ZsZXg6IjAgMCAzOHB4Iixjb2xvcjplPyIjQjFCOUM4IjoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcikiLHRyYW5zZm9ybToidHJhbnNsYXRlWCg4cHgpIiwiLmdyaWQtbGF5b3V0ICYiOntmbGV4OiIwIDAgMjRweCIsY29sb3I6ZT8iIzY0NzQ5MTgwIjoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcikiLHRyYW5zZm9ybToidHJhbnNsYXRlWCgwcHgpIn0sIi5tb2JpbGUgJiI6e2ZsZXg6IjAgMCA0NHB4Iix0cmFuc2Zvcm06InRyYW5zbGF0ZVgoMTBweCkifX0sIiIsIiIpO3ZhciBiYT1lPT57bGV0e2Rpc2FibGVkOnR9PWU7Y29uc3Qgbj0oMCxyLndBKSgpLGk9KDAsci5kNCkoQy5vNCk7cmV0dXJuKDAsVi5GRCkoImJ1dHRvbiIse2lkOiJzZW5kLWJ1dHRvbiIsdHlwZToiYnV0dG9uIixvbkNsaWNrOigpPT57aXx8bigoMCxrLnpycykoITApKX0sZGlzYWJsZWQ6dCxjc3M6W01pLGdhKHQpLE5pLnRvb2x0aXBCdXR0b24oKSwiIiwiIl0sY2hpbGRyZW46WygwLFYuWSkodXQucXgse30pLCgwLFYuRkQpKCJzcGFuIix7Y2xhc3NOYW1lOiJ0b29sdGlwIixjc3M6W05pLnRvb2x0aXAsaGEsIiIsIiJdLGNoaWxkcmVuOlsoMCx5LnB3KSgic2VuZCIsbnVsbCwiU2VuZCIpLCgwLFYuRkQpKCJkaXYiLHtjc3M6bWEsY2hpbGRyZW46WygwLHkucHcpKCJzaG9ydGN1dCIsbnVsbCwiU2hvcnRjdXQiKSwiICIsKDAsVi5ZKSh1dC54eSx7fSldfSldfSldfSl9O2NvbnN0IHZhPWcuVEgseGE9e25hbWU6InVoNXhqYyIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4In0seWE9KGUsdCk9PmZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj0oMCxoLmJpKSgpO2lmKCFuPy5jcmVhdGVFbGVtZW50KXJldHVybiAwO2NvbnN0IGk9KCJPZmZzY3JlZW5DYW52YXMiaW4gd2luZG93P25ldyBPZmZzY3JlZW5DYW52YXMoNTAwLDEwMCk6bi5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSkuZ2V0Q29udGV4dCgiMmQiKTtyZXR1cm4gaS5mb250PXQsTWF0aC5jZWlsKGkubWVhc3VyZVRleHQoZSkud2lkdGgpfShlLCcxN3B4ICJNdWxpc2giLCBzYW5zLXNlcmlmJyk+dDtmdW5jdGlvbiB3YShlKXtjb25zdCB0PWU/LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIHQ/dC5zaGFkb3dSb290P3dhKHQuc2hhZG93Um9vdCk6dDpudWxsfWNvbnN0IGthPWU9Pnt0cnl7bGV0IHQ9ZS50YXJnZXQ7aWYodD8uc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudCl7Zm9yKDt0Py5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50Oyl0PXQuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ0YXJnZXQiLHt2YWx1ZTp0LHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUuc3JjRWxlbWVudCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNyY0VsZW1lbnQiLHt2YWx1ZTp0LHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pfX1jYXRjaHt9fTtjbGFzcyBBYSBleHRlbmRzIGEuQ29tcG9uZW50e2NvbnN0cnVjdG9yKCl7dmFyIGU7c3VwZXIoLi4uYXJndW1lbnRzKSxlPXRoaXMsKDAsaS5BKSh0aGlzLCJzdGF0ZSIse2lucHV0OiIiLGlucHV0Um93czoxLGlzUGxhY2Vob2xkZXJUb0xvbmc6ITF9KSwoMCxpLkEpKHRoaXMsImlucHV0UmVmIixudWxsKSwoMCxpLkEpKHRoaXMsImluaXRpYWxJbnB1dFNjcm9sbEhlaWdodCIsMCksKDAsaS5BKSh0aGlzLCJvbGRJbnB1dFJvd3MiLDEpLCgwLGkuQSkodGhpcywib2xkUGxhY2Vob2xkZXIiLCIiKSwoMCxpLkEpKHRoaXMsImlzQ29tcG9zaW5nIiwhMSksKDAsaS5BKSh0aGlzLCJ3aW5kb3dSZWYiLCgwLGguQUwpKCkpLCgwLGkuQSkodGhpcywib3NOYW1lIiwoMCxmLkRqKSgpLm5hbWUudG9Mb3dlckNhc2UoKSksKDAsaS5BKSh0aGlzLCJvcmlnaW5hbEFjdGl2ZUVsZW1lbnREZXNjcmlwdG9yIixudWxsKSwoMCxpLkEpKHRoaXMsInNldElucHV0UmVmIixlPT57dGhpcy5pbnB1dFJlZj1lfSksKDAsaS5BKSh0aGlzLCJvbklucHV0Q2hhbmdlIixlPT57Y29uc3QgdD10aGlzLnN0YXRlLmlucHV0Lmxlbmd0aCxuPWUudGFyZ2V0LnZhbHVlO3RoaXMuc2V0U3RhdGUoe2lucHV0Om59LCgpPT57dGhpcy5hZGp1c3RJbnB1dFJvd3ModCl9KSx0aGlzLmRpc3BhdGNoVmlzaXRvcklzVHlwaW5nKG4sdGhpcy5zdGF0ZS5pbnB1dCl9KSwoMCxpLkEpKHRoaXMsImFkanVzdElucHV0Um93cyIsZnVuY3Rpb24oKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtpZihlLm9sZElucHV0Um93cz1lLnN0YXRlLmlucHV0Um93cywiIj09PWUuc3RhdGUuaW5wdXQmJiFlLnN0YXRlLmlzUGxhY2Vob2xkZXJUb0xvbmcpcmV0dXJuIGUuc2V0U3RhdGUoe2lucHV0Um93czoxfSksMT09PWUub2xkSW5wdXRSb3dzfHxlLnByb3BzLmlzTW9iaWxlfHxlLnByb3BzLmRpc3BhdGNoKCgwLGsub09tKSh0dC5OTy5DSEFUX1NJWkVfMSkpLCEwO2lmKDM9PT1lLnN0YXRlLmlucHV0Um93cyYmbnVsbCE9PXQmJmUuc3RhdGUuaW5wdXQubGVuZ3RoPnQpcmV0dXJuITA7Y29uc3Qgbj1lLmdldENhbGN1bGF0ZWRJbnB1dFJvd3MoKTtpZihuIT09ZS5vbGRJbnB1dFJvd3MmJiFlLnByb3BzLmlzTW9iaWxlKXtjb25zdCB0PXsxOnR0Lk5PLkNIQVRfU0laRV8xLDI6dHQuTk8uQ0hBVF9TSVpFXzIsMzp0dC5OTy5DSEFUX1NJWkVfM307ZS5wcm9wcy5kaXNwYXRjaCgoMCxrLm9PbSkodFtuXXx8dHQuTk8uQ0hBVF9TSVpFXzEpKX1yZXR1cm4gZS5zZXRTdGF0ZSh7aW5wdXRSb3dzOm59KSwhMH0pLCgwLGkuQSkodGhpcywiZ2V0Q2FsY3VsYXRlZElucHV0Um93cyIsKCk9PntpZighdGhpcy5pbnB1dFJlZilyZXR1cm4gMTtsZXQgZT1NYXRoLmNlaWwoKHRoaXMuaW5wdXRSZWYuc2Nyb2xsSGVpZ2h0LXRoaXMuaW5pdGlhbElucHV0U2Nyb2xsSGVpZ2h0KS92YSkrMTtyZXR1cm4gdGhpcy5wcm9wcy5pc01vYmlsZSYmZT4yPzI6KGU+Mz9lPTM6dGhpcy5zdGF0ZS5pc1BsYWNlaG9sZGVyVG9Mb25nJiZlPDI/ZT0yOmU8MSYmKGU9MSksZSl9KSwoMCxpLkEpKHRoaXMsInJlc3RvcmVNZXNzYWdlIiwoKT0+e2NvbnN0e2Jsb2NrZWRNZXNzYWdlOmV9PXRoaXMucHJvcHM7c2V0VGltZW91dCgoKT0+e3RoaXMuc2V0U3RhdGUoe2lucHV0OmV8fCIifSwoKT0+e3RoaXMuYWRqdXN0SW5wdXRSb3dzKCl9KX0sMCksdGhpcy5wcm9wcy5kaXNwYXRjaCgoMCxrLlM4aCkoKSl9KSwoMCxpLkEpKHRoaXMsIm9uQ29tcG9zaXRpb25TdGFydCIsKCk9Pnt0aGlzLmlzQ29tcG9zaW5nPSEwfSksKDAsaS5BKSh0aGlzLCJvbkNvbXBvc2l0aW9uRW5kIiwoKT0+e3NldFRpbWVvdXQoKCk9Pnt0aGlzLmlzQ29tcG9zaW5nPSExfSwwKX0pLCgwLGkuQSkodGhpcywib25LZXlEb3duIixlPT57Y29uc3QgdD0iRW50ZXIiPT09ZS5rZXl8fDEzPT09ZS5rZXlDb2RlO3JldHVybiEoIXR8fHQmJmUuc2hpZnRLZXl8fHRoaXMucHJvcHMubmV3TWVzc2FnZURpc2FibGVkfHxlLm5hdGl2ZUV2ZW50LmlzQ29tcG9zaW5nfHx0aGlzLmlzQ29tcG9zaW5nfHwyMjk9PT1lLmtleUNvZGUpJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucHJvcHMuZGlzcGF0Y2goKDAsay56cnMpKCEwKSksITApfSksKDAsaS5BKSh0aGlzLCJvbkNsaWNrIiwoKT0+e3RoaXMucHJvcHMubmV3TWVzc2FnZURpc2FibGVkJiYoMCxoLkJ2KSgpfSksKDAsaS5BKSh0aGlzLCJkaXNwYXRjaFZpc2l0b3JJc1R5cGluZyIsKGUsdCk9Pntjb25zdCBuPWUudHJpbSgpLGk9dC50cmltKCk7cmV0dXJuKCIiIT09bnx8biE9PWkpJiYodGhpcy5wcm9wcy5kaXNwYXRjaCgoMCxrLnVFaSkobikpLCEwKX0pLCgwLGkuQSkodGhpcywic2VuZE1lc3NhZ2UiLCgpPT57Y29uc3R7ZGlzcGF0Y2g6ZSxpc0Vtb2ppUGFuZWxWaXNpYmxlOnQsdHJpZ2dlclNoYWtlOm4scGVuZGluZ0F0dGFjaG1lbnRzOml9PXRoaXMucHJvcHM7bGV0IGE9dGhpcy5zdGF0ZS5pbnB1dDthPWEudHJpbSgpO2NvbnN0IG89IiIhPT1hLHI9KGk/aS5maWx0ZXIoZT0+InVwbG9hZGVkIj09PWUudXBsb2FkU3RhdHVzKTpbXSkubGVuZ3RoPjA7cmV0dXJuKCFpfHwhaS5zb21lKGU9PiJ1cGxvYWRpbmciPT09ZS51cGxvYWRTdGF0dXMpKSYmKG98fHI/KG8mJmUoKDAsay5HOGMpKGEpKSxyJiZlKCgwLGsuRTNIKSgpKSx0aGlzLnNldFN0YXRlKHtpbnB1dDoiIn0pLHQmJmUoKDAsay5IemgpKCExKSksdGhpcy5zZXRTdGF0ZSh7aW5wdXRSb3dzOjF9KSwhMCk6KG4oKSwhMSkpfSksKDAsaS5BKSh0aGlzLCJmaXhXZWJ2aWV3VG91Y2hBcmVhcyIsKCk9Pnt0cnl7dGhpcy5wcm9wcy5pc01vYmlsZSYmImlvcyI9PT10aGlzLm9zTmFtZSYmdGhpcy53aW5kb3dSZWYmJih0aGlzLndpbmRvd1JlZi5wYXJlbnQ/LnNjcm9sbFRvKHRoaXMud2luZG93UmVmLnBhcmVudC5zY3JvbGxYLHRoaXMud2luZG93UmVmLnBhcmVudC5zY3JvbGxZLTEpLHRoaXMud2luZG93UmVmLnBhcmVudD8uc2Nyb2xsVG8odGhpcy53aW5kb3dSZWYucGFyZW50LnNjcm9sbFgsdGhpcy53aW5kb3dSZWYucGFyZW50LnNjcm9sbFkrMSkpfWNhdGNoe319KSwoMCxpLkEpKHRoaXMsIm9uUGFzdGUiLGU9PntpZighdGhpcy5wcm9wcy5maWxlVXBsb2FkRW5hYmxlZClyZXR1cm47aWYoMD09PWUuY2xpcGJvYXJkRGF0YT8uZmlsZXM/Lmxlbmd0aClyZXR1cm47ZS5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IHQ9QXJyYXkuZnJvbShlLmNsaXBib2FyZERhdGEuZmlsZXMpWzBdO3RoaXMucHJvcHMubmV3TWVzc2FnZURpc2FibGVkJiZ0aGlzLnByb3BzLmRpc3BhdGNoKCgwLGsuUzc5KSgoMCx5LnB3KSgibmV3TWVzc2FnZURpc2FibGVkQWxlcnQiLG51bGwsIlBsZWFzZSBlbnRlciB5b3VyIGVtYWlsIGZpcnN0LiIpKSksdGhpcy5wcm9wcy5kaXNwYXRjaCgoMCxrLlNCUSkoZXQoKSgpLHQpKX0pLCgwLGkuQSkodGhpcywiZml4QWN0aXZlRWxlbWVudCIsKCk9Pnt0cnl7Y29uc3QgZT13YSh3aW5kb3cucGFyZW50LmRvY3VtZW50KSx0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LnBhcmVudC5Eb2N1bWVudC5wcm90b3R5cGUsImFjdGl2ZUVsZW1lbnQiKTt0aGlzLm9yaWdpbmFsQWN0aXZlRWxlbWVudERlc2NyaXB0b3I9dHx8bnVsbCxPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LnBhcmVudC5kb2N1bWVudCwiYWN0aXZlRWxlbWVudCIse3ZhbHVlOmUsd3JpdGFibGU6ITEsY29uZmlndXJhYmxlOiEwfSl9Y2F0Y2h7fX0pLCgwLGkuQSkodGhpcywicmV2ZXJ0QWN0aXZlRWxlbWVudCIsKCk9Pnt0cnl7dGhpcy5vcmlnaW5hbEFjdGl2ZUVsZW1lbnREZXNjcmlwdG9yJiZPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LnBhcmVudC5kb2N1bWVudCwiYWN0aXZlRWxlbWVudCIsdGhpcy5vcmlnaW5hbEFjdGl2ZUVsZW1lbnREZXNjcmlwdG9yKX1jYXRjaHt9fSksKDAsaS5BKSh0aGlzLCJvbkZvY3VzIiwoKT0+e3RoaXMucHJvcHMuaXNOZXdTa2luJiYodGhpcy5maXhBY3RpdmVFbGVtZW50KCksKCgpPT57dHJ5e3dpbmRvdy5wYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsa2EsITApLHdpbmRvdy5wYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLGthLCEwKSx3aW5kb3cucGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNzIixrYSwhMCksd2luZG93LnBhcmVudC5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmVpbnB1dCIsa2EsITApfWNhdGNoe319KSgpKSwhdGhpcy5wcm9wcy5uZXdNZXNzYWdlRGlzYWJsZWQmJnRoaXMucHJvcHMuaXNNb2JpbGUmJnRoaXMucHJvcHMuZGlzcGF0Y2goKDAsay5FM1MpKCEwKSl9KSwoMCxpLkEpKHRoaXMsIm9uQmx1ciIsZT0+e3RoaXMucHJvcHMuaXNOZXdTa2luJiYodGhpcy5yZXZlcnRBY3RpdmVFbGVtZW50KCksKCgpPT57dHJ5e3dpbmRvdy5wYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsa2EsITApLHdpbmRvdy5wYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLGthLCEwKSx3aW5kb3cucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXByZXNzIixrYSwhMCksd2luZG93LnBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJiZWZvcmVpbnB1dCIsa2EsITApfWNhdGNoe319KSgpKSwhdGhpcy5wcm9wcy5uZXdNZXNzYWdlRGlzYWJsZWQmJnRoaXMucHJvcHMuaXNNb2JpbGUmJiJzZW5kLWJ1dHRvbiIhPT1lLnJlbGF0ZWRUYXJnZXQ/LmlkJiZzZXRUaW1lb3V0KCgpPT57dGhpcy5wcm9wcy5kaXNwYXRjaCgoMCxrLkUzUykoITEpKSx0aGlzLmZpeFdlYnZpZXdUb3VjaEFyZWFzKCl9LDEwMCl9KX1jb21wb25lbnREaWRNb3VudCgpe2lmKHNldFRpbWVvdXQoKCk9Pnt0aGlzLmlucHV0UmVmJiYodGhpcy5pbml0aWFsSW5wdXRTY3JvbGxIZWlnaHQ9dGhpcy5pbnB1dFJlZi5zY3JvbGxIZWlnaHQpfSwwKSxzZXRUaW1lb3V0KCgpPT57IXRoaXMucHJvcHMubmV3TWVzc2FnZURpc2FibGVkJiZudWxsIT09dGhpcy5wcm9wcy5ibG9ja2VkTWVzc2FnZSYmdGhpcy5yZXN0b3JlTWVzc2FnZSgpfSwwKSx0aGlzLmlucHV0UmVmKXtjb25zdHtwbGFjZWhvbGRlcjplLG9mZnNldFdpZHRoOnR9PXRoaXMuaW5wdXRSZWY7dGhpcy5vbGRQbGFjZWhvbGRlcj1lLHlhKGUsdCkmJnRoaXMuc2V0U3RhdGUoe2lucHV0Um93czoyLGlzUGxhY2Vob2xkZXJUb0xvbmc6ITB9KX19c3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhlLHQpe3JldHVybiBlLm5ld01lc3NhZ2VFbW9qaT8oZS5kaXNwYXRjaCgoMCxrLmVTTCkoKSkse2lucHV0OnQuaW5wdXQrZS5uZXdNZXNzYWdlRW1vaml9KTplLmJsb2NrZWRNZXNzYWdlJiZlLm5ld01lc3NhZ2VEaXNhYmxlZD97aW5wdXQ6ZS5ibG9ja2VkTWVzc2FnZX06bnVsbH1jb21wb25lbnREaWRVcGRhdGUoZSl7aWYodGhpcy5wcm9wcy5zZW5kVmlzaXRvck1lc3NhZ2VGbGFnJiYhZS5zZW5kVmlzaXRvck1lc3NhZ2VGbGFnJiZ0aGlzLnNlbmRNZXNzYWdlKCksdGhpcy5pbnB1dFJlZil7Y29uc3R7cGxhY2Vob2xkZXI6ZSxvZmZzZXRXaWR0aDp0fT10aGlzLmlucHV0UmVmO3RoaXMub2xkUGxhY2Vob2xkZXIhPT1lJiYodGhpcy5vbGRQbGFjZWhvbGRlcj1lLHlhKGUsdCk/dGhpcy5zZXRTdGF0ZSh7aW5wdXRSb3dzOjIsaXNQbGFjZWhvbGRlclRvTG9uZzohMH0pOnRoaXMuc2V0U3RhdGUoe2lzUGxhY2Vob2xkZXJUb0xvbmc6ITF9KSl9bnVsbD09PXRoaXMucHJvcHMuYmxvY2tlZE1lc3NhZ2UmJm51bGwhPT1lLmJsb2NrZWRNZXNzYWdlJiZ0aGlzLnNldFN0YXRlKHtpbnB1dDoiIn0pfWNvbXBvbmVudFdpbGxVbm1vdW50KCl7Y29uc3R7aW5wdXQ6ZX09dGhpcy5zdGF0ZTsiIiE9PWUmJnRoaXMucHJvcHMuZGlzcGF0Y2goKDAsay5TOGgpKGUpKX1yZW5kZXIoKXtjb25zdHtsYXN0TWVzc2FnZTplLG5ld01lc3NhZ2VEaXNhYmxlZDp0LGhhc0Nvbm5lY3Rpb25Jc3N1ZXM6bixzaG93VXNlckRhdGFNb2RhbDppfT10aGlzLnByb3BzLGE9dGhpcy5wcm9wcy5wZW5kaW5nQXR0YWNobWVudHM/LnNvbWUoZT0+InVwbG9hZGluZyI9PT1lLnVwbG9hZFN0YXR1cyksbz10aGlzLnByb3BzLnBlbmRpbmdBdHRhY2htZW50cz8uc29tZShlPT4idXBsb2FkZWQiPT09ZS51cGxvYWRTdGF0dXMpLHI9IiI9PT10aGlzLnN0YXRlLmlucHV0JiYhb3x8YTtyZXR1cm4oMCxWLlkpKE9uLHt2YWx1ZTpbImNsaWNrVG9Qcm92aWRlRW1haWwiLCJvbmxpbmVNZXNzYWdlUGxhY2Vob2xkZXIiLCJoaXRUaGVCdXR0b25zIiwiZmlsbE91dFRoZUZvcm0iXSxjaGlsZHJlbjphPT57bGV0e2NsaWNrVG9Qcm92aWRlRW1haWw6byxvbmxpbmVNZXNzYWdlUGxhY2Vob2xkZXI6cyxoaXRUaGVCdXR0b25zOmwsZmlsbE91dFRoZUZvcm06ZH09YSxjPXM7cmV0dXJuIHQ/bj9jPXM6aSYmKGM9byk6KGU9PntpZighZSlyZXR1cm4hMTtjb25zdCB0PWUudHlwZT09PXJpLnRfLmNhcmRzJiYibnVtYmVyIiE9dHlwZW9mIGUub3BlcmF0b3JfaWQsbj1lLnF1aWNrUmVwbGllcyYmZS5xdWlja1JlcGxpZXMubGVuZ3RoPjAsaT1lLmJ1dHRvbnMmJmUuYnV0dG9ucy5sZW5ndGg+MDtyZXR1cm4hISh0fHxufHxpKX0pKGUpJiYhdGhpcy5wcm9wcy5pc0xhc3RNZXNzYWdlMjRoJiYoYz1sKSxlPy50eXBlPT09dHQuR28uRk9STSYmKGM9ZCksKDAsVi5GRCkoImRpdiIse2Nzczp4YSxjaGlsZHJlbjpbKDAsVi5ZKSgidGV4dGFyZWEiLHtpZDoibmV3LW1lc3NhZ2UtdGV4dGFyZWEiLHZhbHVlOnRoaXMuc3RhdGUuaW5wdXQsb25DaGFuZ2U6dGhpcy5vbklucHV0Q2hhbmdlLG9uS2V5RG93bjp0aGlzLm9uS2V5RG93bixvbkNvbXBvc2l0aW9uU3RhcnQ6dGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQsb25Db21wb3NpdGlvbkVuZDp0aGlzLm9uQ29tcG9zaXRpb25FbmQsb25DbGljazp0aGlzLm9uQ2xpY2sscmVmOnRoaXMuc2V0SW5wdXRSZWYscm93czp0aGlzLnN0YXRlLmlucHV0Um93cyxwbGFjZWhvbGRlcjpjLG9uRm9jdXM6dGhpcy5vbkZvY3VzLG9uQmx1cjp0aGlzLm9uQmx1cixyZWFkT25seTp0LGNsYXNzTmFtZTpgJHt0PyJkaXNhYmxlZCI6IiJ9ICR7dGhpcy5wcm9wcy5zaGFrZUNsYXNzTmFtZX1gLCJhcmlhLWxhYmVsIjooMCx5LnB3KSgibmV3TWVzc2FnZSIsbnVsbCwiTmV3IG1lc3NhZ2UiKSwiZGF0YS10ZXN0aWQiOiJuZXdNZXNzYWdlVGV4dGFyZWEiLG9uUGFzdGU6dGhpcy5vblBhc3RlLHN0eWxlOntwYWRkaW5nOiIxNnB4IDAifSxjc3M6aHQoQm9vbGVhbih0aGlzLnByb3BzLmlzTmV3U2tpbikpLnRleHQxNH0pLHRoaXMucHJvcHMuaXNOZXdTa2luPygwLFYuWSkoYmEse2Rpc2FibGVkOnJ9KTohciYmKDAsVi5ZKShiYSx7ZGlzYWJsZWQ6ITF9KV19KX19KX19Y29uc3QgQ2E9KDAsci5OZykoZT0+KHtuZXdNZXNzYWdlRW1vamk6ZS5uZXdNZXNzYWdlRW1vamksaXNNb2JpbGU6ZS5pc01vYmlsZSxzZW5kVmlzaXRvck1lc3NhZ2VGbGFnOmUuc2VuZFZpc2l0b3JNZXNzYWdlRmxhZyxpc0Vtb2ppUGFuZWxWaXNpYmxlOmUuaXNFbW9qaVBhbmVsVmlzaWJsZSxuZXdNZXNzYWdlRGlzYWJsZWQ6KDAsQy5vNCkoZSksYmxvY2tlZE1lc3NhZ2U6ZS5ibG9ja2VkTWVzc2FnZSxsYXN0TWVzc2FnZTooMCxDLnN5KShlKSxpc0xhc3RNZXNzYWdlMjRoOigwLEMuajYpKGUpLGhhc0Nvbm5lY3Rpb25Jc3N1ZXM6KDAsQy5QOCkoZSksc2hvd1VzZXJEYXRhTW9kYWw6ZS5zaG93VXNlckRhdGFNb2RhbCxwZW5kaW5nQXR0YWNobWVudHM6ZS5wZW5kaW5nQXR0YWNobWVudHN9KSkoKEVhPUFhLGNsYXNzIGV4dGVuZHMgYS5Db21wb25lbnR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLCgwLGkuQSkodGhpcywic3RhdGUiLHtzaGFrZUNsYXNzTmFtZToiIn0pLCgwLGkuQSkodGhpcywiY2xlYXJJZCIsbnVsbCksKDAsaS5BKSh0aGlzLCJpc01vdW50ZWQiLCExKSwoMCxpLkEpKHRoaXMsInRyaWdnZXJTaGFrZSIsKCk9Pnt0aGlzLnNldFN0YXRlKHtzaGFrZUNsYXNzTmFtZToic2hha2UifSksY2xlYXJUaW1lb3V0KHRoaXMuY2xlYXJJZCksdGhpcy5jbGVhcklkPW51bGwsdGhpcy5jbGVhcklkPXNldFRpbWVvdXQoKCk9Pnt0aGlzLmlzTW91bnRlZCYmdGhpcy5zZXRTdGF0ZSh7c2hha2VDbGFzc05hbWU6IiJ9KX0sODIwKX0pfWNvbXBvbmVudERpZE1vdW50KCl7dGhpcy5pc01vdW50ZWQ9ITB9Y29tcG9uZW50V2lsbFVubW91bnQoKXt0aGlzLmlzTW91bnRlZD0hMX1yZW5kZXIoKXtjb25zdCBlPXt0cmlnZ2VyU2hha2U6dGhpcy50cmlnZ2VyU2hha2Usc2hha2VDbGFzc05hbWU6dGhpcy5zdGF0ZS5zaGFrZUNsYXNzTmFtZX07cmV0dXJuKDAsVi5ZKShFYSx7Li4udGhpcy5wcm9wcywuLi5lfSl9fSkpO3ZhciBFYTt2YXIgU2E9ZT0+e2NvbnN0e2lzTmV3U2tpbjp0fT0oMCxwLkEpKCk7cmV0dXJuKDAsVi5ZKShDYSx7Li4uZSxpc05ld1NraW46dH0pfTtjb25zdCBEYT1lPT4oMCxkLkFIKSh7bGVmdDplPyJjYWxjKDEwMCUgLSAxNHB4KSI6ImNhbGMoMTAwJSAtIDE4cHgpIn0sIiIsIiIpLFlhPSgwLGQuQUgpKHtoZWlnaHQ6MzgscG9zaXRpb246InJlbGF0aXZlIix3aWR0aDoiMTAwJSIsZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoicm93IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIiwiLmdyaWQtbGF5b3V0ICYiOntoZWlnaHQ6MzB9LGNvbG9yOiIjNEM1OTZCIiwiLmZvb3Rlci1pY29ucy13cmFwcGVyIjp7bWFyZ2luSW5saW5lU3RhcnQ6LTh9LCIubW9iaWxlICYiOnsiKiArICoiOnttYXJnaW5JbmxpbmVTdGFydDowfSwiLmZvb3Rlci1pY29ucy13cmFwcGVyIjp7bWFyZ2luSW5saW5lU3RhcnQ6LTh9fX0sIiIsIiIpLFRhPXtuYW1lOiJhazRqMWgiLHN0eWxlczoiJi5oaWRkZW57ZGlzcGxheTpub25lO30ifSxGYT0oMCxkLkFIKSh7Y29sb3I6IiM2NDc0OTEiLCIqICsgKiI6e21hcmdpbklubGluZVN0YXJ0OjR9LCIuZm9vdGVyLWljb25zLXdyYXBwZXIiOnttYXJnaW5JbmxpbmVTdGFydDowfSwiLm1vYmlsZSAmIjp7IiogKyAqIjp7bWFyZ2luSW5saW5lU3RhcnQ6MH0sIi5mb290ZXItaWNvbnMtd3JhcHBlciI6e21hcmdpbklubGluZVN0YXJ0Oi04fX19LCIiLCIiKTt2YXIgSWE9ZT0+e2xldHtoYXNTZXBhcmF0b3I6dD0hMX09ZTtjb25zdCBuPSgwLGEudXNlUmVmKShudWxsKSxpPSgwLHIud0EpKCksbz0oMCxyLmQ0KShlPT5lLmlzRW1vamlQYW5lbFZpc2libGUpLHM9KDAsci5kNCkoZT0+ZS5pc01vYmlsZSksbD0oMCxyLmQ0KShDLm80KSxjPSgwLHIuZDQpKEMuRl8pLHU9KDAsci5kNCkoZT0+ZS5tZXNzYWdlcyksbT0oMCxyLmQ0KShDLlZRKSxoPSgwLHIuZDQpKEMuZmgpLGc9KDAsci5kNCkoZT0+ZS5hbGxvd0F0dGFjaG1lbnRzKSxiPSgwLHIuZDQpKGU9PmUuYWxsb3dFbW9qaXMpLHY9KDAsci5kNCkoQy5IRSkseD0oMCxyLmQ0KShDLmNmKSx7aXNOZXdTa2luOnd9PSgwLHAuQSkoKSxBPUlpKCksRT1JaSgpLFM9eC5sZW5ndGg+PWYucXUsRD1Cb29sZWFuKEJvb2xlYW4odS5maW5kKGU9PiJ2aXNpdG9yIj09PWUuc2VuZGVyKSkmJiFoJiZnKSxZPWU9PntpZihFLmhhbmRsZUNsaWNrKCksZSl7ISgwPT09ZS5uYXRpdmVFdmVudC5wYWdlWCYmMD09PWUubmF0aXZlRXZlbnQucGFnZVkpJiZvJiZlLmN1cnJlbnRUYXJnZXQuYmx1cigpfWkobD8oMCxrLlM3OSkoKDAseS5wdykoIm5ld01lc3NhZ2VEaXNhYmxlZEFsZXJ0IixudWxsLCJQbGVhc2UgZW50ZXIgeW91ciBlbWFpbCBmaXJzdC4iKSk6KDAsay5IemgpKCFvKSl9O3JldHVybigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6ImlucHV0LWdyb3VwICIrKG0/ImRyYWctYWN0aXZlIjoiIiksY2hpbGRyZW46W2ImJigwLFYuWSkocSx7aW46byxjbGFzc05hbWVzOiJlbW9qaUZhZGUiLHRpbWVvdXQ6MjAwLG1vdW50T25FbnRlcjohMCx1bm1vdW50T25FeGl0OiEwLGFwcGVhcjohMCxjaGlsZHJlbjooMCxWLlkpKEhpLHtpc01vYmlsZTpzLG9uRW1vamlDbGljazplPT57aSgoMCxrLnBPNikobHQuWC5lbW9qaUFkZGVkKSksIm5hdGl2ZSJpbiBlJiZpKCgwLGsuZVNMKShlLm5hdGl2ZSkpfSxoYW5kbGVFbW9qaVBhbmVsOll9KX0pLCgwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6ImRyYWctYWN0aXZlLXdyYXBwZXIgZm9vdGVyLWlucHV0LXdyYXBwZXIgIisobD8iaGlkZGVuIjoiIiksY3NzOnc/VGE6dm9pZCAwLGNoaWxkcmVuOlt0JiYoMCxWLlkpKCJociIse30pLCgwLFYuWSkoZmEse2F0dGFjaG1lbnRzOngsb25SZW1vdmU6ZT0+e2koKDAsay5QTlEpKGUpKX19KSwoMCxWLlkpKFNhLHtkaXNwYXRjaDppLGZpbGVVcGxvYWRFbmFibGVkOkR9KV19KSwoMCxWLkZEKSgiZGl2Iix7Y3NzOnc/W1lhLEZhXTpbWWFdLGNoaWxkcmVuOlsoMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJmb290ZXItaWNvbnMtd3JhcHBlciAiKyhsPyJoaWRkZW4iOiIiKSxjaGlsZHJlbjpbKDAsVi5ZKShMaSx7fSksKDAsVi5ZKShfaSx7aW46RCxjaGlsZHJlbjooMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6InJpcHBsZSAiKyhsfHxTPyJkaXNhYmxlZCI6IiIpLG9uQ2xpY2s6ZT0+e2lmKEEuaGFuZGxlQ2xpY2soKSwoMCxmLkREKSgpfHwhRClyZXR1cm4hMTtpZihlKXswPT09ZS5uYXRpdmVFdmVudC5wYWdlWCYmMD09PWUubmF0aXZlRXZlbnQucGFnZVl8fGUuY3VycmVudFRhcmdldC5ibHVyKCl9cmV0dXJuIGw/aSgoMCxrLlM3OSkoKDAseS5wdykoIm5ld01lc3NhZ2VEaXNhYmxlZEFsZXJ0IixudWxsLCJQbGVhc2UgZW50ZXIgeW91ciBlbWFpbCBmaXJzdC4iKSkpOihpKCgwLGsucE82KShsdC5YLnVwbG9hZEJ1dHRvbkNsaWNrZWQpKSxuLmN1cnJlbnQmJm4uY3VycmVudC5jbGljaygpKSwhMH0sZGlzYWJsZWQ6UywiYXJpYS1sYWJlbCI6KDAseS5wdykoImF0dGFjaEZpbGUiLG51bGwsIkF0dGFjaCBmaWxlIGJ1dHRvbiIpLGNzczpbTWksTmkudG9vbHRpcEJ1dHRvbigpLCIiLCIiXSxvbk1vdXNlRW50ZXI6QS5oYW5kbGVNb3VzZUVudGVyLGNoaWxkcmVuOlsoMCxWLlkpKHV0LnNvLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2xhc3NOYW1lOiJ0b29sdGlwICIrKEEuaXNDbGlja2VkPyJjbGlja2VkIjoiIiksY3NzOltOaS50b29sdGlwLChUPXcsKDAsZC5BSCkoe2xlZnQ6VD8iY2FsYygxMDAlIC0gMnB4KSI6ImNhbGMoMTAwJSAtIDhweCkifSwiIiwiIikpLCIiLCIiXSxjaGlsZHJlbjooMCx5LnB3KSgiYXR0YWNobWVudCIsbnVsbCwiQXR0YWNobWVudCIpfSldfSl9KSwhcyYmYiYmKDAsVi5GRCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOmBlbW9qaS1zd2l0Y2ggcmlwcGxlICR7bz8iYWN0aXZlIjoiIn0gJHtsPyJkaXNhYmxlZCI6IiJ9YCxvbkNsaWNrOlksImFyaWEtbGFiZWwiOm8/KDAseS5wdykoImNsb3NlRW1vamlQYW5lbCIsbnVsbCwiQ2xvc2UgRW1vamkgcGlja2VyIik6KDAseS5wdykoIm9wZW5FbW9qaVBhbmVsIixudWxsLCJPcGVuIEVtb2ppIHBpY2tlciIpLGNzczpbTWksTmkudG9vbHRpcEJ1dHRvbigpLCIiLCIiXSxvbk1vdXNlRW50ZXI6RS5oYW5kbGVNb3VzZUVudGVyLGNoaWxkcmVuOlsoMCxWLlkpKHV0LmpCLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2xhc3NOYW1lOiJ0b29sdGlwICIrKEUuaXNDbGlja2VkPyJjbGlja2VkIjoiIiksY3NzOltOaS50b29sdGlwLERhKHcpLCIiLCIiXSxjaGlsZHJlbjooMCx5LnB3KSgiZW1vamkiLG51bGwsIkVtb2ppIil9KV19KSwoMCxWLlkpKCJmb3JtIix7Y2hpbGRyZW46KDAsVi5ZKSgiaW5wdXQiLHt0eXBlOiJmaWxlIixzdHlsZTp7ZGlzcGxheToibm9uZSJ9LHJlZjpuLG5hbWU6ImF0dGFjaG1lbnQiLG9uQ2hhbmdlOmU9PntpZihEKXtpZihlLnRhcmdldC5maWxlcyl7Y29uc3QgdD1lLnRhcmdldC5maWxlc1swXTtpKCgwLGsuU0JRKShldCgpKCksdCkpfW4uY3VycmVudCYmKG4uY3VycmVudC52YWx1ZT0iIil9fSwiYXJpYS1sYWJlbCI6KDAseS5wdykoImF0dGFjaEZpbGUiLG51bGwsIkF0dGFjaCBmaWxlIGlucHV0Iil9KX0pXX0pLChjfHxCb29sZWFuKHYpKSYmKDAsVi5ZKShLaSx7fSldfSldfSk7dmFyIFR9O3ZhciBfYT0oMCxkLkFIKSh7IiYmIjp7d2lkdGg6NDAsaGVpZ2h0OjQwLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsY29sb3I6InZhcigtLWN1c3RvbS10ZXh0LWNvbG9yKSIsc3ZnOnt3aWR0aDoyNCxoZWlnaHQ6MjQsZmlsbDoiY3VycmVudENvbG9yIix0cmFuc2l0aW9uOiJhbGwgMC4xNnMgZWFzZS1pbi1vdXQifSxwb3NpdGlvbjoicmVsYXRpdmUiLG91dGxpbmU6Im5vbmUiLCIubW9iaWxlICYiOnt3aWR0aDo0NCxoZWlnaHQ6NDR9LCImOjpiZWZvcmUiOntjb250ZW50OiciIicscG9zaXRpb246ImFic29sdXRlIixiYWNrZ3JvdW5kOiIjMDgwRjFBMjkiLHdpZHRoOjQwLGhlaWdodDo0MCxib3JkZXJSYWRpdXM6IjUwJSIsekluZGV4Oi0xLHRyYW5zaXRpb246ImFsbCAwLjE2cyBlYXNlLWluLW91dCIsdHJhbnNmb3JtOiJzY2FsZSgwKSIsdG9wOiJjYWxjKDUwJSAtIDIwcHgpIixsZWZ0OiJjYWxjKDUwJSAtIDIwcHgpIn0sIkBtZWRpYSAoaG92ZXI6IGhvdmVyKSI6eyImOmhvdmVyOjpiZWZvcmUiOnt0cmFuc2Zvcm06InNjYWxlKDEpIn19LCIuZ3JpZC1sYXlvdXQ6bm90KC5tb2JpbGUpICYiOnt3aWR0aDoyOCxoZWlnaHQ6MjgsY29sb3I6ImN1cnJlbnRDb2xvciIsc3ZnOnt3aWR0aDoyMCxoZWlnaHQ6MjB9LCImOjpiZWZvcmUiOnt3aWR0aDoyOCxoZWlnaHQ6MjgsdHJhbnNmb3JtOiJzY2FsZSgxKSIsdG9wOiJjYWxjKDUwJSAtIDE0cHgpIixsZWZ0OiJjYWxjKDUwJSAtIDE0cHgpIixiYWNrZ3JvdW5kOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLWJhY2tncm91bmQpIixib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1zbWFsbC1jb21wb25lbnQsIDhweCkiLG9wYWNpdHk6MH0sIiY6aG92ZXIiOntjb2xvcjoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcikiLCImOjpiZWZvcmUiOntvcGFjaXR5OjF9fX0sIi5ncmlkLWxheW91dDpub3QoLm1vYmlsZSkgLmNoYXQtaGVhZGVyICYiOntjb2xvcjoidmFyKC0tY3VzdG9tLXRleHQtY29sb3IpIiwiJjo6YmVmb3JlIjp7YmFja2dyb3VuZDoiIzA4MEYxQTI5In0sIiY6aG92ZXIiOntjb2xvcjoidmFyKC0tY3VzdG9tLXRleHQtY29sb3IpIn19fX0sIiIsIiIpO3ZhciBNYT17bmFtZToiYTRxMmUyIixzdHlsZXM6InNwYW57YmFja2dyb3VuZDojZmZmO3BhZGRpbmc6NnB4IDhweDtib3JkZXItcmFkaXVzOjRweDtib3gtc2hhZG93OjBweCA4cHggMjBweCAwcHggcmdiYSgwLCAyNywgNzEsIDAuMjQpO2ZvbnQtc2l6ZToxM3B4O3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lO3doaXRlLXNwYWNlOm5vd3JhcDt0cmFuc2l0aW9uOmFsbCAwLjE2cyBlYXNlLWluLW91dDt6LWluZGV4OjE7dG9wOjUwJTtjb2xvcjojMDYxMzJiO21hcmdpbi1pbmxpbmUtZW5kOjEwcHg7aW5zZXQtaW5saW5lLWVuZDoxMDAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoNXB4LCAtNTAlKTt9QG1lZGlhIChob3ZlcjogaG92ZXIpeyY6aG92ZXJ7c3BhbntvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC01MCUpO319fSJ9O3ZhciBOYT1lPT4oMCxkLkFIKSh7cG9zaXRpb246ImFic29sdXRlIixiYWNrZ3JvdW5kOiIjZmZmIixib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1zbWFsbC1jb21wb25lbnQsIDhweCkiLGJveFNoYWRvdzplPyIwcHggMnB4IDJweCAwcHggcmdiYSg4LCAxNSwgMjYsIDAuMTIpLCAwcHggMnB4IDhweCAwcHggcmdiYSg4LCAxNSwgMjYsIDAuMDgpIjoiMCA2cHggMzJweCAwIHJnYmEoMCwgMTgsIDQ2LCAwLjE2KSIscGFkZGluZzplPyI0cHgiOiIxMnB4IDZweCIsekluZGV4OjYscmlnaHQ6ZT8iMThweCI6IjI0cHgiLHVsOnttYXJnaW46MCxwYWRkaW5nOjB9LGxpOntib3JkZXJSYWRpdXM6IjZweCIsZGlzcGxheToiZmxleCJ9LGJ1dHRvbjp7cGFkZGluZzplPyI4cHgiOiI4cHggMTZweCIsZGlzcGxheToiZmxleCIsbWFyZ2luOjAscG9zaXRpb246ImluaXRpYWwiLGZsb2F0OiJpbml0aWFsIix3aWR0aDoiMTAwJSIsYm9yZGVyUmFkaXVzOiI2cHgiLGFsaWduSXRlbXM6ImNlbnRlciIsIiY6aG92ZXIsICY6Zm9jdXMiOnsiJjpub3QoLm1vYmlsZSksICNib2R5Om5vdCgubW9iaWxlKSAmIjp7YmFja2dyb3VuZDoiI2VmZjJmNiJ9fSxzdmc6e2ZpbGw6IiM4ODk0YWIiLGhlaWdodDoiMjBweCIsd2lkdGg6IjIwcHgifSxzcGFuOnttYXJnaW5MZWZ0OiI4cHgiLGNvbG9yOiIjMDYxMzJiIn0sIiY6OmJlZm9yZSI6e2NvbnRlbnQ6Im5vbmUifX19LCIiLCIiKTt2YXIgT2E9KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShlPT5lLnNob3dPcHRpb25zRHJvcGRvd24pLG49KDAsci5kNCkoZT0+ZS5ub3RpZmljYXRpb25Tbm9vemVkKSxpPSgwLHIuZDQpKGU9PmUuaXNTb3VuZEVuYWJsZWQpLG89KDAsci5kNCkoZT0+ZS5pc01vYmlsZSkscz0oMCxyLmQ0KShDLk8xKSx7aXNOZXdTa2luOmx9PSgwLHAuQSkoKSxkPWh0KGwpLHU9KDAsYS51c2VDYWxsYmFjaykoKCk9PntlKCgwLGsuWjlxKSghMSkpLGUoKDAsay52YWIpKCFuKSl9LFtuLGVdKSxmPSgwLGEudXNlQ2FsbGJhY2spKHQ9PntlKCgwLGsuWjlxKSh0KSl9LFtlXSksbT0oMCxhLnVzZU1lbW8pKCgpPT57bGV0IGU9NzI7cmV0dXJuIGwmJihlPSJjb252ZXJzYXRpb25zIj09PXM/NTI6NjQpLG8mJihlPTYwKSxlfSxbbCxvLHNdKSxoPSgwLGMucG4pKHQmJmkse2Zyb206e29wYWNpdHk6LjAxLHRvcDptLTEwfSxlbnRlcjp7b3BhY2l0eToxLHRvcDptLGNvbmZpZzp7dGVuc2lvbjoxMjAsZnJpY3Rpb246MTR9fSxsZWF2ZTp7b3BhY2l0eTouMDEsY29uZmlnOntkdXJhdGlvbjoxMH19fSk7cmV0dXJuKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46W2kmJigwLFYuRkQpKCJidXR0b24iLHtjbGFzc05hbWU6Im9wdGlvbnMgcmlwcGxlIixvbkNsaWNrOm49PnshKDA9PT1uLm5hdGl2ZUV2ZW50LnBhZ2VYJiYwPT09bi5uYXRpdmVFdmVudC5wYWdlWSkmJnQmJm4uY3VycmVudFRhcmdldC5ibHVyKCksZSgoMCxrLnBPNikobHQuWC5vcHRpb25zQnV0dG9uQ2xpY2tlZCkpO2NvbnN0IGk9IXQ7ZSgoMCxrLlo5cSkoaSkpLHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoImNvbnZlcnNhdGlvbk9wdGlvbnNCdXR0b25DbGljayIse3R5cGU6aT8ib3BlbiI6ImNsb3NlIn0pfSxvbkJsdXI6KCk9PntlKCgwLGsuWjlxKSghMSkpfSx0eXBlOiJidXR0b24iLCJhcmlhLWxhYmVsIjp0PygwLHkucHcpKCJjbG9zZU9wdGlvbnMiLG51bGwsIkNsb3NlIG9wdGlvbnMiKTooMCx5LnB3KSgib3Blbk9wdGlvbnMiLG51bGwsIk9wZW4gb3B0aW9ucyIpLGNzczpbX2EsTWEsIiIsIiJdLGNoaWxkcmVuOltsPygwLFYuWSkodXQudHgse30pOigwLFYuWSkodXQuSlkse30pLCgwLFYuWSkoInNwYW4iLHtjaGlsZHJlbjp0PygwLHkucHcpKCJjbG9zZU9wdGlvbnMiLG51bGwsIkNsb3NlIG9wdGlvbnMiKTooMCx5LnB3KSgib3Blbk9wdGlvbnMiLG51bGwsIk9wZW4gb3B0aW9ucyIpfSldfSksaCgoZSx0KT0+dD8oMCxWLlkpKGMuQ1MuZGl2LHtzdHlsZTplLGNzczpOYShsKSxjaGlsZHJlbjooMCxWLlkpKCJ1bCIse2NoaWxkcmVuOm4/KDAsVi5ZKSgibGkiLHtjaGlsZHJlbjooMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6Im1hdGVyaWFsLWljb25zIixvbkNsaWNrOnUsb25Gb2N1czooKT0+e2YoITApfSxvbkJsdXI6KCk9PntmKCExKX0sY2hpbGRyZW46W2w/KDAsVi5ZKSh1dC5jMCx7fSk6KDAsVi5ZKSh1dC5XVCx7fSksKDAsVi5ZKSgic3BhbiIse2NzczpkLnRleHQxNCxjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToidHVybk9uTm90aWZpY2F0aW9ucyJ9KX0pXX0pfSk6KDAsVi5ZKSgibGkiLHtjaGlsZHJlbjooMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6Im1hdGVyaWFsLWljb25zIixvbkNsaWNrOnUsb25Gb2N1czooKT0+e2YoITApfSxvbkJsdXI6KCk9PntmKCExKX0sY2hpbGRyZW46W2w/KDAsVi5ZKSh1dC5tMix7fSk6KDAsVi5ZKSh1dC5vSCx7fSksKDAsVi5ZKSgic3BhbiIse2NzczpkLnRleHQxNCxjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToidHVybk9mZk5vdGlmaWNhdGlvbnMifSl9KV19KX0pfSl9KTpudWxsKV19KX07dmFyIFJhPSgpPT57Y29uc3QgZT0oMCxyLmQ0KShDLnE2KSx0PSgwLHIuZDQpKEMubW0pLG49KDAsci5kNCkoQy5LKSxpPSgwLGEudXNlTWVtbykoKCk9PmUubWFwKGU9Pntjb25zdCBpPXQuZmluZCh0PT50LmlkPT09ZSk7aWYoIWkpcmV0dXJuO2NvbnN0IGE9bi5maW5kKHQ9PnQuaWQ9PT1lKTtyZXR1cm4gYT97Li4uaSxuYW1lOmEubmFtZX06ey4uLmksbmFtZToiIn19KS5maWx0ZXIoZT0+dm9pZCAwIT09ZSkuc2xpY2UoMCwzKSxbZSx0LG5dKSxvPSgwLGEudXNlTWVtbykoKCk9Pnt0cnl7aWYoMD09PWkubGVuZ3RoKXJldHVybiJceGEwIjtpZigxPT09aS5sZW5ndGgpcmV0dXJuIGlbMF0ubmFtZTtjb25zdCBlPWkubWFwKGU9PmUubmFtZSksdD1lLnNwbGljZSgtMikuam9pbihgICR7KDAseS5wdykoIndpZGdldEhlYWRlckFuZCIsbnVsbCwiYW5kIil9IGApO3JldHVyblsuLi5lLHRdLmpvaW4oIiwgIil9Y2F0Y2goZSl7cmV0dXJuKDAsdi5zUSkoZSksIlx4YTAifX0sW2ldKTtyZXR1cm57YXNzaWduZWRPcGVyYXRvcnNEYXRhOmksYXNzaWduZWRPcGVyYXRvcnNOYW1lczpvfX07Y29uc3QgamE9e25hbWU6IjF3b3RsbTMiLHN0eWxlczoiZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxvYXQ6bGVmdDsmID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpe21hcmdpbi1pbmxpbmUtc3RhcnQ6LTRweDt9In0sUGE9e25hbWU6Imw0MW56eSIsc3R5bGVzOiJoZWlnaHQ6OHB4In07dmFyIHphPWU9PntsZXR7b3BlcmF0b3JzOnQsb3BlblRhYjpuLHdpdGhCYWNrZ3JvdW5kQ29sb3I6aX09ZTtjb25zdHtpc05ld1NraW46YX09KDAscC5BKSgpLG89dC5zbGljZSgwLDMpO3JldHVybigwLFYuRkQpKCJkaXYiLHtjaGlsZHJlbjpbImhvbWUiPT09biYmIWEmJigwLFYuWSkoImRpdiIse2NzczpQYX0pLCgwLFYuWSkoImRpdiIse2NzczpqYSxjaGlsZHJlbjpvLm1hcChlPT4oMCxWLlkpKEtuLHthdmF0YXJTcmM6ZS5hdmF0YXJTcmMsY2xhc3NOYW1lOiJoZWFkZXItYXZhIixzaXplOiJob21lIiE9PW58fGE/MzI6MzYsd2l0aEJhY2tncm91bmRDb2xvcjppfSxlLmlkKSl9KV19KX07Y29uc3QgTGE9e25hbWU6IjFyNm9qbHciLHN0eWxlczoiZm9udC13ZWlnaHQ6NjAwO21hcmdpbjowO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO21heC13aWR0aDpjYWxjKDEwMCUgLSAxNDVweCk7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoxOXB4O2ZsZXgtZ3JvdzoxIn0sVWE9e25hbWU6IjFlYXRicTMiLHN0eWxlczoiZmxleC1ncm93OjE7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO2FsaWduLWl0ZW1zOmNlbnRlcjtzdmd7aGVpZ2h0OjE2cHg7d2lkdGg6MTZweDt9In0sQmE9e25hbWU6IjR6bGVxbCIsc3R5bGVzOiJkaXNwbGF5OmJsb2NrIn07dmFyIEhhPSgpPT57Y29uc3R7YXNzaWduZWRPcGVyYXRvcnNEYXRhOmUsYXNzaWduZWRPcGVyYXRvcnNOYW1lczp0fT1SYSgpLG49KDAsci5kNCkoQy5tbSksaT0oMCxyLmQ0KShDLkxkKSxhPSgwLHIuZDQpKEMuTzEpLHtpc05ld1NraW46b309KDAscC5BKSgpLHM9aHQobyk7cmV0dXJuIGUubGVuZ3RoPygwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKHphLHtvcGVyYXRvcnM6ZSxvcGVuVGFiOmF9KSwoMCxWLkZEKSgiaDIiLHtjc3M6W0xhLHMudGV4dDE0TWVkaXVtLCIiLCIiXSxjaGlsZHJlbjpbIW8mJigwLFYuRkQpKCJzcGFuIix7Y3NzOkJhLGNoaWxkcmVuOlsoMCxWLlkpKE9uLHt2YWx1ZToiY2hhdFdpdGgiLGZhbGxiYWNrOiJDaGF0IHdpdGgifSksIiAiXX0pLHRdfSldfSk6aT8oMCxWLlkpKCJkaXYiLHtjc3M6W1VhLHMudGV4dDE0TWVkaXVtLCIiLCIiXSxjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToibmV3V2lkZ2V0SGVhZGVyVGV4dCIsZmFsbGJhY2s6Ilx4YTAiLGVtb2ppZnk6ITB9KX0pOigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKHphLHtvcGVyYXRvcnM6bixvcGVuVGFiOmF9KSwoMCxWLlkpKCJkaXYiLHtjc3M6W1VhLHMudGV4dDE0TWVkaXVtLCIiLCIiXSxjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToibmV3V2lkZ2V0SGVhZGVyVGV4dCIsZmFsbGJhY2s6Ilx4YTAiLGVtb2ppZnk6ITB9KX0pXX0pfTtjb25zdCBxYT17bmFtZToiODhxbDluIixzdHlsZXM6IkBtZWRpYSAobWF4LWhlaWdodDogODk5cHgpe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7fSJ9O3ZhciBWYT1lPT57bGV0e2NoYXRWaWV3UmVmOnR9PWU7Y29uc3Qgbj0oMCxyLmQ0KShDLk55KSxbaSxvXT0oMCxhLnVzZVN0YXRlKSghMSk7cmV0dXJuIG4/bnVsbDppPygwLFYuRkQpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNzczpbX2EsTWEscWEsIiIsIiJdLCJhcmlhLWxhYmVsIjooMCx5LnB3KSgiY29sbGFwc2UiLG51bGwsIkNvbGxhcHNlIiksb25DbGljazooKT0+e3QuY3VycmVudD8uc3R5bGUuc2V0UHJvcGVydHkoImhlaWdodCIsIjcwMHB4IiksbyghMSl9LGNoaWxkcmVuOlsoMCxWLlkpKHV0LmRMLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoImNvbGxhcHNlIixudWxsLCJDb2xsYXBzZSIpfSldfSk6KDAsVi5GRCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY3NzOltfYSxNYSxxYSwiIiwiIl0sImFyaWEtbGFiZWwiOigwLHkucHcpKCJleHBhbmQiLG51bGwsIkV4cGFuZCIpLG9uQ2xpY2s6KCk9Pnt0LmN1cnJlbnQ/LnN0eWxlLnNldFByb3BlcnR5KCJoZWlnaHQiLCIxMDAlIiksbyghMCl9LGNoaWxkcmVuOlsoMCxWLlkpKHV0Lm1TLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoImV4cGFuZCIsbnVsbCwiRXhwYW5kIil9KV19KX07dmFyICRhPXtvcHRpb25zOntuYW1lOiIxeXlkeGk3IixzdHlsZXM6ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweCJ9LG9wdGlvbnNDaGF0T2xkOntuYW1lOiI0enVtMDQiLHN0eWxlczoibWFyZ2luLXRvcDotNHB4In0sb3B0aW9uc0J1dHRvbnM6e25hbWU6IjFrNTR5bXEiLHN0eWxlczoiaGVpZ2h0OjQwcHg7bWFyZ2luLWlubGluZS1zdGFydDphdXRvO21hcmdpbi1pbmxpbmUtZW5kOi0xMnB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTthbGlnbi1pdGVtczpjZW50ZXI7Lm1vYmlsZSAme21hcmdpbi1pbmxpbmUtZW5kOjA7fSJ9LHdhdmU6e25hbWU6IjNiZDE3eiIsc3R5bGVzOiJAbWVkaWEgKG1pbi13aWR0aDogNTk0cHgpe2Rpc3BsYXk6bm9uZTt9c3Zne3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOmNhbGMoMTAwJSArIDEwcHgpO2JvdHRvbTotMTJweDtsZWZ0Oi00cHg7fSJ9LGJhY2tCdXR0b246e25hbWU6ImZ2NTRnbyIsc3R5bGVzOiJtYXJnaW4taW5saW5lLXN0YXJ0Oi0xNHB4O3NwYW57dG9wOjUwJTtpbnNldC1pbmxpbmUtc3RhcnQ6Y2FsYygxMDAlICsgNHB4KTttYXJnaW4taW5saW5lLXN0YXJ0OnVuc2V0O2luc2V0LWlubGluZS1lbmQ6dW5zZXQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNXB4LCAtNTAlKTt9QG1lZGlhIChob3ZlcjogaG92ZXIpeyY6aG92ZXIgc3BhbntvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLCAtNTAlKTt9fSJ9LGdldEJhbm5lclN0eWxlczplPT4oMCxkLkFIKSh7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIscG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsb3ZlcmZsb3c6ImhpZGRlbiIsb3BhY2l0eTouMTYsYmFja2dyb3VuZFNpemU6ImNvdmVyIixiYWNrZ3JvdW5kSW1hZ2U6YHVybCgke2V9KWB9LCIiLCIiKSxoZWFkZXI6e25hbWU6ImxpOW5reiIsc3R5bGVzOiJwYWRkaW5nOjIwcHggMjBweCAxNnB4Oy0tY3VzdG9tLXRleHQtY29sb3I6IzY0NzQ5NTtjb2xvcjp2YXIoLS1jdXN0b20tdGV4dC1jb2xvcik7LmhlYWRlci1hdmF7d2lkdGg6MjRweCAhaW1wb3J0YW50O2hlaWdodDoyNHB4ICFpbXBvcnRhbnQ7fSJ9LGdldE5ld0hvbWVIZWFkZXI6ZT0+KDAsZC5BSCkoe2hlaWdodDplPyIyMDZweCI6IjI4NHB4IixkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIn0sIiIsIiIpLG5ld09wdGlvbnM6e25hbWU6IjFkdWVnMmQiLHN0eWxlczoiZ2FwOjEycHg7aGVpZ2h0OjI0cHg7c3Bhbntjb2xvcjojMDgwRjFBO31oMntjb2xvcjojMDgwRjFBO30ifSxuZXdPcHRpb25zQnV0dG9uczp7bmFtZToiMWl2Z2ZmNSIsc3R5bGVzOiJtYXJnaW4taW5saW5lLWVuZDotMnB4Oy5tb2JpbGUgJnttYXJnaW4taW5saW5lLWVuZDotMTJweDt9In0sbmV3QmFja0J1dHRvbjp7bmFtZToiZndrb2VyIixzdHlsZXM6Im1hcmdpbi1pbmxpbmU6LTJweDsubW9iaWxlICZ7bWFyZ2luLWlubGluZTotMTJweDt9In19O3ZhciBXYT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx7aXNOZXdTa2luOnR9PSgwLHAuQSkoKSxuPSgwLGEudXNlUmVmKSghMSk7cmV0dXJuKDAsYS51c2VFZmZlY3QpKCgpPT4oKT0+e24uY3VycmVudCYmd2luZG93LnRpZGlvQ2hhdEFwaT8udHJpZ2dlcigiaGVhZGVyQ2xvc2VIb3ZlciIse3R5cGU6Im9mZiJ9KX0sW10pLCgwLFYuRkQpKCJidXR0b24iLHtjbGFzc05hbWU6InJpcHBsZSIsb25DbGljazooKT0+e2UoKDAsay5wTzYpKGx0LlguY2hhdENsb3NlZCkpLGUoKDAsay5IemgpKCExKSksZSgoMCxrLm5wdykoITEpKX0sb25Nb3VzZUVudGVyOigpPT57bi5jdXJyZW50PSEwLHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoImhlYWRlckNsb3NlSG92ZXIiLHt0eXBlOiJvbiJ9KX0sb25Nb3VzZUxlYXZlOigpPT57bi5jdXJyZW50PSExLHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoImhlYWRlckNsb3NlSG92ZXIiLHt0eXBlOiJvZmYifSl9LHR5cGU6ImJ1dHRvbiIsImFyaWEtbGFiZWwiOigwLHkucHcpKCJtaW5pbWl6ZSIsbnVsbCwiTWluaW1pemUiKSxjc3M6W19hLE1hLCIiLCIiXSxjaGlsZHJlbjpbdD8oMCxWLlkpKHV0LmJtLHt9KTooMCxWLlkpKHV0LnlRLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoIm1pbmltaXplIixudWxsLCJNaW5pbWl6ZSIpfSldfSl9O2NvbnN0IEthPXtuYW1lOiIxdzh6Z3k0IixzdHlsZXM6ImRpc3BsYXk6ZmxleDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxNXB4O21hcmdpbi10b3A6MTJweCJ9O3ZhciBHYT0oKT0+e2NvbnN0IGU9KDAsci5kNCkoZT0+ZS5pc1Byb2plY3RPbmxpbmUpO3JldHVybiBlJiYhKDAseS5wdykoIndlQXJlT25saW5lIil8fCFlJiYhKDAseS5wdykoImFsd2F5c09ubGluZVRvcEJhciIpP251bGw6KDAsVi5ZKSgiZGl2Iix7Y3NzOkthLGNoaWxkcmVuOmU/KDAsVi5ZKSgic3BhbiIse2NoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJ3ZUFyZU9ubGluZSIsZW1vamlmeTohMH0pfSk6KDAsVi5ZKSgic3BhbiIse2NoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJhbHdheXNPbmxpbmVUb3BCYXIiLGVtb2ppZnk6ITB9KX0pfSl9O2NvbnN0IFhhPWU9PntsZXR7c2hvd0Nsb3NlQnV0dG9uOnQsY2hhdFZpZXdSZWY6bn09ZTtjb25zdCBpPSgwLHIud0EpKCkse2lzTmV3U2tpbjphfT0oMCxwLkEpKCksbz0oKT0+e2koKDAsay5xN3YpKCJob21lIikpLGkoKDAsay5wTzYpKGx0LlguZ29CYWNrVG9Db252ZXJzYXRpb25TdGFydGVyc0NsaWNrZWQpKSx3aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJjb252ZXJzYXRpb25CYWNrQnV0dG9uQ2xpY2siKX07cmV0dXJuIGE/KDAsVi5ZKSgiZGl2Iix7Y3NzOiRhLmhlYWRlcixjaGlsZHJlbjooMCxWLkZEKSgiZGl2Iix7Y3NzOlskYS5vcHRpb25zLCRhLm5ld09wdGlvbnMsIiIsIiJdLGNoaWxkcmVuOlsoMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOm8sY3NzOltfYSxNYSwkYS5iYWNrQnV0dG9uLCRhLm5ld0JhY2tCdXR0b24sIiIsIiJdLGNoaWxkcmVuOlsoMCxWLlkpKHV0LkRNLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoImdvQmFjayIsbnVsbCwiR28gYmFjayIpfSldfSksKDAsVi5ZKShIYSx7fSksKDAsVi5GRCkoImRpdiIse2NzczpbJGEub3B0aW9uc0J1dHRvbnMsJGEubmV3T3B0aW9uc0J1dHRvbnMsIiIsIiJdLGNoaWxkcmVuOlt0JiYoMCxWLlkpKFdhLHt9KSwoMCxWLlkpKE9hLHt9KSxuJiYoMCxWLlkpKFZhLHtjaGF0Vmlld1JlZjpufSldfSldfSl9KTooMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJjaGF0LWhlYWRlciIsY2hpbGRyZW46WygwLFYuRkQpKCJkaXYiLHtjc3M6WyRhLm9wdGlvbnMsJGEub3B0aW9uc0NoYXRPbGQsIiIsIiJdLGNoaWxkcmVuOlsoMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6InJpcHBsZSIsb25DbGljazpvLGNzczpbX2EsTWEsJGEuYmFja0J1dHRvbiwiIiwiIl0sY2hpbGRyZW46WygwLFYuWSkodXQuSkcse30pLCgwLFYuWSkoInNwYW4iLHtjaGlsZHJlbjooMCx5LnB3KSgiZ29CYWNrIixudWxsLCJHbyBiYWNrIil9KV19KSwoMCxWLlkpKEhhLHt9KSwoMCxWLkZEKSgiZGl2Iix7Y3NzOiRhLm9wdGlvbnNCdXR0b25zLGNoaWxkcmVuOlt0JiYoMCxWLlkpKFdhLHt9KSwoMCxWLlkpKE9hLHt9KV19KV19KSwoMCxWLlkpKEdhLHt9KSwoMCxWLlkpKCJkaXYiLHtjc3M6JGEud2F2ZSxjaGlsZHJlbjooMCxWLlkpKHV0LndILHt9KX0pXX0pfTt2YXIgUWE9ZT0+e2xldHtjaGF0Vmlld1JlZjp0fT1lO2NvbnN0IG49KDAsci5kNCkoQy5UdyksaT0oMCxyLmQ0KShlPT5lLmlzTW9iaWxlKSx7aXNOZXdTa2luOmF9PSgwLHAuQSkoKSxvPSgwLHIuZDQpKEMuZW0pLHtzdGF0ZTpzfT0oMCxZaS5seikoKSxsPXM/Lm9mZmVyLGQ9byYmISghaSYmKG58fGEpfHxsKTtyZXR1cm4oMCxWLlkpKFhhLHtzaG93Q2xvc2VCdXR0b246ZCxjaGF0Vmlld1JlZjp0fSl9O2NvbnN0IFphPXtuYW1lOiIxeXBqdWExIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEycHg7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjBweCJ9LEphPXtuYW1lOiIxdDZkZjVxIixzdHlsZXM6ImNvbG9yOmN1cnJlbnRDb2xvcjttYXJnaW46NHB4IDAgMCAwO3BhZGRpbmc6MDtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6MzJweDtsaW5lLWhlaWdodDo0MHB4O2ZvbnQtd2VpZ2h0OjUwMDttYXgtd2lkdGg6MTAwJTt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dmVydGljYWwtYWxpZ246Ym90dG9tOy5lbW9qaXt3aWR0aDozMXB4O2hlaWdodDozMXB4O30ifSxlbz1lPT4oMCxkLkFIKSh7ZGlzcGxheToiLXdlYmtpdC1ib3giLFdlYmtpdExpbmVDbGFtcDplPzQ6NixXZWJraXRCb3hPcmllbnQ6InZlcnRpY2FsIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIixwYWRkaW5nQm90dG9tOjJ9LCIiLCIiKTt2YXIgdG89KCk9Pntjb25zdCBlPSgwLHIuZDQpKGU9PmUuaXNNb2JpbGUpLHtpc05ld1NraW46dH09KDAscC5BKSgpLG49aHQodCk7cmV0dXJuIHQ/KDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoImRpdiIse3N0eWxlOntoZWlnaHQ6ZT8xMjowfX0pLCgwLFYuRkQpKCJkaXYiLHtjc3M6WmEsY2hpbGRyZW46WygwLFYuWSkoImgyIix7Y3NzOltKYSxuLnRleHQyNEJvbGQsIiIsIiJdLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJuZXdXaWRnZXRIZWFkZXJUZXh0IixmYWxsYmFjazoiQ2hhdCB3aXRoIHVzIixlbW9qaWZ5OiEwfSl9KSwoMCxWLlkpKCJkaXYiLHtjc3M6ZW8oZSksY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6IndlbGNvbWVNZXNzYWdlIixlbW9qaWZ5OiEwfSl9KV19KV19KTooMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgiZGl2Iix7c3R5bGU6e2hlaWdodDplPzEyOjI4fX0pLCgwLFYuRkQpKCJkaXYiLHtjc3M6WmEsY2hpbGRyZW46WygwLFYuWSkoImgyIix7Y3NzOltKYSxuLnRleHQyNEJvbGQsIiIsIiJdLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJuZXdXaWRnZXRIZWFkZXJUZXh0IixmYWxsYmFjazoiQ2hhdCB3aXRoIHVzIixlbW9qaWZ5OiEwfSl9KSwoMCxWLlkpKE9uLHt2YWx1ZToid2VsY29tZU1lc3NhZ2UiLGVtb2ppZnk6ITB9KV19KV19KX07dmFyIG5vPSgpPT57Y29uc3QgZT0oMCxyLmQ0KShDLm1tKSx0PSgwLHIuZDQpKEMuTGQpLG49KDAsci5kNCkoQy5PMSkse2lzTmV3U2tpbjppfT0oMCxwLkEpKCk7cmV0dXJuIHQ/KDAsVi5ZKSh6YSx7b3BlcmF0b3JzOlt7aWQ6MSxhdmF0YXJTcmM6dCxpc09ubGluZTohMX1dLG9wZW5UYWI6bix3aXRoQmFja2dyb3VuZENvbG9yOml9KTooMCxWLlkpKHphLHtvcGVyYXRvcnM6ZSxvcGVuVGFiOm59KX07Y29uc3R7b3B0aW9uczppbyxvcHRpb25zQnV0dG9uczphbyxuZXdPcHRpb25zQnV0dG9uczpvbyxnZXROZXdIb21lSGVhZGVyOnJvLGdldEJhbm5lclN0eWxlczpzbyx3YXZlOmxvfT0kYSxjbz1lPT57bGV0e3Nob3dDbG9zZUJ1dHRvbjp0fT1lO2NvbnN0IG49KDAsci5kNCkoZT0+ZS5pc01vYmlsZSksaT0oMCxyLmQ0KShlPT5lLmJhbm5lckltYWdlKSx7aXNOZXdTa2luOmF9PSgwLHAuQSkoKTtyZXR1cm4gYT8oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJjaGF0LWhlYWRlciIsY3NzOnJvKG4pLGNoaWxkcmVuOlsiIiE9PWkmJigwLFYuWSkoImRpdiIse2NzczpzbyhpKX0pLCgwLFYuRkQpKCJkaXYiLHtjc3M6aW8sY2hpbGRyZW46WygwLFYuWSkobm8se30pLCgwLFYuRkQpKCJkaXYiLHtjc3M6W2FvLG9vLCIiLCIiXSxjaGlsZHJlbjpbdCYmKDAsVi5ZKShXYSx7fSksKDAsVi5ZKShPYSx7fSldfSldfSksKDAsVi5GRCkoImRpdiIse2NoaWxkcmVuOlsoMCxWLlkpKHRvLHt9KSwoMCxWLlkpKCJkaXYiLHtzdHlsZTp7aGVpZ2h0Om4/MTI6Mjh9fSldfSldfSk6KDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToiY2hhdC1oZWFkZXIiLGNoaWxkcmVuOlsiIiE9PWkmJigwLFYuWSkoImRpdiIse2NzczpzbyhpKX0pLCgwLFYuRkQpKCJkaXYiLHtjc3M6aW8sY2hpbGRyZW46WygwLFYuWSkobm8se30pLCgwLFYuRkQpKCJkaXYiLHtjc3M6YW8sY2hpbGRyZW46W3QmJigwLFYuWSkoV2Ese30pLCgwLFYuWSkoT2Ese30pXX0pXX0pLCgwLFYuWSkodG8se30pLCgwLFYuWSkoImRpdiIse3N0eWxlOntoZWlnaHQ6bj8xMjo0MH19KSwoMCxWLlkpKCJkaXYiLHtjc3M6bG8sY2hpbGRyZW46KDAsVi5ZKSh1dC53SCx7fSl9KV19KX07dmFyIHVvPSgpPT57Y29uc3QgZT0oMCxyLmQ0KShDLlR3KSx0PSgwLHIuZDQpKGU9PmUuaXNNb2JpbGUpLHtpc05ld1NraW46bn09KDAscC5BKSgpLHtzdGF0ZTppfT0oMCxZaS5seikoKSxhPSgwLHIuZDQpKEMuZW0pLG89aT8ub2ZmZXIscz1hJiYhKCF0JiYoZXx8bil8fG8pO3JldHVybigwLFYuWSkoY28se3Nob3dDbG9zZUJ1dHRvbjpzfSl9O2NvbnN0IHBvPXtuYW1lOiIxaTlsbWdiIixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO3RvcDo4cHg7cmlnaHQ6OHB4O2xlZnQ6OHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3otaW5kZXg6MSJ9LGZvPXtuYW1lOiIxNm41Z29yIixzdHlsZXM6ImJhY2tncm91bmQtY29sb3I6I2ZmZjtib3gtc2hhZG93OjAgOHB4IDIwcHggMCAjMDAxYjQ3M2Q7bWluLXdpZHRoOjQ0cHg7aGVpZ2h0OjQ0cHg7Ym9yZGVyLXJhZGl1czo5OXB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtzdmd7ZmlsbDojMDgwZjFhO3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7fSJ9LG1vPXtuYW1lOiJkbGZpcnUiLHN0eWxlczoibWFyZ2luLWlubGluZS1lbmQ6YXV0bztwYWRkaW5nOjhweCAxNnB4IDhweCA4cHg7Zm9udC1zaXplOjE1cHgifTt2YXIgaG89KCk9Pntjb25zdCBlPSgwLHIud0EpKCkse2lzTmV3U2tpbjp0fT0oMCxwLkEpKCk7cmV0dXJuKDAsVi5GRCkoImRpdiIse2NzczpwbyxjaGlsZHJlbjpbKDAsVi5GRCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+e2UoKDAsay5xN3YpKCJob21lIikpLGUoKDAsay5wTzYpKGx0LlguZ29CYWNrVG9Db252ZXJzYXRpb25TdGFydGVyc0NsaWNrZWQpKSxlKCgwLGsuRTNTKSghMSkpLHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoImNvbnZlcnNhdGlvbkJhY2tCdXR0b25DbGljayIpfSxjc3M6W2ZvLG1vLCIiLCIiXSxjaGlsZHJlbjpbdD8oMCxWLlkpKHV0LkRNLHt9KTooMCxWLlkpKHV0LkpHLHt9KSwoMCx5LnB3KSgiZ29CYWNrIixudWxsLCJHbyBiYWNrIildfSksKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOigpPT57ZSgoMCxrLnBPNikobHQuWC5jaGF0Q2xvc2VkKSksZSgoMCxrLkh6aCkoITEpKSxlKCgwLGsubnB3KSghMSkpfSxjc3M6Zm8sImFyaWEtbGFiZWwiOigwLHkucHcpKCJtaW5pbWl6ZSIsbnVsbCwiTWluaW1pemUiKSxjaGlsZHJlbjooMCxWLlkpKHV0LnlRLHt9KX0pXX0pfTt2YXIgZ289KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShDLks3KSxuPSgwLHIuZDQpKGU9PmUuZ2V0U3RhcnRlZEFjdGl2ZSksaT0hKDAsZi5NSSkoKSYmbiYmdDtyZXR1cm57aXNGbG93c0xhdW5jaGVyQWN0aXZlOmksaGFuZGxlVGFiQ2hhbmdlOnQ9PntpJiZlKCgwLGsucWJvKSgpKSxlKCgwLGsucTd2KSh0KSl9fX07Y29uc3QgYm89e2RlZmF1bHQ6IiMwNjEzMkIiLHN1YmR1ZWQ6IiM0QzU5NkIifSx2bz1lPT57bGV0e2FsaWduOnQsY29sb3I6bixzaXplOmksd2VpZ2h0OmEsbnVtYmVyT2ZMaW5lczpvfT1lO3JldHVybigwLGQuQUgpKHtmb250U2l6ZTppLGZvbnRXZWlnaHQ6YSwuLi50JiZ7dGV4dEFsaWduOnR9LC4uLm4mJntjb2xvcjpib1tuXX0sLi4ubyYme292ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLGRpc3BsYXk6Ii13ZWJraXQtYm94IixXZWJraXRMaW5lQ2xhbXA6byxXZWJraXRCb3hPcmllbnQ6InZlcnRpY2FsIn0sIkBtZWRpYSAoaG92ZXI6IGhvdmVyKSI6eyImOmhvdmVyIC50b29sdGlwIjp7dmlzaWJpbGl0eToidmlzaWJsZSIsb3BhY2l0eToxLHRyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9fX0sIiIsIiIpfSx4bz0oMCxkLkFIKSh7cG9zaXRpb246ImZpeGVkIixjb2xvcjpiby5kZWZhdWx0LGJhY2tncm91bmRDb2xvcjoiI2ZmZiIscGFkZGluZzoiNXB4IDhweCIsbWFyZ2luTGVmdDoiMTZweCIsYm9yZGVyUmFkaXVzOiI0cHgiLGZvbnRTaXplOiIxNHB4Iix0ZXh0QWxpZ246ImNlbnRlciIsbGluZUhlaWdodDoiMThweCIsdmlzaWJpbGl0eToiaGlkZGVuIixvcGFjaXR5OjAsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDVweCkiLHRyYW5zaXRpb246Im9wYWNpdHkgMC4ycyBlYXNlLCB0cmFuc2Zvcm0gMC4ycyBlYXNlIixib3hTaGFkb3c6IjBweCA4cHggMjBweCAwcHggcmdiYSgwLCAyNywgNzEsIDAuMjQpIix6SW5kZXg6MWUzLHBvaW50ZXJFdmVudHM6Im5vbmUiLHdpZHRoOjI1Nn0sIiIsIiIpO3ZhciB5bz1lPT57bGV0e2FsaWduOnQ9ImxlZnQiLGNvbG9yOm49ImRlZmF1bHQiLG51bWJlck9mTGluZXM6aSxzaXplOm89MTQsd2VpZ2h0OnI9NDAwLGNoaWxkcmVuOnMsY2xhc3NOYW1lOmx9PWU7Y29uc3QgZD0oMCxhLnVzZVJlZikobnVsbCksW2MsdV09KDAsYS51c2VTdGF0ZSkoITEpLFtwLGZdPSgwLGEudXNlU3RhdGUpKDApLG09KDAsYS51c2VDYWxsYmFjaykoKCk9Pntjb25zdCBlPWQuY3VycmVudDtpZihlKXtjb25zdCB0PWUuc2Nyb2xsSGVpZ2h0PmUuY2xpZW50SGVpZ2h0fHxlLnNjcm9sbFdpZHRoPmUuY2xpZW50V2lkdGg7aWYodSh0KSx0KXtjb25zdCB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Zih0LnRvcCt0LmhlaWdodC8yKX19fSxbXSk7cmV0dXJuIGk/KDAsVi5GRCkoInNwYW4iLHtjc3M6dm8oe2FsaWduOnQsY29sb3I6bixudW1iZXJPZkxpbmVzOmksc2l6ZTpvLHdlaWdodDpyfSkscmVmOmQsb25Nb3VzZUVudGVyOm0sY2xhc3NOYW1lOmwsY2hpbGRyZW46W3MsYyYmKDAsVi5ZKSgiZGl2Iix7Y3NzOlt4byx7dG9wOmAke3B9cHhgfSwiIiwiIl0sY2xhc3NOYW1lOiJ0b29sdGlwIixjaGlsZHJlbjpzfSldfSk6KDAsVi5ZKSgic3BhbiIse2Nzczp2byh7YWxpZ246dCxjb2xvcjpuLG51bWJlck9mTGluZXM6aSxzaXplOm8sd2VpZ2h0OnJ9KSxjbGFzc05hbWU6bCxjaGlsZHJlbjpzfSl9O2NvbnN0IHdvPSIjRTJFOEVGIixrbz0oMCxkLkFIKSh7ZGlzcGxheToiZmxleCIscGFkZGluZ0lubGluZToxNixwYWRkaW5nQmxvY2s6InZhcigtLXN0YXJ0ZXItcGFkZGluZy1ibG9jaywgMTZweCkiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOiI4cHgiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIix3aWR0aDoiMTAwJSIsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLCI6aG92ZXIiOntiYWNrZ3JvdW5kOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLWJhY2tncm91bmQpIixvdXRsaW5lOmAxcHggc29saWQgJHt3b31gfSwiOmZvY3VzIjp7b3V0bGluZToibm9uZSJ9LHN2Zzp7ZmlsbDoiY3VycmVudENvbG9yIix3aWR0aDoyMCxoZWlnaHQ6MjAsZmxleFNocmluazowfX0sIiIsIiIpLEFvPSgwLGQuQUgpKHt3aWR0aDoiY2FsYygxMDAlIC0gMzJweCkiLGJvcmRlckJvdHRvbTpgMXB4IHNvbGlkICR7d299YCxtYXJnaW46IjAgMTZweCJ9LCIiLCIiKTt2YXIgQ289ZT0+e2xldHtzdGFydGVyOnQsc2hvdWxkRGlzcGxheURpdmlkZXI6bn09ZTtjb25zdCBpPSgwLHIud0EpKCkse2lzTmV3U2tpbjpvfT0oMCxwLkEpKCkscz1odChvKSxsPSgwLGEudXNlQ2FsbGJhY2spKGU9PntpKCgwLGsuRzhjKShlKSksaSgoMCxrLnE3dikoImNvbnZlcnNhdGlvbnMiKSksaSgoMCxrLnBPNikobHQuWC5jb252ZXJzYXRpb25TdGFydGVyQ2xpY2tlZCkpfSxbaV0pO3JldHVybigwLFYuRkQpKGEuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6a28sb25DbGljazooKT0+bCh0LmFuc3dlciksY2hpbGRyZW46WygwLFYuWSkoeW8se3NpemU6MTUsbnVtYmVyT2ZMaW5lczozLGNzczpzLnRleHQxNE1lZGl1bSxjaGlsZHJlbjp0LmFuc3dlcn0pLCgwLFYuWSkodXQuY18se30pXX0sdC5pZCksbiYmKDAsVi5ZKSgiZGl2Iix7Y3NzOkFvfSldfSx0LmlkKX07Y29uc3QgRW89IiNFMkU4RUYiLFNvPXtuYW1lOiJ1ZHI2YnciLHN0eWxlczoiZmxleDoxO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTphdXRvO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt6LWluZGV4Ojk7cGFkZGluZy1pbmxpbmU6dmFyKC0tY2hhdC1wYWRkaW5nLCAyNHB4KSJ9LERvPSgwLGQuQUgpKHtkaXNwbGF5OiJmbGV4Iix3aWR0aDoiMTAwJSIsYm9yZGVyUmFkaXVzOiJ2YXIoLS1yYWRpdXMtY29tcG9uZW50LCAxMnB4KSIsYm9yZGVyOmAxcHggc29saWQgJHtFb31gLG92ZXJmbG93WToiaGlkZGVuIixtYXJnaW5Cb3R0b206InZhcigtLXN0YXJ0ZXJzLWdhcCwgMTZweCkifSwiIiwiIiksWW89e25hbWU6IjF4bGs4ZGoiLHN0eWxlczoiZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOiNmZmY7b3ZlcmZsb3cteTphdXRvIn0sVG89e25hbWU6InZ3dWEyZCIsc3R5bGVzOiJib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpO2JhY2tncm91bmQ6I2ZmZiJ9LEZvPSgwLGQuQUgpKHttaW5IZWlnaHQ6NjAsZGlzcGxheToiZmxleCIscGFkZGluZ0lubGluZToiMTZweCIscGFkZGluZ0Jsb2NrOiJ2YXIoLS1zdGFydGVyLWNoYXQtcGFkZGluZy1ibG9jaywgMTJweCkiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOiI4cHgiLHdpZHRoOiIxMDAlIixib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpIixib3JkZXI6YDFweCBzb2xpZCAke0VvfWAsYmFja2dyb3VuZDoiI2ZmZiIsIjpob3ZlciI6e2JhY2tncm91bmQ6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItYmFja2dyb3VuZCkifSwiOmZvY3VzIjp7b3V0bGluZToibm9uZSJ9LHN2Zzp7d2lkdGg6MjAsaGVpZ2h0OjIwLGZsZXhTaHJpbms6MCxmaWxsOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NkZGKSJ9fSwiIiwiIiksSW89e25hbWU6Im1hejIydCIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjJweDtmbGV4LWdyb3c6MSJ9LF9vPXtuYW1lOiIxbXNnbzVuIixzdHlsZXM6ImZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxOXB4In0sTW89e25hbWU6Ino1Y2tuMiIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7ZmxleDowIDAgNDhweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlciJ9LE5vPXtuYW1lOiJjcnJlbXMiLHN0eWxlczoiZmxleDoxIDEwMCAxNnB4In0sT289e25hbWU6IjEzdGk5cGMiLHN0eWxlczoiZmxleDowIDEwMCAxNnB4In0sUm89e25hbWU6ImZzemRtYyIsc3R5bGVzOiJmbGV4OjAgMCAxNnB4In0sam89KCk9Pntjb25zdCBlPSgwLHIuZDQpKEMuSEUpLHQ9KDAsci5kNCkoQy5GXyksbj0oMCxyLmQ0KShlPT5lLmlzTW9iaWxlKSx7aXNOZXdTa2luOml9PSgwLHAuQSkoKTtyZXR1cm4gaT9udWxsOigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlshdCYmIWUmJigwLFYuWSkoImRpdiIse2NzczpSb30pLCh0fHxCb29sZWFuKGUpKSYmKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoImRpdiIse2NzczpuP09vOk5vfSksKDAsVi5ZKSgiZGl2Iix7Y3NzOk1vLGNoaWxkcmVuOigwLFYuWSkoS2kse30pfSldfSldfSl9O3ZhciBQbz0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx0PSgwLHIuZDQpKEMuUTUpLG49KDAsci5kNCkoZT0+ZS5pc01vYmlsZSksaT0oMCxyLmQ0KShlPT5lLmlzUHJvamVjdE9ubGluZSksbz0oMCxyLmQ0KShDLmw1KSxzPUJvb2xlYW4odCYmdC5sZW5ndGg+MCksbD0hKG8mJnMpLHtpc0Zsb3dzTGF1bmNoZXJBY3RpdmU6ZCxoYW5kbGVUYWJDaGFuZ2U6Y309Z28oKSx7aXNOZXdTa2luOnV9PSgwLHAuQSkoKSxmPWh0KHUpOygwLGEudXNlRWZmZWN0KSgoKT0+e2UoKDAsay5vT20pKG4/dHQuTk8uTU9CSUxFOnR0Lk5PLkNIQVRfU0laRV8xKSl9LFtlLG5dKSwoMCxhLnVzZUVmZmVjdCkoKCk9PntlKCgwLGsucE82KShsdC5YLmhvbWVUYWJWaXNpYmxlKSl9LFtlXSk7Y29uc3QgbT0oMCx5LnB3KShpPyJ3ZUFyZU9ubGluZSI6ImFsd2F5c09ubGluZVRvcEJhciIpO2xldCBoPXU/LTMwOi00MDtyZXR1cm4gbiYmKGg9MTIpLCgwLFYuRkQpKCJkaXYiLHtjc3M6U28sc3R5bGU6e21hcmdpblRvcDpoLG1heEhlaWdodDpuPyJub25lIjo0MzR9LGNoaWxkcmVuOltuJiYoMCxWLlkpKCJkaXYiLHtzdHlsZTp7ZmxleDoxfX0pLHQmJnQubGVuZ3RoPjAmJigwLFYuWSkoImRpdiIse2NzczpEbyxjaGlsZHJlbjooMCxWLlkpKCJkaXYiLHtjc3M6WW8sY2hpbGRyZW46dC5tYXAoKGUsbik9PigwLFYuWSkoQ28se3N0YXJ0ZXI6ZSxzaG91bGREaXNwbGF5RGl2aWRlcjpuIT09dC5sZW5ndGgtMX0sZS5pZCkpfSl9KSxsJiYoMCxWLlkpKCJkaXYiLHtjc3M6VG8sY2hpbGRyZW46KDAsVi5GRCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY3NzOkZvLG9uQ2xpY2s6KCk9PntkfHwoZSgoMCxrLnBPNikobHQuWC5jaGF0V2l0aFVzSG9tZVRhYkNsaWNrZWQpKSx3aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJjaGF0V2l0aFVzQ2xpY2siKSksYygiY29udmVyc2F0aW9ucyIpfSxjaGlsZHJlbjpbKDAsVi5GRCkoImRpdiIse2NzczpJbyxjaGlsZHJlbjpbKDAsVi5ZKSgic3BhbiIse2NzczpbX28sZi50ZXh0MTRNZWRpdW0sIiIsIiJdLGNoaWxkcmVuOmQ/KDAsVi5ZKShPbix7dmFsdWU6ImdldFN0YXJ0ZWQiLGZhbGxiYWNrOiJHZXQgc3RhcnRlZCJ9KTooMCxWLlkpKE9uLHt2YWx1ZToiaGVhZGVyVGV4dCIsZmFsbGJhY2s6IkNoYXQgd2l0aCB1cyJ9KX0pLCFkJiZCb29sZWFuKG0pJiYoMCxWLlkpKHlvLHtjb2xvcjoic3ViZHVlZCIsbnVtYmVyT2ZMaW5lczoyLGNzczpmLnRleHQxMixjaGlsZHJlbjppPygwLFYuWSkoT24se3ZhbHVlOiJ3ZUFyZU9ubGluZSIsZW1vamlmeTohMH0pOigwLFYuWSkoT24se3ZhbHVlOiJhbHdheXNPbmxpbmVUb3BCYXIiLGVtb2ppZnk6ITB9KX0pXX0pLCgwLFYuWSkodXQucXgse30pXX0pfSksKDAsVi5ZKShqbyx7fSldfSl9O2NvbnN0IHpvPSIjZmZmIixMbz0oMCxkLkFIKSh7YmFja2dyb3VuZENvbG9yOnpvLGRpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIscGFkZGluZ0lubGluZToidmFyKC0tY2hhdC1wYWRkaW5nLCAyNHB4KSJ9LCIiLCIiKSxVbz17bmFtZToiMWx1ZTduOSIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7ZmxleDoxO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjJweDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2MDA7OmZvY3Vze291dGxpbmU6bm9uZTt9c3Zne3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7fSJ9LEJvPSgwLGQuQUgpKFVvLCJwb3NpdGlvbjpyZWxhdGl2ZTtzdmd7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDt9JiAubmV3TWVzc2FnZXtyaWdodDo1MHB4O2JvdHRvbTozMHB4O30iLCIiKSxIbz17bmFtZToiOG9uZXo2IixzdHlsZXM6ImNvbG9yOiM2NDc0OTE7c3Zney5vdXRsaW5le29wYWNpdHk6MTt9LmZpbGx7b3BhY2l0eTowO319Jjpob3Zlcntjb2xvcjppbml0aWFsO3N2Z3sub3V0bGluZXtvcGFjaXR5OjA7fS5maWxse29wYWNpdHk6MTt9fX0ifSxxbz17bmFtZToiMWgzM2JsbCIsc3R5bGVzOiJwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDo5MnB4O2JvdHRvbTo0NnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojZmZmO3BvaW50ZXItZXZlbnRzOm5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2ZvbnQtc2l6ZToxMnB4O2JhY2tncm91bmQ6I2U4MTMzMjt6LWluZGV4OjI7bGluZS1oZWlnaHQ6MSJ9LFZvPXtuYW1lOiIxYWM2ZTQzIixzdHlsZXM6ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtoZWlnaHQ6NDBweDtmbGV4OjAgMCA0MHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNFMkU4RUYifTt2YXIgJG89KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShlPT5lLnVucmVhZE1lc3NhZ2VzKSxuPSgwLHIuZDQpKGU9PmUuaXNNb2JpbGUpLGk9KDAsci5kNCkoQy5GXyksYT0oMCxyLmQ0KShDLkhFKSx7aXNOZXdTa2luOm99PSgwLHAuQSkoKSxzPWh0KG8pLHtoYW5kbGVUYWJDaGFuZ2U6bH09Z28oKTtyZXR1cm4oMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgiZGl2Iix7Y3NzOkxvLGNoaWxkcmVuOigwLFYuRkQpKCJkaXYiLHtjc3M6KGM9bywoMCxkLkFIKSh7ZGlzcGxheToiZmxleCIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsYWxpZ25JdGVtczoiZmxleC1zdGFydCIsZ2FwOjQsYWxpZ25TZWxmOiJzdHJldGNoIixib3JkZXJUb3A6IjFweCBzb2xpZCAiKyhjPyJ0cmFuc3BhcmVudCI6IiNFMkU4RUYiKSxiYWNrZ3JvdW5kQ29sb3I6em99LCIiLCIiKSksc3R5bGU6e3BhZGRpbmc6bj8iMTBweCAyMHB4IjoiMTJweCAyMHB4In0sY2hpbGRyZW46WygwLFYuRkQpKCJidXR0b24iLHtjc3M6W28/Qm86VW8scy50ZXh0MTJNZWRpdW0sIiIsIiJdLHR5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+e2woImhvbWUiKX0sY2hpbGRyZW46WygwLFYuWSkodXQuZkEse30pLCgwLFYuWSkoT24se3ZhbHVlOiJob21lIixmYWxsYmFjazoiSG9tZSJ9KV19KSwoMCxWLkZEKSgiYnV0dG9uIix7Y3NzOltvP0JvOlVvLEhvLHMudGV4dDEyTWVkaXVtLCIiLCIiXSx0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PntsKCJjb252ZXJzYXRpb25zIiksZSgoMCxrLnBPNikobHQuWC5jaGF0VGFiQ2xpY2tlZCkpLHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoImNoYXRUYWJDbGljayIpfSxjaGlsZHJlbjpbKDAsVi5ZKSh1dC5veSx7fSksKDAsVi5ZKShPbix7dmFsdWU6ImNoYXQiLGZhbGxiYWNrOiJDaGF0In0pLHQ+MCYmKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJuZXdNZXNzYWdlIixjc3M6cW8sY2hpbGRyZW46dDw9OT90OiI5KyJ9KV19KV19KX0pLG8mJihpfHxCb29sZWFuKGEpKSYmKDAsVi5ZKSgiZGl2Iix7Y3NzOlZvLGNoaWxkcmVuOigwLFYuWSkoS2kse30pfSldfSk7dmFyIGN9LFdvPW4oNTkyMyk7dmFyIEtvPSgpPT57Y29uc3QgZT0oMCxyLndBKSgpLHQ9KDAsci5kNCkoQy53bik7cmV0dXJuKDAsYS51c2VFZmZlY3QpKCgpPT57Y29uc3QgdD1zZXRUaW1lb3V0KCgpPT57ZSgoMCxrLkhkJCkoKSl9LDZlMyk7cmV0dXJuKCk9PntudWxsIT09dCYmY2xlYXJUaW1lb3V0KHQpfX0sW2VdKSwoMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IgbWVzc2FnZS1hbGVydCIscm9sZToiYWxlcnQiLCJhcmlhLWxpdmUiOiJhc3NlcnRpdmUiLCJhcmlhLWF0b21pYyI6InRydWUiLGNoaWxkcmVuOlsoMCxWLlkpKHV0LkZjLHt9KSx0XX0pfTtjb25zdCBHbz1lPT57aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1bLyg/OnlvdXR1YmVcLmNvbVwvd2F0Y2hcPy4qdj18eW91dHViZVwuY29tXC93YXRjaFw/dj0pKFthLXpBLVowLTlfLV17MTF9KS8sL3lvdXR1XC5iZVwvKFthLXpBLVowLTlfLV17MTF9KS8sL3lvdXR1YmVcLmNvbVwvZW1iZWRcLyhbYS16QS1aMC05Xy1dezExfSkvLC95b3V0dWJlXC5jb21cL3ZcLyhbYS16QS1aMC05Xy1dezExfSkvXTtmb3IoY29uc3QgbiBvZiB0KXtjb25zdCB0PWUubWF0Y2gobik7aWYodD8uWzFdKXJldHVybiB0WzFdfXJldHVybiBudWxsfSxYbz1lPT57aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD0vaHR0cHM/OlwvXC8oPzp3d3dcLik/KD86eW91dHViZVwuY29tXC93YXRjaFw/W15ccyldK3x5b3V0dWJlXC5jb21cL2VtYmVkXC9bXlxzKV0rfHlvdXR1YmVcLmNvbVwvdlwvW15ccyldK3x5b3V0dVwuYmVcL1teXHMpXSspLy5leGVjKGUpLG49dD8uWzBdO3JldHVybiBuJiZHbyhuKT9uOm51bGx9O3ZhciBRbz1lPT4oMCxhLnVzZU1lbW8pKCgpPT57bGV0IHQ7Y29uc3Qgbj0oZT0+ZS5zcGxpdCgiOyIpWzBdLnRyaW0oKSkoKDAsZi5tZikoKSk7dHJ5e3Q9bmV3IEludGwuTnVtYmVyRm9ybWF0KG58fCJlbi1VUyIse3N0eWxlOiJjdXJyZW5jeSIsY3VycmVuY3k6ZSxjdXJyZW5jeURpc3BsYXk6Im5hcnJvd1N5bWJvbCJ9KX1jYXRjaChlKXtlIGluc3RhbmNlb2YgRXJyb3ImJigwLHYuc1EpKCJXcm9uZyBjdXJyZW5jeSBwcm92aWRlZCB0byByZWNvbW1lbmRlZCBwcm9kdWN0Iix7bWVzc2FnZTplLm1lc3NhZ2V9KX1yZXR1cm4gdH0sW2VdKTtjb25zdCBabz0ibGVhcm5fbW9yZV9jbGlja2VkX2Zvcl9wcm9kdWN0X2lkIixKbz0iYWRkX3RvX2NhcnRfY2xpY2tlZF9mb3JfcHJvZHVjdF9pZF9hcnJheSI7dmFyIGVyPWU9PntsZXR7ZGlzcGxheWVkVmFyaWFudElkOnQsbWVzc2FnZUlkOm4saXNGbHlNZXNzYWdlOmksb25BZGRUb0NhcnQ6byxvblZpZXdDYXJ0Q2xpY2s6c309ZTtjb25zdCBsPSgwLHIud0EpKCksZD0oMCxyLmQ0KShDLkRXKSxjPWAke259XyR7dH1gLFt1LHBdPSgwLGEudXNlU3RhdGUpKCJhZGQiKSxmPSgwLGEudXNlUmVmKSgpLG09KDAsYS51c2VDYWxsYmFjaykoKCk9PntsKCgwLGsuZzZRKSh0dC5Tcy5DSEFUKSksbCgoMCxrLnE3dikoImNvbnZlcnNhdGlvbnMiKSksbCgoMCxrLmFtdikoYykpfSxbbCxjXSksaD0oMCxhLnVzZUNhbGxiYWNrKShhc3luYyBlPT57aWYoaSlyZXR1cm4gbSgpLCExO3AoImFkZGluZyIpO2NvbnN0W3RdPWF3YWl0IFByb21pc2UuYWxsKFtvKGUpLG5ldyBQcm9taXNlKGU9PntzZXRUaW1lb3V0KGUsMmUzKX0pXSk7aWYoIXQpcmV0dXJuIHAoImVycm9yIiksITE7bGV0IG49W107cmV0dXJuIGF3YWl0KDAsQS5USCkoSm8pLnRoZW4oZT0+e249QXJyYXkuaXNBcnJheShlKT9bLi4uZSxjXTpbY119KSxhd2FpdCgwLEEueDIpKEpvLG4pLHAoImFkZGVkIiksZi5jdXJyZW50PXNldFRpbWVvdXQoKCk9PntmLmN1cnJlbnQ9dm9pZCAwLHAoImNhcnQiKX0sM2UzKSwhMH0sW20sbyxpLGNdKSxnPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57dHJ5e2lmKHMoKSx3aW5kb3cudG9wKXtjb25zdCBlPXdpbmRvdy5wYXJlbnQsdD1lLndjX2FkZF90b19jYXJ0X3BhcmFtcz8uY2FydF91cmwsbj1lLlNob3BpZnk/LnJvdXRlcz8uY2FydF91cmw7aWYodCl3aW5kb3cudG9wLmxvY2F0aW9uLmFzc2lnbih0KTtlbHNle2NvbnN0e29yaWdpbjplfT13aW5kb3cudG9wLmxvY2F0aW9uO3dpbmRvdy50b3AubG9jYXRpb24uYXNzaWduKGAke2V9JHtuPz8iL2NhcnQifWApfX19Y2F0Y2h7fX0sW3NdKTtyZXR1cm4oMCxhLnVzZUVmZmVjdCkoKCk9PntpfHxudWxsPT09ZHx8KGwoKDAsay5hbXYpKG51bGwpKSxkPT09YyYmaCh0KSl9LFtkLGMsbCxoLGksdF0pLCgwLGEudXNlRWZmZWN0KSgoKT0+eygwLEEuVEgpKEpvKS50aGVuKGU9PntBcnJheS5pc0FycmF5KGUpJiZlLmluY2x1ZGVzKGMpJiZwKCJjYXJ0Iil9KX0sW2NdKSwoMCxhLnVzZUVmZmVjdCkoKCk9PigpPT57dm9pZCAwIT09Zi5jdXJyZW50JiYoY2xlYXJUaW1lb3V0KGYuY3VycmVudCksZi5jdXJyZW50PXZvaWQgMCl9LFtdKSx7YnV0dG9uU3RhdGU6dSxleGVjdXRlQWRkVG9DYXJ0OmgsaGFuZGxlVmlld0NhcnQ6Z319LHRyPW4oMzk1Mik7big1OTY5KSxuKDU1Niksbig4MzkxKTtjb25zdCBucj0iL3dwLWpzb24vd2Mvc3RvcmUvdjEvY2FydCIsaXI9KGUsdCk9Pntjb25zdCBuPWU7bi50aWRpb1djU3RvcmU9bi50aWRpb1djU3RvcmV8fHt9LG4udGlkaW9XY1N0b3JlLm5vbmNlPXR9LGFyPWU9Pntjb25zdCB0PWUuaGVhZGVycy5nZXQoIk5vbmNlIik7dCYmaXIod2luZG93LnBhcmVudCx0KX0sb3I9YXN5bmMoKT0+e3RyeXtjb25zdCBlPShhd2FpdCB3aW5kb3cucGFyZW50LmZldGNoKG5yLHttZXRob2Q6IkdFVCIsY3JlZGVudGlhbHM6ImluY2x1ZGUifSkpLmhlYWRlcnMuZ2V0KCJOb25jZSIpO3JldHVybiBlJiZpcih3aW5kb3cucGFyZW50LGUpLGU/P3ZvaWQgMH1jYXRjaHtyZXR1cm59fSxycj1hc3luYyBmdW5jdGlvbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307Y29uc3R7cXVhbnRpdHk6bj0xfT10O2xldCBpPWZ1bmN0aW9uKCl7cmV0dXJuKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSkubm9uY2VUb2tlbnx8KGU9d2luZG93LnBhcmVudCxlLnRpZGlvV2NTdG9yZT8ubm9uY2UpO3ZhciBlfSh0KTtjb25zdCBhPXt9O2l8fChpPWF3YWl0IG9yKCkpLGkmJihhLk5vbmNlPWkpO2NvbnN0IG89bmV3IFVSTFNlYXJjaFBhcmFtcyh7aWQ6U3RyaW5nKGUpLHF1YW50aXR5OlN0cmluZyhuKX0pLHI9YCR7bnJ9L2FkZC1pdGVtPyR7b31gLHM9e21ldGhvZDoiUE9TVCIsaGVhZGVyczphLGNyZWRlbnRpYWxzOiJpbmNsdWRlIn07dHJ5e2NvbnN0IGU9YXdhaXQgd2luZG93LnBhcmVudC5mZXRjaChyLHMpO2lmKDQwMz09PWUuc3RhdHVzfHw0MDE9PT1lLnN0YXR1cyl7Y29uc3QgdD1lLmhlYWRlcnMuZ2V0KCJOb25jZSIpPz9hd2FpdCBvcigpO2lmKHQpe2lyKHdpbmRvdy5wYXJlbnQsdCk7Y29uc3QgZT1hd2FpdCB3aW5kb3cucGFyZW50LmZldGNoKHIsey4uLnMsaGVhZGVyczp7Tm9uY2U6dH19KTtyZXR1cm4gYXIoZSksZX1yZXR1cm4gZX1yZXR1cm4gYXIoZSksZX1jYXRjaChlKXt0aHJvdyBlIGluc3RhbmNlb2YgRXJyb3I/ZTpuZXcgRXJyb3IoIkNvdWxkbid0IGFkZCB0byBXb29Db21tZXJjZSBjYXJ0IGZyb20gcGFyZW50IHdpbmRvdyIpfX07dmFyIHNyPWU9Pntjb25zdCB0PSgwLGEudXNlQ29udGV4dCkocnQpO3JldHVybiB0PygwLEYuY3JlYXRlUG9ydGFsKSgoMCxWLlkpKGN0LHsuLi5lfSksdCk6bnVsbH07Y29uc3QgbHI9e25hbWU6IjZsYWFrbyIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDtwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDZweCk7cGFkZGluZzo4cHggMTJweDtsaW5lLWhlaWdodDoyMHB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcik7Y29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1jb250cmFzdCk7Jjpub3QoOmRpc2FibGVkKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItaG92ZXIpO30mOm5vdCg6ZGlzYWJsZWQpOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItYWN0aXZlKTt9JjpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3Rjk7Y29sb3I6IzY0NzQ5MTtvdXRsaW5lOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IsICNEM0RCRTUpO3BhZGRpbmc6OHB4IDExcHg7Y3Vyc29yOmRlZmF1bHQ7fSJ9O3ZhciBkcj17YnV0dG9uOmxyLGFkZGVkVG9DYXJ0QnV0dG9uOigwLGQuQUgpKGxyLCImIHN2Z3tmaWxsOiMzNEI4NTc7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDt9IiwiIiksYWRkaW5nVG9DYXJ0QnV0dG9uOigwLGQuQUgpKGxyLCImOmhvdmVye2N1cnNvcjpwcm9ncmVzczt9JiBzdmcubG9hZGVyLWljb257cG9zaXRpb246c3RhdGljO30iLCIiKSx2aWV3Q2FydFBsYXlncm91bmRUb29sdGlwOigwLGQuQUgpKE5pLnRvb2x0aXAsIndpZHRoOjIxN3B4O3doaXRlLXNwYWNlOm5vcm1hbDsiLCIiKSxlcnJvck1lc3NhZ2VDb250YWluZXI6e25hbWU6Ijg5emo0eCIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7JiBzdmd7ZmlsbDojRTgxMzMyO3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7ZmxleC1zaHJpbms6MDt9In0sZXJyb3JNZXNzYWdlOntuYW1lOiIxNTRiYm5kIixzdHlsZXM6ImNvbG9yOiNFODEzMzI7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MTZweCJ9fTtjb25zdCBjcj1lPT57bGV0e2J1dHRvblN0YXRlOnQsb25BZGRUb0NhcnRDbGljazpuLG9uVmlld0NhcnRDbGljazppLG9uVmlld0RldGFpbHNDbGljazphLGRpc2FibGVkOm89ITF9PWU7Y29uc3Qgcj0oMCxmLk1JKSgpO2lmKCJhZGQiPT09dClyZXR1cm4oMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGRpc2FibGVkOm8sb25DbGljazpuLGNzczpkci5idXR0b24sY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6InJlY29tbWVuZFByb2R1Y3RBZGRUb0NhcnQiLGZhbGxiYWNrOiJBZGQgdG8gY2FydCJ9KX0pO2lmKCJhZGRpbmciPT09dClyZXR1cm4oMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixkaXNhYmxlZDohMCxjc3M6ZHIuYWRkaW5nVG9DYXJ0QnV0dG9uLGNoaWxkcmVuOlsoMCxWLlkpKHV0LnRSLHt3aWR0aDoyMCxoZWlnaHQ6MjB9KSwoMCxWLlkpKE9uLHt2YWx1ZToicmVjb21tZW5kUHJvZHVjdEFkZGluZ1RvQ2FydCIsZmFsbGJhY2s6IkFkZGluZyB0byBjYXJ0In0pXX0pO2lmKCJhZGRlZCI9PT10KXJldHVybigwLFYuRkQpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGRpc2FibGVkOiEwLGNzczpkci5hZGRlZFRvQ2FydEJ1dHRvbixjaGlsZHJlbjpbKDAsVi5ZKSh1dC5vaCx7fSksKDAsVi5ZKShPbix7dmFsdWU6InJlY29tbWVuZFByb2R1Y3RBZGRlZCIsZmFsbGJhY2s6IkFkZGVkIn0pXX0pO2lmKCJjYXJ0Ij09PXQpe2NvbnN0IGU9b3x8cjtyZXR1cm4oMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixkaXNhYmxlZDplLG9uQ2xpY2s6aSxjc3M6W2RyLmJ1dHRvbixOaS50b29sdGlwQnV0dG9uKHtzaG93T25EaXNhYmxlZDohMH0pLCIiLCIiXSxjaGlsZHJlbjpbKDAsVi5ZKShPbix7dmFsdWU6InJlY29tbWVuZFByb2R1Y3RWaWV3Q2FydCIsZmFsbGJhY2s6IlZpZXcgY2FydCJ9KSxyJiYoMCxWLlkpKCJzcGFuIix7Y2xhc3NOYW1lOiJ0b29sdGlwIixjc3M6ZHIudmlld0NhcnRQbGF5Z3JvdW5kVG9vbHRpcCxjaGlsZHJlbjooMCx5LnB3KSgidmlld0NhcnRBY3Rpb25Ob3RBdmFpbGFibGVJblBsYXlncm91bmQiLG51bGwsIlZpZXcgY2FydCBhY3Rpb24gaXNuJ3QgYXZhaWxhYmxlIGluIEx5cm8gcGxheWdyb3VuZC4iKX0pXX0pfXJldHVybiJlcnJvciI9PT10PygwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6YSxjc3M6ZHIuYnV0dG9uLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJyZWNvbW1lbmRQcm9kdWN0Vmlld0RldGFpbHMiLGZhbGxiYWNrOiJWaWV3IGRldGFpbHMifSl9KSwoMCxWLkZEKSgiZGl2Iix7Y3NzOmRyLmVycm9yTWVzc2FnZUNvbnRhaW5lcixjaGlsZHJlbjpbKDAsVi5ZKSh1dC5tbyx7fSksKDAsVi5ZKSgicCIse2Nzczpkci5lcnJvck1lc3NhZ2UsY2hpbGRyZW46KDAseS5wdykoInJlY29tbWVuZFByb2R1Y3RBZGRUb0NhcnRFcnJvciIsbnVsbCwiQ291bGRuJ3QgYWRkIHRvIGNhcnQuIE9wZW4gdGhlIHByb2R1Y3QgcGFnZSB0byBjb250aW51ZS4iKX0pXX0pXX0pOm51bGx9O3ZhciB1cj1lPT57bGV0e2Rpc3BsYXllZFZhcmlhbnRJZDp0LG1lc3NhZ2VJZDpuLGRpc2FibGVkOmksb25BZGRUb0NhcnQ6byxvblZpZXdEZXRhaWxzQ2xpY2s6cyxpc0ZseU1lc3NhZ2U6bH09ZTtjb25zdCBkPSgwLHIud0EpKCksYz0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+eygwLGYuTUkpKCl8fGQoKDAsay5wTzYpKGx0LlgucHJvZHVjdFJlY29tbWVuZGF0aW9uVmlld0NhcnRDbGlja2VkKSl9LFtkXSkse2J1dHRvblN0YXRlOnUsZXhlY3V0ZUFkZFRvQ2FydDpwLGhhbmRsZVZpZXdDYXJ0Om19PWVyKHtkaXNwbGF5ZWRWYXJpYW50SWQ6dCxtZXNzYWdlSWQ6bixpc0ZseU1lc3NhZ2U6bCxvbkFkZFRvQ2FydDpvLG9uVmlld0NhcnRDbGljazpjfSksaD0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e3AodCl9LFtwLHRdKTtyZXR1cm4oMCxWLlkpKGNyLHtidXR0b25TdGF0ZTp1LG9uQWRkVG9DYXJ0Q2xpY2s6aCxvblZpZXdDYXJ0Q2xpY2s6bSxvblZpZXdEZXRhaWxzQ2xpY2s6cyxkaXNhYmxlZDppfSl9O2NvbnN0IHByPXttOntidXR0b25TaXplOjI4LGljb25TaXplOjE4fSxsOntidXR0b25TaXplOjMwLGljb25TaXplOjE4fX0sZnI9ZT0+e2NvbnN0e2J1dHRvblNpemU6dCxpY29uU2l6ZTpufT1wcltlXTtyZXR1cm4oMCxkLkFIKSh7d2lkdGg6dCxoZWlnaHQ6dCxkaXNwbGF5OiJmbGV4IixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixhbGlnbkl0ZW1zOiJjZW50ZXIiLGZsZXhTaHJpbms6MCxib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1zbWFsbC1jb21wb25lbnQsIDhweCkiLHN2Zzp7ZmlsbDoiIzY0NzQ5MSIsd2lkdGg6bixoZWlnaHQ6bn0sIiY6Zm9jdXMiOntvdXRsaW5lOiJub25lIn0sIiY6bm90KDpkaXNhYmxlZCkiOntjdXJzb3I6InBvaW50ZXIiLCImOmhvdmVyLCAmOmZvY3VzIjp7YmFja2dyb3VuZDoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1iYWNrZ3JvdW5kKSIsc3ZnOntmaWxsOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKSJ9fSwiJjphY3RpdmUiOntiYWNrZ3JvdW5kOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLWJhY2tncm91bmQtYWN0aXZlKSJ9fSwiJjpkaXNhYmxlZCI6e2N1cnNvcjoiZGVmYXVsdCIsc3ZnOntmaWxsOiIjQUNCOENCIn19fSwiIiwiIil9O3ZhciBtcj1lPT57bGV0e2ljb246dCxzaXplOm49ImwiLC4uLml9PWU7cmV0dXJuKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6ZnIobiksLi4uaSxjaGlsZHJlbjooMCxWLlkpKHQse30pfSl9O3ZhciBocj17aGVhZGVyOigwLGQuQUgpKHtkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLHBvc2l0aW9uOiJyZWxhdGl2ZSIscGFkZGluZzoiMjBweCAxMnB4IixmbGV4U2hyaW5rOjB9LCIiLCIiKSx0aXRsZTooMCxkLkFIKSh7Zm9udFNpemU6MTYsZm9udFdlaWdodDo2MDAsY29sb3I6IiMwODBmMWEiLGxpbmVIZWlnaHQ6IjIwcHgiLGxldHRlclNwYWNpbmc6Ii0wLjAxZW0iLG92ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLGRpc3BsYXk6Ii13ZWJraXQtYm94IixXZWJraXRMaW5lQ2xhbXA6MyxXZWJraXRCb3hPcmllbnQ6InZlcnRpY2FsIixtYXhXaWR0aDpgY2FsYygxMDAlIC0gJHsyKigxMitwci5sLmljb25TaXplKX1weClgLHRleHRBbGlnbjoiY2VudGVyIn0sIiIsIiIpLGNsb3NlQnV0dG9uOigwLGQuQUgpKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHJpZ2h0OjEyfSwiIiwiIiksbGlzdDp7bmFtZToiMXM4ajY2cCIsc3R5bGVzOiJvdmVyZmxvdy15OmF1dG87ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOjBweCAxMnB4IDMycHggMTJweDtnYXA6NHB4In0scm93Q29udGVudDp7bmFtZToicTBncmNvIixzdHlsZXM6IndpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjEycHggOHB4O2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIwcHg7Ym9yZGVyLXJhZGl1czo0cHg7Y3Vyc29yOmRlZmF1bHQ7Jjpub3QoOmRpc2FibGVkKXsmOmhvdmVye2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6I0Y1RjdGOTt9Jjpmb2N1c3tvdXRsaW5lOm5vbmU7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAycHggdmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcik7fX0ifSxsYWJlbDooZSx0KT0+KDAsZC5BSCkoe2ZvbnRXZWlnaHQ6NTAwLHRleHREZWNvcmF0aW9uOmU/ImxpbmUtdGhyb3VnaCI6Im5vbmUiLGNvbG9yOmU/IiM2NDc0OTEiOiIjMDgwRjFBIix0ZXh0QWxpZ246ImxlZnQiLGRpc3BsYXk6Ii13ZWJraXQtYm94IixXZWJraXRMaW5lQ2xhbXA6dD8xOjIsV2Via2l0Qm94T3JpZW50OiJ2ZXJ0aWNhbCIsb3ZlcmZsb3c6ImhpZGRlbiJ9LCIiLCIiKSxwcmljZTp7bmFtZToidXFveHA0IixzdHlsZXM6ImNvbG9yOiM2NDc0OTE7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0In19O2NvbnN0IGdyPVsibWVhc3VyZW1lbnQud2VpZ2h0Il07dmFyIGJyPWU9PntsZXR7dGl0bGU6dCx2YXJpYW50czpuLGN1cnJlbmN5Omksb25DbG9zZTphLG9uU2VsZWN0Om99PWU7Y29uc3Qgcz1RbyhpKSxsPSgwLHIuZDQpKEMuTnkpO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLkZEKSgiZGl2Iix7Y3NzOmhyLmhlYWRlcixjaGlsZHJlbjpbKDAsVi5ZKSgicCIse2Nzczpoci50aXRsZSxjaGlsZHJlbjp0fSksKDAsVi5ZKShtcix7aWNvbjp1dC5ibSxjc3M6aHIuY2xvc2VCdXR0b24sb25DbGljazphLCJhcmlhLWxhYmVsIjooMCx5LnB3KSgiY2xvc2UiLG51bGwsIkNsb3NlIil9KV19KSwoMCxWLlkpKCJkaXYiLHtjc3M6aHIubGlzdCxjaGlsZHJlbjpuLm1hcChlPT57Y29uc3QgdD0hMT09PWUuYXZhaWxhYmxlX2Zvcl9zYWxlLG49KGU9Pntjb25zdCB0PU9iamVjdC5lbnRyaWVzKGUudmFyaWFudCksbj10LmZpbHRlcihlPT57bGV0W3RdPWU7cmV0dXJuIWdyLmluY2x1ZGVzKHQpfSk7cmV0dXJuIDA9PT1uLmxlbmd0aD90Lm1hcChlPT57bGV0Wyx0XT1lO3JldHVybiB0fSkuam9pbigiLCAiKTpuLm1hcChlPT57bGV0Wyx0XT1lO3JldHVybiB0fSkuam9pbigiLCAiKX0pKGUpO3JldHVybigwLFYuRkQpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNzczpoci5yb3dDb250ZW50LGRpc2FibGVkOnQsb25DbGljazooKT0+byhlLnZhcmlhbnRfaWQpLGNoaWxkcmVuOlsoMCxWLlkpKCJzcGFuIix7Y3NzOmhyLmxhYmVsKHQsbCksY2hpbGRyZW46bn0pLCgwLFYuWSkoInNwYW4iLHtjc3M6aHIucHJpY2UsY2hpbGRyZW46dD8oMCxWLlkpKE9uLHt2YWx1ZToicmVjb21tZW5kUHJvZHVjdFNvbGRPdXQiLGZhbGxiYWNrOiJTb2xkIG91dCJ9KTpzPy5mb3JtYXQoZS5wcmljZSk/P2Ake2UucHJpY2V9YH0pXX0sZS52YXJpYW50X2lkKX0pfSldfSl9O3ZhciB2cj1lPT57bGV0e3Byb2R1Y3Q6dCx2YXJpYW50Om4sbWVzc2FnZUlkOmksb25WaWV3RGV0YWlsc0NsaWNrOm99PWU7Y29uc3Qgcz0oMCxyLndBKSgpLGw9KDAsci5kNCkoQy51bykse3ZhcmlhbnRfaWQ6ZCxjdXJyZW5jeTpjfT1uLFt1LHBdPSgwLGEudXNlU3RhdGUpKCExKSxtPSgwLGYuTUkpKCksaD0oMCxhLnVzZUNhbGxiYWNrKShhc3luYyBlPT57Y29uc3QgaT10LnZhcmlhbnRzLmZpbmQodD0+dC52YXJpYW50X2lkPT09ZSk/P247aWYobSlyZXR1cm4hMDtzKCgwLGsuaWFxKSh7cHJvZHVjdElkOnQucHJvZHVjdF9pZCxjdGE6ImFkZF90b19jYXJ0IixwcmljZTpNYXRoLnJvdW5kKDEwMCppLnByaWNlKSxjdXJyZW5jeTppLmN1cnJlbmN5fSkpLHMoKDAsay5wTzYpKGx0LlguYWlBc3Npc3RhbnRQcm9kdWN0Q2FyZEFkZFRvQ2FydENsaWNrZWQpKTt0cnl7bGV0IHQ9bnVsbDtpZihsPT09dHQuT0QuU0hPUElGWSl0PWF3YWl0KDAsdHIuSWwpKGUpO2Vsc2V7aWYobCE9PXR0Lk9ELldPT0NPTU1FUkNFKXJldHVybigwLHYuc1EpKCJBZGQgdG8gY2FydDogdW5zdXBwb3J0ZWQgcGxhdGZvcm0iLHttZXNzYWdlOmx9KSwhMTt0PWF3YWl0IHJyKGUpfXJldHVybiEhdC5va3x8KCgwLHYuc1EpKCJBZGQgdG8gY2FydCByZXF1ZXN0IGZhaWxlZCIse21lc3NhZ2U6dC5zdGF0dXNUZXh0LHBsYXRmb3JtOmx9KSwhMSl9Y2F0Y2goZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmKDAsdi5zUSkoIkFkZCB0byBjYXJ0IHJlcXVlc3QgZmFpbGVkIix7bWVzc2FnZTplLm1lc3NhZ2UscGxhdGZvcm06bH0pLCExfX0sW3MsbCx0LnByb2R1Y3RfaWQsdC52YXJpYW50cyxtLG5dKSxnPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57bXx8cygoMCxrLnBPNikobHQuWC5haUFzc2lzdGFudFByb2R1Y3RDYXJkVmlld0NhcnRDbGlja2VkKSl9LFtzLG1dKSx7YnV0dG9uU3RhdGU6YixleGVjdXRlQWRkVG9DYXJ0OngsaGFuZGxlVmlld0NhcnQ6eX09ZXIoe2Rpc3BsYXllZFZhcmlhbnRJZDpkLG1lc3NhZ2VJZDppLG9uQWRkVG9DYXJ0Omgsb25WaWV3Q2FydENsaWNrOmd9KSx3PSgwLGEudXNlTWVtbykoKCk9PnQudmFyaWFudHMuZmlsdGVyKGU9Pk9iamVjdC5rZXlzKGUudmFyaWFudCkubGVuZ3RoPjApLFt0LnZhcmlhbnRzXSksQT0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e3cubGVuZ3RoPjE/cCghMCk6eChkKX0sW3cubGVuZ3RoLGQseF0pLEU9KDAsYS51c2VDYWxsYmFjaykoZT0+e218fHMoKDAsay5wTzYpKGx0LlguYWlBc3Npc3RhbnRQcm9kdWN0Q2FyZFZhcmlhbnRQaWNrZXJWYXJpYW50Q2xpY2tlZCkpLHAoITEpLHgoZSl9LFt4LHMsbV0pLFM9KDAsYS51c2VDYWxsYmFjaykoKCk9PntwKCExKX0sW10pO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKHNyLHtpc09wZW46dSxvbkNsb3NlOlMsY2hpbGRyZW46KDAsVi5ZKShicix7dmFyaWFudHM6dyx0aXRsZTp0LnRpdGxlLGN1cnJlbmN5OmMsb25DbG9zZTpTLG9uU2VsZWN0OkV9KX0pLCgwLFYuWSkoY3Ise2J1dHRvblN0YXRlOmIsb25BZGRUb0NhcnRDbGljazpBLG9uVmlld0NhcnRDbGljazp5LG9uVmlld0RldGFpbHNDbGljazpvfSldfSl9O3ZhciB4cj17Y29udGFpbmVyOntuYW1lOiIxOTFucTdsIixzdHlsZXM6Im92ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkICNFNkU4RUY7Ym9yZGVyLXJhZGl1czoxMnB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cG9zaXRpb246cmVsYXRpdmUifSxjbGlja2FibGVDb250YWluZXI6e25hbWU6ImNyZWowaiIsc3R5bGVzOiJjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3BhY2l0eTowO3otaW5kZXg6MTtjb2xvcjppbmhlcml0OyY6Zm9jdXN7b3V0bGluZTpub25lO30mOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lO30ifSxpbWFnZTp7bmFtZToiMWN6MTdpaCIsc3R5bGVzOiJkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjEgLyAxO29iamVjdC1maXQ6Y29udGFpbjtvYmplY3QtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtwb2ludGVyLWV2ZW50czpub25lO3VzZXItc2VsZWN0Om5vbmUifSxjb250ZW50Q29udGFpbmVyOntuYW1lOiIxYTgwOWYyIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEycHg7cGFkZGluZzoxNnB4IDEycHg7Ym9yZGVyLXJhZGl1czoxMnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mjtwb2ludGVyLWV2ZW50czpub25lIn0sYnV0dG9uc0NvbnRhaW5lcjp7bmFtZToibTdkZnluIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEycHg7cG9pbnRlci1ldmVudHM6YXV0byJ9LGdldFRpdGxlVGV4dDplPT4oMCxkLkFIKSh7Zm9udFdlaWdodDo2MDAsZGlzcGxheToiLXdlYmtpdC1ib3giLFdlYmtpdEJveE9yaWVudDoidmVydGljYWwiLFdlYmtpdExpbmVDbGFtcDoyLG92ZXJmbG93OiJoaWRkZW4iLC4uLmUmJntXZWJraXRMaW5lQ2xhbXA6MX19LCIiLCIiKSxwcmljZVRleHQ6e25hbWU6IjE2Y2VnbGIiLHN0eWxlczoiZm9udC13ZWlnaHQ6NjAwIn0sbGlua0J1dHRvbjp7bmFtZToia2xrdHVlIixzdHlsZXM6IndpZHRoOjEwMCU7Jjpmb2N1c3tvdXRsaW5lOm5vbmU7fSY6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9In0sdGV4dEFuZFByaWNlc0NvbnRhaW5lcjp7bmFtZToidXJxc3ppIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweCJ9LHByaWNlc0NvbnRhaW5lcjp7bmFtZToiNDkwdGxnIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtnYXA6NHB4In0sYmFzZVByaWNlVGV4dDp7bmFtZToic2FwNzMyIixzdHlsZXM6ImNvbG9yOiM2NDc0OTE7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaCJ9LHZpZXdEZXRhaWxzQnV0dG9uOmU9PigwLGQuQUgpKHtwYWRkaW5nOiI3cHggMHB4Iixjb2xvcjoiIzA1NjZGRiIsZGlzcGxheToiZmxleCIsanVzdGlmeUNvbnRlbnQ6ImZsZXgtc3RhcnQiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjQsLi4uIWUmJntmb250V2VpZ2h0OjYwMH0sIiY6Zm9jdXMiOntvdXRsaW5lOiJub25lIn0sIiY6aG92ZXIiOnt0ZXh0RGVjb3JhdGlvbjoidW5kZXJsaW5lIn0sIiYgc3ZnIjp7ZmlsbDoiIzA1NjZGRiIsd2lkdGg6MTYsaGVpZ2h0OjE2fX0sIiIsIiIpfTt2YXIgeXI9ZT0+e2xldHt2YXJpYW50OnQscHJvZHVjdDpuLGlzQWRkVG9DYXJ0RW5hYmxlZDppLG1lc3NhZ2VJZDpvfT1lO2NvbnN0IHM9KDAsci53QSkoKSxsPSgwLHIuZDQpKEMuTnkpLHtpc05ld1NraW46ZH09KDAscC5BKSgpLGM9aHQoZCkse2Jhc2VfcHJpY2U6dSxwcmljZTptLGN1cnJlbmN5OmgsdXJsOmcsaW1hZ2VfdXJsOmJ9PXQse3RpdGxlOnZ9PW4seD0oMCxmLklGKShnKSx5PXUmJm0hPT11LHc9UW8oaCksQT1NYXRoLnJvdW5kKDEwMCptKSxFPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57KDAsZi5NSSkoKXx8KHMoKDAsay5pYXEpKHtwcm9kdWN0SWQ6bi5wcm9kdWN0X2lkLGN0YToidmlld19kZXRhaWxzIixwcmljZTpBLGN1cnJlbmN5Omh9KSkscygoMCxrLnBPNikobHQuWC5haUFzc2lzdGFudFByb2R1Y3RDYXJkVmlld0RldGFpbHNDbGlja2VkKSkpLCgwLGYuRmUpKHgpfSxbaCxzLHgsQSxuLnByb2R1Y3RfaWRdKTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y3NzOnhyLmNvbnRhaW5lcixjaGlsZHJlbjpbKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6eHIuY2xpY2thYmxlQ29udGFpbmVyLG9uQ2xpY2s6RSxjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToicmVjb21tZW5kUHJvZHVjdFZpZXdEZXRhaWxzIixmYWxsYmFjazoiVmlldyBkZXRhaWxzIn0pfSksYiYmKDAsVi5ZKSgiaW1nIix7c3JjOmIsYWx0OnYsY3NzOnhyLmltYWdlfSksKDAsVi5GRCkoImRpdiIse2Nzczp4ci5jb250ZW50Q29udGFpbmVyLGNoaWxkcmVuOlsoMCxWLkZEKSgiZGl2Iix7Y3NzOnhyLnRleHRBbmRQcmljZXNDb250YWluZXIsY2hpbGRyZW46WygwLFYuWSkoInAiLHtjc3M6W3hyLmdldFRpdGxlVGV4dChsKSxjLnRleHQxNE1lZGl1bSwiIiwiIl0sY2hpbGRyZW46dn0pLHcmJigwLFYuRkQpKCJkaXYiLHtjc3M6eHIucHJpY2VzQ29udGFpbmVyLGNoaWxkcmVuOlt5JiYoMCxWLlkpKCJwIix7Y3NzOlt4ci5iYXNlUHJpY2VUZXh0LGMudGV4dDE0TWVkaXVtLCIiLCIiXSxjaGlsZHJlbjp3LmZvcm1hdCh1KX0pLCgwLFYuWSkoInAiLHtjc3M6W3hyLnByaWNlVGV4dCxjLnRleHQxNE1lZGl1bSwiIiwiIl0sY2hpbGRyZW46dy5mb3JtYXQobSl9KV19KV19KSwoMCxWLlkpKCJkaXYiLHtjc3M6eHIuYnV0dG9uc0NvbnRhaW5lcixjaGlsZHJlbjppPygwLFYuWSkodnIse3Byb2R1Y3Q6bix2YXJpYW50OnQsbWVzc2FnZUlkOm8sb25WaWV3RGV0YWlsc0NsaWNrOkV9KTooMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6eHIudmlld0RldGFpbHNCdXR0b24oZCksb25DbGljazpFLGNoaWxkcmVuOlsoMCxWLlkpKE9uLHt2YWx1ZToicmVjb21tZW5kUHJvZHVjdFZpZXdEZXRhaWxzIixmYWxsYmFjazoiVmlldyBkZXRhaWxzIn0pLCgwLFYuWSkodXQuaTMse30pXX0pfSldfSldfSl9LHdyPW4oNjU5Myksa3I9bi5uKHdyKTtjb25zdCBBcj0oMCxkLmk3KSh7IjAlIjp7dHJhbnNmb3JtOiJ0cmFuc2xhdGVYKDglKSJ9LCIxMDAlIjp7dHJhbnNmb3JtOiJ0cmFuc2xhdGVYKDApIn19KSxDcj0oMCxkLmk3KSh7IjAlIjp7b3BhY2l0eToxLHpJbmRleDoxfSwiMTAwJSI6e29wYWNpdHk6MCx6SW5kZXg6LTF9fSk7dmFyIEVyPXtzbGlkZXNob3dDb250YWluZXI6e25hbWU6IjFvZHIyMHIiLHN0eWxlczoicG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3cteDpoaWRkZW47d2lkdGg6MTAwJTtmbG9hdDpsZWZ0In0sY29udGFpbmVyOntuYW1lOiJqaWFhY2IiLHN0eWxlczoicG9zaXRpb246cmVsYXRpdmU7Y2xlYXI6Ym90aDt3aWR0aDoxMDAlO2Zsb2F0OmxlZnQifSxnZXRCdXR0b246KGUsdCk9PigwLGQuQUgpKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGJhY2tncm91bmQ6IiNmZmYiLGJvcmRlclJhZGl1czoiNTAlIix3aWR0aDo0MCxoZWlnaHQ6NDAsYm94U2hhZG93OiIgMCAxMnB4IDMycHggMCByZ2JhKDgsIDE1LCAyNiwgMC4xMikiLHpJbmRleDozLHRvcDp0PzIyOjE0MCx0cmFuc2l0aW9uOiJib3gtc2hhZG93IDAuMnMsIG9wYWNpdHkgMC4ycyIsIiY6aG92ZXIiOntib3hTaGFkb3c6IjBweCAxMHB4IDIwcHggMHB4IHJnYmEoMCwgMjcsIDcxLCAwLjI0KSJ9LCImOmZvY3VzIjp7b3V0bGluZToibm9uZSJ9LC4uLiJsZWZ0Ij09PWUmJntsZWZ0OjB9LC4uLiJyaWdodCI9PT1lJiZ7cmlnaHQ6MH0sIiYgc3ZnIjp7d2lkdGg6NDAsaGVpZ2h0OjQwLC4uLiJsZWZ0Ij09PWUmJnt0cmFuc2Zvcm06InJvdGF0ZSg5MGRlZykiLCIubGFuZy1ydGwgJiI6e3RyYW5zZm9ybToicm90YXRlKC05MGRlZykifX0sLi4uInJpZ2h0Ij09PWUmJnt0cmFuc2Zvcm06InJvdGF0ZSgtOTBkZWcpIiwiLmxhbmctcnRsICYiOnt0cmFuc2Zvcm06InJvdGF0ZSg5MGRlZykifX19fSwiIiwiIiksZ2V0SXRlbXNDb250YWluZXI6ZT0+e2NvbnN0IHQ9ZT8yMDoyNDtyZXR1cm4oMCxkLkFIKSh7cGFkZGluZzpgMHB4ICR7dH1weGAsbWF4V2lkdGg6YGNhbGMoMTAwJSArICR7Mip0fXB4KWAsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLG92ZXJmbG93OiJhdXRvIixib3JkZXJSYWRpdXM6MCxkaXNwbGF5OiJmbGV4IixzY3JvbGxTbmFwVHlwZToieCBtYW5kYXRvcnkiLHNjcm9sbFBhZGRpbmc6dCxzY3JvbGxCZWhhdmlvcjoic21vb3RoIixtYXJnaW5Cb3R0b206NSxtYXJnaW5MZWZ0Oi10LG1hcmdpblJpZ2h0Oi10LGdhcDoxMCxtc092ZXJmbG93U3R5bGU6Im5vbmUiLHNjcm9sbGJhcldpZHRoOiJub25lIiwiOjotd2Via2l0LXNjcm9sbGJhciI6e2Rpc3BsYXk6Im5vbmUifSwiLmlvcy1pcGFkICYiOntXZWJraXRPdmVyZmxvd1Njcm9sbGluZzoidG91Y2gifSwiLnNhZmFyaSAmIjp7c2Nyb2xsU25hcFR5cGU6InggbWFuZGF0b3J5IiwiLmxhbmctcnRsICYiOntzY3JvbGxTbmFwVHlwZToibm9uZSJ9fX0sIiIsIiIpfSxnZXRJdGVtV3JhcHBlcjooZSx0KT0+KDAsZC5BSCkoe21heFdpZHRoOiIxMDAlIixtaW5XaWR0aDplLHNjcm9sbFNuYXBBbGlnbjoiY2VudGVyIix3aWxsQ2hhbmdlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybToidHJhbnNsYXRlWCg4JSkiLGFuaW1hdGlvbjpgJHtBcn0gLjVzIC4ycyBlYXNlLW91dCBmb3J3YXJkc2AscG9zaXRpb246InJlbGF0aXZlIiwiJjpiZWZvcmUiOntjb250ZW50OiciIicscG9zaXRpb246ImFic29sdXRlIix6SW5kZXg6MSxwb2ludGVyRXZlbnRzOiJub25lIixiYWNrZ3JvdW5kQ29sb3I6IiNmZmYiLHdpbGxDaGFuZ2U6Im9wYWNpdHkiLG9wYWNpdHk6MSxhbmltYXRpb246YCR7Q3J9IC41cyAuMnMgZWFzZS1vdXQgZm9yd2FyZHNgfSwiJjpudGgtY2hpbGQoMikiOnthbmltYXRpb25EZWxheToiLjRzIiwiJjpiZWZvcmUiOnthbmltYXRpb25EZWxheToiLjRzIn19LC4uLnQmJnttYXhXaWR0aDplfX0sIiIsIiIpfTt2YXIgU3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuREVGQVVMVD0iZGVmYXVsdCIsZS5SRVZFUlNFPSJyZXZlcnNlIixlfShTcnx8e30pO3ZhciBEcj1lPT57bGV0e2l0ZW1zOnQsaXRlbUtleTpuLHJlbmRlckl0ZW06aSxpc1dpdGhvdXRJbWFnZXM6bz0hMSxpc0ZseU1lc3NhZ2U6cz0hMX09ZTtjb25zdCBsPSgwLHIud0EpKCksZD0oMCx5LlY4KSgpLGM9cz8yMjQ6MjQwLHU9dC5sZW5ndGgscD1hLnVzZVJlZihudWxsKSxmPWEudXNlUmVmKCExKSxbbSxoXT1hLnVzZVN0YXRlKFNyLlJFVkVSU0UpLFtnLGJdPWEudXNlU3RhdGUoMCksW3YseF09YS51c2VTdGF0ZSgwKSxbdyxBXT1hLnVzZVN0YXRlKDApLEM9KDAsYS51c2VDYWxsYmFjaykoKCk9PntsKCgwLGsucE82KShsdC5YLmNhcmRzU2Nyb2xsZWQpKX0sW2xdKSxFPSgwLGEudXNlTWVtbykoKCk9PntpZighcC5jdXJyZW50KXJldHVybiAwO2NvbnN0IGU9ZD8tMSp3Onc7cmV0dXJuIGU8MTA/MDplPjAmJmU8YyYmdT4xPzE6TWF0aC5mbG9vcihlLyhjKzEwKSkrMX0sW3csYyxkLHVdKSxTPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57cC5jdXJyZW50JiYocC5jdXJyZW50LnNjcm9sbExlZnQrPWMsQygpKX0sW0MsY10pLEQ9KDAsYS51c2VDYWxsYmFjaykoKCk9PntwLmN1cnJlbnQmJihwLmN1cnJlbnQuc2Nyb2xsTGVmdC09YyxDKCkpfSxbQyxjXSk7cmV0dXJuKDAsYS51c2VFZmZlY3QpKCgpPT57aWYoIXAuY3VycmVudHx8Zi5jdXJyZW50KXJldHVybigpPT57fTtmLmN1cnJlbnQ9ITAscC5jdXJyZW50LnNjcm9sbExlZnQ+MD9oKFNyLkRFRkFVTFQpOnAuY3VycmVudC5zY3JvbGxMZWZ0PTA7Y29uc3QgZT1rcigpKCgpPT57cC5jdXJyZW50JiZBKHAuY3VycmVudC5zY3JvbGxMZWZ0KX0sODApO3JldHVybiBwLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixlKSxiKHAuY3VycmVudD8ub2Zmc2V0V2lkdGh8fDApLHgocC5jdXJyZW50Py5zY3JvbGxXaWR0aHx8MCksQShwLmN1cnJlbnQmJmQmJiJkZWZhdWx0Ij09PW0/cC5jdXJyZW50LnNjcm9sbFdpZHRoLXAuY3VycmVudC5vZmZzZXRXaWR0aDowKSwoKT0+e3AuY3VycmVudCYmcC5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsZSl9fSxbZCxtXSksKDAsVi5GRCkoImRpdiIse2NzczpFci5zbGlkZXNob3dDb250YWluZXIsY2hpbGRyZW46WygwLFYuWSkoImRpdiIse2NzczpFci5jb250YWluZXIsY2xhc3NOYW1lOiJzbGlkZXNob3ciLGNoaWxkcmVuOmQ/KDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WyJkZWZhdWx0Ij09PW0mJigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKCQse2NsYXNzTmFtZXM6ImZhZGUyMDAiLGluOnYtZz53LGNoaWxkcmVuOigwLFYuWSkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY3NzOkVyLmdldEJ1dHRvbigibGVmdCIsbyksb25DbGljazpTLGNoaWxkcmVuOigwLFYuWSkodXQuc1gse30pfSl9KSwoMCxWLlkpKCQse2NsYXNzTmFtZXM6ImZhZGUyMDAiLGluOnc+MTAsY2hpbGRyZW46KDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6RXIuZ2V0QnV0dG9uKCJyaWdodCIsbyksb25DbGljazpELGNoaWxkcmVuOigwLFYuWSkodXQuc1gse30pfSl9KV19KSwicmV2ZXJzZSI9PT1tJiYoMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgkLHtjbGFzc05hbWVzOiJmYWRlMjAwIixpbjp3PC0xMCxjaGlsZHJlbjooMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNzczpFci5nZXRCdXR0b24oImxlZnQiLG8pLG9uQ2xpY2s6UyxjaGlsZHJlbjooMCxWLlkpKHV0LnNYLHt9KX0pfSksKDAsVi5ZKSgkLHtjbGFzc05hbWVzOiJmYWRlMjAwIixpbjp2LWc+LTEqdyxjaGlsZHJlbjooMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNzczpFci5nZXRCdXR0b24oInJpZ2h0IixvKSxvbkNsaWNrOkQsY2hpbGRyZW46KDAsVi5ZKSh1dC5zWCx7fSl9KX0pXX0pXX0pOigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKCQse2NsYXNzTmFtZXM6ImZhZGUyMDAiLGluOnc+MTAsY2hpbGRyZW46KDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6RXIuZ2V0QnV0dG9uKCJsZWZ0IixvKSxvbkNsaWNrOkQsY2hpbGRyZW46KDAsVi5ZKSh1dC5zWCx7fSl9KX0pLCgwLFYuWSkoJCx7Y2xhc3NOYW1lczoiZmFkZTIwMCIsaW46di1nPncsY2hpbGRyZW46KDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6RXIuZ2V0QnV0dG9uKCJyaWdodCIsbyksb25DbGljazpTLGNoaWxkcmVuOigwLFYuWSkodXQuc1gse30pfSl9KV19KX0pLCgwLFYuWSkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yIixjc3M6RXIuZ2V0SXRlbXNDb250YWluZXIocykscmVmOnAsY2hpbGRyZW46dC5tYXAoKGUsYSk9PigwLFYuWSkoImRpdiIse2NzczpFci5nZXRJdGVtV3JhcHBlcihjLDE9PT10Lmxlbmd0aCksY2hpbGRyZW46aShlLEU9PT1hKX0sU3RyaW5nKGVbbl0pKSl9KV19KX07big4ODkyKTt2YXIgWXI9ZT0+ZS5mbGF0TWFwKGU9PmUudmFyaWFudHMuZmlsdGVyKGU9PmUuaXNfcmVjb21tZW5kZWQpLm1hcCh0PT4oey4uLnQscHJvZHVjdDplfSkpKTt2YXIgVHI9ZT0+e2xldHttZXNzYWdlSWQ6dCxwcm9kdWN0czpufT1lO2NvbnN0IGk9KDAsci5kNCkoQy51byksYT0oMCxyLmQ0KShDLkZyKSxvPWk9PT10dC5PRC5TSE9QSUZZJiYoKDAsZi5NSSkoKXx8KDAsZi5hZSkoKSl8fGk9PT10dC5PRC5XT09DT01NRVJDRSxzPSJhZGRfdG9fY2FydCI9PT1hJiZvLGw9WXIobiksZD1sLmV2ZXJ5KGU9PiFlLmltYWdlX3VybCk7cmV0dXJuKDAsVi5ZKShEcix7aXRlbXM6bCxpdGVtS2V5OiJ2YXJpYW50X2lkIixpc1dpdGhvdXRJbWFnZXM6ZCxyZW5kZXJJdGVtOmU9PigwLFYuWSkoeXIse3ZhcmlhbnQ6ZSxwcm9kdWN0OmUucHJvZHVjdCxtZXNzYWdlSWQ6dCxpc0FkZFRvQ2FydEVuYWJsZWQ6c30sZS52YXJpYW50X2lkKX0pfTt2YXIgRnI9KCk9Pntjb25zdCBlPSgwLHIuZDQpKEMuaGUpO3JldHVybigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciBhbHdheXMtb25saW5lIixjaGlsZHJlbjpbKDAsVi5ZKShPbix7dmFsdWU6ImFsd2F5c09ubGluZUVuZ2FnZU1lc3NhZ2UiLGVtb2ppZnk6ITAsbGlua2lmeTohMH0pLCgwLFYuWSkoTG4se3R5cGU6ImVtYWlsIixwbGFjZWhvbGRlcjoicHJlZm9ybUlucHV0X2VtYWlsIix2YWx1ZTplLGRpc2FibGVkOiEwfSldfSl9O2NvbnN0IElyPWU9PntsZXR7c3BhblJlZjp0LHdyYXBwZXJSZWY6bixtaW5XaWR0aDppfT1lO2NvbnN0IGE9KDAsaC5BTCkoKTt0JiZhJiZhLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IGU9KHQuY3VycmVudD8ub2Zmc2V0V2lkdGg/PzApKzM1LGE9aT9NYXRoLm1heChlLGkpOmU7bi5jdXJyZW50Py5zdHlsZS5zZXRQcm9wZXJ0eSgid2lkdGgiLGAke2F9cHhgKX0pfSxfcj1lPT5GbihlKSxNcj1lPT57Y29uc3R7aG9zdDp0LHBhdGhuYW1lOm4sc2VhcmNoOmksaGFzaDphfT0oMCxmLkRsKShlKXx8e307cmV0dXJuYCR7dH0ke259JHtpfSR7YX1gfSxOcj1lPT4iW29iamVjdCBIVE1MSW1hZ2VFbGVtZW50XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk7Y29uc3QgT3I9ZT0+KDAsZC5BSCkoe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsYm90dG9tOmU/LTM3Oi0zMSxsZWZ0OjE2LGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImZsZXgtc3RhcnQiLHdpZHRoOjI2MH0sIiIsIiIpLFJyPWU9PigwLGQuQUgpKHtmb250U2l6ZToxMixtYXJnaW5Ub3A6ZT82OjExLG1hcmdpblJpZ2h0Ojh9LCIiLCIiKTt2YXIganI9e25hbWU6IjExdHgzMzQiLHN0eWxlczoicG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjBweCA3cHg7d2lkdGg6NzdweDtoZWlnaHQ6NDBweDtiYWNrZ3JvdW5kLWNvbG9yOiNGMEYyRjc7Ym9yZGVyOjNweCBzb2xpZCB3aGl0ZTtib3JkZXItcmFkaXVzOjIwcHg7Ym94LXNoYWRvdzowcHggM3B4IDhweCByZ2JhKDAsIDE4LCA0NiwgMC4xMik7OjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjM1cHg7d2lkdGg6MXB4O2hlaWdodDoyMHB4O2JhY2tncm91bmQtY29sb3I6I0M5RDFERDt9In0sUHI9e25hbWU6IjdldG94MyIsc3R5bGVzOiJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3dpZHRoOjEwMHB4O2hlaWdodDo0OHB4In07Y29uc3QgenI9ZT0+ZT9QcjpqcixMcj0oZSx0LG4pPT5uPygwLGQuQUgpKHtvdXRsaW5lOiJub25lIix3aWR0aDo0OCxoZWlnaHQ6NDgsYm9yZGVyUmFkaXVzOiI1MCUiLGJhY2tncm91bmRDb2xvcjoiI0YwRjJGNyIsYm94U2hhZG93OiIwcHggM3B4IDhweCAwcHggcmdiYSgwLCAyNywgNzEsIDAuMDgpIixib3JkZXI6IjNweCBzb2xpZCB3aGl0ZSIsc3ZnOntmaWxsOmU/IiNBQ0I4Q0IiOiIjMDU2NmZmIixoZWlnaHQ6MjIsd2lkdGg6MjJ9fSwiIiwiIik6KDAsZC5BSCkoe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsY3Vyc29yOnQ/ImluaXRpYWwiOiJwb2ludGVyIixvdXRsaW5lOiJub25lIiwiOjpiZWZvcmUiOntjb250ZW50OiInJyIscG9zaXRpb246ImFic29sdXRlIixiYWNrZ3JvdW5kQ29sb3I6InJnYmEoMCwxMjUsMjUyLDAuMTIpIix3aWR0aDozNCxoZWlnaHQ6MzQsYm9yZGVyUmFkaXVzOiI1MCUiLHRyYW5zaXRpb246ImFsbCAwLjE2cyBlYXNlLWluLW91dCIsdHJhbnNmb3JtOiJzY2FsZSgwKSIsdG9wOiJjYWxjKDUwJSAtIDE3cHgpIixsZWZ0OiJjYWxjKDUwJSAtIDE3cHgpIn0sIiY6aG92ZXI6OmJlZm9yZSI6e3RyYW5zZm9ybTp0PyJzY2FsZSgwKSI6InNjYWxlKDEpIn0sc3ZnOntmaWxsOmU/IiNBQ0I4Q0IiOiIjMDU2NmZmIixoZWlnaHQ6MjAsd2lkdGg6MjB9fSwiIiwiIik7dmFyIFVyPWU9Pntjb25zdCB0PSgwLHIud0EpKCksbj0oMCxyLmQ0KShDLk55KSxpPW49PnshZS5yYXRpbmcmJmUucmF0aW5nSWQmJnQoKDAsay5zY2opKGUubWVzc2FnZUlkLGUucmF0aW5nSWQsbikpfTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y3NzOk9yKG4pLGNoaWxkcmVuOlsoMCxWLlkpKCJzcGFuIix7Y3NzOlJyKG4pLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJyYXRpbmdMYWJlbCIsZmFsbGJhY2s6IldhcyB0aGlzIGhlbHBmdWw/In0pfSksKDAsVi5GRCkoImRpdiIse2Nzczp6cihuKSxjaGlsZHJlbjpbKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIiwiYXJpYS1sYWJlbCI6InllcyIsb25DbGljazooKT0+aSgieWVzIiksY3NzOkxyKCJubyI9PT1lLnJhdGluZyxCb29sZWFuKGUucmF0aW5nKSxuKSxjaGlsZHJlbjoieWVzIj09PWUucmF0aW5nPygwLFYuWSkodXQua20se30pOigwLFYuWSkodXQuU3Ese30pfSksKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIiwiYXJpYS1sYWJlbCI6Im5vIixvbkNsaWNrOigpPT5pKCJubyIpLGNzczpMcigieWVzIj09PWUucmF0aW5nLEJvb2xlYW4oZS5yYXRpbmcpLG4pLGNoaWxkcmVuOiJubyI9PT1lLnJhdGluZz8oMCxWLlkpKHV0LnRGLHt9KTooMCxWLlkpKHV0LkxsLHt9KX0pXX0pXX0pfSxCcj1uKDIyODQpO2Z1bmN0aW9uIEhyKGUsdCl7aWYodC5sZW5ndGg8ZSl0aHJvdyBuZXcgVHlwZUVycm9yKGUrIiBhcmd1bWVudCIrKGU+MT8icyI6IiIpKyIgcmVxdWlyZWQsIGJ1dCBvbmx5ICIrdC5sZW5ndGgrIiBwcmVzZW50Iil9ZnVuY3Rpb24gcXIoZSl7SHIoMSxhcmd1bWVudHMpO3ZhciB0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKTtyZXR1cm4gZSBpbnN0YW5jZW9mIERhdGV8fCJvYmplY3QiPT09KDAsQnIuQSkoZSkmJiJbb2JqZWN0IERhdGVdIj09PXQ/bmV3IERhdGUoZS5nZXRUaW1lKCkpOiJudW1iZXIiPT10eXBlb2YgZXx8IltvYmplY3QgTnVtYmVyXSI9PT10P25ldyBEYXRlKGUpOigic3RyaW5nIiE9dHlwZW9mIGUmJiJbb2JqZWN0IFN0cmluZ10iIT09dHx8InVuZGVmaW5lZCI9PXR5cGVvZiBjb25zb2xlfHwoY29uc29sZS53YXJuKCJTdGFydGluZyB3aXRoIHYyLjAuMC1iZXRhLjEgZGF0ZS1mbnMgZG9lc24ndCBhY2NlcHQgc3RyaW5ncyBhcyBkYXRlIGFyZ3VtZW50cy4gUGxlYXNlIHVzZSBgcGFyc2VJU09gIHRvIHBhcnNlIHN0cmluZ3MuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdXBncmFkZUd1aWRlLm1kI3N0cmluZy1hcmd1bWVudHMiKSxjb25zb2xlLndhcm4oKG5ldyBFcnJvcikuc3RhY2spKSxuZXcgRGF0ZShOYU4pKX1mdW5jdGlvbiBWcihlKXtIcigxLGFyZ3VtZW50cyk7dmFyIHQ9cXIoZSk7cmV0dXJuIHQuc2V0SG91cnMoMCwwLDAsMCksdH1mdW5jdGlvbiAkcihlLHQpe0hyKDIsYXJndW1lbnRzKTt2YXIgbj1WcihlKSxpPVZyKHQpO3JldHVybiBuLmdldFRpbWUoKT09PWkuZ2V0VGltZSgpfWZ1bmN0aW9uIFdyKGUpe2lmKG51bGw9PT1lfHwhMD09PWV8fCExPT09ZSlyZXR1cm4gTmFOO3ZhciB0PU51bWJlcihlKTtyZXR1cm4gaXNOYU4odCk/dDp0PDA/TWF0aC5jZWlsKHQpOk1hdGguZmxvb3IodCl9ZnVuY3Rpb24gS3IoZSx0KXtyZXR1cm4gSHIoMixhcmd1bWVudHMpLGZ1bmN0aW9uKGUsdCl7SHIoMixhcmd1bWVudHMpO3ZhciBuPXFyKGUpLGk9V3IodCk7cmV0dXJuIGlzTmFOKGkpP25ldyBEYXRlKE5hTik6aT8obi5zZXREYXRlKG4uZ2V0RGF0ZSgpK2kpLG4pOm59KGUsLVdyKHQpKX1mdW5jdGlvbiBHcihlKXtpZihIcigxLGFyZ3VtZW50cyksIWZ1bmN0aW9uKGUpe3JldHVybiBIcigxLGFyZ3VtZW50cyksZSBpbnN0YW5jZW9mIERhdGV8fCJvYmplY3QiPT09KDAsQnIuQSkoZSkmJiJbb2JqZWN0IERhdGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX0oZSkmJiJudW1iZXIiIT10eXBlb2YgZSlyZXR1cm4hMTt2YXIgdD1xcihlKTtyZXR1cm4haXNOYU4oTnVtYmVyKHQpKX1mdW5jdGlvbiBYcihlLHQpe3JldHVybiBIcigyLGFyZ3VtZW50cyksZnVuY3Rpb24oZSx0KXtIcigyLGFyZ3VtZW50cyk7dmFyIG49cXIoZSkuZ2V0VGltZSgpLGk9V3IodCk7cmV0dXJuIG5ldyBEYXRlKG4raSl9KGUsLVdyKHQpKX1mdW5jdGlvbiBRcihlKXtIcigxLGFyZ3VtZW50cyk7dmFyIHQ9cXIoZSksbj10LmdldFVUQ0RheSgpLGk9KG48MT83OjApK24tMTtyZXR1cm4gdC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpLWkpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCksdH1mdW5jdGlvbiBacihlKXtIcigxLGFyZ3VtZW50cyk7dmFyIHQ9cXIoZSksbj10LmdldFVUQ0Z1bGxZZWFyKCksaT1uZXcgRGF0ZSgwKTtpLnNldFVUQ0Z1bGxZZWFyKG4rMSwwLDQpLGkuc2V0VVRDSG91cnMoMCwwLDAsMCk7dmFyIGE9UXIoaSksbz1uZXcgRGF0ZSgwKTtvLnNldFVUQ0Z1bGxZZWFyKG4sMCw0KSxvLnNldFVUQ0hvdXJzKDAsMCwwLDApO3ZhciByPVFyKG8pO3JldHVybiB0LmdldFRpbWUoKT49YS5nZXRUaW1lKCk/bisxOnQuZ2V0VGltZSgpPj1yLmdldFRpbWUoKT9uOm4tMX1mdW5jdGlvbiBKcihlKXtIcigxLGFyZ3VtZW50cyk7dmFyIHQ9cXIoZSksbj1Rcih0KS5nZXRUaW1lKCktZnVuY3Rpb24oZSl7SHIoMSxhcmd1bWVudHMpO3ZhciB0PVpyKGUpLG49bmV3IERhdGUoMCk7cmV0dXJuIG4uc2V0VVRDRnVsbFllYXIodCwwLDQpLG4uc2V0VVRDSG91cnMoMCwwLDAsMCksUXIobil9KHQpLmdldFRpbWUoKTtyZXR1cm4gTWF0aC5yb3VuZChuLzYwNDhlNSkrMX12YXIgZXM9e307ZnVuY3Rpb24gdHMoKXtyZXR1cm4gZXN9ZnVuY3Rpb24gbnMoZSx0KXt2YXIgbixpLGEsbyxyLHMsbCxkO0hyKDEsYXJndW1lbnRzKTt2YXIgYz10cygpLHU9V3IobnVsbCE9PShuPW51bGwhPT0oaT1udWxsIT09KGE9bnVsbCE9PShvPW51bGw9PXQ/dm9pZCAwOnQud2Vla1N0YXJ0c09uKSYmdm9pZCAwIT09bz9vOm51bGw9PXR8fG51bGw9PT0ocj10LmxvY2FsZSl8fHZvaWQgMD09PXJ8fG51bGw9PT0ocz1yLm9wdGlvbnMpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLndlZWtTdGFydHNPbikmJnZvaWQgMCE9PWE/YTpjLndlZWtTdGFydHNPbikmJnZvaWQgMCE9PWk/aTpudWxsPT09KGw9Yy5sb2NhbGUpfHx2b2lkIDA9PT1sfHxudWxsPT09KGQ9bC5vcHRpb25zKXx8dm9pZCAwPT09ZD92b2lkIDA6ZC53ZWVrU3RhcnRzT24pJiZ2b2lkIDAhPT1uP246MCk7aWYoISh1Pj0wJiZ1PD02KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigid2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Iik7dmFyIHA9cXIoZSksZj1wLmdldFVUQ0RheSgpLG09KGY8dT83OjApK2YtdTtyZXR1cm4gcC5zZXRVVENEYXRlKHAuZ2V0VVRDRGF0ZSgpLW0pLHAuc2V0VVRDSG91cnMoMCwwLDAsMCkscH1mdW5jdGlvbiBpcyhlLHQpe3ZhciBuLGksYSxvLHIscyxsLGQ7SHIoMSxhcmd1bWVudHMpO3ZhciBjPXFyKGUpLHU9Yy5nZXRVVENGdWxsWWVhcigpLHA9dHMoKSxmPVdyKG51bGwhPT0obj1udWxsIT09KGk9bnVsbCE9PShhPW51bGwhPT0obz1udWxsPT10P3ZvaWQgMDp0LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkmJnZvaWQgMCE9PW8/bzpudWxsPT10fHxudWxsPT09KHI9dC5sb2NhbGUpfHx2b2lkIDA9PT1yfHxudWxsPT09KHM9ci5vcHRpb25zKXx8dm9pZCAwPT09cz92b2lkIDA6cy5maXJzdFdlZWtDb250YWluc0RhdGUpJiZ2b2lkIDAhPT1hP2E6cC5maXJzdFdlZWtDb250YWluc0RhdGUpJiZ2b2lkIDAhPT1pP2k6bnVsbD09PShsPXAubG9jYWxlKXx8dm9pZCAwPT09bHx8bnVsbD09PShkPWwub3B0aW9ucyl8fHZvaWQgMD09PWQ/dm9pZCAwOmQuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSYmdm9pZCAwIT09bj9uOjEpO2lmKCEoZj49MSYmZjw9NykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImZpcnN0V2Vla0NvbnRhaW5zRGF0ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNyBpbmNsdXNpdmVseSIpO3ZhciBtPW5ldyBEYXRlKDApO20uc2V0VVRDRnVsbFllYXIodSsxLDAsZiksbS5zZXRVVENIb3VycygwLDAsMCwwKTt2YXIgaD1ucyhtLHQpLGc9bmV3IERhdGUoMCk7Zy5zZXRVVENGdWxsWWVhcih1LDAsZiksZy5zZXRVVENIb3VycygwLDAsMCwwKTt2YXIgYj1ucyhnLHQpO3JldHVybiBjLmdldFRpbWUoKT49aC5nZXRUaW1lKCk/dSsxOmMuZ2V0VGltZSgpPj1iLmdldFRpbWUoKT91OnUtMX1mdW5jdGlvbiBhcyhlLHQpe0hyKDEsYXJndW1lbnRzKTt2YXIgbj1xcihlKSxpPW5zKG4sdCkuZ2V0VGltZSgpLWZ1bmN0aW9uKGUsdCl7dmFyIG4saSxhLG8scixzLGwsZDtIcigxLGFyZ3VtZW50cyk7dmFyIGM9dHMoKSx1PVdyKG51bGwhPT0obj1udWxsIT09KGk9bnVsbCE9PShhPW51bGwhPT0obz1udWxsPT10P3ZvaWQgMDp0LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkmJnZvaWQgMCE9PW8/bzpudWxsPT10fHxudWxsPT09KHI9dC5sb2NhbGUpfHx2b2lkIDA9PT1yfHxudWxsPT09KHM9ci5vcHRpb25zKXx8dm9pZCAwPT09cz92b2lkIDA6cy5maXJzdFdlZWtDb250YWluc0RhdGUpJiZ2b2lkIDAhPT1hP2E6Yy5maXJzdFdlZWtDb250YWluc0RhdGUpJiZ2b2lkIDAhPT1pP2k6bnVsbD09PShsPWMubG9jYWxlKXx8dm9pZCAwPT09bHx8bnVsbD09PShkPWwub3B0aW9ucyl8fHZvaWQgMD09PWQ/dm9pZCAwOmQuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSYmdm9pZCAwIT09bj9uOjEpLHA9aXMoZSx0KSxmPW5ldyBEYXRlKDApO3JldHVybiBmLnNldFVUQ0Z1bGxZZWFyKHAsMCx1KSxmLnNldFVUQ0hvdXJzKDAsMCwwLDApLG5zKGYsdCl9KG4sdCkuZ2V0VGltZSgpO3JldHVybiBNYXRoLnJvdW5kKGkvNjA0OGU1KSsxfWZ1bmN0aW9uIG9zKGUsdCl7Zm9yKHZhciBuPWU8MD8iLSI6IiIsaT1NYXRoLmFicyhlKS50b1N0cmluZygpO2kubGVuZ3RoPHQ7KWk9IjAiK2k7cmV0dXJuIG4raX12YXIgcnM9e3k6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldFVUQ0Z1bGxZZWFyKCksaT1uPjA/bjoxLW47cmV0dXJuIG9zKCJ5eSI9PT10P2klMTAwOmksdC5sZW5ndGgpfSxNOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRVVENNb250aCgpO3JldHVybiJNIj09PXQ/U3RyaW5nKG4rMSk6b3MobisxLDIpfSxkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG9zKGUuZ2V0VVRDRGF0ZSgpLHQubGVuZ3RoKX0sYTpmdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0VVRDSG91cnMoKS8xMj49MT8icG0iOiJhbSI7c3dpdGNoKHQpe2Nhc2UiYSI6Y2FzZSJhYSI6cmV0dXJuIG4udG9VcHBlckNhc2UoKTtjYXNlImFhYSI6cmV0dXJuIG47Y2FzZSJhYWFhYSI6cmV0dXJuIG5bMF07ZGVmYXVsdDpyZXR1cm4iYW0iPT09bj8iYS5tLiI6InAubS4ifX0saDpmdW5jdGlvbihlLHQpe3JldHVybiBvcyhlLmdldFVUQ0hvdXJzKCklMTJ8fDEyLHQubGVuZ3RoKX0sSDpmdW5jdGlvbihlLHQpe3JldHVybiBvcyhlLmdldFVUQ0hvdXJzKCksdC5sZW5ndGgpfSxtOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG9zKGUuZ2V0VVRDTWludXRlcygpLHQubGVuZ3RoKX0sczpmdW5jdGlvbihlLHQpe3JldHVybiBvcyhlLmdldFVUQ1NlY29uZHMoKSx0Lmxlbmd0aCl9LFM6ZnVuY3Rpb24oZSx0KXt2YXIgbj10Lmxlbmd0aCxpPWUuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7cmV0dXJuIG9zKE1hdGguZmxvb3IoaSpNYXRoLnBvdygxMCxuLTMpKSx0Lmxlbmd0aCl9fSxzcz0ibWlkbmlnaHQiLGxzPSJub29uIixkcz0ibW9ybmluZyIsY3M9ImFmdGVybm9vbiIsdXM9ImV2ZW5pbmciLHBzPSJuaWdodCIsZnM9e0c6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWUuZ2V0VVRDRnVsbFllYXIoKT4wPzE6MDtzd2l0Y2godCl7Y2FzZSJHIjpjYXNlIkdHIjpjYXNlIkdHRyI6cmV0dXJuIG4uZXJhKGkse3dpZHRoOiJhYmJyZXZpYXRlZCJ9KTtjYXNlIkdHR0dHIjpyZXR1cm4gbi5lcmEoaSx7d2lkdGg6Im5hcnJvdyJ9KTtkZWZhdWx0OnJldHVybiBuLmVyYShpLHt3aWR0aDoid2lkZSJ9KX19LHk6ZnVuY3Rpb24oZSx0LG4pe2lmKCJ5byI9PT10KXt2YXIgaT1lLmdldFVUQ0Z1bGxZZWFyKCksYT1pPjA/aToxLWk7cmV0dXJuIG4ub3JkaW5hbE51bWJlcihhLHt1bml0OiJ5ZWFyIn0pfXJldHVybiBycy55KGUsdCl9LFk6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9aXMoZSxpKSxvPWE+MD9hOjEtYTtyZXR1cm4iWVkiPT09dD9vcyhvJTEwMCwyKToiWW8iPT09dD9uLm9yZGluYWxOdW1iZXIobyx7dW5pdDoieWVhciJ9KTpvcyhvLHQubGVuZ3RoKX0sUjpmdW5jdGlvbihlLHQpe3JldHVybiBvcyhacihlKSx0Lmxlbmd0aCl9LHU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gb3MoZS5nZXRVVENGdWxsWWVhcigpLHQubGVuZ3RoKX0sUTpmdW5jdGlvbihlLHQsbil7dmFyIGk9TWF0aC5jZWlsKChlLmdldFVUQ01vbnRoKCkrMSkvMyk7c3dpdGNoKHQpe2Nhc2UiUSI6cmV0dXJuIFN0cmluZyhpKTtjYXNlIlFRIjpyZXR1cm4gb3MoaSwyKTtjYXNlIlFvIjpyZXR1cm4gbi5vcmRpbmFsTnVtYmVyKGkse3VuaXQ6InF1YXJ0ZXIifSk7Y2FzZSJRUVEiOnJldHVybiBuLnF1YXJ0ZXIoaSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2Nhc2UiUVFRUVEiOnJldHVybiBuLnF1YXJ0ZXIoaSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtkZWZhdWx0OnJldHVybiBuLnF1YXJ0ZXIoaSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl9fSxxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1NYXRoLmNlaWwoKGUuZ2V0VVRDTW9udGgoKSsxKS8zKTtzd2l0Y2godCl7Y2FzZSJxIjpyZXR1cm4gU3RyaW5nKGkpO2Nhc2UicXEiOnJldHVybiBvcyhpLDIpO2Nhc2UicW8iOnJldHVybiBuLm9yZGluYWxOdW1iZXIoaSx7dW5pdDoicXVhcnRlciJ9KTtjYXNlInFxcSI6cmV0dXJuIG4ucXVhcnRlcihpLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6InN0YW5kYWxvbmUifSk7Y2FzZSJxcXFxcSI6cmV0dXJuIG4ucXVhcnRlcihpLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2RlZmF1bHQ6cmV0dXJuIG4ucXVhcnRlcihpLHt3aWR0aDoid2lkZSIsY29udGV4dDoic3RhbmRhbG9uZSJ9KX19LE06ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWUuZ2V0VVRDTW9udGgoKTtzd2l0Y2godCl7Y2FzZSJNIjpjYXNlIk1NIjpyZXR1cm4gcnMuTShlLHQpO2Nhc2UiTW8iOnJldHVybiBuLm9yZGluYWxOdW1iZXIoaSsxLHt1bml0OiJtb250aCJ9KTtjYXNlIk1NTSI6cmV0dXJuIG4ubW9udGgoaSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2Nhc2UiTU1NTU0iOnJldHVybiBuLm1vbnRoKGkse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7ZGVmYXVsdDpyZXR1cm4gbi5tb250aChpLHt3aWR0aDoid2lkZSIsY29udGV4dDoiZm9ybWF0dGluZyJ9KX19LEw6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWUuZ2V0VVRDTW9udGgoKTtzd2l0Y2godCl7Y2FzZSJMIjpyZXR1cm4gU3RyaW5nKGkrMSk7Y2FzZSJMTCI6cmV0dXJuIG9zKGkrMSwyKTtjYXNlIkxvIjpyZXR1cm4gbi5vcmRpbmFsTnVtYmVyKGkrMSx7dW5pdDoibW9udGgifSk7Y2FzZSJMTEwiOnJldHVybiBuLm1vbnRoKGkse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoic3RhbmRhbG9uZSJ9KTtjYXNlIkxMTExMIjpyZXR1cm4gbi5tb250aChpLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2RlZmF1bHQ6cmV0dXJuIG4ubW9udGgoaSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6InN0YW5kYWxvbmUifSl9fSx3OmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPWFzKGUsaSk7cmV0dXJuIndvIj09PXQ/bi5vcmRpbmFsTnVtYmVyKGEse3VuaXQ6IndlZWsifSk6b3MoYSx0Lmxlbmd0aCl9LEk6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPUpyKGUpO3JldHVybiJJbyI9PT10P24ub3JkaW5hbE51bWJlcihpLHt1bml0OiJ3ZWVrIn0pOm9zKGksdC5sZW5ndGgpfSxkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iZG8iPT09dD9uLm9yZGluYWxOdW1iZXIoZS5nZXRVVENEYXRlKCkse3VuaXQ6ImRhdGUifSk6cnMuZChlLHQpfSxEOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1mdW5jdGlvbihlKXtIcigxLGFyZ3VtZW50cyk7dmFyIHQ9cXIoZSksbj10LmdldFRpbWUoKTt0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKTt2YXIgaT1uLXQuZ2V0VGltZSgpO3JldHVybiBNYXRoLmZsb29yKGkvODY0ZTUpKzF9KGUpO3JldHVybiJEbyI9PT10P24ub3JkaW5hbE51bWJlcihpLHt1bml0OiJkYXlPZlllYXIifSk6b3MoaSx0Lmxlbmd0aCl9LEU6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWUuZ2V0VVRDRGF5KCk7c3dpdGNoKHQpe2Nhc2UiRSI6Y2FzZSJFRSI6Y2FzZSJFRUUiOnJldHVybiBuLmRheShpLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJFRUVFRSI6cmV0dXJuIG4uZGF5KGkse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJFRUVFRUUiOnJldHVybiBuLmRheShpLHt3aWR0aDoic2hvcnQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7ZGVmYXVsdDpyZXR1cm4gbi5kYXkoaSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl9fSxlOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPWUuZ2V0VVRDRGF5KCksbz0oYS1pLndlZWtTdGFydHNPbis4KSU3fHw3O3N3aXRjaCh0KXtjYXNlImUiOnJldHVybiBTdHJpbmcobyk7Y2FzZSJlZSI6cmV0dXJuIG9zKG8sMik7Y2FzZSJlbyI6cmV0dXJuIG4ub3JkaW5hbE51bWJlcihvLHt1bml0OiJkYXkifSk7Y2FzZSJlZWUiOnJldHVybiBuLmRheShhLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJlZWVlZSI6cmV0dXJuIG4uZGF5KGEse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJlZWVlZWUiOnJldHVybiBuLmRheShhLHt3aWR0aDoic2hvcnQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7ZGVmYXVsdDpyZXR1cm4gbi5kYXkoYSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl9fSxjOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPWUuZ2V0VVRDRGF5KCksbz0oYS1pLndlZWtTdGFydHNPbis4KSU3fHw3O3N3aXRjaCh0KXtjYXNlImMiOnJldHVybiBTdHJpbmcobyk7Y2FzZSJjYyI6cmV0dXJuIG9zKG8sdC5sZW5ndGgpO2Nhc2UiY28iOnJldHVybiBuLm9yZGluYWxOdW1iZXIobyx7dW5pdDoiZGF5In0pO2Nhc2UiY2NjIjpyZXR1cm4gbi5kYXkoYSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2Nhc2UiY2NjY2MiOnJldHVybiBuLmRheShhLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2Nhc2UiY2NjY2NjIjpyZXR1cm4gbi5kYXkoYSx7d2lkdGg6InNob3J0Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2RlZmF1bHQ6cmV0dXJuIG4uZGF5KGEse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJzdGFuZGFsb25lIn0pfX0saTpmdW5jdGlvbihlLHQsbil7dmFyIGk9ZS5nZXRVVENEYXkoKSxhPTA9PT1pPzc6aTtzd2l0Y2godCl7Y2FzZSJpIjpyZXR1cm4gU3RyaW5nKGEpO2Nhc2UiaWkiOnJldHVybiBvcyhhLHQubGVuZ3RoKTtjYXNlImlvIjpyZXR1cm4gbi5vcmRpbmFsTnVtYmVyKGEse3VuaXQ6ImRheSJ9KTtjYXNlImlpaSI6cmV0dXJuIG4uZGF5KGkse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtjYXNlImlpaWlpIjpyZXR1cm4gbi5kYXkoaSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtjYXNlImlpaWlpaSI6cmV0dXJuIG4uZGF5KGkse3dpZHRoOiJzaG9ydCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtkZWZhdWx0OnJldHVybiBuLmRheShpLHt3aWR0aDoid2lkZSIsY29udGV4dDoiZm9ybWF0dGluZyJ9KX19LGE6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWUuZ2V0VVRDSG91cnMoKS8xMj49MT8icG0iOiJhbSI7c3dpdGNoKHQpe2Nhc2UiYSI6Y2FzZSJhYSI6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtjYXNlImFhYSI6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KS50b0xvd2VyQ2FzZSgpO2Nhc2UiYWFhYWEiOnJldHVybiBuLmRheVBlcmlvZChpLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2RlZmF1bHQ6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfX0sYjpmdW5jdGlvbihlLHQsbil7dmFyIGksYT1lLmdldFVUQ0hvdXJzKCk7c3dpdGNoKGk9MTI9PT1hP2xzOjA9PT1hP3NzOmEvMTI+PTE/InBtIjoiYW0iLHQpe2Nhc2UiYiI6Y2FzZSJiYiI6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtjYXNlImJiYiI6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KS50b0xvd2VyQ2FzZSgpO2Nhc2UiYmJiYmIiOnJldHVybiBuLmRheVBlcmlvZChpLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2RlZmF1bHQ6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfX0sQjpmdW5jdGlvbihlLHQsbil7dmFyIGksYT1lLmdldFVUQ0hvdXJzKCk7c3dpdGNoKGk9YT49MTc/dXM6YT49MTI/Y3M6YT49ND9kczpwcyx0KXtjYXNlIkIiOmNhc2UiQkIiOmNhc2UiQkJCIjpyZXR1cm4gbi5kYXlQZXJpb2QoaSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2Nhc2UiQkJCQkIiOnJldHVybiBuLmRheVBlcmlvZChpLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2RlZmF1bHQ6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfX0saDpmdW5jdGlvbihlLHQsbil7aWYoImhvIj09PXQpe3ZhciBpPWUuZ2V0VVRDSG91cnMoKSUxMjtyZXR1cm4gMD09PWkmJihpPTEyKSxuLm9yZGluYWxOdW1iZXIoaSx7dW5pdDoiaG91ciJ9KX1yZXR1cm4gcnMuaChlLHQpfSxIOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iSG8iPT09dD9uLm9yZGluYWxOdW1iZXIoZS5nZXRVVENIb3VycygpLHt1bml0OiJob3VyIn0pOnJzLkgoZSx0KX0sSzpmdW5jdGlvbihlLHQsbil7dmFyIGk9ZS5nZXRVVENIb3VycygpJTEyO3JldHVybiJLbyI9PT10P24ub3JkaW5hbE51bWJlcihpLHt1bml0OiJob3VyIn0pOm9zKGksdC5sZW5ndGgpfSxrOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1lLmdldFVUQ0hvdXJzKCk7cmV0dXJuIDA9PT1pJiYoaT0yNCksImtvIj09PXQ/bi5vcmRpbmFsTnVtYmVyKGkse3VuaXQ6ImhvdXIifSk6b3MoaSx0Lmxlbmd0aCl9LG06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiJtbyI9PT10P24ub3JkaW5hbE51bWJlcihlLmdldFVUQ01pbnV0ZXMoKSx7dW5pdDoibWludXRlIn0pOnJzLm0oZSx0KX0sczpmdW5jdGlvbihlLHQsbil7cmV0dXJuInNvIj09PXQ/bi5vcmRpbmFsTnVtYmVyKGUuZ2V0VVRDU2Vjb25kcygpLHt1bml0OiJzZWNvbmQifSk6cnMucyhlLHQpfSxTOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHJzLlMoZSx0KX0sWDpmdW5jdGlvbihlLHQsbixpKXt2YXIgYT0oaS5fb3JpZ2luYWxEYXRlfHxlKS5nZXRUaW1lem9uZU9mZnNldCgpO2lmKDA9PT1hKXJldHVybiJaIjtzd2l0Y2godCl7Y2FzZSJYIjpyZXR1cm4gaHMoYSk7Y2FzZSJYWFhYIjpjYXNlIlhYIjpyZXR1cm4gZ3MoYSk7ZGVmYXVsdDpyZXR1cm4gZ3MoYSwiOiIpfX0seDpmdW5jdGlvbihlLHQsbixpKXt2YXIgYT0oaS5fb3JpZ2luYWxEYXRlfHxlKS5nZXRUaW1lem9uZU9mZnNldCgpO3N3aXRjaCh0KXtjYXNlIngiOnJldHVybiBocyhhKTtjYXNlInh4eHgiOmNhc2UieHgiOnJldHVybiBncyhhKTtkZWZhdWx0OnJldHVybiBncyhhLCI6Iil9fSxPOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPShpLl9vcmlnaW5hbERhdGV8fGUpLmdldFRpbWV6b25lT2Zmc2V0KCk7c3dpdGNoKHQpe2Nhc2UiTyI6Y2FzZSJPTyI6Y2FzZSJPT08iOnJldHVybiJHTVQiK21zKGEsIjoiKTtkZWZhdWx0OnJldHVybiJHTVQiK2dzKGEsIjoiKX19LHo6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9KGkuX29yaWdpbmFsRGF0ZXx8ZSkuZ2V0VGltZXpvbmVPZmZzZXQoKTtzd2l0Y2godCl7Y2FzZSJ6IjpjYXNlInp6IjpjYXNlInp6eiI6cmV0dXJuIkdNVCIrbXMoYSwiOiIpO2RlZmF1bHQ6cmV0dXJuIkdNVCIrZ3MoYSwiOiIpfX0sdDpmdW5jdGlvbihlLHQsbixpKXt2YXIgYT1pLl9vcmlnaW5hbERhdGV8fGU7cmV0dXJuIG9zKE1hdGguZmxvb3IoYS5nZXRUaW1lKCkvMWUzKSx0Lmxlbmd0aCl9LFQ6ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIG9zKChpLl9vcmlnaW5hbERhdGV8fGUpLmdldFRpbWUoKSx0Lmxlbmd0aCl9fTtmdW5jdGlvbiBtcyhlLHQpe3ZhciBuPWU+MD8iLSI6IisiLGk9TWF0aC5hYnMoZSksYT1NYXRoLmZsb29yKGkvNjApLG89aSU2MDtpZigwPT09bylyZXR1cm4gbitTdHJpbmcoYSk7dmFyIHI9dHx8IiI7cmV0dXJuIG4rU3RyaW5nKGEpK3Irb3MobywyKX1mdW5jdGlvbiBocyhlLHQpe3JldHVybiBlJTYwPT0wPyhlPjA/Ii0iOiIrIikrb3MoTWF0aC5hYnMoZSkvNjAsMik6Z3MoZSx0KX1mdW5jdGlvbiBncyhlLHQpe3ZhciBuPXR8fCIiLGk9ZT4wPyItIjoiKyIsYT1NYXRoLmFicyhlKTtyZXR1cm4gaStvcyhNYXRoLmZsb29yKGEvNjApLDIpK24rb3MoYSU2MCwyKX12YXIgYnM9ZnMsdnM9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJQIjpyZXR1cm4gdC5kYXRlKHt3aWR0aDoic2hvcnQifSk7Y2FzZSJQUCI6cmV0dXJuIHQuZGF0ZSh7d2lkdGg6Im1lZGl1bSJ9KTtjYXNlIlBQUCI6cmV0dXJuIHQuZGF0ZSh7d2lkdGg6ImxvbmcifSk7ZGVmYXVsdDpyZXR1cm4gdC5kYXRlKHt3aWR0aDoiZnVsbCJ9KX19LHhzPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UicCI6cmV0dXJuIHQudGltZSh7d2lkdGg6InNob3J0In0pO2Nhc2UicHAiOnJldHVybiB0LnRpbWUoe3dpZHRoOiJtZWRpdW0ifSk7Y2FzZSJwcHAiOnJldHVybiB0LnRpbWUoe3dpZHRoOiJsb25nIn0pO2RlZmF1bHQ6cmV0dXJuIHQudGltZSh7d2lkdGg6ImZ1bGwifSl9fSx5cz17cDp4cyxQOmZ1bmN0aW9uKGUsdCl7dmFyIG4saT1lLm1hdGNoKC8oUCspKHArKT8vKXx8W10sYT1pWzFdLG89aVsyXTtpZighbylyZXR1cm4gdnMoZSx0KTtzd2l0Y2goYSl7Y2FzZSJQIjpuPXQuZGF0ZVRpbWUoe3dpZHRoOiJzaG9ydCJ9KTticmVhaztjYXNlIlBQIjpuPXQuZGF0ZVRpbWUoe3dpZHRoOiJtZWRpdW0ifSk7YnJlYWs7Y2FzZSJQUFAiOm49dC5kYXRlVGltZSh7d2lkdGg6ImxvbmcifSk7YnJlYWs7ZGVmYXVsdDpuPXQuZGF0ZVRpbWUoe3dpZHRoOiJmdWxsIn0pfXJldHVybiBuLnJlcGxhY2UoInt7ZGF0ZX19Iix2cyhhLHQpKS5yZXBsYWNlKCJ7e3RpbWV9fSIseHMobyx0KSl9fSx3cz15czt2YXIga3M9WyJEIiwiREQiXSxBcz1bIllZIiwiWVlZWSJdO2Z1bmN0aW9uIENzKGUsdCxuKXtpZigiWVlZWSI9PT1lKXRocm93IG5ldyBSYW5nZUVycm9yKCJVc2UgYHl5eXlgIGluc3RlYWQgb2YgYFlZWVlgIChpbiBgIi5jb25jYXQodCwiYCkgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdG8gdGhlIGlucHV0IGAiKS5jb25jYXQobiwiYDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kIikpO2lmKCJZWSI9PT1lKXRocm93IG5ldyBSYW5nZUVycm9yKCJVc2UgYHl5YCBpbnN0ZWFkIG9mIGBZWWAgKGluIGAiLmNvbmNhdCh0LCJgKSBmb3IgZm9ybWF0dGluZyB5ZWFycyB0byB0aGUgaW5wdXQgYCIpLmNvbmNhdChuLCJgOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWQiKSk7aWYoIkQiPT09ZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVXNlIGBkYCBpbnN0ZWFkIG9mIGBEYCAoaW4gYCIuY29uY2F0KHQsImApIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoIHRvIHRoZSBpbnB1dCBgIikuY29uY2F0KG4sImA7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZCIpKTtpZigiREQiPT09ZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVXNlIGBkZGAgaW5zdGVhZCBvZiBgRERgIChpbiBgIi5jb25jYXQodCwiYCkgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdG8gdGhlIGlucHV0IGAiKS5jb25jYXQobiwiYDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kIikpfXZhciBFcz17bGVzc1RoYW5YU2Vjb25kczp7b25lOiJsZXNzIHRoYW4gYSBzZWNvbmQiLG90aGVyOiJsZXNzIHRoYW4ge3tjb3VudH19IHNlY29uZHMifSx4U2Vjb25kczp7b25lOiIxIHNlY29uZCIsb3RoZXI6Int7Y291bnR9fSBzZWNvbmRzIn0saGFsZkFNaW51dGU6ImhhbGYgYSBtaW51dGUiLGxlc3NUaGFuWE1pbnV0ZXM6e29uZToibGVzcyB0aGFuIGEgbWludXRlIixvdGhlcjoibGVzcyB0aGFuIHt7Y291bnR9fSBtaW51dGVzIn0seE1pbnV0ZXM6e29uZToiMSBtaW51dGUiLG90aGVyOiJ7e2NvdW50fX0gbWludXRlcyJ9LGFib3V0WEhvdXJzOntvbmU6ImFib3V0IDEgaG91ciIsb3RoZXI6ImFib3V0IHt7Y291bnR9fSBob3VycyJ9LHhIb3Vyczp7b25lOiIxIGhvdXIiLG90aGVyOiJ7e2NvdW50fX0gaG91cnMifSx4RGF5czp7b25lOiIxIGRheSIsb3RoZXI6Int7Y291bnR9fSBkYXlzIn0sYWJvdXRYV2Vla3M6e29uZToiYWJvdXQgMSB3ZWVrIixvdGhlcjoiYWJvdXQge3tjb3VudH19IHdlZWtzIn0seFdlZWtzOntvbmU6IjEgd2VlayIsb3RoZXI6Int7Y291bnR9fSB3ZWVrcyJ9LGFib3V0WE1vbnRoczp7b25lOiJhYm91dCAxIG1vbnRoIixvdGhlcjoiYWJvdXQge3tjb3VudH19IG1vbnRocyJ9LHhNb250aHM6e29uZToiMSBtb250aCIsb3RoZXI6Int7Y291bnR9fSBtb250aHMifSxhYm91dFhZZWFyczp7b25lOiJhYm91dCAxIHllYXIiLG90aGVyOiJhYm91dCB7e2NvdW50fX0geWVhcnMifSx4WWVhcnM6e29uZToiMSB5ZWFyIixvdGhlcjoie3tjb3VudH19IHllYXJzIn0sb3ZlclhZZWFyczp7b25lOiJvdmVyIDEgeWVhciIsb3RoZXI6Im92ZXIge3tjb3VudH19IHllYXJzIn0sYWxtb3N0WFllYXJzOntvbmU6ImFsbW9zdCAxIHllYXIiLG90aGVyOiJhbG1vc3Qge3tjb3VudH19IHllYXJzIn19LFNzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxhPUVzW2VdO3JldHVybiBpPSJzdHJpbmciPT10eXBlb2YgYT9hOjE9PT10P2Eub25lOmEub3RoZXIucmVwbGFjZSgie3tjb3VudH19Iix0LnRvU3RyaW5nKCkpLG51bGwhPW4mJm4uYWRkU3VmZml4P24uY29tcGFyaXNvbiYmbi5jb21wYXJpc29uPjA/ImluICIraTppKyIgYWdvIjppfTtmdW5jdGlvbiBEcyhlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sbj10LndpZHRoP1N0cmluZyh0LndpZHRoKTplLmRlZmF1bHRXaWR0aDtyZXR1cm4gZS5mb3JtYXRzW25dfHxlLmZvcm1hdHNbZS5kZWZhdWx0V2lkdGhdfX12YXIgWXM9e2RhdGU6RHMoe2Zvcm1hdHM6e2Z1bGw6IkVFRUUsIE1NTU0gZG8sIHkiLGxvbmc6Ik1NTU0gZG8sIHkiLG1lZGl1bToiTU1NIGQsIHkiLHNob3J0OiJNTS9kZC95eXl5In0sZGVmYXVsdFdpZHRoOiJmdWxsIn0pLHRpbWU6RHMoe2Zvcm1hdHM6e2Z1bGw6Img6bW06c3MgYSB6enp6Iixsb25nOiJoOm1tOnNzIGEgeiIsbWVkaXVtOiJoOm1tOnNzIGEiLHNob3J0OiJoOm1tIGEifSxkZWZhdWx0V2lkdGg6ImZ1bGwifSksZGF0ZVRpbWU6RHMoe2Zvcm1hdHM6e2Z1bGw6Int7ZGF0ZX19ICdhdCcge3t0aW1lfX0iLGxvbmc6Int7ZGF0ZX19ICdhdCcge3t0aW1lfX0iLG1lZGl1bToie3tkYXRlfX0sIHt7dGltZX19IixzaG9ydDoie3tkYXRlfX0sIHt7dGltZX19In0sZGVmYXVsdFdpZHRoOiJmdWxsIn0pfSxUcz17bGFzdFdlZWs6IidsYXN0JyBlZWVlICdhdCcgcCIseWVzdGVyZGF5OiIneWVzdGVyZGF5IGF0JyBwIix0b2RheToiJ3RvZGF5IGF0JyBwIix0b21vcnJvdzoiJ3RvbW9ycm93IGF0JyBwIixuZXh0V2VlazoiZWVlZSAnYXQnIHAiLG90aGVyOiJQIn0sRnM9ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIFRzW2VdfTtmdW5jdGlvbiBJcyhlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgaTtpZigiZm9ybWF0dGluZyI9PT0obnVsbCE9biYmbi5jb250ZXh0P1N0cmluZyhuLmNvbnRleHQpOiJzdGFuZGFsb25lIikmJmUuZm9ybWF0dGluZ1ZhbHVlcyl7dmFyIGE9ZS5kZWZhdWx0Rm9ybWF0dGluZ1dpZHRofHxlLmRlZmF1bHRXaWR0aCxvPW51bGwhPW4mJm4ud2lkdGg/U3RyaW5nKG4ud2lkdGgpOmE7aT1lLmZvcm1hdHRpbmdWYWx1ZXNbb118fGUuZm9ybWF0dGluZ1ZhbHVlc1thXX1lbHNle3ZhciByPWUuZGVmYXVsdFdpZHRoLHM9bnVsbCE9biYmbi53aWR0aD9TdHJpbmcobi53aWR0aCk6ZS5kZWZhdWx0V2lkdGg7aT1lLnZhbHVlc1tzXXx8ZS52YWx1ZXNbcl19cmV0dXJuIGlbZS5hcmd1bWVudENhbGxiYWNrP2UuYXJndW1lbnRDYWxsYmFjayh0KTp0XX19dmFyIF9zPXtvcmRpbmFsTnVtYmVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49TnVtYmVyKGUpLGk9biUxMDA7aWYoaT4yMHx8aTwxMClzd2l0Y2goaSUxMCl7Y2FzZSAxOnJldHVybiBuKyJzdCI7Y2FzZSAyOnJldHVybiBuKyJuZCI7Y2FzZSAzOnJldHVybiBuKyJyZCJ9cmV0dXJuIG4rInRoIn0sZXJhOklzKHt2YWx1ZXM6e25hcnJvdzpbIkIiLCJBIl0sYWJicmV2aWF0ZWQ6WyJCQyIsIkFEIl0sd2lkZTpbIkJlZm9yZSBDaHJpc3QiLCJBbm5vIERvbWluaSJdfSxkZWZhdWx0V2lkdGg6IndpZGUifSkscXVhcnRlcjpJcyh7dmFsdWVzOntuYXJyb3c6WyIxIiwiMiIsIjMiLCI0Il0sYWJicmV2aWF0ZWQ6WyJRMSIsIlEyIiwiUTMiLCJRNCJdLHdpZGU6WyIxc3QgcXVhcnRlciIsIjJuZCBxdWFydGVyIiwiM3JkIHF1YXJ0ZXIiLCI0dGggcXVhcnRlciJdfSxkZWZhdWx0V2lkdGg6IndpZGUiLGFyZ3VtZW50Q2FsbGJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGUtMX19KSxtb250aDpJcyh7dmFsdWVzOntuYXJyb3c6WyJKIiwiRiIsIk0iLCJBIiwiTSIsIkoiLCJKIiwiQSIsIlMiLCJPIiwiTiIsIkQiXSxhYmJyZXZpYXRlZDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLHdpZGU6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdfSxkZWZhdWx0V2lkdGg6IndpZGUifSksZGF5OklzKHt2YWx1ZXM6e25hcnJvdzpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSxzaG9ydDpbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl0sYWJicmV2aWF0ZWQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSx3aWRlOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sZGVmYXVsdFdpZHRoOiJ3aWRlIn0pLGRheVBlcmlvZDpJcyh7dmFsdWVzOntuYXJyb3c6e2FtOiJhIixwbToicCIsbWlkbmlnaHQ6Im1pIixub29uOiJuIixtb3JuaW5nOiJtb3JuaW5nIixhZnRlcm5vb246ImFmdGVybm9vbiIsZXZlbmluZzoiZXZlbmluZyIsbmlnaHQ6Im5pZ2h0In0sYWJicmV2aWF0ZWQ6e2FtOiJBTSIscG06IlBNIixtaWRuaWdodDoibWlkbmlnaHQiLG5vb246Im5vb24iLG1vcm5pbmc6Im1vcm5pbmciLGFmdGVybm9vbjoiYWZ0ZXJub29uIixldmVuaW5nOiJldmVuaW5nIixuaWdodDoibmlnaHQifSx3aWRlOnthbToiYS5tLiIscG06InAubS4iLG1pZG5pZ2h0OiJtaWRuaWdodCIsbm9vbjoibm9vbiIsbW9ybmluZzoibW9ybmluZyIsYWZ0ZXJub29uOiJhZnRlcm5vb24iLGV2ZW5pbmc6ImV2ZW5pbmciLG5pZ2h0OiJuaWdodCJ9fSxkZWZhdWx0V2lkdGg6IndpZGUiLGZvcm1hdHRpbmdWYWx1ZXM6e25hcnJvdzp7YW06ImEiLHBtOiJwIixtaWRuaWdodDoibWkiLG5vb246Im4iLG1vcm5pbmc6ImluIHRoZSBtb3JuaW5nIixhZnRlcm5vb246ImluIHRoZSBhZnRlcm5vb24iLGV2ZW5pbmc6ImluIHRoZSBldmVuaW5nIixuaWdodDoiYXQgbmlnaHQifSxhYmJyZXZpYXRlZDp7YW06IkFNIixwbToiUE0iLG1pZG5pZ2h0OiJtaWRuaWdodCIsbm9vbjoibm9vbiIsbW9ybmluZzoiaW4gdGhlIG1vcm5pbmciLGFmdGVybm9vbjoiaW4gdGhlIGFmdGVybm9vbiIsZXZlbmluZzoiaW4gdGhlIGV2ZW5pbmciLG5pZ2h0OiJhdCBuaWdodCJ9LHdpZGU6e2FtOiJhLm0uIixwbToicC5tLiIsbWlkbmlnaHQ6Im1pZG5pZ2h0Iixub29uOiJub29uIixtb3JuaW5nOiJpbiB0aGUgbW9ybmluZyIsYWZ0ZXJub29uOiJpbiB0aGUgYWZ0ZXJub29uIixldmVuaW5nOiJpbiB0aGUgZXZlbmluZyIsbmlnaHQ6ImF0IG5pZ2h0In19LGRlZmF1bHRGb3JtYXR0aW5nV2lkdGg6IndpZGUifSl9O2Z1bmN0aW9uIE1zKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30saT1uLndpZHRoLGE9aSYmZS5tYXRjaFBhdHRlcm5zW2ldfHxlLm1hdGNoUGF0dGVybnNbZS5kZWZhdWx0TWF0Y2hXaWR0aF0sbz10Lm1hdGNoKGEpO2lmKCFvKXJldHVybiBudWxsO3ZhciByLHM9b1swXSxsPWkmJmUucGFyc2VQYXR0ZXJuc1tpXXx8ZS5wYXJzZVBhdHRlcm5zW2UuZGVmYXVsdFBhcnNlV2lkdGhdLGQ9QXJyYXkuaXNBcnJheShsKT9mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKHQoZVtuXSkpcmV0dXJuIG47cmV0dXJufShsLGZ1bmN0aW9uKGUpe3JldHVybiBlLnRlc3Qocyl9KTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobikmJnQoZVtuXSkpcmV0dXJuIG47cmV0dXJufShsLGZ1bmN0aW9uKGUpe3JldHVybiBlLnRlc3Qocyl9KTtyZXR1cm4gcj1lLnZhbHVlQ2FsbGJhY2s/ZS52YWx1ZUNhbGxiYWNrKGQpOmQse3ZhbHVlOnI9bi52YWx1ZUNhbGxiYWNrP24udmFsdWVDYWxsYmFjayhyKTpyLHJlc3Q6dC5zbGljZShzLmxlbmd0aCl9fX12YXIgTnMsT3M9e29yZGluYWxOdW1iZXI6KE5zPXttYXRjaFBhdHRlcm46L14oXGQrKSh0aHxzdHxuZHxyZCk/L2kscGFyc2VQYXR0ZXJuOi9cZCsvaSx2YWx1ZUNhbGxiYWNrOmZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUludChlLDEwKX19LGZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPWUubWF0Y2goTnMubWF0Y2hQYXR0ZXJuKTtpZighbilyZXR1cm4gbnVsbDt2YXIgaT1uWzBdLGE9ZS5tYXRjaChOcy5wYXJzZVBhdHRlcm4pO2lmKCFhKXJldHVybiBudWxsO3ZhciBvPU5zLnZhbHVlQ2FsbGJhY2s/TnMudmFsdWVDYWxsYmFjayhhWzBdKTphWzBdO3JldHVybnt2YWx1ZTpvPXQudmFsdWVDYWxsYmFjaz90LnZhbHVlQ2FsbGJhY2sobyk6byxyZXN0OmUuc2xpY2UoaS5sZW5ndGgpfX0pLGVyYTpNcyh7bWF0Y2hQYXR0ZXJuczp7bmFycm93Oi9eKGJ8YSkvaSxhYmJyZXZpYXRlZDovXihiXC4/XHM/Y1wuP3xiXC4/XHM/Y1wuP1xzP2VcLj98YVwuP1xzP2RcLj98Y1wuP1xzP2VcLj8pL2ksd2lkZTovXihiZWZvcmUgY2hyaXN0fGJlZm9yZSBjb21tb24gZXJhfGFubm8gZG9taW5pfGNvbW1vbiBlcmEpL2l9LGRlZmF1bHRNYXRjaFdpZHRoOiJ3aWRlIixwYXJzZVBhdHRlcm5zOnthbnk6Wy9eYi9pLC9eKGF8YykvaV19LGRlZmF1bHRQYXJzZVdpZHRoOiJhbnkifSkscXVhcnRlcjpNcyh7bWF0Y2hQYXR0ZXJuczp7bmFycm93Oi9eWzEyMzRdL2ksYWJicmV2aWF0ZWQ6L15xWzEyMzRdL2ksd2lkZTovXlsxMjM0XSh0aHxzdHxuZHxyZCk/IHF1YXJ0ZXIvaX0sZGVmYXVsdE1hdGNoV2lkdGg6IndpZGUiLHBhcnNlUGF0dGVybnM6e2FueTpbLzEvaSwvMi9pLC8zL2ksLzQvaV19LGRlZmF1bHRQYXJzZVdpZHRoOiJhbnkiLHZhbHVlQ2FsbGJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrMX19KSxtb250aDpNcyh7bWF0Y2hQYXR0ZXJuczp7bmFycm93Oi9eW2pmbWFzb25kXS9pLGFiYnJldmlhdGVkOi9eKGphbnxmZWJ8bWFyfGFwcnxtYXl8anVufGp1bHxhdWd8c2VwfG9jdHxub3Z8ZGVjKS9pLHdpZGU6L14oamFudWFyeXxmZWJydWFyeXxtYXJjaHxhcHJpbHxtYXl8anVuZXxqdWx5fGF1Z3VzdHxzZXB0ZW1iZXJ8b2N0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaX0sZGVmYXVsdE1hdGNoV2lkdGg6IndpZGUiLHBhcnNlUGF0dGVybnM6e25hcnJvdzpbL15qL2ksL15mL2ksL15tL2ksL15hL2ksL15tL2ksL15qL2ksL15qL2ksL15hL2ksL15zL2ksL15vL2ksL15uL2ksL15kL2ldLGFueTpbL15qYS9pLC9eZi9pLC9ebWFyL2ksL15hcC9pLC9ebWF5L2ksL15qdW4vaSwvXmp1bC9pLC9eYXUvaSwvXnMvaSwvXm8vaSwvXm4vaSwvXmQvaV19LGRlZmF1bHRQYXJzZVdpZHRoOiJhbnkifSksZGF5Ok1zKHttYXRjaFBhdHRlcm5zOntuYXJyb3c6L15bc210d2ZdL2ksc2hvcnQ6L14oc3V8bW98dHV8d2V8dGh8ZnJ8c2EpL2ksYWJicmV2aWF0ZWQ6L14oc3VufG1vbnx0dWV8d2VkfHRodXxmcml8c2F0KS9pLHdpZGU6L14oc3VuZGF5fG1vbmRheXx0dWVzZGF5fHdlZG5lc2RheXx0aHVyc2RheXxmcmlkYXl8c2F0dXJkYXkpL2l9LGRlZmF1bHRNYXRjaFdpZHRoOiJ3aWRlIixwYXJzZVBhdHRlcm5zOntuYXJyb3c6Wy9ecy9pLC9ebS9pLC9edC9pLC9edy9pLC9edC9pLC9eZi9pLC9ecy9pXSxhbnk6Wy9ec3UvaSwvXm0vaSwvXnR1L2ksL153L2ksL150aC9pLC9eZi9pLC9ec2EvaV19LGRlZmF1bHRQYXJzZVdpZHRoOiJhbnkifSksZGF5UGVyaW9kOk1zKHttYXRjaFBhdHRlcm5zOntuYXJyb3c6L14oYXxwfG1pfG58KGluIHRoZXxhdCkgKG1vcm5pbmd8YWZ0ZXJub29ufGV2ZW5pbmd8bmlnaHQpKS9pLGFueTovXihbYXBdXC4/XHM/bVwuP3xtaWRuaWdodHxub29ufChpbiB0aGV8YXQpIChtb3JuaW5nfGFmdGVybm9vbnxldmVuaW5nfG5pZ2h0KSkvaX0sZGVmYXVsdE1hdGNoV2lkdGg6ImFueSIscGFyc2VQYXR0ZXJuczp7YW55OnthbTovXmEvaSxwbTovXnAvaSxtaWRuaWdodDovXm1pL2ksbm9vbjovXm5vL2ksbW9ybmluZzovbW9ybmluZy9pLGFmdGVybm9vbjovYWZ0ZXJub29uL2ksZXZlbmluZzovZXZlbmluZy9pLG5pZ2h0Oi9uaWdodC9pfX0sZGVmYXVsdFBhcnNlV2lkdGg6ImFueSJ9KX0sUnM9e2NvZGU6ImVuLVVTIixmb3JtYXREaXN0YW5jZTpTcyxmb3JtYXRMb25nOllzLGZvcm1hdFJlbGF0aXZlOkZzLGxvY2FsaXplOl9zLG1hdGNoOk9zLG9wdGlvbnM6e3dlZWtTdGFydHNPbjowLGZpcnN0V2Vla0NvbnRhaW5zRGF0ZToxfX0sanM9L1t5WVFxTUx3SWREZWNpaEhLa21zXW98KFx3KVwxKnwnJ3wnKCcnfFteJ10pKygnfCQpfC4vZyxQcz0vUCtwK3xQK3xwK3wnJ3wnKCcnfFteJ10pKygnfCQpfC4vZyx6cz0vXicoW15dKj8pJz8kLyxMcz0vJycvZyxVcz0vW2EtekEtWl0vO2Z1bmN0aW9uIEJzKGUsdCxuKXt2YXIgaSxhLG8scixzLGwsZCxjLHUscCxmLG0saCxnLGIsdix4LHk7SHIoMixhcmd1bWVudHMpO3ZhciB3PVN0cmluZyh0KSxrPXRzKCksQT1udWxsIT09KGk9bnVsbCE9PShhPW51bGw9PW4/dm9pZCAwOm4ubG9jYWxlKSYmdm9pZCAwIT09YT9hOmsubG9jYWxlKSYmdm9pZCAwIT09aT9pOlJzLEM9V3IobnVsbCE9PShvPW51bGwhPT0ocj1udWxsIT09KHM9bnVsbCE9PShsPW51bGw9PW4/dm9pZCAwOm4uZmlyc3RXZWVrQ29udGFpbnNEYXRlKSYmdm9pZCAwIT09bD9sOm51bGw9PW58fG51bGw9PT0oZD1uLmxvY2FsZSl8fHZvaWQgMD09PWR8fG51bGw9PT0oYz1kLm9wdGlvbnMpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkmJnZvaWQgMCE9PXM/czprLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkmJnZvaWQgMCE9PXI/cjpudWxsPT09KHU9ay5sb2NhbGUpfHx2b2lkIDA9PT11fHxudWxsPT09KHA9dS5vcHRpb25zKXx8dm9pZCAwPT09cD92b2lkIDA6cC5maXJzdFdlZWtDb250YWluc0RhdGUpJiZ2b2lkIDAhPT1vP286MSk7aWYoIShDPj0xJiZDPD03KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiZmlyc3RXZWVrQ29udGFpbnNEYXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3IGluY2x1c2l2ZWx5Iik7dmFyIEU9V3IobnVsbCE9PShmPW51bGwhPT0obT1udWxsIT09KGg9bnVsbCE9PShnPW51bGw9PW4/dm9pZCAwOm4ud2Vla1N0YXJ0c09uKSYmdm9pZCAwIT09Zz9nOm51bGw9PW58fG51bGw9PT0oYj1uLmxvY2FsZSl8fHZvaWQgMD09PWJ8fG51bGw9PT0odj1iLm9wdGlvbnMpfHx2b2lkIDA9PT12P3ZvaWQgMDp2LndlZWtTdGFydHNPbikmJnZvaWQgMCE9PWg/aDprLndlZWtTdGFydHNPbikmJnZvaWQgMCE9PW0/bTpudWxsPT09KHg9ay5sb2NhbGUpfHx2b2lkIDA9PT14fHxudWxsPT09KHk9eC5vcHRpb25zKXx8dm9pZCAwPT09eT92b2lkIDA6eS53ZWVrU3RhcnRzT24pJiZ2b2lkIDAhPT1mP2Y6MCk7aWYoIShFPj0wJiZFPD02KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigid2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Iik7aWYoIUEubG9jYWxpemUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImxvY2FsZSBtdXN0IGNvbnRhaW4gbG9jYWxpemUgcHJvcGVydHkiKTtpZighQS5mb3JtYXRMb25nKXRocm93IG5ldyBSYW5nZUVycm9yKCJsb2NhbGUgbXVzdCBjb250YWluIGZvcm1hdExvbmcgcHJvcGVydHkiKTt2YXIgUz1xcihlKTtpZighR3IoUykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdGltZSB2YWx1ZSIpO3ZhciBEPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlKERhdGUuVVRDKGUuZ2V0RnVsbFllYXIoKSxlLmdldE1vbnRoKCksZS5nZXREYXRlKCksZS5nZXRIb3VycygpLGUuZ2V0TWludXRlcygpLGUuZ2V0U2Vjb25kcygpLGUuZ2V0TWlsbGlzZWNvbmRzKCkpKTtyZXR1cm4gdC5zZXRVVENGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkpLGUuZ2V0VGltZSgpLXQuZ2V0VGltZSgpfShTKSxZPVhyKFMsRCksVD17Zmlyc3RXZWVrQ29udGFpbnNEYXRlOkMsd2Vla1N0YXJ0c09uOkUsbG9jYWxlOkEsX29yaWdpbmFsRGF0ZTpTfTtyZXR1cm4gdy5tYXRjaChQcykubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF07cmV0dXJuInAiPT09dHx8IlAiPT09dD8oMCx3c1t0XSkoZSxBLmZvcm1hdExvbmcpOmV9KS5qb2luKCIiKS5tYXRjaChqcykubWFwKGZ1bmN0aW9uKGkpe2lmKCInJyI9PT1pKXJldHVybiInIjt2YXIgYT1pWzBdO2lmKCInIj09PWEpcmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goenMpO2lmKCF0KXJldHVybiBlO3JldHVybiB0WzFdLnJlcGxhY2UoTHMsIiciKX0oaSk7dmFyIG8scj1ic1thXTtpZihyKXJldHVybiBudWxsIT1uJiZuLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vuc3x8KG89aSwtMT09PUFzLmluZGV4T2YobykpfHxDcyhpLHQsU3RyaW5nKGUpKSxudWxsIT1uJiZuLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnN8fCFmdW5jdGlvbihlKXtyZXR1cm4tMSE9PWtzLmluZGV4T2YoZSl9KGkpfHxDcyhpLHQsU3RyaW5nKGUpKSxyKFksaSxBLmxvY2FsaXplLFQpO2lmKGEubWF0Y2goVXMpKXRocm93IG5ldyBSYW5nZUVycm9yKCJGb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXIgYCIrYSsiYCIpO3JldHVybiBpfSkuam9pbigiIil9Y29uc3QgSHM9ZT0+e2NvbnN0IHQ9bmV3IERhdGUoMWUzKmUpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gSHIoMSxhcmd1bWVudHMpLCRyKGUsRGF0ZS5ub3coKSl9KHQpPygwLHkucHcpKCJ0aW1lVG9kYXkiLG51bGwsIlRvZGF5Iik6ZnVuY3Rpb24oZSl7cmV0dXJuIEhyKDEsYXJndW1lbnRzKSwkcihlLEtyKERhdGUubm93KCksMSkpfSh0KT8oMCx5LnB3KSgidGltZVllc3RlcmRheSIsbnVsbCwiWWVzdGVyZGF5Iik6QnModCwiZC9NL3l5eXkiKX0scXM9ZT0+KDAsVi5ZKSgic3BhbiIse2NsYXNzTmFtZToidGltZXN0YW1wLW9wZXJhdG9yIixjaGlsZHJlbjpgJHtlfSAtIGB9KSxWcz1lPT57Y29uc3QgdD0oMCxyLmQ0KSh0PT4oMCxDLk4wKSh0LGUub3BlcmF0b3JJZCkpLG49KDAsci5kNCkodD0+KDAsQy55VSkodCxlLm9wZXJhdG9ySWQpKSxpPXQ/e2JhY2tncm91bmRJbWFnZTpgdXJsKCcke3R9JylgfTpudWxsO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOltpJiYoMCxWLlkpKCJzcGFuIix7Y2xhc3NOYW1lOiJ0aW1lc3RhbXAtYXZhdGFyIixzdHlsZTppfSkscXMobildfSl9O3ZhciAkcz1lPT57bGV0e29wZXJhdG9ySWQ6dCxpc0FJQXNzaXN0YW50Om4sYWlBc3Npc3RhbnROYW1lOmksdGltZTphfT1lO3JldHVybigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2VUaW1lc3RhbXAiLGNoaWxkcmVuOlt0JiYoMCxWLlkpKFZzLHtvcGVyYXRvcklkOnR9KSxuJiZpJiZxcyhgJHtpfSBBSSBBZ2VudGApLGAke0hzKGEpfSwgJHtCcyhuZXcgRGF0ZSgxZTMqYSksIkg6bW0iKX1gXX0pfTtjb25zdCBXcz0iaHR0cHM6Ly9hc3NldHMudGlkaW9jaGF0LmNvbS9pbWcvbm90X2ZvdW5kLmpwZyI7dmFyIEtzPWU9Pntjb25zdHtjb250ZW50OnQsZXh0ZW5zaW9uOm4sdGh1bWI6aSxuYW1lOm8saWQ6c309ZSxsPSgwLHIud0EpKCksZD0oMCxyLmQ0KShlPT5lLnB1YmxpY0tleSksYz0oMCxyLmQ0KShlPT5lLnZpc2l0b3IuaWQpLFt1LHBdPSgwLGEudXNlU3RhdGUpKHQpLFttLGhdPSgwLGEudXNlU3RhdGUpKGl8fCIiKSxbZyxiXT0oMCxhLnVzZVN0YXRlKSghMCksdj0iZ2lmIiE9PW4/bTp1LHg9KDAsYS51c2VDYWxsYmFjaykoYXN5bmMgZnVuY3Rpb24oZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtpZihlPT09V3MpcmV0dXJuIGIoITEpLCIiO2lmKC0xPT09ZS5pbmRleE9mKCIvY29udmVyc2F0aW9uLyIpKXtjb25zdCBuPSgwLGYuRGwpKGUpLGk9YC8ke2R9L2NvbnZlcnNhdGlvbi8ke2N9YCxhPW4/YCR7bi5wcm90b2NvbH0vLyR7bi5ob3N0fSR7aX0ke24ucGF0aG5hbWV9JHtuLnNlYXJjaH0ke24uaGFzaH1gOmUsbz1hd2FpdCBhc3luYyBmdW5jdGlvbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06V3M7cmV0dXJuIG5ldyBQcm9taXNlKCh0LG4pPT57Y29uc3QgaT1uZXcgSW1hZ2U7aS5zcmM9ZSxpLm9ubG9hZD0oKT0+dChlKSxpLm9uZXJyb3I9ZT0+e24oZSl9fSkuY2F0Y2goKCk9PnQpfShhKTt0P2gobyk6cChvKX1lbHNlIGgoV3MpLHAoV3MpO3JldHVybiIifSxbZCxjXSkseT0oMCxhLnVzZUNhbGxiYWNrKSh0PT57dC5wcmV2ZW50RGVmYXVsdCgpLGwoKDAsay5xS24pKHUpKSxlLm9uQ2xpY2soKX0sW2wsdSxlXSksdz0oMCxhLnVzZUNhbGxiYWNrKShlPT57ZS5jdXJyZW50VGFyZ2V0LnNldEF0dHJpYnV0ZSgiYWx0IixgJHtvfWApLGwoKDAsay5EdngpKHMsITApKX0sW2wscyxvXSksQT0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e3godSkseChtLCEwKX0sW3UsbSx4XSk7aWYoIWcpcmV0dXJuIG51bGw7Y29uc3QgQz0oMCxmLklGKSh0KTtyZXR1cm4oMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAsVi5ZKSgiYSIse2hyZWY6Qyx0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciBub3JlZmVycmVyIixvbkNsaWNrOnksY2hpbGRyZW46KDAsVi5ZKSgiaW1nIix7Y2xhc3NOYW1lOiJhdHRhY2htZW50LWltZyIsc3JjOnYsb25Mb2FkOncsb25FcnJvcjpBLGFsdDpvfHwiIn0pfSl9KX07Y29uc3QgR3M9InlvdXR1YmVQcmV2aWV3TG9hZGVkIixYcz17bmFtZToiMWF3dzY2IixzdHlsZXM6ImRpc3BsYXk6YmxvY2s7d2lkdGg6Y2FsYygxMDAlICsgdmFyKC0tbWVzc2FnZS1wYWRkaW5nLWlubGluZSwgMTZweCkgKiAyKTttYXJnaW4tdG9wOjE2cHg7bWFyZ2luLWxlZnQ6Y2FsYyh2YXIoLS1tZXNzYWdlLXBhZGRpbmctaW5saW5lLCAxNnB4KSAqIC0xKTttYXJnaW4tcmlnaHQ6Y2FsYyh2YXIoLS1tZXNzYWdlLXBhZGRpbmctaW5saW5lLCAxNnB4KSAqIC0xKTttYXJnaW4tYm90dG9tOmNhbGModmFyKC0tbWVzc2FnZS1wYWRkaW5nLWJsb2NrLCAxMHB4KSAqIC0xKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiNmZmY7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmUifSxRcz0oMCxkLkFIKSh7d2lkdGg6IjEwMCUiLGFzcGVjdFJhdGlvOiIxNiAvIDkiLG1pbkhlaWdodDoxMzkuNSxiYWNrZ3JvdW5kOiJsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNlOGU4ZTggMjUlLCAjZjVmNWY1IDUwJSwgI2U4ZThlOCA3NSUpIixiYWNrZ3JvdW5kU2l6ZToiMjAwJSAxMDAlIixhbmltYXRpb246InNoaW1tZXIgMS41cyBpbmZpbml0ZSIsIkBrZXlmcmFtZXMgc2hpbW1lciI6eyIwJSI6e2JhY2tncm91bmRQb3NpdGlvbjoiMjAwJSAwIn0sIjEwMCUiOntiYWNrZ3JvdW5kUG9zaXRpb246Ii0yMDAlIDAifX19LCIiLCIiKSxacz0oMCxkLkFIKSh7d2lkdGg6IjEwMCUiLGFzcGVjdFJhdGlvOiIxNiAvIDkiLG9iamVjdEZpdDoiY292ZXIiLGRpc3BsYXk6ImJsb2NrIixtaW5IZWlnaHQ6MTM5LjUsIiYmJiI6e2N1cnNvcjoicG9pbnRlciJ9fSwiIiwiIiksSnM9e25hbWU6IjRjYmNleCIsc3R5bGVzOiJwYWRkaW5nOjE2cHg7Ym9yZGVyOjFweCBzb2xpZCAjZWJlZWYwO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgMTJweCk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgMTJweCkifSxlbD17bmFtZToidTNyNjN5IixzdHlsZXM6ImZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoyMHB4O2NvbG9yOiMwODBGMUE7ZGlzcGxheTotd2Via2l0LWJveDstd2Via2l0LWxpbmUtY2xhbXA6Mjstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXMifTt2YXIgdGw9ZT0+e2xldHt1cmw6dH09ZTtjb25zdFtuLGldPSgwLGEudXNlU3RhdGUpKG51bGwpLFtvLHJdPSgwLGEudXNlU3RhdGUpKCExKSxbcyxsXT0oMCxhLnVzZVN0YXRlKSghMSksW2QsY109KDAsYS51c2VTdGF0ZSkoITEpLHU9KDAsYS51c2VSZWYpKG51bGwpLHA9R28odCk7aWYoKDAsYS51c2VFZmZlY3QpKCgpPT57cCYmKGFzeW5jKCk9Pnt0cnl7Y29uc3QgZT1hd2FpdCBmZXRjaChgaHR0cHM6Ly93d3cueW91dHViZS5jb20vb2VtYmVkP3VybD1odHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PSR7cH0mZm9ybWF0PWpzb25gKSx0PWF3YWl0IGUuanNvbigpO3QudGl0bGUmJmkodC50aXRsZSl9Y2F0Y2h7fWZpbmFsbHl7cighMCl9fSkoKX0sW3BdKSwoMCxhLnVzZUVmZmVjdCkoKCk9PnsoZHx8cykmJm8mJnUuY3VycmVudCYmdS5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KEdzLHtidWJibGVzOiEwfSkpfSxbZCxzLG9dKSwhcClyZXR1cm4gbnVsbDtjb25zdCBmPShlPT5gaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvJHtlfS9ocWRlZmF1bHQuanBnYCkocCksbT0hZCYmIXM7cmV0dXJuKDAsVi5GRCkoImEiLHtyZWY6dSxocmVmOnQsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciIsY3NzOlhzLCJkYXRhLXlvdXR1YmUtcHJldmlldyI6ITAsY2hpbGRyZW46W20mJigwLFYuWSkoImRpdiIse2NzczpRc30pLCgwLFYuWSkoImltZyIse2NzczpbWnMsbSYme2Rpc3BsYXk6Im5vbmUifSwiIiwiIl0sc3JjOnM/V3M6ZixhbHQ6bnx8IllvdVR1YmUgdmlkZW8iLG9uTG9hZDooKT0+YyghMCksb25FcnJvcjooKT0+bCghMCl9KSxuJiYoMCxWLlkpKCJkaXYiLHtjc3M6SnMsY2hpbGRyZW46KDAsVi5ZKSgicCIse2NzczplbCxjaGlsZHJlbjpufSl9KV19KX07dmFyIG5sPWU9Pntjb25zdCB0PSgwLHIud0EpKCksbj0oMCxyLmQ0KSh0PT4oMCxDLm1WKSh0LGUuaWQpKSxpPSgwLHIuZDQpKGU9PigwLEMuUW4pKGUpKSxvPUJvb2xlYW4obiYmZS5pc0FJQXNzaXN0YW50KSxbcyxsXT0oMCxhLnVzZVN0YXRlKShvKSx7aXNOZXdTa2luOmR9PSgwLHAuQSkoKTsoMCxhLnVzZUVmZmVjdCkoKCk9PntsKG8pfSxbb10pO2NvbnN0IGM9Qm9vbGVhbihlLnJhdGluZ0lkKSYmIXMsdT17Ym9yZGVyOiIxcHggc29saWQgdHJhbnNwYXJlbnQiLGJhY2tncm91bmQ6YGxpbmVhci1ncmFkaWVudCh3aGl0ZSwgd2hpdGUpIHBhZGRpbmctYm94LCBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAke2YuWFZbMF19LCAke2YuWFZbMV19KSBib3JkZXItYm94YH07cmV0dXJuKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZTpgbWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yICR7cz8idGltZXN0YW1wLXZpc2libGUiOiIifSAke2UucmF0aW5nSWQ/InJhdGluZy12aXNpYmxlIjoiIn1gLHN0eWxlOmUuaXNBSUFzc2lzdGFudCYmIWQ/dTp2b2lkIDAsY2hpbGRyZW46WygwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6Im1lc3NhZ2UtY29udGVudCBtZXNzYWdlLWNvbnRlbnQtLW1hcmtkb3duIixkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOmUuY29udGVudH0sb25DbGljazplPT57Y29uc3R7dGFyZ2V0Om59PWU7IU5yKG4pfHxuLmNsb3Nlc3QoImEiKXx8bi5jbGFzc0xpc3QuY29udGFpbnMoImVtb2ppIik/bChlPT4hZSk6dCgoMCxrLnFLbikobi5zcmMpKX19KSxlLnlvdXR1YmVVcmwmJigwLFYuWSkodGwse3VybDplLnlvdXR1YmVVcmx9KSwoMCxWLlkpKF9pLHtpbjpzLGNoaWxkcmVuOigwLFYuWSkoJHMse2lzQUlBc3Npc3RhbnQ6ZS5pc0FJQXNzaXN0YW50LGFpQXNzaXN0YW50TmFtZTppLHRpbWU6ZS50aW1lX3NlbnR9KX0pLCgwLFYuWSkoX2kse2luOmMsY2hpbGRyZW46KDAsVi5ZKShVcix7bWVzc2FnZUlkOmUuaWQscmF0aW5nSWQ6ZS5yYXRpbmdJZCxyYXRpbmc6ZS5yYXRpbmd9KX0pXX0pfTt2YXIgaWw9ZT0+e2NvbnN0e2lzTmV3U2tpbjp0fT0oMCxwLkEpKCksbj1odCh0KTtyZXR1cm4oMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLHRpdGxlOmUudGl0bGUsb25DbGljazooKT0+e2xldCB0PWUudGl0bGU7ZS5jYXJkQ2xpY2tlZCYmKHQ9YCR7ZS5jYXJkQ2xpY2tlZH0gJnJhcnI7ICR7ZS50aXRsZX1gKSxlLm9uQ2xpY2soZS5wYXlsb2FkLHQpfSxjaGlsZHJlbjooMCxWLlkpKCJzcGFuIix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpfbihlLnRpdGxlKX0sY3NzOm4udGV4dDE0fSl9KX07dmFyIGFsPWU9Pntjb25zdHt0aXRsZTp0LHBheWxvYWQ6bixvbkNsaWNrOmksY2FyZENsaWNrZWQ6YX09ZSxvPSgwLHIud0EpKCkscz1fbih0KSx7aXNOZXdTa2luOmx9PSgwLHAuQSkoKSxkPWh0KGwpLGM9ZS51cmx8fG4sdT0oMCxmLklGKShjKTtyZXR1cm4oMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6ImJ1dHRvbi11cmwiLGNoaWxkcmVuOigwLFYuWSkoImEiLHtjbGFzc05hbWU6ImJ1dHRvbi11cmxfX2FuY2hvciIsaHJlZjooMCxmLklGKShjKSx0eXBlOiJidXR0b24iLG9uQ2xpY2s6cj0+e3IucHJldmVudERlZmF1bHQoKTtsZXQgcz1lLnRpdGxlO2EmJihzPWAke2F9ICZyYXJyOyAke3R9YCksaShuLHMpLGUubWVzc2FnZVR5cGU9PT10dC5Hby5JRlJBTUUmJmUudXJsP28oKDAsay5RVCQpKCgwLGYuSUYpKGUudXJsKSkpOigwLGYuRmUpKHUpfSwiZGF0YS10ZXN0aWQiOiJidXR0b25VcmwiLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6c30sY3NzOmQudGV4dDE0fSl9KX07dmFyIG9sPWU9PntsZXR7YnV0dG9uczp0LG1ldGFkYXRhOm59PWU7Y29uc3QgaT0oMCxyLndBKSgpLG89KGUsdCk9PntpKCgwLGsuUkE3KSh0LGUse2lzX2FpX2Fzc2lzdGFudF90YXNrOm4/LmlzX2FpX2Fzc2lzdGFudF90YXNrfSkpLGkoKDAsay5wTzYpKGx0LlguYnV0dG9uQ2xpY2tlZCkpfTtyZXR1cm4oMCxWLlkpKFYuRksse2NoaWxkcmVuOnQubWFwKGU9PigwLFYuRkQpKGEuRnJhZ21lbnQse2NoaWxkcmVuOlsidXJsIj09PWUudHlwZSYmKDAsVi5ZKShhbCx7dGl0bGU6ZS50aXRsZSxwYXlsb2FkOmUucGF5bG9hZCx1cmw6ZS51cmwsY2FyZENsaWNrZWQ6ZS5jYXJkQ2xpY2tlZCxvbkNsaWNrOm99KSwiYWN0aW9uIj09PWUudHlwZSYmKDAsVi5ZKShpbCx7dGl0bGU6ZS50aXRsZSxwYXlsb2FkOmUucGF5bG9hZCxjYXJkQ2xpY2tlZDplLmNhcmRDbGlja2VkLG9uQ2xpY2s6b30pXX0sYCR7ZS50aXRsZX0ke2UucGF5bG9hZH1gKSl9KX07dmFyIHJsPWU9PntsZXR7Y29udGVudDp0LGJ1dHRvbnM6bixhaUFzc2lzdGFudFRhc2s6aX09ZTtjb25zdCBhPV9yKHQpO3JldHVybigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yIGJ1dHRvbnMtbWVzc2FnZSIsY2hpbGRyZW46KDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZS13aXRoLWJ1dHRvbnMiLGNoaWxkcmVuOlsoMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2Utd2l0aC1idXR0b25zLXRleHQiLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6YX0sImRhdGEtdGVzdGlkIjoiYnV0dG9uc1RleHQifSksKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJidXR0b24td3JhcHBlciIsY2hpbGRyZW46KDAsVi5ZKShvbCx7YnV0dG9uczpuLG1ldGFkYXRhOntpc19haV9hc3Npc3RhbnRfdGFzazppfX0pfSldfSl9KX07dmFyIHNsPWU9PntsZXR7YnV0dG9uczp0fT1lO2NvbnN0IG49KDAsci53QSkoKSxpPXRbMF0sYT0oMCxmLklGKShpLnVybHx8aS5wYXlsb2FkKTtyZXR1cm4oMCxWLlkpKCJhIix7aHJlZjphLGNsYXNzTmFtZToiYnV0dG9uLWljb24iLG9uQ2xpY2s6ZT0+e2UucHJldmVudERlZmF1bHQoKSxuKCgwLGsucE82KShsdC5YLmJ1dHRvbkNsaWNrZWQpKSwoMCxmLkZlKShhKX0sY2hpbGRyZW46KDAsVi5ZKSh1dC5mNSx7fSl9KX07dmFyIGxsPXtnZXRDb250ZW50Q29udGFpbmVyOmU9PigwLGQuQUgpKHtwYWRkaW5nOiI5cHggMTJweCA4cHgiLGJvcmRlcjoiMXB4IHNvbGlkICNlYmVlZjAiLGJvcmRlclRvcDoibm9uZSIsLi4uIWUmJntib3JkZXJSYWRpdXM6IjE0cHggMTRweCAwIDAiLGJvcmRlclRvcDoiMXB4IHNvbGlkICNlYmVlZjAifSwiJiBhIjp7dGV4dERlY29yYXRpb246Im5vbmUiLGNvbG9yOiIjMDAxMjJlIiwiJjpob3ZlciwgJjpmb2N1cywgJjphY3RpdmUsICY6dmlzaXRlZCI6e2NvbG9yOiIjMDAxMjJlIixvdXRsaW5lOiJub25lIn0sIiY6aG92ZXIiOnt0ZXh0RGVjb3JhdGlvbjoidW5kZXJsaW5lIn19fSwiIiwiIiksaW1hZ2U6e25hbWU6IjFiZDlnbXUiLHN0eWxlczoiYm9yZGVyLXJhZGl1czoxNHB4IDE0cHggMCAwO2hlaWdodDoxMjJweDtiYWNrZ3JvdW5kOiNmZmYgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7YmFja2dyb3VuZC1zaXplOmNvdmVyO2JvcmRlcjoxcHggc29saWQgI2ViZWVmMDtib3JkZXItYm90dG9tOjAifSx0aXRsZTp7bmFtZToiMW54cGI4dyIsc3R5bGVzOiJmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxOXB4O2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6IzAwMTIyZSJ9LHN1YnRpdGxlOntuYW1lOiIxYXd5YTdsIixzdHlsZXM6Im1hcmdpbjo0cHggMCAwO2xpbmUtaGVpZ2h0OjE2LjVweDtmb250LXNpemU6MTRweDtjb2xvcjojNGM1OTZiO3doaXRlLXNwYWNlOnByZS1saW5lOyYgLmVtb2ppe3dpZHRoOjE0cHg7bWFyZ2luOjAgMCAtMnB4IDJweDt9In0sdXJsOntuYW1lOiIxbjNhaTdrIixzdHlsZXM6ImZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE3cHg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2NvbG9yOiMwMDEyMmU7JiBhe29wYWNpdHk6MC41O30ifSxidXR0b25zOntuYW1lOiJvM3RjczgiLHN0eWxlczoiJiYgLmJ1dHRvbi13cmFwcGVye21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjFweDsmOmJlZm9yZXtjb250ZW50Om5vbmU7fWJ1dHRvbnt3aWR0aDoxMDAlO319In19O3ZhciBkbD17c3VidGl0bGU6e25hbWU6Imwxdng0cyIsc3R5bGVzOiJjb2xvcjojNjQ3NDkxO3doaXRlLXNwYWNlOnByZS1saW5lOy5lbW9qaXt3aWR0aDoxNHB4O21hcmdpbjowIDAgLTJweCAycHg7fSJ9LHVybDp7bmFtZToiYmY0MHNuIixzdHlsZXM6Im92ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpczthe3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiM2NDc0OTE7Jjpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30mOmhvdmVyLCAmOmZvY3VzLCAmOmFjdGl2ZSwgJjp2aXNpdGVke291dGxpbmU6bm9uZTt9fSJ9LGJ1dHRvbnM6e25hbWU6InhoYmtnNCIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2J1dHRvbnt3aWR0aDoxMDAlO2NvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IsICMwNTY2ZmYpO291dGxpbmU6bm9uZTtwYWRkaW5nOjhweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvciwgI0QzREJFNSk7Jjpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO319c3Zne2ZpbGw6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciwgIzA1NjZmZik7fWF7b3V0bGluZTpub25lO30ifSxpbWFnZTp7bmFtZToiNml3YnMzIixzdHlsZXM6ImhlaWdodDoxMjJweDtiYWNrZ3JvdW5kOiNmZmYgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7YmFja2dyb3VuZC1zaXplOmNvdmVyO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgOHB4KSB2YXIoLS1yYWRpdXMtY29tcG9uZW50LCA4cHgpIDAgMCJ9LGNvbnRhaW5lcjp7bmFtZToicWtjMnd6IixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IsICNEM0RCRTUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgOHB4KSJ9LGNvbnRlbnQ6e25hbWU6IjFmdHRjcGoiLHN0eWxlczoiZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiJ9LHRleHQ6e25hbWU6Im80NG1jYSIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo0cHg7cGFkZGluZzoxNnB4In19O3ZhciBjbD1lPT57bGV0e2ltYWdlVXJsOnQsbGluazpuLG9wZW5MaW5rOmk9KCk9Pnt9fT1lO2NvbnN0e2lzTmV3U2tpbjphfT0oMCxwLkEpKCk7cmV0dXJuIG4/KDAsVi5ZKSgiYSIse2hyZWY6bixvbkNsaWNrOmksImRhdGEtdGVzdGlkIjoiY2FyZEltYWdlTGluayIsY2hpbGRyZW46KDAsVi5ZKSgiZGl2Iix7Y3NzOmE/ZGwuaW1hZ2U6bGwuaW1hZ2Usc3R5bGU6e2JhY2tncm91bmRJbWFnZTpgdXJsKCR7dH0pYH19KX0pOigwLFYuWSkoImRpdiIse2NzczphP2RsLmltYWdlOmxsLmltYWdlLHN0eWxlOntiYWNrZ3JvdW5kSW1hZ2U6YHVybCgke3R9KWB9fSl9O3ZhciB1bD1lPT57bGV0e3RpdGxlOnQsaXNTaG9waWZ5Q2FyZDpuLGltYWdlVXJsOmksYnV0dG9uczpvLHByb3h5VXJsOnI9IiIsc3VidGl0bGU6cz0iIix1cmw6bD0iIixtZXRhZGF0YTpkfT1lO2NvbnN0e2lzTmV3U2tpbjpjfT0oMCxwLkEpKCksdT1odChjKSx7aG9zdDptfT0oMCxmLkRsKShsKXx8e30saD0oMCxmLklGKShsKSxnPSgwLGYuSUYpKHIpLGI9Rm4odCksdj1GbihzKSx4PSgwLGYuWGYpKCgwLGYuYnApKCksbCkseT1Cb29sZWFuKGkpLHc9KDAsYS51c2VNZW1vKSgoKT0+by5tYXAoZT0+KHsuLi5lLGNhcmRDbGlja2VkOnR9KSksW28sdF0pLGs9ZT0+e2UucHJldmVudERlZmF1bHQoKTtjb25zdCB0PWd8fGg7dHJ5e3gmJndpbmRvdy50b3A/d2luZG93LnRvcC5sb2NhdGlvbj10OndpbmRvdy5vcGVuKHQpfWNhdGNoe3dpbmRvdy5vcGVuKHQpfX07cmV0dXJuIGM/KDAsVi5GRCkoImRpdiIse2NzczpkbC5jb250YWluZXIsY2hpbGRyZW46W2kmJigwLFYuWSkoY2wse2ltYWdlVXJsOmksbGluazpoLG9wZW5MaW5rOmt9KSwoMCxWLkZEKSgiZGl2Iix7Y3NzOmRsLmNvbnRlbnQsY2hpbGRyZW46WygwLFYuRkQpKCJkaXYiLHtjc3M6ZGwudGV4dCxjaGlsZHJlbjpbKDAsVi5ZKSgiZGl2Iix7Y3NzOnUudGV4dDE0TWVkaXVtLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6Yn19KSxzJiYoMCxWLlkpKCJkaXYiLHtjc3M6W3UudGV4dDE0LGRsLnN1YnRpdGxlLCIiLCIiXSxkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOnZ9fSksbCYmKDAsVi5ZKSgiZGl2Iix7Y3NzOlt1LnRleHQxNCxkbC51cmwsIiIsIiJdLGNoaWxkcmVuOigwLFYuWSkoImEiLHtocmVmOmgsdHlwZToiYnV0dG9uIixvbkNsaWNrOmssImRhdGEtdGVzdGlkIjoiY2FyZExpbmsiLGNoaWxkcmVuOng/TXIobCk6bX0pfSldfSksKDAsVi5ZKSgiZGl2Iix7Y3NzOmRsLmJ1dHRvbnMsY2hpbGRyZW46bj8oMCxWLlkpKHNsLHtidXR0b25zOnd9KTooMCxWLlkpKG9sLHtidXR0b25zOncsbWV0YWRhdGE6ZH0pfSldfSldfSk6KDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZS13aXRoLWJ1dHRvbnMiLGNoaWxkcmVuOltpJiYoMCxWLlkpKGNsLHtpbWFnZVVybDppLGxpbms6aCxvcGVuTGluazprfSksKDAsVi5GRCkoImRpdiIse2NzczpsbC5nZXRDb250ZW50Q29udGFpbmVyKHkpLGNoaWxkcmVuOlsoMCxWLlkpKCJkaXYiLHtjc3M6bGwudGl0bGUsZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpifX0pLHMmJigwLFYuWSkoImRpdiIse2NzczpsbC5zdWJ0aXRsZSxkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOnZ9fSksbCYmKDAsVi5ZKSgiZGl2Iix7Y3NzOmxsLnVybCxjaGlsZHJlbjooMCxWLlkpKCJhIix7aHJlZjpoLHR5cGU6ImJ1dHRvbiIsb25DbGljazprLCJkYXRhLXRlc3RpZCI6ImNhcmRMaW5rIixjaGlsZHJlbjp4P01yKGwpOm19KX0pXX0pLCgwLFYuWSkoImRpdiIse2NzczpsbC5idXR0b25zLGNoaWxkcmVuOigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToiYnV0dG9uLXdyYXBwZXIiLGNoaWxkcmVuOm4/KDAsVi5ZKShzbCx7YnV0dG9uczp3fSk6KDAsVi5ZKShvbCx7YnV0dG9uczp3LG1ldGFkYXRhOmR9KX0pfSldfSl9O3ZhciBwbD1lPT57bGV0e2NhcmRzOnQsb3BlcmF0b3JfaWQ6bixhaUFzc2lzdGFudFRhc2s6aX09ZTtjb25zdCBhPSJzdHJpbmciPT10eXBlb2YgdFswXS5pbWFnZVVybCxvPSJudW1iZXIiPT10eXBlb2YgbjtyZXR1cm4oMCxWLlkpKERyLHtpdGVtczp0LGl0ZW1LZXk6ImlkIixyZW5kZXJJdGVtOmU9PigwLGQubikodWwsey4uLmUsaXNTaG9waWZ5Q2FyZDpvLGtleTplLmlkLG1ldGFkYXRhOntpc19haV9hc3Npc3RhbnRfdGFzazppfX0pLGlzV2l0aG91dEltYWdlczohYX0pfTtjb25zdCBmbD17bmFtZToiZWwybno5IixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2NvbG9yOiM2NDc0OTE7bWFyZ2luOmF1dG87dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MjRweDtwe21hcmdpbjo2cHggMDt9In07dmFyIG1sPWU9PntsZXR7b3BlcmF0b3JfaWQ6dH09ZTtjb25zdCBuPSgwLHIuZDQpKEMuSykuZmluZChlPT5lLmlkPT09dCk7cmV0dXJuKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSIsY3NzOmZsLGNoaWxkcmVuOlsoMCxWLlkpKHV0LnpxLHt9KSwoMCxWLlkpKCJwIix7Y2hpbGRyZW46bj8oMCxWLlkpKE9uLHt2YWx1ZToib3BlcmF0b3JNYXJrZWRDb252ZXJzYXRpb25Bc1NvbHZlZCIscmVwbGFjZW1lbnRzOnsie29wZXJhdG9yTmFtZX0iOm4ubmFtZX0sZmFsbGJhY2s6IntvcGVyYXRvck5hbWV9IG1hcmtlZCB0aGUgY29udmVyc2F0aW9uIGFzIHNvbHZlZCJ9KTooMCxWLlkpKE9uLHt2YWx1ZToiY29udmVyc2F0aW9uV2FzTWFya2VkQXNTb2x2ZWQiLGZhbGxiYWNrOiJUaGUgY29udmVyc2F0aW9uIHdhcyBtYXJrZWQgYXMgc29sdmVkIn0pfSldfSl9O2NvbnN0IGhsPXtuYW1lOiJwcjEweHAiLHN0eWxlczoibWFyZ2luLWJvdHRvbToxMHB4In0sZ2w9ZnVuY3Rpb24oKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtyZXR1cm4oMCxkLkFIKSh7d2lkdGg6IjEwMCUiLGRpc3BsYXk6ImZsZXgiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGFsaWduSXRlbXM6ImNlbnRlciIscGFkZGluZzp0PyI0cHggOHB4IjoiMTJweCA0MHB4IixiYWNrZ3JvdW5kOiIjZmZmIixib3JkZXI6IjFweCBkYXNoZWQgdmFyKC0tYm9yZGVyLWNvbG9yLCAjRDNEQkU1KSIsYm9yZGVyUmFkaXVzOiI4cHgiLG91dGxpbmU6Im5vbmUiLHBvc2l0aW9uOiJyZWxhdGl2ZSIsZm9udFdlaWdodDo2MDAsLi4uZT97IiY6aG92ZXIiOntib3JkZXI6IjFweCBzb2xpZCAjQUNCOENCIixjb2xvcjoiIzY0NzQ5MSIsZm9udFdlaWdodDo0MDB9fTp7fSxzdmc6e3dpZHRoOiIxNnB4IixoZWlnaHQ6IjE2cHgifX0sIiIsIiIpfSxibD17bmFtZToiMWd6aDIzNCIsc3R5bGVzOiJsaW5lLWhlaWdodDoyMHB4O2ZvbnQtc2l6ZToxNnB4In0sdmw9e25hbWU6IjFld3V0eW0iLHN0eWxlczoiY29sb3I6IzY0NzQ5MTtmb250LXdlaWdodDo0MDAifSx4bD1lPT4oMCxkLkFIKSh7cG9zaXRpb246ImFic29sdXRlIixyaWdodDplPyI2cHgiOiIxOHB4Iix0b3A6ZT8iNnB4IjoiMTRweCJ9LCIiLCIiKSx5bD17bmFtZToiNGltOGttIixzdHlsZXM6ImRpc3BsYXk6ZmxleDttYXJnaW4tcmlnaHQ6NHB4O3N2Z3tmaWxsOiM2NDc0OTE7fSJ9O3ZhciB3bD1lPT57bGV0e2NvbnRlbnQ6dCxjb3Vwb25Db2RlOm59PWU7Y29uc3RbaSxvXT0oMCxhLnVzZVN0YXRlKShuKSxbcyxsXT0oMCxhLnVzZVN0YXRlKSghMSksW2QsY109KDAsYS51c2VTdGF0ZSkoITApLHU9KDAsYS51c2VSZWYpKCksZj0oMCxyLndBKSgpLG09X3IodCkse2lzTmV3U2tpbjpofT0oMCxwLkEpKCksZz1odChoKTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IgY291cG9uLWNvZGUtbWVzc2FnZSIsY2hpbGRyZW46WygwLFYuWSkoImRpdiIse2NzczpobCxkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOm19fSksZD8oMCxWLkZEKSgiYnV0dG9uIix7Y3NzOltnbCghMCxoKSxzJiZ2bCwiIiwiIl0sb25DbGljazphc3luYygpPT57dHJ5e24mJmQmJihhd2FpdCB3aW5kb3cucGFyZW50Lm5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KG4pLGYoKDAsay5wTzYpKGx0LlguY291cG9uQ29kZUNvcHlDbGlja2VkKSksbCghMCksdS5jdXJyZW50JiZjbGVhclRpbWVvdXQodS5jdXJyZW50KSx1LmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+e2woITEpfSwxNTAwKSl9Y2F0Y2h7YyghMSksbyhuKX19LHR5cGU6ImJ1dHRvbiIsb25Nb3VzZUVudGVyOigpPT57ZCYmbygoMCx5LnB3KSgiY2xpY2tUb0NvcHkiLG51bGwsIkNsaWNrIHRvIGNvcHkiKSl9LG9uTW91c2VMZWF2ZTooKT0+e2QmJm8obil9LGNoaWxkcmVuOltzJiYoMCxWLlkpKCJzcGFuIix7Y3NzOnlsLGNoaWxkcmVuOigwLFYuWSkodXQub2gse30pfSksKDAsVi5ZKSgic3BhbiIse2NzczpbYmwsZy50ZXh0MTRNZWRpdW0sIiIsIiJdLGNoaWxkcmVuOnM/KDAseS5wdykoImNvcGllZCIsbnVsbCwiQ29waWVkIik6aX0pLCFzJiYoMCxWLlkpKCJzcGFuIix7Y3NzOnhsKGgpLGNoaWxkcmVuOigwLFYuWSkodXQuVGQse30pfSldfSk6KDAsVi5ZKSgic3BhbiIse2NzczpnbCghMSxoKSxjaGlsZHJlbjooMCxWLlkpKCJzcGFuIix7Y3NzOmJsLGNoaWxkcmVuOml9KX0pXX0pfTtsZXQga2w9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuVkFMSUQ9InZhbGlkIixlLklOVkFMSUQ9ImludmFsaWQiLGUuRU1QVFk9ImVtcHR5IixlfSh7fSk7Y29uc3QgQWw9ZT0+e3N3aXRjaChlKXtjYXNlIHR0LlZ3LkZJTEU6cmV0dXJuW107Y2FzZSB0dC5Wdy5DSEVDS0JPWDpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiIifX0sQ2w9Lyg/OlwrP1xkK1tccy1dPyk/KD86XChcZCtcKSk/KD86XHM/XC9ccz8pPyg/OlstLlxzXT9cZHsxLDV9KXs1LH0uKlxkLyxFbD0vW14/IUAjJCVeJiooKV8rLT07JzoifCwuLzw+YH5cZF0rLyxTbD0vKCg/Omh0dHBzPzpcL1wvKT8oPzp3d3dcLik/W2Etei0uXGRdK1wuW2Etel17MiwxM30oPzooPzpcP3xcLykoPzpcUyspPyk/KSg/OlsuIT8sXS4qKT8kL2k7dmFyIERsPWU9PntsZXR7Zm9ybTp0LG1lc3NhZ2VJZDpufT1lO2NvbnN0IGk9KDAsci53QSkoKSxvPSgwLHIuZDQpKGU9PigwLEMuaHUpKGUsbikpLHM9KDAsci5kNCkoQy5zeSksbD1vPy50eXBlLGQ9cz8uaWQ9PT1uLFtjLHVdPSgwLGEudXNlU3RhdGUpKHQucmVkdWNlKChlLHQpPT4oey4uLmUsW3QuaWRdOkFsKHQudHlwZSl9KSx7fSkpLFtwLG1dPSgwLGEudXNlU3RhdGUpKCExKSxoPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57bSghMCl9LFtdKSxnPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57bSghMSl9LFtdKSxbYix2XT0oMCxhLnVzZVN0YXRlKSghMSksW3gseV09KDAsYS51c2VTdGF0ZSkodC5yZWR1Y2UoKGUsdCk9Pih7Li4uZSxbdC5pZF06a2wuVkFMSUR9KSx7fSkpLHc9KDAsYS51c2VNZW1vKSgoKT0+T2JqZWN0LnZhbHVlcyh4KS5zb21lKGU9PmUhPT1rbC5WQUxJRCksW3hdKSxBPSgwLGEudXNlUmVmKShudWxsKSxFPSgwLGEudXNlUmVmKShudWxsKSxTPSgwLGEudXNlUmVmKSgpLEQ9KDAsYS51c2VSZWYpKCExKSxZPSgwLGEudXNlQ2FsbGJhY2spKGU9Pnt5KHQ9Pih7Li4udCxbZV06a2wuVkFMSUR9KSl9LFtdKSxUPSgwLGEudXNlQ2FsbGJhY2spKChlLHQpPT57dShuPT4oey4uLm4sW2VdOnR9KSksWShlKX0sW1ldKSxGPSgwLGEudXNlQ2FsbGJhY2spKChlLHQpPT57dShuPT57Y29uc3QgaT1uW2VdO3JldHVybiBBcnJheS5pc0FycmF5KGkpP3suLi5uLFtlXTpbLi4uaSx0XX06bn0pLFkoZSl9LFtZXSksST0oMCxhLnVzZUNhbGxiYWNrKSgoZSx0LG4pPT57dShpPT57Y29uc3QgYT1pW2VdO3JldHVybiBBcnJheS5pc0FycmF5KGEpP3suLi5pLFtlXTphLmZpbHRlcihlPT5lW3RdIT09bil9Oml9KX0sW10pLF89KDAsYS51c2VDYWxsYmFjaykoKCk9Pntjb25zdCBlPXsuLi54fTtsZXQgbj0hMTtyZXR1cm4gdC5mb3JFYWNoKHQ9Pntjb25zdCBpPWNbdC5pZF07c3dpdGNoKHR5cGVvZiBpKXtjYXNlImJvb2xlYW4iOnQucmVxdWlyZWQmJiFpJiYobj0hMCxlW3QuaWRdPWtsLkVNUFRZKTticmVhaztjYXNlIm9iamVjdCI6dC50eXBlPT09dHQuVncuRklMRSYmdC5yZXF1aXJlZCYmIWlbMF0/LnVybCYmKG49ITAsZVt0LmlkXT1rbC5FTVBUWSk7YnJlYWs7ZGVmYXVsdDp0LnJlcXVpcmVkJiYiIj09PWk/KG49ITAsZVt0LmlkXT1rbC5FTVBUWSk6IiI9PT1pfHwoZT0+e3N3aXRjaChlKXtjYXNlIHR0LlZ3LlBIT05FOnJldHVybiBlPT5DbC50ZXN0KGUpO2Nhc2UgdHQuVncuTkFNRTpyZXR1cm4gZT0+RWwudGVzdChlKTtjYXNlIHR0LlZ3LlVSTDpyZXR1cm4gZT0+U2wudGVzdChlKTtjYXNlIHR0LlZ3LkVNQUlMOnJldHVybiBlPT4oMCxmLkI5KShlKTtkZWZhdWx0OnJldHVybigpPT4hMH19KSh0LnR5cGUpKGkpfHwobj0hMCxlW3QuaWRdPWtsLklOVkFMSUQpfX0pLHtmb3JtRXJyb3JzOmUsaXNGb3JtSW52YWxpZDpufX0sW3QseCxjXSksTT0oMCxhLnVzZUNhbGxiYWNrKShlPT57aWYoZS5wcmV2ZW50RGVmYXVsdCgpLHApcmV0dXJuITE7Y29uc3R7Zm9ybUVycm9yczpuLGlzRm9ybUludmFsaWQ6YX09XygpO3JldHVybiBhP3kobik6KHYoITApLGkoKDAsay5yTUEpKHtmb3JtUmVzcG9uc2U6dC5tYXAoZT0+KHtuYW1lOmUubmFtZSxpZDplLmlkLHZhbHVlOmNbZS5pZF19KSl9KSkpLCEwfSxbaSx0LGMscCxfXSksTj0oMCxhLnVzZUNhbGxiYWNrKShlPT57dSh0LnJlZHVjZSgodCxuKT0+e2NvbnN0IGk9ZS5maW5kKGU9PmUuaWQ9PT1uLmlkKT8udmFsdWU7cmV0dXJuey4uLnQsW24uaWRdOm4udHlwZT09PXR0LlZ3LkNIRUNLQk9YP0Jvb2xlYW4oaSk6aT8/IiJ9fSx7fSkpfSxbdF0pO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBFLmN1cnJlbnQ/LnNjcm9sbEludG9WaWV3JiZkJiYoUy5jdXJyZW50PXNldFRpbWVvdXQoKCk9Pnt0cnl7RS5jdXJyZW50Py5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6Im5lYXJlc3QifSl9Y2F0Y2h7RS5jdXJyZW50Py5zY3JvbGxJbnRvVmlldygpfX0sMTUwKSksKCk9PntTLmN1cnJlbnQmJmNsZWFyVGltZW91dChTLmN1cnJlbnQpfSksW2RdKSwoMCxhLnVzZUVmZmVjdCkoKCk9PntkfHxsIT09dHQuR28uRk9STV9SRVNQT05TRXx8IW8/LmZvcm1SZXNwb25zZXx8RC5jdXJyZW50fHwoTihvLmZvcm1SZXNwb25zZSksRC5jdXJyZW50PSEwKX0sW2Qsbz8uZm9ybVJlc3BvbnNlLGwsTl0pLHtmb3JtU3VibWl0dGluZzpiLGZvcm1WYWxpZGl0eVN0YXRlOngsZm9ybVZhbHVlczpjLGhhbmRsZUNoYW5nZTpULGhhbmRsZVN1Ym1pdDpNLGZvcm1SZWY6QSx0aXRsZVJlZjpFLGhhc0Vycm9yczp3LGVuYWJsZUZvcm1TdWJtaXNzaW9uOmcsZGlzYWJsZUZvcm1TdWJtaXNzaW9uOmgsaXNTdWJtaXNzaW9uRGlzYWJsZWQ6cCxhZGRJdGVtVG9BcnJheUZvcm1GaWVsZDpGLHJlbW92ZUl0ZW1Gcm9tQXJyYXlGb3JtRmllbGQ6SSxkaXNhYmxlZDpsIT09dHQuR28uRk9STV9SRVNQT05TRSYmIWQsc2VudDpsPT09dHQuR28uRk9STV9SRVNQT05TRSYmIWR9fTtjb25zdCBZbD1lPT4oMCxkLkFIKSh7bWFyZ2luQm90dG9tOmU/IjhweCI6IjEycHgiLGRpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIscG9zaXRpb246InJlbGF0aXZlIn0sIiIsIiIpLFRsPWU9PigwLGQuQUgpKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHJpZ2h0OiIxMHB4Iix0b3A6ZT8iMTBweCI6IjRweCIsc3ZnOntmaWxsOiIjMjU4MzNFIix3aWR0aDoiMjBweCJ9fSwiIiwiIiksRmw9KDAsZC5BSCkoIlxuICAgIGNvbG9yOiAjRTgxMzMyO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmctdG9wOiA0cHg7XG4iLCIiLCIiKSxJbD0oZSx0KT0+e3N3aXRjaCh0KXtjYXNlIGtsLkVNUFRZOnJldHVybigwLFYuWSkoInNwYW4iLHtjc3M6RmwsY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6ImZpZWxkQ2Fubm90QmVFbXB0eSIsZmFsbGJhY2s6IkZpZWxkIGNhbm5vdCBiZSBlbXB0eSJ9KX0pO2Nhc2Uga2wuSU5WQUxJRDpyZXR1cm4oZT0+e2xldCB0PW51bGw7c3dpdGNoKGUpe2Nhc2UgdHQuVncuQ0hFQ0tCT1g6dD17dmFsdWU6ImZpZWxkUmVxdWlyZWQiLGZhbGxiYWNrOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkIn07YnJlYWs7Y2FzZSB0dC5Wdy5FTUFJTDp0PXt2YWx1ZToid3JvbmdFbWFpbEZvcm1hdCIsZmFsbGJhY2s6IlRoYXQgZW1haWwgZG9lc24ndCBsb29rIHF1aXRlIHJpZ2h0In07YnJlYWs7Y2FzZSB0dC5Wdy5OQU1FOnQ9e3ZhbHVlOiJ3cm9uZ05hbWVGb3JtYXQiLGZhbGxiYWNrOiJUaGF0IG5hbWUgZG9lc24ndCBsb29rIHF1aXRlIHJpZ2h0In07YnJlYWs7Y2FzZSB0dC5Wdy5OVU1CRVI6dD17dmFsdWU6Indyb25nTnVtYmVyRm9ybWF0IixmYWxsYmFjazoiVGhhdCBudW1iZXIgZG9lc24ndCBsb29rIHF1aXRlIHJpZ2h0In07YnJlYWs7Y2FzZSB0dC5Wdy5VUkw6dD17dmFsdWU6Indyb25nVXJsRm9ybWF0IixmYWxsYmFjazoiVGhhdCBVUkwgZG9lc24ndCBsb29rIHF1aXRlIHJpZ2h0In07YnJlYWs7Y2FzZSB0dC5Wdy5QSE9ORTp0PXt2YWx1ZToid3JvbmdQaG9uZUZvcm1hdCIsZmFsbGJhY2s6IlRoYXQgcGhvbmUgbnVtYmVyIGRvZXNuJ3QgbG9vayBxdWl0ZSByaWdodCJ9O2JyZWFrO2Nhc2UgdHQuVncuU0VMRUNUOnQ9e3ZhbHVlOiJjaG9vc2VPbmVPZlRoZU9wdGlvbnMiLGZhbGxiYWNrOiJDaG9vc2Ugb25lIG9mIHRoZSBvcHRpb25zIn07YnJlYWs7Y2FzZSB0dC5Wdy5URVhUOmNhc2UgdHQuVncuTE9OR19URVhUOmNhc2UgdHQuVncuTVVMVElTRUxFQ1Q6ZGVmYXVsdDpyZXR1cm4gbnVsbH1yZXR1cm4oMCxWLlkpKCJzcGFuIix7Y3NzOkZsLGNoaWxkcmVuOigwLFYuWSkoT24sey4uLnR9KX0pfSkoZSk7Y2FzZSBrbC5WQUxJRDpkZWZhdWx0OnJldHVybiBudWxsfX07dmFyIF9sPWU9PntsZXR7c2hvdWxkRGlzcGxheVN1Y2Nlc3NJY29uOnQsdmFsaWRpdHk6bix0eXBlOmksY2hpbGRyZW46YX09ZTtjb25zdHtpc05ld1NraW46b309KDAscC5BKSgpO3JldHVybigwLFYuRkQpKCJkaXYiLHtjc3M6WWwobyksY2hpbGRyZW46W2EsdCYmKDAsVi5ZKSgiZGl2Iix7Y3NzOlRsKG8pLGNoaWxkcmVuOigwLFYuWSkodXQub2gse30pfSksSWwoaSxuKV19KX0sTWw9bigxNjIpLE5sPW4ubihNbCksT2w9big2NzAxKSxSbD1uKDE3OTcpO2NvbnN0IGpsPXtuYW1lOiJjbjN4Y2oiLHN0eWxlczoibWFyZ2luLWJvdHRvbToxMnB4In0sUGw9KGUsdCxuKT0+KDAsZC5BSCkoe2JvcmRlcjoiMnB4IGRhc2hlZCAiKyhlPyIjRTgxMzMyIjoiI0QzREJFNSIpLGJhY2tncm91bmQ6IiNmZmYiLHBhZGRpbmc6bj8iMTJweCI6IjIycHggMjRweCIsYm9yZGVyUmFkaXVzOiI2cHgiLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOiIxMnB4Iixwb3NpdGlvbjoicmVsYXRpdmUiLG9wYWNpdHk6dD8uNToxLCImOmZvY3VzIjp7b3V0bGluZToibm9uZSJ9LCImIHN2ZyI6e2ZsZXhTaHJpbms6MCxmaWxsOiIjODc5NkFGIn0sIiYgLm1lc3NhZ2UtdXBsb2FkIHN2ZyI6e2ZpbGw6IiMwNTY2RkYiLHN0cm9rZToiIzA1NjZGRiJ9LC4uLm4mJntib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDhweCkiLGJvcmRlcjoiMXB4IGRhc2hlZCAiKyhlPyIjRTgxMzMyIjoiI0QzREJFNSIpfX0sIiIsIiIpLHpsPXtuYW1lOiIxb2puc293IixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjAifSxMbD17bmFtZToiMWtkM3R2MCIsc3R5bGVzOiJjb2xvcjojNjQ3NDkxIn0sVWw9e25hbWU6Im00M2ZhIixzdHlsZXM6ImNvbG9yOiMwNTY2RkYifSxCbD0oZSx0KT0+e3N3aXRjaChlKXtjYXNlIFJsLiRtLkZJTEVfVE9PX0JJRzp7Y29uc3QgZT0oMCxPbC55KSh0KSxuPSgwLHkucHcpKCJmaWxlVG9CaWdBbGVydCIsbnVsbCwiRmlsZSBleGNlZWQgMTBNQiBsaW1pdC4iKTtyZXR1cm4gZT8ubGltaXRJbk1CP24ucmVwbGFjZSgiMTBNQiIsYCR7ZS5saW1pdEluTUJ9TUJgKTpufWNhc2UgUmwuJG0uRVhURU5TSU9OX05PVF9TVVBQT1JURUQ6cmV0dXJuKDAseS5wdykoImZpbGVGb3JtYXROb3RTdXBwb3J0ZWQiLHsie2Zvcm1hdHRlZF9leHRlbnNpb25zfSI6YCR7cmkuVU8uam9pbigiLCAiKX0uYH0sIlRoaXMgZmlsZSBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZC4gWW91IGNhbiB1cGxvYWQ6IHtmb3JtYXR0ZWRfZXh0ZW5zaW9uc30iKTtjYXNlIFJsLiRtLkdFTkVSSUNfVVBMT0FEX0VSUk9SOmRlZmF1bHQ6cmV0dXJuKDAseS5wdykoImdlbmVyaWNGaWxlVXBsb2FkQWxlcnQiLG51bGwsIlNvbWV0aGluZyB3ZW50IHdyb25nIHdoZW4gdHJ5aW5nIHRvIHVwbG9hZCB5b3VyIGZpbGUuIil9fTt2YXIgSGw9ZT0+e2xldHtvbkZpbGVBZGQ6dCxmaWVsZE5hbWU6bixlcnJvcjppLGNhdXNlOmEscmVxdWlyZWRFcnJvcjpvLG1heEZpbGVzOnIsZGlzYWJsZWQ6c309ZTtjb25zdHtpc05ld1NraW46bH09KDAscC5BKSgpLHtnZXRSb290UHJvcHM6YyxnZXRJbnB1dFByb3BzOnUsaXNEcmFnQWN0aXZlOmZ9PVhlKHttdWx0aXBsZToxIT09cixvbkRyb3BBY2NlcHRlZDplPT57dChlKX0sbWF4RmlsZXM6cixkaXNhYmxlZDpzfSk7cmV0dXJuKDAsVi5GRCkoImRpdiIse2NzczpqbCxjaGlsZHJlbjpbKDAsVi5GRCkoImRpdiIsey4uLmMoKSxjc3M6UGwoQm9vbGVhbihpKSxzLGwpLGNoaWxkcmVuOlsoMCxWLlkpKCJpbnB1dCIsey4uLnUoKSwiZGF0YS10ZXN0aWQiOiJmaWxlLW1lc3NhZ2UtdXBsb2FkLWlucHV0In0pLCgwLFYuRkQpKCJkaXYiLHtjc3M6KG09ZiwoMCxkLkFIKSh7Ym9yZGVyUmFkaXVzOiI2cHgiLHBhZGRpbmc6IjIycHggMjRweCIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoiLTJweCIsbGVmdDoiLTJweCIscmlnaHQ6Ii0ycHgiLGJvdHRvbToiLTJweCIsYm9yZGVyOiIycHggc29saWQgIzA1NjZGRiIsZ2FwOiIxMnB4IixiYWNrZ3JvdW5kOiIjRENFOUZGIixvcGFjaXR5Om0/MTowLHRyYW5zaXRpb246Im9wYWNpdHkgLjJzIiwiJiBzdmciOntmbGV4U2hyaW5rOjAsZmlsbDoiIzA1NjZGRiJ9fSwiIiwiIikpLGNoaWxkcmVuOlsoMCxWLlkpKHV0LkpNLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoImRyYWdBbmREcm9wSW5mbyIsbnVsbCwiRHJvcCBoZXJlIHRvIGF0dGFjaCIpfSldfSksKDAsVi5ZKSh1dC5KTSx7fSksKDAsVi5GRCkoImRpdiIse2Nzczp6bCxjaGlsZHJlbjpbKDAsVi5ZKSgic3BhbiIse2NoaWxkcmVuOm59KSwoMCxWLkZEKSgic3BhbiIse2NzczpMbCxjaGlsZHJlbjpbKDAseS5wdykoImRyYWdBbmREcm9wIixudWxsLCJEcmFnICYgZHJvcCBoZXJlIG9yICIpLCgwLFYuWSkoInNwYW4iLHtjc3M6VWwsY2hpbGRyZW46KDAseS5wdykoImJyb3dzZSIsbnVsbCwiYnJvd3NlIil9KV19KV19KV19KSxvPygwLFYuWSkoInNwYW4iLHtjc3M6RmwsY2hpbGRyZW46KDAseS5wdykoImZpbGVJc1JlcXVpcmVkIixudWxsLCJGaWxlIGlzIHJlcXVpcmVkIil9KTppJiYoMCxWLlkpKCJzcGFuIix7Y3NzOkZsLGNoaWxkcmVuOkJsKGksYSl9KV19KTt2YXIgbX07Y29uc3QgcWw9e25hbWU6ImRjb3M4aCIsc3R5bGVzOiJiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo2cHg7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjQ0cHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLWJvdHRvbToxMnB4O2FsaWduLWl0ZW1zOmNlbnRlcjsmJiYgc3Zne3Bvc2l0aW9uOnN0YXRpYztoZWlnaHQ6YXV0bzsmIC5wYXRoe3N0cm9rZTojMDU2NkZGO319In07dmFyIFZsPWU9PntsZXR7ZmlsZXNUb1VwbG9hZDp0LGhhbmRsZVVwbG9hZGVkRmlsZTpuLGhhbmRsZVVwbG9hZEZpbmlzaGVkOmksb25VcGxvYWRFcnJvcjpvfT1lO2NvbnN0W3Isc109KDAsYS51c2VTdGF0ZSkoW10pO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+e3IubGVuZ3RoPT09dC5sZW5ndGgmJmkoKX0sW3QubGVuZ3RoLGksci5sZW5ndGhdKSx0Lm1hcChlPT57bGV0e2ZpbGVUb1VwbG9hZDp0LGlkOml9PWU7cmV0dXJuIHIuc29tZShlPT5lPT09aSk/bnVsbDooMCxWLlkpKCJkaXYiLHtjc3M6cWwsY2hpbGRyZW46KDAsVi5ZKShSbC5BeSx7ZmlsZTp0LHNlbmRlcjp0dC5EJC5WSVNJVE9SLGhhbmRsZVN1Y2Nlc3M6ZT0+KChlLHQpPT57bih7bmFtZTp0Lm1ldGEubmFtZSxleHRlbnNpb246dC5tZXRhLmV4dGVuc2lvbix1cmw6dC51cmx9KSxzKHQ9PlsuLi50LGVdKX0pKGksZSksaGFuZGxlRXJyb3I6KGUsdCk9PigoZSx0LG4pPT57cyh0PT5bLi4udCxlXSksbyh0LG4pfSkoaSxlLHQpLGN1c3RvbUNsYXNzTmFtZToiZm9ybS1maWxlLXVwbG9hZGluZyIsaGlkZVByb2dyZXNzSW5mbzohMH0pfSxpKX0pfTtjb25zdCAkbD17bmFtZToiejR1d2FnIixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7b3BhY2l0eTowO2JhY2tncm91bmQ6I2ZmZjt0cmFuc2l0aW9uOmFsbCAuMnM7cGFkZGluZzo2cHggOHB4O2JveC1zaGFkb3c6MHB4IDNweCA4cHggcmdiYSgwLCAxOCwgNDYsIDAuMTIpO2JvcmRlci1yYWRpdXM6NHB4O3RvcDoxMDAlO2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTJweCk7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4OjEifSxXbD17bmFtZToiMTI0MGN2byIsc3R5bGVzOiImJiZ7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuMnM7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46MCAwIDAgYXV0bztwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LXNocmluazowOyY6aG92ZXIgc3BhbntvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgycHgpO319In0sS2w9KGUsdCk9PigwLGQuQUgpKHttYXJnaW5Cb3R0b206IjEycHgiLGdhcDoiMTJweCIsYmFja2dyb3VuZDoiI2ZmZiIscGFkZGluZzp0PyI4cHggNDBweCA4cHggMTJweCI6IjhweCAxMnB4IixkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGJvcmRlclJhZGl1czoiNHB4IiwiJiYmOmhvdmVyIGJ1dHRvbiI6e29wYWNpdHk6MX0sIiYgc3ZnIjp7ZmxleFNocmluazowfSwuLi5lJiZ7cGFkZGluZzoiMTJweCAxNnB4Iixib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDhweCkiLGJvcmRlcjoiMXB4IHNvbGlkICB2YXIoLS1ib3JkZXItY29sb3IsICNEM0RCRTUpIiwiOmZvY3VzIjp7Ym9yZGVyOiIxcHggc29saWQgIHZhcigtLWJvcmRlci1jb2xvciwgI0QzREJFNSkifX19LCIiLCIiKSxHbD17bmFtZToic3FtNDJiIixzdHlsZXM6InRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbiJ9O3ZhciBYbD1lPT57bGV0e25hbWU6dCxleHRlbnNpb246bixvbkZpbGVSZW1vdmU6aSx1cmw6YSxkaXNhYmxlZDpvLHNlbnQ6cn09ZTtjb25zdHtpc05ld1NraW46c309KDAscC5BKSgpO3JldHVybigwLFYuRkQpKCJkaXYiLHtjc3M6S2wocyxyKSxjbGFzc05hbWU6ImlucHV0LWdyb3VwIixjaGlsZHJlbjpbKDAsVi5ZKShYaSx7ZXh0ZW5zaW9uOm59KSwoMCxWLlkpKCJzcGFuIix7Y3NzOkdsLGNoaWxkcmVuOnR9KSwhbyYmKDAsVi5GRCkoImJ1dHRvbiIse2NzczpXbCx0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PmkoYSksY2xhc3NOYW1lOiJtYXRlcmlhbC1pY29ucyByaXBwbGUgIixjaGlsZHJlbjpbKDAsVi5ZKSh1dC5kNyx7fSksKDAsVi5ZKSgic3BhbiIse2NzczokbCxjaGlsZHJlbjooMCx5LnB3KSgiZGVsZXRlIixudWxsLCJEZWxldGUiKX0pXX0pLHImJigwLFYuWSkoImRpdiIse2NzczpUbChzKSxjaGlsZHJlbjooMCxWLlkpKHV0Lm9oLHt9KX0pXX0pfTt2YXIgUWw9ZT0+e2xldHtmaWxlRmllbGRWYWx1ZTp0LGRpc2FibGVkOm4sYWRkRm9ybUZpbGVNZXNzYWdlVmFsdWU6aSxyZW1vdmVGb3JtRmlsZU1lc3NhZ2VWYWx1ZTpvLGZpZWxkTmFtZTpyLHJlcXVpcmVkRXJyb3I6cyxkaXNhYmxlRm9ybVN1Ym1pc3Npb246bCxlbmFibGVGb3JtU3VibWlzc2lvbjpkLHNlbnQ6Yyxjb250YWN0UHJvcGVydHk6dX09ZTtjb25zdFtwLGZdPSgwLGEudXNlU3RhdGUpKFtdKSxbbSxoXT0oMCxhLnVzZVN0YXRlKShudWxsKSxbZyxiXT0oMCxhLnVzZVN0YXRlKShudWxsKSx2PSgwLGEudXNlQ2FsbGJhY2spKChlLHQpPT57aChlKSxiKHQpfSxbXSkseD1udWxsPT09dT8xMDoxLHk9KDAsYS51c2VDYWxsYmFjaykoKCk9PntkKCksZihbXSl9LFtkXSksdz0oMCxhLnVzZU1lbW8pKCgpPT50Lm1hcChlPT4oMCxWLlkpKFhsLHtuYW1lOmUubmFtZSx1cmw6ZS51cmwsZXh0ZW5zaW9uOmUuZXh0ZW5zaW9uLG9uRmlsZVJlbW92ZTpvLGRpc2FibGVkOm4sc2VudDpjfSxlLnVybCkpLFtuLHQsbyxjXSk7cmV0dXJuKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46W3cscC5sZW5ndGg+MCYmKDAsVi5ZKShWbCx7ZmlsZXNUb1VwbG9hZDpwLGhhbmRsZVVwbG9hZGVkRmlsZTppLG9uVXBsb2FkRXJyb3I6dixoYW5kbGVVcGxvYWRGaW5pc2hlZDp5fSksIW4mJnQubGVuZ3RoPHgmJigwLFYuWSkoSGwse29uRmlsZUFkZDplPT57aChudWxsKSxmKGUubWFwKGU9Pih7aWQ6TmwoKSgpLGZpbGVUb1VwbG9hZDplfSkpKSxsKCl9LGZpZWxkTmFtZTpyLGVycm9yOm0sY2F1c2U6ZyxyZXF1aXJlZEVycm9yOnMsbWF4RmlsZXM6eC10Lmxlbmd0aCxkaXNhYmxlZDpCb29sZWFuKHAubGVuZ3RoKX0pXX0pfTtjb25zdCBabD17bmFtZToiYmpuOHdoIixzdHlsZXM6InBvc2l0aW9uOnJlbGF0aXZlIn0sSmw9KGUsdCxuKT0+KDAsZC5BSCkoe3dpZHRoOiIxMDAlIixhcHBlYXJhbmNlOiJub25lIixmb250U2l6ZToiMTVweCIsbGluZUhlaWdodDoiMTlweCIscGFkZGluZzoiOXB4IDM1cHggOXB4IDEycHgiLGJvcmRlcjoibm9uZSIsYm9yZGVyUmFkaXVzOiI2cHgiLGJhY2tncm91bmRDb2xvcjoid2hpdGUiLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLGNvbG9yOiIjMDgwRjFBIiwiOmRpc2FibGVkIjp7b3BhY2l0eToxfSwuLi5lJiZ7Y29sb3I6IiM2NDc0OTEifSwuLi5uJiZ7cGFkZGluZzoiMTJweCAxNnB4Iixib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDhweCkiLGJvcmRlcjoiMXB4IHNvbGlkICB2YXIoLS1ib3JkZXItY29sb3IsICNEM0RCRTUpIiwiOmZvY3VzLCA6YWN0aXZlIjp7Ym9yZGVyOiIxcHggc29saWQgIHZhcigtLWJvcmRlci1jb2xvciwgI0QzREJFNSkifX0sLi4udCYme291dGxpbmU6IjFweCBzb2xpZCAjRTgxMzMyIiwiOmZvY3VzIjp7b3V0bGluZToiMXB4IHNvbGlkICNFODEzMzIifX19LCIiLCIiKSxlZD17bmFtZToiN242ZnNmIixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO3RvcDowcHg7Ym90dG9tOjBweDtyaWdodDo4cHg7cG9pbnRlci1ldmVudHM6bm9uZTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7c3Zne2ZpbGw6IzA4MEYxQTt9In07dmFyIHRkPWU9PntsZXR7cGxhY2Vob2xkZXI6dCxvbkNoYW5nZTpuLHZhbHVlOmksb3B0aW9uczphLGhhc0Vycm9yOm89ITEsZGlzYWJsZWQ6cn09ZTtjb25zdHtpc05ld1NraW46c309KDAscC5BKSgpO3JldHVybigwLFYuRkQpKCJkaXYiLHtjc3M6W1psLCIiLCIiXSxjaGlsZHJlbjpbKDAsVi5GRCkoInNlbGVjdCIse2NzczpKbCghaSxvLHMpLHZhbHVlOmksb25DaGFuZ2U6ZT0+bihlLnRhcmdldC52YWx1ZSksZGlzYWJsZWQ6cixjaGlsZHJlbjpbKDAsVi5ZKSgib3B0aW9uIix7dmFsdWU6IiIsc2VsZWN0ZWQ6ITAsZGlzYWJsZWQ6ITAsaGlkZGVuOiEwLGNoaWxkcmVuOnR9KSxhLm1hcChlPT4oMCxWLlkpKCJvcHRpb24iLHt2YWx1ZTplLnZhbHVlLGNoaWxkcmVuOmUudmFsdWV9LGUudmFsdWUpKV19KSwhciYmKDAsVi5ZKSgiZGl2Iix7Y3NzOmVkLGNoaWxkcmVuOigwLFYuWSkodXQueWQse30pfSldfSl9O2NvbnN0IG5kPShlLHQsbik9PigwLGQuQUgpKHtwYWRkaW5nOm4/IjhweCA0MHB4IDhweCAxMnB4IjoiOHB4IDEycHgiLGJvcmRlclJhZGl1czo2LGZvbnRTaXplOjE1LGJvcmRlcjoibm9uZSIsY29sb3I6IiMwODBGMUEiLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLCImOjpwbGFjZWhvbGRlciI6e2NvbG9yOiIjNjQ3NDkxIn0sIiY6ZGlzYWJsZWQiOntiYWNrZ3JvdW5kOiIjZmZmIn0sLi4udCYme3BhZGRpbmc6IjEycHggMTZweCIsYm9yZGVyUmFkaXVzOiJ2YXIoLS1yYWRpdXMtY29tcG9uZW50LCA4cHgpIixib3JkZXI6IjFweCBzb2xpZCAgdmFyKC0tYm9yZGVyLWNvbG9yLCAjRDNEQkU1KSIsIiY6Zm9jdXMsICY6YWN0aXZlIjp7Ym9yZGVyOiIxcHggc29saWQgIHZhcigtLWJvcmRlci1jb2xvciwgI0QzREJFNSkifX0sLi4uZSYme291dGxpbmU6IjFweCBzb2xpZCAjRTgxMzMyIiwiJjpmb2N1cywgJjphY3RpdmUiOntvdXRsaW5lOiIxcHggc29saWQgI0U4MTMzMiJ9fX0sIiIsIiIpLGlkPShlLHQpPT4oMCxkLkFIKSh7Y29sb3I6IiNFODEzMzIiLGZvbnRTaXplOjEyLGxpbmVIZWlnaHQ6IjE2cHgiLGRpc3BsYXk6ImlubGluZS1ibG9jayIsLi4uZSYmdCYme21hcmdpbjoiMTJweCAwIn19LCIiLCIiKSxhZD0oMCxkLkFIKSh7bWFyZ2luQm90dG9tOjEyLGRpc3BsYXk6ImJsb2NrIixtYXJnaW5Ub3A6LTMwLHBhZGRpbmdUb3A6MzB9LCIiLCIiKSxvZD17bmFtZToiMXlrb3dlZiIsc3R5bGVzOiJtYXJnaW4tYm90dG9tOjAifSxyZD0oZSx0KT0+KDAsZC5BSCkoe2JvcmRlcjoiMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvciwgI0QzREJFNSkiLHBhZGRpbmc6IjJweCAxNHB4IixoZWlnaHQ6MzQsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixmb250U2l6ZToxNCxib3JkZXJSYWRpdXM6MjQsZmxleFNocmluazowLCImOmRpc2FibGVkIjp7Y29sb3I6IiNBQ0I4Q0IifSxzdmc6e21hcmdpblJpZ2h0OjcsZmlsbDoiI0FDQjhDQiIsaGVpZ2h0OjE5LHdpZHRoOiJhdXRvIixtYXJnaW5MZWZ0Oi0yfSwiLmxvYWRlci1pY29uLmNpcmN1bGFyIjp7cG9zaXRpb246InN0YXRpYyIsY2lyY2xlOntzdHJva2U6ZX19LC4uLnQmJntib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDhweCkiLGJhY2tncm91bmQ6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IpIixjb2xvcjoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1jb250cmFzdCkiLGJvcmRlcjoibm9uZSIscGFkZGluZzoiMTJweCIsd2lkdGg6IjEwMCUiLGhlaWdodDoidW5zZXQiLCI6ZGlzYWJsZWQiOntiYWNrZ3JvdW5kOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKSIsY29sb3I6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItY29udHJhc3QpIixzdmc6e2ZpbGw6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItY29udHJhc3QpIn19fX0sIiIsIiIpLHNkPWU9PigwLGQuQUgpKHtkaXNwbGF5OiJmbGV4IixqdXN0aWZ5Q29udGVudDoic3BhY2UtYmV0d2VlbiIsZ2FwOjMwLGFsaWduSXRlbXM6ImNlbnRlciIsLi4uZSYme2dhcDowLGZsZXhEaXJlY3Rpb246ImNvbHVtbiJ9fSwiIiwiIiksbGQ9e25hbWU6IjNsdW81bSIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiMwODBGMUE7cG9zaXRpb246cmVsYXRpdmU7c3Zne2Rpc3BsYXk6bm9uZTt9aW5wdXQ6Y2hlY2tlZCArIHN2Z3tkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjE0cHg7bGVmdDoycHg7fSJ9LGRkPShlLHQpPT4oMCxkLkFIKSh7YXBwZWFyYW5jZToibm9uZSIsd2lkdGg6MTgsaGVpZ2h0OjE4LGJvcmRlclJhZGl1czo0LGJvcmRlcjoiMnB4IHNvbGlkICM2NDc0OTEiLG1hcmdpbjoiMCAxMnB4IDAgMCIsZmxleFNocmluazowLCImOmZvY3VzLCAmOmFjdGl2ZSI6e2JvcmRlcjoiMnB4IHNvbGlkICM2NDc0OTEiLGJveFNoYWRvdzpgMCAwIDJweCAwICR7ZX1gfSwiJjpjaGVja2VkIjp7Ym9yZGVyQ29sb3I6ZSxiYWNrZ3JvdW5kQ29sb3I6ZX0sLi4udCYme2JvcmRlckNvbG9yOiIjRTgxMzMyIn19LCIiLCIiKSxjZD1lPT4oMCxkLkFIKSh7bWF4V2lkdGg6ZT8iMzAwcHgiOiJub25lIn0sIiIsIiIpO3ZhciB1ZD1lPT57bGV0e2Zvcm06dCxjb250ZW50Om4saWQ6aX09ZTtjb25zdHtmb3JtVmFsdWVzOm8sZm9ybVN1Ym1pdHRpbmc6cyxmb3JtVmFsaWRpdHlTdGF0ZTpsLGZvcm1SZWY6ZCx0aXRsZVJlZjpjLGhhbmRsZVN1Ym1pdDp1LGhhbmRsZUNoYW5nZTpmLGhhc0Vycm9yczptLHNlbnQ6aCxkaXNhYmxlZDpnLGVuYWJsZUZvcm1TdWJtaXNzaW9uOmIsZGlzYWJsZUZvcm1TdWJtaXNzaW9uOnYsaXNTdWJtaXNzaW9uRGlzYWJsZWQ6eCxyZW1vdmVJdGVtRnJvbUFycmF5Rm9ybUZpZWxkOnksYWRkSXRlbVRvQXJyYXlGb3JtRmllbGQ6d309RGwoe2Zvcm06dCxtZXNzYWdlSWQ6aX0pLGs9KDAsci5kNCkoQy5mTykse2lzTmV3U2tpbjpBfT0oMCxwLkEpKCksRT1odChBKSxTPSgwLGEudXNlQ2FsbGJhY2spKGU9Pntjb25zdCB0PWxbZS5pZF0hPT1rbC5WQUxJRCxuPW9bZS5pZF0saT17cGxhY2Vob2xkZXI6ZS5uYW1lLGNzczpbbmQodCxBLGgpLEUudGV4dDE0XSxkaXNhYmxlZDpnLHJlYWRPbmx5OmgsdmFsdWU6U3RyaW5nKG4pLG9uQ2hhbmdlOnQ9PmYoZS5pZCx0LnRhcmdldC52YWx1ZSl9O2xldCBhPW51bGw7c3dpdGNoKGUudHlwZSl7Y2FzZSB0dC5Wdy5DSEVDS0JPWDphPSgwLFYuRkQpKCJsYWJlbCIse2NzczpsZCxjaGlsZHJlbjpbKDAsVi5ZKSgiaW5wdXQiLHtjc3M6ZGQoa1szXSx0KSxkaXNhYmxlZDpofHxnLGNoZWNrZWQ6Qm9vbGVhbihuKSx0eXBlOiJjaGVja2JveCIsb25DaGFuZ2U6dD0+ZihlLmlkLHQudGFyZ2V0LmNoZWNrZWQpfSksKDAsVi5ZKSh1dC5vaCx7fSksZS5uYW1lXX0pO2JyZWFrO2Nhc2UgdHQuVncuRU1BSUw6YT0oMCxWLlkpKCJpbnB1dCIsey4uLmksdHlwZToiZW1haWwifSk7YnJlYWs7Y2FzZSB0dC5Wdy5OQU1FOmE9KDAsVi5ZKSgiaW5wdXQiLHsuLi5pLHR5cGU6InRleHQifSk7YnJlYWs7Y2FzZSB0dC5Wdy5MT05HX1RFWFQ6YT0oMCxWLlkpKCJ0ZXh0YXJlYSIsey4uLmksb25DaGFuZ2U6dD0+ZihlLmlkLHQudGFyZ2V0LnZhbHVlKX0pO2JyZWFrO2Nhc2UgdHQuVncuVEVYVDphPSgwLFYuWSkoImlucHV0Iix7Li4uaSx0eXBlOiJ0ZXh0In0pO2JyZWFrO2Nhc2UgdHQuVncuTlVNQkVSOmE9KDAsVi5ZKSgiaW5wdXQiLHsuLi5pLHR5cGU6Im51bWJlciJ9KTticmVhaztjYXNlIHR0LlZ3LlVSTDphPSgwLFYuWSkoImlucHV0Iix7Li4uaSx0eXBlOiJ0ZXh0In0pO2JyZWFrO2Nhc2UgdHQuVncuUEhPTkU6YT0oMCxWLlkpKCJpbnB1dCIsey4uLmksdHlwZToidGVsIn0pO2JyZWFrO2Nhc2UgdHQuVncuU0VMRUNUOmE9KDAsVi5ZKSh0ZCx7cGxhY2Vob2xkZXI6ZS5uYW1lLGRpc2FibGVkOmh8fGcsdmFsdWU6U3RyaW5nKG4pLG9uQ2hhbmdlOnQ9PmYoZS5pZCx0KSxoYXNFcnJvcjp0LG9wdGlvbnM6ZS5jaG9pY2VzPy5tYXAoZT0+KHt2YWx1ZTplLm5hbWV9KSl8fFtdfSk7YnJlYWs7Y2FzZSB0dC5Wdy5GSUxFOnJldHVybiJvYmplY3QiPT10eXBlb2Ygbj8oMCxWLlkpKFFsLHtmaWxlRmllbGRWYWx1ZTpuLGRpc2FibGVkOmh8fGcsYWRkRm9ybUZpbGVNZXNzYWdlVmFsdWU6dD0+dyhlLmlkLHQpLHJlbW92ZUZvcm1GaWxlTWVzc2FnZVZhbHVlOnQ9Pnt5KGUuaWQsInVybCIsdCl9LGVuYWJsZUZvcm1TdWJtaXNzaW9uOmIsZGlzYWJsZUZvcm1TdWJtaXNzaW9uOnYscmVxdWlyZWRFcnJvcjpsW2UuaWRdPT09a2wuRU1QVFksZmllbGROYW1lOmUubmFtZSxzZW50OmgsY29udGFjdFByb3BlcnR5OmUuY29udGFjdF9wcm9wZXJ0eX0sZS5pZCk6bnVsbDtjYXNlIHR0LlZ3Lk1VTFRJU0VMRUNUOmRlZmF1bHQ6cmV0dXJuIG51bGx9cmV0dXJuKDAsVi5ZKShfbCx7dHlwZTplLnR5cGUsdmFsaWRpdHk6bFtlLmlkXSxzaG91bGREaXNwbGF5U3VjY2Vzc0ljb246ZS50eXBlIT09dHQuVncuQ0hFQ0tCT1gmJmgsY2hpbGRyZW46YX0sZS5pZCl9LFtsLG8sQSxoLEUudGV4dDE0LGcsZixrLGIsdix3LHldKTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IgbWVzc2FnZS1mb3JtIixjc3M6Y2QoQSksY2hpbGRyZW46WygwLFYuWSkoInNwYW4iLHtjc3M6YWQscmVmOmMsY2hpbGRyZW46bn0pLCgwLFYuRkQpKCJmb3JtIix7b25TdWJtaXQ6dSxyZWY6ZCxub1ZhbGlkYXRlOiEwLGNzczpvZCxjaGlsZHJlbjpbdC5tYXAoUyksKDAsVi5GRCkoImRpdiIse2NzczpzZChBKSxjaGlsZHJlbjpbKDAsVi5ZKSgic3BhbiIse2NzczppZChBLG0pLGNoaWxkcmVuOm0mJigwLFYuWSkoT24se3ZhbHVlOiJmaWVsZHNOb3RGaWxsZWRDb3JyZWN0bHkiLGZhbGxiYWNrOiJTb21lIGZpZWxkcyBhcmUgbm90IGZpbGxlZCBvdXQgY29ycmVjdGx5LiBQbGVhc2UgY2hlY2suIn0pfSksaD8oMCxWLkZEKSgiYnV0dG9uIix7Y3NzOnJkKGtbM10sQSksZGlzYWJsZWQ6ITAsdHlwZToic3VibWl0IixjaGlsZHJlbjpbKDAsVi5ZKSh1dC5vaCx7fSksKDAsVi5ZKShPbix7dmFsdWU6InNlbnQiLGZhbGxiYWNrOiJTZW50In0pXX0pOigwLFYuWSkoImJ1dHRvbiIse2NzczpyZChrWzNdLEEpLGRpc2FibGVkOm18fHN8fGd8fHgsdHlwZToic3VibWl0IixjaGlsZHJlbjpzPygwLFYuWSkodXQuYUgse30pOigwLFYuWSkoT24se3ZhbHVlOiJzdWJtaXQiLGZhbGxiYWNrOiJTdWJtaXQifSl9KV19KV19KV19KX07Y29uc3QgcGQ9e25hbWU6IjUyYjFvYyIsc3R5bGVzOiJwYWRkaW5nOjBweCJ9LGZkPXtuYW1lOiIxaTZoNWZ6IixzdHlsZXM6InBhZGRpbmc6MTBweCAxNnB4In0sbWQ9e25hbWU6ImI5ODM0NiIsc3R5bGVzOiJmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE2cHgifSxoZD17bmFtZToiMWwzZjcybCIsc3R5bGVzOiJmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxNXB4O2NvbG9yOiMwMDEyMkU7bWFyZ2luLXRvcDo2cHg7d2hpdGUtc3BhY2U6cHJlLWxpbmUifSxnZD17bmFtZToieWprdmpyIixzdHlsZXM6ImZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE4cHg7bGV0dGVyLXNwYWNpbmc6LTAuMTVweDtjb2xvcjojMDAxMjJFO29wYWNpdHk6MC41O21hcmdpbi10b3A6NHB4In0sYmQ9e25hbWU6IjFucmltNXciLHN0eWxlczoiZm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjBweDtjb2xvcjp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTtsZXR0ZXItc3BhY2luZzotMC4xN3B4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tb3BlcmF0b3ItbWVzc2FnZSwgd2hpdGUpO3dpZHRoOjEwMCU7cGFkZGluZzo4cHggMTZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLW9wZXJhdG9yLW1lc3NhZ2UsICNFOUVDRjApO2JvcmRlci10b3A6bm9uZTsmOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCAyMHB4KTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCAyMHB4KTt9LmdyaWQtbGF5b3V0ICY6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9b3V0bGluZTpub25lIn07dmFyIHZkPWU9PntsZXR7dGl0bGU6dCxzdWJ0aXRsZTpuLGJ1dHRvbnM6aX09ZTtjb25zdCBhPSgwLHIud0EpKCkse2lzTmV3U2tpbjpvfT0oMCxwLkEpKCkscz1odChvKTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IiLGNzczpwZCxjaGlsZHJlbjpbKDAsVi5GRCkoImRpdiIse2NzczpmZCxjaGlsZHJlbjpbKDAsVi5ZKSgicCIse2NzczptZCxjaGlsZHJlbjp0fSksKDAsVi5ZKSgicCIse2NzczpoZCxjaGlsZHJlbjpufSksKDAsVi5ZKSgicCIse2NzczpnZCxjaGlsZHJlbjooKCk9Pnt0cnl7cmV0dXJuIG5ldyBVUkwoaVswXT8udXJsfHwiIikuaG9zdG5hbWUucmVwbGFjZSgid3d3LiIsIiIpfWNhdGNoe3JldHVybiIifX0pKCl9KV19KSxpLm1hcChlPT4oMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNzczpbYmQscy50ZXh0MTQsIiIsIiJdLG9uQ2xpY2s6KCk9PihlPT57InVybCI9PT1lLnR5cGUmJmUudXJsJiYoYSgoMCxrLlFUJCkoKDAsZi5JRikoZS51cmwpKSksYSgoMCxrLlJBNykoZS50aXRsZSxlLnBheWxvYWQpKSxhKCgwLGsucE82KShsdC5YLmlmcmFtZU1vZGFsQnV0dG9uQ2xpY2tlZCkpKX0pKGUpLGNoaWxkcmVuOmUudGl0bGV9LGUudGl0bGUpKV19KX07Y29uc3QgeGQ9YS5sYXp5KCgpPT5uLmUoNDAyKS50aGVuKG4uYmluZChuLDg5NTYpKSk7dmFyIHlkPWU9PigwLFYuWSkoYS5TdXNwZW5zZSx7ZmFsbGJhY2s6bnVsbCxjaGlsZHJlbjooMCxWLlkpKHhkLHtxdWVzdGlvbk1lc3NhZ2VJZDplLnF1ZXN0aW9uTWVzc2FnZUlkfSl9KSx3ZD1uKDE0Nik7Y29uc3Qga2Q9ZT0+e2xldHtxdWVzdGlvbk1lc3NhZ2VJZDp0LG1lc3NhZ2VJZDpuLGFpQXNzaXN0YW50QWN0aW9uTG9nSWQ6aX09ZTtjb25zdCBvPSgwLGEudXNlUmVmKShudWxsKSxyPSgwLGEudXNlUmVmKSgpOygwLGEudXNlRWZmZWN0KSgoKT0+e3dpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoInJldmlld1NvdXJjZXNEaXNwbGF5ZWQiKX0sW10pO2NvbnN0IHM9KDAsYS51c2VDYWxsYmFjaykoKCk9Pnt3aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJyZXZpZXdTb3VyY2VzQ2xpY2tlZCIse3F1ZXN0aW9uTWVzc2FnZUlkOnQsbWVzc2FnZUlkOm4sYWlBc3Npc3RhbnRBY3Rpb25Mb2dJZDppfSl9LFt0LG4saV0pO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+KHIuY3VycmVudD1zZXRUaW1lb3V0KCgpPT57by5jdXJyZW50Py5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCJ9KX0sMTUwKSwoKT0+e3IuY3VycmVudCYmY2xlYXJUaW1lb3V0KHIuY3VycmVudCl9KSxbXSksKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yIHRpbWVzdGFtcC12aXNpYmxlIixjc3M6d2QuYixjaGlsZHJlbjpbKDAsVi5ZKSh1dC5IMCx7fSksKDAsVi5GRCkoImRpdiIse2NoaWxkcmVuOlsoMCxWLlkpKCJwIix7Y2hpbGRyZW46KDAseS5wdykoInJldmlld1NvdXJjZXNEZXNjcmlwdGlvbiIsbnVsbCwiQUkgcmVzcG9uc2UgYmFzZWQgb24geW91ciBkYXRhIHNvdXJjZXMuIil9KSwoMCxWLlkpKCJidXR0b24iLHtjc3M6d2QuVix0eXBlOiJidXR0b24iLG9uQ2xpY2s6cyxjaGlsZHJlbjooMCx5LnB3KSgicmV2aWV3U291cmNlcyIsbnVsbCwiUmV2aWV3IHNvdXJjZXMiKX0pXX0pLCgwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2VUaW1lc3RhbXAiLHJlZjpvLGNoaWxkcmVuOlsoMCxWLlkpKHV0LmJNLHt9KSwoMCx5LnB3KSgib25seVZpc2libGVUb1lvdSIsbnVsbCwiT25seSB2aXNpYmxlIHRvIHlvdSIpXX0pXX0pfTt2YXIgQWQ9KDAsYS5tZW1vKShrZCk7dmFyIENkPWU9PigwLFYuWSkoYS5TdXNwZW5zZSx7ZmFsbGJhY2s6bnVsbCxjaGlsZHJlbjooMCxWLlkpKEFkLHtxdWVzdGlvbk1lc3NhZ2VJZDplLnF1ZXN0aW9uTWVzc2FnZUlkLG1lc3NhZ2VJZDplLm1lc3NhZ2VJZCxhaUFzc2lzdGFudEFjdGlvbkxvZ0lkOmUuYWlBc3Npc3RhbnRBY3Rpb25Mb2dJZH0pfSk7dmFyIEVkPWU9PntsZXR7Y29udGVudDp0LG9wZXJhdG9yX2lkOm4sdGltZV9zZW50Oml9PWU7Y29uc3Qgbz0oMCxyLndBKSgpLFtzLGxdPSgwLGEudXNlU3RhdGUpKCExKSxkPSgwLGEudXNlUmVmKShudWxsKSxjPSgwLGEudXNlUmVmKShudWxsKSx1PVhvKHQpOygwLGEudXNlRWZmZWN0KSgoKT0+e0lyKHtzcGFuUmVmOmQsd3JhcHBlclJlZjpjLG1pbldpZHRoOnU/MjQ4OnZvaWQgMH0pfSxbdV0pO2NvbnN0IHA9SW4odCk7cmV0dXJuKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yICIrKHM/InRpbWVzdGFtcC12aXNpYmxlIjoiIiksb25DbGljazplPT57Y29uc3R7dGFyZ2V0OnR9PWU7IU5yKHQpfHx0LmNsb3Nlc3QoImEiKXx8dC5jbGFzc0xpc3QuY29udGFpbnMoImVtb2ppIik/bChlPT4hZSk6bygoMCxrLnFLbikodC5zcmMpKX0scmVmOmMsY2hpbGRyZW46WygwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6Im1lc3NhZ2UtY29udGVudCBtZXNzYWdlLWNvbnRlbnQtLW1hcmtkb3duIixkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOnB9LHJlZjpkfSksdSYmKDAsVi5ZKSh0bCx7dXJsOnV9KSwoMCxWLlkpKF9pLHtpbjpzLGNoaWxkcmVuOigwLFYuWSkoJHMse3RpbWU6aSxvcGVyYXRvcklkOm59KX0pXX0pfTt2YXIgU2Q9ZT0+e2xldHtwcmVDaGF0RmllbGRzOnR9PWU7Y29uc3Qgbj0oMCxyLmQ0KShlPT5lLnZpc2l0b3IpO3JldHVybigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciBwcmUtY2hhdCIsY2hpbGRyZW46WygwLFYuWSkoT24se3ZhbHVlOiJwcmVmb3JtTWVzc2FnZSIsZW1vamlmeTohMCxsaW5raWZ5OiEwfSksdC5tYXAoZT0+KDAsVi5ZKSh2aSx7dHlwZTplLnR5cGUscGxhY2Vob2xkZXI6ZS5wbGFjZWhvbGRlcix2YWx1ZTpuW2UudHlwZV0sZGlzYWJsZWQ6ITB9LGUudHlwZSkpXX0pfTtjb25zdCBEZD17bmFtZToiYXFhM205IixzdHlsZXM6IiYme3BhZGRpbmc6MTJweCAxNnB4ICFpbXBvcnRhbnQ7Jjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IpO2NvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItY29udHJhc3QpO3RleHQtZGVjb3JhdGlvbjpub25lICFpbXBvcnRhbnQ7fX0ifTt2YXIgWWQ9ZT0+e2xldHtxdWlja1JlcGx5OnQsb25CdXR0b25DbGljazpuLG1ldGFkYXRhOml9PWU7Y29uc3Qgbz0oMCxhLnVzZVJlZikobnVsbCkscj0oMCxhLnVzZVJlZikobnVsbCkscz0oMCxoLkFMKSgpLHtpc05ld1NraW46bH09KDAscC5BKSgpLGQ9aHQobCksYz0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e2lmKG8uY3VycmVudCYmci5jdXJyZW50KXtjb25zdCBlPWw/Mzg6MzQ7by5jdXJyZW50LnN0eWxlLndpZHRoPWAke3IuY3VycmVudC5vZmZzZXRXaWR0aCtlfXB4YCxyLmN1cnJlbnQuY2xhc3NMaXN0LmFkZCgibGluZS1jbGFtcCIpfX0sW2xdKTtyZXR1cm4oMCxhLnVzZUVmZmVjdCkoKCk9PntzJiZzLnJlcXVlc3RBbmltYXRpb25GcmFtZShjKX0sW3MsY10pLCgwLFYuWSkoImJ1dHRvbiIse3JlZjpvLHR5cGU6ImJ1dHRvbiIsdGl0bGU6dC50aXRsZSxvbkNsaWNrOigpPT57bih0LGkpfSxjc3M6bD9EZDp2b2lkIDAsY2hpbGRyZW46KDAsVi5ZKSgic3BhbiIse3JlZjpyLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6X24odC50aXRsZSl9LGNzczpkLnRleHQxNH0pfSl9O2NvbnN0IFRkPWU9PntsZXR7cXVpY2tSZXBsaWVzOnQsbWVzc2FnZUlkOm4sZGlzYWJsZWQ6aT0hMSxtZXRhZGF0YTpvfT1lO2NvbnN0IHM9KDAsci53QSkoKSxsPSgwLHIuZDQpKGU9PigwLEMubVYpKGUsbikpOygwLGEudXNlRWZmZWN0KSgoKT0+e2x8fGl8fHMoKDAsay5KN2cpKG4pKX0sW2kscyxsLG5dKTtjb25zdCBkPSgwLGEudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKGUpe2xldHtwYXlsb2FkOnQsdGl0bGU6bix0eXBlOml9PWUse2lzX2FpX2Fzc2lzdGFudF90YXNrOmF9PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4gcygoMCxrLlJBNykobix0LHtpc19haV9hc3Npc3RhbnRfdGFzazphfSkpLHMoKDAsay5wTzYpKCJib3QiIT09aT9sdC5YLnF1aWNrUmVwbHlDbGlja2VkOmx0LlguYm90U3RhcnRlZEZyb21Cb3RzTWVudSkpLCEwfSxbc10pO3JldHVybiBpfHwhbD9udWxsOigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToiYnV0dG9uLXdyYXBwZXIiLGNoaWxkcmVuOnQubWFwKGU9PigwLFYuWSkoWWQse3F1aWNrUmVwbHk6ZSxvbkJ1dHRvbkNsaWNrOmQsbWV0YWRhdGE6b30sYCR7ZS50aXRsZX0ke2UucGF5bG9hZH1gKSl9KX07dmFyIEZkPSgwLGEubWVtbykoVGQpO3ZhciBJZD1lPT57bGV0e2Rpc2FibGVkOnQsdHlwZTpuLGlkOmksY29udGVudDpvfT1lO2NvbnN0IHM9KDAsci53QSkoKSxsPSgwLHIuZDQpKGU9PmUuc2VuZFZpc2l0b3JNZXNzYWdlRmxhZyksW2QsY109KDAsYS51c2VTdGF0ZSkoITEpLFt1LHBdPSgwLGEudXNlU3RhdGUpKCIiKSxmPW49PT10dC5Hby5SQVRFX0NPTU1FTlRfR09PRDsoMCxhLnVzZUVmZmVjdCkoKCk9PnshdCYmbCYmZCYmcygoMCxrLkZCVykoaSx1KSl9LFt1LHQscyxpLGQsbF0pO3JldHVybigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciByYXRlLWNvbW1lbnQiLGNoaWxkcmVuOlsoMCxWLlkpKCJzcGFuIix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpGbigoMCx5LnB3KShmPyJjb21tZW50Rm9yR29vZFJhdGluZyI6ImNvbW1lbnRGb3JCYWRSYXRpbmciLG51bGwsZj8iVGhhbmsgeW91IGZvciB5b3VyIHJhdGUgXHVkODNkXHVkZTBkIFdvdWxkIHlvdSBsaWtlIHRvIGxlYXZlIGEgY29tbWVudD8iOiJUaGFuayB5b3UgZm9yIHlvdXIgcmF0ZSBcdWQ4M2RcdWRlMjUgV291bGQgeW91IGxpa2UgdG8gbGVhdmUgYSBjb21tZW50PyIpKX19KSwoMCxWLlkpKExuLHt0eXBlOiJ0ZXh0IixwbGFjZWhvbGRlcjoidHlwZU9wdGlvbmFsIixvbkNoYW5nZTpwLG9uS2V5RG93bjplPT4hKDEzIT09ZXx8IWQpJiYocygoMCxrLnpycykoITApKSwoMCxoLnlHKSgpLCEwKSxpc1ZhbGlkQ2FsbGJhY2s6Yyx2YWx1ZTp0P286bnVsbCxkaXNhYmxlZDp0fSldfSl9O3ZhciBfZD1lPT57Y29uc3QgdD0oMCxyLndBKSgpLHtpc05ld1NraW46bn09KDAscC5BKSgpLGk9aHQobiksYT0oMCxyLmQ0KShDLnRmKSxvPW49PntpZihhKXQoKDAsay5TNzkpKCgwLHkucHcpKCJkaXNhYmxlZFRleHRJbnB1dFBsYWNlaG9sZGVyIixudWxsLCJDaG9vc2Ugb25lIG9mIHRoZSBvcHRpb25zIGFib3ZlIFx1MjYxZFx1ZmUwZiIpKSk7ZWxzZXtjb25zdCBpPW4/KDAseS5wdykoInJhdGVTYXRpc2ZpZWQiLG51bGwsIlllcywgSSBkaWQhIik6KDAseS5wdykoInJhdGVEaXNzYXRpc2ZpZWQiLG51bGwsIk5vLiBJXHUyMDE5bSBub3Qgc2F0aXNmaWVkLiIpO3QoKDAsay5HOGMpKGksITEpKSx0KCgwLGsuV0JXKShuKSksdCgoMCxrLko3ZykoZS5pZCkpfX07cmV0dXJuKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yIG1lc3NhZ2Utd2l0aC1idXR0b25zICIrKGUuZGlzYWJsZWQ/ImJ1dHRvbnMtaGlkZGVuIjoiIiksY2hpbGRyZW46WygwLFYuWSkoInNwYW4iLHtjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToicmF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2UifSl9KSwhZS5kaXNhYmxlZCYmKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToiYnV0dG9uLXdyYXBwZXIiLGNoaWxkcmVuOlsoMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9Pm8oITApLGNoaWxkcmVuOigwLFYuWSkoInNwYW4iLHtjc3M6aS50ZXh0MTQsY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6InJhdGVTYXRpc2ZpZWQifSl9KX0pLCgwLFYuWSkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+byghMSksY2hpbGRyZW46KDAsVi5ZKSgic3BhbiIse2NzczppLnRleHQxNCxjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToicmF0ZURpc3NhdGlzZmllZCJ9KX0pfSldfSldfSl9O3ZhciBNZD1lPT57bGV0e2lkOnQsdGl0bGU6bixpbWFnZVVybDppLHByaWNlOm8sY3VycmVuY3k6cyx2YXJpYW50czpsLHVybDpkLGJ1dHRvblBheWxvYWQ6YyxjaGF0Qm90SWQ6dSxpc0FkZFRvQ2FydEVuYWJsZWQ6bSxtZXNzYWdlSWQ6aCx2YXJpYW50SWQ6Zyxpc0ZseU1lc3NhZ2U6Yn09ZTtjb25zdCB4PSgwLHIud0EpKCksdz0oMCxyLmQ0KShDLk55KSxFPWAke2h9XyR7dH1gLFM9KDAsZi5JRikoZCksRD1sLmxlbmd0aDw9MSxZPSgwLGEudXNlUmVmKSgpLFQ9KDAsYS51c2VSZWYpKCgwLEEudnUpKFpvKSkse2lzTmV3U2tpbjpGfT0oMCxwLkEpKCksST1odChGKSxfPVFvKHMpLE09KDAsYS51c2VDYWxsYmFjaykoKCk9Pnt4KCgwLGsuQzJfKSh7cHJvZHVjdElkOnQsY2hhdEJvdElkOnUsY3RhOiJhZGRfdG9fY2FydCIscHJpY2U6byxjdXJyZW5jeTpzfSkpfSxbeCx0LHUsbyxzXSksTj0oMCxhLnVzZUNhbGxiYWNrKShhc3luYygpPT57aWYoeCgoMCxrLlJBNykoYCR7bn0gJnJhcnI7ICR7KDAseS5wdykoInJlY29tbWVuZFByb2R1Y3RBZGRUb0NhcnQiLG51bGwsIkFkZCB0byBjYXJ0Iil9YCxjKSksKDAsZi5NSSkoKSlyZXR1cm4gTSgpLCEwO3goKDAsay5wTzYpKGx0LlgucHJvZHVjdFJlY29tbWVuZGF0aW9uQWRkVG9DYXJ0Q2xpY2tlZCkpO3RyeXtjb25zdCBlPWF3YWl0KDAsdHIuSWwpKGcpO3JldHVybiBlLm9rPyhNKCksITApOigoMCx2LnNRKSgiU2hvcGlmeSBhZGQgdG8gY2FydCByZXF1ZXN0IGZhaWxlZCIse21lc3NhZ2U6ZS5zdGF0dXNUZXh0fSksITEpfWNhdGNoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRXJyb3ImJigwLHYuc1EpKCJTaG9waWZ5IGFkZCB0byBjYXJ0IHJlcXVlc3QgZmFpbGVkIix7bWVzc2FnZTplLm1lc3NhZ2V9KSwhMX19LFt4LE0sYyxnLG5dKSxPPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57eCgoMCxrLlJBNykoYCR7bn0gJnJhcnI7ICR7KDAseS5wdykoInJlY29tbWVuZFByb2R1Y3RMZWFybk1vcmUiLG51bGwsIkxlYXJuIG1vcmUiKX1gLGMpKSwoMCxmLk1JKSgpfHwoeCgoMCxrLkMyXykoe3Byb2R1Y3RJZDp0LGNoYXRCb3RJZDp1LGN0YToidmlld19kZXRhaWxzIixwcmljZTpvLGN1cnJlbmN5OnN9KSkseCgoMCxrLnBPNikobHQuWC5wcm9kdWN0UmVjb21tZW5kYXRpb25MZWFybk1vcmVDbGlja2VkKSkpfSxbYyx1LHgsdCxuLG8sc10pLFI9YXN5bmMoKT0+e3RyeXtpZigtMT09PWQuaW5kZXhPZigiOi8vIikmJndpbmRvdy50b3Ape2F3YWl0KDAsQS54MikoWm8sRSl8fE8oKSwoMCxmLkhZKShkKXx8d2luZG93LnRvcC5sb2NhdGlvbi5hc3NpZ24oZCl9ZWxzZSBPKCksd2luZG93Lm9wZW4oUyl9Y2F0Y2h7TygpLHdpbmRvdy5vcGVuKFMpfX07KDAsYS51c2VFZmZlY3QpKCgpPT57VC5jdXJyZW50PT09RSYmKFQuY3VycmVudD12b2lkIDAsKDAsQS5sRSkoWm8pLE8oKSl9LFtPLEVdKSwoMCxhLnVzZUVmZmVjdCkoKCk9PigpPT57Y2xlYXJUaW1lb3V0KFkuY3VycmVudCl9LFtdKTtjb25zdCBqPSgwLFYuWSkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY3NzOnhyLmxpbmtCdXR0b24sb25DbGljazpSLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJyZWNvbW1lbmRQcm9kdWN0TGVhcm5Nb3JlIixmYWxsYmFjazoiTGVhcm4gbW9yZSJ9KX0pO3JldHVybigwLFYuRkQpKCJkaXYiLHtjc3M6eHIuY29udGFpbmVyLGNoaWxkcmVuOltpJiYoMCxWLlkpKCJpbWciLHtzcmM6aSxhbHQ6bixjc3M6eHIuaW1hZ2V9KSwoMCxWLkZEKSgiZGl2Iix7Y3NzOnhyLmNvbnRlbnRDb250YWluZXIsY2hpbGRyZW46WygwLFYuRkQpKCJkaXYiLHtjc3M6eHIudGV4dEFuZFByaWNlc0NvbnRhaW5lcixjaGlsZHJlbjpbKDAsVi5ZKSgicCIse2NzczpbeHIuZ2V0VGl0bGVUZXh0KHcpLEkudGV4dDE0TWVkaXVtLCIiLCIiXSxjaGlsZHJlbjpufSksXyYmKDAsVi5ZKSgicCIse2NzczpbeHIucHJpY2VUZXh0LEkudGV4dDE0TWVkaXVtLCIiLCIiXSxjaGlsZHJlbjpfLmZvcm1hdChvLzEwMCl9KV19KSwoMCxWLlkpKCJkaXYiLHtjc3M6eHIuYnV0dG9uc0NvbnRhaW5lcixjaGlsZHJlbjpEPygwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKHVyLHtkaXNwbGF5ZWRWYXJpYW50SWQ6ZyxtZXNzYWdlSWQ6aCxkaXNhYmxlZDohbSxvbkFkZFRvQ2FydDpOLG9uVmlld0RldGFpbHNDbGljazpSLGlzRmx5TWVzc2FnZTpifSksal19KTpqfSldfSldfSl9O2NvbnN0IE5kPSgwLGQuaTcpKHsiMCUiOnt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoNTAlKSIsb3BhY2l0eTowfSwiMTAwJSI6e3RyYW5zZm9ybToidHJhbnNsYXRlWCgwKSIsb3BhY2l0eToxfX0pLE9kPXtuYW1lOiIxOHVxYXloIixzdHlsZXM6Im1hcmdpbi1ib3R0b206MTZweCJ9LFJkPSgwLGQuQUgpKHt3aWxsQ2hhbmdlOiJ0cmFuc2Zvcm0sIG9wYWNpdHkiLG9wYWNpdHk6MCxhbmltYXRpb246YCR7TmR9IC41cyBlYXNlLW91dCBmb3J3YXJkc2B9LCIiLCIiKTt2YXIgamQ9ZT0+e2xldHt0aXRsZTp0LHByb2R1Y3RzOm4sYnV0dG9uUGF5bG9hZDppLGNoYXRCb3RJZDphLGlzRmx5TWVzc2FnZTpvLG1lc3NhZ2VJZDpyfT1lO2NvbnN0IHM9bi5ldmVyeShlPT4hZS5pbWFnZVVybCksbD1uLmZpbHRlcihlPT5lLnZhcmlhbnRzLmxlbmd0aD4wKTtyZXR1cm4gYT8oMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbbz8oMCxWLlkpKCJwIix7Y3NzOk9kLGNoaWxkcmVuOnR9KTooMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciIsY3NzOlJkLGNoaWxkcmVuOigwLFYuWSkoInAiLHtjaGlsZHJlbjp0fSl9KSwoMCxWLlkpKERyLHtpdGVtczpsLGl0ZW1LZXk6ImlkIixyZW5kZXJJdGVtOihlLHQpPT4oMCxkLm4pKE1kLHsuLi5lLGJ1dHRvblBheWxvYWQ6aSxjaGF0Qm90SWQ6YSxpc0FkZFRvQ2FydEVuYWJsZWQ6IW98fHQsa2V5OmUuaWQsbWVzc2FnZUlkOnIsaXNGbHlNZXNzYWdlOm8sdmFyaWFudElkOmUudmFyaWFudHNbMF0uaWR9KSxpc0ZseU1lc3NhZ2U6byxpc1dpdGhvdXRJbWFnZXM6c30pXX0pOm51bGx9O2NvbnN0IFBkPVt7dmFsdWU6Ilx1ZDgzZFx1ZGUyMSIscmF0aW5nOjF9LHt2YWx1ZToiXHVkODNkXHVkZTQxIixyYXRpbmc6Mn0se3ZhbHVlOiJcdWQ4M2RcdWRlMTAiLHJhdGluZzozfSx7dmFsdWU6Ilx1ZDgzZFx1ZGUwMCIscmF0aW5nOjR9LHt2YWx1ZToiXHVkODNkXHVkZTBkIixyYXRpbmc6NX1dO2NvbnN0IHpkPXtuYW1lOiJ6NWt5YXQiLHN0eWxlczoiZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjE2cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCA2cHgpO2JhY2tncm91bmQ6d2hpdGU7cGFkZGluZzoxMnB4IDE2cHg7dGV4dGFyZWF7aGVpZ2h0Ojc0cHg7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MThweDtwYWRkaW5nOjA7OjpwbGFjZWhvbGRlcntjb2xvcjojNjQ3NDkxO319In0sTGQ9e25hbWU6IjEzc2gyczYiLHN0eWxlczoiYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IsICNEM0RCRTUpIn0sVWQ9e25hbWU6ImQ2dXh0dCIsc3R5bGVzOiJvdXRsaW5lOm5vbmU7c3Zne3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7ZmlsbDp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NkZGKTt9In07dmFyIEJkPWU9PntsZXR7dGhyZWFkU291cmNlOnQsdGhyZWFkSWQ6bixtZXNzYWdlSWQ6aSxjb21tZW50Om99PWU7Y29uc3Qgcz0oMCxyLndBKSgpLHtpc05ld1NraW46bH09KDAscC5BKSgpLFtkLGNdPSgwLGEudXNlU3RhdGUpKCIiKSx1PSgpPT57cygoMCxrLk9jcCkoZCx0LG4saSkpLHMoKDAsay50alIpKCgwLHJpLm95KSh0LG4saSx0dC5Hby5BVVRPTUFUSUNfU1VSVkVZX0NPTU1FTlRFRCkpKSwoMCxoLnlHKSgpfTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y3NzOlt6ZCxsJiZMZCwiIiwiIl0sY2hpbGRyZW46WygwLFYuWSkoTG4se3R5cGU6InRleHRhcmVhIixwbGFjZWhvbGRlcjoic2F0aXNmYWN0aW9uU3VydmV5Q29tbWVudFBsYWNlaG9sZGVyIixvbkNoYW5nZTpjLG9uS2V5RG93bjplPT4xMz09PWUmJih1KCksITApLHZhbHVlOm98fG51bGwsc2hvd0ljb246ITF9KSwoMCxWLlkpKCJidXR0b24iLHsiZGF0YS10ZXN0aWQiOiJzZW5kLXN1cnZleS1idXR0b24iLHR5cGU6ImJ1dHRvbiIsY3NzOlVkLG9uQ2xpY2s6dSxjaGlsZHJlbjooMCxWLlkpKHV0LnF4LHt9KX0pXX0pfTtjb25zdCBIZD17bmFtZToiM3cweW9pIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjhweCJ9LHFkPXtuYW1lOiIxMHJ0c3RqIixzdHlsZXM6InBhZGRpbmc6MTZweCJ9O3ZhciBWZD1lPT57bGV0e3RocmVhZFNvdXJjZTp0LHRocmVhZElkOm4sbWVzc2FnZUlkOmksY29tbWVudFF1ZXN0aW9uOmEsY29tbWVudDpvfT1lO2NvbnN0e2lzTmV3U2tpbjpyfT0oMCxwLkEpKCk7cmV0dXJuKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IiLGNzczohciYmcWQsY2hpbGRyZW46KDAsVi5GRCkoImRpdiIse2NzczpIZCxjaGlsZHJlbjpbKDAsVi5ZKSgic3BhbiIse2NoaWxkcmVuOmF9KSwoMCxWLlkpKEJkLHt0aHJlYWRTb3VyY2U6dCx0aHJlYWRJZDpuLG1lc3NhZ2VJZDppLGNvbW1lbnQ6b30pXX0pfSl9O2NvbnN0ICRkPXtuYW1lOiIxODVhd2VwIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjhweDttYXgtd2lkdGg6MzAwcHgifSxXZD17bmFtZToiZ2cxcnl6IixzdHlsZXM6ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Y2xlYXI6Ym90aDtwb3NpdGlvbjpyZWxhdGl2ZTtnYXA6OHB4O3RyYW5zaXRpb246bWFyZ2luIDAuMjhzIGVhc2UtaW4tb3V0In0sS2Q9e25hbWU6Ijlob2djaiIsc3R5bGVzOiJib3JkZXI6MXB4IHNvbGlkIHZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IpO2xldHRlci1zcGFjaW5nOi0wLjAxZW0ifSxHZD17bmFtZToiMWQzMHdxZiIsc3R5bGVzOiJiYWNrZ3JvdW5kOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IpO2NvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItY29udHJhc3QpIn0sWGQ9e25hbWU6InEwYTRheiIsc3R5bGVzOiJjb2xvcjojMDYxMzJiO2JvcmRlcjoxcHggc29saWQgdmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciwgIzA1NjZmZik7b3V0bGluZTpub25lO3BhZGRpbmc6MTJweDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NsZWFyOmJvdGg7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjE1cHg7aW1ne21pbi13aWR0aDoxOHB4O21pbi1oZWlnaHQ6MThweDt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O306aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKTtjb2xvcjp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLWNvbnRyYXN0KTt9In07dmFyIFFkPWU9PntsZXR7dGhyZWFkU291cmNlOnQsdGhyZWFkSWQ6bixtZXNzYWdlSWQ6aSxyYXRlUXVlc3Rpb246YSxzY2FsZTpvLHNlbGVjdGVkUmF0aW5nOnN9PWU7Y29uc3QgbD0oMCxyLndBKSgpO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciIsY2hpbGRyZW46YX0pLCgwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciIsY3NzOiRkLGNoaWxkcmVuOlsoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoInNhdGlzZmFjdGlvblN1cnZleVJhdGUiKX0pLCgwLFYuWSkoImRpdiIse2NzczpXZCxjaGlsZHJlbjpvLm1hcChlPT57bGV0e3ZhbHVlOmEscmF0aW5nOm99PWU7cmV0dXJuKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6W1hkLHMmJktkLHM9PT1vJiZHZCwiIiwiIl0sb25DbGljazooKT0+e3ZhciBlO2U9byxsKCgwLGsuZjd6KShlLHQsbixpKSksc3x8bCgoMCxrLnRqUikoKDAscmkub3kpKHQsbixpLHR0LkdvLkFVVE9NQVRJQ19TVVJWRVlfUkFURUQpKSl9LGNoaWxkcmVuOigwLFYuWSkoInNwYW4iLHtkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOl9uKGEpfX0pfSxvKX0pfSldfSldfSl9O2NvbnN0IFpkPXtuYW1lOiIzdzB5b2kiLHN0eWxlczoiZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4In0sSmQ9e25hbWU6IjFrZDN0djAiLHN0eWxlczoiY29sb3I6IzY0NzQ5MSJ9LGVjPWU9Pntzd2l0Y2goZSl7Y2FzZSAxOnJldHVybiJcdWQ4M2RcdWRlMjEiO2Nhc2UgMjpyZXR1cm4iXHUyNjM5XHVmZTBmIjtjYXNlIDM6cmV0dXJuIlx1ZDgzZFx1ZGUxMCI7Y2FzZSA0OnJldHVybiJcdWQ4M2RcdWRlMDAiO2Nhc2UgNTpyZXR1cm4iXHVkODNkXHVkZTBkIjtkZWZhdWx0OnJldHVybiIifX07dmFyIHRjPWU9PntsZXR7cmF0ZTp0LGNvbW1lbnQ6bn09ZTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IiLGNzczpaZCxjaGlsZHJlbjpbKDAsVi5GRCkoInNwYW4iLHtjaGlsZHJlbjpbKDAseS5wdykoInNhdGlzZmFjdGlvblN1cnZleUNvbW1lbnRlZCIpLCIgIixlYyh0KV19KSwoMCxWLlkpKCJzcGFuIix7Y3NzOkpkLGNoaWxkcmVuOm58fCgwLHkucHcpKCJzYXRpc2ZhY3Rpb25TdXJ2ZXlUaGFua3MiKX0pXX0pfTt2YXIgbmM9ZT0+e2xldHt0aHJlYWRTb3VyY2U6dCx0aHJlYWRJZDpuLG1lc3NhZ2VJZDppLHR5cGU6YSxzYXRpc2ZhY3Rpb25TdXJ2ZXk6b309ZTtjb25zdCBzPSgwLHIud0EpKCksbD0oMCxyLmQ0KShlPT4oMCxDLnoyKShlLG4pKTtpZighbClyZXR1cm4gbyYmcygoMCxrLkh5bikobyx0LG4saSkpLG51bGw7Y29uc3QgZD1sLnRocmVhZFNvdXJjZT8/ImNvbnZlcnNhdGlvbiIsYz0oZT0+e2lmKCJlbW90ZXMiPT09ZSlyZXR1cm4gUGQ7dGhyb3cgbmV3IEVycm9yKCJVbnJlYWNoYWJsZSBjYXNlIGVycm9yIil9KShsLnNjYWxlVHlwZSksdT1jLmZpbmQoZT0+ZS5yYXRpbmc9PT1sPy5yZXNwb25zZS5yYXRpbmcpO3JldHVybigoKT0+e3N3aXRjaChhKXtjYXNlIHR0LkdvLkFVVE9NQVRJQ19TVVJWRVk6cmV0dXJuIG51bGwhPT1sLnJlc3BvbnNlLmNvbW1lbnQ/bnVsbDooMCxWLlkpKFFkLHt0aHJlYWRTb3VyY2U6ZCx0aHJlYWRJZDpuLG1lc3NhZ2VJZDppLHNjYWxlOmMsc2VsZWN0ZWRSYXRpbmc6dT8ucmF0aW5nLHJhdGVRdWVzdGlvbjpsLnJhdGVRdWVzdGlvbnx8KDAseS5wdykoInNhdGlzZmFjdGlvblN1cnZleUhlYWRlciIpfSk7Y2FzZSB0dC5Hby5BVVRPTUFUSUNfU1VSVkVZX1JBVEVEOnJldHVybiBudWxsIT09bC5yZXNwb25zZS5jb21tZW50P251bGw6KDAsVi5ZKShWZCx7dGhyZWFkU291cmNlOmQsdGhyZWFkSWQ6bixtZXNzYWdlSWQ6aSxjb21tZW50OmwucmVzcG9uc2UuY29tbWVudCxjb21tZW50UXVlc3Rpb246bC5jb21tZW50UXVlc3Rpb258fCgwLHkucHcpKCJzYXRpc2ZhY3Rpb25TdXJ2ZXlDb21tZW50T3B0aW9uYWwiKX0pO2Nhc2UgdHQuR28uQVVUT01BVElDX1NVUlZFWV9DT01NRU5URUQ6cmV0dXJuKDAsVi5ZKSh0Yyx7cmF0ZTpsLnJlc3BvbnNlLnJhdGluZyxjb21tZW50OmwucmVzcG9uc2UuY29tbWVudHx8bC5lbmRNZXNzYWdlfSk7ZGVmYXVsdDp0aHJvdygwLHYuc1EpKCJBdXRvbWF0aWMgc2F0aXNmYWN0aW9uIHN1cnZleTogdW5yZWFjaGFibGUgY2FzZSIpLG5ldyBFcnJvcigiQXV0b21hdGljIHNhdGlzZmFjdGlvbiBzdXJ2ZXk6IHVucmVhY2hhYmxlIGNhc2UiKX19KSgpfTt2YXIgaWM9ZT0+e2NvbnN0IHQ9X3IoZS5jb250ZW50KTtyZXR1cm4oMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciIsY2hpbGRyZW46KDAsVi5ZKSgic3BhbiIse2NsYXNzTmFtZToibWVzc2FnZS1jb250ZW50IixkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOnR9fSl9KX07dmFyIGFjPSgpPT4oMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciIsY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6InRpY2tldFN1Ym1pdHRlZE1lc3NhZ2UiLGVtb2ppZnk6ITAsbGlua2lmeTohMH0pfSk7dmFyIG9jPWU9Pntjb25zdFt0LG5dPSgwLGEudXNlU3RhdGUpKCExKSxpPUJvb2xlYW4oZS5yYXRpbmdJZCkmJiF0LG89ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIiI7Y29uc3QgdD1lLm1hdGNoKC9eW2EtekEtWjAtOV17MTAsMTF9LS8pO3JldHVybiB0JiZlLnJlcGxhY2UodFswXSwiIil8fGV9KGUubmFtZSkscj0oZT0+e3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGUpfWNhdGNoe3JldHVybiBlfX0pKG8pLHtpc05ld1NraW46c309KDAscC5BKSgpLGw9KCk9PntuKGU9PiFlKX07cmV0dXJuKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOmBtZXNzYWdlIG1lc3NhZ2UtdXBsb2FkICR7ImltYWdlIj09PWUuYXR0YWNobWVudFR5cGU/Im1lc3NhZ2UtaW1hZ2UiOiJtZXNzYWdlLWZpbGUifSBtZXNzYWdlLSR7ImJvdCI9PT1lLnNlbmRlcj8ib3BlcmF0b3IiOmUuc2VuZGVyfSAke3Q/InRpbWVzdGFtcC12aXNpYmxlIjoiIn0gJHtlLnJhdGluZ0lkPyJyYXRpbmctdmlzaWJsZSI6IiJ9YCxzdHlsZToidmlzaXRvciIhPT1lLnNlbmRlcnx8cz97fTp7YmFja2dyb3VuZDoidmFyKC0tY3VzdG9tLWJhY2tncm91bmQpIixjb2xvcjoidmFyKC0tY3VzdG9tLXRleHQtY29sb3IpIn0sY2hpbGRyZW46ImltYWdlIj09PWUuYXR0YWNobWVudFR5cGU/KDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoS3Mse2NvbnRlbnQ6ZS5jb250ZW50LGV4dGVuc2lvbjplLmV4dGVuc2lvbix0aHVtYjplLnRodW1iLG5hbWU6ZS5uYW1lLGlkOmUuaWQsb25DbGljazpsfSksKDAsVi5ZKShfaSx7aW46dCxjaGlsZHJlbjooMCxWLlkpKCRzLHt0aW1lOmUudGltZV9zZW50fSl9KSwoMCxWLlkpKF9pLHtpbjppLGNoaWxkcmVuOigwLFYuWSkoVXIse21lc3NhZ2VJZDplLmlkLHJhdGluZ0lkOmUucmF0aW5nSWQscmF0aW5nOmUucmF0aW5nfSl9KV19KTooMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgiYSIse2hyZWY6KDAsZi5JRikoZS5jb250ZW50KSx0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciBub3JlZmVycmVyIixvbkNsaWNrOmwsY2hpbGRyZW46KDAsVi5GRCkoInNwYW4iLHtjaGlsZHJlbjpbKDAsVi5ZKShYaSx7ZXh0ZW5zaW9uOmUuZXh0ZW5zaW9ufSkscl19KX0pLCgwLFYuWSkoX2kse2luOnQsY2hpbGRyZW46KDAsVi5ZKSgkcyx7dGltZTplLnRpbWVfc2VudH0pfSldfSl9KX07Y29uc3QgcmM9e25hbWU6Ijk1cXZ5eCIsc3R5bGVzOiJ3aWR0aDptYXgtY29udGVudCJ9O3ZhciBzYz1lPT57bGV0e2lzRGVsaXZlcmVkOnQsdGltZV9zZW50Om4sY29udGVudDppfT1lO2NvbnN0W28scl09KDAsYS51c2VTdGF0ZSkoITEpLHM9KDAsYS51c2VSZWYpKG51bGwpLGw9KDAsYS51c2VSZWYpKG51bGwpLGQ9X3IoaSkse2lzTmV3U2tpbjpjfT0oMCxwLkEpKCksdT1YbyhpKTsoMCxhLnVzZUxheW91dEVmZmVjdCkoKCk9PntJcih7c3BhblJlZjpzLHdyYXBwZXJSZWY6bCxtaW5XaWR0aDp1PzI0ODp2b2lkIDB9KX0sW3VdKTtjb25zdCBmPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57cihlPT4hZSl9LFtdKTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOmBtZXNzYWdlIG1lc3NhZ2UtdmlzaXRvciAke28mJnQ/InRpbWVzdGFtcC12aXNpYmxlIjoiIn0gJHt0PyIiOiJub3QtZGVsaXZlcmVkIn1gLG9uQ2xpY2s6ZixzdHlsZTp0P3tiYWNrZ3JvdW5kOiJ2YXIoLS1jdXN0b20tYmFja2dyb3VuZCkiLGNvbG9yOiJ2YXIoLS1jdXN0b20tdGV4dC1jb2xvcikifTp7fSxyZWY6bCxjaGlsZHJlbjpbKDAsVi5ZKSgic3BhbiIse2NsYXNzTmFtZToibWVzc2FnZS1jb250ZW50IixkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOmR9LHJlZjpzfSksdSYmKDAsVi5ZKSh0bCx7dXJsOnV9KSwoMCxWLlkpKF9pLHtpbjpvJiZ0LGNoaWxkcmVuOigwLFYuWSkoJHMse3RpbWU6bn0pfSksIXQmJigwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6InJlc2VuZC1tZXNzYWdlIixjc3M6Yz9yYzp2b2lkIDAsY2hpbGRyZW46KDAseS5wdykoIm1lc3NhZ2VOb3REZWxpdmVyZWQiLG51bGwsIk5vdCBkZWxpdmVyZWQuIil9KV19KX07dmFyIGxjPWU9Pntzd2l0Y2goZS50eXBlKXtjYXNlIHR0LkdvLlBSRUNIQVQ6cmV0dXJuKDAsVi5ZKShTZCx7Li4uZX0pO2Nhc2UgdHQuR28uUkFURV9DT05WRVJTQVRJT046cmV0dXJuKDAsVi5ZKShfZCx7Li4uZX0pO2Nhc2UgdHQuR28uUkFURV9DT01NRU5UX0dPT0Q6Y2FzZSB0dC5Hby5SQVRFX0NPTU1FTlRfQkFEOnJldHVybigwLFYuWSkoSWQsey4uLmV9KTtjYXNlIHR0LkdvLkFMV0FZU19PTkxJTkU6cmV0dXJuKDAsVi5ZKShGcix7fSk7Y2FzZSB0dC5Hby5VUExPQURJTkdfRklMRTpyZXR1cm4oMCxWLlkpKFJsLkF5LHsuLi5lfSk7Y2FzZSB0dC5Hby5VUExPQURFRF9GSUxFOnJldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKG9jLHsuLi5lfSksZS5xdWlja1JlcGxpZXMmJmUucXVpY2tSZXBsaWVzLmxlbmd0aD4wJiYhZS5kaXNhYmxlZCYmKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IgYm90cy1xdWljay1yZXBsaWVzIixjaGlsZHJlbjooMCxWLlkpKEZkLHtxdWlja1JlcGxpZXM6ZS5xdWlja1JlcGxpZXMsbWVzc2FnZUlkOmUuaWQsZGlzYWJsZWQ6ZS5kaXNhYmxlZH0pfSldfSk7Y2FzZSB0dC5Hby5TWVNURU06cmV0dXJuKDAsVi5ZKShpYyx7Li4uZX0pO2Nhc2UgdHQuR28uQ0FSRF9HQUxMRVJZOnJldHVybigwLFYuWSkocGwsey4uLmV9KTtjYXNlIHR0LkdvLkJVVFRPTlM6cmV0dXJuKDAsVi5ZKShybCx7Li4uZX0pO2Nhc2UgdHQuR28uQ09VUE9OX0NPREU6cmV0dXJuKDAsVi5ZKSh3bCx7Li4uZX0pO2Nhc2UgdHQuR28uQ09OVkVSU0FUSU9OX01BUktFRF9BU19TT0xWRUQ6cmV0dXJuKDAsVi5ZKShtbCx7Li4uZX0pO2Nhc2UgdHQuR28uQVVUT01BVElDX1NVUlZFWTpjYXNlIHR0LkdvLkFVVE9NQVRJQ19TVVJWRVlfUkFURUQ6Y2FzZSB0dC5Hby5BVVRPTUFUSUNfU1VSVkVZX0NPTU1FTlRFRDpyZXR1cm4oMCxWLlkpKG5jLHsuLi5lfSk7Y2FzZSB0dC5Hby5DUkVBVEVfVElDS0VUX1NVQ0NFU1M6cmV0dXJuKDAsVi5ZKShhYyx7fSk7Y2FzZSB0dC5Hby5GT1JNOnJldHVybigwLFYuWSkodWQsey4uLmV9KTtjYXNlIHR0LkdvLkZPUk1fUkVTUE9OU0U6cmV0dXJuIG51bGw7Y2FzZSB0dC5Hby5JRlJBTUU6cmV0dXJuKDAsVi5ZKSh2ZCx7Li4uZS5pZnJhbWV9KTtjYXNlIHR0LkdvLlJFQ09NTUVOREVEX1BST0RVQ1RTOnJldHVybigwLFYuWSkoamQsey4uLmUucmVjb21tZW5kZWRQcm9kdWN0cyxjaGF0Qm90SWQ6ZS5jaGF0Qm90SWQsbWVzc2FnZUlkOmUuaWR9KTtjYXNlIHR0LkdvLkFJX0FTU0lTVEFOVF9SRUNPTU1FTkRFRF9QUk9EVUNUUzp7Y29uc3R7YWlBc3Npc3RhbnRSZXNwb25zZVR5cGU6dCxoYXNBaUFzc2lzdGFudEFuc3dlclNvdXJjZXM6bixxdWVzdGlvbk1lc3NhZ2VJZDppLGFpQXNzaXN0YW50QWN0aW9uTG9nSWQ6YX09ZSxvPSgwLGYuTUkpKCkmJigwLGYucVMpKCk/LmlzTHlyb1BsYXlncm91bmQscj1vJiYia25vd2xlZGdlX21pc3NpbmciPT09dCxzPShufHxhKSYmbyYmaSYmIXIsbD1YbyhlLmNvbnRlbnQpO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKG5sLHsuLi5lLGNvbnRlbnQ6SW4oZS5jb250ZW50KSx5b3V0dWJlVXJsOmx9KSwoMCxWLlkpKFRyLHttZXNzYWdlSWQ6ZS5pZCxwcm9kdWN0czplLnByb2R1Y3RzfSksciYmKDAsVi5ZKSh5ZCx7cXVlc3Rpb25NZXNzYWdlSWQ6aX0pLHMmJigwLFYuWSkoQ2Qse3F1ZXN0aW9uTWVzc2FnZUlkOmksbWVzc2FnZUlkOmUuaWRGcm9tU2VydmVyLGFpQXNzaXN0YW50QWN0aW9uTG9nSWQ6YX0pXX0pfWNhc2UgdHQuR28uVEVYVDpzd2l0Y2goZS5zZW5kZXIpe2Nhc2UgdHQuRCQuT1BFUkFUT1I6cmV0dXJuKDAsVi5ZKShFZCx7Li4uZX0pO2Nhc2UgdHQuRCQuQk9UOntjb25zdHthaUFzc2lzdGFudFJlc3BvbnNlVHlwZTp0LGhhc0FpQXNzaXN0YW50QW5zd2VyU291cmNlczpuLHF1ZXN0aW9uTWVzc2FnZUlkOmksYWlBc3Npc3RhbnRBY3Rpb25Mb2dJZDphfT1lLG89KDAsZi5NSSkoKSYmKDAsZi5xUykoKT8uaXNMeXJvUGxheWdyb3VuZCxyPW8mJiJrbm93bGVkZ2VfbWlzc2luZyI9PT10LHM9KG58fGEpJiZvJiZpJiYhcixsPVhvKGUuY29udGVudCk7cmV0dXJuKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkobmwsey4uLmUsY29udGVudDpJbihlLmNvbnRlbnQpLHlvdXR1YmVVcmw6bH0pLGUucXVpY2tSZXBsaWVzJiZlLnF1aWNrUmVwbGllcy5sZW5ndGg+MCYmIWUuZGlzYWJsZWQmJigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yIGJvdHMtcXVpY2stcmVwbGllcyIsY2hpbGRyZW46KDAsVi5ZKShGZCx7cXVpY2tSZXBsaWVzOmUucXVpY2tSZXBsaWVzLG1lc3NhZ2VJZDplLmlkLGRpc2FibGVkOmUuZGlzYWJsZWQsbWV0YWRhdGE6e2lzX2FpX2Fzc2lzdGFudF90YXNrOmUuYWlBc3Npc3RhbnRUYXNrfX0pfSksciYmKDAsVi5ZKSh5ZCx7cXVlc3Rpb25NZXNzYWdlSWQ6aX0pLHMmJigwLFYuWSkoQ2Qse3F1ZXN0aW9uTWVzc2FnZUlkOmksbWVzc2FnZUlkOmUuaWRGcm9tU2VydmVyLGFpQXNzaXN0YW50QWN0aW9uTG9nSWQ6YX0pXX0pfWNhc2UgdHQuRCQuVklTSVRPUjpyZXR1cm4oMCxWLlkpKHNjLHsuLi5lfSk7ZGVmYXVsdDpyZXR1cm4gbnVsbH1kZWZhdWx0OnJldHVybiBudWxsfX07dmFyIGRjPWU9PntsZXR7bWVzc2FnZXNMZW5ndGg6dCxzaG93T2xkTWVzc2FnZXM6bixjb252ZXJzYXRpb25SZWY6aSxkb2N1bWVudFJlZjpvfT1lO2NvbnN0IHI9KDAsYS51c2VSZWYpKG51bGwpLHM9KDAsYS51c2VSZWYpKCExKSxsPSgwLGEudXNlUmVmKShudWxsKSxkPSgwLGEudXNlUmVmKSgwKSxjPSgwLGEudXNlUmVmKShudWxsKSx1PSgwLGEudXNlTWVtbykoKCk9Pm8mJiJob3N0ImluIG8/by5ob3N0Lm93bmVyRG9jdW1lbnQ6byxbb10pLHA9KDAsYS51c2VDYWxsYmFjaykoKCk9Pntjb25zdHtzY3JvbGxIZWlnaHQ6ZT0wLGNsaWVudEhlaWdodDp0PTB9PWl8fHt9LG49dC0wO3IuY3VycmVudCYmKHIuY3VycmVudC5zdHlsZS5oZWlnaHQ9ZT09PXQ/IjBweCI6bipuLytlKyJweCIpfSxbaV0pLGY9KCk9PntpJiYoaS5vbnNjcm9sbD0oKT0+e2xldCBlPTA7aWYoci5jdXJyZW50KXtpZihzLmN1cnJlbnQpe2NvbnN0IHQ9QXJyYXkuZnJvbSh1LnF1ZXJ5U2VsZWN0b3JBbGwoIi5tZXNzYWdlIikpLnNsaWNlKC0xKVswXTtlPXQ/dC5vZmZzZXRIZWlnaHQ6MCxzLmN1cnJlbnQ9ITF9ci5jdXJyZW50LnN0eWxlLnRvcD0oaS5jbGllbnRIZWlnaHQtMCkqaS5zY3JvbGxUb3AvKGkuc2Nyb2xsSGVpZ2h0LWUpKyJweCJ9fSl9LG09ZT0+e2NvbnN0e3Njcm9sbEhlaWdodDp0PTAsY2xpZW50SGVpZ2h0Om49MH09aXx8e307aSYmKGkuc2Nyb2xsVG9wPXQqZS8obi0wKSl9LGg9KCk9Pnt1Lm9ubW91c2V1cD1udWxsLHUub25tb3VzZW1vdmU9bnVsbCxsLmN1cnJlbnQmJndpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShsLmN1cnJlbnQpLGYoKSxyLmN1cnJlbnQmJihyLmN1cnJlbnQuc3R5bGUud2lkdGg9IiIsci5jdXJyZW50LnN0eWxlLm1hcmdpbj0iIixyLmN1cnJlbnQuc3R5bGUub3BhY2l0eT0iIil9LGc9ZT0+e2wuY3VycmVudD13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57aWYoIXIuY3VycmVudClyZXR1cm47bGV0e2NsaWVudEhlaWdodDp0PTB9PWl8fHt9O3QtPTA7Y29uc3Qgbj1lLmNsaWVudFktZC5jdXJyZW50LGE9cGFyc2VJbnQoci5jdXJyZW50LnN0eWxlLnRvcCwxMCkrbjthPj0wJiZhPD10LXBhcnNlSW50KHIuY3VycmVudC5zdHlsZS5oZWlnaHQsMTApPyhyLmN1cnJlbnQuc3R5bGUudG9wPWAke2F9cHhgLG0oYSkpOmE8MD8oci5jdXJyZW50LnN0eWxlLnRvcD0iMHB4IixtKDApKTooci5jdXJyZW50LnN0eWxlLnRvcD10LXBhcnNlSW50KHIuY3VycmVudC5zdHlsZS5oZWlnaHQsMTApKyJweCIsbSh0LXBhcnNlSW50KHIuY3VycmVudC5zdHlsZS5oZWlnaHQsMTApKSksdS5vbm1vdXNldXA9aCxkLmN1cnJlbnQ9ZS5jbGllbnRZfSl9O3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+e3QmJihzLmN1cnJlbnQ9ITApLHAoKX0sW3QscF0pLCgwLGEudXNlRWZmZWN0KSgoKT0+e3AoKX0sW24scF0pLCgwLGEudXNlRWZmZWN0KSgoKT0+e2YoKX0pLCgwLGEudXNlRWZmZWN0KSgoKT0+KGkmJihjLmN1cnJlbnQ9bmV3IFJlc2l6ZU9ic2VydmVyKHApLGMuY3VycmVudC5vYnNlcnZlKGkpKSwoKT0+e2MuY3VycmVudCYmYy5jdXJyZW50LmRpc2Nvbm5lY3QoKX0pLFtpLHBdKSwoMCxWLlkpKCJkaXYiLHtpZDoiY29udmVyc2F0aW9uLXNjcm9sbCIsY2hpbGRyZW46KDAsVi5ZKSgiZGl2Iix7b25Nb3VzZURvd246ZT0+e2kmJihpLm9uc2Nyb2xsPW51bGwpLGQuY3VycmVudD1lLmNsaWVudFksci5jdXJyZW50JiYoci5jdXJyZW50LnN0eWxlLndpZHRoPSI4cHgiLHIuY3VycmVudC5zdHlsZS5tYXJnaW49IjBweCIsci5jdXJyZW50LnN0eWxlLm9wYWNpdHk9IjAuMzIiKSx1Lm9ubW91c2Vtb3ZlPWcsdS5vbm1vdXNldXA9aH0scmVmOmU9PntpZighZSlyZXR1cm4hMTtyLmN1cnJlbnQ9ZTtjb25zdHtzY3JvbGxIZWlnaHQ6dD0wLGNsaWVudEhlaWdodDpuPTAsc2Nyb2xsVG9wOmE9MH09aXx8e307cmV0dXJuIHIuY3VycmVudC5zdHlsZS50b3A9KG4rMCkqYS90KyJweCIsITB9fSl9KX07Y29uc3QgY2M9e25hbWU6Im1hbGJwcCIsc3R5bGVzOiJwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjMifSx1Yz17bmFtZToiMWJjZXBtZiIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3N2Z3t3aWR0aDo2NHB4O2hlaWdodDo2NHB4O30ifTt2YXIgcGM9KCk9Pntjb25zdCBlPSgwLHIuZDQpKEMuVlEpLHtpc05ld1NraW46dH09KDAscC5BKSgpO3JldHVybiBlP3Q/KDAsVi5ZKSgiZGl2Iix7Y3NzOmNjLGNoaWxkcmVuOigwLFYuRkQpKCJkaXYiLHtjc3M6dWMsY2hpbGRyZW46WygwLFYuWSkodXQuZV8se30pLCgwLFYuWSkoInNwYW4iLHtjaGlsZHJlbjooMCx5LnB3KSgiZHJhZ0FuZERyb3BJbmZvIixudWxsLCJEcm9wIGhlcmUgdG8gYXR0YWNoIil9KV19KX0pOigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToidXBsb2FkSWNvbldyYXBwZXIiLGNoaWxkcmVuOigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6InVwbG9hZC1jaXJjbGUiLGNoaWxkcmVuOlsoMCxWLlkpKHV0LkpNLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoImRyYWdBbmREcm9wSW5mbyIsbnVsbCwiRHJvcCBoZXJlIHRvIGF0dGFjaCIpfSldfSl9KTpudWxsfTtjb25zdCBmYz17bmFtZToiMWg2eGxjMyIsc3R5bGVzOiJjbGVhcjpib3RoO3dpZHRoOjEwMCU7ZmxvYXQ6bGVmdCJ9O3ZhciBtYz1lPT57bGV0e29uQ2xpY2s6dH09ZTtjb25zdHtpc05ld1NraW46bn09KDAscC5BKSgpO3JldHVybigwLFYuWSkoImRpdiIse2NzczpmYywiZGF0YS10ZXN0aWQiOiJoaXN0b3J5QnV0dG9uV3JhcHBlciIsY2hpbGRyZW46KDAsVi5GRCkoImJ1dHRvbiIse2NzczooaT1uLCgwLGQuQUgpKHttYXJnaW46IjAgYXV0byIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixiYWNrZ3JvdW5kOiIjZmZmIixsZXR0ZXJTcGFjaW5nOiItMC4xcHgiLHRleHRBbGlnbjoiY2VudGVyIixmb250U2l6ZToiMTJweCIsZm9udFdlaWdodDppPzUwMDo2MDAsY29sb3I6IiM4ODk0YWIiLGJvcmRlclJhZGl1czoiMTRweCIsYm9yZGVyOiJzb2xpZCAxcHggcmdiYSgxMzYsIDE0OCwgMTcxLCAwLjI0KSIscGFkZGluZ1JpZ2h0OiIxMHB4Iixzdmc6e2ZpbGw6IiM4ODk0YWIiLHdpZHRoOiIxOXB4IixtYXJnaW5JbmxpbmU6IjRweCJ9LCImOmhvdmVyIjp7Y29sb3I6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IsICMwNTY2ZmYpIixzdmc6e2ZpbGw6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IsICMwNTY2ZmYpIn19LG1hcmdpbkJvdHRvbTppPyIxMHB4IjoiMjBweCJ9LCIiLCIiKSksdHlwZToiYnV0dG9uIixvbkNsaWNrOnQsImRhdGEtdGVzdGlkIjoiaGlzdG9yeUJ1dHRvbiIsY2hpbGRyZW46WygwLFYuWSkodXQub3Mse30pLCgwLHkucHcpKCJwcmV2aW91c01lc3NhZ2VzIixudWxsLCJQcmV2aW91cyBtZXNzYWdlcyIpXX0pfSk7dmFyIGl9O2NvbnN0IGhjPSgwLGQuQUgpKHtib3JkZXI6IjFweCBzb2xpZCB0cmFuc3BhcmVudCIsYmFja2dyb3VuZDpgbGluZWFyLWdyYWRpZW50KHdoaXRlLCB3aGl0ZSkgcGFkZGluZy1ib3gsIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICR7Zi5YVlswXX0sICR7Zi5YVlsxXX0pIGJvcmRlci1ib3hgLGNvbG9yOmYuWFZbMF19LCIiLCIiKSxnYz0oMCxkLkFIKSh7ZGlzcGxheToiaW5saW5lLWJsb2NrIixtYXJnaW5MZWZ0Ojgsc3Bhbjp7ZGlzcGxheToiaW5saW5lLWJsb2NrIixoZWlnaHQ6NSx3aWR0aDo1LG1hcmdpbjoiMTFweCAxcHggMCAycHgiLGJhY2tncm91bmRDb2xvcjpmLlhWWzBdLGJvcmRlclJhZGl1czoiNTAlIixhbmltYXRpb246ImJsaW5rIDEuM3MgbGluZWFyIGluZmluaXRlIiwiJjpudGgtY2hpbGQoMikiOnthbmltYXRpb25EZWxheToiLTEuMXMifSwiJjpudGgtY2hpbGQoMykiOnthbmltYXRpb25EZWxheToiLTAuOXMifX19LCIiLCIiKTt2YXIgYmM9KCk9Pntjb25zdCBlPSgwLHIuZDQpKEMuUW4pO3JldHVybigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciIsY3NzOmhjLGNoaWxkcmVuOlsoMCxWLkZEKSgic3BhbiIse2NoaWxkcmVuOltlLCIgIiwoMCx5LnB3KSgiaXNUeXBpbmciLG51bGwsImlzIHR5cGluZyIpXX0pLCgwLFYuWSkoJCx7aW46ITAsY2xhc3NOYW1lczoib3BlcmF0b3JUeXBpbmciLGNoaWxkcmVuOigwLFYuRkQpKCJkaXYiLHtjc3M6Z2MsY2hpbGRyZW46WygwLFYuWSkoInNwYW4iLHt9KSwoMCxWLlkpKCJzcGFuIix7fSksKDAsVi5ZKSgic3BhbiIse30pXX0pfSldfSl9O3ZhciB2Yz1lPT57bGV0e29wZXJhdG9ySXNUeXBpbmc6dH09ZTtyZXR1cm4oMCxWLlkpKCQse2luOiExIT09dCxjbGFzc05hbWVzOiJvcGVyYXRvclR5cGluZyIsY2hpbGRyZW46KDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yIHR5cGluZy1pbmRpY2F0b3IiLGNoaWxkcmVuOlsoMCxWLlkpKCJzcGFuIix7fSksKDAsVi5ZKSgic3BhbiIse30pLCgwLFYuWSkoInNwYW4iLHt9KV19KX0pfTtjb25zdCB4Yz0oMCxkLmk3KSh7IjAlIjp7YmFja2dyb3VuZFBvc2l0aW9uOiItNTAlIDUwJSJ9LCIxMDAlIjp7YmFja2dyb3VuZFBvc2l0aW9uOiI1MCUgNTAlIn19KSx5Yz0oMCxkLkFIKSh7Y2xlYXI6ImJvdGgiLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjgscGFkZGluZ1RvcDoxMixzdmc6e3dpZHRoOjE2LGhlaWdodDoxNn0sYmFja2dyb3VuZEltYWdlOiJsaW5lYXItZ3JhZGllbnQoOTBkZWcsICM2NDc0OTEgNDIlLCAjMDgwRjFBIDQ2JSwgIzA4MEYxQSA1NCUsICM2NDc0OTEgNTglKSIsYmFja2dyb3VuZFNpemU6IjUwJSAxMDAlIixXZWJraXRCYWNrZ3JvdW5kQ2xpcDoidGV4dCIsV2Via2l0VGV4dEZpbGxDb2xvcjoidHJhbnNwYXJlbnQiLGFuaW1hdGlvbjpgJHt4Y30gMnMgbGluZWFyIGluZmluaXRlYH0sIiIsIiIpLHdjPXtuYW1lOiIxczl4aDgiLHN0eWxlczoid2lkdGg6MjRweDtoZWlnaHQ6MjRweDtib3JkZXItcmFkaXVzOjUwJSJ9LGtjPWU9PntsZXR7b3BlcmF0b3JJc1R5cGluZzp0LGFpQXNzaXN0YW50SXNUaGlua2luZzpufT1lO2NvbnN0e2Fzc2lnbmVkT3BlcmF0b3JzRGF0YTppfT1SYSgpLG89KDAsci5kNCkoQy5Rbikscz0oMCxhLnVzZU1lbW8pKCgpPT5pLmZpbmQoZT0+ZS5pZD09PXQpLFtpLHRdKSx7aXNOZXdTa2luOmx9PSgwLHAuQSkoKSxkPWh0KGwpLHU9KDAsYy56aCkoe2Zyb206e29wYWNpdHk6LjAxLHRyYW5zZm9ybToidHJhbnNsYXRlWSgxMHB4KSJ9LHRvOntvcGFjaXR5OjEsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDBweCkifSxjb25maWc6e3RlbnNpb246MjAwLGZyaWN0aW9uOjIwfX0pO3JldHVybiBufHx0P24/KDAsVi5GRCkoYy5DUy5kaXYse2NzczpbZC50ZXh0MTQseWMsIiIsIiJdLHN0eWxlOnUsY2hpbGRyZW46WygwLFYuWSkodXQuamQse30pLCIgIixvLCIgIiwoMCx5LnB3KSgiaXNUeXBpbmciLG51bGwsImlzIHR5cGluZy4uLiIpLCJcdTIwMjYiXX0pOnM/KDAsVi5GRCkoYy5DUy5kaXYse2NzczpbZC50ZXh0MTQseWMsIiIsIiJdLHN0eWxlOnUsY2hpbGRyZW46WygwLFYuWSkoImltZyIse3NyYzpzLmF2YXRhclNyYz8oMCxmLnZzKShzLmF2YXRhclNyYyk6R24sYWx0OmAke3MubmFtZX0gYXZhdGFyYCxjc3M6d2N9KSxzLm5hbWUsIiAiLCgwLHkucHcpKCJpc1R5cGluZyIsbnVsbCwiaXMgdHlwaW5nLi4uIiksIlx1MjAyNiJdfSk6KDAsVi5GRCkoYy5DUy5kaXYse2NzczpbZC50ZXh0MTQseWMsIiIsIiJdLHN0eWxlOnUsY2hpbGRyZW46WygwLHkucHcpKCJ0eXBpbmciLG51bGwsIlR5cGluZyIpLCJcdTIwMjYiXX0pOm51bGx9O3ZhciBBYz1lPT57bGV0e29wZXJhdG9ySXNUeXBpbmc6dCxhaUFzc2lzdGFudElzVGhpbmtpbmc6bn09ZTtjb25zdHtpc05ld1NraW46aX09KDAscC5BKSgpO3JldHVybiBpPygwLFYuWSkoa2Mse29wZXJhdG9ySXNUeXBpbmc6dCxhaUFzc2lzdGFudElzVGhpbmtpbmc6bn0pOigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKHZjLHtvcGVyYXRvcklzVHlwaW5nOnR9KSxuJiYoMCxWLlkpKGJjLHt9KV19KX07Y29uc3QgQ2M9KGUsdCxuKT0+KDAsZC5BSCkoe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsekluZGV4OjksYmFja2dyb3VuZENvbG9yOiIjZmZmIix3aWR0aDoiY2FsYygxMDAlIC0gKHZhcigtLWNoYXQtcGFkZGluZywgMjRweCkgKiAyKSkiLGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpIixib3JkZXJCb3R0b21SaWdodFJhZGl1czoidmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgMTJweCkiLC4uLiFlJiZ7dG9wOnQ/IjExMnB4IjoiMTI0cHgifSwuLi5uJiZ7dG9wOiI2MHB4In0sLi4uKG58fCFlKSYme2JvcmRlclJhZGl1czoidmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgMTJweCkifX0sIiIsIiIpLEVjPXtuYW1lOiJ4MmtrYTEiLHN0eWxlczoiZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3Rjk7cGFkZGluZzo4cHg7Z2FwOjhweDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpO2ZvbnQtc2l6ZToxMnB4O2F7b3V0bGluZTpub25lO2NvbG9yOiMwODBGMUE7fSJ9LFNjPXtuYW1lOiJqdjcydjAiLHN0eWxlczoibWFyZ2luOjJweDtvdXRsaW5lOm5vbmU7c3Zne2ZsZXgtc2hyaW5rOjA7ZmlsbDojNEM1OTZCO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7fSJ9LERjPSgwLGYuREQpKCk7dmFyIFljPSgpPT57Y29uc3QgZT0oMCxyLndBKSgpLHQ9KDAsci5kNCkoZT0+ZS5oaWRlSGVhZGVyKSxuPSgwLHIuZDQpKEMuTnkpLGk9KDAsci5kNCkoQy5vRCksbz0oMCxyLmQ0KShDLks4KSx7aXNOZXdTa2luOnN9PSgwLHAuQSkoKSxsPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57RGN8fGUoKDAsay5wNWgpKCkpfSxbZV0pO3JldHVybiFpfHxvP251bGw6KDAsVi5ZKSgiZGl2Iix7Y3NzOkNjKHMsbix0KSxjaGlsZHJlbjooMCxWLkZEKSgiZGl2Iix7Y3NzOkVjLGNoaWxkcmVuOlsoMCxWLlkpKE9uLHt2YWx1ZToicHJpdmFjeVBvbGljeSIsbWFya2Rvd25pZnk6ITB9KSwoMCxWLlkpKCJidXR0b24iLHsiYXJpYS1sYWJlbCI6IkNsb3NlIHByaXZhY3kgcG9saWN5Iix0eXBlOiJidXR0b24iLG9uQ2xpY2s6bCx0YWJJbmRleDotMSxjc3M6U2MsY2hpbGRyZW46KDAsVi5ZKSh1dC5ibSx7fSl9KV19KX0pfTt2YXIgVGM9KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShDLkFvKSxuPSgwLHIuZDQpKGU9PmUub3BlcmF0b3JJc1R5cGluZyksaT0oMCxyLmQ0KShlPT5lLmFsZXJ0LmlzVmlzaWJsZSksbz0oMCxyLmQ0KShlPT5lLmlzTW9iaWxlKSxzPSgwLHIuZDQpKGU9PmUuc2hvd09sZE1lc3NhZ2VzKSxsPSgwLHIuZDQpKEMuVlEpLGQ9KDAsci5kNCkoQy5ERyksYz0oMCxhLnVzZVJlZikoKDAsaC5iaSkoKSksdT0oMCxhLnVzZVJlZikobnVsbCkscD0oMCxhLnVzZVJlZikobnVsbCksbT0oMCxhLnVzZVJlZikobnVsbCksW2csYl09KDAsYS51c2VTdGF0ZSkoITEpOygwLGEudXNlRWZmZWN0KSgoKT0+e3AuY3VycmVudCYmYighMCl9LFtdKTtjb25zdCB4PSgpPT57cC5jdXJyZW50JiYocC5jdXJyZW50LnNjcm9sbFRvcD1wLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0LXAuY3VycmVudC5jbGllbnRIZWlnaHQpfTsoMCxhLnVzZUVmZmVjdCkoKCk9PihlKCgwLGsub09tKShvP3R0Lk5PLk1PQklMRTp0dC5OTy5DSEFUX1NJWkVfMSkpLHgoKSxtLmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+e3AuY3VycmVudCYmcC5jdXJyZW50LnNjcm9sbFRvcC1wLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0IT09cC5jdXJyZW50LmNsaWVudEhlaWdodCYmeCgpfSwxMDApLCgpPT57bS5jdXJyZW50JiZjbGVhclRpbWVvdXQobS5jdXJyZW50KX0pLFtlLG9dKTtjb25zdFt5LHddPSgwLGEudXNlU3RhdGUpKHMpOygwLGEudXNlRWZmZWN0KSgoKT0+e3khPT1zJiZ1LmN1cnJlbnQmJih1LmN1cnJlbnQuc2Nyb2xsSW50b1ZpZXcoKSx3KHMpKX0sW3MseV0pO2NvbnN0IEE9KDAsYS51c2VSZWYpKHQpLEU9cC5jdXJyZW50JiZwLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0PnAuY3VycmVudC5jbGllbnRIZWlnaHQrNDAsUz10Lmxlbmd0aCxEPUJvb2xlYW4odC5sZW5ndGg+MCYmdFtTLTFdLnR5cGU9PT10dC5Hby5VUExPQURJTkdfRklMRSYmdFtTLTFdLmltYWdlTG9hZGVkKSxZPUEuY3VycmVudC5sZW5ndGg8UzsoMCxXby5GVykodCksKDAsYS51c2VFZmZlY3QpKCgpPT57QS5jdXJyZW50Lmxlbmd0aCE9PXQubGVuZ3RoJiZ4KCksRSYmWSYmKCgpPT57dHJ5e2NvbnN0IGU9QXJyYXkuZnJvbShjLmN1cnJlbnQucXVlcnlTZWxlY3RvckFsbCgiLm1lc3NhZ2UiKSkuc2xpY2UoLTkpLHQ9ZVtlLmxlbmd0aC0xXS5vZmZzZXRIZWlnaHQ7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKz0xKWVbbl0uc3R5bGUudHJhbnNpdGlvbj0ibm9uZSIsZVtuXS5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZVkoJHt0fXB4KWA7c2V0VGltZW91dCgoKT0+e2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCs9MSllW3RdLnN0eWxlLnRyYW5zaXRpb249InRyYW5zZm9ybSAwLjJzLCBtYXJnaW4gMC4ycyIsZVt0XS5zdHlsZS50cmFuc2Zvcm09IiJ9LDApfWNhdGNoKGUpeygwLHYuc1EpKGUpfX0pKCl9LFtFLGMsdCxBLFldKSwoMCxhLnVzZUVmZmVjdCkoKCk9PntBLmN1cnJlbnQ9dH0sW3RdKSwoMCxhLnVzZUVmZmVjdCkoKCk9PnsoaXx8bnx8ZHx8RCkmJngoKX0sW2ksbixkLERdKTtjb25zdCBUPSgwLGYuSjApKCkse21lc3NhZ2VzT2xkZXJUaGFuT25lRGF5OkYsbWVzc2FnZXNMZXNzVGhhbk9uZURheU9sZDpJLHZpc2libGVNZXNzYWdlczpffT0oMCxhLnVzZU1lbW8pKCgpPT57Y29uc3QgZT10LmZpbHRlcihlPT5NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKS1lLnRpbWVfc2VudD44NjQwMCksbj10LmZpbHRlcihlPT5NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKS1lLnRpbWVfc2VudDw9ODY0MDApO3JldHVybnttZXNzYWdlc09sZGVyVGhhbk9uZURheTplLG1lc3NhZ2VzTGVzc1RoYW5PbmVEYXlPbGQ6bix2aXNpYmxlTWVzc2FnZXM6cz90Om59fSxbdCxzXSksTT0oMCxhLnVzZU1lbW8pKCgpPT5fLmZpbHRlcihlPT5lLnR5cGU9PT10dC5Hby5VUExPQURFRF9GSUxFJiYiaW1hZ2UiPT09ZS5hdHRhY2htZW50VHlwZSkuZmlsdGVyKGU9PmUuaW1hZ2VMb2FkZWQpLFtfXSksTj0oMCxhLnVzZU1lbW8pKCgpPT5fLmZpbHRlcihlPT5lLnR5cGU9PT10dC5Hby5VUExPQURJTkdfRklMRSksW19dKTtyZXR1cm4oMCxhLnVzZUVmZmVjdCkoKCk9PnsoTS5sZW5ndGg+MHx8Ti5sZW5ndGg+MCkmJngoKX0sW00ubGVuZ3RoLE4ubGVuZ3RoXSksKDAsYS51c2VFZmZlY3QpKCgpPT57Y29uc3QgZT1wLmN1cnJlbnQ7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dD0+e2NvbnN0e3RhcmdldDpufT10LGk9ZS5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS15b3V0dWJlLXByZXZpZXddIik7aVtpLmxlbmd0aC0xXT09PW4mJngoKX07cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcihHcyx0KSwoKT0+e2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihHcyx0KX19LFtdKSwoMCxWLkZEKSgiZGl2Iix7aWQ6ImNvbnZlcnNhdGlvbi1ncm91cCIscmVmOnAsY2xhc3NOYW1lOmAke2w/ImRyYWctYWN0aXZlIjoiIn0gJHtUPyJpb3MtaXBhZCI6IiJ9YCxyb2xlOiJsb2ciLGNoaWxkcmVuOlsoMCxWLlkpKFljLHt9KSwoMCxWLlkpKHBjLHt9KSwoMCxWLkZEKSgiZGl2Iix7aWQ6Im1lc3NhZ2VzIiwiYXJpYS1saXZlIjoicG9saXRlIiwiYXJpYS1hdG9taWMiOiJmYWxzZSIsImRhdGEtdGVzdGlkIjoibWVzc2FnZXNMb2ciLGNoaWxkcmVuOltzJiZGLm1hcChlPT4oMCxWLlkpKGxjLHsuLi5lfSxlLmlkKSksIXMmJkYubGVuZ3RoPjAmJigwLFYuWSkobWMse29uQ2xpY2s6KCk9PntlKCgwLGsucE82KShsdC5YLnNob3dQcmV2aW91c01lc3NhZ2VzQ2xpY2tlZCkpLGUoKDAsay5RU0opKCEwKSl9fSksRi5sZW5ndGg+MCYmKDAsVi5ZKSgiZGl2Iix7cmVmOnUsc3R5bGU6e2Zsb2F0OiJsZWZ0IixjbGVhcjoiYm90aCIsd2lkdGg6IjEwMCUifX0pLEkubWFwKGU9PigwLFYuWSkobGMsey4uLmV9LGUuaWQpKSwoMCxWLlkpKF9pLHtpbjppLGNoaWxkcmVuOigwLFYuWSkoS28se30pfSksKDAsVi5ZKShBYyx7b3BlcmF0b3JJc1R5cGluZzpuLGFpQXNzaXN0YW50SXNUaGlua2luZzpkfSldfSksZyYmImZpcmVmb3giIT09Zi5MZCYmIW8mJigwLFYuWSkoZGMse21lc3NhZ2VzTGVuZ3RoOnQubGVuZ3RoLGNvbnZlcnNhdGlvblJlZjpwLmN1cnJlbnQsZG9jdW1lbnRSZWY6Yy5jdXJyZW50LHNob3dPbGRNZXNzYWdlczpzfSldfSl9O2NvbnN0IEZjPXt0cmFuc2l0aW9uOiJtYXgtaGVpZ2h0IDIwMG1zIn0sSWM9KDAsZi5EaikoKS5uYW1lLnRvTG93ZXJDYXNlKCksX2M9KDAsZi5ERCkoKSxNYz17bmFtZToiMXc4MnhzciIsc3R5bGVzOiJtaW4taGVpZ2h0OjA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjE7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjAifTt2YXIgTmM9KCk9Pntjb25zdCBlPSgwLHIuZDQpKEMuS1opLHQ9KDAsci5kNCkoZT0+ZS5pc01vYmlsZSksbj0oMCxyLmQ0KShlPT5lLmhpZGVIZWFkZXIpLGk9KDAsci5kNCkoQy5qNiksbz0oMCxyLmQ0KShDLkFvKSxbc109KDAsYS51c2VTdGF0ZSkoby5sZW5ndGgpLFtsLGRdPSgwLGEudXNlU3RhdGUpKGkmJiF0KSx1PSgwLGEudXNlUmVmKSgwKSxtPSgwLGEudXNlUmVmKSgiIiksYj0oMCxhLnVzZVJlZikoIiIpLFt4LHldPSgwLGEudXNlU3RhdGUpKGUpLEE9KDAsci53QSkoKSx7aXNOZXdTa2luOkV9PSgwLHAuQSkoKSxTPW4mJnQmJiFFO1coe2Rpc2FibGVTY2FsaW5nOnQmJiJpb3MiPT09SWMmJkV9KTtjb25zdCBEPSgwLGEudXNlUmVmKSgxMDApLFk9KDAsYS51c2VSZWYpKHQmJiJpb3MiPT09SWMpLFQ9KDAsYS51c2VSZWYpKHtlbnRlcmluZzp7bWF4SGVpZ2h0OmAke0QuY3VycmVudH1weGB9LGVudGVyZWQ6e21heEhlaWdodDoiMzk5cHgifX0pLEY9KDAsYS51c2VSZWYpKG51bGwpLEk9KDAsci5kNCkoQy5PMSkse2Ryb3B6b25lUHJvcHM6X309YXQoKSxNPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57Y29uc3QgZT0oMCxoLkFMKSgpO2lmKFkuY3VycmVudCl0cnl7ZSYmZS5wYXJlbnQ/LnNjcm9sbFRvKDAsdS5jdXJyZW50KX1jYXRjaChlKXsoMCx2LnNRKShlKX19LFtdKSxOPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57Y29uc3QgZT0oMCxoLkFMKSgpO2lmKHQmJmUpdHJ5e2UucGFyZW50LmRvY3VtZW50LmJvZHkuc3R5bGUuY3NzVGV4dD1tLmN1cnJlbnQsZS5wYXJlbnQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc1RleHQ9Yi5jdXJyZW50fWNhdGNoKGUpeygwLHYuc1EpKCJjbGVhck1vYmlsZVN0eWxlcyBlcnJvciIse2Vycm9yOmV9KX19LFt0XSk7KDAsYS51c2VMYXlvdXRFZmZlY3QpKCgpPT4oKT0+e04oKSxNKCl9LFtOLE1dKSwoMCxhLnVzZUVmZmVjdCkoKCk9Pntjb25zdCBlPSgwLGguQUwpKCk7WS5jdXJyZW50JiYwPT09dS5jdXJyZW50JiZlJiYodS5jdXJyZW50PWUucGFyZW50LnNjcm9sbFkpfSxbXSksKDAsYS51c2VFZmZlY3QpKCgpPT57Y29uc3Qgbj0oMCxoLkFMKSgpO2lmKGU9PT13LmwuY2hhdCYmdCYmbil0cnl7Yi5jdXJyZW50PW4ucGFyZW50LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jc3NUZXh0LG0uY3VycmVudD1uLnBhcmVudC5kb2N1bWVudC5ib2R5LnN0eWxlLmNzc1RleHQ7Y29uc3QgZT1bWyJ0cmFuc2Zvcm0iLCJub25lIl0sWyJmaWx0ZXIiLCJub25lIl0sWyJiYWNrZHJvcC1maWx0ZXIiLCJub25lIl0sWyJwZXJzcGVjdGl2ZSIsIm5vbmUiXSxbImNsaXAtcGF0aCIsIm5vbmUiXSxbImNvbnRhaW4iLCJub25lIl0sWyJ3aWxsLWNoYW5nZSIsImF1dG8iXV0sdD1lLm1hcChlPT57bGV0W3Qsbl09ZTtyZXR1cm5gJHt0fTogJHtufSAhaW1wb3J0YW50O2B9KS5qb2luKCIgIik7bGV0IGk9YG92ZXJmbG93OiBoaWRkZW47IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IHZpc2liaWxpdHk6IHZpc2libGU7IG9wYWNpdHk6IDEgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IGxlZnQ6IDA7IHRvcDowOyByaWdodDogYXV0bzsgYm90dG9tOiBhdXRvOyBtYXJnaW46IDA7ICR7dH1gOyJpb3MiPT09SWMmJiJjaHJvbWUiIT09Zi5MZCYmKGkrPSJwb3NpdGlvbjpmaXhlZDsiKSxuLnBhcmVudC5kb2N1bWVudC5ib2R5LnN0eWxlLmNzc1RleHQ9aTtjb25zdCBhPW4ucGFyZW50LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDthLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLGEuc3R5bGUuc2V0UHJvcGVydHkoIm1hcmdpbiIsIjBweCIsImltcG9ydGFudCIpLGUuZm9yRWFjaChlPT57bGV0W3Qsbl09ZTtyZXR1cm4gYS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4sImltcG9ydGFudCIpfSl9Y2F0Y2h7fX0sW3QsZV0pLCgwLGEudXNlRWZmZWN0KSgoKT0+e2xldCBlO2lmKHg9PT13LmwuY2hhdCYmImhvbWUiPT09SSYmIXQmJiFfYyl7Y29uc3R7d2lkdGg6dH09KDAsZy5MWSkodHQuTk8uQ0hBVF9TSVpFXzEpO2U9c2V0VGltZW91dCgoKT0+e2lmKEYuY3VycmVudCl7Y29uc3R7Y2xpZW50SGVpZ2h0OmV9PUYuY3VycmVudDtGLmN1cnJlbnQuc3R5bGUuaGVpZ2h0PWAke2V9cHhgLEEoKDAsay5vT20pKHR0Lk5PLkRZTkFNSUMse3dpZHRoOnQsaGVpZ2h0OmUrNTF9KSl9fSw1MDApfXJldHVybigpPT57Y2xlYXJUaW1lb3V0KGUpfX0sW0EsdCxJLHhdKSwoMCxhLnVzZUVmZmVjdCkoKCk9PntvLmxlbmd0aD5zJiZ5KHR0LlNzLkNIQVQpfSxbby5sZW5ndGgsc10pO2NvbnN0IE89ImNvbnZlcnNhdGlvbnMiPT09SSxSPSgwLGMucG4pKE8se2Zyb206e29wYWNpdHk6MH0sZW50ZXI6e29wYWNpdHk6MX0sbGVhdmU6e29wYWNpdHk6MH19KTtyZXR1cm4oMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6YGNoYXQgbm8tY2xpcC1wYXRoICR7Zi5MZH1gLHN0eWxlOntiYWNrZ3JvdW5kOiIjZmZmIiwuLi4hdCYme2hlaWdodDpPPzcwMDoiYXV0byIsaW50ZXJwb2xhdGVTaXplOiJhbGxvdy1rZXl3b3JkcyIsdHJhbnNpdGlvbjoiaGVpZ2h0IDIwMG1zIGVhc2UtaW4tb3V0In19LHJlZjpGLGNoaWxkcmVuOigwLFYuRkQpKHN0LHtjaGlsZHJlbjpbKDAsVi5ZKShFaSx7fSksKDAsVi5ZKShGaSx7fSksUyYmKDAsVi5ZKShobyx7fSksUigoZSx0KT0+dD8oMCxWLkZEKShjLkNTLmRpdix7c3R5bGU6ey4uLmUscG9zaXRpb246Tz8icmVsYXRpdmUiOiJhYnNvbHV0ZSJ9LGNzczpNYywuLi5fLGNoaWxkcmVuOlshUyYmKDAsVi5ZKShRYSx7Y2hhdFZpZXdSZWY6Rn0pLGw/KDAsVi5ZKShvdCx7aW46ITAsdGltZW91dDoxLGRlZmF1bHRTdHlsZTpGYyx0cmFuc2l0aW9uU3R5bGVzOlQuY3VycmVudCxvbkFuaW1hdGlvbkVuZGVkOigpPT57ZCghMSl9LGNoaWxkcmVuOigwLFYuWSkoVGMse30pfSk6KDAsVi5ZKShUYyx7fSksKDAsVi5ZKShJYSx7aGFzU2VwYXJhdG9yOiEwfSldfSk6KDAsVi5GRCkoYy5DUy5kaXYse3N0eWxlOnsuLi5lLHBvc2l0aW9uOk8/ImFic29sdXRlIjoicmVsYXRpdmUifSxjc3M6TWMsImRhdGEtdGVzdGlkIjoiaG9tZSIsY2hpbGRyZW46WygwLFYuWSkodW8se30pLCgwLFYuWSkoUG8se30pLCgwLFYuWSkoJG8se30pXX0pKV19KX0pfTt2YXIgT2M9ZT0+e2xldHt0cmFja2luZ0V2ZW50OnR9PWU7Y29uc3Qgbj0oMCxyLndBKSgpLGk9KDAsci5kNCkoZT0+ZS5pc01vYmlsZSksYT0oMCxyLmQ0KShDLlR3KTtyZXR1cm4haSYmYT9udWxsOigwLFYuWSkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJleGl0LWNoYXQiLG9uQ2xpY2s6KCk9PntuKCgwLGsucE82KSh0KSksbigoMCxrLkh6aCkoITEpKSxuKCgwLGsubnB3KSghMSkpfSwiYXJpYS1sYWJlbCI6KDAseS5wdykoImNsb3NlV2lkZ2V0IixudWxsLCJDbG9zZSBjaGF0IHdpZGdldCIpLGNoaWxkcmVuOigwLFYuWSkodXQuYm0se30pfSl9O3ZhciBSYz17bmFtZToicWp1ZWdwIixzdHlsZXM6ImJhY2tncm91bmQtY29sb3I6I2ZmZjtwYWRkaW5nLWJsb2NrOnZhcigtLWZseS1wYWRkaW5nLCAwKTtwYWRkaW5nLWlubGluZTp2YXIoLS1mbHktcGFkZGluZywgMjBweCk7bWF4LXdpZHRoOjM0MHB4O3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbToyNnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXN1cmZhY2UsIDEycHgpO2JveC1zaGFkb3c6dmFyKC0tZmx5LXNoYWRvdyk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt6LWluZGV4OjE7bWF4LWhlaWdodDpjYWxjKDEwMCUgLSA3NnB4KTsuY2hhdC1pbi1wcmV2aWV3ICZ7Ym94LXNoYWRvdzowIDhweCAxM3B4IDAgcmdiYSgwLCAxOCwgNDYsIDAuMTYpO31yaWdodDo0OHB4O21hcmdpbi1sZWZ0OjIwcHg7Lm1vYmlsZSAme21heC13aWR0aDpjYWxjKDEwMCUgLSA0OHB4IC0gNTVweCk7Ji53aXRoLWJ1dHRvbnN7d2lkdGg6Y2FsYygxMDAlIC0gNDhweCAtIDU1cHgpO21heC13aWR0aDoyNTBweDt9fSYubmFycm93ZXJ7bWF4LXdpZHRoOjMwMHB4O30mOmhvdmVyIC5jbG9zZS1idXR0b24td3JhcHBlcntvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoOHB4KTt9LmNsb3NlLWJ1dHRvbi13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbToxMDAlO29wYWNpdHk6MDt3aWR0aDoxMDAlO2hlaWdodDo0NXB4O3RyYW5zaXRpb246dHJhbnNmb3JtIDAuM3Mgb3BhY2l0eSAwLjNzO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwcHgpO2xlZnQ6MDsubW9iaWxlICZ7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDJweCk7fX0uZ3JpZC1sYXlvdXQgJnsuY2xvc2UtYnV0dG9uLXdyYXBwZXJ7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3M7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxMnB4LCAzM3B4KTt9Jjpob3ZlciAuY2xvc2UtYnV0dG9uLXdyYXBwZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxMnB4LCAzM3B4KTt9fS5ncmlkLWxheW91dC5tb2JpbGUgJnsuY2xvc2UtYnV0dG9uLXdyYXBwZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZSg2cHgsIDMzcHgpO30mOmhvdmVyIC5jbG9zZS1idXR0b24td3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlKDZweCwgMzNweCk7fX1idXR0b24uZXhpdC1jaGF0e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7aGVpZ2h0OjI4cHg7d2lkdGg6MjhweDtib3JkZXItcmFkaXVzOjUwJTtib3gtc2hhZG93OjBweCAycHggNnB4IDBweCAjMDAxYjQ3MWY7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JhY2tncm91bmQ6I2ZmZjsubW9iaWxlICZ7aGVpZ2h0OjMycHg7d2lkdGg6MzJweDt9Lm1vYmlsZS5ncmlkLWxheW91dCAme2hlaWdodDoyOHB4O3dpZHRoOjI4cHg7fS5ncmlkLWxheW91dCAme2JveC1zaGFkb3c6MHB4IDJweCA4cHggMHB4IHJnYmEoOCwgMTUsIDI2LCAwLjA4KTt9c3Zne3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7ZmlsbDojODg5NGFiO30ubW9iaWxlICZ7c3Zne3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7fX0ubW9iaWxlLmdyaWQtbGF5b3V0ICZ7c3Zne3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7fX0mOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1iYWNrZ3JvdW5kKTtzdmd7ZmlsbDp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTt9fS5tb2JpbGUgJjpiZWZvcmV7Y29udGVudDonJzt3aWR0aDo0NHB4O2hlaWdodDo0NHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDpjYWxjKDUwJSAtIDIycHgpO2xlZnQ6Y2FsYyg1MCUgLSAyMnB4KTt9fS5pbnB1dC1ncm91cHtwYWRkaW5nOjlweCAyMnB4IDlweCAwO30uaW5wdXQtZ3JvdXAgLmZseS1uZXctbWVzc2FnZS1idXR0b257dHJhbnNpdGlvbjptaW4td2lkdGggMC4zczttaW4td2lkdGg6MTgwcHg7cGFkZGluZzo0cHggMCA4cHg7bGluZS1oZWlnaHQ6MjFweDt0ZXh0LWFsaWduOmxlZnQ7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjE3cHg7Y29sb3I6Izg4OTRhYjt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7Jjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcnt3aGl0ZS1zcGFjZTpub3dyYXA7fSY6Oi1tb3otcGxhY2Vob2xkZXJ7d2hpdGUtc3BhY2U6bm93cmFwO30mOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnt3aGl0ZS1zcGFjZTpub3dyYXA7fSY6LW1vei1wbGFjZWhvbGRlcnt3aGl0ZS1zcGFjZTpub3dyYXA7fX0ubWVzc2FnZS1jb250YWluZXJ7cGFkZGluZzoxOXB4IDA7bWF4LXdpZHRoOjI5MHB4O2ZvbnQtc2l6ZToxN3B4O2JhY2tncm91bmQ6I2ZmZjtwb3NpdGlvbjpyZWxhdGl2ZTt3b3JkLXdyYXA6YnJlYWstd29yZDtvdmVyZmxvdy15OmF1dG87d2hpdGUtc3BhY2U6cHJlLWxpbmU7cGFkZGluZy1yaWdodDozOHB4O3Vse2xpc3Qtc3R5bGUtdHlwZTpkaXNjO31vbHtsaXN0LXN0eWxlLXR5cGU6ZGVjaW1hbDt9dWwsb2x7bWFyZ2luOjEycHggMDtwYWRkaW5nLWxlZnQ6MTZweDt9bGl7cGFkZGluZy1sZWZ0OjRweDttYXJnaW4tYm90dG9tOjhweDt9Ji5pbWFnZS1jb250ZW50e292ZXJmbG93LXk6aGlkZGVuO3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MDtidXR0b257ZmxvYXQ6bGVmdDtoZWlnaHQ6MjAwcHg7d2lkdGg6MTAwJTttaW4td2lkdGg6MjAwcHg7YmFja2dyb3VuZC1jb2xvcjojZmZmOy5pbWFnZS1wcmV2aWV3e2JhY2tncm91bmQtc2l6ZTpjb3ZlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7Ym9yZGVyLXJhZGl1czo4cHg7aGVpZ2h0OjEwMCU7fX1zcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6MTBweDt9fS5tb2JpbGUgJnt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxNXB4O3BhZGRpbmctcmlnaHQ6MjJweDsmLmltYWdlLWNvbnRlbnR7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowO2J1dHRvbntoZWlnaHQ6MTMycHg7bWluLXdpZHRoOmF1dG87fX19Ji5yZWNvbW1lbmQtcHJvZHVjdHMtbWVzc2FnZXtwYWRkaW5nLXJpZ2h0OjBweDtwYWRkaW5nLWJvdHRvbTozMHB4O292ZXJmbG93LXk6dmlzaWJsZTt9JjphZnRlcntjb250ZW50OicnO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZWRlZGU7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDt3aWR0aDpjYWxjKDEwMCUgLSAzOHB4KTsubW9iaWxlICZ7d2lkdGg6Y2FsYygxMDAlIC0gMjJweCk7fX19LmJ1dHRvbi13cmFwcGVye3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwOy5tb2JpbGUgJntmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydDt9YnV0dG9uLC5idXR0b24tdXJse2ZvbnQtc2l6ZToxN3B4O2NvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IsICMwNTY2ZmYpO2JhY2tncm91bmQ6I2ZmZjtsaW5lLWhlaWdodDoyMXB4O21hcmdpbi10b3A6NnB4O21hcmdpbi1ib3R0b206NnB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczttYXgtd2lkdGg6MTAwJTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAwLjJzO21hcmdpbi1yaWdodDoxNnB4O3RleHQtYWxpZ246bGVmdDsmOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTt9Lm1vYmlsZSAme21heC13aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2s7cGFkZGluZzo0cHggMDt9LmVtb2ppe3ZlcnRpY2FsLWFsaWduOnRvcDt9fS5idXR0b24tdXJsX19hbmNob3J7Y29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciwgIzA1NjZmZik7dGV4dC1kZWNvcmF0aW9uOm5vbmU7fS5tb3JlLXJlcGxpZXN7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTtib3JkZXItcmFkaXVzOjIwcHg7cGFkZGluZzozcHggMTBweDtsaW5lLWhlaWdodDo3cHg7YWxpZ24tc2VsZjpjZW50ZXI7Lm1vYmlsZSAme2FsaWduLXNlbGY6ZmxleC1zdGFydDtwYWRkaW5nOjNweCAxMHB4O21hcmdpbjo2cHggMDt9c3Zne3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3dpZHRoOjEzcHg7aGVpZ2h0OjEzcHg7ZmlsbDp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTt9fX1pbWd7bWF4LXdpZHRoOjEwMCU7fSJ9O3ZhciBqYz1lPT4iaW1hZ2UiPT09ZS5hdHRhY2htZW50VHlwZT8oMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6ZS5vbkNsaWNrLGNoaWxkcmVuOigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToiaW1hZ2UtcHJldmlldyIsc3R5bGU6e2JhY2tncm91bmRJbWFnZTpgdXJsKCR7ZS5jb250ZW50fSlgfSwiZGF0YS10ZXN0aWQiOiJpbWFnZVByZXZpZXcifSl9KTooMCxWLlkpKCJidXR0b24iLHtjbGFzc05hbWU6ImxpbmsiLHR5cGU6ImJ1dHRvbiIsb25DbGljazplLm9uQ2xpY2ssc3R5bGU6e2JvcmRlckJvdHRvbToiMXB4IHNvbGlkICMzZjg4ZjMiLGNvbG9yOiIjM2Y4OGYzIn0sY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6Im1lZGlhRmlsZSIsZmFsbGJhY2s6Ik1lZGlhIGZpbGUifSl9KTtjb25zdCBQYz17bmFtZToidjhxZDBtIixzdHlsZXM6ImRpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6MjBweCJ9O3ZhciB6Yz1lPT57Y29uc3QgdD0oMCxyLndBKSgpLHtjb250ZW50Om4sdHlwZTppLGF0dGFjaG1lbnRUeXBlOmEsY2hhdEJvdElkOm8saWZyYW1lOnMsY2FyZHM6bD1bXSxpZDpkLHJlY29tbWVuZGVkUHJvZHVjdHM6Y309ZS5tZXNzYWdlO2lmKGk9PT1yaS50Xy51cGxvYWRlZEZpbGUpcmV0dXJuKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOmBtZXNzYWdlLWNvbnRhaW5lciAke2F9LWNvbnRlbnRgLGNoaWxkcmVuOigwLFYuWSkoamMse2NvbnRlbnQ6bixvbkNsaWNrOigpPT57dCgoMCxrLnBPNikobHQuWC5mbHlNZXNzYWdlQ2xpY2tlZCkpLHQoKDAsay5nNlEpKHR0LlNzLkNIQVQpKSx0KCgwLGsucTd2KSgiY29udmVyc2F0aW9ucyIpKX0sYXR0YWNobWVudFR5cGU6YX0pfSk7bGV0IHU9bnVsbDtpZihpPT09cmkudF8uY2FyZHMpe2NvbnN0IGU9bFswXT8udGl0bGV8fCIiO3U9Rm4oZSk7Y29uc3Qgbj1sWzBdPy5pbWFnZVVybHx8IiI7aWYobilyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlLWNvbnRhaW5lciBpbWFnZS1jb250ZW50IixjaGlsZHJlbjpbKDAsVi5ZKShqYyx7Y29udGVudDpuLG9uQ2xpY2s6KCk9Pnt0KCgwLGsuZzZRKSh0dC5Tcy5DSEFUKSksdCgoMCxrLnE3dikoImNvbnZlcnNhdGlvbnMiKSl9LGF0dGFjaG1lbnRUeXBlOiJpbWFnZSJ9KSwoMCxWLlkpKCJzcGFuIix7Y2xhc3NOYW1lOiJmbHktbWVzc2FnZS0tY2FyZC10aXRsZSIsZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDp1fX0pXX0pfWVsc2V7aWYoaT09PXJpLnRfLmNvdXBvbkNvZGUpe2NvbnN0e2NvdXBvbkNvZGU6dD0iIn09ZS5tZXNzYWdlO3JldHVybiB1PUZuKG4pLCgwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UtY29udGFpbmVyIixjaGlsZHJlbjpbKDAsVi5ZKSgiZGl2Iix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDp1fX0pLCgwLFYuWSkoInNwYW4iLHtjc3M6UGMsY2hpbGRyZW46dH0pXX0pfWlmKGk9PT1yaS50Xy5pZnJhbWUpcmV0dXJuKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZS1jb250YWluZXIiLGNoaWxkcmVuOlsoMCxWLlkpKCJwIix7Y2hpbGRyZW46cz8udGl0bGV9KSwoMCxWLlkpKCJiciIse30pLCgwLFYuWSkoInAiLHtjaGlsZHJlbjpzPy5zdWJ0aXRsZX0pXX0pO2lmKGk9PT1yaS50Xy5yZWNvbW1lbmRlZFByb2R1Y3RzKXJldHVybigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZS1jb250YWluZXIgcmVjb21tZW5kLXByb2R1Y3RzLW1lc3NhZ2UiLGNoaWxkcmVuOigwLFYuWSkoamQse3RpdGxlOmM/LnRpdGxlfHwiIixidXR0b25QYXlsb2FkOmM/LmJ1dHRvblBheWxvYWR8fCIiLHByb2R1Y3RzOmM/LnByb2R1Y3RzfHxbXSxjaGF0Qm90SWQ6byxpc0ZseU1lc3NhZ2U6ITAsbWVzc2FnZUlkOmR9KX0pO3U9SW4obil9cmV0dXJuKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlLWNvbnRhaW5lciIsZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDp1fX0pfTt2YXIgTGM9ZT0+e2NvbnN0e2lzTmV3U2tpbjp0fT0oMCxwLkEpKCksbj1lLnNob3dNb3JlUmVwbGllc0J1dHRvbnx8ZS5xdWlja1JlcGxpZXMubGVuZ3RoPmUubWF4QnV0dG9ucyxpPW4/ZS5xdWlja1JlcGxpZXMuc2xpY2UoMCxlLm1heEJ1dHRvbnMtMSk6ZS5xdWlja1JlcGxpZXM7cmV0dXJuKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToiYnV0dG9uLXdyYXBwZXIiLGNoaWxkcmVuOltpLm1hcCh0PT4oMCxWLkZEKShhLkZyYWdtZW50LHtjaGlsZHJlbjpbInVybCI9PT10LnR5cGUmJigwLFYuWSkoYWwse3RpdGxlOnQudGl0bGUscGF5bG9hZDp0LnBheWxvYWQsdXJsOnQudXJsLG9uQ2xpY2s6ZS5vbkJ1dHRvbkNsaWNrLG1lc3NhZ2VUeXBlOmUubWVzc2FnZVR5cGV9KSwoImFjdGlvbiI9PT10LnR5cGV8fCJib3QiPT09dC50eXBlfHwidGV4dCI9PT10LnR5cGUpJiYoMCxWLlkpKGlsLHt0aXRsZTp0LnRpdGxlLHBheWxvYWQ6dC5wYXlsb2FkLG9uQ2xpY2s6ZS5vbkJ1dHRvbkNsaWNrfSldfSxgJHt0LnRpdGxlfSR7dC5wYXlsb2FkfWApKSxuJiYoMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToibW9yZS1yZXBsaWVzIixvbkNsaWNrOmUub25Nb3JlQnV0dG9uQ2xpY2ssY2hpbGRyZW46dD8oMCxWLlkpKHV0LnR4LHt9KTooMCxWLlkpKHV0LkpZLHt9KX0pXX0pfTt2YXIgVWM9ZT0+e2NvbnN0IHQ9KDAsci53QSkoKSxuPSgwLHIuZDQpKEMuTnkpO2xldCBpPVtdO2UubWVzc2FnZS50eXBlPT09cmkudF8uY2FyZHM/aT1lLm1lc3NhZ2UuY2FyZHM/LlswXT8uYnV0dG9uc3x8W106ZS5tZXNzYWdlLnF1aWNrUmVwbGllcz9pPWUubWVzc2FnZS5xdWlja1JlcGxpZXM6ZS5tZXNzYWdlLmJ1dHRvbnM/KHtidXR0b25zOml9PWUubWVzc2FnZSk6ZS5tZXNzYWdlLnR5cGU9PT1yaS50Xy5pZnJhbWUmJmUubWVzc2FnZT8uaWZyYW1lJiYoaT1lLm1lc3NhZ2UuaWZyYW1lLmJ1dHRvbnMpO3JldHVybigwLFYuWSkoTGMse3F1aWNrUmVwbGllczppLG1lc3NhZ2VUeXBlOmUubWVzc2FnZS50eXBlLG9uQnV0dG9uQ2xpY2s6KGUsbik9Pnt0KCgwLGsucE82KShsdC5YLmZseU1lc3NhZ2VCdXR0b25zQ2xpY2tlZCkpLHQoKDAsay5SQTcpKG4sZSkpfSxvbk1vcmVCdXR0b25DbGljazooKT0+e3QoKDAsay5nNlEpKHR0LlNzLkNIQVQpKSx0KCgwLGsucTd2KSgiY29udmVyc2F0aW9ucyIpKX0sbWF4QnV0dG9uczpuPzM6NCxzaG93TW9yZVJlcGxpZXNCdXR0b246ZS5tZXNzYWdlLnR5cGU9PT1yaS50Xy5jYXJkcyYmKGUubWVzc2FnZS5jYXJkcz8ubGVuZ3RofHwwKT4xfSl9O2NvbnN0IEJjPSIyMjBweCIsSGM9KGUsdCk9PntpZihlKXJldHVybiBCYztpZigoMCxmLkREKSgpKXJldHVybiIyMzBweCI7Y29uc3Qgbj10JiZ3aW5kb3cuc2NyZWVuLndpZHRoPDM0MCxpPXQmJndpbmRvdy5zY3JlZW4ud2lkdGg8NDEwO3JldHVybiBuPyIxNjBweCI6aT8iMjEwcHgiOiIxMzBweCJ9O3ZhciBxYz1lPT57Y29uc3QgdD0oMCxyLndBKSgpLG49KDAsci5kNCkoQy5OeSksaT1lLm1lc3NhZ2UudHlwZT09PXJpLnRfLnVwbG9hZGVkRmlsZSxhPSgpPT57dCgoMCxrLnBPNikobHQuWC5mbHlNZXNzYWdlQ2xpY2tlZCkpLHQoKDAsay5nNlEpKHR0LlNzLkNIQVQpKSx0KCgwLGsucTd2KSgiY29udmVyc2F0aW9ucyIpKX07cmV0dXJuKDAsVi5ZKShPbix7dmFsdWU6WyJvbmxpbmVNZXNzYWdlUGxhY2Vob2xkZXIiLCJmaWxsT3V0VGhlRm9ybSJdLGNoaWxkcmVuOnQ9PntsZXR7b25saW5lTWVzc2FnZVBsYWNlaG9sZGVyOm8sZmlsbE91dFRoZUZvcm06cn09dDtyZXR1cm4oMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLHN0eWxlOnt3aWR0aDppP0JjOiJhdXRvIixtaW5XaWR0aDpIYyhpLG4pfSxpZDoibmV3LW1lc3NhZ2UtYnV0dG9uLWZseSIsY2xhc3NOYW1lOiJmbHktbmV3LW1lc3NhZ2UtYnV0dG9uIixvbkNsaWNrOmEsImRhdGEtdGVzdGlkIjoiZmx5TmV3TWVzc2FnZUJ1dHRvbiIsY2hpbGRyZW46ZS5tZXNzYWdlLnR5cGU9PT10dC5Hby5GT1JNP3I6b30pfX0pfTt2YXIgVmM9ZT0+KDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJpbnB1dC1ncm91cCIsY2hpbGRyZW46ZS5oYXNCdXR0b25zPygwLFYuWSkoVWMse21lc3NhZ2U6ZS5tZXNzYWdlfSk6KDAsVi5ZKShxYyx7bWVzc2FnZTplLm1lc3NhZ2V9KX0pO2NvbnN0ICRjPVt0dC5Hby5SRUNPTU1FTkRFRF9QUk9EVUNUU107dmFyIFdjPSgpPT57Y29uc3QgZT0oMCxyLndBKSgpLHQ9KDAsaC5BTCkoKSxuPSgwLGEudXNlUmVmKShudWxsKSxpPSgwLGEudXNlUmVmKShudWxsKSxvPSgwLHIuZDQpKEMuJFkpLHM9KDAsci5kNCkoQy5OeSksbD0oMCxyLmQ0KShDLktaKSxkPSgwLGEudXNlUmVmKShudWxsKSxjPSgwLGEudXNlUmVmKShudWxsKSx1PXZvaWQgMCE9PW8/LnF1aWNrUmVwbGllc3x8dm9pZCAwIT09bz8uY2FyZHN8fHZvaWQgMCE9PW8/LmJ1dHRvbnN8fHZvaWQgMCE9PW8/LmlmcmFtZT8uYnV0dG9ucyxwPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57bGV0IHQ9dT80OTU6MzYyO2NvbnN0IGk9IjEwMCUiO3MmJih0PSIxMDAlIiksbi5jdXJyZW50JiYobi5jdXJyZW50LnN0eWxlLm1heEhlaWdodD0ibm9uZSIpLGUoKDAsay5vT20pKGBkeW5hbWljJHt0fV8ke2l9YCx7d2lkdGg6dCxoZWlnaHQ6aX0pKSxkLmN1cnJlbnQ9dCxjLmN1cnJlbnQ9aX0sW2UsdSxzXSksbT0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+ISF0JiYocCgpLGkuY3VycmVudD10Py5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntpZihuLmN1cnJlbnQpe2xldHtjbGllbnRXaWR0aDp0LGNsaWVudEhlaWdodDppfT1uLmN1cnJlbnQ7aWYocyl7aWYodCs9OTUsaSs9ODAsZC5jdXJyZW50PT09dCYmYy5jdXJyZW50PT09aSlyZXR1cm4gbi5jdXJyZW50LnN0eWxlLmNzc1RleHQ9IiIsITF9ZWxzZSBpZih0Kz05MCxpKz05MCxkLmN1cnJlbnQ9PT10JiZjLmN1cnJlbnQ9PT1pKXJldHVybiBuLmN1cnJlbnQuc3R5bGUuY3NzVGV4dD0iIiwhMTtyZXR1cm4gZSgoMCxrLm9PbSkoYGR5bmFtaWMke3R9XyR7aX1gLHt3aWR0aDp0LGhlaWdodDppfSkpLGQuY3VycmVudD10LGMuY3VycmVudD1pLG4uY3VycmVudC5zdHlsZS5jc3NUZXh0PSIiLCEwfXJldHVybiEwfSksITApLFtlLHAscyx0XSk7cmV0dXJuKDAsYS51c2VFZmZlY3QpKCgpPT57bGV0IGU9bnVsbDtjb25zdCBhPWU9Pntjb25zdCB0PWUudGFyZ2V0OyJuZXctbWVzc2FnZS1idXR0b24tZmx5Ij09PXQ/LmdldEF0dHJpYnV0ZSgiaWQiKSYmbD09PXR0LlNzLkZMWSYmbSgpfTtyZXR1cm4gbi5jdXJyZW50JiYoZT1uLmN1cnJlbnQsZS5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixhKSksbCE9PXR0LlNzLkZMWT9pLmN1cnJlbnQmJih0Py5jYW5jZWxBbmltYXRpb25GcmFtZShpLmN1cnJlbnQpLGkuY3VycmVudD1udWxsKTptKCksKCk9PntlJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLGEpfX0sW20sbCx0XSksKDAsVi5GRCkoImRpdiIse3JlZjpuLCJkYXRhLXRlc3RpZCI6ImZseU1lc3NhZ2UiLGNsYXNzTmFtZTpgZmx5TWVzc2FnZSAke3U/IndpdGgtYnV0dG9ucyI6IiJ9ICR7Zi5MZH0gJHtvPy50eXBlPT09dHQuR28uUkVDT01NRU5ERURfUFJPRFVDVFM/Im5hcnJvd2VyIjoiIn1gLGNzczpSYyxjaGlsZHJlbjpbbyYmKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoemMse21lc3NhZ2U6b30pLCEkYy5pbmNsdWRlcyhvLnR5cGUpJiYoMCxWLlkpKFZjLHttZXNzYWdlOm8saGFzQnV0dG9uczp1fSldfSksKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJjbG9zZS1idXR0b24td3JhcHBlciIsY2hpbGRyZW46KDAsVi5ZKShPYyx7dHJhY2tpbmdFdmVudDpsdC5YLmZseU1lc3NhZ2VDbG9zZWR9KX0pXX0pfTt2YXIgS2M9KCk9Pntjb25zdCBlPSgwLHIuZDQpKGU9PmUudW5yZWFkTWVzc2FnZXMpO3JldHVybigwLFYuWSkoJCx7Y2xhc3NOYW1lczoic2NhbGUiLGluOmU+MCxjaGlsZHJlbjooMCxWLlkpKCJkaXYiLHtpZDoibmV3LW1lc3NhZ2UiLGNsYXNzTmFtZToiYWN0aXZlIixjaGlsZHJlbjplPD05P2U6IjkrIn0pfSl9O2NvbnN0IEdjPXthY3RpdmU6IjBweCA0cHggMjRweCIsaG92ZXI6IjBweCA4cHggMzJweCJ9LFhjPXthY3RpdmU6IjBweCAycHggMTZweCIsaG92ZXI6IjBweCAycHggMTJweCJ9O2Z1bmN0aW9uIFFjKGUsdCl7cmV0dXJuIGU/WGNbdF06R2NbdF19Y2xhc3MgWmMgZXh0ZW5kcyBhLkNvbXBvbmVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksKDAsaS5BKSh0aGlzLCJzdGF0ZSIse2VsZW1lbnRIb3ZlcmVkOiExLGJ1dHRvblNoYWRvdzoiIzAyMDYxMCI9PT10aGlzLnByb3BzLndpZGdldENvbG9yWzNdP2Ake1FjKHRoaXMucHJvcHMuaXNBd2Vzb21lSWZyYW1lLCJhY3RpdmUiKX0gJHsoMCxmLmo1KSh0aGlzLnByb3BzLndpZGdldENvbG9yWzNdLCIuMjAiKX1gOmAke1FjKHRoaXMucHJvcHMuaXNBd2Vzb21lSWZyYW1lLCJhY3RpdmUiKX0gJHsoMCxmLmo1KSh0aGlzLnByb3BzLndpZGdldENvbG9yWzNdLCIuNTAiKX1gLGlzR3JhZGllbnRBY3RpdmU6IiMwMjA2MTAiIT09dGhpcy5wcm9wcy53aWRnZXRDb2xvclszXX0pLCgwLGkuQSkodGhpcywib25CdWJibGVDbGljayIsZT0+e2NvbnN0e2Rpc3BhdGNoOnQsdmlldzpufT10aGlzLnByb3BzLHtjaGF0OmksY2xvc2VkOmEsZmx5Om99PXcubDtyZXR1cm4gMD09PWUubmF0aXZlRXZlbnQucGFnZVgmJjA9PT1lLm5hdGl2ZUV2ZW50LnBhZ2VZfHxlLmN1cnJlbnRUYXJnZXQuYmx1cigpLG49PT1hPyh0KCgwLGsucE82KShsdC5YLndpZGdldEljb25DbGlja2VkKSksdCgoMCxrLk90eikoKSksdm9pZCB0KCgwLGsubnB3KSghMCkpKTpuPT09bz8odCgoMCxrLmc2USkoaSkpLHZvaWQgdCgoMCxrLnE3dikoImNvbnZlcnNhdGlvbnMiKSkpOnZvaWQodGhpcy5wcm9wcy5hbGxvd0Nsb3NlJiYodCgoMCxrLnBPNikobHQuWC5jaGF0Q2xvc2VkKSksdCgoMCxrLkh6aCkoITEpKSx0KCgwLGsubnB3KSghMSkpKSl9KSwoMCxpLkEpKHRoaXMsInNldEhvdmVyU2hhZG93IiwoKT0+e3RoaXMuc2V0U3RhdGUoe2VsZW1lbnRIb3ZlcmVkOiEwfSl9KSwoMCxpLkEpKHRoaXMsInNldERlZmF1bHRTaGFkb3ciLCgpPT57dGhpcy5zZXRTdGF0ZSh7ZWxlbWVudEhvdmVyZWQ6ITF9KX0pfXN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoZSx0KXtyZXR1cm4gdC5lbGVtZW50SG92ZXJlZD90LmVsZW1lbnRIb3ZlcmVkP3tidXR0b25TaGFkb3c6YCR7UWMoZS5pc0F3ZXNvbWVJZnJhbWUsImhvdmVyIil9ICR7KDAsZi5qNSkoZS53aWRnZXRDb2xvclszXSx0LmlzR3JhZGllbnRBY3RpdmU/Ii4yNCI6Ii4yMCIpfWB9Om51bGw6e2J1dHRvblNoYWRvdzpgJHtRYyhlLmlzQXdlc29tZUlmcmFtZSwiYWN0aXZlIil9ICR7KDAsZi5qNSkoZS53aWRnZXRDb2xvclszXSx0LmlzR3JhZGllbnRBY3RpdmU/Ii41MCI6Ii4yMCIpfWB9fXJlbmRlcigpe2NvbnN0e2lzQ2hhdE9uU2l0ZTplLHZpZXc6dCxpc05ld1NraW46bixpc01vYmlsZTppLGFsbG93Q2xvc2U6YX09dGhpcy5wcm9wcyxvPXQhPT13LmwuY2xvc2VkJiZhLHI9dD09PXcubC5jbG9zZWR8fHQ9PT13LmwuZmx5fHwhYSxzPXRoaXMucHJvcHMuc2lkZWJhci5mb250Q29sb3J8fCIjZmZmIjtyZXR1cm4iY2hhdCI9PT10JiYoIW58fGl8fGUmJiFpKT9udWxsOigwLFYuRkQpKCJkaXYiLHtpZDoiYnV0dG9uIiwiZGF0YS10ZXN0aWQiOiJ3aWRnZXRCdXR0b24iLGNsYXNzTmFtZTpgJHt0aGlzLnByb3BzLmlzU2lkZWJhckNvbXBvbmVudD8ic2lkZWJhciI6IiJ9ICR7bz8iY2hhdC1vcGVuIjoiY2hhdC1jbG9zZWQifSBtb2JpbGUtc2l6ZV9fJHt0aGlzLnByb3BzLm1vYmlsZUJ1dHRvblNpemV9YCwiYXJpYS1sYWJlbCI6biYmbz8oMCx5LnB3KSgibWluaW1pemUiLG51bGwsIk1pbmltaXplIik6IiIsY2hpbGRyZW46W3RoaXMucHJvcHMuaXNTaWRlYmFyQ29tcG9uZW50JiYoMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6InNpZGViYXItY29udGVudCIsc3R5bGU6e2JhY2tncm91bmQ6dGhpcy5wcm9wcy5zaWRlYmFyLmNvbG9yLGNvbG9yOnN9LG9uQ2xpY2s6dGhpcy5vbkJ1YmJsZUNsaWNrLGNoaWxkcmVuOigwLFYuWSkoInNwYW4iLHtjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToic2lkZWJhckxhYmVsIn0pfSl9KSwoMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixpZDoiYnV0dG9uLWJvZHkiLCJkYXRhLXRlc3RpZCI6IndpZGdldEJ1dHRvbkJvZHkiLG9uQ2xpY2s6dGhpcy5vbkJ1YmJsZUNsaWNrLHN0eWxlOntib3hTaGFkb3c6bj8iMHB4IDJweCA4cHggMHB4ICMwODBGMUExNCwgMHB4IDJweCAycHggMHB4ICMwODBGMUExRiI6dGhpcy5zdGF0ZS5idXR0b25TaGFkb3d9LG9uTW91c2VFbnRlcjp0aGlzLnNldEhvdmVyU2hhZG93LG9uTW91c2VMZWF2ZTp0aGlzLnNldERlZmF1bHRTaGFkb3csY2xhc3NOYW1lOmYuTGQsdGFiSW5kZXg6IjAiLCJhcmlhLWxhYmVsIjpvPygwLHkucHcpKCJjbG9zZVdpZGdldCIsbnVsbCwiQ2xvc2UgY2hhdCB3aWRnZXQiKTooMCx5LnB3KSgib3BlbldpZGdldCIsbnVsbCwiT3BlbiBjaGF0IHdpZGdldCIpLGNoaWxkcmVuOlsoMCxWLlkpKCJpIix7Y2xhc3NOYW1lOiJtYXRlcmlhbC1pY29ucyB0eXBlMSBmb3ItY2xvc2VkICIrKHI/ImFjdGl2ZSI6IiIpLHN0eWxlOntjb2xvcjoidmFyKC0tY3VzdG9tLXRleHQtY29sb3IsICNmZmYpIn0sY2hpbGRyZW46KDAsVi5ZKSh1dC5aaCx7fSl9KSwoMCxWLlkpKCJpIix7Y2xhc3NOYW1lOiJtYXRlcmlhbC1pY29ucyB0eXBlMSBmb3Itb3BlbmVkICIrKHI/IiI6ImFjdGl2ZSIpLHN0eWxlOntjb2xvcjoidmFyKC0tY3VzdG9tLXRleHQtY29sb3IsICNmZmYpIn0sY2hpbGRyZW46KDAsVi5ZKSh1dC5ibSx7fSl9KV19KSwhdGhpcy5wcm9wcy5pc1NpZGViYXJDb21wb25lbnQmJigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsiY2hhdCIhPT10JiYoMCxWLlkpKEtjLHt9KSwoMCxWLlkpKCQse2NsYXNzTmFtZXM6InNjYWxlIixpbjp0aGlzLnByb3BzLmlzU291bmRFbmFibGVkJiZ0aGlzLnByb3BzLmFyZU5vdGlmaWNhdGlvblNub296ZWQsY2hpbGRyZW46KDAsVi5ZKSgiZGl2Iix7aWQ6ImRuZC1pbmRpY2F0b3IiLGNoaWxkcmVuOigwLFYuWSkodXQub0gse30pfSl9KV19KV19KX19WmMuZGVmYXVsdFByb3BzPXtpc1NpZGViYXJDb21wb25lbnQ6ITEsaXNOZXdTa2luOiExfTtjb25zdCBKYz0oMCxyLk5nKShlPT4oe3ZpZXc6KDAsQy5LWikoZSksd2lkZ2V0Q29sb3I6KDAsZi5BcikoZS53aWRnZXRDb2xvciksYXJlTm90aWZpY2F0aW9uU25vb3plZDplLm5vdGlmaWNhdGlvblNub296ZWQsc2lkZWJhcjplLnNpZGViYXJJZnJhbWVTdHlsZXMsbW9iaWxlQnV0dG9uU2l6ZTooMCxDLmVDKShlKSxpc1NvdW5kRW5hYmxlZDplLmlzU291bmRFbmFibGVkLGlzQXdlc29tZUlmcmFtZTooMCxDLml4KShlKSxpc0NoYXRPblNpdGU6KDAsQy5UdykoZSksaXNNb2JpbGU6ZS5pc01vYmlsZSxhbGxvd0Nsb3NlOigwLEMuZW0pKGUpfSkpKFpjKSxldT1lPT57bGV0e2lzU2lkZWJhckNvbXBvbmVudDp0fT1lO2NvbnN0e2lzTmV3U2tpbjpufT0oMCxwLkEpKCk7cmV0dXJuKDAsVi5ZKShKYyx7aXNOZXdTa2luOm4saXNTaWRlYmFyQ29tcG9uZW50OnR9KX07ZXUuZGVmYXVsdFByb3BzPXtpc1NpZGViYXJDb21wb25lbnQ6ITF9O3ZhciB0dT1ldTtjb25zdCBudT17bmFtZToiMTJqOXpzZiIsc3R5bGVzOiJwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6NDJweDtib3R0b206NjFweDt6LWluZGV4OjE7d2hpdGUtc3BhY2U6bm93cmFwO2ZvbnQtc2l6ZToxN3B4O2xpbmUtaGVpZ2h0OjE3cHg7LndpZGdldC1wb3NpdGlvbi1sZWZ0ICZ7LyohIEBub2ZsaXAgKi9sZWZ0OjEwMHB4O30ud2lkZ2V0LXBvc2l0aW9uLXJpZ2h0ICZ7LyohIEBub2ZsaXAgKi9yaWdodDoxMDBweDt9Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCAxNnB4KTtwYWRkaW5nLWJsb2NrOnZhcigtLWxhYmVsLXBhZGRpbmctYmxvY2ssIDEwcHgpO3BhZGRpbmctaW5saW5lOnZhcigtLWxhYmVsLXBhZGRpbmctaW5saW5lLCAxNXB4KTtib3gtc2hhZG93OnZhcigtLWxhYmVsLXNoYWRvdyk7YmFja2dyb3VuZDojZmZmIn0saXU9e25hbWU6IjFtbW5tNnEiLHN0eWxlczoiaGVpZ2h0OmF1dG87bWluLWhlaWdodDo0MnB4O21heC13aWR0aDoyODBweDt3aWR0aDphdXRvO3doaXRlLXNwYWNlOm5vcm1hbDt0ZXh0LWFsaWduOmxlZnQ7bGluZS1oZWlnaHQ6MjBweDtzcGFue2Rpc3BsYXk6LXdlYmtpdC1ib3g7LXdlYmtpdC1saW5lLWNsYW1wOjM7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsO292ZXJmbG93OmhpZGRlbjt3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkO30ifSxhdT0oMCxmLkREKSgpLG91PWU9PmU/OTQ6MTQwO3ZhciBydT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx0PSgwLHIuZDQpKEMuS1opLG49KDAsci5kNCkoQy5peCksaT0oMCxyLmQ0KShDLnhJKSx7aXNOZXdTa2luOm99PSgwLHAuQSkoKSxzPWh0KG8pLGw9KDAsYS51c2VSZWYpKG51bGwpLGQ9KDAsYS51c2VSZWYpKG51bGwpLGM9KDAsYS51c2VSZWYpKG51bGwpLHU9KDAsYS51c2VSZWYpKG51bGwpLGY9KDAsYS51c2VSZWYpKG51bGwpLG09KDAsYS51c2VSZWYpKG51bGwpLGc9KDAsYS51c2VDYWxsYmFjaykoKCk9Pntjb25zdCB0PW91KG4pO2UoKDAsay5vT20pKHR0Lk5PLkRZTkFNSUMse3dpZHRoOjQ1MCxoZWlnaHQ6dH0pKSx1LmN1cnJlbnQ9NDUwLGYuY3VycmVudD10fSxbZSxuXSksYj0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e2lmKCFkLmN1cnJlbnQpcmV0dXJuITE7aWYoYXUpcmV0dXJuIGcoKSwhMDtsZXQgdD0oZT0+ZT85NDoxMTIpKG4pO2NvbnN0IGk9b3Uobik7cmV0dXJuIHQrPSgoKT0+e3RyeXtpZihsLmN1cnJlbnQpe2wuY3VycmVudC5zdHlsZS5jc3NUZXh0PSJ3aWR0aDogYXV0bzsgYWxpZ24tc2VsZjogZmxleC1zdGFydDsgd2hpdGUtc3BhY2U6IG5vd3JhcCI7Y29uc3QgZT1sLmN1cnJlbnQuY2xpZW50V2lkdGg7cmV0dXJuIGwuY3VycmVudC5zdHlsZS5jc3NUZXh0PSIiLGUrMTV9cmV0dXJuIDI1MH1jYXRjaHtyZXR1cm4gMjUwfX0pKCksdS5jdXJyZW50PT09dCYmZi5jdXJyZW50PT09aXx8KG0uY3VycmVudD1kLmN1cnJlbnQ/LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2UoKDAsay5vT20pKHR0Lk5PLkRZTkFNSUMse3dpZHRoOnQsaGVpZ2h0Oml9KSksdS5jdXJyZW50PXR9KSksITB9LFtlLGcsbl0pLHY9KCk9PnttLmN1cnJlbnQmJmQ/LmN1cnJlbnQmJihkLmN1cnJlbnQuY2FuY2VsQW5pbWF0aW9uRnJhbWUobS5jdXJyZW50KSxtLmN1cnJlbnQ9bnVsbCl9OygwLGEudXNlRWZmZWN0KSgoKT0+e2QuY3VycmVudD0oMCxoLkFMKSgpLGMuY3VycmVudD0oMCxoLkdZKSgpLHUuY3VycmVudD1jLmN1cnJlbnQ/LmNsaWVudFdpZHRofHxudWxsLGYuY3VycmVudD1jLmN1cnJlbnQ/LmNsaWVudEhlaWdodHx8bnVsbH0sW10pLCgwLGEudXNlRWZmZWN0KSgoKT0+KHQhPT13LmwuY2xvc2VkP3YoKTpiKCksKCk9PigpPT57digpfSksW2IsdCxpXSksKDAsYS51c2VFZmZlY3QpKCgpPT4oKT0+e3Q9PT13LmwuY2xvc2VkJiZlKCgwLGsub09tKSh0dC5OTy5PTkxZX0JVQkJMRSkpfSxbZSx0XSk7Y29uc3QgeD0oKT0+e2UoKDAsay5wTzYpKGx0Llgud2lkZ2V0TGFiZWxDbGlja2VkKSksZSgoMCxrLk90eikoKSksZSgoMCxrLm5wdykoITApKX07cmV0dXJuKDAsVi5ZKShPbix7dmFsdWU6WyJjaGF0V2l0aFVzTGFiZWwiXSxjaGlsZHJlbjplPT57bGV0e2NoYXRXaXRoVXNMYWJlbDp0fT1lO2NvbnN0IG49aXx8dDtpZigwPT09bi5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgYT1pJiZvP2k6KChlLHQpPT57bGV0IG49ZTtjb25zdCBpPVsuLi5uXSxhPW4ubGVuZ3RoPnQ7Zm9yKDtuLmxlbmd0aD50OylpLnBvcCgpLG49aS5qb2luKCIiKTtyZXR1cm4gYT9gJHtufSZoZWxsaXA7YDpufSkobiwyNSk7cmV0dXJuKDAsVi5ZKSgiYnV0dG9uIix7Y2xhc3NOYW1lOiJ3aWRnZXRMYWJlbCIscmVmOmwsb25DbGljazp4LHR5cGU6ImJ1dHRvbiIsY3NzOltudSxvJiZpJiZpdSxzLnRleHQxNiwiIiwiIl0sY2hpbGRyZW46KDAsVi5ZKSgic3BhbiIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6Rm4oYSl9fSl9KX19KX07Y29uc3Qgc3U9ZT0+e2NvbnN0IHQ9KDAsci5kNCkoQy5LWiksW24saV09KDAsYS51c2VTdGF0ZSkodCE9PXcubC5jbG9zZWQpO3JldHVybiBlLmNoaWxkcmVuKHtoYXNBbmltYXRpb25FbmRlZDpuLG9uQW5pbWF0aW9uRW5kZWQ6KCk9PntpKGU9PiFlKX19KX07c3UucHJvcFR5cGVzPXtjaGlsZHJlbjpHKCkuZnVuYy5pc1JlcXVpcmVkfTt2YXIgbHU9c3U7dmFyIGR1PSgpPT57Y29uc3QgZT0oMCxyLmQ0KShDLktaKSx0PSgwLHIuZDQpKEMuengpLG49Qm9vbGVhbigoMCxZaS5seikoKS5zdGF0ZSksaT1lIT09dy5sLmNsb3NlZDtyZXR1cm4oMCxWLlkpKGx1LHtjaGlsZHJlbjphPT57bGV0e2hhc0FuaW1hdGlvbkVuZGVkOm8sb25BbmltYXRpb25FbmRlZDpyfT1hO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKCQse2luOmU9PT13LmwuZmx5LGNsYXNzTmFtZXM6Im1vdmVGcm9tUmlnaHQiLG9uRXhpdGVkOmU9PT13LmwuY2xvc2VkP3I6dm9pZCAwLHRpbWVvdXQ6MzAwLGNoaWxkcmVuOigwLFYuWSkoV2Mse30pfSksKDAsVi5ZKSgkLHtpbjppJiZlIT09dy5sLmZseSYmbyxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0IixvbkV4aXRlZDpyLHRpbWVvdXQ6NDAwLGNoaWxkcmVuOigwLFYuWSkoTmMse30pfSksdCYmKDAsVi5ZKSgkLHtpbjohaSYmZSE9PXcubC5mbHkmJiFvLGNsYXNzTmFtZXM6Im1vdmVGcm9tTGVmdExhYmVsIix0aW1lb3V0OjMwMCxjaGlsZHJlbjooMCxWLlkpKHJ1LHt9KX0pLCgwLFYuWSkoJCx7aW46IWkmJiFvLGNsYXNzTmFtZXM6ImJ1YmJsZUFuaW1hdGlvblJldHVybiIsdGltZW91dDozMDAsb25FeGl0ZWQ6cixjaGlsZHJlbjooMCxWLlkpKHR1LHt9KX0pLCgwLFYuWSkoJCx7aW46aSYmbyYmIShlPT09dy5sLmNoYXQmJm4pLGNsYXNzTmFtZXM6ImJ1YmJsZUFuaW1hdGlvbiIsdGltZW91dDozMDAsb25FeGl0ZWQ6ZT09PXcubC5mbHk/cjp2b2lkIDAsY2hpbGRyZW46KDAsVi5ZKSh0dSx7fSl9KV19KX19KX07Y29uc3QgY3U9KCk9Pnt9O3ZhciB1dT0oKT0+e2NvbnN0IGU9KDAsci5kNCkoQy5LWiksdD0oMCxyLmQ0KShlPT5lLmlzTW9iaWxlKSxuPSgwLHIuZDQpKEMuengpLGk9Qm9vbGVhbigoMCxZaS5seikoKS5zdGF0ZSksYT1lIT09dy5sLmNsb3NlZDtyZXR1cm4gdD8oMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgkLHtpbjplPT09dy5sLmZseSxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0Iix0aW1lb3V0OjMwMCxjaGlsZHJlbjooMCxWLlkpKFdjLHt9KX0pLCgwLFYuWSkoJCx7aW46YSYmZSE9PXcubC5mbHksY2xhc3NOYW1lczoibW92ZUZyb21SaWdodCIsdGltZW91dDozMDAsY2hpbGRyZW46KDAsVi5ZKShOYyx7fSl9KSwoMCxWLlkpKCQse2luOiEoZT09PXcubC5jaGF0JiZpKSxjbGFzc05hbWVzOiJidWJibGVBbmltYXRpb24iLGNoaWxkcmVuOigwLFYuWSkodHUse30pfSldfSk6KDAsVi5ZKShsdSx7Y2hpbGRyZW46dD0+e2xldHtoYXNBbmltYXRpb25FbmRlZDpvLG9uQW5pbWF0aW9uRW5kZWQ6cn09dDtyZXR1cm4oMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgkLHtpbjplPT09dy5sLmZseSxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0Iix0aW1lb3V0OjMwMCxvbkV4aXRlZDplPT09dy5sLmNsb3NlZD9yOmN1LGNoaWxkcmVuOigwLFYuWSkoV2Mse30pfSksKDAsVi5ZKSgkLHtpbjphJiZlIT09dy5sLmZseSxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0Iix0aW1lb3V0OjMwMCxvbkV4aXRlZDpyLGNoaWxkcmVuOigwLFYuWSkoTmMse30pfSksbiYmKDAsVi5ZKSgkLHtpbjohYSYmZSE9PXcubC5mbHkmJm8sY2xhc3NOYW1lczoibW92ZUZyb21SaWdodExhYmVsIixvbkV4aXRlZDpyLHRpbWVvdXQ6MzAwLGNoaWxkcmVuOigwLFYuWSkocnUse30pfSksKDAsVi5ZKSgkLHtpbjohKGU9PT13LmwuY2hhdCYmaSksY2xhc3NOYW1lczoiYnViYmxlQW5pbWF0aW9uIixvbkVudGVyZWQ6cixjaGlsZHJlbjooMCxWLlkpKHR1LHt9KX0pXX0pfX0pfTtjb25zdCBwdT0oKT0+e2NvbnN0IGU9KDAsci5kNCkoQy5LWiksdD0oMCxyLmQ0KShDLnNTKSxuPUJvb2xlYW4oKDAsWWkubHopKCkuc3RhdGUpLGk9ZSE9PXcubC5jbG9zZWQ7cmV0dXJuKDAsVi5ZKShsdSx7Y2hpbGRyZW46YT0+e2xldHtoYXNBbmltYXRpb25FbmRlZDpvLG9uQW5pbWF0aW9uRW5kZWQ6cn09YTtyZXR1cm4oMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgkLHtpbjplPT09dy5sLmZseSYmbyxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0Iix0aW1lb3V0OjMwMCxvbkV4aXRlZDplPT09dy5sLmNsb3NlZHx8ZT09PXcubC5mbHk/cjp2b2lkIDAsY2hpbGRyZW46KDAsVi5ZKShXYyx7fSl9KSwoMCxWLlkpKCQse2luOmkmJmUhPT13LmwuZmx5JiZvLGNsYXNzTmFtZXM6Im1vdmVGcm9tUmlnaHQiLHRpbWVvdXQ6MzAwLG9uRXhpdGVkOnIsY2hpbGRyZW46KDAsVi5ZKShOYyx7fSl9KSwoMCxWLlkpKCQse2luOiFpJiYhbyxjbGFzc05hbWVzOiIiKyh0JiYibGVmdCI9PT10PyJidWJibGVBbmltYXRpb25MZWZ0IjoiYnViYmxlQW5pbWF0aW9uIiksdGltZW91dDozMDAsb25FeGl0ZWQ6cixjaGlsZHJlbjooMCxWLlkpKHR1LHtpc1NpZGViYXJDb21wb25lbnQ6ITB9KX0pLCgwLFYuWSkoJCx7aW46aSYmbyYmIShlPT09dy5sLmNoYXQmJm4pLHRpbWVvdXQ6MzAwLGNsYXNzTmFtZXM6ImJ1YmJsZUFuaW1hdGlvbiIsY2hpbGRyZW46KDAsVi5ZKSh0dSx7fSl9KV19KX19KX07cHUuZGVmYXVsdFByb3BzPXtzaWRlYmFyUG9zaXRpb246InJpZ2h0In07dmFyIGZ1PXB1O3ZhciBtdT0oMCxyLk5nKShlPT4oe3ZpZXc6KDAsQy5LWikoZSksaXNNb2JpbGU6ZS5pc01vYmlsZX0pKShlPT57aWYoImxlZnQiPT09ZS53aWRnZXRQb3NpdGlvbiYmZS5pc01vYmlsZSl7Y29uc3QgdD1lLnZpZXchPT13LmwuY2xvc2VkO3JldHVybigwLFYuWSkobHUse2NoaWxkcmVuOm49PntsZXR7aGFzQW5pbWF0aW9uRW5kZWQ6aSxvbkFuaW1hdGlvbkVuZGVkOmF9PW47cmV0dXJuKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoJCx7aW46ZS52aWV3PT09dy5sLmZseSxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0IixvbkV4aXRlZDplLnZpZXc9PT13LmwuY2xvc2VkP2E6dm9pZCAwLHRpbWVvdXQ6MzAwLGNoaWxkcmVuOigwLFYuWSkoV2Mse30pfSksKDAsVi5ZKSgkLHtpbjp0JiZlLnZpZXchPT13LmwuZmx5JiZpLGNsYXNzTmFtZXM6Im1vdmVGcm9tUmlnaHQiLG9uRXhpdGVkOmEsdGltZW91dDo0MDAsY2hpbGRyZW46KDAsVi5ZKShOYyx7fSl9KSwoMCxWLlkpKCQse2luOiF0JiYhaSxjbGFzc05hbWVzOiJidWJibGVBbmltYXRpb25SZXR1cm4iLHRpbWVvdXQ6MzAwLG9uRXhpdGVkOmEsY2hpbGRyZW46KDAsVi5ZKSh0dSx7fSl9KSwoMCxWLlkpKCQse2luOnQmJmksY2xhc3NOYW1lczoiYnViYmxlQW5pbWF0aW9uIix0aW1lb3V0OjMwMCxvbkV4aXRlZDplLnZpZXc9PT13LmwuZmx5P2E6dm9pZCAwLGNoaWxkcmVuOigwLFYuWSkodHUse30pfSldfSl9fSl9cmV0dXJuKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoJCx7aW46ZS52aWV3PT09dy5sLmZseSxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0Iix0aW1lb3V0OjMwMCxjaGlsZHJlbjooMCxWLlkpKFdjLHt9KX0pLCgwLFYuWSkoJCx7aW46ZS52aWV3IT09dy5sLmNsb3NlZCYmZS52aWV3IT09dy5sLmZseSxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0Iix0aW1lb3V0OjMwMCxjaGlsZHJlbjooMCxWLlkpKE5jLHt9KX0pLCgwLFYuWSkoJCx7aW46ITAsY2xhc3NOYW1lczoiYnViYmxlQW5pbWF0aW9uIixjaGlsZHJlbjooMCxWLlkpKHR1LHt9KX0pXX0pfSk7dmFyIGh1PSgpPT57Y29uc3QgZT0oMCxhLnVzZVJlZikoIiIpLHQ9KDAsci5kNCkoZT0+ZS51bnJlYWRNZXNzYWdlcyksbj0oMCxyLmQ0KShlPT5lLmlzUGFnZVZpc2libGUpLGk9KDAsYS51c2VSZWYpKG51bGwpLG89KDAsYS51c2VSZWYpKCExKSxbc109KDAsYS51c2VTdGF0ZSkoKCk9PlJlZ0V4cChgXFwoWzAtOV0rXFwpICR7KDAseS5wdykoIm5ld01lc3NhZ2VUaXRsZSIsbnVsbCwiTmV3IG1lc3NhZ2UiKX0kYCkpO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+e3RyeXtlLmN1cnJlbnQ9d2luZG93LnBhcmVudC5kb2N1bWVudC50aXRsZX1jYXRjaHtvLmN1cnJlbnQ9ITB9fSxbXSksKDAsYS51c2VFZmZlY3QpKCgpPT57aWYoIW8uY3VycmVudCl7aS5jdXJyZW50JiYoY2xlYXJJbnRlcnZhbChpLmN1cnJlbnQpLGkuY3VycmVudD1udWxsKTt0cnl7IW4mJnQ/aS5jdXJyZW50PXNldEludGVydmFsKCgpPT57ZS5jdXJyZW50PT09d2luZG93LnBhcmVudC5kb2N1bWVudC50aXRsZXx8cy50ZXN0KHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGl0bGUpfHwoZS5jdXJyZW50PXdpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGl0bGUpLHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGl0bGU9PT1lLmN1cnJlbnQ/d2luZG93LnBhcmVudC5kb2N1bWVudC50aXRsZT1gKCR7dH0pICR7KDAseS5wdykoIm5ld01lc3NhZ2VUaXRsZSIsbnVsbCwiTmV3IG1lc3NhZ2UiKX1gOndpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGl0bGU9ZS5jdXJyZW50fSwxZTMpOnMudGVzdCh3aW5kb3cucGFyZW50LmRvY3VtZW50LnRpdGxlKSYmKHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGl0bGU9ZS5jdXJyZW50KX1jYXRjaHt9cmV0dXJuKCk9PntpZighby5jdXJyZW50KXtpLmN1cnJlbnQmJihjbGVhckludGVydmFsKGkuY3VycmVudCksaS5jdXJyZW50PW51bGwpO3RyeXtzLnRlc3Qod2luZG93LnBhcmVudC5kb2N1bWVudC50aXRsZSkmJih3aW5kb3cucGFyZW50LmRvY3VtZW50LnRpdGxlPWUuY3VycmVudCl9Y2F0Y2h7fX19fX0sW24sdCxzXSksbnVsbH07Y2xhc3MgZ3UgZXh0ZW5kcyBhLkNvbXBvbmVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksKDAsaS5BKSh0aGlzLCJvbldpbmRvd1Zpc2liaWxpdHlDaGFuZ2UiLCgpPT57dGhpcy5zZXRWaXNpYmlsaXR5U3RhdGUoKX0pLCgwLGkuQSkodGhpcywiYXBwQXZhcmlhbnQiLCgpPT50aGlzLnByb3BzLmlzQ2hhdE9uU2l0ZT8oMCxWLlkpKG11LHt3aWRnZXRQb3NpdGlvbjp0aGlzLnByb3BzLndpZGdldFBvc2l0aW9ufSk6dGhpcy5wcm9wcy5pc1NpZGViYXJFbmFibGVkPygwLFYuWSkoZnUse30pOiJsZWZ0Ij09PXRoaXMucHJvcHMud2lkZ2V0UG9zaXRpb24/KDAsVi5ZKShkdSx7fSk6KDAsVi5ZKSh1dSx7fSkpfWNvbXBvbmVudERpZE1vdW50KCl7dHJ5e3dpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLm9uV2luZG93VmlzaWJpbGl0eUNoYW5nZSksdGhpcy5zZXRWaXNpYmlsaXR5U3RhdGUoKX1jYXRjaChlKXsoMCx2LnNRKShlKX13aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJzZXRTdGF0dXMiLHRoaXMucHJvcHMuaXNQcm9qZWN0T25saW5lPyJvbmxpbmUiOiJvZmZsaW5lIil9Y29tcG9uZW50RGlkVXBkYXRlKGUpe2Uud2lkZ2V0UG9zaXRpb24hPT10aGlzLnByb3BzLndpZGdldFBvc2l0aW9uJiZ0aGlzLnByb3BzLnNldFdpZGdldFBvc2l0aW9uKHRoaXMucHJvcHMud2lkZ2V0UG9zaXRpb24pfWNvbXBvbmVudFdpbGxVbm1vdW50KCl7d2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHRoaXMub25XaW5kb3dWaXNpYmlsaXR5Q2hhbmdlKX1zZXRWaXNpYmlsaXR5U3RhdGUoKXtjb25zdHt2aXNpYmlsaXR5U3RhdGU6ZX09ZG9jdW1lbnQ7cmV0dXJuInZpc2libGUiIT09ZT8odGhpcy5wcm9wcy5kaXNwYXRjaCgoMCxrLnBIdSkoITEpKSwhMSk6KHRoaXMucHJvcHMuZGlzcGF0Y2goKDAsay5wSHUpKCEwKSksITApfXJlbmRlcigpe3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlshdGhpcy5wcm9wcy5pc1NvdW5kRW5hYmxlZCYmKDAsVi5ZKShodSx7fSksKDAsVi5ZKShZaS5BeSx7Y2hpbGRyZW46dGhpcy5hcHBBdmFyaWFudCgpfSldfSl9fXZhciBidT0oMCxyLk5nKShlPT4oe3dpZGdldFBvc2l0aW9uOmUuY2hhdElmcmFtZVN0eWxlcy53aWRnZXRQb3NpdGlvbixpc1NpZGViYXJFbmFibGVkOmUuc2lkZWJhcklmcmFtZVN0eWxlcyxpc0NoYXRPblNpdGU6KDAsQy5UdykoZSksaXNQcm9qZWN0T25saW5lOmUuaXNQcm9qZWN0T25saW5lLGlzU291bmRFbmFibGVkOmUuaXNTb3VuZEVuYWJsZWR9KSkoZ3UpO2NvbnN0IHZ1PWEubGF6eSgoKT0+bi5lKDc0MikudGhlbihuLmJpbmQobiw1MDczKSkpO3ZhciB4dT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx0PSgwLHIuZDQpKEMuSkkpO3JldHVybiB0PygwLFYuWSkoby5BeSx7dGl0bGU6IlRpZGlvIENoYXQgLSBJZnJhbWUgTW9kYWwiLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixwb3NpdGlvbjoiZml4ZWQiLHRvcDoiMCIsbGVmdDoiMCIsekluZGV4OjIxNDc0ODMwMDIsYm9yZGVyOjB9LC4uLmYud2gsY2hpbGRyZW46KDAsVi5ZKShEaSx7b25EaWRDYXRjaDooKT0+e2UoKDAsay5RVCQpKG51bGwpKX0sY2hpbGRyZW46KDAsVi5ZKShhLlN1c3BlbnNlLHtmYWxsYmFjazpudWxsLGNoaWxkcmVuOigwLFYuWSkodnUse3VybDp0fSl9KX0pfSk6bnVsbH07Y29uc3QgeXU9YS5sYXp5KCgpPT5uLmUoNzQyKS50aGVuKG4uYmluZChuLDE0NzcpKSksd3U9KCk9PigwLFYuWSkoImRpdiIse30pO3ZhciBrdT1lPT57bGV0e3NoYWRvd1Jvb3Q6dH09ZTtjb25zdCBuPSgwLHIud0EpKCksaT0oMCxyLmQ0KShlPT5lLmlmcmFtZU1vZGFsVXJsKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGkmJiIiIT09aSYmdD8oMCxGLmNyZWF0ZVBvcnRhbCkoKDAsVi5ZKShEaSx7b25EaWRDYXRjaDooKT0+e24oKDAsay5RVCQpKG51bGwpKX0sY2hpbGRyZW46KDAsVi5ZKShhLlN1c3BlbnNlLHtmYWxsYmFjazooMCxWLlkpKHd1LHt9KSxjaGlsZHJlbjooMCxWLlkpKHl1LHt1cmw6aSxzaGFkb3dSb290OnR9KX0pfSksdCk6bnVsbH07Y29uc3QgQXU9YS5sYXp5KCgpPT5uLmUoNTY2KS50aGVuKG4uYmluZChuLDQxOTYpKSksQ3U9KCk9PigwLFYuWSkoImRpdiIse30pO3ZhciBFdT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx0PSgwLHIuZDQpKGU9PmUucG9wdXBJbWFnZVNyYyk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYiIiE9PXQ/KDAsVi5ZKShvLkF5LHt0aXRsZToiVGlkaW8gQ2hhdCAtIEltYWdlIFBvcHVwIixzdHlsZTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIscG9zaXRpb246ImZpeGVkIix0b3A6IjAiLGxlZnQ6IjAiLHpJbmRleDoyMTQ3NDgzMDAzLGJvcmRlcjowfSxpZDoidGlkaW8tY2hhdC1pbWFnZS1wb3B1cCIsLi4uZi53aCxjaGlsZHJlbjooMCxWLlkpKERpLHtvbkRpZENhdGNoOigpPT57ZSgoMCxrLnlybikoKSl9LGNoaWxkcmVuOigwLFYuWSkoYS5TdXNwZW5zZSx7ZmFsbGJhY2s6KDAsVi5ZKShDdSx7fSksY2hpbGRyZW46KDAsVi5ZKShBdSx7aW1hZ2VTcmM6dH0pfSl9KX0pOm51bGx9O2NvbnN0IFN1PWEubGF6eSgoKT0+bi5lKDU2NikudGhlbihuLmJpbmQobiw5NDQpKSksRHU9KCk9PigwLFYuWSkoImRpdiIse30pO3ZhciBZdT1lPT57bGV0e3NoYWRvd1Jvb3Q6dH09ZTtjb25zdCBuPSgwLHIud0EpKCksaT0oMCxyLmQ0KShlPT5lLnBvcHVwSW1hZ2VTcmMpO3JldHVybiJzdHJpbmciPT10eXBlb2YgaSYmIiIhPT1pJiZ0PygwLEYuY3JlYXRlUG9ydGFsKSgoMCxWLlkpKERpLHtvbkRpZENhdGNoOigpPT57bigoMCxrLnlybikoKSl9LGNoaWxkcmVuOigwLFYuWSkoYS5TdXNwZW5zZSx7ZmFsbGJhY2s6KDAsVi5ZKShEdSx7fSksY2hpbGRyZW46KDAsVi5ZKShTdSx7aW1hZ2VTcmM6aSxzaGFkb3dSb290OnR9KX0pfSksdCk6bnVsbH0sVHU9big0NDMwKTtjb25zdCBGdT0oKT0+e2NvbnN0IGU9KDAsYS51c2VSZWYpKCExKSx0PSgwLGEudXNlUmVmKShudWxsKSxuPSgwLHIud0EpKCksaT0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e2xldCBlPW51bGw7cmV0dXJuIHQuY3VycmVudCYmKGU9dC5jdXJyZW50LHQuY3VycmVudD1udWxsKSxlfSxbXSksbz0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+eygwLGYub04pKCgpPT57c2V0VGltZW91dCgoKT0+e3RyeXtjb25zdHtocmVmOmV9PXdpbmRvdy5wYXJlbnQubG9jYXRpb247ZS5pbmNsdWRlcyhUdS5kJCk/bigoMCxrLm5wdykoITApKTpuKCgwLGsubnB3KSghMSkpfWNhdGNoe319LDApfSl9LFtuXSkscz0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e3RyeXtpZighd2luZG93LnBhcmVudD8uaGlzdG9yeSlyZXR1cm4hMTtjb25zdHtocmVmOm59PXdpbmRvdy5wYXJlbnQubG9jYXRpb247cmV0dXJuKGU9PnshZS5pbmNsdWRlcygiIyIpfHxlLmluY2x1ZGVzKFR1LmQkKXx8ZS5pbmNsdWRlcyhUdS5LMyl8fGUuaW5jbHVkZXMoVHUud0kpfHwodC5jdXJyZW50PWUpfSkobiksbi5pbmNsdWRlcyhUdS5kJCl8fHdpbmRvdy5wYXJlbnQuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwibW9iaWxlLXdpZGdldCIsVHUuZCQpLGUuY3VycmVudHx8KG8oKSxlLmN1cnJlbnQ9ITApLCEwfWNhdGNoe3JldHVybiExfX0sW29dKTtyZXR1cm4oMCxhLnVzZUVmZmVjdCkoKCk9PihzKCksKCk9PntzZXRUaW1lb3V0KCgpPT57dHJ5e2NvbnN0e2hyZWY6ZX09d2luZG93LnBhcmVudC5sb2NhdGlvbjtpZihlLmluY2x1ZGVzKFR1LmQkKSl7Y29uc3QgdD1pKCl8fGUucmVwbGFjZShUdS5kJCwiIik7d2luZG93LnBhcmVudC5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCIiLHQpfX1jYXRjaHt9fSwwKX0pLFtzLGldKSxudWxsfTt2YXIgSXU9KCk9Pntjb25zdCBlPSgwLHIuZDQpKEMuTnkpLHQ9KDAsci5kNCkoQy5LWiksbj0oMCxyLmQ0KShDLlhMKTtyZXR1cm4gZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHdpbmRvdy5wYXJlbnQ9PT13aW5kb3cudG9wfWNhdGNoe3JldHVybiExfX0oKSYmZSYmdCE9PXcubC5jbG9zZWQmJnQhPT13LmwuZmx5JiZuPygwLFYuWSkoRnUse30pOm51bGx9O2NvbnN0IF91PSgpPT57Y29uc3QgZT0oMCxhLnVzZVJlZikoITEpLHQ9KDAsci53QSkoKSxuPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57KDAsZi5vTikoKCk9PntzZXRUaW1lb3V0KCgpPT57dHJ5e2NvbnN0e2hyZWY6ZX09d2luZG93LnBhcmVudC5sb2NhdGlvbjtlLmluY2x1ZGVzKFR1LkszKT90KCgwLGsubnB3KSghMCkpOmUuaW5jbHVkZXMoVHUud0kpJiZ0KCgwLGsubnB3KSghMSkpfWNhdGNoe319LDApfSl9LFt0XSksaT0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e3RyeXtpZighd2luZG93LnBhcmVudD8ubG9jYXRpb24pcmV0dXJuITE7Y29uc3R7aHJlZjppfT13aW5kb3cucGFyZW50LmxvY2F0aW9uO3JldHVybiBpLmluY2x1ZGVzKFR1LkszKT90KCgwLGsubnB3KSghMCkpOmkuaW5jbHVkZXMoVHUud0kpJiZ0KCgwLGsubnB3KSghMSkpLGUuY3VycmVudHx8KG4oKSxlLmN1cnJlbnQ9ITApLCEwfWNhdGNoe3JldHVybiExfX0sW24sdF0pO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+KGkoKSwoKT0+e2UuY3VycmVudD0hMX0pLFtpXSksbnVsbH07dmFyIE11PSgpPT5mdW5jdGlvbigpe3RyeXtyZXR1cm4gd2luZG93LnBhcmVudD09PXdpbmRvdy50b3B9Y2F0Y2h7cmV0dXJuITF9fSgpPygwLFYuWSkoX3Use30pOm51bGw7dmFyIE51PSgpPT4oMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKShJdSx7fSksKDAsVi5ZKShNdSx7fSldfSk7dmFyIE91PXtuYW1lOiJiYWdlb3ciLHN0eWxlczoiLmF3ZXNvbWUtaWZyYW1ley5vbmx5QnViYmxlLC5idWJibGVXaXRoTGFiZWx7I2J1dHRvbntoZWlnaHQ6OTRweDt3aWR0aDo5NHB4O2JvdHRvbTowO319LndpZGdldC1wb3NpdGlvbi1sZWZ0ey53aWRnZXRMYWJlbHsvKiEgQG5vZmxpcCAqL2xlZnQ6MTAwcHg7fSYuYnViYmxlV2l0aExhYmVsIC53aWRnZXRMYWJlbHsvKiEgQG5vZmxpcCAqL2xlZnQ6OTFweDt9fS53aWRnZXQtcG9zaXRpb24tcmlnaHR7LndpZGdldExhYmVsey8qISBAbm9mbGlwICovcmlnaHQ6MTAwcHg7fSYuYnViYmxlV2l0aExhYmVsIC53aWRnZXRMYWJlbHsvKiEgQG5vZmxpcCAqL3JpZ2h0OjkxcHg7fX0uYnViYmxlV2l0aExhYmVsIC53aWRnZXRMYWJlbHtib3R0b206MjZweDt9LndpZGdldExhYmVse2JvdHRvbTo2MXB4O3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eTt9Ji5tb2JpbGV7LmNoYXQrLmNoYXQtY2xvc2Vke2JvdHRvbTowIWltcG9ydGFudDt9LmZseU1lc3NhZ2UrLmNoYXQtY2xvc2Vke2JvdHRvbTowIWltcG9ydGFudDt9fVtjbGFzcyo9J2NoYXRTaXplJ10gLmNoYXQtY2xvc2VkICNkbmQtaW5kaWNhdG9ye3RyYW5zaXRpb246bm9uZTt9Lm9ubHlCdWJibGUsLmJ1YmJsZVdpdGhMYWJlbHsjbmV3LW1lc3NhZ2UsI2RuZC1pbmRpY2F0b3J7dG9wOjE0cHg7cmlnaHQ6MTRweDt0cmFuc2l0aW9uOm5vbmU7fSNuZXctbWVzc2FnZSsjZG5kLWluZGljYXRvcntyaWdodDozcHg7fX0ub25seUJ1YmJsZUxhcmdleyNuZXctbWVzc2FnZSwjZG5kLWluZGljYXRvcnt0b3A6MTRweDtyaWdodDoyMHB4O3RyYW5zaXRpb246bm9uZTt9I25ldy1tZXNzYWdlKyNkbmQtaW5kaWNhdG9ye3JpZ2h0OjEwcHg7fX0ub25seUJ1YmJsZU1lZGl1bXsjbmV3LW1lc3NhZ2UsI2RuZC1pbmRpY2F0b3J7dG9wOjdweDt0cmFuc2l0aW9uOm5vbmU7fX0ub25seUJ1YmJsZVNtYWxseyNuZXctbWVzc2FnZSwjZG5kLWluZGljYXRvcnt0b3A6LTNweDt0cmFuc2l0aW9uOm5vbmU7cmlnaHQ6M3B4O30jbmV3LW1lc3NhZ2UrI2RuZC1pbmRpY2F0b3J7cmlnaHQ6LTdweDt9fS5vbmx5QnViYmxlU21hbGwsLm9ubHlCdWJibGVNZWRpdW0sLm9ubHlCdWJibGVMYXJnZXsjYnV0dG9ue3RyYW5zaXRpb246bm9uZTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKTt9fS5vbmx5QnViYmxlU21hbGwgI2J1dHRvbnt3aWR0aDo2MHB4O2hlaWdodDo2MHB4O30ub25seUJ1YmJsZU1lZGl1bSAjYnV0dG9ue3dpZHRoOjgwcHg7aGVpZ2h0OjgwcHg7fS5vbmx5QnViYmxlTGFyZ2UgI2J1dHRvbnt3aWR0aDo5NHB4O2hlaWdodDo5NHB4O319In07dmFyIFJ1PXtuYW1lOiIxbXVlYjNwIixzdHlsZXM6Imh0bWwsOmhvc3R7Ym94LXNpemluZzpib3JkZXItYm94IWltcG9ydGFudDtjb2xvci1zY2hlbWU6bGlnaHQ7fSosKjpiZWZvcmUsKjphZnRlcntib3gtc2l6aW5nOmluaGVyaXQ7fWlucHV0OjpwbGFjZWhvbGRlcix0ZXh0YXJlYTo6cGxhY2Vob2xkZXJ7Y29sb3I6Izg4OTRhYjtvcGFjaXR5OjE7fWlucHV0OmZvY3VzLGlucHV0OmFjdGl2ZSx0ZXh0YXJlYTpmb2N1cyx0ZXh0YXJlYTphY3RpdmUsc2VsZWN0OmZvY3VzLHNlbGVjdDphY3RpdmV7Ym9yZGVyOjA7b3V0bGluZTowO310YWJsZXtib3JkZXItc3BhY2luZzowO31pe3VzZXItc2VsZWN0Om5vbmU7fXVse2xpc3Qtc3R5bGUtdHlwZTpub25lO31we21hcmdpbjowO30uZW1vaml7d2lkdGg6MjBweDttYXJnaW46MCAycHggLTVweCAycHg7dXNlci1zZWxlY3Q6bm9uZTt9LmxhbmctcnRsey8qISBAbm9mbGlwICovZGlyZWN0aW9uOnJ0bDt1bmljb2RlLWJpZGk6ZW1iZWQ7fS53aWRnZXQtcG9zaXRpb24tbGVmdHsuY2hhdHtyaWdodDoyNnB4O2xlZnQ6YXV0bzsubW9iaWxlICZ7LyohIEBub2ZsaXAgKi9yaWdodDowO319I2J1dHRvbnsmOm5vdCguc2lkZWJhcil7LyohIEBub2ZsaXAgKi9sZWZ0OjBweDsvKiEgQG5vZmxpcCAqL3JpZ2h0OmF1dG87fSYuYnViYmxlQW5pbWF0aW9uLWV4aXR7cmlnaHQ6MHB4O2xlZnQ6YXV0bzt9Ji5jaGF0LW9wZW57cmlnaHQ6MHB4O2xlZnQ6YXV0bzsubW9iaWxlICZ7cmlnaHQ6MHB4O2xlZnQ6YXV0bzt9fX19LmxhbmctcnRsIC5kaXJlY3Rpb25hbC1pY29ue3RyYW5zZm9ybTpzY2FsZVgoLTEpO31AbWVkaWEgcHJpbnR7LmZyYW1lLWNvbnRlbnR7ZGlzcGxheTpub25lIWltcG9ydGFudDt9fS5ncmlkLWxheW91dHttYXgtd2lkdGg6MzcycHg7bWFyZ2luOjI0cHggMjRweCA1MnB4IDI0cHg7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGU6J2NvbnRlbnQnIDFmciAnYnViYmxlJyBhdXRvO2dhcDoxMnB4OyYud2lkZ2V0LXBvc2l0aW9uLXJpZ2h0e3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjAgMCAwIGF1dG87fSYuc2lkZWJhci1wb3NpdGlvbi1yaWdodDpoYXMoLnNpZGViYXIpe3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjAgMCAwIGF1dG87fSYud2lkZ2V0LXBvc2l0aW9uLWxlZnR7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MCBhdXRvIDAgMDt9Ji5zaWRlYmFyLXBvc2l0aW9uLWxlZnQ6aGFzKC5zaWRlYmFyKXtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowIGF1dG8gMCAwO30mLm1vYmlsZS5jaGF0LW9uLXNpdGV7cG9zaXRpb246Zml4ZWQ7fSY6bm90KC5tb2JpbGUpLmNoYXQtb24tc2l0ZXtpbnNldDowO21hcmdpbjoyMHB4IGF1dG87fSY+Kntwb2ludGVyLWV2ZW50czphdXRvO30mLm1vYmlsZXttYXJnaW46MTRweDt9JjpoYXMoLnNpZGViYXIpe21hcmdpbjowO30uZmx5TWVzc2FnZXtncmlkLWFyZWE6Y29udGVudDttaW4td2lkdGg6MjIwcHg7bWF4LXdpZHRoOjMyMHB4O3BhZGRpbmc6MTBweDsubWVzc2FnZS1jb250YWluZXJ7cGFkZGluZzoxMHB4IDEwcHggMXB4O21heC13aWR0aDozMjBweDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxOHB4OzphZnRlcntkaXNwbGF5Om5vbmU7fSYuaW1hZ2UtY29udGVudHttYXJnaW46LTEwcHggLTEwcHggMDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLXJhZGl1cy1zdXJmYWNlKTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1yYWRpdXMtc3VyZmFjZSk7cGFkZGluZzowO3dpZHRoOjMyMHB4O21heC13aWR0aDpjYWxjKDEwMCUgKyAyMHB4KTtzcGFue21hcmdpbi10b3A6MjBweDtwYWRkaW5nLWlubGluZToyMHB4O30uaW1hZ2UtcHJldmlld3tib3JkZXItcmFkaXVzOjA7fX19LmlucHV0LWdyb3Vwe3BhZGRpbmc6MjBweCAxMHB4IDEwcHg7Ym9yZGVyOm5vbmU7ZGlzcGxheTpmbGV4Oy5mbHktbmV3LW1lc3NhZ2UtYnV0dG9ue3BhZGRpbmc6MTJweCAxNnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCk7Ym9yZGVyOjFweCBzb2xpZCByZ2IoMjExLCAyMTksIDIyOSk7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MThweDtmbGV4OjE7fX0uYnV0dG9uLXdyYXBwZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiKDIxMSwgMjE5LCAyMjkpO3BhZGRpbmctdG9wOjIwcHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7YnV0dG9uLC5idXR0b24tdXJse2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE4cHg7bWFyZ2luOjA7fWJ1dHRvbi5tb3JlLXJlcGxpZXN7d2lkdGg6MzJweDtoZWlnaHQ6MThweDtwYWRkaW5nOjA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLXNlbGY6ZmxleC1zdGFydDt9fX0uY2hhdHtncmlkLWFyZWE6Y29udGVudDtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDphdXRvIDAgMDtqdXN0aWZ5LXNlbGY6Y2VudGVyO2FsaWduLXNlbGY6ZW5kO21heC1oZWlnaHQ6MTAwJTsubW9iaWxlJntwb3NpdGlvbjpmaXhlZDt9fSY6bm90KC5tb2JpbGUpLmNoYXQtb24tc2l0ZXsuY2hhdHthbGlnbi1zZWxmOmNlbnRlcjtpbnNldDphdXRvIDA7fX0jYnV0dG9uOm5vdCguc2lkZWJhcil7Z3JpZC1hcmVhOmJ1YmJsZTtwb3NpdGlvbjpyZWxhdGl2ZTtpbnNldDowO3dpZHRoOmF1dG87aGVpZ2h0OmF1dG87anVzdGlmeS1zZWxmOnJpZ2h0O3RyYW5zZm9ybS1vcmlnaW46Ym90dG9tIHJpZ2h0Oy53aWRnZXQtcG9zaXRpb24tbGVmdCZ7anVzdGlmeS1zZWxmOmxlZnQ7fS5tb2JpbGUgJnt0cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm0tb3JpZ2luOmJvdHRvbSByaWdodDt9Lm1vYmlsZSAud2lkZ2V0LXBvc2l0aW9uLWxlZnQme3RyYW5zZm9ybS1vcmlnaW46Ym90dG9tIGxlZnQ7fX0ud2lkZ2V0TGFiZWx7Z3JpZC1hcmVhOmJ1YmJsZTtqdXN0aWZ5LXNlbGY6cmlnaHQ7Ym90dG9tOmluaXRpYWw7YWxpZ24tc2VsZjpjZW50ZXI7cmlnaHQ6NjhweCFpbXBvcnRhbnQ7LndpZGdldC1wb3NpdGlvbi1sZWZ0JntqdXN0aWZ5LXNlbGY6bGVmdDtyaWdodDppbml0aWFsIWltcG9ydGFudDtsZWZ0OjY4cHghaW1wb3J0YW50O319I25ldy1tZXNzYWdlLCNkbmQtaW5kaWNhdG9ye3RvcDotNHB4O3JpZ2h0Oi00cHg7fSNidXR0b257I25ldy1tZXNzYWdlOm5vdCg6bGFzdC1jaGlsZCl7cmlnaHQ6NHB4O30jbmV3LW1lc3NhZ2UrI2RuZC1pbmRpY2F0b3I6bGFzdC1jaGlsZHtyaWdodDotOHB4O319LmZseU1lc3NhZ2V7aW5zZXQ6aW5pdGlhbDthbGlnbi1zZWxmOmVuZDtqdXN0aWZ5LXNlbGY6ZW5kO21hcmdpbjowOy53aWRnZXQtcG9zaXRpb24tbGVmdCZ7anVzdGlmeS1zZWxmOnN0YXJ0O319fSJ9O3ZhciBqdT17bmFtZToiMWp2anBwdSIsc3R5bGVzOiJib2R5LCNib2R5LDpob3N0LGlucHV0LHRleHRhcmVhLHNlbGVjdCxidXR0b257Zm9udC1mYW1pbHk6J1RpZGlvSW50ZXInLHNhbnMtc2VyaWY7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7Y29sb3I6IzA4MGYxYTtsZXR0ZXItc3BhY2luZzpub3JtYWw7fSJ9O3ZhciBQdT17bmFtZToiY3ZxanJ3IixzdHlsZXM6IkBrZXlmcmFtZXMgcmlwcGxle2Zyb217YmFja2dyb3VuZDpyZ2JhKDIzOSwgMjQyLCAyNDYsIDApO3RyYW5zZm9ybTpzY2FsZSgwLjUpO301MCV7YmFja2dyb3VuZDpyZ2JhKDIzOSwgMjQyLCAyNDYsIDAuNik7dHJhbnNmb3JtOnNjYWxlKDEpO310b3tiYWNrZ3JvdW5kOnJnYmEoMjM5LCAyNDIsIDI0NiwgMCk7dHJhbnNmb3JtOnNjYWxlKDIpO319Lm1vYmlsZXstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLCAwLCAwLCAwKTsuY2hhdHt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvdHRvbTowO2JhY2tncm91bmQ6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JvcmRlci1yYWRpdXM6MDtyaWdodDowO2xlZnQ6YXV0bzttYXgtaGVpZ2h0Om5vbmU7fS5pbnB1dC1ncm91cHthbGlnbi1zZWxmOmZsZXgtZW5kO3RleHRhcmVhe3BhZGRpbmctcmlnaHQ6NTBweDt9YnV0dG9uLC5idXR0b24tdXJse21hcmdpbi1ib3R0b206MDt9fSNjb252ZXJzYXRpb24tZ3JvdXB7bWF4LWhlaWdodDpub25lO2ZsZXg6MSAxIGF1dG87b3ZlcmZsb3cteTpzY3JvbGw7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7fSNidXR0b257d2lkdGg6ODBweDtoZWlnaHQ6MTAwcHg7Ym90dG9tOjA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC4yczt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTJweCk7LyohIEBub2ZsaXAgKi9yaWdodDowcHg7LyohIEBub2ZsaXAgKi9sZWZ0OmF1dG87Ji5jaGF0LW9wZW57cmlnaHQ6MHB4O2xlZnQ6YXV0bzt9Ji5zaWRlYmFye3dpZHRoOjUwcHg7fSYuY2hhdC1jbG9zZWQ6bm90KC5zaWRlYmFyKXsmLm1vYmlsZS1zaXpleyZfX3NtYWxse3RyYW5zZm9ybTpzY2FsZSgwLjYpO30mX19tZWRpdW17dHJhbnNmb3JtOnNjYWxlKDAuOCk7fX19fSNuZXctbWVzc2FnZXt0b3A6MTdweDtyaWdodDoxM3B4OyYrI2RuZC1pbmRpY2F0b3J7cmlnaHQ6MnB4O30mLmFjdGl2ZXthbmltYXRpb246c2hha2UgMC44MnMgY3ViaWMtYmV6aWVyKDAuMzYsIDAuMDcsIDAuMTksIDAuOTcpIGJvdGg7fX0jZG5kLWluZGljYXRvcnt0b3A6MTdweDtyaWdodDoxM3B4O31idXR0b24ucmlwcGxle3RvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247Jjo6YWZ0ZXJ7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6NTBweDt3aWR0aDowcHg7dG9wOmNhbGMoNTAlIC0gMjVweCk7YmFja2dyb3VuZDpyZ2JhKDIzOSwgMjQyLCAyNDYsIDApO2JvcmRlci1yYWRpdXM6NTAlO3otaW5kZXg6LTE7d2lsbC1jaGFuZ2U6dHJhbnNmb3JtLG9wYWNpdHk7bGVmdDpjYWxjKDUwJSAtIDI1cHgpO30mOm5vdCg6YWN0aXZlKTo6YWZ0ZXJ7YW5pbWF0aW9uOnJpcHBsZSAwLjNzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246d2lkdGggMC4zcyBzdGVwLWVuZDt9JjphY3RpdmU6OmFmdGVye3dpZHRoOjUwcHg7dHJhbnNpdGlvbjp3aWR0aCAwcyBzdGVwLXN0YXJ0O319LndpZGdldC1wb3NpdGlvbi1sZWZ0ICNidXR0b24uY2hhdC1vcGVue3JpZ2h0OjA7bGVmdDphdXRvO30uY2hhdC1oZWFkZXJ7cGFkZGluZzoxMnB4IDE2cHggMTZweDt9fSJ9O3ZhciB6dT17bmFtZToieDRsd284IixzdHlsZXM6ImJvZHksI2JvZHksOmhvc3QsaW5wdXQsdGV4dGFyZWEsc2VsZWN0LGJ1dHRvbntmb250LWZhbWlseTonTXVsaXNoJyxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjI0cHg7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7Y29sb3I6IzA2MTMyYjt9In07dmFyIEx1PXtuYW1lOiIxeGVuNHJlIixzdHlsZXM6Ii5ib3RzTGlzdEZhZGUtZW50ZXJ7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MnB4KTsmLmJvdHNMaXN0RmFkZS1lbnRlci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC02MHB4KTt9fS5ib3RzTGlzdEZhZGUtYXBwZWFye29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTJweCk7Ji5ib3RzTGlzdEZhZGUtYXBwZWFyLWFjdGl2ZXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTYwcHgpO319LmJvdHNMaXN0RmFkZS1leGl0e29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNjBweCk7Ji5ib3RzTGlzdEZhZGUtZXhpdC1hY3RpdmV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MnB4KTt9fS5mYWRlLWVudGVye29wYWNpdHk6MC4wMTsmLmZhZGUtZW50ZXItYWN0aXZle3RyYW5zaXRpb246b3BhY2l0eSAwLjNzO29wYWNpdHk6MTt9fS5mYWRlLWV4aXR7b3BhY2l0eToxO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzOyYuZmFkZS1leGl0LWFjdGl2ZXtvcGFjaXR5OjAuMDE7fX0uZmFkZTIwMC1lbnRlcntvcGFjaXR5OjAuMDE7Ji5mYWRlMjAwLWVudGVyLWFjdGl2ZXt0cmFuc2l0aW9uOm9wYWNpdHkgMC4ycztvcGFjaXR5OjE7fX0uZmFkZTIwMC1leGl0e29wYWNpdHk6MTt0cmFuc2l0aW9uOm9wYWNpdHkgMC4yczsmLmZhZGUyMDAtZXhpdC1hY3RpdmV7b3BhY2l0eTowLjAxO319LmVtb2ppRmFkZS1lbnRlcntvcGFjaXR5OjAuMDE7Ym90dG9tOmNhbGMoMTAwJSAtIDEwcHgpOyYuZW1vamlGYWRlLWVudGVyLWFjdGl2ZXtvcGFjaXR5OjE7Ym90dG9tOjEwMCU7dHJhbnNpdGlvbjphbGwgMC4zczt9fS5lbW9qaUZhZGUtZXhpdHtvcGFjaXR5OjE7Ym90dG9tOjEwMCU7dHJhbnNpdGlvbjphbGwgMC4zczsmLmVtb2ppRmFkZS1leGl0LWFjdGl2ZXtvcGFjaXR5OjAuMDE7Ym90dG9tOmNhbGMoMTAwJSAtIDEwcHgpO319LnNjYWxlLWVudGVye3RyYW5zZm9ybTpzY2FsZSgwLjAxKTtvcGFjaXR5OjA7Ji5zY2FsZS1lbnRlci1hY3RpdmV7dHJhbnNmb3JtOnNjYWxlKDEpO29wYWNpdHk6MTt9fS5zY2FsZS1leGl0e3RyYW5zZm9ybTpzY2FsZSgxKTtvcGFjaXR5OjE7Ji5zY2FsZS1leGl0LWFjdGl2ZXt0cmFuc2Zvcm06c2NhbGUoMC4wMSk7b3BhY2l0eTowO319I2J1dHRvbi5zaWRlYmFye3RyYW5zaXRpb246b3BhY2l0eSAwLjNzLHRyYW5zZm9ybSAwLjNzOyYuYnViYmxlQW5pbWF0aW9uLWFwcGVhcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCg4cHgpO29wYWNpdHk6MC4wMTt9Ji5idWJibGVBbmltYXRpb24tYXBwZWFyLWFjdGl2ZXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTt9Ji5idWJibGVBbmltYXRpb24tZW50ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KTtvcGFjaXR5OjAuMDE7fSYuYnViYmxlQW5pbWF0aW9uLWVudGVyLWFjdGl2ZXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTt9Ji5idWJibGVBbmltYXRpb24tZXhpdHtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTt9Ji5idWJibGVBbmltYXRpb24tZXhpdC1hY3RpdmV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KTtvcGFjaXR5OjAuMDE7fX1bY2xhc3N+PSdzaWRlYmFyLWVuYWJsZWQnXTpub3QoW2NsYXNzfj0nZ3JpZC1sYXlvdXQnXSkgLmNoYXQrI2J1dHRvbjpub3QoLnNpZGViYXIpe29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lO3Zpc2liaWxpdHk6aGlkZGVuO30jYnV0dG9uOm5vdCguc2lkZWJhcil7Ji5idWJibGVBbmltYXRpb24tYXBwZWFye3RyYW5zZm9ybTp0cmFuc2xhdGVYKDhweCk7b3BhY2l0eTowLjAxOyYuYnViYmxlQW5pbWF0aW9uLWFwcGVhci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsdHJhbnNmb3JtIDAuM3M7fX0mLmJ1YmJsZUFuaW1hdGlvbi1lbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCg4cHgpO29wYWNpdHk6MC4wMTsmLmJ1YmJsZUFuaW1hdGlvbi1lbnRlci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7fX0mLmJ1YmJsZUFuaW1hdGlvbi1leGl0e29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpOy5sYW5nLXJ0bCAme2Rpc3BsYXk6bm9uZTt9Ji5idWJibGVBbmltYXRpb24tZXhpdC1hY3RpdmV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KTtvcGFjaXR5OjAuMDE7fX19LndpZGdldC1wb3NpdGlvbi1sZWZ0ICNidXR0b246bm90KC5zaWRlYmFyKXsmLmJ1YmJsZUFuaW1hdGlvbi1hcHBlYXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLThweCk7b3BhY2l0eTowLjAxOyYuYnViYmxlQW5pbWF0aW9uLWFwcGVhci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsdHJhbnNmb3JtIDAuM3M7fX0mLmJ1YmJsZUFuaW1hdGlvbi1lbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtOHB4KTtvcGFjaXR5OjAuMDE7Ji5idWJibGVBbmltYXRpb24tZW50ZXItYWN0aXZle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO319Ji5idWJibGVBbmltYXRpb24tZXhpdHtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTsubGFuZy1ydGwgJntkaXNwbGF5Om5vbmU7fSYuYnViYmxlQW5pbWF0aW9uLWV4aXQtYWN0aXZle3RyYW5zZm9ybTp0cmFuc2xhdGVYKC04cHgpO29wYWNpdHk6MC4wMTt9fS5tb2JpbGUgJnsmLmJ1YmJsZUFuaW1hdGlvbi1leGl0e2Rpc3BsYXk6bm9uZTt9Ji5idWJibGVBbmltYXRpb25SZXR1cm4tZXhpdC1hY3RpdmV7ZGlzcGxheTpub25lO319fS53aWRnZXQtcG9zaXRpb24tbGVmdCAjYnV0dG9uOm5vdCguc2lkZWJhcil7Ji5idWJibGVBbmltYXRpb25SZXR1cm4tYXBwZWFye29wYWNpdHk6MC4wMTsmLmJ1YmJsZUFuaW1hdGlvblJldHVybi1hcHBlYXItYWN0aXZle29wYWNpdHk6MTt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zczt9fSYuYnViYmxlQW5pbWF0aW9uUmV0dXJuLWVudGVye29wYWNpdHk6MC4wMTsmLmJ1YmJsZUFuaW1hdGlvblJldHVybi1lbnRlci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzO319Ji5idWJibGVBbmltYXRpb25SZXR1cm4tZXhpdHtvcGFjaXR5OjE7Ji5idWJibGVBbmltYXRpb25SZXR1cm4tZXhpdC1hY3RpdmV7b3BhY2l0eTowLjAxO319Lm1vYmlsZSAmeyYuYnViYmxlQW5pbWF0aW9uLWV4aXR7ZGlzcGxheTpub25lO30mLmJ1YmJsZUFuaW1hdGlvblJldHVybi1leGl0LWFjdGl2ZXtkaXNwbGF5Om5vbmU7fX19LnNpZGViYXItcG9zaXRpb24tbGVmdCAjYnV0dG9uLnNpZGViYXJ7Ji5idWJibGVBbmltYXRpb25MZWZ0LWV4aXR7b3BhY2l0eToxOy8qISBAbm9mbGlwICovbGVmdDowcHg7fSYuYnViYmxlQW5pbWF0aW9uTGVmdC1leGl0LWFjdGl2ZXsvKiEgQG5vZmxpcCAqL2xlZnQ6LThweDtvcGFjaXR5OjAuMDE7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsbGVmdCAwLjNzO30mLmJ1YmJsZUFuaW1hdGlvbkxlZnQtYXBwZWFyey8qISBAbm9mbGlwICovbGVmdDotOHB4O29wYWNpdHk6MC4wMTt9Ji5idWJibGVBbmltYXRpb25MZWZ0LWFwcGVhci1hY3RpdmV7b3BhY2l0eToxOy8qISBAbm9mbGlwICovbGVmdDowcHg7fSYuYnViYmxlQW5pbWF0aW9uTGVmdC1lbnRlcnsvKiEgQG5vZmxpcCAqL2xlZnQ6LThweDtvcGFjaXR5OjAuMDE7fSYuYnViYmxlQW5pbWF0aW9uTGVmdC1lbnRlci1hY3RpdmV7b3BhY2l0eToxOy8qISBAbm9mbGlwICovbGVmdDowcHg7fX0ubW92ZUZyb21SaWdodC1hcHBlYXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KTtvcGFjaXR5OjAuMDE7Ji5tb3ZlRnJvbVJpZ2h0LWFwcGVhci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsdHJhbnNmb3JtIDAuM3M7fX0ubW92ZUZyb21SaWdodC1lbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCg4cHgpO29wYWNpdHk6MC4wMTsmLm1vdmVGcm9tUmlnaHQtZW50ZXItYWN0aXZle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzLHRyYW5zZm9ybSAwLjNzO319Lm1vdmVGcm9tUmlnaHQtZXhpdHtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyx0cmFuc2Zvcm0gMC4zczsmLm1vdmVGcm9tUmlnaHQtZXhpdC1hY3RpdmV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KTtvcGFjaXR5OjAuMDE7fX0ubW92ZUZyb21SaWdodExhYmVsLWFwcGVhcnsvKiEgQG5vZmxpcCAqL3JpZ2h0OjkycHg7b3BhY2l0eTowLjAxOyYubW92ZUZyb21SaWdodExhYmVsLWFwcGVhci1hY3RpdmV7b3BhY2l0eToxOy8qISBAbm9mbGlwICovcmlnaHQ6MTAwcHg7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MscmlnaHQgMC4zczt9fS5tb3ZlRnJvbVJpZ2h0TGFiZWwtZW50ZXJ7LyohIEBub2ZsaXAgKi9yaWdodDo5MnB4O29wYWNpdHk6MC4wMTsmLm1vdmVGcm9tUmlnaHRMYWJlbC1lbnRlci1hY3RpdmV7b3BhY2l0eToxOy8qISBAbm9mbGlwICovcmlnaHQ6MTAwcHg7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MscmlnaHQgMC4zczt9fS5tb3ZlRnJvbVJpZ2h0TGFiZWwtZXhpdHtvcGFjaXR5OjE7LyohIEBub2ZsaXAgKi9yaWdodDoxMDBweDt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyxyaWdodCAwLjNzOyYubW92ZUZyb21SaWdodExhYmVsLWV4aXQtYWN0aXZley8qISBAbm9mbGlwICovcmlnaHQ6OTJweDtvcGFjaXR5OjAuMDE7fX0ubW92ZUZyb21MZWZ0TGFiZWwtYXBwZWFyey8qISBAbm9mbGlwICovdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLThweCk7b3BhY2l0eTowLjAxOyYubW92ZUZyb21MZWZ0TGFiZWwtYXBwZWFyLWFjdGl2ZXtvcGFjaXR5OjE7LyohIEBub2ZsaXAgKi90cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzLHRyYW5zZm9ybSAwLjNzO319Lm1vdmVGcm9tTGVmdExhYmVsLWVudGVyey8qISBAbm9mbGlwICovdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLThweCk7b3BhY2l0eTowLjAxOyYubW92ZUZyb21MZWZ0TGFiZWwtZW50ZXItYWN0aXZle29wYWNpdHk6MTsvKiEgQG5vZmxpcCAqL3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsdHJhbnNmb3JtIDAuM3M7fX0ubW92ZUZyb21MZWZ0TGFiZWwtZXhpdHtvcGFjaXR5OjE7LyohIEBub2ZsaXAgKi90cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzLHRyYW5zZm9ybSAwLjNzOyYubW92ZUZyb21MZWZ0TGFiZWwtZXhpdC1hY3RpdmV7LyohIEBub2ZsaXAgKi90cmFuc2Zvcm06dHJhbnNsYXRlWCgtOHB4KTtvcGFjaXR5OjAuMDE7fX1ib2R5Om5vdCgubW9iaWxlKSAud2lkZ2V0LXBvc2l0aW9uLWxlZnQgLmNoYXQsI2JvZHk6bm90KC5tb2JpbGUpIC53aWRnZXQtcG9zaXRpb24tbGVmdCAuY2hhdHsmLm1vdmVGcm9tUmlnaHQtYXBwZWFye3RyYW5zZm9ybTp0cmFuc2xhdGVYKDhweCk7b3BhY2l0eTowLjAxOyYubW92ZUZyb21SaWdodC1hcHBlYXItYWN0aXZle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzLHRyYW5zZm9ybSAwLjNzO319Ji5tb3ZlRnJvbVJpZ2h0LWVudGVye3RyYW5zZm9ybTp0cmFuc2xhdGVYKDhweCk7b3BhY2l0eTowLjAxOyYubW92ZUZyb21SaWdodC1lbnRlci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsdHJhbnNmb3JtIDAuM3M7fX0mLm1vdmVGcm9tUmlnaHQtZXhpdHtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyx0cmFuc2Zvcm0gMC4zczsmLm1vdmVGcm9tUmlnaHQtZXhpdC1hY3RpdmV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KTtvcGFjaXR5OjAuMDE7fX19Lm9wZXJhdG9yVHlwaW5nLWVudGVye29wYWNpdHk6MC4wMTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMHB4KTsmLm9wZXJhdG9yVHlwaW5nLWVudGVyLWFjdGl2ZXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwcHgpO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzLHRyYW5zZm9ybSAwLjNzO29wYWNpdHk6MTt9fS5vcGVyYXRvclR5cGluZy1leGl0e2Rpc3BsYXk6bm9uZTt9In07Y29uc3QgVXU9W3tuYW1lOiJ3bjBhNXkiLHN0eWxlczoiLmNoYXR7d2lkdGg6MzcycHg7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjI2cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtc3VyZmFjZSwgMTZweCk7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2hhZG93OjAgOHB4IDE4cHggMCByZ2JhKDAsIDE4LCA0NiwgMC4xNik7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MTtyaWdodDoyNnB4O2xlZnQ6YXV0bzt9dGV4dGFyZWF7Ym9yZGVyOjA7d2lkdGg6MTAwJTtmb250LXNpemU6MTZweDtwYWRkaW5nOjIwcHggMCAxNHB4IDA7cmVzaXplOm5vbmU7bGluZS1oZWlnaHQ6MjBweDtvdmVyZmxvdy14OmhpZGRlbjstbXMtb3ZlcmZsb3ctc3R5bGU6bm9uZTt9QGtleWZyYW1lcyBzaGFrZXsxMCUsOTAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKDFweCk7fTIwJSw4MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTFweCk7fTMwJSw1MCUsNzAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKDJweCk7fTQwJSw2MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTJweCk7fX1idXR0b24sYnV0dG9uLm1hdGVyaWFsLWljb25ze2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtsaW5lLWhlaWdodDpub3JtYWw7b3ZlcmZsb3c6dmlzaWJsZTtwYWRkaW5nOjA7dXNlci1zZWxlY3Q6bm9uZTtvdXRsaW5lOm5vbmU7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwgMCwgMCwgMCk7fWJ1dHRvbi5tYXRlcmlhbC1pY29uczo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MDtwYWRkaW5nOjA7fWJ1dHRvbi5saW5re2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM0NDQ7fSJ9LHtuYW1lOiIxYmowam16IixzdHlsZXM6ImJvZHl7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowO31zdmd7ZmlsbDojZmZmO3RyYW5zaXRpb246YWxsIDAuMnMgZWFzZS1pbi1vdXQ7fSNidXR0b257cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTEycHg7aGVpZ2h0OjE0MHB4O2JvdHRvbToxMnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MTsvKiEgQG5vZmxpcCAqL3JpZ2h0OjA7Ji5jaGF0LW9wZW46bm90KC5zaWRlYmFyKXtyaWdodDowO2xlZnQ6YXV0bzt9YnV0dG9ue2l7aGVpZ2h0OjI2cHg7d2lkdGg6MjZweDtwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7dHJhbnNpdGlvbjphbGwgMC4ycyBlYXNlLWluLW91dDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Ji5hY3RpdmV7b3BhY2l0eToxO30mLnR5cGUxe3N2Z3tmaWxsOmN1cnJlbnRDb2xvcjt9Ji5mb3Itb3BlbmVke3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7c3Zne3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7fX19Ji5mb3ItY2xvc2Vkey8qISBAbm9mbGlwICovdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwcHgpOyYuYWN0aXZley8qISBAbm9mbGlwICovdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7fX0mLmZvci1vcGVuZWR7LyohIEBub2ZsaXAgKi90cmFuc2Zvcm06dHJhbnNsYXRlWCgxMHB4KTsmLmFjdGl2ZXsvKiEgQG5vZmxpcCAqL3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApO319fSY6aG92ZXIsJjpmb2N1c3t0cmFuc2Zvcm06c2NhbGUoMS4xKTt9JjphY3RpdmV7dHJhbnNmb3JtOnNjYWxlKDAuOSk7fX0uc2lkZWJhci1jb250ZW50OmhvdmVye34jYnV0dG9uLWJvZHl7Ym9keTpub3QoLm1vYmlsZSkgJiwjYm9keTpub3QoLm1vYmlsZSkgJnt0cmFuc2Zvcm06c2NhbGUoMS4xKTt9fX0mLnNpZGViYXJ7d2lkdGg6NTBweDtwb2ludGVyLWV2ZW50czphdXRvO2JvdHRvbTpjYWxjKDUwJSAtIDEwMHB4KTtzdmd7d2lkdGg6MTVweDtoZWlnaHQ6MTVweDt9LnNpZGViYXItcG9zaXRpb24tbGVmdCAmey8qISBAbm9mbGlwICovbGVmdDowOy8qISBAbm9mbGlwICovcmlnaHQ6YXV0bzsuc2lkZWJhci1jb250ZW50ey8qISBAbm9mbGlwICovdHJhbnNmb3JtLW9yaWdpbjpsZWZ0IHRvcDsvKiEgQG5vZmxpcCAqL3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKTsvKiEgQG5vZmxpcCAqL2xlZnQ6MDsvKiEgQG5vZmxpcCAqL3JpZ2h0OmF1dG87LyohIEBub2ZsaXAgKi9ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7LyohIEBub2ZsaXAgKi9ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjI4cHg7LyohIEBub2ZsaXAgKi9wYWRkaW5nOjAgMjBweCAwIDMwcHg7fSNidXR0b24tYm9keXsvKiEgQG5vZmxpcCAqL2xlZnQ6N3B4O319LnNpZGViYXItY29udGVudHtiYWNrZ3JvdW5kOiMzMTNmYTA7Y29sb3I6I2ZmZjsvKiEgQG5vZmxpcCAqL3BhZGRpbmc6MCAzMHB4IDAgMjBweDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDozMHB4O2hlaWdodDozMHB4O2ZvbnQtd2VpZ2h0OjcwMDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47LyohIEBub2ZsaXAgKi9ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czoyOHB4Oy8qISBAbm9mbGlwICovYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7LyohIEBub2ZsaXAgKi90cmFuc2Zvcm06cm90YXRlKDkwZGVnKTsvKiEgQG5vZmxpcCAqL3RyYW5zZm9ybS1vcmlnaW46cmlnaHQgdG9wO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowOy8qISBAbm9mbGlwICovcmlnaHQ6MDt3aGl0ZS1zcGFjZTpub3dyYXA7bWF4LXdpZHRoOjQwMHB4O3NwYW57ZGlzcGxheTppbmxpbmUtYmxvY2s7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpO21heC13aWR0aDoyNjVweDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47fSY6aG92ZXJ7Y3Vyc29yOnBvaW50ZXI7fX0jYnV0dG9uLWJvZHl7cG9zaXRpb246YWJzb2x1dGU7LyohIEBub2ZsaXAgKi9yaWdodDo3cHg7Ym90dG9tOjIwcHg7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtib3gtc2hhZG93OjAgNnB4IDIwcHggMCByZ2JhKDAsIDE4LCA0NiwgMC4yNCk7fWJ1dHRvbntpLm1hdGVyaWFsLWljb25zLnR5cGUxe3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7fX19fSNidXR0b24tYm9keXt3aWR0aDp2YXIoLS1idWJibGUtc2l6ZSwgNjBweCk7aGVpZ2h0OnZhcigtLWJ1YmJsZS1zaXplLCA2MHB4KTtib3JkZXItcmFkaXVzOjI4cHg7ZGlzcGxheTppbmhlcml0O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BvaW50ZXItZXZlbnRzOmluaXRpYWw7YmFja2dyb3VuZC1zaXplOjEzMCUgMTMwJTt0cmFuc2l0aW9uOmFsbCAwLjE1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO3Bvc2l0aW9uOnJlbGF0aXZlO2NvbG9yOiMwNTY2ZmY7YmFja2dyb3VuZDp2YXIoLS1jdXN0b20tYmFja2dyb3VuZCk7Jjo6YmVmb3Jle2NvbnRlbnQ6Jyc7dHJhbnNpdGlvbjpvcGFjaXR5IDAuNXMgZWFzZS1pbi1vdXQ7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xcHg7cmlnaHQ6LTFweDtib3R0b206LTFweDtsZWZ0Oi0xcHg7b3BhY2l0eTowO2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQtY29sb3I6I2M2Y2NkYzt9Jjpob3ZlciwmOmZvY3Vze291dGxpbmU6bm9uZTtib2R5Om5vdCgubW9iaWxlKSAmLCNib2R5Om5vdCgubW9iaWxlKSAme3RyYW5zZm9ybTpzY2FsZSgxLjEpO319JjphY3RpdmV7b3V0bGluZTpub25lO2JvZHk6bm90KC5tb2JpbGUpICYsI2JvZHk6bm90KC5tb2JpbGUpICZ7dHJhbnNmb3JtOnNjYWxlKDAuOSk7fX19I25ldy1tZXNzYWdlLCNkbmQtaW5kaWNhdG9ye3Bvc2l0aW9uOmFic29sdXRlO3RvcDozN3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojZmZmO3JpZ2h0OjIzcHg7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXItcmFkaXVzOjEwcHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21pbi13aWR0aDoyMHB4O2hlaWdodDoyMHB4O30jbmV3LW1lc3NhZ2V7Zm9udC1zaXplOjEycHg7YmFja2dyb3VuZDojZTgxMzMyO3otaW5kZXg6MjtsaW5lLWhlaWdodDoxNnB4O3BhZGRpbmc6MnB4IDRweDsmKyNkbmQtaW5kaWNhdG9ye3JpZ2h0OjEycHg7fSYuYWN0aXZle2FuaW1hdGlvbjpzaGFrZSAwLjgycyBjdWJpYy1iZXppZXIoMC4zNiwgMC4wNywgMC4xOSwgMC45NykgYm90aDt9fSNkbmQtaW5kaWNhdG9ye2JhY2tncm91bmQ6I2ZmZjtvdXRsaW5lOjFweCBzb2xpZCAjZTJlOGVmO2NvbG9yOiMwODBmMWE7ei1pbmRleDoxO3N2Z3tmaWxsOiMwODBmMWE7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDt9fSJ9LHtuYW1lOiIxZDUyaGdqIixzdHlsZXM6Ii5lbW9qaS1tYXJ0LC5lbW9qaS1tYXJ0ICp7Ym94LXNpemluZzpib3JkZXItYm94O2xpbmUtaGVpZ2h0OjEuMTU7fS5lbW9qaS1tYXJ0e2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdIZWx2ZXRpY2EgTmV1ZScsc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDtkaXNwbGF5OmlubGluZS1ibG9jaztjb2xvcjojMjIyNDI3O2JvcmRlcjoxcHggc29saWQgI2Q5ZDlkOTtib3JkZXItcmFkaXVzOjVweDtiYWNrZ3JvdW5kOiNmZmY7fS5lbW9qaS1tYXJ0IC5lbW9qaS1tYXJ0LWVtb2ppe3BhZGRpbmc6NnB4O30uZW1vamktbWFydC1iYXJ7Ym9yZGVyOjAgc29saWQgI2Q5ZDlkOTt9LmVtb2ppLW1hcnQtYmFyOmZpcnN0LWNoaWxke2JvcmRlci1ib3R0b20td2lkdGg6MXB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NXB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjVweDt9LmVtb2ppLW1hcnQtYmFyOmxhc3QtY2hpbGR7Ym9yZGVyLXRvcC13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo1cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NXB4O30uZW1vamktbWFydC1hbmNob3Jze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzowIDZweDtjb2xvcjojODU4NTg1O2xpbmUtaGVpZ2h0OjA7fS5lbW9qaS1tYXJ0LWFuY2hvcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2ZsZXg6MSAxIGF1dG87Y29sb3I6Izg1ODU4NTt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjEycHggNHB4O292ZXJmbG93OmhpZGRlbjt0cmFuc2l0aW9uOmNvbG9yIDAuMXMgZWFzZS1vdXQ7bWFyZ2luOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTt9LmVtb2ppLW1hcnQtYW5jaG9yOmZvY3Vze291dGxpbmU6MDt9LmVtb2ppLW1hcnQtYW5jaG9yOmhvdmVyLC5lbW9qaS1tYXJ0LWFuY2hvcjpmb2N1cywuZW1vamktbWFydC1hbmNob3Itc2VsZWN0ZWR7Y29sb3I6IzQ2NDY0Njt9LmVtb2ppLW1hcnQtYW5jaG9yLXNlbGVjdGVkIC5lbW9qaS1tYXJ0LWFuY2hvci1iYXJ7Ym90dG9tOjA7fS5lbW9qaS1tYXJ0LWFuY2hvci1iYXJ7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOi0zcHg7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjNweDtiYWNrZ3JvdW5kLWNvbG9yOiM0NjQ2NDY7fS5lbW9qaS1tYXJ0LWFuY2hvcnMgaXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlO21heC13aWR0aDoyMnB4O30uZW1vamktbWFydC1hbmNob3JzIHN2ZywuZW1vamktbWFydC1hbmNob3JzIGltZ3tmaWxsOmN1cnJlbnRDb2xvcjttYXgtaGVpZ2h0OjE4cHg7fS5lbW9qaS1tYXJ0LXNjcm9sbHtvdmVyZmxvdy15OnNjcm9sbDtvdmVyZmxvdy14OmhpZGRlbjtoZWlnaHQ6MjcwcHg7cGFkZGluZzowIDZweCA2cHggNnB4O3dpbGwtY2hhbmdlOnRyYW5zZm9ybTt9LmVtb2ppLW1hcnQtc2VhcmNoe21hcmdpbi10b3A6NnB4O3BhZGRpbmc6MCA2cHg7cG9zaXRpb246cmVsYXRpdmU7fS5lbW9qaS1tYXJ0LXNlYXJjaCBpbnB1dHtmb250LXNpemU6MTZweDtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZzowLjJlbSAwLjZlbTtib3JkZXItcmFkaXVzOjI1cHg7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O291dGxpbmU6MDt9LmVtb2ppLW1hcnQtc2VhcmNoIGlucHV0LC5lbW9qaS1tYXJ0LXNlYXJjaCBpbnB1dDo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwuZW1vamktbWFydC1zZWFyY2ggaW5wdXQ6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sLmVtb2ppLW1hcnQtc2VhcmNoIGlucHV0Ojotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiwuZW1vamktbWFydC1zZWFyY2ggaW5wdXQ6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTt9LmVtb2ppLW1hcnQtc2VhcmNoLWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjdweDtyaWdodDoxMXB4O3otaW5kZXg6MjtwYWRkaW5nOjJweCA1cHggMXB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6bm9uZTt9LmVtb2ppLW1hcnQtY2F0ZWdvcnkgLmVtb2ppLW1hcnQtZW1vamkgc3Bhbnt6LWluZGV4OjE7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOmRlZmF1bHQ7fS5lbW9qaS1tYXJ0LWNhdGVnb3J5IC5lbW9qaS1tYXJ0LWVtb2ppOmhvdmVyOmJlZm9yZXt6LWluZGV4OjA7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0ZjQ7Ym9yZGVyLXJhZGl1czoxMDAlO30uZW1vamktbWFydC1jYXRlZ29yeS1sYWJlbHt6LWluZGV4OjI7cG9zaXRpb246cmVsYXRpdmU7cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O3RvcDowO30uZW1vamktbWFydC1jYXRlZ29yeS1sYWJlbCBzcGFue2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtmb250LXdlaWdodDo1MDA7cGFkZGluZzo1cHggNnB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7fS5lbW9qaS1tYXJ0LWNhdGVnb3J5LWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO30uZW1vamktbWFydC1jYXRlZ29yeS1saXN0IGxpe2xpc3Qtc3R5bGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7fS5lbW9qaS1tYXJ0LWVtb2ppe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZTowO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOm5vbmU7Ym94LXNoYWRvdzpub25lO30uZW1vamktbWFydC1lbW9qaS1uYXRpdmV7Zm9udC1mYW1pbHk6J1NlZ29lIFVJIEVtb2ppJywnU2Vnb2UgVUkgU3ltYm9sJywnU2Vnb2UgVUknLCdBcHBsZSBDb2xvciBFbW9qaScsJ1R3ZW1vamkgTW96aWxsYScsJ05vdG8gQ29sb3IgRW1vamknLCdBbmRyb2lkIEVtb2ppJzt9LmVtb2ppLW1hcnQtbm8tcmVzdWx0c3tmb250LXNpemU6MTRweDt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDo3MHB4O2NvbG9yOiM4NTg1ODU7fS5lbW9qaS1tYXJ0LW5vLXJlc3VsdHMtaW1ne2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bzt3aWR0aDo1MCU7fS5lbW9qaS1tYXJ0LW5vLXJlc3VsdHMgLmVtb2ppLW1hcnQtY2F0ZWdvcnktbGFiZWx7ZGlzcGxheTpub25lO30uZW1vamktbWFydC1uby1yZXN1bHRzIC5lbW9qaS1tYXJ0LW5vLXJlc3VsdHMtbGFiZWx7bWFyZ2luLXRvcDowLjJlbTt9LmVtb2ppLW1hcnQtbm8tcmVzdWx0cyAuZW1vamktbWFydC1lbW9qaTpob3ZlcjpiZWZvcmV7Y29udGVudDpub25lO30uZW1vamktbWFydC1zci1vbmx5e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtoZWlnaHQ6MXB4O3BhZGRpbmc6MDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47Y2xpcDpyZWN0KDAsIDAsIDAsIDApO2JvcmRlcjowO30ifSwoMCxkLkFIKSgiKjpmb2N1c3tvdXRsaW5lOnRoaW4gZG90dGVkO30uY2hhdHttYXgtaGVpZ2h0OmNhbGMoMTAwJSAtIDQ3cHgpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47fXN2Z3t3aWR0aDoyNHB4O2hlaWdodDoyNHB4O30uY2hhdC1oZWFkZXJ7cGFkZGluZzp2YXIoLS1jaGF0LXBhZGRpbmcsIDI0cHgpO2JhY2tncm91bmQ6dmFyKC0tY3VzdG9tLWJhY2tncm91bmQpO2NvbG9yOnZhcigtLWN1c3RvbS10ZXh0LWNvbG9yKTtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjQ7ZmxleDowIDAgYXV0bzthe2NvbG9yOmN1cnJlbnRDb2xvcjsmOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lO319fSNjb252ZXJzYXRpb24tZ3JvdXA6Oi13ZWJraXQtc2Nyb2xsYmFyLCNuZXctbWVzc2FnZS10ZXh0YXJlYTo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lO30uaGVhZGVyLWF2YXtib3JkZXItcmFkaXVzOjI0cHg7YmFja2dyb3VuZC1zaXplOmNvdmVyO2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyO2JhY2tncm91bmQtaW1hZ2U6dXJsKCIsR24sIik7ZmxvYXQ6bGVmdDsubW9iaWxlICZ7d2lkdGg6NDJweDtoZWlnaHQ6NDJweDtib3JkZXItcmFkaXVzOjE5cHg7fX0jY29udmVyc2F0aW9uLWdyb3Vwe3dpZHRoOjEwMCU7b3ZlcmZsb3cteTphdXRvO292ZXJmbG93LXg6aGlkZGVuOy1tcy1vdmVyZmxvdy1zdHlsZTpub25lO2JhY2tncm91bmQ6I2ZmZjt0cmFuc2l0aW9uOmFsbCAwLjNzO21pbi1oZWlnaHQ6MTYwcHg7aGVpZ2h0OjQ4N3B4O3BhZGRpbmctaW5saW5lOnZhcigtLWNoYXQtcGFkZGluZywgMjRweCk7ZmxleDoxIGF1dG87LmdyaWQtbGF5b3V0ICZ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjs6YmVmb3Jle2NvbnRlbnQ6Jyc7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDoxcHg7ZmxleDoxO319Ji5pb3MtaXBhZHstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDt3aWR0aDpjYWxjKDEwMCUgKyA2cHgpOy8qISBAbm9mbGlwICovbWFyZ2luLXJpZ2h0OjA7LmxhbmctcnRsICZ7LyohIEBub2ZsaXAgKi9tYXJnaW4tcmlnaHQ6LTZweDt9fS51cGxvYWRJY29uV3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjM7c3Bhbntmb250LXNpemU6MTlweDttYXgtd2lkdGg6MTIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzA4MGYxYTtsaW5lLWhlaWdodDoxLjM7fS5pY191cGxvYWR7ZmlsbDojMjg3ZWZjO3dpZHRoOjczcHg7aGVpZ2h0OjczcHg7bWFyZ2luLWJvdHRvbToxMHB4O21hcmdpbi10b3A6LTVweDt9fS51cGxvYWQtY2lyY2xle3dpZHRoOjIzMHB4O2hlaWdodDoyMzBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnJnYmEoMTgyLCAxOTgsIDIyOSwgMC4yNCk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbmltYXRpb246c2NhbGUtdXAgMC4zcyBlYXNlO3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTt9Ji5kcmFnLWFjdGl2ZTo6YWZ0ZXJ7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO2JhY2tncm91bmQ6cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKTt6LWluZGV4OjI7YW5pbWF0aW9uOmZhZGUtaW4gMC4zcyBlYXNlO30udHJhbnNpdGlvbi1jb250YWluZXIgJntmbGV4OjE7fX0udHJhbnNpdGlvbi1jb250YWluZXJ7aGVpZ2h0OjM5OXB4O2JhY2tncm91bmQ6I2ZmZjtmbGV4OjAgMSBhdXRvO21pbi1oZWlnaHQ6MTYwcHg7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjsjY29udmVyc2F0aW9uLWdyb3Vwe292ZXJmbG93LXk6aGlkZGVuO319I21lc3NhZ2Vze3Bvc2l0aW9uOnJlbGF0aXZlOy1tcy1vdmVyZmxvdy1zdHlsZTpub25lO21hcmdpbi10b3A6MTBweDt3aWR0aDoxMDAlO3BhZGRpbmctYm90dG9tOjI0cHg7ZmxvYXQ6bGVmdDsuZ3JpZC1sYXlvdXQgJntwYWRkaW5nLWJvdHRvbToxNnB4O319I2NvbnZlcnNhdGlvbi1ncm91cCAjY29udmVyc2F0aW9uLXNjcm9sbHt3aWR0aDoxNnB4O2hlaWdodDpjYWxjKDMzOXB4IC0gMjZweCk7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDtwYWRkaW5nOjAgNHB4O30jY29udmVyc2F0aW9uLWdyb3VwICNjb252ZXJzYXRpb24tc2Nyb2xsIGRpdnt3aWR0aDo4cHg7bWFyZ2luOjAgMXB4O2JhY2tncm91bmQ6IzAwMTczYjtvcGFjaXR5OjA7dG9wOjA7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo0cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpvcGFjaXR5IDAuMXMgZWFzZS1pbi1vdXQsd2lkdGggMC4xcyBlYXNlLWluLW91dCxtYXJnaW4gMC4xcyBlYXNlLWluLW91dDt6LWluZGV4OjI7dXNlci1zZWxlY3Q6bm9uZTt9I2NvbnZlcnNhdGlvbi1ncm91cDpob3ZlciAjY29udmVyc2F0aW9uLXNjcm9sbCBkaXZ7Ym9keTpub3QoLm1vYmlsZSkgJiwjYm9keTpub3QoLm1vYmlsZSkgJntvcGFjaXR5OjAuMTY7fX0jY29udmVyc2F0aW9uLWdyb3VwICNjb252ZXJzYXRpb24tc2Nyb2xsIGRpdjpob3Zlcntib2R5Om5vdCgubW9iaWxlKSAmLCNib2R5Om5vdCgubW9iaWxlKSAme29wYWNpdHk6MC4zMjt3aWR0aDoxMHB4O21hcmdpbjowO319aHJ7bWFyZ2luOjA7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RiZGZlNjt9aW5wdXQsdGV4dGFyZWF7Ji5kaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7Y29sb3I6Izg4OTRhYjt9fWJ1dHRvbixsYWJlbHsmLm1hdGVyaWFsLWljb25ze3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTttYXJnaW46MTVweCAwIDhweCAxMXB4O2Zsb2F0OnJpZ2h0O3N2Z3tmaWxsOiM4ODk0YWI7Ji5vcHRpb25zLWljb257ZmlsbDpjdXJyZW50Q29sb3I7fX0mOjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOiNlZmYyZjY7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjUwJTt6LWluZGV4Oi0xO3RyYW5zaXRpb246YWxsIDAuMTZzIGVhc2UtaW4tb3V0O3RyYW5zZm9ybTpzY2FsZSgwKTt0b3A6Y2FsYyg1MCUgLSAyMnB4KTtsZWZ0OmNhbGMoNTAlIC0gMjBweCk7fSY6aG92ZXI6OmJlZm9yZXtib2R5Om5vdCgubW9iaWxlKSAmLCNib2R5Om5vdCgubW9iaWxlKSAme3RyYW5zZm9ybTpzY2FsZSgxKTt9fSY6Zm9jdXN7c3Zne2ZpbGw6Y3VycmVudENvbG9yO31zdmcuYm90cy1pY29ue2ZpbGw6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciwgIzA1NjZmZik7fX0mLmRpc2FibGVkIHN2ZywmLmRpc2FibGVkOmZvY3VzIHN2Z3tmaWxsOiNjOWNiZDg7fX19LmlucHV0LWdyb3Vwe3BhZGRpbmctaW5saW5lOnZhcigtLWNoYXQtcGFkZGluZywgMjRweCk7cGFkZGluZy1ib3R0b206MTZweDt3aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO2JhY2tncm91bmQ6I2ZmZjt6LWluZGV4OjM7ZmxleDowIDAgYXV0bzsmLmRyYWctYWN0aXZlIC5kcmFnLWFjdGl2ZS13cmFwcGVyOjphZnRlcntjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7YmFja2dyb3VuZDpyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7ei1pbmRleDoxO2FuaW1hdGlvbjpmYWRlLWluIDAuM3MgZWFzZTt9LmZvb3Rlci1pbnB1dC13cmFwcGVyLC5mb290ZXItaWNvbnMtd3JhcHBlcnt0cmFuc2l0aW9uOmFsbCAwLjVzIGVhc2UtaW4tb3V0O29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKTsmLmhpZGRlbnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMHB4KTtwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6MDt9fS5mb290ZXItaWNvbnMtd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjt9fS5lbW9qaS13cmFwcGVye2hlaWdodDoyMTVweDtwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MzQwcHg7Ym90dG9tOjEwMCU7ei1pbmRleDoxMDtsZWZ0OjE4cHg7fS5lbW9qaS1tYXJ0e2JvcmRlcjowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCUhaW1wb3J0YW50O2hlaWdodDoxMDAlO3JpZ2h0OjA7aW5wdXQ6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O30mLXNjcm9sbHtoZWlnaHQ6MTQwcHg7fS5lbW9qaS1tYXJ0LWVtb2ppe2N1cnNvcjpwb2ludGVyO3NwYW57Y3Vyc29yOnBvaW50ZXI7fX19LmVtb2ppLW1hcnQtYW5jaG9yey1tcy1mbGV4OjEgMSBhdXRvO30uYm90cy1kcm9wZG93bntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NzJweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo4cHg7Ym94LXNoYWRvdzowIDZweCAzMnB4IDAgcmdiYSgwLCAxOCwgNDYsIDAuMTYpO3BhZGRpbmc6MTJweCA2cHg7ei1pbmRleDo2O3RyYW5zaXRpb246YWxsIDAuMnMgZWFzZS1pbi1vdXQ7cmlnaHQ6MjRweDt1bHttYXJnaW46MDtwYWRkaW5nOjA7bGl7Ym9yZGVyLXJhZGl1czo2cHg7ZGlzcGxheTpmbGV4OyY6bnRoLW9mLXR5cGUoMikgYnV0dG9ue3N2Z3tmaWxsOiNmZmI5MjY7fX19fWxpIGJ1dHRvbntwYWRkaW5nOjhweCAxNnB4O2Rpc3BsYXk6ZmxleDttYXJnaW46MDtwb3NpdGlvbjppbml0aWFsO2Zsb2F0OmluaXRpYWw7d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjZweDsmOmhvdmVyLCY6Zm9jdXN7Ym9keTpub3QoLm1vYmlsZSkgJiwjYm9keTpub3QoLm1vYmlsZSkgJntiYWNrZ3JvdW5kOiNlZmYyZjY7fX1zdmcsJjpmb2N1cyBzdmd7ZmlsbDojODg5NGFiO2hlaWdodDoyMnB4O3dpZHRoOjIycHg7fXNwYW57bWFyZ2luLWxlZnQ6MTBweDtjb2xvcjojMDYxMzJiO30mOjpiZWZvcmV7Y29udGVudDpub25lO319fS5ib3RzLWRyb3Bkb3due3RvcDphdXRvO2JvdHRvbTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC02MHB4KTttYXgtaGVpZ2h0OjI3NXB4O3dpZHRoOm1heC1jb250ZW50O292ZXJmbG93LXk6YXV0bzt6LWluZGV4OjExO3JpZ2h0OmF1dG87bGVmdDowcHg7dWx7bGl7cGFkZGluZzowO3NwYW57Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzo4cHggMTZweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7d2lkdGg6MTAwJTtzdmd7d2lkdGg6MjJweDtoZWlnaHQ6MjJweDt9fX19dWwuYm90cy1jYW5jZWx7c3Bhbntjb2xvcjojMGFiNmZmO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7fXN2Z3tmaWxsOnJlZDt9fX0uZW1vamktc3dpdGNoLmFjdGl2ZSBzdmd7ZmlsbDpjdXJyZW50Q29sb3I7fUBrZXlmcmFtZXMgc2NhbGUtdXB7MCV7dHJhbnNmb3JtOnNjYWxlKDAuOCk7fTEwMCV7dHJhbnNmb3JtOnNjYWxlKDEpO319QGtleWZyYW1lcyBmYWRlLWluezAle29wYWNpdHk6MDt9MTAwJXtvcGFjaXR5OjE7fX0uY2hhdC1pbi1wcmV2aWV3LS10b3Vyey5leGl0LWNoYXQsLm9wdGlvbnMtaWNvbntvcGFjaXR5OjAuMzt9LmlucHV0LWdyb3Vwe29wYWNpdHk6MC40O319IiwiIiksTHUsKDAsZC5BSCkoIi5tZXNzYWdle3BhZGRpbmctYmxvY2s6dmFyKC0tbWVzc2FnZS1wYWRkaW5nLWJsb2NrLCAxMHB4KTtwYWRkaW5nLWlubGluZTp2YXIoLS1tZXNzYWdlLXBhZGRpbmctaW5saW5lLCAxNnB4KTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDIwcHgpO21hcmdpbjoycHggMDtmb250LXNpemU6dmFyKC0tbWVzc2FnZS1mb250LXNpemUsIDE1cHgpO2xpbmUtaGVpZ2h0OnZhcigtLW1lc3NhZ2UtbGluZS1oZWlnaHQsIDIwcHgpO3dvcmQtd3JhcDpicmVhay13b3JkO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDo4NSU7Y2xlYXI6Ym90aDtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOm1hcmdpbiAwLjI4cyBlYXNlLWluLW91dDsmLnRpbWVzdGFtcC12aXNpYmxle21hcmdpbi1ib3R0b206MjhweDt9Ji5yYXRpbmctdmlzaWJsZXttYXJnaW4tYm90dG9tOjM1cHg7fXNwYW4ubWVzc2FnZS1jb250ZW50e3doaXRlLXNwYWNlOnByZS1saW5lO31zcGFuLm1lc3NhZ2UtY29udGVudC0tbWFya2Rvd257d2hpdGUtc3BhY2U6YnJlYWstc3BhY2VzOy5tYXJrZG93bi1pbWFnZXtkaXNwbGF5OmJsb2NrO21heC13aWR0aDoxMDAlO21hcmdpbjoycHggMDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDIwcHgpO31hIC5tYXJrZG93bi1pbWFnZXtjdXJzb3I6cG9pbnRlcjt9fS5tZXNzYWdlLWNvbnRlbnR7dWx7bGlzdC1zdHlsZS10eXBlOmRpc2M7fW9se2xpc3Qtc3R5bGUtdHlwZTpkZWNpbWFsO311bCxvbHttYXJnaW46MTJweCAwO3BhZGRpbmctbGVmdDoxNnB4O31saXtwYWRkaW5nLWxlZnQ6NHB4O21hcmdpbi1ib3R0b206OHB4O319aW1ne21heC13aWR0aDoxMDAlOyY6bm90KC5lbW9qaSl7Y3Vyc29yOnpvb20taW47fX19LnJhdGluZy12aXNpYmxlKy5tZXNzYWdlLC5yYXRpbmctdmlzaWJsZSsuc2xpZGVzaG93e21hcmdpbi10b3A6MTBweDt9Lm1lc3NhZ2UtdmlzaXRvcntjb2xvcjojZmZmO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDMzMmRlZywgIzIxZGJkYiwgIzI5NzlmZik7ZmxvYXQ6cmlnaHQ7JisubWVzc2FnZS1vcGVyYXRvcnttYXJnaW4tdG9wOjlweDt9c3BhbiBhe2NvbG9yOmN1cnJlbnRDb2xvcjt9Ji5ub3QtZGVsaXZlcmVke291dGxpbmU6MXB4IHNvbGlkICNlMmU4ZWY7YmFja2dyb3VuZDojZmZmO2NvbG9yOiM2NDc0OTE7bWFyZ2luLWJvdHRvbToyMnB4Oy5yZXNlbmQtbWVzc2FnZXtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LTIycHg7Zm9udC1zaXplOjEycHg7cmlnaHQ6MDtjb2xvcjojZTgxMzMyO319fS5tZXNzYWdlLW9wZXJhdG9ye2NvbG9yOiMwNjEzMmI7YmFja2dyb3VuZDp2YXIoLS1vcGVyYXRvci1tZXNzYWdlLCAjZjBmMmY3KTtmbG9hdDpsZWZ0OyYubWVzc2FnZS1mb3Jte3dpZHRoOjEwMCU7cGFkZGluZzoxNnB4O31zcGFuIGF7Y29sb3I6IzA2MTMyYjt9JisubWVzc2FnZS12aXNpdG9ye21hcmdpbi10b3A6OXB4O30mLnRpbWVzdGFtcC12aXNpYmxlfi5ib3RzLXF1aWNrLXJlcGxpZXN7cGFkZGluZy10b3A6MDt9Ji5tZXNzYWdlLXdpdGgtYnV0dG9ucywubWVzc2FnZS13aXRoLWJ1dHRvbnMsJi5ib3RzLXF1aWNrLXJlcGxpZXN7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowO3BhZGRpbmctYm90dG9tOjA7dHJhbnNpdGlvbjpwYWRkaW5nIDAuMjhzIGVhc2UtaW4tb3V0OyYuYnV0dG9ucy1oaWRkZW57cGFkZGluZy1ib3R0b206MTBweDt9PnNwYW57cGFkZGluZzowIDE2cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7d29yZC1icmVhazpicmVhay13b3JkO30uYnV0dG9uLXdyYXBwZXJ7YmFja2dyb3VuZDojZmZmO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDoxMHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yLCAjZWJlZWYwKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDIwcHgpO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDIwcHgpO2JvcmRlci10b3A6MDtwb3NpdGlvbjpyZWxhdGl2ZTt9LmJ1dHRvbi1pY29ue2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2UtaW4tb3V0O3BhZGRpbmc6OHB4IDE2cHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCAyMHB4KTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCAyMHB4KTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7JiBzdmd7ZmlsbDp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O30mOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1iYWNrZ3JvdW5kKTt9fWJ1dHRvbiwuYnV0dG9uLXVybHttYXJnaW46MCBhdXRvO21pbi13aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MTlweDtwYWRkaW5nOjhweCAxNnB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvciwgI2ViZWVmMCk7Y29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciwgIzA1NjZmZik7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7b3V0bGluZTpub25lO3dvcmQtYnJlYWs6YnJlYWstd29yZDsmOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fX19Lm1lc3NhZ2Utd2l0aC1idXR0b25zLCYubWVzc2FnZS13aXRoLWJ1dHRvbnN7YnV0dG9uOmxhc3QtY2hpbGQsLmJ1dHRvbi11cmw6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOjA7fS5ncmlkLWxheW91dCAmey5idXR0b24td3JhcHBlcntib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO319fSYuYm90cy1xdWljay1yZXBsaWVze3dpZHRoOjg1JTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7bWFyZ2luLXRvcDowO2Zsb2F0OnJpZ2h0Oy5idXR0b24td3JhcHBlcnttYXJnaW4tdG9wOjA7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDt3aWR0aDoxMDAlO2JvcmRlcjpub25lO31idXR0b257Zm9udC1zaXplOjE1cHg7cGFkZGluZzoxMHB4IDE0cHg7Ym9yZGVyOjFweCBzb2xpZDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDIwcHgpO21hcmdpbjozcHg7bWluLXdpZHRoOmluaGVyaXQ7fXNwYW57dGV4dC1hbGlnbjpsZWZ0O292ZXJmbG93OmhpZGRlbjsmLmxpbmUtY2xhbXB7ZGlzcGxheTotd2Via2l0LWJveDstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1saW5lLWNsYW1wOjI7fX19Ji5idXR0b25zLW1lc3NhZ2V7cGFkZGluZzowO21heC13aWR0aDo5MCU7Lm1lc3NhZ2Utd2l0aC1idXR0b25ze21heC13aWR0aDoxMDAlOyYtdGV4dHtwYWRkaW5nOjlweCAxNnB4IDFweDtsaW5lLWhlaWdodDoxOXB4O3doaXRlLXNwYWNlOnByZS1saW5lOy5ncmlkLWxheW91dCAme3BhZGRpbmctdG9wOjE2cHg7fX19fSYuY291cG9uLWNvZGUtbWVzc2FnZXtwYWRkaW5nOjEwcHggMTRweCAxNHB4O3dpZHRoOjEwMCU7fSYubWVzc2FnZS1hbGVydHtib3JkZXI6MnB4IHNvbGlkICNkZWUzZTg7YmFja2dyb3VuZDojZmZmIWltcG9ydGFudDttYXJnaW4tYm90dG9tOjIycHg7cG9zaXRpb246cmVsYXRpdmU7c3ZnLmFsZXJ0LWljb257aGVpZ2h0OjIwcHg7d2lkdGg6MjBweDtmaWxsOnJlZDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTVweDtiYWNrZ3JvdW5kOiNmZmY7cmlnaHQ6LTVweDt9fSYudHlwaW5nLWluZGljYXRvcnt0ZXh0LWFsaWduOmxlZnQ7c3BhbntoZWlnaHQ6NHB4O3dpZHRoOjRweDttYXJnaW46MTFweCAxcHggMCAxcHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO29wYWNpdHk6MC40O2FuaW1hdGlvbjpibGluayAxLjNzIGxpbmVhciBpbmZpbml0ZTsmOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjRweDt9JjpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi0xLjFzO30mOm50aC1jaGlsZCgzKXthbmltYXRpb24tZGVsYXk6LTAuOXM7fX19LmJ1dHRvbi11cmx7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MTlweDtwYWRkaW5nOjhweCAxNnB4O3RleHQtYWxpZ246Y2VudGVyO30uYnV0dG9uLXVybF9fYW5jaG9ye3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IsICMwNTY2ZmYpOyY6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9fUBrZXlmcmFtZXMgYmxpbmt7MCUsNjAlLDEwMCV7dHJhbnNmb3JtOmluaXRpYWw7fTMwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNXB4KTt9fX0ubWVzc2FnZSAuZW1vaml7bWFyZ2luOjAgMXB4IDAgMnB4O3ZlcnRpY2FsLWFsaWduOi01cHg7fS5tZXNzYWdlVGltZXN0YW1we2JvdHRvbTotMjRweDtmb250LXNpemU6MTJweDtjb2xvcjojODg5NGFiO3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zaXRpb246YWxsIDAuMnM7d2hpdGUtc3BhY2U6bm93cmFwOy5tZXNzYWdlLW9wZXJhdG9yICZ7aGVpZ2h0OjIzcHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjt0b3A6Y2FsYygxMDAlICsgNHB4KTtsZWZ0OjEycHg7fS5tZXNzYWdlLXZpc2l0b3IgJntyaWdodDoxMnB4O31zdmd7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDttYXJnaW4tcmlnaHQ6NHB4O319LnNoYWtle2FuaW1hdGlvbjpzaGFrZSAwLjgycyBjdWJpYy1iZXppZXIoMC4zNiwgMC4wNywgMC4xOSwgMC45NykgYm90aDt9LnJhdGUtY29tbWVudHttYXgtd2lkdGg6OTUlO30ucHJlLWNoYXQsLnJhdGUtY29tbWVudCwuYWx3YXlzLW9ubGluZXsuZmllbGQtd3JhcHBlcnsmLmZpZWxkLXdyYXBwZXItd2l0aC1lcnJvcntpbnB1dCx0ZXh0YXJlYXtib3JkZXItY29sb3I6I2Y2MzAzYTt9fX1zdmd7d2lkdGg6MTlweDtoZWlnaHQ6MTlweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6OHB4O2ZpbGw6Z3JlZW47bGVmdDo5cHg7JiNpY19hcnJvd3tmaWxsOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IsICMwNTY2ZmYpO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO30mI2ljX2Nsb3Nle2ZpbGw6cmVkO319aW5wdXQsdGV4dGFyZWF7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxNnB4O3BhZGRpbmc6MTJweCAxNnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgNXB4KTttYXJnaW46MTBweCAwIDVweDtib3JkZXI6c29saWQgMXB4IHJnYmEoMTA4LCAxMjUsIDE1OSwgMC4yNCk7JjphY3RpdmU6bm90KFt0eXBlPSdjaGVja2JveCddKSwmOmZvY3VzOm5vdChbdHlwZT0nY2hlY2tib3gnXSl7Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDEwOCwgMTI1LCAxNTksIDAuMjQpO30mW3R5cGU9J2NoZWNrYm94J117d2lkdGg6YXV0bztkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MDtwYWRkaW5nOjA7bWluLWhlaWdodDoxNHB4O21pbi13aWR0aDoxNHB4O2JvcmRlcjpub25lOy5tb2JpbGUgLmZpcmVmb3ggJntvdXRsaW5lOnNvbGlkIDFweCByZ2JhKDEwOCwgMTI1LCAxNTksIDAuMjQpO319fWxhYmVse2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjE0cHg7dGV4dC1hbGlnbjpqdXN0aWZ5O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo4cHg7cGFkZGluZzo0cHg7YXt3b3JkLWJyZWFrOmJyZWFrLWFsbDt9fX0udGltZXN0YW1wLWF2YXRhcnt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyO2JhY2tncm91bmQtc2l6ZTpjb3Zlcjtib3JkZXItcmFkaXVzOjI1cHg7YmFja2dyb3VuZC1pbWFnZTp1cmwoIixHbiwiKTtwYWRkaW5nLWxlZnQ6MjNweDtsZWZ0OjA7JitzcGFue21hcmdpbi1sZWZ0OjMwcHg7fX0udGltZXN0YW1wLW9wZXJhdG9ye21hcmdpbi1yaWdodDoycHg7fS5sb2FkZXItaWNvbnsmLmNpcmN1bGFye2FuaW1hdGlvbjpyb3RhdGUgMnMgbGluZWFyIGluZmluaXRlO2hlaWdodDoxMDAlO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyIGNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDttYXJnaW46MDtsZWZ0OjEwcHg7cmlnaHQ6MDt9LnBhdGh7c3Ryb2tlLWRhc2hhcnJheToxLDIwMDtzdHJva2UtZGFzaG9mZnNldDowO2FuaW1hdGlvbjpkYXNoIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7fUBrZXlmcmFtZXMgcm90YXRlezEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpO319QGtleWZyYW1lcyBkYXNoezAle3N0cm9rZS1kYXNoYXJyYXk6MSwyMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6MDt9NTAle3N0cm9rZS1kYXNoYXJyYXk6ODksMjAwO3N0cm9rZS1kYXNob2Zmc2V0Oi0zNXB4O30xMDAle3N0cm9rZS1kYXNoYXJyYXk6ODksMjAwO3N0cm9rZS1kYXNob2Zmc2V0Oi0xMjRweDt9fX0ubWVzc2FnZS11cGxvYWR7bWF4LXdpZHRoOjc1JTtzcGFue3BhZGRpbmctbGVmdDoyNXB4O30jaWNfZG93bmxvYWR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt9Ji5tZXNzYWdlLW9wZXJhdG9yeyNpY19kb3dubG9hZHtyaWdodDotMzVweDt9fSYubWVzc2FnZS12aXNpdG9yeyNpY19kb3dubG9hZHtsZWZ0Oi0zNXB4O319YXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO291dGxpbmU6bm9uZTsmOmhvdmVyPnN2Z3tvcGFjaXR5OjE7fT5zdmd7b3BhY2l0eTowO2ZpbGw6I2JmYzVkNzt9fSYubWVzc2FnZS1pbWFnZXtiYWNrZ3JvdW5kOm5vbmU7cGFkZGluZzowO3NwYW57cGFkZGluZy1sZWZ0OjA7fWltZ3t3aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgMjBweCk7fX0mLm1lc3NhZ2UtZmlsZXtzcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dvcmQtYnJlYWs6YnJlYWstYWxsO3BhZGRpbmctbGVmdDowO31he2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy1sZWZ0OjM1cHg7c3Zne3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7bGVmdDoxN3B4O319fX0uYXR0YWNobWVudC1pbWd7YmFja2dyb3VuZDp3aGl0ZTtjb2xvcjp3aGl0ZTtib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmU7fSIsIiIpLFB1LE91LFJ1XTt2YXIgQnU9e25ld1NraW5Db250ZW50U3R5bGVzOlsuLi5VdSxqdV0sb2xkU2tpbkNvbnRlbnRTdHlsZXM6Wy4uLlV1LHp1XX07Y29uc3QgSHU9e3pJbmRleDoiei1pbmRleCIsdHJhbnNpdGlvbjoidHJhbnNpdGlvbiIsYmFja2dyb3VuZDoiYmFja2dyb3VuZCJ9OygwLGIubykoKS5tYXJrRHVyYXRpb24oIndpZGdldF90b3RhbF9sb2FkX2luX21zIiwiZW5kIik7Y29uc3QgcXU9ZT0+e3RyeXtlJiZPYmplY3Qua2V5cyhIdSkuZm9yRWFjaCh0PT57ZS5zdHlsZS5zZXRQcm9wZXJ0eShIdVt0XSxlLnN0eWxlW3RdLCJpbXBvcnRhbnQiKX0pfWNhdGNoe319O2Z1bmN0aW9uIFZ1KGUsdCxuKXtlJiYoIm1vYmlsZSI9PT10P3NldFRpbWVvdXQoKCk9PntlLnN0eWxlLnNldFByb3BlcnR5KCJib3R0b20iLG4sImltcG9ydGFudCIpfSwwKToib25seVNpZGViYXIiPT09dD9zZXRUaW1lb3V0KCgpPT57ZS5zdHlsZS5zZXRQcm9wZXJ0eSgiYm90dG9tIixuLCJpbXBvcnRhbnQiKSxlLnN0eWxlLnNldFByb3BlcnR5KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGVZKDUwJSkiLCJpbXBvcnRhbnQiKX0sMCk6ZS5zdHlsZS5zZXRQcm9wZXJ0eSgiYm90dG9tIixuKSl9Y29uc3QgJHU9KDAsZi5QaCkoKSxXdT0oKT0+e2MuUlYuYXNzaWduKHtza2lwQW5pbWF0aW9uOiJ2aXNpYmxlIiE9PWRvY3VtZW50Py52aXNpYmlsaXR5U3RhdGV9KX0sS3U9ZT0+e3RyeXtsZXQgdD1lLnRhcmdldDtjb25zdCBuPWUudGFyZ2V0O2lmKCF0Py5zaGFkb3dSb290KXJldHVybjtpZihlLmNvbXBvc2VkUGF0aCYmZS5jb21wb3NlZFBhdGgoKS5sZW5ndGg+MCl7Y29uc3Qgbj1lLmNvbXBvc2VkUGF0aCgpWzBdO24mJm4hPT10JiYodD1uKX10IT09biYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ0YXJnZXQiLHt2YWx1ZTp0LHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUuc3JjRWxlbWVudCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNyY0VsZW1lbnQiLHt2YWx1ZTp0LHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pKX1jYXRjaHt9fSxHdT0oKT0+e3RyeXtjb25zdHtGYXN0Q2xpY2s6ZX09d2luZG93LnBhcmVudDtpZighZXx8ZS50aWRpb1BhdGNoZWQpcmV0dXJuO2NvbnN0IHQ9d2luZG93LnBhcmVudC5TaGFkb3dSb290O2lmKCF0KXJldHVybjtjb25zdCBuPWUucHJvdG90eXBlLm5lZWRzQ2xpY2s7ZS5wcm90b3R5cGUubmVlZHNDbGljaz1mdW5jdGlvbihlKXtyZXR1cm4gZT8uZ2V0Um9vdE5vZGU/LigpaW5zdGFuY2VvZiB0fHxuLmNhbGwodGhpcyxlKX0sZS50aWRpb1BhdGNoZWQ9ITB9Y2F0Y2h7fX0sWHU9e2NhcHR1cmU6ITAscGFzc2l2ZTohMX07Y2xhc3MgUXUgZXh0ZW5kcyBhLkNvbXBvbmVudHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSwoMCxpLkEpKHRoaXMsInN0eWxlQ2FjaGUiLCgwLHMuQSkoe2tleToidGlkaW8iLHN0eWxpc1BsdWdpbnM6KDAseS5WOCkoKT9bdS5BeV06W10sY29udGFpbmVyOnRoaXMucHJvcHMuc3R5bGVDYWNoZUNvbnRhaW5lcnx8dGhpcy5wcm9wcy5pZnJhbWVEb2N1bWVudC5oZWFkfSkpLCgwLGkuQSkodGhpcywic3RhdGUiLHtpc1JlbmRlcmVkOiExfSksKDAsaS5BKSh0aGlzLCJzZXRJbXBvcnRhbnRQb3NpdGlvbmluZ0Zvck1vYmlsZUFuZFNpZGViYXIiLCgpPT57dGhpcy5wcm9wcy5pZnJhbWVXaW5kb3cuZnJhbWVFbGVtZW50JiYoIm1vYmlsZSI9PT10aGlzLnByb3BzLmlmcmFtZVZpZXc/c2V0VGltZW91dCgoKT0+e3RoaXMucHJvcHMuaWZyYW1lV2luZG93LmZyYW1lRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgiYm90dG9tIix0aGlzLmdldEJvdHRvbU9mZnNldCgpLCJpbXBvcnRhbnQiKX0sMCk6Im9ubHlTaWRlYmFyIj09PXRoaXMucHJvcHMuaWZyYW1lVmlldz9zZXRUaW1lb3V0KCgpPT4odGhpcy5wcm9wcy5pZnJhbWVXaW5kb3cuZnJhbWVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJib3R0b20iLCI1MCUiLCJpbXBvcnRhbnQiKSx0aGlzLnByb3BzLmlmcmFtZVdpbmRvdy5mcmFtZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoInRyYW5zZm9ybSIsInRyYW5zbGF0ZVkoNTAlKSIsImltcG9ydGFudCIpLCEwKSwwKTp0aGlzLnByb3BzLmlmcmFtZVdpbmRvdy5mcmFtZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoImJvdHRvbSIsdGhpcy5nZXRCb3R0b21PZmZzZXQoKSkpfSksKDAsaS5BKSh0aGlzLCJyZWdpc3RlckNsaWNrRm9yQXV0b1BsYXlQZXJtaXNzaW9ucyIsKCk9Pnt0cnl7Y29uc3QgZT0oKT0+eygwLHgucGMpKHRoaXMucHJvcHMuaXNOZXdTa2luKSx3aW5kb3cucGFyZW50LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixlLCEwKSx3aW5kb3cucGFyZW50LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixlLCEwKSx0aGlzLnByb3BzLmlmcmFtZURvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixlLCEwKSx0aGlzLnByb3BzLmlmcmFtZURvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixlLCEwKX07KHRoaXMucHJvcHMuaXNNb2JpbGV8fCJzYWZhcmkiPT09Zi5MZHx8Im1vYmlsZSBzYWZhcmkiPT09Zi5MZCkmJih3aW5kb3cucGFyZW50LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixlLCEwKSx3aW5kb3cucGFyZW50LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixlLCEwKSx0aGlzLnByb3BzLmlmcmFtZURvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixlLCEwKSx0aGlzLnByb3BzLmlmcmFtZURvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixlLCEwKSl9Y2F0Y2goZSl7KDAsdi5zUSkoZSl9fSksKDAsaC5ycikodGhpcy5wcm9wcy5pZnJhbWVEb2N1bWVudCx0aGlzLnByb3BzLmlmcmFtZVdpbmRvdyl9Y29tcG9uZW50RGlkTW91bnQoKXtxdSh0aGlzLnByb3BzLmlmcmFtZVdpbmRvdy5mcmFtZUVsZW1lbnQpLFZ1KHRoaXMucHJvcHMuaWZyYW1lV2luZG93LmZyYW1lRWxlbWVudCx0aGlzLnByb3BzLmlmcmFtZVZpZXcsdGhpcy5nZXRCb3R0b21PZmZzZXQoKSksdGhpcy5wcm9wcy5pc1NvdW5kRW5hYmxlZCYmdGhpcy5yZWdpc3RlckNsaWNrRm9yQXV0b1BsYXlQZXJtaXNzaW9ucygpLHRoaXMuc2V0SW1wb3J0YW50UG9zaXRpb25pbmdGb3JNb2JpbGVBbmRTaWRlYmFyKCksZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLFd1KSxjLlJWLmFzc2lnbih7cmVxdWVzdEFuaW1hdGlvbkZyYW1lOnRoaXMucHJvcHMuaWZyYW1lV2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSxjYW5jZWxBbmltYXRpb25GcmFtZTp0aGlzLnByb3BzLmlmcmFtZVdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZX0pO3RyeXt0aGlzLnByb3BzLmlmcmFtZURvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixlPT57aWYoZT8udGFyZ2V0Py5tYXRjaGVzKCJpbWcuZW1vamkiKSYmZS50YXJnZXQucGFyZW50Tm9kZSl7Y29uc3QgdD1lLnRhcmdldC5jbG9zZXN0KCIubWVzc2FnZSIpLG49dD8ucXVlcnlTZWxlY3RvcigiLm1lc3NhZ2UtY29udGVudCIpLGk9dGhpcy5wcm9wcy5pc05ld1NraW4/dGhpcy5wcm9wcy5pZnJhbWVEb2N1bWVudC5vd25lckRvY3VtZW50OnRoaXMucHJvcHMuaWZyYW1lRG9jdW1lbnQ7aWYoZS50YXJnZXQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoaS5jcmVhdGVUZXh0Tm9kZShlLnRhcmdldC5hbHQpLGUudGFyZ2V0KSx0JiZuJiZ0aGlzLnByb3BzLmlmcmFtZVdpbmRvdyl7Y29uc3QgZT0zNTt0aGlzLnByb3BzLmlmcmFtZVdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0LnN0eWxlLndpZHRoPWAke24ub2Zmc2V0V2lkdGgrZX1weGB9KX19fSwhMCl9Y2F0Y2goZSl7KDAsdi5zUSkoZSl9c2V0VGltZW91dCgoKT0+e3RoaXMuc2V0U3RhdGUoe2lzUmVuZGVyZWQ6ITB9KX0sMCksdGhpcy5wcm9wcy5pc05ld1NraW4mJigoKT0+e3RyeXt3aW5kb3cucGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLEt1LFh1KSx3aW5kb3cucGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixLdSxYdSksd2luZG93LnBhcmVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLEt1LFh1KSxHdSgpfWNhdGNoe319KSgpfWNvbXBvbmVudERpZFVwZGF0ZShlKXtlLmlmcmFtZU1vZGUhPT10aGlzLnByb3BzLmlmcmFtZU1vZGUmJihxdSh0aGlzLnByb3BzLmlmcmFtZVdpbmRvdy5mcmFtZUVsZW1lbnQpLHRoaXMuc2V0SW1wb3J0YW50UG9zaXRpb25pbmdGb3JNb2JpbGVBbmRTaWRlYmFyKCksVnUodGhpcy5wcm9wcy5pZnJhbWVXaW5kb3cuZnJhbWVFbGVtZW50LHRoaXMucHJvcHMuaWZyYW1lVmlldyx0aGlzLmdldEJvdHRvbU9mZnNldCgpKSl9Y29tcG9uZW50V2lsbFVubW91bnQoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixXdSksdGhpcy5wcm9wcy5pc05ld1NraW4mJigoKT0+e3RyeXt3aW5kb3cucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLEt1LFh1KSx3aW5kb3cucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixLdSxYdSksd2luZG93LnBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLEt1LFh1KX1jYXRjaHt9fSkoKX1nZXRCb3R0b21PZmZzZXQoKXtjb25zdHtpc0F3ZXNvbWVJZnJhbWU6ZSxpZnJhbWVNb2RlOnQsaWZyYW1lVmlldzpufT10aGlzLnByb3BzO3JldHVybiJvbmx5U2lkZWJhciI9PT1uPyI1MCUiOmUmJmcuSzU/Llt0XSYmZy5LNVt0XS5ib3R0b218fDB9cmVuZGVyKCl7cmV0dXJuKDAsVi5GRCkobC5DLHt2YWx1ZTp0aGlzLnN0eWxlQ2FjaGUsY2hpbGRyZW46WygwLFYuWSkoZC5tTCx7c3R5bGVzOnRoaXMucHJvcHMuaXNOZXdTa2luP0J1Lm5ld1NraW5Db250ZW50U3R5bGVzOkJ1Lm9sZFNraW5Db250ZW50U3R5bGVzfSksKDAsVi5ZKShOdSx7fSksdGhpcy5zdGF0ZS5pc1JlbmRlcmVkJiYoMCxWLlkpKGJ1LHtzZXRXaWRnZXRQb3NpdGlvbjp0aGlzLnByb3BzLnNldFdpZGdldFBvc2l0aW9ufSldfSl9fVF1LmRlZmF1bHRQcm9wcz17c3R5bGVDYWNoZUNvbnRhaW5lcjpudWxsfTtjb25zdCBadT1lPT57Y29uc3R7ZG9jdW1lbnQ6dCx3aW5kb3c6bn09KDAsby5qJCkoKTtyZXR1cm4oMCxWLlkpKFF1LHsuLi5lLGlmcmFtZURvY3VtZW50OnQsaWZyYW1lV2luZG93Om59KX07Y2xhc3MgSnUgZXh0ZW5kcyBhLkNvbXBvbmVudHtjb25zdHJ1Y3Rvcigpe3ZhciBlO3N1cGVyKC4uLmFyZ3VtZW50cyksZT10aGlzLCgwLGkuQSkodGhpcywiZ2V0SWZyYW1lU2l6ZSIsKCk9Pih7Li4uKDAsZy5MWSkodGhpcy5wcm9wcy5pZnJhbWVWaWV3KSwuLi4ib25seVNpZGViYXIiPT09dGhpcy5wcm9wcy5pZnJhbWVWaWV3P3tsZWZ0OiJsZWZ0Ij09PXRoaXMucHJvcHMuc2lkZWJhclBvc2l0aW9uPyIwIjp2b2lkIDAscmlnaHQ6InJpZ2h0Ij09PXRoaXMucHJvcHMuc2lkZWJhclBvc2l0aW9uPyIwIjp2b2lkIDB9Ont9fSkpLCgwLGkuQSkodGhpcywic3RhdGUiLHtzdHlsZTp7ZGlzcGxheToiYmxvY2siLGJvcmRlcjoibm9uZSIscG9zaXRpb246IXRoaXMucHJvcHMuaXNDaGF0T25TaXRlfHx0aGlzLnByb3BzLmlzTW9iaWxlfHwoMCxmLkREKSgpPyJmaXhlZCI6ImluaGVyaXQiLHRvcDoiYXV0byIsYm90dG9tOjAsbGVmdDoiYXV0byIscmlnaHQ6ImF1dG8iLC4uLnRoaXMuZ2V0SWZyYW1lU2l6ZSgpLG9wYWNpdHk6MCxbdGhpcy5wcm9wcy53aWRnZXRQb3NpdGlvbl06MCxjb2xvclNjaGVtZToibm9uZSIsYmFja2dyb3VuZDoibm9uZSB0cmFuc3BhcmVudCIsbWFyZ2luOjAsbWF4SGVpZ2h0OiIxMDB2aCIsbWF4SGVpZ2h0OiIxMDBkdmgiLG1heFdpZHRoOiIxMDB2dyIsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDApIix0cmFuc2l0aW9uOiJub25lIix2aXNpYmlsaXR5OiJ2aXNpYmxlIix6SW5kZXg6OTk5OTk5OTk5fX0pLCgwLGkuQSkodGhpcywicmVmIixudWxsKSwoMCxpLkEpKHRoaXMsImdldEF3ZXNvbWVJZnJhbWVPZmZzZXQiLChlLHQpPT57bGV0IG49MDtyZXR1cm4gZy5LNT8uW2VdPy5bdF0mJihuPWcuSzVbZV1bdF0pLG59KSwoMCxpLkEpKHRoaXMsInNldElmcmFtZVN0eWxlIixmdW5jdGlvbih0KXtsZXQgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06KCk9Pnt9O2Uuc2V0U3RhdGUoe3N0eWxlOnR9LG4pfSksKDAsaS5BKSh0aGlzLCJnZXRDdXJyZW50SWZyYW1lU3R5bGUiLCgpPT4oey4uLnRoaXMuc3RhdGUuc3R5bGV9KSksKDAsaS5BKSh0aGlzLCJtZXJnZVdpdGhDdXJyZW50U3R5bGVzIixmdW5jdGlvbih0KXtsZXQgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06KCk9Pnt9O2Uuc2V0SWZyYW1lU3R5bGUoey4uLmUuZ2V0Q3VycmVudElmcmFtZVN0eWxlKCksLi4udH0pLG4oKX0pLCgwLGkuQSkodGhpcywic2V0V2lkZ2V0UG9zaXRpb24iLChlLHQpPT57Y29uc3Qgbj10aGlzLmdldEN1cnJlbnRJZnJhbWVTdHlsZSgpLGk9dGhpcy5nZXRJZnJhbWVNb2RlKCk7bGV0IGE9MDt0aGlzLnByb3BzLmlzQXdlc29tZUlmcmFtZSYmKGE9dGhpcy5nZXRBd2Vzb21lSWZyYW1lT2Zmc2V0KGksZSkpLHRoaXMuc2V0SWZyYW1lU3R5bGUoey4uLm4scmlnaHQ6ImF1dG8iLGxlZnQ6ImF1dG8iLFtlXTphfSx0KX0pLCgwLGkuQSkodGhpcywiZ2V0SWZyYW1lQXdlc29tZVN0eWxlIiwoKT0+e2NvbnN0e3dpZGdldFBvc2l0aW9uOmUsaXNBd2Vzb21lSWZyYW1lOnR9PXRoaXMucHJvcHMsbj17fTtpZih0KXtjb25zdCB0PXRoaXMuZ2V0SWZyYW1lTW9kZSgpLHt3aWR0aDppLGhlaWdodDphfT1nLks1Py5bdF18fHt9O2lmKGkmJihuLndpZHRoPWkpLGEmJihuLmhlaWdodD1hKSxuW2VdPXRoaXMuZ2V0QXdlc29tZUlmcmFtZU9mZnNldCh0LGUpLG4uYm9yZGVyUmFkaXVzPXRoaXMucHJvcHMuaXNNb2JpbGU/MDpnLmFMLCR1KXtjb25zdHtib3R0b206ZSxyaWdodDppfT1nLks1Py5bdF18fHt9O24uYm90dG9tPWUsbi5yaWdodD1pfX1yZXR1cm4gbn0pLCgwLGkuQSkodGhpcywib25JZnJhbWVNb3VudCIsKCk9Pnt0aGlzLnNldFdpZGdldFBvc2l0aW9uKHRoaXMucHJvcHMud2lkZ2V0UG9zaXRpb24sdGhpcy5hbmltYXRlT3BhY2l0eSl9KSwoMCxpLkEpKHRoaXMsImFuaW1hdGVPcGFjaXR5IiwoKT0+e3RoaXMubWVyZ2VXaXRoQ3VycmVudFN0eWxlcyh7ZGlzcGxheToiYmxvY2sifSwoKT0+e3NldFRpbWVvdXQoKCk9Pnt0aGlzLm1lcmdlV2l0aEN1cnJlbnRTdHlsZXMoe29wYWNpdHk6MX0pfSwwKX0pfSksKDAsaS5BKSh0aGlzLCJvbklmcmFtZVJlZiIsZT0+e3RoaXMucmVmPWU7Y29uc3R7d2lkZ2V0UG9zaXRpb246dCxpc0F3ZXNvbWVJZnJhbWU6bixkaXNwYXRjaDppfT10aGlzLnByb3BzLGE9KDAsQS52dSkoIndpZGdldF9wb3NpdGlvbiIpO3RyeXtpZihlPy5ub2RlKXtjb25zdHtsZWZ0Om8scmlnaHQ6cixib3R0b206c309ZS5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHtpbm5lcldpZHRoOmwsaW5uZXJIZWlnaHQ6ZH09d2luZG93LnBhcmVudCxjPSJsZWZ0Ij09PXQ/bzpsLXIsdT1kLXM7MD09PWMmJjA9PT11fHxhfHxufHwoaSgoMCxrLnNETCkoe2luaXRpYWxYOmMsaW5pdGlhbFk6dX0pKSwoMCxBLkhvKSgid2lkZ2V0X3Bvc2l0aW9uIiwhMCkpfX1jYXRjaChlKXsoMCx2LnNRKSgiRXJyb3Igb25JZnJhbWVSZWYiLHttZXNzYWdlOmU/Lm1lc3NhZ2V9KX1uJiZ0aGlzLm1lcmdlV2l0aEN1cnJlbnRTdHlsZXMoey4uLmcuSzVbdGhpcy5nZXRJZnJhbWVNb2RlKCldfSl9KSwoMCxpLkEpKHRoaXMsImdldElmcmFtZU1vZGUiLCgpPT57Y29uc3R7aWZyYW1lVmlldzplLGlzV2lkZ2V0TGFiZWxFbmFibGVkOnQsdmlldzpuLGRpbWVuc2lvbnM6aX09dGhpcy5wcm9wcztpZihlLmluY2x1ZGVzKGcuTnkuZHluYW1pYykmJmk/LmhlaWdodCl7Y29uc3QgZT05NDtyZXR1cm4gTnVtYmVyKGkuaGVpZ2h0KT09PWUmJnQmJm4hPT13LmwuZmx5P2cuTnkuYnViYmxlV2l0aExhYmVsOmcuTnkuZHluYW1pY31yZXR1cm4gZT09PWcuTnkub25seUJ1YmJsZSYmdGhpcy5wcm9wcy5pc01vYmlsZT9nLk55Lm9ubHlCdWJibGVMYXJnZTplfSl9Y29tcG9uZW50RGlkVXBkYXRlKGUpe3RyeXskdSYmdGhpcy5wcm9wcy5pc0F3ZXNvbWVJZnJhbWUmJmUuaXNBd2Vzb21lSWZyYW1lIT09dGhpcy5wcm9wcy5pc0F3ZXNvbWVJZnJhbWUmJnRoaXMucmVmPy5ub2RlJiZ0aGlzLnJlZi5ub2RlLmNvbnRlbnRXaW5kb3c/LmRvY3VtZW50Py5xdWVyeVNlbGVjdG9yKCJib2R5Iik/LmNsYXNzTGlzdD8uYWRkKCJhd2Vzb21lLWlmcmFtZSIpfWNhdGNoe319cmVuZGVyKCl7Y29uc3QgZT10aGlzLnByb3BzLmhpZGVXaGVuT2ZmbGluZSYmIXRoaXMucHJvcHMuaXNQcm9qZWN0T25saW5lJiYhdGhpcy5wcm9wcy5pc0NoYXRPblNpdGUsdD0oMCx5LlY4KSgpO2lmKCF0aGlzLnByb3BzLmlzTW91bnRlZHx8ZSlyZXR1cm4gbnVsbDtjb25zdCBuPXtkaXI6dD8icnRsIjoibHRyIixjbGFzczpgJHt0aGlzLnByb3BzLmlzTW9iaWxlPyJtb2JpbGUiOiIifSAke3RoaXMucHJvcHMuaXNDaGF0T25TaXRlPyJjaGF0LW9uLXNpdGUiOiIifSAke3Q/ImxhbmctcnRsIjoiIn0gJHsoMCxmLkREKSgpPyJjaGF0LWluLXByZXZpZXciOiIifSAkeygwLGYuUTUpKCk/ImNoYXQtaW4tcHJldmlldy0tdG91ciI6IiJ9ICR7dGhpcy5wcm9wcy5pc0F3ZXNvbWVJZnJhbWU/ImF3ZXNvbWUtaWZyYW1lIjoiIn1gLnRyaW0oKX0saT0nPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgdXNlci1zY2FsYWJsZT1ubyI+JyxhPXRoaXMuZ2V0SWZyYW1lTW9kZSgpO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKG8uQXkse3JlZjp0aGlzLm9uSWZyYW1lUmVmLHRpdGxlOiJUaWRpbyBDaGF0IixoZWFkOigwLFYuWSkoInN0eWxlIix7Y2hpbGRyZW46IlxuLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpc2gnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9tdWxpc2hfU0doZ3FrMGdvdFlLTm5CY2lmLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGO1xufVxuLyogY3lyaWxsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ011bGlzaCc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL211bGlzaF9TR2hncWsyd290WUtObkJjaWYud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG59XG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpc2gnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9tdWxpc2hfU0doZ3FrMEFvdFlLTm5CY2lmLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG59XG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ011bGlzaCc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL211bGlzaF9TR2hncWswUW90WUtObkJjaWYud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcbn1cbi8qIGxhdGluICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpc2gnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9tdWxpc2hfU0doZ3FrM3dvdFlLTm5CUS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpc2gnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9tdWxpc2hfU0doZ3FrMGdvdFlLTm5CY2lmLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGO1xufVxuLyogY3lyaWxsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ011bGlzaCc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL211bGlzaF9TR2hncWsyd290WUtObkJjaWYud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG59XG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpc2gnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9tdWxpc2hfU0doZ3FrMEFvdFlLTm5CY2lmLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG59XG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ011bGlzaCc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL211bGlzaF9TR2hncWswUW90WUtObkJjaWYud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcbn1cbi8qIGxhdGluICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpc2gnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9tdWxpc2hfU0doZ3FrM3dvdFlLTm5CUS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuIn0pLHN0eWxlOnsuLi50aGlzLnN0YXRlLnN0eWxlLC4uLnRoaXMuZ2V0SWZyYW1lU2l6ZSgpLC4uLnRoaXMuZ2V0SWZyYW1lQXdlc29tZVN0eWxlKCl9LGluaXRpYWxDb250ZW50OmBcbiAgICAgICAgICAgICAgICAgIDxodG1sIGxhbmc9ImVuIj5cbiAgICAgICAgICAgICAgICAgIDxoZWFkPlxuICAgICAgICAgICAgICAgICAgJHtpfVxuICAgICAgICAgICAgICAgICAgICA8L2hlYWQ+XG4gICAgICAgICAgICAgICAgICA8Ym9keSAke09iamVjdC5lbnRyaWVzKG4pLm1hcChlPT57bGV0W3Qsbl09ZTtyZXR1cm5gJHt0fT0iJHtufSJgfSkuam9pbigiICIpfT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvYm9keT5cbiAgICAgICAgICAgICAgICAgIGAsbm9TcmNEb2NCb2R5UHJvcHM6bixub1NyY0RvY0hlYWRUYWdzOmksaWQ6InRpZGlvLWNoYXQtaWZyYW1lIixjb250ZW50RGlkTW91bnQ6dGhpcy5vbklmcmFtZU1vdW50LC4uLmYud2gsY2hpbGRyZW46KDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOmAkeyJsZWZ0Ij09PXRoaXMucHJvcHMud2lkZ2V0UG9zaXRpb24/IndpZGdldC1wb3NpdGlvbi1sZWZ0Ijoid2lkZ2V0LXBvc2l0aW9uLXJpZ2h0In0gJHsibGVmdCI9PT10aGlzLnByb3BzLnNpZGViYXJQb3NpdGlvbj8ic2lkZWJhci1wb3NpdGlvbi1sZWZ0Ijoic2lkZWJhci1wb3NpdGlvbi1yaWdodCJ9ICR7dGhpcy5wcm9wcy5pc1NpZGViYXJFbmFibGVkPyJzaWRlYmFyLWVuYWJsZWQiOiIifVxuICAgICAgICAgICAgICAgICAgICAgICAgJHthfWAsc3R5bGU6eyItLWN1c3RvbS1iYWNrZ3JvdW5kIjp0aGlzLnByb3BzLndpZGdldENvbG9yWzBdPT09dGhpcy5wcm9wcy53aWRnZXRDb2xvclsxXT90aGlzLnByb3BzLndpZGdldENvbG9yWzBdOmBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAke3RoaXMucHJvcHMud2lkZ2V0Q29sb3JbMF19IDAlLCAke3RoaXMucHJvcHMud2lkZ2V0Q29sb3JbMV19IDEwMCUpYCwiLS1jdXN0b20tdGV4dC1jb2xvciI6dGhpcy5wcm9wcy53aWRnZXRDb2xvclsyXSwiLS1jdXN0b20tYWN0aW9uLWNvbG9yIjp0aGlzLnByb3BzLndpZGdldENvbG9yWzRdfHwiIzA1NjZmZiIsIi0tY3VzdG9tLWFjdGlvbi1jb2xvci1jb250cmFzdCI6bSh0aGlzLnByb3BzLndpZGdldENvbG9yWzRdfHwiIzA1NjZmZiIpPyIjZmZmIjoiIzAwMCIsIi0tY3VzdG9tLWFjdGlvbi1jb2xvci1ob3ZlciI6ImNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKSwgd2hpdGUgMTAlKSIsIi0tY3VzdG9tLWFjdGlvbi1jb2xvci1hY3RpdmUiOiJjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciksIHdoaXRlIDIwJSkiLCItLWN1c3RvbS1hY3Rpb24tY29sb3ItYmFja2dyb3VuZCI6ImNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKSwgd2hpdGUgOTAlKSIsIi0tY3VzdG9tLWFjdGlvbi1jb2xvci1iYWNrZ3JvdW5kLWFjdGl2ZSI6ImNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKSwgd2hpdGUgNjAlKSIsIi0tY2hhdC1wYWRkaW5nIjp0aGlzLnByb3BzLmlzTW9iaWxlPyIxNnB4IjoiMjRweCIsIi0tbGFiZWwtc2hhZG93IjoiMCAycHggMjBweCAwIHJnYmEoMCwgMTgsIDQ2LCAwLjE4KSIsIi0tZmx5LXNoYWRvdyI6IjAgOHB4IDI2cHggMCByZ2JhKDAsIDE4LCA0NiwgMC4xNikifSxjaGlsZHJlbjooMCxWLlkpKFp1LHtzZXRXaWRnZXRQb3NpdGlvbjp0aGlzLnNldFdpZGdldFBvc2l0aW9uLGlmcmFtZVZpZXc6dGhpcy5wcm9wcy5pZnJhbWVWaWV3LGlmcmFtZU1vZGU6YSxpc1NvdW5kRW5hYmxlZDp0aGlzLnByb3BzLmlzU291bmRFbmFibGVkLGlzQXdlc29tZUlmcmFtZTp0aGlzLnByb3BzLmlzQXdlc29tZUlmcmFtZSxpc05ld1NraW46ITEsaXNNb2JpbGU6dGhpcy5wcm9wcy5pc01vYmlsZX0pfSl9KSwoMCxWLlkpKEV1LHt9KSwoMCxWLlkpKHh1LHt9KV19KX19SnUuZGVmYXVsdFByb3BzPXtzaWRlYmFyUG9zaXRpb246InJpZ2h0IixkaW1lbnNpb25zOm51bGx9O2NvbnN0IGVwPSgwLHIuTmcpKGU9Pih7aXNNb3VudGVkOmUuaXNNb3VudGVkLGlmcmFtZVZpZXc6ZS5jaGF0SWZyYW1lU3R5bGVzLmlmcmFtZVZpZXcsZGltZW5zaW9uczooMCxDLlJwKShlKSxpc01vYmlsZTplLmlzTW9iaWxlLHdpZGdldFBvc2l0aW9uOmUuY2hhdElmcmFtZVN0eWxlcy53aWRnZXRQb3NpdGlvbixoaWRlV2hlbk9mZmxpbmU6ZS5oaWRlV2hlbk9mZmxpbmUsaXNQcm9qZWN0T25saW5lOmUuaXNQcm9qZWN0T25saW5lLGlzU2lkZWJhckVuYWJsZWQ6ZS5zaWRlYmFySWZyYW1lU3R5bGVzLGlzQXdlc29tZUlmcmFtZTooMCxDLml4KShlKSxzaWRlYmFyUG9zaXRpb246ZS5zaWRlYmFySWZyYW1lU3R5bGVzLnBvc2l0aW9uLGlzQ2hhdE9uU2l0ZTooMCxDLlR3KShlKSxpc1NvdW5kRW5hYmxlZDplLmlzU291bmRFbmFibGVkLGlzV2lkZ2V0TGFiZWxFbmFibGVkOigwLEMuengpKGUpLHZpZXc6KDAsQy5LWikoZSksd2lkZ2V0Q29sb3I6KDAsQy5mTykoZSl9KSkoSnUpLHRwPSgpPT57Y29uc3QgZT0oMCxyLmQ0KShlPT5lLmNoYXRJZnJhbWVTdHlsZXMud2lkZ2V0UG9zaXRpb24pLHQ9KDAsci5kNCkoZT0+ZS5zaWRlYmFySWZyYW1lU3R5bGVzP2Uuc2lkZWJhcklmcmFtZVN0eWxlcy5wb3NpdGlvbjoiIiksbj0oMCxyLmQ0KShlPT5lLnNpZGViYXJJZnJhbWVTdHlsZXMpLGk9KDAsci5kNCkoQy5mTyksbz0oMCxyLmQ0KShDLk55KSxzPSgwLHIuZDQpKGU9PmUuaXNTb3VuZEVuYWJsZWQpLGw9KDAsci5kNCkoZT0+ZS5jaGF0SWZyYW1lU3R5bGVzLmlmcmFtZVZpZXcpLGQ9KDAsZy5MWSkobCksYz0oMCxyLmQ0KShDLlJwKSx1PWM/LndpZHRofHxkLndpZHRoLHA9KDAsci5kNCkoQy5UdyksW2ZdPSgwLGEudXNlU3RhdGUpKCgpPT53aW5kb3cucGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aWRpby1jaGF0IikpLGg9Zj8uc2hhZG93Um9vdCxiPSgwLHkuVjgpKCk7cmV0dXJuKDAsYS51c2VFZmZlY3QpKCgpPT57Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiBlLnRleHRDb250ZW50PSJcbi8qIGN5cmlsbGljLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NtM0Z3ckszaUxUY3ZuVXdrVDltSTFGNTVNS3cud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7XG59XG4vKiBjeXJpbGxpYyAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NtM0Z3ckszaUxUY3ZuVXdBVDltSTFGNTVNS3cud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG59XG4vKiBncmVlay1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1RpZGlvSW50ZXInO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogdXJsKGh0dHBzOi8vY29kZS50aWRpby5jby93aWRnZXQtdjQvZm9udHMvaW50ZXJfVWNDbTNGd3JLM2lMVGN2blV3Z1Q5bUkxRjU1TUt3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuLyogZ3JlZWsgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1RpZGlvSW50ZXInO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogdXJsKGh0dHBzOi8vY29kZS50aWRpby5jby93aWRnZXQtdjQvZm9udHMvaW50ZXJfVWNDbTNGd3JLM2lMVGN2blV3Y1Q5bUkxRjU1TUt3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGO1xufVxuLyogdmlldG5hbWVzZSAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NtM0Z3ckszaUxUY3ZuVXdzVDltSTFGNTVNS3cud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG59XG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1RpZGlvSW50ZXInO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogdXJsKGh0dHBzOi8vY29kZS50aWRpby5jby93aWRnZXQtdjQvZm9udHMvaW50ZXJfVWNDbTNGd3JLM2lMVGN2blV3b1Q5bUkxRjU1TUt3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGO1xufVxuLyogbGF0aW4gKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1RpZGlvSW50ZXInO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogdXJsKGh0dHBzOi8vY29kZS50aWRpby5jby93aWRnZXQtdjQvZm9udHMvaW50ZXJfVWNDbTNGd3JLM2lMVGN2blV3UVQ5bUkxRjU0LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdUaWRpb0ludGVyJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMTAwIDkwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL2ludGVyX1VjQ28zRndySzNpTFRjdnZZd1laOFVBM0o1OC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjtcbn1cbi8qIGN5cmlsbGljICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdUaWRpb0ludGVyJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMTAwIDkwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL2ludGVyX1VjQ28zRndySzNpTFRjdm1Zd1laOFVBM0o1OC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcbn1cbi8qIGdyZWVrLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NvM0Z3ckszaUxUY3Z1WXdZWjhVQTNKNTgud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XG59XG4vKiBncmVlayAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NvM0Z3ckszaUxUY3ZoWXdZWjhVQTNKNTgud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7XG59XG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdUaWRpb0ludGVyJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMTAwIDkwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL2ludGVyX1VjQ28zRndySzNpTFRjdnRZd1laOFVBM0o1OC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcbn1cbi8qIGxhdGluLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NvM0Z3ckszaUxUY3ZzWXdZWjhVQTNKNTgud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NvM0Z3ckszaUxUY3ZpWXdZWjhVQTMud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XG59XG4iLGY/LmFwcGVuZENoaWxkKGUpLCgpPT57Zj8ucmVtb3ZlQ2hpbGQoZSl9fSxbZl0pLCgwLGEudXNlRWZmZWN0KSgoKT0+e28mJmg/LmdldEVsZW1lbnRCeUlkKCJib2R5Iik/LmNsYXNzTGlzdC5hZGQoIm1vYmlsZSIpfSxbaCxvXSksKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoImRpdiIse2lkOiJ0aWRpby1jaGF0LXJvb3QiLGNsYXNzTmFtZTpgZ3JpZC1sYXlvdXQgJHsibGVmdCI9PT1lPyJ3aWRnZXQtcG9zaXRpb24tbGVmdCI6IndpZGdldC1wb3NpdGlvbi1yaWdodCJ9ICR7ImxlZnQiPT09dD8ic2lkZWJhci1wb3NpdGlvbi1sZWZ0Ijoic2lkZWJhci1wb3NpdGlvbi1yaWdodCJ9ICR7bj8ic2lkZWJhci1lbmFibGVkIjoiIn0gJHtvPyJtb2JpbGUiOiIifSAke3A/ImNoYXQtb24tc2l0ZSI6IiJ9ICR7Yj8ibGFuZy1ydGwiOiIifVxuICAgIGAsc3R5bGU6e3dpZHRoOnUsIi0tY3VzdG9tLWJhY2tncm91bmQiOmlbMF0sIi0tY3VzdG9tLXRleHQtY29sb3IiOmlbMl0sIi0tY3VzdG9tLWFjdGlvbi1jb2xvciI6aVs0XXx8IiMwNTY2ZmYiLCItLWN1c3RvbS1hY3Rpb24tY29sb3ItY29udHJhc3QiOm0oaVs0XXx8IiMwNTY2ZmYiKT8iI2ZmZiI6IiMwMDAiLCItLWN1c3RvbS1hY3Rpb24tY29sb3ItaG92ZXIiOiJjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciksIHdoaXRlIDEwJSkiLCItLWN1c3RvbS1hY3Rpb24tY29sb3ItYWN0aXZlIjoiY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IpLCB3aGl0ZSAyMCUpIiwiLS1jdXN0b20tYWN0aW9uLWNvbG9yLWJhY2tncm91bmQiOiJjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciksIHdoaXRlIDkwJSkiLCItLWN1c3RvbS1hY3Rpb24tY29sb3ItYmFja2dyb3VuZC1hY3RpdmUiOiJjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciksIHdoaXRlIDYwJSkiLCItLXJhZGl1cy1zdXJmYWNlIjoiMTJweCIsIi0tcmFkaXVzLWNvbXBvbmVudCI6IjEycHgiLCItLXJhZGl1cy1zbWFsbC1jb21wb25lbnQiOiI4cHgiLCItLWNoYXQtcGFkZGluZyI6bz8iMTZweCI6IjIwcHgiLCItLW1lc3NhZ2UtcGFkZGluZy1ibG9jayI6IjE2cHgiLCItLW1lc3NhZ2UtcGFkZGluZy1pbmxpbmUiOiIxNnB4IiwiLS1tZXNzYWdlLWZvbnQtc2l6ZSI6IjE0cHgiLCItLW1lc3NhZ2UtbGluZS1oZWlnaHQiOiIyMHB4IiwiLS1zdGFydGVyLXBhZGRpbmctYmxvY2siOiIxNHB4IiwiLS1zdGFydGVyLWNoYXQtcGFkZGluZy1ibG9jayI6IjE2cHgiLCItLXN0YXJ0ZXJzLWdhcCI6IjhweCIsIi0tYnViYmxlLXNpemUiOiI1NnB4IiwiLS1sYWJlbC1wYWRkaW5nLWJsb2NrIjoiMTJweCIsIi0tbGFiZWwtcGFkZGluZy1pbmxpbmUiOiIxNnB4IiwiLS1sYWJlbC1zaGFkb3ciOiIwcHggMnB4IDhweCAwcHggcmdiYSg4LCAxNSwgMjYsIDAuMDgpLCAwcHggMnB4IDJweCAwcHggcmdiYSg4LCAxNSwgMjYsIDAuMTIpIiwiLS1mbHktc2hhZG93IjoiMHB4IDEycHggMzJweCAwcHggcmdiYSg4LCAxNSwgMjYsIDAuMTIpIiwiLS1vcGVyYXRvci1tZXNzYWdlIjoiI2Y1ZjdmOSIsIi0tYm9yZGVyLWNvbG9yIjoiI0QzREJFNSJ9LGNoaWxkcmVuOigwLFYuWSkoUXUse3NldFdpZGdldFBvc2l0aW9uOigpPT57fSxpZnJhbWVWaWV3OiJub3QtYXBwbGljYWJsZSIsaWZyYW1lTW9kZToibm90LWFwcGxpY2FibGUiLGlzU291bmRFbmFibGVkOnMsaXNBd2Vzb21lSWZyYW1lOiExLGlmcmFtZURvY3VtZW50OmgsaWZyYW1lV2luZG93OndpbmRvdy5wYXJlbnQsc3R5bGVDYWNoZUNvbnRhaW5lcjpoLGlzTW9iaWxlOm8saXNOZXdTa2luOiEwfSl9KSwoMCxWLlkpKFl1LHtzaGFkb3dSb290Omh9KSwoMCxWLlkpKGt1LHtzaGFkb3dSb290Omh9KV19KX07dmFyIG5wPSgpPT57Y29uc3R7aXNOZXdTa2luOmV9PSgwLHAuQSkoKTtyZXR1cm4gZT8oMCxWLlkpKHRwLHt9KTooMCxWLlkpKGVwLHt9KX19LDUxMjY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDIzMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkF5Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oZT1pLGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9KS5kZWZhdWx0O3ZhciBlfX0pO3ZhciBhPW4oNTQwOSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImokIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS51c2VGcmFtZX19KX0sNTQwOTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkZyYW1lQ29udGV4dENvbnN1bWVyPXQuRnJhbWVDb250ZXh0UHJvdmlkZXI9dC51c2VGcmFtZT10LkZyYW1lQ29udGV4dD12b2lkIDA7dmFyIGksYT1uKDM0ODApLG89KGk9YSkmJmkuX19lc01vZHVsZT9pOntkZWZhdWx0Oml9O3ZhciByPXZvaWQgMCxzPXZvaWQgMDsidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYocj1kb2N1bWVudCksInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJihzPXdpbmRvdyk7dmFyIGw9dC5GcmFtZUNvbnRleHQ9by5kZWZhdWx0LmNyZWF0ZUNvbnRleHQoe2RvY3VtZW50OnIsd2luZG93OnN9KSxkPSh0LnVzZUZyYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdC51c2VDb250ZXh0KGwpfSxsLlByb3ZpZGVyKSxjPWwuQ29uc3VtZXI7dC5GcmFtZUNvbnRleHRQcm92aWRlcj1kLHQuRnJhbWVDb250ZXh0Q29uc3VtZXI9Y30sNjAwMjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oNzc5Myk7ZnVuY3Rpb24gYSgpe31mdW5jdGlvbiBvKCl7fW8ucmVzZXRXYXJuaW5nQ2FjaGU9YSxlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLGEsbyxyKXtpZihyIT09aSl7dmFyIHM9bmV3IEVycm9yKCJDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiBVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzIik7dGhyb3cgcy5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIixzfX1mdW5jdGlvbiB0KCl7cmV0dXJuIGV9ZS5pc1JlcXVpcmVkPWU7dmFyIG49e2FycmF5OmUsYmlnaW50OmUsYm9vbDplLGZ1bmM6ZSxudW1iZXI6ZSxvYmplY3Q6ZSxzdHJpbmc6ZSxzeW1ib2w6ZSxhbnk6ZSxhcnJheU9mOnQsZWxlbWVudDplLGVsZW1lbnRUeXBlOmUsaW5zdGFuY2VPZjp0LG5vZGU6ZSxvYmplY3RPZjp0LG9uZU9mOnQsb25lT2ZUeXBlOnQsc2hhcGU6dCxleGFjdDp0LGNoZWNrUHJvcFR5cGVzOm8scmVzZXRXYXJuaW5nQ2FjaGU6YX07cmV0dXJuIG4uUHJvcFR5cGVzPW4sbn19LDYxNzc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7QUg6ZnVuY3Rpb24oKXtyZXR1cm4gcH0saTc6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sbUw6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sbjpmdW5jdGlvbigpe3JldHVybiBjfX0pO3ZhciBpLGEsbz1uKDc4ODgpLHI9bigzNDgwKSxzPW4oOTg1MyksbD1uKDg3OTUpLGQ9big3OTMyKSxjPShuKDczNjYpLG4oMzQ1NCksZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHM7aWYobnVsbD09dHx8IW8uaC5jYWxsKHQsImNzcyIpKXJldHVybiByLmNyZWF0ZUVsZW1lbnQuYXBwbHkodm9pZCAwLG4pO3ZhciBpPW4ubGVuZ3RoLGE9bmV3IEFycmF5KGkpO2FbMF09by5FLGFbMV09KDAsby5jKShlLHQpO2Zvcih2YXIgcz0yO3M8aTtzKyspYVtzXT1uW3NdO3JldHVybiByLmNyZWF0ZUVsZW1lbnQuYXBwbHkobnVsbCxhKX0pO2k9Y3x8KGM9e30pLGF8fChhPWkuSlNYfHwoaS5KU1g9e30pKTt2YXIgdT0oMCxvLncpKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5zdHlsZXMsaT0oMCxkLkopKFtuXSx2b2lkIDAsci51c2VDb250ZXh0KG8uVCkpLGE9ci51c2VSZWYoKTtyZXR1cm4oMCxsLmkpKGZ1bmN0aW9uKCl7dmFyIGU9dC5rZXkrIi1nbG9iYWwiLG49bmV3IHQuc2hlZXQuY29uc3RydWN0b3Ioe2tleTplLG5vbmNlOnQuc2hlZXQubm9uY2UsY29udGFpbmVyOnQuc2hlZXQuY29udGFpbmVyLHNwZWVkeTp0LnNoZWV0LmlzU3BlZWR5fSksbz0hMSxyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlW2RhdGEtZW1vdGlvbj0iJytlKyIgIitpLm5hbWUrJyJdJyk7cmV0dXJuIHQuc2hlZXQudGFncy5sZW5ndGgmJihuLmJlZm9yZT10LnNoZWV0LnRhZ3NbMF0pLG51bGwhPT1yJiYobz0hMCxyLnNldEF0dHJpYnV0ZSgiZGF0YS1lbW90aW9uIixlKSxuLmh5ZHJhdGUoW3JdKSksYS5jdXJyZW50PVtuLG9dLGZ1bmN0aW9uKCl7bi5mbHVzaCgpfX0sW3RdKSwoMCxsLmkpKGZ1bmN0aW9uKCl7dmFyIGU9YS5jdXJyZW50LG49ZVswXTtpZihlWzFdKWVbMV09ITE7ZWxzZXtpZih2b2lkIDAhPT1pLm5leHQmJigwLHMuc2spKHQsaS5uZXh0LCEwKSxuLnRhZ3MubGVuZ3RoKXt2YXIgbz1uLnRhZ3Nbbi50YWdzLmxlbmd0aC0xXS5uZXh0RWxlbWVudFNpYmxpbmc7bi5iZWZvcmU9byxuLmZsdXNoKCl9dC5pbnNlcnQoIiIsaSxuLCExKX19LFt0LGkubmFtZV0pLG51bGx9KTtmdW5jdGlvbiBwKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuKDAsZC5KKSh0KX1mdW5jdGlvbiBmKCl7dmFyIGU9cC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSx0PSJhbmltYXRpb24tIitlLm5hbWU7cmV0dXJue25hbWU6dCxzdHlsZXM6IkBrZXlmcmFtZXMgIit0KyJ7IitlLnN0eWxlcysifSIsYW5pbToxLHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIl9FTU9fIit0aGlzLm5hbWUrIl8iK3RoaXMuc3R5bGVzKyJfRU1PXyJ9fX19LDY5NzA6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW4oOTk4MSksYT1uKDE2Miksbz1hO28udjE9aSxvLnY0PWEsZS5leHBvcnRzPW99LDczNTk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCksYT1uKDM0ODApLG89KHIoYSkscihuKDIyMDApKSk7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLGZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxpKHQsW3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucHJvcHMuY29udGVudERpZE1vdW50KCl9fSx7a2V5OiJjb21wb25lbnREaWRVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wcm9wcy5jb250ZW50RGlkVXBkYXRlKCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGEuQ2hpbGRyZW4ub25seSh0aGlzLnByb3BzLmNoaWxkcmVuKX19XSksdH0oYS5Db21wb25lbnQpO3MucHJvcFR5cGVzPXtjaGlsZHJlbjpvLmRlZmF1bHQuZWxlbWVudC5pc1JlcXVpcmVkLGNvbnRlbnREaWRNb3VudDpvLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLGNvbnRlbnREaWRVcGRhdGU6by5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZH0sdC5kZWZhdWx0PXN9LDc3OTM6ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQifSw4MTA3OmZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXtpZihlJiZ0KXt2YXIgbj1BcnJheS5pc0FycmF5KHQpP3Q6dC5zcGxpdCgiLCIpO2lmKDA9PT1uLmxlbmd0aClyZXR1cm4hMDt2YXIgaT1lLm5hbWV8fCIiLGE9KGUudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCksbz1hLnJlcGxhY2UoL1wvLiokLywiIik7cmV0dXJuIG4uc29tZShmdW5jdGlvbihlKXt2YXIgdD1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpO3JldHVybiIuIj09PXQuY2hhckF0KDApP2kudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCh0KTp0LmVuZHNXaXRoKCIvKiIpP289PT10LnJlcGxhY2UoL1wvLiokLywiIik6YT09PXR9KX1yZXR1cm4hMH19LDg4OTI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuKDI0MjEpfSw4OTY2OmZ1bmN0aW9uKGUsdCl7dmFyIG47ZnVuY3Rpb24gaShlLHQpe3ZhciBuPVtdLGk9MDtmdW5jdGlvbiBhKGUpe3JldHVybiBuLnB1c2goZSksdH1mdW5jdGlvbiBvKCl7cmV0dXJuIG5baSsrXX1yZXR1cm57dG9rZW5pemU6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShlLGEpfSxkZXRva2VuaXplOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UobmV3IFJlZ0V4cCgiKCIrdCsiKSIsImciKSxvKX19fW49bmV3IGZ1bmN0aW9uKCl7dmFyIGU9ImBUTVBgIix0PSJbXlxcdTAwMjAtXFx1MDA3ZV0iLG49Iig/OlswLTldKlxcLlswLTldK3xbMC05XSspIixhPSJkaXJlY3Rpb25cXHMqOlxccyoiLG89IlsnXCJdP1xccyoiLHI9IihefFteYS16QS1aXSkiLHM9IlxcL1xcKlxcIT9cXHMqQG5vZmxpcFxccypcXCpcXC8iLGw9Iig/Oig/Oig/OlxcXFxbMC05YS1mXXsxLDZ9KSg/OlxcclxcbnxcXHMpPyl8XFxcXFteXFxyXFxuXFxmMC05YS1mXSkiLGQ9Iig/OltfYS16MC05LV18Iit0KyJ8IitsKyIpIixjPW4rIig/OlxccyooPzplbXxleHxweHxjbXxtbXxpbnxwdHxwY3xkZWd8cmFkfGdyYWR8bXN8c3xoenxraHp8JSl8IisoIi0/IisoIig/OltfYS16XXwiK3QrInwiK2wrIikiKStkKyIqIikrIik/Iix1PSIoKD86LT8iK2MrIil8KD86aW5oZXJpdHxhdXRvKSkiLHA9IigjPyIrZCsiK3woPzpyZ2JhP3xoc2xhPylcXChbIFxcZC4sJS1dK1xcKSkiLGY9Iig/OlshIyQlJiotfl18Iit0KyJ8IitsKyIpKj8iLG09Iig/IVthLXpBLVpdKSIsaD0iKD8hKCIrZCsifFxccj9cXG58XFxzfCN8XFw6fFxcLnxcXCx8XFwrfD58XFwofFxcKXxcXFt8XFxdfD18XFwqPXx+PXxcXF49fCdbXiddKiddKSo/eykiLGc9Iig/ISIrZitvKyJcXCkpIixiPSIoPz0iK2YrbysiXFwpKSIsdj0iKFxccyooPzohaW1wb3J0YW50XFxzKik/Wzt9XSkiLHg9bmV3IFJlZ0V4cCgiYFRNUGAiLCJnIikseT1uZXcgUmVnRXhwKCJcXC9cXCpbXipdKlxcKisoW15cXC8qXVteKl0qXFwqKykqXFwvIiwiZ2kiKSx3PW5ldyBSZWdFeHAoIigiK3MraCsiW147fV0rOz8pIiwiZ2kiKSxrPW5ldyBSZWdFeHAoIigiK3MrIlteXFx9XSo/fSkiLCJnaSIpLEE9bmV3IFJlZ0V4cCgiKCIrYSsiKWx0ciIsImdpIiksQz1uZXcgUmVnRXhwKCIoIithKyIpcnRsIiwiZ2kiKSxFPW5ldyBSZWdFeHAocisiKGxlZnQpIittK2craCwiZ2kiKSxTPW5ldyBSZWdFeHAocisiKHJpZ2h0KSIrbStnK2gsImdpIiksRD1uZXcgUmVnRXhwKHIrIihsZWZ0KSIrYiwiZ2kiKSxZPW5ldyBSZWdFeHAocisiKHJpZ2h0KSIrYiwiZ2kiKSxUPW5ldyBSZWdFeHAocisiKGx0cikiK2IsImdpIiksRj1uZXcgUmVnRXhwKHIrIihydGwpIitiLCJnaSIpLEk9bmV3IFJlZ0V4cChyKyIoW25zXT8pZS1yZXNpemUiLCJnaSIpLF89bmV3IFJlZ0V4cChyKyIoW25zXT8pdy1yZXNpemUiLCJnaSIpLE09bmV3IFJlZ0V4cCgiKCg/Om1hcmdpbnxwYWRkaW5nfGJvcmRlci13aWR0aClcXHMqOlxccyopIit1KyIoXFxzKykiK3UrIihcXHMrKSIrdSsiKFxccyspIit1K3YsImdpIiksTj1uZXcgUmVnRXhwKCIoKD86LWNvbG9yfGJvcmRlci1zdHlsZSlcXHMqOlxccyopIitwKyIoXFxzKykiK3ArIihcXHMrKSIrcCsiKFxccyspIitwK3YsImdpIiksTz1uZXcgUmVnRXhwKCIoYmFja2dyb3VuZCg/Oi1wb3NpdGlvbik/XFxzKjpcXHMqKD86W146O31cXHNdK1xccyspKj8pKCIrYysiKSIsImdpIiksUj1uZXcgUmVnRXhwKCIoYmFja2dyb3VuZC1wb3NpdGlvbi14XFxzKjpcXHMqKSgtPyIrbisiJSkiLCJnaSIpLGo9bmV3IFJlZ0V4cCgiKGJvcmRlci1yYWRpdXNcXHMqOlxccyopIit1KyIoPzooPzpcXHMrIit1KyIpKD86XFxzKyIrdSsiKT8oPzpcXHMrIit1KyIpPyk/KD86KD86KD86XFxzKlxcL1xccyopIit1KyIpKD86XFxzKyIrdSsiKT8oPzpcXHMrIit1KyIpPyg/OlxccysiK3UrIik/KT8iK3YsImdpIiksUD1uZXcgUmVnRXhwKCIoYm94LXNoYWRvd1xccyo6XFxzKig/Omluc2V0XFxzKik/KSIrdSwiZ2kiKSx6PW5ldyBSZWdFeHAoIih0ZXh0LXNoYWRvd1xccyo6XFxzKikiK3UrIihcXHMqKSIrcCwiZ2kiKSxMPW5ldyBSZWdFeHAoIih0ZXh0LXNoYWRvd1xccyo6XFxzKikiK3ArIihcXHMqKSIrdSwiZ2kiKSxVPW5ldyBSZWdFeHAoIih0ZXh0LXNoYWRvd1xccyo6XFxzKikiK3UsImdpIiksQj1uZXcgUmVnRXhwKCIodHJhbnNmb3JtXFxzKjpbXjt9XSopKHRyYW5zbGF0ZVhcXHMqXFwoXFxzKikiK3UrIihcXHMqXFwpKSIsImdpIiksSD1uZXcgUmVnRXhwKCIodHJhbnNmb3JtXFxzKjpbXjt9XSopKHRyYW5zbGF0ZVxccypcXChcXHMqKSIrdSsiKCg/OlxccyosXFxzKiIrdSsiKXswLDJ9XFxzKlxcKSkiLCJnaSIpO2Z1bmN0aW9uIHEoZSx0LG4pe3ZhciBpLGE7cmV0dXJuIiUiPT09bi5zbGljZSgtMSkmJigtMSE9PShpPW4uaW5kZXhPZigiLiIpKT8oYT1uLmxlbmd0aC1pLTIsbj0obj0xMDAtcGFyc2VGbG9hdChuKSkudG9GaXhlZChhKSsiJSIpOm49MTAwLXBhcnNlRmxvYXQobikrIiUiKSx0K259ZnVuY3Rpb24gVihlKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgNDplPVtlWzFdLGVbMF0sZVszXSxlWzJdXTticmVhaztjYXNlIDM6ZT1bZVsxXSxlWzBdLGVbMV0sZVsyXV07YnJlYWs7Y2FzZSAyOmU9W2VbMV0sZVswXV07YnJlYWs7Y2FzZSAxOmU9W2VbMF1dfXJldHVybiBlLmpvaW4oIiAiKX1mdW5jdGlvbiAkKGUsdCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLGk9bi5zbGljZSgyLDYpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pLGE9bi5zbGljZSg2LDEwKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxvPW5bMTBdfHwiIjtyZXR1cm4gdCsoYS5sZW5ndGg/VihpKSsiIC8gIitWKGEpOlYoaSkpK299ZnVuY3Rpb24gVyhlKXtyZXR1cm4gMD09PXBhcnNlRmxvYXQoZSk/ZToiLSI9PT1lWzBdP2Uuc2xpY2UoMSk6Ii0iK2V9ZnVuY3Rpb24gSyhlLHQsbil7cmV0dXJuIHQrVyhuKX1mdW5jdGlvbiBHKGUsdCxuLGksYSl7cmV0dXJuIHQrbitXKGkpK2F9ZnVuY3Rpb24gWChlLHQsbixpLGEpe3JldHVybiB0K24raStXKGEpfXJldHVybnt0cmFuc2Zvcm06ZnVuY3Rpb24odCxuKXt2YXIgYT1uZXcgaSh3LCJgTk9GTElQX1NJTkdMRWAiKSxvPW5ldyBpKGssImBOT0ZMSVBfQ0xBU1NgIikscj1uZXcgaSh5LCJgQ09NTUVOVGAiKTtyZXR1cm4gdD1yLnRva2VuaXplKG8udG9rZW5pemUoYS50b2tlbml6ZSh0LnJlcGxhY2UoImAiLCIlNjAiKSkpKSxuLnRyYW5zZm9ybURpckluVXJsJiYodD10LnJlcGxhY2UoVCwiJDEiK2UpLnJlcGxhY2UoRiwiJDFsdHIiKS5yZXBsYWNlKHgsInJ0bCIpKSxuLnRyYW5zZm9ybUVkZ2VJblVybCYmKHQ9dC5yZXBsYWNlKEQsIiQxIitlKS5yZXBsYWNlKFksIiQxbGVmdCIpLnJlcGxhY2UoeCwicmlnaHQiKSksdD10LnJlcGxhY2UoQSwiJDEiK2UpLnJlcGxhY2UoQywiJDFsdHIiKS5yZXBsYWNlKHgsInJ0bCIpLnJlcGxhY2UoRSwiJDEiK2UpLnJlcGxhY2UoUywiJDFsZWZ0IikucmVwbGFjZSh4LCJyaWdodCIpLnJlcGxhY2UoSSwiJDEkMiIrZSkucmVwbGFjZShfLCIkMSQyZS1yZXNpemUiKS5yZXBsYWNlKHgsInctcmVzaXplIikucmVwbGFjZShqLCQpLnJlcGxhY2UoUCxLKS5yZXBsYWNlKHosWCkucmVwbGFjZShMLFgpLnJlcGxhY2UoVSxLKS5yZXBsYWNlKEIsRykucmVwbGFjZShILEcpLnJlcGxhY2UoTSwiJDEkMiQzJDgkNSQ2JDckNCQ5IikucmVwbGFjZShOLCIkMSQyJDMkOCQ1JDYkNyQ0JDkiKS5yZXBsYWNlKE8scSkucmVwbGFjZShSLHEpLHQ9YS5kZXRva2VuaXplKG8uZGV0b2tlbml6ZShyLmRldG9rZW5pemUodCkpKX19fSxlLmV4cG9ydHM/dC50cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LGkpe3ZhciBhO3JldHVybiJvYmplY3QiPT10eXBlb2YgdD9hPXQ6KGE9e30sImJvb2xlYW4iPT10eXBlb2YgdCYmKGEudHJhbnNmb3JtRGlySW5Vcmw9dCksImJvb2xlYW4iPT10eXBlb2YgaSYmKGEudHJhbnNmb3JtRWRnZUluVXJsPWkpKSxuLnRyYW5zZm9ybShlLGEpfToidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5jc3NqYW51cz1uKX0sOTk4MTpmdW5jdGlvbihlLHQsbil7dmFyIGksYSxvPW4oNTAwMikscj1uKDU4MTEpLHM9MCxsPTA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgZD10JiZufHwwLGM9dHx8W10sdT0oZT1lfHx7fSkubm9kZXx8aSxwPXZvaWQgMCE9PWUuY2xvY2tzZXE/ZS5jbG9ja3NlcTphO2lmKG51bGw9PXV8fG51bGw9PXApe3ZhciBmPW8oKTtudWxsPT11JiYodT1pPVsxfGZbMF0sZlsxXSxmWzJdLGZbM10sZls0XSxmWzVdXSksbnVsbD09cCYmKHA9YT0xNjM4MyYoZls2XTw8OHxmWzddKSl9dmFyIG09dm9pZCAwIT09ZS5tc2Vjcz9lLm1zZWNzOihuZXcgRGF0ZSkuZ2V0VGltZSgpLGg9dm9pZCAwIT09ZS5uc2Vjcz9lLm5zZWNzOmwrMSxnPW0tcysoaC1sKS8xZTQ7aWYoZzwwJiZ2b2lkIDA9PT1lLmNsb2Nrc2VxJiYocD1wKzEmMTYzODMpLChnPDB8fG0+cykmJnZvaWQgMD09PWUubnNlY3MmJihoPTApLGg+PTFlNCl0aHJvdyBuZXcgRXJyb3IoInV1aWQudjEoKTogQ2FuJ3QgY3JlYXRlIG1vcmUgdGhhbiAxME0gdXVpZHMvc2VjIik7cz1tLGw9aCxhPXA7dmFyIGI9KDFlNCooMjY4NDM1NDU1JihtKz0xMjIxOTI5MjhlNSkpK2gpJTQyOTQ5NjcyOTY7Y1tkKytdPWI+Pj4yNCYyNTUsY1tkKytdPWI+Pj4xNiYyNTUsY1tkKytdPWI+Pj44JjI1NSxjW2QrK109MjU1JmI7dmFyIHY9bS80Mjk0OTY3Mjk2KjFlNCYyNjg0MzU0NTU7Y1tkKytdPXY+Pj44JjI1NSxjW2QrK109MjU1JnYsY1tkKytdPXY+Pj4yNCYxNXwxNixjW2QrK109dj4+PjE2JjI1NSxjW2QrK109cD4+Pjh8MTI4LGNbZCsrXT0yNTUmcDtmb3IodmFyIHg9MDt4PDY7Kyt4KWNbZCt4XT11W3hdO3JldHVybiB0fHxyKGMpfX19XSk7"}},"time_used":9,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":9,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/fonts/RedHatDisplay-Bold.woff2","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:15.775Z","timestamp":1785145635775,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /fonts/RedHatDisplay-Bold.woff2 HTTP/1.1\r\nHost: bit-core.top\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://bit-core.top/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\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\ndate: Mon, 27 Jul 2026 09:47:15 GMT\r\ncontent-type: font/woff2\r\ncontent-length: 19688\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 03:56:18 GMT\r\nlast-modified: Sun, 16 Nov 2025 06:36:48 GMT\r\netag: \"4ce8-69197100-d19e9b4d8f406420;;;\"\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 21057\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 6a8e37c7802dc3f6f75436d3f9fc3351-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":19688,"size_decoded":20212,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 19688, version 1.0","md5":"02e7adabf7a6dbabe8dde9566b25fd4b","sha1":"855855255ab38f66f4b532dec353b7d248ec54f8","sha256":"2632350150729e5432013ca98c01588c89c707f4dcf359076ce8b90cbf369dc3","sha512":"2028d537318915109d610b344d87e2b6c53b7d8fa4b462c8fbcb0925e8aa3559857e73fc4e5137f2dd59850258a7e4a9af338a83838342e9d503d06a0ba07498","ssdeep":"384:nVDm5IDdxSDzEQ5uckrIgQ2h5irFI+1RsnOsek8uX5hNKw+hnCT58nN/X1:nLZxiYJhFxTirFpjSMv2KjRCNEX1","tlshash":"8592d0f18aba8a4db57c5bbc676aaed44210870387543b93e01d887fe4b371e15e2613","first_seen":"2023-10-28T00:17:16Z","last_seen":"2026-07-29T06:16:17.895483Z","times_seen":10,"resource_available":false,"data":"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"}},"time_used":61,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":40,"receive":21,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/js/app.js?v=1684946825","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.027Z","timestamp":1785145636027,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /js/app.js?v=1684946825 HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\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\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 6644\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 08:00:23 GMT\r\nlast-modified: Sun, 16 Nov 2025 06:36:48 GMT\r\netag: \"6c30-69197100-5ebf2bc1187d26b3;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 6412\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 9b2bd38f38c021aa8091b17e1f7b0169-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":27696,"size_decoded":7202,"mime_type":"application/x-javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (27693), with no line terminators","md5":"3e5132621504d036256cf63373fe03c0","sha1":"1a460ed5dd953011072e00b0c19a01aa82c72fef","sha256":"fc307c165e547184a53a96ac052f3c32f5aa1a07cb852d010be895f32a3af295","sha512":"b0a0d2bc486acc222161d998755aead741d2385f7f6bc15e1e2bfdc5f1947ab7dbb281597c4c6b8a3c535d1330bc56616d23d01b6c691e222a6bb8d84ccb9324","ssdeep":"384:wSAUKWRrVHuPkOY2Hqnj46ldmXMxZ53BUaZe2MEgVnZDZDz9PdmnMybxko7NMuDc:wHhkxkCjRldLgOkLDZD1QnbbN7CuglwK","tlshash":"6fc2b540b2c5b4bb43a7d56284178106b0647249a81b94bcf7bdbcd48baac04f67af77","first_seen":"2026-07-27T02:49:41.0193Z","last_seen":"2026-07-29T06:16:17.90991Z","times_seen":7,"resource_available":true,"data":"IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBlLHQ9ezczODpmdW5jdGlvbihlLHQsaSl7dmFyIHIsbixzLGE9aSg1OTkpLG89aSg5MzUpO2NsYXNzIGwgZXh0ZW5kcyBhLlFye29wZW4oKXsoMCxvLklPKSh0aGlzLnBhbmVsVGFyZ2V0LCJuYXYtbW9iaWxlIil9Y2xvc2UoKXsoMCxvLlp1KSh0aGlzLnBhbmVsVGFyZ2V0LCJuYXYtbW9iaWxlIil9fXI9bCxzPVsicGFuZWwiXSwobj1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIGk9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWkpe3ZhciByPWkuY2FsbChlLHQpO2lmKCJvYmplY3QiIT10eXBlb2YgcilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGUsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgdD90OlN0cmluZyh0KX0obj0idGFyZ2V0cyIpKWluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbix7dmFsdWU6cyxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbbl09cztjbGFzcyBjIGV4dGVuZHMgYS5Rcntjb25uZWN0KCl7fXN3aXRjaChlKXt0aGlzLnRvZ2dsZUFjdGl2ZUNsYXNzKCksdGhpcy5kaXNwbGF5UGFuZWwoKSx0aGlzLmRpc3BhdGNoKCJjaGFuZ2UiLHtkZXRhaWw6e3ZhbHVlOmUucGFyYW1zLnZhbHVlfX0pfXRvZ2dsZUFjdGl2ZUNsYXNzKCl7dGhpcy50YWJUYXJnZXRzLmZvckVhY2goKGU9PntlLmNsYXNzTGlzdC50b2dnbGUoImlzLWFjdGl2ZSIsZT09PWV2ZW50LmN1cnJlbnRUYXJnZXQpfSkpfWRpc3BsYXlQYW5lbCgpe3RoaXMudGFiVGFyZ2V0cy5mb3JFYWNoKCgoZSx0KT0+e2NvbnN0IGk9dGhpcy5wYW5lbFRhcmdldHNbdF07ZS5jbGFzc0xpc3QuY29udGFpbnMoImlzLWFjdGl2ZSIpP2kuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik6aS5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKX0pKX19IWZ1bmN0aW9uKGUsdCxpKXsodD1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIGk9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWkpe3ZhciByPWkuY2FsbChlLHQpO2lmKCJvYmplY3QiIT10eXBlb2YgcilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGUsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgdD90OlN0cmluZyh0KX0odCkpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTppLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1pfShjLCJ0YXJnZXRzIixbInRhYiIsInBhbmVsIl0pO3ZhciB1PWkoNDE4KTtjbGFzcyBkIGV4dGVuZHMgYS5Rcnt0b2dnbGUoKXsoMCx1LlopKHRoaXMuYm9keVRhcmdldCx7ZHVyYXRpb246MzAwfSksdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImlzLW9wZW4iKX19IWZ1bmN0aW9uKGUsdCxpKXsodD1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIGk9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWkpe3ZhciByPWkuY2FsbChlLHQpO2lmKCJvYmplY3QiIT10eXBlb2YgcilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGUsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgdD90OlN0cmluZyh0KX0odCkpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTppLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1pfShkLCJ0YXJnZXRzIixbImJvZHkiXSk7Y2xhc3MgaCBleHRlbmRzIGEuUXJ7aW5pdGlhbGl6ZSgpe3RoaXMub3Blbj10aGlzLm9wZW4uYmluZCh0aGlzKX1jb25uZWN0KCl7dGhpcy50cmlnZ2VyVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLm9wZW4pfW9wZW4oKXtjb25zdCBlPXRoaXMuZHJvcGRvd25UYXJnZXQ7ZnVuY3Rpb24gdChpKXtlLmNvbnRhaW5zKGkudGFyZ2V0KXx8KCgwLG8uWnUpKGUsImRyb3Bkb3duIiksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix0KSl9ZS5jbGFzc0xpc3QuY29udGFpbnMoImhpZGRlbiIpJiYoZS5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKSwoMCxvLklPKShlLCJkcm9wZG93biIpLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0KX0pKSl9fSFmdW5jdGlvbihlLHQsaSl7KHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiBlO3ZhciBpPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1pKXt2YXIgcj1pLmNhbGwoZSx0KTtpZigib2JqZWN0IiE9dHlwZW9mIHIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShlLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDpTdHJpbmcodCl9KHQpKWluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6aSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09aX0oaCwidGFyZ2V0cyIsWyJ0cmlnZ2VyIiwiZHJvcGRvd24iXSk7dmFyIHA9aSg1MSk7Y2xhc3MgbSBleHRlbmRzIGEuUXJ7Y29ubmVjdCgpe2NvbnN0IGU9T2JqZWN0LmFzc2lnbih7fSx0aGlzLmRlZmF1bHRPcHRpb25zLHRoaXMub3B0aW9uc1ZhbHVlKTt0aGlzLnN3aXBlckluc3RhbmNlPW5ldyBwLlpQKHRoaXMuZWxlbWVudCxlKX1nZXQgZGVmYXVsdE9wdGlvbnMoKXtyZXR1cm57bW9kdWxlczpbcC5vTSxwLkxXLHAucHRdLGRpcmVjdGlvbjoiaG9yaXpvbnRhbCIsbG9vcDohMSxzY3JvbGxiYXI6e2VsOiIuc3dpcGVyLXNjcm9sbGJhciIsZHJhZ2dhYmxlOiEwfSxzbGlkZXNQZXJWaWV3OjUsY2VudGVySW5zdWZmaWNpZW50U2xpZGVzOiEwLGdyYWJDdXJzb3I6ITAscHJlbG9hZEltYWdlczohMSx3YXRjaFNsaWRlc1Zpc2liaWxpdHk6ITAscm91bmRMZW5ndGhzOiEwLGxhenk6e2NoZWNrSW5WaWV3OiEwfSxyZXNpc3RhbmNlUmF0aW86LjYsd2F0Y2hPdmVyZmxvdzohMH19fWZ1bmN0aW9uIHYoZSx0LGkpe3JldHVybih0PWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgaT1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09aSl7dmFyIHI9aS5jYWxsKGUsdCk7aWYoIm9iamVjdCIhPXR5cGVvZiByKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oZSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfSh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPWksZX0hZnVuY3Rpb24oZSx0LGkpeyh0PWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgaT1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09aSl7dmFyIHI9aS5jYWxsKGUsdCk7aWYoIm9iamVjdCIhPXR5cGVvZiByKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oZSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfSh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPWl9KG0sInZhbHVlcyIse29wdGlvbnM6T2JqZWN0fSk7Y2xhc3MgZyBleHRlbmRzIGEuUXJ7aW5pdGlhbGl6ZSgpe3RoaXMudGljaz10aGlzLnRpY2suYmluZCh0aGlzKSx0aGlzLnRpY2soKSx0aGlzLmludGVydmFsPXNldEludGVydmFsKHRoaXMudGljaywxZTMpfXRpY2soKXtjb25zdCBlPXRoaXMudGltZXN0YW1wVmFsdWUtRGF0ZS5ub3coKTtpZihlPDApcmV0dXJuIHZvaWQgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtjb25zdCB0PU1hdGguZmxvb3IoZS84NjRlNSksaT1NYXRoLmZsb29yKGUlODY0ZTUvMzZlNSkscj1NYXRoLmZsb29yKGUlMzZlNS82ZTQpLG49TWF0aC5mbG9vcihlJTZlNC8xZTMpO3RoaXMuZGF5c1RhcmdldC50ZXh0Q29udGVudD10aGlzLnBhZCh0KSx0aGlzLmhvdXJzVGFyZ2V0LnRleHRDb250ZW50PXRoaXMucGFkKGkpLHRoaXMubWludXRlc1RhcmdldC50ZXh0Q29udGVudD10aGlzLnBhZChyKSx0aGlzLnNlY29uZHNUYXJnZXQudGV4dENvbnRlbnQ9dGhpcy5wYWQobil9cGFkKGUpe3JldHVybiBTdHJpbmcoZSkucGFkU3RhcnQoMiwiMCIpfX12KGcsInRhcmdldHMiLFsiZGF5cyIsImhvdXJzIiwibWludXRlcyIsInNlY29uZHMiXSksdihnLCJ2YWx1ZXMiLHt0aW1lc3RhbXA6TnVtYmVyfSk7Y2xhc3MgZiBleHRlbmRzIGEuUXJ7Y3JlYXRlUG9wdXAoZSl7Y29uc3QgdD12b2lkIDAhPT13aW5kb3cuc2NyZWVuTGVmdD93aW5kb3cuc2NyZWVuTGVmdDp3aW5kb3cuc2NyZWVuWCxpPXZvaWQgMCE9PXdpbmRvdy5zY3JlZW5Ub3A/d2luZG93LnNjcmVlblRvcDp3aW5kb3cuc2NyZWVuWSxyPXdpbmRvdy5pbm5lcldpZHRoP3dpbmRvdy5pbm5lcldpZHRoOmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aD9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg6c2NyZWVuLndpZHRoLG49d2luZG93LmlubmVySGVpZ2h0P3dpbmRvdy5pbm5lckhlaWdodDpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0P2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ6c2NyZWVuLmhlaWdodCxzPXIvd2luZG93LnNjcmVlbi5hdmFpbFdpZHRoLGE9KHItNjAwKS8yL3MrdCxvPShuLTQwMCkvMi9zK2ksbD13aW5kb3cub3BlbihlLCIiLGBcbiAgICAgICAgc2Nyb2xsYmFycz15ZXMsXG4gICAgICAgIHdpZHRoPSR7NjAwL3N9LCBcbiAgICAgICAgaGVpZ2h0PSR7NDAwL3N9LCBcbiAgICAgICAgdG9wPSR7b30sIFxuICAgICAgICBsZWZ0PSR7YX1cbiAgICAgICAgYCk7d2luZG93LmZvY3VzJiZsLmZvY3VzKCl9c2hhcmVQYWdlKGUpe2xldHtwYXJhbXM6dH09ZTtjb25zdCBpPWVuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24ub3JpZ2luK3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSk7c3dpdGNoKHQubmV0d29yayl7Y2FzZSJmYWNlYm9vayI6dGhpcy5jcmVhdGVQb3B1cChgaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3NoYXJlci9zaGFyZXIucGhwP3U9JHtpfWApO2JyZWFrO2Nhc2UidHdpdHRlciI6dGhpcy5jcmVhdGVQb3B1cChgaHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQ/dXJsPSR7aX1gKX19fWNsYXNzIHkgZXh0ZW5kcyBhLlFye2Nvbm5lY3QoKXtjb25zdCBlPXRoaXMuZWxlbWVudDtlLnN0eWxlLnNldFByb3BlcnR5KCItLXZhbHVlIixlLnZhbHVlKSxlLnN0eWxlLnNldFByb3BlcnR5KCItLW1pbiIsZS5taW58fCIwIiksZS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1tYXgiLGUubWF4fHwiMTAwIiksZS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKCgpPT5lLnN0eWxlLnNldFByb3BlcnR5KCItLXZhbHVlIixlLnZhbHVlKSkpfX12YXIgYj1pKDQ2Nik7Y2xhc3MgdyBleHRlbmRzIGEuUXJ7Y29ubmVjdCgpe3RoaXMuc2xpbXNlbGVjdD1uZXcgYi5aKHtzZWxlY3Q6dGhpcy5lbGVtZW50LHNob3dTZWFyY2g6ITEsaGlkZVNlbGVjdGVkT3B0aW9uOiEwLG9uQ2hhbmdlOmU9Pnt0aGlzLmRpc3BhdGNoKCJjaGFuZ2UiLHtkZXRhaWw6ZX0pfSwuLi50aGlzLm9wdGlvbnNWYWx1ZX0pfWRpc2Nvbm5lY3QoKXt0aGlzLnNsaW1zZWxlY3QuZGVzdHJveSgpfX0hZnVuY3Rpb24oZSx0LGkpeyh0PWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgaT1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09aSl7dmFyIHI9aS5jYWxsKGUsdCk7aWYoIm9iamVjdCIhPXR5cGVvZiByKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oZSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfSh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPWl9KHcsInZhbHVlcyIse29wdGlvbnM6T2JqZWN0fSk7dmFyIFA9aSgxMzEpO2Z1bmN0aW9uIF8oZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3JldHVybihlPU51bWJlcihlKSkudG9Mb2NhbGVTdHJpbmcoImVuIix0KX1mdW5jdGlvbiBTKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm5gJHtfKGUse21pbmltdW1GcmFjdGlvbkRpZ2l0czoyLG1heGltdW1GcmFjdGlvbkRpZ2l0czoyLC4uLnR9KX3CoFVTRGB9ZnVuY3Rpb24geChlLHQsaSl7cmV0dXJuKHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiBlO3ZhciBpPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1pKXt2YXIgcj1pLmNhbGwoZSx0KTtpZigib2JqZWN0IiE9dHlwZW9mIHIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShlLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDpTdHJpbmcodCl9KHQpKWluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6aSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09aSxlfWNsYXNzIFQgZXh0ZW5kcyBhLlFye2Nvbm5lY3QoKXt0aGlzLmluaXRDdXJyZW5jeVNlbGVjdCgpLHRoaXMuaW5pdEFtb3VudElucHV0KCksdGhpcy5pbml0UGVyaW9kSW5wdXQoKSx0aGlzLnNldFZpc3VhbCgpLHRoaXMuY2FsY3VsYXRlKCl9aW5pdEN1cnJlbmN5U2VsZWN0KCl7Y29uc3QgZT10aGlzLnBhcmFtc1ZhbHVlLm1hcCgoZT0+e2NvbnN0IHQ9IlBFUEUiPT09ZS5jaWQ/InBuZyI6InN2ZyI7cmV0dXJue3RleHQ6ZS5uYW1lLHZhbHVlOmUuY2lkLGlubmVySFRNTDpgPGltZyBzcmM9Ii9pbWcvY3J5cHRvLyR7ZS5jaWR9LiR7dH0iIGNsYXNzPSJzcy1vcHRpb24taWNvbiIgYWx0PSIiPjxzcGFuPiR7ZS5uYW1lfTwvc3Bhbj48c3BhbiBjbGFzcz0ibWwtYXV0byB0ZXh0LXNlY29uZGFyeSI+JHtlLmVzdEFweX0lPC9zcGFuPmB9fSkpO3RoaXMuY3VycmVuY3lTZWxlY3Q9bmV3IGIuWih7c2VsZWN0OnRoaXMuY3VycmVuY3lUYXJnZXQsZGF0YTplLHNob3dTZWFyY2g6ITEsaGlkZVNlbGVjdGVkT3B0aW9uOiEwLG9uQ2hhbmdlOmU9Pnt0aGlzLmNhbGN1bGF0ZSgpfX0pfWluaXRBbW91bnRJbnB1dCgpe3RoaXMuYW1vdW50SW5wdXQ9KDAsUC5aUCkodGhpcy5hbW91bnRUYXJnZXQse21hc2s6TnVtYmVyLHNjYWxlOjIsc2lnbmVkOiExLHRob3VzYW5kc1NlcGFyYXRvcjoiLCIscGFkRnJhY3Rpb25hbFplcm9zOiEwLG5vcm1hbGl6ZVplcm9zOiEwLHJhZGl4OiIuIixtYXBUb1JhZGl4OlsiLCIsIi4iXSxtaW46MH0pLHRoaXMuYW1vdW50SW5wdXQub24oImFjY2VwdCIsdGhpcy5jYWxjdWxhdGUuYmluZCh0aGlzKSl9aW5pdFBlcmlvZElucHV0KCl7dGhpcy5wZXJpb2RUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLChlPT57dGhpcy5tb250aHNUYXJnZXQudGV4dENvbnRlbnQ9ZS50YXJnZXQudmFsdWUsdGhpcy5zZXRWaXN1YWwoKSx0aGlzLmNhbGN1bGF0ZSgpfSkpfXNldFZpc3VhbCgpe3RoaXMudmlzdWFsVGFyZ2V0LnN0eWxlLndpZHRoPXRoaXMucGVyaW9kVGFyZ2V0LnZhbHVlL3RoaXMucGVyaW9kVGFyZ2V0Lm1heCoxMDArIiUifWNhbGN1bGF0ZSgpe2NvbnN0IGU9dGhpcy5jdXJyZW5jeVNlbGVjdC5zZWxlY3RlZCgpLHQ9TnVtYmVyKHRoaXMuYW1vdW50SW5wdXQudW5tYXNrZWRWYWx1ZSksaT1OdW1iZXIodGhpcy5wZXJpb2RUYXJnZXQudmFsdWUpLHI9dCp0aGlzLnBhcmFtc1ZhbHVlLmZpbmQoKHQ9PnQuY2lkPT09ZSkpLnN0YWtlUGVyY2VudERhaWx5LzEwMCppKjMwO3RoaXMucmVzdWx0VGFyZ2V0LnRleHRDb250ZW50PVMocil9fXgoVCwidGFyZ2V0cyIsWyJjdXJyZW5jeSIsImFtb3VudCIsInBlcmlvZCIsIm1vbnRocyIsInJlc3VsdCIsInZpc3VhbCJdKSx4KFQsInZhbHVlcyIse3BhcmFtczpBcnJheX0pO2Z1bmN0aW9uIGooZSx0LGkpe3JldHVybih0PWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgaT1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09aSl7dmFyIHI9aS5jYWxsKGUsdCk7aWYoIm9iamVjdCIhPXR5cGVvZiByKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oZSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfSh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPWksZX1jbGFzcyBFIGV4dGVuZHMgYS5Rcntjb25uZWN0KCl7dGhpcy5pbml0Q3VycmVuY3lTZWxlY3QoKSx0aGlzLmluaXRBbW91bnRJbnB1dHMoKSx0aGlzLmluaXRQZXJpb2RJbnB1dCgpLHRoaXMuc2V0VmlzdWFsKCksdGhpcy5jYWxjdWxhdGUoKX1nZXQgcGFyYW1zKCl7cmV0dXJuIHRoaXMucGFyYW1zVmFsdWUuZmluZCgoZT0+ZS5jaWQ9PT10aGlzLmN1cnJlbmN5U2VsZWN0LnNlbGVjdGVkKCkpKX1nZXQgc2VsZWN0ZWRDaWQoKXtyZXR1cm4gdGhpcy5jdXJyZW5jeVNlbGVjdC5zZWxlY3RlZCgpfWdldCBhbW91bnRWYWx1ZSgpe3JldHVybiBOdW1iZXIodGhpcy5hbW91bnRJbnB1dC51bm1hc2tlZFZhbHVlKX1nZXQgYW1vdW50RXh0cmFWYWx1ZSgpe3JldHVybiBOdW1iZXIodGhpcy5hbW91bnRFeHRyYUlucHV0LnVubWFza2VkVmFsdWUpfWdldCBjb252ZXJ0ZWRFeHRyYSgpe3JldHVybiBOdW1iZXIodGhpcy5hbW91bnRJbnB1dC51bm1hc2tlZFZhbHVlKS8xfWdldCBwZXJpb2QoKXtyZXR1cm4gTnVtYmVyKHRoaXMucGVyaW9kVGFyZ2V0LnZhbHVlKX1nZXQgZGFpbHlQZXJjZW50KCl7cmV0dXJuIHRoaXMucGVyaW9kPT09dGhpcy5wYXJhbXMubWF4Q291bnREYXlzP051bWJlcih0aGlzLnBhcmFtcy5wZXJjZW50RGFpbHlNYXgpOk51bWJlcih0aGlzLnBhcmFtcy5wZXJjZW50RGFpbHlNaW4pfWdldCBkYWlseVBlcmNlbnRXaXRoRXh0cmEoKXtjb25zdCBlPXRoaXMuYW1vdW50RXh0cmFWYWx1ZS90aGlzLmNvbnZlcnRlZEV4dHJhKjEwMCp0aGlzLmV4dHJhUGVyY2VudFZhbHVlO3JldHVybiB0aGlzLmRhaWx5UGVyY2VudCtlfWluaXRDdXJyZW5jeVNlbGVjdCgpe2NvbnN0IGU9dGhpcy5wYXJhbXNWYWx1ZS5tYXAoKGU9Pntjb25zdCB0PSJQRVBFIj09PWUuY2lkPyJwbmciOiJzdmciO3JldHVybnt0ZXh0OmUuY2lkTmFtZSx2YWx1ZTplLmNpZCxpbm5lckhUTUw6YDxpbWcgc3JjPSIvaW1nL2NyeXB0by8ke2UuY2lkfS4ke3R9IiBjbGFzcz0ic3Mtb3B0aW9uLWljb24iIGFsdD0iIj48c3Bhbj4ke2UuY2lkTmFtZX08L3NwYW4+PHNwYW4gY2xhc3M9Im1sLWF1dG8gdGV4dC1zZWNvbmRhcnkiPiR7ZS5lc3RBcHlNYXh9JTwvc3Bhbj5gfX0pKTt0aGlzLmN1cnJlbmN5U2VsZWN0PW5ldyBiLlooe3NlbGVjdDp0aGlzLmN1cnJlbmN5VGFyZ2V0LGRhdGE6ZSxzaG93U2VhcmNoOiExLGhpZGVTZWxlY3RlZE9wdGlvbjohMCxvbkNoYW5nZTplPT57dGhpcy5jYWxjdWxhdGUoKX19KX1pbml0QW1vdW50SW5wdXRzKCl7dGhpcy5hbW91bnRJbnB1dD0oMCxQLlpQKSh0aGlzLmFtb3VudFRhcmdldCx7bWFzazpOdW1iZXIsc2NhbGU6MixzaWduZWQ6ITEsdGhvdXNhbmRzU2VwYXJhdG9yOiIsIixwYWRGcmFjdGlvbmFsWmVyb3M6ITAsbm9ybWFsaXplWmVyb3M6ITAscmFkaXg6Ii4iLG1hcFRvUmFkaXg6WyIsIiwiLiJdLG1pbjowfSksdGhpcy5hbW91bnRFeHRyYUlucHV0PSgwLFAuWlApKHRoaXMuYW1vdW50RXh0cmFUYXJnZXQse21hc2s6TnVtYmVyLHNjYWxlOjIsc2lnbmVkOiExLHRob3VzYW5kc1NlcGFyYXRvcjoiLCIscGFkRnJhY3Rpb25hbFplcm9zOiEwLG5vcm1hbGl6ZVplcm9zOiEwLHJhZGl4OiIuIixtYXBUb1JhZGl4OlsiLCIsIi4iXSxtaW46MCxhdXRvZml4OiJwYWQifSksdGhpcy5hbW91bnRJbnB1dC5vbigiYWNjZXB0IiwoKCk9Pnt0aGlzLmNhbGN1bGF0ZSgpfSkpLHRoaXMuYW1vdW50RXh0cmFJbnB1dC5vbigiYWNjZXB0IiwoKCk9Pnt0aGlzLmFtb3VudEV4dHJhVmFsdWU+dGhpcy5hbW91bnRWYWx1ZSYmKHRoaXMuYW1vdW50RXh0cmFJbnB1dC52YWx1ZT1TdHJpbmcodGhpcy5hbW91bnRWYWx1ZSkpLHRoaXMuY2FsY3VsYXRlKCl9KSl9aW5pdFBlcmlvZElucHV0KCl7dGhpcy5wZXJpb2RUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLChlPT57dGhpcy5kYXlzVGFyZ2V0LnRleHRDb250ZW50PWUudGFyZ2V0LnZhbHVlLHRoaXMuc2V0VmlzdWFsKCksdGhpcy5jYWxjdWxhdGUoKX0pKX1zZXRWaXN1YWwoKXt0aGlzLnZpc3VhbFRhcmdldC5zdHlsZS53aWR0aD0odGhpcy5wZXJpb2QtdGhpcy5wZXJpb2RUYXJnZXQubWluKS8odGhpcy5wZXJpb2RUYXJnZXQubWF4LXRoaXMucGVyaW9kVGFyZ2V0Lm1pbikqMTAwKyIlIn1jYWxjdWxhdGUoKXtjb25zdCBlPXRoaXMuYW1vdW50VmFsdWUsdD0oKGUsdCxpKT0+e2NvbnN0IHI9e2VzdEFQWTowLHRvdGFsUHJvZml0OjB9O2ZvcihsZXQgbj0wO248PXQtMTtuKyspe2NvbnN0IHQ9ZSppO3IuZXN0QVBZPXIuZXN0QVBZK2ksci50b3RhbFByb2ZpdD1yLnRvdGFsUHJvZml0K3R9cmV0dXJuIHIuZXN0QVBZPTEwMCpyLmVzdEFQWSxyfSkoZSx0aGlzLnBlcmlvZCx0aGlzLmRhaWx5UGVyY2VudFdpdGhFeHRyYS8xMDApLnRvdGFsUHJvZml0O3RoaXMucmVzdWx0VGFyZ2V0LnRleHRDb250ZW50PVModCtlKX19aihFLCJ0YXJnZXRzIixbImN1cnJlbmN5IiwiYW1vdW50IiwiYW1vdW50RXh0cmEiLCJwZXJpb2QiLCJkYXlzIiwicmVzdWx0IiwidmlzdWFsIl0pLGooRSwidmFsdWVzIix7cGFyYW1zOkFycmF5LGV4dHJhUGVyY2VudDpOdW1iZXJ9KTt2YXIgaz1pKDcyMSksQz1pKDkyNyksJD1pLm4oQyksTz1pKDQ3OCksVj0oZSx0KT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKih0LWUpKStlO2Z1bmN0aW9uIEEoZSx0LGkpe3JldHVybih0PWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgaT1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09aSl7dmFyIHI9aS5jYWxsKGUsdCk7aWYoIm9iamVjdCIhPXR5cGVvZiByKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oZSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfSh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPWksZX1jbGFzcyBMIGV4dGVuZHMgYS5Rcntjb25uZWN0KCl7dGhpcy5pbml0UmVxdWVzdERhdGEoKSx0aGlzLmJ1eUFuaW1hdGU9KDAsTy5aUCkodGhpcy5idXlUYXJnZXQse2Rpc3Jlc3BlY3RVc2VyTW90aW9uUHJlZmVyZW5jZTohMH0pLHRoaXMuc2VsbEFuaW1hdGU9KDAsTy5aUCkodGhpcy5zZWxsVGFyZ2V0LHtkaXNyZXNwZWN0VXNlck1vdGlvblByZWZlcmVuY2U6ITB9KSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIiwoKCk9PnsidmlzaWJsZSI9PT1kb2N1bWVudC52aXNpYmlsaXR5U3RhdGU/KHRoaXMuYnV5QW5pbWF0ZS5lbmFibGUoKSx0aGlzLnNlbGxBbmltYXRlLmVuYWJsZSgpKToodGhpcy5idXlBbmltYXRlLmRpc2FibGUoKSx0aGlzLnNlbGxBbmltYXRlLmRpc2FibGUoKSl9KSl9aW5pdFJlcXVlc3REYXRhKCl7Y29uc3QgZT10aGlzO3NldFRpbWVvdXQoKGZ1bmN0aW9uIHQoKXtrLlpQLmdldCgic2l0ZS9wcmljZS1jdXJyZW5jeSIpLnRoZW4oKHQ9PntlLm5ld0RhdGE9dC5kYXRhLmRhdGEucmVzdWx0LGUudXBkYXRlRGF0YSgpfSkpLmNhdGNoKChlPT5jb25zb2xlLmVycm9yKGUpKSkuZmluYWxseSgoKCk9PnNldFRpbWVvdXQodCxWKDNlMywxZTQpKSkpfSksVigzZTMsMWU0KSl9dXBkYXRlRGF0YSgpe3RoaXMudXBkYXRlQ2lkKCksdGhpcy51cGRhdGVDaGFydERhdGEoKSx0aGlzLnVwZGF0ZVdyYXBwZWQoKSx0aGlzLnVwZGF0ZUJ1eSgpLHRoaXMudXBkYXRlU2VsbCgpfXVwZGF0ZVdyYXBwZWQoKXtPYmplY3QuZW50cmllcyh0aGlzLm5ld0RhdGEuY2lkV3JhcHBlZCkuZm9yRWFjaCgoZT0+e2xldFt0LGldPWUscj0iIjtpLmZvckVhY2goKGU9PntyKz1gXG4gICAgICAgIDxkaXYgY2xhc3M9Im9wLXJhdGVfX2l0ZW0iPlxuICAgICAgICAgIDxpbWcgc3JjPSIvaW1nL2V4cGxvcmVycy8ke2Uuc2lzdGVtU2x1Z30uc3ZnIiBhbHQ9IiIgbG9hZGluZz0iZWFnZXIiIHdpZHRoPSIzMiJcbiAgICAgICAgICAgIGhlaWdodD0iMzIiIGNsYXNzPSJvcC1yYXRlX19jdXJyZW5jeSI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9wLXJhdGVfX25hbWUiPiR7ZS5uYW1lfSAke2UubmFtZUFkZGl0aW9ufTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3AtcmF0ZV9fdGl0bGUiPiR7ZS50aXRsZX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSJvcC1yYXRlX192YWx1ZSAke2Uudm9sdW1lMjREZWx0YVVzZD4wPyJpcy11cCI6ImlzLWRvd24ifSI+XG4gICAgICAgICAgICAkJHtlLnByaWNlVXNkfVxuICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaWNvbiBvcC1yYXRlX192YWx1ZS1pY29uIj5cbiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIvaWNvbnMvc3ByaXRlLnN2ZyNpY29ucy1hcnJvdy1kb3duIj48L3VzZT5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgYH0pKSx0aGlzLndyYXBwZWRUYXJnZXRzLmZpbmQoKGU9PmUuZGF0YXNldC5jaWQ9PT10KSkuaW5uZXJIVE1MPXJ9KSl9dXBkYXRlQnV5KCl7bGV0IGU9IiI7dGhpcy5uZXdEYXRhLm9wZXJhdGlvbldyYXBwZWQuYnV5LmZvckVhY2goKHQ9PntlKz1gXG4gICAgICA8ZGl2IGNsYXNzPSJidXktb3JkZXIiPlxuICAgICAgICA8ZGl2IGNsYXNzPSJidXktb3JkZXJfX2l0ZW0iPlxuICAgICAgICAgIDxpbWcgc3JjPSIvaW1nL2NyeXB0by9VU0RULnN2ZyIgY2xhc3M9ImJ1eS1vcmRlcl9fY3VycmVuY3kiIGFsdD0iIiBsb2FkaW5nPSJsYXp5IiB3aWR0aD0iMzIiXG4gICAgICAgICAgICBoZWlnaHQ9IjMyIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSJidXktb3JkZXJfX2JvZHkiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV5LW9yZGVyX192YWx1ZSI+JHt0LnByaWNlVXNkfTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV5LW9yZGVyX19sYWJlbCI+JHt0LnNpc3RlbX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzdmcgY2xhc3M9Imljb24gYnV5LW9yZGVyX19hcnIiPlxuICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iL2ljb25zL3Nwcml0ZS5zdmcjaWNvbnMtYXJyb3ctcmlnaHQiPjwvdXNlPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPGRpdiBjbGFzcz0iYnV5LW9yZGVyX19pdGVtIj5cbiAgICAgICAgICA8aW1nIHNyYz0iL2ltZy9leHBsb3JlcnMvJHt0LnNpc3RlbVNsdWd9LnN2ZyIgY2xhc3M9ImJ1eS1vcmRlcl9fY3VycmVuY3kiIGFsdD0iIlxuICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSJidXktb3JkZXJfX2JvZHkiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV5LW9yZGVyX192YWx1ZSI+JHt0LndyYXBwZWRDaWR9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXktb3JkZXJfX2xhYmVsIj4ke3Quc2lzdGVtfTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgYH0pKSx0aGlzLmJ1eVRhcmdldC5pbnNlcnRBZGphY2VudEhUTUwoImFmdGVyYmVnaW4iLGUpLHRoaXMuYnV5VGFyZ2V0LnJlbW92ZUNoaWxkKHRoaXMuYnV5VGFyZ2V0Lmxhc3RFbGVtZW50Q2hpbGQpfXVwZGF0ZVNlbGwoKXtsZXQgZT0iIjt0aGlzLm5ld0RhdGEub3BlcmF0aW9uV3JhcHBlZC5zZWxsLmZvckVhY2goKHQ9PntlKz1gXG4gICAgICA8ZGl2IGNsYXNzPSJzZWxsLW9yZGVyIj5cbiAgICAgICAgPGRpdiBjbGFzcz0ic2VsbC1vcmRlcl9faXRlbSI+XG4gICAgICAgICAgPGltZyBzcmM9Ii9pbWcvZXhwbG9yZXJzLyR7dC5zaXN0ZW1TbHVnfS5zdmciIGNsYXNzPSJzZWxsLW9yZGVyX19jdXJyZW5jeSIgYWx0PSIiXG4gICAgICAgICAgICBsb2FkaW5nPSJsYXp5IiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9InNlbGwtb3JkZXJfX2JvZHkiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VsbC1vcmRlcl9fdmFsdWUiPiR7dC53cmFwcGVkQ2lkfTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VsbC1vcmRlcl9fbGFiZWwiPiR7dC5zaXN0ZW19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPSJzZWxsLW9yZGVyX19pdGVtIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWxsLW9yZGVyX19ib2R5Ij5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlbGwtb3JkZXJfX3ZhbHVlIj4ke3QucHJpY2VVc2R9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWxsLW9yZGVyX19sYWJlbCI+PSAxICR7dC53cmFwcGVkQ2lkfTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj4gICAgICAgIFxuICAgICAgICA8c3ZnIGNsYXNzPSJpY29uIHNlbGwtb3JkZXJfX2FyciI+XG4gICAgICAgICAgPHVzZSB4bGluazpocmVmPSIvaWNvbnMvc3ByaXRlLnN2ZyNpY29ucy1hcnJvdy1yaWdodCI+PC91c2U+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8ZGl2IGNsYXNzPSJzZWxsLW9yZGVyX19pdGVtIj5cbiAgICAgICAgICA8aW1nIHNyYz0iL2ltZy9jcnlwdG8vVVNEVC5zdmciIGNsYXNzPSJzZWxsLW9yZGVyX19jdXJyZW5jeSIgYWx0PSIiIGxvYWRpbmc9ImxhenkiIHdpZHRoPSIzMiJcbiAgICAgICAgICAgIGhlaWdodD0iMzIiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9InNlbGwtb3JkZXJfX2JvZHkiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VsbC1vcmRlcl9fdmFsdWUgdGV4dC1zZWNvbmRhcnkiPiR7dC5wcm9maXR9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWxsLW9yZGVyX19sYWJlbCI+UHJvZml0PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICBgfSkpLHRoaXMuc2VsbFRhcmdldC5pbnNlcnRBZGphY2VudEhUTUwoImFmdGVyYmVnaW4iLGUpLHRoaXMuc2VsbFRhcmdldC5yZW1vdmVDaGlsZCh0aGlzLnNlbGxUYXJnZXQubGFzdEVsZW1lbnRDaGlsZCl9b25DdXJyZW5jeUNoYW5nZShlKXtsZXR7ZGV0YWlsOnt2YWx1ZTp0fX09ZTt0aGlzLmNpZFZhbHVlPXR9Y2lkVmFsdWVDaGFuZ2VkKCl7dGhpcy5jaGFydHx8dGhpcy5yZW5kZXJDaGFydCgpLHRoaXMudXBkYXRlQ2hhcnREYXRhKCksdGhpcy50b2dnbGVDaWQoKX1yZW5kZXJDaGFydCgpe3RoaXMuY2hhcnQ9bmV3KCQoKSkodGhpcy5jaGFydFRhcmdldCx0aGlzLmNoYXJ0T3B0aW9ucyksdGhpcy5jaGFydC5yZW5kZXIoKX11cGRhdGVDaGFydERhdGEoKXtjb25zdCBlPSh0aGlzPy5uZXdEYXRhPy5oaXN0b3J5fHx0aGlzLmhpc3RvcnlWYWx1ZSlbdGhpcy5jaWRWYWx1ZV0ubWFwKChlPT4oe3g6bmV3IERhdGUoMWUzKmVbMF0pLHk6Wy4uLmUuc2xpY2UoMSldfSkpKTt0aGlzLmNoYXJ0LnVwZGF0ZU9wdGlvbnMoe3Nlcmllczpbe2RhdGE6ZX1dfSwhMSksdGhpcy5hZGRBbm5vdGF0aW9uKCl9YWRkQW5ub3RhdGlvbigpe2NvbnN0IGU9dGhpcy5jaGFydC53LmNvbmZpZy5zZXJpZXNbMF0uZGF0YSx0PXRoaXMuY2hhcnQudy5nbG9iYWxzLm1pblksaT10aGlzLmNoYXJ0LncuZ2xvYmFscy5tYXhZLHI9ZVtlLmxlbmd0aC0xXS55WzNdLG49KHItdCkvKGktdCkqMTAwO3RoaXMuYW5ub3RhdGlvblRhcmdldC50ZXh0Q29udGVudD1yLHRoaXMuYW5ub3RhdGlvblRhcmdldC5zdHlsZS5ib3R0b209YCR7bn0lYCx0aGlzLmFubm90YXRpb25UYXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIil9dG9nZ2xlQ2lkKCl7dGhpcy5jaWRUYXJnZXRzLmZvckVhY2goKGU9PntlLmNsYXNzTGlzdC50b2dnbGUoImhpZGRlbiIsZS5kYXRhc2V0LmNpZCE9PXRoaXMuY2lkVmFsdWUpfSkpfXVwZGF0ZUNpZCgpe2xldCBlPSIiO09iamVjdC5lbnRyaWVzKHRoaXMubmV3RGF0YS5jaWQpLmZvckVhY2goKHQ9PntsZXRbaSxyXT10O2UrPWBcbiAgICAgIDxkaXYgZGF0YS1jaWQ9IiR7aX0iIGRhdGEtbWF0cml4LXRhcmdldD0iY2lkIj5cbiAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1wcmltYXJ5LWg0IGZvbnQtYmxhY2sgbWItOCI+JHsiQlRDIj09PWk/IkJpdGNvaW4iOiJFdGhlcmV1bSJ9IOKAkyBVU0RUPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9InRleHQtcHJpbWFyeS1oNSI+XG4gICAgICAgICAgPHNwYW4+JHtyLnByaWNlfTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMzIgJHtyLnBlcmNlbnRfY2hhbmdlXzI0aD4wPyJ0ZXh0LXNlY29uZGFyeSI6InRleHQtZGFuZ2VyIn0iPlxuICAgICAgICAgICAgJHtyLnBlcmNlbnRfY2hhbmdlXzI0aD4wPyIrIjoiIn0ke3IucGVyY2VudF9jaGFuZ2VfMjRofSVcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICBgfSkpLHRoaXMucmF0ZVRhcmdldC5pbm5lckhUTUw9ZSx0aGlzLnRvZ2dsZUNpZCgpfWdldCBjaGFydE9wdGlvbnMoKXtyZXR1cm57c2VyaWVzOltdLGNoYXJ0Ont0eXBlOiJjYW5kbGVzdGljayIsaGVpZ2h0OjQwMCxmb250RmFtaWx5OiJ2YXIoLS1mb250LWJvZHkpIixmb3JlQ29sb3I6InZhcigtLWNvbG9yLWRhcmspIixzZWxlY3Rpb246e2VuYWJsZWQ6ITF9LHRvb2xiYXI6e3Nob3c6ITF9LHpvb206e2VuYWJsZWQ6ITF9fSxncmlkOntib3JkZXJDb2xvcjoiI2VhZWFlYiIsc3Ryb2tlRGFzaEFycmF5OjcseWF4aXM6e2xpbmVzOntzaG93OiEwfX0scGFkZGluZzp7bGVmdDotMTB9fSx4YXhpczp7dHlwZToiZGF0ZXRpbWUiLHRvb2x0aXA6e2VuYWJsZWQ6ITF9LGF4aXNCb3JkZXI6e3Nob3c6ITF9LGF4aXNUaWNrczp7c2hvdzohMX0sbGFiZWxzOntvZmZzZXRZOjQsb2Zmc2V0WDotOH0sY3Jvc3NoYWlyczp7c3Ryb2tlOntjb2xvcjoiI2VhZWFlYiIsd2lkdGg6MSxkYXNoQXJyYXk6MH19fSx5YXhpczp7ZGVjaW1hbHNJbkZsb2F0OjAsdG9vbHRpcDp7ZW5hYmxlZDohMX0sbGFiZWxzOntvZmZzZXRYOi04LGFsaWduOiJyaWdodCJ9LG9wcG9zaXRlOiEwfSxwbG90T3B0aW9uczp7Y2FuZGxlc3RpY2s6e2NvbG9yczp7dXB3YXJkOiIjMDliZThiIixkb3dud2FyZDoiI2ZiNGU0ZSJ9fX0sc3RhdGVzOntob3Zlcjp7ZmlsdGVyOnt0eXBlOiJub25lIix2YWx1ZTowfX19fX19QShMLCJ0YXJnZXRzIixbImNoYXJ0IiwiYW5ub3RhdGlvbiIsImNpZCIsInJhdGUiLCJ3cmFwcGVkIiwiYnV5Iiwic2VsbCJdKSxBKEwsInZhbHVlcyIse2NpZDpTdHJpbmcsaGlzdG9yeTpPYmplY3R9KTt2YXIgST1pKDY4NSksRD1pKDY4OSk7Y2xhc3MgTSBleHRlbmRzIGEuUXJ7Y29ubmVjdCgpe3RoaXMubm90eWY9bmV3IEkuSXEoe2R1cmF0aW9uOjRlMyxyaXBwbGU6ITEscG9zaXRpb246e3g6InJpZ2h0Iix5OiJ0b3AifX0pfXN1Ym1pdEZvcm0oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IHQ9T2JqZWN0LmZyb21FbnRyaWVzKG5ldyBGb3JtRGF0YSh0aGlzLmZvcm1UYXJnZXQpKTt0aGlzLnN1Ym1pdFRhcmdldC5kaXNhYmxlZD0hMCwoMCxrLlpQKSh7bWV0aG9kOnRoaXMuZm9ybVRhcmdldC5tZXRob2QsdXJsOnRoaXMuZm9ybVRhcmdldC5hY3Rpb24sZGF0YTp0LGhlYWRlcnM6eyJ4LWNsaWVudCI6IndlYiJ9fSkudGhlbigoZT0+e3RoaXMubm90eWYuc3VjY2VzcygiWW91ciByZXF1ZXN0IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBzZW50IiksRC5LUi5jbG9zZSgpfSkpLmNhdGNoKChlPT57ZS5yZXNwb25zZSYmNDAxPT09ZS5yZXNwb25zZS5zdGF0dXM/dGhpcy5ub3R5Zi5lcnJvcigiUGxlYXNlIGxvZ2luIHRvIGNvbnRpbnVlIik6dGhpcy5ub3R5Zi5lcnJvcigiU29tZXRoaW5nIHdlbnQgd3JvbmciKX0pKS5maW5hbGx5KCgoKT0+e3RoaXMuc3VibWl0VGFyZ2V0LmRpc2FibGVkPSExfSkpfX1mdW5jdGlvbiBOKGUsdCxpKXtyZXR1cm4odD1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIGk9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWkpe3ZhciByPWkuY2FsbChlLHQpO2lmKCJvYmplY3QiIT10eXBlb2YgcilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGUsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgdD90OlN0cmluZyh0KX0odCkpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTppLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1pLGV9IWZ1bmN0aW9uKGUsdCxpKXsodD1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIGk9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWkpe3ZhciByPWkuY2FsbChlLHQpO2lmKCJvYmplY3QiIT10eXBlb2YgcilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGUsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgdD90OlN0cmluZyh0KX0odCkpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTppLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1pfShNLCJ0YXJnZXRzIixbImZvcm0iLCJzdWJtaXQiXSk7Y2xhc3MgWiBleHRlbmRzIGEuUXJ7aW5pdGlhbGl6ZSgpe2Zvcih0aGlzLl92aWRlb3M9dGhpcy52aWRlb3NWYWx1ZSx0aGlzLl9jaHVua3M9W107dGhpcy5fdmlkZW9zLmxlbmd0aD4wOyl0aGlzLl9jaHVua3MucHVzaCh0aGlzLl92aWRlb3Muc3BsaWNlKDAsdGhpcy5wYWdlU2l6ZVZhbHVlKSl9Z2V0IHZpZGVvc0NvdW50KCl7cmV0dXJuIHRoaXMueXRWaWRlb3NUYXJnZXQucXVlcnlTZWxlY3RvckFsbCgiaWZyYW1lIikubGVuZ3RofWNoZWNrTG9hZGVkVmlkZW9zKCl7dGhpcy52aWRlb3NDb3VudD09PXRoaXMudmlkZW9zQ291bnRWYWx1ZSYmKHRoaXMuc2hvd01vcmVUYXJnZXQucGFyZW50RWxlbWVudC5oaWRkZW49ITApfWN1cnJlbnRQYWdlVmFsdWVDaGFuZ2VkKGUpe2NvbnN0IHQ9dGhpcy5fY2h1bmtzW2VdLm1hcCgoZT0+YFxuICAgICAgICAgIDxpZnJhbWUgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8ke2V9IiB0aXRsZT0iWW91VHViZSB2aWRlbyBwbGF5ZXIiIGZyYW1lYm9yZGVyPSIwIlxuICAgICAgICAgIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlOyB3ZWItc2hhcmUiXG4gICAgICAgICAgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPlxuICAgICAgICBgKSkuam9pbigiIik7dGhpcy55dFZpZGVvc1RhcmdldC5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWVuZCIsdCksdGhpcy5jaGVja0xvYWRlZFZpZGVvcygpfXNob3dNb3JlSGFuZGxlcigpe3RoaXMuY3VycmVudFBhZ2VWYWx1ZT10aGlzLmN1cnJlbnRQYWdlVmFsdWUrPTF9fU4oWiwidGFyZ2V0cyIsWyJzaG93TW9yZSIsInl0VmlkZW9zIl0pLE4oWiwidmFsdWVzIix7cGFnZVNpemU6TnVtYmVyLHZpZGVvc0NvdW50Ok51bWJlcixjdXJyZW50UGFnZTpOdW1iZXIsdmlkZW9zOkFycmF5fSk7Y2xhc3MgUSBleHRlbmRzIGEuUXJ7c3dpdGNoKGUpe2NvbnN0IHQ9ZS5jdXJyZW50VGFyZ2V0LmRhdGFzZXQubGFuZzt0aGlzLnZhbHVlVGFyZ2V0LnZhbHVlPXQsdGhpcy5lbGVtZW50LnN1Ym1pdCgpfX0hZnVuY3Rpb24oZSx0LGkpeyh0PWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgaT1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09aSl7dmFyIHI9aS5jYWxsKGUsdCk7aWYoIm9iamVjdCIhPXR5cGVvZiByKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX0oZSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfSh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPWl9KFEsInRhcmdldHMiLFsidmFsdWUiXSk7Y29uc3QgRj17dG9wcGVkX3VwX3dhbGxldDp7YnV0dG9uUHJvcHM6e2ljb246JzxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iL2ljb25zL3Nwcml0ZS5zdmcjaWNvbnMtcGx1cyI+PC91c2U+PC9zdmc+Jyx0aGVtZToic2Vjb25kYXJ5In19LGpvaW5lZF9uZW9zaWZ5OntidXR0b25Qcm9wczp7aWNvbjonPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIvaWNvbnMvc3ByaXRlLnN2ZyNpY29ucy11c2VyIj48L3VzZT48L3N2Zz4nLHRoZW1lOiJzZWNvbmRhcnkifX0saW52aXRlZF9hX2ZvbGxvd2VyOntidXR0b25Qcm9wczp7aWNvbjonPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIvaWNvbnMvc3ByaXRlLnN2ZyNpY29ucy11c2VycyI+PC91c2U+PC9zdmc+Jyx0aGVtZToic2Vjb25kYXJ5In19LHN0YWtlZF9iaXRjb2luOntidXR0b25Qcm9wczp7aWNvbjonPGltZyBzcmM9Ii9pbWcvY3J5cHRvL0JUQy5zdmciIGFsdD0iIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPicsdGhlbWU6ImxpZ2h0In19LGV4Y2hhbmdlZF9jcnlwdG86e2J1dHRvblByb3BzOntpY29uOic8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9Ii9pY29ucy9zcHJpdGUuc3ZnI2ljb25zLXN5bmMiPjwvdXNlPjwvc3ZnPicsdGhlbWU6ImxpZ2h0In19LGpvaW5lZF9yZWRfcGlsbF9wcm86e2J1dHRvblByb3BzOntpY29uOic8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9Ii9pY29ucy9zcHJpdGUuc3ZnI2ljb25zLW1lZGFsIj48L3VzZT48L3N2Zz4nLHRoZW1lOiJkYW5nZXIifX0sc3Rha2VkX2xpdGVjb2luOntidXR0b25Qcm9wczp7aWNvbjonPGltZyBzcmM9Ii9pbWcvY3J5cHRvL0xUQy5zdmciIGFsdD0iIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPicsdGhlbWU6ImxpZ2h0In19LHdpdGhkcmF3bl9jcnlwdG86e2J1dHRvblByb3BzOntpY29uOic8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9Ii9pY29ucy9zcHJpdGUuc3ZnI2ljb25zLXdpdGhkcmF3Ij48L3VzZT48L3N2Zz4nLHRoZW1lOiJsaWdodCJ9fSxtYWRlX2FfdmlkZW9fcmV2aWV3OntidXR0b25Qcm9wczp7aWNvbjonPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIvaWNvbnMvc3ByaXRlLnN2ZyNpY29ucy1wbGF5Ij48L3VzZT48L3N2Zz4nLHRoZW1lOiJwcmltYXJ5In19LHN0YWtlZF9uZW9zOntidXR0b25Qcm9wczp7aWNvbjonPGltZyBzcmM9Ii9pbWcvY3J5cHRvL05FT1Muc3ZnIiBhbHQ9IiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij4nLHRoZW1lOiJsaWdodCJ9fSxsZWZ0X2FfY29tbWVudDp7YnV0dG9uUHJvcHM6e2ljb246JzxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iL2ljb25zL3Nwcml0ZS5zdmcjaWNvbnMtY29tbWVudCI+PC91c2U+PC9zdmc+Jyx0aGVtZToicHJpbWFyeSJ9fSxlYXJuZWRfbmVvc19yZXdhcmQ6e2J1dHRvblByb3BzOntpY29uOic8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9Ii9pY29ucy9zcHJpdGUuc3ZnI2ljb25zLWdpZnQiPjwvdXNlPjwvc3ZnPicsdGhlbWU6InByaW1hcnkifX0sbGlrZWRfYV9Db21tZW50OntidXR0b25Qcm9wczp7aWNvbjonPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIvaWNvbnMvc3ByaXRlLnN2ZyNpY29ucy1oZWFydCI+PC91c2U+PC9zdmc+Jyx0aGVtZToiZGFuZ2VyIn19fTtjbGFzcyB6IGV4dGVuZHMgYS5Rcntjb25uZWN0KCl7dGhpcy5zdGF0ZT17fSx0aGlzLmZldGNoUHJvb2ZUYXNrKCl9YXN5bmMgZmV0Y2hQcm9vZlRhc2soKXtjb25zdCBlPTFlMypWKDEwLDMwKTt2YXIgdDthd2FpdCh0PWUsbmV3IFByb21pc2UoKGU9PnNldFRpbWVvdXQoZSx0KSkpKTtjb25zdHtkYXRhOml9PWF3YWl0KDAsay5aUCkoe3VybDoiL2FwaS9zb2MtcHJvb2YvaW5kZXgiLG1ldGhvZDoiZ2V0IixoZWFkZXJzOnsieC1jbGllbnQiOiJ3ZWIifX0pO3RoaXMuc3RhdGU9aS5kYXRhLHRoaXMucmVuZGVyTm90aWZpY2F0aW9uKCksdGhpcy5mZXRjaFByb29mVGFzaygpfXJlbmRlck5vdGlmaWNhdGlvbigpe2NvbnN0IGU9YFxuICAgICAgPGRpdiBjbGFzcz0ic29jLXByb29mICR7dGhpcy5zdGF0ZS50eXBlfSI+XG4gICAgICAgIDxkaXYgY2xhc3M9InNvYy1wcm9vZl9fYXZhdGFyLWNvbnRhaW5lciI+XG4gICAgICAgICAgPGltZyBzcmM9IiR7dGhpcy5zdGF0ZS5hdmF0YXJ9IiBhbHQ9IiIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBjbGFzcz0ic29jLXByb29mX19hdmF0YXIiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPSJzb2MtcHJvb2ZfX2J1dHRvbiBpY29uLXJhaXNlZCBpY29uLXJhaXNlZC0tJHtGW3RoaXMuc3RhdGUudHlwZV0uYnV0dG9uUHJvcHMudGhlbWV9IGljb24tcmFpc2VkLS14cyI+XG4gICAgICAgICAgJHtGW3RoaXMuc3RhdGUudHlwZV0uYnV0dG9uUHJvcHMuaWNvbn1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9InNvYy1wcm9vZl9fYm9keSI+XG4gICAgICAgICAgPGRpdiBjbGFzcz0ic29jLXByb29mX191c2VybmFtZSI+JHt0aGlzLnN0YXRlLnVzZXJOYW1lfSBoYXMganVzdDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9InNvYy1wcm9vZl9fdHlwZW5hbWUiPiR7dGhpcy5zdGF0ZS50eXBlTmFtZX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO3RoaXMuY29udGFpbmVyVGFyZ2V0LmlubmVySFRNTD1lLHNldFRpbWVvdXQoKCgpPT50aGlzLmNvbnRhaW5lclRhcmdldC5pbm5lckhUTUw9IiIpLDhlMyl9fSFmdW5jdGlvbihlLHQsaSl7KHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiBlO3ZhciBpPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1pKXt2YXIgcj1pLmNhbGwoZSx0KTtpZigib2JqZWN0IiE9dHlwZW9mIHIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfShlLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDpTdHJpbmcodCl9KHQpKWluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6aSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09aX0oeiwidGFyZ2V0cyIsWyJjb250YWluZXIiXSk7dmFyIEg9aSg5NTUpO2NsYXNzIFIgZXh0ZW5kcyBhLlFye2Nsb3NlKCl7dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpLEguWi5zZXQoImZyaWRheSIsImhpZGRlbiIse2V4cGlyZXM6OTB9KX19IWZ1bmN0aW9uKGUsdCxpKXsodD1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIGk9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWkpe3ZhciByPWkuY2FsbChlLHQpO2lmKCJvYmplY3QiIT10eXBlb2YgcilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGUsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgdD90OlN0cmluZyh0KX0odCkpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTppLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1pfShSLCJ0YXJnZXRzIixbImNsb3NlIl0pO3ZhciBXPWkoMTkyKSxVPWkubihXKTt3aW5kb3cuU3RpbXVsdXM9YS5NeC5zdGFydCgpLFN0aW11bHVzLnJlZ2lzdGVyKCJuYXYiLGwpLFN0aW11bHVzLnJlZ2lzdGVyKCJ0YWJzIixjKSxTdGltdWx1cy5yZWdpc3RlcigiYWNjb3JkaW9uIixkKSxTdGltdWx1cy5yZWdpc3RlcigiZHJvcGRvd24iLGgpLFN0aW11bHVzLnJlZ2lzdGVyKCJzd2lwZXIiLG0pLFN0aW11bHVzLnJlZ2lzdGVyKCJjb3VudGRvd24iLGcpLFN0aW11bHVzLnJlZ2lzdGVyKCJzaGFyZSIsZiksU3RpbXVsdXMucmVnaXN0ZXIoInJhbmdlIix5KSxTdGltdWx1cy5yZWdpc3Rlcigic2VsZWN0Iix3KSxTdGltdWx1cy5yZWdpc3Rlcigic3Rha2UtY2FsY3VsYXRvciIsVCksU3RpbXVsdXMucmVnaXN0ZXIoImxpcXVpZGl0eS1jYWxjdWxhdG9yIixFKSxTdGltdWx1cy5yZWdpc3RlcigibWF0cml4IixMKSxTdGltdWx1cy5yZWdpc3RlcigiYXBwbHktcmVkLXBpbGwiLE0pLFN0aW11bHVzLnJlZ2lzdGVyKCJjb21tdW5pdHkiLFopLFN0aW11bHVzLnJlZ2lzdGVyKCJsYW5nIixRKSxTdGltdWx1cy5yZWdpc3Rlcigic29jLXByb29mIix6KSxTdGltdWx1cy5yZWdpc3RlcigiZnJpZGF5IixSKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidHlwZXdyaXRlciIpJiZuZXcoVSgpKSgiI3R5cGV3cml0ZXIiLHtsb29wOiEwfSkudHlwZVN0cmluZygiQml0Y29pbiIpLnBhdXNlRm9yKDEyMDApLmRlbGV0ZUFsbCgpLnR5cGVTdHJpbmcoIkV0aGVyZXVtIikucGF1c2VGb3IoMTIwMCkuZGVsZXRlQWxsKCkudHlwZVN0cmluZygiTGl0ZWNvaW4iKS5wYXVzZUZvcigxMjAwKS5kZWxldGVBbGwoKS50eXBlU3RyaW5nKCJEb2dlY29pbiIpLnBhdXNlRm9yKDEyMDApLnN0YXJ0KCksRC5LUi5kZWZhdWx0cy5IYXNoPSExLEQuS1IuZGVmYXVsdHMuYXV0b0ZvY3VzPSExLEQuS1IuZGVmYXVsdHMuZHJhZ1RvQ2xvc2U9ITEsRC5LUi5kZWZhdWx0cy50cmFwRm9jdXM9ITEsRC5LUi5iaW5kKCJbZGF0YS1mYW5jeWJveF0iLHt9KX19LGk9e307ZnVuY3Rpb24gcihlKXt2YXIgbj1pW2VdO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG4uZXhwb3J0czt2YXIgcz1pW2VdPXtleHBvcnRzOnt9fTtyZXR1cm4gdFtlXS5jYWxsKHMuZXhwb3J0cyxzLHMuZXhwb3J0cyxyKSxzLmV4cG9ydHN9ci5tPXQsZT1bXSxyLk89ZnVuY3Rpb24odCxpLG4scyl7aWYoIWkpe3ZhciBhPTEvMDtmb3IodT0wO3U8ZS5sZW5ndGg7dSsrKXtpPWVbdV1bMF0sbj1lW3VdWzFdLHM9ZVt1XVsyXTtmb3IodmFyIG89ITAsbD0wO2w8aS5sZW5ndGg7bCsrKSghMSZzfHxhPj1zKSYmT2JqZWN0LmtleXMoci5PKS5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIHIuT1tlXShpW2xdKX0pKT9pLnNwbGljZShsLS0sMSk6KG89ITEsczxhJiYoYT1zKSk7aWYobyl7ZS5zcGxpY2UodS0tLDEpO3ZhciBjPW4oKTt2b2lkIDAhPT1jJiYodD1jKX19cmV0dXJuIHR9cz1zfHwwO2Zvcih2YXIgdT1lLmxlbmd0aDt1PjAmJmVbdS0xXVsyXT5zO3UtLSllW3VdPWVbdS0xXTtlW3VdPVtpLG4sc119LHIubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gci5kKHQse2E6dH0pLHR9LHIuZD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgaSBpbiB0KXIubyh0LGkpJiYhci5vKGUsaSkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkse2VudW1lcmFibGU6ITAsZ2V0OnRbaV19KX0sci5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxmdW5jdGlvbigpe3ZhciBlPXsxNzk6MH07ci5PLmo9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1lW3RdfTt2YXIgdD1mdW5jdGlvbih0LGkpe3ZhciBuLHMsYT1pWzBdLG89aVsxXSxsPWlbMl0sYz0wO2lmKGEuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIDAhPT1lW3RdfSkpKXtmb3IobiBpbiBvKXIubyhvLG4pJiYoci5tW25dPW9bbl0pO2lmKGwpdmFyIHU9bChyKX1mb3IodCYmdChpKTtjPGEubGVuZ3RoO2MrKylzPWFbY10sci5vKGUscykmJmVbc10mJmVbc11bMF0oKSxlW3NdPTA7cmV0dXJuIHIuTyh1KX0saT1zZWxmLndlYnBhY2tDaHVua2Zyb250ZW5kPXNlbGYud2VicGFja0NodW5rZnJvbnRlbmR8fFtdO2kuZm9yRWFjaCh0LmJpbmQobnVsbCwwKSksaS5wdXNoPXQuYmluZChudWxsLGkucHVzaC5iaW5kKGkpKX0oKTt2YXIgbj1yLk8odm9pZCAwLFs3MzBdLChmdW5jdGlvbigpe3JldHVybiByKDczOCl9KSk7bj1yLk8obil9KCk7"}},"time_used":49,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":49,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/img/levels-star-3.png","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.056Z","timestamp":1785145636056,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /img/levels-star-3.png HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: image/webp\r\ncontent-length: 18916\r\ncache-control: public, max-age=604800\r\nage: 6412\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: a98365fe6490f1006140f0cc095989ed-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":18916,"size_decoded":19222,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"4c13bdfb4ed56dbe17d726d3f432f508","sha1":"27f125e85c7fe5c154626ad9c5d9fce068e99694","sha256":"e3c5a77482a44c876a83490d7d123a2c990291fa60460e3059ab41a949eca8f2","sha512":"c7ad1db21c64492214c2f2f4ae470e9f05f4fa38aeef5f20e1856c91e471413ff058fdc609eec8ec2855c976d9013fb55449605e675d135843316d56e23cb321","ssdeep":"384:mfmo3aim3WUXFMoFeWl4PM9PDqOd5IcpcsTCTeInhW+4AHxtef/vP:mL3aiCWMxe7smOgqTQnUoTenv","tlshash":"4882d0131179e947d996c7f073cbff8d211ce4965a3e818e83b0c91c8a22621c2f17ba","first_seen":"2026-07-27T08:06:16.653925Z","last_seen":"2026-07-27T09:48:29.895105Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":43,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":43,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/icons/sprite.svg","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"other","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.093Z","timestamp":1785145636093,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /icons/sprite.svg HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: same-origin\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4\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\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: image/svg+xml\r\ncontent-length: 12999\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 07:46:01 GMT\r\nlast-modified: Sun, 16 Nov 2025 06:36:48 GMT\r\netag: \"9628-69197100-cf31d33718ccc846;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 6412\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 6bd978a2b7ad8a265366651c3cd52356-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":38440,"size_decoded":13547,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"9550d2d4082145a56d05c06c1ba2b611","sha1":"5df40f567d1cfccd1b44a6c3d77742b54dab3606","sha256":"ff8e1afb2c7106c8d3493bf86223b6c0d4429cbd7fef5a585c4ca96d2ace5612","sha512":"1cb84dd5a89340ed7faae938b15ac80cd58f2f4925932176e71ea28175a4fcc8cf533d39624b037989d0b5ecf3f76e2732ebcf1db883d8ce74e766a626bcb8e3","ssdeep":"768:JNGUG0WWcbgremZEQ+/tYwEUQpAzju3YlbjUi:J8UGcZamZEQ+/tYF4Ui","tlshash":"f90373f59b2c91cc148b9ebeef26b111631fb8bab9a6c6945c5ecbf411c3594e507c00","first_seen":"2026-07-27T02:49:41.004787Z","last_seen":"2026-07-29T06:16:17.971971Z","times_seen":7,"resource_available":false,"data":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48c3ltYm9sIGlkPSJpY29ucy1hcnJvdy1kb3duIiB2aWV3Qm94PSIwIDAgMTAgMTAiPjxwYXRoIGQ9Ik05Ljc1NCA0LjQwOGEuODMyLjgzMiAwIDAgMC0xLjE4MyAwbC0yLjc0IDIuNzVWLjgzM2EuODMzLjgzMyAwIDEgMC0xLjY2NCAwdjYuMzI1bC0yLjc0LTIuNzVBLjgzNi44MzYgMCAxIDAgLjI0NSA1LjU5Mmw0LjE2MyA0LjE2NmMuMDguMDc2LjE3My4xMzUuMjc1LjE3NS4yMDEuMDkuNDMxLjA5LjYzMyAwYS44MzMuODMzIDAgMCAwIC4yNzQtLjE3NWw0LjE2NC00LjE2NmEuODM0LjgzNCAwIDAgMCAwLTEuMTg0eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtYXJyb3ctcmlnaHQiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTE5Ljg3NSA5LjM2NmExLjY2NSAxLjY2NSAwIDAgMC0uMzUtLjU1TDExLjE4OC40OWExLjY3NiAxLjY3NiAwIDAgMC0yLjgwMS43NSAxLjY3IDEuNjcgMCAwIDAgLjQzMyAxLjYxNGw1LjUwMyA1LjQ4SDEuNjY3YTEuNjY2IDEuNjY2IDAgMSAwIDAgMy4zM2gxMi42NTZMOC44MiAxNy4xNDNhMS42NjQgMS42NjQgMCAwIDAgMCAyLjM2NCAxLjY2OCAxLjY2OCAwIDAgMCAyLjM2OCAwbDguMzM3LTguMzI2Yy4xNTItLjE1OC4yNy0uMzQ1LjM1LS41NWExLjY2IDEuNjYgMCAwIDAgMC0xLjI2NXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLWFycm93LXVwLWRvdWJsZSIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNMTEuMTY4IDEwLjk4NmExLjkzNSAxLjkzNSAwIDAgMC0xLjM2NC0uNTYxYy0uNTEzIDAtMS4wMDQuMjAyLTEuMzY0LjU2bC01Ljc2NCA1LjY4N2ExLjkxMiAxLjkxMiAwIDAgMC0uMDM5IDIuNzMgMS45NzUgMS45NzUgMCAwIDAgMi43NjcuMDM3bDQuNC00LjQzNSA0LjQgNC40MzVhMS45MzggMS45MzggMCAwIDAgMi43MjguMDAxYy4zNjMtLjM1Ny41NjgtLjg0MS41NjgtMS4zNDYgMC0uNTA2LS4yMDUtLjk5LS41NjgtMS4zNDZsLTUuNzY0LTUuNzYyek01LjQwNCA4LjkzOWw0LjQtNC4zNiA0LjQgNC4zNmExLjkzOCAxLjkzOCAwIDAgMCAyLjcyOCAwYy4zNjMtLjM1Ni41NjgtLjg0LjU2OC0xLjM0NiAwLS41MDYtLjIwNS0uOTktLjU2OC0xLjM0NkwxMS4xNjguNTYxQTEuOTM1IDEuOTM1IDAgMCAwIDkuODA0IDBDOS4yOSAwIDguOC4yMDIgOC40NC41NkwyLjY3NiA2LjI0OGExLjg4NSAxLjg4NSAwIDAgMCAwIDIuNjkyIDEuOTQ4IDEuOTQ4IDAgMCAwIDIuNzI4IDB6Ii8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtYm9sdCIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNMTcuMzkyIDcuNTgxYS45OS45OSAwIDAgMC0uODgyLS41NDhoLTQuOTUyVjEuMDQ4YS45OTcuOTk3IDAgMCAwLS42ODMtLjk5OC45ODYuOTg2IDAgMCAwLTEuMTEuMzZMMS44NDQgMTEuMzgxYTEuMDA0IDEuMDA0IDAgMCAwLS4wOC45OTcuOTkuOTkgMCAwIDAgLjg4Mi42MzloNC45NTJ2NS45ODRhLjk5Ny45OTcgMCAwIDAgLjk5Ljk5OC45ODguOTg4IDAgMCAwIC44MDItLjQwOWw3LjkyNC0xMC45NzJjLjIxNy0uMzA0LjI0OC0uNzA0LjA3OS0xLjAzOHptLTcuODE0IDguMzVWMTIuMDJhLjk5NC45OTQgMCAwIDAtLjk5LS45OTdINC42MjVMOS41NzggNC4xMnYzLjkxYzAgLjU1LjQ0My45OTguOTkuOTk4aDMuOTYyTDkuNTc4IDE1LjkzeiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtYm9vayIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNMTkuMTU4LjE4OEExMy4yMSAxMy4yMSAwIDAgMCAxNi45OSAwIDEzLjAxNyAxMy4wMTcgMCAwIDAgMTAgMi4wMjcgMTMuMDE4IDEzLjAxOCAwIDAgMCAzLjAxLjA1IDEzLjIxIDEzLjIxIDAgMCAwIC44NDEuMjM3YS45OTIuOTkyIDAgMCAwLS44MjkuOTl2MTEuODY1YS45ODUuOTg1IDAgMCAwIC4zNS43NjdjLjIyNi4xOS41MjYuMjcyLjgxOS4yMjJBMTAuOTcgMTAuOTcgMCAwIDEgOS40MiAxNS45N2wuMTIuMDdoLjExYS45MTcuOTE3IDAgMCAwIC42OTkgMGguMTFsLjEyLS4wN2ExMC45NjggMTAuOTY4IDAgMCAxIDguMjM4LTEuOTk3Yy4yOTMuMDUuNTkzLS4wMzIuODE5LS4yMjNhLjk4NS45ODUgMCAwIDAgLjM1LS43NjZWMS4xMTdhLjk5Mi45OTIgMCAwIDAtLjgzLS45M3pNOSAxMy4zM2ExMi45NTUgMTIuOTU1IDAgMCAwLTUuOTkyLTEuNDY0SDIuMDFWMS45NzhjLjMzMi0uMDIuNjY2LS4wMi45OTggMCAyLjEzLS4wMDMgNC4yMTUuNjE2IDUuOTkyIDEuNzh2OS41NzJ6bTguOTg4LTEuNDI0aC0uOTk4YTEyLjk1NSAxMi45NTUgMCAwIDAtNS45OTIgMS40NjNWMy43NThhMTAuOTIzIDEwLjkyMyAwIDAgMSA1Ljk5Mi0xLjc4Yy4zMzItLjAyLjY2Ni0uMDIuOTk4IDB2OS45Mjh6bTEuMTY5IDQuMTA0YTEzLjIxIDEzLjIxIDAgMCAwLTIuMTY3LS4xODhBMTMuMDE3IDEzLjAxNyAwIDAgMCAxMCAxNy44NDlhMTMuMDE3IDEzLjAxNyAwIDAgMC02Ljk5LTIuMDI3IDEzLjIxIDEzLjIxIDAgMCAwLTIuMTY4LjE4OCAxIDEgMCAwIDAtLjY1My4zOTguOTgxLjk4MSAwIDAgMC0uMTc2LjczOS45OTguOTk4IDAgMCAwIDEuMTY5Ljc4MSAxMC45NyAxMC45NyAwIDAgMSA4LjIzOSAxLjg4OWMuMzQ2LjI0NC44MTIuMjQ0IDEuMTU4IDBhMTAuOTcgMTAuOTcgMCAwIDEgOC4yNC0xLjg4OS45OTguOTk4IDAgMCAwIDEuMTY4LS43ODEuOTgxLjk4MSAwIDAgMC0uMTc2LS43NCAxIDEgMCAwIDAtLjY1My0uMzk3eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtYnVzaW5lc3MiIHZpZXdCb3g9IjAgMCAyNSAyNCI+PHBhdGggZD0iTTIwLjQyMiA1LjM0MmgtMy42di0xLjIxYzAtMi4wMDYtMS42MTItMy42MzItMy42LTMuNjMyaC0yLjRjLTEuOTg4IDAtMy42IDEuNjI2LTMuNiAzLjYzMnYxLjIxaC0zLjZjLS45NTUgMC0xLjg3LjM4My0yLjU0NiAxLjA2NEEzLjY0OCAzLjY0OCAwIDAgMCAuMDIyIDguOTc0djEwLjg5NGMwIDIuMDA2IDEuNjEyIDMuNjMyIDMuNiAzLjYzMmgxNi44YzEuOTg4IDAgMy42LTEuNjI2IDMuNi0zLjYzMlY4Ljk3NGMwLTIuMDA2LTEuNjEyLTMuNjMyLTMuNi0zLjYzMnptLTEwLjgtMS4yMWMwLS42NjkuNTM3LTEuMjEgMS4yLTEuMjFoMi40Yy42NjMgMCAxLjIuNTQxIDEuMiAxLjIxdjEuMjFoLTQuOHYtMS4yMXptMTIgMTUuNzM2YzAgLjY2OS0uNTM3IDEuMjEtMS4yIDEuMjFoLTE2LjhjLS42NjMgMC0xLjItLjU0MS0xLjItMS4yMXYtNi42NTdjMS4xNy40NjggMi4zNzQuODQ4IDMuNiAxLjEzN3YuNzE1YzAgLjY2OC41MzcgMS4yMSAxLjIgMS4yMS42NjMgMCAxLjItLjU0MiAxLjItMS4yMXYtLjI1NWEyNy4yNyAyNy4yNyAwIDAgMCAzLjYuMjU1IDI3LjM2NCAyNy4zNjQgMCAwIDAgMy42LS4yNTV2LjI1NWMwIC42NjguNTM3IDEuMjEgMS4yIDEuMjEuNjYzIDAgMS4yLS41NDIgMS4yLTEuMjF2LS43MTVjMS4yMjYtLjI4OSAyLjQzLS42NyAzLjYtMS4xMzd2Ni42NTd6bTAtOS4zMDlhMjQuMzIgMjQuMzIgMCAwIDEtMy42IDEuMjExdi0uMzc1YzAtLjY2OS0uNTM3LTEuMjEtMS4yLTEuMjEtLjY2MyAwLTEuMi41NDEtMS4yIDEuMjF2Ljg5NmEyMy45MjUgMjMuOTI1IDAgMCAxLTcuMiAwdi0uODk2YzAtLjY2OS0uNTM3LTEuMjEtMS4yLTEuMjEtLjY2MyAwLTEuMi41NDEtMS4yIDEuMjF2LjRhMjQuMzIgMjQuMzIgMCAwIDEtMy42LTEuMjExdi0xLjYxYzAtLjY2OS41MzctMS4yMSAxLjItMS4yMWgxNi44Yy42NjMgMCAxLjIuNTQxIDEuMiAxLjIxdjEuNTg1eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtY2FsZW5kYXIiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTEwIDEyYTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnptNSAwYTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnptLTUgNGExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6bTUgMGExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6TTUgMTJhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyek0xNyAyaC0xVjFhMSAxIDAgMCAwLTIgMHYxSDZWMWExIDEgMCAxIDAtMiAwdjFIM2EzIDMgMCAwIDAtMyAzdjEyYTMgMyAwIDAgMCAzIDNoMTRhMyAzIDAgMCAwIDMtM1Y1YTMgMyAwIDAgMC0zLTN6bTEgMTVhMSAxIDAgMCAxLTEgMUgzYTEgMSAwIDAgMS0xLTFWOGgxNnY5em0wLTExSDJWNWExIDEgMCAwIDEgMS0xaDE0YTEgMSAwIDAgMSAxIDF2MXpNNSAxNmExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6Ii8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtY2hlY2stZG91YmxlIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0yMi43MSA1LjVjLjMzNCAwIC42NTMuMTM1Ljg4OC4zNzVhMS4yNzUgMS4yNzUgMCAwIDEgMCAxLjg2MkwxMy4xMjQgMTguMTI1YTEuMjQxIDEuMjQxIDAgMCAxLTEuNzc0IDBsLS44ODEtLjk3IDExLjM1NC0xMS4yOGMuMjM1LS4yNC41NTQtLjM3NS44ODgtLjM3NXptLTYuNDM4IDBjLjMzMyAwIC42NTIuMTM1Ljg4Ny4zNzVhMS4yNzUgMS4yNzUgMCAwIDEgMCAxLjg2Mkw2Ljk2MiAxOC4wNzVhMS4yNDEgMS4yNDEgMCAwIDEtMS43NzQgMEwuMzkgMTMuMjFhMS4zMDcgMS4zMDcgMCAwIDEtLjM1Mi0xLjI0NGMuMTEtLjQ1LjQ0OS0uODA0Ljg4Ny0uOTMxYTEuMjY2IDEuMjY2IDAgMCAxIDEuMjQuMzEzbDMuOTEgMy45NzggOS4zMS05LjQ1MWMuMjM0LS4yNC41NTMtLjM3NS44ODctLjM3NXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLWNsb3NlIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxwYXRoIGQ9Im0xMS43NjEgOS45OTkgNy44Ny03Ljg1OEExLjI1NCAxLjI1NCAwIDAgMCAxNy44NTcuMzY3TDEwIDguMjM3IDIuMTQzLjM2OEExLjI1NCAxLjI1NCAwIDEgMCAuMzcgMi4xNDFMOC4yNCAxMCAuMzcgMTcuODU4YTEuMjUgMS4yNSAwIDAgMCAwIDEuNzczIDEuMjQ5IDEuMjQ5IDAgMCAwIDEuNzc0IDBMMTAgMTEuNzZsNy44NTcgNy44N2ExLjI0OSAxLjI0OSAwIDAgMCAxLjc3NCAwIDEuMjUgMS4yNSAwIDAgMCAwLTEuNzczbC03Ljg3LTcuODU4eiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLWNvaW5zIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0yMy4wNjQgMTIuMjVBMy41OCAzLjU4IDAgMCAwIDI0IDkuODYxYTMuNTkyIDMuNTkyIDAgMCAwLTMuNi0zLjU4M2gtNi4yMTZhMy41NyAzLjU3IDAgMCAwLS40NTItMy4yNkEzLjYwNSAzLjYwNSAwIDAgMCAxMC44IDEuNUgzLjZBMy41OTIgMy41OTIgMCAwIDAgMCA1LjA4M2MuMDA1Ljg4NC4zMzkgMS43MzUuOTM2IDIuMzlhMy41NzEgMy41NzEgMCAwIDAgMCA0Ljc3NyAzLjU3MSAzLjU3MSAwIDAgMCAwIDQuNzc4QTMuNTc0IDMuNTc0IDAgMCAwIDAgMTkuNDE3IDMuNTkyIDMuNTkyIDAgMCAwIDMuNiAyM2gxNi44YTMuNiAzLjYgMCAwIDAgMy4yNzEtMi4xMyAzLjU3IDMuNTcgMCAwIDAtLjYwNy0zLjg0MiAzLjU3MSAzLjU3MSAwIDAgMCAwLTQuNzc4ek0xMC44IDIwLjYxMUgzLjZjLS42NjMgMC0xLjItLjUzNS0xLjItMS4xOTQgMC0uNjYuNTM3LTEuMTk1IDEuMi0xLjE5NWg3LjJjLjY2MyAwIDEuMi41MzUgMS4yIDEuMTk1cy0uNTM3IDEuMTk0LTEuMiAxLjE5NHptMC00Ljc3OEgzLjZjLS42NjMgMC0xLjItLjUzNC0xLjItMS4xOTQgMC0uNjYuNTM3LTEuMTk1IDEuMi0xLjE5NWg3LjJjLjY2MyAwIDEuMi41MzUgMS4yIDEuMTk1cy0uNTM3IDEuMTk0LTEuMiAxLjE5NHptMC00Ljc3N0gzLjZjLS42NjMgMC0xLjItLjUzNS0xLjItMS4xOTVzLjUzNy0xLjE5NCAxLjItMS4xOTRoNy4yYy42NjMgMCAxLjIuNTM0IDEuMiAxLjE5NCAwIC42Ni0uNTM3IDEuMTk1LTEuMiAxLjE5NXptMC00Ljc3OEgzLjZjLS42NjMgMC0xLjItLjUzNS0xLjItMS4xOTVTMi45MzcgMy44OSAzLjYgMy44OWg3LjJjLjY2MyAwIDEuMi41MzUgMS4yIDEuMTk0IDAgLjY2LS41MzcgMS4xOTUtMS4yIDEuMTk1em0xMC40MjggMTMuOTg3YTEuMTE5IDEuMTE5IDAgMCAxLS44MjguMzQ2aC02LjIxNmEzLjQxMyAzLjQxMyAwIDAgMCAwLTIuMzg5SDIwLjRjLjY2MyAwIDEuMi41MzUgMS4yIDEuMTk1YTEuMTkyIDEuMTkyIDAgMCAxLS4zNzIuODQ4em0wLTQuNzc4YTEuMTE5IDEuMTE5IDAgMCAxLS44MjguMzQ2aC02LjIxNmEzLjQxMyAzLjQxMyAwIDAgMCAwLTIuMzg5SDIwLjRjLjY2MyAwIDEuMi41MzUgMS4yIDEuMTk1YTEuMTkyIDEuMTkyIDAgMCAxLS4zNzIuODQ4em0wLTQuNzc4YTEuMTE5IDEuMTE5IDAgMCAxLS44MjguMzQ3aC02LjIxNmEzLjQxMyAzLjQxMyAwIDAgMCAwLTIuMzlIMjAuNGMuNjYzIDAgMS4yLjUzNSAxLjIgMS4xOTVhMS4xOTIgMS4xOTIgMCAwIDEtLjM3Mi44NDh6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1jb21tZW50IiB2aWV3Qm94PSIwIDAgMTYgMTciPjxwYXRoIGQ9Ik04LjAxMS4yNTFDMy42LjI1MS4wMjMgMy44MzMuMDIzIDguMjUxYTcuOTE4IDcuOTE4IDAgMCAwIDEuODA1IDUuMDY0bC0xLjU5OCAxLjZhLjguOCAwIDAgMC0uMTY4Ljg3Mi43OTkuNzk5IDAgMCAwIC43Ni40NjRoNy4xOWM0LjQxMSAwIDcuOTg4LTMuNTgyIDcuOTg4LThzLTMuNTc3LTgtNy45ODktOHptMCAxNC40SDIuNzQ3bC43NDMtLjc0NGEuOC44IDAgMCAwIDAtMS4xMjggNi40MDYgNi40MDYgMCAwIDEtLjgtOC4wOCA2LjM4NiA2LjM4NiAwIDAgMSA3Ljc1OC0yLjM2MkE2LjQwMiA2LjQwMiAwIDAgMSA4LjAxMSAxNC42NXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLWNvcHkiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTIyLjUgOC4zMjhhMS41NzggMS41NzggMCAwIDAtLjA3Mi0uMzI0di0uMTA4YTEuMjg0IDEuMjg0IDAgMCAwLS4yMjctLjMzNkwxNS4wMzUuMzZBMS4yNzggMS4yNzggMCAwIDAgMTQuNy4xMzJhLjM4LjM4IDAgMCAwLS4xMDcgMEExLjA0OCAxLjA0OCAwIDAgMCAxNC4xOTkgMEg5LjM2YTMuNTkyIDMuNTkyIDAgMCAwLTMuNTgzIDMuNnYxLjJINC41ODNBMy41OTIgMy41OTIgMCAwIDAgMSA4LjR2MTJDMSAyMi4zODggMi42MDQgMjQgNC41ODMgMjRoOS41NTZhMy41OTIgMy41OTIgMCAwIDAgMy41ODMtMy42di0xLjJoMS4xOTVhMy41OTIgMy41OTIgMCAwIDAgMy41ODMtMy42VjguMzI4em0tNy4xNjctNC4yMzZMMTguNDI3IDcuMmgtMS45QTEuMTk3IDEuMTk3IDAgMCAxIDE1LjMzMyA2VjQuMDkyem0wIDE2LjMwOGMwIC42NjMtLjUzNCAxLjItMS4xOTQgMS4ySDQuNTgzYy0uNjYgMC0xLjE5NC0uNTM3LTEuMTk0LTEuMnYtMTJjMC0uNjYzLjUzNS0xLjIgMS4xOTQtMS4yaDEuMTk1djguNGMwIDEuOTg4IDEuNjA0IDMuNiAzLjU4MyAzLjZoNS45NzJ2MS4yem00Ljc3OC00LjhjMCAuNjYzLS41MzUgMS4yLTEuMTk0IDEuMkg5LjM2Yy0uNjYgMC0xLjE5NC0uNTM3LTEuMTk0LTEuMnYtMTJjMC0uNjYzLjUzNC0xLjIgMS4xOTQtMS4yaDMuNTgzVjZjMCAxLjk4OCAxLjYwNSAzLjYgMy41ODQgMy42aDMuNTgzdjZ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1jcm93biIgdmlld0JveD0iMCAwIDEyIDEyIj48cGF0aCBkPSJtMCAyLjI4OCAyLjk4MSAyLjk2NSAzLjAyLTMuMDAzTDkuMDIgNS4yNTMgMTIgMi4yOXY1LjU3NmExLjg5IDEuODkgMCAwIDEtMS44OTUgMS44ODVoLTguMjFBMS44OSAxLjg5IDAgMCAxIDAgNy44NjVWMi4yODh6bTEwLjczNyAzLjAyNnYyLjU1MWEuNjMuNjMgMCAwIDEtLjYzMi42MjloLTguMjFhLjYzLjYzIDAgMCAxLS42MzItLjYyOVY1LjMxNGwxLjcxOCAxLjcwOSAzLjAyLTMuMDA0TDkuMDIgNy4wMjNsMS43MTctMS43MDl6Ii8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtY3VwIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0yMi44IDIuNGgtMy42VjEuMkExLjIgMS4yIDAgMCAwIDE4IDBINmExLjIgMS4yIDAgMCAwLTEuMiAxLjJ2MS4ySDEuMkExLjIgMS4yIDAgMCAwIDAgMy42djMuNkE0LjggNC44IDAgMCAwIDQuOCAxMmgxLjg0OGE3LjIgNy4yIDAgMCAwIDQuMTUyIDIuMjkyVjE2LjhIOS42QTMuNiAzLjYgMCAwIDAgNiAyMC40djIuNEExLjIgMS4yIDAgMCAwIDcuMiAyNGg5LjZhMS4yIDEuMiAwIDAgMCAxLjItMS4ydi0yLjRhMy42IDMuNiAwIDAgMC0zLjYtMy42aC0xLjJ2LTIuNTA4QTcuMiA3LjIgMCAwIDAgMTcuMzUyIDEySDE5LjJBNC44IDQuOCAwIDAgMCAyNCA3LjJWMy42YTEuMiAxLjIgMCAwIDAtMS4yLTEuMnptLTE4IDcuMmEyLjQgMi40IDAgMCAxLTIuNC0yLjRWNC44aDIuNHYyLjRhNy4yIDcuMiAwIDAgMCAuNDIgMi40SDQuOHptOS42IDkuNmExLjIgMS4yIDAgMCAxIDEuMiAxLjJ2MS4ySDguNHYtMS4yYTEuMiAxLjIgMCAwIDEgMS4yLTEuMmg0Ljh6bTIuNC0xMmE0LjggNC44IDAgMSAxLTkuNiAwVjIuNGg5LjZ2NC44em00LjggMGEyLjQgMi40IDAgMCAxLTIuNCAyLjRoLS40MmE3LjIgNy4yIDAgMCAwIC40Mi0yLjRWNC44aDIuNHYyLjR6Ii8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtZGF5IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Im00LjM2OCAxOC0uODUyLjg1MmExLjIgMS4yIDAgMCAwIDAgMS42OTIgMS4yIDEuMiAwIDAgMCAxLjY5MiAwbC44NTItLjg1MkExLjIgMS4yIDAgMCAwIDQuMzY4IDE4ek0zLjYgMTJhMS4yIDEuMiAwIDAgMC0xLjItMS4ySDEuMmExLjIgMS4yIDAgMSAwIDAgMi40aDEuMkExLjIgMS4yIDAgMCAwIDMuNiAxMnpNMTIgMy42YTEuMiAxLjIgMCAwIDAgMS4yLTEuMlYxLjJhMS4yIDEuMiAwIDEgMC0yLjQgMHYxLjJBMS4yIDEuMiAwIDAgMCAxMiAzLjZ6TTQuMzY4IDYuMDZhMS4yIDEuMiAwIDAgMCAxLjY5MiAwIDEuMiAxLjIgMCAwIDAgMC0xLjY5MmwtLjg1Mi0uODUyYTEuMiAxLjIgMCAwIDAtMS42OTIgMS42OTJsLjg1Mi44NTJ6bTE0LjQuMzQ4YTEuMiAxLjIgMCAwIDAgLjg0LS4zNDhsLjg1Mi0uODUyYTEuMiAxLjIgMCAxIDAtMS42OTItMS42OTJMMTggNC4zNjhhMS4yIDEuMiAwIDAgMCAwIDEuNjkyIDEuMiAxLjIgMCAwIDAgLjc5Mi4zNDhoLS4wMjR6TTIyLjggMTAuOGgtMS4yYTEuMiAxLjIgMCAxIDAgMCAyLjRoMS4yYTEuMiAxLjIgMCAxIDAgMC0yLjR6TTEyIDIwLjRhMS4yIDEuMiAwIDAgMC0xLjIgMS4ydjEuMmExLjIgMS4yIDAgMSAwIDIuNCAwdi0xLjJhMS4yIDEuMiAwIDAgMC0xLjItMS4yem03LjYzMi0yLjRBMS4yIDEuMiAwIDAgMCAxOCAxOS42MzJsLjg1Mi44NTJhMS4yIDEuMiAwIDAgMCAxLjY5MiAwIDEuMiAxLjIgMCAwIDAgMC0xLjY5MkwxOS42MzIgMTh6TTEyIDUuNGE2LjYgNi42IDAgMSAwIDYuNiA2LjZBNi42MTIgNi42MTIgMCAwIDAgMTIgNS40em0wIDEwLjhhNC4yIDQuMiAwIDEgMSAwLTguNCA0LjIgNC4yIDAgMCAxIDAgOC40eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtZGVzaWduIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxwYXRoIGQ9Ik01Ljg2NyAxMy4xOTlhLjkxNS45MTUgMCAwIDAgMCAxLjI4MS44OTcuODk3IDAgMCAwIDEuMjggMCAuOTE1LjkxNSAwIDAgMCAwLTEuMjgxLjg5Ny44OTcgMCAwIDAtMS4yOCAwem0wLTcuNzE3YS45MTUuOTE1IDAgMCAwIDAgMS4yODEuODk3Ljg5NyAwIDAgMCAxLjI4IDAgLjkxNS45MTUgMCAwIDAgMC0xLjI4MS44OTcuODk3IDAgMCAwLTEuMjggMHptNC40NiA5LjA5Yy0uNDk4IDAtLjkwMi40MDYtLjkwMi45MDhzLjQwNC45MS45MDEuOTFhLjkwNi45MDYgMCAwIDAgLjkwMS0uOTEuOTE0LjkxNCAwIDAgMC0uMjQ3LS42NzIuODk3Ljg5NyAwIDAgMC0uNjU0LS4yODJ2LjA0NXpNNC45MiA5LjExN2MtLjQ5OCAwLS45LjQwNy0uOS45MDlzLjQwMi45MDguOS45MDguOS0uNDA2LjktLjkwOGEuOTE0LjkxNCAwIDAgMC0uMjQ3LS42NzMuODk3Ljg5NyAwIDAgMC0uNjUzLS4yODJ2LjA0NnptNS40MDUtNS40NTRjLS40OTcgMC0uOS40MDctLjkuOTA5cy40MDMuOTA5LjkuOTA5YS45MDUuOTA1IDAgMCAwIC45MDEtLjkxLjkxNC45MTQgMCAwIDAtLjI0Ny0uNjcxLjg5Ny44OTcgMCAwIDAtLjY1NC0uMjgzdi4wNDZ6bTMuMTkgMS44NjNhLjkxNS45MTUgMCAwIDAtLjE5OC45OTEuOS45IDAgMCAwIC44MzMuNTYzLjkuOSAwIDAgMCAuODMyLS41NjMuOTE1LjkxNSAwIDAgMC0uMTk3LS45OS44OTUuODk1IDAgMCAwLTEuMjctLjA0NnYuMDQ1em01LjY3NSAwQzE2LjkwNC45MTQgMTEuNTE0LTEuMTg3IDYuNzQ3LjY3NyAxLjk4IDIuNTQzLS42IDcuNzYuNzkzIDEyLjcyM2MxLjM5MiA0Ljk2NCA2LjI5OCA4LjA0NCAxMS4zMjYgNy4xMTJhMy40ODUgMy40ODUgMCAwIDAgMi4yNTItMS41Yy41NjEtLjg1My43Ni0xLjg5Ny41NS0yLjlhNS4xOCA1LjE4IDAgMCAxLS4wOS0uOTA4IDQuNTQ2IDQuNTQ2IDAgMCAxIDIuNzAyLTQuMTQ1IDMuNDc5IDMuNDc5IDAgMCAwIDEuODU2LTIuMDQ1Yy4zMTYtLjkzLjI0NC0xLjk1LS4xOTgtMi44Mjd2LjAxOHptLTEuNTMgMi4yMTljLS4xNTYuNDQtLjQ4Ljc5Ny0uOTAxLjk5YTYuMzY1IDYuMzY1IDAgMCAwLTMuNjA0IDcuMDYzYy4xMTEuNTE4LjAxIDEuMDU5LS4yOCAxLjVhMS42MSAxLjYxIDAgMCAxLTEuMDkuNzI3Yy0uNDguMDkyLS45Ny4xMzctMS40NTkuMTM3YTguMDczIDguMDczIDAgMCAxLTUuODI0LTIuNDg2IDguMjIxIDguMjIxIDAgMCAxLTIuMjg0LTUuOTVjLjE0NS00LjIzMiAzLjQ1LTcuNjYxIDcuNjQtNy45MjVoLjQ2YTguMTAxIDguMTAxIDAgMCAxIDcuMjYgNC41NDRjLjIwNy40MzIuMjM2LjkyOS4wODIgMS4zODJ2LjAxOHptLTcuMzM0IDEuMzI3Yy0uNDk3IDAtLjkuNDA3LS45LjkxIDAgLjUwMS40MDMuOTA4LjkuOTA4YS45MDUuOTA1IDAgMCAwIC45MDEtLjkwOS45MDUuOTA1IDAgMCAwLS45LS45MDl6Ii8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtZGVza3RvcCIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNMTcgLjgzM0gzQzEuMzQzLjgzMyAwIDIuMTcgMCAzLjgydjcuOTYzYTIuOTkzIDIuOTkzIDAgMCAwIDMgMi45ODdoNnYxLjk5SDVjLS41NTIgMC0xIC40NDYtMSAuOTk2cy40NDguOTk1IDEgLjk5NWgxMGMuNTUyIDAgMS0uNDQ2IDEtLjk5NWEuOTk4Ljk5OCAwIDAgMC0xLS45OTZoLTR2LTEuOTloNmMxLjY1NyAwIDMtMS4zMzcgMy0yLjk4N1YzLjgyYTIuOTkzIDIuOTkzIDAgMCAwLTMtMi45ODZ6bTEgMTAuOTVjMCAuNTUtLjQ0OC45OTUtMSAuOTk1SDNjLS41NTIgMC0xLS40NDYtMS0uOTk2VjMuODJjMC0uNTUuNDQ4LS45OTUgMS0uOTk1aDE0Yy41NTIgMCAxIC40NDYgMSAuOTk1djcuOTYzeiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLWVtcHR5IiB2aWV3Qm94PSIwIDAgMTkyIDE5MiI+PHBhdGggZD0iTTE1My42IDBjLTIxLjIwOCAwLTM4LjQgMTcuMTkyLTM4LjQgMzguNHMxNy4xOTIgMzguNCAzOC40IDM4LjRTMTkyIDU5LjYwOCAxOTIgMzguNEEzOC40IDM4LjQgMCAwIDAgMTUzLjYgMHptMCA1Ny42Yy0xMC42MDQgMC0xOS4yLTguNTk2LTE5LjItMTkuMnM4LjU5Ni0xOS4yIDE5LjItMTkuMiAxOS4yIDguNTk2IDE5LjIgMTkuMmExOS4yIDE5LjIgMCAwIDEtMTkuMiAxOS4yem0tMjguOCAxMTUuMmgtMTkuMnYtMTkuMmE5LjYgOS42IDAgMSAwLTE5LjIgMHYxOS4ySDY3LjJ2LTMyLjQ0OGwzMy4xMi0xNi42MDhhOS42IDkuNiAwIDAgMCA1LjI4LTguNTQ0Vjc2LjhhOS42IDkuNiAwIDEgMC0xOS4yIDB2MzIuNDQ4bC0xOS4yIDkuNlY1Ny42YTkuNiA5LjYgMCAxIDAtMTkuMiAwdjgwLjQ0OGwtMTkuMi05LjZWMTA1LjZhOS42IDkuNiAwIDEgMC0xOS4yIDB2MjguOGE5LjYgOS42IDAgMCAwIDUuMjggOC41NDRMNDggMTU5LjU1MlYxNzIuOEg5LjZhOS42IDkuNiAwIDEgMCAwIDE5LjJoMTE1LjJhOS42IDkuNiAwIDEgMCAwLTE5LjJ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1lbnZlbG9wZSIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNMTcgMi4wODNIM2MtMS42NTcgMC0zIDEuMzMtMyAyLjk3djkuODk1YzAgMS42NCAxLjM0MyAyLjk2OSAzIDIuOTY5aDE0YzEuNjU3IDAgMy0xLjMzIDMtMi45N1Y1LjA1M2MwLTEuNjQtMS4zNDMtMi45NjktMy0yLjk2OXptLS40MSAxLjk4TDEwLjcxIDkuODhhMS4wMDUgMS4wMDUgMCAwIDEtMS40MiAwTDMuNDEgNC4wNjJoMTMuMTh6TTE4IDE0Ljk0N2MwIC41NDYtLjQ0OC45OS0xIC45OUgzYy0uNTUyIDAtMS0uNDQ0LTEtLjk5di05LjQ5bDUuODggNS44MTlhMy4wMjIgMy4wMjIgMCAwIDAgNC4yNCAwTDE4IDUuNDU3djkuNDl6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1mYXJtIiB2aWV3Qm94PSIwIDAgMjUgMjQiPjxwYXRoIGQ9Ik0xOC44MTQgNy4zNzhhMS4yIDEuMiAwIDAgMCAuODQtLjM0NmwuODUyLS44NDhhMS4xOTEgMS4xOTEgMCAwIDAtLjUtMi4wNjkgMS4yMDMgMS4yMDMgMCAwIDAtMS4xOTIuMzg1bC0uNzkyLjg0OGExLjE5IDEuMTkgMCAwIDAgLjc5MiAyLjAzem0tNi43OTItMi43OTVjLjY2MyAwIDEuMi0uNTM0IDEuMi0xLjE5NFYyLjE5NGMwLS42Ni0uNTM3LTEuMTk0LTEuMi0xLjE5NC0uNjYzIDAtMS4yLjUzNS0xLjIgMS4xOTRWMy4zOWMwIC42Ni41MzcgMS4xOTQgMS4yIDEuMTk0em0tOS42IDcuMTY3aC0xLjJjLS42NjMgMC0xLjIuNTM1LTEuMiAxLjE5NCAwIC42Ni41MzcgMS4xOTUgMS4yIDEuMTk1aDEuMmMuNjYzIDAgMS4yLS41MzUgMS4yLTEuMTk1cy0uNTM3LTEuMTk0LTEuMi0xLjE5NHpNNC4zOSA3LjAzMmExLjIwMyAxLjIwMyAwIDAgMCAxLjY5MiAwIDEuMTkgMS4xOSAwIDAgMCAwLTEuNjg0TDUuMjMgNC41YTEuMjA0IDEuMjA0IDAgMCAwLTEuNjMuMDYyIDEuMTkgMS4xOSAwIDAgMC0uMDYyIDEuNjIybC44NTIuODQ4em0xOC40MzIgNC43MThoLTEuMmMtLjY2MyAwLTEuMi41MzUtMS4yIDEuMTk0IDAgLjY2LjUzNyAxLjE5NSAxLjIgMS4xOTVoMS4yYy42NjMgMCAxLjItLjUzNSAxLjItMS4xOTVzLS41MzctMS4xOTQtMS4yLTEuMTk0em0tMTIgOC4zNjFoLTMuNmMtLjY2MyAwLTEuMi41MzUtMS4yIDEuMTk1cy41MzcgMS4xOTQgMS4yIDEuMTk0aDMuNmMuNjYzIDAgMS4yLS41MzUgMS4yLTEuMTk0IDAtLjY2LS41MzctMS4xOTUtMS4yLTEuMTk1em04LjQtNC43NzhoLTEuMDU2Yy4zMDMtLjc2LjQ1OC0xLjU3LjQ1Ni0yLjM4OSAwLTMuNjI4LTIuOTU1LTYuNTY5LTYuNi02LjU2OS0zLjY0NSAwLTYuNiAyLjk0MS02LjYgNi41N2E2LjQxMiA2LjQxMiAwIDAgMCAuNDU2IDIuMzg4SDQuODIyYy0uNjYzIDAtMS4yLjUzNS0xLjIgMS4xOTVzLjUzNyAxLjE5NCAxLjIgMS4xOTRoMTQuNGMuNjYzIDAgMS4yLS41MzUgMS4yLTEuMTk0IDAtLjY2LS41MzctMS4xOTUtMS4yLTEuMTk1em0tMy43OCAwaC02Ljg0YTQuMDk2IDQuMDk2IDAgMCAxLS43OC0yLjM4OWMwLTIuMzA4IDEuODgtNC4xOCA0LjItNC4xOCAyLjMyIDAgNC4yIDEuODcyIDQuMiA0LjE4YTQuMDk2IDQuMDk2IDAgMCAxLS43OCAyLjM5em0xLjM4IDQuNzc4aC0xLjJjLS42NjMgMC0xLjIuNTM1LTEuMiAxLjE5NXMuNTM3IDEuMTk0IDEuMiAxLjE5NGgxLjJjLjY2MyAwIDEuMi0uNTM1IDEuMi0xLjE5NCAwLS42Ni0uNTM3LTEuMTk1LTEuMi0xLjE5NXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLWdpZnQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE5LjQxNyA2LjAwNWgtLjQxOGE0LjE4NyA0LjE4NyAwIDAgMC0yLjE4LTUuNjk2IDQuMTU2IDQuMTU2IDAgMCAwLTQuNTY5Ljk2OSA0LjE1NiA0LjE1NiAwIDAgMC00LjU2OC0uOTcgNC4xODcgNC4xODcgMCAwIDAtMi4xOCA1LjY5N2gtLjQxOUEzLjU5MSAzLjU5MSAwIDAgMCAxLjUgOS42MDR2Mi40YzAgLjY2Mi41MzUgMS4xOTkgMS4xOTQgMS4xOTlIMy44OVYyMC40QTMuNTkgMy41OSAwIDAgMCA3LjQ3MiAyNGg5LjU1NmEzLjU5MSAzLjU5MSAwIDAgMCAzLjU4My0zLjZ2LTcuMTk3aDEuMTk1Yy42NiAwIDEuMTk0LS41MzcgMS4xOTQtMS4ydi0yLjRhMy41OSAzLjU5IDAgMCAwLTMuNTgzLTMuNTk4ek0xMS4wNTYgMjEuNkg3LjQ3MmMtLjY2IDAtMS4xOTQtLjUzNy0xLjE5NC0xLjJ2LTcuMTk4aDQuNzc4VjIxLjZ6bTAtMTAuNzk4SDMuODg5di0xLjJjMC0uNjYyLjUzNS0xLjE5OSAxLjE5NC0xLjE5OWg1Ljk3M3YyLjR6bTAtNC43OThIOS4yNjRjLS45OSAwLTEuNzkyLS44MDYtMS43OTItMS44cy44MDItMS44IDEuNzkyLTEuOCAxLjc5Mi44MDYgMS43OTIgMS44djEuOHptMi4zODgtMS44YzAtLjk5NC44MDMtMS44IDEuNzkyLTEuOC45OSAwIDEuNzkyLjgwNiAxLjc5MiAxLjhzLS44MDIgMS44LTEuNzkyIDEuOGgtMS43OTJ2LTEuOHpNMTguMjIyIDIwLjRjMCAuNjYzLS41MzUgMS4yLTEuMTk0IDEuMmgtMy41ODR2LTguMzk4aDQuNzc4VjIwLjR6bTIuMzktOS41OThoLTcuMTY4VjguNDA0aDUuOTczYy42NiAwIDEuMTk0LjUzNyAxLjE5NCAxLjJ2MS4yeiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLWdsb2JlIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0yMy4yOSA3Ljk1NnYtLjA2QTEyLjAyNCAxMi4wMjQgMCAwIDAgMTIgMCAxMi4wMjQgMTIuMDI0IDAgMCAwIC43MSA3Ljg5NnYuMDZhMTEuODc3IDExLjg3NyAwIDAgMCAwIDguMDg4di4wNkExMi4wMjQgMTIuMDI0IDAgMCAwIDEyIDI0YzUuMDQ2IDAgOS41NTUtMy4xNTMgMTEuMjktNy44OTZ2LS4wNmExMS44NzcgMTEuODc3IDAgMCAwIDAtOC4wODh6TTIuNjcgMTQuNDA3YTkuNDIgOS40MiAwIDAgMSAwLTQuODE0aDIuMjM2YTIwLjE1MyAyMC4xNTMgMCAwIDAgMCA0LjgxNEgyLjY2OXptLjk4NSAyLjQwN0g1LjM0YTE0LjYzIDE0LjYzIDAgMCAwIDEuMjAyIDMuMDkzIDkuNjI0IDkuNjI0IDAgMCAxLTIuODg2LTMuMDkzek01LjM0IDcuMTg2SDMuNjU1YTkuNjI1IDkuNjI1IDAgMCAxIDIuODUtMy4wOTNBMTQuNjMxIDE0LjYzMSAwIDAgMCA1LjM0IDcuMTg2em01LjQzNSAxNC4wODFhNy42MyA3LjYzIDAgMCAxLTIuOTIyLTQuNDUzaDIuOTIydjQuNDUzem0wLTYuODZoLTMuNDRhMTcuMjk4IDE3LjI5OCAwIDAgMSAwLTQuODE0aDMuNDR2NC44MTR6bTAtNy4yMjFINy44NTJhNy42MyA3LjYzIDAgMCAxIDIuOTIyLTQuNDUzdjQuNDUzem05LjUyMiAwaC0xLjY4M2ExNC42MyAxNC42MyAwIDAgMC0xLjIwMi0zLjA5MyA5LjYyNCA5LjYyNCAwIDAgMSAyLjg4NSAzLjA5M3ptLTcuMTE4LTQuNDUzQTcuNjMgNy42MyAwIDAgMSAxNi4xIDcuMTg2aC0yLjkyMlYyLjczM3ptMCAxOC41MzR2LTQuNDUzSDE2LjFhNy42MyA3LjYzIDAgMCAxLTIuOTIyIDQuNDUzem0zLjQ0LTYuODZoLTMuNDRWOS41OTNoMy40NGExNy4yOTggMTcuMjk4IDAgMCAxIDAgNC44MTR6bS44MjkgNS41Yy41MTctLjk4Mi45Mi0yLjAyIDEuMjAyLTMuMDkzaDEuNjg0YTkuNjI0IDkuNjI0IDAgMCAxLTIuODg2IDMuMDkzem0zLjgzNS01LjVoLTIuMjM2Yy4wOTgtLjc5OS4xNDYtMS42MDIuMTQ0LTIuNDA3YTE5LjYxMSAxOS42MTEgMCAwIDAtLjE0NC0yLjQwN2gyLjIzNmE5LjQyIDkuNDIgMCAwIDEgMCA0LjgxNHoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLWdvdmVybiIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMjIuMzUgOS4xNDNjLjMwNSAwIC41OTgtLjEyLjgxMy0uMzM1QTEuMTQgMS4xNCAwIDAgMCAyMy41IDhWNC41N2MwLS40OTItLjMxNy0uOTI5LS43ODYtMS4wODRMMTIuMzY0LjA2YTEuMTYgMS4xNiAwIDAgMC0uNzI4IDBMMS4yODYgMy40ODdDLjgxNiAzLjY0Mi41IDQuMDguNSA0LjU3MVY4YzAgLjMwMy4xMjEuNTk0LjMzNy44MDguMjE1LjIxNC41MDguMzM1LjgxMy4zMzVIMi44djguMjFhMy40MjQgMy40MjQgMCAwIDAtMi4zIDMuMjE4djIuMjg2QTEuMTUgMS4xNSAwIDAgMCAxLjY1IDI0aDIwLjdjLjMwNSAwIC41OTgtLjEyLjgxMy0uMzM1YTEuMTQgMS4xNCAwIDAgMCAuMzM3LS44MDh2LTIuMjg2YTMuNDI0IDMuNDI0IDAgMCAwLTIuMy0zLjIxOHYtOC4yMWgxLjE1ek0yMS4yIDIxLjcxNEgyLjh2LTEuMTQzYzAtLjYzLjUxNS0xLjE0MiAxLjE1LTEuMTQzaDE2LjFjLjYzNS4wMDEgMS4xNS41MTIgMS4xNSAxLjE0M3YxLjE0M3pNNS4xIDE3LjE0M3YtOGgyLjN2OEg1LjF6bTQuNiAwdi04aDQuNnY4SDkuN3ptNi45IDB2LThoMi4zdjhoLTIuM3pNMi44IDYuODU3VjUuMzk1TDEyIDIuMzQ3bDkuMiAzLjA0OHYxLjQ2MkgyLjh6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1ncmFwaCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNS40NTUgMTMuMDlIMS4wOUExLjA5IDEuMDkgMCAwIDAgMCAxNC4xODN2OC43MjdDMCAyMy41MTIuNDg4IDI0IDEuMDkgMjRoNC4zNjVhMS4wOSAxLjA5IDAgMCAwIDEuMDktMS4wOXYtOC43MjhhMS4wOSAxLjA5IDAgMCAwLTEuMDktMS4wOTF6bS0xLjA5MSA4LjcyOEgyLjE4MnYtNi41NDVoMi4xODJ2Ni41NDV6bTE4LjU0NS0xMy4wOWgtNC4zNjRhMS4wOSAxLjA5IDAgMCAwLTEuMDkgMS4wOVYyMi45MWExLjA5IDEuMDkgMCAwIDAgMS4wOSAxLjA5MWg0LjM2NEExLjA5IDEuMDkgMCAwIDAgMjQgMjIuOTFWOS44MTdhMS4wOSAxLjA5IDAgMCAwLTEuMDktMS4wOXptLTEuMDkgMTMuMDloLTIuMTgzVjEwLjkxaDIuMTgydjEwLjkxek0xNC4xODEgMEg5LjgxOGExLjA5IDEuMDkgMCAwIDAtMS4wOSAxLjA5djIxLjgyYzAgLjYwMi40ODggMS4wOSAxLjA5IDEuMDloNC4zNjRhMS4wOSAxLjA5IDAgMCAwIDEuMDktMS4wOVYxLjA5QTEuMDkgMS4wOSAwIDAgMCAxNC4xODMgMHpNMTMuMDkgMjEuODE4aC0yLjE4MlYyLjE4MmgyLjE4MnYxOS42MzZ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1ncm93IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0zIDE2LjVBMS41IDEuNSAwIDAgMCAxLjUgMTh2NC41YTEuNSAxLjUgMCAwIDAgMyAwVjE4QTEuNSAxLjUgMCAwIDAgMyAxNi41ek05IDEyYTEuNSAxLjUgMCAwIDAtMS41IDEuNXY5YTEuNSAxLjUgMCAwIDAgMyAwdi05QTEuNSAxLjUgMCAwIDAgOSAxMnpNMjEgMGExLjUgMS41IDAgMCAwLTEuNSAxLjV2MjFhMS41IDEuNSAwIDAgMCAzIDB2LTIxQTEuNSAxLjUgMCAwIDAgMjEgMHptLTYgNmExLjUgMS41IDAgMCAwLTEuNSAxLjV2MTVhMS41IDEuNSAwIDAgMCAzIDB2LTE1QTEuNSAxLjUgMCAwIDAgMTUgNnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLWhlYXJ0LWZpbGxlZCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMjEuODI4IDMuNjc3YTcuNjA4IDcuNjA4IDAgMCAwLTkuODAyLS43MDJDOC44NTYuNjM4IDQuNDAxIDEuMTI3IDEuODIzIDQuMDk1YTcuNDExIDcuNDExIDAgMCAwIC40MDIgMTAuMTYxbDcuMjA3IDcuMmEzLjYyNyAzLjYyNyAwIDAgMCA1LjA5MyAwbDcuMjA3LTcuMkE3LjQyOCA3LjQyOCAwIDAgMCAyNCA4Ljk4NmE3LjQyNSA3LjQyNSAwIDAgMC0yLjE3Mi01LjMxeiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtaGVhcnQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTIxLjgyOCAzLjY3N2E3LjYwOCA3LjYwOCAwIDAgMC05LjgwMi0uNzAyQzguODU2LjYzOCA0LjQwMSAxLjEyNyAxLjgyMyA0LjA5NWE3LjQxMSA3LjQxMSAwIDAgMCAuNDAyIDEwLjE2MWw3LjIwNyA3LjJhMy42MjcgMy42MjcgMCAwIDAgNS4wOTMgMGw3LjIwNy03LjJBNy40MjggNy40MjggMCAwIDAgMjQgOC45ODZhNy40MjUgNy40MjUgMCAwIDAtMi4xNzItNS4zMXptLTEuNjk0IDguODc3LTcuMjA3IDcuMTRhMS4yMDcgMS4yMDcgMCAwIDEtMS43MDYgMGwtNy4yMDctNy4xNGE1LjA3MSA1LjA3MSAwIDAgMSAwLTcuMTQgNS4xNjMgNS4xNjMgMCAwIDEgNy4yMDcgMCAxLjIwNyAxLjIwNyAwIDAgMCAxLjcwNiAwIDUuMTY1IDUuMTY1IDAgMCAxIDYuODIuMzgzIDUuMDQ3IDUuMDQ3IDAgMCAxIC4zODcgNi43NTd6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1oZWxwIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0yNCAxMC45NDJ2LS4zOTlsLS4xMDktLjcyNS0uMTA4LS40NzJjMC0uMjA1LS4wOTctLjQxMS0uMTU3LS42MTdhNS43NDkgNS43NDkgMCAwIDAtLjE1Ny0uNDgzIDIuNjI3IDIuNjI3IDAgMCAxLS4wODUtLjI5di0uMDZBMTIuMjAyIDEyLjIwMiAwIDAgMCAxNi4yNjIuNzYxaC0uMDZsLS4yNzgtLjA4NS0uNTA4LS4xNTdjLS4xOCAwLS4zNzQtLjA5Ny0uNTU1LS4xNDVsLS41NTUtLjEyMS0uNTU1LS4wODVjLS4xOTQgMC0uMzc1IDAtLjU4LS4wNzItLjIwNS0uMDczLS40MjMgMC0uNjI4IDBMMTEuOTI4IDBoLTEuMDk5Yy0uMjA1IDAtLjM4NiAwLS41OC4wNzNsLS41NTUuMDg0LS41NTUuMTIxYy0uMTgxIDAtLjM3NC4wODUtLjU1NS4xNDVMOC4wNzYuNTggNy44LjY2NWgtLjA2QTEyLjIwMiAxMi4yMDIgMCAwIDAgLjYxNSA3Ljc5OHYuMDZjLS4wMjMuMS0uMDUxLjE5Ni0uMDg1LjI5MSAwIC4xNTctLjEwOC4zMTQtLjE1Ny40ODQtLjA0OC4xNjktLjEwOC40MS0uMTU3LjYxNmwtLjEwOC40NzItLjEwOS43MjV2My4wOTZsLjEwOS43MjUuMTA4LjQ3MmMwIC4yMDUuMDk3LjQxLjE1Ny42MTYuMDYuMjA2LjA5Ny4zMjcuMTU3LjQ4NC4wMzQuMDk1LjA2Mi4xOTIuMDg1LjI5YS41Mi41MiAwIDAgMSAwIC4wODUgMTIuMDgyIDEyLjA4MiAwIDAgMCA3LjExIDcuMTA5aC4wNmwuMjkuMDg1LjQ4My4xNTcuNjE2LjE1Ny40Ny4xMDkuNzI1LjEwOWguMzk5Yy4zNzQgMCAuNzYuMDYgMS4xNDYuMDYuMzg3IDAgLjc3MyAwIDEuMTQ3LS4wNmguMzk5bC43MjQtLjExLjQ3LS4xMDguNjE3LS4xNTcuNDgzLS4xNTcuMjktLjA4NWguMDZhMTIuMDgyIDEyLjA4MiAwIDAgMCA3LjExLTcuMTEuNTIuNTIgMCAwIDEgMC0uMDg0YzAtLjA5Ny4wNi0uMTkzLjA4NS0uMjkuMDI0LS4wOTcuMTA4LS4zMTUuMTU3LS40ODQuMDQ4LS4xNy4xMDgtLjQxLjE1Ny0uNjE2bC4xMDgtLjQ3Mi4xMDktLjcyNXYtLjRjMC0uMzc0LjA2LS43NjEuMDYtMS4xNDggMC0uMzg3LjEwOS0uNjc3LjEwOS0xLjA1MnptLTcuNjA2LTcuNDQ4YTkuNjY1IDkuNjY1IDAgMCAxIDQuMTc3IDQuMTg0TDE3LjEyIDguODg3YTYuMjEgNi4yMSAwIDAgMC0xLjk4LTEuOTgzbDEuMjU1LTMuNDF6bS02LjQ3LS44NDZjLjI1My0uMDYuNDk1LS4wOTcuNzM2LS4xMzNoLjI5YTkuOTMzIDkuOTMzIDAgMCAxIDIuMDc2IDBoLjI5Yy4yNDEgMCAuNDgzLjA3Mi43MzYuMTMzaC4wNzNsLTEuMjA3IDMuNDU4YTUuNDEyIDUuNDEyIDAgMCAwLS45OS0uMDYgNS4yMTQgNS4yMTQgMCAwIDAtLjg4Mi4wNzJMOS44NCAyLjY2bC4wODUtLjAxMnptLTIuMzQzLjg0Nkw4Ljc5IDYuOTUyYTYuMjEgNi4yMSAwIDAgMC0xLjk5MiAxLjk4M2wtMy40NTMtMS4yMWE5LjY2NiA5LjY2NiAwIDAgMSA0LjE3Ny00LjIzaC4wNnpNMi41IDE0LjE1OGE1LjA0OSA1LjA0OSAwIDAgMS0uMTItLjcyNXYtLjMwM2E4Ljk4NSA4Ljk4NSAwIDAgMSAwLTIuMDh2LS4zMDFjLjAyMi0uMjQ1LjA2Mi0uNDg3LjEyLS43MjZ2LS4wNzJsMy40NTMgMS4yMDlhNS40MTMgNS40MTMgMCAwIDAgMCAxLjc2NUwyLjUgMTQuMTM0di4wMjR6bTUuMDIyIDYuNTNhOS42NjUgOS42NjUgMCAwIDEtNC4xNzctNC4xODRsMy40NTMtMS4yMWE2LjIxIDYuMjEgMCAwIDAgMS45OCAxLjk4NGwtMS4yNTYgMy40MXptNi40NzEuODQ2Yy0uMjU0LjA2LS40OTUuMDk2LS43MzYuMTMyaC0uMjlhOS45MzMgOS45MzMgMCAwIDEtMi4wNzcgMGgtLjI5Yy0uMjQgMC0uNDgyLS4wNzItLjczNi0uMTMyaC0uMDcybDEuMjA3LTMuNDU4YTUuMzg4IDUuMzg4IDAgMCAwIDEuNzYzIDBsMS4yMDcgMy40NThoLjAyNHptLS44MDktNi4wNDZjLS4yMDUuMDczLS40MS4xMjEtLjYwNC4xN2EzLjI5IDMuMjkgMCAwIDEtMS4yMDcgMGMtLjE5MyAwLS4zOTgtLjA5Ny0uNjAzLS4xN0EzLjYyNCAzLjYyNCAwIDAgMSA4LjU0NyAxMy4zYTMuOTEgMy45MSAwIDAgMS0uMTY5LS42MTdjLS4wNzctLjQtLjA3Ny0uODEgMC0xLjIwOWE0IDQgMCAwIDEgLjE1Ny0uNTkyIDMuNjI0IDMuNjI0IDAgMCAxIDIuMTg1LTIuMTc3Yy4yMDYtLjA3Mi40MS0uMTIuNjA0LS4xNjlhMy4yOSAzLjI5IDAgMCAxIDEuMjA3IDBjLjE5MyAwIC4zOTkuMDk3LjYwNC4xN2EzLjYyNCAzLjYyNCAwIDAgMSAyLjE3MyAyLjE3NmMuMDczLjIuMTMuNDA2LjE2OS42MTYuMDc3LjQuMDc3LjgxIDAgMS4yMWEzLjYyNCAzLjYyNCAwIDAgMS0yLjM0MiAyLjc2OWwuMDQ4LjAxMXptMy4xNTEgNS4yMTEtMS4yMDctMy40NThhNi4yMSA2LjIxIDAgMCAwIDEuOTgtMS45ODNsMy40NTIgMS4yMWE5LjY2NSA5LjY2NSAwIDAgMS00LjIyNSA0LjIydi4wMTF6bTUuMjUyLTcuNTY5di4zMDNhNS4wNDkgNS4wNDkgMCAwIDEtLjEyMS43MjV2LjA3M2wtMy40NTMtMS4yMWE1LjQxMyA1LjQxMyAwIDAgMCAwLTEuNzY1bDMuNDUzLTEuMjA5di4wNzNjLjA1OC4yMzguMDk4LjQ4LjEyLjcyNXYuMzAzYy4wODEuNjkuMDgxIDEuMzg4IDAgMi4wOHYtLjA5OHoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLWhvbWUiIHZpZXdCb3g9IjAgMCAyMCAyMSI+PHBhdGggZD0iTTE4LjE3MSA2LjA0OCAxMi4yLjc5NGEyLjk3OCAyLjk3OCAwIDAgMC0zLjk4MSAwTDIuMjQ2IDYuMDQ4YTMuMDAyIDMuMDAyIDAgMCAwLS45OTYgMi4yNTd2OC43M2EyLjk5MSAyLjk5MSAwIDAgMCAyLjk4NiAyLjk5NmgxMS45NDVhMi45OTEgMi45OTEgMCAwIDAgMi45ODYtMi45OTZ2LTguNzRhMy4wMDEgMy4wMDEgMCAwIDAtLjk5Ni0yLjI0N3pNMTIuMiAxOC4wMzRIOC4yMThWMTMuMDRjMC0uNTUyLjQ0NS0uOTk5Ljk5NS0uOTk5aDEuOTljLjU1IDAgLjk5Ni40NDcuOTk2Ljk5OXY0Ljk5NHptNC45NzctLjk5OWEuOTk3Ljk5NyAwIDAgMS0uOTk1Ljk5OUgxNC4xOVYxMy4wNGEyLjk5MSAyLjk5MSAwIDAgMC0yLjk4Ni0yLjk5N0g5LjIxM2EyLjk5MSAyLjk5MSAwIDAgMC0yLjk4NiAyLjk5N3Y0Ljk5NGgtMS45OWEuOTk3Ljk5NyAwIDAgMS0uOTk2LS45OTl2LTguNzRhMSAxIDAgMCAxIC4zMzgtLjc0OWw1Ljk3Mi01LjI0M2EuOTkzLjk5MyAwIDAgMSAxLjMxNCAwbDUuOTcyIDUuMjQzYTEgMSAwIDAgMSAuMzM5Ljc1djguNzM5eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtaW1hZ2UiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTIwLjQgMi41SDMuNkMxLjYxMiAyLjUgMCA0LjA5NSAwIDYuMDYzdjExLjg3NUMwIDE5LjkwNCAxLjYxMiAyMS41IDMuNiAyMS41aDE2LjhjMS45ODggMCAzLjYtMS41OTUgMy42LTMuNTYzVjYuMDYzQzI0IDQuMDk1IDIyLjM4OCAyLjUgMjAuNCAyLjV6TTMuNiAxOS4xMjVjLS42NjMgMC0xLjItLjUzMi0xLjItMS4xODh2LTIuODczbDMuOTYtMy45MDdhMS4yMDkgMS4yMDkgMCAwIDEgMS42OCAwbDguMDUyIDcuOTY4SDMuNnptMTgtMS4xODhjMCAuNjU2LS41MzcgMS4xODgtMS4yIDEuMTg4aC0uOTI0bC00LjU3Mi00LjU0OCAxLjA1Ni0xLjA0NWExLjIwOSAxLjIwOSAwIDAgMSAxLjY4IDBsMy45NiAzLjkwN3YuNDk4em0wLTMuODQ3LTIuMjU2LTIuMjJhMy43IDMuNyAwIDAgMC01LjA4OCAwTDEzLjIgMTIuOTEzbC0zLjQ1Ni0zLjQyYTMuNyAzLjcgMCAwIDAtNS4wODggMEwyLjQgMTEuNzE1VjYuMDYzYzAtLjY1Ni41MzctMS4xODggMS4yLTEuMTg4aDE2LjhjLjY2MyAwIDEuMi41MzIgMS4yIDEuMTg4djguMDI3eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMta2V5IiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxwYXRoIGQ9Im0xOS42NzkgNC41MzItMS40MTgtMS40MSAxLjQxOC0xLjQwOWExLjAwNSAxLjAwNSAwIDAgMCAwLTEuNDE5IDEuMDAxIDEuMDAxIDAgMCAwLTEuNDE4IDBMNy43NCAxMC44M2E0Ljk4NiA0Ljk4NiAwIDAgMC02LjYxNiAxLjAxMiA1LjAwMyA1LjAwMyAwIDAgMCAuMzM4IDYuNjk0IDQuOTg2IDQuOTg2IDAgMCAwIDYuNjg0LjMzOSA1LjAwMyA1LjAwMyAwIDAgMCAxLjAxMS02LjYyNmw0Ljg3Mi00Ljg4OCAxLjQwNyAxLjQyYS45OTguOTk4IDAgMCAwIC43MDkuMjkuOTk4Ljk5OCAwIDAgMCAxLjAwNC0xIDEgMSAwIDAgMC0uMjk1LS43MWwtMS40MTgtMS4zNiAxLjQxOC0xLjQxOSAxLjQwNyAxLjQyYS45OTguOTk4IDAgMCAwIC43MDkuMjkuOTk4Ljk5OCAwIDAgMCAuNzA5LS4yOSAxIDEgMCAwIDAgMC0xLjQ3ek00Ljk5NSAxNy45OTdBMi45OTcgMi45OTcgMCAwIDEgMiAxNC45OTggMi45OTcgMi45OTcgMCAwIDEgNC45OTUgMTJhMi45OTcgMi45OTcgMCAwIDEgMi45OTQgMi45OTggMi45OTcgMi45OTcgMCAwIDEtMi45OTQgM3oiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLWxpbmsiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0ibTcuOTMyIDE1LjY1LTEuNzg0IDEuNzMyYTIuNDk2IDIuNDk2IDAgMCAxLTMuNTI3IDAgMi40OSAyLjQ5IDAgMCAxIDAtMy41MjRsNC41NzUtNC41OGEyLjQ4IDIuNDggMCAwIDEgMy40MTctLjA5MWwuMTIuMWExLjAxIDEuMDEgMCAwIDAgMS40MTEtMS40NCAyLjc3IDIuNzcgMCAwIDAtLjE4MS0uMjEgNC40OTggNC40OTggMCAwIDAtNi4xMzcuMjJMMS4xOSAxMi40MzlhNC41MDcgNC41MDcgMCAwIDAgLjEzMiA2LjI0MSA0LjUxOCA0LjUxOCAwIDAgMCA2LjI0Ny4xMzJsMS43NDQtMS43MDFhMS4wMDYgMS4wMDYgMCAwIDAtMS4zODEtMS40NnpNMTguNzA1IDEuMzE0YTQuNTI4IDQuNTI4IDAgMCAwLTYuMzggMGwtMS43NDMgMS43MDFhMS4wMDYgMS4wMDYgMCAwIDAgMS4zOCAxLjQ2bDEuNzQ0LTEuNzMxYTIuNDk2IDIuNDk2IDAgMCAxIDMuNTI3IDAgMi40OSAyLjQ5IDAgMCAxIDAgMy41MjNsLTQuNTc1IDQuNThhMi40OCAyLjQ4IDAgMCAxLTMuNDE2LjA5MWwtLjEyMS0uMWExLjAxIDEuMDEgMCAwIDAtMS40MSAxLjQ0Yy4wNzIuMDc0LjE1LjE0NS4yMzEuMjFhNC41MDggNC41MDggMCAwIDAgNi4xMzctLjIybDQuNTg1LTQuNTgxYTQuNTE3IDQuNTE3IDAgMCAwIC4wNC02LjM3M3oiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLWxpcXVpZGl0eSIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNMTUuMDE3IDQuOTgzQTcuNzY2IDcuNzY2IDAgMSAwIDQuOTgzIDE1LjAxNyA3Ljc2NiA3Ljc2NiAwIDEgMCAxNS4wMTcgNC45ODN6bS0xLjYwNSAxLjYwNWMuMDcyLjM3Ny4xMDkuNzYuMTEgMS4xNDRhNS45NCA1Ljk0IDAgMCAxLS4xNiAxLjM0NWwtMi40NDktMi40MjhhNS45NCA1Ljk0IDAgMCAxIDEuMzQ1LS4xNiA2LjE0IDYuMTQgMCAwIDEgMS4xNDQuMTFsLjAxLS4wMXptLS45NDQgNC40MTVhNi4wMiA2LjAyIDAgMCAxLTEuNDY1IDEuNDY1TDcuNTMyIDguOTk3YTYuMDIgNi4wMiAwIDAgMSAxLjQ2NS0xLjQ2NWwzLjQ3MSAzLjQ3MXptLTguMDI3IDEuNDY1YTUuNzcgNS43NyAwIDEgMSA4LjAyNy04LjAyN2gtLjI1YTcuNzg2IDcuNzg2IDAgMCAwLTcuNzM3IDcuODE3YzAgLjA4LjAxLjE3LjAxLjI1bC0uMDUtLjA0em0yLjEwNy44OTNhNi4xNCA2LjE0IDAgMCAxLS4xMS0xLjE0MyA1Ljk0IDUuOTQgMCAwIDEgLjE2LTEuMzQ1bDIuNDM5IDIuNDM4YTUuOTQgNS45NCAwIDAgMS0xLjM0NS4xNiA2LjE0IDYuMTQgMCAwIDEtMS4wOTQtLjA3bC0uMDUtLjA0em01LjcxIDQuNjY2QTUuNzkgNS43OSAwIDAgMSA3LjQ5IDE1LjUxaC4yNTFhNy43ODYgNy43ODYgMCAwIDAgNy43NzctNy43Njd2LS4yNWE1Ljc3IDUuNzcgMCAwIDEtMy4yNjEgMTAuNTM1eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtbWVkYWwiIHZpZXdCb3g9IjAgMCAxMSAxMCI+PHBhdGggZD0iTTEwLjA3MiAxLjg3M2EuNS41IDAgMCAwLS4yMzQtLjMwNUw3LjI0Ny4wNjhhLjQ5Ny40OTcgMCAwIDAtLjY4My4xOGwtMS4xNjYgMi4wM0w0LjIzMi4yNDhhLjQ5OC40OTggMCAwIDAtLjY4Mi0uMThsLTIuNTkxIDEuNWEuNS41IDAgMCAwLS4xODUuNjhsMS45OTMgMy40MTVhMi45NjIgMi45NjIgMCAwIDAtLjM1OCAxLjMzQTMgMyAwIDAgMCA0LjMyNCA5LjhhMi45ODMgMi45ODMgMCAwIDAgMy4yOTctLjc5NCAzLjAwNyAzLjAwNyAwIDAgMCAuNDM4LTMuMzczbDEuOTQzLTMuMzhhLjUwMS41MDEgMCAwIDAgLjA3LS4zOHptLTguMTYyLjMxIDEuNzI0LTEgMS42MDUgMi44MWEyLjk1NSAyLjk1NSAwIDAgMC0xLjgzNC43OWwtMS40OTUtMi42em0zLjQ4OCA2LjgxYy0xLjEgMC0xLjk5My0uODk2LTEuOTkzLTIgMC0xLjEwNS44OTItMiAxLjk5My0yIDEuMSAwIDEuOTkzLjg5NSAxLjk5MyAyIDAgMS4xMDQtLjg5MiAyLTEuOTkzIDJ6bTEuOTkzLTQuMjI1YTIuOTM4IDIuOTM4IDAgMCAwLS45MjctLjU3NWwtLjQ4OC0uOTE1IDEuMjA2LTIuMDk1IDEuNzI0IDEtMS41MTUgMi41ODV6Ii8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtbWVudSIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMjIuNSAxMC41aC0yMWExLjUgMS41IDAgMCAwIDAgM2gyMWExLjUgMS41IDAgMCAwIDAtM3ptMC02aC0yMWExLjUgMS41IDAgMCAwIDAgM2gyMWExLjUgMS41IDAgMCAwIDAtM3ptMCAxMmgtMjFhMS41IDEuNSAwIDAgMCAwIDNoMjFhMS41IDEuNSAwIDAgMCAwLTN6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1tb25leS1zdGFjayIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNMTkuMDkgMTQuNTQ1SC45MWEuOTEuOTEgMCAwIDAgMCAxLjgxOWgxOC4xOGEuOTEuOTEgMCAwIDAgMC0xLjgxOXptMCAzLjYzN0guOTFBLjkxLjkxIDAgMSAwIC45MSAyMGgxOC4xOGEuOTEuOTEgMCAwIDAgMC0xLjgxOHpNNC41NDYgNS40NTVhLjkxLjkxIDAgMSAwIDAgMS44MTguOTEuOTEgMCAwIDAgMC0xLjgxOHpNMTcuMjczIDBIMi43MjdBMi43MjcgMi43MjcgMCAwIDAgMCAyLjcyN1YxMGEyLjcyNyAyLjcyNyAwIDAgMCAyLjcyNyAyLjcyN2gxNC41NDZBMi43MjcgMi43MjcgMCAwIDAgMjAgMTBWMi43MjdBMi43MjcgMi43MjcgMCAwIDAgMTcuMjczIDB6bS45MDkgMTBhLjkxLjkxIDAgMCAxLS45MS45MUgyLjcyOGEuOTEuOTEgMCAwIDEtLjkwOS0uOTFWMi43MjdhLjkxLjkxIDAgMCAxIC45MS0uOTA5aDE0LjU0NWEuOTEuOTEgMCAwIDEgLjkwOS45MVYxMHpNMTAgMy42MzZhMi43MjcgMi43MjcgMCAxIDAgMCA1LjQ1NSAyLjcyNyAyLjcyNyAwIDAgMCAwLTUuNDU1em0wIDMuNjM3YS45MS45MSAwIDEgMSAwLTEuODE4LjkxLjkxIDAgMCAxIDAgMS44MTh6bTUuNDU1LTEuODE4YS45MS45MSAwIDEgMCAwIDEuODE4LjkxLjkxIDAgMCAwIDAtMS44MTh6Ii8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtbmlnaHQiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTE5LjYwNyAxMS4xOTJhLjk5My45OTMgMCAwIDAtMS4wNDktLjE0IDcuOTkzIDcuOTkzIDAgMCAxLTMuMzY3LjczNGMtNC40NzUtLjAwNS04LjEwNy0zLjY0Ny04LjEzNC04LjE1NWE4LjcxIDguNzEgMCAwIDEgLjI1LTIuMDEzIDEuMDExIDEuMDExIDAgMCAwLS4zMzQtLjk2Mi45OTMuOTkzIDAgMCAwLS45OTUtLjE3NkMxLjY1OCAyLjQzNy0uNzQgNy4xNDkuMjA0IDExLjgyNmMuOTQ0IDQuNjc2IDQuOTc4IDguMDcgOS43MTMgOC4xNzIgNC43MzYuMTAxIDguOTEtMy4xMTYgMTAuMDUtNy43NDlhMS4wMTEgMS4wMTEgMCAwIDAtLjM2LTEuMDU3em0tOS40OTIgNi43MzZjLTMuNDM2LS4wMjUtNi40ODctMi4yMjItNy42Mi01LjQ5YTguMjM0IDguMjM0IDAgMCAxIDIuNTY0LTkuMDc5di4yNzJjLjAwNSA1LjYzNiA0LjUzOCAxMC4yMDQgMTAuMTMyIDEwLjIxYTkuNzExIDkuNzExIDAgMCAwIDIuMDk4LS4yMjIgOC4wOTYgOC4wOTYgMCAwIDEtNy4xNzQgNC4zNXYtLjA0MXoiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1waG9uZSIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJtMTIuODYyIDE3LjE0OC0uMTgyLS4xNDRhLjkyNy45MjcgMCAwIDAtLjIxOS0uMTA4bC0uMjE4LS4wOTZjLS40LS4wODMtLjgxNS4wNC0xLjEwNS4zMjRhMS4zNyAxLjM3IDAgMCAwLS4yNTUuMzk2IDEuMTkgMS4xOSAwIDAgMCAuMjYgMS4zMDZjLjM0NC4zNDMuODY1LjQ0OCAxLjMxOC4yNjYuMTQ2LS4wNy4yOC0uMTU4LjQwMS0uMjY0YTEuMTkgMS4xOSAwIDAgMCAuMjU1LTEuMzA4IDEuMiAxLjIgMCAwIDAtLjI1NS0uMzcyek0xNi44NTcgMEg3LjE0M0M1LjEzIDAgMy41IDEuNjEyIDMuNSAzLjZ2MTYuOGMwIDEuOTg4IDEuNjMxIDMuNiAzLjY0MyAzLjZoOS43MTRjMi4wMTIgMCAzLjY0My0xLjYxMiAzLjY0My0zLjZWMy42YzAtMS45ODgtMS42MzEtMy42LTMuNjQzLTMuNnptMS4yMTQgMjAuNGMwIC42NjMtLjU0MyAxLjItMS4yMTQgMS4ySDcuMTQzYy0uNjcgMC0xLjIxNC0uNTM3LTEuMjE0LTEuMlYzLjZjMC0uNjYzLjU0My0xLjIgMS4yMTQtMS4yaDkuNzE0Yy42NyAwIDEuMjE0LjUzNyAxLjIxNCAxLjJ2MTYuOHoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLXBsYXkiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTE3LjI3IDYuNjY1IDYuNTM1LjUxQTMuOCAzLjggMCAwIDAgLjgzNCAzLjg0M1YxNi4yYTMuOCAzLjggMCAwIDAgNS43IDMuMjg5bDEwLjczNi02LjE1NmEzLjggMy44IDAgMCAwIDAtNi41Nzl2LS4wODl6bS0xLjExMiA0LjY1Nkw1LjQyMyAxNy41NjZhMS42IDEuNiAwIDAgMS0xLjU3OCAwIDEuNTc4IDEuNTc4IDAgMCAxLS43ODktMS4zNjZWMy43OThhMS41NzUgMS41NzUgMCAwIDEgMS41NzgtMS41NzdjLjI3Ni4wMDUuNTQ3LjA3OC43OS4yMWwxMC43MzQgNi4yMDFhMS41NzggMS41NzggMCAwIDEgMCAyLjczNHYtLjA0NXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLXBsdXMiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTE4Ljc1IDguNzVoLTcuNXYtNy41YTEuMjUgMS4yNSAwIDAgMC0yLjUgMHY3LjVoLTcuNWExLjI1IDEuMjUgMCAxIDAgMCAyLjVoNy41djcuNWExLjI1IDEuMjUgMCAwIDAgMi41IDB2LTcuNWg3LjVhMS4yNSAxLjI1IDAgMCAwIDAtMi41eiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLXF1ZXN0aW9uIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMS4xNDggMTUuOTQ4Yy0uMDUyLjA1Ny0uMS4xMTctLjE0NC4xOGEuOTEyLjkxMiAwIDAgMC0uMTA4LjIxNi43NjguNzY4IDAgMCAwLS4wNzIuMjE2Yy0uMDA2LjA4LS4wMDYuMTYgMCAuMjQtLjAwNC4xNTcuMDI5LjMxNC4wOTYuNDU2LjExLjMwMS4zNDcuNTM5LjY0OC42NDguMjkuMTI4LjYyMi4xMjguOTEyIDBhMS4wOCAxLjA4IDAgMCAwIC42NDgtLjY0OCAxLjIgMS4yIDAgMCAwIC4wNzItLjQ1NiAxLjIgMS4yIDAgMCAwLTIuMDUyLS44NTJ6TTEyIDBDNS4zNzMgMCAwIDUuMzczIDAgMTJzNS4zNzMgMTIgMTIgMTIgMTItNS4zNzMgMTItMTJBMTIgMTIgMCAwIDAgMTIgMHptMCAyMS42YTkuNiA5LjYgMCAxIDEgMC0xOS4yIDkuNiA5LjYgMCAwIDEgMCAxOS4yek0xMiA2YTMuNiAzLjYgMCAwIDAtMy4xMiAxLjhBMS4yIDEuMiAwIDEgMCAxMC45NTYgOSAxLjIgMS4yIDAgMCAxIDEyIDguNGExLjIgMS4yIDAgMSAxIDAgMi40IDEuMiAxLjIgMCAwIDAtMS4yIDEuMnYxLjJhMS4yIDEuMiAwIDEgMCAyLjQgMHYtLjIxNkEzLjYgMy42IDAgMCAwIDEyIDZ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1yb2NrZXQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTIzLjU5OCAxLjE3YTEuMDkzIDEuMDkzIDAgMCAwLS43OC0uNzc2IDEyLjM0MyAxMi4zNDMgMCAwIDAtMTIuNDk0IDMuOTQ3bC0xLjIyIDEuNDQzLTIuODUtLjY4NWEzLjA0NCAzLjA0NCAwIDAgMC0zLjcwNSAxLjQ3OUwuMTQgMTAuODI3YTEuMDg1IDEuMDg1IDAgMCAwLS4wNDUuOTgyYy4xNDMuMzE2LjQyOS41NDYuNzcuNjE4bDMuMzYxLjcxOGExNC41NjggMTQuNTY4IDAgMCAwLS42MDcgMi42NTJjLS4wNDQuMzM1LjA3LjY3Mi4zMTEuOTExbDMuMzkyIDMuMzc4YTEuMDk2IDEuMDk2IDAgMCAwIC44NjkuMzE1IDEzLjM2NCAxMy4zNjQgMCAwIDAgMi43MjYtLjUzNGwuNzA0IDMuMjcyYy4wNzMuMzM5LjMwMy42MjMuNjIuNzY1LjMxOC4xNDIuNjg0LjEyNi45ODgtLjA0NGw0LjI3Mi0yLjRhMy4zMDEgMy4zMDEgMCAwIDAgMS41MDUtMy42bC0uNzMyLTMuMDA1IDEuMzU0LTEuMjRhMTIuMTc2IDEyLjE3NiAwIDAgMCAzLjk2OS0xMi40NDR6bS0yMC44MiA5LjQzN0w0LjQ4IDcuNmEuOTA1LjkwNSAwIDAgMSAxLjE3LS40MDlsMS44OC40NTQtLjcxMS44NGExNC4yNjIgMTQuMjYyIDAgMCAwLTEuNzQgMi42MTNsLTIuMzAxLS40OTF6bTEzLjY0NCA4Ljk1OC0yLjk3MiAxLjY2OS0uNDctMi4xODRhMTIuNDEgMTIuNDEgMCAwIDAgMi42NC0xLjc2NWwuODE0LS43NDUuNDQyIDEuODE0YTEuMTMgMS4xMyAwIDAgMS0uNDU0IDEuMjF6bTEuNzY2LTcuNTg5LTQuMDMyIDMuNjlhMTAuNzE1IDEwLjcxNSAwIDAgMS01LjY1NyAyLjUxbC0yLjYzLTIuNjJhMTEuODg4IDExLjg4OCAwIDAgMSAyLjYyNy01LjY3MWwxLjgzNi0yLjE3MWMuMDMtLjAzMi4wNi0uMDY2LjA4NS0uMTAxbDEuNTctMS44NTdhMTAuMTc1IDEwLjE3NSAwIDAgMSA5LjY0LTMuMzk5IDEwLjAyIDEwLjAyIDAgMCAxLTMuNDQgOS42MnptLTEuMDEtNi43MTVjLS45MDYgMC0xLjY0MS43MzItMS42NDEgMS42MzQgMCAuOTAzLjczNSAxLjYzNCAxLjY0MSAxLjYzNHMxLjY0MS0uNzMxIDEuNjQxLTEuNjM0YzAtLjQzMy0uMTczLS44NDktLjQ4LTEuMTU1YTEuNjQ1IDEuNjQ1IDAgMCAwLTEuMTYxLS40Nzl6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1zaGllbGQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTIxLjA2IDEuOTc5YTEuMTc4IDEuMTc4IDAgMCAwLS45OTctLjI0QTkuNDE4IDkuNDE4IDAgMCAxIDEyLjY3Ny4yMTRhMS4xNzcgMS4xNzcgMCAwIDAtMS4zNTQgMEE5LjQxOCA5LjQxOCAwIDAgMSAzLjkzNyAxLjc0YTEuMTc4IDEuMTc4IDAgMCAwLS45OTguMjRjLS4yNzkuMjI4LS40NC41NzMtLjQzOS45MzZ2OC45NDNhMTAuODQgMTAuODQgMCAwIDAgNC40NzcgOC43OThsNC4zMzQgMy4xMjFjLjQxMy4yOTcuOTY1LjI5NyAxLjM3OCAwbDQuMzM0LTMuMTJhMTAuODQgMTAuODQgMCAwIDAgNC40NzctOC44VjIuOTE2YTEuMjA1IDEuMjA1IDAgMCAwLS40NC0uOTM2em0tMS45MzUgOS44NzlhOC40MzEgOC40MzEgMCAwIDEtMy40OCA2Ljg0MkwxMiAyMS4zMjlsLTMuNjQ2LTIuNjNhOC40MzEgOC40MzEgMCAwIDEtMy40NzktNi44NDFWNC4yOTVjMi40OS4yMTYgNC45ODMtLjM2OCA3LjEyNS0xLjY2OGExMS43NzMgMTEuNzczIDAgMCAwIDcuMTI1IDEuNjY4djcuNTYzem0tNS4yOTYtMi43NS0zLjE5NSAzLjI0Mi0xLjA1Ni0xLjA4YTEuMTgzIDEuMTgzIDAgMCAwLTEuNjg3IDAgMS4yMTUgMS4yMTUgMCAwIDAgMCAxLjcwNGwxLjkgMS45MmExLjE4MSAxLjE4MSAwIDAgMCAxLjY4NyAwbDQuMDg0LTQuMDkzYTEuMjE1IDEuMjE1IDAgMCAwIDAtMS43MDQgMS4xODMgMS4xODMgMCAwIDAtMS42ODYgMGwtLjA0Ny4wMTJ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1zb2MtZGlzY29yZCIgdmlld0JveD0iMCAwIDMyIDMyIj48cGF0aCBkPSJNMjcuMTA3IDUuNGEyNi4xNDMgMjYuMTQzIDAgMCAwLTYuNjAyLTIuMDY3IDE5LjI0IDE5LjI0IDAgMCAwLS44NDUgMS43NDkgMjQuMzQyIDI0LjM0MiAwIDAgMC03LjMxNyAwIDE4LjY1NSAxOC42NTUgMCAwIDAtLjg1Ni0xLjc0OUEyNi4wNTYgMjYuMDU2IDAgMCAwIDQuODggNS40MDRDLjcwMiAxMS42OTEtLjQzIDE3LjgyMi4xMzYgMjMuODY2YzIuNzcxIDIuMDYgNS40NTcgMy4zMTIgOC4wOTcgNC4xMzFhMjAuMDM2IDIwLjAzNiAwIDAgMCAxLjczNC0yLjg0NCAxNy4wODIgMTcuMDgyIDAgMCAxLTIuNzMtMS4zMjNjLjIyOC0uMTY5LjQ1Mi0uMzQ2LjY2OS0uNTI3IDUuMjY1IDIuNDUyIDEwLjk4NiAyLjQ1MiAxNi4xODggMCAuMjIuMTgxLjQ0My4zNTguNjcuNTI3YTE3LjA0IDE3LjA0IDAgMCAxLTIuNzM2IDEuMzI2Yy41Ljk5OCAxLjA4IDEuOTUgMS43MzQgMi44NDQgMi42NDMtLjgyIDUuMzMtMi4wNyA4LjEwMi00LjEzNC42NjQtNy4wMDYtMS4xMzUtMTMuMDgtNC43NTctMTguNDY3ek0xMC42ODQgMjAuMTQ4Yy0xLjU4IDAtMi44NzctMS40Ny0yLjg3Ny0zLjI1OXMxLjI2OS0zLjI2IDIuODc3LTMuMjZjMS42MDkgMCAyLjkwNSAxLjQ2OCAyLjg3NyAzLjI2LjAwMyAxLjc5LTEuMjY4IDMuMjU5LTIuODc3IDMuMjU5em0xMC42MzIgMGMtMS41ODEgMC0yLjg3Ny0xLjQ3LTIuODc3LTMuMjU5czEuMjY4LTMuMjYgMi44NzctMy4yNmMxLjYwOCAwIDIuOTA0IDEuNDY4IDIuODc2IDMuMjYgMCAxLjc5LTEuMjY4IDMuMjU5LTIuODc2IDMuMjU5eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtc29jLWZhY2Vib29rIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxwYXRoIGQ9Ik0yMC45ODQgNS4zMTJIMjRWLjIyNEE0Mi4wMDMgNDIuMDAzIDAgMCAwIDE5LjYwNSAwYy00LjM2MyAwLTcuMzQ3IDIuNjU2LTcuMzQ3IDcuNTJ2NC4xOTJINy4zMzN2NS42OTZoNC45MjVWMzJoNS45MDNWMTcuNDA4aDQuOTA5bC43MzgtNS42OTZIMTguMTZWOC4wOGMwLTEuNjguNDUtMi43NjggMi44MjMtMi43Njh6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1zb2MtbWVkaXVtIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxwYXRoIGQ9Ik0zMC43MzQgNy4wNjdIMzJWMy4zMzNIMjAuMDMyTDE2LjA1NCAxOGgtLjEwOEwxMi4wMDQgMy4zMzNIMHYzLjczNGgxLjIzQTEuNDMzIDEuNDMzIDAgMCAxIDIuNCA4LjE3OHYxNS43MjlhMS4zNDUgMS4zNDUgMCAwIDEtMS4xNyAxLjAyNkgwdjMuNzM0aDkuNnYtMy43MzRINy4yVjguNGguMTRsNS41MzIgMjAuMjY3aDQuMzRMMjIuODE1IDguNGguMTE4djE2LjUzM2gtMi40djMuNzM0SDMydi0zLjczNGgtMS4yNjZhMS4zNDMgMS4zNDMgMCAwIDEtMS4xMzQtMS4wMjZWOC4xNzhhMS40MzYgMS40MzYgMCAwIDEgMS4xMzQtMS4xMTF6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1zb2MtdGVsZWdyYW0iIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZD0iTTE2IDBjOC44MzcgMCAxNiA3LjE2MyAxNiAxNnMtNy4xNjMgMTYtMTYgMTZTMCAyNC44MzcgMCAxNiA3LjE2MyAwIDE2IDB6bTYuNTQyIDkuNjMyYy0uNjAyLjAxLTEuNTI1LjMzMi01Ljk2OSAyLjE4bC05LjMzIDQuMDJjLS43NTguMy0xLjE1NS41OTUtMS4xOS44ODMtLjA3LjU1My43MjYuNzI2IDEuNzI4IDEuMDUxLjgxNy4yNjYgMS45MTYuNTc2IDIuNDg3LjU4OS41MTkuMDExIDEuMDk3LS4yMDMgMS43MzUtLjY0MSA0LjM1OS0yLjk0MiA2LjYwOC00LjQyOSA2Ljc1LTQuNDYxLjA5OS0uMDIyLjIzNy0uMDUxLjMzLjAzMi4wOTQuMDgzLjA4NS4yNC4wNzUuMjgzLS4wMzcuMTU4LS45NTYgMS4wNi0xLjk0NyAybC0uMzk4LjM3NmMtLjk5NS45MzYtMS45NTMgMS44MTUtMi4wNjQgMS45My0uOS45MzUtMS45MjQgMS41MDctLjM0NCAyLjU0OGwzLjU3IDIuMzk5Yy45LjU5IDEuNjA2IDEuMjkgMi41MzUgMS4yMDQuNDI4LS4wNC44Ny0uNDQxIDEuMDk0LTEuNjQuNTMtMi44MzQgMS41NzItOC45NzQgMS44MTItMTEuNTA0YTIuODIgMi44MiAwIDAgMC0uMDI2LS42My42NzQuNjc0IDAgMCAwLS4yMjgtLjQzM2MtLjE5Mi0uMTU1LS40ODgtLjE4OC0uNjItLjE4NnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLXNvYy10d2l0dGVyIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxwYXRoIGQ9Ik0zMiA1Ljc4MmMtMS4yMDMuNTItMi40NzUuODY1LTMuNzc2IDEuMDIyYTYuNTk4IDYuNTk4IDAgMCAwIDIuODk2LTMuNjI1IDEzLjE1MSAxMy4xNTEgMCAwIDEtNC4xNzYgMS41OTcgNi41NyA2LjU3IDAgMCAwLTcuOTE0LTEuMzM3IDYuNTQzIDYuNTQzIDAgMCAwLTMuMjg2IDcuMzEgMTguNjM2IDE4LjYzNiAwIDAgMS0xMy41Mi02Ljg1MiA2LjYzMyA2LjYzMyAwIDAgMC0uODggMy4zMDYgNi41MjggNi41MjggMCAwIDAgMi45MTIgNS40NDYgNi40OSA2LjQ5IDAgMCAxLTIuOTc2LS44MTV2LjA4YTYuNTUgNi41NSAwIDAgMCA1LjI4IDYuMzg4IDYuMyA2LjMgMCAwIDEtMS43Ni4yNzEgNy44NTUgNy44NTUgMCAwIDEtMS4yMzItLjExMiA2LjU3NSA2LjU3NSAwIDAgMCA2LjEyOCA0LjUzNiAxMy4xNjggMTMuMTY4IDAgMCAxLTguMDk2IDIuODFjLS41MzUuMDAyLTEuMDctLjAzLTEuNi0uMDk2YTE4LjU0IDE4LjU0IDAgMCAwIDEwLjA2NCAyLjk1NSAxOC41NjMgMTguNTYzIDAgMCAwIDEzLjI4OC01LjQwNEExOC40OSAxOC40OSAwIDAgMCAyOC44IDEwLjAxNHYtLjg0N0ExMy40NzMgMTMuNDczIDAgMCAwIDMyIDUuNzgyeiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtc29jLXlvdXR1YmUiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZD0iTTMxLjk5MyAxMi42NTVhMTIuNTM5IDEyLjUzOSAwIDAgMC0xLjMyMy02LjA1MiA0LjIzOCA0LjIzOCAwIDAgMC0yLjUtMS40NjVjLTQuMDQ1LS4zNy04LjEwNy0uNTIyLTEyLjE2Ny0uNDU0YTExMy4wNiAxMTMuMDYgMCAwIDAtMTIuMTI0LjQ0IDQuMTYgNC4xNiAwIDAgMC0yLjEyMiAxLjA4NEMuNDUgNy40MjQuMzA0IDkuNTA1LjE1OCAxMS4yNjNhNzEuMzI4IDcxLjMyOCAwIDAgMCAwIDkuNDk1Yy4wNDIuOTkuMTg4IDEuOTcyLjQzNiAyLjkzLjE3Ni43NDEuNTMgMS40MjYgMS4wMzIgMS45OTQuNTkyLjU5MSAxLjM0Ny45OSAyLjE2NiAxLjE0MyAzLjEzNC4zOSA2LjI5Mi41NTEgOS40NDkuNDgzIDUuMDg4LjA3NCA5LjU1IDAgMTQuODI3LS40MWE0LjE3NSA0LjE3NSAwIDAgMCAyLjIyNC0xLjE0M2MuNDA3LS40MS43MS0uOTEzLjg4Ny0xLjQ2NS41Mi0xLjYwOC43NzUtMy4yOTEuNzU1LTQuOTgyLjA1OS0uODIuMDU5LTUuNzc0LjA1OS02LjY1M3ptLTE5LjI3NSA3LjUzMnYtOS4wN2w4LjYwNSA0LjU1N2MtMi40MTMgMS4zNDgtNS41OTYgMi44NzItOC42MDUgNC41MTN6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1zdGFrZSIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJtLjQ5IDYuOTIgOC44MTIgNS4xYS45NzguOTc4IDAgMCAwIC45OCAwbDguODExLTUuMWEuOTgxLjk4MSAwIDAgMCAwLTEuNjk3TDEwLjI4MS4xM2EuOTc4Ljk3OCAwIDAgMC0uOTc5IDBMLjQ5IDUuMjIzYS45ODEuOTgxIDAgMCAwIDAgMS42OTd6bTkuMzAyLTQuNzY4IDYuODUzIDMuOTI0TDkuNzkyIDEwIDIuOTM4IDYuMDc2bDYuODU0LTMuOTI0em04LjMyMiA3LjAzNC04LjMyMiA0LjczOC04LjMyMy00Ljc3N2EuOTc3Ljk3NyAwIDAgMC0xLjM0MS4zNjMuOTgyLjk4MiAwIDAgMCAuMzYyIDEuMzM0bDguODEyIDUuMWEuOTc4Ljk3OCAwIDAgMCAuOTggMGw4LjgxMS01LjFhLjk4Mi45ODIgMCAwIDAtLjIzMy0xLjc5Ni45NzcuOTc3IDAgMCAwLS43NDYuMDk5di4wMzl6bTAgMy45MjQtOC4zMjIgNC43MzgtOC4zMjMtNC43NzhhLjk3Ny45NzcgMCAwIDAtMS4zNDEuMzYzLjk4Mi45ODIgMCAwIDAgLjM2MiAxLjMzNWw4LjgxMiA1LjFhLjk3OC45NzggMCAwIDAgLjk4IDBsOC44MTEtNS4xYS45ODIuOTgyIDAgMCAwLS4yMzMtMS43OTYuOTc3Ljk3NyAwIDAgMC0uNzQ2LjA5OHYuMDR6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1zdGFyIiB2aWV3Qm94PSIwIDAgMjUgMjQiPjxwYXRoIGQ9Ik0xOC42OTcgMjMuNWMtLjE5NSAwLS4zODYtLjA0OC0uNTU4LS4xMzhsLTYuMTE3LTMuMjMyLTYuMTE3IDMuMjMyYTEuMTk1IDEuMTk1IDAgMCAxLTEuMjYzLS4wOTIgMS4yMDkgMS4yMDkgMCAwIDEtLjQ3OC0xLjE4bDEuMTY4LTYuODQ0TC4zODQgMTAuNGExLjIxIDEuMjEgMCAwIDEtLjMwMy0xLjIzNmMuMTQtLjQzNy41MTYtLjc1NS45NjgtLjgyMWw2LjgzOS0uOTk5IDMuMDU4LTYuMjI3YTEuMjQ5IDEuMjQ5IDAgMCAxIDIuMTUyIDBsMy4wNTggNi4yMjcgNi44MzkuOTk4Yy40NTIuMDY3LjgyNy4zODUuOTY4LjgyMWExLjIxIDEuMjEgMCAwIDEtLjMwMyAxLjIzN2wtNC45NDggNC44NDYgMS4xNjggNi44NDRjLjA2LjM1LS4wMzcuNzEtLjI2Ni45ODFhMS4xOTggMS4xOTggMCAwIDEtLjkxNy40Mjl6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJpY29ucy1zeW5jIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxwYXRoIGQ9Ik0xNy45MSAxMy41MWgtNC41M2ExIDEgMCAwIDAgMCAyaDIuNEE4IDggMCAwIDEgMiAxMGExIDEgMCAxIDAtMiAwIDEwIDEwIDAgMCAwIDE2Ljg4IDcuMjNWMTlhMSAxIDAgMCAwIDIgMHYtNC41YTEgMSAwIDAgMC0uOTctLjk5ek0xMCAwYTEwIDEwIDAgMCAwLTYuODggMi43N1YxYTEgMSAwIDEgMC0yIDB2NC41YTEgMSAwIDAgMCAxIDFoNC41YTEgMSAwIDEgMCAwLTJoLTIuNEE4IDggMCAwIDEgMTggMTBhMSAxIDAgMCAwIDIgMEExMCAxMCAwIDAgMCAxMCAweiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLXRodW1icy11cCIgdmlld0JveD0iMCAwIDI1IDI0Ij48cGF0aCBkPSJNMjMuMTg0IDkuNjk2YTMuNiAzLjYgMCAwIDAtMi43Ni0xLjI5NkgxNC45NWwuNjcyLTEuNzE2QTQuOTU2IDQuOTU2IDAgMCAwIDEwLjk1NSAwYTEuMiAxLjIgMCAwIDAtMS4wOTIuNzA4TDYuNDQzIDguNGgtMi44MkEzLjYgMy42IDAgMCAwIC4wMjEgMTJ2OC40YTMuNiAzLjYgMCAwIDAgMy42IDMuNkgxOC45YTMuNiAzLjYgMCAwIDAgMy41NC0yLjk1MmwxLjUyNC04LjRhMy42IDMuNiAwIDAgMC0uNzgtMi45NTJ6TTYuMDIyIDIxLjZoLTIuNGExLjIgMS4yIDAgMCAxLTEuMi0xLjJWMTJhMS4yIDEuMiAwIDAgMSAxLjItMS4yaDIuNHYxMC44em0xNS42MDItOS4zODQtMS41MjQgOC40YTEuMiAxLjIgMCAwIDEtMS4yLjk4NEg4LjQyM1Y5Ljg1MmwzLjI2NC03LjM0NGEyLjUzMiAyLjUzMiAwIDAgMSAxLjY1NiAzLjMzNmwtLjYzNiAxLjcxNmEyLjQgMi40IDAgMCAwIDIuMjQ0IDMuMjRoNS40NzNhMS4yIDEuMiAwIDAgMSAuOTI0LjQzMiAxLjIgMS4yIDAgMCAxIC4yNzYuOTg0eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtdXNlciIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNMTMuNzEzIDEwLjcxYTUuOTc3IDUuOTc3IDAgMCAwIDEuOTctNi42NzVBNi4wMjcgNi4wMjcgMCAwIDAgOS45ODUgMGE2LjAyNyA2LjAyNyAwIDAgMC01LjY5OCA0LjAzNSA1Ljk3NyA1Ljk3NyAwIDAgMCAxLjk3IDYuNjc0IDEwLjAwMiAxMC4wMDIgMCAwIDAtNi4yNSA4LjE3NiAxLjAwNiAxLjAwNiAwIDAgMCAuODk0IDEuMTA5IDEuMDEgMS4wMSAwIDAgMCAxLjExNS0uODljLjQ1Ny00LjA0NSAzLjg5Ni03LjEwMiA3Ljk5LTcuMTAyIDQuMDkyIDAgNy41MzIgMy4wNTcgNy45ODggNy4xMDIuMDU3LjUwOS40OS44OTMgMS4wMDUuODloLjExYTEgMSAwIDAgMCAuODg1LTEuMSAxMC4wMDIgMTAuMDAyIDAgMCAwLTYuMjgtOC4xODV6TTkuOTg1IDEwYy0yLjIyIDAtNC4wMi0xLjc5LTQuMDItMy45OThzMS44LTMuOTk4IDQuMDItMy45OThjMi4yMiAwIDQuMDIgMS43OSA0LjAyIDMuOTk4IDAgMS4wNi0uNDI0IDIuMDc3LTEuMTc4IDIuODI3YTQuMDMxIDQuMDMxIDAgMCAxLTIuODQyIDEuMTd6Ii8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iaWNvbnMtdXNlcnMiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTEwLjI4NyA5Ljk5MWE0LjQ1NSA0LjQ1NSAwIDAgMCAxLjU0Ny0zLjM3M2MwLTIuNTA1LTIuMDM4LTQuNTM1LTQuNTUxLTQuNTM1LTIuNTE0IDAtNC41NTIgMi4wMy00LjU1MiA0LjUzNSAwIDEuMjk1LjU2NSAyLjUyNiAxLjU0OCAzLjM3M0E3LjI1NCA3LjI1NCAwIDAgMCAwIDE2LjU5M2MwIC41MDEuNDA4LjkwNy45MS45MDcuNTAzIDAgLjkxLS40MDYuOTEtLjkwNyAwLTMuMDA1IDIuNDQ2LTUuNDQxIDUuNDYzLTUuNDQxIDMuMDE2IDAgNS40NjIgMi40MzYgNS40NjIgNS40NDEgMCAuNTAxLjQwNy45MDcuOTEuOTA3LjUwMyAwIC45MS0uNDA2LjkxLS45MDdhNy4yNTQgNy4yNTQgMCAwIDAtNC4yNzgtNi42MDJ6bS0zLjAwNC0uNjUzYTIuNzI2IDIuNzI2IDAgMCAxLTIuNzMxLTIuNzIgMi43MjYgMi43MjYgMCAwIDEgMi43My0yLjcyIDIuNzI2IDIuNzI2IDAgMCAxIDIuNzMyIDIuNzJjMCAuNzIxLS4yODggMS40MTMtLjggMS45MjNhMi43MzYgMi43MzYgMCAwIDEtMS45MzEuNzk3em04Ljg2Ni4yOWE0LjUyIDQuNTIgMCAwIDAgLjc0OC00Ljg3IDQuNTUzIDQuNTUzIDAgMCAwLTQuMTUyLTIuNjc1LjkwOS45MDkgMCAwIDAtLjkxLjkwN2MwIC41MDEuNDA3LjkwNy45MS45MDdhMi43MjYgMi43MjYgMCAwIDEgMi43MyAyLjcyIDIuNzE5IDIuNzE5IDAgMCAxLTEuMzY1IDIuMzUuOTA2LjkwNiAwIDAgMC0uMDQ1IDEuNTQxbC4zNTUuMjM2LjExOC4wNjNhNi4zNDYgNi4zNDYgMCAwIDEgMy42NDEgNS43ODZjMCAuNTAxLjQwOC45MDcuOTEuOTA3LjUwMyAwIC45MS0uNDA2LjkxLS45MDdhOC4xNTUgOC4xNTUgMCAwIDAtMy44NS02Ljk2NXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLXdhbGxldCIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNMTcgNS4yMzFoLTF2LS45OTVhMi45OTMgMi45OTMgMCAwIDAtMy0yLjk4NkgzYy0xLjY1NyAwLTMgMS4zMzctMyAyLjk4NnYxMS45NDVhMi45OTMgMi45OTMgMCAwIDAgMyAyLjk4NmgxNGMxLjY1NyAwIDMtMS4zMzcgMy0yLjk4NlY4LjIxOGEyLjk5MyAyLjk5MyAwIDAgMC0zLTIuOTg3ek0zIDMuMjQxaDEwYy41NTIgMCAxIC40NDUgMSAuOTk1di45OTVIM2MtLjU1MiAwLTEtLjQ0NS0xLS45OTVzLjQ0OC0uOTk1IDEtLjk5NXptMTUgOS45NTNoLTFjLS41NTIgMC0xLS40NDUtMS0uOTk1cy40NDgtLjk5NSAxLS45OTVoMXYxLjk5em0wLTMuOTgxaC0xYy0xLjY1NyAwLTMgMS4zMzctMyAyLjk4NmEyLjk5MyAyLjk5MyAwIDAgMCAzIDIuOTg2aDF2Ljk5NmMwIC41NS0uNDQ4Ljk5NS0xIC45OTVIM2MtLjU1MiAwLTEtLjQ0Ni0xLS45OTVWNy4wNTNjLjMyMS4xMTMuNjYuMTcgMSAuMTdoMTRjLjU1MiAwIDEgLjQ0NSAxIC45OTV2Ljk5NXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9Imljb25zLXdpdGhkcmF3IiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxwYXRoIGQ9Im02Ljg4IDMuNTk3LjM5My0uNDMzdjIuNjM0QS43My43MyAwIDAgMCA4IDYuNTNhLjczLjczIDAgMCAwIC43MjctLjczM1YzLjE2NGwuMzkzLjQwNGEuNzI1LjcyNSAwIDAgMCAxLjA2Mi4wMy43MzcuNzM3IDAgMCAwIDAtMS4wNDNMOC41MTYuODc1YS43MjcuNzI3IDAgMCAwLS4yNC0uMTUzLjcyMi43MjIgMCAwIDAtLjU1MiAwIC43MjcuNzI3IDAgMCAwLS4yNC4xNTRsLTEuNjY2IDEuNjVhLjc2Mi43NjIgMCAwIDAgMCAxLjA3MS43NDYuNzQ2IDAgMCAwIDEuMDYyIDB6TTggNy45OThhMi4xOTEgMi4xOTEgMCAwIDAtMi4xODIgMi4yYzAgMS4yMTYuOTc3IDIuMjAxIDIuMTgyIDIuMjAxYTIuMTkxIDIuMTkxIDAgMCAwIDIuMTgyLTIuMkEyLjE5IDIuMTkgMCAwIDAgOCA3Ljk5OXptMCAyLjkzNGEuNzMuNzMgMCAwIDEtLjcyNy0uNzMzQS43My43MyAwIDAgMSA4IDkuNDY1YS43My43MyAwIDAgMSAuNzI3LjczNC43My43MyAwIDAgMS0uNzI3LjczM3pNMi45MSAxMC4yYS43My43MyAwIDAgMCAuNzI2LjczMy43My43MyAwIDAgMCAuNzI4LS43MzMuNzMuNzMgMCAwIDAtLjcyOC0uNzM0LjczLjczIDAgMCAwLS43MjcuNzM0em0xMC4xOCAwYS43My43MyAwIDAgMC0uNzI2LS43MzQuNzMuNzMgMCAwIDAtLjcyOC43MzQuNzMuNzMgMCAwIDAgLjcyOC43MzMuNzMuNzMgMCAwIDAgLjcyNy0uNzMzem0uNzI4LTUuMTM1SDEwLjkxYS43My43MyAwIDAgMC0uNzI3LjczNC43My43MyAwIDAgMCAuNzI3LjczM2gyLjkxYS43My43MyAwIDAgMSAuNzI2LjczNHY1Ljg2OGEuNzMuNzMgMCAwIDEtLjcyNy43MzNIMi4xODJhLjczLjczIDAgMCAxLS43MjctLjczM1Y3LjI2NWEuNzMuNzMgMCAwIDEgLjcyNy0uNzM0SDUuMDlhLjczLjczIDAgMCAwIC43MjctLjczMy43My43MyAwIDAgMC0uNzI3LS43MzRIMi4xOEEyLjE5MSAyLjE5MSAwIDAgMCAwIDcuMjY0djUuODY5YzAgMS4yMTUuOTc3IDIuMiAyLjE4MiAyLjJoMTEuNjM2YTIuMTkxIDIuMTkxIDAgMCAwIDIuMTgyLTIuMlY3LjI2NWEyLjE5IDIuMTkgMCAwIDAtMi4xODItMi4yeiIvPjwvc3ltYm9sPjwvc3ZnPg=="}},"time_used":21,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":21,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/js/vendors.js?v=1681460523","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.025Z","timestamp":1785145636025,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /js/vendors.js?v=1681460523 HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\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\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: application/x-javascript\r\ncontent-length: 214602\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 07:46:01 GMT\r\nlast-modified: Sun, 16 Nov 2025 06:36:48 GMT\r\netag: \"d02d4-69197100-e5c016c2b5ea2b5;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 6412\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 8a344632ad005e032ac803df308b49d3-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":852692,"size_decoded":215162,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (65471)","md5":"a8ab6269b10f87faa9ccabe38cc127bd","sha1":"06741de6f158cafec153fb62a61432a70f951313","sha256":"9d94a0f9cdbb6deb6239e86322a35e5ac366931497be579b5381b6437370b003","sha512":"2b20e9869d52f7dd3913f7ea31f96f024fd273e879e73a2e8c6966f0f1992ceecfa8bab23fa1704a5d8ca94ddf5c591fee1ba7fe5ab4cae2a816cb9b925c8295","ssdeep":"12288:b+5PkviVmySXoHP6LkyEkNbBfgiVXIeaGM:b+5PFVbeN9gimem","tlshash":"ba052a46f256347385d2119dd86f1207a3726959644a80acf9bcd8e72cb8e8831fff78","first_seen":"2026-07-27T02:49:41.001609Z","last_seen":"2026-07-29T06:16:17.91354Z","times_seen":7,"resource_available":true,"data":"LyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgdmVuZG9ycy5qcy5MSUNFTlNFLnR4dCAqLwooc2VsZi53ZWJwYWNrQ2h1bmtmcm9udGVuZD1zZWxmLndlYnBhY2tDaHVua2Zyb250ZW5kfHxbXSkucHVzaChbWzczMF0sezY4OTpmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2kuZChlLHtLUjpmdW5jdGlvbigpe3JldHVybiBCfX0pO2NvbnN0IHM9dD0+Im9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmdC5jb25zdHJ1Y3Rvcj09PU9iamVjdCYmIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCksYT0oLi4udCk9PntsZXQgZT0hMTsiYm9vbGVhbiI9PXR5cGVvZiB0WzBdJiYoZT10LnNoaWZ0KCkpO2xldCBpPXRbMF07aWYoIWl8fCJvYmplY3QiIT10eXBlb2YgaSl0aHJvdyBuZXcgRXJyb3IoImV4dGVuZGVlIG11c3QgYmUgYW4gb2JqZWN0Iik7Y29uc3Qgbj10LnNsaWNlKDEpLHI9bi5sZW5ndGg7Zm9yKGxldCB0PTA7dDxyO3QrKyl7Y29uc3Qgcj1uW3RdO2ZvcihsZXQgdCBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkodCkpe2NvbnN0IG49clt0XTtpZihlJiYoQXJyYXkuaXNBcnJheShuKXx8cyhuKSkpe2NvbnN0IGU9QXJyYXkuaXNBcnJheShuKT9bXTp7fTtpW3RdPWEoITAsaS5oYXNPd25Qcm9wZXJ0eSh0KT9pW3RdOmUsbil9ZWxzZSBpW3RdPW59fXJldHVybiBpfSxuPSh0LGU9MWU0KT0+KHQ9cGFyc2VGbG9hdCh0KXx8MCxNYXRoLnJvdW5kKCh0K051bWJlci5FUFNJTE9OKSplKS9lKSxyPWZ1bmN0aW9uKHQpe3JldHVybiEhKHQmJiJvYmplY3QiPT10eXBlb2YgdCYmdCBpbnN0YW5jZW9mIEVsZW1lbnQmJnQhPT1kb2N1bWVudC5ib2R5KSYmIXQuX19QYW56b29tJiYoZnVuY3Rpb24odCl7Y29uc3QgZT1nZXRDb21wdXRlZFN0eWxlKHQpWyJvdmVyZmxvdy15Il0saT1nZXRDb21wdXRlZFN0eWxlKHQpWyJvdmVyZmxvdy14Il0scz0oInNjcm9sbCI9PT1lfHwiYXV0byI9PT1lKSYmTWF0aC5hYnModC5zY3JvbGxIZWlnaHQtdC5jbGllbnRIZWlnaHQpPjEsYT0oInNjcm9sbCI9PT1pfHwiYXV0byI9PT1pKSYmTWF0aC5hYnModC5zY3JvbGxXaWR0aC10LmNsaWVudFdpZHRoKT4xO3JldHVybiBzfHxhfSh0KT90OnIodC5wYXJlbnROb2RlKSl9LG89InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5SZXNpemVPYnNlcnZlcnx8Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5vYnNlcnZhYmxlcz1bXSx0aGlzLmJvdW5kQ2hlY2s9dGhpcy5jaGVjay5iaW5kKHRoaXMpLHRoaXMuYm91bmRDaGVjaygpLHRoaXMuY2FsbGJhY2s9dH1vYnNlcnZlKHQpe2lmKHRoaXMub2JzZXJ2YWJsZXMuc29tZSgoZT0+ZS5lbD09PXQpKSlyZXR1cm47Y29uc3QgZT17ZWw6dCxzaXplOntoZWlnaHQ6dC5jbGllbnRIZWlnaHQsd2lkdGg6dC5jbGllbnRXaWR0aH19O3RoaXMub2JzZXJ2YWJsZXMucHVzaChlKX11bm9ic2VydmUodCl7dGhpcy5vYnNlcnZhYmxlcz10aGlzLm9ic2VydmFibGVzLmZpbHRlcigoZT0+ZS5lbCE9PXQpKX1kaXNjb25uZWN0KCl7dGhpcy5vYnNlcnZhYmxlcz1bXX1jaGVjaygpe2NvbnN0IHQ9dGhpcy5vYnNlcnZhYmxlcy5maWx0ZXIoKHQ9Pntjb25zdCBlPXQuZWwuY2xpZW50SGVpZ2h0LGk9dC5lbC5jbGllbnRXaWR0aDtpZih0LnNpemUuaGVpZ2h0IT09ZXx8dC5zaXplLndpZHRoIT09aSlyZXR1cm4gdC5zaXplLmhlaWdodD1lLHQuc2l6ZS53aWR0aD1pLCEwfSkpLm1hcCgodD0+dC5lbCkpO3QubGVuZ3RoPjAmJnRoaXMuY2FsbGJhY2sodCksd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLmJvdW5kQ2hlY2spfX07Y2xhc3MgbHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmlkPXNlbGYuVG91Y2gmJnQgaW5zdGFuY2VvZiBUb3VjaD90LmlkZW50aWZpZXI6LTEsdGhpcy5wYWdlWD10LnBhZ2VYLHRoaXMucGFnZVk9dC5wYWdlWSx0aGlzLmNsaWVudFg9dC5jbGllbnRYLHRoaXMuY2xpZW50WT10LmNsaWVudFl9fWNvbnN0IGM9KHQsZSk9PmU/TWF0aC5zcXJ0KChlLmNsaWVudFgtdC5jbGllbnRYKSoqMisoZS5jbGllbnRZLXQuY2xpZW50WSkqKjIpOjAsaD0odCxlKT0+ZT97Y2xpZW50WDoodC5jbGllbnRYK2UuY2xpZW50WCkvMixjbGllbnRZOih0LmNsaWVudFkrZS5jbGllbnRZKS8yfTp0O2NsYXNzIGR7Y29uc3RydWN0b3IodCx7c3RhcnQ6ZT0oKCk9PiEwKSxtb3ZlOmk9KCgpPT57fSksZW5kOnM9KCgpPT57fSl9PXt9KXt0aGlzLl9lbGVtZW50PXQsdGhpcy5zdGFydFBvaW50ZXJzPVtdLHRoaXMuY3VycmVudFBvaW50ZXJzPVtdLHRoaXMuX3BvaW50ZXJTdGFydD10PT57aWYodC5idXR0b25zPjAmJjAhPT10LmJ1dHRvbilyZXR1cm47Y29uc3QgZT1uZXcgbCh0KTt0aGlzLmN1cnJlbnRQb2ludGVycy5zb21lKCh0PT50LmlkPT09ZS5pZCkpfHx0aGlzLl90cmlnZ2VyUG9pbnRlclN0YXJ0KGUsdCkmJih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLl9tb3ZlKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5fcG9pbnRlckVuZCkpfSx0aGlzLl90b3VjaFN0YXJ0PXQ9Pntmb3IoY29uc3QgZSBvZiBBcnJheS5mcm9tKHQuY2hhbmdlZFRvdWNoZXN8fFtdKSl0aGlzLl90cmlnZ2VyUG9pbnRlclN0YXJ0KG5ldyBsKGUpLHQpfSx0aGlzLl9tb3ZlPXQ9Pntjb25zdCBlPXRoaXMuY3VycmVudFBvaW50ZXJzLnNsaWNlKCksaT0odD0+ImNoYW5nZWRUb3VjaGVzImluIHQpKHQpP0FycmF5LmZyb20odC5jaGFuZ2VkVG91Y2hlcykubWFwKCh0PT5uZXcgbCh0KSkpOltuZXcgbCh0KV07Zm9yKGNvbnN0IHQgb2YgaSl7Y29uc3QgZT10aGlzLmN1cnJlbnRQb2ludGVycy5maW5kSW5kZXgoKGU9PmUuaWQ9PT10LmlkKSk7ZTwwfHwodGhpcy5jdXJyZW50UG9pbnRlcnNbZV09dCl9dGhpcy5fbW92ZUNhbGxiYWNrKGUsdGhpcy5jdXJyZW50UG9pbnRlcnMuc2xpY2UoKSx0KX0sdGhpcy5fdHJpZ2dlclBvaW50ZXJFbmQ9KHQsZSk9Pntjb25zdCBpPXRoaXMuY3VycmVudFBvaW50ZXJzLmZpbmRJbmRleCgoZT0+ZS5pZD09PXQuaWQpKTtyZXR1cm4hKGk8MHx8KHRoaXMuY3VycmVudFBvaW50ZXJzLnNwbGljZShpLDEpLHRoaXMuc3RhcnRQb2ludGVycy5zcGxpY2UoaSwxKSx0aGlzLl9lbmRDYWxsYmFjayh0LGUpLDApKX0sdGhpcy5fcG9pbnRlckVuZD10PT57dC5idXR0b25zPjAmJjAhPT10LmJ1dHRvbnx8dGhpcy5fdHJpZ2dlclBvaW50ZXJFbmQobmV3IGwodCksdCkmJih3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLl9tb3ZlLHtwYXNzaXZlOiExfSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMuX3BvaW50ZXJFbmQse3Bhc3NpdmU6ITF9KSl9LHRoaXMuX3RvdWNoRW5kPXQ9Pntmb3IoY29uc3QgZSBvZiBBcnJheS5mcm9tKHQuY2hhbmdlZFRvdWNoZXN8fFtdKSl0aGlzLl90cmlnZ2VyUG9pbnRlckVuZChuZXcgbChlKSx0KX0sdGhpcy5fc3RhcnRDYWxsYmFjaz1lLHRoaXMuX21vdmVDYWxsYmFjaz1pLHRoaXMuX2VuZENhbGxiYWNrPXMsdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX3BvaW50ZXJTdGFydCx7cGFzc2l2ZTohMX0pLHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5fdG91Y2hTdGFydCx7cGFzc2l2ZTohMX0pLHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLl9tb3ZlLHtwYXNzaXZlOiExfSksdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5fdG91Y2hFbmQpLHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hjYW5jZWwiLHRoaXMuX3RvdWNoRW5kKX1zdG9wKCl7dGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX3BvaW50ZXJTdGFydCx7cGFzc2l2ZTohMX0pLHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5fdG91Y2hTdGFydCx7cGFzc2l2ZTohMX0pLHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLl9tb3ZlLHtwYXNzaXZlOiExfSksdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5fdG91Y2hFbmQpLHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hjYW5jZWwiLHRoaXMuX3RvdWNoRW5kKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLl9tb3ZlKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5fcG9pbnRlckVuZCl9X3RyaWdnZXJQb2ludGVyU3RhcnQodCxlKXtyZXR1cm4hIXRoaXMuX3N0YXJ0Q2FsbGJhY2sodCxlKSYmKHRoaXMuY3VycmVudFBvaW50ZXJzLnB1c2godCksdGhpcy5zdGFydFBvaW50ZXJzLnB1c2godCksITApfX1jbGFzcyB1e2NvbnN0cnVjdG9yKHQ9e30pe3RoaXMub3B0aW9ucz1hKCEwLHt9LHQpLHRoaXMucGx1Z2lucz1bXSx0aGlzLmV2ZW50cz17fTtmb3IoY29uc3QgdCBvZlsib24iLCJvbmNlIl0pZm9yKGNvbnN0IGUgb2YgT2JqZWN0LmVudHJpZXModGhpcy5vcHRpb25zW3RdfHx7fSkpdGhpc1t0XSguLi5lKX1vcHRpb24odCxlLC4uLmkpe2xldCBzPShhPXQ9U3RyaW5nKHQpLG49dGhpcy5vcHRpb25zLGEuc3BsaXQoIi4iKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJnRbZV19KSxuKSk7dmFyIGEsbjtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5jYWxsKHRoaXMsdGhpcywuLi5pKSksdm9pZCAwPT09cz9lOnN9bG9jYWxpemUodCxlPVtdKXtyZXR1cm4odD1TdHJpbmcodCkucmVwbGFjZSgvXHtceyhcdyspLj8oXHcrKT9cfVx9L2csKCh0LGkscyk9PntsZXQgYT0iIjtzP2E9dGhpcy5vcHRpb24oYCR7aVswXStpLnRvTG93ZXJDYXNlKCkuc3Vic3RyaW5nKDEpfS5sMTBuLiR7c31gKTppJiYoYT10aGlzLm9wdGlvbihgbDEwbi4ke2l9YCkpLGF8fChhPXQpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWE9YS5zcGxpdChlW3RdWzBdKS5qb2luKGVbdF1bMV0pO3JldHVybiBhfSkpKS5yZXBsYWNlKC9ce1x7KC4qKVx9XH0vLCgodCxlKT0+ZSkpfW9uKHQsZSl7aWYocyh0KSl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmVudHJpZXModCkpdGhpcy5vbiguLi5lKTtyZXR1cm4gdGhpc31yZXR1cm4gU3RyaW5nKHQpLnNwbGl0KCIgIikuZm9yRWFjaCgodD0+e2NvbnN0IGk9dGhpcy5ldmVudHNbdF09dGhpcy5ldmVudHNbdF18fFtdOy0xPT1pLmluZGV4T2YoZSkmJmkucHVzaChlKX0pKSx0aGlzfW9uY2UodCxlKXtpZihzKHQpKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZW50cmllcyh0KSl0aGlzLm9uY2UoLi4uZSk7cmV0dXJuIHRoaXN9cmV0dXJuIFN0cmluZyh0KS5zcGxpdCgiICIpLmZvckVhY2goKHQ9Pntjb25zdCBpPSguLi5zKT0+e3RoaXMub2ZmKHQsaSksZS5jYWxsKHRoaXMsdGhpcywuLi5zKX07aS5fPWUsdGhpcy5vbih0LGkpfSkpLHRoaXN9b2ZmKHQsZSl7aWYoIXModCkpcmV0dXJuIHQuc3BsaXQoIiAiKS5mb3JFYWNoKCh0PT57Y29uc3QgaT10aGlzLmV2ZW50c1t0XTtpZighaXx8IWkubGVuZ3RoKXJldHVybiB0aGlzO2xldCBzPS0xO2ZvcihsZXQgdD0wLGE9aS5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT1pW3RdO2lmKGEmJihhPT09ZXx8YS5fPT09ZSkpe3M9dDticmVha319LTEhPXMmJmkuc3BsaWNlKHMsMSl9KSksdGhpcztmb3IoY29uc3QgZSBvZiBPYmplY3QuZW50cmllcyh0KSl0aGlzLm9mZiguLi5lKX10cmlnZ2VyKHQsLi4uZSl7Zm9yKGNvbnN0IGkgb2ZbLi4udGhpcy5ldmVudHNbdF18fFtdXS5zbGljZSgpKWlmKGkmJiExPT09aS5jYWxsKHRoaXMsdGhpcywuLi5lKSlyZXR1cm4hMTtmb3IoY29uc3QgaSBvZlsuLi50aGlzLmV2ZW50c1siKiJdfHxbXV0uc2xpY2UoKSlpZihpJiYhMT09PWkuY2FsbCh0aGlzLHQsdGhpcywuLi5lKSlyZXR1cm4hMTtyZXR1cm4hMH1hdHRhY2hQbHVnaW5zKHQpe2NvbnN0IGU9e307Zm9yKGNvbnN0W2ksc11vZiBPYmplY3QuZW50cmllcyh0fHx7fSkpITE9PT10aGlzLm9wdGlvbnNbaV18fHRoaXMucGx1Z2luc1tpXXx8KHRoaXMub3B0aW9uc1tpXT1hKHt9LHMuZGVmYXVsdHN8fHt9LHRoaXMub3B0aW9uc1tpXSksZVtpXT1uZXcgcyh0aGlzKSk7Zm9yKGNvbnN0W3QsaV1vZiBPYmplY3QuZW50cmllcyhlKSlpLmF0dGFjaCh0aGlzKTtyZXR1cm4gdGhpcy5wbHVnaW5zPU9iamVjdC5hc3NpZ24oe30sdGhpcy5wbHVnaW5zLGUpLHRoaXN9ZGV0YWNoUGx1Z2lucygpe2Zvcihjb25zdCB0IGluIHRoaXMucGx1Z2lucyl7bGV0IGU7KGU9dGhpcy5wbHVnaW5zW3RdKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZGV0YWNoJiZlLmRldGFjaCh0aGlzKX1yZXR1cm4gdGhpcy5wbHVnaW5zPXt9LHRoaXN9fWNvbnN0IHA9e3RvdWNoOiEwLHpvb206ITAscGluY2hUb1pvb206ITAscGFuT25seVpvb21lZDohMSxsb2NrQXhpczohMSxmcmljdGlvbjouNjQsZGVjZWxGcmljdGlvbjouODgsem9vbUZyaWN0aW9uOi43NCxib3VuY2VGb3JjZTouMixiYXNlU2NhbGU6MSxtaW5TY2FsZToxLG1heFNjYWxlOjIsc3RlcDouNSx0ZXh0U2VsZWN0aW9uOiExLGNsaWNrOiJ0b2dnbGVab29tIix3aGVlbDoiem9vbSIsd2hlZWxGYWN0b3I6NDIsd2hlZWxMaW1pdDo1LGRyYWdnYWJsZUNsYXNzOiJpcy1kcmFnZ2FibGUiLGRyYWdnaW5nQ2xhc3M6ImlzLWRyYWdnaW5nIixyYXRpbzoxfTtjbGFzcyBnIGV4dGVuZHMgdXtjb25zdHJ1Y3Rvcih0LGU9e30pe3N1cGVyKGEoITAse30scCxlKSksdGhpcy5zdGF0ZT0iaW5pdCIsdGhpcy4kY29udGFpbmVyPXQ7Zm9yKGNvbnN0IHQgb2ZbIm9uTG9hZCIsIm9uV2hlZWwiLCJvbkNsaWNrIl0pdGhpc1t0XT10aGlzW3RdLmJpbmQodGhpcyk7dGhpcy5pbml0TGF5b3V0KCksdGhpcy5yZXNldFZhbHVlcygpLHRoaXMuYXR0YWNoUGx1Z2lucyhnLlBsdWdpbnMpLHRoaXMudHJpZ2dlcigiaW5pdCIpLHRoaXMudXBkYXRlTWV0cmljcygpLHRoaXMuYXR0YWNoRXZlbnRzKCksdGhpcy50cmlnZ2VyKCJyZWFkeSIpLCExPT09dGhpcy5vcHRpb24oImNlbnRlck9uU3RhcnQiKT90aGlzLnN0YXRlPSJyZWFkeSI6dGhpcy5wYW5Ubyh7ZnJpY3Rpb246MH0pLHQuX19QYW56b29tPXRoaXN9aW5pdExheW91dCgpe2NvbnN0IHQ9dGhpcy4kY29udGFpbmVyO2lmKCEodCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSl0aHJvdyBuZXcgRXJyb3IoIlBhbnpvb206IENvbnRhaW5lciBub3QgZm91bmQiKTtjb25zdCBlPXRoaXMub3B0aW9uKCJjb250ZW50Iil8fHQucXVlcnlTZWxlY3RvcigiLnBhbnpvb21fX2NvbnRlbnQiKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIlBhbnpvb206IENvbnRlbnQgbm90IGZvdW5kIik7dGhpcy4kY29udGVudD1lO2xldCBpPXRoaXMub3B0aW9uKCJ2aWV3cG9ydCIpfHx0LnF1ZXJ5U2VsZWN0b3IoIi5wYW56b29tX192aWV3cG9ydCIpO2l8fCExPT09dGhpcy5vcHRpb24oIndyYXBJbm5lciIpfHwoaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxpLmNsYXNzTGlzdC5hZGQoInBhbnpvb21fX3ZpZXdwb3J0IiksaS5hcHBlbmQoLi4udC5jaGlsZE5vZGVzKSx0LmFwcGVuZENoaWxkKGkpKSx0aGlzLiR2aWV3cG9ydD1pfHxlLnBhcmVudE5vZGV9cmVzZXRWYWx1ZXMoKXt0aGlzLnVwZGF0ZVJhdGU9dGhpcy5vcHRpb24oInVwZGF0ZVJhdGUiLC9pUGhvbmV8aVBhZHxpUG9kfEFuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpPzI1MDoyNCksdGhpcy5jb250YWluZXI9e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMudmlld3BvcnQ9e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMuY29udGVudD17b3JpZ1dpZHRoOjAsb3JpZ0hlaWdodDowLHdpZHRoOjAsaGVpZ2h0OjAseDp0aGlzLm9wdGlvbigieCIsMCkseTp0aGlzLm9wdGlvbigieSIsMCksc2NhbGU6dGhpcy5vcHRpb24oImJhc2VTY2FsZSIpfSx0aGlzLnRyYW5zZm9ybT17eDowLHk6MCxzY2FsZToxfSx0aGlzLnJlc2V0RHJhZ1Bvc2l0aW9uKCl9b25Mb2FkKHQpe3RoaXMudXBkYXRlTWV0cmljcygpLHRoaXMucGFuVG8oe3NjYWxlOnRoaXMub3B0aW9uKCJiYXNlU2NhbGUiKSxmcmljdGlvbjowfSksdGhpcy50cmlnZ2VyKCJsb2FkIix0KX1vbkNsaWNrKHQpe2lmKHQuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47aWYoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5jbG9zZXN0KCJbY29udGVudGVkaXRhYmxlXSIpKXJldHVybjtpZih0aGlzLm9wdGlvbigidGV4dFNlbGVjdGlvbiIpJiZ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5sZW5ndGgmJighdC50YXJnZXR8fCF0LnRhcmdldC5oYXNBdHRyaWJ1dGUoImRhdGEtZmFuY3lib3gtY2xvc2UiKSkpcmV0dXJuIHZvaWQgdC5zdG9wUHJvcGFnYXRpb24oKTtjb25zdCBlPXRoaXMuJGNvbnRlbnQuZ2V0Q2xpZW50UmVjdHMoKVswXTtpZigicmVhZHkiIT09dGhpcy5zdGF0ZSYmKHRoaXMuZHJhZ1Bvc2l0aW9uLm1pZFBvaW50fHxNYXRoLmFicyhlLnRvcC10aGlzLmRyYWdTdGFydC5yZWN0LnRvcCk+MXx8TWF0aC5hYnMoZS5sZWZ0LXRoaXMuZHJhZ1N0YXJ0LnJlY3QubGVmdCk+MSkpcmV0dXJuIHQucHJldmVudERlZmF1bHQoKSx2b2lkIHQuc3RvcFByb3BhZ2F0aW9uKCk7ITEhPT10aGlzLnRyaWdnZXIoImNsaWNrIix0KSYmdGhpcy5vcHRpb24oInpvb20iKSYmInRvZ2dsZVpvb20iPT09dGhpcy5vcHRpb24oImNsaWNrIikmJih0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnpvb21XaXRoQ2xpY2sodCkpfW9uV2hlZWwodCl7ITEhPT10aGlzLnRyaWdnZXIoIndoZWVsIix0KSYmdGhpcy5vcHRpb24oInpvb20iKSYmdGhpcy5vcHRpb24oIndoZWVsIikmJnRoaXMuem9vbVdpdGhXaGVlbCh0KX16b29tV2l0aFdoZWVsKHQpe3ZvaWQgMD09PXRoaXMuY2hhbmdlZERlbHRhJiYodGhpcy5jaGFuZ2VkRGVsdGE9MCk7Y29uc3QgZT1NYXRoLm1heCgtMSxNYXRoLm1pbigxLC10LmRlbHRhWXx8LXQuZGVsdGFYfHx0LndoZWVsRGVsdGF8fC10LmRldGFpbCkpLGk9dGhpcy5jb250ZW50LnNjYWxlO2xldCBzPWkqKDEwMCtlKnRoaXMub3B0aW9uKCJ3aGVlbEZhY3RvciIpKS8xMDA7aWYoZTwwJiZNYXRoLmFicyhpLXRoaXMub3B0aW9uKCJtaW5TY2FsZSIpKTwuMDF8fGU+MCYmTWF0aC5hYnMoaS10aGlzLm9wdGlvbigibWF4U2NhbGUiKSk8LjAxPyh0aGlzLmNoYW5nZWREZWx0YSs9TWF0aC5hYnMoZSkscz1pKToodGhpcy5jaGFuZ2VkRGVsdGE9MCxzPU1hdGgubWF4KE1hdGgubWluKHMsdGhpcy5vcHRpb24oIm1heFNjYWxlIikpLHRoaXMub3B0aW9uKCJtaW5TY2FsZSIpKSksdGhpcy5jaGFuZ2VkRGVsdGE+dGhpcy5vcHRpb24oIndoZWVsTGltaXQiKSlyZXR1cm47aWYodC5wcmV2ZW50RGVmYXVsdCgpLHM9PT1pKXJldHVybjtjb25zdCBhPXRoaXMuJGNvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10LmNsaWVudFgtYS5sZWZ0LHI9dC5jbGllbnRZLWEudG9wO3RoaXMuem9vbVRvKHMse3g6bix5OnJ9KX16b29tV2l0aENsaWNrKHQpe2NvbnN0IGU9dGhpcy4kY29udGVudC5nZXRDbGllbnRSZWN0cygpWzBdLGk9dC5jbGllbnRYLWUubGVmdCxzPXQuY2xpZW50WS1lLnRvcDt0aGlzLnRvZ2dsZVpvb20oe3g6aSx5OnN9KX1hdHRhY2hFdmVudHMoKXt0aGlzLiRjb250ZW50LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHRoaXMub25Mb2FkKSx0aGlzLiRjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLHRoaXMub25XaGVlbCx7cGFzc2l2ZTohMX0pLHRoaXMuJGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5vbkNsaWNrLHtwYXNzaXZlOiExfSksdGhpcy5pbml0T2JzZXJ2ZXIoKTtjb25zdCB0PW5ldyBkKHRoaXMuJGNvbnRhaW5lcix7c3RhcnQ6KGUsaSk9PntpZighdGhpcy5vcHRpb24oInRvdWNoIikpcmV0dXJuITE7aWYodGhpcy52ZWxvY2l0eS5zY2FsZTwwKXJldHVybiExO2NvbnN0IHM9aS5jb21wb3NlZFBhdGgoKVswXTtpZighdC5jdXJyZW50UG9pbnRlcnMubGVuZ3RoKXtpZigtMSE9PVsiQlVUVE9OIiwiVEVYVEFSRUEiLCJPUFRJT04iLCJJTlBVVCIsIlNFTEVDVCIsIlZJREVPIl0uaW5kZXhPZihzLm5vZGVOYW1lKSlyZXR1cm4hMTtpZih0aGlzLm9wdGlvbigidGV4dFNlbGVjdGlvbiIpJiYoKHQsZSxpKT0+e2NvbnN0IHM9dC5jaGlsZE5vZGVzLGE9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrKyl7Y29uc3Qgbj1zW3RdO2lmKG4ubm9kZVR5cGUhPT1Ob2RlLlRFWFRfTk9ERSljb250aW51ZTthLnNlbGVjdE5vZGVDb250ZW50cyhuKTtjb25zdCByPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoZT49ci5sZWZ0JiZpPj1yLnRvcCYmZTw9ci5yaWdodCYmaTw9ci5ib3R0b20pcmV0dXJuIG59cmV0dXJuITF9KShzLGUuY2xpZW50WCxlLmNsaWVudFkpKXJldHVybiExfXJldHVybiFyKHMpJiYhMSE9PXRoaXMudHJpZ2dlcigidG91Y2hTdGFydCIsaSkmJigibW91c2Vkb3duIj09PWkudHlwZSYmaS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc3RhdGU9InBvaW50ZXJkb3duIix0aGlzLnJlc2V0RHJhZ1Bvc2l0aW9uKCksdGhpcy5kcmFnUG9zaXRpb24ubWlkUG9pbnQ9bnVsbCx0aGlzLmRyYWdQb3NpdGlvbi50aW1lPURhdGUubm93KCksITApfSxtb3ZlOihlLGkscyk9PntpZigicG9pbnRlcmRvd24iIT09dGhpcy5zdGF0ZSlyZXR1cm47aWYoITE9PT10aGlzLnRyaWdnZXIoInRvdWNoTW92ZSIscykpcmV0dXJuIHZvaWQgcy5wcmV2ZW50RGVmYXVsdCgpO2lmKGkubGVuZ3RoPDImJiEwPT09dGhpcy5vcHRpb24oInBhbk9ubHlab29tZWQiKSYmdGhpcy5jb250ZW50LndpZHRoPD10aGlzLnZpZXdwb3J0LndpZHRoJiZ0aGlzLmNvbnRlbnQuaGVpZ2h0PD10aGlzLnZpZXdwb3J0LmhlaWdodCYmdGhpcy50cmFuc2Zvcm0uc2NhbGU8PXRoaXMub3B0aW9uKCJiYXNlU2NhbGUiKSlyZXR1cm47aWYoaS5sZW5ndGg+MSYmKCF0aGlzLm9wdGlvbigiem9vbSIpfHwhMT09PXRoaXMub3B0aW9uKCJwaW5jaFRvWm9vbSIpKSlyZXR1cm47Y29uc3QgYT1oKGVbMF0sZVsxXSksbj1oKGlbMF0saVsxXSkscj1uLmNsaWVudFgtYS5jbGllbnRYLG89bi5jbGllbnRZLWEuY2xpZW50WSxsPWMoZVswXSxlWzFdKSxkPWMoaVswXSxpWzFdKSx1PWwmJmQ/ZC9sOjE7dGhpcy5kcmFnT2Zmc2V0LngrPXIsdGhpcy5kcmFnT2Zmc2V0LnkrPW8sdGhpcy5kcmFnT2Zmc2V0LnNjYWxlKj11LHRoaXMuZHJhZ09mZnNldC50aW1lPURhdGUubm93KCktdGhpcy5kcmFnUG9zaXRpb24udGltZTtjb25zdCBwPTE9PT10aGlzLmRyYWdTdGFydC5zY2FsZSYmdGhpcy5vcHRpb24oImxvY2tBeGlzIik7aWYocCYmIXRoaXMubG9ja0F4aXMpe2lmKE1hdGguYWJzKHRoaXMuZHJhZ09mZnNldC54KTw2JiZNYXRoLmFicyh0aGlzLmRyYWdPZmZzZXQueSk8NilyZXR1cm4gdm9pZCBzLnByZXZlbnREZWZhdWx0KCk7Y29uc3QgdD1NYXRoLmFicygxODAqTWF0aC5hdGFuMih0aGlzLmRyYWdPZmZzZXQueSx0aGlzLmRyYWdPZmZzZXQueCkvTWF0aC5QSSk7dGhpcy5sb2NrQXhpcz10PjQ1JiZ0PDEzNT8ieSI6IngifWlmKCJ4eSI9PT1wfHwieSIhPT10aGlzLmxvY2tBeGlzKXtpZihzLnByZXZlbnREZWZhdWx0KCkscy5zdG9wUHJvcGFnYXRpb24oKSxzLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMubG9ja0F4aXMmJih0aGlzLmRyYWdPZmZzZXRbIngiPT09dGhpcy5sb2NrQXhpcz8ieSI6IngiXT0wKSx0aGlzLiRjb250YWluZXIuY2xhc3NMaXN0LmFkZCh0aGlzLm9wdGlvbigiZHJhZ2dpbmdDbGFzcyIpKSx0aGlzLnRyYW5zZm9ybS5zY2FsZT09PXRoaXMub3B0aW9uKCJiYXNlU2NhbGUiKSYmInkiPT09dGhpcy5sb2NrQXhpc3x8KHRoaXMuZHJhZ1Bvc2l0aW9uLng9dGhpcy5kcmFnU3RhcnQueCt0aGlzLmRyYWdPZmZzZXQueCksdGhpcy50cmFuc2Zvcm0uc2NhbGU9PT10aGlzLm9wdGlvbigiYmFzZVNjYWxlIikmJiJ4Ij09PXRoaXMubG9ja0F4aXN8fCh0aGlzLmRyYWdQb3NpdGlvbi55PXRoaXMuZHJhZ1N0YXJ0LnkrdGhpcy5kcmFnT2Zmc2V0LnkpLHRoaXMuZHJhZ1Bvc2l0aW9uLnNjYWxlPXRoaXMuZHJhZ1N0YXJ0LnNjYWxlKnRoaXMuZHJhZ09mZnNldC5zY2FsZSxpLmxlbmd0aD4xKXtjb25zdCBlPWgodC5zdGFydFBvaW50ZXJzWzBdLHQuc3RhcnRQb2ludGVyc1sxXSksaT1lLmNsaWVudFgtdGhpcy5kcmFnU3RhcnQucmVjdC54LHM9ZS5jbGllbnRZLXRoaXMuZHJhZ1N0YXJ0LnJlY3QueSx7ZGVsdGFYOmEsZGVsdGFZOnJ9PXRoaXMuZ2V0Wm9vbURlbHRhKHRoaXMuY29udGVudC5zY2FsZSp0aGlzLmRyYWdPZmZzZXQuc2NhbGUsaSxzKTt0aGlzLmRyYWdQb3NpdGlvbi54LT1hLHRoaXMuZHJhZ1Bvc2l0aW9uLnktPXIsdGhpcy5kcmFnUG9zaXRpb24ubWlkUG9pbnQ9bn1lbHNlIHRoaXMuc2V0RHJhZ1Jlc2lzdGFuY2UoKTt0aGlzLnRyYW5zZm9ybT17eDp0aGlzLmRyYWdQb3NpdGlvbi54LHk6dGhpcy5kcmFnUG9zaXRpb24ueSxzY2FsZTp0aGlzLmRyYWdQb3NpdGlvbi5zY2FsZX0sdGhpcy5zdGFydEFuaW1hdGlvbigpfX0sZW5kOihlLGkpPT57aWYoInBvaW50ZXJkb3duIiE9PXRoaXMuc3RhdGUpcmV0dXJuO2lmKHRoaXMuX2RyYWdPZmZzZXQ9ey4uLnRoaXMuZHJhZ09mZnNldH0sdC5jdXJyZW50UG9pbnRlcnMubGVuZ3RoKXJldHVybiB2b2lkIHRoaXMucmVzZXREcmFnUG9zaXRpb24oKTtpZih0aGlzLnN0YXRlPSJkZWNlbCIsdGhpcy5mcmljdGlvbj10aGlzLm9wdGlvbigiZGVjZWxGcmljdGlvbiIpLHRoaXMucmVjYWxjdWxhdGVUcmFuc2Zvcm0oKSx0aGlzLiRjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLm9wdGlvbigiZHJhZ2dpbmdDbGFzcyIpKSwhMT09PXRoaXMudHJpZ2dlcigidG91Y2hFbmQiLGkpKXJldHVybjtpZigiZGVjZWwiIT09dGhpcy5zdGF0ZSlyZXR1cm47Y29uc3Qgcz10aGlzLm9wdGlvbigibWluU2NhbGUiKTtpZih0aGlzLnRyYW5zZm9ybS5zY2FsZTxzKXJldHVybiB2b2lkIHRoaXMuem9vbVRvKHMse2ZyaWN0aW9uOi42NH0pO2NvbnN0IGE9dGhpcy5vcHRpb24oIm1heFNjYWxlIik7aWYodGhpcy50cmFuc2Zvcm0uc2NhbGUtYT4uMDEpe2NvbnN0IHQ9dGhpcy5kcmFnUG9zaXRpb24ubWlkUG9pbnR8fGUsaT10aGlzLiRjb250ZW50LmdldENsaWVudFJlY3RzKClbMF07dGhpcy56b29tVG8oYSx7ZnJpY3Rpb246LjY0LHg6dC5jbGllbnRYLWkubGVmdCx5OnQuY2xpZW50WS1pLnRvcH0pfX19KTt0aGlzLnBvaW50ZXJUcmFja2VyPXR9aW5pdE9ic2VydmVyKCl7dGhpcy5yZXNpemVPYnNlcnZlcnx8KHRoaXMucmVzaXplT2JzZXJ2ZXI9bmV3IG8oKCgpPT57dGhpcy51cGRhdGVUaW1lcnx8KHRoaXMudXBkYXRlVGltZXI9c2V0VGltZW91dCgoKCk9Pntjb25zdCB0PXRoaXMuJGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0LndpZHRoJiZ0LmhlaWdodD8oKE1hdGguYWJzKHQud2lkdGgtdGhpcy5jb250YWluZXIud2lkdGgpPjF8fE1hdGguYWJzKHQuaGVpZ2h0LXRoaXMuY29udGFpbmVyLmhlaWdodCk+MSkmJih0aGlzLmlzQW5pbWF0aW5nKCkmJnRoaXMuZW5kQW5pbWF0aW9uKCEwKSx0aGlzLnVwZGF0ZU1ldHJpY3MoKSx0aGlzLnBhblRvKHt4OnRoaXMuY29udGVudC54LHk6dGhpcy5jb250ZW50Lnksc2NhbGU6dGhpcy5vcHRpb24oImJhc2VTY2FsZSIpLGZyaWN0aW9uOjB9KSksdGhpcy51cGRhdGVUaW1lcj1udWxsKTp0aGlzLnVwZGF0ZVRpbWVyPW51bGx9KSx0aGlzLnVwZGF0ZVJhdGUpKX0pKSx0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy4kY29udGFpbmVyKSl9cmVzZXREcmFnUG9zaXRpb24oKXt0aGlzLmxvY2tBeGlzPW51bGwsdGhpcy5mcmljdGlvbj10aGlzLm9wdGlvbigiZnJpY3Rpb24iKSx0aGlzLnZlbG9jaXR5PXt4OjAseTowLHNjYWxlOjB9O2NvbnN0e3g6dCx5OmUsc2NhbGU6aX09dGhpcy5jb250ZW50O3RoaXMuZHJhZ1N0YXJ0PXtyZWN0OnRoaXMuJGNvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkseDp0LHk6ZSxzY2FsZTppfSx0aGlzLmRyYWdQb3NpdGlvbj17Li4udGhpcy5kcmFnUG9zaXRpb24seDp0LHk6ZSxzY2FsZTppfSx0aGlzLmRyYWdPZmZzZXQ9e3g6MCx5OjAsc2NhbGU6MSx0aW1lOjB9fXVwZGF0ZU1ldHJpY3ModCl7ITAhPT10JiZ0aGlzLnRyaWdnZXIoImJlZm9yZVVwZGF0ZSIpO2NvbnN0IGU9dGhpcy4kY29udGFpbmVyLGk9dGhpcy4kY29udGVudCxzPXRoaXMuJHZpZXdwb3J0LGE9aSBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQscj10aGlzLm9wdGlvbigiem9vbSIpLG89dGhpcy5vcHRpb24oInJlc2l6ZVBhcmVudCIscik7bGV0IGw9dGhpcy5vcHRpb24oIndpZHRoIiksYz10aGlzLm9wdGlvbigiaGVpZ2h0IiksaD1sfHwoZD1pLE1hdGgubWF4KHBhcnNlRmxvYXQoZC5uYXR1cmFsV2lkdGh8fDApLHBhcnNlRmxvYXQoZC53aWR0aCYmZC53aWR0aC5iYXNlVmFsJiZkLndpZHRoLmJhc2VWYWwudmFsdWV8fDApLHBhcnNlRmxvYXQoZC5vZmZzZXRXaWR0aHx8MCkscGFyc2VGbG9hdChkLnNjcm9sbFdpZHRofHwwKSkpO3ZhciBkO2xldCB1PWN8fCh0PT5NYXRoLm1heChwYXJzZUZsb2F0KHQubmF0dXJhbEhlaWdodHx8MCkscGFyc2VGbG9hdCh0LmhlaWdodCYmdC5oZWlnaHQuYmFzZVZhbCYmdC5oZWlnaHQuYmFzZVZhbC52YWx1ZXx8MCkscGFyc2VGbG9hdCh0Lm9mZnNldEhlaWdodHx8MCkscGFyc2VGbG9hdCh0LnNjcm9sbEhlaWdodHx8MCkpKShpKTtPYmplY3QuYXNzaWduKGkuc3R5bGUse3dpZHRoOmw/YCR7bH1weGA6IiIsaGVpZ2h0OmM/YCR7Y31weGA6IiIsbWF4V2lkdGg6IiIsbWF4SGVpZ2h0OiIifSksbyYmT2JqZWN0LmFzc2lnbihzLnN0eWxlLHt3aWR0aDoiIixoZWlnaHQ6IiJ9KTtjb25zdCBwPXRoaXMub3B0aW9uKCJyYXRpbyIpO2g9bihoKnApLHU9bih1KnApLGw9aCxjPXU7Y29uc3QgZz1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGY9cy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxtPXM9PWU/ZjplLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2xldCB2PU1hdGgubWF4KHMub2Zmc2V0V2lkdGgsbihmLndpZHRoKSkseD1NYXRoLm1heChzLm9mZnNldEhlaWdodCxuKGYuaGVpZ2h0KSksYj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShzKTtpZih2LT1wYXJzZUZsb2F0KGIucGFkZGluZ0xlZnQpK3BhcnNlRmxvYXQoYi5wYWRkaW5nUmlnaHQpLHgtPXBhcnNlRmxvYXQoYi5wYWRkaW5nVG9wKStwYXJzZUZsb2F0KGIucGFkZGluZ0JvdHRvbSksdGhpcy52aWV3cG9ydC53aWR0aD12LHRoaXMudmlld3BvcnQuaGVpZ2h0PXgscil7aWYoTWF0aC5hYnMoaC1nLndpZHRoKT4uMXx8TWF0aC5hYnModS1nLmhlaWdodCk+LjEpe2NvbnN0IHQ9KCh0LGUsaSxzKT0+e2NvbnN0IGE9TWF0aC5taW4oaS90fHwwLHMvZSk7cmV0dXJue3dpZHRoOnQqYXx8MCxoZWlnaHQ6ZSphfHwwfX0pKGgsdSxNYXRoLm1pbihoLGcud2lkdGgpLE1hdGgubWluKHUsZy5oZWlnaHQpKTtsPW4odC53aWR0aCksYz1uKHQuaGVpZ2h0KX1PYmplY3QuYXNzaWduKGkuc3R5bGUse3dpZHRoOmAke2x9cHhgLGhlaWdodDpgJHtjfXB4YCx0cmFuc2Zvcm06IiJ9KX1pZihvJiYoT2JqZWN0LmFzc2lnbihzLnN0eWxlLHt3aWR0aDpgJHtsfXB4YCxoZWlnaHQ6YCR7Y31weGB9KSx0aGlzLnZpZXdwb3J0PXsuLi50aGlzLnZpZXdwb3J0LHdpZHRoOmwsaGVpZ2h0OmN9KSxhJiZyJiYiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5vcHRpb25zLm1heFNjYWxlKXtjb25zdCB0PXRoaXMub3B0aW9uKCJtYXhTY2FsZSIpO3RoaXMub3B0aW9ucy5tYXhTY2FsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRlbnQub3JpZ1dpZHRoPjAmJnRoaXMuY29udGVudC5maXRXaWR0aD4wP3RoaXMuY29udGVudC5vcmlnV2lkdGgvdGhpcy5jb250ZW50LmZpdFdpZHRoOnR9fXRoaXMuY29udGVudD17Li4udGhpcy5jb250ZW50LG9yaWdXaWR0aDpoLG9yaWdIZWlnaHQ6dSxmaXRXaWR0aDpsLGZpdEhlaWdodDpjLHdpZHRoOmwsaGVpZ2h0OmMsc2NhbGU6MSxpc1pvb21hYmxlOnJ9LHRoaXMuY29udGFpbmVyPXt3aWR0aDptLndpZHRoLGhlaWdodDptLmhlaWdodH0sITAhPT10JiZ0aGlzLnRyaWdnZXIoImFmdGVyVXBkYXRlIil9em9vbUluKHQpe3RoaXMuem9vbVRvKHRoaXMuY29udGVudC5zY2FsZSsodHx8dGhpcy5vcHRpb24oInN0ZXAiKSkpfXpvb21PdXQodCl7dGhpcy56b29tVG8odGhpcy5jb250ZW50LnNjYWxlLSh0fHx0aGlzLm9wdGlvbigic3RlcCIpKSl9dG9nZ2xlWm9vbSh0PXt9KXtjb25zdCBlPXRoaXMub3B0aW9uKCJtYXhTY2FsZSIpLGk9dGhpcy5vcHRpb24oImJhc2VTY2FsZSIpLHM9dGhpcy5jb250ZW50LnNjYWxlPmkrLjUqKGUtaSk/aTplO3RoaXMuem9vbVRvKHMsdCl9em9vbVRvKHQ9dGhpcy5vcHRpb24oImJhc2VTY2FsZSIpLHt4OmU9bnVsbCx5Omk9bnVsbH09e30pe3Q9TWF0aC5tYXgoTWF0aC5taW4odCx0aGlzLm9wdGlvbigibWF4U2NhbGUiKSksdGhpcy5vcHRpb24oIm1pblNjYWxlIikpO2NvbnN0IHM9bih0aGlzLmNvbnRlbnQuc2NhbGUvKHRoaXMuY29udGVudC53aWR0aC90aGlzLmNvbnRlbnQuZml0V2lkdGgpLDFlNyk7bnVsbD09PWUmJihlPXRoaXMuY29udGVudC53aWR0aCpzKi41KSxudWxsPT09aSYmKGk9dGhpcy5jb250ZW50LmhlaWdodCpzKi41KTtjb25zdHtkZWx0YVg6YSxkZWx0YVk6cn09dGhpcy5nZXRab29tRGVsdGEodCxlLGkpO2U9dGhpcy5jb250ZW50LngtYSxpPXRoaXMuY29udGVudC55LXIsdGhpcy5wYW5Ubyh7eDplLHk6aSxzY2FsZTp0LGZyaWN0aW9uOnRoaXMub3B0aW9uKCJ6b29tRnJpY3Rpb24iKX0pfWdldFpvb21EZWx0YSh0LGU9MCxpPTApe2NvbnN0IHM9dGhpcy5jb250ZW50LmZpdFdpZHRoKnRoaXMuY29udGVudC5zY2FsZSxhPXRoaXMuY29udGVudC5maXRIZWlnaHQqdGhpcy5jb250ZW50LnNjYWxlLG49ZT4wJiZzP2UvczowLHI9aT4wJiZhP2kvYTowO3JldHVybntkZWx0YVg6KHRoaXMuY29udGVudC5maXRXaWR0aCp0LXMpKm4sZGVsdGFZOih0aGlzLmNvbnRlbnQuZml0SGVpZ2h0KnQtYSkqcn19cGFuVG8oe3g6dD10aGlzLmNvbnRlbnQueCx5OmU9dGhpcy5jb250ZW50Lnksc2NhbGU6aSxmcmljdGlvbjpzPXRoaXMub3B0aW9uKCJmcmljdGlvbiIpLGlnbm9yZUJvdW5kczphPSExfT17fSl7aWYoaT1pfHx0aGlzLmNvbnRlbnQuc2NhbGV8fDEsIWEpe2NvbnN0e2JvdW5kWDpzLGJvdW5kWTphfT10aGlzLmdldEJvdW5kcyhpKTtzJiYodD1NYXRoLm1heChNYXRoLm1pbih0LHMudG8pLHMuZnJvbSkpLGEmJihlPU1hdGgubWF4KE1hdGgubWluKGUsYS50byksYS5mcm9tKSl9dGhpcy5mcmljdGlvbj1zLHRoaXMudHJhbnNmb3JtPXsuLi50aGlzLnRyYW5zZm9ybSx4OnQseTplLHNjYWxlOml9LHM/KHRoaXMuc3RhdGU9InBhbm5pbmciLHRoaXMudmVsb2NpdHk9e3g6KDEvdGhpcy5mcmljdGlvbi0xKSoodC10aGlzLmNvbnRlbnQueCkseTooMS90aGlzLmZyaWN0aW9uLTEpKihlLXRoaXMuY29udGVudC55KSxzY2FsZTooMS90aGlzLmZyaWN0aW9uLTEpKihpLXRoaXMuY29udGVudC5zY2FsZSl9LHRoaXMuc3RhcnRBbmltYXRpb24oKSk6dGhpcy5lbmRBbmltYXRpb24oKX1zdGFydEFuaW1hdGlvbigpe3RoaXMuckFGP2NhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuckFGKTp0aGlzLnRyaWdnZXIoInN0YXJ0QW5pbWF0aW9uIiksdGhpcy5yQUY9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5hbmltYXRlKCkpKX1hbmltYXRlKCl7aWYodGhpcy5zZXRFZGdlRm9yY2UoKSx0aGlzLnNldERyYWdGb3JjZSgpLHRoaXMudmVsb2NpdHkueCo9dGhpcy5mcmljdGlvbix0aGlzLnZlbG9jaXR5LnkqPXRoaXMuZnJpY3Rpb24sdGhpcy52ZWxvY2l0eS5zY2FsZSo9dGhpcy5mcmljdGlvbix0aGlzLmNvbnRlbnQueCs9dGhpcy52ZWxvY2l0eS54LHRoaXMuY29udGVudC55Kz10aGlzLnZlbG9jaXR5LnksdGhpcy5jb250ZW50LnNjYWxlKz10aGlzLnZlbG9jaXR5LnNjYWxlLHRoaXMuaXNBbmltYXRpbmcoKSl0aGlzLnNldFRyYW5zZm9ybSgpO2Vsc2UgaWYoInBvaW50ZXJkb3duIiE9PXRoaXMuc3RhdGUpcmV0dXJuIHZvaWQgdGhpcy5lbmRBbmltYXRpb24oKTt0aGlzLnJBRj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLmFuaW1hdGUoKSkpfWdldEJvdW5kcyh0KXtsZXQgZT10aGlzLmJvdW5kWCxpPXRoaXMuYm91bmRZO2lmKHZvaWQgMCE9PWUmJnZvaWQgMCE9PWkpcmV0dXJue2JvdW5kWDplLGJvdW5kWTppfTtlPXtmcm9tOjAsdG86MH0saT17ZnJvbTowLHRvOjB9LHQ9dHx8dGhpcy50cmFuc2Zvcm0uc2NhbGU7Y29uc3Qgcz10aGlzLmNvbnRlbnQuZml0V2lkdGgqdCxhPXRoaXMuY29udGVudC5maXRIZWlnaHQqdCxyPXRoaXMudmlld3BvcnQud2lkdGgsbz10aGlzLnZpZXdwb3J0LmhlaWdodDtpZihzPHIpe2NvbnN0IHQ9biguNSooci1zKSk7ZS5mcm9tPXQsZS50bz10fWVsc2UgZS5mcm9tPW4oci1zKTtpZihhPG8pe2NvbnN0IHQ9LjUqKG8tYSk7aS5mcm9tPXQsaS50bz10fWVsc2UgaS5mcm9tPW4oby1hKTtyZXR1cm57Ym91bmRYOmUsYm91bmRZOml9fXNldEVkZ2VGb3JjZSgpe2lmKCJkZWNlbCIhPT10aGlzLnN0YXRlKXJldHVybjtjb25zdCB0PXRoaXMub3B0aW9uKCJib3VuY2VGb3JjZSIpLHtib3VuZFg6ZSxib3VuZFk6aX09dGhpcy5nZXRCb3VuZHMoTWF0aC5tYXgodGhpcy50cmFuc2Zvcm0uc2NhbGUsdGhpcy5jb250ZW50LnNjYWxlKSk7bGV0IHMsYSxuLHI7aWYoZSYmKHM9dGhpcy5jb250ZW50Lng8ZS5mcm9tLGE9dGhpcy5jb250ZW50Lng+ZS50byksaSYmKG49dGhpcy5jb250ZW50Lnk8aS5mcm9tLHI9dGhpcy5jb250ZW50Lnk+aS50byksc3x8YSl7bGV0IGk9KChzP2UuZnJvbTplLnRvKS10aGlzLmNvbnRlbnQueCkqdDtjb25zdCBhPXRoaXMuY29udGVudC54Kyh0aGlzLnZlbG9jaXR5LngraSkvdGhpcy5mcmljdGlvbjthPj1lLmZyb20mJmE8PWUudG8mJihpKz10aGlzLnZlbG9jaXR5LngpLHRoaXMudmVsb2NpdHkueD1pLHRoaXMucmVjYWxjdWxhdGVUcmFuc2Zvcm0oKX1pZihufHxyKXtsZXQgZT0oKG4/aS5mcm9tOmkudG8pLXRoaXMuY29udGVudC55KSp0O2NvbnN0IHM9dGhpcy5jb250ZW50LnkrKGUrdGhpcy52ZWxvY2l0eS55KS90aGlzLmZyaWN0aW9uO3M+PWkuZnJvbSYmczw9aS50byYmKGUrPXRoaXMudmVsb2NpdHkueSksdGhpcy52ZWxvY2l0eS55PWUsdGhpcy5yZWNhbGN1bGF0ZVRyYW5zZm9ybSgpfX1zZXREcmFnUmVzaXN0YW5jZSgpe2lmKCJwb2ludGVyZG93biIhPT10aGlzLnN0YXRlKXJldHVybjtjb25zdHtib3VuZFg6dCxib3VuZFk6ZX09dGhpcy5nZXRCb3VuZHModGhpcy5kcmFnUG9zaXRpb24uc2NhbGUpO2xldCBpLHMsYSxuO2lmKHQmJihpPXRoaXMuZHJhZ1Bvc2l0aW9uLng8dC5mcm9tLHM9dGhpcy5kcmFnUG9zaXRpb24ueD50LnRvKSxlJiYoYT10aGlzLmRyYWdQb3NpdGlvbi55PGUuZnJvbSxuPXRoaXMuZHJhZ1Bvc2l0aW9uLnk+ZS50byksKGl8fHMpJiYoIWl8fCFzKSl7Y29uc3QgZT1pP3QuZnJvbTp0LnRvLHM9ZS10aGlzLmRyYWdQb3NpdGlvbi54O3RoaXMuZHJhZ1Bvc2l0aW9uLng9ZS0uMypzfWlmKChhfHxuKSYmKCFhfHwhbikpe2NvbnN0IHQ9YT9lLmZyb206ZS50byxpPXQtdGhpcy5kcmFnUG9zaXRpb24ueTt0aGlzLmRyYWdQb3NpdGlvbi55PXQtLjMqaX19c2V0RHJhZ0ZvcmNlKCl7InBvaW50ZXJkb3duIj09PXRoaXMuc3RhdGUmJih0aGlzLnZlbG9jaXR5Lng9dGhpcy5kcmFnUG9zaXRpb24ueC10aGlzLmNvbnRlbnQueCx0aGlzLnZlbG9jaXR5Lnk9dGhpcy5kcmFnUG9zaXRpb24ueS10aGlzLmNvbnRlbnQueSx0aGlzLnZlbG9jaXR5LnNjYWxlPXRoaXMuZHJhZ1Bvc2l0aW9uLnNjYWxlLXRoaXMuY29udGVudC5zY2FsZSl9cmVjYWxjdWxhdGVUcmFuc2Zvcm0oKXt0aGlzLnRyYW5zZm9ybS54PXRoaXMuY29udGVudC54K3RoaXMudmVsb2NpdHkueC8oMS90aGlzLmZyaWN0aW9uLTEpLHRoaXMudHJhbnNmb3JtLnk9dGhpcy5jb250ZW50LnkrdGhpcy52ZWxvY2l0eS55LygxL3RoaXMuZnJpY3Rpb24tMSksdGhpcy50cmFuc2Zvcm0uc2NhbGU9dGhpcy5jb250ZW50LnNjYWxlK3RoaXMudmVsb2NpdHkuc2NhbGUvKDEvdGhpcy5mcmljdGlvbi0xKX1pc0FuaW1hdGluZygpe3JldHVybiEoIXRoaXMuZnJpY3Rpb258fCEoTWF0aC5hYnModGhpcy52ZWxvY2l0eS54KT4uMDV8fE1hdGguYWJzKHRoaXMudmVsb2NpdHkueSk+LjA1fHxNYXRoLmFicyh0aGlzLnZlbG9jaXR5LnNjYWxlKT4uMDUpKX1zZXRUcmFuc2Zvcm0odCl7bGV0IGUsaSxzO2lmKHQ/KGU9bih0aGlzLnRyYW5zZm9ybS54KSxpPW4odGhpcy50cmFuc2Zvcm0ueSkscz10aGlzLnRyYW5zZm9ybS5zY2FsZSx0aGlzLmNvbnRlbnQ9ey4uLnRoaXMuY29udGVudCx4OmUseTppLHNjYWxlOnN9KTooZT1uKHRoaXMuY29udGVudC54KSxpPW4odGhpcy5jb250ZW50LnkpLHM9dGhpcy5jb250ZW50LnNjYWxlLyh0aGlzLmNvbnRlbnQud2lkdGgvdGhpcy5jb250ZW50LmZpdFdpZHRoKSx0aGlzLmNvbnRlbnQ9ey4uLnRoaXMuY29udGVudCx4OmUseTppfSksdGhpcy50cmlnZ2VyKCJiZWZvcmVUcmFuc2Zvcm0iKSxlPW4odGhpcy5jb250ZW50LngpLGk9bih0aGlzLmNvbnRlbnQueSksdCYmdGhpcy5vcHRpb24oInpvb20iKSl7bGV0IHQsYTt0PW4odGhpcy5jb250ZW50LmZpdFdpZHRoKnMpLGE9bih0aGlzLmNvbnRlbnQuZml0SGVpZ2h0KnMpLHRoaXMuY29udGVudC53aWR0aD10LHRoaXMuY29udGVudC5oZWlnaHQ9YSx0aGlzLnRyYW5zZm9ybT17Li4udGhpcy50cmFuc2Zvcm0sd2lkdGg6dCxoZWlnaHQ6YSxzY2FsZTpzfSxPYmplY3QuYXNzaWduKHRoaXMuJGNvbnRlbnQuc3R5bGUse3dpZHRoOmAke3R9cHhgLGhlaWdodDpgJHthfXB4YCxtYXhXaWR0aDoibm9uZSIsbWF4SGVpZ2h0OiJub25lIix0cmFuc2Zvcm06YHRyYW5zbGF0ZTNkKCR7ZX1weCwgJHtpfXB4LCAwKSBzY2FsZSgxKWB9KX1lbHNlIHRoaXMuJGNvbnRlbnQuc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGUzZCgke2V9cHgsICR7aX1weCwgMCkgc2NhbGUoJHtzfSlgO3RoaXMudHJpZ2dlcigiYWZ0ZXJUcmFuc2Zvcm0iKX1lbmRBbmltYXRpb24odCl7Y2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5yQUYpLHRoaXMuckFGPW51bGwsdGhpcy52ZWxvY2l0eT17eDowLHk6MCxzY2FsZTowfSx0aGlzLnNldFRyYW5zZm9ybSghMCksdGhpcy5zdGF0ZT0icmVhZHkiLHRoaXMuaGFuZGxlQ3Vyc29yKCksITAhPT10JiZ0aGlzLnRyaWdnZXIoImVuZEFuaW1hdGlvbiIpfWhhbmRsZUN1cnNvcigpe2NvbnN0IHQ9dGhpcy5vcHRpb24oImRyYWdnYWJsZUNsYXNzIik7dCYmdGhpcy5vcHRpb24oInRvdWNoIikmJigxPT10aGlzLm9wdGlvbigicGFuT25seVpvb21lZCIpJiZ0aGlzLmNvbnRlbnQud2lkdGg8PXRoaXMudmlld3BvcnQud2lkdGgmJnRoaXMuY29udGVudC5oZWlnaHQ8PXRoaXMudmlld3BvcnQuaGVpZ2h0JiZ0aGlzLnRyYW5zZm9ybS5zY2FsZTw9dGhpcy5vcHRpb24oImJhc2VTY2FsZSIpP3RoaXMuJGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKHQpOnRoaXMuJGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKHQpKX1kZXRhY2hFdmVudHMoKXt0aGlzLiRjb250ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLHRoaXMub25Mb2FkKSx0aGlzLiRjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2hlZWwiLHRoaXMub25XaGVlbCx7cGFzc2l2ZTohMX0pLHRoaXMuJGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5vbkNsaWNrLHtwYXNzaXZlOiExfSksdGhpcy5wb2ludGVyVHJhY2tlciYmKHRoaXMucG9pbnRlclRyYWNrZXIuc3RvcCgpLHRoaXMucG9pbnRlclRyYWNrZXI9bnVsbCksdGhpcy5yZXNpemVPYnNlcnZlciYmKHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMucmVzaXplT2JzZXJ2ZXI9bnVsbCl9ZGVzdHJveSgpeyJkZXN0cm95IiE9PXRoaXMuc3RhdGUmJih0aGlzLnN0YXRlPSJkZXN0cm95IixjbGVhclRpbWVvdXQodGhpcy51cGRhdGVUaW1lciksdGhpcy51cGRhdGVUaW1lcj1udWxsLGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuckFGKSx0aGlzLnJBRj1udWxsLHRoaXMuZGV0YWNoRXZlbnRzKCksdGhpcy5kZXRhY2hQbHVnaW5zKCksdGhpcy5yZXNldERyYWdQb3NpdGlvbigpKX19Zy52ZXJzaW9uPSI0LjAuMzEiLGcuUGx1Z2lucz17fTtjb25zdCBmPSh0LGUpPT57bGV0IGk9MDtyZXR1cm4gZnVuY3Rpb24oLi4ucyl7Y29uc3QgYT0obmV3IERhdGUpLmdldFRpbWUoKTtpZighKGEtaTxlKSlyZXR1cm4gaT1hLHQoLi4ucyl9fTtjbGFzcyBte2NvbnN0cnVjdG9yKHQpe3RoaXMuJGNvbnRhaW5lcj1udWxsLHRoaXMuJHByZXY9bnVsbCx0aGlzLiRuZXh0PW51bGwsdGhpcy5jYXJvdXNlbD10LHRoaXMub25SZWZyZXNoPXRoaXMub25SZWZyZXNoLmJpbmQodGhpcyl9b3B0aW9uKHQpe3JldHVybiB0aGlzLmNhcm91c2VsLm9wdGlvbihgTmF2aWdhdGlvbi4ke3R9YCl9Y3JlYXRlQnV0dG9uKHQpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7ZS5zZXRBdHRyaWJ1dGUoInRpdGxlIix0aGlzLmNhcm91c2VsLmxvY2FsaXplKGB7eyR7dC50b1VwcGVyQ2FzZSgpfX19YCkpO2NvbnN0IGk9dGhpcy5vcHRpb24oImNsYXNzTmFtZXMuYnV0dG9uIikrIiAiK3RoaXMub3B0aW9uKGBjbGFzc05hbWVzLiR7dH1gKTtyZXR1cm4gZS5jbGFzc0xpc3QuYWRkKC4uLmkuc3BsaXQoIiAiKSksZS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpLGUuaW5uZXJIVE1MPXRoaXMuY2Fyb3VzZWwubG9jYWxpemUodGhpcy5vcHRpb24oYCR7dH1UcGxgKSksZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKGU9PntlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmNhcm91c2VsWyJzbGlkZSIrKCJuZXh0Ij09PXQ/Ik5leHQiOiJQcmV2IildKCl9KSksZX1idWlsZCgpe3RoaXMuJGNvbnRhaW5lcnx8KHRoaXMuJGNvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLiRjb250YWluZXIuY2xhc3NMaXN0LmFkZCguLi50aGlzLm9wdGlvbigiY2xhc3NOYW1lcy5tYWluIikuc3BsaXQoIiAiKSksdGhpcy5jYXJvdXNlbC4kY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuJGNvbnRhaW5lcikpLHRoaXMuJG5leHR8fCh0aGlzLiRuZXh0PXRoaXMuY3JlYXRlQnV0dG9uKCJuZXh0IiksdGhpcy4kY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuJG5leHQpKSx0aGlzLiRwcmV2fHwodGhpcy4kcHJldj10aGlzLmNyZWF0ZUJ1dHRvbigicHJldiIpLHRoaXMuJGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLiRwcmV2KSl9b25SZWZyZXNoKCl7Y29uc3QgdD10aGlzLmNhcm91c2VsLnBhZ2VzLmxlbmd0aDt0PD0xfHx0PjEmJnRoaXMuY2Fyb3VzZWwuZWxlbURpbVdpZHRoPHRoaXMuY2Fyb3VzZWwud3JhcERpbVdpZHRoJiYhTnVtYmVyLmlzSW50ZWdlcih0aGlzLmNhcm91c2VsLm9wdGlvbigic2xpZGVzUGVyUGFnZSIpKT90aGlzLmNsZWFudXAoKToodGhpcy5idWlsZCgpLHRoaXMuJHByZXYucmVtb3ZlQXR0cmlidXRlKCJkaXNhYmxlZCIpLHRoaXMuJG5leHQucmVtb3ZlQXR0cmlidXRlKCJkaXNhYmxlZCIpLHRoaXMuY2Fyb3VzZWwub3B0aW9uKCJpbmZpbml0ZVgiLHRoaXMuY2Fyb3VzZWwub3B0aW9uKCJpbmZpbml0ZSIpKXx8KHRoaXMuY2Fyb3VzZWwucGFnZTw9MCYmdGhpcy4kcHJldi5zZXRBdHRyaWJ1dGUoImRpc2FibGVkIiwiIiksdGhpcy5jYXJvdXNlbC5wYWdlPj10LTEmJnRoaXMuJG5leHQuc2V0QXR0cmlidXRlKCJkaXNhYmxlZCIsIiIpKSl9Y2xlYW51cCgpe3RoaXMuJHByZXYmJnRoaXMuJHByZXYucmVtb3ZlKCksdGhpcy4kcHJldj1udWxsLHRoaXMuJG5leHQmJnRoaXMuJG5leHQucmVtb3ZlKCksdGhpcy4kbmV4dD1udWxsLHRoaXMuJGNvbnRhaW5lciYmdGhpcy4kY29udGFpbmVyLnJlbW92ZSgpLHRoaXMuJGNvbnRhaW5lcj1udWxsfWF0dGFjaCgpe3RoaXMuY2Fyb3VzZWwub24oInJlZnJlc2ggY2hhbmdlIix0aGlzLm9uUmVmcmVzaCl9ZGV0YWNoKCl7dGhpcy5jYXJvdXNlbC5vZmYoInJlZnJlc2ggY2hhbmdlIix0aGlzLm9uUmVmcmVzaCksdGhpcy5jbGVhbnVwKCl9fW0uZGVmYXVsdHM9e3ByZXZUcGw6JzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHRhYmluZGV4PSItMSI+PHBhdGggZD0iTTE1IDNsLTkgOSA5IDkiLz48L3N2Zz4nLG5leHRUcGw6JzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHRhYmluZGV4PSItMSI+PHBhdGggZD0iTTkgM2w5IDktOSA5Ii8+PC9zdmc+JyxjbGFzc05hbWVzOnttYWluOiJjYXJvdXNlbF9fbmF2IixidXR0b246ImNhcm91c2VsX19idXR0b24iLG5leHQ6ImlzLW5leHQiLHByZXY6ImlzLXByZXYifX07Y2xhc3Mgdntjb25zdHJ1Y3Rvcih0KXt0aGlzLmNhcm91c2VsPXQsdGhpcy5zZWxlY3RlZEluZGV4PW51bGwsdGhpcy5mcmljdGlvbj0wLHRoaXMub25OYXZSZWFkeT10aGlzLm9uTmF2UmVhZHkuYmluZCh0aGlzKSx0aGlzLm9uTmF2Q2xpY2s9dGhpcy5vbk5hdkNsaWNrLmJpbmQodGhpcyksdGhpcy5vbk5hdkNyZWF0ZVNsaWRlPXRoaXMub25OYXZDcmVhdGVTbGlkZS5iaW5kKHRoaXMpLHRoaXMub25UYXJnZXRDaGFuZ2U9dGhpcy5vblRhcmdldENoYW5nZS5iaW5kKHRoaXMpfWFkZEFzVGFyZ2V0Rm9yKHQpe3RoaXMudGFyZ2V0PXRoaXMuY2Fyb3VzZWwsdGhpcy5uYXY9dCx0aGlzLmF0dGFjaEV2ZW50cygpfWFkZEFzTmF2Rm9yKHQpe3RoaXMudGFyZ2V0PXQsdGhpcy5uYXY9dGhpcy5jYXJvdXNlbCx0aGlzLmF0dGFjaEV2ZW50cygpfWF0dGFjaEV2ZW50cygpe3RoaXMubmF2Lm9wdGlvbnMuaW5pdGlhbFNsaWRlPXRoaXMudGFyZ2V0Lm9wdGlvbnMuaW5pdGlhbFBhZ2UsdGhpcy5uYXYub24oInJlYWR5Iix0aGlzLm9uTmF2UmVhZHkpLHRoaXMubmF2Lm9uKCJjcmVhdGVTbGlkZSIsdGhpcy5vbk5hdkNyZWF0ZVNsaWRlKSx0aGlzLm5hdi5vbigiUGFuem9vbS5jbGljayIsdGhpcy5vbk5hdkNsaWNrKSx0aGlzLnRhcmdldC5vbigiY2hhbmdlIix0aGlzLm9uVGFyZ2V0Q2hhbmdlKSx0aGlzLnRhcmdldC5vbigiUGFuem9vbS5hZnRlclVwZGF0ZSIsdGhpcy5vblRhcmdldENoYW5nZSl9b25OYXZSZWFkeSgpe3RoaXMub25UYXJnZXRDaGFuZ2UoITApfW9uTmF2Q2xpY2sodCxlLGkpe2NvbnN0IHM9aS50YXJnZXQuY2xvc2VzdCgiLmNhcm91c2VsX19zbGlkZSIpO2lmKCFzKXJldHVybjtpLnN0b3BQcm9wYWdhdGlvbigpO2NvbnN0IGE9cGFyc2VJbnQocy5kYXRhc2V0LmluZGV4LDEwKSxuPXRoaXMudGFyZ2V0LmZpbmRQYWdlRm9yU2xpZGUoYSk7dGhpcy50YXJnZXQucGFnZSE9PW4mJnRoaXMudGFyZ2V0LnNsaWRlVG8obix7ZnJpY3Rpb246dGhpcy5mcmljdGlvbn0pLHRoaXMubWFya1NlbGVjdGVkU2xpZGUoYSl9b25OYXZDcmVhdGVTbGlkZSh0LGUpe2UuaW5kZXg9PT10aGlzLnNlbGVjdGVkSW5kZXgmJnRoaXMubWFya1NlbGVjdGVkU2xpZGUoZS5pbmRleCl9b25UYXJnZXRDaGFuZ2UoKXtjb25zdCB0PXRoaXMudGFyZ2V0LnBhZ2VzW3RoaXMudGFyZ2V0LnBhZ2VdLmluZGV4ZXNbMF0sZT10aGlzLm5hdi5maW5kUGFnZUZvclNsaWRlKHQpO3RoaXMubmF2LnNsaWRlVG8oZSksdGhpcy5tYXJrU2VsZWN0ZWRTbGlkZSh0KX1tYXJrU2VsZWN0ZWRTbGlkZSh0KXt0aGlzLnNlbGVjdGVkSW5kZXg9dCxbLi4udGhpcy5uYXYuc2xpZGVzXS5maWx0ZXIoKHQ9PnQuJGVsJiZ0LiRlbC5jbGFzc0xpc3QucmVtb3ZlKCJpcy1uYXYtc2VsZWN0ZWQiKSkpO2NvbnN0IGU9dGhpcy5uYXYuc2xpZGVzW3RdO2UmJmUuJGVsJiZlLiRlbC5jbGFzc0xpc3QuYWRkKCJpcy1uYXYtc2VsZWN0ZWQiKX1hdHRhY2godCl7Y29uc3QgZT10Lm9wdGlvbnMuU3luYzsoZS50YXJnZXR8fGUubmF2KSYmKGUudGFyZ2V0P3RoaXMuYWRkQXNOYXZGb3IoZS50YXJnZXQpOmUubmF2JiZ0aGlzLmFkZEFzVGFyZ2V0Rm9yKGUubmF2KSx0aGlzLmZyaWN0aW9uPWUuZnJpY3Rpb24pfWRldGFjaCgpe3RoaXMubmF2JiYodGhpcy5uYXYub2ZmKCJyZWFkeSIsdGhpcy5vbk5hdlJlYWR5KSx0aGlzLm5hdi5vZmYoIlBhbnpvb20uY2xpY2siLHRoaXMub25OYXZDbGljayksdGhpcy5uYXYub2ZmKCJjcmVhdGVTbGlkZSIsdGhpcy5vbk5hdkNyZWF0ZVNsaWRlKSksdGhpcy50YXJnZXQmJih0aGlzLnRhcmdldC5vZmYoIlBhbnpvb20uYWZ0ZXJVcGRhdGUiLHRoaXMub25UYXJnZXRDaGFuZ2UpLHRoaXMudGFyZ2V0Lm9mZigiY2hhbmdlIix0aGlzLm9uVGFyZ2V0Q2hhbmdlKSl9fXYuZGVmYXVsdHM9e2ZyaWN0aW9uOi45Mn07Y29uc3QgeD17TmF2aWdhdGlvbjptLERvdHM6Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5jYXJvdXNlbD10LHRoaXMuJGxpc3Q9bnVsbCx0aGlzLmV2ZW50cz17Y2hhbmdlOnRoaXMub25DaGFuZ2UuYmluZCh0aGlzKSxyZWZyZXNoOnRoaXMub25SZWZyZXNoLmJpbmQodGhpcyl9fWJ1aWxkTGlzdCgpe2lmKHRoaXMuY2Fyb3VzZWwucGFnZXMubGVuZ3RoPHRoaXMuY2Fyb3VzZWwub3B0aW9uKCJEb3RzLm1pblNsaWRlQ291bnQiKSlyZXR1cm47Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpO3JldHVybiB0LmNsYXNzTGlzdC5hZGQoImNhcm91c2VsX19kb3RzIiksdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKHQ9PntpZighKCJwYWdlImluIHQudGFyZ2V0LmRhdGFzZXQpKXJldHVybjt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKTtjb25zdCBlPXBhcnNlSW50KHQudGFyZ2V0LmRhdGFzZXQucGFnZSwxMCksaT10aGlzLmNhcm91c2VsO2UhPT1pLnBhZ2UmJihpLnBhZ2VzLmxlbmd0aDwzJiZpLm9wdGlvbigiaW5maW5pdGUiKT9pWzA9PWU/InNsaWRlUHJldiI6InNsaWRlTmV4dCJdKCk6aS5zbGlkZVRvKGUpKX0pKSx0aGlzLiRsaXN0PXQsdGhpcy5jYXJvdXNlbC4kY29udGFpbmVyLmFwcGVuZENoaWxkKHQpLHRoaXMuY2Fyb3VzZWwuJGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJoYXMtZG90cyIpLHR9cmVtb3ZlTGlzdCgpe3RoaXMuJGxpc3QmJih0aGlzLiRsaXN0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy4kbGlzdCksdGhpcy4kbGlzdD1udWxsKSx0aGlzLmNhcm91c2VsLiRjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgiaGFzLWRvdHMiKX1yZWJ1aWxkRG90cygpe2xldCB0PXRoaXMuJGxpc3Q7Y29uc3QgZT0hIXQsaT10aGlzLmNhcm91c2VsLnBhZ2VzLmxlbmd0aDtpZihpPDIpcmV0dXJuIHZvaWQoZSYmdGhpcy5yZW1vdmVMaXN0KCkpO2V8fCh0PXRoaXMuYnVpbGRMaXN0KCkpO2NvbnN0IHM9dGhpcy4kbGlzdC5jaGlsZHJlbi5sZW5ndGg7aWYocz5pKWZvcihsZXQgdD1pO3Q8czt0KyspdGhpcy4kbGlzdC5yZW1vdmVDaGlsZCh0aGlzLiRsaXN0Lmxhc3RDaGlsZCk7ZWxzZXtmb3IobGV0IHQ9czt0PGk7dCsrKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7ZS5jbGFzc0xpc3QuYWRkKCJjYXJvdXNlbF9fZG90IiksZS5kYXRhc2V0LnBhZ2U9dCxlLnNldEF0dHJpYnV0ZSgicm9sZSIsImJ1dHRvbiIpLGUuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKSxlLnNldEF0dHJpYnV0ZSgidGl0bGUiLHRoaXMuY2Fyb3VzZWwubG9jYWxpemUoInt7R09UT319IixbWyIlZCIsdCsxXV0pKSxlLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCh0PT57Y29uc3QgaT10LmNvZGU7bGV0IHM7IkVudGVyIj09PWl8fCJOdW1wYWRFbnRlciI9PT1pP3M9ZToiQXJyb3dSaWdodCI9PT1pP3M9ZS5uZXh0U2libGluZzoiQXJyb3dMZWZ0Ij09PWkmJihzPWUucHJldmlvdXNTaWJsaW5nKSxzJiZzLmNsaWNrKCl9KSksdGhpcy4kbGlzdC5hcHBlbmRDaGlsZChlKX10aGlzLnNldEFjdGl2ZURvdCgpfX1zZXRBY3RpdmVEb3QoKXtpZighdGhpcy4kbGlzdClyZXR1cm47dGhpcy4kbGlzdC5jaGlsZE5vZGVzLmZvckVhY2goKHQ9Pnt0LmNsYXNzTGlzdC5yZW1vdmUoImlzLXNlbGVjdGVkIil9KSk7Y29uc3QgdD10aGlzLiRsaXN0LmNoaWxkTm9kZXNbdGhpcy5jYXJvdXNlbC5wYWdlXTt0JiZ0LmNsYXNzTGlzdC5hZGQoImlzLXNlbGVjdGVkIil9b25DaGFuZ2UoKXt0aGlzLnNldEFjdGl2ZURvdCgpfW9uUmVmcmVzaCgpe3RoaXMucmVidWlsZERvdHMoKX1hdHRhY2goKXt0aGlzLmNhcm91c2VsLm9uKHRoaXMuZXZlbnRzKX1kZXRhY2goKXt0aGlzLnJlbW92ZUxpc3QoKSx0aGlzLmNhcm91c2VsLm9mZih0aGlzLmV2ZW50cyksdGhpcy5jYXJvdXNlbD1udWxsfX0sU3luYzp2fSxiPXtzbGlkZXM6W10scHJlbG9hZDowLHNsaWRlc1BlclBhZ2U6ImF1dG8iLGluaXRpYWxQYWdlOm51bGwsaW5pdGlhbFNsaWRlOm51bGwsZnJpY3Rpb246LjkyLGNlbnRlcjohMCxpbmZpbml0ZTohMCxmaWxsOiEwLGRyYWdGcmVlOiExLHByZWZpeDoiIixjbGFzc05hbWVzOnt2aWV3cG9ydDoiY2Fyb3VzZWxfX3ZpZXdwb3J0Iix0cmFjazoiY2Fyb3VzZWxfX3RyYWNrIixzbGlkZToiY2Fyb3VzZWxfX3NsaWRlIixzbGlkZVNlbGVjdGVkOiJpcy1zZWxlY3RlZCJ9LGwxMG46e05FWFQ6Ik5leHQgc2xpZGUiLFBSRVY6IlByZXZpb3VzIHNsaWRlIixHT1RPOiJHbyB0byBzbGlkZSAjJWQifX07Y2xhc3MgeSBleHRlbmRzIHV7Y29uc3RydWN0b3IodCxlPXt9KXtpZihzdXBlcihlPWEoITAse30sYixlKSksdGhpcy5zdGF0ZT0iaW5pdCIsdGhpcy4kY29udGFpbmVyPXQsISh0aGlzLiRjb250YWluZXIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpdGhyb3cgbmV3IEVycm9yKCJObyByb290IGVsZW1lbnQgcHJvdmlkZWQiKTt0aGlzLnNsaWRlTmV4dD1mKHRoaXMuc2xpZGVOZXh0LmJpbmQodGhpcyksMjUwKSx0aGlzLnNsaWRlUHJldj1mKHRoaXMuc2xpZGVQcmV2LmJpbmQodGhpcyksMjUwKSx0aGlzLmluaXQoKSx0Ll9fQ2Fyb3VzZWw9dGhpc31pbml0KCl7dGhpcy5wYWdlcz1bXSx0aGlzLnBhZ2U9dGhpcy5wYWdlSW5kZXg9bnVsbCx0aGlzLnByZXZQYWdlPXRoaXMucHJldlBhZ2VJbmRleD1udWxsLHRoaXMuYXR0YWNoUGx1Z2lucyh5LlBsdWdpbnMpLHRoaXMudHJpZ2dlcigiaW5pdCIpLHRoaXMuaW5pdExheW91dCgpLHRoaXMuaW5pdFNsaWRlcygpLHRoaXMudXBkYXRlTWV0cmljcygpLHRoaXMuJHRyYWNrJiZ0aGlzLnBhZ2VzLmxlbmd0aCYmKHRoaXMuJHRyYWNrLnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlM2QoJHstMSp0aGlzLnBhZ2VzW3RoaXMucGFnZV0ubGVmdH1weCwgMHB4LCAwKSBzY2FsZSgxKWApLHRoaXMubWFuYWdlU2xpZGVWaXNpYmxpdHkoKSx0aGlzLmluaXRQYW56b29tKCksdGhpcy5zdGF0ZT0icmVhZHkiLHRoaXMudHJpZ2dlcigicmVhZHkiKX1pbml0TGF5b3V0KCl7Y29uc3QgdD10aGlzLm9wdGlvbigicHJlZml4IiksZT10aGlzLm9wdGlvbigiY2xhc3NOYW1lcyIpO3RoaXMuJHZpZXdwb3J0PXRoaXMub3B0aW9uKCJ2aWV3cG9ydCIpfHx0aGlzLiRjb250YWluZXIucXVlcnlTZWxlY3RvcihgLiR7dH0ke2Uudmlld3BvcnR9YCksdGhpcy4kdmlld3BvcnR8fCh0aGlzLiR2aWV3cG9ydD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLiR2aWV3cG9ydC5jbGFzc0xpc3QuYWRkKC4uLih0K2Uudmlld3BvcnQpLnNwbGl0KCIgIikpLHRoaXMuJHZpZXdwb3J0LmFwcGVuZCguLi50aGlzLiRjb250YWluZXIuY2hpbGROb2RlcyksdGhpcy4kY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuJHZpZXdwb3J0KSksdGhpcy4kdHJhY2s9dGhpcy5vcHRpb24oInRyYWNrIil8fHRoaXMuJGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKGAuJHt0fSR7ZS50cmFja31gKSx0aGlzLiR0cmFja3x8KHRoaXMuJHRyYWNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuJHRyYWNrLmNsYXNzTGlzdC5hZGQoLi4uKHQrZS50cmFjaykuc3BsaXQoIiAiKSksdGhpcy4kdHJhY2suYXBwZW5kKC4uLnRoaXMuJHZpZXdwb3J0LmNoaWxkTm9kZXMpLHRoaXMuJHZpZXdwb3J0LmFwcGVuZENoaWxkKHRoaXMuJHRyYWNrKSl9aW5pdFNsaWRlcygpe3RoaXMuc2xpZGVzPVtdLHRoaXMuJHZpZXdwb3J0LnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke3RoaXMub3B0aW9uKCJwcmVmaXgiKX0ke3RoaXMub3B0aW9uKCJjbGFzc05hbWVzLnNsaWRlIil9YCkuZm9yRWFjaCgodD0+e2NvbnN0IGU9eyRlbDp0LGlzRG9tOiEwfTt0aGlzLnNsaWRlcy5wdXNoKGUpLHRoaXMudHJpZ2dlcigiY3JlYXRlU2xpZGUiLGUsdGhpcy5zbGlkZXMubGVuZ3RoKX0pKSxBcnJheS5pc0FycmF5KHRoaXMub3B0aW9ucy5zbGlkZXMpJiYodGhpcy5zbGlkZXM9YSghMCxbLi4udGhpcy5zbGlkZXNdLHRoaXMub3B0aW9ucy5zbGlkZXMpKX11cGRhdGVNZXRyaWNzKCl7bGV0IHQsZT0wLGk9W107dGhpcy5zbGlkZXMuZm9yRWFjaCgoKHMsYSk9Pntjb25zdCBuPXMuJGVsLHI9cy5pc0RvbXx8IXQ/dGhpcy5nZXRTbGlkZU1ldHJpY3Mobik6dDtzLmluZGV4PWEscy53aWR0aD1yLHMubGVmdD1lLHQ9cixlKz1yLGkucHVzaChhKX0pKTtsZXQgcz1NYXRoLm1heCh0aGlzLiR0cmFjay5vZmZzZXRXaWR0aCxuKHRoaXMuJHRyYWNrLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKSksYT1nZXRDb21wdXRlZFN0eWxlKHRoaXMuJHRyYWNrKTtzLT1wYXJzZUZsb2F0KGEucGFkZGluZ0xlZnQpK3BhcnNlRmxvYXQoYS5wYWRkaW5nUmlnaHQpLHRoaXMuY29udGVudFdpZHRoPWUsdGhpcy52aWV3cG9ydFdpZHRoPXM7Y29uc3Qgcj1bXSxvPXRoaXMub3B0aW9uKCJzbGlkZXNQZXJQYWdlIik7aWYoTnVtYmVyLmlzSW50ZWdlcihvKSYmZT5zKWZvcihsZXQgdD0wO3Q8dGhpcy5zbGlkZXMubGVuZ3RoO3QrPW8pci5wdXNoKHtpbmRleGVzOmkuc2xpY2UodCx0K28pLHNsaWRlczp0aGlzLnNsaWRlcy5zbGljZSh0LHQrbyl9KTtlbHNle2xldCB0PTAsZT0wO2ZvcihsZXQgaT0wO2k8dGhpcy5zbGlkZXMubGVuZ3RoO2krPTEpe2xldCBhPXRoaXMuc2xpZGVzW2ldOyghci5sZW5ndGh8fGUrYS53aWR0aD5zKSYmKHIucHVzaCh7aW5kZXhlczpbXSxzbGlkZXM6W119KSx0PXIubGVuZ3RoLTEsZT0wKSxlKz1hLndpZHRoLHJbdF0uaW5kZXhlcy5wdXNoKGkpLHJbdF0uc2xpZGVzLnB1c2goYSl9fWNvbnN0IGw9dGhpcy5vcHRpb24oImNlbnRlciIpLGM9dGhpcy5vcHRpb24oImZpbGwiKTtyLmZvckVhY2goKCh0LGkpPT57dC5pbmRleD1pLHQud2lkdGg9dC5zbGlkZXMucmVkdWNlKCgodCxlKT0+dCtlLndpZHRoKSwwKSx0LmxlZnQ9dC5zbGlkZXNbMF0ubGVmdCxsJiYodC5sZWZ0Kz0uNSoocy10LndpZHRoKSotMSksYyYmIXRoaXMub3B0aW9uKCJpbmZpbml0ZVgiLHRoaXMub3B0aW9uKCJpbmZpbml0ZSIpKSYmZT5zJiYodC5sZWZ0PU1hdGgubWF4KHQubGVmdCwwKSx0LmxlZnQ9TWF0aC5taW4odC5sZWZ0LGUtcykpfSkpO2NvbnN0IGg9W107bGV0IGQ7ci5mb3JFYWNoKCh0PT57Y29uc3QgZT17Li4udH07ZCYmZS5sZWZ0PT09ZC5sZWZ0PyhkLndpZHRoKz1lLndpZHRoLGQuc2xpZGVzPVsuLi5kLnNsaWRlcywuLi5lLnNsaWRlc10sZC5pbmRleGVzPVsuLi5kLmluZGV4ZXMsLi4uZS5pbmRleGVzXSk6KGUuaW5kZXg9aC5sZW5ndGgsZD1lLGgucHVzaChlKSl9KSksdGhpcy5wYWdlcz1oO2xldCB1PXRoaXMucGFnZTtpZihudWxsPT09dSl7Y29uc3QgdD10aGlzLm9wdGlvbigiaW5pdGlhbFNsaWRlIik7dT1udWxsIT09dD90aGlzLmZpbmRQYWdlRm9yU2xpZGUodCk6cGFyc2VJbnQodGhpcy5vcHRpb24oImluaXRpYWxQYWdlIiwwKSwxMCl8fDAsaFt1XXx8KHU9aC5sZW5ndGgmJnU+aC5sZW5ndGg/aFtoLmxlbmd0aC0xXS5pbmRleDowKSx0aGlzLnBhZ2U9dSx0aGlzLnBhZ2VJbmRleD11fXRoaXMudXBkYXRlUGFuem9vbSgpLHRoaXMudHJpZ2dlcigicmVmcmVzaCIpfWdldFNsaWRlTWV0cmljcyh0KXtpZighdCl7Y29uc3QgZT10aGlzLnNsaWRlc1swXTsodD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuZGF0YXNldC5pc1Rlc3RFbD0xLHQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0LmNsYXNzTGlzdC5hZGQoLi4uKHRoaXMub3B0aW9uKCJwcmVmaXgiKSt0aGlzLm9wdGlvbigiY2xhc3NOYW1lcy5zbGlkZSIpKS5zcGxpdCgiICIpKSxlLmN1c3RvbUNsYXNzJiZ0LmNsYXNzTGlzdC5hZGQoLi4uZS5jdXN0b21DbGFzcy5zcGxpdCgiICIpKSx0aGlzLiR0cmFjay5wcmVwZW5kKHQpfWxldCBlPU1hdGgubWF4KHQub2Zmc2V0V2lkdGgsbih0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKSk7Y29uc3QgaT10LmN1cnJlbnRTdHlsZXx8d2luZG93LmdldENvbXB1dGVkU3R5bGUodCk7cmV0dXJuIGU9ZSsocGFyc2VGbG9hdChpLm1hcmdpbkxlZnQpfHwwKSsocGFyc2VGbG9hdChpLm1hcmdpblJpZ2h0KXx8MCksdC5kYXRhc2V0LmlzVGVzdEVsJiZ0LnJlbW92ZSgpLGV9ZmluZFBhZ2VGb3JTbGlkZSh0KXt0PXBhcnNlSW50KHQsMTApfHwwO2NvbnN0IGU9dGhpcy5wYWdlcy5maW5kKChlPT5lLmluZGV4ZXMuaW5kZXhPZih0KT4tMSkpO3JldHVybiBlP2UuaW5kZXg6bnVsbH1zbGlkZU5leHQoKXt0aGlzLnNsaWRlVG8odGhpcy5wYWdlSW5kZXgrMSl9c2xpZGVQcmV2KCl7dGhpcy5zbGlkZVRvKHRoaXMucGFnZUluZGV4LTEpfXNsaWRlVG8odCxlPXt9KXtjb25zdHt4Omk9LTEqdGhpcy5zZXRQYWdlKHQsITApLHk6cz0wLGZyaWN0aW9uOmE9dGhpcy5vcHRpb24oImZyaWN0aW9uIil9PWU7dGhpcy5QYW56b29tLmNvbnRlbnQueD09PWkmJiF0aGlzLlBhbnpvb20udmVsb2NpdHkueCYmYXx8KHRoaXMuUGFuem9vbS5wYW5Ubyh7eDppLHk6cyxmcmljdGlvbjphLGlnbm9yZUJvdW5kczohMH0pLCJyZWFkeSI9PT10aGlzLnN0YXRlJiYicmVhZHkiPT09dGhpcy5QYW56b29tLnN0YXRlJiZ0aGlzLnRyaWdnZXIoInNldHRsZSIpKX1pbml0UGFuem9vbSgpe3RoaXMuUGFuem9vbSYmdGhpcy5QYW56b29tLmRlc3Ryb3koKTtjb25zdCB0PWEoITAse30se2NvbnRlbnQ6dGhpcy4kdHJhY2ssd3JhcElubmVyOiExLHJlc2l6ZVBhcmVudDohMSx6b29tOiExLGNsaWNrOiExLGxvY2tBeGlzOiJ4Iix4OnRoaXMucGFnZXMubGVuZ3RoPy0xKnRoaXMucGFnZXNbdGhpcy5wYWdlXS5sZWZ0OjAsY2VudGVyT25TdGFydDohMSx0ZXh0U2VsZWN0aW9uOigpPT50aGlzLm9wdGlvbigidGV4dFNlbGVjdGlvbiIsITEpLHBhbk9ubHlab29tZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50LndpZHRoPD10aGlzLnZpZXdwb3J0LndpZHRofX0sdGhpcy5vcHRpb24oIlBhbnpvb20iKSk7dGhpcy5QYW56b29tPW5ldyBnKHRoaXMuJGNvbnRhaW5lcix0KSx0aGlzLlBhbnpvb20ub24oeyIqIjoodCwuLi5lKT0+dGhpcy50cmlnZ2VyKGBQYW56b29tLiR7dH1gLC4uLmUpLGFmdGVyVXBkYXRlOigpPT57dGhpcy51cGRhdGVQYWdlKCl9LGJlZm9yZVRyYW5zZm9ybTp0aGlzLm9uQmVmb3JlVHJhbnNmb3JtLmJpbmQodGhpcyksdG91Y2hFbmQ6dGhpcy5vblRvdWNoRW5kLmJpbmQodGhpcyksZW5kQW5pbWF0aW9uOigpPT57dGhpcy50cmlnZ2VyKCJzZXR0bGUiKX19KSx0aGlzLnVwZGF0ZU1ldHJpY3MoKSx0aGlzLm1hbmFnZVNsaWRlVmlzaWJsaXR5KCl9dXBkYXRlUGFuem9vbSgpe3RoaXMuUGFuem9vbSYmKHRoaXMuUGFuem9vbS5jb250ZW50PXsuLi50aGlzLlBhbnpvb20uY29udGVudCxmaXRXaWR0aDp0aGlzLmNvbnRlbnRXaWR0aCxvcmlnV2lkdGg6dGhpcy5jb250ZW50V2lkdGgsd2lkdGg6dGhpcy5jb250ZW50V2lkdGh9LHRoaXMucGFnZXMubGVuZ3RoPjEmJnRoaXMub3B0aW9uKCJpbmZpbml0ZVgiLHRoaXMub3B0aW9uKCJpbmZpbml0ZSIpKT90aGlzLlBhbnpvb20uYm91bmRYPW51bGw6dGhpcy5wYWdlcy5sZW5ndGgmJih0aGlzLlBhbnpvb20uYm91bmRYPXtmcm9tOi0xKnRoaXMucGFnZXNbdGhpcy5wYWdlcy5sZW5ndGgtMV0ubGVmdCx0bzotMSp0aGlzLnBhZ2VzWzBdLmxlZnR9KSx0aGlzLm9wdGlvbigiaW5maW5pdGVZIix0aGlzLm9wdGlvbigiaW5maW5pdGUiKSk/dGhpcy5QYW56b29tLmJvdW5kWT1udWxsOnRoaXMuUGFuem9vbS5ib3VuZFk9e2Zyb206MCx0bzowfSx0aGlzLlBhbnpvb20uaGFuZGxlQ3Vyc29yKCkpfW1hbmFnZVNsaWRlVmlzaWJsaXR5KCl7Y29uc3QgdD10aGlzLmNvbnRlbnRXaWR0aCxlPXRoaXMudmlld3BvcnRXaWR0aDtsZXQgaT10aGlzLlBhbnpvb20/LTEqdGhpcy5QYW56b29tLmNvbnRlbnQueDp0aGlzLnBhZ2VzLmxlbmd0aD90aGlzLnBhZ2VzW3RoaXMucGFnZV0ubGVmdDowO2NvbnN0IHM9dGhpcy5vcHRpb24oInByZWxvYWQiKSxhPXRoaXMub3B0aW9uKCJpbmZpbml0ZVgiLHRoaXMub3B0aW9uKCJpbmZpbml0ZSIpKSxuPXBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLiR2aWV3cG9ydCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJwYWRkaW5nLWxlZnQiKSkscj1wYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUodGhpcy4kdmlld3BvcnQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgicGFkZGluZy1yaWdodCIpKTt0aGlzLnNsaWRlcy5mb3JFYWNoKChvPT57bGV0IGwsYyxoPTA7bD1pLW4sYz1pK2UrcixsLT1zKihlK24rciksYys9cyooZStuK3IpO2NvbnN0IGQ9by5sZWZ0K28ud2lkdGg+bCYmby5sZWZ0PGM7bD1pK3QtbixjPWkrdCtlK3IsbC09cyooZStuK3IpO2NvbnN0IHU9YSYmby5sZWZ0K28ud2lkdGg+bCYmby5sZWZ0PGM7bD1pLXQtbixjPWktdCtlK3IsbC09cyooZStuK3IpO2NvbnN0IHA9YSYmby5sZWZ0K28ud2lkdGg+bCYmby5sZWZ0PGM7dXx8ZHx8cD8odGhpcy5jcmVhdGVTbGlkZUVsKG8pLGQmJihoPTApLHUmJihoPS0xKSxwJiYoaD0xKSxvLmxlZnQrby53aWR0aD5pJiZvLmxlZnQ8PWkrZStyJiYoaD0wKSk6dGhpcy5yZW1vdmVTbGlkZUVsKG8pLG8uaGFzRGlmZj1ofSkpO2xldCBvPTAsbD0wO3RoaXMuc2xpZGVzLmZvckVhY2goKChlLGkpPT57bGV0IHM9MDtlLiRlbD8oaSE9PW98fGUuaGFzRGlmZj9zPWwrZS5oYXNEaWZmKnQ6bD0wLGUuJGVsLnN0eWxlLmxlZnQ9TWF0aC5hYnMocyk+LjE/YCR7bCtlLmhhc0RpZmYqdH1weGA6IiIsbysrKTpsKz1lLndpZHRofSkpLHRoaXMubWFya1NlbGVjdGVkU2xpZGVzKCl9Y3JlYXRlU2xpZGVFbCh0KXtpZighdClyZXR1cm47aWYodC4kZWwpe2xldCBlPXQuJGVsLmRhdGFzZXQuaW5kZXg7aWYoIWV8fHBhcnNlSW50KGUsMTApIT09dC5pbmRleCl7bGV0IGU7dC4kZWwuZGF0YXNldC5pbmRleD10LmluZGV4LHQuJGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWxhenktc3Jjc2V0XSIpLmZvckVhY2goKHQ9Pnt0LnNyY3NldD10LmRhdGFzZXQubGF6eVNyY3NldH0pKSx0LiRlbC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1sYXp5LXNyY10iKS5mb3JFYWNoKCh0PT57bGV0IGU9dC5kYXRhc2V0LmxhenlTcmM7dCBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQ/dC5zcmM9ZTp0LnN0eWxlLmJhY2tncm91bmRJbWFnZT1gdXJsKCcke2V9JylgfSkpLChlPXQuJGVsLmRhdGFzZXQubGF6eVNyYykmJih0LiRlbC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9YHVybCgnJHtlfScpYCksdC5zdGF0ZT0icmVhZHkifXJldHVybn1jb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuZGF0YXNldC5pbmRleD10LmluZGV4LGUuY2xhc3NMaXN0LmFkZCguLi4odGhpcy5vcHRpb24oInByZWZpeCIpK3RoaXMub3B0aW9uKCJjbGFzc05hbWVzLnNsaWRlIikpLnNwbGl0KCIgIikpLHQuY3VzdG9tQ2xhc3MmJmUuY2xhc3NMaXN0LmFkZCguLi50LmN1c3RvbUNsYXNzLnNwbGl0KCIgIikpLHQuaHRtbCYmKGUuaW5uZXJIVE1MPXQuaHRtbCk7Y29uc3QgaT1bXTt0aGlzLnNsaWRlcy5mb3JFYWNoKCgodCxlKT0+e3QuJGVsJiZpLnB1c2goZSl9KSk7Y29uc3Qgcz10LmluZGV4O2xldCBhPW51bGw7aWYoaS5sZW5ndGgpe2xldCB0PWkucmVkdWNlKCgodCxlKT0+TWF0aC5hYnMoZS1zKTxNYXRoLmFicyh0LXMpP2U6dCkpO2E9dGhpcy5zbGlkZXNbdF19cmV0dXJuIHRoaXMuJHRyYWNrLmluc2VydEJlZm9yZShlLGEmJmEuJGVsP2EuaW5kZXg8dC5pbmRleD9hLiRlbC5uZXh0U2libGluZzphLiRlbDpudWxsKSx0LiRlbD1lLHRoaXMudHJpZ2dlcigiY3JlYXRlU2xpZGUiLHQscyksdH1yZW1vdmVTbGlkZUVsKHQpe3QuJGVsJiYhdC5pc0RvbSYmKHRoaXMudHJpZ2dlcigicmVtb3ZlU2xpZGUiLHQpLHQuJGVsLnJlbW92ZSgpLHQuJGVsPW51bGwpfW1hcmtTZWxlY3RlZFNsaWRlcygpe2NvbnN0IHQ9dGhpcy5vcHRpb24oImNsYXNzTmFtZXMuc2xpZGVTZWxlY3RlZCIpLGU9ImFyaWEtaGlkZGVuIjt0aGlzLnNsaWRlcy5mb3JFYWNoKCgoaSxzKT0+e2NvbnN0IGE9aS4kZWw7aWYoIWEpcmV0dXJuO2NvbnN0IG49dGhpcy5wYWdlc1t0aGlzLnBhZ2VdO24mJm4uaW5kZXhlcyYmbi5pbmRleGVzLmluZGV4T2Yocyk+LTE/KHQmJiFhLmNsYXNzTGlzdC5jb250YWlucyh0KSYmKGEuY2xhc3NMaXN0LmFkZCh0KSx0aGlzLnRyaWdnZXIoInNlbGVjdFNsaWRlIixpKSksYS5yZW1vdmVBdHRyaWJ1dGUoZSkpOih0JiZhLmNsYXNzTGlzdC5jb250YWlucyh0KSYmKGEuY2xhc3NMaXN0LnJlbW92ZSh0KSx0aGlzLnRyaWdnZXIoInVuc2VsZWN0U2xpZGUiLGkpKSxhLnNldEF0dHJpYnV0ZShlLCEwKSl9KSl9dXBkYXRlUGFnZSgpe3RoaXMudXBkYXRlTWV0cmljcygpLHRoaXMuc2xpZGVUbyh0aGlzLnBhZ2Use2ZyaWN0aW9uOjB9KX1vbkJlZm9yZVRyYW5zZm9ybSgpe3RoaXMub3B0aW9uKCJpbmZpbml0ZVgiLHRoaXMub3B0aW9uKCJpbmZpbml0ZSIpKSYmdGhpcy5tYW5hZ2VJbmZpbml0ZVRyYWNrKCksdGhpcy5tYW5hZ2VTbGlkZVZpc2libGl0eSgpfW1hbmFnZUluZmluaXRlVHJhY2soKXtjb25zdCB0PXRoaXMuY29udGVudFdpZHRoLGU9dGhpcy52aWV3cG9ydFdpZHRoO2lmKCF0aGlzLm9wdGlvbigiaW5maW5pdGVYIix0aGlzLm9wdGlvbigiaW5maW5pdGUiKSl8fHRoaXMucGFnZXMubGVuZ3RoPDJ8fHQ8ZSlyZXR1cm47Y29uc3QgaT10aGlzLlBhbnpvb207bGV0IHM9ITE7cmV0dXJuIGkuY29udGVudC54PC0xKih0LWUpJiYoaS5jb250ZW50LngrPXQsdGhpcy5wYWdlSW5kZXg9dGhpcy5wYWdlSW5kZXgtdGhpcy5wYWdlcy5sZW5ndGgscz0hMCksaS5jb250ZW50Lng+ZSYmKGkuY29udGVudC54LT10LHRoaXMucGFnZUluZGV4PXRoaXMucGFnZUluZGV4K3RoaXMucGFnZXMubGVuZ3RoLHM9ITApLHMmJiJwb2ludGVyZG93biI9PT1pLnN0YXRlJiZpLnJlc2V0RHJhZ1Bvc2l0aW9uKCksc31vblRvdWNoRW5kKHQsZSl7Y29uc3QgaT10aGlzLm9wdGlvbigiZHJhZ0ZyZWUiKTtpZighaSYmdGhpcy5wYWdlcy5sZW5ndGg+MSYmdC5kcmFnT2Zmc2V0LnRpbWU8MzUwJiZNYXRoLmFicyh0LmRyYWdPZmZzZXQueSk8MSYmTWF0aC5hYnModC5kcmFnT2Zmc2V0LngpPjUpdGhpc1t0LmRyYWdPZmZzZXQueDwwPyJzbGlkZU5leHQiOiJzbGlkZVByZXYiXSgpO2Vsc2UgaWYoaSl7Y29uc3RbLGVdPXRoaXMuZ2V0UGFnZUZyb21Qb3NpdGlvbigtMSp0LnRyYW5zZm9ybS54KTt0aGlzLnNldFBhZ2UoZSl9ZWxzZSB0aGlzLnNsaWRlVG9DbG9zZXN0KCl9c2xpZGVUb0Nsb3Nlc3QodD17fSl7bGV0WyxlXT10aGlzLmdldFBhZ2VGcm9tUG9zaXRpb24oLTEqdGhpcy5QYW56b29tLmNvbnRlbnQueCk7dGhpcy5zbGlkZVRvKGUsdCl9Z2V0UGFnZUZyb21Qb3NpdGlvbih0KXtjb25zdCBlPXRoaXMucGFnZXMubGVuZ3RoO3RoaXMub3B0aW9uKCJjZW50ZXIiKSYmKHQrPS41KnRoaXMudmlld3BvcnRXaWR0aCk7Y29uc3QgaT1NYXRoLmZsb29yKHQvdGhpcy5jb250ZW50V2lkdGgpO3QtPWkqdGhpcy5jb250ZW50V2lkdGg7bGV0IHM9dGhpcy5zbGlkZXMuZmluZCgoZT0+ZS5sZWZ0PD10JiZlLmxlZnQrZS53aWR0aD50KSk7aWYocyl7bGV0IHQ9dGhpcy5maW5kUGFnZUZvclNsaWRlKHMuaW5kZXgpO3JldHVyblt0LHQraSplXX1yZXR1cm5bMCwwXX1zZXRQYWdlKHQsZSl7bGV0IGk9MCxzPXBhcnNlSW50KHQsMTApfHwwO2NvbnN0IGE9dGhpcy5wYWdlLG49dGhpcy5wYWdlSW5kZXgscj10aGlzLnBhZ2VzLmxlbmd0aCxvPXRoaXMuY29udGVudFdpZHRoLGw9dGhpcy52aWV3cG9ydFdpZHRoO2lmKHQ9KHMlcityKSVyLHRoaXMub3B0aW9uKCJpbmZpbml0ZVgiLHRoaXMub3B0aW9uKCJpbmZpbml0ZSIpKSYmbz5sKXtjb25zdCBhPU1hdGguZmxvb3Iocy9yKXx8MCxuPW87aWYoaT10aGlzLnBhZ2VzW3RdLmxlZnQrYSpuLCEwPT09ZSYmcj4yKXtsZXQgdD0tMSp0aGlzLlBhbnpvb20uY29udGVudC54O2NvbnN0IGU9aS1uLGE9aStuLG89TWF0aC5hYnModC1pKSxsPU1hdGguYWJzKHQtZSksYz1NYXRoLmFicyh0LWEpO2M8byYmYzw9bD8oaT1hLHMrPXIpOmw8byYmbDxjJiYoaT1lLHMtPXIpfX1lbHNlIHQ9cz1NYXRoLm1heCgwLE1hdGgubWluKHMsci0xKSksaT10aGlzLnBhZ2VzLmxlbmd0aD90aGlzLnBhZ2VzW3RdLmxlZnQ6MDtyZXR1cm4gdGhpcy5wYWdlPXQsdGhpcy5wYWdlSW5kZXg9cyxudWxsIT09YSYmdCE9PWEmJih0aGlzLnByZXZQYWdlPWEsdGhpcy5wcmV2UGFnZUluZGV4PW4sdGhpcy50cmlnZ2VyKCJjaGFuZ2UiLHQsYSkpLGl9ZGVzdHJveSgpe3RoaXMuc3RhdGU9ImRlc3Ryb3kiLHRoaXMuc2xpZGVzLmZvckVhY2goKHQ9Pnt0aGlzLnJlbW92ZVNsaWRlRWwodCl9KSksdGhpcy5zbGlkZXM9W10sdGhpcy5QYW56b29tLmRlc3Ryb3koKSx0aGlzLmRldGFjaFBsdWdpbnMoKX19eS52ZXJzaW9uPSI0LjAuMzEiLHkuUGx1Z2lucz14O2NvbnN0IHc9ISgidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5kb2N1bWVudHx8IXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTtsZXQgaz1udWxsO2NvbnN0IFM9WyJhW2hyZWZdIiwiYXJlYVtocmVmXSIsJ2lucHV0Om5vdChbZGlzYWJsZWRdKTpub3QoW3R5cGU9ImhpZGRlbiJdKTpub3QoW2FyaWEtaGlkZGVuXSknLCJzZWxlY3Q6bm90KFtkaXNhYmxlZF0pOm5vdChbYXJpYS1oaWRkZW5dKSIsInRleHRhcmVhOm5vdChbZGlzYWJsZWRdKTpub3QoW2FyaWEtaGlkZGVuXSkiLCJidXR0b246bm90KFtkaXNhYmxlZF0pOm5vdChbYXJpYS1oaWRkZW5dKSIsImlmcmFtZSIsIm9iamVjdCIsImVtYmVkIiwidmlkZW8iLCJhdWRpbyIsIltjb250ZW50ZWRpdGFibGVdIiwnW3RhYmluZGV4XTpub3QoW3RhYmluZGV4Xj0iLSJdKTpub3QoW2Rpc2FibGVkXSk6bm90KFthcmlhLWhpZGRlbl0pJ10sQz10PT57aWYodCYmdyl7bnVsbD09PWsmJmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLmZvY3VzKHtnZXQgcHJldmVudFNjcm9sbCgpe3JldHVybiBrPSEwLCExfX0pO3RyeXtpZih0LnNldEFjdGl2ZSl0LnNldEFjdGl2ZSgpO2Vsc2UgaWYoayl0LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSk7ZWxzZXtjb25zdCBlPXdpbmRvdy5wYWdlWE9mZnNldHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AsaT13aW5kb3cucGFnZVlPZmZzZXR8fGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdDt0LmZvY3VzKCksZG9jdW1lbnQuYm9keS5zY3JvbGxUbyh7dG9wOmUsbGVmdDppLGJlaGF2aW9yOiJhdXRvIn0pfX1jYXRjaCh0KXt9fX07Y2xhc3MgQXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmZhbmN5Ym94PXQsdGhpcy4kY29udGFpbmVyPW51bGwsdGhpcy5zdGF0ZT0iaW5pdCI7Zm9yKGNvbnN0IHQgb2ZbIm9uUHJlcGFyZSIsIm9uQ2xvc2luZyIsIm9uS2V5ZG93biJdKXRoaXNbdF09dGhpc1t0XS5iaW5kKHRoaXMpO3RoaXMuZXZlbnRzPXtwcmVwYXJlOnRoaXMub25QcmVwYXJlLGNsb3Npbmc6dGhpcy5vbkNsb3Npbmcsa2V5ZG93bjp0aGlzLm9uS2V5ZG93bn19b25QcmVwYXJlKCl7dGhpcy5nZXRTbGlkZXMoKS5sZW5ndGg8dGhpcy5mYW5jeWJveC5vcHRpb24oIlRodW1icy5taW5TbGlkZUNvdW50Iik/dGhpcy5zdGF0ZT0iZGlzYWJsZWQiOiEwPT09dGhpcy5mYW5jeWJveC5vcHRpb24oIlRodW1icy5hdXRvU3RhcnQiKSYmdGhpcy5mYW5jeWJveC5DYXJvdXNlbC5QYW56b29tLmNvbnRlbnQuaGVpZ2h0Pj10aGlzLmZhbmN5Ym94Lm9wdGlvbigiVGh1bWJzLm1pblNjcmVlbkhlaWdodCIpJiZ0aGlzLmJ1aWxkKCl9b25DbG9zaW5nKCl7dGhpcy5DYXJvdXNlbCYmdGhpcy5DYXJvdXNlbC5QYW56b29tLmRldGFjaEV2ZW50cygpfW9uS2V5ZG93bih0LGUpe2U9PT10Lm9wdGlvbigiVGh1bWJzLmtleSIpJiZ0aGlzLnRvZ2dsZSgpfWJ1aWxkKCl7aWYodGhpcy4kY29udGFpbmVyKXJldHVybjtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NMaXN0LmFkZCgiZmFuY3lib3hfX3RodW1icyIpLHRoaXMuZmFuY3lib3guJGNhcm91c2VsLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQsdGhpcy5mYW5jeWJveC4kY2Fyb3VzZWwubmV4dFNpYmxpbmcpLHRoaXMuQ2Fyb3VzZWw9bmV3IHkodCxhKCEwLHtEb3RzOiExLE5hdmlnYXRpb246ITEsU3luYzp7ZnJpY3Rpb246MH0saW5maW5pdGU6ITEsY2VudGVyOiEwLGZpbGw6ITAsZHJhZ0ZyZWU6ITAsc2xpZGVzUGVyUGFnZToxLHByZWxvYWQ6MX0sdGhpcy5mYW5jeWJveC5vcHRpb24oIlRodW1icy5DYXJvdXNlbCIpLHtTeW5jOnt0YXJnZXQ6dGhpcy5mYW5jeWJveC5DYXJvdXNlbH0sc2xpZGVzOnRoaXMuZ2V0U2xpZGVzKCl9KSksdGhpcy5DYXJvdXNlbC5QYW56b29tLm9uKCJ3aGVlbCIsKCh0LGUpPT57ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZmFuY3lib3hbZS5kZWx0YVk8MD8icHJldiI6Im5leHQiXSgpfSkpLHRoaXMuJGNvbnRhaW5lcj10LHRoaXMuc3RhdGU9InZpc2libGUifWdldFNsaWRlcygpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGUgb2YgdGhpcy5mYW5jeWJveC5pdGVtcyl7Y29uc3QgaT1lLnRodW1iO2kmJnQucHVzaCh7aHRtbDp0aGlzLmZhbmN5Ym94Lm9wdGlvbigiVGh1bWJzLnRwbCIpLnJlcGxhY2UoL1x7XHtzcmNcfVx9L2dpLGkpLGN1c3RvbUNsYXNzOmBoYXMtdGh1bWIgaGFzLSR7ZS50eXBlfHwiaW1hZ2UifWB9KX1yZXR1cm4gdH10b2dnbGUoKXsidmlzaWJsZSI9PT10aGlzLnN0YXRlP3RoaXMuaGlkZSgpOiJoaWRkZW4iPT09dGhpcy5zdGF0ZT90aGlzLnNob3coKTp0aGlzLmJ1aWxkKCl9c2hvdygpeyJoaWRkZW4iPT09dGhpcy5zdGF0ZSYmKHRoaXMuJGNvbnRhaW5lci5zdHlsZS5kaXNwbGF5PSIiLHRoaXMuQ2Fyb3VzZWwuUGFuem9vbS5hdHRhY2hFdmVudHMoKSx0aGlzLnN0YXRlPSJ2aXNpYmxlIil9aGlkZSgpeyJ2aXNpYmxlIj09PXRoaXMuc3RhdGUmJih0aGlzLkNhcm91c2VsLlBhbnpvb20uZGV0YWNoRXZlbnRzKCksdGhpcy4kY29udGFpbmVyLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuc3RhdGU9ImhpZGRlbiIpfWNsZWFudXAoKXt0aGlzLkNhcm91c2VsJiYodGhpcy5DYXJvdXNlbC5kZXN0cm95KCksdGhpcy5DYXJvdXNlbD1udWxsKSx0aGlzLiRjb250YWluZXImJih0aGlzLiRjb250YWluZXIucmVtb3ZlKCksdGhpcy4kY29udGFpbmVyPW51bGwpLHRoaXMuc3RhdGU9ImluaXQifWF0dGFjaCgpe3RoaXMuZmFuY3lib3gub24odGhpcy5ldmVudHMpfWRldGFjaCgpe3RoaXMuZmFuY3lib3gub2ZmKHRoaXMuZXZlbnRzKSx0aGlzLmNsZWFudXAoKX19QS5kZWZhdWx0cz17bWluU2xpZGVDb3VudDoyLG1pblNjcmVlbkhlaWdodDo1MDAsYXV0b1N0YXJ0OiEwLGtleToidCIsQ2Fyb3VzZWw6e30sdHBsOic8ZGl2IGNsYXNzPSJmYW5jeWJveF9fdGh1bWIiIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOnVybChcJ3t7c3JjfX1cJykiPjwvZGl2Pid9O2NvbnN0IEU9KHQsZSk9Pntjb25zdCBpPW5ldyBVUkwodCkscz1uZXcgVVJMU2VhcmNoUGFyYW1zKGkuc2VhcmNoKTtsZXQgYT1uZXcgVVJMU2VhcmNoUGFyYW1zO2Zvcihjb25zdFt0LGldb2ZbLi4ucywuLi5PYmplY3QuZW50cmllcyhlKV0pInQiPT09dD9hLnNldCgic3RhcnQiLHBhcnNlSW50KGkpKTphLnNldCh0LGkpO2E9YS50b1N0cmluZygpO2xldCBuPXQubWF0Y2goLyN0PSgoLiopP1xkK3MpLyk7cmV0dXJuIG4mJihhKz1gI3Q9JHtuWzFdfWApLGF9LFQ9e3ZpZGVvOnthdXRvcGxheTohMCxyYXRpbzoxNi85fSx5b3V0dWJlOnthdXRvaGlkZToxLGZzOjEscmVsOjAsaGQ6MSx3bW9kZToidHJhbnNwYXJlbnQiLGVuYWJsZWpzYXBpOjEsaHRtbDU6MX0sdmltZW86e2hkOjEsc2hvd190aXRsZToxLHNob3dfYnlsaW5lOjEsc2hvd19wb3J0cmFpdDowLGZ1bGxzY3JlZW46MX0saHRtbDV2aWRlbzp7dHBsOic8dmlkZW8gY2xhc3M9ImZhbmN5Ym94X19odG1sNXZpZGVvIiBwbGF5c2lubGluZSBjb250cm9scyBjb250cm9sc0xpc3Q9Im5vZG93bmxvYWQiIHBvc3Rlcj0ie3twb3N0ZXJ9fSI+XG4gIDxzb3VyY2Ugc3JjPSJ7e3NyY319IiB0eXBlPSJ7e2Zvcm1hdH19IiAvPlNvcnJ5LCB5b3VyIGJyb3dzZXIgZG9lc25cJ3Qgc3VwcG9ydCBlbWJlZGRlZCB2aWRlb3MuPC92aWRlbz4nLGZvcm1hdDoiIn19O2NsYXNzIEx7Y29uc3RydWN0b3IodCl7dGhpcy5mYW5jeWJveD10O2Zvcihjb25zdCB0IG9mWyJvbkluaXQiLCJvblJlYWR5Iiwib25DcmVhdGVTbGlkZSIsIm9uUmVtb3ZlU2xpZGUiLCJvblNlbGVjdFNsaWRlIiwib25VbnNlbGVjdFNsaWRlIiwib25SZWZyZXNoIiwib25NZXNzYWdlIl0pdGhpc1t0XT10aGlzW3RdLmJpbmQodGhpcyk7dGhpcy5ldmVudHM9e2luaXQ6dGhpcy5vbkluaXQscmVhZHk6dGhpcy5vblJlYWR5LCJDYXJvdXNlbC5jcmVhdGVTbGlkZSI6dGhpcy5vbkNyZWF0ZVNsaWRlLCJDYXJvdXNlbC5yZW1vdmVTbGlkZSI6dGhpcy5vblJlbW92ZVNsaWRlLCJDYXJvdXNlbC5zZWxlY3RTbGlkZSI6dGhpcy5vblNlbGVjdFNsaWRlLCJDYXJvdXNlbC51bnNlbGVjdFNsaWRlIjp0aGlzLm9uVW5zZWxlY3RTbGlkZSwiQ2Fyb3VzZWwucmVmcmVzaCI6dGhpcy5vblJlZnJlc2h9fW9uSW5pdCgpe2Zvcihjb25zdCB0IG9mIHRoaXMuZmFuY3lib3guaXRlbXMpdGhpcy5wcm9jZXNzVHlwZSh0KX1wcm9jZXNzVHlwZSh0KXtpZih0Lmh0bWwpcmV0dXJuIHQuc3JjPXQuaHRtbCx0LnR5cGU9Imh0bWwiLHZvaWQgZGVsZXRlIHQuaHRtbDtjb25zdCBlPXQuc3JjfHwiIjtsZXQgaT10LnR5cGV8fHRoaXMuZmFuY3lib3gub3B0aW9ucy50eXBlLHM9bnVsbDtpZighZXx8InN0cmluZyI9PXR5cGVvZiBlKXtpZihzPWUubWF0Y2goLyg/OnlvdXR1YmVcLmNvbXx5b3V0dVwuYmV8eW91dHViZVwtbm9jb29raWVcLmNvbSlcLyg/OndhdGNoXD8oPzouKiYpP3Y9fHZcL3x1XC98ZW1iZWRcLz8pPyh2aWRlb3Nlcmllc1w/bGlzdD0oPzouKil8W1x3LV17MTF9fFw/bGlzdFR5cGU9KD86LiopJmxpc3Q9KD86LiopKSg/Oi4qKS9pKSl7Y29uc3QgYT1FKGUsdGhpcy5mYW5jeWJveC5vcHRpb24oIkh0bWwueW91dHViZSIpKSxuPWVuY29kZVVSSUNvbXBvbmVudChzWzFdKTt0LnZpZGVvSWQ9bix0LnNyYz1gaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvJHtufT8ke2F9YCx0LnRodW1iPXQudGh1bWJ8fGBodHRwczovL2kueXRpbWcuY29tL3ZpLyR7bn0vbXFkZWZhdWx0LmpwZ2AsdC52ZW5kb3I9InlvdXR1YmUiLGk9InZpZGVvIn1lbHNlIGlmKHM9ZS5tYXRjaCgvXi4rdmltZW8uY29tXC8oPzpcLyk/KFtcZF0rKSguKik/Lykpe2NvbnN0IGE9RShlLHRoaXMuZmFuY3lib3gub3B0aW9uKCJIdG1sLnZpbWVvIikpLG49ZW5jb2RlVVJJQ29tcG9uZW50KHNbMV0pO3QudmlkZW9JZD1uLHQuc3JjPWBodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vJHtufT8ke2F9YCx0LnZlbmRvcj0idmltZW8iLGk9InZpZGVvIn1lbHNlKHM9ZS5tYXRjaCgvKD86bWFwc1wuKT9nb29nbGVcLihbYS16XXsyLDN9KD86XC5bYS16XXsyfSk/KVwvKD86KD86KD86bWFwc1wvKD86cGxhY2VcLyg/Oi4qKVwvKT9cQCguKiksKFxkKy4/XGQrPyl6KSl8KD86XD9sbD0pKSguKik/L2kpKT8odC5zcmM9YC8vbWFwcy5nb29nbGUuJHtzWzFdfS8/bGw9JHsoc1syXT9zWzJdKyImej0iK01hdGguZmxvb3Ioc1szXSkrKHNbNF0/c1s0XS5yZXBsYWNlKC9eXC8vLCImIik6IiIpOnNbNF0rIiIpLnJlcGxhY2UoL1w/LywiJiIpfSZvdXRwdXQ9JHtzWzRdJiZzWzRdLmluZGV4T2YoImxheWVyPWMiKT4wPyJzdmVtYmVkIjoiZW1iZWQifWAsaT0ibWFwIik6KHM9ZS5tYXRjaCgvKD86bWFwc1wuKT9nb29nbGVcLihbYS16XXsyLDN9KD86XC5bYS16XXsyfSk/KVwvKD86bWFwc1wvc2VhcmNoXC8pKC4qKS9pKSkmJih0LnNyYz1gLy9tYXBzLmdvb2dsZS4ke3NbMV19L21hcHM/cT0ke3NbMl0ucmVwbGFjZSgicXVlcnk9IiwicT0iKS5yZXBsYWNlKCJhcGk9MSIsIiIpfSZvdXRwdXQ9ZW1iZWRgLGk9Im1hcCIpO2l8fCgiIyI9PT1lLmNoYXJBdCgwKT9pPSJpbmxpbmUiOihzPWUubWF0Y2goL1wuKG1wNHxtb3Z8b2d2fHdlYm0pKChcP3wjKS4qKT8kL2kpKT8oaT0iaHRtbDV2aWRlbyIsdC5mb3JtYXQ9dC5mb3JtYXR8fCJ2aWRlby8iKygib2d2Ij09PXNbMV0/Im9nZyI6c1sxXSkpOmUubWF0Y2goLyheZGF0YTppbWFnZVwvW2EtejAtOStcLz1dKiwpfChcLihqcChlfGd8ZWcpfGdpZnxwbmd8Ym1wfHdlYnB8c3ZnfGljbykoKFw/fCMpLiopPyQpL2kpP2k9ImltYWdlIjplLm1hdGNoKC9cLihwZGYpKChcP3wjKS4qKT8kL2kpJiYoaT0icGRmIikpLHQudHlwZT1pfHx0aGlzLmZhbmN5Ym94Lm9wdGlvbigiZGVmYXVsdFR5cGUiLCJpbWFnZSIpLCJodG1sNXZpZGVvIiE9PWkmJiJ2aWRlbyIhPT1pfHwodC52aWRlbz1hKHt9LHRoaXMuZmFuY3lib3gub3B0aW9uKCJIdG1sLnZpZGVvIiksdC52aWRlbyksdC5fd2lkdGgmJnQuX2hlaWdodD90LnJhdGlvPXBhcnNlRmxvYXQodC5fd2lkdGgpL3BhcnNlRmxvYXQodC5faGVpZ2h0KTp0LnJhdGlvPXQucmF0aW98fHQudmlkZW8ucmF0aW98fFQudmlkZW8ucmF0aW8pfX1vblJlYWR5KCl7dGhpcy5mYW5jeWJveC5DYXJvdXNlbC5zbGlkZXMuZm9yRWFjaCgodD0+e3QuJGVsJiYodGhpcy5zZXRDb250ZW50KHQpLHQuaW5kZXg9PT10aGlzLmZhbmN5Ym94LmdldFNsaWRlKCkuaW5kZXgmJnRoaXMucGxheVZpZGVvKHQpKX0pKX1vbkNyZWF0ZVNsaWRlKHQsZSxpKXsicmVhZHkiPT09dGhpcy5mYW5jeWJveC5zdGF0ZSYmdGhpcy5zZXRDb250ZW50KGkpfWxvYWRJbmxpbmVDb250ZW50KHQpe2xldCBlO2lmKHQuc3JjIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpZT10LnNyYztlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgdC5zcmMpe2NvbnN0IGk9dC5zcmMuc3BsaXQoIiMiLDIpLHM9Mj09PWkubGVuZ3RoJiYiIj09PWlbMF0/aVsxXTppWzBdO2U9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocyl9aWYoZSl7aWYoImNsb25lIj09PXQudHlwZXx8ZS4kcGxhY2VIb2xkZXIpe2U9ZS5jbG9uZU5vZGUoITApO2xldCBpPWUuZ2V0QXR0cmlidXRlKCJpZCIpO2k9aT9gJHtpfS0tY2xvbmVgOmBjbG9uZS0ke3RoaXMuZmFuY3lib3guaWR9LSR7dC5pbmRleH1gLGUuc2V0QXR0cmlidXRlKCJpZCIsaSl9ZWxzZXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NMaXN0LmFkZCgiZmFuY3lib3gtcGxhY2Vob2xkZXIiKSxlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQsZSksZS4kcGxhY2VIb2xkZXI9dH10aGlzLmZhbmN5Ym94LnNldENvbnRlbnQodCxlKX1lbHNlIHRoaXMuZmFuY3lib3guc2V0RXJyb3IodCwie3tFTEVNRU5UX05PVF9GT1VORH19Iil9bG9hZEFqYXhDb250ZW50KHQpe2NvbnN0IGU9dGhpcy5mYW5jeWJveCxpPW5ldyBYTUxIdHRwUmVxdWVzdDtlLnNob3dMb2FkaW5nKHQpLGkub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aS5yZWFkeVN0YXRlPT09WE1MSHR0cFJlcXVlc3QuRE9ORSYmInJlYWR5Ij09PWUuc3RhdGUmJihlLmhpZGVMb2FkaW5nKHQpLDIwMD09PWkuc3RhdHVzP2Uuc2V0Q29udGVudCh0LGkucmVzcG9uc2VUZXh0KTplLnNldEVycm9yKHQsNDA0PT09aS5zdGF0dXM/Int7QUpBWF9OT1RfRk9VTkR9fSI6Int7QUpBWF9GT1JCSURERU59fSIpKX07Y29uc3Qgcz10LmFqYXh8fG51bGw7aS5vcGVuKHM/IlBPU1QiOiJHRVQiLHQuc3JjKSxpLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpLGkuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBSZXF1ZXN0IiksaS5zZW5kKHMpLHQueGhyPWl9bG9hZElmcmFtZUNvbnRlbnQodCl7Y29uc3QgZT10aGlzLmZhbmN5Ym94LGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7aWYoaS5jbGFzc05hbWU9ImZhbmN5Ym94X19pZnJhbWUiLGkuc2V0QXR0cmlidXRlKCJpZCIsYGZhbmN5Ym94X19pZnJhbWVfJHtlLmlkfV8ke3QuaW5kZXh9YCksaS5zZXRBdHRyaWJ1dGUoImFsbG93IiwiYXV0b3BsYXk7IGZ1bGxzY3JlZW4iKSxpLnNldEF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwiYXV0byIpLHQuJGlmcmFtZT1pLCJpZnJhbWUiIT09dC50eXBlfHwhMT09PXQucHJlbG9hZClyZXR1cm4gaS5zZXRBdHRyaWJ1dGUoInNyYyIsdC5zcmMpLHRoaXMuZmFuY3lib3guc2V0Q29udGVudCh0LGkpLHZvaWQgdGhpcy5yZXNpemVJZnJhbWUodCk7ZS5zaG93TG9hZGluZyh0KTtjb25zdCBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Muc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLmZhbmN5Ym94LnNldENvbnRlbnQodCxzKSxzLmFwcGVuZENoaWxkKGkpLGkub25lcnJvcj0oKT0+e2Uuc2V0RXJyb3IodCwie3tJRlJBTUVfRVJST1J9fSIpfSxpLm9ubG9hZD0oKT0+e2UuaGlkZUxvYWRpbmcodCk7bGV0IHM9ITE7aS5pc1JlYWR5fHwoaS5pc1JlYWR5PSEwLHM9ITApLGkuc3JjLmxlbmd0aCYmKGkucGFyZW50Tm9kZS5zdHlsZS52aXNpYmlsaXR5PSIiLHRoaXMucmVzaXplSWZyYW1lKHQpLHMmJmUucmV2ZWFsQ29udGVudCh0KSl9LGkuc2V0QXR0cmlidXRlKCJzcmMiLHQuc3JjKX1zZXRBc3BlY3RSYXRpbyh0KXtjb25zdCBlPXQuJGNvbnRlbnQsaT10LnJhdGlvO2lmKCFlKXJldHVybjtsZXQgcz10Ll93aWR0aCxhPXQuX2hlaWdodDtpZihpfHxzJiZhKXtPYmplY3QuYXNzaWduKGUuc3R5bGUse3dpZHRoOnMmJmE/IjEwMCUiOiIiLGhlaWdodDpzJiZhPyIxMDAlIjoiIixtYXhXaWR0aDoiIixtYXhIZWlnaHQ6IiJ9KTtsZXQgdD1lLm9mZnNldFdpZHRoLG49ZS5vZmZzZXRIZWlnaHQ7aWYocz1zfHx0LGE9YXx8bixzPnR8fGE+bil7bGV0IGU9TWF0aC5taW4odC9zLG4vYSk7cyo9ZSxhKj1lfU1hdGguYWJzKHMvYS1pKT4uMDEmJihpPHMvYT9zPWEqaTphPXMvaSksT2JqZWN0LmFzc2lnbihlLnN0eWxlLHt3aWR0aDpgJHtzfXB4YCxoZWlnaHQ6YCR7YX1weGB9KX19cmVzaXplSWZyYW1lKHQpe2NvbnN0IGU9dC4kaWZyYW1lO2lmKCFlKXJldHVybjtsZXQgaT10Ll93aWR0aHx8MCxzPXQuX2hlaWdodHx8MDtpJiZzJiYodC5hdXRvU2l6ZT0hMSk7Y29uc3QgYT1lLnBhcmVudE5vZGUsbj1hJiZhLnN0eWxlO2lmKCExIT09dC5wcmVsb2FkJiYhMSE9PXQuYXV0b1NpemUmJm4pdHJ5e2NvbnN0IHQ9d2luZG93LmdldENvbXB1dGVkU3R5bGUoYSkscj1wYXJzZUZsb2F0KHQucGFkZGluZ0xlZnQpK3BhcnNlRmxvYXQodC5wYWRkaW5nUmlnaHQpLG89cGFyc2VGbG9hdCh0LnBhZGRpbmdUb3ApK3BhcnNlRmxvYXQodC5wYWRkaW5nQm90dG9tKSxsPWUuY29udGVudFdpbmRvdy5kb2N1bWVudCxjPWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXSxoPWwuYm9keTtuLndpZHRoPSIiLGguc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsaT1pfHxjLnNjcm9sbFdpZHRoK3Isbi53aWR0aD1gJHtpfXB4YCxoLnN0eWxlLm92ZXJmbG93PSIiLG4uZmxleD0iMCAwIGF1dG8iLG4uaGVpZ2h0PWAke2guc2Nyb2xsSGVpZ2h0fXB4YCxzPWMuc2Nyb2xsSGVpZ2h0K299Y2F0Y2godCl7fWlmKGl8fHMpe2NvbnN0IHQ9e2ZsZXg6IjAgMSBhdXRvIn07aSYmKHQud2lkdGg9YCR7aX1weGApLHMmJih0LmhlaWdodD1gJHtzfXB4YCksT2JqZWN0LmFzc2lnbihuLHQpfX1vblJlZnJlc2godCxlKXtlLnNsaWRlcy5mb3JFYWNoKCh0PT57dC4kZWwmJih0LiRpZnJhbWUmJnRoaXMucmVzaXplSWZyYW1lKHQpLHQucmF0aW8mJnRoaXMuc2V0QXNwZWN0UmF0aW8odCkpfSkpfXNldENvbnRlbnQodCl7aWYodCYmIXQuaXNEb20pe3N3aXRjaCh0LnR5cGUpe2Nhc2UiaHRtbCI6dGhpcy5mYW5jeWJveC5zZXRDb250ZW50KHQsdC5zcmMpO2JyZWFrO2Nhc2UiaHRtbDV2aWRlbyI6dGhpcy5mYW5jeWJveC5zZXRDb250ZW50KHQsdGhpcy5mYW5jeWJveC5vcHRpb24oIkh0bWwuaHRtbDV2aWRlby50cGwiKS5yZXBsYWNlKC9ce1x7c3JjXH1cfS9naSx0LnNyYykucmVwbGFjZSgie3tmb3JtYXR9fSIsdC5mb3JtYXR8fHQuaHRtbDV2aWRlbyYmdC5odG1sNXZpZGVvLmZvcm1hdHx8IiIpLnJlcGxhY2UoInt7cG9zdGVyfX0iLHQucG9zdGVyfHx0LnRodW1ifHwiIikpO2JyZWFrO2Nhc2UiaW5saW5lIjpjYXNlImNsb25lIjp0aGlzLmxvYWRJbmxpbmVDb250ZW50KHQpO2JyZWFrO2Nhc2UiYWpheCI6dGhpcy5sb2FkQWpheENvbnRlbnQodCk7YnJlYWs7Y2FzZSJwZGYiOmNhc2UidmlkZW8iOmNhc2UibWFwIjp0LnByZWxvYWQ9ITE7Y2FzZSJpZnJhbWUiOnRoaXMubG9hZElmcmFtZUNvbnRlbnQodCl9dC5yYXRpbyYmdGhpcy5zZXRBc3BlY3RSYXRpbyh0KX19b25TZWxlY3RTbGlkZSh0LGUsaSl7InJlYWR5Ij09PXQuc3RhdGUmJnRoaXMucGxheVZpZGVvKGkpfXBsYXlWaWRlbyh0KXtpZigiaHRtbDV2aWRlbyI9PT10LnR5cGUmJnQudmlkZW8uYXV0b3BsYXkpdHJ5e2NvbnN0IGU9dC4kZWwucXVlcnlTZWxlY3RvcigidmlkZW8iKTtpZihlKXtjb25zdCB0PWUucGxheSgpO3ZvaWQgMCE9PXQmJnQudGhlbigoKCk9Pnt9KSkuY2F0Y2goKHQ9PntlLm11dGVkPSEwLGUucGxheSgpfSkpfX1jYXRjaCh0KXt9aWYoInZpZGVvIiE9PXQudHlwZXx8IXQuJGlmcmFtZXx8IXQuJGlmcmFtZS5jb250ZW50V2luZG93KXJldHVybjtjb25zdCBlPSgpPT57aWYoImRvbmUiPT09dC5zdGF0ZSYmdC4kaWZyYW1lJiZ0LiRpZnJhbWUuY29udGVudFdpbmRvdyl7bGV0IGU7aWYodC4kaWZyYW1lLmlzUmVhZHkpcmV0dXJuIHQudmlkZW8mJnQudmlkZW8uYXV0b3BsYXkmJihlPSJ5b3V0dWJlIj09dC52ZW5kb3I/e2V2ZW50OiJjb21tYW5kIixmdW5jOiJwbGF5VmlkZW8ifTp7bWV0aG9kOiJwbGF5Iix2YWx1ZToidHJ1ZSJ9KSx2b2lkKGUmJnQuJGlmcmFtZS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KGUpLCIqIikpOyJ5b3V0dWJlIj09PXQudmVuZG9yJiYoZT17ZXZlbnQ6Imxpc3RlbmluZyIsaWQ6dC4kaWZyYW1lLmdldEF0dHJpYnV0ZSgiaWQiKX0sdC4kaWZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoZSksIioiKSl9dC5wb2xsZXI9c2V0VGltZW91dChlLDI1MCl9O2UoKX1vblVuc2VsZWN0U2xpZGUodCxlLGkpe2lmKCJodG1sNXZpZGVvIj09PWkudHlwZSl7dHJ5e2kuJGVsLnF1ZXJ5U2VsZWN0b3IoInZpZGVvIikucGF1c2UoKX1jYXRjaCh0KXt9cmV0dXJufWxldCBzPSExOyJ2aW1lbyI9PWkudmVuZG9yP3M9e21ldGhvZDoicGF1c2UiLHZhbHVlOiJ0cnVlIn06InlvdXR1YmUiPT09aS52ZW5kb3ImJihzPXtldmVudDoiY29tbWFuZCIsZnVuYzoicGF1c2VWaWRlbyJ9KSxzJiZpLiRpZnJhbWUmJmkuJGlmcmFtZS5jb250ZW50V2luZG93JiZpLiRpZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeShzKSwiKiIpLGNsZWFyVGltZW91dChpLnBvbGxlcil9b25SZW1vdmVTbGlkZSh0LGUsaSl7aS54aHImJihpLnhoci5hYm9ydCgpLGkueGhyPW51bGwpLGkuJGlmcmFtZSYmKGkuJGlmcmFtZS5vbmxvYWQ9aS4kaWZyYW1lLm9uZXJyb3I9bnVsbCxpLiRpZnJhbWUuc3JjPSIvL2Fib3V0OmJsYW5rIixpLiRpZnJhbWU9bnVsbCk7Y29uc3Qgcz1pLiRjb250ZW50OyJpbmxpbmUiPT09aS50eXBlJiZzJiYocy5jbGFzc0xpc3QucmVtb3ZlKCJmYW5jeWJveF9fY29udGVudCIpLCJub25lIiE9PXMuc3R5bGUuZGlzcGxheSYmKHMuc3R5bGUuZGlzcGxheT0ibm9uZSIpKSxpLiRjbG9zZUJ1dHRvbiYmKGkuJGNsb3NlQnV0dG9uLnJlbW92ZSgpLGkuJGNsb3NlQnV0dG9uPW51bGwpO2NvbnN0IGE9cyYmcy4kcGxhY2VIb2xkZXI7YSYmKGEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocyxhKSxhLnJlbW92ZSgpLHMuJHBsYWNlSG9sZGVyPW51bGwpfW9uTWVzc2FnZSh0KXt0cnl7bGV0IGU9SlNPTi5wYXJzZSh0LmRhdGEpO2lmKCJodHRwczovL3BsYXllci52aW1lby5jb20iPT09dC5vcmlnaW4pe2lmKCJyZWFkeSI9PT1lLmV2ZW50KWZvcihsZXQgZSBvZiBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJmYW5jeWJveF9faWZyYW1lIikpZS5jb250ZW50V2luZG93PT09dC5zb3VyY2UmJihlLmlzUmVhZHk9MSl9ZWxzZSJodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbSI9PT10Lm9yaWdpbiYmIm9uUmVhZHkiPT09ZS5ldmVudCYmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUuaWQpLmlzUmVhZHk9MSl9Y2F0Y2godCl7fX1hdHRhY2goKXt0aGlzLmZhbmN5Ym94Lm9uKHRoaXMuZXZlbnRzKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5vbk1lc3NhZ2UsITEpfWRldGFjaCgpe3RoaXMuZmFuY3lib3gub2ZmKHRoaXMuZXZlbnRzKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5vbk1lc3NhZ2UsITEpfX1MLmRlZmF1bHRzPVQ7Y2xhc3MgUHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmZhbmN5Ym94PXQ7Zm9yKGNvbnN0IHQgb2ZbIm9uUmVhZHkiLCJvbkNsb3NpbmciLCJvbkRvbmUiLCJvblBhZ2VDaGFuZ2UiLCJvbkNyZWF0ZVNsaWRlIiwib25SZW1vdmVTbGlkZSIsIm9uSW1hZ2VTdGF0dXNDaGFuZ2UiXSl0aGlzW3RdPXRoaXNbdF0uYmluZCh0aGlzKTt0aGlzLmV2ZW50cz17cmVhZHk6dGhpcy5vblJlYWR5LGNsb3Npbmc6dGhpcy5vbkNsb3NpbmcsZG9uZTp0aGlzLm9uRG9uZSwiQ2Fyb3VzZWwuY2hhbmdlIjp0aGlzLm9uUGFnZUNoYW5nZSwiQ2Fyb3VzZWwuY3JlYXRlU2xpZGUiOnRoaXMub25DcmVhdGVTbGlkZSwiQ2Fyb3VzZWwucmVtb3ZlU2xpZGUiOnRoaXMub25SZW1vdmVTbGlkZX19b25SZWFkeSgpe3RoaXMuZmFuY3lib3guQ2Fyb3VzZWwuc2xpZGVzLmZvckVhY2goKHQ9Pnt0LiRlbCYmdGhpcy5zZXRDb250ZW50KHQpfSkpfW9uRG9uZSh0LGUpe3RoaXMuaGFuZGxlQ3Vyc29yKGUpfW9uQ2xvc2luZyh0KXtjbGVhclRpbWVvdXQodGhpcy5jbGlja1RpbWVyKSx0aGlzLmNsaWNrVGltZXI9bnVsbCx0LkNhcm91c2VsLnNsaWRlcy5mb3JFYWNoKCh0PT57dC4kaW1hZ2UmJih0LnN0YXRlPSJkZXN0cm95IiksdC5QYW56b29tJiZ0LlBhbnpvb20uZGV0YWNoRXZlbnRzKCl9KSksImNsb3NpbmciPT09dGhpcy5mYW5jeWJveC5zdGF0ZSYmdGhpcy5jYW5ab29tKHQuZ2V0U2xpZGUoKSkmJnRoaXMuem9vbU91dCgpfW9uQ3JlYXRlU2xpZGUodCxlLGkpeyJyZWFkeSI9PT10aGlzLmZhbmN5Ym94LnN0YXRlJiZ0aGlzLnNldENvbnRlbnQoaSl9b25SZW1vdmVTbGlkZSh0LGUsaSl7aS4kaW1hZ2UmJihpLiRlbC5jbGFzc0xpc3QucmVtb3ZlKHQub3B0aW9uKCJJbWFnZS5jYW5ab29tSW5DbGFzcyIpKSxpLiRpbWFnZS5yZW1vdmUoKSxpLiRpbWFnZT1udWxsKSxpLlBhbnpvb20mJihpLlBhbnpvb20uZGVzdHJveSgpLGkuUGFuem9vbT1udWxsKSxpLiRlbCYmaS4kZWwuZGF0YXNldCYmZGVsZXRlIGkuJGVsLmRhdGFzZXQuaW1hZ2VGaXR9c2V0Q29udGVudCh0KXtpZih0LmlzRG9tfHx0Lmh0bWx8fHQudHlwZSYmImltYWdlIiE9PXQudHlwZSlyZXR1cm47aWYodC4kaW1hZ2UpcmV0dXJuO3QudHlwZT0iaW1hZ2UiLHQuc3RhdGU9ImxvYWRpbmciO2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7aS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoZT0+e2Uuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5vbkltYWdlU3RhdHVzQ2hhbmdlKHQpfSkpLGkuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgoKT0+e3RoaXMub25JbWFnZVN0YXR1c0NoYW5nZSh0KX0pKSxpLnNyYz10LnNyYyxpLmFsdD0iIixpLmRyYWdnYWJsZT0hMSxpLmNsYXNzTGlzdC5hZGQoImZhbmN5Ym94X19pbWFnZSIpLHQuc3Jjc2V0JiZpLnNldEF0dHJpYnV0ZSgic3Jjc2V0Iix0LnNyY3NldCksdC5zaXplcyYmaS5zZXRBdHRyaWJ1dGUoInNpemVzIix0LnNpemVzKSx0LiRpbWFnZT1pO2NvbnN0IHM9dGhpcy5mYW5jeWJveC5vcHRpb24oIkltYWdlLndyYXAiKTtpZihzKXtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuY2xhc3NMaXN0LmFkZCgic3RyaW5nIj09dHlwZW9mIHM/czoiZmFuY3lib3hfX2ltYWdlLXdyYXAiKSxhLmFwcGVuZENoaWxkKGkpLGUuYXBwZW5kQ2hpbGQoYSksdC4kd3JhcD1hfWVsc2UgZS5hcHBlbmRDaGlsZChpKTt0LiRlbC5kYXRhc2V0LmltYWdlRml0PXRoaXMuZmFuY3lib3gub3B0aW9uKCJJbWFnZS5maXQiKSx0aGlzLmZhbmN5Ym94LnNldENvbnRlbnQodCxlKSxpLmNvbXBsZXRlfHxpLmVycm9yP3RoaXMub25JbWFnZVN0YXR1c0NoYW5nZSh0KTp0aGlzLmZhbmN5Ym94LnNob3dMb2FkaW5nKHQpfW9uSW1hZ2VTdGF0dXNDaGFuZ2UodCl7Y29uc3QgZT10LiRpbWFnZTtlJiYibG9hZGluZyI9PT10LnN0YXRlJiYoZS5jb21wbGV0ZSYmZS5uYXR1cmFsV2lkdGgmJmUubmF0dXJhbEhlaWdodD8odGhpcy5mYW5jeWJveC5oaWRlTG9hZGluZyh0KSwiY29udGFpbiI9PT10aGlzLmZhbmN5Ym94Lm9wdGlvbigiSW1hZ2UuZml0IikmJnRoaXMuaW5pdFNsaWRlUGFuem9vbSh0KSx0LiRlbC5hZGRFdmVudExpc3RlbmVyKCJ3aGVlbCIsKGU9PnRoaXMub25XaGVlbCh0LGUpKSx7cGFzc2l2ZTohMX0pLHQuJGNvbnRlbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChlPT50aGlzLm9uQ2xpY2sodCxlKSkse3Bhc3NpdmU6ITF9KSx0aGlzLnJldmVhbENvbnRlbnQodCkpOnRoaXMuZmFuY3lib3guc2V0RXJyb3IodCwie3tJTUFHRV9FUlJPUn19IikpfWluaXRTbGlkZVBhbnpvb20odCl7dC5QYW56b29tfHwodC5QYW56b29tPW5ldyBnKHQuJGVsLGEoITAsdGhpcy5mYW5jeWJveC5vcHRpb24oIkltYWdlLlBhbnpvb20iLHt9KSx7dmlld3BvcnQ6dC4kd3JhcCxjb250ZW50OnQuJGltYWdlLHdpZHRoOnQuX3dpZHRoLGhlaWdodDp0Ll9oZWlnaHQsd3JhcElubmVyOiExLHRleHRTZWxlY3Rpb246ITAsdG91Y2g6dGhpcy5mYW5jeWJveC5vcHRpb24oIkltYWdlLnRvdWNoIikscGFuT25seVpvb21lZDohMCxjbGljazohMSx3aGVlbDohMX0pKSx0LlBhbnpvb20ub24oInN0YXJ0QW5pbWF0aW9uIiwoKCk9Pnt0aGlzLmZhbmN5Ym94LnRyaWdnZXIoIkltYWdlLnN0YXJ0QW5pbWF0aW9uIix0KX0pKSx0LlBhbnpvb20ub24oImVuZEFuaW1hdGlvbiIsKCgpPT57Inpvb21JbiI9PT10LnN0YXRlJiZ0aGlzLmZhbmN5Ym94LmRvbmUodCksdGhpcy5oYW5kbGVDdXJzb3IodCksdGhpcy5mYW5jeWJveC50cmlnZ2VyKCJJbWFnZS5lbmRBbmltYXRpb24iLHQpfSkpLHQuUGFuem9vbS5vbigiYWZ0ZXJVcGRhdGUiLCgoKT0+e3RoaXMuaGFuZGxlQ3Vyc29yKHQpLHRoaXMuZmFuY3lib3gudHJpZ2dlcigiSW1hZ2UuYWZ0ZXJVcGRhdGUiLHQpfSkpKX1yZXZlYWxDb250ZW50KHQpe251bGw9PT10aGlzLmZhbmN5Ym94LkNhcm91c2VsLnByZXZQYWdlJiZ0LmluZGV4PT09dGhpcy5mYW5jeWJveC5vcHRpb25zLnN0YXJ0SW5kZXgmJnRoaXMuY2FuWm9vbSh0KT90aGlzLnpvb21JbigpOnRoaXMuZmFuY3lib3gucmV2ZWFsQ29udGVudCh0KX1nZXRab29tSW5mbyh0KXtjb25zdCBlPXQuJHRodW1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9ZS53aWR0aCxzPWUuaGVpZ2h0LGE9dC4kY29udGVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPWEud2lkdGgscj1hLmhlaWdodCxvPWEudG9wLWUudG9wLGw9YS5sZWZ0LWUubGVmdDtsZXQgYz10aGlzLmZhbmN5Ym94Lm9wdGlvbigiSW1hZ2Uuem9vbU9wYWNpdHkiKTtyZXR1cm4iYXV0byI9PT1jJiYoYz1NYXRoLmFicyhpL3Mtbi9yKT4uMSkse3RvcDpvLGxlZnQ6bCxzY2FsZTpuJiZpP2kvbjoxLG9wYWNpdHk6Y319Y2FuWm9vbSh0KXtjb25zdCBlPXRoaXMuZmFuY3lib3gsaT1lLiRjb250YWluZXI7aWYod2luZG93LnZpc3VhbFZpZXdwb3J0JiYxIT09d2luZG93LnZpc3VhbFZpZXdwb3J0LnNjYWxlKXJldHVybiExO2lmKHQuUGFuem9vbSYmIXQuUGFuem9vbS5jb250ZW50LndpZHRoKXJldHVybiExO2lmKCFlLm9wdGlvbigiSW1hZ2Uuem9vbSIpfHwiY29udGFpbiIhPT1lLm9wdGlvbigiSW1hZ2UuZml0IikpcmV0dXJuITE7Y29uc3Qgcz10LiR0aHVtYjtpZighc3x8ImxvYWRpbmciPT09dC5zdGF0ZSlyZXR1cm4hMTtpLmNsYXNzTGlzdC5hZGQoImZhbmN5Ym94X19uby1jbGljayIpO2NvbnN0IGE9cy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtsZXQgbjtpZih0aGlzLmZhbmN5Ym94Lm9wdGlvbigiSW1hZ2UuaWdub3JlQ292ZXJlZFRodW1ibmFpbCIpKXtjb25zdCB0PWRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoYS5sZWZ0KzEsYS50b3ArMSk9PT1zLGU9ZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChhLnJpZ2h0LTEsYS5ib3R0b20tMSk9PT1zO249dCYmZX1lbHNlIG49ZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChhLmxlZnQrLjUqYS53aWR0aCxhLnRvcCsuNSphLmhlaWdodCk9PT1zO3JldHVybiBpLmNsYXNzTGlzdC5yZW1vdmUoImZhbmN5Ym94X19uby1jbGljayIpLG59em9vbUluKCl7Y29uc3QgdD10aGlzLmZhbmN5Ym94LGU9dC5nZXRTbGlkZSgpLGk9ZS5QYW56b29tLHt0b3A6cyxsZWZ0OmEsc2NhbGU6bixvcGFjaXR5OnJ9PXRoaXMuZ2V0Wm9vbUluZm8oZSk7dC50cmlnZ2VyKCJyZXZlYWwiLGUpLGkucGFuVG8oe3g6LTEqYSx5Oi0xKnMsc2NhbGU6bixmcmljdGlvbjowLGlnbm9yZUJvdW5kczohMH0pLGUuJGNvbnRlbnQuc3R5bGUudmlzaWJpbGl0eT0iIixlLnN0YXRlPSJ6b29tSW4iLCEwPT09ciYmaS5vbigiYWZ0ZXJUcmFuc2Zvcm0iLCh0PT57Inpvb21JbiIhPT1lLnN0YXRlJiYiem9vbU91dCIhPT1lLnN0YXRlfHwodC4kY29udGVudC5zdHlsZS5vcGFjaXR5PU1hdGgubWluKDEsMS0oMS10LmNvbnRlbnQuc2NhbGUpLygxLW4pKSl9KSksaS5wYW5Ubyh7eDowLHk6MCxzY2FsZToxLGZyaWN0aW9uOnRoaXMuZmFuY3lib3gub3B0aW9uKCJJbWFnZS56b29tRnJpY3Rpb24iKX0pfXpvb21PdXQoKXtjb25zdCB0PXRoaXMuZmFuY3lib3gsZT10LmdldFNsaWRlKCksaT1lLlBhbnpvb207aWYoIWkpcmV0dXJuO2Uuc3RhdGU9Inpvb21PdXQiLHQuc3RhdGU9ImN1c3RvbUNsb3NpbmciLGUuJGNhcHRpb24mJihlLiRjYXB0aW9uLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIpO2xldCBzPXRoaXMuZmFuY3lib3gub3B0aW9uKCJJbWFnZS56b29tRnJpY3Rpb24iKTtjb25zdCBhPXQ9Pntjb25zdHt0b3A6YSxsZWZ0Om4sc2NhbGU6cixvcGFjaXR5Om99PXRoaXMuZ2V0Wm9vbUluZm8oZSk7dHx8b3x8KHMqPS44MiksaS5wYW5Ubyh7eDotMSpuLHk6LTEqYSxzY2FsZTpyLGZyaWN0aW9uOnMsaWdub3JlQm91bmRzOiEwfSkscyo9Ljk4fTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixhKSxpLm9uY2UoImVuZEFuaW1hdGlvbiIsKCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsYSksdC5kZXN0cm95KCl9KSksYSgpfWhhbmRsZUN1cnNvcih0KXtpZigiaW1hZ2UiIT09dC50eXBlfHwhdC4kZWwpcmV0dXJuO2NvbnN0IGU9dC5QYW56b29tLGk9dGhpcy5mYW5jeWJveC5vcHRpb24oIkltYWdlLmNsaWNrIiwhMSx0KSxzPXRoaXMuZmFuY3lib3gub3B0aW9uKCJJbWFnZS50b3VjaCIpLGE9dC4kZWwuY2xhc3NMaXN0LG49dGhpcy5mYW5jeWJveC5vcHRpb24oIkltYWdlLmNhblpvb21JbkNsYXNzIikscj10aGlzLmZhbmN5Ym94Lm9wdGlvbigiSW1hZ2UuY2FuWm9vbU91dENsYXNzIik7YS5yZW1vdmUociksYS5yZW1vdmUobiksZSYmInRvZ2dsZVpvb20iPT09aT9lJiYxPT09ZS5jb250ZW50LnNjYWxlJiZlLm9wdGlvbigibWF4U2NhbGUiKS1lLmNvbnRlbnQuc2NhbGU+LjAxP2EuYWRkKG4pOmUuY29udGVudC5zY2FsZT4xJiYhcyYmYS5hZGQocik6ImNsb3NlIj09PWkmJmEuYWRkKHIpfW9uV2hlZWwodCxlKXtpZigicmVhZHkiPT09dGhpcy5mYW5jeWJveC5zdGF0ZSYmITEhPT10aGlzLmZhbmN5Ym94LnRyaWdnZXIoIkltYWdlLndoZWVsIixlKSlzd2l0Y2godGhpcy5mYW5jeWJveC5vcHRpb24oIkltYWdlLndoZWVsIikpe2Nhc2Uiem9vbSI6ImRvbmUiPT09dC5zdGF0ZSYmdC5QYW56b29tJiZ0LlBhbnpvb20uem9vbVdpdGhXaGVlbChlKTticmVhaztjYXNlImNsb3NlIjp0aGlzLmZhbmN5Ym94LmNsb3NlKCk7YnJlYWs7Y2FzZSJzbGlkZSI6dGhpcy5mYW5jeWJveFtlLmRlbHRhWTwwPyJwcmV2IjoibmV4dCJdKCl9fW9uQ2xpY2sodCxlKXtpZigicmVhZHkiIT09dGhpcy5mYW5jeWJveC5zdGF0ZSlyZXR1cm47Y29uc3QgaT10LlBhbnpvb207aWYoaSYmKGkuZHJhZ1Bvc2l0aW9uLm1pZFBvaW50fHwwIT09aS5kcmFnT2Zmc2V0Lnh8fDAhPT1pLmRyYWdPZmZzZXQueXx8MSE9PWkuZHJhZ09mZnNldC5zY2FsZSkpcmV0dXJuO2lmKHRoaXMuZmFuY3lib3guQ2Fyb3VzZWwuUGFuem9vbS5sb2NrQXhpcylyZXR1cm4hMTtjb25zdCBzPWk9Pntzd2l0Y2goaSl7Y2FzZSJ0b2dnbGVab29tIjplLnN0b3BQcm9wYWdhdGlvbigpLHQuUGFuem9vbSYmdC5QYW56b29tLnpvb21XaXRoQ2xpY2soZSk7YnJlYWs7Y2FzZSJjbG9zZSI6dGhpcy5mYW5jeWJveC5jbG9zZSgpO2JyZWFrO2Nhc2UibmV4dCI6ZS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmZhbmN5Ym94Lm5leHQoKX19LGE9dGhpcy5mYW5jeWJveC5vcHRpb24oIkltYWdlLmNsaWNrIiksbj10aGlzLmZhbmN5Ym94Lm9wdGlvbigiSW1hZ2UuZG91YmxlQ2xpY2siKTtuP3RoaXMuY2xpY2tUaW1lcj8oY2xlYXJUaW1lb3V0KHRoaXMuY2xpY2tUaW1lciksdGhpcy5jbGlja1RpbWVyPW51bGwscyhuKSk6dGhpcy5jbGlja1RpbWVyPXNldFRpbWVvdXQoKCgpPT57dGhpcy5jbGlja1RpbWVyPW51bGwscyhhKX0pLDMwMCk6cyhhKX1vblBhZ2VDaGFuZ2UodCxlKXtjb25zdCBpPXQuZ2V0U2xpZGUoKTtlLnNsaWRlcy5mb3JFYWNoKCh0PT57dC5QYW56b29tJiYiZG9uZSI9PT10LnN0YXRlJiZ0LmluZGV4IT09aS5pbmRleCYmdC5QYW56b29tLnBhblRvKHt4OjAseTowLHNjYWxlOjEsZnJpY3Rpb246Ljh9KX0pKX1hdHRhY2goKXt0aGlzLmZhbmN5Ym94Lm9uKHRoaXMuZXZlbnRzKX1kZXRhY2goKXt0aGlzLmZhbmN5Ym94Lm9mZih0aGlzLmV2ZW50cyl9fVAuZGVmYXVsdHM9e2Nhblpvb21JbkNsYXNzOiJjYW4tem9vbV9pbiIsY2FuWm9vbU91dENsYXNzOiJjYW4tem9vbV9vdXQiLHpvb206ITAsem9vbU9wYWNpdHk6ImF1dG8iLHpvb21GcmljdGlvbjouODIsaWdub3JlQ292ZXJlZFRodW1ibmFpbDohMSx0b3VjaDohMCxjbGljazoidG9nZ2xlWm9vbSIsZG91YmxlQ2xpY2s6bnVsbCx3aGVlbDoiem9vbSIsZml0OiJjb250YWluIix3cmFwOiExLFBhbnpvb206e3JhdGlvOjF9fTtjbGFzcyBNe2NvbnN0cnVjdG9yKHQpe3RoaXMuZmFuY3lib3g9dDtmb3IoY29uc3QgdCBvZlsib25DaGFuZ2UiLCJvbkNsb3NpbmciXSl0aGlzW3RdPXRoaXNbdF0uYmluZCh0aGlzKTt0aGlzLmV2ZW50cz17aW5pdENhcm91c2VsOnRoaXMub25DaGFuZ2UsIkNhcm91c2VsLmNoYW5nZSI6dGhpcy5vbkNoYW5nZSxjbG9zaW5nOnRoaXMub25DbG9zaW5nfSx0aGlzLmhhc0NyZWF0ZWRIaXN0b3J5PSExLHRoaXMub3JpZ0hhc2g9IiIsdGhpcy50aW1lcj1udWxsfW9uQ2hhbmdlKHQpe2NvbnN0IGU9dC5DYXJvdXNlbDt0aGlzLnRpbWVyJiZjbGVhclRpbWVvdXQodGhpcy50aW1lcik7Y29uc3QgaT1udWxsPT09ZS5wcmV2UGFnZSxzPXQuZ2V0U2xpZGUoKSxhPW5ldyBVUkwoZG9jdW1lbnQuVVJMKS5oYXNoO2xldCBuPSExO2lmKHMuc2x1ZyluPSIjIitzLnNsdWc7ZWxzZXtjb25zdCBpPXMuJHRyaWdnZXImJnMuJHRyaWdnZXIuZGF0YXNldCxhPXQub3B0aW9uKCJzbHVnIil8fGkmJmkuZmFuY3lib3g7YSYmYS5sZW5ndGgmJiJ0cnVlIiE9PWEmJihuPSIjIithKyhlLnNsaWRlcy5sZW5ndGg+MT8iLSIrKHMuaW5kZXgrMSk6IiIpKX1pJiYodGhpcy5vcmlnSGFzaD1hIT09bj9hOiIiKSxuJiZhIT09biYmKHRoaXMudGltZXI9c2V0VGltZW91dCgoKCk9Pnt0cnl7d2luZG93Lmhpc3RvcnlbaT8icHVzaFN0YXRlIjoicmVwbGFjZVN0YXRlIl0oe30sZG9jdW1lbnQudGl0bGUsd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lK3dpbmRvdy5sb2NhdGlvbi5zZWFyY2grbiksaSYmKHRoaXMuaGFzQ3JlYXRlZEhpc3Rvcnk9ITApfWNhdGNoKHQpe319KSwzMDApKX1vbkNsb3NpbmcoKXtpZih0aGlzLnRpbWVyJiZjbGVhclRpbWVvdXQodGhpcy50aW1lciksITAhPT10aGlzLmhhc1NpbGVudENsb3NlKXRyeXtyZXR1cm4gdm9pZCB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sZG9jdW1lbnQudGl0bGUsd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lK3dpbmRvdy5sb2NhdGlvbi5zZWFyY2grKHRoaXMub3JpZ0hhc2h8fCIiKSl9Y2F0Y2godCl7fX1hdHRhY2godCl7dC5vbih0aGlzLmV2ZW50cyl9ZGV0YWNoKHQpe3Qub2ZmKHRoaXMuZXZlbnRzKX1zdGF0aWMgc3RhcnRGcm9tVXJsKCl7Y29uc3QgdD1NLkZhbmN5Ym94O2lmKCF0fHx0LmdldEluc3RhbmNlKCl8fCExPT09dC5kZWZhdWx0cy5IYXNoKXJldHVybjtjb25zdHtoYXNoOmUsc2x1ZzppLGluZGV4OnN9PU0uZ2V0UGFyc2VkVVJMKCk7aWYoIWkpcmV0dXJuO2xldCBhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLXNsdWc9IiR7ZX0iXWApO2lmKGEmJmEuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNsaWNrIix7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSkpLHQuZ2V0SW5zdGFuY2UoKSlyZXR1cm47Y29uc3Qgbj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS1mYW5jeWJveD0iJHtpfSJdYCk7bi5sZW5ndGgmJihudWxsPT09cyYmMT09PW4ubGVuZ3RoP2E9blswXTpzJiYoYT1uW3MtMV0pLGEmJmEuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNsaWNrIix7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSkpKX1zdGF0aWMgb25IYXNoQ2hhbmdlKCl7Y29uc3R7c2x1Zzp0LGluZGV4OmV9PU0uZ2V0UGFyc2VkVVJMKCksaT1NLkZhbmN5Ym94LHM9aSYmaS5nZXRJbnN0YW5jZSgpO2lmKHMmJnMucGx1Z2lucy5IYXNoKXtpZih0KXtjb25zdCBpPXMuQ2Fyb3VzZWw7aWYodD09PXMub3B0aW9uKCJzbHVnIikpcmV0dXJuIGkuc2xpZGVUbyhlLTEpO2ZvcihsZXQgZSBvZiBpLnNsaWRlcylpZihlLnNsdWcmJmUuc2x1Zz09PXQpcmV0dXJuIGkuc2xpZGVUbyhlLmluZGV4KTtjb25zdCBhPXMuZ2V0U2xpZGUoKSxuPWEuJHRyaWdnZXImJmEuJHRyaWdnZXIuZGF0YXNldDtpZihuJiZuLmZhbmN5Ym94PT09dClyZXR1cm4gaS5zbGlkZVRvKGUtMSl9cy5wbHVnaW5zLkhhc2guaGFzU2lsZW50Q2xvc2U9ITAscy5jbG9zZSgpfU0uc3RhcnRGcm9tVXJsKCl9c3RhdGljIGNyZWF0ZSh0KXtmdW5jdGlvbiBlKCl7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLE0ub25IYXNoQ2hhbmdlLCExKSxNLnN0YXJ0RnJvbVVybCgpfU0uRmFuY3lib3g9dCx3JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+ey9jb21wbGV0ZXxpbnRlcmFjdGl2ZXxsb2FkZWQvLnRlc3QoZG9jdW1lbnQucmVhZHlTdGF0ZSk/ZSgpOmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGUpfSkpfXN0YXRpYyBkZXN0cm95KCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLE0ub25IYXNoQ2hhbmdlLCExKX1zdGF0aWMgZ2V0UGFyc2VkVVJMKCl7Y29uc3QgdD13aW5kb3cubG9jYXRpb24uaGFzaC5zdWJzdHIoMSksZT10LnNwbGl0KCItIiksaT1lLmxlbmd0aD4xJiYvXlwrP1xkKyQvLnRlc3QoZVtlLmxlbmd0aC0xXSkmJnBhcnNlSW50KGUucG9wKC0xKSwxMCl8fG51bGw7cmV0dXJue2hhc2g6dCxzbHVnOmUuam9pbigiLSIpLGluZGV4Oml9fX1jb25zdCBPPXtwYWdlWE9mZnNldDowLHBhZ2VZT2Zmc2V0OjAsZWxlbWVudDooKT0+ZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnR8fGRvY3VtZW50Lm1vekZ1bGxTY3JlZW5FbGVtZW50fHxkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCxhY3RpdmF0ZSh0KXtPLnBhZ2VYT2Zmc2V0PXdpbmRvdy5wYWdlWE9mZnNldCxPLnBhZ2VZT2Zmc2V0PXdpbmRvdy5wYWdlWU9mZnNldCx0LnJlcXVlc3RGdWxsc2NyZWVuP3QucmVxdWVzdEZ1bGxzY3JlZW4oKTp0Lm1velJlcXVlc3RGdWxsU2NyZWVuP3QubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTp0LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuP3Qud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTp0Lm1zUmVxdWVzdEZ1bGxzY3JlZW4mJnQubXNSZXF1ZXN0RnVsbHNjcmVlbigpfSxkZWFjdGl2YXRlKCl7ZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4/ZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTpkb2N1bWVudC5tb3pDYW5jZWxGdWxsU2NyZWVuP2RvY3VtZW50Lm1vekNhbmNlbEZ1bGxTY3JlZW4oKTpkb2N1bWVudC53ZWJraXRFeGl0RnVsbHNjcmVlbiYmZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4oKX19O2NsYXNzIEl7Y29uc3RydWN0b3IodCl7dGhpcy5mYW5jeWJveD10LHRoaXMuYWN0aXZlPSExLHRoaXMuaGFuZGxlVmlzaWJpbGl0eUNoYW5nZT10aGlzLmhhbmRsZVZpc2liaWxpdHlDaGFuZ2UuYmluZCh0aGlzKX1pc0FjdGl2ZSgpe3JldHVybiB0aGlzLmFjdGl2ZX1zZXRUaW1lcigpe2lmKCF0aGlzLmFjdGl2ZXx8dGhpcy50aW1lcilyZXR1cm47Y29uc3QgdD10aGlzLmZhbmN5Ym94Lm9wdGlvbigic2xpZGVzaG93LmRlbGF5IiwzZTMpO3RoaXMudGltZXI9c2V0VGltZW91dCgoKCk9Pnt0aGlzLnRpbWVyPW51bGwsdGhpcy5mYW5jeWJveC5vcHRpb24oImluZmluaXRlIil8fHRoaXMuZmFuY3lib3guZ2V0U2xpZGUoKS5pbmRleCE9PXRoaXMuZmFuY3lib3guQ2Fyb3VzZWwuc2xpZGVzLmxlbmd0aC0xP3RoaXMuZmFuY3lib3gubmV4dCgpOnRoaXMuZmFuY3lib3guanVtcFRvKDAse2ZyaWN0aW9uOjB9KX0pLHQpO2xldCBlPXRoaXMuJHByb2dyZXNzO2V8fChlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUuY2xhc3NMaXN0LmFkZCgiZmFuY3lib3hfX3Byb2dyZXNzIiksdGhpcy5mYW5jeWJveC4kY2Fyb3VzZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLmZhbmN5Ym94LiRjYXJvdXNlbCksdGhpcy4kcHJvZ3Jlc3M9ZSxlLm9mZnNldEhlaWdodCksZS5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249YCR7dH1tc2AsZS5zdHlsZS50cmFuc2Zvcm09InNjYWxlWCgxKSJ9Y2xlYXJUaW1lcigpe2NsZWFyVGltZW91dCh0aGlzLnRpbWVyKSx0aGlzLnRpbWVyPW51bGwsdGhpcy4kcHJvZ3Jlc3MmJih0aGlzLiRwcm9ncmVzcy5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249IiIsdGhpcy4kcHJvZ3Jlc3Muc3R5bGUudHJhbnNmb3JtPSIiLHRoaXMuJHByb2dyZXNzLm9mZnNldEhlaWdodCl9YWN0aXZhdGUoKXt0aGlzLmFjdGl2ZXx8KHRoaXMuYWN0aXZlPSEwLHRoaXMuZmFuY3lib3guJGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJoYXMtc2xpZGVzaG93IiksImRvbmUiPT09dGhpcy5mYW5jeWJveC5nZXRTbGlkZSgpLnN0YXRlJiZ0aGlzLnNldFRpbWVyKCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsdGhpcy5oYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCExKSl9aGFuZGxlVmlzaWJpbGl0eUNoYW5nZSgpe3RoaXMuZGVhY3RpdmF0ZSgpfWRlYWN0aXZhdGUoKXt0aGlzLmFjdGl2ZT0hMSx0aGlzLmNsZWFyVGltZXIoKSx0aGlzLmZhbmN5Ym94LiRjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgiaGFzLXNsaWRlc2hvdyIpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHRoaXMuaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwhMSl9dG9nZ2xlKCl7dGhpcy5hY3RpdmU/dGhpcy5kZWFjdGl2YXRlKCk6dGhpcy5mYW5jeWJveC5DYXJvdXNlbC5zbGlkZXMubGVuZ3RoPjEmJnRoaXMuYWN0aXZhdGUoKX19Y29uc3QgRj17ZGlzcGxheTpbImNvdW50ZXIiLCJ6b29tIiwic2xpZGVzaG93IiwiZnVsbHNjcmVlbiIsInRodW1icyIsImNsb3NlIl0sYXV0b0VuYWJsZTohMCxpdGVtczp7Y291bnRlcjp7cG9zaXRpb246ImxlZnQiLHR5cGU6ImRpdiIsY2xhc3M6ImZhbmN5Ym94X19jb3VudGVyIixodG1sOic8c3BhbiBkYXRhLWZhbmN5Ym94LWluZGV4PSIiPjwvc3Bhbj4mbmJzcDsvJm5ic3A7PHNwYW4gZGF0YS1mYW5jeWJveC1jb3VudD0iIj48L3NwYW4+JyxhdHRyOnt0YWJpbmRleDotMX19LHByZXY6e3R5cGU6ImJ1dHRvbiIsY2xhc3M6ImZhbmN5Ym94X19idXR0b24tLXByZXYiLGxhYmVsOiJQUkVWIixodG1sOic8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE1IDRsLTggOCA4IDgiLz48L3N2Zz4nLGF0dHI6eyJkYXRhLWZhbmN5Ym94LXByZXYiOiIifX0sbmV4dDp7dHlwZToiYnV0dG9uIixjbGFzczoiZmFuY3lib3hfX2J1dHRvbi0tbmV4dCIsbGFiZWw6Ik5FWFQiLGh0bWw6Jzxzdmcgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNOCA0bDggOC04IDgiLz48L3N2Zz4nLGF0dHI6eyJkYXRhLWZhbmN5Ym94LW5leHQiOiIifX0sZnVsbHNjcmVlbjp7dHlwZToiYnV0dG9uIixjbGFzczoiZmFuY3lib3hfX2J1dHRvbi0tZnVsbHNjcmVlbiIsbGFiZWw6IlRPR0dMRV9GVUxMU0NSRUVOIixodG1sOic8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+XG4gICAgICAgICAgICAgICAgPGc+PHBhdGggZD0iTTMgOCBWM2g1Ij48L3BhdGg+PHBhdGggZD0iTTIxIDhWM2gtNSI+PC9wYXRoPjxwYXRoIGQ9Ik04IDIxSDN2LTUiPjwvcGF0aD48cGF0aCBkPSJNMTYgMjFoNXYtNSI+PC9wYXRoPjwvZz5cbiAgICAgICAgICAgICAgICA8Zz48cGF0aCBkPSJNNyAydjVIMk0xNyAydjVoNU0yIDE3aDV2NU0yMiAxN2gtNXY1Ii8+PC9nPlxuICAgICAgICAgICAgPC9zdmc+JyxjbGljazpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksTy5lbGVtZW50KCk/Ty5kZWFjdGl2YXRlKCk6Ty5hY3RpdmF0ZSh0aGlzLmZhbmN5Ym94LiRjb250YWluZXIpfX0sc2xpZGVzaG93Ont0eXBlOiJidXR0b24iLGNsYXNzOiJmYW5jeWJveF9fYnV0dG9uLS1zbGlkZXNob3ciLGxhYmVsOiJUT0dHTEVfU0xJREVTSE9XIixodG1sOic8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+XG4gICAgICAgICAgICAgICAgPGc+PHBhdGggZD0iTTYgNHYxNiIvPjxwYXRoIGQ9Ik0yMCAxMkw2IDIwIi8+PHBhdGggZD0iTTIwIDEyTDYgNCIvPjwvZz5cbiAgICAgICAgICAgICAgICA8Zz48cGF0aCBkPSJNNyA0djE1TTE3IDR2MTUiLz48L2c+XG4gICAgICAgICAgICA8L3N2Zz4nLGNsaWNrOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSx0aGlzLlNsaWRlc2hvdy50b2dnbGUoKX19LHpvb206e3R5cGU6ImJ1dHRvbiIsY2xhc3M6ImZhbmN5Ym94X19idXR0b24tLXpvb20iLGxhYmVsOiJUT0dHTEVfWk9PTSIsaHRtbDonPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxjaXJjbGUgY3g9IjEwIiBjeT0iMTAiIHI9IjciPjwvY2lyY2xlPjxwYXRoIGQ9Ik0xNiAxNiBMMjEgMjEiPjwvc3ZnPicsY2xpY2s6ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGU9dGhpcy5mYW5jeWJveC5nZXRTbGlkZSgpLlBhbnpvb207ZSYmZS50b2dnbGVab29tKCl9fSxkb3dubG9hZDp7dHlwZToibGluayIsbGFiZWw6IkRPV05MT0FEIixjbGFzczoiZmFuY3lib3hfX2J1dHRvbi0tZG93bmxvYWQiLGh0bWw6Jzxzdmcgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgMTVWM20wIDEybC00LTRtNCA0bDQtNE0yIDE3bC42MiAyLjQ4QTIgMiAwIDAwNC41NiAyMWgxNC44OGEyIDIgMCAwMDEuOTQtMS41MUwyMiAxNyIvPjwvc3ZnPicsY2xpY2s6ZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKX19LHRodW1iczp7dHlwZToiYnV0dG9uIixsYWJlbDoiVE9HR0xFX1RIVU1CUyIsY2xhc3M6ImZhbmN5Ym94X19idXR0b24tLXRodW1icyIsaHRtbDonPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxjaXJjbGUgY3g9IjQiIGN5PSI0IiByPSIxIiAvPjxjaXJjbGUgY3g9IjEyIiBjeT0iNCIgcj0iMSIgdHJhbnNmb3JtPSJyb3RhdGUoOTAgMTIgNCkiLz48Y2lyY2xlIGN4PSIyMCIgY3k9IjQiIHI9IjEiIHRyYW5zZm9ybT0icm90YXRlKDkwIDIwIDQpIi8+PGNpcmNsZSBjeD0iNCIgY3k9IjEyIiByPSIxIiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA0IDEyKSIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEiIHRyYW5zZm9ybT0icm90YXRlKDkwIDEyIDEyKSIvPjxjaXJjbGUgY3g9IjIwIiBjeT0iMTIiIHI9IjEiIHRyYW5zZm9ybT0icm90YXRlKDkwIDIwIDEyKSIvPjxjaXJjbGUgY3g9IjQiIGN5PSIyMCIgcj0iMSIgdHJhbnNmb3JtPSJyb3RhdGUoOTAgNCAyMCkiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjIwIiByPSIxIiB0cmFuc2Zvcm09InJvdGF0ZSg5MCAxMiAyMCkiLz48Y2lyY2xlIGN4PSIyMCIgY3k9IjIwIiByPSIxIiB0cmFuc2Zvcm09InJvdGF0ZSg5MCAyMCAyMCkiLz48L3N2Zz4nLGNsaWNrOmZ1bmN0aW9uKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCk7Y29uc3QgZT10aGlzLmZhbmN5Ym94LnBsdWdpbnMuVGh1bWJzO2UmJmUudG9nZ2xlKCl9fSxjbG9zZTp7dHlwZToiYnV0dG9uIixsYWJlbDoiQ0xPU0UiLGNsYXNzOiJmYW5jeWJveF9fYnV0dG9uLS1jbG9zZSIsaHRtbDonPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0yMCAyMEw0IDRtMTYgMEw0IDIwIj48L3BhdGg+PC9zdmc+JyxhdHRyOnsiZGF0YS1mYW5jeWJveC1jbG9zZSI6IiIsdGFiaW5kZXg6MH19fX07Y2xhc3MgRHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmZhbmN5Ym94PXQsdGhpcy4kY29udGFpbmVyPW51bGwsdGhpcy5zdGF0ZT0iaW5pdCI7Zm9yKGNvbnN0IHQgb2ZbIm9uSW5pdCIsIm9uUHJlcGFyZSIsIm9uRG9uZSIsIm9uS2V5ZG93biIsIm9uQ2xvc2luZyIsIm9uQ2hhbmdlIiwib25TZXR0bGUiLCJvblJlZnJlc2giXSl0aGlzW3RdPXRoaXNbdF0uYmluZCh0aGlzKTt0aGlzLmV2ZW50cz17aW5pdDp0aGlzLm9uSW5pdCxwcmVwYXJlOnRoaXMub25QcmVwYXJlLGRvbmU6dGhpcy5vbkRvbmUsa2V5ZG93bjp0aGlzLm9uS2V5ZG93bixjbG9zaW5nOnRoaXMub25DbG9zaW5nLCJDYXJvdXNlbC5jaGFuZ2UiOnRoaXMub25DaGFuZ2UsIkNhcm91c2VsLnNldHRsZSI6dGhpcy5vblNldHRsZSwiQ2Fyb3VzZWwuUGFuem9vbS50b3VjaFN0YXJ0IjooKT0+dGhpcy5vblJlZnJlc2goKSwiSW1hZ2Uuc3RhcnRBbmltYXRpb24iOih0LGUpPT50aGlzLm9uUmVmcmVzaChlKSwiSW1hZ2UuYWZ0ZXJVcGRhdGUiOih0LGUpPT50aGlzLm9uUmVmcmVzaChlKX19b25Jbml0KCl7aWYodGhpcy5mYW5jeWJveC5vcHRpb24oIlRvb2xiYXIuYXV0b0VuYWJsZSIpKXtsZXQgdD0hMTtmb3IoY29uc3QgZSBvZiB0aGlzLmZhbmN5Ym94Lml0ZW1zKWlmKCJpbWFnZSI9PT1lLnR5cGUpe3Q9ITA7YnJlYWt9aWYoIXQpcmV0dXJuIHZvaWQodGhpcy5zdGF0ZT0iZGlzYWJsZWQiKX1mb3IoY29uc3QgdCBvZiB0aGlzLmZhbmN5Ym94Lm9wdGlvbigiVG9vbGJhci5kaXNwbGF5IikpaWYoImNsb3NlIj09PShzKHQpP3QuaWQ6dCkpe3RoaXMuZmFuY3lib3gub3B0aW9ucy5jbG9zZUJ1dHRvbj0hMTticmVha319b25QcmVwYXJlKCl7Y29uc3QgdD10aGlzLmZhbmN5Ym94O2lmKCJpbml0Ij09PXRoaXMuc3RhdGUmJih0aGlzLmJ1aWxkKCksdGhpcy51cGRhdGUoKSx0aGlzLlNsaWRlc2hvdz1uZXcgSSh0KSwhdC5DYXJvdXNlbC5wcmV2UGFnZSYmKHQub3B0aW9uKCJzbGlkZXNob3cuYXV0b1N0YXJ0IikmJnRoaXMuU2xpZGVzaG93LmFjdGl2YXRlKCksdC5vcHRpb24oImZ1bGxzY3JlZW4uYXV0b1N0YXJ0IikmJiFPLmVsZW1lbnQoKSkpKXRyeXtPLmFjdGl2YXRlKHQuJGNvbnRhaW5lcil9Y2F0Y2godCl7fX1vbkZzQ2hhbmdlKCl7d2luZG93LnNjcm9sbFRvKE8ucGFnZVhPZmZzZXQsTy5wYWdlWU9mZnNldCl9b25TZXR0bGUoKXtjb25zdCB0PXRoaXMuZmFuY3lib3gsZT10aGlzLlNsaWRlc2hvdztlJiZlLmlzQWN0aXZlKCkmJih0LmdldFNsaWRlKCkuaW5kZXghPT10LkNhcm91c2VsLnNsaWRlcy5sZW5ndGgtMXx8dC5vcHRpb24oImluZmluaXRlIik/ImRvbmUiPT09dC5nZXRTbGlkZSgpLnN0YXRlJiZlLnNldFRpbWVyKCk6ZS5kZWFjdGl2YXRlKCkpfW9uQ2hhbmdlKCl7dGhpcy51cGRhdGUoKSx0aGlzLlNsaWRlc2hvdyYmdGhpcy5TbGlkZXNob3cuaXNBY3RpdmUoKSYmdGhpcy5TbGlkZXNob3cuY2xlYXJUaW1lcigpfW9uRG9uZSh0LGUpe2NvbnN0IGk9dGhpcy5TbGlkZXNob3c7ZS5pbmRleD09PXQuZ2V0U2xpZGUoKS5pbmRleCYmKHRoaXMudXBkYXRlKCksaSYmaS5pc0FjdGl2ZSgpJiYodC5vcHRpb24oImluZmluaXRlIil8fGUuaW5kZXghPT10LkNhcm91c2VsLnNsaWRlcy5sZW5ndGgtMT9pLnNldFRpbWVyKCk6aS5kZWFjdGl2YXRlKCkpKX1vblJlZnJlc2godCl7dCYmdC5pbmRleCE9PXRoaXMuZmFuY3lib3guZ2V0U2xpZGUoKS5pbmRleHx8KHRoaXMudXBkYXRlKCksIXRoaXMuU2xpZGVzaG93fHwhdGhpcy5TbGlkZXNob3cuaXNBY3RpdmUoKXx8dCYmImRvbmUiIT09dC5zdGF0ZXx8dGhpcy5TbGlkZXNob3cuZGVhY3RpdmF0ZSgpKX1vbktleWRvd24odCxlLGkpeyIgIj09PWUmJnRoaXMuU2xpZGVzaG93JiYodGhpcy5TbGlkZXNob3cudG9nZ2xlKCksaS5wcmV2ZW50RGVmYXVsdCgpKX1vbkNsb3NpbmcoKXt0aGlzLlNsaWRlc2hvdyYmdGhpcy5TbGlkZXNob3cuZGVhY3RpdmF0ZSgpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZ1bGxzY3JlZW5jaGFuZ2UiLHRoaXMub25Gc0NoYW5nZSl9Y3JlYXRlRWxlbWVudCh0KXtsZXQgZTsiZGl2Ij09PXQudHlwZT9lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOihlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiPT09dC50eXBlPyJhIjoiYnV0dG9uIiksZS5jbGFzc0xpc3QuYWRkKCJjYXJvdXNlbF9fYnV0dG9uIikpLGUuaW5uZXJIVE1MPXQuaHRtbCxlLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLHQudGFiaW5kZXh8fDApLHQuY2xhc3MmJmUuY2xhc3NMaXN0LmFkZCguLi50LmNsYXNzLnNwbGl0KCIgIikpO2Zvcihjb25zdCBpIGluIHQuYXR0cillLnNldEF0dHJpYnV0ZShpLHQuYXR0cltpXSk7dC5sYWJlbCYmZS5zZXRBdHRyaWJ1dGUoInRpdGxlIix0aGlzLmZhbmN5Ym94LmxvY2FsaXplKGB7eyR7dC5sYWJlbH19fWApKSx0LmNsaWNrJiZlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0LmNsaWNrLmJpbmQodGhpcykpLCJwcmV2Ij09PXQuaWQmJmUuc2V0QXR0cmlidXRlKCJkYXRhLWZhbmN5Ym94LXByZXYiLCIiKSwibmV4dCI9PT10LmlkJiZlLnNldEF0dHJpYnV0ZSgiZGF0YS1mYW5jeWJveC1uZXh0IiwiIik7Y29uc3QgaT1lLnF1ZXJ5U2VsZWN0b3IoInN2ZyIpO3JldHVybiBpJiYoaS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJpbWciKSxpLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLGkuc2V0QXR0cmlidXRlKCJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIikpLGV9YnVpbGQoKXt0aGlzLmNsZWFudXAoKTtjb25zdCB0PXRoaXMuZmFuY3lib3gub3B0aW9uKCJUb29sYmFyLml0ZW1zIiksZT1be3Bvc2l0aW9uOiJsZWZ0IixpdGVtczpbXX0se3Bvc2l0aW9uOiJjZW50ZXIiLGl0ZW1zOltdfSx7cG9zaXRpb246InJpZ2h0IixpdGVtczpbXX1dLGk9dGhpcy5mYW5jeWJveC5wbHVnaW5zLlRodW1icztmb3IoY29uc3QgbiBvZiB0aGlzLmZhbmN5Ym94Lm9wdGlvbigiVG9vbGJhci5kaXNwbGF5Iikpe2xldCByLG87aWYocyhuKT8ocj1uLmlkLG89YSh7fSx0W3JdLG4pKToocj1uLG89dFtyXSksWyJjb3VudGVyIiwibmV4dCIsInByZXYiLCJzbGlkZXNob3ciXS5pbmNsdWRlcyhyKSYmdGhpcy5mYW5jeWJveC5pdGVtcy5sZW5ndGg8Miljb250aW51ZTtpZigiZnVsbHNjcmVlbiI9PT1yKXtpZighZG9jdW1lbnQuZnVsbHNjcmVlbkVuYWJsZWR8fHdpbmRvdy5mdWxsU2NyZWVuKWNvbnRpbnVlO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZ1bGxzY3JlZW5jaGFuZ2UiLHRoaXMub25Gc0NoYW5nZSl9aWYoInRodW1icyI9PT1yJiYoIWl8fCJkaXNhYmxlZCI9PT1pLnN0YXRlKSljb250aW51ZTtpZighbyljb250aW51ZTtsZXQgbD1vLnBvc2l0aW9ufHwicmlnaHQiLGM9ZS5maW5kKCh0PT50LnBvc2l0aW9uPT09bCkpO2MmJmMuaXRlbXMucHVzaChvKX1jb25zdCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO24uY2xhc3NMaXN0LmFkZCgiZmFuY3lib3hfX3Rvb2xiYXIiKTtmb3IoY29uc3QgdCBvZiBlKWlmKHQuaXRlbXMubGVuZ3RoKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NMaXN0LmFkZCgiZmFuY3lib3hfX3Rvb2xiYXJfX2l0ZW1zIiksZS5jbGFzc0xpc3QuYWRkKGBmYW5jeWJveF9fdG9vbGJhcl9faXRlbXMtLSR7dC5wb3NpdGlvbn1gKTtmb3IoY29uc3QgaSBvZiB0Lml0ZW1zKWUuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVFbGVtZW50KGkpKTtuLmFwcGVuZENoaWxkKGUpfXRoaXMuZmFuY3lib3guJGNhcm91c2VsLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4sdGhpcy5mYW5jeWJveC4kY2Fyb3VzZWwpLHRoaXMuJGNvbnRhaW5lcj1ufXVwZGF0ZSgpe2NvbnN0IHQ9dGhpcy5mYW5jeWJveC5nZXRTbGlkZSgpLGU9dC5pbmRleCxpPXRoaXMuZmFuY3lib3guaXRlbXMubGVuZ3RoLHM9dC5kb3dubG9hZFNyY3x8KCJpbWFnZSIhPT10LnR5cGV8fHQuZXJyb3I/bnVsbDp0LnNyYyk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5mYW5jeWJveC4kY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoImEuZmFuY3lib3hfX2J1dHRvbi0tZG93bmxvYWQiKSlzPyh0LnJlbW92ZUF0dHJpYnV0ZSgiZGlzYWJsZWQiKSx0LnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKSx0LnNldEF0dHJpYnV0ZSgiaHJlZiIscyksdC5zZXRBdHRyaWJ1dGUoImRvd25sb2FkIixzKSx0LnNldEF0dHJpYnV0ZSgidGFyZ2V0IiwiX2JsYW5rIikpOih0LnNldEF0dHJpYnV0ZSgiZGlzYWJsZWQiLCIiKSx0LnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLC0xKSx0LnJlbW92ZUF0dHJpYnV0ZSgiaHJlZiIpLHQucmVtb3ZlQXR0cmlidXRlKCJkb3dubG9hZCIpKTtjb25zdCBhPXQuUGFuem9vbSxuPWEmJmEub3B0aW9uKCJtYXhTY2FsZSIpPmEub3B0aW9uKCJiYXNlU2NhbGUiKTtmb3IoY29uc3QgdCBvZiB0aGlzLmZhbmN5Ym94LiRjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgiLmZhbmN5Ym94X19idXR0b24tLXpvb20iKSluP3QucmVtb3ZlQXR0cmlidXRlKCJkaXNhYmxlZCIpOnQuc2V0QXR0cmlidXRlKCJkaXNhYmxlZCIsIiIpO2Zvcihjb25zdCBlIG9mIHRoaXMuZmFuY3lib3guJGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1mYW5jeWJveC1pbmRleF0iKSllLmlubmVySFRNTD10LmluZGV4KzE7Zm9yKGNvbnN0IHQgb2YgdGhpcy5mYW5jeWJveC4kY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWZhbmN5Ym94LWNvdW50XSIpKXQuaW5uZXJIVE1MPWk7aWYoIXRoaXMuZmFuY3lib3gub3B0aW9uKCJpbmZpbml0ZSIpKXtmb3IoY29uc3QgdCBvZiB0aGlzLmZhbmN5Ym94LiRjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZmFuY3lib3gtcHJldl0iKSkwPT09ZT90LnNldEF0dHJpYnV0ZSgiZGlzYWJsZWQiLCIiKTp0LnJlbW92ZUF0dHJpYnV0ZSgiZGlzYWJsZWQiKTtmb3IoY29uc3QgdCBvZiB0aGlzLmZhbmN5Ym94LiRjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZmFuY3lib3gtbmV4dF0iKSllPT09aS0xP3Quc2V0QXR0cmlidXRlKCJkaXNhYmxlZCIsIiIpOnQucmVtb3ZlQXR0cmlidXRlKCJkaXNhYmxlZCIpfX1jbGVhbnVwKCl7dGhpcy5TbGlkZXNob3cmJnRoaXMuU2xpZGVzaG93LmlzQWN0aXZlKCkmJnRoaXMuU2xpZGVzaG93LmNsZWFyVGltZXIoKSx0aGlzLiRjb250YWluZXImJnRoaXMuJGNvbnRhaW5lci5yZW1vdmUoKSx0aGlzLiRjb250YWluZXI9bnVsbH1hdHRhY2goKXt0aGlzLmZhbmN5Ym94Lm9uKHRoaXMuZXZlbnRzKX1kZXRhY2goKXt0aGlzLmZhbmN5Ym94Lm9mZih0aGlzLmV2ZW50cyksdGhpcy5jbGVhbnVwKCl9fUQuZGVmYXVsdHM9Rjtjb25zdCB6PXtTY3JvbGxMb2NrOmNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuZmFuY3lib3g9dCx0aGlzLnZpZXdwb3J0PW51bGwsdGhpcy5wZW5kaW5nVXBkYXRlPW51bGw7Zm9yKGNvbnN0IHQgb2ZbIm9uUmVhZHkiLCJvblJlc2l6ZSIsIm9uVG91Y2hzdGFydCIsIm9uVG91Y2htb3ZlIl0pdGhpc1t0XT10aGlzW3RdLmJpbmQodGhpcyl9b25SZWFkeSgpe2NvbnN0IHQ9d2luZG93LnZpc3VhbFZpZXdwb3J0O3QmJih0aGlzLnZpZXdwb3J0PXQsdGhpcy5zdGFydFk9MCx0LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5vblJlc2l6ZSksdGhpcy51cGRhdGVWaWV3cG9ydCgpKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5vblRvdWNoc3RhcnQse3Bhc3NpdmU6ITF9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLm9uVG91Y2htb3ZlLHtwYXNzaXZlOiExfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIix0aGlzLm9uV2hlZWwse3Bhc3NpdmU6ITF9KX1vblJlc2l6ZSgpe3RoaXMudXBkYXRlVmlld3BvcnQoKX11cGRhdGVWaWV3cG9ydCgpe2NvbnN0IHQ9dGhpcy5mYW5jeWJveCxlPXRoaXMudmlld3BvcnQsaT1lLnNjYWxlfHwxLHM9dC4kY29udGFpbmVyO2lmKCFzKXJldHVybjtsZXQgYT0iIixuPSIiLHI9IiI7aS0xPi4xJiYoYT1lLndpZHRoKmkrInB4IixuPWUuaGVpZ2h0KmkrInB4IixyPWB0cmFuc2xhdGUzZCgke2Uub2Zmc2V0TGVmdH1weCwgJHtlLm9mZnNldFRvcH1weCwgMCkgc2NhbGUoJHsxL2l9KWApLHMuc3R5bGUud2lkdGg9YSxzLnN0eWxlLmhlaWdodD1uLHMuc3R5bGUudHJhbnNmb3JtPXJ9b25Ub3VjaHN0YXJ0KHQpe3RoaXMuc3RhcnRZPXQudG91Y2hlcz90LnRvdWNoZXNbMF0uc2NyZWVuWTp0LnNjcmVlbll9b25Ub3VjaG1vdmUodCl7Y29uc3QgZT10aGlzLnN0YXJ0WSxpPXdpbmRvdy5pbm5lcldpZHRoL3dpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7aWYoIXQuY2FuY2VsYWJsZSlyZXR1cm47aWYodC50b3VjaGVzLmxlbmd0aD4xfHwxIT09aSlyZXR1cm47Y29uc3Qgcz1yKHQuY29tcG9zZWRQYXRoKClbMF0pO2lmKCFzKXJldHVybiB2b2lkIHQucHJldmVudERlZmF1bHQoKTtjb25zdCBhPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHMpLG49cGFyc2VJbnQoYS5nZXRQcm9wZXJ0eVZhbHVlKCJoZWlnaHQiKSwxMCksbz10LnRvdWNoZXM/dC50b3VjaGVzWzBdLnNjcmVlblk6dC5zY3JlZW5ZLGw9ZTw9byYmMD09PXMuc2Nyb2xsVG9wLGM9ZT49byYmcy5zY3JvbGxIZWlnaHQtcy5zY3JvbGxUb3A9PT1uOyhsfHxjKSYmdC5wcmV2ZW50RGVmYXVsdCgpfW9uV2hlZWwodCl7cih0LmNvbXBvc2VkUGF0aCgpWzBdKXx8dC5wcmV2ZW50RGVmYXVsdCgpfWNsZWFudXAoKXt0aGlzLnBlbmRpbmdVcGRhdGUmJihjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnBlbmRpbmdVcGRhdGUpLHRoaXMucGVuZGluZ1VwZGF0ZT1udWxsKTtjb25zdCB0PXRoaXMudmlld3BvcnQ7dCYmKHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLm9uUmVzaXplKSx0aGlzLnZpZXdwb3J0PW51bGwpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iix0aGlzLm9uVG91Y2hzdGFydCwhMSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5vblRvdWNobW92ZSwhMSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndoZWVsIix0aGlzLm9uV2hlZWwse3Bhc3NpdmU6ITF9KX1hdHRhY2goKXt0aGlzLmZhbmN5Ym94Lm9uKCJpbml0TGF5b3V0Iix0aGlzLm9uUmVhZHkpfWRldGFjaCgpe3RoaXMuZmFuY3lib3gub2ZmKCJpbml0TGF5b3V0Iix0aGlzLm9uUmVhZHkpLHRoaXMuY2xlYW51cCgpfX0sVGh1bWJzOkEsSHRtbDpMLFRvb2xiYXI6RCxJbWFnZTpQLEhhc2g6TX0sTj17c3RhcnRJbmRleDowLHByZWxvYWQ6MSxpbmZpbml0ZTohMCxzaG93Q2xhc3M6ImZhbmN5Ym94LXpvb21JblVwIixoaWRlQ2xhc3M6ImZhbmN5Ym94LWZhZGVPdXQiLGFuaW1hdGVkOiEwLGhpZGVTY3JvbGxiYXI6ITAscGFyZW50RWw6bnVsbCxtYWluQ2xhc3M6bnVsbCxhdXRvRm9jdXM6ITAsdHJhcEZvY3VzOiEwLHBsYWNlRm9jdXNCYWNrOiEwLGNsaWNrOiJjbG9zZSIsY2xvc2VCdXR0b246Imluc2lkZSIsZHJhZ1RvQ2xvc2U6ITAsa2V5Ym9hcmQ6e0VzY2FwZToiY2xvc2UiLERlbGV0ZToiY2xvc2UiLEJhY2tzcGFjZToiY2xvc2UiLFBhZ2VVcDoibmV4dCIsUGFnZURvd246InByZXYiLEFycm93VXA6Im5leHQiLEFycm93RG93bjoicHJldiIsQXJyb3dSaWdodDoibmV4dCIsQXJyb3dMZWZ0OiJwcmV2In0sdGVtcGxhdGU6e2Nsb3NlQnV0dG9uOic8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0IiB0YWJpbmRleD0iLTEiPjxwYXRoIGQ9Ik0yMCAyMEw0IDRtMTYgMEw0IDIwIi8+PC9zdmc+JyxzcGlubmVyOic8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiB2aWV3Qm94PSIyNSAyNSA1MCA1MCIgdGFiaW5kZXg9Ii0xIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSIyMCIvPjwvc3ZnPicsbWFpbjpudWxsfSxsMTBuOntDTE9TRToiQ2xvc2UiLE5FWFQ6Ik5leHQiLFBSRVY6IlByZXZpb3VzIixNT0RBTDoiWW91IGNhbiBjbG9zZSB0aGlzIG1vZGFsIGNvbnRlbnQgd2l0aCB0aGUgRVNDIGtleSIsRVJST1I6IlNvbWV0aGluZyBXZW50IFdyb25nLCBQbGVhc2UgVHJ5IEFnYWluIExhdGVyIixJTUFHRV9FUlJPUjoiSW1hZ2UgTm90IEZvdW5kIixFTEVNRU5UX05PVF9GT1VORDoiSFRNTCBFbGVtZW50IE5vdCBGb3VuZCIsQUpBWF9OT1RfRk9VTkQ6IkVycm9yIExvYWRpbmcgQUpBWCA6IE5vdCBGb3VuZCIsQUpBWF9GT1JCSURERU46IkVycm9yIExvYWRpbmcgQUpBWCA6IEZvcmJpZGRlbiIsSUZSQU1FX0VSUk9SOiJFcnJvciBMb2FkaW5nIFBhZ2UiLFRPR0dMRV9aT09NOiJUb2dnbGUgem9vbSBsZXZlbCIsVE9HR0xFX1RIVU1CUzoiVG9nZ2xlIHRodW1ibmFpbHMiLFRPR0dMRV9TTElERVNIT1c6IlRvZ2dsZSBzbGlkZXNob3ciLFRPR0dMRV9GVUxMU0NSRUVOOiJUb2dnbGUgZnVsbC1zY3JlZW4gbW9kZSIsRE9XTkxPQUQ6IkRvd25sb2FkIn19LFI9bmV3IE1hcDtsZXQgXz0wO2NsYXNzIEIgZXh0ZW5kcyB1e2NvbnN0cnVjdG9yKHQsZT17fSl7dD10Lm1hcCgodD0+KHQud2lkdGgmJih0Ll93aWR0aD10LndpZHRoKSx0LmhlaWdodCYmKHQuX2hlaWdodD10LmhlaWdodCksdCkpKSxzdXBlcihhKCEwLHt9LE4sZSkpLHRoaXMuYmluZEhhbmRsZXJzKCksdGhpcy5zdGF0ZT0iaW5pdCIsdGhpcy5zZXRJdGVtcyh0KSx0aGlzLmF0dGFjaFBsdWdpbnMoQi5QbHVnaW5zKSx0aGlzLnRyaWdnZXIoImluaXQiKSwhMD09PXRoaXMub3B0aW9uKCJoaWRlU2Nyb2xsYmFyIikmJnRoaXMuaGlkZVNjcm9sbGJhcigpLHRoaXMuaW5pdExheW91dCgpLHRoaXMuaW5pdENhcm91c2VsKCksdGhpcy5hdHRhY2hFdmVudHMoKSxSLnNldCh0aGlzLmlkLHRoaXMpLHRoaXMudHJpZ2dlcigicHJlcGFyZSIpLHRoaXMuc3RhdGU9InJlYWR5Iix0aGlzLnRyaWdnZXIoInJlYWR5IiksdGhpcy4kY29udGFpbmVyLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJmYWxzZSIpLHRoaXMub3B0aW9uKCJ0cmFwRm9jdXMiKSYmdGhpcy5mb2N1cygpfW9wdGlvbih0LC4uLmUpe2NvbnN0IGk9dGhpcy5nZXRTbGlkZSgpO2xldCBzPWk/aVt0XTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PXM/KCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLmNhbGwodGhpcyx0aGlzLC4uLmUpKSxzKTpzdXBlci5vcHRpb24odCwuLi5lKX1iaW5kSGFuZGxlcnMoKXtmb3IoY29uc3QgdCBvZlsib25Nb3VzZWRvd24iLCJvbktleWRvd24iLCJvbkNsaWNrIiwib25Gb2N1cyIsIm9uQ3JlYXRlU2xpZGUiLCJvblNldHRsZSIsIm9uVG91Y2hNb3ZlIiwib25Ub3VjaEVuZCIsIm9uVHJhbnNmb3JtIl0pdGhpc1t0XT10aGlzW3RdLmJpbmQodGhpcyl9YXR0YWNoRXZlbnRzKCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLm9uTW91c2Vkb3duKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLm9uS2V5ZG93biwhMCksdGhpcy5vcHRpb24oInRyYXBGb2N1cyIpJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5vbkZvY3VzLCEwKSx0aGlzLiRjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMub25DbGljayl9ZGV0YWNoRXZlbnRzKCl7ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLm9uTW91c2Vkb3duKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLm9uS2V5ZG93biwhMCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMub25Gb2N1cywhMCksdGhpcy4kY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLm9uQ2xpY2spfWluaXRMYXlvdXQoKXt0aGlzLiRyb290PXRoaXMub3B0aW9uKCJwYXJlbnRFbCIpfHxkb2N1bWVudC5ib2R5O2xldCB0PXRoaXMub3B0aW9uKCJ0ZW1wbGF0ZS5tYWluIik7dCYmKHRoaXMuJHJvb3QuaW5zZXJ0QWRqYWNlbnRIVE1MKCJiZWZvcmVlbmQiLHRoaXMubG9jYWxpemUodCkpLHRoaXMuJGNvbnRhaW5lcj10aGlzLiRyb290LnF1ZXJ5U2VsZWN0b3IoIi5mYW5jeWJveF9fY29udGFpbmVyIikpLHRoaXMuJGNvbnRhaW5lcnx8KHRoaXMuJGNvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLiRyb290LmFwcGVuZENoaWxkKHRoaXMuJGNvbnRhaW5lcikpLHRoaXMuJGNvbnRhaW5lci5vbnNjcm9sbD0oKT0+KHRoaXMuJGNvbnRhaW5lci5zY3JvbGxMZWZ0PTAsITEpLE9iamVjdC5lbnRyaWVzKHtjbGFzczoiZmFuY3lib3hfX2NvbnRhaW5lciIscm9sZToiZGlhbG9nIix0YWJJbmRleDoiLTEiLCJhcmlhLW1vZGFsIjoidHJ1ZSIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsImFyaWEtbGFiZWwiOnRoaXMubG9jYWxpemUoInt7TU9EQUx9fSIpfSkuZm9yRWFjaCgodD0+dGhpcy4kY29udGFpbmVyLnNldEF0dHJpYnV0ZSguLi50KSkpLHRoaXMub3B0aW9uKCJhbmltYXRlZCIpJiZ0aGlzLiRjb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaXMtYW5pbWF0ZWQiKSx0aGlzLiRiYWNrZHJvcD10aGlzLiRjb250YWluZXIucXVlcnlTZWxlY3RvcigiLmZhbmN5Ym94X19iYWNrZHJvcCIpLHRoaXMuJGJhY2tkcm9wfHwodGhpcy4kYmFja2Ryb3A9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy4kYmFja2Ryb3AuY2xhc3NMaXN0LmFkZCgiZmFuY3lib3hfX2JhY2tkcm9wIiksdGhpcy4kY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuJGJhY2tkcm9wKSksdGhpcy4kY2Fyb3VzZWw9dGhpcy4kY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoIi5mYW5jeWJveF9fY2Fyb3VzZWwiKSx0aGlzLiRjYXJvdXNlbHx8KHRoaXMuJGNhcm91c2VsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuJGNhcm91c2VsLmNsYXNzTGlzdC5hZGQoImZhbmN5Ym94X19jYXJvdXNlbCIpLHRoaXMuJGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLiRjYXJvdXNlbCkpLHRoaXMuJGNvbnRhaW5lci5GYW5jeWJveD10aGlzLHRoaXMuaWQ9dGhpcy4kY29udGFpbmVyLmdldEF0dHJpYnV0ZSgiaWQiKSx0aGlzLmlkfHwodGhpcy5pZD10aGlzLm9wdGlvbnMuaWR8fCsrXyx0aGlzLiRjb250YWluZXIuc2V0QXR0cmlidXRlKCJpZCIsImZhbmN5Ym94LSIrdGhpcy5pZCkpO2NvbnN0IGU9dGhpcy5vcHRpb24oIm1haW5DbGFzcyIpO3JldHVybiBlJiZ0aGlzLiRjb250YWluZXIuY2xhc3NMaXN0LmFkZCguLi5lLnNwbGl0KCIgIikpLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ3aXRoLWZhbmN5Ym94IiksdGhpcy50cmlnZ2VyKCJpbml0TGF5b3V0IiksdGhpc31zZXRJdGVtcyh0KXtjb25zdCBlPVtdO2Zvcihjb25zdCBpIG9mIHQpe2NvbnN0IHQ9aS4kdHJpZ2dlcjtpZih0KXtjb25zdCBlPXQuZGF0YXNldHx8e307aS5zcmM9ZS5zcmN8fHQuZ2V0QXR0cmlidXRlKCJocmVmIil8fGkuc3JjLGkudHlwZT1lLnR5cGV8fGkudHlwZSwhaS5zcmMmJnQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50JiYoaS5zcmM9dC5jdXJyZW50U3JjfHxpLiR0cmlnZ2VyLnNyYyl9bGV0IHM9aS4kdGh1bWI7aWYoIXMpe2xldCB0PWkuJHRyaWdnZXImJmkuJHRyaWdnZXIub3JpZ1RhcmdldDt0JiYocz10IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudD90OnQucXVlcnlTZWxlY3RvcigiaW1nOm5vdChbYXJpYS1oaWRkZW5dKSIpKSwhcyYmaS4kdHJpZ2dlciYmKHM9aS4kdHJpZ2dlciBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQ/aS4kdHJpZ2dlcjppLiR0cmlnZ2VyLnF1ZXJ5U2VsZWN0b3IoImltZzpub3QoW2FyaWEtaGlkZGVuXSkiKSl9aS4kdGh1bWI9c3x8bnVsbDtsZXQgYT1pLnRodW1iOyFhJiZzJiYoYT1zLmN1cnJlbnRTcmN8fHMuc3JjLCFhJiZzLmRhdGFzZXQmJihhPXMuZGF0YXNldC5sYXp5U3JjfHxzLmRhdGFzZXQuc3JjKSksYXx8ImltYWdlIiE9PWkudHlwZXx8KGE9aS5zcmMpLGkudGh1bWI9YXx8bnVsbCxpLmNhcHRpb249aS5jYXB0aW9ufHwiIixlLnB1c2goaSl9dGhpcy5pdGVtcz1lfWluaXRDYXJvdXNlbCgpe3JldHVybiB0aGlzLkNhcm91c2VsPW5ldyB5KHRoaXMuJGNhcm91c2VsLGEoITAse30se3ByZWZpeDoiIixjbGFzc05hbWVzOnt2aWV3cG9ydDoiZmFuY3lib3hfX3ZpZXdwb3J0Iix0cmFjazoiZmFuY3lib3hfX3RyYWNrIixzbGlkZToiZmFuY3lib3hfX3NsaWRlIn0sdGV4dFNlbGVjdGlvbjohMCxwcmVsb2FkOnRoaXMub3B0aW9uKCJwcmVsb2FkIiksZnJpY3Rpb246Ljg4LHNsaWRlczp0aGlzLml0ZW1zLGluaXRpYWxQYWdlOnRoaXMub3B0aW9ucy5zdGFydEluZGV4LHNsaWRlc1BlclBhZ2U6MSxpbmZpbml0ZVg6dGhpcy5vcHRpb24oImluZmluaXRlIiksaW5maW5pdGVZOiEwLGwxMG46dGhpcy5vcHRpb24oImwxMG4iKSxEb3RzOiExLE5hdmlnYXRpb246e2NsYXNzTmFtZXM6e21haW46ImZhbmN5Ym94X19uYXYiLGJ1dHRvbjoiY2Fyb3VzZWxfX2J1dHRvbiIsbmV4dDoiaXMtbmV4dCIscHJldjoiaXMtcHJldiJ9fSxQYW56b29tOnt0ZXh0U2VsZWN0aW9uOiEwLHBhbk9ubHlab29tZWQ6KCk9PnRoaXMuQ2Fyb3VzZWwmJnRoaXMuQ2Fyb3VzZWwucGFnZXMmJnRoaXMuQ2Fyb3VzZWwucGFnZXMubGVuZ3RoPDImJiF0aGlzLm9wdGlvbigiZHJhZ1RvQ2xvc2UiKSxsb2NrQXhpczooKT0+e2lmKHRoaXMuQ2Fyb3VzZWwpe2xldCB0PSJ4IjtyZXR1cm4gdGhpcy5vcHRpb24oImRyYWdUb0Nsb3NlIikmJih0Kz0ieSIpLHR9fX0sb246eyIqIjoodCwuLi5lKT0+dGhpcy50cmlnZ2VyKGBDYXJvdXNlbC4ke3R9YCwuLi5lKSxpbml0OnQ9PnRoaXMuQ2Fyb3VzZWw9dCxjcmVhdGVTbGlkZTp0aGlzLm9uQ3JlYXRlU2xpZGUsc2V0dGxlOnRoaXMub25TZXR0bGV9fSx0aGlzLm9wdGlvbigiQ2Fyb3VzZWwiKSkpLHRoaXMub3B0aW9uKCJkcmFnVG9DbG9zZSIpJiZ0aGlzLkNhcm91c2VsLlBhbnpvb20ub24oe3RvdWNoTW92ZTp0aGlzLm9uVG91Y2hNb3ZlLGFmdGVyVHJhbnNmb3JtOnRoaXMub25UcmFuc2Zvcm0sdG91Y2hFbmQ6dGhpcy5vblRvdWNoRW5kfSksdGhpcy50cmlnZ2VyKCJpbml0Q2Fyb3VzZWwiKSx0aGlzfW9uQ3JlYXRlU2xpZGUodCxlKXtsZXQgaT1lLmNhcHRpb258fCIiO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuY2FwdGlvbiYmKGk9dGhpcy5vcHRpb25zLmNhcHRpb24uY2FsbCh0aGlzLHRoaXMsdGhpcy5DYXJvdXNlbCxlKSksInN0cmluZyI9PXR5cGVvZiBpJiZpLmxlbmd0aCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxzPWBmYW5jeWJveF9fY2FwdGlvbl8ke3RoaXMuaWR9XyR7ZS5pbmRleH1gO3QuY2xhc3NOYW1lPSJmYW5jeWJveF9fY2FwdGlvbiIsdC5pbm5lckhUTUw9aSx0LnNldEF0dHJpYnV0ZSgiaWQiLHMpLGUuJGNhcHRpb249ZS4kZWwuYXBwZW5kQ2hpbGQodCksZS4kZWwuY2xhc3NMaXN0LmFkZCgiaGFzLWNhcHRpb24iKSxlLiRlbC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIscyl9fW9uU2V0dGxlKCl7dGhpcy5vcHRpb24oImF1dG9Gb2N1cyIpJiZ0aGlzLmZvY3VzKCl9b25Gb2N1cyh0KXt0aGlzLmlzVG9wbW9zdCgpJiZ0aGlzLmZvY3VzKHQpfW9uQ2xpY2sodCl7aWYodC5kZWZhdWx0UHJldmVudGVkKXJldHVybjtsZXQgZT10LmNvbXBvc2VkUGF0aCgpWzBdO2lmKGUubWF0Y2hlcygiW2RhdGEtZmFuY3lib3gtY2xvc2VdIikpcmV0dXJuIHQucHJldmVudERlZmF1bHQoKSx2b2lkIEIuY2xvc2UoITEsdCk7aWYoZS5tYXRjaGVzKCJbZGF0YS1mYW5jeWJveC1uZXh0XSIpKXJldHVybiB0LnByZXZlbnREZWZhdWx0KCksdm9pZCBCLm5leHQoKTtpZihlLm1hdGNoZXMoIltkYXRhLWZhbmN5Ym94LXByZXZdIikpcmV0dXJuIHQucHJldmVudERlZmF1bHQoKSx2b2lkIEIucHJldigpO2NvbnN0IGk9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtpZihpKXtpZihpLmNsb3Nlc3QoIltjb250ZW50ZWRpdGFibGVdIikpcmV0dXJuO2UubWF0Y2hlcyhTKXx8aS5ibHVyKCl9aWYoIWUuY2xvc2VzdCgiLmZhbmN5Ym94X19jb250ZW50IikmJiFnZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLmxlbmd0aCYmITEhPT10aGlzLnRyaWdnZXIoImNsaWNrIix0KSlzd2l0Y2godGhpcy5vcHRpb24oImNsaWNrIikpe2Nhc2UiY2xvc2UiOnRoaXMuY2xvc2UoKTticmVhaztjYXNlIm5leHQiOnRoaXMubmV4dCgpfX1vblRvdWNoTW92ZSgpe2NvbnN0IHQ9dGhpcy5nZXRTbGlkZSgpLlBhbnpvb207cmV0dXJuIXR8fDE9PT10LmNvbnRlbnQuc2NhbGV9b25Ub3VjaEVuZCh0KXtjb25zdCBlPXQuZHJhZ09mZnNldC55O01hdGguYWJzKGUpPj0xNTB8fE1hdGguYWJzKGUpPj0zNSYmdC5kcmFnT2Zmc2V0LnRpbWU8MzUwPyh0aGlzLm9wdGlvbigiaGlkZUNsYXNzIikmJih0aGlzLmdldFNsaWRlKCkuaGlkZUNsYXNzPSJmYW5jeWJveC10aHJvd091dCIrKHQuY29udGVudC55PDA/IlVwIjoiRG93biIpKSx0aGlzLmNsb3NlKCkpOiJ5Ij09PXQubG9ja0F4aXMmJnQucGFuVG8oe3k6MH0pfW9uVHJhbnNmb3JtKHQpe2lmKHRoaXMuJGJhY2tkcm9wKXtjb25zdCBlPU1hdGguYWJzKHQuY29udGVudC55KSxpPWU8MT8iIjpNYXRoLm1heCguMzMsTWF0aC5taW4oMSwxLWUvdC5jb250ZW50LmZpdEhlaWdodCoxLjUpKTt0aGlzLiRjb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoIi0tZmFuY3lib3gtdHMiLGk/IjBzIjoiIiksdGhpcy4kY29udGFpbmVyLnN0eWxlLnNldFByb3BlcnR5KCItLWZhbmN5Ym94LW9wYWNpdHkiLGkpfX1vbk1vdXNlZG93bigpeyJyZWFkeSI9PT10aGlzLnN0YXRlJiZkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoImlzLXVzaW5nLW1vdXNlIil9b25LZXlkb3duKHQpe2lmKCF0aGlzLmlzVG9wbW9zdCgpKXJldHVybjtkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoImlzLXVzaW5nLW1vdXNlIik7Y29uc3QgZT10LmtleSxpPXRoaXMub3B0aW9uKCJrZXlib2FyZCIpO2lmKCFpfHx0LmN0cmxLZXl8fHQuYWx0S2V5fHx0LnNoaWZ0S2V5KXJldHVybjtjb25zdCBzPXQuY29tcG9zZWRQYXRoKClbMF0sYT1kb2N1bWVudC5hY3RpdmVFbGVtZW50JiZkb2N1bWVudC5hY3RpdmVFbGVtZW50LmNsYXNzTGlzdCxuPWEmJmEuY29udGFpbnMoImNhcm91c2VsX19idXR0b24iKTtpZigiRXNjYXBlIiE9PWUmJiFuJiYodC50YXJnZXQuaXNDb250ZW50RWRpdGFibGV8fC0xIT09WyJCVVRUT04iLCJURVhUQVJFQSIsIk9QVElPTiIsIklOUFVUIiwiU0VMRUNUIiwiVklERU8iXS5pbmRleE9mKHMubm9kZU5hbWUpKSlyZXR1cm47aWYoITE9PT10aGlzLnRyaWdnZXIoImtleWRvd24iLGUsdCkpcmV0dXJuO2NvbnN0IHI9aVtlXTsiZnVuY3Rpb24iPT10eXBlb2YgdGhpc1tyXSYmdGhpc1tyXSgpfWdldFNsaWRlKCl7Y29uc3QgdD10aGlzLkNhcm91c2VsO2lmKCF0KXJldHVybiBudWxsO2NvbnN0IGU9bnVsbD09PXQucGFnZT90Lm9wdGlvbigiaW5pdGlhbFBhZ2UiKTp0LnBhZ2UsaT10LnBhZ2VzfHxbXTtyZXR1cm4gaS5sZW5ndGgmJmlbZV0/aVtlXS5zbGlkZXNbMF06bnVsbH1mb2N1cyh0KXtpZihCLmlnbm9yZUZvY3VzQ2hhbmdlKXJldHVybjtpZihbImluaXQiLCJjbG9zaW5nIiwiY3VzdG9tQ2xvc2luZyIsImRlc3Ryb3kiXS5pbmRleE9mKHRoaXMuc3RhdGUpPi0xKXJldHVybjtjb25zdCBlPXRoaXMuJGNvbnRhaW5lcixpPXRoaXMuZ2V0U2xpZGUoKSxzPSJkb25lIj09PWkuc3RhdGU/aS4kZWw6bnVsbDtpZihzJiZzLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKXJldHVybjt0JiZ0LnByZXZlbnREZWZhdWx0KCksQi5pZ25vcmVGb2N1c0NoYW5nZT0hMDtjb25zdCBhPUFycmF5LmZyb20oZS5xdWVyeVNlbGVjdG9yQWxsKFMpKTtsZXQgbixyPVtdO2ZvcihsZXQgdCBvZiBhKXtjb25zdCBlPXQub2Zmc2V0UGFyZW50LGk9cyYmcy5jb250YWlucyh0KSxhPSF0aGlzLkNhcm91c2VsLiR2aWV3cG9ydC5jb250YWlucyh0KTtlJiYoaXx8YSk/KHIucHVzaCh0KSx2b2lkIDAhPT10LmRhdGFzZXQub3JpZ1RhYmluZGV4JiYodC50YWJJbmRleD10LmRhdGFzZXQub3JpZ1RhYmluZGV4LHQucmVtb3ZlQXR0cmlidXRlKCJkYXRhLW9yaWctdGFiaW5kZXgiKSksKHQuaGFzQXR0cmlidXRlKCJhdXRvRm9jdXMiKXx8IW4mJmkmJiF0LmNsYXNzTGlzdC5jb250YWlucygiY2Fyb3VzZWxfX2J1dHRvbiIpKSYmKG49dCkpOih0LmRhdGFzZXQub3JpZ1RhYmluZGV4PXZvaWQgMD09PXQuZGF0YXNldC5vcmlnVGFiaW5kZXg/dC5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iik6dC5kYXRhc2V0Lm9yaWdUYWJpbmRleCx0LnRhYkluZGV4PS0xKX10P3IuaW5kZXhPZih0LnRhcmdldCk+LTE/dGhpcy5sYXN0Rm9jdXM9dC50YXJnZXQ6dGhpcy5sYXN0Rm9jdXM9PT1lP0MocltyLmxlbmd0aC0xXSk6QyhlKTp0aGlzLm9wdGlvbigiYXV0b0ZvY3VzIikmJm4/QyhuKTpyLmluZGV4T2YoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk8MCYmQyhlKSx0aGlzLmxhc3RGb2N1cz1kb2N1bWVudC5hY3RpdmVFbGVtZW50LEIuaWdub3JlRm9jdXNDaGFuZ2U9ITF9aGlkZVNjcm9sbGJhcigpe2lmKCF3KXJldHVybjtjb25zdCB0PXdpbmRvdy5pbm5lcldpZHRoLWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCxlPSJmYW5jeWJveC1zdHlsZS1ub3Njcm9sbCI7bGV0IGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSk7aXx8dD4wJiYoaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLGkuaWQ9ZSxpLnR5cGU9InRleHQvY3NzIixpLmlubmVySFRNTD1gLmNvbXBlbnNhdGUtZm9yLXNjcm9sbGJhciB7cGFkZGluZy1yaWdodDogJHt0fXB4O31gLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoaSksZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCJjb21wZW5zYXRlLWZvci1zY3JvbGxiYXIiKSl9cmV2ZWFsU2Nyb2xsYmFyKCl7ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJjb21wZW5zYXRlLWZvci1zY3JvbGxiYXIiKTtjb25zdCB0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmYW5jeWJveC1zdHlsZS1ub3Njcm9sbCIpO3QmJnQucmVtb3ZlKCl9Y2xlYXJDb250ZW50KHQpe3RoaXMuQ2Fyb3VzZWwudHJpZ2dlcigicmVtb3ZlU2xpZGUiLHQpLHQuJGNvbnRlbnQmJih0LiRjb250ZW50LnJlbW92ZSgpLHQuJGNvbnRlbnQ9bnVsbCksdC4kY2xvc2VCdXR0b24mJih0LiRjbG9zZUJ1dHRvbi5yZW1vdmUoKSx0LiRjbG9zZUJ1dHRvbj1udWxsKSx0Ll9jbGFzc05hbWUmJnQuJGVsLmNsYXNzTGlzdC5yZW1vdmUodC5fY2xhc3NOYW1lKX1zZXRDb250ZW50KHQsZSxpPXt9KXtsZXQgcztjb25zdCBhPXQuJGVsO2lmKGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudClbImltZyIsImlmcmFtZSIsInZpZGVvIiwiYXVkaW8iXS5pbmRleE9mKGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSk+LTE/KHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikscy5hcHBlbmRDaGlsZChlKSk6cz1lO2Vsc2V7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChlKTtzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHMuYXBwZW5kQ2hpbGQodCl9aWYodC5maWx0ZXImJiF0LmVycm9yJiYocz1zLnF1ZXJ5U2VsZWN0b3IodC5maWx0ZXIpKSxzIGluc3RhbmNlb2YgRWxlbWVudClyZXR1cm4gdC5fY2xhc3NOYW1lPWBoYXMtJHtpLnN1ZmZpeHx8dC50eXBlfHwidW5rbm93biJ9YCxhLmNsYXNzTGlzdC5hZGQodC5fY2xhc3NOYW1lKSxzLmNsYXNzTGlzdC5hZGQoImZhbmN5Ym94X19jb250ZW50IiksIm5vbmUiIT09cy5zdHlsZS5kaXNwbGF5JiYibm9uZSIhPT1nZXRDb21wdXRlZFN0eWxlKHMpLmdldFByb3BlcnR5VmFsdWUoImRpc3BsYXkiKXx8KHMuc3R5bGUuZGlzcGxheT10LmRpc3BsYXl8fHRoaXMub3B0aW9uKCJkZWZhdWx0RGlzcGxheSIpfHwiZmxleCIpLHQuaWQmJnMuc2V0QXR0cmlidXRlKCJpZCIsdC5pZCksdC4kY29udGVudD1zLGEucHJlcGVuZChzKSx0aGlzLm1hbmFnZUNsb3NlQnV0dG9uKHQpLCJsb2FkaW5nIiE9PXQuc3RhdGUmJnRoaXMucmV2ZWFsQ29udGVudCh0KSxzO3RoaXMuc2V0RXJyb3IodCwie3tFTEVNRU5UX05PVF9GT1VORH19Iil9bWFuYWdlQ2xvc2VCdXR0b24odCl7Y29uc3QgZT12b2lkIDA9PT10LmNsb3NlQnV0dG9uP3RoaXMub3B0aW9uKCJjbG9zZUJ1dHRvbiIpOnQuY2xvc2VCdXR0b247aWYoIWV8fCJ0b3AiPT09ZSYmdGhpcy4kY2xvc2VCdXR0b24pcmV0dXJuO2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7aS5jbGFzc0xpc3QuYWRkKCJjYXJvdXNlbF9fYnV0dG9uIiwiaXMtY2xvc2UiKSxpLnNldEF0dHJpYnV0ZSgidGl0bGUiLHRoaXMub3B0aW9ucy5sMTBuLkNMT1NFKSxpLmlubmVySFRNTD10aGlzLm9wdGlvbigidGVtcGxhdGUuY2xvc2VCdXR0b24iKSxpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwodD0+dGhpcy5jbG9zZSh0KSkpLCJpbnNpZGUiPT09ZT8odC4kY2xvc2VCdXR0b24mJnQuJGNsb3NlQnV0dG9uLnJlbW92ZSgpLHQuJGNsb3NlQnV0dG9uPXQuJGNvbnRlbnQuYXBwZW5kQ2hpbGQoaSkpOnRoaXMuJGNsb3NlQnV0dG9uPXRoaXMuJGNvbnRhaW5lci5pbnNlcnRCZWZvcmUoaSx0aGlzLiRjb250YWluZXIuZmlyc3RDaGlsZCl9cmV2ZWFsQ29udGVudCh0KXt0aGlzLnRyaWdnZXIoInJldmVhbCIsdCksdC4kY29udGVudC5zdHlsZS52aXNpYmlsaXR5PSIiO2xldCBlPSExO3QuZXJyb3J8fCJsb2FkaW5nIj09PXQuc3RhdGV8fG51bGwhPT10aGlzLkNhcm91c2VsLnByZXZQYWdlfHx0LmluZGV4IT09dGhpcy5vcHRpb25zLnN0YXJ0SW5kZXh8fChlPXZvaWQgMD09PXQuc2hvd0NsYXNzP3RoaXMub3B0aW9uKCJzaG93Q2xhc3MiKTp0LnNob3dDbGFzcyksZT8odC5zdGF0ZT0iYW5pbWF0aW5nIix0aGlzLmFuaW1hdGVDU1ModC4kY29udGVudCxlLCgoKT0+e3RoaXMuZG9uZSh0KX0pKSk6dGhpcy5kb25lKHQpfWFuaW1hdGVDU1ModCxlLGkpe2lmKHQmJnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImFuaW1hdGlvbmVuZCIse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMH0pKSwhdHx8IWUpcmV0dXJuIHZvaWQoImZ1bmN0aW9uIj09dHlwZW9mIGkmJmkoKSk7Y29uc3Qgcz1mdW5jdGlvbihhKXthLmN1cnJlbnRUYXJnZXQ9PT10aGlzJiYodC5yZW1vdmVFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLHMpLGkmJmkoKSx0LmNsYXNzTGlzdC5yZW1vdmUoZSkpfTt0LmFkZEV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIscyksdC5jbGFzc0xpc3QuYWRkKGUpfWRvbmUodCl7dC5zdGF0ZT0iZG9uZSIsdGhpcy50cmlnZ2VyKCJkb25lIix0KTtjb25zdCBlPXRoaXMuZ2V0U2xpZGUoKTtlJiZ0LmluZGV4PT09ZS5pbmRleCYmdGhpcy5vcHRpb24oImF1dG9Gb2N1cyIpJiZ0aGlzLmZvY3VzKCl9c2V0RXJyb3IodCxlKXt0LmVycm9yPWUsdGhpcy5oaWRlTG9hZGluZyh0KSx0aGlzLmNsZWFyQ29udGVudCh0KTtjb25zdCBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2kuY2xhc3NMaXN0LmFkZCgiZmFuY3lib3gtZXJyb3IiKSxpLmlubmVySFRNTD10aGlzLmxvY2FsaXplKGV8fCI8cD57e0VSUk9SfX08L3A+IiksdGhpcy5zZXRDb250ZW50KHQsaSx7c3VmZml4OiJlcnJvciJ9KX1zaG93TG9hZGluZyh0KXt0LnN0YXRlPSJsb2FkaW5nIix0LiRlbC5jbGFzc0xpc3QuYWRkKCJpcy1sb2FkaW5nIik7bGV0IGU9dC4kZWwucXVlcnlTZWxlY3RvcigiLmZhbmN5Ym94X19zcGlubmVyIik7ZXx8KGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5jbGFzc0xpc3QuYWRkKCJmYW5jeWJveF9fc3Bpbm5lciIpLGUuaW5uZXJIVE1MPXRoaXMub3B0aW9uKCJ0ZW1wbGF0ZS5zcGlubmVyIiksZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCgpPT57dGhpcy5DYXJvdXNlbC5QYW56b29tLnZlbG9jaXR5fHx0aGlzLmNsb3NlKCl9KSksdC4kZWwucHJlcGVuZChlKSl9aGlkZUxvYWRpbmcodCl7Y29uc3QgZT10LiRlbCYmdC4kZWwucXVlcnlTZWxlY3RvcigiLmZhbmN5Ym94X19zcGlubmVyIik7ZSYmKGUucmVtb3ZlKCksdC4kZWwuY2xhc3NMaXN0LnJlbW92ZSgiaXMtbG9hZGluZyIpKSwibG9hZGluZyI9PT10LnN0YXRlJiYodGhpcy50cmlnZ2VyKCJsb2FkIix0KSx0LnN0YXRlPSJyZWFkeSIpfW5leHQoKXtjb25zdCB0PXRoaXMuQ2Fyb3VzZWw7dCYmdC5wYWdlcy5sZW5ndGg+MSYmdC5zbGlkZU5leHQoKX1wcmV2KCl7Y29uc3QgdD10aGlzLkNhcm91c2VsO3QmJnQucGFnZXMubGVuZ3RoPjEmJnQuc2xpZGVQcmV2KCl9anVtcFRvKC4uLnQpe3RoaXMuQ2Fyb3VzZWwmJnRoaXMuQ2Fyb3VzZWwuc2xpZGVUbyguLi50KX1pc0Nsb3NpbmcoKXtyZXR1cm5bImNsb3NpbmciLCJjdXN0b21DbG9zaW5nIiwiZGVzdHJveSJdLmluY2x1ZGVzKHRoaXMuc3RhdGUpfWlzVG9wbW9zdCgpe3JldHVybiBCLmdldEluc3RhbmNlKCkuaWQ9PXRoaXMuaWR9Y2xvc2UodCl7aWYodCYmdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaXNDbG9zaW5nKCkpcmV0dXJuO2lmKCExPT09dGhpcy50cmlnZ2VyKCJzaG91bGRDbG9zZSIsdCkpcmV0dXJuO2lmKHRoaXMuc3RhdGU9ImNsb3NpbmciLHRoaXMuQ2Fyb3VzZWwuUGFuem9vbS5kZXN0cm95KCksdGhpcy5kZXRhY2hFdmVudHMoKSx0aGlzLnRyaWdnZXIoImNsb3NpbmciLHQpLCJkZXN0cm95Ij09PXRoaXMuc3RhdGUpcmV0dXJuO3RoaXMuJGNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLHRoaXMuJGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJpcy1jbG9zaW5nIik7Y29uc3QgZT10aGlzLmdldFNsaWRlKCk7aWYodGhpcy5DYXJvdXNlbC5zbGlkZXMuZm9yRWFjaCgodD0+e3QuJGNvbnRlbnQmJnQuaW5kZXghPT1lLmluZGV4JiZ0aGlzLkNhcm91c2VsLnRyaWdnZXIoInJlbW92ZVNsaWRlIix0KX0pKSwiY2xvc2luZyI9PT10aGlzLnN0YXRlKXtjb25zdCB0PXZvaWQgMD09PWUuaGlkZUNsYXNzP3RoaXMub3B0aW9uKCJoaWRlQ2xhc3MiKTplLmhpZGVDbGFzczt0aGlzLmFuaW1hdGVDU1MoZS4kY29udGVudCx0LCgoKT0+e3RoaXMuZGVzdHJveSgpfSksITApfX1kZXN0cm95KCl7aWYoImRlc3Ryb3kiPT09dGhpcy5zdGF0ZSlyZXR1cm47dGhpcy5zdGF0ZT0iZGVzdHJveSIsdGhpcy50cmlnZ2VyKCJkZXN0cm95Iik7Y29uc3QgdD10aGlzLm9wdGlvbigicGxhY2VGb2N1c0JhY2siKT90aGlzLm9wdGlvbigidHJpZ2dlclRhcmdldCIsdGhpcy5nZXRTbGlkZSgpLiR0cmlnZ2VyKTpudWxsO3RoaXMuQ2Fyb3VzZWwuZGVzdHJveSgpLHRoaXMuZGV0YWNoUGx1Z2lucygpLHRoaXMuQ2Fyb3VzZWw9bnVsbCx0aGlzLm9wdGlvbnM9e30sdGhpcy5ldmVudHM9e30sdGhpcy4kY29udGFpbmVyLnJlbW92ZSgpLHRoaXMuJGNvbnRhaW5lcj10aGlzLiRiYWNrZHJvcD10aGlzLiRjYXJvdXNlbD1udWxsLHQmJkModCksUi5kZWxldGUodGhpcy5pZCk7Y29uc3QgZT1CLmdldEluc3RhbmNlKCk7ZT9lLmZvY3VzKCk6KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJ3aXRoLWZhbmN5Ym94IiksZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJpcy11c2luZy1tb3VzZSIpLHRoaXMucmV2ZWFsU2Nyb2xsYmFyKCkpfXN0YXRpYyBzaG93KHQsZT17fSl7cmV0dXJuIG5ldyBCKHQsZSl9c3RhdGljIGZyb21FdmVudCh0LGU9e30pe2lmKHQuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47aWYodC5idXR0b24mJjAhPT10LmJ1dHRvbilyZXR1cm47aWYodC5jdHJsS2V5fHx0Lm1ldGFLZXl8fHQuc2hpZnRLZXkpcmV0dXJuO2NvbnN0IGk9dC5jb21wb3NlZFBhdGgoKVswXTtsZXQgcyxhLG4scj1pO2lmKChyLm1hdGNoZXMoIltkYXRhLWZhbmN5Ym94LXRyaWdnZXJdIil8fChyPXIuY2xvc2VzdCgiW2RhdGEtZmFuY3lib3gtdHJpZ2dlcl0iKSkpJiYoZS50cmlnZ2VyVGFyZ2V0PXIscz1yJiZyLmRhdGFzZXQmJnIuZGF0YXNldC5mYW5jeWJveFRyaWdnZXIpLHMpe2NvbnN0IHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtZmFuY3lib3g9IiR7c30iXWApLGU9cGFyc2VJbnQoci5kYXRhc2V0LmZhbmN5Ym94SW5kZXgsMTApfHwwO3I9dC5sZW5ndGg/dFtlXTpyfUFycmF5LmZyb20oQi5vcGVuZXJzLmtleXMoKSkucmV2ZXJzZSgpLnNvbWUoKGU9PntuPXJ8fGk7bGV0IHM9ITE7dHJ5e24gaW5zdGFuY2VvZiBFbGVtZW50JiYoInN0cmluZyI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgU3RyaW5nKSYmKHM9bi5tYXRjaGVzKGUpfHwobj1uLmNsb3Nlc3QoZSkpKX1jYXRjaCh0KXt9cmV0dXJuISFzJiYodC5wcmV2ZW50RGVmYXVsdCgpLGE9ZSwhMCl9KSk7bGV0IG89ITE7aWYoYSl7ZS5ldmVudD10LGUudGFyZ2V0PW4sbi5vcmlnVGFyZ2V0PWksbz1CLmZyb21PcGVuZXIoYSxlKTtjb25zdCBzPUIuZ2V0SW5zdGFuY2UoKTtzJiYicmVhZHkiPT09cy5zdGF0ZSYmdC5kZXRhaWwmJmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgiaXMtdXNpbmctbW91c2UiKX1yZXR1cm4gb31zdGF0aWMgZnJvbU9wZW5lcih0LGU9e30pe2xldCBpPVtdLHM9ZS5zdGFydEluZGV4fHwwLG49ZS50YXJnZXR8fG51bGw7Y29uc3Qgcj12b2lkIDAhPT0oZT1hKHt9LGUsQi5vcGVuZXJzLmdldCh0KSkpLmdyb3VwQWxsJiZlLmdyb3VwQWxsLG89dm9pZCAwPT09ZS5ncm91cEF0dHI/ImRhdGEtZmFuY3lib3giOmUuZ3JvdXBBdHRyLGw9byYmbj9uLmdldEF0dHJpYnV0ZShgJHtvfWApOiIiO2lmKCFufHxsfHxyKXtjb25zdCBzPWUucm9vdHx8KG4/bi5nZXRSb290Tm9kZSgpOmRvY3VtZW50LmJvZHkpO2k9W10uc2xpY2UuY2FsbChzLnF1ZXJ5U2VsZWN0b3JBbGwodCkpfWlmKG4mJiFyJiYoaT1sP2kuZmlsdGVyKCh0PT50LmdldEF0dHJpYnV0ZShgJHtvfWApPT09bCkpOltuXSksIWkubGVuZ3RoKXJldHVybiExO2NvbnN0IGM9Qi5nZXRJbnN0YW5jZSgpO3JldHVybiEoYyYmaS5pbmRleE9mKGMub3B0aW9ucy4kdHJpZ2dlcik+LTEpJiYocz1uP2kuaW5kZXhPZihuKTpzLGk9aS5tYXAoKGZ1bmN0aW9uKHQpe2NvbnN0IGU9WyJmYWxzZSIsIjAiLCJubyIsIm51bGwiLCJ1bmRlZmluZWQiXSxpPVsidHJ1ZSIsIjEiLCJ5ZXMiXSxzPU9iamVjdC5hc3NpZ24oe30sdC5kYXRhc2V0KSxhPXt9O2ZvcihsZXRbdCxuXW9mIE9iamVjdC5lbnRyaWVzKHMpKWlmKCJmYW5jeWJveCIhPT10KWlmKCJ3aWR0aCI9PT10fHwiaGVpZ2h0Ij09PXQpYVtgXyR7dH1gXT1uO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBufHxuIGluc3RhbmNlb2YgU3RyaW5nKWlmKGUuaW5kZXhPZihuKT4tMSlhW3RdPSExO2Vsc2UgaWYoaS5pbmRleE9mKGFbdF0pPi0xKWFbdF09ITA7ZWxzZSB0cnl7YVt0XT1KU09OLnBhcnNlKG4pfWNhdGNoKGUpe2FbdF09bn1lbHNlIGFbdF09bjtyZXR1cm4gdCBpbnN0YW5jZW9mIEVsZW1lbnQmJihhLiR0cmlnZ2VyPXQpLGF9KSksbmV3IEIoaSxhKHt9LGUse3N0YXJ0SW5kZXg6cywkdHJpZ2dlcjpufSkpKX1zdGF0aWMgYmluZCh0LGU9e30pe2Z1bmN0aW9uIGkoKXtkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixCLmZyb21FdmVudCwhMSl9dyYmKEIub3BlbmVycy5zaXplfHwoL2NvbXBsZXRlfGludGVyYWN0aXZlfGxvYWRlZC8udGVzdChkb2N1bWVudC5yZWFkeVN0YXRlKT9pKCk6ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsaSkpLEIub3BlbmVycy5zZXQodCxlKSl9c3RhdGljIHVuYmluZCh0KXtCLm9wZW5lcnMuZGVsZXRlKHQpLEIub3BlbmVycy5zaXplfHxCLmRlc3Ryb3koKX1zdGF0aWMgZGVzdHJveSgpe2xldCB0O2Zvcig7dD1CLmdldEluc3RhbmNlKCk7KXQuZGVzdHJveSgpO0Iub3BlbmVycz1uZXcgTWFwLGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLEIuZnJvbUV2ZW50LCExKX1zdGF0aWMgZ2V0SW5zdGFuY2UodCl7cmV0dXJuIHQ/Ui5nZXQodCk6QXJyYXkuZnJvbShSLnZhbHVlcygpKS5yZXZlcnNlKCkuZmluZCgodD0+IXQuaXNDbG9zaW5nKCkmJnQpKXx8bnVsbH1zdGF0aWMgY2xvc2UodD0hMCxlKXtpZih0KWZvcihjb25zdCB0IG9mIFIudmFsdWVzKCkpdC5jbG9zZShlKTtlbHNle2NvbnN0IHQ9Qi5nZXRJbnN0YW5jZSgpO3QmJnQuY2xvc2UoZSl9fXN0YXRpYyBuZXh0KCl7Y29uc3QgdD1CLmdldEluc3RhbmNlKCk7dCYmdC5uZXh0KCl9c3RhdGljIHByZXYoKXtjb25zdCB0PUIuZ2V0SW5zdGFuY2UoKTt0JiZ0LnByZXYoKX19Qi52ZXJzaW9uPSI0LjAuMzEiLEIuZGVmYXVsdHM9TixCLm9wZW5lcnM9bmV3IE1hcCxCLlBsdWdpbnM9eixCLmJpbmQoIltkYXRhLWZhbmN5Ym94XSIpO2Zvcihjb25zdFt0LGVdb2YgT2JqZWN0LmVudHJpZXMoQi5QbHVnaW5zfHx7fSkpImZ1bmN0aW9uIj09dHlwZW9mIGUuY3JlYXRlJiZlLmNyZWF0ZShCKX0sNTk5OmZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7aS5kKGUse014OmZ1bmN0aW9uKCl7cmV0dXJuIF99LFFyOmZ1bmN0aW9uKCl7cmV0dXJuIGp9fSk7Y2xhc3Mgc3tjb25zdHJ1Y3Rvcih0LGUsaSl7dGhpcy5ldmVudFRhcmdldD10LHRoaXMuZXZlbnROYW1lPWUsdGhpcy5ldmVudE9wdGlvbnM9aSx0aGlzLnVub3JkZXJlZEJpbmRpbmdzPW5ldyBTZXR9Y29ubmVjdCgpe3RoaXMuZXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmV2ZW50TmFtZSx0aGlzLHRoaXMuZXZlbnRPcHRpb25zKX1kaXNjb25uZWN0KCl7dGhpcy5ldmVudFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuZXZlbnROYW1lLHRoaXMsdGhpcy5ldmVudE9wdGlvbnMpfWJpbmRpbmdDb25uZWN0ZWQodCl7dGhpcy51bm9yZGVyZWRCaW5kaW5ncy5hZGQodCl9YmluZGluZ0Rpc2Nvbm5lY3RlZCh0KXt0aGlzLnVub3JkZXJlZEJpbmRpbmdzLmRlbGV0ZSh0KX1oYW5kbGVFdmVudCh0KXtjb25zdCBlPWZ1bmN0aW9uKHQpe2lmKCJpbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQiaW4gdClyZXR1cm4gdDt7Y29uc3R7c3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmV9PXQ7cmV0dXJuIE9iamVjdC5hc3NpZ24odCx7aW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiExLHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpe3RoaXMuaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPSEwLGUuY2FsbCh0aGlzKX19KX19KHQpO2Zvcihjb25zdCB0IG9mIHRoaXMuYmluZGluZ3Mpe2lmKGUuaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKWJyZWFrO3QuaGFuZGxlRXZlbnQoZSl9fWdldCBiaW5kaW5ncygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMudW5vcmRlcmVkQmluZGluZ3MpLnNvcnQoKCh0LGUpPT57Y29uc3QgaT10LmluZGV4LHM9ZS5pbmRleDtyZXR1cm4gaTxzPy0xOmk+cz8xOjB9KSl9fWNsYXNzIGF7Y29uc3RydWN0b3IodCl7dGhpcy5hcHBsaWNhdGlvbj10LHRoaXMuZXZlbnRMaXN0ZW5lck1hcHM9bmV3IE1hcCx0aGlzLnN0YXJ0ZWQ9ITF9c3RhcnQoKXt0aGlzLnN0YXJ0ZWR8fCh0aGlzLnN0YXJ0ZWQ9ITAsdGhpcy5ldmVudExpc3RlbmVycy5mb3JFYWNoKCh0PT50LmNvbm5lY3QoKSkpKX1zdG9wKCl7dGhpcy5zdGFydGVkJiYodGhpcy5zdGFydGVkPSExLHRoaXMuZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgodD0+dC5kaXNjb25uZWN0KCkpKSl9Z2V0IGV2ZW50TGlzdGVuZXJzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5ldmVudExpc3RlbmVyTWFwcy52YWx1ZXMoKSkucmVkdWNlKCgodCxlKT0+dC5jb25jYXQoQXJyYXkuZnJvbShlLnZhbHVlcygpKSkpLFtdKX1iaW5kaW5nQ29ubmVjdGVkKHQpe3RoaXMuZmV0Y2hFdmVudExpc3RlbmVyRm9yQmluZGluZyh0KS5iaW5kaW5nQ29ubmVjdGVkKHQpfWJpbmRpbmdEaXNjb25uZWN0ZWQodCl7dGhpcy5mZXRjaEV2ZW50TGlzdGVuZXJGb3JCaW5kaW5nKHQpLmJpbmRpbmdEaXNjb25uZWN0ZWQodCl9aGFuZGxlRXJyb3IodCxlLGk9e30pe3RoaXMuYXBwbGljYXRpb24uaGFuZGxlRXJyb3IodCxgRXJyb3IgJHtlfWAsaSl9ZmV0Y2hFdmVudExpc3RlbmVyRm9yQmluZGluZyh0KXtjb25zdHtldmVudFRhcmdldDplLGV2ZW50TmFtZTppLGV2ZW50T3B0aW9uczpzfT10O3JldHVybiB0aGlzLmZldGNoRXZlbnRMaXN0ZW5lcihlLGkscyl9ZmV0Y2hFdmVudExpc3RlbmVyKHQsZSxpKXtjb25zdCBzPXRoaXMuZmV0Y2hFdmVudExpc3RlbmVyTWFwRm9yRXZlbnRUYXJnZXQodCksYT10aGlzLmNhY2hlS2V5KGUsaSk7bGV0IG49cy5nZXQoYSk7cmV0dXJuIG58fChuPXRoaXMuY3JlYXRlRXZlbnRMaXN0ZW5lcih0LGUsaSkscy5zZXQoYSxuKSksbn1jcmVhdGVFdmVudExpc3RlbmVyKHQsZSxpKXtjb25zdCBhPW5ldyBzKHQsZSxpKTtyZXR1cm4gdGhpcy5zdGFydGVkJiZhLmNvbm5lY3QoKSxhfWZldGNoRXZlbnRMaXN0ZW5lck1hcEZvckV2ZW50VGFyZ2V0KHQpe2xldCBlPXRoaXMuZXZlbnRMaXN0ZW5lck1hcHMuZ2V0KHQpO3JldHVybiBlfHwoZT1uZXcgTWFwLHRoaXMuZXZlbnRMaXN0ZW5lck1hcHMuc2V0KHQsZSkpLGV9Y2FjaGVLZXkodCxlKXtjb25zdCBpPVt0XTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuc29ydCgpLmZvckVhY2goKHQ9PntpLnB1c2goYCR7ZVt0XT8iIjoiISJ9JHt0fWApfSkpLGkuam9pbigiOiIpfX1jb25zdCBuPS9eKCguKz8pKEAod2luZG93fGRvY3VtZW50KSk/LT4pPyguKz8pKCMoW146XSs/KSkoOiguKykpPyQvO2Z1bmN0aW9uIHIodCl7cmV0dXJuIHQucmVwbGFjZSgvKD86W18tXSkoW2EtejAtOV0pL2csKCh0LGUpPT5lLnRvVXBwZXJDYXNlKCkpKX1mdW5jdGlvbiBvKHQpe3JldHVybiB0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gdC5yZXBsYWNlKC8oW0EtWl0pL2csKCh0LGUpPT5gLSR7ZS50b0xvd2VyQ2FzZSgpfWApKX1jb25zdCBjPXthOnQ9PiJjbGljayIsYnV0dG9uOnQ9PiJjbGljayIsZm9ybTp0PT4ic3VibWl0IixkZXRhaWxzOnQ9PiJ0b2dnbGUiLGlucHV0OnQ9PiJzdWJtaXQiPT10LmdldEF0dHJpYnV0ZSgidHlwZSIpPyJjbGljayI6ImlucHV0IixzZWxlY3Q6dD0+ImNoYW5nZSIsdGV4dGFyZWE6dD0+ImlucHV0In07ZnVuY3Rpb24gaCh0KXt0aHJvdyBuZXcgRXJyb3IodCl9ZnVuY3Rpb24gZCh0KXt0cnl7cmV0dXJuIEpTT04ucGFyc2UodCl9Y2F0Y2goZSl7cmV0dXJuIHR9fWNsYXNzIHV7Y29uc3RydWN0b3IodCxlKXt0aGlzLmNvbnRleHQ9dCx0aGlzLmFjdGlvbj1lfWdldCBpbmRleCgpe3JldHVybiB0aGlzLmFjdGlvbi5pbmRleH1nZXQgZXZlbnRUYXJnZXQoKXtyZXR1cm4gdGhpcy5hY3Rpb24uZXZlbnRUYXJnZXR9Z2V0IGV2ZW50T3B0aW9ucygpe3JldHVybiB0aGlzLmFjdGlvbi5ldmVudE9wdGlvbnN9Z2V0IGlkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5jb250ZXh0LmlkZW50aWZpZXJ9aGFuZGxlRXZlbnQodCl7dGhpcy53aWxsQmVJbnZva2VkQnlFdmVudCh0KSYmdGhpcy5pbnZva2VXaXRoRXZlbnQodCl9Z2V0IGV2ZW50TmFtZSgpe3JldHVybiB0aGlzLmFjdGlvbi5ldmVudE5hbWV9Z2V0IG1ldGhvZCgpe2NvbnN0IHQ9dGhpcy5jb250cm9sbGVyW3RoaXMubWV0aG9kTmFtZV07aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKGBBY3Rpb24gIiR7dGhpcy5hY3Rpb259IiByZWZlcmVuY2VzIHVuZGVmaW5lZCBtZXRob2QgIiR7dGhpcy5tZXRob2ROYW1lfSJgKX1pbnZva2VXaXRoRXZlbnQodCl7Y29uc3R7dGFyZ2V0OmUsY3VycmVudFRhcmdldDppfT10O3RyeXtjb25zdHtwYXJhbXM6c309dGhpcy5hY3Rpb24sYT1PYmplY3QuYXNzaWduKHQse3BhcmFtczpzfSk7dGhpcy5tZXRob2QuY2FsbCh0aGlzLmNvbnRyb2xsZXIsYSksdGhpcy5jb250ZXh0LmxvZ0RlYnVnQWN0aXZpdHkodGhpcy5tZXRob2ROYW1lLHtldmVudDp0LHRhcmdldDplLGN1cnJlbnRUYXJnZXQ6aSxhY3Rpb246dGhpcy5tZXRob2ROYW1lfSl9Y2F0Y2goZSl7Y29uc3R7aWRlbnRpZmllcjppLGNvbnRyb2xsZXI6cyxlbGVtZW50OmEsaW5kZXg6bn09dGhpcyxyPXtpZGVudGlmaWVyOmksY29udHJvbGxlcjpzLGVsZW1lbnQ6YSxpbmRleDpuLGV2ZW50OnR9O3RoaXMuY29udGV4dC5oYW5kbGVFcnJvcihlLGBpbnZva2luZyBhY3Rpb24gIiR7dGhpcy5hY3Rpb259ImAscil9fXdpbGxCZUludm9rZWRCeUV2ZW50KHQpe2NvbnN0IGU9dC50YXJnZXQ7cmV0dXJuIHRoaXMuZWxlbWVudD09PWV8fChlIGluc3RhbmNlb2YgRWxlbWVudCYmdGhpcy5lbGVtZW50LmNvbnRhaW5zKGUpP3RoaXMuc2NvcGUuY29udGFpbnNFbGVtZW50KGUpOnRoaXMuc2NvcGUuY29udGFpbnNFbGVtZW50KHRoaXMuYWN0aW9uLmVsZW1lbnQpKX1nZXQgY29udHJvbGxlcigpe3JldHVybiB0aGlzLmNvbnRleHQuY29udHJvbGxlcn1nZXQgbWV0aG9kTmFtZSgpe3JldHVybiB0aGlzLmFjdGlvbi5tZXRob2ROYW1lfWdldCBlbGVtZW50KCl7cmV0dXJuIHRoaXMuc2NvcGUuZWxlbWVudH1nZXQgc2NvcGUoKXtyZXR1cm4gdGhpcy5jb250ZXh0LnNjb3BlfX1jbGFzcyBwe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5tdXRhdGlvbk9ic2VydmVySW5pdD17YXR0cmlidXRlczohMCxjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0sdGhpcy5lbGVtZW50PXQsdGhpcy5zdGFydGVkPSExLHRoaXMuZGVsZWdhdGU9ZSx0aGlzLmVsZW1lbnRzPW5ldyBTZXQsdGhpcy5tdXRhdGlvbk9ic2VydmVyPW5ldyBNdXRhdGlvbk9ic2VydmVyKCh0PT50aGlzLnByb2Nlc3NNdXRhdGlvbnModCkpKX1zdGFydCgpe3RoaXMuc3RhcnRlZHx8KHRoaXMuc3RhcnRlZD0hMCx0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsZW1lbnQsdGhpcy5tdXRhdGlvbk9ic2VydmVySW5pdCksdGhpcy5yZWZyZXNoKCkpfXBhdXNlKHQpe3RoaXMuc3RhcnRlZCYmKHRoaXMubXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5zdGFydGVkPSExKSx0KCksdGhpcy5zdGFydGVkfHwodGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50LHRoaXMubXV0YXRpb25PYnNlcnZlckluaXQpLHRoaXMuc3RhcnRlZD0hMCl9c3RvcCgpe3RoaXMuc3RhcnRlZCYmKHRoaXMubXV0YXRpb25PYnNlcnZlci50YWtlUmVjb3JkcygpLHRoaXMubXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5zdGFydGVkPSExKX1yZWZyZXNoKCl7aWYodGhpcy5zdGFydGVkKXtjb25zdCB0PW5ldyBTZXQodGhpcy5tYXRjaEVsZW1lbnRzSW5UcmVlKCkpO2Zvcihjb25zdCBlIG9mIEFycmF5LmZyb20odGhpcy5lbGVtZW50cykpdC5oYXMoZSl8fHRoaXMucmVtb3ZlRWxlbWVudChlKTtmb3IoY29uc3QgZSBvZiBBcnJheS5mcm9tKHQpKXRoaXMuYWRkRWxlbWVudChlKX19cHJvY2Vzc011dGF0aW9ucyh0KXtpZih0aGlzLnN0YXJ0ZWQpZm9yKGNvbnN0IGUgb2YgdCl0aGlzLnByb2Nlc3NNdXRhdGlvbihlKX1wcm9jZXNzTXV0YXRpb24odCl7ImF0dHJpYnV0ZXMiPT10LnR5cGU/dGhpcy5wcm9jZXNzQXR0cmlidXRlQ2hhbmdlKHQudGFyZ2V0LHQuYXR0cmlidXRlTmFtZSk6ImNoaWxkTGlzdCI9PXQudHlwZSYmKHRoaXMucHJvY2Vzc1JlbW92ZWROb2Rlcyh0LnJlbW92ZWROb2RlcyksdGhpcy5wcm9jZXNzQWRkZWROb2Rlcyh0LmFkZGVkTm9kZXMpKX1wcm9jZXNzQXR0cmlidXRlQ2hhbmdlKHQsZSl7Y29uc3QgaT10O3RoaXMuZWxlbWVudHMuaGFzKGkpP3RoaXMuZGVsZWdhdGUuZWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQmJnRoaXMubWF0Y2hFbGVtZW50KGkpP3RoaXMuZGVsZWdhdGUuZWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQoaSxlKTp0aGlzLnJlbW92ZUVsZW1lbnQoaSk6dGhpcy5tYXRjaEVsZW1lbnQoaSkmJnRoaXMuYWRkRWxlbWVudChpKX1wcm9jZXNzUmVtb3ZlZE5vZGVzKHQpe2Zvcihjb25zdCBlIG9mIEFycmF5LmZyb20odCkpe2NvbnN0IHQ9dGhpcy5lbGVtZW50RnJvbU5vZGUoZSk7dCYmdGhpcy5wcm9jZXNzVHJlZSh0LHRoaXMucmVtb3ZlRWxlbWVudCl9fXByb2Nlc3NBZGRlZE5vZGVzKHQpe2Zvcihjb25zdCBlIG9mIEFycmF5LmZyb20odCkpe2NvbnN0IHQ9dGhpcy5lbGVtZW50RnJvbU5vZGUoZSk7dCYmdGhpcy5lbGVtZW50SXNBY3RpdmUodCkmJnRoaXMucHJvY2Vzc1RyZWUodCx0aGlzLmFkZEVsZW1lbnQpfX1tYXRjaEVsZW1lbnQodCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUubWF0Y2hFbGVtZW50KHQpfW1hdGNoRWxlbWVudHNJblRyZWUodD10aGlzLmVsZW1lbnQpe3JldHVybiB0aGlzLmRlbGVnYXRlLm1hdGNoRWxlbWVudHNJblRyZWUodCl9cHJvY2Vzc1RyZWUodCxlKXtmb3IoY29uc3QgaSBvZiB0aGlzLm1hdGNoRWxlbWVudHNJblRyZWUodCkpZS5jYWxsKHRoaXMsaSl9ZWxlbWVudEZyb21Ob2RlKHQpe2lmKHQubm9kZVR5cGU9PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiB0fWVsZW1lbnRJc0FjdGl2ZSh0KXtyZXR1cm4gdC5pc0Nvbm5lY3RlZD09dGhpcy5lbGVtZW50LmlzQ29ubmVjdGVkJiZ0aGlzLmVsZW1lbnQuY29udGFpbnModCl9YWRkRWxlbWVudCh0KXt0aGlzLmVsZW1lbnRzLmhhcyh0KXx8dGhpcy5lbGVtZW50SXNBY3RpdmUodCkmJih0aGlzLmVsZW1lbnRzLmFkZCh0KSx0aGlzLmRlbGVnYXRlLmVsZW1lbnRNYXRjaGVkJiZ0aGlzLmRlbGVnYXRlLmVsZW1lbnRNYXRjaGVkKHQpKX1yZW1vdmVFbGVtZW50KHQpe3RoaXMuZWxlbWVudHMuaGFzKHQpJiYodGhpcy5lbGVtZW50cy5kZWxldGUodCksdGhpcy5kZWxlZ2F0ZS5lbGVtZW50VW5tYXRjaGVkJiZ0aGlzLmRlbGVnYXRlLmVsZW1lbnRVbm1hdGNoZWQodCkpfX1jbGFzcyBne2NvbnN0cnVjdG9yKHQsZSxpKXt0aGlzLmF0dHJpYnV0ZU5hbWU9ZSx0aGlzLmRlbGVnYXRlPWksdGhpcy5lbGVtZW50T2JzZXJ2ZXI9bmV3IHAodCx0aGlzKX1nZXQgZWxlbWVudCgpe3JldHVybiB0aGlzLmVsZW1lbnRPYnNlcnZlci5lbGVtZW50fWdldCBzZWxlY3Rvcigpe3JldHVybmBbJHt0aGlzLmF0dHJpYnV0ZU5hbWV9XWB9c3RhcnQoKXt0aGlzLmVsZW1lbnRPYnNlcnZlci5zdGFydCgpfXBhdXNlKHQpe3RoaXMuZWxlbWVudE9ic2VydmVyLnBhdXNlKHQpfXN0b3AoKXt0aGlzLmVsZW1lbnRPYnNlcnZlci5zdG9wKCl9cmVmcmVzaCgpe3RoaXMuZWxlbWVudE9ic2VydmVyLnJlZnJlc2goKX1nZXQgc3RhcnRlZCgpe3JldHVybiB0aGlzLmVsZW1lbnRPYnNlcnZlci5zdGFydGVkfW1hdGNoRWxlbWVudCh0KXtyZXR1cm4gdC5oYXNBdHRyaWJ1dGUodGhpcy5hdHRyaWJ1dGVOYW1lKX1tYXRjaEVsZW1lbnRzSW5UcmVlKHQpe2NvbnN0IGU9dGhpcy5tYXRjaEVsZW1lbnQodCk/W3RdOltdLGk9QXJyYXkuZnJvbSh0LnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5zZWxlY3RvcikpO3JldHVybiBlLmNvbmNhdChpKX1lbGVtZW50TWF0Y2hlZCh0KXt0aGlzLmRlbGVnYXRlLmVsZW1lbnRNYXRjaGVkQXR0cmlidXRlJiZ0aGlzLmRlbGVnYXRlLmVsZW1lbnRNYXRjaGVkQXR0cmlidXRlKHQsdGhpcy5hdHRyaWJ1dGVOYW1lKX1lbGVtZW50VW5tYXRjaGVkKHQpe3RoaXMuZGVsZWdhdGUuZWxlbWVudFVubWF0Y2hlZEF0dHJpYnV0ZSYmdGhpcy5kZWxlZ2F0ZS5lbGVtZW50VW5tYXRjaGVkQXR0cmlidXRlKHQsdGhpcy5hdHRyaWJ1dGVOYW1lKX1lbGVtZW50QXR0cmlidXRlQ2hhbmdlZCh0LGUpe3RoaXMuZGVsZWdhdGUuZWxlbWVudEF0dHJpYnV0ZVZhbHVlQ2hhbmdlZCYmdGhpcy5hdHRyaWJ1dGVOYW1lPT1lJiZ0aGlzLmRlbGVnYXRlLmVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUNoYW5nZWQodCxlKX19Y2xhc3MgZntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuZWxlbWVudD10LHRoaXMuZGVsZWdhdGU9ZSx0aGlzLnN0YXJ0ZWQ9ITEsdGhpcy5zdHJpbmdNYXA9bmV3IE1hcCx0aGlzLm11dGF0aW9uT2JzZXJ2ZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHQ9PnRoaXMucHJvY2Vzc011dGF0aW9ucyh0KSkpfXN0YXJ0KCl7dGhpcy5zdGFydGVkfHwodGhpcy5zdGFydGVkPSEwLHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudCx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVPbGRWYWx1ZTohMH0pLHRoaXMucmVmcmVzaCgpKX1zdG9wKCl7dGhpcy5zdGFydGVkJiYodGhpcy5tdXRhdGlvbk9ic2VydmVyLnRha2VSZWNvcmRzKCksdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLnN0YXJ0ZWQ9ITEpfXJlZnJlc2goKXtpZih0aGlzLnN0YXJ0ZWQpZm9yKGNvbnN0IHQgb2YgdGhpcy5rbm93bkF0dHJpYnV0ZU5hbWVzKXRoaXMucmVmcmVzaEF0dHJpYnV0ZSh0LG51bGwpfXByb2Nlc3NNdXRhdGlvbnModCl7aWYodGhpcy5zdGFydGVkKWZvcihjb25zdCBlIG9mIHQpdGhpcy5wcm9jZXNzTXV0YXRpb24oZSl9cHJvY2Vzc011dGF0aW9uKHQpe2NvbnN0IGU9dC5hdHRyaWJ1dGVOYW1lO2UmJnRoaXMucmVmcmVzaEF0dHJpYnV0ZShlLHQub2xkVmFsdWUpfXJlZnJlc2hBdHRyaWJ1dGUodCxlKXtjb25zdCBpPXRoaXMuZGVsZWdhdGUuZ2V0U3RyaW5nTWFwS2V5Rm9yQXR0cmlidXRlKHQpO2lmKG51bGwhPWkpe3RoaXMuc3RyaW5nTWFwLmhhcyh0KXx8dGhpcy5zdHJpbmdNYXBLZXlBZGRlZChpLHQpO2NvbnN0IHM9dGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSh0KTtpZih0aGlzLnN0cmluZ01hcC5nZXQodCkhPXMmJnRoaXMuc3RyaW5nTWFwVmFsdWVDaGFuZ2VkKHMsaSxlKSxudWxsPT1zKXtjb25zdCBlPXRoaXMuc3RyaW5nTWFwLmdldCh0KTt0aGlzLnN0cmluZ01hcC5kZWxldGUodCksZSYmdGhpcy5zdHJpbmdNYXBLZXlSZW1vdmVkKGksdCxlKX1lbHNlIHRoaXMuc3RyaW5nTWFwLnNldCh0LHMpfX1zdHJpbmdNYXBLZXlBZGRlZCh0LGUpe3RoaXMuZGVsZWdhdGUuc3RyaW5nTWFwS2V5QWRkZWQmJnRoaXMuZGVsZWdhdGUuc3RyaW5nTWFwS2V5QWRkZWQodCxlKX1zdHJpbmdNYXBWYWx1ZUNoYW5nZWQodCxlLGkpe3RoaXMuZGVsZWdhdGUuc3RyaW5nTWFwVmFsdWVDaGFuZ2VkJiZ0aGlzLmRlbGVnYXRlLnN0cmluZ01hcFZhbHVlQ2hhbmdlZCh0LGUsaSl9c3RyaW5nTWFwS2V5UmVtb3ZlZCh0LGUsaSl7dGhpcy5kZWxlZ2F0ZS5zdHJpbmdNYXBLZXlSZW1vdmVkJiZ0aGlzLmRlbGVnYXRlLnN0cmluZ01hcEtleVJlbW92ZWQodCxlLGkpfWdldCBrbm93bkF0dHJpYnV0ZU5hbWVzKCl7cmV0dXJuIEFycmF5LmZyb20obmV3IFNldCh0aGlzLmN1cnJlbnRBdHRyaWJ1dGVOYW1lcy5jb25jYXQodGhpcy5yZWNvcmRlZEF0dHJpYnV0ZU5hbWVzKSkpfWdldCBjdXJyZW50QXR0cmlidXRlTmFtZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnQuYXR0cmlidXRlcykubWFwKCh0PT50Lm5hbWUpKX1nZXQgcmVjb3JkZWRBdHRyaWJ1dGVOYW1lcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuc3RyaW5nTWFwLmtleXMoKSl9fWZ1bmN0aW9uIG0odCxlKXtsZXQgaT10LmdldChlKTtyZXR1cm4gaXx8KGk9bmV3IFNldCx0LnNldChlLGkpKSxpfWNsYXNzIHZ7Y29uc3RydWN0b3IoKXt0aGlzLnZhbHVlc0J5S2V5PW5ldyBNYXB9Z2V0IGtleXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnZhbHVlc0J5S2V5LmtleXMoKSl9Z2V0IHZhbHVlcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMudmFsdWVzQnlLZXkudmFsdWVzKCkpLnJlZHVjZSgoKHQsZSk9PnQuY29uY2F0KEFycmF5LmZyb20oZSkpKSxbXSl9Z2V0IHNpemUoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnZhbHVlc0J5S2V5LnZhbHVlcygpKS5yZWR1Y2UoKCh0LGUpPT50K2Uuc2l6ZSksMCl9YWRkKHQsZSl7IWZ1bmN0aW9uKHQsZSxpKXttKHQsZSkuYWRkKGkpfSh0aGlzLnZhbHVlc0J5S2V5LHQsZSl9ZGVsZXRlKHQsZSl7IWZ1bmN0aW9uKHQsZSxpKXttKHQsZSkuZGVsZXRlKGkpLGZ1bmN0aW9uKHQsZSl7Y29uc3QgaT10LmdldChlKTtudWxsIT1pJiYwPT1pLnNpemUmJnQuZGVsZXRlKGUpfSh0LGUpfSh0aGlzLnZhbHVlc0J5S2V5LHQsZSl9aGFzKHQsZSl7Y29uc3QgaT10aGlzLnZhbHVlc0J5S2V5LmdldCh0KTtyZXR1cm4gbnVsbCE9aSYmaS5oYXMoZSl9aGFzS2V5KHQpe3JldHVybiB0aGlzLnZhbHVlc0J5S2V5Lmhhcyh0KX1oYXNWYWx1ZSh0KXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnZhbHVlc0J5S2V5LnZhbHVlcygpKS5zb21lKChlPT5lLmhhcyh0KSkpfWdldFZhbHVlc0ZvcktleSh0KXtjb25zdCBlPXRoaXMudmFsdWVzQnlLZXkuZ2V0KHQpO3JldHVybiBlP0FycmF5LmZyb20oZSk6W119Z2V0S2V5c0ZvclZhbHVlKHQpe3JldHVybiBBcnJheS5mcm9tKHRoaXMudmFsdWVzQnlLZXkpLmZpbHRlcigoKFtlLGldKT0+aS5oYXModCkpKS5tYXAoKChbdCxlXSk9PnQpKX19Y2xhc3MgeHtjb25zdHJ1Y3Rvcih0LGUsaSl7dGhpcy5hdHRyaWJ1dGVPYnNlcnZlcj1uZXcgZyh0LGUsdGhpcyksdGhpcy5kZWxlZ2F0ZT1pLHRoaXMudG9rZW5zQnlFbGVtZW50PW5ldyB2fWdldCBzdGFydGVkKCl7cmV0dXJuIHRoaXMuYXR0cmlidXRlT2JzZXJ2ZXIuc3RhcnRlZH1zdGFydCgpe3RoaXMuYXR0cmlidXRlT2JzZXJ2ZXIuc3RhcnQoKX1wYXVzZSh0KXt0aGlzLmF0dHJpYnV0ZU9ic2VydmVyLnBhdXNlKHQpfXN0b3AoKXt0aGlzLmF0dHJpYnV0ZU9ic2VydmVyLnN0b3AoKX1yZWZyZXNoKCl7dGhpcy5hdHRyaWJ1dGVPYnNlcnZlci5yZWZyZXNoKCl9Z2V0IGVsZW1lbnQoKXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVPYnNlcnZlci5lbGVtZW50fWdldCBhdHRyaWJ1dGVOYW1lKCl7cmV0dXJuIHRoaXMuYXR0cmlidXRlT2JzZXJ2ZXIuYXR0cmlidXRlTmFtZX1lbGVtZW50TWF0Y2hlZEF0dHJpYnV0ZSh0KXt0aGlzLnRva2Vuc01hdGNoZWQodGhpcy5yZWFkVG9rZW5zRm9yRWxlbWVudCh0KSl9ZWxlbWVudEF0dHJpYnV0ZVZhbHVlQ2hhbmdlZCh0KXtjb25zdFtlLGldPXRoaXMucmVmcmVzaFRva2Vuc0ZvckVsZW1lbnQodCk7dGhpcy50b2tlbnNVbm1hdGNoZWQoZSksdGhpcy50b2tlbnNNYXRjaGVkKGkpfWVsZW1lbnRVbm1hdGNoZWRBdHRyaWJ1dGUodCl7dGhpcy50b2tlbnNVbm1hdGNoZWQodGhpcy50b2tlbnNCeUVsZW1lbnQuZ2V0VmFsdWVzRm9yS2V5KHQpKX10b2tlbnNNYXRjaGVkKHQpe3QuZm9yRWFjaCgodD0+dGhpcy50b2tlbk1hdGNoZWQodCkpKX10b2tlbnNVbm1hdGNoZWQodCl7dC5mb3JFYWNoKCh0PT50aGlzLnRva2VuVW5tYXRjaGVkKHQpKSl9dG9rZW5NYXRjaGVkKHQpe3RoaXMuZGVsZWdhdGUudG9rZW5NYXRjaGVkKHQpLHRoaXMudG9rZW5zQnlFbGVtZW50LmFkZCh0LmVsZW1lbnQsdCl9dG9rZW5Vbm1hdGNoZWQodCl7dGhpcy5kZWxlZ2F0ZS50b2tlblVubWF0Y2hlZCh0KSx0aGlzLnRva2Vuc0J5RWxlbWVudC5kZWxldGUodC5lbGVtZW50LHQpfXJlZnJlc2hUb2tlbnNGb3JFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy50b2tlbnNCeUVsZW1lbnQuZ2V0VmFsdWVzRm9yS2V5KHQpLGk9dGhpcy5yZWFkVG9rZW5zRm9yRWxlbWVudCh0KSxzPWZ1bmN0aW9uKHQsZSl7Y29uc3QgaT1NYXRoLm1heCh0Lmxlbmd0aCxlLmxlbmd0aCk7cmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDppfSwoKGkscyk9Plt0W3NdLGVbc11dKSl9KGUsaSkuZmluZEluZGV4KCgoW3QsZV0pPT57cmV0dXJuIHM9ZSwhKChpPXQpJiZzJiZpLmluZGV4PT1zLmluZGV4JiZpLmNvbnRlbnQ9PXMuY29udGVudCk7dmFyIGksc30pKTtyZXR1cm4tMT09cz9bW10sW11dOltlLnNsaWNlKHMpLGkuc2xpY2UocyldfXJlYWRUb2tlbnNGb3JFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5hdHRyaWJ1dGVOYW1lO3JldHVybiBmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKHQ9PnQubGVuZ3RoKSkubWFwKCgodCxzKT0+KHtlbGVtZW50OmUsYXR0cmlidXRlTmFtZTppLGNvbnRlbnQ6dCxpbmRleDpzfSkpKX0odC5nZXRBdHRyaWJ1dGUoZSl8fCIiLHQsZSl9fWNsYXNzIGJ7Y29uc3RydWN0b3IodCxlLGkpe3RoaXMudG9rZW5MaXN0T2JzZXJ2ZXI9bmV3IHgodCxlLHRoaXMpLHRoaXMuZGVsZWdhdGU9aSx0aGlzLnBhcnNlUmVzdWx0c0J5VG9rZW49bmV3IFdlYWtNYXAsdGhpcy52YWx1ZXNCeVRva2VuQnlFbGVtZW50PW5ldyBXZWFrTWFwfWdldCBzdGFydGVkKCl7cmV0dXJuIHRoaXMudG9rZW5MaXN0T2JzZXJ2ZXIuc3RhcnRlZH1zdGFydCgpe3RoaXMudG9rZW5MaXN0T2JzZXJ2ZXIuc3RhcnQoKX1zdG9wKCl7dGhpcy50b2tlbkxpc3RPYnNlcnZlci5zdG9wKCl9cmVmcmVzaCgpe3RoaXMudG9rZW5MaXN0T2JzZXJ2ZXIucmVmcmVzaCgpfWdldCBlbGVtZW50KCl7cmV0dXJuIHRoaXMudG9rZW5MaXN0T2JzZXJ2ZXIuZWxlbWVudH1nZXQgYXR0cmlidXRlTmFtZSgpe3JldHVybiB0aGlzLnRva2VuTGlzdE9ic2VydmVyLmF0dHJpYnV0ZU5hbWV9dG9rZW5NYXRjaGVkKHQpe2NvbnN0e2VsZW1lbnQ6ZX09dCx7dmFsdWU6aX09dGhpcy5mZXRjaFBhcnNlUmVzdWx0Rm9yVG9rZW4odCk7aSYmKHRoaXMuZmV0Y2hWYWx1ZXNCeVRva2VuRm9yRWxlbWVudChlKS5zZXQodCxpKSx0aGlzLmRlbGVnYXRlLmVsZW1lbnRNYXRjaGVkVmFsdWUoZSxpKSl9dG9rZW5Vbm1hdGNoZWQodCl7Y29uc3R7ZWxlbWVudDplfT10LHt2YWx1ZTppfT10aGlzLmZldGNoUGFyc2VSZXN1bHRGb3JUb2tlbih0KTtpJiYodGhpcy5mZXRjaFZhbHVlc0J5VG9rZW5Gb3JFbGVtZW50KGUpLmRlbGV0ZSh0KSx0aGlzLmRlbGVnYXRlLmVsZW1lbnRVbm1hdGNoZWRWYWx1ZShlLGkpKX1mZXRjaFBhcnNlUmVzdWx0Rm9yVG9rZW4odCl7bGV0IGU9dGhpcy5wYXJzZVJlc3VsdHNCeVRva2VuLmdldCh0KTtyZXR1cm4gZXx8KGU9dGhpcy5wYXJzZVRva2VuKHQpLHRoaXMucGFyc2VSZXN1bHRzQnlUb2tlbi5zZXQodCxlKSksZX1mZXRjaFZhbHVlc0J5VG9rZW5Gb3JFbGVtZW50KHQpe2xldCBlPXRoaXMudmFsdWVzQnlUb2tlbkJ5RWxlbWVudC5nZXQodCk7cmV0dXJuIGV8fChlPW5ldyBNYXAsdGhpcy52YWx1ZXNCeVRva2VuQnlFbGVtZW50LnNldCh0LGUpKSxlfXBhcnNlVG9rZW4odCl7dHJ5e3JldHVybnt2YWx1ZTp0aGlzLmRlbGVnYXRlLnBhcnNlVmFsdWVGb3JUb2tlbih0KX19Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fX19Y2xhc3MgeXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuY29udGV4dD10LHRoaXMuZGVsZWdhdGU9ZSx0aGlzLmJpbmRpbmdzQnlBY3Rpb249bmV3IE1hcH1zdGFydCgpe3RoaXMudmFsdWVMaXN0T2JzZXJ2ZXJ8fCh0aGlzLnZhbHVlTGlzdE9ic2VydmVyPW5ldyBiKHRoaXMuZWxlbWVudCx0aGlzLmFjdGlvbkF0dHJpYnV0ZSx0aGlzKSx0aGlzLnZhbHVlTGlzdE9ic2VydmVyLnN0YXJ0KCkpfXN0b3AoKXt0aGlzLnZhbHVlTGlzdE9ic2VydmVyJiYodGhpcy52YWx1ZUxpc3RPYnNlcnZlci5zdG9wKCksZGVsZXRlIHRoaXMudmFsdWVMaXN0T2JzZXJ2ZXIsdGhpcy5kaXNjb25uZWN0QWxsQWN0aW9ucygpKX1nZXQgZWxlbWVudCgpe3JldHVybiB0aGlzLmNvbnRleHQuZWxlbWVudH1nZXQgaWRlbnRpZmllcigpe3JldHVybiB0aGlzLmNvbnRleHQuaWRlbnRpZmllcn1nZXQgYWN0aW9uQXR0cmlidXRlKCl7cmV0dXJuIHRoaXMuc2NoZW1hLmFjdGlvbkF0dHJpYnV0ZX1nZXQgc2NoZW1hKCl7cmV0dXJuIHRoaXMuY29udGV4dC5zY2hlbWF9Z2V0IGJpbmRpbmdzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5iaW5kaW5nc0J5QWN0aW9uLnZhbHVlcygpKX1jb25uZWN0QWN0aW9uKHQpe2NvbnN0IGU9bmV3IHUodGhpcy5jb250ZXh0LHQpO3RoaXMuYmluZGluZ3NCeUFjdGlvbi5zZXQodCxlKSx0aGlzLmRlbGVnYXRlLmJpbmRpbmdDb25uZWN0ZWQoZSl9ZGlzY29ubmVjdEFjdGlvbih0KXtjb25zdCBlPXRoaXMuYmluZGluZ3NCeUFjdGlvbi5nZXQodCk7ZSYmKHRoaXMuYmluZGluZ3NCeUFjdGlvbi5kZWxldGUodCksdGhpcy5kZWxlZ2F0ZS5iaW5kaW5nRGlzY29ubmVjdGVkKGUpKX1kaXNjb25uZWN0QWxsQWN0aW9ucygpe3RoaXMuYmluZGluZ3MuZm9yRWFjaCgodD0+dGhpcy5kZWxlZ2F0ZS5iaW5kaW5nRGlzY29ubmVjdGVkKHQpKSksdGhpcy5iaW5kaW5nc0J5QWN0aW9uLmNsZWFyKCl9cGFyc2VWYWx1ZUZvclRva2VuKHQpe2NvbnN0IGU9Y2xhc3N7Y29uc3RydWN0b3IodCxlLGkpe3RoaXMuZWxlbWVudD10LHRoaXMuaW5kZXg9ZSx0aGlzLmV2ZW50VGFyZ2V0PWkuZXZlbnRUYXJnZXR8fHQsdGhpcy5ldmVudE5hbWU9aS5ldmVudE5hbWV8fGZ1bmN0aW9uKHQpe2NvbnN0IGU9dC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7aWYoZSBpbiBjKXJldHVybiBjW2VdKHQpfSh0KXx8aCgibWlzc2luZyBldmVudCBuYW1lIiksdGhpcy5ldmVudE9wdGlvbnM9aS5ldmVudE9wdGlvbnN8fHt9LHRoaXMuaWRlbnRpZmllcj1pLmlkZW50aWZpZXJ8fGgoIm1pc3NpbmcgaWRlbnRpZmllciIpLHRoaXMubWV0aG9kTmFtZT1pLm1ldGhvZE5hbWV8fGgoIm1pc3NpbmcgbWV0aG9kIG5hbWUiKX1zdGF0aWMgZm9yVG9rZW4odCl7cmV0dXJuIG5ldyB0aGlzKHQuZWxlbWVudCx0LmluZGV4LGZ1bmN0aW9uKHQpe2NvbnN0IGU9dC50cmltKCkubWF0Y2gobil8fFtdO3JldHVybntldmVudFRhcmdldDooaT1lWzRdLCJ3aW5kb3ciPT1pP3dpbmRvdzoiZG9jdW1lbnQiPT1pP2RvY3VtZW50OnZvaWQgMCksZXZlbnROYW1lOmVbMl0sZXZlbnRPcHRpb25zOmVbOV0/KHM9ZVs5XSxzLnNwbGl0KCI6IikucmVkdWNlKCgodCxlKT0+T2JqZWN0LmFzc2lnbih0LHtbZS5yZXBsYWNlKC9eIS8sIiIpXTohL14hLy50ZXN0KGUpfSkpLHt9KSk6e30saWRlbnRpZmllcjplWzVdLG1ldGhvZE5hbWU6ZVs3XX07dmFyIGksc30odC5jb250ZW50KSl9dG9TdHJpbmcoKXtjb25zdCB0PXRoaXMuZXZlbnRUYXJnZXROYW1lP2BAJHt0aGlzLmV2ZW50VGFyZ2V0TmFtZX1gOiIiO3JldHVybmAke3RoaXMuZXZlbnROYW1lfSR7dH0tPiR7dGhpcy5pZGVudGlmaWVyfSMke3RoaXMubWV0aG9kTmFtZX1gfWdldCBwYXJhbXMoKXtyZXR1cm4gdGhpcy5ldmVudFRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnQ/dGhpcy5nZXRQYXJhbXNGcm9tRXZlbnRUYXJnZXRBdHRyaWJ1dGVzKHRoaXMuZXZlbnRUYXJnZXQpOnt9fWdldFBhcmFtc0Zyb21FdmVudFRhcmdldEF0dHJpYnV0ZXModCl7Y29uc3QgZT17fSxpPW5ldyBSZWdFeHAoYF5kYXRhLSR7dGhpcy5pZGVudGlmaWVyfS0oLispLXBhcmFtJGApO3JldHVybiBBcnJheS5mcm9tKHQuYXR0cmlidXRlcykuZm9yRWFjaCgoKHtuYW1lOnQsdmFsdWU6c30pPT57Y29uc3QgYT10Lm1hdGNoKGkpLG49YSYmYVsxXTtuJiZPYmplY3QuYXNzaWduKGUse1tyKG4pXTpkKHMpfSl9KSksZX1nZXQgZXZlbnRUYXJnZXROYW1lKCl7cmV0dXJuKHQ9dGhpcy5ldmVudFRhcmdldCk9PXdpbmRvdz8id2luZG93Ijp0PT1kb2N1bWVudD8iZG9jdW1lbnQiOnZvaWQgMDt2YXIgdH19LmZvclRva2VuKHQpO2lmKGUuaWRlbnRpZmllcj09dGhpcy5pZGVudGlmaWVyKXJldHVybiBlfWVsZW1lbnRNYXRjaGVkVmFsdWUodCxlKXt0aGlzLmNvbm5lY3RBY3Rpb24oZSl9ZWxlbWVudFVubWF0Y2hlZFZhbHVlKHQsZSl7dGhpcy5kaXNjb25uZWN0QWN0aW9uKGUpfX1jbGFzcyB3e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5jb250ZXh0PXQsdGhpcy5yZWNlaXZlcj1lLHRoaXMuc3RyaW5nTWFwT2JzZXJ2ZXI9bmV3IGYodGhpcy5lbGVtZW50LHRoaXMpLHRoaXMudmFsdWVEZXNjcmlwdG9yTWFwPXRoaXMuY29udHJvbGxlci52YWx1ZURlc2NyaXB0b3JNYXAsdGhpcy5pbnZva2VDaGFuZ2VkQ2FsbGJhY2tzRm9yRGVmYXVsdFZhbHVlcygpfXN0YXJ0KCl7dGhpcy5zdHJpbmdNYXBPYnNlcnZlci5zdGFydCgpfXN0b3AoKXt0aGlzLnN0cmluZ01hcE9ic2VydmVyLnN0b3AoKX1nZXQgZWxlbWVudCgpe3JldHVybiB0aGlzLmNvbnRleHQuZWxlbWVudH1nZXQgY29udHJvbGxlcigpe3JldHVybiB0aGlzLmNvbnRleHQuY29udHJvbGxlcn1nZXRTdHJpbmdNYXBLZXlGb3JBdHRyaWJ1dGUodCl7aWYodCBpbiB0aGlzLnZhbHVlRGVzY3JpcHRvck1hcClyZXR1cm4gdGhpcy52YWx1ZURlc2NyaXB0b3JNYXBbdF0ubmFtZX1zdHJpbmdNYXBLZXlBZGRlZCh0LGUpe2NvbnN0IGk9dGhpcy52YWx1ZURlc2NyaXB0b3JNYXBbZV07dGhpcy5oYXNWYWx1ZSh0KXx8dGhpcy5pbnZva2VDaGFuZ2VkQ2FsbGJhY2sodCxpLndyaXRlcih0aGlzLnJlY2VpdmVyW3RdKSxpLndyaXRlcihpLmRlZmF1bHRWYWx1ZSkpfXN0cmluZ01hcFZhbHVlQ2hhbmdlZCh0LGUsaSl7Y29uc3Qgcz10aGlzLnZhbHVlRGVzY3JpcHRvck5hbWVNYXBbZV07bnVsbCE9PXQmJihudWxsPT09aSYmKGk9cy53cml0ZXIocy5kZWZhdWx0VmFsdWUpKSx0aGlzLmludm9rZUNoYW5nZWRDYWxsYmFjayhlLHQsaSkpfXN0cmluZ01hcEtleVJlbW92ZWQodCxlLGkpe2NvbnN0IHM9dGhpcy52YWx1ZURlc2NyaXB0b3JOYW1lTWFwW3RdO3RoaXMuaGFzVmFsdWUodCk/dGhpcy5pbnZva2VDaGFuZ2VkQ2FsbGJhY2sodCxzLndyaXRlcih0aGlzLnJlY2VpdmVyW3RdKSxpKTp0aGlzLmludm9rZUNoYW5nZWRDYWxsYmFjayh0LHMud3JpdGVyKHMuZGVmYXVsdFZhbHVlKSxpKX1pbnZva2VDaGFuZ2VkQ2FsbGJhY2tzRm9yRGVmYXVsdFZhbHVlcygpe2Zvcihjb25zdHtrZXk6dCxuYW1lOmUsZGVmYXVsdFZhbHVlOmksd3JpdGVyOnN9b2YgdGhpcy52YWx1ZURlc2NyaXB0b3JzKW51bGw9PWl8fHRoaXMuY29udHJvbGxlci5kYXRhLmhhcyh0KXx8dGhpcy5pbnZva2VDaGFuZ2VkQ2FsbGJhY2soZSxzKGkpLHZvaWQgMCl9aW52b2tlQ2hhbmdlZENhbGxiYWNrKHQsZSxpKXtjb25zdCBzPWAke3R9Q2hhbmdlZGAsYT10aGlzLnJlY2VpdmVyW3NdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhKXtjb25zdCBzPXRoaXMudmFsdWVEZXNjcmlwdG9yTmFtZU1hcFt0XSxuPXMucmVhZGVyKGUpO2xldCByPWk7aSYmKHI9cy5yZWFkZXIoaSkpLGEuY2FsbCh0aGlzLnJlY2VpdmVyLG4scil9fWdldCB2YWx1ZURlc2NyaXB0b3JzKCl7Y29uc3R7dmFsdWVEZXNjcmlwdG9yTWFwOnR9PXRoaXM7cmV0dXJuIE9iamVjdC5rZXlzKHQpLm1hcCgoZT0+dFtlXSkpfWdldCB2YWx1ZURlc2NyaXB0b3JOYW1lTWFwKCl7Y29uc3QgdD17fTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy52YWx1ZURlc2NyaXB0b3JNYXApLmZvckVhY2goKGU9Pntjb25zdCBpPXRoaXMudmFsdWVEZXNjcmlwdG9yTWFwW2VdO3RbaS5uYW1lXT1pfSkpLHR9aGFzVmFsdWUodCl7Y29uc3QgZT1gaGFzJHtvKHRoaXMudmFsdWVEZXNjcmlwdG9yTmFtZU1hcFt0XS5uYW1lKX1gO3JldHVybiB0aGlzLnJlY2VpdmVyW2VdfX1jbGFzcyBre2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5jb250ZXh0PXQsdGhpcy5kZWxlZ2F0ZT1lLHRoaXMudGFyZ2V0c0J5TmFtZT1uZXcgdn1zdGFydCgpe3RoaXMudG9rZW5MaXN0T2JzZXJ2ZXJ8fCh0aGlzLnRva2VuTGlzdE9ic2VydmVyPW5ldyB4KHRoaXMuZWxlbWVudCx0aGlzLmF0dHJpYnV0ZU5hbWUsdGhpcyksdGhpcy50b2tlbkxpc3RPYnNlcnZlci5zdGFydCgpKX1zdG9wKCl7dGhpcy50b2tlbkxpc3RPYnNlcnZlciYmKHRoaXMuZGlzY29ubmVjdEFsbFRhcmdldHMoKSx0aGlzLnRva2VuTGlzdE9ic2VydmVyLnN0b3AoKSxkZWxldGUgdGhpcy50b2tlbkxpc3RPYnNlcnZlcil9dG9rZW5NYXRjaGVkKHtlbGVtZW50OnQsY29udGVudDplfSl7dGhpcy5zY29wZS5jb250YWluc0VsZW1lbnQodCkmJnRoaXMuY29ubmVjdFRhcmdldCh0LGUpfXRva2VuVW5tYXRjaGVkKHtlbGVtZW50OnQsY29udGVudDplfSl7dGhpcy5kaXNjb25uZWN0VGFyZ2V0KHQsZSl9Y29ubmVjdFRhcmdldCh0LGUpe3ZhciBpO3RoaXMudGFyZ2V0c0J5TmFtZS5oYXMoZSx0KXx8KHRoaXMudGFyZ2V0c0J5TmFtZS5hZGQoZSx0KSxudWxsPT09KGk9dGhpcy50b2tlbkxpc3RPYnNlcnZlcil8fHZvaWQgMD09PWl8fGkucGF1c2UoKCgpPT50aGlzLmRlbGVnYXRlLnRhcmdldENvbm5lY3RlZCh0LGUpKSkpfWRpc2Nvbm5lY3RUYXJnZXQodCxlKXt2YXIgaTt0aGlzLnRhcmdldHNCeU5hbWUuaGFzKGUsdCkmJih0aGlzLnRhcmdldHNCeU5hbWUuZGVsZXRlKGUsdCksbnVsbD09PShpPXRoaXMudG9rZW5MaXN0T2JzZXJ2ZXIpfHx2b2lkIDA9PT1pfHxpLnBhdXNlKCgoKT0+dGhpcy5kZWxlZ2F0ZS50YXJnZXREaXNjb25uZWN0ZWQodCxlKSkpKX1kaXNjb25uZWN0QWxsVGFyZ2V0cygpe2Zvcihjb25zdCB0IG9mIHRoaXMudGFyZ2V0c0J5TmFtZS5rZXlzKWZvcihjb25zdCBlIG9mIHRoaXMudGFyZ2V0c0J5TmFtZS5nZXRWYWx1ZXNGb3JLZXkodCkpdGhpcy5kaXNjb25uZWN0VGFyZ2V0KGUsdCl9Z2V0IGF0dHJpYnV0ZU5hbWUoKXtyZXR1cm5gZGF0YS0ke3RoaXMuY29udGV4dC5pZGVudGlmaWVyfS10YXJnZXRgfWdldCBlbGVtZW50KCl7cmV0dXJuIHRoaXMuY29udGV4dC5lbGVtZW50fWdldCBzY29wZSgpe3JldHVybiB0aGlzLmNvbnRleHQuc2NvcGV9fWNsYXNzIFN7Y29uc3RydWN0b3IodCxlKXt0aGlzLmxvZ0RlYnVnQWN0aXZpdHk9KHQsZT17fSk9Pntjb25zdHtpZGVudGlmaWVyOmksY29udHJvbGxlcjpzLGVsZW1lbnQ6YX09dGhpcztlPU9iamVjdC5hc3NpZ24oe2lkZW50aWZpZXI6aSxjb250cm9sbGVyOnMsZWxlbWVudDphfSxlKSx0aGlzLmFwcGxpY2F0aW9uLmxvZ0RlYnVnQWN0aXZpdHkodGhpcy5pZGVudGlmaWVyLHQsZSl9LHRoaXMubW9kdWxlPXQsdGhpcy5zY29wZT1lLHRoaXMuY29udHJvbGxlcj1uZXcgdC5jb250cm9sbGVyQ29uc3RydWN0b3IodGhpcyksdGhpcy5iaW5kaW5nT2JzZXJ2ZXI9bmV3IHkodGhpcyx0aGlzLmRpc3BhdGNoZXIpLHRoaXMudmFsdWVPYnNlcnZlcj1uZXcgdyh0aGlzLHRoaXMuY29udHJvbGxlciksdGhpcy50YXJnZXRPYnNlcnZlcj1uZXcgayh0aGlzLHRoaXMpO3RyeXt0aGlzLmNvbnRyb2xsZXIuaW5pdGlhbGl6ZSgpLHRoaXMubG9nRGVidWdBY3Rpdml0eSgiaW5pdGlhbGl6ZSIpfWNhdGNoKHQpe3RoaXMuaGFuZGxlRXJyb3IodCwiaW5pdGlhbGl6aW5nIGNvbnRyb2xsZXIiKX19Y29ubmVjdCgpe3RoaXMuYmluZGluZ09ic2VydmVyLnN0YXJ0KCksdGhpcy52YWx1ZU9ic2VydmVyLnN0YXJ0KCksdGhpcy50YXJnZXRPYnNlcnZlci5zdGFydCgpO3RyeXt0aGlzLmNvbnRyb2xsZXIuY29ubmVjdCgpLHRoaXMubG9nRGVidWdBY3Rpdml0eSgiY29ubmVjdCIpfWNhdGNoKHQpe3RoaXMuaGFuZGxlRXJyb3IodCwiY29ubmVjdGluZyBjb250cm9sbGVyIil9fWRpc2Nvbm5lY3QoKXt0cnl7dGhpcy5jb250cm9sbGVyLmRpc2Nvbm5lY3QoKSx0aGlzLmxvZ0RlYnVnQWN0aXZpdHkoImRpc2Nvbm5lY3QiKX1jYXRjaCh0KXt0aGlzLmhhbmRsZUVycm9yKHQsImRpc2Nvbm5lY3RpbmcgY29udHJvbGxlciIpfXRoaXMudGFyZ2V0T2JzZXJ2ZXIuc3RvcCgpLHRoaXMudmFsdWVPYnNlcnZlci5zdG9wKCksdGhpcy5iaW5kaW5nT2JzZXJ2ZXIuc3RvcCgpfWdldCBhcHBsaWNhdGlvbigpe3JldHVybiB0aGlzLm1vZHVsZS5hcHBsaWNhdGlvbn1nZXQgaWRlbnRpZmllcigpe3JldHVybiB0aGlzLm1vZHVsZS5pZGVudGlmaWVyfWdldCBzY2hlbWEoKXtyZXR1cm4gdGhpcy5hcHBsaWNhdGlvbi5zY2hlbWF9Z2V0IGRpc3BhdGNoZXIoKXtyZXR1cm4gdGhpcy5hcHBsaWNhdGlvbi5kaXNwYXRjaGVyfWdldCBlbGVtZW50KCl7cmV0dXJuIHRoaXMuc2NvcGUuZWxlbWVudH1nZXQgcGFyZW50RWxlbWVudCgpe3JldHVybiB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudH1oYW5kbGVFcnJvcih0LGUsaT17fSl7Y29uc3R7aWRlbnRpZmllcjpzLGNvbnRyb2xsZXI6YSxlbGVtZW50Om59PXRoaXM7aT1PYmplY3QuYXNzaWduKHtpZGVudGlmaWVyOnMsY29udHJvbGxlcjphLGVsZW1lbnQ6bn0saSksdGhpcy5hcHBsaWNhdGlvbi5oYW5kbGVFcnJvcih0LGBFcnJvciAke2V9YCxpKX10YXJnZXRDb25uZWN0ZWQodCxlKXt0aGlzLmludm9rZUNvbnRyb2xsZXJNZXRob2QoYCR7ZX1UYXJnZXRDb25uZWN0ZWRgLHQpfXRhcmdldERpc2Nvbm5lY3RlZCh0LGUpe3RoaXMuaW52b2tlQ29udHJvbGxlck1ldGhvZChgJHtlfVRhcmdldERpc2Nvbm5lY3RlZGAsdCl9aW52b2tlQ29udHJvbGxlck1ldGhvZCh0LC4uLmUpe2NvbnN0IGk9dGhpcy5jb250cm9sbGVyOyJmdW5jdGlvbiI9PXR5cGVvZiBpW3RdJiZpW3RdKC4uLmUpfX1mdW5jdGlvbiBDKHQsZSl7Y29uc3QgaT1BKHQpO3JldHVybiBBcnJheS5mcm9tKGkucmVkdWNlKCgodCxpKT0+KGZ1bmN0aW9uKHQsZSl7Y29uc3QgaT10W2VdO3JldHVybiBBcnJheS5pc0FycmF5KGkpP2k6W119KGksZSkuZm9yRWFjaCgoZT0+dC5hZGQoZSkpKSx0KSksbmV3IFNldCkpfWZ1bmN0aW9uIEEodCl7Y29uc3QgZT1bXTtmb3IoO3Q7KWUucHVzaCh0KSx0PU9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtyZXR1cm4gZS5yZXZlcnNlKCl9Y29uc3QgRT0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz90PT5bLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCksLi4uT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KV06T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsVD0oKCk9PntmdW5jdGlvbiB0KHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3QodCxhcmd1bWVudHMsbmV3LnRhcmdldCl9cmV0dXJuIGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplfX0pLFJlZmxlY3Quc2V0UHJvdG90eXBlT2YoZSx0KSxlfXRyeXtyZXR1cm4gZnVuY3Rpb24oKXtjb25zdCBlPXQoKGZ1bmN0aW9uKCl7dGhpcy5hLmNhbGwodGhpcyl9KSk7ZS5wcm90b3R5cGUuYT1mdW5jdGlvbigpe30sbmV3IGV9KCksdH1jYXRjaCh0KXtyZXR1cm4gdD0+Y2xhc3MgZXh0ZW5kcyB0e319fSkoKTtjbGFzcyBMe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5hcHBsaWNhdGlvbj10LHRoaXMuZGVmaW5pdGlvbj1mdW5jdGlvbih0KXtyZXR1cm57aWRlbnRpZmllcjp0LmlkZW50aWZpZXIsY29udHJvbGxlckNvbnN0cnVjdG9yOihlPXQuY29udHJvbGxlckNvbnN0cnVjdG9yLGZ1bmN0aW9uKHQsZSl7Y29uc3QgaT1UKHQpLHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gRShlKS5yZWR1Y2UoKChpLHMpPT57Y29uc3QgYT1mdW5jdGlvbih0LGUsaSl7Y29uc3Qgcz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsaSk7aWYoIXN8fCEoInZhbHVlImluIHMpKXtjb25zdCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKS52YWx1ZTtyZXR1cm4gcyYmKHQuZ2V0PXMuZ2V0fHx0LmdldCx0LnNldD1zLnNldHx8dC5zZXQpLHR9fSh0LGUscyk7cmV0dXJuIGEmJk9iamVjdC5hc3NpZ24oaSx7W3NdOmF9KSxpfSkse30pfSh0LnByb3RvdHlwZSxlKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoaS5wcm90b3R5cGUscyksaX0oZSxmdW5jdGlvbih0KXtyZXR1cm4gQyh0LCJibGVzc2luZ3MiKS5yZWR1Y2UoKChlLGkpPT57Y29uc3Qgcz1pKHQpO2Zvcihjb25zdCB0IGluIHMpe2NvbnN0IGk9ZVt0XXx8e307ZVt0XT1PYmplY3QuYXNzaWduKGksc1t0XSl9cmV0dXJuIGV9KSx7fSl9KGUpKSl9O3ZhciBlfShlKSx0aGlzLmNvbnRleHRzQnlTY29wZT1uZXcgV2Vha01hcCx0aGlzLmNvbm5lY3RlZENvbnRleHRzPW5ldyBTZXR9Z2V0IGlkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5kZWZpbml0aW9uLmlkZW50aWZpZXJ9Z2V0IGNvbnRyb2xsZXJDb25zdHJ1Y3Rvcigpe3JldHVybiB0aGlzLmRlZmluaXRpb24uY29udHJvbGxlckNvbnN0cnVjdG9yfWdldCBjb250ZXh0cygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuY29ubmVjdGVkQ29udGV4dHMpfWNvbm5lY3RDb250ZXh0Rm9yU2NvcGUodCl7Y29uc3QgZT10aGlzLmZldGNoQ29udGV4dEZvclNjb3BlKHQpO3RoaXMuY29ubmVjdGVkQ29udGV4dHMuYWRkKGUpLGUuY29ubmVjdCgpfWRpc2Nvbm5lY3RDb250ZXh0Rm9yU2NvcGUodCl7Y29uc3QgZT10aGlzLmNvbnRleHRzQnlTY29wZS5nZXQodCk7ZSYmKHRoaXMuY29ubmVjdGVkQ29udGV4dHMuZGVsZXRlKGUpLGUuZGlzY29ubmVjdCgpKX1mZXRjaENvbnRleHRGb3JTY29wZSh0KXtsZXQgZT10aGlzLmNvbnRleHRzQnlTY29wZS5nZXQodCk7cmV0dXJuIGV8fChlPW5ldyBTKHRoaXMsdCksdGhpcy5jb250ZXh0c0J5U2NvcGUuc2V0KHQsZSkpLGV9fWNsYXNzIFB7Y29uc3RydWN0b3IodCl7dGhpcy5zY29wZT10fWhhcyh0KXtyZXR1cm4gdGhpcy5kYXRhLmhhcyh0aGlzLmdldERhdGFLZXkodCkpfWdldCh0KXtyZXR1cm4gdGhpcy5nZXRBbGwodClbMF19Z2V0QWxsKHQpe3JldHVybih0aGlzLmRhdGEuZ2V0KHRoaXMuZ2V0RGF0YUtleSh0KSl8fCIiKS5tYXRjaCgvW15cc10rL2cpfHxbXX1nZXRBdHRyaWJ1dGVOYW1lKHQpe3JldHVybiB0aGlzLmRhdGEuZ2V0QXR0cmlidXRlTmFtZUZvcktleSh0aGlzLmdldERhdGFLZXkodCkpfWdldERhdGFLZXkodCl7cmV0dXJuYCR7dH0tY2xhc3NgfWdldCBkYXRhKCl7cmV0dXJuIHRoaXMuc2NvcGUuZGF0YX19Y2xhc3MgTXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnNjb3BlPXR9Z2V0IGVsZW1lbnQoKXtyZXR1cm4gdGhpcy5zY29wZS5lbGVtZW50fWdldCBpZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMuc2NvcGUuaWRlbnRpZmllcn1nZXQodCl7Y29uc3QgZT10aGlzLmdldEF0dHJpYnV0ZU5hbWVGb3JLZXkodCk7cmV0dXJuIHRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1dGUoZSl9c2V0KHQsZSl7Y29uc3QgaT10aGlzLmdldEF0dHJpYnV0ZU5hbWVGb3JLZXkodCk7cmV0dXJuIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoaSxlKSx0aGlzLmdldCh0KX1oYXModCl7Y29uc3QgZT10aGlzLmdldEF0dHJpYnV0ZU5hbWVGb3JLZXkodCk7cmV0dXJuIHRoaXMuZWxlbWVudC5oYXNBdHRyaWJ1dGUoZSl9ZGVsZXRlKHQpe2lmKHRoaXMuaGFzKHQpKXtjb25zdCBlPXRoaXMuZ2V0QXR0cmlidXRlTmFtZUZvcktleSh0KTtyZXR1cm4gdGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShlKSwhMH1yZXR1cm4hMX1nZXRBdHRyaWJ1dGVOYW1lRm9yS2V5KHQpe3JldHVybmBkYXRhLSR7dGhpcy5pZGVudGlmaWVyfS0ke2wodCl9YH19Y2xhc3MgT3tjb25zdHJ1Y3Rvcih0KXt0aGlzLndhcm5lZEtleXNCeU9iamVjdD1uZXcgV2Vha01hcCx0aGlzLmxvZ2dlcj10fXdhcm4odCxlLGkpe2xldCBzPXRoaXMud2FybmVkS2V5c0J5T2JqZWN0LmdldCh0KTtzfHwocz1uZXcgU2V0LHRoaXMud2FybmVkS2V5c0J5T2JqZWN0LnNldCh0LHMpKSxzLmhhcyhlKXx8KHMuYWRkKGUpLHRoaXMubG9nZ2VyLndhcm4oaSx0KSl9fWZ1bmN0aW9uIEkodCxlKXtyZXR1cm5gWyR7dH1+PSIke2V9Il1gfWNsYXNzIEZ7Y29uc3RydWN0b3IodCl7dGhpcy5zY29wZT10fWdldCBlbGVtZW50KCl7cmV0dXJuIHRoaXMuc2NvcGUuZWxlbWVudH1nZXQgaWRlbnRpZmllcigpe3JldHVybiB0aGlzLnNjb3BlLmlkZW50aWZpZXJ9Z2V0IHNjaGVtYSgpe3JldHVybiB0aGlzLnNjb3BlLnNjaGVtYX1oYXModCl7cmV0dXJuIG51bGwhPXRoaXMuZmluZCh0KX1maW5kKC4uLnQpe3JldHVybiB0LnJlZHVjZSgoKHQsZSk9PnR8fHRoaXMuZmluZFRhcmdldChlKXx8dGhpcy5maW5kTGVnYWN5VGFyZ2V0KGUpKSx2b2lkIDApfWZpbmRBbGwoLi4udCl7cmV0dXJuIHQucmVkdWNlKCgodCxlKT0+Wy4uLnQsLi4udGhpcy5maW5kQWxsVGFyZ2V0cyhlKSwuLi50aGlzLmZpbmRBbGxMZWdhY3lUYXJnZXRzKGUpXSksW10pfWZpbmRUYXJnZXQodCl7Y29uc3QgZT10aGlzLmdldFNlbGVjdG9yRm9yVGFyZ2V0TmFtZSh0KTtyZXR1cm4gdGhpcy5zY29wZS5maW5kRWxlbWVudChlKX1maW5kQWxsVGFyZ2V0cyh0KXtjb25zdCBlPXRoaXMuZ2V0U2VsZWN0b3JGb3JUYXJnZXROYW1lKHQpO3JldHVybiB0aGlzLnNjb3BlLmZpbmRBbGxFbGVtZW50cyhlKX1nZXRTZWxlY3RvckZvclRhcmdldE5hbWUodCl7cmV0dXJuIEkodGhpcy5zY2hlbWEudGFyZ2V0QXR0cmlidXRlRm9yU2NvcGUodGhpcy5pZGVudGlmaWVyKSx0KX1maW5kTGVnYWN5VGFyZ2V0KHQpe2NvbnN0IGU9dGhpcy5nZXRMZWdhY3lTZWxlY3RvckZvclRhcmdldE5hbWUodCk7cmV0dXJuIHRoaXMuZGVwcmVjYXRlKHRoaXMuc2NvcGUuZmluZEVsZW1lbnQoZSksdCl9ZmluZEFsbExlZ2FjeVRhcmdldHModCl7Y29uc3QgZT10aGlzLmdldExlZ2FjeVNlbGVjdG9yRm9yVGFyZ2V0TmFtZSh0KTtyZXR1cm4gdGhpcy5zY29wZS5maW5kQWxsRWxlbWVudHMoZSkubWFwKChlPT50aGlzLmRlcHJlY2F0ZShlLHQpKSl9Z2V0TGVnYWN5U2VsZWN0b3JGb3JUYXJnZXROYW1lKHQpe2NvbnN0IGU9YCR7dGhpcy5pZGVudGlmaWVyfS4ke3R9YDtyZXR1cm4gSSh0aGlzLnNjaGVtYS50YXJnZXRBdHRyaWJ1dGUsZSl9ZGVwcmVjYXRlKHQsZSl7aWYodCl7Y29uc3R7aWRlbnRpZmllcjppfT10aGlzLHM9dGhpcy5zY2hlbWEudGFyZ2V0QXR0cmlidXRlLGE9dGhpcy5zY2hlbWEudGFyZ2V0QXR0cmlidXRlRm9yU2NvcGUoaSk7dGhpcy5ndWlkZS53YXJuKHQsYHRhcmdldDoke2V9YCxgUGxlYXNlIHJlcGxhY2UgJHtzfT0iJHtpfS4ke2V9IiB3aXRoICR7YX09IiR7ZX0iLiBUaGUgJHtzfSBhdHRyaWJ1dGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgU3RpbXVsdXMuYCl9cmV0dXJuIHR9Z2V0IGd1aWRlKCl7cmV0dXJuIHRoaXMuc2NvcGUuZ3VpZGV9fWNsYXNzIER7Y29uc3RydWN0b3IodCxlLGkscyl7dGhpcy50YXJnZXRzPW5ldyBGKHRoaXMpLHRoaXMuY2xhc3Nlcz1uZXcgUCh0aGlzKSx0aGlzLmRhdGE9bmV3IE0odGhpcyksdGhpcy5jb250YWluc0VsZW1lbnQ9dD0+dC5jbG9zZXN0KHRoaXMuY29udHJvbGxlclNlbGVjdG9yKT09PXRoaXMuZWxlbWVudCx0aGlzLnNjaGVtYT10LHRoaXMuZWxlbWVudD1lLHRoaXMuaWRlbnRpZmllcj1pLHRoaXMuZ3VpZGU9bmV3IE8ocyl9ZmluZEVsZW1lbnQodCl7cmV0dXJuIHRoaXMuZWxlbWVudC5tYXRjaGVzKHQpP3RoaXMuZWxlbWVudDp0aGlzLnF1ZXJ5RWxlbWVudHModCkuZmluZCh0aGlzLmNvbnRhaW5zRWxlbWVudCl9ZmluZEFsbEVsZW1lbnRzKHQpe3JldHVyblsuLi50aGlzLmVsZW1lbnQubWF0Y2hlcyh0KT9bdGhpcy5lbGVtZW50XTpbXSwuLi50aGlzLnF1ZXJ5RWxlbWVudHModCkuZmlsdGVyKHRoaXMuY29udGFpbnNFbGVtZW50KV19cXVlcnlFbGVtZW50cyh0KXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCh0KSl9Z2V0IGNvbnRyb2xsZXJTZWxlY3Rvcigpe3JldHVybiBJKHRoaXMuc2NoZW1hLmNvbnRyb2xsZXJBdHRyaWJ1dGUsdGhpcy5pZGVudGlmaWVyKX19Y2xhc3Mgentjb25zdHJ1Y3Rvcih0LGUsaSl7dGhpcy5lbGVtZW50PXQsdGhpcy5zY2hlbWE9ZSx0aGlzLmRlbGVnYXRlPWksdGhpcy52YWx1ZUxpc3RPYnNlcnZlcj1uZXcgYih0aGlzLmVsZW1lbnQsdGhpcy5jb250cm9sbGVyQXR0cmlidXRlLHRoaXMpLHRoaXMuc2NvcGVzQnlJZGVudGlmaWVyQnlFbGVtZW50PW5ldyBXZWFrTWFwLHRoaXMuc2NvcGVSZWZlcmVuY2VDb3VudHM9bmV3IFdlYWtNYXB9c3RhcnQoKXt0aGlzLnZhbHVlTGlzdE9ic2VydmVyLnN0YXJ0KCl9c3RvcCgpe3RoaXMudmFsdWVMaXN0T2JzZXJ2ZXIuc3RvcCgpfWdldCBjb250cm9sbGVyQXR0cmlidXRlKCl7cmV0dXJuIHRoaXMuc2NoZW1hLmNvbnRyb2xsZXJBdHRyaWJ1dGV9cGFyc2VWYWx1ZUZvclRva2VuKHQpe2NvbnN0e2VsZW1lbnQ6ZSxjb250ZW50Oml9PXQscz10aGlzLmZldGNoU2NvcGVzQnlJZGVudGlmaWVyRm9yRWxlbWVudChlKTtsZXQgYT1zLmdldChpKTtyZXR1cm4gYXx8KGE9dGhpcy5kZWxlZ2F0ZS5jcmVhdGVTY29wZUZvckVsZW1lbnRBbmRJZGVudGlmaWVyKGUsaSkscy5zZXQoaSxhKSksYX1lbGVtZW50TWF0Y2hlZFZhbHVlKHQsZSl7Y29uc3QgaT0odGhpcy5zY29wZVJlZmVyZW5jZUNvdW50cy5nZXQoZSl8fDApKzE7dGhpcy5zY29wZVJlZmVyZW5jZUNvdW50cy5zZXQoZSxpKSwxPT1pJiZ0aGlzLmRlbGVnYXRlLnNjb3BlQ29ubmVjdGVkKGUpfWVsZW1lbnRVbm1hdGNoZWRWYWx1ZSh0LGUpe2NvbnN0IGk9dGhpcy5zY29wZVJlZmVyZW5jZUNvdW50cy5nZXQoZSk7aSYmKHRoaXMuc2NvcGVSZWZlcmVuY2VDb3VudHMuc2V0KGUsaS0xKSwxPT1pJiZ0aGlzLmRlbGVnYXRlLnNjb3BlRGlzY29ubmVjdGVkKGUpKX1mZXRjaFNjb3Blc0J5SWRlbnRpZmllckZvckVsZW1lbnQodCl7bGV0IGU9dGhpcy5zY29wZXNCeUlkZW50aWZpZXJCeUVsZW1lbnQuZ2V0KHQpO3JldHVybiBlfHwoZT1uZXcgTWFwLHRoaXMuc2NvcGVzQnlJZGVudGlmaWVyQnlFbGVtZW50LnNldCh0LGUpKSxlfX1jbGFzcyBOe2NvbnN0cnVjdG9yKHQpe3RoaXMuYXBwbGljYXRpb249dCx0aGlzLnNjb3BlT2JzZXJ2ZXI9bmV3IHoodGhpcy5lbGVtZW50LHRoaXMuc2NoZW1hLHRoaXMpLHRoaXMuc2NvcGVzQnlJZGVudGlmaWVyPW5ldyB2LHRoaXMubW9kdWxlc0J5SWRlbnRpZmllcj1uZXcgTWFwfWdldCBlbGVtZW50KCl7cmV0dXJuIHRoaXMuYXBwbGljYXRpb24uZWxlbWVudH1nZXQgc2NoZW1hKCl7cmV0dXJuIHRoaXMuYXBwbGljYXRpb24uc2NoZW1hfWdldCBsb2dnZXIoKXtyZXR1cm4gdGhpcy5hcHBsaWNhdGlvbi5sb2dnZXJ9Z2V0IGNvbnRyb2xsZXJBdHRyaWJ1dGUoKXtyZXR1cm4gdGhpcy5zY2hlbWEuY29udHJvbGxlckF0dHJpYnV0ZX1nZXQgbW9kdWxlcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMubW9kdWxlc0J5SWRlbnRpZmllci52YWx1ZXMoKSl9Z2V0IGNvbnRleHRzKCl7cmV0dXJuIHRoaXMubW9kdWxlcy5yZWR1Y2UoKCh0LGUpPT50LmNvbmNhdChlLmNvbnRleHRzKSksW10pfXN0YXJ0KCl7dGhpcy5zY29wZU9ic2VydmVyLnN0YXJ0KCl9c3RvcCgpe3RoaXMuc2NvcGVPYnNlcnZlci5zdG9wKCl9bG9hZERlZmluaXRpb24odCl7dGhpcy51bmxvYWRJZGVudGlmaWVyKHQuaWRlbnRpZmllcik7Y29uc3QgZT1uZXcgTCh0aGlzLmFwcGxpY2F0aW9uLHQpO3RoaXMuY29ubmVjdE1vZHVsZShlKX11bmxvYWRJZGVudGlmaWVyKHQpe2NvbnN0IGU9dGhpcy5tb2R1bGVzQnlJZGVudGlmaWVyLmdldCh0KTtlJiZ0aGlzLmRpc2Nvbm5lY3RNb2R1bGUoZSl9Z2V0Q29udGV4dEZvckVsZW1lbnRBbmRJZGVudGlmaWVyKHQsZSl7Y29uc3QgaT10aGlzLm1vZHVsZXNCeUlkZW50aWZpZXIuZ2V0KGUpO2lmKGkpcmV0dXJuIGkuY29udGV4dHMuZmluZCgoZT0+ZS5lbGVtZW50PT10KSl9aGFuZGxlRXJyb3IodCxlLGkpe3RoaXMuYXBwbGljYXRpb24uaGFuZGxlRXJyb3IodCxlLGkpfWNyZWF0ZVNjb3BlRm9yRWxlbWVudEFuZElkZW50aWZpZXIodCxlKXtyZXR1cm4gbmV3IEQodGhpcy5zY2hlbWEsdCxlLHRoaXMubG9nZ2VyKX1zY29wZUNvbm5lY3RlZCh0KXt0aGlzLnNjb3Blc0J5SWRlbnRpZmllci5hZGQodC5pZGVudGlmaWVyLHQpO2NvbnN0IGU9dGhpcy5tb2R1bGVzQnlJZGVudGlmaWVyLmdldCh0LmlkZW50aWZpZXIpO2UmJmUuY29ubmVjdENvbnRleHRGb3JTY29wZSh0KX1zY29wZURpc2Nvbm5lY3RlZCh0KXt0aGlzLnNjb3Blc0J5SWRlbnRpZmllci5kZWxldGUodC5pZGVudGlmaWVyLHQpO2NvbnN0IGU9dGhpcy5tb2R1bGVzQnlJZGVudGlmaWVyLmdldCh0LmlkZW50aWZpZXIpO2UmJmUuZGlzY29ubmVjdENvbnRleHRGb3JTY29wZSh0KX1jb25uZWN0TW9kdWxlKHQpe3RoaXMubW9kdWxlc0J5SWRlbnRpZmllci5zZXQodC5pZGVudGlmaWVyLHQpLHRoaXMuc2NvcGVzQnlJZGVudGlmaWVyLmdldFZhbHVlc0ZvcktleSh0LmlkZW50aWZpZXIpLmZvckVhY2goKGU9PnQuY29ubmVjdENvbnRleHRGb3JTY29wZShlKSkpfWRpc2Nvbm5lY3RNb2R1bGUodCl7dGhpcy5tb2R1bGVzQnlJZGVudGlmaWVyLmRlbGV0ZSh0LmlkZW50aWZpZXIpLHRoaXMuc2NvcGVzQnlJZGVudGlmaWVyLmdldFZhbHVlc0ZvcktleSh0LmlkZW50aWZpZXIpLmZvckVhY2goKGU9PnQuZGlzY29ubmVjdENvbnRleHRGb3JTY29wZShlKSkpfX1jb25zdCBSPXtjb250cm9sbGVyQXR0cmlidXRlOiJkYXRhLWNvbnRyb2xsZXIiLGFjdGlvbkF0dHJpYnV0ZToiZGF0YS1hY3Rpb24iLHRhcmdldEF0dHJpYnV0ZToiZGF0YS10YXJnZXQiLHRhcmdldEF0dHJpYnV0ZUZvclNjb3BlOnQ9PmBkYXRhLSR7dH0tdGFyZ2V0YH07Y2xhc3MgX3tjb25zdHJ1Y3Rvcih0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxlPVIpe3RoaXMubG9nZ2VyPWNvbnNvbGUsdGhpcy5kZWJ1Zz0hMSx0aGlzLmxvZ0RlYnVnQWN0aXZpdHk9KHQsZSxpPXt9KT0+e3RoaXMuZGVidWcmJnRoaXMubG9nRm9ybWF0dGVkTWVzc2FnZSh0LGUsaSl9LHRoaXMuZWxlbWVudD10LHRoaXMuc2NoZW1hPWUsdGhpcy5kaXNwYXRjaGVyPW5ldyBhKHRoaXMpLHRoaXMucm91dGVyPW5ldyBOKHRoaXMpfXN0YXRpYyBzdGFydCh0LGUpe2NvbnN0IGk9bmV3IF8odCxlKTtyZXR1cm4gaS5zdGFydCgpLGl9YXN5bmMgc3RhcnQoKXthd2FpdCBuZXcgUHJvbWlzZSgodD0+eyJsb2FkaW5nIj09ZG9jdW1lbnQucmVhZHlTdGF0ZT9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwoKCk9PnQoKSkpOnQoKX0pKSx0aGlzLmxvZ0RlYnVnQWN0aXZpdHkoImFwcGxpY2F0aW9uIiwic3RhcnRpbmciKSx0aGlzLmRpc3BhdGNoZXIuc3RhcnQoKSx0aGlzLnJvdXRlci5zdGFydCgpLHRoaXMubG9nRGVidWdBY3Rpdml0eSgiYXBwbGljYXRpb24iLCJzdGFydCIpfXN0b3AoKXt0aGlzLmxvZ0RlYnVnQWN0aXZpdHkoImFwcGxpY2F0aW9uIiwic3RvcHBpbmciKSx0aGlzLmRpc3BhdGNoZXIuc3RvcCgpLHRoaXMucm91dGVyLnN0b3AoKSx0aGlzLmxvZ0RlYnVnQWN0aXZpdHkoImFwcGxpY2F0aW9uIiwic3RvcCIpfXJlZ2lzdGVyKHQsZSl7ZS5zaG91bGRMb2FkJiZ0aGlzLmxvYWQoe2lkZW50aWZpZXI6dCxjb250cm9sbGVyQ29uc3RydWN0b3I6ZX0pfWxvYWQodCwuLi5lKXsoQXJyYXkuaXNBcnJheSh0KT90Olt0LC4uLmVdKS5mb3JFYWNoKCh0PT50aGlzLnJvdXRlci5sb2FkRGVmaW5pdGlvbih0KSkpfXVubG9hZCh0LC4uLmUpeyhBcnJheS5pc0FycmF5KHQpP3Q6W3QsLi4uZV0pLmZvckVhY2goKHQ9PnRoaXMucm91dGVyLnVubG9hZElkZW50aWZpZXIodCkpKX1nZXQgY29udHJvbGxlcnMoKXtyZXR1cm4gdGhpcy5yb3V0ZXIuY29udGV4dHMubWFwKCh0PT50LmNvbnRyb2xsZXIpKX1nZXRDb250cm9sbGVyRm9yRWxlbWVudEFuZElkZW50aWZpZXIodCxlKXtjb25zdCBpPXRoaXMucm91dGVyLmdldENvbnRleHRGb3JFbGVtZW50QW5kSWRlbnRpZmllcih0LGUpO3JldHVybiBpP2kuY29udHJvbGxlcjpudWxsfWhhbmRsZUVycm9yKHQsZSxpKXt2YXIgczt0aGlzLmxvZ2dlci5lcnJvcigiJXNcblxuJW9cblxuJW8iLGUsdCxpKSxudWxsPT09KHM9d2luZG93Lm9uZXJyb3IpfHx2b2lkIDA9PT1zfHxzLmNhbGwod2luZG93LGUsIiIsMCwwLHQpfWxvZ0Zvcm1hdHRlZE1lc3NhZ2UodCxlLGk9e30pe2k9T2JqZWN0LmFzc2lnbih7YXBwbGljYXRpb246dGhpc30saSksdGhpcy5sb2dnZXIuZ3JvdXBDb2xsYXBzZWQoYCR7dH0gIyR7ZX1gKSx0aGlzLmxvZ2dlci5sb2coImRldGFpbHM6IixPYmplY3QuYXNzaWduKHt9LGkpKSx0aGlzLmxvZ2dlci5ncm91cEVuZCgpfX1mdW5jdGlvbiBCKFt0LGVdKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtjb25zdCBpPWAke2wodCl9LXZhbHVlYCxzPWZ1bmN0aW9uKHQpe2NvbnN0IGU9ZnVuY3Rpb24odCl7Y29uc3QgZT1YKHQudHlwZSk7aWYoZSl7Y29uc3QgaT1IKHQuZGVmYXVsdCk7aWYoZSE9PWkpdGhyb3cgbmV3IEVycm9yKGBUeXBlICIke2V9IiBtdXN0IG1hdGNoIHRoZSB0eXBlIG9mIHRoZSBkZWZhdWx0IHZhbHVlLiBHaXZlbiBkZWZhdWx0IHZhbHVlOiAiJHt0LmRlZmF1bHR9IiBhcyAiJHtpfSJgKTtyZXR1cm4gZX19KHQpLGk9SCh0KSxzPVgodCksYT1lfHxpfHxzO2lmKGEpcmV0dXJuIGE7dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHZhbHVlIHR5cGUgIiR7dH0iYCl9KGUpO3JldHVybnt0eXBlOnMsa2V5OmksbmFtZTpyKGkpLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3QgZT1YKHQpO2lmKGUpcmV0dXJuIFlbZV07Y29uc3QgaT10LmRlZmF1bHQ7cmV0dXJuIHZvaWQgMCE9PWk/aTp0fShlKX0sZ2V0IGhhc0N1c3RvbURlZmF1bHRWYWx1ZSgpe3JldHVybiB2b2lkIDAhPT1IKGUpfSxyZWFkZXI6V1tzXSx3cml0ZXI6JFtzXXx8JC5kZWZhdWx0fX0odCxlKX1mdW5jdGlvbiBYKHQpe3N3aXRjaCh0KXtjYXNlIEFycmF5OnJldHVybiJhcnJheSI7Y2FzZSBCb29sZWFuOnJldHVybiJib29sZWFuIjtjYXNlIE51bWJlcjpyZXR1cm4ibnVtYmVyIjtjYXNlIE9iamVjdDpyZXR1cm4ib2JqZWN0IjtjYXNlIFN0cmluZzpyZXR1cm4ic3RyaW5nIn19ZnVuY3Rpb24gSCh0KXtzd2l0Y2godHlwZW9mIHQpe2Nhc2UiYm9vbGVhbiI6cmV0dXJuImJvb2xlYW4iO2Nhc2UibnVtYmVyIjpyZXR1cm4ibnVtYmVyIjtjYXNlInN0cmluZyI6cmV0dXJuInN0cmluZyJ9cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/ImFycmF5IjoiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KT8ib2JqZWN0Ijp2b2lkIDB9Y29uc3QgWT17Z2V0IGFycmF5KCl7cmV0dXJuW119LGJvb2xlYW46ITEsbnVtYmVyOjAsZ2V0IG9iamVjdCgpe3JldHVybnt9fSxzdHJpbmc6IiJ9LFc9e2FycmF5KHQpe2NvbnN0IGU9SlNPTi5wYXJzZSh0KTtpZighQXJyYXkuaXNBcnJheShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhcnJheSIpO3JldHVybiBlfSxib29sZWFuOnQ9PiEoIjAiPT10fHwiZmFsc2UiPT10KSxudW1iZXI6dD0+TnVtYmVyKHQpLG9iamVjdCh0KXtjb25zdCBlPUpTT04ucGFyc2UodCk7aWYobnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgZXx8QXJyYXkuaXNBcnJheShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBvYmplY3QiKTtyZXR1cm4gZX0sc3RyaW5nOnQ9PnR9LCQ9e2RlZmF1bHQ6ZnVuY3Rpb24odCl7cmV0dXJuYCR7dH1gfSxhcnJheTpWLG9iamVjdDpWfTtmdW5jdGlvbiBWKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0KX1jbGFzcyBqe2NvbnN0cnVjdG9yKHQpe3RoaXMuY29udGV4dD10fXN0YXRpYyBnZXQgc2hvdWxkTG9hZCgpe3JldHVybiEwfWdldCBhcHBsaWNhdGlvbigpe3JldHVybiB0aGlzLmNvbnRleHQuYXBwbGljYXRpb259Z2V0IHNjb3BlKCl7cmV0dXJuIHRoaXMuY29udGV4dC5zY29wZX1nZXQgZWxlbWVudCgpe3JldHVybiB0aGlzLnNjb3BlLmVsZW1lbnR9Z2V0IGlkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5zY29wZS5pZGVudGlmaWVyfWdldCB0YXJnZXRzKCl7cmV0dXJuIHRoaXMuc2NvcGUudGFyZ2V0c31nZXQgY2xhc3Nlcygpe3JldHVybiB0aGlzLnNjb3BlLmNsYXNzZXN9Z2V0IGRhdGEoKXtyZXR1cm4gdGhpcy5zY29wZS5kYXRhfWluaXRpYWxpemUoKXt9Y29ubmVjdCgpe31kaXNjb25uZWN0KCl7fWRpc3BhdGNoKHQse3RhcmdldDplPXRoaXMuZWxlbWVudCxkZXRhaWw6aT17fSxwcmVmaXg6cz10aGlzLmlkZW50aWZpZXIsYnViYmxlczphPSEwLGNhbmNlbGFibGU6bj0hMH09e30pe2NvbnN0IHI9bmV3IEN1c3RvbUV2ZW50KHM/YCR7c306JHt0fWA6dCx7ZGV0YWlsOmksYnViYmxlczphLGNhbmNlbGFibGU6bn0pO3JldHVybiBlLmRpc3BhdGNoRXZlbnQocikscn19ai5ibGVzc2luZ3M9W2Z1bmN0aW9uKHQpe3JldHVybiBDKHQsImNsYXNzZXMiKS5yZWR1Y2UoKCh0LGUpPT57cmV0dXJuIE9iamVjdC5hc3NpZ24odCx7W2Ake2k9ZX1DbGFzc2BdOntnZXQoKXtjb25zdHtjbGFzc2VzOnR9PXRoaXM7aWYodC5oYXMoaSkpcmV0dXJuIHQuZ2V0KGkpO3tjb25zdCBlPXQuZ2V0QXR0cmlidXRlTmFtZShpKTt0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgYXR0cmlidXRlICIke2V9ImApfX19LFtgJHtpfUNsYXNzZXNgXTp7Z2V0KCl7cmV0dXJuIHRoaXMuY2xhc3Nlcy5nZXRBbGwoaSl9fSxbYGhhcyR7byhpKX1DbGFzc2BdOntnZXQoKXtyZXR1cm4gdGhpcy5jbGFzc2VzLmhhcyhpKX19fSk7dmFyIGl9KSx7fSl9LGZ1bmN0aW9uKHQpe3JldHVybiBDKHQsInRhcmdldHMiKS5yZWR1Y2UoKCh0LGUpPT57cmV0dXJuIE9iamVjdC5hc3NpZ24odCx7W2Ake2k9ZX1UYXJnZXRgXTp7Z2V0KCl7Y29uc3QgdD10aGlzLnRhcmdldHMuZmluZChpKTtpZih0KXJldHVybiB0O3Rocm93IG5ldyBFcnJvcihgTWlzc2luZyB0YXJnZXQgZWxlbWVudCAiJHtpfSIgZm9yICIke3RoaXMuaWRlbnRpZmllcn0iIGNvbnRyb2xsZXJgKX19LFtgJHtpfVRhcmdldHNgXTp7Z2V0KCl7cmV0dXJuIHRoaXMudGFyZ2V0cy5maW5kQWxsKGkpfX0sW2BoYXMke28oaSl9VGFyZ2V0YF06e2dldCgpe3JldHVybiB0aGlzLnRhcmdldHMuaGFzKGkpfX19KTt2YXIgaX0pLHt9KX0sZnVuY3Rpb24odCl7Y29uc3QgZT1mdW5jdGlvbih0LGUpe3JldHVybiBBKHQpLnJlZHVjZSgoKHQsaSk9Pih0LnB1c2goLi4uZnVuY3Rpb24odCxlKXtjb25zdCBpPXRbZV07cmV0dXJuIGk/T2JqZWN0LmtleXMoaSkubWFwKCh0PT5bdCxpW3RdXSkpOltdfShpLGUpKSx0KSksW10pfSh0LCJ2YWx1ZXMiKSxpPXt2YWx1ZURlc2NyaXB0b3JNYXA6e2dldCgpe3JldHVybiBlLnJlZHVjZSgoKHQsZSk9Pntjb25zdCBpPUIoZSkscz10aGlzLmRhdGEuZ2V0QXR0cmlidXRlTmFtZUZvcktleShpLmtleSk7cmV0dXJuIE9iamVjdC5hc3NpZ24odCx7W3NdOml9KX0pLHt9KX19fTtyZXR1cm4gZS5yZWR1Y2UoKCh0LGUpPT5PYmplY3QuYXNzaWduKHQsZnVuY3Rpb24odCl7Y29uc3QgZT1CKHQpLHtrZXk6aSxuYW1lOnMscmVhZGVyOmEsd3JpdGVyOm59PWU7cmV0dXJue1tzXTp7Z2V0KCl7Y29uc3QgdD10aGlzLmRhdGEuZ2V0KGkpO3JldHVybiBudWxsIT09dD9hKHQpOmUuZGVmYXVsdFZhbHVlfSxzZXQodCl7dm9pZCAwPT09dD90aGlzLmRhdGEuZGVsZXRlKGkpOnRoaXMuZGF0YS5zZXQoaSxuKHQpKX19LFtgaGFzJHtvKHMpfWBdOntnZXQoKXtyZXR1cm4gdGhpcy5kYXRhLmhhcyhpKXx8ZS5oYXNDdXN0b21EZWZhdWx0VmFsdWV9fX19KGUpKSksaSl9XSxqLnRhcmdldHM9W10sai52YWx1ZXM9e319LDkyNzpmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO3ZhciBzO2Z1bmN0aW9uIGEodCxlKXt2YXIgaT1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihzPXMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLGkucHVzaC5hcHBseShpLHMpfXJldHVybiBpfWZ1bmN0aW9uIG4odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIGk9bnVsbCE9YXJndW1lbnRzW2VdP2FyZ3VtZW50c1tlXTp7fTtlJTI/YShPYmplY3QoaSksITApLmZvckVhY2goKGZ1bmN0aW9uKGUpe2godCxlLGlbZV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoaSkpOmEoT2JqZWN0KGkpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSxlKSl9KSl9cmV0dXJuIHR9ZnVuY3Rpb24gcih0KXtyZXR1cm4gcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0scih0KX1mdW5jdGlvbiBvKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbCh0LGUpe2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgcz1lW2ldO3MuZW51bWVyYWJsZT1zLmVudW1lcmFibGV8fCExLHMuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBzJiYocy53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscy5rZXkscyl9fWZ1bmN0aW9uIGModCxlLGkpe3JldHVybiBlJiZsKHQucHJvdG90eXBlLGUpLGkmJmwodCxpKSx0fWZ1bmN0aW9uIGgodCxlLGkpe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6aSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09aSx0fWZ1bmN0aW9uIGQodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmcCh0LGUpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIHU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX0sdSh0KX1mdW5jdGlvbiBwKHQsZSl7cmV0dXJuIHA9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9LHAodCxlKX1mdW5jdGlvbiBnKHQsZSl7aWYoZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpKXJldHVybiBlO2lmKHZvaWQgMCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiB0fSh0KX1mdW5jdGlvbiBmKHQpe3ZhciBlPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaSxzPXUodCk7aWYoZSl7dmFyIGE9dSh0aGlzKS5jb25zdHJ1Y3RvcjtpPVJlZmxlY3QuY29uc3RydWN0KHMsYXJndW1lbnRzLGEpfWVsc2UgaT1zLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZyh0aGlzLGkpfX1mdW5jdGlvbiBtKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB4KHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8dih0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB2KHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB4KHQsZSk7dmFyIGk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09aSYmdC5jb25zdHJ1Y3RvciYmKGk9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWl8fCJTZXQiPT09aT9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09aXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaSk/eCh0LGUpOnZvaWQgMH19ZnVuY3Rpb24geCh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgaT0wLHM9bmV3IEFycmF5KGUpO2k8ZTtpKyspc1tpXT10W2ldO3JldHVybiBzfXZhciBiPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe28odGhpcyx0KX1yZXR1cm4gYyh0LFt7a2V5OiJzaGFkZVJHQkNvbG9yIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWUuc3BsaXQoIiwiKSxzPXQ8MD8wOjI1NSxhPXQ8MD8tMSp0OnQsbj1wYXJzZUludChpWzBdLnNsaWNlKDQpLDEwKSxyPXBhcnNlSW50KGlbMV0sMTApLG89cGFyc2VJbnQoaVsyXSwxMCk7cmV0dXJuInJnYigiKyhNYXRoLnJvdW5kKChzLW4pKmEpK24pKyIsIisoTWF0aC5yb3VuZCgocy1yKSphKStyKSsiLCIrKE1hdGgucm91bmQoKHMtbykqYSkrbykrIikifX0se2tleToic2hhZGVIZXhDb2xvciIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1wYXJzZUludChlLnNsaWNlKDEpLDE2KSxzPXQ8MD8wOjI1NSxhPXQ8MD8tMSp0OnQsbj1pPj4xNixyPWk+PjgmMjU1LG89MjU1Jmk7cmV0dXJuIiMiKygxNjc3NzIxNis2NTUzNiooTWF0aC5yb3VuZCgocy1uKSphKStuKSsyNTYqKE1hdGgucm91bmQoKHMtcikqYSkrcikrKE1hdGgucm91bmQoKHMtbykqYSkrbykpLnRvU3RyaW5nKDE2KS5zbGljZSgxKX19LHtrZXk6InNoYWRlQ29sb3IiLHZhbHVlOmZ1bmN0aW9uKGUsaSl7cmV0dXJuIHQuaXNDb2xvckhleChpKT90aGlzLnNoYWRlSGV4Q29sb3IoZSxpKTp0aGlzLnNoYWRlUkdCQ29sb3IoZSxpKX19XSxbe2tleToiYmluZCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fX0se2tleToiaXNPYmplY3QiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JiYib2JqZWN0Ij09PXIodCkmJiFBcnJheS5pc0FycmF5KHQpJiZudWxsIT10fX0se2tleToiaXMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PSJbb2JqZWN0ICIrdCsiXSJ9fSx7a2V5OiJsaXN0VG9BcnJheSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT1bXTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWlbZV09dFtlXTtyZXR1cm4gaX19LHtrZXk6ImV4dGVuZCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzOyJmdW5jdGlvbiIhPXR5cGVvZiBPYmplY3QuYXNzaWduJiYoT2JqZWN0LmFzc2lnbj1mdW5jdGlvbih0KXtpZihudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpO2Zvcih2YXIgZT1PYmplY3QodCksaT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspe3ZhciBzPWFyZ3VtZW50c1tpXTtpZihudWxsIT1zKWZvcih2YXIgYSBpbiBzKXMuaGFzT3duUHJvcGVydHkoYSkmJihlW2FdPXNbYV0pfXJldHVybiBlfSk7dmFyIHM9T2JqZWN0LmFzc2lnbih7fSx0KTtyZXR1cm4gdGhpcy5pc09iamVjdCh0KSYmdGhpcy5pc09iamVjdChlKSYmT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24oYSl7aS5pc09iamVjdChlW2FdKSYmYSBpbiB0P3NbYV09aS5leHRlbmQodFthXSxlW2FdKTpPYmplY3QuYXNzaWduKHMsaCh7fSxhLGVbYV0pKX0pKSxzfX0se2tleToiZXh0ZW5kQXJyYXkiLHZhbHVlOmZ1bmN0aW9uKGUsaSl7dmFyIHM9W107cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXtzLnB1c2godC5leHRlbmQoaSxlKSl9KSksc319LHtrZXk6Im1vbnRoTW9kIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCUxMn19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0LmlzKCJBcnJheSIsZSkpe2Zvcih2YXIgaT1bXSxzPTA7czxlLmxlbmd0aDtzKyspaVtzXT10aGlzLmNsb25lKGVbc10pO3JldHVybiBpfWlmKHQuaXMoIk51bGwiLGUpKXJldHVybiBudWxsO2lmKHQuaXMoIkRhdGUiLGUpKXJldHVybiBlO2lmKCJvYmplY3QiPT09cihlKSl7dmFyIGE9e307Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKGFbbl09dGhpcy5jbG9uZShlW25dKSk7cmV0dXJuIGF9cmV0dXJuIGV9fSx7a2V5OiJsb2cxMCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubG9nKHQpL01hdGguTE4xMH19LHtrZXk6InJvdW5kVG9CYXNlMTAiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nMTAodCkpKX19LHtrZXk6InJvdW5kVG9CYXNlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLnBvdyhlLE1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5sb2coZSkpKX19LHtrZXk6InBhcnNlTnVtYmVyIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXQ/dDpwYXJzZUZsb2F0KHQpfX0se2tleToicmFuZG9tSWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKE1hdGgucmFuZG9tKCkrMSkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg0KX19LHtrZXk6Im5vRXhwb25lbnRzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1TdHJpbmcodCkuc3BsaXQoL1tlRV0vKTtpZigxPT09ZS5sZW5ndGgpcmV0dXJuIGVbMF07dmFyIGk9IiIscz10PDA/Ii0iOiIiLGE9ZVswXS5yZXBsYWNlKCIuIiwiIiksbj1OdW1iZXIoZVsxXSkrMTtpZihuPDApe2ZvcihpPXMrIjAuIjtuKys7KWkrPSIwIjtyZXR1cm4gaSthLnJlcGxhY2UoL14tLywiIil9Zm9yKG4tPWEubGVuZ3RoO24tLTspaSs9IjAiO3JldHVybiBhK2l9fSx7a2V5OiJnZXREaW1lbnNpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCksaT10LmNsaWVudEhlaWdodCxzPXQuY2xpZW50V2lkdGg7cmV0dXJuIGktPXBhcnNlRmxvYXQoZS5wYWRkaW5nVG9wKStwYXJzZUZsb2F0KGUucGFkZGluZ0JvdHRvbSksW3MtPXBhcnNlRmxvYXQoZS5wYWRkaW5nTGVmdCkrcGFyc2VGbG9hdChlLnBhZGRpbmdSaWdodCksaV19fSx7a2V5OiJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3RvcDplLnRvcCxyaWdodDplLnJpZ2h0LGJvdHRvbTplLmJvdHRvbSxsZWZ0OmUubGVmdCx3aWR0aDp0LmNsaWVudFdpZHRoLGhlaWdodDp0LmNsaWVudEhlaWdodCx4OmUubGVmdCx5OmUudG9wfX19LHtrZXk6ImdldExhcmdlc3RTdHJpbmdGcm9tQXJyIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJihlPWUucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD5lLmxlbmd0aD90OmV9KSkpLHQubGVuZ3RoPmUubGVuZ3RoP3Q6ZX0pLDApfX0se2tleToiaGV4VG9SZ2JhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiIzk5OTk5OSIsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06LjY7IiMiIT09dC5zdWJzdHJpbmcoMCwxKSYmKHQ9IiM5OTk5OTkiKTt2YXIgaT10LnJlcGxhY2UoIiMiLCIiKTtpPWkubWF0Y2gobmV3IFJlZ0V4cCgiKC57IitpLmxlbmd0aC8zKyJ9KSIsImciKSk7Zm9yKHZhciBzPTA7czxpLmxlbmd0aDtzKyspaVtzXT1wYXJzZUludCgxPT09aVtzXS5sZW5ndGg/aVtzXStpW3NdOmlbc10sMTYpO3JldHVybiB2b2lkIDAhPT1lJiZpLnB1c2goZSksInJnYmEoIitpLmpvaW4oIiwiKSsiKSJ9fSx7a2V5OiJnZXRPcGFjaXR5RnJvbVJHQkEiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQucmVwbGFjZSgvXi4qLCguKylcKS8sIiQxIikpfX0se2tleToicmdiMmhleCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9dC5tYXRjaCgvXnJnYmE/W1xzK10/XChbXHMrXT8oXGQrKVtccytdPyxbXHMrXT8oXGQrKVtccytdPyxbXHMrXT8oXGQrKVtccytdPy9pKSkmJjQ9PT10Lmxlbmd0aD8iIyIrKCIwIitwYXJzZUludCh0WzFdLDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKSsoIjAiK3BhcnNlSW50KHRbMl0sMTApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKygiMCIrcGFyc2VJbnQodFszXSwxMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMik6IiJ9fSx7a2V5OiJpc0NvbG9ySGV4Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4vKF4jWzAtOUEtRl17Nn0kKXwoXiNbMC05QS1GXXszfSQpfCheI1swLTlBLUZdezh9JCkvaS50ZXN0KHQpfX0se2tleToiZ2V0UG9seWdvblBvcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9W10scz0yKk1hdGguUEkvZSxhPTA7YTxlO2ErKyl7dmFyIG49e307bi54PXQqTWF0aC5zaW4oYSpzKSxuLnk9LXQqTWF0aC5jb3MoYSpzKSxpLnB1c2gobil9cmV0dXJuIGl9fSx7a2V5OiJwb2xhclRvQ2FydGVzaWFuIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzKXt2YXIgYT0ocy05MCkqTWF0aC5QSS8xODA7cmV0dXJue3g6dCtpKk1hdGguY29zKGEpLHk6ZStpKk1hdGguc2luKGEpfX19LHtrZXk6ImVzY2FwZVN0cmluZyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJ4IixpPXQudG9TdHJpbmcoKS5zbGljZSgpO3JldHVybiBpLnJlcGxhY2UoL1tgIH4hQCMkJV4mKigpfCtcPT87OiciLC48Pnt9W1xdXFwvXS9naSxlKX19LHtrZXk6Im5lZ1RvWmVybyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQ8MD8wOnR9fSx7a2V5OiJtb3ZlSW5kZXhJbkFycmF5Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7aWYoaT49dC5sZW5ndGgpZm9yKHZhciBzPWktdC5sZW5ndGgrMTtzLS07KXQucHVzaCh2b2lkIDApO3JldHVybiB0LnNwbGljZShpLDAsdC5zcGxpY2UoZSwxKVswXSksdH19LHtrZXk6ImV4dHJhY3ROdW1iZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQucmVwbGFjZSgvW15cZC5dKi9nLCIiKSl9fSx7a2V5OiJmaW5kQW5jZXN0b3IiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKDsodD10LnBhcmVudEVsZW1lbnQpJiYhdC5jbGFzc0xpc3QuY29udGFpbnMoZSk7KTtyZXR1cm4gdH19LHtrZXk6InNldEVMc3R5bGVzIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJih0LnN0eWxlLmtleT1lW2ldKX19LHtrZXk6ImlzTnVtYmVyIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4haXNOYU4odCkmJnBhcnNlRmxvYXQoTnVtYmVyKHQpKT09PXQmJiFpc05hTihwYXJzZUludCh0LDEwKSl9fSx7a2V5OiJpc0Zsb2F0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gTnVtYmVyKHQpPT09dCYmdCUxIT0wfX0se2tleToiaXNTYWZhcmkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KX19LHtrZXk6ImlzRmlyZWZveCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImZpcmVmb3giKT4tMX19LHtrZXk6ImlzSUUxMSIsdmFsdWU6ZnVuY3Rpb24oKXtpZigtMSE9PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUiKXx8d2luZG93Lm5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoIlRyaWRlbnQvIik+LTEpcmV0dXJuITB9fSx7a2V5OiJpc0lFIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LGU9dC5pbmRleE9mKCJNU0lFICIpO2lmKGU+MClyZXR1cm4gcGFyc2VJbnQodC5zdWJzdHJpbmcoZSs1LHQuaW5kZXhPZigiLiIsZSkpLDEwKTtpZih0LmluZGV4T2YoIlRyaWRlbnQvIik+MCl7dmFyIGk9dC5pbmRleE9mKCJydjoiKTtyZXR1cm4gcGFyc2VJbnQodC5zdWJzdHJpbmcoaSszLHQuaW5kZXhPZigiLiIsaSkpLDEwKX12YXIgcz10LmluZGV4T2YoIkVkZ2UvIik7cmV0dXJuIHM+MCYmcGFyc2VJbnQodC5zdWJzdHJpbmcocys1LHQuaW5kZXhPZigiLiIscykpLDEwKX19XSksdH0oKSx5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuc2V0RWFzaW5nRnVuY3Rpb25zKCl9cmV0dXJuIGModCxbe2tleToic2V0RWFzaW5nRnVuY3Rpb25zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O2lmKCF0aGlzLncuZ2xvYmFscy5lYXNpbmcpe3N3aXRjaCh0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZWFzaW5nKXtjYXNlImxpbmVhciI6dD0iLSI7YnJlYWs7Y2FzZSJlYXNlaW4iOnQ9IjwiO2JyZWFrO2Nhc2UiZWFzZW91dCI6dD0iPiI7YnJlYWs7Y2FzZSJlYXNlaW5vdXQiOmRlZmF1bHQ6dD0iPD4iO2JyZWFrO2Nhc2Uic3dpbmciOnQ9ZnVuY3Rpb24odCl7dmFyIGU9MS43MDE1ODtyZXR1cm4odC09MSkqdCooKGUrMSkqdCtlKSsxfTticmVhaztjYXNlImJvdW5jZSI6dD1mdW5jdGlvbih0KXtyZXR1cm4gdDwxLzIuNzU/Ny41NjI1KnQqdDp0PDIvMi43NT83LjU2MjUqKHQtPTEuNS8yLjc1KSp0Ky43NTp0PDIuNS8yLjc1PzcuNTYyNSoodC09Mi4yNS8yLjc1KSp0Ky45Mzc1OjcuNTYyNSoodC09Mi42MjUvMi43NSkqdCsuOTg0Mzc1fTticmVhaztjYXNlImVsYXN0aWMiOnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT0hIXQ/dDpNYXRoLnBvdygyLC0xMCp0KSpNYXRoLnNpbigodC0uMDc1KSooMipNYXRoLlBJKS8uMykrMX19dGhpcy53Lmdsb2JhbHMuZWFzaW5nPXR9fX0se2tleToiYW5pbWF0ZUxpbmUiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3QuYXR0cihlKS5hbmltYXRlKHMpLmF0dHIoaSl9fSx7a2V5OiJhbmltYXRlTWFya2VyIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzLGEsbil7ZXx8KGU9MCksdC5hdHRyKHtyOmUsd2lkdGg6ZSxoZWlnaHQ6ZX0pLmFuaW1hdGUocyxhKS5hdHRyKHtyOmksd2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9KS5hZnRlckFsbCgoZnVuY3Rpb24oKXtuKCl9KSl9fSx7a2V5OiJhbmltYXRlQ2lyY2xlIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzLGEpe3QuYXR0cih7cjplLnIsY3g6ZS5jeCxjeTplLmN5fSkuYW5pbWF0ZShzLGEpLmF0dHIoe3I6aS5yLGN4OmkuY3gsY3k6aS5jeX0pfX0se2tleToiYW5pbWF0ZVJlY3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMsYSl7dC5hdHRyKGUpLmFuaW1hdGUocykuYXR0cihpKS5hZnRlckFsbCgoZnVuY3Rpb24oKXtyZXR1cm4gYSgpfSkpfX0se2tleToiYW5pbWF0ZVBhdGhzR3JhZHVhbGx5Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmVsLGk9dC5yZWFsSW5kZXgscz10LmosYT10LmZpbGwsbj10LnBhdGhGcm9tLHI9dC5wYXRoVG8sbz10LnNwZWVkLGw9dC5kZWxheSxjPXRoaXMudyxoPTA7Yy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlR3JhZHVhbGx5LmVuYWJsZWQmJihoPWMuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZUdyYWR1YWxseS5kZWxheSksYy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQmJmMuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmImJhciIhPT1jLmNvbmZpZy5jaGFydC50eXBlJiYoaD0wKSx0aGlzLm1vcnBoU1ZHKGUsaSxzLCJsaW5lIiE9PWMuY29uZmlnLmNoYXJ0LnR5cGV8fGMuZ2xvYmFscy5jb21ib0NoYXJ0cz9hOiJzdHJva2UiLG4scixvLGwqaCl9fSx7a2V5OiJzaG93RGVsYXllZEVsZW1lbnRzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudy5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmVsLmNsYXNzTGlzdC5yZW1vdmUoImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW4iKX0pKX19LHtrZXk6ImFuaW1hdGlvbkNvbXBsZXRlZCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2UuZ2xvYmFscy5hbmltYXRpb25FbmRlZHx8KGUuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCx0aGlzLnNob3dEZWxheWVkRWxlbWVudHMoKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLmFuaW1hdGlvbkVuZCYmZS5jb25maWcuY2hhcnQuZXZlbnRzLmFuaW1hdGlvbkVuZCh0aGlzLmN0eCx7ZWw6dCx3OmV9KSl9fSx7a2V5OiJtb3JwaFNWRyIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyxhLG4scixvKXt2YXIgbD10aGlzLGM9dGhpcy53O2F8fChhPXQuYXR0cigicGF0aEZyb20iKSksbnx8KG49dC5hdHRyKCJwYXRoVG8iKSk7dmFyIGg9ZnVuY3Rpb24odCl7cmV0dXJuInJhZGFyIj09PWMuY29uZmlnLmNoYXJ0LnR5cGUmJihyPTEpLCJNIDAgIi5jb25jYXQoYy5nbG9iYWxzLmdyaWRIZWlnaHQpfTsoIWF8fGEuaW5kZXhPZigidW5kZWZpbmVkIik+LTF8fGEuaW5kZXhPZigiTmFOIik+LTEpJiYoYT1oKCkpLCghbnx8bi5pbmRleE9mKCJ1bmRlZmluZWQiKT4tMXx8bi5pbmRleE9mKCJOYU4iKT4tMSkmJihuPWgoKSksYy5nbG9iYWxzLnNob3VsZEFuaW1hdGV8fChyPTEpLHQucGxvdChhKS5hbmltYXRlKDEsYy5nbG9iYWxzLmVhc2luZyxvKS5wbG90KGEpLmFuaW1hdGUocixjLmdsb2JhbHMuZWFzaW5nLG8pLnBsb3QobikuYWZ0ZXJBbGwoKGZ1bmN0aW9uKCl7Yi5pc051bWJlcihpKT9pPT09Yy5nbG9iYWxzLnNlcmllc1tjLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoLTImJmMuZ2xvYmFscy5zaG91bGRBbmltYXRlJiZsLmFuaW1hdGlvbkNvbXBsZXRlZCh0KToibm9uZSIhPT1zJiZjLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSYmKCFjLmdsb2JhbHMuY29tYm9DaGFydHMmJmU9PT1jLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xfHxjLmdsb2JhbHMuY29tYm9DaGFydHMpJiZsLmFuaW1hdGlvbkNvbXBsZXRlZCh0KSxsLnNob3dEZWxheWVkRWxlbWVudHMoKX0pKX19XSksdH0oKSx3PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBjKHQsW3trZXk6ImdldERlZmF1bHRGaWx0ZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3QudW5maWx0ZXIoITApLChuZXcgd2luZG93LlNWRy5GaWx0ZXIpLnNpemUoIjEyMCUiLCIxODAlIiwiLTUlIiwiLTQwJSIpLCJub25lIiE9PWkuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyP3RoaXMuYXBwbHlGaWx0ZXIodCxlLGkuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyLnR5cGUsaS5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXIudmFsdWUpOmkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCYmdGhpcy5kcm9wU2hhZG93KHQsaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdyxlKX19LHtrZXk6ImFkZE5vcm1hbEZpbHRlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiYhdC5ub2RlLmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1tYXJrZXIiKSYmdGhpcy5kcm9wU2hhZG93KHQsaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdyxlKX19LHtrZXk6ImFkZExpZ2h0ZW5GaWx0ZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLGE9dGhpcy53LG49aS5pbnRlbnNpdHk7dC51bmZpbHRlcighMCksbmV3IHdpbmRvdy5TVkcuRmlsdGVyLHQuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgaT1hLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93OyhpLmVuYWJsZWQ/cy5hZGRTaGFkb3codCxlLGkpOnQpLmNvbXBvbmVudFRyYW5zZmVyKHtyZ2I6e3R5cGU6ImxpbmVhciIsc2xvcGU6MS41LGludGVyY2VwdDpufX0pfSkpLHQuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoImZpbHRlclVuaXRzIiwidXNlclNwYWNlT25Vc2UiKSx0aGlzLl9zY2FsZUZpbHRlclNpemUodC5maWx0ZXJlci5ub2RlKX19LHtrZXk6ImFkZERhcmtlbkZpbHRlciIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXMsYT10aGlzLncsbj1pLmludGVuc2l0eTt0LnVuZmlsdGVyKCEwKSxuZXcgd2luZG93LlNWRy5GaWx0ZXIsdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBpPWEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7KGkuZW5hYmxlZD9zLmFkZFNoYWRvdyh0LGUsaSk6dCkuY29tcG9uZW50VHJhbnNmZXIoe3JnYjp7dHlwZToibGluZWFyIixzbG9wZTpufX0pfSkpLHQuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoImZpbHRlclVuaXRzIiwidXNlclNwYWNlT25Vc2UiKSx0aGlzLl9zY2FsZUZpbHRlclNpemUodC5maWx0ZXJlci5ub2RlKX19LHtrZXk6ImFwcGx5RmlsdGVyIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOi41O3N3aXRjaChpKXtjYXNlIm5vbmUiOnRoaXMuYWRkTm9ybWFsRmlsdGVyKHQsZSk7YnJlYWs7Y2FzZSJsaWdodGVuIjp0aGlzLmFkZExpZ2h0ZW5GaWx0ZXIodCxlLHtpbnRlbnNpdHk6c30pO2JyZWFrO2Nhc2UiZGFya2VuIjp0aGlzLmFkZERhcmtlbkZpbHRlcih0LGUse2ludGVuc2l0eTpzfSl9fX0se2tleToiYWRkU2hhZG93Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9aS5ibHVyLGE9aS50b3Asbj1pLmxlZnQscj1pLmNvbG9yLG89aS5vcGFjaXR5LGw9dC5mbG9vZChBcnJheS5pc0FycmF5KHIpP3JbZV06cixvKS5jb21wb3NpdGUodC5zb3VyY2VBbHBoYSwiaW4iKS5vZmZzZXQobixhKS5nYXVzc2lhbkJsdXIocykubWVyZ2UodC5zb3VyY2UpO3JldHVybiB0LmJsZW5kKHQuc291cmNlLGwpfX0se2tleToiZHJvcFNoYWRvdyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxzPWUudG9wLGE9ZS5sZWZ0LG49ZS5ibHVyLHI9ZS5jb2xvcixvPWUub3BhY2l0eSxsPWUubm9Vc2VyU3BhY2VPblVzZSxjPXRoaXMudztyZXR1cm4gdC51bmZpbHRlcighMCksYi5pc0lFKCkmJiJyYWRpYWxCYXIiPT09Yy5jb25maWcuY2hhcnQudHlwZXx8KHI9QXJyYXkuaXNBcnJheShyKT9yW2ldOnIsdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlO2U9Yi5pc1NhZmFyaSgpfHxiLmlzRmlyZWZveCgpfHxiLmlzSUUoKT90LmZsb29kKHIsbykuY29tcG9zaXRlKHQuc291cmNlQWxwaGEsImluIikub2Zmc2V0KGEscykuZ2F1c3NpYW5CbHVyKG4pOnQuZmxvb2QocixvKS5jb21wb3NpdGUodC5zb3VyY2VBbHBoYSwiaW4iKS5vZmZzZXQoYSxzKS5nYXVzc2lhbkJsdXIobikubWVyZ2UodC5zb3VyY2UpLHQuYmxlbmQodC5zb3VyY2UsZSl9KSksbHx8dC5maWx0ZXJlci5ub2RlLnNldEF0dHJpYnV0ZSgiZmlsdGVyVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpLHRoaXMuX3NjYWxlRmlsdGVyU2l6ZSh0LmZpbHRlcmVyLm5vZGUpKSx0fX0se2tleToic2V0U2VsZWN0aW9uRmlsdGVyIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy53O2lmKHZvaWQgMCE9PXMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbZV0mJnMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbZV0uaW5kZXhPZihpKT4tMSl7dC5ub2RlLnNldEF0dHJpYnV0ZSgic2VsZWN0ZWQiLCEwKTt2YXIgYT1zLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlcjsibm9uZSIhPT1hJiZ0aGlzLmFwcGx5RmlsdGVyKHQsZSxhLnR5cGUsYS52YWx1ZSl9fX0se2tleToiX3NjYWxlRmlsdGVyU2l6ZSIsdmFsdWU6ZnVuY3Rpb24odCl7IWZ1bmN0aW9uKGUpe2Zvcih2YXIgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJnQuc2V0QXR0cmlidXRlKGksZVtpXSl9KHt3aWR0aDoiMjAwJSIsaGVpZ2h0OiIyMDAlIix4OiItNTAlIix5OiItNTAlIn0pfX1dKSx0fSgpLGs9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIGModCxbe2tleToicm91bmRQYXRoQ29ybmVycyIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKHQsZSxpKXt2YXIgYT1lLngtdC54LG49ZS55LXQueSxyPU1hdGguc3FydChhKmErbipuKTtyZXR1cm4gcyh0LGUsTWF0aC5taW4oMSxpL3IpKX1mdW5jdGlvbiBzKHQsZSxpKXtyZXR1cm57eDp0LngrKGUueC10LngpKmkseTp0LnkrKGUueS10LnkpKml9fWZ1bmN0aW9uIGEodCxlKXt0Lmxlbmd0aD4yJiYodFt0Lmxlbmd0aC0yXT1lLngsdFt0Lmxlbmd0aC0xXT1lLnkpfWZ1bmN0aW9uIG4odCl7cmV0dXJue3g6cGFyc2VGbG9hdCh0W3QubGVuZ3RoLTJdKSx5OnBhcnNlRmxvYXQodFt0Lmxlbmd0aC0xXSl9fXZhciByPXQuc3BsaXQoL1ssXHNdLykucmVkdWNlKChmdW5jdGlvbih0LGUpe3ZhciBpPWUubWF0Y2goIihbYS16QS1aXSkoLispIik7cmV0dXJuIGk/KHQucHVzaChpWzFdKSx0LnB1c2goaVsyXSkpOnQucHVzaChlKSx0fSksW10pLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcGFyc2VGbG9hdChlKT09ZSYmdC5sZW5ndGg/dFt0Lmxlbmd0aC0xXS5wdXNoKGUpOnQucHVzaChbZV0pLHR9KSxbXSksbz1bXTtpZihyLmxlbmd0aD4xKXt2YXIgbD1uKHJbMF0pLGM9bnVsbDsiWiI9PXJbci5sZW5ndGgtMV1bMF0mJnJbMF0ubGVuZ3RoPjImJihjPVsiTCIsbC54LGwueV0scltyLmxlbmd0aC0xXT1jKSxvLnB1c2goclswXSk7Zm9yKHZhciBoPTE7aDxyLmxlbmd0aDtoKyspe3ZhciBkPW9bby5sZW5ndGgtMV0sdT1yW2hdLHA9dT09Yz9yWzFdOnJbaCsxXTtpZihwJiZkJiZkLmxlbmd0aD4yJiYiTCI9PXVbMF0mJnAubGVuZ3RoPjImJiJMIj09cFswXSl7dmFyIGcsZixtPW4oZCksdj1uKHUpLHg9bihwKTtnPWkodixtLGUpLGY9aSh2LHgsZSksYSh1LGcpLHUub3JpZ1BvaW50PXYsby5wdXNoKHUpO3ZhciBiPXMoZyx2LC41KSx5PXModixmLC41KSx3PVsiQyIsYi54LGIueSx5LngseS55LGYueCxmLnldO3cub3JpZ1BvaW50PXYsby5wdXNoKHcpfWVsc2Ugby5wdXNoKHUpfWlmKGMpe3ZhciBrPW4ob1tvLmxlbmd0aC0xXSk7by5wdXNoKFsiWiJdKSxhKG9bMF0sayl9fWVsc2Ugbz1yO3JldHVybiBvLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLmpvaW4oIiAiKSsiICJ9KSwiIil9fSx7a2V5OiJkcmF3TGluZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOiIjYThhOGE4IixuPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTowLHI9YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOm51bGwsbz1hcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XT9hcmd1bWVudHNbN106ImJ1dHQiLGw9dGhpcy53LGM9bC5nbG9iYWxzLmRvbS5QYXBlci5saW5lKCkuYXR0cih7eDE6dCx5MTplLHgyOmkseTI6cyxzdHJva2U6YSwic3Ryb2tlLWRhc2hhcnJheSI6biwic3Ryb2tlLXdpZHRoIjpyLCJzdHJva2UtbGluZWNhcCI6b30pO3JldHVybiBjfX0se2tleToiZHJhd1JlY3QiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MCxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowLHM9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjAsYT1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06MCxuPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XToiI2ZlZmVmZSIscj1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06MSxvPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpudWxsLGw9YXJndW1lbnRzLmxlbmd0aD44JiZ2b2lkIDAhPT1hcmd1bWVudHNbOF0/YXJndW1lbnRzWzhdOm51bGwsYz1hcmd1bWVudHMubGVuZ3RoPjkmJnZvaWQgMCE9PWFyZ3VtZW50c1s5XT9hcmd1bWVudHNbOV06MCxoPXRoaXMudyxkPWguZ2xvYmFscy5kb20uUGFwZXIucmVjdCgpO3JldHVybiBkLmF0dHIoe3g6dCx5OmUsd2lkdGg6aT4wP2k6MCxoZWlnaHQ6cz4wP3M6MCxyeDphLHJ5OmEsb3BhY2l0eTpyLCJzdHJva2Utd2lkdGgiOm51bGwhPT1vP286MCxzdHJva2U6bnVsbCE9PWw/bDoibm9uZSIsInN0cm9rZS1kYXNoYXJyYXkiOmN9KSxkLm5vZGUuc2V0QXR0cmlidXRlKCJmaWxsIixuKSxkfX0se2tleToiZHJhd1BvbHlnb24iLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiI2UxZTFlMSIsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MSxzPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXToibm9uZSIsYT10aGlzLncsbj1hLmdsb2JhbHMuZG9tLlBhcGVyLnBvbHlnb24odCkuYXR0cih7ZmlsbDpzLHN0cm9rZTplLCJzdHJva2Utd2lkdGgiOml9KTtyZXR1cm4gbn19LHtrZXk6ImRyYXdDaXJjbGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLGk9dGhpcy53O3Q8MCYmKHQ9MCk7dmFyIHM9aS5nbG9iYWxzLmRvbS5QYXBlci5jaXJjbGUoMip0KTtyZXR1cm4gbnVsbCE9PWUmJnMuYXR0cihlKSxzfX0se2tleToiZHJhd1BhdGgiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZCxpPXZvaWQgMD09PWU/IiI6ZSxzPXQuc3Ryb2tlLGE9dm9pZCAwPT09cz8iI2E4YThhOCI6cyxuPXQuc3Ryb2tlV2lkdGgscj12b2lkIDA9PT1uPzE6bixvPXQuZmlsbCxsPXQuZmlsbE9wYWNpdHksYz12b2lkIDA9PT1sPzE6bCxoPXQuc3Ryb2tlT3BhY2l0eSxkPXZvaWQgMD09PWg/MTpoLHU9dC5jbGFzc2VzLHA9dC5zdHJva2VMaW5lY2FwLGc9dm9pZCAwPT09cD9udWxsOnAsZj10LnN0cm9rZURhc2hBcnJheSxtPXZvaWQgMD09PWY/MDpmLHY9dGhpcy53O3JldHVybiBudWxsPT09ZyYmKGc9di5jb25maWcuc3Ryb2tlLmxpbmVDYXApLChpLmluZGV4T2YoInVuZGVmaW5lZCIpPi0xfHxpLmluZGV4T2YoIk5hTiIpPi0xKSYmKGk9Ik0gMCAiLmNvbmNhdCh2Lmdsb2JhbHMuZ3JpZEhlaWdodCkpLHYuZ2xvYmFscy5kb20uUGFwZXIucGF0aChpKS5hdHRyKHtmaWxsOm8sImZpbGwtb3BhY2l0eSI6YyxzdHJva2U6YSwic3Ryb2tlLW9wYWNpdHkiOmQsInN0cm9rZS1saW5lY2FwIjpnLCJzdHJva2Utd2lkdGgiOnIsInN0cm9rZS1kYXNoYXJyYXkiOm0sY2xhc3M6dX0pfX0se2tleToiZ3JvdXAiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsZT10aGlzLncsaT1lLmdsb2JhbHMuZG9tLlBhcGVyLmdyb3VwKCk7cmV0dXJuIG51bGwhPT10JiZpLmF0dHIodCksaX19LHtrZXk6Im1vdmUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuWyJNIix0LGVdLmpvaW4oIiAiKX19LHtrZXk6ImxpbmUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwscz1udWxsO3JldHVybiBudWxsPT09aT9zPVsiIEwiLHQsZV0uam9pbigiICIpOiJIIj09PWk/cz1bIiBIIix0XS5qb2luKCIgIik6IlYiPT09aSYmKHM9WyIgViIsZV0uam9pbigiICIpKSxzfX0se2tleToiY3VydmUiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMsYSxuKXtyZXR1cm5bIkMiLHQsZSxpLHMsYSxuXS5qb2luKCIgIil9fSx7a2V5OiJxdWFkcmF0aWNDdXJ2ZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyl7cmV0dXJuWyJRIix0LGUsaSxzXS5qb2luKCIgIil9fSx7a2V5OiJhcmMiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMsYSxuLHIpe3ZhciBvPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddJiZhcmd1bWVudHNbN10sbD0iQSI7byYmKGw9ImEiKTt2YXIgYz1bbCx0LGUsaSxzLGEsbixyXS5qb2luKCIgIik7cmV0dXJuIGN9fSx7a2V5OiJyZW5kZXJQYXRocyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10Lmoscz10LnJlYWxJbmRleCxhPXQucGF0aEZyb20scj10LnBhdGhUbyxvPXQuc3Ryb2tlLGw9dC5zdHJva2VXaWR0aCxjPXQuc3Ryb2tlTGluZWNhcCxoPXQuZmlsbCxkPXQuYW5pbWF0aW9uRGVsYXksdT10LmluaXRpYWxTcGVlZCxwPXQuZGF0YUNoYW5nZVNwZWVkLGc9dC5jbGFzc05hbWUsZj10LnNob3VsZENsaXBUb0dyaWQsbT12b2lkIDA9PT1mfHxmLHY9dC5iaW5kRXZlbnRzT25QYXRocyx4PXZvaWQgMD09PXZ8fHYsYj10LmRyYXdTaGFkb3csaz12b2lkIDA9PT1ifHxiLFM9dGhpcy53LEM9bmV3IHcodGhpcy5jdHgpLEE9bmV3IHkodGhpcy5jdHgpLEU9dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQsVD1FJiZ0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkLEw9ISEoRSYmIVMuZ2xvYmFscy5yZXNpemVkfHxUJiZTLmdsb2JhbHMuZGF0YUNoYW5nZWQmJlMuZ2xvYmFscy5zaG91bGRBbmltYXRlKTtMP2U9YTooZT1yLFMuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCk7dmFyIFAsTT1TLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5O1A9QXJyYXkuaXNBcnJheShNKT9NW3NdOlMuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXk7dmFyIE89dGhpcy5kcmF3UGF0aCh7ZDplLHN0cm9rZTpvLHN0cm9rZVdpZHRoOmwsZmlsbDpoLGZpbGxPcGFjaXR5OjEsY2xhc3NlczpnLHN0cm9rZUxpbmVjYXA6YyxzdHJva2VEYXNoQXJyYXk6UH0pO2lmKE8uYXR0cigiaW5kZXgiLHMpLG0mJk8uYXR0cih7ImNsaXAtcGF0aCI6InVybCgjZ3JpZFJlY3RNYXNrIi5jb25jYXQoUy5nbG9iYWxzLmN1aWQsIikiKX0pLCJub25lIiE9PVMuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyLnR5cGUpQy5nZXREZWZhdWx0RmlsdGVyKE8scyk7ZWxzZSBpZihTLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQmJmsmJighUy5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkT25TZXJpZXN8fFMuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZE9uU2VyaWVzJiYtMSE9PVMuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2YocykpKXt2YXIgST1TLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O0MuZHJvcFNoYWRvdyhPLEkscyl9eCYmKE8ubm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIix0aGlzLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyxPKSksTy5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLHRoaXMucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLE8pKSxPLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLE8pKSksTy5hdHRyKHtwYXRoVG86cixwYXRoRnJvbTphfSk7dmFyIEY9e2VsOk8sajppLHJlYWxJbmRleDpzLHBhdGhGcm9tOmEscGF0aFRvOnIsZmlsbDpoLHN0cm9rZVdpZHRoOmwsZGVsYXk6ZH07cmV0dXJuIUV8fFMuZ2xvYmFscy5yZXNpemVkfHxTLmdsb2JhbHMuZGF0YUNoYW5nZWQ/IVMuZ2xvYmFscy5yZXNpemVkJiZTLmdsb2JhbHMuZGF0YUNoYW5nZWR8fEEuc2hvd0RlbGF5ZWRFbGVtZW50cygpOkEuYW5pbWF0ZVBhdGhzR3JhZHVhbGx5KG4obih7fSxGKSx7fSx7c3BlZWQ6dX0pKSxTLmdsb2JhbHMuZGF0YUNoYW5nZWQmJlQmJkwmJkEuYW5pbWF0ZVBhdGhzR3JhZHVhbGx5KG4obih7fSxGKSx7fSx7c3BlZWQ6cH0pKSxPfX0se2tleToiZHJhd1BhdHRlcm4iLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106IiNhOGE4YTgiLGE9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOjAsbj10aGlzLncscj1uLmdsb2JhbHMuZG9tLlBhcGVyLnBhdHRlcm4oZSxpLChmdW5jdGlvbihuKXsiaG9yaXpvbnRhbExpbmVzIj09PXQ/bi5saW5lKDAsMCxpLDApLnN0cm9rZSh7Y29sb3I6cyx3aWR0aDphKzF9KToidmVydGljYWxMaW5lcyI9PT10P24ubGluZSgwLDAsMCxlKS5zdHJva2Uoe2NvbG9yOnMsd2lkdGg6YSsxfSk6InNsYW50ZWRMaW5lcyI9PT10P24ubGluZSgwLDAsZSxpKS5zdHJva2Uoe2NvbG9yOnMsd2lkdGg6YX0pOiJzcXVhcmVzIj09PXQ/bi5yZWN0KGUsaSkuZmlsbCgibm9uZSIpLnN0cm9rZSh7Y29sb3I6cyx3aWR0aDphfSk6ImNpcmNsZXMiPT09dCYmbi5jaXJjbGUoZSkuZmlsbCgibm9uZSIpLnN0cm9rZSh7Y29sb3I6cyx3aWR0aDphfSl9KSk7cmV0dXJuIHJ9fSx7a2V5OiJkcmF3R3JhZGllbnQiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMsYSl7dmFyIG4scj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06bnVsbCxvPWFyZ3VtZW50cy5sZW5ndGg+NiYmdm9pZCAwIT09YXJndW1lbnRzWzZdP2FyZ3VtZW50c1s2XTpudWxsLGw9YXJndW1lbnRzLmxlbmd0aD43JiZ2b2lkIDAhPT1hcmd1bWVudHNbN10/YXJndW1lbnRzWzddOm51bGwsYz1hcmd1bWVudHMubGVuZ3RoPjgmJnZvaWQgMCE9PWFyZ3VtZW50c1s4XT9hcmd1bWVudHNbOF06MCxoPXRoaXMudztlLmxlbmd0aDw5JiYwPT09ZS5pbmRleE9mKCIjIikmJihlPWIuaGV4VG9SZ2JhKGUscykpLGkubGVuZ3RoPDkmJjA9PT1pLmluZGV4T2YoIiMiKSYmKGk9Yi5oZXhUb1JnYmEoaSxhKSk7dmFyIGQ9MCx1PTEscD0xLGc9bnVsbDtudWxsIT09byYmKGQ9dm9pZCAwIT09b1swXT9vWzBdLzEwMDowLHU9dm9pZCAwIT09b1sxXT9vWzFdLzEwMDoxLHA9dm9pZCAwIT09b1syXT9vWzJdLzEwMDoxLGc9dm9pZCAwIT09b1szXT9vWzNdLzEwMDpudWxsKTt2YXIgZj0hKCJkb251dCIhPT1oLmNvbmZpZy5jaGFydC50eXBlJiYicGllIiE9PWguY29uZmlnLmNoYXJ0LnR5cGUmJiJwb2xhckFyZWEiIT09aC5jb25maWcuY2hhcnQudHlwZSYmImJ1YmJsZSIhPT1oLmNvbmZpZy5jaGFydC50eXBlKTtpZihuPW51bGw9PT1sfHwwPT09bC5sZW5ndGg/aC5nbG9iYWxzLmRvbS5QYXBlci5ncmFkaWVudChmPyJyYWRpYWwiOiJsaW5lYXIiLChmdW5jdGlvbih0KXt0LmF0KGQsZSxzKSx0LmF0KHUsaSxhKSx0LmF0KHAsaSxhKSxudWxsIT09ZyYmdC5hdChnLGUscyl9KSk6aC5nbG9iYWxzLmRvbS5QYXBlci5ncmFkaWVudChmPyJyYWRpYWwiOiJsaW5lYXIiLChmdW5jdGlvbih0KXsoQXJyYXkuaXNBcnJheShsW2NdKT9sW2NdOmwpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuYXQoZS5vZmZzZXQvMTAwLGUuY29sb3IsZS5vcGFjaXR5KX0pKX0pKSxmKXt2YXIgbT1oLmdsb2JhbHMuZ3JpZFdpZHRoLzIsdj1oLmdsb2JhbHMuZ3JpZEhlaWdodC8yOyJidWJibGUiIT09aC5jb25maWcuY2hhcnQudHlwZT9uLmF0dHIoe2dyYWRpZW50VW5pdHM6InVzZXJTcGFjZU9uVXNlIixjeDptLGN5OnYscjpyfSk6bi5hdHRyKHtjeDouNSxjeTouNSxyOi44LGZ4Oi4yLGZ5Oi4yfSl9ZWxzZSJ2ZXJ0aWNhbCI9PT10P24uZnJvbSgwLDApLnRvKDAsMSk6ImRpYWdvbmFsIj09PXQ/bi5mcm9tKDAsMCkudG8oMSwxKToiaG9yaXpvbnRhbCI9PT10P24uZnJvbSgwLDEpLnRvKDEsMSk6ImRpYWdvbmFsMiI9PT10JiZuLmZyb20oMSwwKS50bygwLDEpO3JldHVybiBufX0se2tleToiZ2V0VGV4dEJhc2VkT25NYXhXaWR0aCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50ZXh0LGk9dC5tYXhXaWR0aCxzPXQuZm9udFNpemUsYT10LmZvbnRGYW1pbHksbj10aGlzLmdldFRleHRSZWN0cyhlLHMsYSkscj1uLndpZHRoL2UubGVuZ3RoLG89TWF0aC5mbG9vcihpL3IpO3JldHVybiBpPG4ud2lkdGg/ZS5zbGljZSgwLG8tMykrIi4uLiI6ZX19LHtrZXk6ImRyYXdUZXh0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC54LHM9dC55LGE9dC50ZXh0LHI9dC50ZXh0QW5jaG9yLG89dC5mb250U2l6ZSxsPXQuZm9udEZhbWlseSxjPXQuZm9udFdlaWdodCxoPXQuZm9yZUNvbG9yLGQ9dC5vcGFjaXR5LHU9dC5tYXhXaWR0aCxwPXQuY3NzQ2xhc3MsZz12b2lkIDA9PT1wPyIiOnAsZj10LmlzUGxhaW5UZXh0LG09dm9pZCAwPT09Znx8Zix2PXRoaXMudzt2b2lkIDA9PT1hJiYoYT0iIik7dmFyIHg9YTtyfHwocj0ic3RhcnQiKSxoJiZoLmxlbmd0aHx8KGg9di5jb25maWcuY2hhcnQuZm9yZUNvbG9yKSxsPWx8fHYuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksYz1jfHwicmVndWxhciI7dmFyIGIseT17bWF4V2lkdGg6dSxmb250U2l6ZTpvPW98fCIxMXB4Iixmb250RmFtaWx5Omx9O3JldHVybiBBcnJheS5pc0FycmF5KGEpP2I9di5nbG9iYWxzLmRvbS5QYXBlci50ZXh0KChmdW5jdGlvbih0KXtmb3IodmFyIGk9MDtpPGEubGVuZ3RoO2krKyl4PWFbaV0sdSYmKHg9ZS5nZXRUZXh0QmFzZWRPbk1heFdpZHRoKG4oe3RleHQ6YVtpXX0seSkpKSwwPT09aT90LnRzcGFuKHgpOnQudHNwYW4oeCkubmV3TGluZSgpfSkpOih1JiYoeD10aGlzLmdldFRleHRCYXNlZE9uTWF4V2lkdGgobih7dGV4dDphfSx5KSkpLGI9bT92Lmdsb2JhbHMuZG9tLlBhcGVyLnBsYWluKGEpOnYuZ2xvYmFscy5kb20uUGFwZXIudGV4dCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudHNwYW4oeCl9KSkpLGIuYXR0cih7eDppLHk6cywidGV4dC1hbmNob3IiOnIsImRvbWluYW50LWJhc2VsaW5lIjoiYXV0byIsImZvbnQtc2l6ZSI6bywiZm9udC1mYW1pbHkiOmwsImZvbnQtd2VpZ2h0IjpjLGZpbGw6aCxjbGFzczoiYXBleGNoYXJ0cy10ZXh0ICIrZ30pLGIubm9kZS5zdHlsZS5mb250RmFtaWx5PWwsYi5ub2RlLnN0eWxlLm9wYWNpdHk9ZCxifX0se2tleToiZHJhd01hcmtlciIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3Q9dHx8MDt2YXIgcz1pLnBTaXplfHwwLGE9bnVsbDtpZigic3F1YXJlIj09PWkuc2hhcGV8fCJyZWN0Ij09PWkuc2hhcGUpe3ZhciBuPXZvaWQgMD09PWkucFJhZGl1cz9zLzI6aS5wUmFkaXVzO251bGwhPT1lJiZzfHwocz0wLG49MCk7dmFyIHI9MS4yKnMrbixvPXRoaXMuZHJhd1JlY3QocixyLHIscixuKTtvLmF0dHIoe3g6dC1yLzIseTplLXIvMixjeDp0LGN5OmUsY2xhc3M6aS5jbGFzcz9pLmNsYXNzOiIiLGZpbGw6aS5wb2ludEZpbGxDb2xvciwiZmlsbC1vcGFjaXR5IjppLnBvaW50RmlsbE9wYWNpdHk/aS5wb2ludEZpbGxPcGFjaXR5OjEsc3Ryb2tlOmkucG9pbnRTdHJva2VDb2xvciwic3Ryb2tlLXdpZHRoIjppLnBvaW50U3Ryb2tlV2lkdGg/aS5wb2ludFN0cm9rZVdpZHRoOjAsInN0cm9rZS1vcGFjaXR5IjppLnBvaW50U3Ryb2tlT3BhY2l0eT9pLnBvaW50U3Ryb2tlT3BhY2l0eToxfSksYT1vfWVsc2UiY2lyY2xlIiE9PWkuc2hhcGUmJmkuc2hhcGV8fChiLmlzTnVtYmVyKGUpfHwocz0wLGU9MCksYT10aGlzLmRyYXdDaXJjbGUocyx7Y3g6dCxjeTplLGNsYXNzOmkuY2xhc3M/aS5jbGFzczoiIixzdHJva2U6aS5wb2ludFN0cm9rZUNvbG9yLGZpbGw6aS5wb2ludEZpbGxDb2xvciwiZmlsbC1vcGFjaXR5IjppLnBvaW50RmlsbE9wYWNpdHk/aS5wb2ludEZpbGxPcGFjaXR5OjEsInN0cm9rZS13aWR0aCI6aS5wb2ludFN0cm9rZVdpZHRoP2kucG9pbnRTdHJva2VXaWR0aDowLCJzdHJva2Utb3BhY2l0eSI6aS5wb2ludFN0cm9rZU9wYWNpdHk/aS5wb2ludFN0cm9rZU9wYWNpdHk6MX0pKTtyZXR1cm4gYX19LHtrZXk6InBhdGhNb3VzZUVudGVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPW5ldyB3KHRoaXMuY3R4KSxhPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoImluZGV4IiksMTApLG49cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZSgiaiIpLDEwKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlRW50ZXImJmkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUVudGVyKGUsdGhpcy5jdHgse3Nlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6bix3Oml9KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KCJkYXRhUG9pbnRNb3VzZUVudGVyIixbZSx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6YSxkYXRhUG9pbnRJbmRleDpuLHc6aX1dKSwoIm5vbmUiPT09aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZXx8InRydWUiIT09dC5ub2RlLmdldEF0dHJpYnV0ZSgic2VsZWN0ZWQiKSkmJiJub25lIiE9PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIudHlwZSYmIWkuZ2xvYmFscy5pc1RvdWNoRGV2aWNlKXt2YXIgcj1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyO3MuYXBwbHlGaWx0ZXIodCxhLHIudHlwZSxyLnZhbHVlKX19fSx7a2V5OiJwYXRoTW91c2VMZWF2ZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz1uZXcgdyh0aGlzLmN0eCksYT1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKCJpbmRleCIpLDEwKSxuPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoImoiKSwxMCk7ImZ1bmN0aW9uIj09dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUxlYXZlJiZpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VMZWF2ZShlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4Om4sdzppfSksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudCgiZGF0YVBvaW50TW91c2VMZWF2ZSIsW2UsdGhpcy5jdHgse3Nlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6bix3Oml9XSksIm5vbmUiIT09aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZSYmInRydWUiPT09dC5ub2RlLmdldEF0dHJpYnV0ZSgic2VsZWN0ZWQiKXx8Im5vbmUiIT09aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlci50eXBlJiZzLmdldERlZmF1bHRGaWx0ZXIodCxhKX19LHtrZXk6InBhdGhNb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9bmV3IHcodGhpcy5jdHgpLGE9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZSgiaW5kZXgiKSwxMCksbj1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKCJqIiksMTApLHI9ImZhbHNlIjtpZigidHJ1ZSI9PT10Lm5vZGUuZ2V0QXR0cmlidXRlKCJzZWxlY3RlZCIpKXtpZih0Lm5vZGUuc2V0QXR0cmlidXRlKCJzZWxlY3RlZCIsImZhbHNlIiksaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1thXS5pbmRleE9mKG4pPi0xKXt2YXIgbz1pLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW2FdLmluZGV4T2Yobik7aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1thXS5zcGxpY2UobywxKX19ZWxzZXtpZighaS5jb25maWcuc3RhdGVzLmFjdGl2ZS5hbGxvd011bHRpcGxlRGF0YVBvaW50c1NlbGVjdGlvbiYmaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cy5sZW5ndGg+MCl7aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cz1bXTt2YXIgbD1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdCgiLmFwZXhjaGFydHMtc2VyaWVzIHBhdGgiKS5tZW1iZXJzLGM9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoIi5hcGV4Y2hhcnRzLXNlcmllcyBjaXJjbGUsIC5hcGV4Y2hhcnRzLXNlcmllcyByZWN0IikubWVtYmVycyxoPWZ1bmN0aW9uKHQpe0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodCwoZnVuY3Rpb24odCl7dC5ub2RlLnNldEF0dHJpYnV0ZSgic2VsZWN0ZWQiLCJmYWxzZSIpLHMuZ2V0RGVmYXVsdEZpbHRlcih0LGEpfSkpfTtoKGwpLGgoYyl9dC5ub2RlLnNldEF0dHJpYnV0ZSgic2VsZWN0ZWQiLCJ0cnVlIikscj0idHJ1ZSIsdm9pZCAwPT09aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1thXSYmKGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbYV09W10pLGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbYV0ucHVzaChuKX1pZigidHJ1ZSI9PT1yKXt2YXIgZD1pLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlcjtpZigibm9uZSIhPT1kKXMuYXBwbHlGaWx0ZXIodCxhLGQudHlwZSxkLnZhbHVlKTtlbHNlIGlmKCJub25lIiE9PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXImJiFpLmdsb2JhbHMuaXNUb3VjaERldmljZSl7dmFyIHU9aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcjtzLmFwcGx5RmlsdGVyKHQsYSx1LnR5cGUsdS52YWx1ZSl9fWVsc2Uibm9uZSIhPT1pLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlci50eXBlJiYoIm5vbmUiPT09aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlci50eXBlfHxpLmdsb2JhbHMuaXNUb3VjaERldmljZT9zLmdldERlZmF1bHRGaWx0ZXIodCxhKToodT1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyLHMuYXBwbHlGaWx0ZXIodCxhLHUudHlwZSx1LnZhbHVlKSkpOyJmdW5jdGlvbiI9PXR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50U2VsZWN0aW9uJiZpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50U2VsZWN0aW9uKGUsdGhpcy5jdHgse3NlbGVjdGVkRGF0YVBvaW50czppLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLHNlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6bix3Oml9KSxlJiZ0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KCJkYXRhUG9pbnRTZWxlY3Rpb24iLFtlLHRoaXMuY3R4LHtzZWxlY3RlZERhdGFQb2ludHM6aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cyxzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4Om4sdzppfV0pfX0se2tleToicm90YXRlQXJvdW5kQ2VudGVyIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT17fTtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0QkJveCYmKGU9dC5nZXRCQm94KCkpLHt4OmUueCtlLndpZHRoLzIseTplLnkrZS5oZWlnaHQvMn19fSx7a2V5OiJnZXRUZXh0UmVjdHMiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF0sbj10aGlzLncscj10aGlzLmRyYXdUZXh0KHt4Oi0yMDAseTotMjAwLHRleHQ6dCx0ZXh0QW5jaG9yOiJzdGFydCIsZm9udFNpemU6ZSxmb250RmFtaWx5OmksZm9yZUNvbG9yOiIjZmZmIixvcGFjaXR5OjB9KTtzJiZyLmF0dHIoInRyYW5zZm9ybSIscyksbi5nbG9iYWxzLmRvbS5QYXBlci5hZGQocik7dmFyIG89ci5iYm94KCk7cmV0dXJuIGF8fChvPXIubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksci5yZW1vdmUoKSx7d2lkdGg6by53aWR0aCxoZWlnaHQ6by5oZWlnaHR9fX0se2tleToicGxhY2VUZXh0V2l0aEVsbGlwc2lzIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoJiYodC50ZXh0Q29udGVudD1lLGUubGVuZ3RoPjAmJnQuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCk+PWkvMS4xKSl7Zm9yKHZhciBzPWUubGVuZ3RoLTM7cz4wO3MtPTMpaWYodC5nZXRTdWJTdHJpbmdMZW5ndGgoMCxzKTw9aS8xLjEpcmV0dXJuIHZvaWQodC50ZXh0Q29udGVudD1lLnN1YnN0cmluZygwLHMpKyIuLi4iKTt0LnRleHRDb250ZW50PSIuIn19fV0sW3trZXk6InNldEF0dHJzIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJnQuc2V0QXR0cmlidXRlKGksZVtpXSl9fV0pLHR9KCksUz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gYyh0LFt7a2V5OiJnZXRTdGFja2VkU2VyaWVzVG90YWxzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxlPXRoaXMudyxpPVtdO2lmKDA9PT1lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aClyZXR1cm4gaTtmb3IodmFyIHM9MDtzPGUuZ2xvYmFscy5zZXJpZXNbZS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDtzKyspe2Zvcih2YXIgYT0wLG49MDtuPGUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO24rKyl2b2lkIDAhPT1lLmdsb2JhbHMuc2VyaWVzW25dW3NdJiYtMT09PXQuaW5kZXhPZihuKSYmKGErPWUuZ2xvYmFscy5zZXJpZXNbbl1bc10pO2kucHVzaChhKX1yZXR1cm4gaX19LHtrZXk6ImdldFNlcmllc1RvdGFsQnlJbmRleCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gbnVsbD09PXQ/dGhpcy53LmNvbmZpZy5zZXJpZXMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKTp0aGlzLncuZ2xvYmFscy5zZXJpZXNbdF0ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKX19LHtrZXk6ImlzU2VyaWVzTnVsbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gMD09PShudWxsPT09dD90aGlzLncuY29uZmlnLnNlcmllcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dH0pKTp0aGlzLncuY29uZmlnLnNlcmllc1t0XS5kYXRhLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10fSkpKS5sZW5ndGh9fSx7a2V5OiJzZXJpZXNIYXZlU2FtZVZhbHVlcyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLnNlcmllc1t0XS5ldmVyeSgoZnVuY3Rpb24odCxlLGkpe3JldHVybiB0PT09aVswXX0pKX19LHtrZXk6ImdldENhdGVnb3J5TGFiZWxzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10LnNsaWNlKCk7cmV0dXJuIGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGk9dC5tYXAoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIodC1lLmdsb2JhbHMubWluWCsxKX0pKSksaX19LHtrZXk6ImdldExhcmdlc3RTZXJpZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4PXQuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGh9KSkuaW5kZXhPZihNYXRoLm1heC5hcHBseShNYXRoLHQuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGh9KSkpKX19LHtrZXk6ImdldExhcmdlc3RNYXJrZXJTaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPTA7cmV0dXJuIHQuZ2xvYmFscy5tYXJrZXJzLnNpemUuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZT1NYXRoLm1heChlLHQpfSkpLHQuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUmJnQuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoJiZ0LmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmZvckVhY2goKGZ1bmN0aW9uKHQpe2U9TWF0aC5tYXgoZSx0LnNpemUpfSkpLGU+MCYmKGUrPXQuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCsxKSx0Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZT1lLGV9fSx7a2V5OiJnZXRTZXJpZXNUb3RhbHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5zZXJpZXNUb3RhbHM9dC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9MDtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKWkrPXRbc107ZWxzZSBpKz10O3JldHVybiBpfSkpfX0se2tleToiZ2V0U2VyaWVzVG90YWxzWFJhbmdlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm4gaS5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHMsYSl7Zm9yKHZhciBuPTAscj0wO3I8cy5sZW5ndGg7cisrKWkuZ2xvYmFscy5zZXJpZXNYW2FdW3JdPnQmJmkuZ2xvYmFscy5zZXJpZXNYW2FdW3JdPGUmJihuKz1zW3JdKTtyZXR1cm4gbn0pKX19LHtrZXk6ImdldFBlcmNlbnRTZXJpZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5zZXJpZXNQZXJjZW50PXQuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbihlLGkpe3ZhciBzPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspe3ZhciBuPXQuZ2xvYmFscy5zdGFja2VkU2VyaWVzVG90YWxzW2FdLHI9MDtuJiYocj0xMDAqZVthXS9uKSxzLnB1c2gocil9ZWxzZXt2YXIgbz0xMDAqZS90Lmdsb2JhbHMuc2VyaWVzVG90YWxzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSksMCk7cy5wdXNoKG8pfXJldHVybiBzfSkpfX0se2tleToiZ2V0Q2FsY3VsYXRlZFJhdGlvcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlLGkscyxhPXRoaXMudy5nbG9iYWxzLG49W10scj0wLG89W10sbD0uMSxjPTA7aWYoYS55UmFuZ2U9W10sYS5pc011bHRpcGxlWUF4aXMpZm9yKHZhciBoPTA7aDxhLm1pbllBcnIubGVuZ3RoO2grKylhLnlSYW5nZS5wdXNoKE1hdGguYWJzKGEubWluWUFycltoXS1hLm1heFlBcnJbaF0pKSxvLnB1c2goMCk7ZWxzZSBhLnlSYW5nZS5wdXNoKE1hdGguYWJzKGEubWluWS1hLm1heFkpKTthLnhSYW5nZT1NYXRoLmFicyhhLm1heFgtYS5taW5YKSxhLnpSYW5nZT1NYXRoLmFicyhhLm1heFotYS5taW5aKTtmb3IodmFyIGQ9MDtkPGEueVJhbmdlLmxlbmd0aDtkKyspbi5wdXNoKGEueVJhbmdlW2RdL2EuZ3JpZEhlaWdodCk7aWYoZT1hLnhSYW5nZS9hLmdyaWRXaWR0aCxpPU1hdGguYWJzKGEuaW5pdGlhbE1heFgtYS5pbml0aWFsTWluWCkvYS5ncmlkV2lkdGgsdD1hLnlSYW5nZS9hLmdyaWRXaWR0aCxzPWEueFJhbmdlL2EuZ3JpZEhlaWdodCwocj1hLnpSYW5nZS9hLmdyaWRIZWlnaHQqMTYpfHwocj0xKSxhLm1pblkhPT1OdW1iZXIuTUlOX1ZBTFVFJiYwIT09TWF0aC5hYnMoYS5taW5ZKSYmKGEuaGFzTmVncz0hMCksYS5pc011bHRpcGxlWUF4aXMpe289W107Zm9yKHZhciB1PTA7dTxuLmxlbmd0aDt1Kyspby5wdXNoKC1hLm1pbllBcnJbdV0vblt1XSl9ZWxzZSBvLnB1c2goLWEubWluWS9uWzBdKSxhLm1pblkhPT1OdW1iZXIuTUlOX1ZBTFVFJiYwIT09TWF0aC5hYnMoYS5taW5ZKSYmKGw9LWEubWluWS90LGM9YS5taW5YL2UpO3JldHVybnt5UmF0aW86bixpbnZlcnRlZFlSYXRpbzp0LHpSYXRpbzpyLHhSYXRpbzplLGluaXRpYWxYUmF0aW86aSxpbnZlcnRlZFhSYXRpbzpzLGJhc2VMaW5lSW52ZXJ0ZWRZOmwsYmFzZUxpbmVZOm8sYmFzZUxpbmVYOmN9fX0se2tleToiZ2V0TG9nU2VyaWVzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53O3JldHVybiBpLmdsb2JhbHMuc2VyaWVzTG9nPXQubWFwKChmdW5jdGlvbih0LHMpe3JldHVybiBpLmNvbmZpZy55YXhpc1tzXSYmaS5jb25maWcueWF4aXNbc10ubG9nYXJpdGhtaWM/dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dD9udWxsOmUuZ2V0TG9nVmFsKGkuY29uZmlnLnlheGlzW3NdLmxvZ0Jhc2UsdCxzKX0pKTp0fSkpLGkuZ2xvYmFscy5pbnZhbGlkTG9nU2NhbGU/dDppLmdsb2JhbHMuc2VyaWVzTG9nfX0se2tleToiZ2V0QmFzZUxvZyIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5sb2coZSkvTWF0aC5sb2codCl9fSx7a2V5OiJnZXRMb2dWYWwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtpZigwPT09ZSlyZXR1cm4gMDt2YXIgcz10aGlzLncsYT0wPT09cy5nbG9iYWxzLm1pbllBcnJbaV0/LTE6dGhpcy5nZXRCYXNlTG9nKHQscy5nbG9iYWxzLm1pbllBcnJbaV0pLG49KDA9PT1zLmdsb2JhbHMubWF4WUFycltpXT8wOnRoaXMuZ2V0QmFzZUxvZyh0LHMuZ2xvYmFscy5tYXhZQXJyW2ldKSktYTtyZXR1cm4gZTwxP2UvbjoodGhpcy5nZXRCYXNlTG9nKHQsZSktYSkvbn19LHtrZXk6ImdldExvZ1lSYXRpb3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncscz10aGlzLncuZ2xvYmFscztyZXR1cm4gcy55TG9nUmF0aW89dC5zbGljZSgpLHMubG9nWVJhbmdlPXMueVJhbmdlLm1hcCgoZnVuY3Rpb24odCxhKXtpZihpLmNvbmZpZy55YXhpc1thXSYmZS53LmNvbmZpZy55YXhpc1thXS5sb2dhcml0aG1pYyl7dmFyIG4scj0tTnVtYmVyLk1BWF9WQUxVRSxvPU51bWJlci5NSU5fVkFMVUU7cmV0dXJuIHMuc2VyaWVzTG9nLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKChmdW5jdGlvbih0KXtpLmNvbmZpZy55YXhpc1tlXSYmaS5jb25maWcueWF4aXNbZV0ubG9nYXJpdGhtaWMmJihyPU1hdGgubWF4KHQsciksbz1NYXRoLm1pbih0LG8pKX0pKX0pKSxuPU1hdGgucG93KHMueVJhbmdlW2FdLE1hdGguYWJzKG8tcikvcy55UmFuZ2VbYV0pLHMueUxvZ1JhdGlvW2FdPW4vcy5ncmlkSGVpZ2h0LG59fSkpLHMuaW52YWxpZExvZ1NjYWxlP3Quc2xpY2UoKTpzLnlMb2dSYXRpb319XSxbe2tleToiY2hlY2tDb21ib1NlcmllcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9ITEsaT0wLHM9MDtyZXR1cm4gdC5sZW5ndGgmJnZvaWQgMCE9PXRbMF0udHlwZSYmdC5mb3JFYWNoKChmdW5jdGlvbih0KXsiYmFyIiE9PXQudHlwZSYmImNvbHVtbiIhPT10LnR5cGUmJiJjYW5kbGVzdGljayIhPT10LnR5cGUmJiJib3hQbG90IiE9PXQudHlwZXx8aSsrLHZvaWQgMCE9PXQudHlwZSYmcysrfSkpLHM+MCYmKGU9ITApLHtjb21ib0JhckNvdW50OmksY29tYm9DaGFydHM6ZX19fSx7a2V5OiJleHRlbmRBcnJheVByb3BzIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGUueWF4aXMmJihlPXQuZXh0ZW5kWUF4aXMoZSxpKSksZS5hbm5vdGF0aW9ucyYmKGUuYW5ub3RhdGlvbnMueWF4aXMmJihlPXQuZXh0ZW5kWUF4aXNBbm5vdGF0aW9ucyhlKSksZS5hbm5vdGF0aW9ucy54YXhpcyYmKGU9dC5leHRlbmRYQXhpc0Fubm90YXRpb25zKGUpKSxlLmFubm90YXRpb25zLnBvaW50cyYmKGU9dC5leHRlbmRQb2ludEFubm90YXRpb25zKGUpKSksZX19XSksdH0oKSxDPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmFubm9DdHg9ZX1yZXR1cm4gYyh0LFt7a2V5OiJzZXRPcmllbnRhdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLGk9dGhpcy53O2lmKCJ2ZXJ0aWNhbCI9PT10LmxhYmVsLm9yaWVudGF0aW9uKXt2YXIgcz1udWxsIT09ZT9lOjAsYT1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9ucyAuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nIi5jb25jYXQocywiJ10iKSk7aWYobnVsbCE9PWEpe3ZhciBuPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7YS5zZXRBdHRyaWJ1dGUoIngiLHBhcnNlRmxvYXQoYS5nZXRBdHRyaWJ1dGUoIngiKSktbi5oZWlnaHQrNCksInRvcCI9PT10LmxhYmVsLnBvc2l0aW9uP2Euc2V0QXR0cmlidXRlKCJ5IixwYXJzZUZsb2F0KGEuZ2V0QXR0cmlidXRlKCJ5IikpK24ud2lkdGgpOmEuc2V0QXR0cmlidXRlKCJ5IixwYXJzZUZsb2F0KGEuZ2V0QXR0cmlidXRlKCJ5IikpLW4ud2lkdGgpO3ZhciByPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5yb3RhdGVBcm91bmRDZW50ZXIoYSksbz1yLngsbD1yLnk7YS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsInJvdGF0ZSgtOTAgIi5jb25jYXQobywiICIpLmNvbmNhdChsLCIpIikpfX19fSx7a2V5OiJhZGRCYWNrZ3JvdW5kVG9Bbm5vIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZighdHx8dm9pZCAwPT09ZS5sYWJlbC50ZXh0fHx2b2lkIDAhPT1lLmxhYmVsLnRleHQmJiFTdHJpbmcoZS5sYWJlbC50ZXh0KS50cmltKCkpcmV0dXJuIG51bGw7dmFyIHM9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtZ3JpZCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPWUubGFiZWwuc3R5bGUucGFkZGluZy5sZWZ0LHI9ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLnJpZ2h0LG89ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLnRvcCxsPWUubGFiZWwuc3R5bGUucGFkZGluZy5ib3R0b207InZlcnRpY2FsIj09PWUubGFiZWwub3JpZW50YXRpb24mJihvPWUubGFiZWwuc3R5bGUucGFkZGluZy5sZWZ0LGw9ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLnJpZ2h0LG49ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLnRvcCxyPWUubGFiZWwuc3R5bGUucGFkZGluZy5ib3R0b20pO3ZhciBjPWEubGVmdC1zLmxlZnQtbixoPWEudG9wLXMudG9wLW8sZD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1JlY3QoYy1pLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXMsaCxhLndpZHRoK24rcixhLmhlaWdodCtvK2wsZS5sYWJlbC5ib3JkZXJSYWRpdXMsZS5sYWJlbC5zdHlsZS5iYWNrZ3JvdW5kLDEsZS5sYWJlbC5ib3JkZXJXaWR0aCxlLmxhYmVsLmJvcmRlckNvbG9yLDApO3JldHVybiBlLmlkJiZkLm5vZGUuY2xhc3NMaXN0LmFkZChlLmlkKSxkfX0se2tleToiYW5ub3RhdGlvbnNCYWNrZ3JvdW5kIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1mdW5jdGlvbihpLHMsYSl7dmFyIG49ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtIi5jb25jYXQoYSwiLWFubm90YXRpb25zIC5hcGV4Y2hhcnRzLSIpLmNvbmNhdChhLCItYW5ub3RhdGlvbi1sYWJlbFtyZWw9JyIpLmNvbmNhdChzLCInXSIpKTtpZihuKXt2YXIgcj1uLnBhcmVudE5vZGUsbz10LmFkZEJhY2tncm91bmRUb0Fubm8obixpKTtvJiYoci5pbnNlcnRCZWZvcmUoby5ub2RlLG4pLGkubGFiZWwubW91c2VFbnRlciYmby5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLGkubGFiZWwubW91c2VFbnRlci5iaW5kKHQsaSkpLGkubGFiZWwubW91c2VMZWF2ZSYmby5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLGkubGFiZWwubW91c2VMZWF2ZS5iaW5kKHQsaSkpLGkubGFiZWwuY2xpY2smJm8ubm9kZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsaS5sYWJlbC5jbGljay5iaW5kKHQsaSkpKX19O2UuY29uZmlnLmFubm90YXRpb25zLnhheGlzLm1hcCgoZnVuY3Rpb24odCxlKXtpKHQsZSwieGF4aXMiKX0pKSxlLmNvbmZpZy5hbm5vdGF0aW9ucy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsZSl7aSh0LGUsInlheGlzIil9KSksZS5jb25maWcuYW5ub3RhdGlvbnMucG9pbnRzLm1hcCgoZnVuY3Rpb24odCxlKXtpKHQsZSwicG9pbnQiKX0pKX19LHtrZXk6ImdldFkxWTIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGkscz0ieTEiPT09dD9lLnk6ZS55MixhPXRoaXMudztpZih0aGlzLmFubm9DdHguaW52ZXJ0QXhpcyl7dmFyIG49YS5nbG9iYWxzLmxhYmVscy5pbmRleE9mKHMpO2EuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKG49YS5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmluZGV4T2YocykpO3ZhciByPWEuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXlheGlzLXRleHRzLWcgdGV4dDpudGgtY2hpbGQoIisobisxKSsiKSIpO3ImJihpPXBhcnNlRmxvYXQoci5nZXRBdHRyaWJ1dGUoInkiKSkpfWVsc2V7dmFyIG87bz1hLmNvbmZpZy55YXhpc1tlLnlBeGlzSW5kZXhdLmxvZ2FyaXRobWljPyhzPW5ldyBTKHRoaXMuYW5ub0N0eC5jdHgpLmdldExvZ1ZhbChzLGUueUF4aXNJbmRleCkpL2EuZ2xvYmFscy55TG9nUmF0aW9bZS55QXhpc0luZGV4XToocy1hLmdsb2JhbHMubWluWUFycltlLnlBeGlzSW5kZXhdKS8oYS5nbG9iYWxzLnlSYW5nZVtlLnlBeGlzSW5kZXhdL2EuZ2xvYmFscy5ncmlkSGVpZ2h0KSxpPWEuZ2xvYmFscy5ncmlkSGVpZ2h0LW8sIWUubWFya2VyfHx2b2lkIDAhPT1lLnkmJm51bGwhPT1lLnl8fChpPTApLGEuY29uZmlnLnlheGlzW2UueUF4aXNJbmRleF0mJmEuY29uZmlnLnlheGlzW2UueUF4aXNJbmRleF0ucmV2ZXJzZWQmJihpPW8pfXJldHVybiJzdHJpbmciPT10eXBlb2YgcyYmcy5pbmRleE9mKCJweCIpPi0xJiYoaT1wYXJzZUZsb2F0KHMpKSxpfX0se2tleToiZ2V0WDFYMiIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz10aGlzLmFubm9DdHguaW52ZXJ0QXhpcz9pLmdsb2JhbHMubWluWTppLmdsb2JhbHMubWluWCxhPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzP2kuZ2xvYmFscy5tYXhZOmkuZ2xvYmFscy5tYXhYLG49dGhpcy5hbm5vQ3R4LmludmVydEF4aXM/aS5nbG9iYWxzLnlSYW5nZVswXTppLmdsb2JhbHMueFJhbmdlLHI9KGUueC1zKS8obi9pLmdsb2JhbHMuZ3JpZFdpZHRoKTt0aGlzLmFubm9DdHguaW52ZXJzZWRSZXZlcnNlZEF4aXMmJihyPShhLWUueCkvKG4vaS5nbG9iYWxzLmdyaWRXaWR0aCkpLCJjYXRlZ29yeSIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiYhaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHx0aGlzLmFubm9DdHguaW52ZXJ0QXhpc3x8aS5nbG9iYWxzLmRhdGFGb3JtYXRYTnVtZXJpY3x8KHI9dGhpcy5nZXRTdHJpbmdYKGUueCkpO3ZhciBvPShlLngyLXMpLyhuL2kuZ2xvYmFscy5ncmlkV2lkdGgpO3JldHVybiB0aGlzLmFubm9DdHguaW52ZXJzZWRSZXZlcnNlZEF4aXMmJihvPShhLWUueDIpLyhuL2kuZ2xvYmFscy5ncmlkV2lkdGgpKSwiY2F0ZWdvcnkiIT09aS5jb25maWcueGF4aXMudHlwZSYmIWkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8dGhpcy5hbm5vQ3R4LmludmVydEF4aXN8fGkuZ2xvYmFscy5kYXRhRm9ybWF0WE51bWVyaWN8fChvPXRoaXMuZ2V0U3RyaW5nWChlLngyKSksdm9pZCAwIT09ZS54JiZudWxsIT09ZS54fHwhZS5tYXJrZXJ8fChyPWkuZ2xvYmFscy5ncmlkV2lkdGgpLCJ4MSI9PT10JiYic3RyaW5nIj09dHlwZW9mIGUueCYmZS54LmluZGV4T2YoInB4Iik+LTEmJihyPXBhcnNlRmxvYXQoZS54KSksIngyIj09PXQmJiJzdHJpbmciPT10eXBlb2YgZS54MiYmZS54Mi5pbmRleE9mKCJweCIpPi0xJiYobz1wYXJzZUZsb2F0KGUueDIpKSwieDEiPT09dD9yOm99fSx7a2V5OiJnZXRTdHJpbmdYIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10O2UuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmZS5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmxlbmd0aCYmKHQ9ZS5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmluZGV4T2YodCkrMSk7dmFyIHM9ZS5nbG9iYWxzLmxhYmVscy5pbmRleE9mKHQpLGE9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyB0ZXh0Om50aC1jaGlsZCgiKyhzKzEpKyIpIik7cmV0dXJuIGEmJihpPXBhcnNlRmxvYXQoYS5nZXRBdHRyaWJ1dGUoIngiKSkpLGl9fV0pLHR9KCksQT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWUsdGhpcy5pbnZlcnRBeGlzPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzLHRoaXMuaGVscGVycz1uZXcgQyh0aGlzLmFubm9DdHgpfXJldHVybiBjKHQsW3trZXk6ImFkZFhheGlzQW5ub3RhdGlvbiIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzLGE9dGhpcy53LG49dGhpcy5oZWxwZXJzLmdldFgxWDIoIngxIix0KSxyPXQubGFiZWwudGV4dCxvPXQuc3Ryb2tlRGFzaEFycmF5O2lmKGIuaXNOdW1iZXIobikpe2lmKG51bGw9PT10LngyfHx2b2lkIDA9PT10LngyKXt2YXIgbD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd0xpbmUobit0Lm9mZnNldFgsMCt0Lm9mZnNldFksbit0Lm9mZnNldFgsYS5nbG9iYWxzLmdyaWRIZWlnaHQrdC5vZmZzZXRZLHQuYm9yZGVyQ29sb3Isbyx0LmJvcmRlcldpZHRoKTtlLmFwcGVuZENoaWxkKGwubm9kZSksdC5pZCYmbC5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCl9ZWxzZXtpZigocz10aGlzLmhlbHBlcnMuZ2V0WDFYMigieDIiLHQpKTxuKXt2YXIgYz1uO249cyxzPWN9dmFyIGg9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdSZWN0KG4rdC5vZmZzZXRYLDArdC5vZmZzZXRZLHMtbixhLmdsb2JhbHMuZ3JpZEhlaWdodCt0Lm9mZnNldFksMCx0LmZpbGxDb2xvcix0Lm9wYWNpdHksMSx0LmJvcmRlckNvbG9yLG8pO2gubm9kZS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWFubm90YXRpb24tcmVjdCIpLGguYXR0cigiY2xpcC1wYXRoIiwidXJsKCNncmlkUmVjdE1hc2siLmNvbmNhdChhLmdsb2JhbHMuY3VpZCwiKSIpKSxlLmFwcGVuZENoaWxkKGgubm9kZSksdC5pZCYmaC5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCl9dmFyIGQ9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdldFRleHRSZWN0cyhyLHBhcnNlRmxvYXQodC5sYWJlbC5zdHlsZS5mb250U2l6ZSkpLHU9InRvcCI9PT10LmxhYmVsLnBvc2l0aW9uPzQ6ImNlbnRlciI9PT10LmxhYmVsLnBvc2l0aW9uP2EuZ2xvYmFscy5ncmlkSGVpZ2h0LzIrKCJ2ZXJ0aWNhbCI9PT10LmxhYmVsLm9yaWVudGF0aW9uP2Qud2lkdGgvMjowKTphLmdsb2JhbHMuZ3JpZEhlaWdodCxwPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3VGV4dCh7eDpuK3QubGFiZWwub2Zmc2V0WCx5OnUrdC5sYWJlbC5vZmZzZXRZLSgidmVydGljYWwiPT09dC5sYWJlbC5vcmllbnRhdGlvbj8idG9wIj09PXQubGFiZWwucG9zaXRpb24/ZC53aWR0aC8yLTEyOi1kLndpZHRoLzI6MCksdGV4dDpyLHRleHRBbmNob3I6dC5sYWJlbC50ZXh0QW5jaG9yLGZvbnRTaXplOnQubGFiZWwuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp0LmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp0LmxhYmVsLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOnQubGFiZWwuc3R5bGUuY29sb3IsY3NzQ2xhc3M6ImFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbi1sYWJlbCAiLmNvbmNhdCh0LmxhYmVsLnN0eWxlLmNzc0NsYXNzLCIgIikuY29uY2F0KHQuaWQ/dC5pZDoiIil9KTtwLmF0dHIoe3JlbDppfSksZS5hcHBlbmRDaGlsZChwLm5vZGUpLHRoaXMuYW5ub0N0eC5oZWxwZXJzLnNldE9yaWVudGF0aW9ucyh0LGkpfX19LHtrZXk6ImRyYXdYQXhpc0Fubm90YXRpb25zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb25zIn0pO3JldHVybiBlLmNvbmZpZy5hbm5vdGF0aW9ucy54YXhpcy5tYXAoKGZ1bmN0aW9uKGUscyl7dC5hZGRYYXhpc0Fubm90YXRpb24oZSxpLm5vZGUscyl9KSksaX19XSksdH0oKSxFPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmFubm9DdHg9ZSx0aGlzLmhlbHBlcnM9bmV3IEModGhpcy5hbm5vQ3R4KX1yZXR1cm4gYyh0LFt7a2V5OiJhZGRZYXhpc0Fubm90YXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcyxhPXRoaXMudyxuPXQuc3Ryb2tlRGFzaEFycmF5LHI9dGhpcy5oZWxwZXJzLmdldFkxWTIoInkxIix0KSxvPXQubGFiZWwudGV4dDtpZihudWxsPT09dC55Mnx8dm9pZCAwPT09dC55Mil7dmFyIGw9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdMaW5lKDArdC5vZmZzZXRYLHIrdC5vZmZzZXRZLHRoaXMuX2dldFlBeGlzQW5ub3RhdGlvbldpZHRoKHQpLHIrdC5vZmZzZXRZLHQuYm9yZGVyQ29sb3Isbix0LmJvcmRlcldpZHRoKTtlLmFwcGVuZENoaWxkKGwubm9kZSksdC5pZCYmbC5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCl9ZWxzZXtpZigocz10aGlzLmhlbHBlcnMuZ2V0WTFZMigieTIiLHQpKT5yKXt2YXIgYz1yO3I9cyxzPWN9dmFyIGg9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdSZWN0KDArdC5vZmZzZXRYLHMrdC5vZmZzZXRZLHRoaXMuX2dldFlBeGlzQW5ub3RhdGlvbldpZHRoKHQpLHItcywwLHQuZmlsbENvbG9yLHQub3BhY2l0eSwxLHQuYm9yZGVyQ29sb3Isbik7aC5ub2RlLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtYW5ub3RhdGlvbi1yZWN0IiksaC5hdHRyKCJjbGlwLXBhdGgiLCJ1cmwoI2dyaWRSZWN0TWFzayIuY29uY2F0KGEuZ2xvYmFscy5jdWlkLCIpIikpLGUuYXBwZW5kQ2hpbGQoaC5ub2RlKSx0LmlkJiZoLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKX12YXIgZD0icmlnaHQiPT09dC5sYWJlbC5wb3NpdGlvbj9hLmdsb2JhbHMuZ3JpZFdpZHRoOiJjZW50ZXIiPT09dC5sYWJlbC5wb3NpdGlvbj9hLmdsb2JhbHMuZ3JpZFdpZHRoLzI6MCx1PXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3VGV4dCh7eDpkK3QubGFiZWwub2Zmc2V0WCx5OihudWxsIT1zP3M6cikrdC5sYWJlbC5vZmZzZXRZLTMsdGV4dDpvLHRleHRBbmNob3I6dC5sYWJlbC50ZXh0QW5jaG9yLGZvbnRTaXplOnQubGFiZWwuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp0LmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp0LmxhYmVsLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOnQubGFiZWwuc3R5bGUuY29sb3IsY3NzQ2xhc3M6ImFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbi1sYWJlbCAiLmNvbmNhdCh0LmxhYmVsLnN0eWxlLmNzc0NsYXNzLCIgIikuY29uY2F0KHQuaWQ/dC5pZDoiIil9KTt1LmF0dHIoe3JlbDppfSksZS5hcHBlbmRDaGlsZCh1Lm5vZGUpfX0se2tleToiX2dldFlBeGlzQW5ub3RhdGlvbldpZHRoIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJuIGUuZ2xvYmFscy5ncmlkV2lkdGgsKHQud2lkdGguaW5kZXhPZigiJSIpPi0xP2UuZ2xvYmFscy5ncmlkV2lkdGgqcGFyc2VJbnQodC53aWR0aCwxMCkvMTAwOnBhcnNlSW50KHQud2lkdGgsMTApKSt0Lm9mZnNldFh9fSx7a2V5OiJkcmF3WUF4aXNBbm5vdGF0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy15YXhpcy1hbm5vdGF0aW9ucyJ9KTtyZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMueWF4aXMubWFwKChmdW5jdGlvbihlLHMpe3QuYWRkWWF4aXNBbm5vdGF0aW9uKGUsaS5ub2RlLHMpfSkpLGl9fV0pLHR9KCksVD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWUsdGhpcy5oZWxwZXJzPW5ldyBDKHRoaXMuYW5ub0N0eCl9cmV0dXJuIGModCxbe2tleToiYWRkUG9pbnRBbm5vdGF0aW9uIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy53O3ZhciBzPXRoaXMuaGVscGVycy5nZXRYMVgyKCJ4MSIsdCksYT10aGlzLmhlbHBlcnMuZ2V0WTFZMigieTEiLHQpO2lmKGIuaXNOdW1iZXIocykpe3ZhciBuPXtwU2l6ZTp0Lm1hcmtlci5zaXplLHBvaW50U3Ryb2tlV2lkdGg6dC5tYXJrZXIuc3Ryb2tlV2lkdGgscG9pbnRGaWxsQ29sb3I6dC5tYXJrZXIuZmlsbENvbG9yLHBvaW50U3Ryb2tlQ29sb3I6dC5tYXJrZXIuc3Ryb2tlQ29sb3Isc2hhcGU6dC5tYXJrZXIuc2hhcGUscFJhZGl1czp0Lm1hcmtlci5yYWRpdXMsY2xhc3M6ImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbi1tYXJrZXIgIi5jb25jYXQodC5tYXJrZXIuY3NzQ2xhc3MsIiAiKS5jb25jYXQodC5pZD90LmlkOiIiKX0scj10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd01hcmtlcihzK3QubWFya2VyLm9mZnNldFgsYSt0Lm1hcmtlci5vZmZzZXRZLG4pO2UuYXBwZW5kQ2hpbGQoci5ub2RlKTt2YXIgbz10LmxhYmVsLnRleHQ/dC5sYWJlbC50ZXh0OiIiLGw9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdUZXh0KHt4OnMrdC5sYWJlbC5vZmZzZXRYLHk6YSt0LmxhYmVsLm9mZnNldFktdC5tYXJrZXIuc2l6ZS1wYXJzZUZsb2F0KHQubGFiZWwuc3R5bGUuZm9udFNpemUpLzEuNix0ZXh0Om8sdGV4dEFuY2hvcjp0LmxhYmVsLnRleHRBbmNob3IsZm9udFNpemU6dC5sYWJlbC5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnQubGFiZWwuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OnQubGFiZWwuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6dC5sYWJlbC5zdHlsZS5jb2xvcixjc3NDbGFzczoiYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uLWxhYmVsICIuY29uY2F0KHQubGFiZWwuc3R5bGUuY3NzQ2xhc3MsIiAiKS5jb25jYXQodC5pZD90LmlkOiIiKX0pO2lmKGwuYXR0cih7cmVsOml9KSxlLmFwcGVuZENoaWxkKGwubm9kZSksdC5jdXN0b21TVkcuU1ZHKXt2YXIgYz10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zLWN1c3RvbS1zdmcgIit0LmN1c3RvbVNWRy5jc3NDbGFzc30pO2MuYXR0cih7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoIi5jb25jYXQocyt0LmN1c3RvbVNWRy5vZmZzZXRYLCIsICIpLmNvbmNhdChhK3QuY3VzdG9tU1ZHLm9mZnNldFksIikiKX0pLGMubm9kZS5pbm5lckhUTUw9dC5jdXN0b21TVkcuU1ZHLGUuYXBwZW5kQ2hpbGQoYy5ub2RlKX1pZih0LmltYWdlLnBhdGgpe3ZhciBoPXQuaW1hZ2Uud2lkdGg/dC5pbWFnZS53aWR0aDoyMCxkPXQuaW1hZ2UuaGVpZ2h0P3QuaW1hZ2UuaGVpZ2h0OjIwO3I9dGhpcy5hbm5vQ3R4LmFkZEltYWdlKHt4OnMrdC5pbWFnZS5vZmZzZXRYLWgvMix5OmErdC5pbWFnZS5vZmZzZXRZLWQvMix3aWR0aDpoLGhlaWdodDpkLHBhdGg6dC5pbWFnZS5wYXRoLGFwcGVuZFRvOiIuYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9ucyJ9KX10Lm1vdXNlRW50ZXImJnIubm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIix0Lm1vdXNlRW50ZXIuYmluZCh0aGlzLHQpKSx0Lm1vdXNlTGVhdmUmJnIubm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIix0Lm1vdXNlTGVhdmUuYmluZCh0aGlzLHQpKSx0LmNsaWNrJiZyLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHQuY2xpY2suYmluZCh0aGlzLHQpKX19fSx7a2V5OiJkcmF3UG9pbnRBbm5vdGF0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9ucyJ9KTtyZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMucG9pbnRzLm1hcCgoZnVuY3Rpb24oZSxzKXt0LmFkZFBvaW50QW5ub3RhdGlvbihlLGkubm9kZSxzKX0pKSxpfX1dKSx0fSgpLEw9e25hbWU6ImVuIixvcHRpb25zOnttb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sdG9vbGJhcjp7ZXhwb3J0VG9TVkc6IkRvd25sb2FkIFNWRyIsZXhwb3J0VG9QTkc6IkRvd25sb2FkIFBORyIsZXhwb3J0VG9DU1Y6IkRvd25sb2FkIENTViIsbWVudToiTWVudSIsc2VsZWN0aW9uOiJTZWxlY3Rpb24iLHNlbGVjdGlvblpvb206IlNlbGVjdGlvbiBab29tIix6b29tSW46Ilpvb20gSW4iLHpvb21PdXQ6Ilpvb20gT3V0IixwYW46IlBhbm5pbmciLHJlc2V0OiJSZXNldCBab29tIn19fSxQPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe28odGhpcyx0KSx0aGlzLnlBeGlzPXtzaG93OiEwLHNob3dBbHdheXM6ITEsc2hvd0Zvck51bGxTZXJpZXM6ITAsc2VyaWVzTmFtZTp2b2lkIDAsb3Bwb3NpdGU6ITEscmV2ZXJzZWQ6ITEsbG9nYXJpdGhtaWM6ITEsbG9nQmFzZToxMCx0aWNrQW1vdW50OnZvaWQgMCxmb3JjZU5pY2VTY2FsZTohMSxtYXg6dm9pZCAwLG1pbjp2b2lkIDAsZmxvYXRpbmc6ITEsZGVjaW1hbHNJbkZsb2F0OnZvaWQgMCxsYWJlbHM6e3Nob3c6ITAsbWluV2lkdGg6MCxtYXhXaWR0aDoxNjAsb2Zmc2V0WDowLG9mZnNldFk6MCxhbGlnbjp2b2lkIDAscm90YXRlOjAscGFkZGluZzoyMCxzdHlsZTp7Y29sb3JzOltdLGZvbnRTaXplOiIxMXB4Iixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczoiIn0sZm9ybWF0dGVyOnZvaWQgMH0sYXhpc0JvcmRlcjp7c2hvdzohMSxjb2xvcjoiI2UwZTBlMCIsd2lkdGg6MSxvZmZzZXRYOjAsb2Zmc2V0WTowfSxheGlzVGlja3M6e3Nob3c6ITEsY29sb3I6IiNlMGUwZTAiLHdpZHRoOjYsb2Zmc2V0WDowLG9mZnNldFk6MH0sdGl0bGU6e3RleHQ6dm9pZCAwLHJvdGF0ZTotOTAsb2Zmc2V0WTowLG9mZnNldFg6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOiIxMXB4Iixmb250V2VpZ2h0OjkwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczoiIn19LHRvb2x0aXA6e2VuYWJsZWQ6ITEsb2Zmc2V0WDowfSxjcm9zc2hhaXJzOntzaG93OiEwLHBvc2l0aW9uOiJmcm9udCIsc3Ryb2tlOntjb2xvcjoiI2I2YjZiNiIsd2lkdGg6MSxkYXNoQXJyYXk6MH19fSx0aGlzLnBvaW50QW5ub3RhdGlvbj17aWQ6dm9pZCAwLHg6MCx5Om51bGwseUF4aXNJbmRleDowLHNlcmllc0luZGV4OjAsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLG1hcmtlcjp7c2l6ZTo0LGZpbGxDb2xvcjoiI2ZmZiIsc3Ryb2tlV2lkdGg6MixzdHJva2VDb2xvcjoiIzMzMyIsc2hhcGU6ImNpcmNsZSIsb2Zmc2V0WDowLG9mZnNldFk6MCxyYWRpdXM6Mixjc3NDbGFzczoiIn0sbGFiZWw6e2JvcmRlckNvbG9yOiIjYzJjMmMyIixib3JkZXJXaWR0aDoxLGJvcmRlclJhZGl1czoyLHRleHQ6dm9pZCAwLHRleHRBbmNob3I6Im1pZGRsZSIsb2Zmc2V0WDowLG9mZnNldFk6MCxtb3VzZUVudGVyOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCxjbGljazp2b2lkIDAsc3R5bGU6e2JhY2tncm91bmQ6IiNmZmYiLGNvbG9yOnZvaWQgMCxmb250U2l6ZToiMTFweCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY3NzQ2xhc3M6IiIscGFkZGluZzp7bGVmdDo1LHJpZ2h0OjUsdG9wOjIsYm90dG9tOjJ9fX0sY3VzdG9tU1ZHOntTVkc6dm9pZCAwLGNzc0NsYXNzOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowfSxpbWFnZTp7cGF0aDp2b2lkIDAsd2lkdGg6MjAsaGVpZ2h0OjIwLG9mZnNldFg6MCxvZmZzZXRZOjB9fSx0aGlzLnlBeGlzQW5ub3RhdGlvbj17aWQ6dm9pZCAwLHk6MCx5MjpudWxsLHN0cm9rZURhc2hBcnJheToxLGZpbGxDb2xvcjoiI2MyYzJjMiIsYm9yZGVyQ29sb3I6IiNjMmMyYzIiLGJvcmRlcldpZHRoOjEsb3BhY2l0eTouMyxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOiIxMDAlIix5QXhpc0luZGV4OjAsbGFiZWw6e2JvcmRlckNvbG9yOiIjYzJjMmMyIixib3JkZXJXaWR0aDoxLGJvcmRlclJhZGl1czoyLHRleHQ6dm9pZCAwLHRleHRBbmNob3I6ImVuZCIscG9zaXRpb246InJpZ2h0IixvZmZzZXRYOjAsb2Zmc2V0WTotMyxtb3VzZUVudGVyOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCxjbGljazp2b2lkIDAsc3R5bGU6e2JhY2tncm91bmQ6IiNmZmYiLGNvbG9yOnZvaWQgMCxmb250U2l6ZToiMTFweCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY3NzQ2xhc3M6IiIscGFkZGluZzp7bGVmdDo1LHJpZ2h0OjUsdG9wOjIsYm90dG9tOjJ9fX19LHRoaXMueEF4aXNBbm5vdGF0aW9uPXtpZDp2b2lkIDAseDowLHgyOm51bGwsc3Ryb2tlRGFzaEFycmF5OjEsZmlsbENvbG9yOiIjYzJjMmMyIixib3JkZXJDb2xvcjoiI2MyYzJjMiIsYm9yZGVyV2lkdGg6MSxvcGFjaXR5Oi4zLG9mZnNldFg6MCxvZmZzZXRZOjAsbGFiZWw6e2JvcmRlckNvbG9yOiIjYzJjMmMyIixib3JkZXJXaWR0aDoxLGJvcmRlclJhZGl1czoyLHRleHQ6dm9pZCAwLHRleHRBbmNob3I6Im1pZGRsZSIsb3JpZW50YXRpb246InZlcnRpY2FsIixwb3NpdGlvbjoidG9wIixvZmZzZXRYOjAsb2Zmc2V0WTowLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxzdHlsZTp7YmFja2dyb3VuZDoiI2ZmZiIsY29sb3I6dm9pZCAwLGZvbnRTaXplOiIxMXB4Iixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjc3NDbGFzczoiIixwYWRkaW5nOntsZWZ0OjUscmlnaHQ6NSx0b3A6Mixib3R0b206Mn19fX0sdGhpcy50ZXh0PXt4OjAseTowLHRleHQ6IiIsdGV4dEFuY2hvcjoic3RhcnQiLGZvcmVDb2xvcjp2b2lkIDAsZm9udFNpemU6IjEzcHgiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLGFwcGVuZFRvOiIuYXBleGNoYXJ0cy1hbm5vdGF0aW9ucyIsYmFja2dyb3VuZENvbG9yOiJ0cmFuc3BhcmVudCIsYm9yZGVyQ29sb3I6IiNjMmMyYzIiLGJvcmRlclJhZGl1czowLGJvcmRlcldpZHRoOjAscGFkZGluZ0xlZnQ6NCxwYWRkaW5nUmlnaHQ6NCxwYWRkaW5nVG9wOjIscGFkZGluZ0JvdHRvbToyfX1yZXR1cm4gYyh0LFt7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybnthbm5vdGF0aW9uczp7cG9zaXRpb246ImZyb250Iix5YXhpczpbdGhpcy55QXhpc0Fubm90YXRpb25dLHhheGlzOlt0aGlzLnhBeGlzQW5ub3RhdGlvbl0scG9pbnRzOlt0aGlzLnBvaW50QW5ub3RhdGlvbl0sdGV4dHM6W10saW1hZ2VzOltdLHNoYXBlczpbXX0sY2hhcnQ6e2FuaW1hdGlvbnM6e2VuYWJsZWQ6ITAsZWFzaW5nOiJlYXNlaW5vdXQiLHNwZWVkOjgwMCxhbmltYXRlR3JhZHVhbGx5OntkZWxheToxNTAsZW5hYmxlZDohMH0sZHluYW1pY0FuaW1hdGlvbjp7ZW5hYmxlZDohMCxzcGVlZDozNTB9fSxiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsbG9jYWxlczpbTF0sZGVmYXVsdExvY2FsZToiZW4iLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsZW5hYmxlZE9uU2VyaWVzOnZvaWQgMCx0b3A6MixsZWZ0OjIsYmx1cjo0LGNvbG9yOiIjMDAwIixvcGFjaXR5Oi4zNX0sZXZlbnRzOnthbmltYXRpb25FbmQ6dm9pZCAwLGJlZm9yZU1vdW50OnZvaWQgMCxtb3VudGVkOnZvaWQgMCx1cGRhdGVkOnZvaWQgMCxjbGljazp2b2lkIDAsbW91c2VNb3ZlOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCx4QXhpc0xhYmVsQ2xpY2s6dm9pZCAwLGxlZ2VuZENsaWNrOnZvaWQgMCxtYXJrZXJDbGljazp2b2lkIDAsc2VsZWN0aW9uOnZvaWQgMCxkYXRhUG9pbnRTZWxlY3Rpb246dm9pZCAwLGRhdGFQb2ludE1vdXNlRW50ZXI6dm9pZCAwLGRhdGFQb2ludE1vdXNlTGVhdmU6dm9pZCAwLGJlZm9yZVpvb206dm9pZCAwLGJlZm9yZVJlc2V0Wm9vbTp2b2lkIDAsem9vbWVkOnZvaWQgMCxzY3JvbGxlZDp2b2lkIDAsYnJ1c2hTY3JvbGxlZDp2b2lkIDB9LGZvcmVDb2xvcjoiIzM3M2QzZiIsZm9udEZhbWlseToiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiIsaGVpZ2h0OiJhdXRvIixwYXJlbnRIZWlnaHRPZmZzZXQ6MTUscmVkcmF3T25QYXJlbnRSZXNpemU6ITAscmVkcmF3T25XaW5kb3dSZXNpemU6ITAsaWQ6dm9pZCAwLGdyb3VwOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHNlbGVjdGlvbjp7ZW5hYmxlZDohMSx0eXBlOiJ4IixmaWxsOntjb2xvcjoiIzI0MjkyZSIsb3BhY2l0eTouMX0sc3Ryb2tlOnt3aWR0aDoxLGNvbG9yOiIjMjQyOTJlIixvcGFjaXR5Oi40LGRhc2hBcnJheTozfSx4YXhpczp7bWluOnZvaWQgMCxtYXg6dm9pZCAwfSx5YXhpczp7bWluOnZvaWQgMCxtYXg6dm9pZCAwfX0sc3BhcmtsaW5lOntlbmFibGVkOiExfSxicnVzaDp7ZW5hYmxlZDohMSxhdXRvU2NhbGVZYXhpczohMCx0YXJnZXQ6dm9pZCAwfSxzdGFja2VkOiExLHN0YWNrVHlwZToibm9ybWFsIix0b29sYmFyOntzaG93OiEwLG9mZnNldFg6MCxvZmZzZXRZOjAsdG9vbHM6e2Rvd25sb2FkOiEwLHNlbGVjdGlvbjohMCx6b29tOiEwLHpvb21pbjohMCx6b29tb3V0OiEwLHBhbjohMCxyZXNldDohMCxjdXN0b21JY29uczpbXX0sZXhwb3J0Ontjc3Y6e2ZpbGVuYW1lOnZvaWQgMCxjb2x1bW5EZWxpbWl0ZXI6IiwiLGhlYWRlckNhdGVnb3J5OiJjYXRlZ29yeSIsaGVhZGVyVmFsdWU6InZhbHVlIixkYXRlRm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZSh0KS50b0RhdGVTdHJpbmcoKX19LHBuZzp7ZmlsZW5hbWU6dm9pZCAwfSxzdmc6e2ZpbGVuYW1lOnZvaWQgMH19LGF1dG9TZWxlY3RlZDoiem9vbSJ9LHR5cGU6ImxpbmUiLHdpZHRoOiIxMDAlIix6b29tOntlbmFibGVkOiEwLHR5cGU6IngiLGF1dG9TY2FsZVlheGlzOiExLHpvb21lZEFyZWE6e2ZpbGw6e2NvbG9yOiIjOTBDQUY5IixvcGFjaXR5Oi40fSxzdHJva2U6e2NvbG9yOiIjMEQ0N0ExIixvcGFjaXR5Oi40LHdpZHRoOjF9fX19LHBsb3RPcHRpb25zOnthcmVhOntmaWxsVG86Im9yaWdpbiJ9LGJhcjp7aG9yaXpvbnRhbDohMSxjb2x1bW5XaWR0aDoiNzAlIixiYXJIZWlnaHQ6IjcwJSIsZGlzdHJpYnV0ZWQ6ITEsYm9yZGVyUmFkaXVzOjAsYm9yZGVyUmFkaXVzQXBwbGljYXRpb246ImFyb3VuZCIsYm9yZGVyUmFkaXVzV2hlblN0YWNrZWQ6Imxhc3QiLHJhbmdlQmFyT3ZlcmxhcDohMCxyYW5nZUJhckdyb3VwUm93czohMSxjb2xvcnM6e3JhbmdlczpbXSxiYWNrZ3JvdW5kQmFyQ29sb3JzOltdLGJhY2tncm91bmRCYXJPcGFjaXR5OjEsYmFja2dyb3VuZEJhclJhZGl1czowfSxkYXRhTGFiZWxzOntwb3NpdGlvbjoidG9wIixtYXhJdGVtczoxMDAsaGlkZU92ZXJmbG93aW5nTGFiZWxzOiEwLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIix0b3RhbDp7ZW5hYmxlZDohMSxmb3JtYXR0ZXI6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2NvbG9yOiIjMzczZDNmIixmb250U2l6ZToiMTJweCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDB9fX19LGJ1YmJsZTp7elNjYWxpbmc6ITAsbWluQnViYmxlUmFkaXVzOnZvaWQgMCxtYXhCdWJibGVSYWRpdXM6dm9pZCAwfSxjYW5kbGVzdGljazp7Y29sb3JzOnt1cHdhcmQ6IiMwMEI3NDYiLGRvd253YXJkOiIjRUY0MDNDIn0sd2ljazp7dXNlRmlsbENvbG9yOiEwfX0sYm94UGxvdDp7Y29sb3JzOnt1cHBlcjoiIzAwRTM5NiIsbG93ZXI6IiMwMDhGRkIifX0saGVhdG1hcDp7cmFkaXVzOjIsZW5hYmxlU2hhZGVzOiEwLHNoYWRlSW50ZW5zaXR5Oi41LHJldmVyc2VOZWdhdGl2ZVNoYWRlOiExLGRpc3RyaWJ1dGVkOiExLHVzZUZpbGxDb2xvckFzU3Ryb2tlOiExLGNvbG9yU2NhbGU6e2ludmVyc2U6ITEscmFuZ2VzOltdLG1pbjp2b2lkIDAsbWF4OnZvaWQgMH19LHRyZWVtYXA6e2VuYWJsZVNoYWRlczohMCxzaGFkZUludGVuc2l0eTouNSxkaXN0cmlidXRlZDohMSxyZXZlcnNlTmVnYXRpdmVTaGFkZTohMSx1c2VGaWxsQ29sb3JBc1N0cm9rZTohMSxjb2xvclNjYWxlOntpbnZlcnNlOiExLHJhbmdlczpbXSxtaW46dm9pZCAwLG1heDp2b2lkIDB9fSxyYWRpYWxCYXI6e2ludmVyc2VPcmRlcjohMSxzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MzYwLG9mZnNldFg6MCxvZmZzZXRZOjAsaG9sbG93OnttYXJnaW46NSxzaXplOiI1MCUiLGJhY2tncm91bmQ6InRyYW5zcGFyZW50IixpbWFnZTp2b2lkIDAsaW1hZ2VXaWR0aDoxNTAsaW1hZ2VIZWlnaHQ6MTUwLGltYWdlT2Zmc2V0WDowLGltYWdlT2Zmc2V0WTowLGltYWdlQ2xpcHBlZDohMCxwb3NpdGlvbjoiZnJvbnQiLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjAsbGVmdDowLGJsdXI6Myxjb2xvcjoiIzAwMCIsb3BhY2l0eTouNX19LHRyYWNrOntzaG93OiEwLHN0YXJ0QW5nbGU6dm9pZCAwLGVuZEFuZ2xlOnZvaWQgMCxiYWNrZ3JvdW5kOiIjZjJmMmYyIixzdHJva2VXaWR0aDoiOTclIixvcGFjaXR5OjEsbWFyZ2luOjUsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSx0b3A6MCxsZWZ0OjAsYmx1cjozLGNvbG9yOiIjMDAwIixvcGFjaXR5Oi41fX0sZGF0YUxhYmVsczp7c2hvdzohMCxuYW1lOntzaG93OiEwLGZvbnRTaXplOiIxNnB4Iixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WTowLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdH19LHZhbHVlOntzaG93OiEwLGZvbnRTaXplOiIxNHB4Iixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WToxNixmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQrIiUifX0sdG90YWw6e3Nob3c6ITEsbGFiZWw6IlRvdGFsIixmb250U2l6ZToiMTZweCIsZm9udFdlaWdodDo2MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApL3QuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKyIlIn19fX0scGllOntjdXN0b21TY2FsZToxLG9mZnNldFg6MCxvZmZzZXRZOjAsc3RhcnRBbmdsZTowLGVuZEFuZ2xlOjM2MCxleHBhbmRPbkNsaWNrOiEwLGRhdGFMYWJlbHM6e29mZnNldDowLG1pbkFuZ2xlVG9TaG93TGFiZWw6MTB9LGRvbnV0OntzaXplOiI2NSUiLGJhY2tncm91bmQ6InRyYW5zcGFyZW50IixsYWJlbHM6e3Nob3c6ITEsbmFtZTp7c2hvdzohMCxmb250U2l6ZToiMTZweCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6LTEwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdH19LHZhbHVlOntzaG93OiEwLGZvbnRTaXplOiIyMHB4Iixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WToxMCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSx0b3RhbDp7c2hvdzohMSxzaG93QWx3YXlzOiExLGxhYmVsOiJUb3RhbCIsZm9udFNpemU6IjE2cHgiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2xvYmFscy5zZXJpZXNUb3RhbHMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKX19fX19LHBvbGFyQXJlYTp7cmluZ3M6e3N0cm9rZVdpZHRoOjEsc3Ryb2tlQ29sb3I6IiNlOGU4ZTgifSxzcG9rZXM6e3N0cm9rZVdpZHRoOjEsY29ubmVjdG9yQ29sb3JzOiIjZThlOGU4In19LHJhZGFyOntzaXplOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHBvbHlnb25zOntzdHJva2VXaWR0aDoxLHN0cm9rZUNvbG9yczoiI2U4ZThlOCIsY29ubmVjdG9yQ29sb3JzOiIjZThlOGU4IixmaWxsOntjb2xvcnM6dm9pZCAwfX19fSxjb2xvcnM6dm9pZCAwLGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITAsZW5hYmxlZE9uU2VyaWVzOnZvaWQgMCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10P3Q6IiJ9LHRleHRBbmNob3I6Im1pZGRsZSIsZGlzdHJpYnV0ZWQ6ITEsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Zm9udFNpemU6IjEycHgiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NjAwLGNvbG9yczp2b2lkIDB9LGJhY2tncm91bmQ6e2VuYWJsZWQ6ITAsZm9yZUNvbG9yOiIjZmZmIixib3JkZXJSYWRpdXM6MixwYWRkaW5nOjQsb3BhY2l0eTouOSxib3JkZXJXaWR0aDoxLGJvcmRlckNvbG9yOiIjZmZmIixkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDoxLGxlZnQ6MSxibHVyOjEsY29sb3I6IiMwMDAiLG9wYWNpdHk6LjQ1fX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSx0b3A6MSxsZWZ0OjEsYmx1cjoxLGNvbG9yOiIjMDAwIixvcGFjaXR5Oi40NX19LGZpbGw6e3R5cGU6InNvbGlkIixjb2xvcnM6dm9pZCAwLG9wYWNpdHk6Ljg1LGdyYWRpZW50OntzaGFkZToiZGFyayIsdHlwZToiaG9yaXpvbnRhbCIsc2hhZGVJbnRlbnNpdHk6LjUsZ3JhZGllbnRUb0NvbG9yczp2b2lkIDAsaW52ZXJzZUNvbG9yczohMCxvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOlswLDUwLDEwMF0sY29sb3JTdG9wczpbXX0saW1hZ2U6e3NyYzpbXSx3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMH0scGF0dGVybjp7c3R5bGU6InNxdWFyZXMiLHdpZHRoOjYsaGVpZ2h0OjYsc3Ryb2tlV2lkdGg6Mn19LGZvcmVjYXN0RGF0YVBvaW50czp7Y291bnQ6MCxmaWxsT3BhY2l0eTouNSxzdHJva2VXaWR0aDp2b2lkIDAsZGFzaEFycmF5OjR9LGdyaWQ6e3Nob3c6ITAsYm9yZGVyQ29sb3I6IiNlMGUwZTAiLHN0cm9rZURhc2hBcnJheTowLHBvc2l0aW9uOiJiYWNrIix4YXhpczp7bGluZXM6e3Nob3c6ITF9fSx5YXhpczp7bGluZXM6e3Nob3c6ITB9fSxyb3c6e2NvbG9yczp2b2lkIDAsb3BhY2l0eTouNX0sY29sdW1uOntjb2xvcnM6dm9pZCAwLG9wYWNpdHk6LjV9LHBhZGRpbmc6e3RvcDowLHJpZ2h0OjEwLGJvdHRvbTowLGxlZnQ6MTJ9fSxsYWJlbHM6W10sbGVnZW5kOntzaG93OiEwLHNob3dGb3JTaW5nbGVTZXJpZXM6ITEsc2hvd0Zvck51bGxTZXJpZXM6ITAsc2hvd0Zvclplcm9TZXJpZXM6ITAsZmxvYXRpbmc6ITEscG9zaXRpb246ImJvdHRvbSIsaG9yaXpvbnRhbEFsaWduOiJjZW50ZXIiLGludmVyc2VPcmRlcjohMSxmb250U2l6ZToiMTJweCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDAsZm9ybWF0dGVyOnZvaWQgMCx0b29sdGlwSG92ZXJGb3JtYXR0ZXI6dm9pZCAwLG9mZnNldFg6LTIwLG9mZnNldFk6NCxjdXN0b21MZWdlbmRJdGVtczpbXSxsYWJlbHM6e2NvbG9yczp2b2lkIDAsdXNlU2VyaWVzQ29sb3JzOiExfSxtYXJrZXJzOnt3aWR0aDoxMixoZWlnaHQ6MTIsc3Ryb2tlV2lkdGg6MCxmaWxsQ29sb3JzOnZvaWQgMCxzdHJva2VDb2xvcjoiI2ZmZiIscmFkaXVzOjEyLGN1c3RvbUhUTUw6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsb25DbGljazp2b2lkIDB9LGl0ZW1NYXJnaW46e2hvcml6b250YWw6NSx2ZXJ0aWNhbDoyfSxvbkl0ZW1DbGljazp7dG9nZ2xlRGF0YVNlcmllczohMH0sb25JdGVtSG92ZXI6e2hpZ2hsaWdodERhdGFTZXJpZXM6ITB9fSxtYXJrZXJzOntkaXNjcmV0ZTpbXSxzaXplOjAsY29sb3JzOnZvaWQgMCxzdHJva2VDb2xvcnM6IiNmZmYiLHN0cm9rZVdpZHRoOjIsc3Ryb2tlT3BhY2l0eTouOSxzdHJva2VEYXNoQXJyYXk6MCxmaWxsT3BhY2l0eToxLHNoYXBlOiJjaXJjbGUiLHdpZHRoOjgsaGVpZ2h0OjgscmFkaXVzOjIsb2Zmc2V0WDowLG9mZnNldFk6MCxvbkNsaWNrOnZvaWQgMCxvbkRibENsaWNrOnZvaWQgMCxzaG93TnVsbERhdGFQb2ludHM6ITAsaG92ZXI6e3NpemU6dm9pZCAwLHNpemVPZmZzZXQ6M319LG5vRGF0YTp7dGV4dDp2b2lkIDAsYWxpZ246ImNlbnRlciIsdmVydGljYWxBbGlnbjoibWlkZGxlIixvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntjb2xvcjp2b2lkIDAsZm9udFNpemU6IjE0cHgiLGZvbnRGYW1pbHk6dm9pZCAwfX0scmVzcG9uc2l2ZTpbXSxzZXJpZXM6dm9pZCAwLHN0YXRlczp7bm9ybWFsOntmaWx0ZXI6e3R5cGU6Im5vbmUiLHZhbHVlOjB9fSxob3Zlcjp7ZmlsdGVyOnt0eXBlOiJsaWdodGVuIix2YWx1ZTouMX19LGFjdGl2ZTp7YWxsb3dNdWx0aXBsZURhdGFQb2ludHNTZWxlY3Rpb246ITEsZmlsdGVyOnt0eXBlOiJkYXJrZW4iLHZhbHVlOi41fX19LHRpdGxlOnt0ZXh0OnZvaWQgMCxhbGlnbjoibGVmdCIsbWFyZ2luOjUsb2Zmc2V0WDowLG9mZnNldFk6MCxmbG9hdGluZzohMSxzdHlsZTp7Zm9udFNpemU6IjE0cHgiLGZvbnRXZWlnaHQ6OTAwLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMH19LHN1YnRpdGxlOnt0ZXh0OnZvaWQgMCxhbGlnbjoibGVmdCIsbWFyZ2luOjUsb2Zmc2V0WDowLG9mZnNldFk6MzAsZmxvYXRpbmc6ITEsc3R5bGU6e2ZvbnRTaXplOiIxMnB4Iixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDB9fSxzdHJva2U6e3Nob3c6ITAsY3VydmU6InNtb290aCIsbGluZUNhcDoiYnV0dCIsd2lkdGg6Mixjb2xvcnM6dm9pZCAwLGRhc2hBcnJheTowLGZpbGw6e3R5cGU6InNvbGlkIixjb2xvcnM6dm9pZCAwLG9wYWNpdHk6Ljg1LGdyYWRpZW50OntzaGFkZToiZGFyayIsdHlwZToiaG9yaXpvbnRhbCIsc2hhZGVJbnRlbnNpdHk6LjUsZ3JhZGllbnRUb0NvbG9yczp2b2lkIDAsaW52ZXJzZUNvbG9yczohMCxvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOlswLDUwLDEwMF0sY29sb3JTdG9wczpbXX19fSx0b29sdGlwOntlbmFibGVkOiEwLGVuYWJsZWRPblNlcmllczp2b2lkIDAsc2hhcmVkOiEwLGZvbGxvd0N1cnNvcjohMSxpbnRlcnNlY3Q6ITEsaW52ZXJzZU9yZGVyOiExLGN1c3RvbTp2b2lkIDAsZmlsbFNlcmllc0NvbG9yOiExLHRoZW1lOiJsaWdodCIsY3NzQ2xhc3M6IiIsc3R5bGU6e2ZvbnRTaXplOiIxMnB4Iixmb250RmFtaWx5OnZvaWQgMH0sb25EYXRhc2V0SG92ZXI6e2hpZ2hsaWdodERhdGFTZXJpZXM6ITF9LHg6e3Nob3c6ITAsZm9ybWF0OiJkZCBNTU0iLGZvcm1hdHRlcjp2b2lkIDB9LHk6e2Zvcm1hdHRlcjp2b2lkIDAsdGl0bGU6e2Zvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD90KyI6ICI6IiJ9fX0sejp7Zm9ybWF0dGVyOnZvaWQgMCx0aXRsZToiU2l6ZTogIn0sbWFya2VyOntzaG93OiEwLGZpbGxDb2xvcnM6dm9pZCAwfSxpdGVtczp7ZGlzcGxheToiZmxleCJ9LGZpeGVkOntlbmFibGVkOiExLHBvc2l0aW9uOiJ0b3BSaWdodCIsb2Zmc2V0WDowLG9mZnNldFk6MH19LHhheGlzOnt0eXBlOiJjYXRlZ29yeSIsY2F0ZWdvcmllczpbXSxjb252ZXJ0ZWRDYXRUb051bWVyaWM6ITEsb2Zmc2V0WDowLG9mZnNldFk6MCxvdmVyd3JpdGVDYXRlZ29yaWVzOnZvaWQgMCxsYWJlbHM6e3Nob3c6ITAscm90YXRlOi00NSxyb3RhdGVBbHdheXM6ITEsaGlkZU92ZXJsYXBwaW5nTGFiZWxzOiEwLHRyaW06ITEsbWluSGVpZ2h0OnZvaWQgMCxtYXhIZWlnaHQ6MTIwLHNob3dEdXBsaWNhdGVzOiEwLHN0eWxlOntjb2xvcnM6W10sZm9udFNpemU6IjEycHgiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOiIifSxvZmZzZXRYOjAsb2Zmc2V0WTowLGZvcm1hdDp2b2lkIDAsZm9ybWF0dGVyOnZvaWQgMCxkYXRldGltZVVUQzohMCxkYXRldGltZUZvcm1hdHRlcjp7eWVhcjoieXl5eSIsbW9udGg6Ik1NTSAneXkiLGRheToiZGQgTU1NIixob3VyOiJISDptbSIsbWludXRlOiJISDptbTpzcyIsc2Vjb25kOiJISDptbTpzcyJ9fSxncm91cDp7Z3JvdXBzOltdLHN0eWxlOntjb2xvcnM6W10sZm9udFNpemU6IjEycHgiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOiIifX0sYXhpc0JvcmRlcjp7c2hvdzohMCxjb2xvcjoiI2UwZTBlMCIsd2lkdGg6IjEwMCUiLGhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjB9LGF4aXNUaWNrczp7c2hvdzohMCxjb2xvcjoiI2UwZTBlMCIsaGVpZ2h0OjYsb2Zmc2V0WDowLG9mZnNldFk6MH0sdGlja0Ftb3VudDp2b2lkIDAsdGlja1BsYWNlbWVudDoib24iLG1pbjp2b2lkIDAsbWF4OnZvaWQgMCxyYW5nZTp2b2lkIDAsZmxvYXRpbmc6ITEsZGVjaW1hbHNJbkZsb2F0OnZvaWQgMCxwb3NpdGlvbjoiYm90dG9tIix0aXRsZTp7dGV4dDp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOiIxMnB4Iixmb250V2VpZ2h0OjkwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczoiIn19LGNyb3NzaGFpcnM6e3Nob3c6ITAsd2lkdGg6MSxwb3NpdGlvbjoiYmFjayIsb3BhY2l0eTouOSxzdHJva2U6e2NvbG9yOiIjYjZiNmI2Iix3aWR0aDoxLGRhc2hBcnJheTozfSxmaWxsOnt0eXBlOiJzb2xpZCIsY29sb3I6IiNCMUI5QzQiLGdyYWRpZW50Ontjb2xvckZyb206IiNEOEUzRjAiLGNvbG9yVG86IiNCRUQxRTYiLHN0b3BzOlswLDEwMF0sb3BhY2l0eUZyb206LjQsb3BhY2l0eVRvOi41fX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSxsZWZ0OjAsdG9wOjAsYmx1cjoxLG9wYWNpdHk6LjR9fSx0b29sdGlwOntlbmFibGVkOiEwLG9mZnNldFk6MCxmb3JtYXR0ZXI6dm9pZCAwLHN0eWxlOntmb250U2l6ZToiMTJweCIsZm9udEZhbWlseTp2b2lkIDB9fX0seWF4aXM6dGhpcy55QXhpcyx0aGVtZTp7bW9kZToibGlnaHQiLHBhbGV0dGU6InBhbGV0dGUxIixtb25vY2hyb21lOntlbmFibGVkOiExLGNvbG9yOiIjMDA4RkZCIixzaGFkZVRvOiJsaWdodCIsc2hhZGVJbnRlbnNpdHk6LjY1fX19fX1dKSx0fSgpLE09ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5ncmFwaGljcz1uZXcgayh0aGlzLmN0eCksdGhpcy53Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYodGhpcy5pbnZlcnRBeGlzPSEwKSx0aGlzLmhlbHBlcnM9bmV3IEModGhpcyksdGhpcy54QXhpc0Fubm90YXRpb25zPW5ldyBBKHRoaXMpLHRoaXMueUF4aXNBbm5vdGF0aW9ucz1uZXcgRSh0aGlzKSx0aGlzLnBvaW50c0Fubm90YXRpb25zPW5ldyBUKHRoaXMpLHRoaXMudy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmdGhpcy53LmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZCYmKHRoaXMuaW52ZXJzZWRSZXZlcnNlZEF4aXM9ITApLHRoaXMueERpdmlzaW9uPXRoaXMudy5nbG9iYWxzLmdyaWRXaWR0aC90aGlzLncuZ2xvYmFscy5kYXRhUG9pbnRzfXJldHVybiBjKHQsW3trZXk6ImRyYXdBeGVzQW5ub3RhdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHQuZ2xvYmFscy5heGlzQ2hhcnRzKXtmb3IodmFyIGU9dGhpcy55QXhpc0Fubm90YXRpb25zLmRyYXdZQXhpc0Fubm90YXRpb25zKCksaT10aGlzLnhBeGlzQW5ub3RhdGlvbnMuZHJhd1hBeGlzQW5ub3RhdGlvbnMoKSxzPXRoaXMucG9pbnRzQW5ub3RhdGlvbnMuZHJhd1BvaW50QW5ub3RhdGlvbnMoKSxhPXQuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCxuPVtlLGksc10scj1baS5ub2RlLGUubm9kZSxzLm5vZGVdLG89MDtvPDM7bysrKXQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKG5bb10pLCFhfHx0Lmdsb2JhbHMucmVzaXplZHx8dC5nbG9iYWxzLmRhdGFDaGFuZ2VkfHwic2NhdHRlciIhPT10LmNvbmZpZy5jaGFydC50eXBlJiYiYnViYmxlIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUmJnQuZ2xvYmFscy5kYXRhUG9pbnRzPjEmJnJbb10uY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlbiIpLHQuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6cltvXSxpbmRleDowfSk7dGhpcy5oZWxwZXJzLmFubm90YXRpb25zQmFja2dyb3VuZCgpfX19LHtrZXk6ImRyYXdJbWFnZUFubm9zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy53LmNvbmZpZy5hbm5vdGF0aW9ucy5pbWFnZXMubWFwKChmdW5jdGlvbihlLGkpe3QuYWRkSW1hZ2UoZSxpKX0pKX19LHtrZXk6ImRyYXdUZXh0QW5ub3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLncuY29uZmlnLmFubm90YXRpb25zLnRleHRzLm1hcCgoZnVuY3Rpb24oZSxpKXt0LmFkZFRleHQoZSxpKX0pKX19LHtrZXk6ImFkZFhheGlzQW5ub3RhdGlvbiIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3RoaXMueEF4aXNBbm5vdGF0aW9ucy5hZGRYYXhpc0Fubm90YXRpb24odCxlLGkpfX0se2tleToiYWRkWWF4aXNBbm5vdGF0aW9uIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy55QXhpc0Fubm90YXRpb25zLmFkZFlheGlzQW5ub3RhdGlvbih0LGUsaSl9fSx7a2V5OiJhZGRQb2ludEFubm90YXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLnBvaW50c0Fubm90YXRpb25zLmFkZFBvaW50QW5ub3RhdGlvbih0LGUsaSl9fSx7a2V5OiJhZGRUZXh0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQueCxzPXQueSxhPXQudGV4dCxuPXQudGV4dEFuY2hvcixyPXQuZm9yZUNvbG9yLG89dC5mb250U2l6ZSxsPXQuZm9udEZhbWlseSxjPXQuZm9udFdlaWdodCxoPXQuY3NzQ2xhc3MsZD10LmJhY2tncm91bmRDb2xvcix1PXQuYm9yZGVyV2lkdGgscD10LnN0cm9rZURhc2hBcnJheSxnPXQuYm9yZGVyUmFkaXVzLGY9dC5ib3JkZXJDb2xvcixtPXQuYXBwZW5kVG8sdj12b2lkIDA9PT1tPyIuYXBleGNoYXJ0cy1hbm5vdGF0aW9ucyI6bSx4PXQucGFkZGluZ0xlZnQsYj12b2lkIDA9PT14PzQ6eCx5PXQucGFkZGluZ1JpZ2h0LHc9dm9pZCAwPT09eT80Onksaz10LnBhZGRpbmdCb3R0b20sUz12b2lkIDA9PT1rPzI6ayxDPXQucGFkZGluZ1RvcCxBPXZvaWQgMD09PUM/MjpDLEU9dGhpcy53LFQ9dGhpcy5ncmFwaGljcy5kcmF3VGV4dCh7eDppLHk6cyx0ZXh0OmEsdGV4dEFuY2hvcjpufHwic3RhcnQiLGZvbnRTaXplOm98fCIxMnB4Iixmb250V2VpZ2h0OmN8fCJyZWd1bGFyIixmb250RmFtaWx5Omx8fEUuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksZm9yZUNvbG9yOnJ8fEUuY29uZmlnLmNoYXJ0LmZvcmVDb2xvcixjc3NDbGFzczpofSksTD1FLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKHYpO0wmJkwuYXBwZW5kQ2hpbGQoVC5ub2RlKTt2YXIgUD1ULmJib3goKTtpZihhKXt2YXIgTT10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KFAueC1iLFAueS1BLFAud2lkdGgrYit3LFAuaGVpZ2h0K1MrQSxnLGR8fCJ0cmFuc3BhcmVudCIsMSx1LGYscCk7TC5pbnNlcnRCZWZvcmUoTS5ub2RlLFQubm9kZSl9fX0se2tleToiYWRkSW1hZ2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9dC5wYXRoLGE9dC54LG49dm9pZCAwPT09YT8wOmEscj10Lnksbz12b2lkIDA9PT1yPzA6cixsPXQud2lkdGgsYz12b2lkIDA9PT1sPzIwOmwsaD10LmhlaWdodCxkPXZvaWQgMD09PWg/MjA6aCx1PXQuYXBwZW5kVG8scD12b2lkIDA9PT11PyIuYXBleGNoYXJ0cy1hbm5vdGF0aW9ucyI6dSxnPWkuZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2Uocyk7Zy5zaXplKGMsZCkubW92ZShuLG8pO3ZhciBmPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IocCk7cmV0dXJuIGYmJmYuYXBwZW5kQ2hpbGQoZy5ub2RlKSxnfX0se2tleToiYWRkWGF4aXNBbm5vdGF0aW9uRXh0ZXJuYWwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5hZGRBbm5vdGF0aW9uRXh0ZXJuYWwoe3BhcmFtczp0LHB1c2hUb01lbW9yeTplLGNvbnRleHQ6aSx0eXBlOiJ4YXhpcyIsY29udGV4dE1ldGhvZDppLmFkZFhheGlzQW5ub3RhdGlvbn0pLGl9fSx7a2V5OiJhZGRZYXhpc0Fubm90YXRpb25FeHRlcm5hbCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmFkZEFubm90YXRpb25FeHRlcm5hbCh7cGFyYW1zOnQscHVzaFRvTWVtb3J5OmUsY29udGV4dDppLHR5cGU6InlheGlzIixjb250ZXh0TWV0aG9kOmkuYWRkWWF4aXNBbm5vdGF0aW9ufSksaX19LHtrZXk6ImFkZFBvaW50QW5ub3RhdGlvbkV4dGVybmFsIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHZvaWQgMD09PXRoaXMuaW52ZXJ0QXhpcyYmKHRoaXMuaW52ZXJ0QXhpcz1pLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpLHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHtwYXJhbXM6dCxwdXNoVG9NZW1vcnk6ZSxjb250ZXh0OmksdHlwZToicG9pbnQiLGNvbnRleHRNZXRob2Q6aS5hZGRQb2ludEFubm90YXRpb259KSxpfX0se2tleToiYWRkQW5ub3RhdGlvbkV4dGVybmFsIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnBhcmFtcyxpPXQucHVzaFRvTWVtb3J5LHM9dC5jb250ZXh0LGE9dC50eXBlLG49dC5jb250ZXh0TWV0aG9kLHI9cyxvPXIudyxsPW8uZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLSIuY29uY2F0KGEsIi1hbm5vdGF0aW9ucyIpKSxjPWwuY2hpbGROb2Rlcy5sZW5ndGgrMSxoPW5ldyBQLGQ9T2JqZWN0LmFzc2lnbih7fSwieGF4aXMiPT09YT9oLnhBeGlzQW5ub3RhdGlvbjoieWF4aXMiPT09YT9oLnlBeGlzQW5ub3RhdGlvbjpoLnBvaW50QW5ub3RhdGlvbiksdT1iLmV4dGVuZChkLGUpO3N3aXRjaChhKXtjYXNlInhheGlzIjp0aGlzLmFkZFhheGlzQW5ub3RhdGlvbih1LGwsYyk7YnJlYWs7Y2FzZSJ5YXhpcyI6dGhpcy5hZGRZYXhpc0Fubm90YXRpb24odSxsLGMpO2JyZWFrO2Nhc2UicG9pbnQiOnRoaXMuYWRkUG9pbnRBbm5vdGF0aW9uKHUsbCxjKX12YXIgcD1vLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy0iLmNvbmNhdChhLCItYW5ub3RhdGlvbnMgLmFwZXhjaGFydHMtIikuY29uY2F0KGEsIi1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nIikuY29uY2F0KGMsIiddIikpLGc9dGhpcy5oZWxwZXJzLmFkZEJhY2tncm91bmRUb0Fubm8ocCx1KTtyZXR1cm4gZyYmbC5pbnNlcnRCZWZvcmUoZy5ub2RlLHApLGkmJm8uZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5wdXNoKHtjb250ZXh0OnIsaWQ6dS5pZD91LmlkOmIucmFuZG9tSWQoKSxtZXRob2Q6bixsYWJlbDoiYWRkQW5ub3RhdGlvbiIscGFyYW1zOmV9KSxzfX0se2tleToiY2xlYXJBbm5vdGF0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC53LGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbnMsIC5hcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb25zLCAuYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9ucyIpO2UuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5tYXAoKGZ1bmN0aW9uKHQsaSl7ImFkZFRleHQiIT09dC5sYWJlbCYmImFkZEFubm90YXRpb24iIT09dC5sYWJlbHx8ZS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnNwbGljZShpLDEpfSkpLGk9Yi5saXN0VG9BcnJheShpKSxBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGksKGZ1bmN0aW9uKHQpe2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9KSl9fSx7a2V5OiJyZW1vdmVBbm5vdGF0aW9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQudyxzPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi4iLmNvbmNhdChlKSk7cyYmKGkuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5tYXAoKGZ1bmN0aW9uKHQscyl7dC5pZD09PWUmJmkuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5zcGxpY2UocywxKX0pKSxBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHMsKGZ1bmN0aW9uKHQpe3QucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0KX0pKSl9fV0pLHR9KCksTz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLm1vbnRoczMxPVsxLDMsNSw3LDgsMTAsMTJdLHRoaXMubW9udGhzMzA9WzIsNCw2LDksMTFdLHRoaXMuZGF5c0NudE9mWWVhcj1bMCwzMSw1OSw5MCwxMjAsMTUxLDE4MSwyMTIsMjQzLDI3MywzMDQsMzM0XX1yZXR1cm4gYyh0LFt7a2V5OiJpc1ZhbGlkRGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIWlzTmFOKHRoaXMucGFyc2VEYXRlKHQpKX19LHtrZXk6ImdldFRpbWVTdGFtcCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIERhdGUucGFyc2UodCk/dGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/bmV3IERhdGUobmV3IERhdGUodCkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwyNSkpLmdldFRpbWUoKTpuZXcgRGF0ZSh0KS5nZXRUaW1lKCk6dH19LHtrZXk6ImdldERhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQz9uZXcgRGF0ZShuZXcgRGF0ZSh0KS50b1VUQ1N0cmluZygpKTpuZXcgRGF0ZSh0KX19LHtrZXk6InBhcnNlRGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9RGF0ZS5wYXJzZSh0KTtpZighaXNOYU4oZSkpcmV0dXJuIHRoaXMuZ2V0VGltZVN0YW1wKHQpO3ZhciBpPURhdGUucGFyc2UodC5yZXBsYWNlKC8tL2csIi8iKS5yZXBsYWNlKC9bYS16XSsvZ2ksIiAiKSk7cmV0dXJuIHRoaXMuZ2V0VGltZVN0YW1wKGkpfX0se2tleToicGFyc2VEYXRlV2l0aFRpbWV6b25lIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gRGF0ZS5wYXJzZSh0LnJlcGxhY2UoLy0vZywiLyIpLnJlcGxhY2UoL1thLXpdKy9naSwiICIpKX19LHtrZXk6ImZvcm1hdERhdGUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53Lmdsb2JhbHMubG9jYWxlLHM9dGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEMsYT1bIlwwIl0uY29uY2F0KG0oaS5tb250aHMpKSxuPVsiASJdLmNvbmNhdChtKGkuc2hvcnRNb250aHMpKSxyPVsiAiJdLmNvbmNhdChtKGkuZGF5cykpLG89WyIDIl0uY29uY2F0KG0oaS5zaG9ydERheXMpKTtmdW5jdGlvbiBsKHQsZSl7dmFyIGk9dCsiIjtmb3IoZT1lfHwyO2kubGVuZ3RoPGU7KWk9IjAiK2k7cmV0dXJuIGl9dmFyIGM9cz90LmdldFVUQ0Z1bGxZZWFyKCk6dC5nZXRGdWxsWWVhcigpO2U9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXSl5eXl5Ky9nLCIkMSIrYykpLnJlcGxhY2UoLyhefFteXFxdKXl5L2csIiQxIitjLnRvU3RyaW5nKCkuc3Vic3RyKDIsMikpKS5yZXBsYWNlKC8oXnxbXlxcXSl5L2csIiQxIitjKTt2YXIgaD0ocz90LmdldFVUQ01vbnRoKCk6dC5nZXRNb250aCgpKSsxO2U9KGU9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXSlNTU1NKy9nLCIkMSIrYVswXSkpLnJlcGxhY2UoLyhefFteXFxdKU1NTS9nLCIkMSIrblswXSkpLnJlcGxhY2UoLyhefFteXFxdKU1NL2csIiQxIitsKGgpKSkucmVwbGFjZSgvKF58W15cXF0pTS9nLCIkMSIraCk7dmFyIGQ9cz90LmdldFVUQ0RhdGUoKTp0LmdldERhdGUoKTtlPShlPShlPShlPWUucmVwbGFjZSgvKF58W15cXF0pZGRkZCsvZywiJDEiK3JbMF0pKS5yZXBsYWNlKC8oXnxbXlxcXSlkZGQvZywiJDEiK29bMF0pKS5yZXBsYWNlKC8oXnxbXlxcXSlkZC9nLCIkMSIrbChkKSkpLnJlcGxhY2UoLyhefFteXFxdKWQvZywiJDEiK2QpO3ZhciB1PXM/dC5nZXRVVENIb3VycygpOnQuZ2V0SG91cnMoKSxwPXU+MTI/dS0xMjowPT09dT8xMjp1O2U9KGU9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXSlISCsvZywiJDEiK2wodSkpKS5yZXBsYWNlKC8oXnxbXlxcXSlIL2csIiQxIit1KSkucmVwbGFjZSgvKF58W15cXF0paGgrL2csIiQxIitsKHApKSkucmVwbGFjZSgvKF58W15cXF0paC9nLCIkMSIrcCk7dmFyIGc9cz90LmdldFVUQ01pbnV0ZXMoKTp0LmdldE1pbnV0ZXMoKTtlPShlPWUucmVwbGFjZSgvKF58W15cXF0pbW0rL2csIiQxIitsKGcpKSkucmVwbGFjZSgvKF58W15cXF0pbS9nLCIkMSIrZyk7dmFyIGY9cz90LmdldFVUQ1NlY29uZHMoKTp0LmdldFNlY29uZHMoKTtlPShlPWUucmVwbGFjZSgvKF58W15cXF0pc3MrL2csIiQxIitsKGYpKSkucmVwbGFjZSgvKF58W15cXF0pcy9nLCIkMSIrZik7dmFyIHY9cz90LmdldFVUQ01pbGxpc2Vjb25kcygpOnQuZ2V0TWlsbGlzZWNvbmRzKCk7ZT1lLnJlcGxhY2UoLyhefFteXFxdKWZmZisvZywiJDEiK2wodiwzKSksdj1NYXRoLnJvdW5kKHYvMTApLGU9ZS5yZXBsYWNlKC8oXnxbXlxcXSlmZi9nLCIkMSIrbCh2KSksdj1NYXRoLnJvdW5kKHYvMTApO3ZhciB4PXU8MTI/IkFNIjoiUE0iO2U9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXSlmL2csIiQxIit2KSkucmVwbGFjZSgvKF58W15cXF0pVFQrL2csIiQxIit4KSkucmVwbGFjZSgvKF58W15cXF0pVC9nLCIkMSIreC5jaGFyQXQoMCkpO3ZhciBiPXgudG9Mb3dlckNhc2UoKTtlPShlPWUucmVwbGFjZSgvKF58W15cXF0pdHQrL2csIiQxIitiKSkucmVwbGFjZSgvKF58W15cXF0pdC9nLCIkMSIrYi5jaGFyQXQoMCkpO3ZhciB5PS10LmdldFRpbWV6b25lT2Zmc2V0KCksdz1zfHwheT8iWiI6eT4wPyIrIjoiLSI7aWYoIXMpe3ZhciBrPSh5PU1hdGguYWJzKHkpKSU2MDt3Kz1sKE1hdGguZmxvb3IoeS82MCkpKyI6IitsKGspfWU9ZS5yZXBsYWNlKC8oXnxbXlxcXSlLL2csIiQxIit3KTt2YXIgUz0ocz90LmdldFVUQ0RheSgpOnQuZ2V0RGF5KCkpKzE7cmV0dXJuKGU9KGU9KGU9KGU9ZS5yZXBsYWNlKG5ldyBSZWdFeHAoclswXSwiZyIpLHJbU10pKS5yZXBsYWNlKG5ldyBSZWdFeHAob1swXSwiZyIpLG9bU10pKS5yZXBsYWNlKG5ldyBSZWdFeHAoYVswXSwiZyIpLGFbaF0pKS5yZXBsYWNlKG5ldyBSZWdFeHAoblswXSwiZyIpLG5baF0pKS5yZXBsYWNlKC9cXCguKS9nLCIkMSIpfX0se2tleToiZ2V0VGltZVVuaXRzZnJvbVRpbWVzdGFtcCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXMudzt2b2lkIDAhPT1zLmNvbmZpZy54YXhpcy5taW4mJih0PXMuY29uZmlnLnhheGlzLm1pbiksdm9pZCAwIT09cy5jb25maWcueGF4aXMubWF4JiYoZT1zLmNvbmZpZy54YXhpcy5tYXgpO3ZhciBhPXRoaXMuZ2V0RGF0ZSh0KSxuPXRoaXMuZ2V0RGF0ZShlKSxyPXRoaXMuZm9ybWF0RGF0ZShhLCJ5eXl5IE1NIGRkIEhIIG1tIHNzIGZmZiIpLnNwbGl0KCIgIiksbz10aGlzLmZvcm1hdERhdGUobiwieXl5eSBNTSBkZCBISCBtbSBzcyBmZmYiKS5zcGxpdCgiICIpO3JldHVybnttaW5NaWxsaXNlY29uZDpwYXJzZUludChyWzZdLDEwKSxtYXhNaWxsaXNlY29uZDpwYXJzZUludChvWzZdLDEwKSxtaW5TZWNvbmQ6cGFyc2VJbnQocls1XSwxMCksbWF4U2Vjb25kOnBhcnNlSW50KG9bNV0sMTApLG1pbk1pbnV0ZTpwYXJzZUludChyWzRdLDEwKSxtYXhNaW51dGU6cGFyc2VJbnQob1s0XSwxMCksbWluSG91cjpwYXJzZUludChyWzNdLDEwKSxtYXhIb3VyOnBhcnNlSW50KG9bM10sMTApLG1pbkRhdGU6cGFyc2VJbnQoclsyXSwxMCksbWF4RGF0ZTpwYXJzZUludChvWzJdLDEwKSxtaW5Nb250aDpwYXJzZUludChyWzFdLDEwKS0xLG1heE1vbnRoOnBhcnNlSW50KG9bMV0sMTApLTEsbWluWWVhcjpwYXJzZUludChyWzBdLDEwKSxtYXhZZWFyOnBhcnNlSW50KG9bMF0sMTApfX19LHtrZXk6ImlzTGVhcFllYXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JTQ9PTAmJnQlMTAwIT0wfHx0JTQwMD09MH19LHtrZXk6ImNhbGN1bGNhdGVMYXN0RGF5c09mTW9udGgiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5kZXRlcm1pbmVEYXlzT2ZNb250aHModCxlKS1pfX0se2tleToiZGV0ZXJtaW5lRGF5c09mWWVhciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9MzY1O3JldHVybiB0aGlzLmlzTGVhcFllYXIodCkmJihlPTM2NiksZX19LHtrZXk6ImRldGVybWluZVJlbWFpbmluZ0RheXNPZlllYXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLmRheXNDbnRPZlllYXJbZV0raTtyZXR1cm4gZT4xJiZ0aGlzLmlzTGVhcFllYXIoKSYmcysrLHN9fSx7a2V5OiJkZXRlcm1pbmVEYXlzT2ZNb250aHMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9MzA7c3dpdGNoKHQ9Yi5tb250aE1vZCh0KSwhMCl7Y2FzZSB0aGlzLm1vbnRoczMwLmluZGV4T2YodCk+LTE6Mj09PXQmJihpPXRoaXMuaXNMZWFwWWVhcihlKT8yOToyOCk7YnJlYWs7Y2FzZSB0aGlzLm1vbnRoczMxLmluZGV4T2YodCk+LTE6ZGVmYXVsdDppPTMxfXJldHVybiBpfX1dKSx0fSgpLEk9ZnVuY3Rpb24odCl7dmFyIGUsaT10LmN0eCxzPXQuc2VyaWVzSW5kZXgsYT10LmRhdGFQb2ludEluZGV4LG49dC55MSxyPXQueTIsbz10LncsbD1vLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFtzXVthXSxjPW8uZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtzXVthXSxoPW8uZ2xvYmFscy5sYWJlbHNbYV0sZD1vLmNvbmZpZy5zZXJpZXNbc10ubmFtZT9vLmNvbmZpZy5zZXJpZXNbc10ubmFtZToiIix1PW8uY29uZmlnLnRvb2x0aXAueS5mb3JtYXR0ZXIscD1vLmNvbmZpZy50b29sdGlwLnkudGl0bGUuZm9ybWF0dGVyLGc9e3c6byxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OmEsc3RhcnQ6bCxlbmQ6Y307ImZ1bmN0aW9uIj09dHlwZW9mIHAmJihkPXAoZCxnKSksbnVsbCE9PShlPW8uY29uZmlnLnNlcmllc1tzXS5kYXRhW2FdKSYmdm9pZCAwIT09ZSYmZS54JiYoaD1vLmNvbmZpZy5zZXJpZXNbc10uZGF0YVthXS54KyI6IiksImZ1bmN0aW9uIj09dHlwZW9mIHUmJihoPXUoaCxnKSksTnVtYmVyLmlzRmluaXRlKG4pJiZOdW1iZXIuaXNGaW5pdGUocikmJihsPW4sYz1yKTt2YXIgZj0iIixtPSIiLHY9by5nbG9iYWxzLmNvbG9yc1tzXTtpZih2b2lkIDA9PT1vLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKWlmKCJkYXRldGltZSI9PT1vLmNvbmZpZy54YXhpcy50eXBlKXt2YXIgeD1uZXcgTyhpKTtmPXguZm9ybWF0RGF0ZSh4LmdldERhdGUobCksby5jb25maWcudG9vbHRpcC54LmZvcm1hdCksbT14LmZvcm1hdERhdGUoeC5nZXREYXRlKGMpLG8uY29uZmlnLnRvb2x0aXAueC5mb3JtYXQpfWVsc2UgZj1sLG09YztlbHNlIGY9by5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcihsKSxtPW8uY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIoYyk7cmV0dXJue3N0YXJ0OmwsZW5kOmMsc3RhcnRWYWw6ZixlbmRWYWw6bSx5bGFiZWw6aCxjb2xvcjp2LHNlcmllc05hbWU6ZH19LEY9ZnVuY3Rpb24odCl7dmFyIGU9dC5jb2xvcixpPXQuc2VyaWVzTmFtZSxzPXQueWxhYmVsLGE9dC5zdGFydCxuPXQuZW5kLHI9dC5zZXJpZXNJbmRleCxvPXQuZGF0YVBvaW50SW5kZXgsbD10LmN0eC50b29sdGlwLnRvb2x0aXBMYWJlbHMuZ2V0Rm9ybWF0dGVycyhyKTthPWwueUxiRm9ybWF0dGVyKGEpLG49bC55TGJGb3JtYXR0ZXIobik7dmFyIGM9bC55TGJGb3JtYXR0ZXIodC53Lmdsb2JhbHMuc2VyaWVzW3JdW29dKSxoPSc8c3BhbiBjbGFzcz0idmFsdWUgc3RhcnQtdmFsdWUiPlxuICAnLmNvbmNhdChhLCdcbiAgPC9zcGFuPiA8c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj4tPC9zcGFuPiA8c3BhbiBjbGFzcz0idmFsdWUgZW5kLXZhbHVlIj5cbiAgJykuY29uY2F0KG4sIlxuICA8L3NwYW4+Iik7cmV0dXJuJzxkaXYgY2xhc3M9ImFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhciI+PGRpdj4gPHNwYW4gY2xhc3M9InNlcmllcy1uYW1lIiBzdHlsZT0iY29sb3I6ICcrZSsnIj4nKyhpfHwiIikrJzwvc3Bhbj48L2Rpdj48ZGl2PiA8c3BhbiBjbGFzcz0iY2F0ZWdvcnkiPicrcysiIDwvc3Bhbj4gIisodC53Lmdsb2JhbHMuY29tYm9DaGFydHM/InJhbmdlQXJlYSI9PT10LncuY29uZmlnLnNlcmllc1tyXS50eXBlfHwicmFuZ2VCYXIiPT09dC53LmNvbmZpZy5zZXJpZXNbcl0udHlwZT9oOiI8c3Bhbj4iLmNvbmNhdChjLCI8L3NwYW4+Iik6aCkrIiA8L2Rpdj48L2Rpdj4ifSxEPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy5vcHRzPWV9cmV0dXJuIGModCxbe2tleToibGluZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2Vhc2luZzoic3dpbmcifX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sc3Ryb2tlOnt3aWR0aDo1LGN1cnZlOiJzdHJhaWdodCJ9LG1hcmtlcnM6e3NpemU6MCxob3Zlcjp7c2l6ZU9mZnNldDo2fX0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5OiJzcGFya2xpbmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdHMueWF4aXNbMF0uc2hvdz0hMSx0aGlzLm9wdHMueWF4aXNbMF0udGl0bGUudGV4dD0iIix0aGlzLm9wdHMueWF4aXNbMF0uYXhpc0JvcmRlci5zaG93PSExLHRoaXMub3B0cy55YXhpc1swXS5heGlzVGlja3Muc2hvdz0hMSx0aGlzLm9wdHMueWF4aXNbMF0uZmxvYXRpbmc9ITAsYi5leHRlbmQodCx7Z3JpZDp7c2hvdzohMSxwYWRkaW5nOntsZWZ0OjAscmlnaHQ6MCx0b3A6MCxib3R0b206MH19LGxlZ2VuZDp7c2hvdzohMX0seGF4aXM6e2xhYmVsczp7c2hvdzohMX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0sYXhpc0JvcmRlcjp7c2hvdzohMX0sYXhpc1RpY2tzOntzaG93OiExfX0sY2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9LHpvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntlbmFibGVkOiExfX0pfX0se2tleToiYmFyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7c3RhY2tlZDohMSxhbmltYXRpb25zOntlYXNpbmc6InN3aW5nIn19LHBsb3RPcHRpb25zOntiYXI6e2RhdGFMYWJlbHM6e3Bvc2l0aW9uOiJjZW50ZXIifX19LGRhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6WyIjZmZmIl19LGJhY2tncm91bmQ6e2VuYWJsZWQ6ITF9fSxzdHJva2U6e3dpZHRoOjAsbGluZUNhcDoicm91bmQifSxmaWxsOntvcGFjaXR5Oi44NX0sbGVnZW5kOnttYXJrZXJzOntzaGFwZToic3F1YXJlIixyYWRpdXM6MixzaXplOjh9fSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSx4YXhpczp7dG9vbHRpcDp7ZW5hYmxlZDohMX0sdGlja1BsYWNlbWVudDoiYmV0d2VlbiIsY3Jvc3NoYWlyczp7d2lkdGg6ImJhcldpZHRoIixwb3NpdGlvbjoiYmFjayIsZmlsbDp7dHlwZToiZ3JhZGllbnQifSxkcm9wU2hhZG93OntlbmFibGVkOiExfSxzdHJva2U6e3dpZHRoOjB9fX19fX0se2tleToiY2FuZGxlc3RpY2siLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm57c3Ryb2tlOnt3aWR0aDoxLGNvbG9yczpbIiMzMzMiXX0sZmlsbDp7b3BhY2l0eToxfSxkYXRhTGFiZWxzOntlbmFibGVkOiExfSx0b29sdGlwOntzaGFyZWQ6ITAsY3VzdG9tOmZ1bmN0aW9uKGUpe3ZhciBpPWUuc2VyaWVzSW5kZXgscz1lLmRhdGFQb2ludEluZGV4LGE9ZS53O3JldHVybiB0Ll9nZXRCb3hUb29sdGlwKGEsaSxzLFsiT3BlbiIsIkhpZ2giLCIiLCJMb3ciLCJDbG9zZSJdLCJjYW5kbGVzdGljayIpfX0sc3RhdGVzOnthY3RpdmU6e2ZpbHRlcjp7dHlwZToibm9uZSJ9fX0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5OiJib3hQbG90Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOntkeW5hbWljQW5pbWF0aW9uOntlbmFibGVkOiExfX19LHN0cm9rZTp7d2lkdGg6MSxjb2xvcnM6WyIjMjQyOTJlIl19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHRvb2x0aXA6e3NoYXJlZDohMCxjdXN0b206ZnVuY3Rpb24oZSl7dmFyIGk9ZS5zZXJpZXNJbmRleCxzPWUuZGF0YVBvaW50SW5kZXgsYT1lLnc7cmV0dXJuIHQuX2dldEJveFRvb2x0aXAoYSxpLHMsWyJNaW5pbXVtIiwiUTEiLCJNZWRpYW4iLCJRMyIsIk1heGltdW0iXSwiYm94UGxvdCIpfX0sbWFya2Vyczp7c2l6ZTo1LHN0cm9rZVdpZHRoOjEsc3Ryb2tlQ29sb3JzOiIjMTExIn0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5OiJyYW5nZUJhciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57c3Ryb2tlOnt3aWR0aDowLGxpbmVDYXA6InNxdWFyZSJ9LHBsb3RPcHRpb25zOntiYXI6e2JvcmRlclJhZGl1czowLGRhdGFMYWJlbHM6e3Bvc2l0aW9uOiJjZW50ZXIifX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITEsZm9ybWF0dGVyOmZ1bmN0aW9uKHQsZSl7ZS5jdHg7dmFyIGk9ZS5zZXJpZXNJbmRleCxzPWUuZGF0YVBvaW50SW5kZXgsYT1lLncsbj1mdW5jdGlvbigpe3ZhciB0PWEuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W2ldW3NdO3JldHVybiBhLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbaV1bc10tdH07cmV0dXJuIGEuZ2xvYmFscy5jb21ib0NoYXJ0cz8icmFuZ2VCYXIiPT09YS5jb25maWcuc2VyaWVzW2ldLnR5cGV8fCJyYW5nZUFyZWEiPT09YS5jb25maWcuc2VyaWVzW2ldLnR5cGU/bigpOnQ6bigpfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfSxzdHlsZTp7Y29sb3JzOlsiI2ZmZiJdfX0sdG9vbHRpcDp7c2hhcmVkOiExLGZvbGxvd0N1cnNvcjohMCxjdXN0b206ZnVuY3Rpb24odCl7cmV0dXJuIHQudy5jb25maWcucGxvdE9wdGlvbnMmJnQudy5jb25maWcucGxvdE9wdGlvbnMuYmFyJiZ0LncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsP2Z1bmN0aW9uKHQpe3ZhciBlPUkodCksaT1lLmNvbG9yLHM9ZS5zZXJpZXNOYW1lLGE9ZS55bGFiZWwscj1lLnN0YXJ0VmFsLG89ZS5lbmRWYWw7cmV0dXJuIEYobihuKHt9LHQpLHt9LHtjb2xvcjppLHNlcmllc05hbWU6cyx5bGFiZWw6YSxzdGFydDpyLGVuZDpvfSkpfSh0KTpmdW5jdGlvbih0KXt2YXIgZT1JKHQpLGk9ZS5jb2xvcixzPWUuc2VyaWVzTmFtZSxhPWUueWxhYmVsLHI9ZS5zdGFydCxvPWUuZW5kO3JldHVybiBGKG4obih7fSx0KSx7fSx7Y29sb3I6aSxzZXJpZXNOYW1lOnMseWxhYmVsOmEsc3RhcnQ6cixlbmQ6b30pKX0odCl9fSx4YXhpczp7dGlja1BsYWNlbWVudDoiYmV0d2VlbiIsdG9vbHRpcDp7ZW5hYmxlZDohMX0sY3Jvc3NoYWlyczp7c3Ryb2tlOnt3aWR0aDowfX19fX19LHtrZXk6ImFyZWEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3N0cm9rZTp7d2lkdGg6NCxmaWxsOnt0eXBlOiJzb2xpZCIsZ3JhZGllbnQ6e2ludmVyc2VDb2xvcnM6ITEsc2hhZGU6ImxpZ2h0Iix0eXBlOiJ2ZXJ0aWNhbCIsb3BhY2l0eUZyb206LjY1LG9wYWNpdHlUbzouNSxzdG9wczpbMCwxMDAsMTAwXX19fSxmaWxsOnt0eXBlOiJncmFkaWVudCIsZ3JhZGllbnQ6e2ludmVyc2VDb2xvcnM6ITEsc2hhZGU6ImxpZ2h0Iix0eXBlOiJ2ZXJ0aWNhbCIsb3BhY2l0eUZyb206LjY1LG9wYWNpdHlUbzouNSxzdG9wczpbMCwxMDAsMTAwXX19LG1hcmtlcnM6e3NpemU6MCxob3Zlcjp7c2l6ZU9mZnNldDo2fX0sdG9vbHRpcDp7Zm9sbG93Q3Vyc29yOiExfX19fSx7a2V5OiJyYW5nZUFyZWEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3N0cm9rZTp7Y3VydmU6InN0cmFpZ2h0Iix3aWR0aDowfSxmaWxsOnt0eXBlOiJzb2xpZCIsb3BhY2l0eTouNn0sbWFya2Vyczp7c2l6ZTowfSxzdGF0ZXM6e2hvdmVyOntmaWx0ZXI6e3R5cGU6Im5vbmUifX0sYWN0aXZlOntmaWx0ZXI6e3R5cGU6Im5vbmUifX19LHRvb2x0aXA6e2ludGVyc2VjdDohMSxzaGFyZWQ6ITAsZm9sbG93Q3Vyc29yOiEwLGN1c3RvbTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9SSh0KSxpPWUuY29sb3Iscz1lLnNlcmllc05hbWUsYT1lLnlsYWJlbCxyPWUuc3RhcnQsbz1lLmVuZDtyZXR1cm4gRihuKG4oe30sdCkse30se2NvbG9yOmksc2VyaWVzTmFtZTpzLHlsYWJlbDphLHN0YXJ0OnIsZW5kOm99KSl9KHQpfX19fX0se2tleToiYnJ1c2giLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBiLmV4dGVuZCh0LHtjaGFydDp7dG9vbGJhcjp7YXV0b1NlbGVjdGVkOiJzZWxlY3Rpb24iLHNob3c6ITF9LHpvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntlbmFibGVkOiExfSxzdHJva2U6e3dpZHRoOjF9LHRvb2x0aXA6e2VuYWJsZWQ6ITF9LHhheGlzOnt0b29sdGlwOntlbmFibGVkOiExfX19KX19LHtrZXk6InN0YWNrZWQxMDAiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuZGF0YUxhYmVscz10LmRhdGFMYWJlbHN8fHt9LHQuZGF0YUxhYmVscy5mb3JtYXR0ZXI9dC5kYXRhTGFiZWxzLmZvcm1hdHRlcnx8dm9pZCAwO3ZhciBlPXQuZGF0YUxhYmVscy5mb3JtYXR0ZXI7cmV0dXJuIHQueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt0LnlheGlzW2ldLm1pbj0wLHQueWF4aXNbaV0ubWF4PTEwMH0pKSwiYmFyIj09PXQuY2hhcnQudHlwZSYmKHQuZGF0YUxhYmVscy5mb3JtYXR0ZXI9ZXx8ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0P3QudG9GaXhlZCgwKSsiJSI6dH0pLHR9fSx7a2V5OiJjb252ZXJ0Q2F0VG9OdW1lcmljIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM9ITAsdH19LHtrZXk6ImNvbnZlcnRDYXRUb051bWVyaWNYYXhpcyIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3QueGF4aXMudHlwZT0ibnVtZXJpYyIsdC54YXhpcy5sYWJlbHM9dC54YXhpcy5sYWJlbHN8fHt9LHQueGF4aXMubGFiZWxzLmZvcm1hdHRlcj10LnhheGlzLmxhYmVscy5mb3JtYXR0ZXJ8fGZ1bmN0aW9uKHQpe3JldHVybiBiLmlzTnVtYmVyKHQpP01hdGguZmxvb3IodCk6dH07dmFyIHM9dC54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLGE9dC54YXhpcy5jYXRlZ29yaWVzJiZ0LnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoP3QueGF4aXMuY2F0ZWdvcmllczp0LmxhYmVscztyZXR1cm4gaSYmaS5sZW5ndGgmJihhPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90OlN0cmluZyh0KX0pKSksYSYmYS5sZW5ndGgmJih0LnhheGlzLmxhYmVscy5mb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGIuaXNOdW1iZXIodCk/cyhhW01hdGguZmxvb3IodCktMV0pOnModCl9KSx0LnhheGlzLmNhdGVnb3JpZXM9W10sdC5sYWJlbHM9W10sdC54YXhpcy50aWNrQW1vdW50PXQueGF4aXMudGlja0Ftb3VudHx8ImRhdGFQb2ludHMiLHR9fSx7a2V5OiJidWJibGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2RhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6WyIjZmZmIl19fSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSx4YXhpczp7Y3Jvc3NoYWlyczp7d2lkdGg6MH19LGZpbGw6e3R5cGU6InNvbGlkIixncmFkaWVudDp7c2hhZGU6ImxpZ2h0IixpbnZlcnNlOiEwLHNoYWRlSW50ZW5zaXR5Oi41NSxvcGFjaXR5RnJvbTouNCxvcGFjaXR5VG86Ljh9fX19fSx7a2V5OiJzY2F0dGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkYXRhTGFiZWxzOntlbmFibGVkOiExfSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSxtYXJrZXJzOntzaXplOjYsc3Ryb2tlV2lkdGg6MSxob3Zlcjp7c2l6ZU9mZnNldDoyfX19fX0se2tleToiaGVhdG1hcCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3N0YWNrZWQ6ITF9LGZpbGw6e29wYWNpdHk6MX0sZGF0YUxhYmVsczp7c3R5bGU6e2NvbG9yczpbIiNmZmYiXX19LHN0cm9rZTp7Y29sb3JzOlsiI2ZmZiJdfSx0b29sdGlwOntmb2xsb3dDdXJzb3I6ITAsbWFya2VyOntzaG93OiExfSx4OntzaG93OiExfX0sbGVnZW5kOntwb3NpdGlvbjoidG9wIixtYXJrZXJzOntzaGFwZToic3F1YXJlIixzaXplOjEwLG9mZnNldFk6Mn19LGdyaWQ6e3BhZGRpbmc6e3JpZ2h0OjIwfX19fX0se2tleToidHJlZW1hcCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3pvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntzdHlsZTp7Zm9udFNpemU6MTQsZm9udFdlaWdodDo2MDAsY29sb3JzOlsiI2ZmZiJdfX0sc3Ryb2tlOntzaG93OiEwLHdpZHRoOjIsY29sb3JzOlsiI2ZmZiJdfSxsZWdlbmQ6e3Nob3c6ITF9LGZpbGw6e2dyYWRpZW50OntzdG9wczpbMCwxMDBdfX0sdG9vbHRpcDp7Zm9sbG93Q3Vyc29yOiEwLHg6e3Nob3c6ITF9fSxncmlkOntwYWRkaW5nOntsZWZ0OjAscmlnaHQ6MH19LHhheGlzOntjcm9zc2hhaXJzOntzaG93OiExfSx0b29sdGlwOntlbmFibGVkOiExfX19fX0se2tleToicGllIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7dG9vbGJhcjp7c2hvdzohMX19LHBsb3RPcHRpb25zOntwaWU6e2RvbnV0OntsYWJlbHM6e3Nob3c6ITF9fX19LGRhdGFMYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC50b0ZpeGVkKDEpKyIlIn0sc3R5bGU6e2NvbG9yczpbIiNmZmYiXX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMH19LHN0cm9rZTp7Y29sb3JzOlsiI2ZmZiJdfSxmaWxsOntvcGFjaXR5OjEsZ3JhZGllbnQ6e3NoYWRlOiJsaWdodCIsc3RvcHM6WzAsMTAwXX19LHRvb2x0aXA6e3RoZW1lOiJkYXJrIixmaWxsU2VyaWVzQ29sb3I6ITB9LGxlZ2VuZDp7cG9zaXRpb246InJpZ2h0In19fX0se2tleToiZG9udXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0Ont0b29sYmFyOntzaG93OiExfX0sZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvRml4ZWQoMSkrIiUifSxzdHlsZTp7Y29sb3JzOlsiI2ZmZiJdfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfSxkcm9wU2hhZG93OntlbmFibGVkOiEwfX0sc3Ryb2tlOntjb2xvcnM6WyIjZmZmIl19LGZpbGw6e29wYWNpdHk6MSxncmFkaWVudDp7c2hhZGU6ImxpZ2h0IixzaGFkZUludGVuc2l0eTouMzUsc3RvcHM6WzgwLDEwMF0sb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MX19LHRvb2x0aXA6e3RoZW1lOiJkYXJrIixmaWxsU2VyaWVzQ29sb3I6ITB9LGxlZ2VuZDp7cG9zaXRpb246InJpZ2h0In19fX0se2tleToicG9sYXJBcmVhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdHMueWF4aXNbMF0udGlja0Ftb3VudD10aGlzLm9wdHMueWF4aXNbMF0udGlja0Ftb3VudD90aGlzLm9wdHMueWF4aXNbMF0udGlja0Ftb3VudDo2LHtjaGFydDp7dG9vbGJhcjp7c2hvdzohMX19LGRhdGFMYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC50b0ZpeGVkKDEpKyIlIn0sZW5hYmxlZDohMX0sc3Ryb2tlOntzaG93OiEwLHdpZHRoOjJ9LGZpbGw6e29wYWNpdHk6Ljd9LHRvb2x0aXA6e3RoZW1lOiJkYXJrIixmaWxsU2VyaWVzQ29sb3I6ITB9LGxlZ2VuZDp7cG9zaXRpb246InJpZ2h0In19fX0se2tleToicmFkYXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0cy55YXhpc1swXS5sYWJlbHMub2Zmc2V0WT10aGlzLm9wdHMueWF4aXNbMF0ubGFiZWxzLm9mZnNldFk/dGhpcy5vcHRzLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZOjYse2RhdGFMYWJlbHM6e2VuYWJsZWQ6ITEsc3R5bGU6e2ZvbnRTaXplOiIxMXB4In19LHN0cm9rZTp7d2lkdGg6Mn0sbWFya2Vyczp7c2l6ZTozLHN0cm9rZVdpZHRoOjEsc3Ryb2tlT3BhY2l0eToxfSxmaWxsOntvcGFjaXR5Oi4yfSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwLGZvbGxvd0N1cnNvcjohMH0sZ3JpZDp7c2hvdzohMX0seGF4aXM6e2xhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxzdHlsZTp7Y29sb3JzOlsiI2E4YThhOCJdLGZvbnRTaXplOiIxMXB4In19LHRvb2x0aXA6e2VuYWJsZWQ6ITF9LGNyb3NzaGFpcnM6e3Nob3c6ITF9fX19fSx7a2V5OiJyYWRpYWxCYXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOntkeW5hbWljQW5pbWF0aW9uOntlbmFibGVkOiEwLHNwZWVkOjgwMH19LHRvb2xiYXI6e3Nob3c6ITF9fSxmaWxsOntncmFkaWVudDp7c2hhZGU6ImRhcmsiLHNoYWRlSW50ZW5zaXR5Oi40LGludmVyc2VDb2xvcnM6ITEsdHlwZToiZGlhZ29uYWwyIixvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOls3MCw5OCwxMDBdfX0sbGVnZW5kOntzaG93OiExLHBvc2l0aW9uOiJyaWdodCJ9LHRvb2x0aXA6e2VuYWJsZWQ6ITEsZmlsbFNlcmllc0NvbG9yOiEwfX19fSx7a2V5OiJfZ2V0Qm94VG9vbHRpcCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyxhKXt2YXIgbj10Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1tlXVtpXSxyPXQuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW2VdW2ldLG89dC5nbG9iYWxzLnNlcmllc0NhbmRsZU1bZV1baV0sbD10Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFtlXVtpXSxjPXQuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW2VdW2ldO3JldHVybiB0LmNvbmZpZy5zZXJpZXNbZV0udHlwZSYmdC5jb25maWcuc2VyaWVzW2VdLnR5cGUhPT1hPyc8ZGl2IGNsYXNzPSJhcGV4Y2hhcnRzLWN1c3RvbS10b29sdGlwIj5cbiAgICAgICAgICAnLmNvbmNhdCh0LmNvbmZpZy5zZXJpZXNbZV0ubmFtZT90LmNvbmZpZy5zZXJpZXNbZV0ubmFtZToic2VyaWVzLSIrKGUrMSksIjogPHN0cm9uZz4iKS5jb25jYXQodC5nbG9iYWxzLnNlcmllc1tlXVtpXSwiPC9zdHJvbmc+XG4gICAgICAgIDwvZGl2PiIpOic8ZGl2IGNsYXNzPSJhcGV4Y2hhcnRzLXRvb2x0aXAtYm94IGFwZXhjaGFydHMtdG9vbHRpcC0nLmNvbmNhdCh0LmNvbmZpZy5jaGFydC50eXBlLCciPicpKyI8ZGl2PiIuY29uY2F0KHNbMF0sJzogPHNwYW4gY2xhc3M9InZhbHVlIj4nKStuKyI8L3NwYW4+PC9kaXY+IisiPGRpdj4iLmNvbmNhdChzWzFdLCc6IDxzcGFuIGNsYXNzPSJ2YWx1ZSI+JykrcisiPC9zcGFuPjwvZGl2PiIrKG8/IjxkaXY+Ii5jb25jYXQoc1syXSwnOiA8c3BhbiBjbGFzcz0idmFsdWUiPicpK28rIjwvc3Bhbj48L2Rpdj4iOiIiKSsiPGRpdj4iLmNvbmNhdChzWzNdLCc6IDxzcGFuIGNsYXNzPSJ2YWx1ZSI+JykrbCsiPC9zcGFuPjwvZGl2PiIrIjxkaXY+Ii5jb25jYXQoc1s0XSwnOiA8c3BhbiBjbGFzcz0idmFsdWUiPicpK2MrIjwvc3Bhbj48L2Rpdj48L2Rpdj4ifX1dKSx0fSgpLHo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLm9wdHM9ZX1yZXR1cm4gYyh0LFt7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnJlc3BvbnNpdmVPdmVycmlkZSxpPXRoaXMub3B0cyxzPW5ldyBQLGE9bmV3IEQoaSk7dGhpcy5jaGFydFR5cGU9aS5jaGFydC50eXBlLCJoaXN0b2dyYW0iPT09dGhpcy5jaGFydFR5cGUmJihpLmNoYXJ0LnR5cGU9ImJhciIsaT1iLmV4dGVuZCh7cGxvdE9wdGlvbnM6e2Jhcjp7Y29sdW1uV2lkdGg6Ijk5Ljk5JSJ9fX0saSkpLGk9dGhpcy5leHRlbmRZQXhpcyhpKSxpPXRoaXMuZXh0ZW5kQW5ub3RhdGlvbnMoaSk7dmFyIG49cy5pbml0KCksbz17fTtpZihpJiYib2JqZWN0Ij09PXIoaSkpe3ZhciBsPXt9O2w9LTEhPT1bImxpbmUiLCJhcmVhIiwiYmFyIiwiY2FuZGxlc3RpY2siLCJib3hQbG90IiwicmFuZ2VCYXIiLCJyYW5nZUFyZWEiLCJoaXN0b2dyYW0iLCJidWJibGUiLCJzY2F0dGVyIiwiaGVhdG1hcCIsInRyZWVtYXAiLCJwaWUiLCJwb2xhckFyZWEiLCJkb251dCIsInJhZGFyIiwicmFkaWFsQmFyIl0uaW5kZXhPZihpLmNoYXJ0LnR5cGUpP2FbaS5jaGFydC50eXBlXSgpOmEubGluZSgpLGkuY2hhcnQuYnJ1c2gmJmkuY2hhcnQuYnJ1c2guZW5hYmxlZCYmKGw9YS5icnVzaChsKSksaS5jaGFydC5zdGFja2VkJiYiMTAwJSI9PT1pLmNoYXJ0LnN0YWNrVHlwZSYmKGk9YS5zdGFja2VkMTAwKGkpKSx0aGlzLmNoZWNrRm9yRGFya1RoZW1lKHdpbmRvdy5BcGV4KSx0aGlzLmNoZWNrRm9yRGFya1RoZW1lKGkpLGkueGF4aXM9aS54YXhpc3x8d2luZG93LkFwZXgueGF4aXN8fHt9LGV8fChpLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz0hMSksKChpPXRoaXMuY2hlY2tGb3JDYXRUb051bWVyaWNYQXhpcyh0aGlzLmNoYXJ0VHlwZSxsLGkpKS5jaGFydC5zcGFya2xpbmUmJmkuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWR8fHdpbmRvdy5BcGV4LmNoYXJ0JiZ3aW5kb3cuQXBleC5jaGFydC5zcGFya2xpbmUmJndpbmRvdy5BcGV4LmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkKSYmKGw9YS5zcGFya2xpbmUobCkpLG89Yi5leHRlbmQobixsKX12YXIgYz1iLmV4dGVuZChvLHdpbmRvdy5BcGV4KTtyZXR1cm4gbj1iLmV4dGVuZChjLGkpLHRoaXMuaGFuZGxlVXNlcklucHV0RXJyb3JzKG4pfX0se2tleToiY2hlY2tGb3JDYXRUb051bWVyaWNYQXhpcyIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPW5ldyBEKGkpLGE9KCJiYXIiPT09dHx8ImJveFBsb3QiPT09dCkmJmkucGxvdE9wdGlvbnMmJmkucGxvdE9wdGlvbnMuYmFyJiZpLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLG49InBpZSI9PT10fHwicG9sYXJBcmVhIj09PXR8fCJkb251dCI9PT10fHwicmFkYXIiPT09dHx8InJhZGlhbEJhciI9PT10fHwiaGVhdG1hcCI9PT10LHI9ImRhdGV0aW1lIiE9PWkueGF4aXMudHlwZSYmIm51bWVyaWMiIT09aS54YXhpcy50eXBlLG89aS54YXhpcy50aWNrUGxhY2VtZW50P2kueGF4aXMudGlja1BsYWNlbWVudDplLnhheGlzJiZlLnhheGlzLnRpY2tQbGFjZW1lbnQ7cmV0dXJuIGF8fG58fCFyfHwiYmV0d2VlbiI9PT1vfHwoaT1zLmNvbnZlcnRDYXRUb051bWVyaWMoaSkpLGl9fSx7a2V5OiJleHRlbmRZQXhpcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1uZXcgUDsodm9pZCAwPT09dC55YXhpc3x8IXQueWF4aXN8fEFycmF5LmlzQXJyYXkodC55YXhpcykmJjA9PT10LnlheGlzLmxlbmd0aCkmJih0LnlheGlzPXt9KSx0LnlheGlzLmNvbnN0cnVjdG9yIT09QXJyYXkmJndpbmRvdy5BcGV4LnlheGlzJiZ3aW5kb3cuQXBleC55YXhpcy5jb25zdHJ1Y3RvciE9PUFycmF5JiYodC55YXhpcz1iLmV4dGVuZCh0LnlheGlzLHdpbmRvdy5BcGV4LnlheGlzKSksdC55YXhpcy5jb25zdHJ1Y3RvciE9PUFycmF5P3QueWF4aXM9W2IuZXh0ZW5kKGkueUF4aXMsdC55YXhpcyldOnQueWF4aXM9Yi5leHRlbmRBcnJheSh0LnlheGlzLGkueUF4aXMpO3ZhciBzPSExO3QueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5sb2dhcml0aG1pYyYmKHM9ITApfSkpO3ZhciBhPXQuc2VyaWVzO3JldHVybiBlJiYhYSYmKGE9ZS5jb25maWcuc2VyaWVzKSxzJiZhLmxlbmd0aCE9PXQueWF4aXMubGVuZ3RoJiZhLmxlbmd0aCYmKHQueWF4aXM9YS5tYXAoKGZ1bmN0aW9uKGUscyl7aWYoZS5uYW1lfHwoYVtzXS5uYW1lPSJzZXJpZXMtIi5jb25jYXQocysxKSksdC55YXhpc1tzXSlyZXR1cm4gdC55YXhpc1tzXS5zZXJpZXNOYW1lPWFbc10ubmFtZSx0LnlheGlzW3NdO3ZhciBuPWIuZXh0ZW5kKGkueUF4aXMsdC55YXhpc1swXSk7cmV0dXJuIG4uc2hvdz0hMSxufSkpKSxzJiZhLmxlbmd0aD4xJiZhLmxlbmd0aCE9PXQueWF4aXMubGVuZ3RoJiZjb25zb2xlLndhcm4oIkEgbXVsdGktc2VyaWVzIGxvZ2FyaXRobWljIGNoYXJ0IHNob3VsZCBoYXZlIGVxdWFsIG51bWJlciBvZiBzZXJpZXMgYW5kIHktYXhlcy4gUGxlYXNlIG1ha2Ugc3VyZSB0byBlcXVhbGl6ZSBib3RoLiIpLHR9fSx7a2V5OiJleHRlbmRBbm5vdGF0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQuYW5ub3RhdGlvbnMmJih0LmFubm90YXRpb25zPXt9LHQuYW5ub3RhdGlvbnMueWF4aXM9W10sdC5hbm5vdGF0aW9ucy54YXhpcz1bXSx0LmFubm90YXRpb25zLnBvaW50cz1bXSksdD10aGlzLmV4dGVuZFlBeGlzQW5ub3RhdGlvbnModCksdD10aGlzLmV4dGVuZFhBeGlzQW5ub3RhdGlvbnModCksdGhpcy5leHRlbmRQb2ludEFubm90YXRpb25zKHQpfX0se2tleToiZXh0ZW5kWUF4aXNBbm5vdGF0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IFA7cmV0dXJuIHQuYW5ub3RhdGlvbnMueWF4aXM9Yi5leHRlbmRBcnJheSh2b2lkIDAhPT10LmFubm90YXRpb25zLnlheGlzP3QuYW5ub3RhdGlvbnMueWF4aXM6W10sZS55QXhpc0Fubm90YXRpb24pLHR9fSx7a2V5OiJleHRlbmRYQXhpc0Fubm90YXRpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgUDtyZXR1cm4gdC5hbm5vdGF0aW9ucy54YXhpcz1iLmV4dGVuZEFycmF5KHZvaWQgMCE9PXQuYW5ub3RhdGlvbnMueGF4aXM/dC5hbm5vdGF0aW9ucy54YXhpczpbXSxlLnhBeGlzQW5ub3RhdGlvbiksdH19LHtrZXk6ImV4dGVuZFBvaW50QW5ub3RhdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBQO3JldHVybiB0LmFubm90YXRpb25zLnBvaW50cz1iLmV4dGVuZEFycmF5KHZvaWQgMCE9PXQuYW5ub3RhdGlvbnMucG9pbnRzP3QuYW5ub3RhdGlvbnMucG9pbnRzOltdLGUucG9pbnRBbm5vdGF0aW9uKSx0fX0se2tleToiY2hlY2tGb3JEYXJrVGhlbWUiLHZhbHVlOmZ1bmN0aW9uKHQpe3QudGhlbWUmJiJkYXJrIj09PXQudGhlbWUubW9kZSYmKHQudG9vbHRpcHx8KHQudG9vbHRpcD17fSksImxpZ2h0IiE9PXQudG9vbHRpcC50aGVtZSYmKHQudG9vbHRpcC50aGVtZT0iZGFyayIpLHQuY2hhcnQuZm9yZUNvbG9yfHwodC5jaGFydC5mb3JlQ29sb3I9IiNmNmY3ZjgiKSx0LmNoYXJ0LmJhY2tncm91bmR8fCh0LmNoYXJ0LmJhY2tncm91bmQ9IiM0MjQyNDIiKSx0LnRoZW1lLnBhbGV0dGV8fCh0LnRoZW1lLnBhbGV0dGU9InBhbGV0dGU0IikpfX0se2tleToiaGFuZGxlVXNlcklucHV0RXJyb3JzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10O2lmKGUudG9vbHRpcC5zaGFyZWQmJmUudG9vbHRpcC5pbnRlcnNlY3QpdGhyb3cgbmV3IEVycm9yKCJ0b29sdGlwLnNoYXJlZCBjYW5ub3QgYmUgZW5hYmxlZCB3aGVuIHRvb2x0aXAuaW50ZXJzZWN0IGlzIHRydWUuIFR1cm4gb2ZmIGFueSBvdGhlciBvcHRpb24gYnkgc2V0dGluZyBpdCB0byBmYWxzZS4iKTtpZigiYmFyIj09PWUuY2hhcnQudHlwZSYmZS5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCl7aWYoZS55YXhpcy5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIk11bHRpcGxlIFkgQXhpcyBmb3IgYmFycyBhcmUgbm90IHN1cHBvcnRlZC4gU3dpdGNoIHRvIGNvbHVtbiBjaGFydCBieSBzZXR0aW5nIHBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsPWZhbHNlIik7ZS55YXhpc1swXS5yZXZlcnNlZCYmKGUueWF4aXNbMF0ub3Bwb3NpdGU9ITApLGUueGF4aXMudG9vbHRpcC5lbmFibGVkPSExLGUueWF4aXNbMF0udG9vbHRpcC5lbmFibGVkPSExLGUuY2hhcnQuem9vbS5lbmFibGVkPSExfXJldHVybiJiYXIiIT09ZS5jaGFydC50eXBlJiYicmFuZ2VCYXIiIT09ZS5jaGFydC50eXBlfHxlLnRvb2x0aXAuc2hhcmVkJiYiYmFyV2lkdGgiPT09ZS54YXhpcy5jcm9zc2hhaXJzLndpZHRoJiZlLnNlcmllcy5sZW5ndGg+MSYmKGUueGF4aXMuY3Jvc3NoYWlycy53aWR0aD0idGlja1dpZHRoIiksImNhbmRsZXN0aWNrIiE9PWUuY2hhcnQudHlwZSYmImJveFBsb3QiIT09ZS5jaGFydC50eXBlfHxlLnlheGlzWzBdLnJldmVyc2VkJiYoY29uc29sZS53YXJuKCJSZXZlcnNlZCB5LWF4aXMgaW4gIi5jb25jYXQoZS5jaGFydC50eXBlLCIgY2hhcnQgaXMgbm90IHN1cHBvcnRlZC4iKSksZS55YXhpc1swXS5yZXZlcnNlZD0hMSksZX19XSksdH0oKSxOPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe28odGhpcyx0KX1yZXR1cm4gYyh0LFt7a2V5OiJpbml0R2xvYmFsVmFycyIsdmFsdWU6ZnVuY3Rpb24odCl7dC5zZXJpZXM9W10sdC5zZXJpZXNDYW5kbGVPPVtdLHQuc2VyaWVzQ2FuZGxlSD1bXSx0LnNlcmllc0NhbmRsZU09W10sdC5zZXJpZXNDYW5kbGVMPVtdLHQuc2VyaWVzQ2FuZGxlQz1bXSx0LnNlcmllc1JhbmdlU3RhcnQ9W10sdC5zZXJpZXNSYW5nZUVuZD1bXSx0LnNlcmllc1JhbmdlPVtdLHQuc2VyaWVzUGVyY2VudD1bXSx0LnNlcmllc0dvYWxzPVtdLHQuc2VyaWVzWD1bXSx0LnNlcmllc1o9W10sdC5zZXJpZXNOYW1lcz1bXSx0LnNlcmllc1RvdGFscz1bXSx0LnNlcmllc0xvZz1bXSx0LnNlcmllc0NvbG9ycz1bXSx0LnN0YWNrZWRTZXJpZXNUb3RhbHM9W10sdC5zZXJpZXNYdmFsdWVzPVtdLHQuc2VyaWVzWXZhbHVlcz1bXSx0LmxhYmVscz1bXSx0Lmhhc0dyb3Vwcz0hMSx0Lmdyb3Vwcz1bXSx0LmNhdGVnb3J5TGFiZWxzPVtdLHQudGltZXNjYWxlTGFiZWxzPVtdLHQubm9MYWJlbHNQcm92aWRlZD0hMSx0LnJlc2l6ZVRpbWVyPW51bGwsdC5zZWxlY3Rpb25SZXNpemVUaW1lcj1udWxsLHQuZGVsYXllZEVsZW1lbnRzPVtdLHQucG9pbnRzQXJyYXk9W10sdC5kYXRhTGFiZWxzUmVjdHM9W10sdC5pc1hOdW1lcmljPSExLHQueGF4aXNMYWJlbHNDb3VudD0wLHQuc2tpcExhc3RUaW1lbGluZWxhYmVsPSExLHQuc2tpcEZpcnN0VGltZWxpbmVsYWJlbD0hMSx0LmlzRGF0YVhZWj0hMSx0LmlzTXVsdGlMaW5lWD0hMSx0LmlzTXVsdGlwbGVZQXhpcz0hMSx0Lm1heFk9LU51bWJlci5NQVhfVkFMVUUsdC5taW5ZPU51bWJlci5NSU5fVkFMVUUsdC5taW5ZQXJyPVtdLHQubWF4WUFycj1bXSx0Lm1heFg9LU51bWJlci5NQVhfVkFMVUUsdC5taW5YPU51bWJlci5NQVhfVkFMVUUsdC5pbml0aWFsTWF4WD0tTnVtYmVyLk1BWF9WQUxVRSx0LmluaXRpYWxNaW5YPU51bWJlci5NQVhfVkFMVUUsdC5tYXhEYXRlPTAsdC5taW5EYXRlPU51bWJlci5NQVhfVkFMVUUsdC5taW5aPU51bWJlci5NQVhfVkFMVUUsdC5tYXhaPS1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWERpZmY9TnVtYmVyLk1BWF9WQUxVRSx0LnlBeGlzU2NhbGU9W10sdC54QXhpc1NjYWxlPW51bGwsdC54QXhpc1RpY2tzUG9zaXRpb25zPVtdLHQueUxhYmVsc0Nvb3Jkcz1bXSx0LnlUaXRsZUNvb3Jkcz1bXSx0LmJhclBhZEZvck51bWVyaWNBeGlzPTAsdC5wYWRIb3Jpem9udGFsPTAsdC54UmFuZ2U9MCx0LnlSYW5nZT1bXSx0LnpSYW5nZT0wLHQuZGF0YVBvaW50cz0wLHQueFRpY2tBbW91bnQ9MH19LHtrZXk6Imdsb2JhbFZhcnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybntjaGFydElEOm51bGwsY3VpZDpudWxsLGV2ZW50czp7YmVmb3JlTW91bnQ6W10sbW91bnRlZDpbXSx1cGRhdGVkOltdLGNsaWNrZWQ6W10sc2VsZWN0aW9uOltdLGRhdGFQb2ludFNlbGVjdGlvbjpbXSx6b29tZWQ6W10sc2Nyb2xsZWQ6W119LGNvbG9yczpbXSxjbGllbnRYOm51bGwsY2xpZW50WTpudWxsLGZpbGw6e2NvbG9yczpbXX0sc3Ryb2tlOntjb2xvcnM6W119LGRhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W119fSxyYWRhclBvbHlnb25zOntmaWxsOntjb2xvcnM6W119fSxtYXJrZXJzOntjb2xvcnM6W10sc2l6ZTp0Lm1hcmtlcnMuc2l6ZSxsYXJnZXN0U2l6ZTowfSxhbmltYXRpb25FbmRlZDohMSxpc1RvdWNoRGV2aWNlOiJvbnRvdWNoc3RhcnQiaW4gd2luZG93fHxuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyxpc0RpcnR5OiExLGlzRXhlY0NhbGxlZDohMSxpbml0aWFsQ29uZmlnOm51bGwsaW5pdGlhbFNlcmllczpbXSxsYXN0WEF4aXM6W10sbGFzdFlBeGlzOltdLGNvbHVtblNlcmllczpudWxsLGxhYmVsczpbXSx0aW1lc2NhbGVMYWJlbHM6W10sbm9MYWJlbHNQcm92aWRlZDohMSxhbGxTZXJpZXNDb2xsYXBzZWQ6ITEsY29sbGFwc2VkU2VyaWVzOltdLGNvbGxhcHNlZFNlcmllc0luZGljZXM6W10sYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzOltdLGFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXM6W10scmlzaW5nU2VyaWVzOltdLGRhdGFGb3JtYXRYTnVtZXJpYzohMSxjYXB0dXJlZFNlcmllc0luZGV4Oi0xLGNhcHR1cmVkRGF0YVBvaW50SW5kZXg6LTEsc2VsZWN0ZWREYXRhUG9pbnRzOltdLGdvbGRlblBhZGRpbmc6MzUsaW52YWxpZExvZ1NjYWxlOiExLGlnbm9yZVlBeGlzSW5kZXhlczpbXSx5QXhpc1NhbWVTY2FsZUluZGljZXM6W10sbWF4VmFsc0luQXJyYXlJbmRleDowLHJhZGlhbFNpemU6MCxzZWxlY3Rpb246dm9pZCAwLHpvb21FbmFibGVkOiJ6b29tIj09PXQuY2hhcnQudG9vbGJhci5hdXRvU2VsZWN0ZWQmJnQuY2hhcnQudG9vbGJhci50b29scy56b29tJiZ0LmNoYXJ0Lnpvb20uZW5hYmxlZCxwYW5FbmFibGVkOiJwYW4iPT09dC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCYmdC5jaGFydC50b29sYmFyLnRvb2xzLnBhbixzZWxlY3Rpb25FbmFibGVkOiJzZWxlY3Rpb24iPT09dC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCYmdC5jaGFydC50b29sYmFyLnRvb2xzLnNlbGVjdGlvbix5YXhpczpudWxsLG1vdXNlZG93bjohMSxsYXN0Q2xpZW50UG9zaXRpb246e30sdmlzaWJsZVhSYW5nZTp2b2lkIDAseVZhbHVlRGVjaW1hbDowLHRvdGFsOjAsU1ZHTlM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixzdmdXaWR0aDowLHN2Z0hlaWdodDowLG5vRGF0YTohMSxsb2NhbGU6e30sZG9tOnt9LG1lbW9yeTp7bWV0aG9kc1RvRXhlYzpbXX0sc2hvdWxkQW5pbWF0ZTohMCxza2lwTGFzdFRpbWVsaW5lbGFiZWw6ITEsc2tpcEZpcnN0VGltZWxpbmVsYWJlbDohMSxkZWxheWVkRWxlbWVudHM6W10sYXhpc0NoYXJ0czohMCxpc0RhdGFYWVo6ITEscmVzaXplZDohMSxyZXNpemVUaW1lcjpudWxsLGNvbWJvQ2hhcnRzOiExLGRhdGFDaGFuZ2VkOiExLHByZXZpb3VzUGF0aHM6W10sYWxsU2VyaWVzSGFzRXF1YWxYOiEwLHBvaW50c0FycmF5OltdLGRhdGFMYWJlbHNSZWN0czpbXSxsYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlczpbXSxoYXNOdWxsVmFsdWVzOiExLGVhc2luZzpudWxsLHpvb21lZDohMSxncmlkV2lkdGg6MCxncmlkSGVpZ2h0OjAscm90YXRlWExhYmVsczohMSxkZWZhdWx0TGFiZWxzOiExLHhMYWJlbEZvcm1hdHRlcjp2b2lkIDAseUxhYmVsRm9ybWF0dGVyczpbXSx4YXhpc1Rvb2x0aXBGb3JtYXR0ZXI6dm9pZCAwLHR0S2V5Rm9ybWF0dGVyOnZvaWQgMCx0dFZhbDp2b2lkIDAsdHRaRm9ybWF0dGVyOnZvaWQgMCxMSU5FX0hFSUdIVF9SQVRJTzoxLjYxOCx4QXhpc0xhYmVsc0hlaWdodDowLHhBeGlzR3JvdXBMYWJlbHNIZWlnaHQ6MCx4QXhpc0xhYmVsc1dpZHRoOjAseUF4aXNMYWJlbHNXaWR0aDowLHNjYWxlWDoxLHNjYWxlWToxLHRyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAsdHJhbnNsYXRlWUF4aXNYOltdLHlBeGlzV2lkdGhzOltdLHRyYW5zbGF0ZVhBeGlzWTowLHRyYW5zbGF0ZVhBeGlzWDowLHRvb2x0aXA6bnVsbH19fSx7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdsb2JhbFZhcnModCk7cmV0dXJuIHRoaXMuaW5pdEdsb2JhbFZhcnMoZSksZS5pbml0aWFsQ29uZmlnPWIuZXh0ZW5kKHt9LHQpLGUuaW5pdGlhbFNlcmllcz1iLmNsb25lKHQuc2VyaWVzKSxlLmxhc3RYQXhpcz1iLmNsb25lKGUuaW5pdGlhbENvbmZpZy54YXhpcyksZS5sYXN0WUF4aXM9Yi5jbG9uZShlLmluaXRpYWxDb25maWcueWF4aXMpLGV9fV0pLHR9KCksUj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMub3B0cz1lfXJldHVybiBjKHQsW3trZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHoodGhpcy5vcHRzKS5pbml0KHtyZXNwb25zaXZlT3ZlcnJpZGU6ITF9KTtyZXR1cm57Y29uZmlnOnQsZ2xvYmFsczoobmV3IE4pLmluaXQodCl9fX1dKSx0fSgpLF89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5vcHRzPW51bGwsdGhpcy5zZXJpZXNJbmRleD0wfXJldHVybiBjKHQsW3trZXk6ImNsaXBwZWRJbWdBcmVhIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmNvbmZpZyxzPXBhcnNlSW50KGUuZ2xvYmFscy5ncmlkV2lkdGgsMTApLGE9cGFyc2VJbnQoZS5nbG9iYWxzLmdyaWRIZWlnaHQsMTApLG49cz5hP3M6YSxyPXQuaW1hZ2Usbz0wLGw9MDt2b2lkIDA9PT10LndpZHRoJiZ2b2lkIDA9PT10LmhlaWdodD92b2lkIDAhPT1pLmZpbGwuaW1hZ2Uud2lkdGgmJnZvaWQgMCE9PWkuZmlsbC5pbWFnZS5oZWlnaHQ/KG89aS5maWxsLmltYWdlLndpZHRoKzEsbD1pLmZpbGwuaW1hZ2UuaGVpZ2h0KToobz1uKzEsbD1uKToobz10LndpZHRoLGw9dC5oZWlnaHQpO3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLmdsb2JhbHMuU1ZHTlMsInBhdHRlcm4iKTtrLnNldEF0dHJzKGMse2lkOnQucGF0dGVybklELHBhdHRlcm5Vbml0czp0LnBhdHRlcm5Vbml0cz90LnBhdHRlcm5Vbml0czoidXNlclNwYWNlT25Vc2UiLHdpZHRoOm8rInB4IixoZWlnaHQ6bCsicHgifSk7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUywiaW1hZ2UiKTtjLmFwcGVuZENoaWxkKGgpLGguc2V0QXR0cmlidXRlTlMod2luZG93LlNWRy54bGluaywiaHJlZiIsciksay5zZXRBdHRycyhoLHt4OjAseTowLHByZXNlcnZlQXNwZWN0UmF0aW86Im5vbmUiLHdpZHRoOm8rInB4IixoZWlnaHQ6bCsicHgifSksaC5zdHlsZS5vcGFjaXR5PXQub3BhY2l0eSxlLmdsb2JhbHMuZG9tLmVsRGVmcy5ub2RlLmFwcGVuZENoaWxkKGMpfX0se2tleToiZ2V0U2VyaWVzSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm4oImJhciI9PT1lLmNvbmZpZy5jaGFydC50eXBlfHwicmFuZ2VCYXIiPT09ZS5jb25maWcuY2hhcnQudHlwZSkmJmUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZHx8ImhlYXRtYXAiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8InRyZWVtYXAiPT09ZS5jb25maWcuY2hhcnQudHlwZT90aGlzLnNlcmllc0luZGV4PXQuc2VyaWVzTnVtYmVyOnRoaXMuc2VyaWVzSW5kZXg9dC5zZXJpZXNOdW1iZXIlZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgsdGhpcy5zZXJpZXNJbmRleH19LHtrZXk6ImZpbGxQYXRoIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7dGhpcy5vcHRzPXQ7dmFyIGkscyxhLG49dGhpcy53LmNvbmZpZzt0aGlzLnNlcmllc0luZGV4PXRoaXMuZ2V0U2VyaWVzSW5kZXgodCk7dmFyIHI9dGhpcy5nZXRGaWxsQ29sb3JzKClbdGhpcy5zZXJpZXNJbmRleF07dm9pZCAwIT09ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1t0aGlzLnNlcmllc0luZGV4XSYmKHI9ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1t0aGlzLnNlcmllc0luZGV4XSksImZ1bmN0aW9uIj09dHlwZW9mIHImJihyPXIoe3Nlcmllc0luZGV4OnRoaXMuc2VyaWVzSW5kZXgsZGF0YVBvaW50SW5kZXg6dC5kYXRhUG9pbnRJbmRleCx2YWx1ZTp0LnZhbHVlLHc6ZX0pKTt2YXIgbz10LmZpbGxUeXBlP3QuZmlsbFR5cGU6dGhpcy5nZXRGaWxsVHlwZSh0aGlzLnNlcmllc0luZGV4KSxsPUFycmF5LmlzQXJyYXkobi5maWxsLm9wYWNpdHkpP24uZmlsbC5vcGFjaXR5W3RoaXMuc2VyaWVzSW5kZXhdOm4uZmlsbC5vcGFjaXR5O3QuY29sb3ImJihyPXQuY29sb3IpO3ZhciBjPXI7aWYoLTE9PT1yLmluZGV4T2YoInJnYiIpP3IubGVuZ3RoPDkmJihjPWIuaGV4VG9SZ2JhKHIsbCkpOnIuaW5kZXhPZigicmdiYSIpPi0xJiYobD1iLmdldE9wYWNpdHlGcm9tUkdCQShyKSksdC5vcGFjaXR5JiYobD10Lm9wYWNpdHkpLCJwYXR0ZXJuIj09PW8mJihzPXRoaXMuaGFuZGxlUGF0dGVybkZpbGwoe2ZpbGxDb25maWc6dC5maWxsQ29uZmlnLHBhdHRlcm5GaWxsOnMsZmlsbENvbG9yOnIsZmlsbE9wYWNpdHk6bCxkZWZhdWx0Q29sb3I6Y30pKSwiZ3JhZGllbnQiPT09byYmKGE9dGhpcy5oYW5kbGVHcmFkaWVudEZpbGwoe2ZpbGxDb25maWc6dC5maWxsQ29uZmlnLGZpbGxDb2xvcjpyLGZpbGxPcGFjaXR5OmwsaTp0aGlzLnNlcmllc0luZGV4fSkpLCJpbWFnZSI9PT1vKXt2YXIgaD1uLmZpbGwuaW1hZ2Uuc3JjLGQ9dC5wYXR0ZXJuSUQ/dC5wYXR0ZXJuSUQ6IiI7dGhpcy5jbGlwcGVkSW1nQXJlYSh7b3BhY2l0eTpsLGltYWdlOkFycmF5LmlzQXJyYXkoaCk/dC5zZXJpZXNOdW1iZXI8aC5sZW5ndGg/aFt0LnNlcmllc051bWJlcl06aFswXTpoLHdpZHRoOnQud2lkdGg/dC53aWR0aDp2b2lkIDAsaGVpZ2h0OnQuaGVpZ2h0P3QuaGVpZ2h0OnZvaWQgMCxwYXR0ZXJuVW5pdHM6dC5wYXR0ZXJuVW5pdHMscGF0dGVybklEOiJwYXR0ZXJuIi5jb25jYXQoZS5nbG9iYWxzLmN1aWQpLmNvbmNhdCh0LnNlcmllc051bWJlcisxKS5jb25jYXQoZCl9KSxpPSJ1cmwoI3BhdHRlcm4iLmNvbmNhdChlLmdsb2JhbHMuY3VpZCkuY29uY2F0KHQuc2VyaWVzTnVtYmVyKzEpLmNvbmNhdChkLCIpIil9ZWxzZSBpPSJncmFkaWVudCI9PT1vP2E6InBhdHRlcm4iPT09bz9zOmM7cmV0dXJuIHQuc29saWQmJihpPWMpLGl9fSx7a2V5OiJnZXRGaWxsVHlwZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVybiBBcnJheS5pc0FycmF5KGUuY29uZmlnLmZpbGwudHlwZSk/ZS5jb25maWcuZmlsbC50eXBlW3RdOmUuY29uZmlnLmZpbGwudHlwZX19LHtrZXk6ImdldEZpbGxDb2xvcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5jb25maWcsaT10aGlzLm9wdHMscz1bXTtyZXR1cm4gdC5nbG9iYWxzLmNvbWJvQ2hhcnRzPyJsaW5lIj09PXQuY29uZmlnLnNlcmllc1t0aGlzLnNlcmllc0luZGV4XS50eXBlP0FycmF5LmlzQXJyYXkodC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpP3M9dC5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6cy5wdXNoKHQuZ2xvYmFscy5zdHJva2UuY29sb3JzKTpBcnJheS5pc0FycmF5KHQuZ2xvYmFscy5maWxsLmNvbG9ycyk/cz10Lmdsb2JhbHMuZmlsbC5jb2xvcnM6cy5wdXNoKHQuZ2xvYmFscy5maWxsLmNvbG9ycyk6ImxpbmUiPT09ZS5jaGFydC50eXBlP0FycmF5LmlzQXJyYXkodC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpP3M9dC5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6cy5wdXNoKHQuZ2xvYmFscy5zdHJva2UuY29sb3JzKTpBcnJheS5pc0FycmF5KHQuZ2xvYmFscy5maWxsLmNvbG9ycyk/cz10Lmdsb2JhbHMuZmlsbC5jb2xvcnM6cy5wdXNoKHQuZ2xvYmFscy5maWxsLmNvbG9ycyksdm9pZCAwIT09aS5maWxsQ29sb3JzJiYocz1bXSxBcnJheS5pc0FycmF5KGkuZmlsbENvbG9ycyk/cz1pLmZpbGxDb2xvcnMuc2xpY2UoKTpzLnB1c2goaS5maWxsQ29sb3JzKSksc319LHtrZXk6ImhhbmRsZVBhdHRlcm5GaWxsIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpbGxDb25maWcsaT0odC5wYXR0ZXJuRmlsbCx0LmZpbGxDb2xvcikscz10LmZpbGxPcGFjaXR5LGE9dC5kZWZhdWx0Q29sb3Isbj10aGlzLncuY29uZmlnLmZpbGw7ZSYmKG49ZSk7dmFyIHI9dGhpcy5vcHRzLG89bmV3IGsodGhpcy5jdHgpLGw9QXJyYXkuaXNBcnJheShuLnBhdHRlcm4uc3Ryb2tlV2lkdGgpP24ucGF0dGVybi5zdHJva2VXaWR0aFt0aGlzLnNlcmllc0luZGV4XTpuLnBhdHRlcm4uc3Ryb2tlV2lkdGgsYz1pO3JldHVybiBBcnJheS5pc0FycmF5KG4ucGF0dGVybi5zdHlsZSk/dm9pZCAwIT09bi5wYXR0ZXJuLnN0eWxlW3Iuc2VyaWVzTnVtYmVyXT9vLmRyYXdQYXR0ZXJuKG4ucGF0dGVybi5zdHlsZVtyLnNlcmllc051bWJlcl0sbi5wYXR0ZXJuLndpZHRoLG4ucGF0dGVybi5oZWlnaHQsYyxsLHMpOmE6by5kcmF3UGF0dGVybihuLnBhdHRlcm4uc3R5bGUsbi5wYXR0ZXJuLndpZHRoLG4ucGF0dGVybi5oZWlnaHQsYyxsLHMpfX0se2tleToiaGFuZGxlR3JhZGllbnRGaWxsIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpbGxDb2xvcixpPXQuZmlsbE9wYWNpdHkscz10LmZpbGxDb25maWcsYT10Lmkscj10aGlzLncuY29uZmlnLmZpbGw7cyYmKHI9bihuKHt9LHIpLHMpKTt2YXIgbyxsPXRoaXMub3B0cyxjPW5ldyBrKHRoaXMuY3R4KSxoPW5ldyBiLGQ9ci5ncmFkaWVudC50eXBlLHU9ZSxwPXZvaWQgMD09PXIuZ3JhZGllbnQub3BhY2l0eUZyb20/aTpBcnJheS5pc0FycmF5KHIuZ3JhZGllbnQub3BhY2l0eUZyb20pP3IuZ3JhZGllbnQub3BhY2l0eUZyb21bYV06ci5ncmFkaWVudC5vcGFjaXR5RnJvbTt1LmluZGV4T2YoInJnYmEiKT4tMSYmKHA9Yi5nZXRPcGFjaXR5RnJvbVJHQkEodSkpO3ZhciBnPXZvaWQgMD09PXIuZ3JhZGllbnQub3BhY2l0eVRvP2k6QXJyYXkuaXNBcnJheShyLmdyYWRpZW50Lm9wYWNpdHlUbyk/ci5ncmFkaWVudC5vcGFjaXR5VG9bYV06ci5ncmFkaWVudC5vcGFjaXR5VG87aWYodm9pZCAwPT09ci5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzfHwwPT09ci5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzLmxlbmd0aClvPSJkYXJrIj09PXIuZ3JhZGllbnQuc2hhZGU/aC5zaGFkZUNvbG9yKC0xKnBhcnNlRmxvYXQoci5ncmFkaWVudC5zaGFkZUludGVuc2l0eSksZS5pbmRleE9mKCJyZ2IiKT4tMT9iLnJnYjJoZXgoZSk6ZSk6aC5zaGFkZUNvbG9yKHBhcnNlRmxvYXQoci5ncmFkaWVudC5zaGFkZUludGVuc2l0eSksZS5pbmRleE9mKCJyZ2IiKT4tMT9iLnJnYjJoZXgoZSk6ZSk7ZWxzZSBpZihyLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnNbbC5zZXJpZXNOdW1iZXJdKXt2YXIgZj1yLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnNbbC5zZXJpZXNOdW1iZXJdO289ZixmLmluZGV4T2YoInJnYmEiKT4tMSYmKGc9Yi5nZXRPcGFjaXR5RnJvbVJHQkEoZikpfWVsc2Ugbz1lO2lmKHIuZ3JhZGllbnQuZ3JhZGllbnRGcm9tJiYodT1yLmdyYWRpZW50LmdyYWRpZW50RnJvbSksci5ncmFkaWVudC5ncmFkaWVudFRvJiYobz1yLmdyYWRpZW50LmdyYWRpZW50VG8pLHIuZ3JhZGllbnQuaW52ZXJzZUNvbG9ycyl7dmFyIG09dTt1PW8sbz1tfXJldHVybiB1LmluZGV4T2YoInJnYiIpPi0xJiYodT1iLnJnYjJoZXgodSkpLG8uaW5kZXhPZigicmdiIik+LTEmJihvPWIucmdiMmhleChvKSksYy5kcmF3R3JhZGllbnQoZCx1LG8scCxnLGwuc2l6ZSxyLmdyYWRpZW50LnN0b3BzLHIuZ3JhZGllbnQuY29sb3JTdG9wcyxhKX19XSksdH0oKSxCPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIGModCxbe2tleToic2V0R2xvYmFsTWFya2VyU2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodC5nbG9iYWxzLm1hcmtlcnMuc2l6ZT1BcnJheS5pc0FycmF5KHQuY29uZmlnLm1hcmtlcnMuc2l6ZSk/dC5jb25maWcubWFya2Vycy5zaXplOlt0LmNvbmZpZy5tYXJrZXJzLnNpemVdLHQuZ2xvYmFscy5tYXJrZXJzLnNpemUubGVuZ3RoPjApe2lmKHQuZ2xvYmFscy5tYXJrZXJzLnNpemUubGVuZ3RoPHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKzEpZm9yKHZhciBlPTA7ZTw9dC5nbG9iYWxzLnNlcmllcy5sZW5ndGg7ZSsrKXZvaWQgMD09PXQuZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0mJnQuZ2xvYmFscy5tYXJrZXJzLnNpemUucHVzaCh0Lmdsb2JhbHMubWFya2Vycy5zaXplWzBdKX1lbHNlIHQuZ2xvYmFscy5tYXJrZXJzLnNpemU9dC5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuY29uZmlnLm1hcmtlcnMuc2l6ZX0pKX19LHtrZXk6InBsb3RDaGFydE1hcmtlcnMiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhLG49YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0mJmFyZ3VtZW50c1s0XSxyPXRoaXMudyxvPWUsbD10LGM9bnVsbCxoPW5ldyBrKHRoaXMuY3R4KSxkPXIuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUmJnIuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoO2lmKChyLmdsb2JhbHMubWFya2Vycy5zaXplW2VdPjB8fG58fGQpJiYoYz1oLmdyb3VwKHtjbGFzczpufHxkPyIiOiJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIn0pKS5hdHRyKCJjbGlwLXBhdGgiLCJ1cmwoI2dyaWRSZWN0TWFya2VyTWFzayIuY29uY2F0KHIuZ2xvYmFscy5jdWlkLCIpIikpLEFycmF5LmlzQXJyYXkobC54KSlmb3IodmFyIHU9MDt1PGwueC5sZW5ndGg7dSsrKXt2YXIgcD1pOzE9PT1pJiYwPT09dSYmKHA9MCksMT09PWkmJjE9PT11JiYocD0xKTt2YXIgZz0iYXBleGNoYXJ0cy1tYXJrZXIiOyJsaW5lIiE9PXIuY29uZmlnLmNoYXJ0LnR5cGUmJiJhcmVhIiE9PXIuY29uZmlnLmNoYXJ0LnR5cGV8fHIuZ2xvYmFscy5jb21ib0NoYXJ0c3x8ci5jb25maWcudG9vbHRpcC5pbnRlcnNlY3R8fChnKz0iIG5vLXBvaW50ZXItZXZlbnRzIik7dmFyIGY9QXJyYXkuaXNBcnJheShyLmNvbmZpZy5tYXJrZXJzLnNpemUpP3IuZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0+MDpyLmNvbmZpZy5tYXJrZXJzLnNpemU+MDtpZihmfHxufHxkKXtiLmlzTnVtYmVyKGwueVt1XSk/Zys9IiB3Ii5jb25jYXQoYi5yYW5kb21JZCgpKTpnPSJhcGV4Y2hhcnRzLW51bGxwb2ludCI7dmFyIG09dGhpcy5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOmcsc2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDpwfSk7ci5jb25maWcuc2VyaWVzW29dLmRhdGFbcF0mJihyLmNvbmZpZy5zZXJpZXNbb10uZGF0YVtwXS5maWxsQ29sb3ImJihtLnBvaW50RmlsbENvbG9yPXIuY29uZmlnLnNlcmllc1tvXS5kYXRhW3BdLmZpbGxDb2xvciksci5jb25maWcuc2VyaWVzW29dLmRhdGFbcF0uc3Ryb2tlQ29sb3ImJihtLnBvaW50U3Ryb2tlQ29sb3I9ci5jb25maWcuc2VyaWVzW29dLmRhdGFbcF0uc3Ryb2tlQ29sb3IpKSxzJiYobS5wU2l6ZT1zKSwoYT1oLmRyYXdNYXJrZXIobC54W3VdLGwueVt1XSxtKSkuYXR0cigicmVsIixwKSxhLmF0dHIoImoiLHApLGEuYXR0cigiaW5kZXgiLGUpLGEubm9kZS5zZXRBdHRyaWJ1dGUoImRlZmF1bHQtbWFya2VyLXNpemUiLG0ucFNpemUpO3ZhciB2PW5ldyB3KHRoaXMuY3R4KTt2LnNldFNlbGVjdGlvbkZpbHRlcihhLGUscCksdGhpcy5hZGRFdmVudHMoYSksYyYmYy5hZGQoYSl9ZWxzZSB2b2lkIDA9PT1yLmdsb2JhbHMucG9pbnRzQXJyYXlbZV0mJihyLmdsb2JhbHMucG9pbnRzQXJyYXlbZV09W10pLHIuZ2xvYmFscy5wb2ludHNBcnJheVtlXS5wdXNoKFtsLnhbdV0sbC55W3VdXSl9cmV0dXJuIGN9fSx7a2V5OiJnZXRNYXJrZXJDb25maWciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY3NzQ2xhc3MsaT10LnNlcmllc0luZGV4LHM9dC5kYXRhUG9pbnRJbmRleCxhPXZvaWQgMD09PXM/bnVsbDpzLG49dC5maW5pc2hSYWRpdXMscj12b2lkIDA9PT1uP251bGw6bixvPXRoaXMudyxsPXRoaXMuZ2V0TWFya2VyU3R5bGUoaSksYz1vLmdsb2JhbHMubWFya2Vycy5zaXplW2ldLGg9by5jb25maWcubWFya2VycztyZXR1cm4gbnVsbCE9PWEmJmguZGlzY3JldGUubGVuZ3RoJiZoLmRpc2NyZXRlLm1hcCgoZnVuY3Rpb24odCl7dC5zZXJpZXNJbmRleD09PWkmJnQuZGF0YVBvaW50SW5kZXg9PT1hJiYobC5wb2ludFN0cm9rZUNvbG9yPXQuc3Ryb2tlQ29sb3IsbC5wb2ludEZpbGxDb2xvcj10LmZpbGxDb2xvcixjPXQuc2l6ZSxsLnBvaW50U2hhcGU9dC5zaGFwZSl9KSkse3BTaXplOm51bGw9PT1yP2M6cixwUmFkaXVzOmgucmFkaXVzLHdpZHRoOkFycmF5LmlzQXJyYXkoaC53aWR0aCk/aC53aWR0aFtpXTpoLndpZHRoLGhlaWdodDpBcnJheS5pc0FycmF5KGguaGVpZ2h0KT9oLmhlaWdodFtpXTpoLmhlaWdodCxwb2ludFN0cm9rZVdpZHRoOkFycmF5LmlzQXJyYXkoaC5zdHJva2VXaWR0aCk/aC5zdHJva2VXaWR0aFtpXTpoLnN0cm9rZVdpZHRoLHBvaW50U3Ryb2tlQ29sb3I6bC5wb2ludFN0cm9rZUNvbG9yLHBvaW50RmlsbENvbG9yOmwucG9pbnRGaWxsQ29sb3Isc2hhcGU6bC5wb2ludFNoYXBlfHwoQXJyYXkuaXNBcnJheShoLnNoYXBlKT9oLnNoYXBlW2ldOmguc2hhcGUpLGNsYXNzOmUscG9pbnRTdHJva2VPcGFjaXR5OkFycmF5LmlzQXJyYXkoaC5zdHJva2VPcGFjaXR5KT9oLnN0cm9rZU9wYWNpdHlbaV06aC5zdHJva2VPcGFjaXR5LHBvaW50U3Ryb2tlRGFzaEFycmF5OkFycmF5LmlzQXJyYXkoaC5zdHJva2VEYXNoQXJyYXkpP2guc3Ryb2tlRGFzaEFycmF5W2ldOmguc3Ryb2tlRGFzaEFycmF5LHBvaW50RmlsbE9wYWNpdHk6QXJyYXkuaXNBcnJheShoLmZpbGxPcGFjaXR5KT9oLmZpbGxPcGFjaXR5W2ldOmguZmlsbE9wYWNpdHksc2VyaWVzSW5kZXg6aX19fSx7a2V5OiJhZGRFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBrKHRoaXMuY3R4KTt0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsaS5wYXRoTW91c2VFbnRlci5iaW5kKHRoaXMuY3R4LHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsaS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMuY3R4LHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixpLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLmN0eCx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixlLmNvbmZpZy5tYXJrZXJzLm9uQ2xpY2spLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsZS5jb25maWcubWFya2Vycy5vbkRibENsaWNrKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsaS5wYXRoTW91c2VEb3duLmJpbmQodGhpcy5jdHgsdCkse3Bhc3NpdmU6ITB9KX19LHtrZXk6ImdldE1hcmtlclN0eWxlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmdsb2JhbHMubWFya2Vycy5jb2xvcnMscz1lLmNvbmZpZy5tYXJrZXJzLnN0cm9rZUNvbG9yfHxlLmNvbmZpZy5tYXJrZXJzLnN0cm9rZUNvbG9ycztyZXR1cm57cG9pbnRTdHJva2VDb2xvcjpBcnJheS5pc0FycmF5KHMpP3NbdF06cyxwb2ludEZpbGxDb2xvcjpBcnJheS5pc0FycmF5KGkpP2lbdF06aX19fV0pLHR9KCksWD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZH1yZXR1cm4gYyh0LFt7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy53LGE9bmV3IGsodGhpcy5jdHgpLG49aS5yZWFsSW5kZXgscj1pLnBvaW50c1BvcyxvPWkuelJhdGlvLGw9aS5lbFBhcmVudCxjPWEuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIGFwZXhjaGFydHMtc2VyaWVzLSIuY29uY2F0KHMuY29uZmlnLmNoYXJ0LnR5cGUpfSk7aWYoYy5hdHRyKCJjbGlwLXBhdGgiLCJ1cmwoI2dyaWRSZWN0TWFya2VyTWFzayIuY29uY2F0KHMuZ2xvYmFscy5jdWlkLCIpIikpLEFycmF5LmlzQXJyYXkoci54KSlmb3IodmFyIGg9MDtoPHIueC5sZW5ndGg7aCsrKXt2YXIgZD1lKzEsdT0hMDswPT09ZSYmMD09PWgmJihkPTApLDA9PT1lJiYxPT09aCYmKGQ9MSk7dmFyIHA9MCxnPXMuZ2xvYmFscy5tYXJrZXJzLnNpemVbbl07aWYobyE9PTEvMCl7dmFyIGY9cy5jb25maWcucGxvdE9wdGlvbnMuYnViYmxlO2c9cy5nbG9iYWxzLnNlcmllc1pbbl1bZF0sZi56U2NhbGluZyYmKGcvPW8pLGYubWluQnViYmxlUmFkaXVzJiZnPGYubWluQnViYmxlUmFkaXVzJiYoZz1mLm1pbkJ1YmJsZVJhZGl1cyksZi5tYXhCdWJibGVSYWRpdXMmJmc+Zi5tYXhCdWJibGVSYWRpdXMmJihnPWYubWF4QnViYmxlUmFkaXVzKX1zLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWR8fChwPWcpO3ZhciBtPXIueFtoXSx2PXIueVtoXTtpZihwPXB8fDAsbnVsbCE9PXYmJnZvaWQgMCE9PXMuZ2xvYmFscy5zZXJpZXNbbl1bZF18fCh1PSExKSx1KXt2YXIgeD10aGlzLmRyYXdQb2ludChtLHYscCxnLG4sZCxlKTtjLmFkZCh4KX1sLmFkZChjKX19fSx7a2V5OiJkcmF3UG9pbnQiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMsYSxuLHIpe3ZhciBvPXRoaXMudyxsPWEsYz1uZXcgeSh0aGlzLmN0eCksaD1uZXcgdyh0aGlzLmN0eCksZD1uZXcgXyh0aGlzLmN0eCksdT1uZXcgQih0aGlzLmN0eCkscD1uZXcgayh0aGlzLmN0eCksZz11LmdldE1hcmtlckNvbmZpZyh7Y3NzQ2xhc3M6ImFwZXhjaGFydHMtbWFya2VyIixzZXJpZXNJbmRleDpsLGRhdGFQb2ludEluZGV4Om4sZmluaXNoUmFkaXVzOiJidWJibGUiPT09by5jb25maWcuY2hhcnQudHlwZXx8by5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZvLmNvbmZpZy5zZXJpZXNbYV0mJiJidWJibGUiPT09by5jb25maWcuc2VyaWVzW2FdLnR5cGU/czpudWxsfSk7cz1nLnBTaXplO3ZhciBmLG09ZC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmEsZGF0YVBvaW50SW5kZXg6bixjb2xvcjpnLnBvaW50RmlsbENvbG9yLHBhdHRlcm5Vbml0czoib2JqZWN0Qm91bmRpbmdCb3giLHZhbHVlOm8uZ2xvYmFscy5zZXJpZXNbYV1bcl19KTtpZigiY2lyY2xlIj09PWcuc2hhcGU/Zj1wLmRyYXdDaXJjbGUoaSk6InNxdWFyZSIhPT1nLnNoYXBlJiYicmVjdCIhPT1nLnNoYXBlfHwoZj1wLmRyYXdSZWN0KDAsMCxnLndpZHRoLWcucG9pbnRTdHJva2VXaWR0aC8yLGcuaGVpZ2h0LWcucG9pbnRTdHJva2VXaWR0aC8yLGcucFJhZGl1cykpLG8uY29uZmlnLnNlcmllc1tsXS5kYXRhW25dJiZvLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtuXS5maWxsQ29sb3ImJihtPW8uY29uZmlnLnNlcmllc1tsXS5kYXRhW25dLmZpbGxDb2xvciksZi5hdHRyKHt4OnQtZy53aWR0aC8yLWcucG9pbnRTdHJva2VXaWR0aC8yLHk6ZS1nLmhlaWdodC8yLWcucG9pbnRTdHJva2VXaWR0aC8yLGN4OnQsY3k6ZSxmaWxsOm0sImZpbGwtb3BhY2l0eSI6Zy5wb2ludEZpbGxPcGFjaXR5LHN0cm9rZTpnLnBvaW50U3Ryb2tlQ29sb3IscjpzLCJzdHJva2Utd2lkdGgiOmcucG9pbnRTdHJva2VXaWR0aCwic3Ryb2tlLWRhc2hhcnJheSI6Zy5wb2ludFN0cm9rZURhc2hBcnJheSwic3Ryb2tlLW9wYWNpdHkiOmcucG9pbnRTdHJva2VPcGFjaXR5fSksby5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgdj1vLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O2guZHJvcFNoYWRvdyhmLHYsYSl9aWYoIXRoaXMuaW5pdGlhbEFuaW18fG8uZ2xvYmFscy5kYXRhQ2hhbmdlZHx8by5nbG9iYWxzLnJlc2l6ZWQpby5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwO2Vsc2V7dmFyIHg9by5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZDtjLmFuaW1hdGVNYXJrZXIoZiwwLCJjaXJjbGUiPT09Zy5zaGFwZT9zOnt3aWR0aDpnLndpZHRoLGhlaWdodDpnLmhlaWdodH0seCxvLmdsb2JhbHMuZWFzaW5nLChmdW5jdGlvbigpe3dpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2MuYW5pbWF0aW9uQ29tcGxldGVkKGYpfSksMTAwKX0pKX1pZihvLmdsb2JhbHMuZGF0YUNoYW5nZWQmJiJjaXJjbGUiPT09Zy5zaGFwZSlpZih0aGlzLmR5bmFtaWNBbmltKXt2YXIgYixTLEMsQSxFPW8uY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZDtudWxsIT0oQT1vLmdsb2JhbHMucHJldmlvdXNQYXRoc1thXSYmby5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV1bcl0pJiYoYj1BLngsUz1BLnksQz12b2lkIDAhPT1BLnI/QS5yOnMpO2Zvcih2YXIgVD0wO1Q8by5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg7VCsrKW8uZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbVF0uaW5kZXg9PT1hJiYoRT0xLHM9MCk7MD09PXQmJjA9PT1lJiYocz0wKSxjLmFuaW1hdGVDaXJjbGUoZix7Y3g6YixjeTpTLHI6Q30se2N4OnQsY3k6ZSxyOnN9LEUsby5nbG9iYWxzLmVhc2luZyl9ZWxzZSBmLmF0dHIoe3I6c30pO3JldHVybiBmLmF0dHIoe3JlbDpuLGo6bixpbmRleDphLCJkZWZhdWx0LW1hcmtlci1zaXplIjpzfSksaC5zZXRTZWxlY3Rpb25GaWx0ZXIoZixhLG4pLHUuYWRkRXZlbnRzKGYpLGYubm9kZS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLW1hcmtlciIpLGZ9fSx7a2V5OiJjZW50ZXJUZXh0SW5CdWJibGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm57eTp0Kz1wYXJzZUludChlLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS80fX19XSksdH0oKSxIPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBjKHQsW3trZXk6ImRhdGFMYWJlbHNDb3JyZWN0aW9uIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzLGEsbixyKXt2YXIgbz10aGlzLncsbD0hMSxjPW5ldyBrKHRoaXMuY3R4KS5nZXRUZXh0UmVjdHMoaSxyKSxoPWMud2lkdGgsZD1jLmhlaWdodDtlPDAmJihlPTApLGU+by5nbG9iYWxzLmdyaWRIZWlnaHQrZCYmKGU9by5nbG9iYWxzLmdyaWRIZWlnaHQrZC8yKSx2b2lkIDA9PT1vLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW3NdJiYoby5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1tzXT1bXSksby5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1tzXS5wdXNoKHt4OnQseTplLHdpZHRoOmgsaGVpZ2h0OmR9KTt2YXIgdT1vLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW3NdLmxlbmd0aC0yLHA9dm9pZCAwIT09by5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW3NdP28uZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tzXVtvLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbc10ubGVuZ3RoLTFdOjA7aWYodm9pZCAwIT09by5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1tzXVt1XSl7dmFyIGc9by5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1tzXVtwXTsodD5nLngrZy53aWR0aCsyfHxlPmcueStnLmhlaWdodCsyfHx0K2g8Zy54KSYmKGw9ITApfXJldHVybigwPT09YXx8bikmJihsPSEwKSx7eDp0LHk6ZSx0ZXh0UmVjdHM6YyxkcmF3bmV4dExhYmVsOmx9fX0se2tleToiZHJhd0RhdGFMYWJlbCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQudHlwZSxzPXQucG9zLGE9dC5pLG49dC5qLHI9dC5pc1JhbmdlU3RhcnQsbz10LnN0cm9rZVdpZHRoLGw9dm9pZCAwPT09bz8yOm8sYz10aGlzLncsaD1uZXcgayh0aGlzLmN0eCksZD1jLmNvbmZpZy5kYXRhTGFiZWxzLHU9MCxwPTAsZz1uLGY9bnVsbDtpZighZC5lbmFibGVkfHwhQXJyYXkuaXNBcnJheShzLngpKXJldHVybiBmO2Y9aC5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtZGF0YS1sYWJlbHMifSk7Zm9yKHZhciBtPTA7bTxzLngubGVuZ3RoO20rKylpZih1PXMueFttXStkLm9mZnNldFgscD1zLnlbbV0rZC5vZmZzZXRZK2wsIWlzTmFOKHUpKXsxPT09biYmMD09PW0mJihnPTApLDE9PT1uJiYxPT09bSYmKGc9MSk7dmFyIHY9Yy5nbG9iYWxzLnNlcmllc1thXVtnXTsicmFuZ2VBcmVhIj09PWkmJih2PXI/Yy5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbYV1bZ106Yy5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW2FdW2ddKTt2YXIgeD0iIixiPWZ1bmN0aW9uKHQpe3JldHVybiBjLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcih0LHtjdHg6ZS5jdHgsc2VyaWVzSW5kZXg6YSxkYXRhUG9pbnRJbmRleDpnLHc6Y30pfTsiYnViYmxlIj09PWMuY29uZmlnLmNoYXJ0LnR5cGU/KHg9Yih2PWMuZ2xvYmFscy5zZXJpZXNaW2FdW2ddKSxwPXMueVttXSxwPW5ldyBYKHRoaXMuY3R4KS5jZW50ZXJUZXh0SW5CdWJibGUocCxhLGcpLnkpOnZvaWQgMCE9PXYmJih4PWIodikpLHRoaXMucGxvdERhdGFMYWJlbHNUZXh0KHt4OnUseTpwLHRleHQ6eCxpOmEsajpnLHBhcmVudDpmLG9mZnNldENvcnJlY3Rpb246ITAsZGF0YUxhYmVsc0NvbmZpZzpjLmNvbmZpZy5kYXRhTGFiZWxzfSl9cmV0dXJuIGZ9fSx7a2V5OiJwbG90RGF0YUxhYmVsc1RleHQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBrKHRoaXMuY3R4KSxzPXQueCxhPXQueSxuPXQuaSxyPXQuaixvPXQudGV4dCxsPXQudGV4dEFuY2hvcixjPXQuZm9udFNpemUsaD10LnBhcmVudCxkPXQuZGF0YUxhYmVsc0NvbmZpZyx1PXQuY29sb3IscD10LmFsd2F5c0RyYXdEYXRhTGFiZWwsZz10Lm9mZnNldENvcnJlY3Rpb247aWYoIShBcnJheS5pc0FycmF5KGUuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZE9uU2VyaWVzKSYmZS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihuKTwwKSl7dmFyIGY9e3g6cyx5OmEsZHJhd25leHRMYWJlbDohMCx0ZXh0UmVjdHM6bnVsbH07ZyYmKGY9dGhpcy5kYXRhTGFiZWxzQ29ycmVjdGlvbihzLGEsbyxuLHIscCxwYXJzZUludChkLnN0eWxlLmZvbnRTaXplLDEwKSkpLGUuZ2xvYmFscy56b29tZWR8fChzPWYueCxhPWYueSksZi50ZXh0UmVjdHMmJihzPC0xMC1mLnRleHRSZWN0cy53aWR0aHx8cz5lLmdsb2JhbHMuZ3JpZFdpZHRoK2YudGV4dFJlY3RzLndpZHRoKzEwKSYmKG89IiIpO3ZhciBtPWUuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9yc1tuXTsoKCJiYXIiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8InJhbmdlQmFyIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUpJiZlLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWR8fGUuY29uZmlnLmRhdGFMYWJlbHMuZGlzdHJpYnV0ZWQpJiYobT1lLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnNbcl0pLCJmdW5jdGlvbiI9PXR5cGVvZiBtJiYobT1tKHtzZXJpZXM6ZS5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDpuLGRhdGFQb2ludEluZGV4OnIsdzplfSkpLHUmJihtPXUpO3ZhciB2PWQub2Zmc2V0WCx4PWQub2Zmc2V0WTtpZigiYmFyIiE9PWUuY29uZmlnLmNoYXJ0LnR5cGUmJiJyYW5nZUJhciIhPT1lLmNvbmZpZy5jaGFydC50eXBlfHwodj0wLHg9MCksZi5kcmF3bmV4dExhYmVsKXt2YXIgYj1pLmRyYXdUZXh0KHt3aWR0aDoxMDAsaGVpZ2h0OnBhcnNlSW50KGQuc3R5bGUuZm9udFNpemUsMTApLHg6cyt2LHk6YSt4LGZvcmVDb2xvcjptLHRleHRBbmNob3I6bHx8ZC50ZXh0QW5jaG9yLHRleHQ6byxmb250U2l6ZTpjfHxkLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6ZC5zdHlsZS5mb250V2VpZ2h0fHwibm9ybWFsIn0pO2lmKGIuYXR0cih7Y2xhc3M6ImFwZXhjaGFydHMtZGF0YWxhYmVsIixjeDpzLGN5OmF9KSxkLmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIHk9ZC5kcm9wU2hhZG93O25ldyB3KHRoaXMuY3R4KS5kcm9wU2hhZG93KGIseSl9aC5hZGQoYiksdm9pZCAwPT09ZS5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW25dJiYoZS5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW25dPVtdKSxlLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbbl0ucHVzaChyKX19fX0se2tleToiYWRkQmFja2dyb3VuZFRvRGF0YUxhYmVsIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPWkuY29uZmlnLmRhdGFMYWJlbHMuYmFja2dyb3VuZCxhPXMucGFkZGluZyxuPXMucGFkZGluZy8yLHI9ZS53aWR0aCxvPWUuaGVpZ2h0LGw9bmV3IGsodGhpcy5jdHgpLmRyYXdSZWN0KGUueC1hLGUueS1uLzIscisyKmEsbytuLHMuYm9yZGVyUmFkaXVzLCJ0cmFuc3BhcmVudCI9PT1pLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kPyIjZmZmIjppLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kLHMub3BhY2l0eSxzLmJvcmRlcldpZHRoLHMuYm9yZGVyQ29sb3IpO3JldHVybiBzLmRyb3BTaGFkb3cuZW5hYmxlZCYmbmV3IHcodGhpcy5jdHgpLmRyb3BTaGFkb3cobCxzLmRyb3BTaGFkb3cpLGx9fSx7a2V5OiJkYXRhTGFiZWxzQmFja2dyb3VuZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYoImJ1YmJsZSIhPT10LmNvbmZpZy5jaGFydC50eXBlKWZvcih2YXIgZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzIHRleHQiKSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBzPWVbaV0sYT1zLmdldEJCb3goKSxuPW51bGw7aWYoYS53aWR0aCYmYS5oZWlnaHQmJihuPXRoaXMuYWRkQmFja2dyb3VuZFRvRGF0YUxhYmVsKHMsYSkpLG4pe3MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobi5ub2RlLHMpO3ZhciByPXMuZ2V0QXR0cmlidXRlKCJmaWxsIik7IXQuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZHx8dC5nbG9iYWxzLnJlc2l6ZWR8fHQuZ2xvYmFscy5kYXRhQ2hhbmdlZD9uLmF0dHIoe2ZpbGw6cn0pOm4uYW5pbWF0ZSgpLmF0dHIoe2ZpbGw6cn0pLHMuc2V0QXR0cmlidXRlKCJmaWxsIix0LmNvbmZpZy5kYXRhTGFiZWxzLmJhY2tncm91bmQuZm9yZUNvbG9yKX19fX0se2tleToiYnJpbmdGb3J3YXJkIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzIiksaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1wbG90LXNlcmllczpsYXN0LWNoaWxkIikscz0wO3M8ZS5sZW5ndGg7cysrKWkmJmkuaW5zZXJ0QmVmb3JlKGVbc10saS5uZXh0U2libGluZyl9fV0pLHR9KCksWT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3M9ImxlZ2VuZC1tb3VzZW92ZXItaW5hY3RpdmUifXJldHVybiBjKHQsW3trZXk6ImdldEFsbFNlcmllc0VscyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhcGV4Y2hhcnRzLXNlcmllcyIpfX0se2tleToiZ2V0U2VyaWVzQnlOYW1lIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1pbm5lciAuYXBleGNoYXJ0cy1zZXJpZXNbc2VyaWVzTmFtZT0nIi5jb25jYXQoYi5lc2NhcGVTdHJpbmcodCksIiddIikpfX0se2tleToiaXNTZXJpZXNIaWRkZW4iLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0U2VyaWVzQnlOYW1lKHQpLGk9cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoImRhdGE6cmVhbEluZGV4IiksMTApO3JldHVybntpc0hpZGRlbjplLmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkIikscmVhbEluZGV4Oml9fX0se2tleToiYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7ZnVuY3Rpb24gcyhpKXtmb3IodmFyIHM9MDtzPGkubGVuZ3RoO3MrKylpW3NdLmluZGV4PT09ZSYmdC5ub2RlLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCIpfXMoaS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcykscyhpLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzKX19LHtrZXk6InRvZ2dsZVNlcmllcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc1Nlcmllc0hpZGRlbih0KTtyZXR1cm4gdGhpcy5jdHgubGVnZW5kLmxlZ2VuZEhlbHBlcnMudG9nZ2xlRGF0YVNlcmllcyhlLnJlYWxJbmRleCxlLmlzSGlkZGVuKSxlLmlzSGlkZGVufX0se2tleToic2hvd1NlcmllcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc1Nlcmllc0hpZGRlbih0KTtlLmlzSGlkZGVuJiZ0aGlzLmN0eC5sZWdlbmQubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKGUucmVhbEluZGV4LCEwKX19LHtrZXk6ImhpZGVTZXJpZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaXNTZXJpZXNIaWRkZW4odCk7ZS5pc0hpZGRlbnx8dGhpcy5jdHgubGVnZW5kLmxlZ2VuZEhlbHBlcnMudG9nZ2xlRGF0YVNlcmllcyhlLnJlYWxJbmRleCwhMSl9fSx7a2V5OiJyZXNldFNlcmllcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdLGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0scz10aGlzLncsYT1iLmNsb25lKHMuZ2xvYmFscy5pbml0aWFsU2VyaWVzKTtzLmdsb2JhbHMucHJldmlvdXNQYXRocz1bXSxpPyhzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzPVtdLHMuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXM9W10scy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXM9W10scy5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXM9W10pOmE9dGhpcy5lbXB0eUNvbGxhcHNlZFNlcmllcyhhKSxzLmNvbmZpZy5zZXJpZXM9YSx0JiYoZSYmKHMuZ2xvYmFscy56b29tZWQ9ITEsdGhpcy5jdHgudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpKSx0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMoYSxzLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCkpfX0se2tleToiZW1wdHlDb2xsYXBzZWRTZXJpZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT0wO2k8dC5sZW5ndGg7aSsrKWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoaSk+LTEmJih0W2ldLmRhdGE9W10pO3JldHVybiB0fX0se2tleToidG9nZ2xlU2VyaWVzT25Ib3ZlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7ZXx8KGU9dC50YXJnZXQpO3ZhciBzPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXNlcmllcywgLmFwZXhjaGFydHMtZGF0YWxhYmVscyIpO2lmKCJtb3VzZW1vdmUiPT09dC50eXBlKXt2YXIgYT1wYXJzZUludChlLmdldEF0dHJpYnV0ZSgicmVsIiksMTApLTEsbj1udWxsLHI9bnVsbDtpLmdsb2JhbHMuYXhpc0NoYXJ0c3x8InJhZGlhbEJhciI9PT1pLmNvbmZpZy5jaGFydC50eXBlP2kuZ2xvYmFscy5heGlzQ2hhcnRzPyhuPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFw6cmVhbEluZGV4PSciLmNvbmNhdChhLCInXSIpKSxyPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHNbZGF0YVxcOnJlYWxJbmRleD0nIi5jb25jYXQoYSwiJ10iKSkpOm49aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nIi5jb25jYXQoYSsxLCInXSIpKTpuPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9JyIuY29uY2F0KGErMSwiJ10gcGF0aCIpKTtmb3IodmFyIG89MDtvPHMubGVuZ3RoO28rKylzW29dLmNsYXNzTGlzdC5hZGQodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKTtudWxsIT09biYmKGkuZ2xvYmFscy5heGlzQ2hhcnRzfHxuLnBhcmVudE5vZGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpLG4uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpLG51bGwhPT1yJiZyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKSl9ZWxzZSBpZigibW91c2VvdXQiPT09dC50eXBlKWZvcih2YXIgbD0wO2w8cy5sZW5ndGg7bCsrKXNbbF0uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpfX0se2tleToiaGlnaGxpZ2h0UmFuZ2VJblNlcmllcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLHM9dGhpcy53LGE9cy5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYXBleGNoYXJ0cy1oZWF0bWFwLXJlY3QiKSxuPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8YS5sZW5ndGg7ZSsrKWFbZV0uY2xhc3NMaXN0W3RdKGkubGVnZW5kSW5hY3RpdmVDbGFzcyl9O2lmKCJtb3VzZW1vdmUiPT09dC50eXBlKXt2YXIgcj1wYXJzZUludChlLmdldEF0dHJpYnV0ZSgicmVsIiksMTApLTE7bigiYWRkIiksZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aDtlKyspe3ZhciBzPXBhcnNlSW50KGFbZV0uZ2V0QXR0cmlidXRlKCJ2YWwiKSwxMCk7cz49dC5mcm9tJiZzPD10LnRvJiZhW2VdLmNsYXNzTGlzdC5yZW1vdmUoaS5sZWdlbmRJbmFjdGl2ZUNsYXNzKX19KHMuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuY29sb3JTY2FsZS5yYW5nZXNbcl0pfWVsc2UibW91c2VvdXQiPT09dC50eXBlJiZuKCJyZW1vdmUiKX19LHtrZXk6ImdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiYXNjIixlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXSxpPXRoaXMudyxzPTA7aWYoaS5jb25maWcuc2VyaWVzLmxlbmd0aD4xKWZvcih2YXIgYT1pLmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LHMpe3JldHVybiB0LmRhdGEmJnQuZGF0YS5sZW5ndGg+MCYmLTE9PT1pLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHMpJiYoIWkuZ2xvYmFscy5jb21ib0NoYXJ0c3x8MD09PWUubGVuZ3RofHxlLmxlbmd0aCYmZS5pbmRleE9mKGkuY29uZmlnLnNlcmllc1tzXS50eXBlKT4tMSk/czotMX0pKSxuPSJhc2MiPT09dD8wOmEubGVuZ3RoLTE7ImFzYyI9PT10P248YS5sZW5ndGg6bj49MDsiYXNjIj09PXQ/bisrOm4tLSlpZigtMSE9PWFbbl0pe3M9YVtuXTticmVha31yZXR1cm4gc319LHtrZXk6ImdldEJhclNlcmllc0luZGljZXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmNvbWJvQ2hhcnRzP3RoaXMudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4iYmFyIj09PXQudHlwZXx8ImNvbHVtbiI9PT10LnR5cGU/ZTotMX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybi0xIT09dH0pKTp0aGlzLncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSl9fSx7a2V5OiJnZXRQcmV2aW91c1BhdGhzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztmdW5jdGlvbiBlKGUsaSxzKXtmb3IodmFyIGE9ZVtpXS5jaGlsZE5vZGVzLG49e3R5cGU6cyxwYXRoczpbXSxyZWFsSW5kZXg6ZVtpXS5nZXRBdHRyaWJ1dGUoImRhdGE6cmVhbEluZGV4Iil9LHI9MDtyPGEubGVuZ3RoO3IrKylpZihhW3JdLmhhc0F0dHJpYnV0ZSgicGF0aFRvIikpe3ZhciBvPWFbcl0uZ2V0QXR0cmlidXRlKCJwYXRoVG8iKTtuLnBhdGhzLnB1c2goe2Q6b30pfXQuZ2xvYmFscy5wcmV2aW91c1BhdGhzLnB1c2gobil9dC5nbG9iYWxzLnByZXZpb3VzUGF0aHM9W10sWyJsaW5lIiwiYXJlYSIsImJhciIsInJhbmdlYmFyIiwicmFuZ2VBcmVhIiwiY2FuZGxlc3RpY2siLCJyYWRhciJdLmZvckVhY2goKGZ1bmN0aW9uKGkpe2Zvcih2YXIgcyxhPShzPWksdC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtIi5jb25jYXQocywiLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXMiKSkpLG49MDtuPGEubGVuZ3RoO24rKyllKGEsbixpKX0pKSx0aGlzLmhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHMoImJ1YmJsZSIpLHRoaXMuaGFuZGxlUHJldkJ1YmJsZVNjYXR0ZXJQYXRocygic2NhdHRlciIpO3ZhciBpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLSIuY29uY2F0KHQuY29uZmlnLmNoYXJ0LnR5cGUsIiAuYXBleGNoYXJ0cy1zZXJpZXMiKSk7aWYoaS5sZW5ndGg+MClmb3IodmFyIHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciBpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLSIuY29uY2F0KHQuY29uZmlnLmNoYXJ0LnR5cGUsIiAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcOnJlYWxJbmRleD0nIikuY29uY2F0KGUsIiddIHJlY3QiKSkscz1bXSxhPWZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKGUpe3JldHVybiBpW3RdLmdldEF0dHJpYnV0ZShlKX0sYT17eDpwYXJzZUZsb2F0KGUoIngiKSkseTpwYXJzZUZsb2F0KGUoInkiKSksd2lkdGg6cGFyc2VGbG9hdChlKCJ3aWR0aCIpKSxoZWlnaHQ6cGFyc2VGbG9hdChlKCJoZWlnaHQiKSl9O3MucHVzaCh7cmVjdDphLGNvbG9yOmlbdF0uZ2V0QXR0cmlidXRlKCJjb2xvciIpfSl9LG49MDtuPGkubGVuZ3RoO24rKylhKG4pO3QuZ2xvYmFscy5wcmV2aW91c1BhdGhzLnB1c2gocyl9LGE9MDthPGkubGVuZ3RoO2ErKylzKGEpO3QuZ2xvYmFscy5heGlzQ2hhcnRzfHwodC5nbG9iYWxzLnByZXZpb3VzUGF0aHM9dC5nbG9iYWxzLnNlcmllcyl9fSx7a2V5OiJoYW5kbGVQcmV2QnViYmxlU2NhdHRlclBhdGhzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIuYXBleGNoYXJ0cy0iLmNvbmNhdCh0LCItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllcyIpKTtpZihpLmxlbmd0aD4wKWZvcih2YXIgcz0wO3M8aS5sZW5ndGg7cysrKXtmb3IodmFyIGE9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtIi5jb25jYXQodCwiLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcOnJlYWxJbmRleD0nIikuY29uY2F0KHMsIiddIGNpcmNsZSIpKSxuPVtdLHI9MDtyPGEubGVuZ3RoO3IrKyluLnB1c2goe3g6YVtyXS5nZXRBdHRyaWJ1dGUoImN4IikseTphW3JdLmdldEF0dHJpYnV0ZSgiY3kiKSxyOmFbcl0uZ2V0QXR0cmlidXRlKCJyIil9KTtlLmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKG4pfX19LHtrZXk6ImNsZWFyUHJldmlvdXNQYXRocyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLnByZXZpb3VzUGF0aHM9W10sdC5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZD0hMX19LHtrZXk6ImhhbmRsZU5vRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10LmNvbmZpZy5ub0RhdGEsaT1uZXcgayh0aGlzLmN0eCkscz10Lmdsb2JhbHMuc3ZnV2lkdGgvMixhPXQuZ2xvYmFscy5zdmdIZWlnaHQvMixuPSJtaWRkbGUiO2lmKHQuZ2xvYmFscy5ub0RhdGE9ITAsdC5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwLCJsZWZ0Ij09PWUuYWxpZ24/KHM9MTAsbj0ic3RhcnQiKToicmlnaHQiPT09ZS5hbGlnbiYmKHM9dC5nbG9iYWxzLnN2Z1dpZHRoLTEwLG49ImVuZCIpLCJ0b3AiPT09ZS52ZXJ0aWNhbEFsaWduP2E9NTA6ImJvdHRvbSI9PT1lLnZlcnRpY2FsQWxpZ24mJihhPXQuZ2xvYmFscy5zdmdIZWlnaHQtNTApLHMrPWUub2Zmc2V0WCxhPWErcGFyc2VJbnQoZS5zdHlsZS5mb250U2l6ZSwxMCkrMitlLm9mZnNldFksdm9pZCAwIT09ZS50ZXh0JiYiIiE9PWUudGV4dCl7dmFyIHI9aS5kcmF3VGV4dCh7eDpzLHk6YSx0ZXh0OmUudGV4dCx0ZXh0QW5jaG9yOm4sZm9udFNpemU6ZS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmUuc3R5bGUuZm9udEZhbWlseSxmb3JlQ29sb3I6ZS5zdHlsZS5jb2xvcixvcGFjaXR5OjEsY2xhc3M6ImFwZXhjaGFydHMtdGV4dC1ub2RhdGEifSk7dC5nbG9iYWxzLmRvbS5QYXBlci5hZGQocil9fX0se2tleToic2V0TnVsbFNlcmllc1RvWmVyb1ZhbHVlcyIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPTA7aTx0Lmxlbmd0aDtpKyspaWYoMD09PXRbaV0ubGVuZ3RoKWZvcih2YXIgcz0wO3M8dFtlLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO3MrKyl0W2ldLnB1c2goMCk7cmV0dXJuIHR9fSx7a2V5OiJoYXNBbGxTZXJpZXNFcXVhbFgiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PSEwLGU9dGhpcy53LGk9dGhpcy5maWx0ZXJlZFNlcmllc1goKSxzPTA7czxpLmxlbmd0aC0xO3MrKylpZihpW3NdWzBdIT09aVtzKzFdWzBdKXt0PSExO2JyZWFrfXJldHVybiBlLmdsb2JhbHMuYWxsU2VyaWVzSGFzRXF1YWxYPXQsdH19LHtrZXk6ImZpbHRlcmVkU2VyaWVzWCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuc2VyaWVzWC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aD4wP3Q6W119KSl9fV0pLHR9KCksVz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnR3b0RTZXJpZXM9W10sdGhpcy50aHJlZURTZXJpZXM9W10sdGhpcy50d29EU2VyaWVzWD1bXSx0aGlzLnNlcmllc0dvYWxzPVtdLHRoaXMuY29yZVV0aWxzPW5ldyBTKHRoaXMuY3R4KX1yZXR1cm4gYyh0LFt7a2V5OiJpc011bHRpRm9ybWF0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzRm9ybWF0WFkoKXx8dGhpcy5pc0Zvcm1hdDJEQXJyYXkoKX19LHtrZXk6ImlzRm9ybWF0WFkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSxlPW5ldyBZKHRoaXMuY3R4KTtpZih0aGlzLmFjdGl2ZVNlcmllc0luZGV4PWUuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKSx2b2lkIDAhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEmJnRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YS5sZW5ndGg+MCYmbnVsbCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSYmdm9pZCAwIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdLngmJm51bGwhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0pcmV0dXJuITB9fSx7a2V5OiJpc0Zvcm1hdDJEQXJyYXkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSxlPW5ldyBZKHRoaXMuY3R4KTtpZih0aGlzLmFjdGl2ZVNlcmllc0luZGV4PWUuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKSx2b2lkIDAhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEmJnRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YS5sZW5ndGg+MCYmdm9pZCAwIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdJiZudWxsIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdJiZ0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0uY29uc3RydWN0b3I9PT1BcnJheSlyZXR1cm4hMH19LHtrZXk6ImhhbmRsZUZvcm1hdDJEQXJyYXkiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXRoaXMudy5jb25maWcscz10aGlzLncuZ2xvYmFscyxhPSJib3hQbG90Ij09PWkuY2hhcnQudHlwZXx8ImJveFBsb3QiPT09aS5zZXJpZXNbZV0udHlwZSxuPTA7bjx0W2VdLmRhdGEubGVuZ3RoO24rKylpZih2b2lkIDAhPT10W2VdLmRhdGFbbl1bMV0mJihBcnJheS5pc0FycmF5KHRbZV0uZGF0YVtuXVsxXSkmJjQ9PT10W2VdLmRhdGFbbl1bMV0ubGVuZ3RoJiYhYT90aGlzLnR3b0RTZXJpZXMucHVzaChiLnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtuXVsxXVszXSkpOnRbZV0uZGF0YVtuXS5sZW5ndGg+PTU/dGhpcy50d29EU2VyaWVzLnB1c2goYi5wYXJzZU51bWJlcih0W2VdLmRhdGFbbl1bNF0pKTp0aGlzLnR3b0RTZXJpZXMucHVzaChiLnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtuXVsxXSkpLHMuZGF0YUZvcm1hdFhOdW1lcmljPSEwKSwiZGF0ZXRpbWUiPT09aS54YXhpcy50eXBlKXt2YXIgcj1uZXcgRGF0ZSh0W2VdLmRhdGFbbl1bMF0pO3I9bmV3IERhdGUocikuZ2V0VGltZSgpLHRoaXMudHdvRFNlcmllc1gucHVzaChyKX1lbHNlIHRoaXMudHdvRFNlcmllc1gucHVzaCh0W2VdLmRhdGFbbl1bMF0pO2Zvcih2YXIgbz0wO288dFtlXS5kYXRhLmxlbmd0aDtvKyspdm9pZCAwIT09dFtlXS5kYXRhW29dWzJdJiYodGhpcy50aHJlZURTZXJpZXMucHVzaCh0W2VdLmRhdGFbb11bMl0pLHMuaXNEYXRhWFlaPSEwKX19LHtrZXk6ImhhbmRsZUZvcm1hdFhZIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudy5jb25maWcscz10aGlzLncuZ2xvYmFscyxhPW5ldyBPKHRoaXMuY3R4KSxuPWU7cy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoZSk+LTEmJihuPXRoaXMuYWN0aXZlU2VyaWVzSW5kZXgpO2Zvcih2YXIgcj0wO3I8dFtlXS5kYXRhLmxlbmd0aDtyKyspdm9pZCAwIT09dFtlXS5kYXRhW3JdLnkmJihBcnJheS5pc0FycmF5KHRbZV0uZGF0YVtyXS55KT90aGlzLnR3b0RTZXJpZXMucHVzaChiLnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtyXS55W3RbZV0uZGF0YVtyXS55Lmxlbmd0aC0xXSkpOnRoaXMudHdvRFNlcmllcy5wdXNoKGIucGFyc2VOdW1iZXIodFtlXS5kYXRhW3JdLnkpKSksdm9pZCAwIT09dFtlXS5kYXRhW3JdLmdvYWxzJiZBcnJheS5pc0FycmF5KHRbZV0uZGF0YVtyXS5nb2Fscyk/KHZvaWQgMD09PXRoaXMuc2VyaWVzR29hbHNbZV0mJih0aGlzLnNlcmllc0dvYWxzW2VdPVtdKSx0aGlzLnNlcmllc0dvYWxzW2VdLnB1c2godFtlXS5kYXRhW3JdLmdvYWxzKSk6KHZvaWQgMD09PXRoaXMuc2VyaWVzR29hbHNbZV0mJih0aGlzLnNlcmllc0dvYWxzW2VdPVtdKSx0aGlzLnNlcmllc0dvYWxzW2VdLnB1c2gobnVsbCkpO2Zvcih2YXIgbz0wO288dFtuXS5kYXRhLmxlbmd0aDtvKyspe3ZhciBsPSJzdHJpbmciPT10eXBlb2YgdFtuXS5kYXRhW29dLngsYz1BcnJheS5pc0FycmF5KHRbbl0uZGF0YVtvXS54KSxoPSFjJiYhIWEuaXNWYWxpZERhdGUodFtuXS5kYXRhW29dLngudG9TdHJpbmcoKSk7aWYobHx8aClpZihsfHxpLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyl7dmFyIGQ9cy5pc0Jhckhvcml6b250YWwmJnMuaXNSYW5nZURhdGE7ImRhdGV0aW1lIiE9PWkueGF4aXMudHlwZXx8ZD8odGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnk9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbbl0uZGF0YVtvXS54KSk6dGhpcy50d29EU2VyaWVzWC5wdXNoKGEucGFyc2VEYXRlKHRbbl0uZGF0YVtvXS54KSl9ZWxzZSJkYXRldGltZSI9PT1pLnhheGlzLnR5cGU/dGhpcy50d29EU2VyaWVzWC5wdXNoKGEucGFyc2VEYXRlKHRbbl0uZGF0YVtvXS54LnRvU3RyaW5nKCkpKToocy5kYXRhRm9ybWF0WE51bWVyaWM9ITAscy5pc1hOdW1lcmljPSEwLHRoaXMudHdvRFNlcmllc1gucHVzaChwYXJzZUZsb2F0KHRbbl0uZGF0YVtvXS54KSkpO2Vsc2UgYz8odGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnk9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbbl0uZGF0YVtvXS54KSk6KHMuaXNYTnVtZXJpYz0hMCxzLmRhdGFGb3JtYXRYTnVtZXJpYz0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2godFtuXS5kYXRhW29dLngpKX1pZih0W2VdLmRhdGFbMF0mJnZvaWQgMCE9PXRbZV0uZGF0YVswXS56KXtmb3IodmFyIHU9MDt1PHRbZV0uZGF0YS5sZW5ndGg7dSsrKXRoaXMudGhyZWVEU2VyaWVzLnB1c2godFtlXS5kYXRhW3VdLnopO3MuaXNEYXRhWFlaPSEwfX19LHtrZXk6ImhhbmRsZVJhbmdlRGF0YSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuZ2xvYmFscyxzPXt9O3JldHVybiB0aGlzLmlzRm9ybWF0MkRBcnJheSgpP3M9dGhpcy5oYW5kbGVSYW5nZURhdGFGb3JtYXQoImFycmF5Iix0LGUpOnRoaXMuaXNGb3JtYXRYWSgpJiYocz10aGlzLmhhbmRsZVJhbmdlRGF0YUZvcm1hdCgieHkiLHQsZSkpLGkuc2VyaWVzUmFuZ2VTdGFydC5wdXNoKHMuc3RhcnQpLGkuc2VyaWVzUmFuZ2VFbmQucHVzaChzLmVuZCksaS5zZXJpZXNSYW5nZS5wdXNoKHMucmFuZ2VVbmlxdWVzKSxpLnNlcmllc1JhbmdlLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dCYmdC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QueS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe2Zvcih2YXIgcz0wO3M8dC55Lmxlbmd0aDtzKyspaWYoaSE9PXMpe3ZhciBhPWUueTEsbj1lLnkyLHI9dC55W3NdLnkxO2E8PXQueVtzXS55MiYmcjw9biYmKHQub3ZlcmxhcHMuaW5kZXhPZihlLnJhbmdlTmFtZSk8MCYmdC5vdmVybGFwcy5wdXNoKGUucmFuZ2VOYW1lKSx0Lm92ZXJsYXBzLmluZGV4T2YodC55W3NdLnJhbmdlTmFtZSk8MCYmdC5vdmVybGFwcy5wdXNoKHQueVtzXS5yYW5nZU5hbWUpKX19KSl9KSl9KSksc319LHtrZXk6ImhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuZ2xvYmFscyxzPXt9O3JldHVybiB0aGlzLmlzRm9ybWF0MkRBcnJheSgpP3M9dGhpcy5oYW5kbGVDYW5kbGVTdGlja0JveERhdGFGb3JtYXQoImFycmF5Iix0LGUpOnRoaXMuaXNGb3JtYXRYWSgpJiYocz10aGlzLmhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YUZvcm1hdCgieHkiLHQsZSkpLGkuc2VyaWVzQ2FuZGxlT1tlXT1zLm8saS5zZXJpZXNDYW5kbGVIW2VdPXMuaCxpLnNlcmllc0NhbmRsZU1bZV09cy5tLGkuc2VyaWVzQ2FuZGxlTFtlXT1zLmwsaS5zZXJpZXNDYW5kbGVDW2VdPXMuYyxzfX0se2tleToiaGFuZGxlUmFuZ2VEYXRhRm9ybWF0Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9W10sYT1bXSxuPWVbaV0uZGF0YS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZT09PWkuZmluZEluZGV4KChmdW5jdGlvbihlKXtyZXR1cm4gZS54PT09dC54fSkpfSkpLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm57eDp0Lngsb3ZlcmxhcHM6W10seTpbXX19KSk7aWYoImFycmF5Ij09PXQpZm9yKHZhciByPTA7cjxlW2ldLmRhdGEubGVuZ3RoO3IrKylBcnJheS5pc0FycmF5KGVbaV0uZGF0YVtyXSk/KHMucHVzaChlW2ldLmRhdGFbcl1bMV1bMF0pLGEucHVzaChlW2ldLmRhdGFbcl1bMV1bMV0pKToocy5wdXNoKGVbaV0uZGF0YVtyXSksYS5wdXNoKGVbaV0uZGF0YVtyXSkpO2Vsc2UgaWYoInh5Ij09PXQpZm9yKHZhciBvPWZ1bmN0aW9uKHQpe3ZhciByPUFycmF5LmlzQXJyYXkoZVtpXS5kYXRhW3RdLnkpLG89Yi5yYW5kb21JZCgpLGw9ZVtpXS5kYXRhW3RdLngsYz17eTE6cj9lW2ldLmRhdGFbdF0ueVswXTplW2ldLmRhdGFbdF0ueSx5MjpyP2VbaV0uZGF0YVt0XS55WzFdOmVbaV0uZGF0YVt0XS55LHJhbmdlTmFtZTpvfTtlW2ldLmRhdGFbdF0ucmFuZ2VOYW1lPW87dmFyIGg9bi5maW5kSW5kZXgoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lng9PT1sfSkpO25baF0ueS5wdXNoKGMpLHMucHVzaChjLnkxKSxhLnB1c2goYy55Mil9LGw9MDtsPGVbaV0uZGF0YS5sZW5ndGg7bCsrKW8obCk7cmV0dXJue3N0YXJ0OnMsZW5kOmEscmFuZ2VVbmlxdWVzOm59fX0se2tleToiaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhRm9ybWF0Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy53LGE9ImJveFBsb3QiPT09cy5jb25maWcuY2hhcnQudHlwZXx8ImJveFBsb3QiPT09cy5jb25maWcuc2VyaWVzW2ldLnR5cGUsbj1bXSxyPVtdLG89W10sbD1bXSxjPVtdO2lmKCJhcnJheSI9PT10KWlmKGEmJjY9PT1lW2ldLmRhdGFbMF0ubGVuZ3RofHwhYSYmNT09PWVbaV0uZGF0YVswXS5sZW5ndGgpZm9yKHZhciBoPTA7aDxlW2ldLmRhdGEubGVuZ3RoO2grKyluLnB1c2goZVtpXS5kYXRhW2hdWzFdKSxyLnB1c2goZVtpXS5kYXRhW2hdWzJdKSxhPyhvLnB1c2goZVtpXS5kYXRhW2hdWzNdKSxsLnB1c2goZVtpXS5kYXRhW2hdWzRdKSxjLnB1c2goZVtpXS5kYXRhW2hdWzVdKSk6KGwucHVzaChlW2ldLmRhdGFbaF1bM10pLGMucHVzaChlW2ldLmRhdGFbaF1bNF0pKTtlbHNlIGZvcih2YXIgZD0wO2Q8ZVtpXS5kYXRhLmxlbmd0aDtkKyspQXJyYXkuaXNBcnJheShlW2ldLmRhdGFbZF1bMV0pJiYobi5wdXNoKGVbaV0uZGF0YVtkXVsxXVswXSksci5wdXNoKGVbaV0uZGF0YVtkXVsxXVsxXSksYT8oby5wdXNoKGVbaV0uZGF0YVtkXVsxXVsyXSksbC5wdXNoKGVbaV0uZGF0YVtkXVsxXVszXSksYy5wdXNoKGVbaV0uZGF0YVtkXVsxXVs0XSkpOihsLnB1c2goZVtpXS5kYXRhW2RdWzFdWzJdKSxjLnB1c2goZVtpXS5kYXRhW2RdWzFdWzNdKSkpO2Vsc2UgaWYoInh5Ij09PXQpZm9yKHZhciB1PTA7dTxlW2ldLmRhdGEubGVuZ3RoO3UrKylBcnJheS5pc0FycmF5KGVbaV0uZGF0YVt1XS55KSYmKG4ucHVzaChlW2ldLmRhdGFbdV0ueVswXSksci5wdXNoKGVbaV0uZGF0YVt1XS55WzFdKSxhPyhvLnB1c2goZVtpXS5kYXRhW3VdLnlbMl0pLGwucHVzaChlW2ldLmRhdGFbdV0ueVszXSksYy5wdXNoKGVbaV0uZGF0YVt1XS55WzRdKSk6KGwucHVzaChlW2ldLmRhdGFbdV0ueVsyXSksYy5wdXNoKGVbaV0uZGF0YVt1XS55WzNdKSkpO3JldHVybntvOm4saDpyLG06byxsOmwsYzpjfX19LHtrZXk6InBhcnNlRGF0YUF4aXNDaGFydHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5jdHgscz10aGlzLncuY29uZmlnLGE9dGhpcy53Lmdsb2JhbHMsbj1uZXcgTyhpKSxyPXMubGFiZWxzLmxlbmd0aD4wP3MubGFiZWxzLnNsaWNlKCk6cy54YXhpcy5jYXRlZ29yaWVzLnNsaWNlKCk7YS5pc1JhbmdlQmFyPSJyYW5nZUJhciI9PT1zLmNoYXJ0LnR5cGUmJmEuaXNCYXJIb3Jpem9udGFsLGEuaGFzR3JvdXBzPSJjYXRlZ29yeSI9PT1zLnhheGlzLnR5cGUmJnMueGF4aXMuZ3JvdXAuZ3JvdXBzLmxlbmd0aD4wLGEuaGFzR3JvdXBzJiYoYS5ncm91cHM9cy54YXhpcy5ncm91cC5ncm91cHMpO2Zvcih2YXIgbz1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8ci5sZW5ndGg7dCsrKWlmKCJzdHJpbmciPT10eXBlb2Ygclt0XSl7aWYoIW4uaXNWYWxpZERhdGUoclt0XSkpdGhyb3cgbmV3IEVycm9yKCJZb3UgaGF2ZSBwcm92aWRlZCBpbnZhbGlkIERhdGUgZm9ybWF0LiBQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIEphdmFTY3JpcHQgRGF0ZSIpO2UudHdvRFNlcmllc1gucHVzaChuLnBhcnNlRGF0ZShyW3RdKSl9ZWxzZSBlLnR3b0RTZXJpZXNYLnB1c2goclt0XSl9LGw9MDtsPHQubGVuZ3RoO2wrKyl7aWYodGhpcy50d29EU2VyaWVzPVtdLHRoaXMudHdvRFNlcmllc1g9W10sdGhpcy50aHJlZURTZXJpZXM9W10sdm9pZCAwPT09dFtsXS5kYXRhKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIkl0IGlzIGEgcG9zc2liaWxpdHkgdGhhdCB5b3UgbWF5IGhhdmUgbm90IGluY2x1ZGVkICdkYXRhJyBwcm9wZXJ0eSBpbiBzZXJpZXMuIik7aWYoInJhbmdlQmFyIiE9PXMuY2hhcnQudHlwZSYmInJhbmdlQXJlYSIhPT1zLmNoYXJ0LnR5cGUmJiJyYW5nZUJhciIhPT10W2xdLnR5cGUmJiJyYW5nZUFyZWEiIT09dFtsXS50eXBlfHwoYS5pc1JhbmdlRGF0YT0hMCxhLmlzQ29tYm9DaGFydHM/InJhbmdlQmFyIiE9PXRbbF0udHlwZSYmInJhbmdlQXJlYSIhPT10W2xdLnR5cGV8fHRoaXMuaGFuZGxlUmFuZ2VEYXRhKHQsbCk6InJhbmdlQmFyIiE9PXMuY2hhcnQudHlwZSYmInJhbmdlQXJlYSIhPT1zLmNoYXJ0LnR5cGV8fHRoaXMuaGFuZGxlUmFuZ2VEYXRhKHQsbCkpLHRoaXMuaXNNdWx0aUZvcm1hdCgpKXRoaXMuaXNGb3JtYXQyREFycmF5KCk/dGhpcy5oYW5kbGVGb3JtYXQyREFycmF5KHQsbCk6dGhpcy5pc0Zvcm1hdFhZKCkmJnRoaXMuaGFuZGxlRm9ybWF0WFkodCxsKSwiY2FuZGxlc3RpY2siIT09cy5jaGFydC50eXBlJiYiY2FuZGxlc3RpY2siIT09dFtsXS50eXBlJiYiYm94UGxvdCIhPT1zLmNoYXJ0LnR5cGUmJiJib3hQbG90IiE9PXRbbF0udHlwZXx8dGhpcy5oYW5kbGVDYW5kbGVTdGlja0JveERhdGEodCxsKSxhLnNlcmllcy5wdXNoKHRoaXMudHdvRFNlcmllcyksYS5sYWJlbHMucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSxhLnNlcmllc1gucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSxhLnNlcmllc0dvYWxzPXRoaXMuc2VyaWVzR29hbHMsbCE9PXRoaXMuYWN0aXZlU2VyaWVzSW5kZXh8fHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5fHwoYS5pc1hOdW1lcmljPSEwKTtlbHNleyJkYXRldGltZSI9PT1zLnhheGlzLnR5cGU/KGEuaXNYTnVtZXJpYz0hMCxvKCksYS5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCkpOiJudW1lcmljIj09PXMueGF4aXMudHlwZSYmKGEuaXNYTnVtZXJpYz0hMCxyLmxlbmd0aD4wJiYodGhpcy50d29EU2VyaWVzWD1yLGEuc2VyaWVzWC5wdXNoKHRoaXMudHdvRFNlcmllc1gpKSksYS5sYWJlbHMucHVzaCh0aGlzLnR3b0RTZXJpZXNYKTt2YXIgYz10W2xdLmRhdGEubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gYi5wYXJzZU51bWJlcih0KX0pKTthLnNlcmllcy5wdXNoKGMpfWEuc2VyaWVzWi5wdXNoKHRoaXMudGhyZWVEU2VyaWVzKSx2b2lkIDAhPT10W2xdLm5hbWU/YS5zZXJpZXNOYW1lcy5wdXNoKHRbbF0ubmFtZSk6YS5zZXJpZXNOYW1lcy5wdXNoKCJzZXJpZXMtIitwYXJzZUludChsKzEsMTApKSx2b2lkIDAhPT10W2xdLmNvbG9yP2Euc2VyaWVzQ29sb3JzLnB1c2godFtsXS5jb2xvcik6YS5zZXJpZXNDb2xvcnMucHVzaCh2b2lkIDApfXJldHVybiB0aGlzLnd9fSx7a2V5OiJwYXJzZURhdGFOb25BeGlzQ2hhcnRzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWc7ZS5zZXJpZXM9dC5zbGljZSgpLGUuc2VyaWVzTmFtZXM9aS5sYWJlbHMuc2xpY2UoKTtmb3IodmFyIHM9MDtzPGUuc2VyaWVzLmxlbmd0aDtzKyspdm9pZCAwPT09ZS5zZXJpZXNOYW1lc1tzXSYmZS5zZXJpZXNOYW1lcy5wdXNoKCJzZXJpZXMtIisocysxKSk7cmV0dXJuIHRoaXMud319LHtrZXk6ImhhbmRsZUV4dGVybmFsTGFiZWxzRGF0YSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LmNvbmZpZyxpPXRoaXMudy5nbG9iYWxzO2UueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGg+MD9pLmxhYmVscz1lLnhheGlzLmNhdGVnb3JpZXM6ZS5sYWJlbHMubGVuZ3RoPjA/aS5sYWJlbHM9ZS5sYWJlbHMuc2xpY2UoKTp0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeT8oaS5sYWJlbHM9aS5sYWJlbHNbMF0saS5zZXJpZXNSYW5nZS5sZW5ndGgmJihpLnNlcmllc1JhbmdlLm1hcCgoZnVuY3Rpb24odCl7dC5mb3JFYWNoKChmdW5jdGlvbih0KXtpLmxhYmVscy5pbmRleE9mKHQueCk8MCYmdC54JiZpLmxhYmVscy5wdXNoKHQueCl9KSl9KSksaS5sYWJlbHM9aS5sYWJlbHMuZmlsdGVyKChmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGkuaW5kZXhPZih0KT09PWV9KSkpLGUueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYobmV3IEQoZSkuY29udmVydENhdFRvTnVtZXJpY1hheGlzKGUsdGhpcy5jdHgsaS5zZXJpZXNYWzBdKSx0aGlzLl9nZW5lcmF0ZUV4dGVybmFsTGFiZWxzKHQpKSk6dGhpcy5fZ2VuZXJhdGVFeHRlcm5hbExhYmVscyh0KX19LHtrZXk6Il9nZW5lcmF0ZUV4dGVybmFsTGFiZWxzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWcscz1bXTtpZihlLmF4aXNDaGFydHMpe2lmKGUuc2VyaWVzLmxlbmd0aD4wKWlmKHRoaXMuaXNGb3JtYXRYWSgpKWZvcih2YXIgYT1pLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGF0YS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gaS5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpe3JldHVybiBlLng9PT10Lnh9KSk9PT1lfSkpfSkpLG49YS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSxpLHMpe3JldHVybiBzW3RdLmxlbmd0aD5lLmxlbmd0aD90Oml9KSwwKSxyPTA7cjxhW25dLmxlbmd0aDtyKyspcy5wdXNoKHIrMSk7ZWxzZSBmb3IodmFyIG89MDtvPGUuc2VyaWVzW2UubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO28rKylzLnB1c2gobysxKTtlLnNlcmllc1g9W107Zm9yKHZhciBsPTA7bDx0Lmxlbmd0aDtsKyspZS5zZXJpZXNYLnB1c2gocyk7ZS5pc1hOdW1lcmljPSEwfWlmKDA9PT1zLmxlbmd0aCl7cz1lLmF4aXNDaGFydHM/W106ZS5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBlKzF9KSk7Zm9yKHZhciBjPTA7Yzx0Lmxlbmd0aDtjKyspZS5zZXJpZXNYLnB1c2gocyl9ZS5sYWJlbHM9cyxpLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGUuY2F0ZWdvcnlMYWJlbHM9cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBpLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIodCl9KSkpLGUubm9MYWJlbHNQcm92aWRlZD0hMH19LHtrZXk6InBhcnNlRGF0YSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5jb25maWcscz1lLmdsb2JhbHM7aWYodGhpcy5leGNsdWRlQ29sbGFwc2VkU2VyaWVzSW5ZQXhpcygpLHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5PSExLHRoaXMuY3R4LmNvcmUucmVzZXRHbG9iYWxzKCksdGhpcy5jdHguY29yZS5pc011bHRpcGxlWSgpLHMuYXhpc0NoYXJ0cz8odGhpcy5wYXJzZURhdGFBeGlzQ2hhcnRzKHQpLHRoaXMuY29yZVV0aWxzLmdldExhcmdlc3RTZXJpZXMoKSk6dGhpcy5wYXJzZURhdGFOb25BeGlzQ2hhcnRzKHQpLCJiYXIiPT09aS5jaGFydC50eXBlJiZpLmNoYXJ0LnN0YWNrZWQpe3ZhciBhPW5ldyBZKHRoaXMuY3R4KTtzLnNlcmllcz1hLnNldE51bGxTZXJpZXNUb1plcm9WYWx1ZXMocy5zZXJpZXMpfXRoaXMuY29yZVV0aWxzLmdldFNlcmllc1RvdGFscygpLHMuYXhpc0NoYXJ0cyYmKHMuc3RhY2tlZFNlcmllc1RvdGFscz10aGlzLmNvcmVVdGlscy5nZXRTdGFja2VkU2VyaWVzVG90YWxzKCkpLHRoaXMuY29yZVV0aWxzLmdldFBlcmNlbnRTZXJpZXMoKSxzLmRhdGFGb3JtYXRYTnVtZXJpY3x8cy5pc1hOdW1lcmljJiYoIm51bWVyaWMiIT09aS54YXhpcy50eXBlfHwwIT09aS5sYWJlbHMubGVuZ3RofHwwIT09aS54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aCl8fHRoaXMuaGFuZGxlRXh0ZXJuYWxMYWJlbHNEYXRhKHQpO2Zvcih2YXIgbj10aGlzLmNvcmVVdGlscy5nZXRDYXRlZ29yeUxhYmVscyhzLmxhYmVscykscj0wO3I8bi5sZW5ndGg7cisrKWlmKEFycmF5LmlzQXJyYXkobltyXSkpe3MuaXNNdWx0aUxpbmVYPSEwO2JyZWFrfX19LHtrZXk6ImV4Y2x1ZGVDb2xsYXBzZWRTZXJpZXNJbllBeGlzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLnc7ZS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcz1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLm1hcCgoZnVuY3Rpb24oaSxzKXtpZih0LncuZ2xvYmFscy5pc011bHRpcGxlWUF4aXMmJiFlLmNvbmZpZy5jaGFydC5zdGFja2VkKXJldHVybiBpLmluZGV4fSkpfX1dKSx0fSgpLCQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy50b29sdGlwS2V5Rm9ybWF0PSJkZCBNTU0ifXJldHVybiBjKHQsW3trZXk6InhMYWJlbEZvcm1hdCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyl7dmFyIGE9dGhpcy53O2lmKCJkYXRldGltZSI9PT1hLmNvbmZpZy54YXhpcy50eXBlJiZ2b2lkIDA9PT1hLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyJiZ2b2lkIDA9PT1hLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKXt2YXIgbj1uZXcgTyh0aGlzLmN0eCk7cmV0dXJuIG4uZm9ybWF0RGF0ZShuLmdldERhdGUoZSksYS5jb25maWcudG9vbHRpcC54LmZvcm1hdCl9cmV0dXJuIHQoZSxpLHMpfX0se2tleToiZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKTp0fX0se2tleToiZGVmYXVsdFlGb3JtYXR0ZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLnc7cmV0dXJuIGIuaXNOdW1iZXIodCkmJih0PTAhPT1zLmdsb2JhbHMueVZhbHVlRGVjaW1hbD90LnRvRml4ZWQodm9pZCAwIT09ZS5kZWNpbWFsc0luRmxvYXQ/ZS5kZWNpbWFsc0luRmxvYXQ6cy5nbG9iYWxzLnlWYWx1ZURlY2ltYWwpOnMuZ2xvYmFscy5tYXhZQXJyW2ldLXMuZ2xvYmFscy5taW5ZQXJyW2ldPDU/dC50b0ZpeGVkKDEpOnQudG9GaXhlZCgwKSksdH19LHtrZXk6InNldExhYmVsRm9ybWF0dGVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53O3JldHVybiBlLmdsb2JhbHMueGF4aXNUb29sdGlwRm9ybWF0dGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0LmRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyKGUpfSxlLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoZSl9LGUuZ2xvYmFscy50dFpGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoZSl9LHZvaWQgMCE9PWUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXI/ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcj1lLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyOmUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7aWYoYi5pc051bWJlcih0KSl7aWYoIWUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmIm51bWVyaWMiPT09ZS5jb25maWcueGF4aXMudHlwZSl7aWYoYi5pc051bWJlcihlLmNvbmZpZy54YXhpcy5kZWNpbWFsc0luRmxvYXQpKXJldHVybiB0LnRvRml4ZWQoZS5jb25maWcueGF4aXMuZGVjaW1hbHNJbkZsb2F0KTt2YXIgaT1lLmdsb2JhbHMubWF4WC1lLmdsb2JhbHMubWluWDtyZXR1cm4gaT4wJiZpPDEwMD90LnRvRml4ZWQoMSk6dC50b0ZpeGVkKDApfXJldHVybiBlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZlLmdsb2JhbHMubWF4WS1lLmdsb2JhbHMubWluWUFycjw0P3QudG9GaXhlZCgxKTp0LnRvRml4ZWQoMCl9cmV0dXJuIHR9LCJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyP2UuZ2xvYmFscy50dEtleUZvcm1hdHRlcj1lLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyOmUuZ2xvYmFscy50dEtleUZvcm1hdHRlcj1lLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyLCJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbmZpZy54YXhpcy50b29sdGlwLmZvcm1hdHRlciYmKGUuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXI9ZS5jb25maWcueGF4aXMudG9vbHRpcC5mb3JtYXR0ZXIpLChBcnJheS5pc0FycmF5KGUuY29uZmlnLnRvb2x0aXAueSl8fHZvaWQgMCE9PWUuY29uZmlnLnRvb2x0aXAueS5mb3JtYXR0ZXIpJiYoZS5nbG9iYWxzLnR0VmFsPWUuY29uZmlnLnRvb2x0aXAueSksdm9pZCAwIT09ZS5jb25maWcudG9vbHRpcC56LmZvcm1hdHRlciYmKGUuZ2xvYmFscy50dFpGb3JtYXR0ZXI9ZS5jb25maWcudG9vbHRpcC56LmZvcm1hdHRlciksdm9pZCAwIT09ZS5jb25maWcubGVnZW5kLmZvcm1hdHRlciYmKGUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXI9ZS5jb25maWcubGVnZW5kLmZvcm1hdHRlciksZS5jb25maWcueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oaSxzKXt2b2lkIDAhPT1pLmxhYmVscy5mb3JtYXR0ZXI/ZS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbc109aS5sYWJlbHMuZm9ybWF0dGVyOmUuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3NdPWZ1bmN0aW9uKGEpe3JldHVybiBlLmdsb2JhbHMueHlDaGFydHM/QXJyYXkuaXNBcnJheShhKT9hLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdFlGb3JtYXR0ZXIoZSxpLHMpfSkpOnQuZGVmYXVsdFlGb3JtYXR0ZXIoYSxpLHMpOmF9fSkpLGUuZ2xvYmFsc319LHtrZXk6ImhlYXRtYXBMYWJlbEZvcm1hdHRlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKCJoZWF0bWFwIj09PXQuY29uZmlnLmNoYXJ0LnR5cGUpe3QuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdD10Lmdsb2JhbHMuc2VyaWVzTmFtZXMuc2xpY2UoKTt2YXIgZT10Lmdsb2JhbHMuc2VyaWVzTmFtZXMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD5lLmxlbmd0aD90OmV9KSwwKTt0Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWF4PWUsdC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbj1lfX19XSksdH0oKSxWPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBjKHQsW3trZXk6ImdldExhYmVsIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06W10sbj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06IjEycHgiLHI9IShhcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XSl8fGFyZ3VtZW50c1s2XSxvPXRoaXMudyxsPXZvaWQgMD09PXRbc10/IiI6dFtzXSxjPWwsaD1vLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyLGQ9by5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcix1PSExLHA9bmV3ICQodGhpcy5jdHgpLGc9bDtyJiYoYz1wLnhMYWJlbEZvcm1hdChoLGwsZyx7aTpzLGRhdGVGb3JtYXR0ZXI6bmV3IE8odGhpcy5jdHgpLmZvcm1hdERhdGUsdzpvfSksdm9pZCAwIT09ZCYmKGM9ZChsLHRbc10se2k6cyxkYXRlRm9ybWF0dGVyOm5ldyBPKHRoaXMuY3R4KS5mb3JtYXREYXRlLHc6b30pKSk7dmFyIGY9ZnVuY3Rpb24odCl7dmFyIGk9bnVsbDtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0KXsibW9udGgiPT09dC51bml0P2k9InllYXIiOiJkYXkiPT09dC51bml0P2k9Im1vbnRoIjoiaG91ciI9PT10LnVuaXQ/aT0iZGF5IjoibWludXRlIj09PXQudW5pdCYmKGk9ImhvdXIiKX0pKSxpPT09dH07ZS5sZW5ndGg+MD8odT1mKGVbc10udW5pdCksaT1lW3NdLnBvc2l0aW9uLGM9ZVtzXS52YWx1ZSk6ImRhdGV0aW1lIj09PW8uY29uZmlnLnhheGlzLnR5cGUmJnZvaWQgMD09PWQmJihjPSIiKSx2b2lkIDA9PT1jJiYoYz0iIiksYz1BcnJheS5pc0FycmF5KGMpP2M6Yy50b1N0cmluZygpO3ZhciBtPW5ldyBrKHRoaXMuY3R4KSx2PXt9O3Y9by5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJnI/bS5nZXRUZXh0UmVjdHMoYyxwYXJzZUludChuLDEwKSxudWxsLCJyb3RhdGUoIi5jb25jYXQoby5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSwiIDAgMCkiKSwhMSk6bS5nZXRUZXh0UmVjdHMoYyxwYXJzZUludChuLDEwKSk7dmFyIHg9IW8uY29uZmlnLnhheGlzLmxhYmVscy5zaG93RHVwbGljYXRlcyYmdGhpcy5jdHgudGltZVNjYWxlO3JldHVybiFBcnJheS5pc0FycmF5KGMpJiYoMD09PWMuaW5kZXhPZigiTmFOIil8fDA9PT1jLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiaW52YWxpZCIpfHxjLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiaW5maW5pdHkiKT49MHx8YS5pbmRleE9mKGMpPj0wJiZ4KSYmKGM9IiIpLHt4OmksdGV4dDpjLHRleHRSZWN0OnYsaXNCb2xkOnV9fX0se2tleToiY2hlY2tMYWJlbEJhc2VkT25UaWNrYW1vdW50Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy53LGE9cy5jb25maWcueGF4aXMudGlja0Ftb3VudDtyZXR1cm4iZGF0YVBvaW50cyI9PT1hJiYoYT1NYXRoLnJvdW5kKHMuZ2xvYmFscy5ncmlkV2lkdGgvMTIwKSksYT5pfHx0JU1hdGgucm91bmQoaS8oYSsxKSk9PTB8fChlLnRleHQ9IiIpLGV9fSx7a2V5OiJjaGVja0Zvck92ZXJmbG93aW5nTGFiZWxzIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzLGEpe3ZhciBuPXRoaXMudztpZigwPT09dCYmbi5nbG9iYWxzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWwmJihlLnRleHQ9IiIpLHQ9PT1pLTEmJm4uZ2xvYmFscy5za2lwTGFzdFRpbWVsaW5lbGFiZWwmJihlLnRleHQ9IiIpLG4uY29uZmlnLnhheGlzLmxhYmVscy5oaWRlT3ZlcmxhcHBpbmdMYWJlbHMmJnMubGVuZ3RoPjApe3ZhciByPWFbYS5sZW5ndGgtMV07ZS54PHIudGV4dFJlY3Qud2lkdGgvKG4uZ2xvYmFscy5yb3RhdGVYTGFiZWxzP01hdGguYWJzKG4uY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUpLzEyOjEuMDEpK3IueCYmKGUudGV4dD0iIil9cmV0dXJuIGV9fSx7a2V5OiJjaGVja0ZvclJldmVyc2VkTGFiZWxzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm4gaS5jb25maWcueWF4aXNbdF0mJmkuY29uZmlnLnlheGlzW3RdLnJldmVyc2VkJiZlLnJldmVyc2UoKSxlfX0se2tleToiaXNZQXhpc0hpZGRlbiIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IFModGhpcy5jdHgpO3JldHVybiFlLmNvbmZpZy55YXhpc1t0XS5zaG93fHwhZS5jb25maWcueWF4aXNbdF0uc2hvd0Zvck51bGxTZXJpZXMmJmkuaXNTZXJpZXNOdWxsKHQpJiYtMT09PWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodCl9fSx7a2V5OiJnZXRZQXhpc0ZvcmVDb2xvciIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJmkuZ2xvYmFscy55QXhpc1NjYWxlW2VdJiZ0aGlzLmN0eC50aGVtZS5wdXNoRXh0cmFDb2xvcnModCxpLmdsb2JhbHMueUF4aXNTY2FsZVtlXS5yZXN1bHQubGVuZ3RoLCExKSx0fX0se2tleToiZHJhd1lBeGlzVGlja3MiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMsYSxuLHIpe3ZhciBvPXRoaXMudyxsPW5ldyBrKHRoaXMuY3R4KSxjPW8uZ2xvYmFscy50cmFuc2xhdGVZO2lmKHMuc2hvdyYmZT4wKXshMD09PW8uY29uZmlnLnlheGlzW2FdLm9wcG9zaXRlJiYodCs9cy53aWR0aCk7Zm9yKHZhciBoPWU7aD49MDtoLS0pe3ZhciBkPWMrZS8xMCtvLmNvbmZpZy55YXhpc1thXS5sYWJlbHMub2Zmc2V0WS0xO28uZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihkPW4qaCksImhlYXRtYXAiPT09by5jb25maWcuY2hhcnQudHlwZSYmKGQrPW4vMik7dmFyIHU9bC5kcmF3TGluZSh0K2kub2Zmc2V0WC1zLndpZHRoK3Mub2Zmc2V0WCxkK3Mub2Zmc2V0WSx0K2kub2Zmc2V0WCtzLm9mZnNldFgsZCtzLm9mZnNldFkscy5jb2xvcik7ci5hZGQodSksYys9bn19fX1dKSx0fSgpLGo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIGModCxbe2tleToic2NhbGVTdmdOb2RlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIpKSxzPXBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiKSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIsaSplKSx0LnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIscyplKSx0LnNldEF0dHJpYnV0ZU5TKG51bGwsInZpZXdCb3giLCIwIDAgIitpKyIgIitzKX19LHtrZXk6ImZpeFN2Z1N0cmluZ0ZvckllMTEiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCFiLmlzSUUxMSgpKXJldHVybiB0LnJlcGxhY2UoLyZuYnNwOy9nLCImIzE2MDsiKTt2YXIgZT0wLGk9dC5yZXBsYWNlKC94bWxucz0iaHR0cDpcL1wvd3d3LnczLm9yZ1wvMjAwMFwvc3ZnIi9nLChmdW5jdGlvbih0KXtyZXR1cm4gMj09KytlPyd4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6c3ZnanM9Imh0dHA6Ly9zdmdqcy5kZXYiJzp0fSkpO3JldHVybihpPWkucmVwbGFjZSgveG1sbnM6TlNcZCs9IiIvZywiIikpLnJlcGxhY2UoL05TXGQrOihcdys6XHcrPSIpL2csIiQxIil9fSx7a2V5OiJnZXRTdmdTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKHQpe251bGw9PXQmJih0PTEpO3ZhciBlPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5zdmcoKTtpZigxIT09dCl7dmFyIGk9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLm5vZGUuY2xvbmVOb2RlKCEwKTt0aGlzLnNjYWxlU3ZnTm9kZShpLHQpLGU9KG5ldyBYTUxTZXJpYWxpemVyKS5zZXJpYWxpemVUb1N0cmluZyhpKX1yZXR1cm4gdGhpcy5maXhTdmdTdHJpbmdGb3JJZTExKGUpfX0se2tleToiY2xlYW51cCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhcGV4Y2hhcnRzLXhjcm9zc2hhaXJzIiksaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhcGV4Y2hhcnRzLXljcm9zc2hhaXJzIikscz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIuYXBleGNoYXJ0cy16b29tLXJlY3QsIC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0Iik7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChzLChmdW5jdGlvbih0KXt0LnNldEF0dHJpYnV0ZSgid2lkdGgiLDApfSkpLGUmJmVbMF0mJihlWzBdLnNldEF0dHJpYnV0ZSgieCIsLTUwMCksZVswXS5zZXRBdHRyaWJ1dGUoIngxIiwtNTAwKSxlWzBdLnNldEF0dHJpYnV0ZSgieDIiLC01MDApKSxpJiZpWzBdJiYoaVswXS5zZXRBdHRyaWJ1dGUoInkiLC0xMDApLGlbMF0uc2V0QXR0cmlidXRlKCJ5MSIsLTEwMCksaVswXS5zZXRBdHRyaWJ1dGUoInkyIiwtMTAwKSl9fSx7a2V5OiJzdmdVcmwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbGVhbnVwKCk7dmFyIHQ9dGhpcy5nZXRTdmdTdHJpbmcoKSxlPW5ldyBCbG9iKFt0XSx7dHlwZToiaW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04In0pO3JldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKGUpfX0se2tleToiZGF0YVVSSSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGkpe3ZhciBzPWUudyxhPXQ/dC5zY2FsZXx8dC53aWR0aC9zLmdsb2JhbHMuc3ZnV2lkdGg6MTtlLmNsZWFudXAoKTt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtuLndpZHRoPXMuZ2xvYmFscy5zdmdXaWR0aCphLG4uaGVpZ2h0PXBhcnNlSW50KHMuZ2xvYmFscy5kb20uZWxXcmFwLnN0eWxlLmhlaWdodCwxMCkqYTt2YXIgcj0idHJhbnNwYXJlbnQiPT09cy5jb25maWcuY2hhcnQuYmFja2dyb3VuZD8iI2ZmZiI6cy5jb25maWcuY2hhcnQuYmFja2dyb3VuZCxvPW4uZ2V0Q29udGV4dCgiMmQiKTtvLmZpbGxTdHlsZT1yLG8uZmlsbFJlY3QoMCwwLG4ud2lkdGgqYSxuLmhlaWdodCphKTt2YXIgbD1lLmdldFN2Z1N0cmluZyhhKTtpZih3aW5kb3cuY2FudmcmJmIuaXNJRTExKCkpe3ZhciBjPXdpbmRvdy5jYW52Zy5DYW52Zy5mcm9tU3RyaW5nKG8sbCx7aWdub3JlQ2xlYXI6ITAsaWdub3JlRGltZW5zaW9uczohMH0pO2Muc3RhcnQoKTt2YXIgaD1uLm1zVG9CbG9iKCk7Yy5zdG9wKCksaSh7YmxvYjpofSl9ZWxzZXt2YXIgZD0iZGF0YTppbWFnZS9zdmcreG1sLCIrZW5jb2RlVVJJQ29tcG9uZW50KGwpLHU9bmV3IEltYWdlO3UuY3Jvc3NPcmlnaW49ImFub255bW91cyIsdS5vbmxvYWQ9ZnVuY3Rpb24oKXtpZihvLmRyYXdJbWFnZSh1LDAsMCksbi5tc1RvQmxvYil7dmFyIHQ9bi5tc1RvQmxvYigpO2koe2Jsb2I6dH0pfWVsc2V7dmFyIGU9bi50b0RhdGFVUkwoImltYWdlL3BuZyIpO2koe2ltZ1VSSTplfSl9fSx1LnNyYz1kfX0pKX19LHtrZXk6ImV4cG9ydFRvU1ZHIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudHJpZ2dlckRvd25sb2FkKHRoaXMuc3ZnVXJsKCksdGhpcy53LmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5zdmcuZmlsZW5hbWUsIi5zdmciKX19LHtrZXk6ImV4cG9ydFRvUG5nIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5kYXRhVVJJKCkudGhlbigoZnVuY3Rpb24oZSl7dmFyIGk9ZS5pbWdVUkkscz1lLmJsb2I7cz9uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihzLHQudy5nbG9iYWxzLmNoYXJ0SUQrIi5wbmciKTp0LnRyaWdnZXJEb3dubG9hZChpLHQudy5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQucG5nLmZpbGVuYW1lLCIucG5nIil9KSl9fSx7a2V5OiJleHBvcnRUb0NTViIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQuc2VyaWVzLHM9dC5maWxlTmFtZSxhPXQuY29sdW1uRGVsaW1pdGVyLG49dm9pZCAwPT09YT8iLCI6YSxyPXQubGluZURlbGltaXRlcixvPXZvaWQgMD09PXI/IlxuIjpyLGw9dGhpcy53O2l8fChpPWwuY29uZmlnLnNlcmllcyk7dmFyIGM9W10saD1bXSxkPSIiLHU9bC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuLTE9PT1sLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpP3Q6W119KSkscD1NYXRoLm1heC5hcHBseShNYXRoLG0oaS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRhdGE/dC5kYXRhLmxlbmd0aDowfSkpKSksZz1uZXcgVyh0aGlzLmN0eCksZj1uZXcgVih0aGlzLmN0eCksdj1mdW5jdGlvbih0KXt2YXIgaT0iIjtpZihsLmdsb2JhbHMuYXhpc0NoYXJ0cyl7aWYoImNhdGVnb3J5Ij09PWwuY29uZmlnLnhheGlzLnR5cGV8fGwuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYylpZihsLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXt2YXIgcz1sLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXSxhPW5ldyBZKGUuY3R4KS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpO2k9cyhsLmdsb2JhbHMubGFiZWxzW3RdLHtzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4OnQsdzpsfSl9ZWxzZSBpPWYuZ2V0TGFiZWwobC5nbG9iYWxzLmxhYmVscyxsLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLDAsdCkudGV4dDsiZGF0ZXRpbWUiPT09bC5jb25maWcueGF4aXMudHlwZSYmKGwuY29uZmlnLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoP2k9bC5jb25maWcueGF4aXMuY2F0ZWdvcmllc1t0XTpsLmNvbmZpZy5sYWJlbHMubGVuZ3RoJiYoaT1sLmNvbmZpZy5sYWJlbHNbdF0pKX1lbHNlIGk9bC5jb25maWcubGFiZWxzW3RdO3JldHVybiBBcnJheS5pc0FycmF5KGkpJiYoaT1pLmpvaW4oIiAiKSksYi5pc051bWJlcihpKT9pOmkuc3BsaXQobikuam9pbigiIil9O2MucHVzaChsLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuaGVhZGVyQ2F0ZWdvcnkpLCJib3hQbG90Ij09PWwuY29uZmlnLmNoYXJ0LnR5cGU/KGMucHVzaCgibWluaW11bSIpLGMucHVzaCgicTEiKSxjLnB1c2goIm1lZGlhbiIpLGMucHVzaCgicTMiKSxjLnB1c2goIm1heGltdW0iKSk6ImNhbmRsZXN0aWNrIj09PWwuY29uZmlnLmNoYXJ0LnR5cGU/KGMucHVzaCgib3BlbiIpLGMucHVzaCgiaGlnaCIpLGMucHVzaCgibG93IiksYy5wdXNoKCJjbG9zZSIpKToicmFuZ2VCYXIiPT09bC5jb25maWcuY2hhcnQudHlwZT8oYy5wdXNoKCJtaW5pbXVtIiksYy5wdXNoKCJtYXhpbXVtIikpOmkubWFwKChmdW5jdGlvbih0LGUpe3ZhciBpPXQubmFtZT90Lm5hbWU6InNlcmllcy0iLmNvbmNhdChlKTtsLmdsb2JhbHMuYXhpc0NoYXJ0cyYmYy5wdXNoKGkuc3BsaXQobikuam9pbigiIik/aS5zcGxpdChuKS5qb2luKCIiKToic2VyaWVzLSIuY29uY2F0KGUpKX0pKSxsLmdsb2JhbHMuYXhpc0NoYXJ0c3x8KGMucHVzaChsLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuaGVhZGVyVmFsdWUpLGgucHVzaChjLmpvaW4obikpKSxpLm1hcCgoZnVuY3Rpb24odCxlKXtsLmdsb2JhbHMuYXhpc0NoYXJ0cz9mdW5jdGlvbih0LGUpe2lmKGMubGVuZ3RoJiYwPT09ZSYmaC5wdXNoKGMuam9pbihuKSksdC5kYXRhKXt0LmRhdGE9dC5kYXRhLmxlbmd0aCYmdC5kYXRhfHxtKEFycmF5KHApKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIiJ9KSk7Zm9yKHZhciBzPTA7czx0LmRhdGEubGVuZ3RoO3MrKyl7Yz1bXTt2YXIgYT12KHMpO2lmKGF8fChnLmlzRm9ybWF0WFkoKT9hPWlbZV0uZGF0YVtzXS54OmcuaXNGb3JtYXQyREFycmF5KCkmJihhPWlbZV0uZGF0YVtzXT9pW2VdLmRhdGFbc11bMF06IiIpKSwwPT09ZSl7Yy5wdXNoKChvPWEsImRhdGV0aW1lIj09PWwuY29uZmlnLnhheGlzLnR5cGUmJlN0cmluZyhvKS5sZW5ndGg+PTEwP2wuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5kYXRlRm9ybWF0dGVyKGEpOmIuaXNOdW1iZXIoYSk/YTphLnNwbGl0KG4pLmpvaW4oIiIpKSk7Zm9yKHZhciByPTA7cjxsLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtyKyspZy5pc0Zvcm1hdFhZKCk/Yy5wdXNoKGlbcl0uZGF0YVtzXS55KTpjLnB1c2godVtyXVtzXSl9KCJjYW5kbGVzdGljayI9PT1sLmNvbmZpZy5jaGFydC50eXBlfHx0LnR5cGUmJiJjYW5kbGVzdGljayI9PT10LnR5cGUpJiYoYy5wb3AoKSxjLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZU9bZV1bc10pLGMucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVtzXSksYy5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2VdW3NdKSxjLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUNbZV1bc10pKSwoImJveFBsb3QiPT09bC5jb25maWcuY2hhcnQudHlwZXx8dC50eXBlJiYiYm94UGxvdCI9PT10LnR5cGUpJiYoYy5wb3AoKSxjLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZU9bZV1bc10pLGMucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVtzXSksYy5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVNW2VdW3NdKSxjLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUxbZV1bc10pLGMucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tlXVtzXSkpLCJyYW5nZUJhciI9PT1sLmNvbmZpZy5jaGFydC50eXBlJiYoYy5wb3AoKSxjLnB1c2gobC5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbZV1bc10pLGMucHVzaChsLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbZV1bc10pKSxjLmxlbmd0aCYmaC5wdXNoKGMuam9pbihuKSl9fXZhciBvfSh0LGUpOigoYz1bXSkucHVzaChsLmdsb2JhbHMubGFiZWxzW2VdLnNwbGl0KG4pLmpvaW4oIiIpKSxjLnB1c2godVtlXSksaC5wdXNoKGMuam9pbihuKSkpfSkpLGQrPWguam9pbihvKSx0aGlzLnRyaWdnZXJEb3dubG9hZCgiZGF0YTp0ZXh0L2NzdjsgY2hhcnNldD11dGYtOCwiK2VuY29kZVVSSUNvbXBvbmVudCgiXHVmZWZmIitkKSxzfHxsLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuZmlsZW5hbWUsIi5jc3YiKX19LHtrZXk6InRyaWdnZXJEb3dubG9hZCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtzLmhyZWY9dCxzLmRvd25sb2FkPShlfHx0aGlzLncuZ2xvYmFscy5jaGFydElEKStpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocykscy5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocyl9fV0pLHR9KCksRz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLmVsZ3JpZD1pLHRoaXMudz1lLnc7dmFyIHM9dGhpcy53O3RoaXMuYXhlc1V0aWxzPW5ldyBWKGUpLHRoaXMueGF4aXNMYWJlbHM9cy5nbG9iYWxzLmxhYmVscy5zbGljZSgpLHMuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjAmJiFzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYodGhpcy54YXhpc0xhYmVscz1zLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCkpLHMuY29uZmlnLnhheGlzLm92ZXJ3cml0ZUNhdGVnb3JpZXMmJih0aGlzLnhheGlzTGFiZWxzPXMuY29uZmlnLnhheGlzLm92ZXJ3cml0ZUNhdGVnb3JpZXMpLHRoaXMuZHJhd25MYWJlbHM9W10sdGhpcy5kcmF3bkxhYmVsc1JlY3RzPVtdLCJ0b3AiPT09cy5jb25maWcueGF4aXMucG9zaXRpb24/dGhpcy5vZmZZPTA6dGhpcy5vZmZZPXMuZ2xvYmFscy5ncmlkSGVpZ2h0KzEsdGhpcy5vZmZZPXRoaXMub2ZmWStzLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLm9mZnNldFksdGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbD0iYmFyIj09PXMuY29uZmlnLmNoYXJ0LnR5cGUmJnMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLHRoaXMueGF4aXNGb250U2l6ZT1zLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsdGhpcy54YXhpc0ZvbnRGYW1pbHk9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksdGhpcy54YXhpc0ZvcmVDb2xvcnM9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNvbG9ycyx0aGlzLnhheGlzQm9yZGVyV2lkdGg9cy5jb25maWcueGF4aXMuYXhpc0JvcmRlci53aWR0aCx0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsJiYodGhpcy54YXhpc0JvcmRlcldpZHRoPXMuY29uZmlnLnlheGlzWzBdLmF4aXNCb3JkZXIud2lkdGgudG9TdHJpbmcoKSksdGhpcy54YXhpc0JvcmRlcldpZHRoLmluZGV4T2YoIiUiKT4tMT90aGlzLnhheGlzQm9yZGVyV2lkdGg9cy5nbG9iYWxzLmdyaWRXaWR0aCpwYXJzZUludCh0aGlzLnhheGlzQm9yZGVyV2lkdGgsMTApLzEwMDp0aGlzLnhheGlzQm9yZGVyV2lkdGg9cGFyc2VJbnQodGhpcy54YXhpc0JvcmRlcldpZHRoLDEwKSx0aGlzLnhheGlzQm9yZGVySGVpZ2h0PXMuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuaGVpZ2h0LHRoaXMueWF4aXM9cy5jb25maWcueWF4aXNbMF19cmV0dXJuIGModCxbe2tleToiZHJhd1hheGlzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBrKHRoaXMuY3R4KSxpPWUuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLXhheGlzIix0cmFuc2Zvcm06InRyYW5zbGF0ZSgiLmNvbmNhdCh0LmNvbmZpZy54YXhpcy5vZmZzZXRYLCIsICIpLmNvbmNhdCh0LmNvbmZpZy54YXhpcy5vZmZzZXRZLCIpIil9KSxzPWUuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLXhheGlzLXRleHRzLWciLHRyYW5zZm9ybToidHJhbnNsYXRlKCIuY29uY2F0KHQuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1gsIiwgIikuY29uY2F0KHQuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1ksIikiKX0pO2kuYWRkKHMpO2Zvcih2YXIgYT1bXSxuPTA7bjx0aGlzLnhheGlzTGFiZWxzLmxlbmd0aDtuKyspYS5wdXNoKHRoaXMueGF4aXNMYWJlbHNbbl0pO2lmKHRoaXMuZHJhd1hBeGlzTGFiZWxBbmRHcm91cCghMCxlLHMsYSx0Lmdsb2JhbHMuaXNYTnVtZXJpYywoZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0pKSx0Lmdsb2JhbHMuaGFzR3JvdXBzKXt2YXIgcj10Lmdsb2JhbHMuZ3JvdXBzO2E9W107Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspYS5wdXNoKHJbb10udGl0bGUpO3ZhciBsPXt9O3QuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlJiYobC54YXhpc0ZvbnRTaXplPXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRTaXplLGwueGF4aXNGb250RmFtaWx5PXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRGYW1pbHksbC54YXhpc0ZvcmVDb2xvcnM9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuY29sb3JzLGwuZm9udFdlaWdodD10LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5mb250V2VpZ2h0LGwuY3NzQ2xhc3M9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuY3NzQ2xhc3MpLHRoaXMuZHJhd1hBeGlzTGFiZWxBbmRHcm91cCghMSxlLHMsYSwhMSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gclt0XS5jb2xzKmV9KSxsKX1pZih2b2lkIDAhPT10LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0KXt2YXIgYz1lLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy14YXhpcy10aXRsZSJ9KSxoPWUuZHJhd1RleHQoe3g6dC5nbG9iYWxzLmdyaWRXaWR0aC8yK3QuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFgseTp0aGlzLm9mZlkrcGFyc2VGbG9hdCh0aGlzLnhheGlzRm9udFNpemUpKygiYm90dG9tIj09PXQuY29uZmlnLnhheGlzLnRpdGxlLnBvc2l0aW9uP3QuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodDotdC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0LTEwKSt0LmNvbmZpZy54YXhpcy50aXRsZS5vZmZzZXRZLHRleHQ6dC5jb25maWcueGF4aXMudGl0bGUudGV4dCx0ZXh0QW5jaG9yOiJtaWRkbGUiLGZvbnRTaXplOnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmNvbG9yLGNzc0NsYXNzOiJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlLXRleHQgIit0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jc3NDbGFzc30pO2MuYWRkKGgpLGkuYWRkKGMpfWlmKHQuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuc2hvdyl7dmFyIGQ9dC5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzLHU9ZS5kcmF3TGluZSh0Lmdsb2JhbHMucGFkSG9yaXpvbnRhbCt0LmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLm9mZnNldFgtZCx0aGlzLm9mZlksdGhpcy54YXhpc0JvcmRlcldpZHRoK2QsdGhpcy5vZmZZLHQuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuY29sb3IsMCx0aGlzLnhheGlzQm9yZGVySGVpZ2h0KTt0aGlzLmVsZ3JpZCYmdGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycz90aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzLmFkZCh1KTppLmFkZCh1KX1yZXR1cm4gaX19LHtrZXk6ImRyYXdYQXhpc0xhYmVsQW5kR3JvdXAiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMsYSxuKXt2YXIgcixvPXRoaXMsbD1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06e30sYz1bXSxoPVtdLGQ9dGhpcy53LHU9bC54YXhpc0ZvbnRTaXplfHx0aGlzLnhheGlzRm9udFNpemUscD1sLnhheGlzRm9udEZhbWlseXx8dGhpcy54YXhpc0ZvbnRGYW1pbHksZz1sLnhheGlzRm9yZUNvbG9yc3x8dGhpcy54YXhpc0ZvcmVDb2xvcnMsZj1sLmZvbnRXZWlnaHR8fGQuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250V2VpZ2h0LG09bC5jc3NDbGFzc3x8ZC5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNzc0NsYXNzLHY9ZC5nbG9iYWxzLnBhZEhvcml6b250YWwseD1zLmxlbmd0aCxiPSJjYXRlZ29yeSI9PT1kLmNvbmZpZy54YXhpcy50eXBlP2QuZ2xvYmFscy5kYXRhUG9pbnRzOng7aWYoMD09PWImJng+YiYmKGI9eCksYSl7dmFyIHk9Yj4xP2ItMTpiO3I9ZC5nbG9iYWxzLmdyaWRXaWR0aC95LHY9dituKDAscikvMitkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WH1lbHNlIHI9ZC5nbG9iYWxzLmdyaWRXaWR0aC9iLHY9dituKDAscikrZC5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFg7Zm9yKHZhciB3PWZ1bmN0aW9uKGEpe3ZhciBsPXYtbihhLHIpLzIrZC5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFg7MD09PWEmJjE9PT14JiZyLzI9PT12JiYxPT09YiYmKGw9ZC5nbG9iYWxzLmdyaWRXaWR0aC8yKTt2YXIgeT1vLmF4ZXNVdGlscy5nZXRMYWJlbChzLGQuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMsbCxhLGMsdSx0KSx3PTI4O2lmKGQuZ2xvYmFscy5yb3RhdGVYTGFiZWxzJiZ0JiYodz0yMiksZC5jb25maWcueGF4aXMudGl0bGUudGV4dCYmInRvcCI9PT1kLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKHcrPXBhcnNlRmxvYXQoZC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpKzIpLHR8fCh3PXcrcGFyc2VGbG9hdCh1KSsoZC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0LWQuZ2xvYmFscy54QXhpc0dyb3VwTGFiZWxzSGVpZ2h0KSsoZC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/MTA6MCkpLHk9dm9pZCAwIT09ZC5jb25maWcueGF4aXMudGlja0Ftb3VudCYmImRhdGFQb2ludHMiIT09ZC5jb25maWcueGF4aXMudGlja0Ftb3VudCYmImRhdGV0aW1lIiE9PWQuY29uZmlnLnhheGlzLnR5cGU/by5heGVzVXRpbHMuY2hlY2tMYWJlbEJhc2VkT25UaWNrYW1vdW50KGEseSx4KTpvLmF4ZXNVdGlscy5jaGVja0Zvck92ZXJmbG93aW5nTGFiZWxzKGEseSx4LGMsaCksdCYmeS50ZXh0JiZkLmdsb2JhbHMueGF4aXNMYWJlbHNDb3VudCsrLGQuY29uZmlnLnhheGlzLmxhYmVscy5zaG93KXt2YXIgaz1lLmRyYXdUZXh0KHt4OnkueCx5Om8ub2ZmWStkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WSt3LSgidG9wIj09PWQuY29uZmlnLnhheGlzLnBvc2l0aW9uP2QuZ2xvYmFscy54QXhpc0hlaWdodCtkLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0LTI6MCksdGV4dDp5LnRleHQsdGV4dEFuY2hvcjoibWlkZGxlIixmb250V2VpZ2h0OnkuaXNCb2xkPzYwMDpmLGZvbnRTaXplOnUsZm9udEZhbWlseTpwLGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KGcpP3QmJmQuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz9nW2QuZ2xvYmFscy5taW5YK2EtMV06Z1thXTpnLGlzUGxhaW5UZXh0OiExLGNzc0NsYXNzOih0PyJhcGV4Y2hhcnRzLXhheGlzLWxhYmVsICI6ImFwZXhjaGFydHMteGF4aXMtZ3JvdXAtbGFiZWwgIikrbX0pO2lmKGkuYWRkKGspLGsub24oImNsaWNrIiwoZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGQuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2spe3ZhciBlPU9iamVjdC5hc3NpZ24oe30sZCx7bGFiZWxJbmRleDphfSk7ZC5jb25maWcuY2hhcnQuZXZlbnRzLnhBeGlzTGFiZWxDbGljayh0LG8uY3R4LGUpfX0pKSx0KXt2YXIgUz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZC5nbG9iYWxzLlNWR05TLCJ0aXRsZSIpO1MudGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheSh5LnRleHQpP3kudGV4dC5qb2luKCIgIik6eS50ZXh0LGsubm9kZS5hcHBlbmRDaGlsZChTKSwiIiE9PXkudGV4dCYmKGMucHVzaCh5LnRleHQpLGgucHVzaCh5KSl9fWE8eC0xJiYodis9bihhKzEscikpfSxrPTA7azw9eC0xO2srKyl3KGspfX0se2tleToiZHJhd1hheGlzSW52ZXJzZWQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGkscz10aGlzLGE9dGhpcy53LG49bmV3IGsodGhpcy5jdHgpLHI9YS5jb25maWcueWF4aXNbMF0ub3Bwb3NpdGU/YS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XTowLG89bi5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMteWF4aXMgYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZCIscmVsOnR9KSxsPW4uZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLXlheGlzLXRleHRzLWcgYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZC10ZXh0cy1nIix0cmFuc2Zvcm06InRyYW5zbGF0ZSgiK3IrIiwgMCkifSk7by5hZGQobCk7dmFyIGM9W107aWYoYS5jb25maWcueWF4aXNbdF0uc2hvdylmb3IodmFyIGg9MDtoPHRoaXMueGF4aXNMYWJlbHMubGVuZ3RoO2grKyljLnB1c2godGhpcy54YXhpc0xhYmVsc1toXSk7ZT1hLmdsb2JhbHMuZ3JpZEhlaWdodC9jLmxlbmd0aCxpPS1lLzIuMjt2YXIgZD1hLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXSx1PWEuY29uZmlnLnlheGlzWzBdLmxhYmVscztpZih1LnNob3cpZm9yKHZhciBwPWZ1bmN0aW9uKHIpe3ZhciBvPXZvaWQgMD09PWNbcl0/IiI6Y1tyXTtvPWQobyx7c2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpyLHc6YX0pO3ZhciBoPXMuYXhlc1V0aWxzLmdldFlBeGlzRm9yZUNvbG9yKHUuc3R5bGUuY29sb3JzLHQpLHA9MDtBcnJheS5pc0FycmF5KG8pJiYocD1vLmxlbmd0aC8yKnBhcnNlSW50KHUuc3R5bGUuZm9udFNpemUsMTApKTt2YXIgZz1uLmRyYXdUZXh0KHt4OnUub2Zmc2V0WC0xNSx5OmkrZSt1Lm9mZnNldFktcCx0ZXh0Om8sdGV4dEFuY2hvcjpzLnlheGlzLm9wcG9zaXRlPyJzdGFydCI6ImVuZCIsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkoaCk/aFtyXTpoLGZvbnRTaXplOnUuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp1LnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp1LnN0eWxlLmZvbnRXZWlnaHQsaXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6ImFwZXhjaGFydHMteWF4aXMtbGFiZWwgIit1LnN0eWxlLmNzc0NsYXNzLG1heFdpZHRoOnUubWF4V2lkdGh9KTtsLmFkZChnKSxnLm9uKCJjbGljayIsKGZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrKXt2YXIgZT1PYmplY3QuYXNzaWduKHt9LGEse2xhYmVsSW5kZXg6cn0pO2EuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2sodCxzLmN0eCxlKX19KSk7dmFyIGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGEuZ2xvYmFscy5TVkdOUywidGl0bGUiKTtpZihmLnRleHRDb250ZW50PUFycmF5LmlzQXJyYXkobyk/by5qb2luKCIgIik6byxnLm5vZGUuYXBwZW5kQ2hpbGQoZiksMCE9PWEuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUpe3ZhciBtPW4ucm90YXRlQXJvdW5kQ2VudGVyKGcubm9kZSk7Zy5ub2RlLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwicm90YXRlKCIuY29uY2F0KGEuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUsIiAwICIpLmNvbmNhdChtLnksIikiKSl9aSs9ZX0sZz0wO2c8PWMubGVuZ3RoLTE7ZysrKXAoZyk7aWYodm9pZCAwIT09YS5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dCl7dmFyIGY9bi5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMteWF4aXMtdGl0bGUgYXBleGNoYXJ0cy14YXhpcy10aXRsZS1pbnZlcnNlZCIsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoIityKyIsIDApIn0pLG09bi5kcmF3VGV4dCh7eDphLmNvbmZpZy55YXhpc1swXS50aXRsZS5vZmZzZXRYLHk6YS5nbG9iYWxzLmdyaWRIZWlnaHQvMithLmNvbmZpZy55YXhpc1swXS50aXRsZS5vZmZzZXRZLHRleHQ6YS5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dCx0ZXh0QW5jaG9yOiJtaWRkbGUiLGZvcmVDb2xvcjphLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5jb2xvcixmb250U2l6ZTphLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250V2VpZ2h0OmEuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsZm9udEZhbWlseTphLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250RmFtaWx5LGNzc0NsYXNzOiJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlLXRleHQgIithLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5jc3NDbGFzc30pO2YuYWRkKG0pLG8uYWRkKGYpfXZhciB2PTA7dGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbCYmYS5jb25maWcueWF4aXNbMF0ub3Bwb3NpdGUmJih2PWEuZ2xvYmFscy5ncmlkV2lkdGgpO3ZhciB4PWEuY29uZmlnLnhheGlzLmF4aXNCb3JkZXI7aWYoeC5zaG93KXt2YXIgYj1uLmRyYXdMaW5lKGEuZ2xvYmFscy5wYWRIb3Jpem9udGFsK3gub2Zmc2V0WCt2LDEreC5vZmZzZXRZLGEuZ2xvYmFscy5wYWRIb3Jpem9udGFsK3gub2Zmc2V0WCt2LGEuZ2xvYmFscy5ncmlkSGVpZ2h0K3gub2Zmc2V0WSx4LmNvbG9yLDApO3RoaXMuZWxncmlkJiZ0aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzP3RoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMuYWRkKGIpOm8uYWRkKGIpfXJldHVybiBhLmNvbmZpZy55YXhpc1swXS5heGlzVGlja3Muc2hvdyYmdGhpcy5heGVzVXRpbHMuZHJhd1lBeGlzVGlja3ModixjLmxlbmd0aCxhLmNvbmZpZy55YXhpc1swXS5heGlzQm9yZGVyLGEuY29uZmlnLnlheGlzWzBdLmF4aXNUaWNrcywwLGUsbyksb319LHtrZXk6ImRyYXdYYXhpc1RpY2tzIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy53LGE9dDtpZighKHQ8MHx8dC0yPnMuZ2xvYmFscy5ncmlkV2lkdGgpKXt2YXIgbj10aGlzLm9mZlkrcy5jb25maWcueGF4aXMuYXhpc1RpY2tzLm9mZnNldFk7aWYoZT1lK24rcy5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodCwidG9wIj09PXMuY29uZmlnLnhheGlzLnBvc2l0aW9uJiYoZT1uLXMuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQpLHMuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5zaG93KXt2YXIgcj1uZXcgayh0aGlzLmN0eCkuZHJhd0xpbmUodCtzLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WCxuK3MuY29uZmlnLnhheGlzLm9mZnNldFksYStzLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WCxlK3MuY29uZmlnLnhheGlzLm9mZnNldFkscy5jb25maWcueGF4aXMuYXhpc1RpY2tzLmNvbG9yKTtpLmFkZChyKSxyLm5vZGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy14YXhpcy10aWNrIil9fX19LHtrZXk6ImdldFhBeGlzVGlja3NQb3NpdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9W10saT10aGlzLnhheGlzTGFiZWxzLmxlbmd0aCxzPXQuZ2xvYmFscy5wYWRIb3Jpem9udGFsO2lmKHQuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjApZm9yKHZhciBhPTA7YTxpO2ErKylzPXRoaXMueGF4aXNMYWJlbHNbYV0ucG9zaXRpb24sZS5wdXNoKHMpO2Vsc2UgZm9yKHZhciBuPWkscj0wO3I8bjtyKyspe3ZhciBvPW47dC5nbG9iYWxzLmlzWE51bWVyaWMmJiJiYXIiIT09dC5jb25maWcuY2hhcnQudHlwZSYmKG8tPTEpLHMrPXQuZ2xvYmFscy5ncmlkV2lkdGgvbyxlLnB1c2gocyl9cmV0dXJuIGV9fSx7a2V5OiJ4QXhpc0xhYmVsQ29ycmVjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IGsodGhpcy5jdHgpLGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyIpLHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyB0ZXh0Om5vdCguYXBleGNoYXJ0cy14YXhpcy1ncm91cC1sYWJlbCkiKSxhPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXlheGlzLWludmVyc2VkIHRleHQiKSxuPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXhheGlzLWludmVyc2VkLXRleHRzLWcgdGV4dCB0c3BhbiIpO2lmKHQuZ2xvYmFscy5yb3RhdGVYTGFiZWxzfHx0LmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlQWx3YXlzKWZvcih2YXIgcj0wO3I8cy5sZW5ndGg7cisrKXt2YXIgbz1lLnJvdGF0ZUFyb3VuZENlbnRlcihzW3JdKTtvLnk9by55LTEsby54PW8ueCsxLHNbcl0uc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJyb3RhdGUoIi5jb25jYXQodC5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSwiICIpLmNvbmNhdChvLngsIiAiKS5jb25jYXQoby55LCIpIikpLHNbcl0uc2V0QXR0cmlidXRlKCJ0ZXh0LWFuY2hvciIsImVuZCIpLGkuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwgIi5jb25jYXQoLTEwLCIpIikpO3ZhciBsPXNbcl0uY2hpbGROb2Rlczt0LmNvbmZpZy54YXhpcy5sYWJlbHMudHJpbSYmQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChsLChmdW5jdGlvbihpKXtlLnBsYWNlVGV4dFdpdGhFbGxpcHNpcyhpLGkudGV4dENvbnRlbnQsdC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0LSgiYm90dG9tIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj8yMDoxMCkpfSkpfWVsc2UhZnVuY3Rpb24oKXtmb3IodmFyIGk9dC5nbG9iYWxzLmdyaWRXaWR0aC8odC5nbG9iYWxzLmxhYmVscy5sZW5ndGgrMSksYT0wO2E8cy5sZW5ndGg7YSsrKXt2YXIgbj1zW2FdLmNoaWxkTm9kZXM7dC5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJiJkYXRldGltZSIhPT10LmNvbmZpZy54YXhpcy50eXBlJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG4sKGZ1bmN0aW9uKHQpe2UucGxhY2VUZXh0V2l0aEVsbGlwc2lzKHQsdC50ZXh0Q29udGVudCxpKX0pKX19KCk7aWYoYS5sZW5ndGg+MCl7dmFyIGM9YVthLmxlbmd0aC0xXS5nZXRCQm94KCksaD1hWzBdLmdldEJCb3goKTtjLng8LTIwJiZhW2EubGVuZ3RoLTFdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYVthLmxlbmd0aC0xXSksaC54K2gud2lkdGg+dC5nbG9iYWxzLmdyaWRXaWR0aCYmIXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJmFbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhWzBdKTtmb3IodmFyIGQ9MDtkPG4ubGVuZ3RoO2QrKyllLnBsYWNlVGV4dFdpdGhFbGxpcHNpcyhuW2RdLG5bZF0udGV4dENvbnRlbnQsdC5jb25maWcueWF4aXNbMF0ubGFiZWxzLm1heFdpZHRoLSh0LmNvbmZpZy55YXhpc1swXS50aXRsZS50ZXh0PzIqcGFyc2VGbG9hdCh0LmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250U2l6ZSk6MCktMTUpfX19XSksdH0oKSxVPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLnhheGlzTGFiZWxzPWkuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSx0aGlzLmF4ZXNVdGlscz1uZXcgVihlKSx0aGlzLmlzUmFuZ2VCYXI9aS5nbG9iYWxzLnNlcmllc1JhbmdlLmxlbmd0aCxpLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wJiYodGhpcy54YXhpc0xhYmVscz1pLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCkpfXJldHVybiBjKHQsW3trZXk6ImRyYXdHcmlkQXJlYSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCxlPXRoaXMudyxpPW5ldyBrKHRoaXMuY3R4KTtudWxsPT09dCYmKHQ9aS5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtZ3JpZCJ9KSk7dmFyIHM9aS5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCwxLGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsLGUuZ2xvYmFscy5ncmlkSGVpZ2h0LCJ0cmFuc3BhcmVudCIpLGE9aS5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxlLmdsb2JhbHMuZ3JpZEhlaWdodCxlLmdsb2JhbHMuZ3JpZFdpZHRoLGUuZ2xvYmFscy5ncmlkSGVpZ2h0LCJ0cmFuc3BhcmVudCIpO3JldHVybiB0LmFkZChhKSx0LmFkZChzKSx0fX0se2tleToiZHJhd0dyaWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bnVsbDtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuYXhpc0NoYXJ0cyYmKHQ9dGhpcy5yZW5kZXJHcmlkKCksdGhpcy5kcmF3R3JpZEFyZWEodC5lbCkpLHR9fSx7a2V5OiJjcmVhdGVHcmlkTWFzayIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMsaT1uZXcgayh0aGlzLmN0eCkscz1BcnJheS5pc0FycmF5KHQuY29uZmlnLnN0cm9rZS53aWR0aCk/MDp0LmNvbmZpZy5zdHJva2Uud2lkdGg7aWYoQXJyYXkuaXNBcnJheSh0LmNvbmZpZy5zdHJva2Uud2lkdGgpKXt2YXIgYT0wO3QuY29uZmlnLnN0cm9rZS53aWR0aC5mb3JFYWNoKChmdW5jdGlvbih0KXthPU1hdGgubWF4KGEsdCl9KSkscz1hfWUuZG9tLmVsR3JpZFJlY3RNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLCJjbGlwUGF0aCIpLGUuZG9tLmVsR3JpZFJlY3RNYXNrLnNldEF0dHJpYnV0ZSgiaWQiLCJncmlkUmVjdE1hc2siLmNvbmNhdChlLmN1aWQpKSxlLmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5TVkdOUywiY2xpcFBhdGgiKSxlLmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzay5zZXRBdHRyaWJ1dGUoImlkIiwiZ3JpZFJlY3RNYXJrZXJNYXNrIi5jb25jYXQoZS5jdWlkKSksZS5kb20uZWxGb3JlY2FzdE1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHTlMsImNsaXBQYXRoIiksZS5kb20uZWxGb3JlY2FzdE1hc2suc2V0QXR0cmlidXRlKCJpZCIsImZvcmVjYXN0TWFzayIuY29uY2F0KGUuY3VpZCkpLGUuZG9tLmVsTm9uRm9yZWNhc3RNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLCJjbGlwUGF0aCIpLGUuZG9tLmVsTm9uRm9yZWNhc3RNYXNrLnNldEF0dHJpYnV0ZSgiaWQiLCJub25Gb3JlY2FzdE1hc2siLmNvbmNhdChlLmN1aWQpKTt2YXIgbj10LmNvbmZpZy5jaGFydC50eXBlLHI9MCxvPTA7KCJiYXIiPT09bnx8InJhbmdlQmFyIj09PW58fCJjYW5kbGVzdGljayI9PT1ufHwiYm94UGxvdCI9PT1ufHx0Lmdsb2JhbHMuY29tYm9CYXJDb3VudD4wKSYmdC5nbG9iYWxzLmlzWE51bWVyaWMmJiF0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYocj10LmNvbmZpZy5ncmlkLnBhZGRpbmcubGVmdCxvPXQuY29uZmlnLmdyaWQucGFkZGluZy5yaWdodCxlLmJhclBhZEZvck51bWVyaWNBeGlzPnImJihyPWUuYmFyUGFkRm9yTnVtZXJpY0F4aXMsbz1lLmJhclBhZEZvck51bWVyaWNBeGlzKSksZS5kb20uZWxHcmlkUmVjdD1pLmRyYXdSZWN0KC1zLzItci0yLC1zLzIsZS5ncmlkV2lkdGgrcytvK3IrNCxlLmdyaWRIZWlnaHQrcywwLCIjZmZmIik7dmFyIGw9dC5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemUrMTtlLmRvbS5lbEdyaWRSZWN0TWFya2VyPWkuZHJhd1JlY3QoMiotbCwyKi1sLGUuZ3JpZFdpZHRoKzQqbCxlLmdyaWRIZWlnaHQrNCpsLDAsIiNmZmYiKSxlLmRvbS5lbEdyaWRSZWN0TWFzay5hcHBlbmRDaGlsZChlLmRvbS5lbEdyaWRSZWN0Lm5vZGUpLGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXJrZXIubm9kZSk7dmFyIGM9ZS5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoImRlZnMiKTtjLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXNrKSxjLmFwcGVuZENoaWxkKGUuZG9tLmVsRm9yZWNhc3RNYXNrKSxjLmFwcGVuZENoaWxkKGUuZG9tLmVsTm9uRm9yZWNhc3RNYXNrKSxjLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrKX19LHtrZXk6Il9kcmF3R3JpZExpbmVzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10LngxLHM9dC55MSxhPXQueDIsbj10LnkyLHI9dC54Q291bnQsbz10LnBhcmVudCxsPXRoaXMudztpZighKDA9PT1lJiZsLmdsb2JhbHMuc2tpcEZpcnN0VGltZWxpbmVsYWJlbHx8ZT09PXItMSYmbC5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCYmIWwuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXJ8fCJyYWRhciI9PT1sLmNvbmZpZy5jaGFydC50eXBlKSl7bC5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93JiZ0aGlzLl9kcmF3R3JpZExpbmUoe2k6ZSx4MTppLHkxOnMseDI6YSx5MjpuLHhDb3VudDpyLHBhcmVudDpvfSk7dmFyIGM9MDtpZihsLmdsb2JhbHMuaGFzR3JvdXBzJiYiYmV0d2VlbiI9PT1sLmNvbmZpZy54YXhpcy50aWNrUGxhY2VtZW50KXt2YXIgaD1sLmdsb2JhbHMuZ3JvdXBzO2lmKGgpe2Zvcih2YXIgZD0wLHU9MDtkPGUmJnU8aC5sZW5ndGg7dSsrKWQrPWhbdV0uY29scztkPT09ZSYmKGM9LjYqbC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0KX19bmV3IEcodGhpcy5jdHgpLmRyYXdYYXhpc1RpY2tzKGksYyxsLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsKX19fSx7a2V5OiJfZHJhd0dyaWRMaW5lIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10LngxLHM9dC55MSxhPXQueDIsbj10LnkyLHI9dC54Q291bnQsbz10LnBhcmVudCxsPXRoaXMudyxjPSExLGg9by5ub2RlLmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1ncmlkbGluZXMtaG9yaXpvbnRhbCIpLGQ9bC5jb25maWcuZ3JpZC5zdHJva2VEYXNoQXJyYXksdT1sLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM7KDA9PT1zJiYwPT09bnx8MD09PWkmJjA9PT1hKSYmKGM9ITApLHM9PT1sLmdsb2JhbHMuZ3JpZEhlaWdodCYmbj09PWwuZ2xvYmFscy5ncmlkSGVpZ2h0JiYoYz0hMCksIWwuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fDAhPT1lJiZlIT09ci0xfHwoYz0hMCk7dmFyIHA9bmV3IGsodGhpcykuZHJhd0xpbmUoaS0oaD91OjApLHMsYSsoaD91OjApLG4sbC5jb25maWcuZ3JpZC5ib3JkZXJDb2xvcixkKTtwLm5vZGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1ncmlkbGluZSIpLGM/dGhpcy5lbEdyaWRCb3JkZXJzLmFkZChwKTpvLmFkZChwKX19LHtrZXk6Il9kcmF3R3JpZEJhbmRSZWN0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmMsaT10LngxLHM9dC55MSxhPXQueDIsbj10LnkyLHI9dC50eXBlLG89dGhpcy53LGw9bmV3IGsodGhpcy5jdHgpLGM9by5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzO2lmKCJjb2x1bW4iIT09cnx8ImRhdGV0aW1lIiE9PW8uY29uZmlnLnhheGlzLnR5cGUpe3ZhciBoPW8uY29uZmlnLmdyaWRbcl0uY29sb3JzW2VdLGQ9bC5kcmF3UmVjdChpLSgicm93Ij09PXI/YzowKSxzLGErKCJyb3ciPT09cj8yKmM6MCksbiwwLGgsby5jb25maWcuZ3JpZFtyXS5vcGFjaXR5KTt0aGlzLmVsZy5hZGQoZCksZC5hdHRyKCJjbGlwLXBhdGgiLCJ1cmwoI2dyaWRSZWN0TWFzayIuY29uY2F0KG8uZ2xvYmFscy5jdWlkLCIpIikpLGQubm9kZS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWdyaWQtIi5jb25jYXQocikpfX19LHtrZXk6Il9kcmF3WFlMaW5lcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQueENvdW50LHM9dC50aWNrQW1vdW50LGE9dGhpcy53O2lmKGEuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvd3x8YS5jb25maWcueGF4aXMuYXhpc1RpY2tzLnNob3cpe3ZhciBuLHI9YS5nbG9iYWxzLnBhZEhvcml6b250YWwsbz1hLmdsb2JhbHMuZ3JpZEhlaWdodDthLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD9mdW5jdGlvbih0KXtmb3IodmFyIHM9dC54QyxhPXQueDEsbj10LnkxLHI9dC54MixvPXQueTIsbD0wO2w8cztsKyspYT1lLnhheGlzTGFiZWxzW2xdLnBvc2l0aW9uLHI9ZS54YXhpc0xhYmVsc1tsXS5wb3NpdGlvbixlLl9kcmF3R3JpZExpbmVzKHtpOmwseDE6YSx5MTpuLHgyOnIseTI6byx4Q291bnQ6aSxwYXJlbnQ6ZS5lbGdyaWRMaW5lc1Z9KX0oe3hDOmkseDE6cix5MTowLHgyOm4seTI6b30pOihhLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGk9YS5nbG9iYWxzLnhBeGlzU2NhbGUucmVzdWx0Lmxlbmd0aCksYS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoaT1hLmdsb2JhbHMueGF4aXNMYWJlbHNDb3VudCksZnVuY3Rpb24odCl7dmFyIHM9dC54QyxuPXQueDEscj10LnkxLG89dC54MixsPXQueTI7aWYodm9pZCAwIT09YS5jb25maWcueGF4aXMudGlja0Ftb3VudCYmImRhdGFQb2ludHMiIT09YS5jb25maWcueGF4aXMudGlja0Ftb3VudCYmIm9uIj09PWEuY29uZmlnLnhheGlzLnRpY2tQbGFjZW1lbnQpYS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtdGV4dC5hcGV4Y2hhcnRzLXhheGlzLWxhYmVsIHRzcGFuOm5vdCg6ZW1wdHkpIikuZm9yRWFjaCgoZnVuY3Rpb24odCxzKXt2YXIgYT10LmdldEJCb3goKTtlLl9kcmF3R3JpZExpbmVzKHtpOnMseDE6YS54K2Eud2lkdGgvMix5MTpyLHgyOmEueCthLndpZHRoLzIseTI6bCx4Q291bnQ6aSxwYXJlbnQ6ZS5lbGdyaWRMaW5lc1Z9KX0pKTtlbHNlIGZvcih2YXIgYz0wO2M8cysoYS5nbG9iYWxzLmlzWE51bWVyaWM/MDoxKTtjKyspMD09PWMmJjE9PT1zJiYxPT09YS5nbG9iYWxzLmRhdGFQb2ludHMmJihvPW49YS5nbG9iYWxzLmdyaWRXaWR0aC8yKSxlLl9kcmF3R3JpZExpbmVzKHtpOmMseDE6bix5MTpyLHgyOm8seTI6bCx4Q291bnQ6aSxwYXJlbnQ6ZS5lbGdyaWRMaW5lc1Z9KSxvPW4rPWEuZ2xvYmFscy5ncmlkV2lkdGgvKGEuZ2xvYmFscy5pc1hOdW1lcmljP3MtMTpzKX0oe3hDOmkseDE6cix5MTowLHgyOm4seTI6b30pKX1pZihhLmNvbmZpZy5ncmlkLnlheGlzLmxpbmVzLnNob3cpe3ZhciBsPTAsYz0wLGg9YS5nbG9iYWxzLmdyaWRXaWR0aCxkPXMrMTt0aGlzLmlzUmFuZ2VCYXImJihkPWEuZ2xvYmFscy5sYWJlbHMubGVuZ3RoKTtmb3IodmFyIHU9MDt1PGQrKHRoaXMuaXNSYW5nZUJhcj8xOjApO3UrKyl0aGlzLl9kcmF3R3JpZExpbmUoe2k6dSx4Q291bnQ6ZCsodGhpcy5pc1JhbmdlQmFyPzE6MCkseDE6MCx5MTpsLHgyOmgseTI6YyxwYXJlbnQ6dGhpcy5lbGdyaWRMaW5lc0h9KSxjPWwrPWEuZ2xvYmFscy5ncmlkSGVpZ2h0Lyh0aGlzLmlzUmFuZ2VCYXI/ZDpzKX19fSx7a2V5OiJfZHJhd0ludmVydGVkWFlMaW5lcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC54Q291bnQsaT10aGlzLnc7aWYoaS5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93fHxpLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdylmb3IodmFyIHMsYT1pLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxuPWkuZ2xvYmFscy5ncmlkSGVpZ2h0LHI9MDtyPGUrMTtyKyspaS5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93JiZ0aGlzLl9kcmF3R3JpZExpbmUoe2k6cix4Q291bnQ6ZSsxLHgxOmEseTE6MCx4MjpzLHkyOm4scGFyZW50OnRoaXMuZWxncmlkTGluZXNWfSksbmV3IEcodGhpcy5jdHgpLmRyYXdYYXhpc1RpY2tzKGEsMCxpLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsKSxzPWE9YStpLmdsb2JhbHMuZ3JpZFdpZHRoL2UrLjM7aWYoaS5jb25maWcuZ3JpZC55YXhpcy5saW5lcy5zaG93KWZvcih2YXIgbz0wLGw9MCxjPWkuZ2xvYmFscy5ncmlkV2lkdGgsaD0wO2g8aS5nbG9iYWxzLmRhdGFQb2ludHMrMTtoKyspdGhpcy5fZHJhd0dyaWRMaW5lKHtpOmgseENvdW50OmkuZ2xvYmFscy5kYXRhUG9pbnRzKzEseDE6MCx5MTpvLHgyOmMseTI6bCxwYXJlbnQ6dGhpcy5lbGdyaWRMaW5lc0h9KSxsPW8rPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L2kuZ2xvYmFscy5kYXRhUG9pbnRzfX0se2tleToicmVuZGVyR3JpZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgayh0aGlzLmN0eCk7dGhpcy5lbGc9ZS5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtZ3JpZCJ9KSx0aGlzLmVsZ3JpZExpbmVzSD1lLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy1ncmlkbGluZXMtaG9yaXpvbnRhbCJ9KSx0aGlzLmVsZ3JpZExpbmVzVj1lLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy1ncmlkbGluZXMtdmVydGljYWwifSksdGhpcy5lbEdyaWRCb3JkZXJzPWUuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLWdyaWQtYm9yZGVycyJ9KSx0aGlzLmVsZy5hZGQodGhpcy5lbGdyaWRMaW5lc0gpLHRoaXMuZWxnLmFkZCh0aGlzLmVsZ3JpZExpbmVzViksdC5jb25maWcuZ3JpZC5zaG93fHwodGhpcy5lbGdyaWRMaW5lc1YuaGlkZSgpLHRoaXMuZWxncmlkTGluZXNILmhpZGUoKSx0aGlzLmVsR3JpZEJvcmRlcnMuaGlkZSgpKTtmb3IodmFyIGkscz10Lmdsb2JhbHMueUF4aXNTY2FsZS5sZW5ndGg/dC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0Lmxlbmd0aC0xOjUsYT0wO2E8dC5nbG9iYWxzLnNlcmllcy5sZW5ndGgmJih2b2lkIDAhPT10Lmdsb2JhbHMueUF4aXNTY2FsZVthXSYmKHM9dC5nbG9iYWxzLnlBeGlzU2NhbGVbYV0ucmVzdWx0Lmxlbmd0aC0xKSwhKHM+MikpO2ErKyk7cmV0dXJuIXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fHRoaXMuaXNSYW5nZUJhcj8oaT10aGlzLnhheGlzTGFiZWxzLmxlbmd0aCx0aGlzLmlzUmFuZ2VCYXImJihzPXQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoLHQuY29uZmlnLnhheGlzLnRpY2tBbW91bnQmJnQuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXImJihpPXQuY29uZmlnLnhheGlzLnRpY2tBbW91bnQpKSx0aGlzLl9kcmF3WFlMaW5lcyh7eENvdW50OmksdGlja0Ftb3VudDpzfSkpOihpPXMscz10Lmdsb2JhbHMueFRpY2tBbW91bnQsdGhpcy5fZHJhd0ludmVydGVkWFlMaW5lcyh7eENvdW50OmksdGlja0Ftb3VudDpzfSkpLHRoaXMuZHJhd0dyaWRCYW5kcyhpLHMpLHtlbDp0aGlzLmVsZyxlbEdyaWRCb3JkZXJzOnRoaXMuZWxHcmlkQm9yZGVycyx4QXhpc1RpY2tXaWR0aDp0Lmdsb2JhbHMuZ3JpZFdpZHRoL2l9fX0se2tleToiZHJhd0dyaWRCYW5kcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYodm9pZCAwIT09aS5jb25maWcuZ3JpZC5yb3cuY29sb3JzJiZpLmNvbmZpZy5ncmlkLnJvdy5jb2xvcnMubGVuZ3RoPjApZm9yKHZhciBzPTAsYT1pLmdsb2JhbHMuZ3JpZEhlaWdodC9lLG49aS5nbG9iYWxzLmdyaWRXaWR0aCxyPTAsbz0wO3I8ZTtyKyssbysrKW8+PWkuY29uZmlnLmdyaWQucm93LmNvbG9ycy5sZW5ndGgmJihvPTApLHRoaXMuX2RyYXdHcmlkQmFuZFJlY3Qoe2M6byx4MTowLHkxOnMseDI6bix5MjphLHR5cGU6InJvdyJ9KSxzKz1pLmdsb2JhbHMuZ3JpZEhlaWdodC9lO2lmKHZvaWQgMCE9PWkuY29uZmlnLmdyaWQuY29sdW1uLmNvbG9ycyYmaS5jb25maWcuZ3JpZC5jb2x1bW4uY29sb3JzLmxlbmd0aD4wKWZvcih2YXIgbD1pLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwiY2F0ZWdvcnkiIT09aS5jb25maWcueGF4aXMudHlwZSYmIWkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz90OnQtMSxjPWkuZ2xvYmFscy5wYWRIb3Jpem9udGFsLGg9aS5nbG9iYWxzLnBhZEhvcml6b250YWwraS5nbG9iYWxzLmdyaWRXaWR0aC9sLGQ9aS5nbG9iYWxzLmdyaWRIZWlnaHQsdT0wLHA9MDt1PHQ7dSsrLHArKylwPj1pLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnMubGVuZ3RoJiYocD0wKSx0aGlzLl9kcmF3R3JpZEJhbmRSZWN0KHtjOnAseDE6Yyx5MTowLHgyOmgseTI6ZCx0eXBlOiJjb2x1bW4ifSksYys9aS5nbG9iYWxzLmdyaWRXaWR0aC9sfX1dKSx0fSgpLHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIGModCxbe2tleToibmljZVNjYWxlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxMCxzPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTowLGE9YXJndW1lbnRzLmxlbmd0aD40P2FyZ3VtZW50c1s0XTp2b2lkIDAsbj10aGlzLncscj1NYXRoLmFicyhlLXQpO2lmKCJkYXRhUG9pbnRzIj09PShpPXRoaXMuX2FkanVzdFRpY2tzRm9yU21hbGxSYW5nZShpLHMscikpJiYoaT1uLmdsb2JhbHMuZGF0YVBvaW50cy0xKSx0PT09TnVtYmVyLk1JTl9WQUxVRSYmMD09PWV8fCFiLmlzTnVtYmVyKHQpJiYhYi5pc051bWJlcihlKXx8dD09PU51bWJlci5NSU5fVkFMVUUmJmU9PT0tTnVtYmVyLk1BWF9WQUxVRSl7dD0wLGU9aTt2YXIgbz10aGlzLmxpbmVhclNjYWxlKHQsZSxpKTtyZXR1cm4gb310PmU/KGNvbnNvbGUud2FybigiYXhpcy5taW4gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBheGlzLm1heCIpLGU9dCsuMSk6dD09PWUmJih0PTA9PT10PzA6dC0uNSxlPTA9PT1lPzI6ZSsuNSk7dmFyIGw9W107cjwxJiZhJiYoImNhbmRsZXN0aWNrIj09PW4uY29uZmlnLmNoYXJ0LnR5cGV8fCJjYW5kbGVzdGljayI9PT1uLmNvbmZpZy5zZXJpZXNbc10udHlwZXx8ImJveFBsb3QiPT09bi5jb25maWcuY2hhcnQudHlwZXx8ImJveFBsb3QiPT09bi5jb25maWcuc2VyaWVzW3NdLnR5cGV8fG4uZ2xvYmFscy5pc1JhbmdlRGF0YSkmJihlKj0xLjAxKTt2YXIgYz1pKzE7YzwyP2M9MjpjPjImJihjLT0yKTt2YXIgaD1yL2MsZD1NYXRoLmZsb29yKGIubG9nMTAoaCkpLHU9TWF0aC5wb3coMTAsZCkscD1NYXRoLnJvdW5kKGgvdSk7cDwxJiYocD0xKTt2YXIgZz1wKnUsZj1nKk1hdGguZmxvb3IodC9nKSxtPWcqTWF0aC5jZWlsKGUvZyksdj1mO2lmKGEmJnI+Mil7Zm9yKDtsLnB1c2godiksISgodis9Zyk+bSk7KTtyZXR1cm57cmVzdWx0OmwsbmljZU1pbjpsWzBdLG5pY2VNYXg6bFtsLmxlbmd0aC0xXX19dmFyIHg9dDsobD1bXSkucHVzaCh4KTtmb3IodmFyIHk9TWF0aC5hYnMoZS10KS9pLHc9MDt3PD1pO3crKyl4Kz15LGwucHVzaCh4KTtyZXR1cm4gbFtsLmxlbmd0aC0yXT49ZSYmbC5wb3AoKSx7cmVzdWx0OmwsbmljZU1pbjpsWzBdLG5pY2VNYXg6bFtsLmxlbmd0aC0xXX19fSx7a2V5OiJsaW5lYXJTY2FsZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTAscz1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMCxhPU1hdGguYWJzKGUtdCk7ImRhdGFQb2ludHMiPT09KGk9dGhpcy5fYWRqdXN0VGlja3NGb3JTbWFsbFJhbmdlKGkscyxhKSkmJihpPXRoaXMudy5nbG9iYWxzLmRhdGFQb2ludHMtMSk7dmFyIG49YS9pO2k9PT1OdW1iZXIuTUFYX1ZBTFVFJiYoaT0xMCxuPTEpO2Zvcih2YXIgcj1bXSxvPXQ7aT49MDspci5wdXNoKG8pLG8rPW4saS09MTtyZXR1cm57cmVzdWx0OnIsbmljZU1pbjpyWzBdLG5pY2VNYXg6cltyLmxlbmd0aC0xXX19fSx7a2V5OiJsb2dhcml0aG1pY1NjYWxlTmljZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe2U8PTAmJihlPU1hdGgubWF4KHQsaSkpLHQ8PTAmJih0PU1hdGgubWluKGUsaSkpO2Zvcih2YXIgcz1bXSxhPU1hdGguY2VpbChNYXRoLmxvZyhlKS9NYXRoLmxvZyhpKSsxKSxuPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5sb2coaSkpO248YTtuKyspcy5wdXNoKE1hdGgucG93KGksbikpO3JldHVybntyZXN1bHQ6cyxuaWNlTWluOnNbMF0sbmljZU1heDpzW3MubGVuZ3RoLTFdfX19LHtrZXk6ImxvZ2FyaXRobWljU2NhbGUiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtlPD0wJiYoZT1NYXRoLm1heCh0LGkpKSx0PD0wJiYodD1NYXRoLm1pbihlLGkpKTtmb3IodmFyIHM9W10sYT1NYXRoLmxvZyhlKS9NYXRoLmxvZyhpKSxuPU1hdGgubG9nKHQpL01hdGgubG9nKGkpLHI9YS1uLG89TWF0aC5yb3VuZChyKSxsPXIvbyxjPTAsaD1uO2M8bztjKyssaCs9bClzLnB1c2goTWF0aC5wb3coaSxoKSk7cmV0dXJuIHMucHVzaChNYXRoLnBvdyhpLGEpKSx7cmVzdWx0OnMsbmljZU1pbjp0LG5pY2VNYXg6ZX19fSx7a2V5OiJfYWRqdXN0VGlja3NGb3JTbWFsbFJhbmdlIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dDtpZih2b2lkIDAhPT1lJiZ0aGlzLncuY29uZmlnLnlheGlzW2VdLmxhYmVscy5mb3JtYXR0ZXImJnZvaWQgMD09PXRoaXMudy5jb25maWcueWF4aXNbZV0udGlja0Ftb3VudCl7dmFyIGE9dGhpcy53LmNvbmZpZy55YXhpc1tlXS5sYWJlbHMuZm9ybWF0dGVyKDEpO2IuaXNOdW1iZXIoTnVtYmVyKGEpKSYmIWIuaXNGbG9hdChhKSYmKHM9TWF0aC5jZWlsKGkpKX1yZXR1cm4gczx0P3M6dH19LHtrZXk6InNldFlTY2FsZUZvckluZGV4Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy53Lmdsb2JhbHMsYT10aGlzLncuY29uZmlnLG49cy5pc0Jhckhvcml6b250YWw/YS54YXhpczphLnlheGlzW3RdO3ZvaWQgMD09PXMueUF4aXNTY2FsZVt0XSYmKHMueUF4aXNTY2FsZVt0XT1bXSk7dmFyIHI9TWF0aC5hYnMoaS1lKTtpZihuLmxvZ2FyaXRobWljJiZyPD01JiYocy5pbnZhbGlkTG9nU2NhbGU9ITApLG4ubG9nYXJpdGhtaWMmJnI+NSlzLmFsbFNlcmllc0NvbGxhcHNlZD0hMSxzLnlBeGlzU2NhbGVbdF09dGhpcy5sb2dhcml0aG1pY1NjYWxlKGUsaSxuLmxvZ0Jhc2UpLHMueUF4aXNTY2FsZVt0XT1uLmZvcmNlTmljZVNjYWxlP3RoaXMubG9nYXJpdGhtaWNTY2FsZU5pY2UoZSxpLG4ubG9nQmFzZSk6dGhpcy5sb2dhcml0aG1pY1NjYWxlKGUsaSxuLmxvZ0Jhc2UpO2Vsc2UgaWYoaSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiZiLmlzTnVtYmVyKGkpKWlmKHMuYWxsU2VyaWVzQ29sbGFwc2VkPSExLHZvaWQgMD09PW4ubWluJiZ2b2lkIDA9PT1uLm1heHx8bi5mb3JjZU5pY2VTY2FsZSl7dmFyIG89dm9pZCAwPT09YS55YXhpc1t0XS5tYXgmJnZvaWQgMD09PWEueWF4aXNbdF0ubWlufHxhLnlheGlzW3RdLmZvcmNlTmljZVNjYWxlO3MueUF4aXNTY2FsZVt0XT10aGlzLm5pY2VTY2FsZShlLGksbi50aWNrQW1vdW50P24udGlja0Ftb3VudDpyPDUmJnI+MT9yKzE6NSx0LG8pfWVsc2Ugcy55QXhpc1NjYWxlW3RdPXRoaXMubGluZWFyU2NhbGUoZSxpLG4udGlja0Ftb3VudCx0KTtlbHNlIHMueUF4aXNTY2FsZVt0XT10aGlzLmxpbmVhclNjYWxlKDAsNSw1KX19LHtrZXk6InNldFhTY2FsZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz1pLmdsb2JhbHMsYT1pLmNvbmZpZy54YXhpcyxuPU1hdGguYWJzKGUtdCk7cmV0dXJuIGUhPT0tTnVtYmVyLk1BWF9WQUxVRSYmYi5pc051bWJlcihlKT9zLnhBeGlzU2NhbGU9dGhpcy5saW5lYXJTY2FsZSh0LGUsYS50aWNrQW1vdW50P2EudGlja0Ftb3VudDpuPDUmJm4+MT9uKzE6NSwwKTpzLnhBeGlzU2NhbGU9dGhpcy5saW5lYXJTY2FsZSgwLDUsNSkscy54QXhpc1NjYWxlfX0se2tleToic2V0TXVsdGlwbGVZU2NhbGVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWcscz1lLm1pbllBcnIuY29uY2F0KFtdKSxhPWUubWF4WUFyci5jb25jYXQoW10pLG49W107aS55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihlLHIpe3ZhciBvPXI7aS5zZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt0Lm5hbWU9PT1lLnNlcmllc05hbWUmJihvPWksciE9PWk/bi5wdXNoKHtpbmRleDppLHNpbWlsYXJJbmRleDpyLGFscmVhZHlFeGlzdHM6ITB9KTpuLnB1c2goe2luZGV4Oml9KSl9KSk7dmFyIGw9c1tvXSxjPWFbb107dC5zZXRZU2NhbGVGb3JJbmRleChyLGwsYyl9KSksdGhpcy5zYW1lU2NhbGVJbk11bHRpcGxlQXhlcyhzLGEsbil9fSx7a2V5OiJzYW1lU2NhbGVJbk11bHRpcGxlQXhlcyIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXMsYT10aGlzLncuY29uZmlnLG49dGhpcy53Lmdsb2JhbHMscj1bXTtpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuYWxyZWFkeUV4aXN0cyYmKHZvaWQgMD09PXJbdC5pbmRleF0mJihyW3QuaW5kZXhdPVtdKSxyW3QuaW5kZXhdLnB1c2godC5pbmRleCksclt0LmluZGV4XS5wdXNoKHQuc2ltaWxhckluZGV4KSl9KSksbi55QXhpc1NhbWVTY2FsZUluZGljZXM9cixyLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7ci5mb3JFYWNoKChmdW5jdGlvbihpLHMpe3ZhciBhLG47ZSE9PXMmJihhPXQsbj1pLGEuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMSE9PW4uaW5kZXhPZih0KX0pKSkubGVuZ3RoPjAmJihyW2VdPXJbZV0uY29uY2F0KHJbc10pKX0pKX0pKTt2YXIgbz1yLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbihlLGkpe3JldHVybiB0LmluZGV4T2YoZSk9PT1pfSkpfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc29ydCgpfSkpO3I9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pKTt2YXIgbD1vLnNsaWNlKCksYz1sLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfSkpO2w9bC5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGMuaW5kZXhPZihKU09OLnN0cmluZ2lmeSh0KSk9PT1lfSkpO3ZhciBoPVtdLGQ9W107dC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2wuZm9yRWFjaCgoZnVuY3Rpb24ocyxhKXtzLmluZGV4T2YoaSk+LTEmJih2b2lkIDA9PT1oW2FdJiYoaFthXT1bXSxkW2FdPVtdKSxoW2FdLnB1c2goe2tleTppLHZhbHVlOnR9KSxkW2FdLnB1c2goe2tleTppLHZhbHVlOmVbaV19KSl9KSl9KSk7dmFyIHU9QXJyYXkuYXBwbHkobnVsbCxBcnJheShsLmxlbmd0aCkpLm1hcChOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YsTnVtYmVyLk1JTl9WQUxVRSkscD1BcnJheS5hcHBseShudWxsLEFycmF5KGwubGVuZ3RoKSkubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiwtTnVtYmVyLk1BWF9WQUxVRSk7aC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt1W2VdPU1hdGgubWluKHQudmFsdWUsdVtlXSl9KSl9KSksZC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtwW2VdPU1hdGgubWF4KHQudmFsdWUscFtlXSl9KSl9KSksdC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe2QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgcj11W2ldLG89cFtpXTthLmNoYXJ0LnN0YWNrZWQmJihvPTAsdC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QudmFsdWUhPT0tTnVtYmVyLk1BWF9WQUxVRSYmKG8rPXQudmFsdWUpLHIhPT1OdW1iZXIuTUlOX1ZBTFVFJiYocis9aFtpXVtlXS52YWx1ZSl9KSkpLHQuZm9yRWFjaCgoZnVuY3Rpb24oaSxsKXt0W2xdLmtleT09PWUmJih2b2lkIDAhPT1hLnlheGlzW2VdLm1pbiYmKHI9ImZ1bmN0aW9uIj09dHlwZW9mIGEueWF4aXNbZV0ubWluP2EueWF4aXNbZV0ubWluKG4ubWluWSk6YS55YXhpc1tlXS5taW4pLHZvaWQgMCE9PWEueWF4aXNbZV0ubWF4JiYobz0iZnVuY3Rpb24iPT10eXBlb2YgYS55YXhpc1tlXS5tYXg/YS55YXhpc1tlXS5tYXgobi5tYXhZKTphLnlheGlzW2VdLm1heCkscy5zZXRZU2NhbGVGb3JJbmRleChlLHIsbykpfSkpfSkpfSkpfX0se2tleToiYXV0b1NjYWxlWSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3R8fCh0PXRoaXMpO3ZhciBzPXQudztpZihzLmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzfHxzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aClyZXR1cm4gY29uc29sZS53YXJuKCJhdXRvU2NhbGVZYXhpcyBpcyBub3Qgc3VwcG9ydGVkIGluIGEgbXVsdGkteWF4aXMgY2hhcnQuIiksZTt2YXIgYT1zLmdsb2JhbHMuc2VyaWVzWFswXSxuPXMuY29uZmlnLmNoYXJ0LnN0YWNrZWQ7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24odCxyKXtmb3IodmFyIG89MCxsPTA7bDxhLmxlbmd0aDtsKyspaWYoYVtsXT49aS54YXhpcy5taW4pe289bDticmVha312YXIgYyxoLGQ9cy5nbG9iYWxzLm1pbllBcnJbcl0sdT1zLmdsb2JhbHMubWF4WUFycltyXSxwPXMuZ2xvYmFscy5zdGFja2VkU2VyaWVzVG90YWxzO3MuZ2xvYmFscy5zZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24ocixsKXt2YXIgZz1yW29dO24/KGc9cFtvXSxjPWg9ZyxwLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7YVtlXTw9aS54YXhpcy5tYXgmJmFbZV0+PWkueGF4aXMubWluJiYodD5oJiZudWxsIT09dCYmKGg9dCkscltlXTxjJiZudWxsIT09cltlXSYmKGM9cltlXSkpfSkpKTooYz1oPWcsci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe2lmKGFbZV08PWkueGF4aXMubWF4JiZhW2VdPj1pLnhheGlzLm1pbil7dmFyIG49dCxyPXQ7cy5nbG9iYWxzLnNlcmllcy5mb3JFYWNoKChmdW5jdGlvbihpLHMpe251bGwhPT10JiYobj1NYXRoLm1pbihpW2VdLG4pLHI9TWF0aC5tYXgoaVtlXSxyKSl9KSkscj5oJiZudWxsIT09ciYmKGg9ciksbjxjJiZudWxsIT09biYmKGM9bil9fSkpKSx2b2lkIDA9PT1jJiZ2b2lkIDA9PT1oJiYoYz1kLGg9dSksaCo9aDwwPy45OjEuMSwwPT0oYyo9YzwwPzEuMTouOSkmJjA9PT1oJiYoYz0tMSxoPTEpLGg8MCYmaDx1JiYoaD11KSxjPDAmJmM+ZCYmKGM9ZCksZS5sZW5ndGg+MT8oZVtsXS5taW49dm9pZCAwPT09dC5taW4/Yzp0Lm1pbixlW2xdLm1heD12b2lkIDA9PT10Lm1heD9oOnQubWF4KTooZVswXS5taW49dm9pZCAwPT09dC5taW4/Yzp0Lm1pbixlWzBdLm1heD12b2lkIDA9PT10Lm1heD9oOnQubWF4KX0pKX0pKSxlfX1dKSx0fSgpLFo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5zY2FsZXM9bmV3IHEoZSl9cmV0dXJuIGModCxbe2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldFlSYW5nZSgpLHRoaXMuc2V0WFJhbmdlKCksdGhpcy5zZXRaUmFuZ2UoKX19LHtrZXk6ImdldE1pbllNYXhZIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06TnVtYmVyLk1BWF9WQUxVRSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTotTnVtYmVyLk1BWF9WQUxVRSxzPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsLGE9dGhpcy53LmNvbmZpZyxuPXRoaXMudy5nbG9iYWxzLHI9LU51bWJlci5NQVhfVkFMVUUsbz1OdW1iZXIuTUlOX1ZBTFVFO251bGw9PT1zJiYocz10KzEpO3ZhciBsPW4uc2VyaWVzLGM9bCxoPWw7ImNhbmRsZXN0aWNrIj09PWEuY2hhcnQudHlwZT8oYz1uLnNlcmllc0NhbmRsZUwsaD1uLnNlcmllc0NhbmRsZUgpOiJib3hQbG90Ij09PWEuY2hhcnQudHlwZT8oYz1uLnNlcmllc0NhbmRsZU8saD1uLnNlcmllc0NhbmRsZUMpOm4uaXNSYW5nZURhdGEmJihjPW4uc2VyaWVzUmFuZ2VTdGFydCxoPW4uc2VyaWVzUmFuZ2VFbmQpO2Zvcih2YXIgZD10O2Q8cztkKyspe24uZGF0YVBvaW50cz1NYXRoLm1heChuLmRhdGFQb2ludHMsbFtkXS5sZW5ndGgpLG4uY2F0ZWdvcnlMYWJlbHMubGVuZ3RoJiYobi5kYXRhUG9pbnRzPW4uY2F0ZWdvcnlMYWJlbHMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dH0pKS5sZW5ndGgpO2Zvcih2YXIgdT0wO3U8bi5zZXJpZXNbZF0ubGVuZ3RoO3UrKyl7dmFyIHA9bFtkXVt1XTtudWxsIT09cCYmYi5pc051bWJlcihwKT8odm9pZCAwIT09aFtkXVt1XSYmKHI9TWF0aC5tYXgocixoW2RdW3VdKSxlPU1hdGgubWluKGUsaFtkXVt1XSkpLHZvaWQgMCE9PWNbZF1bdV0mJihlPU1hdGgubWluKGUsY1tkXVt1XSksaT1NYXRoLm1heChpLGNbZF1bdV0pKSwiY2FuZGxlc3RpY2siIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiYiYm94UGxvdCIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJiJyYW5nZUFyZWEiPT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiYicmFuZ2VCYXIiPT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlfHwoImNhbmRsZXN0aWNrIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmImJveFBsb3QiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlfHx2b2lkIDAhPT1uLnNlcmllc0NhbmRsZUNbZF1bdV0mJihyPU1hdGgubWF4KHIsbi5zZXJpZXNDYW5kbGVPW2RdW3VdKSxyPU1hdGgubWF4KHIsbi5zZXJpZXNDYW5kbGVIW2RdW3VdKSxyPU1hdGgubWF4KHIsbi5zZXJpZXNDYW5kbGVMW2RdW3VdKSxyPU1hdGgubWF4KHIsbi5zZXJpZXNDYW5kbGVDW2RdW3VdKSwiYm94UGxvdCI9PT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJihyPU1hdGgubWF4KHIsbi5zZXJpZXNDYW5kbGVNW2RdW3VdKSkpLCFhLnNlcmllc1tkXS50eXBlfHwiY2FuZGxlc3RpY2siPT09YS5zZXJpZXNbZF0udHlwZSYmImJveFBsb3QiPT09YS5zZXJpZXNbZF0udHlwZSYmInJhbmdlQXJlYSI9PT1hLnNlcmllc1tkXS50eXBlJiYicmFuZ2VCYXIiPT09YS5zZXJpZXNbZF0udHlwZXx8KHI9TWF0aC5tYXgocixuLnNlcmllc1tkXVt1XSksZT1NYXRoLm1pbihlLG4uc2VyaWVzW2RdW3VdKSksaT1yKSxuLnNlcmllc0dvYWxzW2RdJiZuLnNlcmllc0dvYWxzW2RdW3VdJiZBcnJheS5pc0FycmF5KG4uc2VyaWVzR29hbHNbZF1bdV0pJiZuLnNlcmllc0dvYWxzW2RdW3VdLmZvckVhY2goKGZ1bmN0aW9uKHQpe28hPT1OdW1iZXIuTUlOX1ZBTFVFJiYobz1NYXRoLm1pbihvLHQudmFsdWUpLGU9bykscj1NYXRoLm1heChyLHQudmFsdWUpLGk9cn0pKSxiLmlzRmxvYXQocCkmJihwPWIubm9FeHBvbmVudHMocCksbi55VmFsdWVEZWNpbWFsPU1hdGgubWF4KG4ueVZhbHVlRGVjaW1hbCxwLnRvU3RyaW5nKCkuc3BsaXQoIi4iKVsxXS5sZW5ndGgpKSxvPmNbZF1bdV0mJmNbZF1bdV08MCYmKG89Y1tkXVt1XSkpOm4uaGFzTnVsbFZhbHVlcz0hMH19cmV0dXJuInJhbmdlQmFyIj09PWEuY2hhcnQudHlwZSYmbi5zZXJpZXNSYW5nZVN0YXJ0Lmxlbmd0aCYmbi5pc0Jhckhvcml6b250YWwmJihvPWUpLCJiYXIiPT09YS5jaGFydC50eXBlJiYobzwwJiZyPDAmJihyPTApLG89PT1OdW1iZXIuTUlOX1ZBTFVFJiYobz0wKSkse21pblk6byxtYXhZOnIsbG93ZXN0WTplLGhpZ2hlc3RZOml9fX0se2tleToic2V0WVJhbmdlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZzt0Lm1heFk9LU51bWJlci5NQVhfVkFMVUUsdC5taW5ZPU51bWJlci5NSU5fVkFMVUU7dmFyIGk9TnVtYmVyLk1BWF9WQUxVRTtpZih0LmlzTXVsdGlwbGVZQXhpcylmb3IodmFyIHM9MDtzPHQuc2VyaWVzLmxlbmd0aDtzKyspe3ZhciBhPXRoaXMuZ2V0TWluWU1heFkocyxpLG51bGwscysxKTt0Lm1pbllBcnIucHVzaChhLm1pblkpLHQubWF4WUFyci5wdXNoKGEubWF4WSksaT1hLmxvd2VzdFl9dmFyIG49dGhpcy5nZXRNaW5ZTWF4WSgwLGksbnVsbCx0LnNlcmllcy5sZW5ndGgpO2lmKHQubWluWT1uLm1pblksdC5tYXhZPW4ubWF4WSxpPW4ubG93ZXN0WSxlLmNoYXJ0LnN0YWNrZWQmJnRoaXMuX3NldFN0YWNrZWRNaW5NYXgoKSwoImxpbmUiPT09ZS5jaGFydC50eXBlfHwiYXJlYSI9PT1lLmNoYXJ0LnR5cGV8fCJjYW5kbGVzdGljayI9PT1lLmNoYXJ0LnR5cGV8fCJib3hQbG90Ij09PWUuY2hhcnQudHlwZXx8InJhbmdlQmFyIj09PWUuY2hhcnQudHlwZSYmIXQuaXNCYXJIb3Jpem9udGFsKSYmdC5taW5ZPT09TnVtYmVyLk1JTl9WQUxVRSYmaSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiZpIT09dC5tYXhZKXt2YXIgcj10Lm1heFktaTsoaT49MCYmaTw9MTB8fHZvaWQgMCE9PWUueWF4aXNbMF0ubWlufHx2b2lkIDAhPT1lLnlheGlzWzBdLm1heCkmJihyPTApLHQubWluWT1pLTUqci8xMDAsaT4wJiZ0Lm1pblk8MCYmKHQubWluWT0wKSx0Lm1heFk9dC5tYXhZKzUqci8xMDB9cmV0dXJuIGUueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt2b2lkIDAhPT1lLm1heCYmKCJudW1iZXIiPT10eXBlb2YgZS5tYXg/dC5tYXhZQXJyW2ldPWUubWF4OiJmdW5jdGlvbiI9PXR5cGVvZiBlLm1heCYmKHQubWF4WUFycltpXT1lLm1heCh0LmlzTXVsdGlwbGVZQXhpcz90Lm1heFlBcnJbaV06dC5tYXhZKSksdC5tYXhZPXQubWF4WUFycltpXSksdm9pZCAwIT09ZS5taW4mJigibnVtYmVyIj09dHlwZW9mIGUubWluP3QubWluWUFycltpXT1lLm1pbjoiZnVuY3Rpb24iPT10eXBlb2YgZS5taW4mJih0Lm1pbllBcnJbaV09ZS5taW4odC5pc011bHRpcGxlWUF4aXM/dC5taW5ZQXJyW2ldPT09TnVtYmVyLk1JTl9WQUxVRT8wOnQubWluWUFycltpXTp0Lm1pblkpKSx0Lm1pblk9dC5taW5ZQXJyW2ldKX0pKSx0LmlzQmFySG9yaXpvbnRhbCYmWyJtaW4iLCJtYXgiXS5mb3JFYWNoKChmdW5jdGlvbihpKXt2b2lkIDAhPT1lLnhheGlzW2ldJiYibnVtYmVyIj09dHlwZW9mIGUueGF4aXNbaV0mJigibWluIj09PWk/dC5taW5ZPWUueGF4aXNbaV06dC5tYXhZPWUueGF4aXNbaV0pfSkpLHQuaXNNdWx0aXBsZVlBeGlzPyh0aGlzLnNjYWxlcy5zZXRNdWx0aXBsZVlTY2FsZXMoKSx0Lm1pblk9aSx0LnlBeGlzU2NhbGUuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt0Lm1pbllBcnJbaV09ZS5uaWNlTWluLHQubWF4WUFycltpXT1lLm5pY2VNYXh9KSkpOih0aGlzLnNjYWxlcy5zZXRZU2NhbGVGb3JJbmRleCgwLHQubWluWSx0Lm1heFkpLHQubWluWT10LnlBeGlzU2NhbGVbMF0ubmljZU1pbix0Lm1heFk9dC55QXhpc1NjYWxlWzBdLm5pY2VNYXgsdC5taW5ZQXJyWzBdPXQueUF4aXNTY2FsZVswXS5uaWNlTWluLHQubWF4WUFyclswXT10LnlBeGlzU2NhbGVbMF0ubmljZU1heCkse21pblk6dC5taW5ZLG1heFk6dC5tYXhZLG1pbllBcnI6dC5taW5ZQXJyLG1heFlBcnI6dC5tYXhZQXJyLHlBeGlzU2NhbGU6dC55QXhpc1NjYWxlfX19LHtrZXk6InNldFhSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWcsaT0ibnVtZXJpYyI9PT1lLnhheGlzLnR5cGV8fCJkYXRldGltZSI9PT1lLnhheGlzLnR5cGV8fCJjYXRlZ29yeSI9PT1lLnhheGlzLnR5cGUmJiF0Lm5vTGFiZWxzUHJvdmlkZWR8fHQubm9MYWJlbHNQcm92aWRlZHx8dC5pc1hOdW1lcmljO2lmKHQuaXNYTnVtZXJpYyYmZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHQuc2VyaWVzLmxlbmd0aDtlKyspaWYodC5sYWJlbHNbZV0pZm9yKHZhciBpPTA7aTx0LmxhYmVsc1tlXS5sZW5ndGg7aSsrKW51bGwhPT10LmxhYmVsc1tlXVtpXSYmYi5pc051bWJlcih0LmxhYmVsc1tlXVtpXSkmJih0Lm1heFg9TWF0aC5tYXgodC5tYXhYLHQubGFiZWxzW2VdW2ldKSx0LmluaXRpYWxNYXhYPU1hdGgubWF4KHQubWF4WCx0LmxhYmVsc1tlXVtpXSksdC5taW5YPU1hdGgubWluKHQubWluWCx0LmxhYmVsc1tlXVtpXSksdC5pbml0aWFsTWluWD1NYXRoLm1pbih0Lm1pblgsdC5sYWJlbHNbZV1baV0pKX0oKSx0Lm5vTGFiZWxzUHJvdmlkZWQmJjA9PT1lLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoJiYodC5tYXhYPXQubGFiZWxzW3QubGFiZWxzLmxlbmd0aC0xXSx0LmluaXRpYWxNYXhYPXQubGFiZWxzW3QubGFiZWxzLmxlbmd0aC0xXSx0Lm1pblg9MSx0LmluaXRpYWxNaW5YPTEpLHQuaXNYTnVtZXJpY3x8dC5ub0xhYmVsc1Byb3ZpZGVkfHx0LmRhdGFGb3JtYXRYTnVtZXJpYyl7dmFyIHM7aWYodm9pZCAwPT09ZS54YXhpcy50aWNrQW1vdW50PyhzPU1hdGgucm91bmQodC5zdmdXaWR0aC8xNTApLCJudW1lcmljIj09PWUueGF4aXMudHlwZSYmdC5kYXRhUG9pbnRzPDMwJiYocz10LmRhdGFQb2ludHMtMSkscz50LmRhdGFQb2ludHMmJjAhPT10LmRhdGFQb2ludHMmJihzPXQuZGF0YVBvaW50cy0xKSk6ImRhdGFQb2ludHMiPT09ZS54YXhpcy50aWNrQW1vdW50Pyh0LnNlcmllcy5sZW5ndGg+MSYmKHM9dC5zZXJpZXNbdC5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMSksdC5pc1hOdW1lcmljJiYocz10Lm1heFgtdC5taW5YLTEpKTpzPWUueGF4aXMudGlja0Ftb3VudCx0LnhUaWNrQW1vdW50PXMsdm9pZCAwIT09ZS54YXhpcy5tYXgmJiJudW1iZXIiPT10eXBlb2YgZS54YXhpcy5tYXgmJih0Lm1heFg9ZS54YXhpcy5tYXgpLHZvaWQgMCE9PWUueGF4aXMubWluJiYibnVtYmVyIj09dHlwZW9mIGUueGF4aXMubWluJiYodC5taW5YPWUueGF4aXMubWluKSx2b2lkIDAhPT1lLnhheGlzLnJhbmdlJiYodC5taW5YPXQubWF4WC1lLnhheGlzLnJhbmdlKSx0Lm1pblghPT1OdW1iZXIuTUFYX1ZBTFVFJiZ0Lm1heFghPT0tTnVtYmVyLk1BWF9WQUxVRSlpZihlLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmIXQuZGF0YUZvcm1hdFhOdW1lcmljKXtmb3IodmFyIGE9W10sbj10Lm1pblgtMTtuPHQubWF4WDtuKyspYS5wdXNoKG4rMSk7dC54QXhpc1NjYWxlPXtyZXN1bHQ6YSxuaWNlTWluOmFbMF0sbmljZU1heDphW2EubGVuZ3RoLTFdfX1lbHNlIHQueEF4aXNTY2FsZT10aGlzLnNjYWxlcy5zZXRYU2NhbGUodC5taW5YLHQubWF4WCk7ZWxzZSB0LnhBeGlzU2NhbGU9dGhpcy5zY2FsZXMubGluZWFyU2NhbGUoMSxzLHMpLHQubm9MYWJlbHNQcm92aWRlZCYmdC5sYWJlbHMubGVuZ3RoPjAmJih0LnhBeGlzU2NhbGU9dGhpcy5zY2FsZXMubGluZWFyU2NhbGUoMSx0LmxhYmVscy5sZW5ndGgscy0xKSx0LnNlcmllc1g9dC5sYWJlbHMuc2xpY2UoKSk7aSYmKHQubGFiZWxzPXQueEF4aXNTY2FsZS5yZXN1bHQuc2xpY2UoKSl9cmV0dXJuIHQuaXNCYXJIb3Jpem9udGFsJiZ0LmxhYmVscy5sZW5ndGgmJih0LnhUaWNrQW1vdW50PXQubGFiZWxzLmxlbmd0aCksdGhpcy5faGFuZGxlU2luZ2xlRGF0YVBvaW50KCksdGhpcy5fZ2V0TWluWERpZmYoKSx7bWluWDp0Lm1pblgsbWF4WDp0Lm1heFh9fX0se2tleToic2V0WlJhbmdlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzO2lmKHQuaXNEYXRhWFlaKWZvcih2YXIgZT0wO2U8dC5zZXJpZXMubGVuZ3RoO2UrKylpZih2b2lkIDAhPT10LnNlcmllc1pbZV0pZm9yKHZhciBpPTA7aTx0LnNlcmllc1pbZV0ubGVuZ3RoO2krKyludWxsIT09dC5zZXJpZXNaW2VdW2ldJiZiLmlzTnVtYmVyKHQuc2VyaWVzWltlXVtpXSkmJih0Lm1heFo9TWF0aC5tYXgodC5tYXhaLHQuc2VyaWVzWltlXVtpXSksdC5taW5aPU1hdGgubWluKHQubWluWix0LnNlcmllc1pbZV1baV0pKX19LHtrZXk6Il9oYW5kbGVTaW5nbGVEYXRhUG9pbnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10aGlzLncuY29uZmlnO2lmKHQubWluWD09PXQubWF4WCl7dmFyIGk9bmV3IE8odGhpcy5jdHgpO2lmKCJkYXRldGltZSI9PT1lLnhheGlzLnR5cGUpe3ZhciBzPWkuZ2V0RGF0ZSh0Lm1pblgpO2UueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDP3Muc2V0VVRDRGF0ZShzLmdldFVUQ0RhdGUoKS0yKTpzLnNldERhdGUocy5nZXREYXRlKCktMiksdC5taW5YPW5ldyBEYXRlKHMpLmdldFRpbWUoKTt2YXIgYT1pLmdldERhdGUodC5tYXhYKTtlLnhheGlzLmxhYmVscy5kYXRldGltZVVUQz9hLnNldFVUQ0RhdGUoYS5nZXRVVENEYXRlKCkrMik6YS5zZXREYXRlKGEuZ2V0RGF0ZSgpKzIpLHQubWF4WD1uZXcgRGF0ZShhKS5nZXRUaW1lKCl9ZWxzZSgibnVtZXJpYyI9PT1lLnhheGlzLnR5cGV8fCJjYXRlZ29yeSI9PT1lLnhheGlzLnR5cGUmJiF0Lm5vTGFiZWxzUHJvdmlkZWQpJiYodC5taW5YPXQubWluWC0yLHQuaW5pdGlhbE1pblg9dC5taW5YLHQubWF4WD10Lm1heFgrMix0LmluaXRpYWxNYXhYPXQubWF4WCl9fX0se2tleToiX2dldE1pblhEaWZmIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzO3QuaXNYTnVtZXJpYyYmdC5zZXJpZXNYLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7MT09PWUubGVuZ3RoJiZlLnB1c2godC5zZXJpZXNYW3QubWF4VmFsc0luQXJyYXlJbmRleF1bdC5zZXJpZXNYW3QubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoLTFdKTt2YXIgcz1lLnNsaWNlKCk7cy5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSkscy5mb3JFYWNoKChmdW5jdGlvbihlLGkpe2lmKGk+MCl7dmFyIGE9ZS1zW2ktMV07YT4wJiYodC5taW5YRGlmZj1NYXRoLm1pbihhLHQubWluWERpZmYpKX19KSksMSE9PXQuZGF0YVBvaW50cyYmdC5taW5YRGlmZiE9PU51bWJlci5NQVhfVkFMVUV8fCh0Lm1pblhEaWZmPS41KX0pKX19LHtrZXk6Il9zZXRTdGFja2VkTWluTWF4Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9W10saT1bXTtpZih0LnNlcmllcy5sZW5ndGgpZm9yKHZhciBzPTA7czx0LnNlcmllc1t0Lm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDtzKyspZm9yKHZhciBhPTAsbj0wLHI9MDtyPHQuc2VyaWVzLmxlbmd0aDtyKyspbnVsbCE9PXQuc2VyaWVzW3JdW3NdJiZiLmlzTnVtYmVyKHQuc2VyaWVzW3JdW3NdKSYmKHQuc2VyaWVzW3JdW3NdPjA/YT1hK3BhcnNlRmxvYXQodC5zZXJpZXNbcl1bc10pKzFlLTQ6bis9cGFyc2VGbG9hdCh0LnNlcmllc1tyXVtzXSkpLHI9PT10LnNlcmllcy5sZW5ndGgtMSYmKGUucHVzaChhKSxpLnB1c2gobikpO2Zvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKXQubWF4WT1NYXRoLm1heCh0Lm1heFksZVtvXSksdC5taW5ZPU1hdGgubWluKHQubWluWSxpW29dKX19XSksdH0oKSxLPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMuZWxncmlkPWksdGhpcy53PWUudzt2YXIgcz10aGlzLnc7dGhpcy54YXhpc0ZvbnRTaXplPXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSx0aGlzLmF4aXNGb250RmFtaWx5PXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LHRoaXMueGF4aXNGb3JlQ29sb3JzPXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jb2xvcnMsdGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbD0iYmFyIj09PXMuY29uZmlnLmNoYXJ0LnR5cGUmJnMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLHRoaXMueEF4aXNvZmZYPTAsImJvdHRvbSI9PT1zLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKHRoaXMueEF4aXNvZmZYPXMuZ2xvYmFscy5ncmlkSGVpZ2h0KSx0aGlzLmRyYXduTGFiZWxzPVtdLHRoaXMuYXhlc1V0aWxzPW5ldyBWKGUpfXJldHVybiBjKHQsW3trZXk6ImRyYXdZYXhpcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxzPW5ldyBrKHRoaXMuY3R4KSxhPWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5zdHlsZSxuPWEuZm9udFNpemUscj1hLmZvbnRGYW1pbHksbz1hLmZvbnRXZWlnaHQsbD1zLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy15YXhpcyIscmVsOnQsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoIitpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdKyIsIDApIn0pO2lmKHRoaXMuYXhlc1V0aWxzLmlzWUF4aXNIaWRkZW4odCkpcmV0dXJuIGw7dmFyIGM9cy5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMteWF4aXMtdGV4dHMtZyJ9KTtsLmFkZChjKTt2YXIgaD1pLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQubGVuZ3RoLTEsZD1pLmdsb2JhbHMuZ3JpZEhlaWdodC9oLHU9aS5nbG9iYWxzLnRyYW5zbGF0ZVkscD1pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1t0XSxnPWkuZ2xvYmFscy55QXhpc1NjYWxlW3RdLnJlc3VsdC5zbGljZSgpO2c9dGhpcy5heGVzVXRpbHMuY2hlY2tGb3JSZXZlcnNlZExhYmVscyh0LGcpO3ZhciBmPSIiO2lmKGkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5zaG93KWZvcih2YXIgbT1mdW5jdGlvbihsKXt2YXIgbT1nW2xdO209cChtLGwsaSk7dmFyIHY9aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnBhZGRpbmc7aS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJjAhPT1pLmNvbmZpZy55YXhpcy5sZW5ndGgmJih2Kj0tMSk7dmFyIHg9ZS5heGVzVXRpbHMuZ2V0WUF4aXNGb3JlQ29sb3IoYS5jb2xvcnMsdCksYj1zLmRyYXdUZXh0KHt4OnYseTp1K2gvMTAraS5jb25maWcueWF4aXNbdF0ubGFiZWxzLm9mZnNldFkrMSx0ZXh0Om0sdGV4dEFuY2hvcjppLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZT8ic3RhcnQiOiJlbmQiLGZvbnRTaXplOm4sZm9udEZhbWlseTpyLGZvbnRXZWlnaHQ6byxtYXhXaWR0aDppLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMubWF4V2lkdGgsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkoeCk/eFtsXTp4LGlzUGxhaW5UZXh0OiExLGNzc0NsYXNzOiJhcGV4Y2hhcnRzLXlheGlzLWxhYmVsICIrYS5jc3NDbGFzc30pO2w9PT1oJiYoZj1iKSxjLmFkZChiKTt2YXIgeT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoaS5nbG9iYWxzLlNWR05TLCJ0aXRsZSIpO2lmKHkudGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheShtKT9tLmpvaW4oIiAiKTptLGIubm9kZS5hcHBlbmRDaGlsZCh5KSwwIT09aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnJvdGF0ZSl7dmFyIHc9cy5yb3RhdGVBcm91bmRDZW50ZXIoZi5ub2RlKSxrPXMucm90YXRlQXJvdW5kQ2VudGVyKGIubm9kZSk7Yi5ub2RlLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwicm90YXRlKCIuY29uY2F0KGkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUsIiAiKS5jb25jYXQody54LCIgIikuY29uY2F0KGsueSwiKSIpKX11Kz1kfSx2PWg7dj49MDt2LS0pbSh2KTtpZih2b2lkIDAhPT1pLmNvbmZpZy55YXhpc1t0XS50aXRsZS50ZXh0KXt2YXIgeD1zLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy15YXhpcy10aXRsZSJ9KSxiPTA7aS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJihiPWkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbdF0pO3ZhciB5PXMuZHJhd1RleHQoe3g6Yix5OmkuZ2xvYmFscy5ncmlkSGVpZ2h0LzIraS5nbG9iYWxzLnRyYW5zbGF0ZVkraS5jb25maWcueWF4aXNbdF0udGl0bGUub2Zmc2V0WSx0ZXh0OmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnRleHQsdGV4dEFuY2hvcjoiZW5kIixmb3JlQ29sb3I6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuY29sb3IsZm9udFNpemU6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuZm9udFNpemUsZm9udFdlaWdodDppLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvbnRGYW1pbHk6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuZm9udEZhbWlseSxjc3NDbGFzczoiYXBleGNoYXJ0cy15YXhpcy10aXRsZS10ZXh0ICIraS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTt4LmFkZCh5KSxsLmFkZCh4KX12YXIgdz1pLmNvbmZpZy55YXhpc1t0XS5heGlzQm9yZGVyLFM9MzErdy5vZmZzZXRYO2lmKGkuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYoUz0tMzEtdy5vZmZzZXRYKSx3LnNob3cpe3ZhciBDPXMuZHJhd0xpbmUoUyxpLmdsb2JhbHMudHJhbnNsYXRlWSt3Lm9mZnNldFktMixTLGkuZ2xvYmFscy5ncmlkSGVpZ2h0K2kuZ2xvYmFscy50cmFuc2xhdGVZK3cub2Zmc2V0WSsyLHcuY29sb3IsMCx3LndpZHRoKTtsLmFkZChDKX1yZXR1cm4gaS5jb25maWcueWF4aXNbdF0uYXhpc1RpY2tzLnNob3cmJnRoaXMuYXhlc1V0aWxzLmRyYXdZQXhpc1RpY2tzKFMsaCx3LGkuY29uZmlnLnlheGlzW3RdLmF4aXNUaWNrcyx0LGQsbCksbH19LHtrZXk6ImRyYXdZYXhpc0ludmVyc2VkIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgayh0aGlzLmN0eCkscz1pLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy14YXhpcyBhcGV4Y2hhcnRzLXlheGlzLWludmVyc2VkIn0pLGE9aS5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyIsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoIi5jb25jYXQoZS5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWCwiLCAiKS5jb25jYXQoZS5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWSwiKSIpfSk7cy5hZGQoYSk7dmFyIG49ZS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0Lmxlbmd0aC0xLHI9ZS5nbG9iYWxzLmdyaWRXaWR0aC9uKy4xLG89citlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WCxsPWUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsYz1lLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQuc2xpY2UoKSxoPWUuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHM7aC5sZW5ndGg+MCYmKHRoaXMueGF4aXNMYWJlbHM9aC5zbGljZSgpLG49KGM9aC5zbGljZSgpKS5sZW5ndGgpLGM9dGhpcy5heGVzVXRpbHMuY2hlY2tGb3JSZXZlcnNlZExhYmVscyh0LGMpO3ZhciBkPWgubGVuZ3RoO2lmKGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93KWZvcih2YXIgdT1kPzA6bjtkP3U8ZDp1Pj0wO2Q/dSsrOnUtLSl7dmFyIHA9Y1t1XTtwPWwocCx1LGUpO3ZhciBnPWUuZ2xvYmFscy5ncmlkV2lkdGgrZS5nbG9iYWxzLnBhZEhvcml6b250YWwtKG8tcitlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WCk7aWYoaC5sZW5ndGgpe3ZhciBmPXRoaXMuYXhlc1V0aWxzLmdldExhYmVsKGMsaCxnLHUsdGhpcy5kcmF3bkxhYmVscyx0aGlzLnhheGlzRm9udFNpemUpO2c9Zi54LHA9Zi50ZXh0LHRoaXMuZHJhd25MYWJlbHMucHVzaChmLnRleHQpLDA9PT11JiZlLmdsb2JhbHMuc2tpcEZpcnN0VGltZWxpbmVsYWJlbCYmKHA9IiIpLHU9PT1jLmxlbmd0aC0xJiZlLmdsb2JhbHMuc2tpcExhc3RUaW1lbGluZWxhYmVsJiYocD0iIil9dmFyIG09aS5kcmF3VGV4dCh7eDpnLHk6dGhpcy54QXhpc29mZlgrZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFkrMzAtKCJ0b3AiPT09ZS5jb25maWcueGF4aXMucG9zaXRpb24/ZS5nbG9iYWxzLnhBeGlzSGVpZ2h0K2UuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtMjowKSx0ZXh0OnAsdGV4dEFuY2hvcjoibWlkZGxlIixmb3JlQ29sb3I6QXJyYXkuaXNBcnJheSh0aGlzLnhheGlzRm9yZUNvbG9ycyk/dGhpcy54YXhpc0ZvcmVDb2xvcnNbdF06dGhpcy54YXhpc0ZvcmVDb2xvcnMsZm9udFNpemU6dGhpcy54YXhpc0ZvbnRTaXplLGZvbnRGYW1pbHk6dGhpcy54YXhpc0ZvbnRGYW1pbHksZm9udFdlaWdodDplLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFdlaWdodCxpc1BsYWluVGV4dDohMSxjc3NDbGFzczoiYXBleGNoYXJ0cy14YXhpcy1sYWJlbCAiK2UuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jc3NDbGFzc30pO2EuYWRkKG0pLG0udHNwYW4ocCk7dmFyIHY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUywidGl0bGUiKTt2LnRleHRDb250ZW50PXAsbS5ub2RlLmFwcGVuZENoaWxkKHYpLG8rPXJ9cmV0dXJuIHRoaXMuaW52ZXJzZWRZQXhpc1RpdGxlVGV4dChzKSx0aGlzLmludmVyc2VkWUF4aXNCb3JkZXIocyksc319LHtrZXk6ImludmVyc2VkWUF4aXNCb3JkZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBrKHRoaXMuY3R4KSxzPWUuY29uZmlnLnhheGlzLmF4aXNCb3JkZXI7aWYocy5zaG93KXt2YXIgYT0wOyJiYXIiPT09ZS5jb25maWcuY2hhcnQudHlwZSYmZS5nbG9iYWxzLmlzWE51bWVyaWMmJihhLT0xNSk7dmFyIG49aS5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCthK3Mub2Zmc2V0WCx0aGlzLnhBeGlzb2ZmWCxlLmdsb2JhbHMuZ3JpZFdpZHRoLHRoaXMueEF4aXNvZmZYLHMuY29sb3IsMCxzLmhlaWdodCk7dGhpcy5lbGdyaWQmJnRoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnM/dGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycy5hZGQobik6dC5hZGQobil9fX0se2tleToiaW52ZXJzZWRZQXhpc1RpdGxlVGV4dCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IGsodGhpcy5jdHgpO2lmKHZvaWQgMCE9PWUuY29uZmlnLnhheGlzLnRpdGxlLnRleHQpe3ZhciBzPWkuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlIGFwZXhjaGFydHMteWF4aXMtdGl0bGUtaW52ZXJzZWQifSksYT1pLmRyYXdUZXh0KHt4OmUuZ2xvYmFscy5ncmlkV2lkdGgvMitlLmNvbmZpZy54YXhpcy50aXRsZS5vZmZzZXRYLHk6dGhpcy54QXhpc29mZlgrcGFyc2VGbG9hdCh0aGlzLnhheGlzRm9udFNpemUpK3BhcnNlRmxvYXQoZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpK2UuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFkrMjAsdGV4dDplLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LHRleHRBbmNob3I6Im1pZGRsZSIsZm9udFNpemU6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY29sb3IsY3NzQ2xhc3M6ImFwZXhjaGFydHMteGF4aXMtdGl0bGUtdGV4dCAiK2UuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmNzc0NsYXNzfSk7cy5hZGQoYSksdC5hZGQocyl9fX0se2tleToieUF4aXNUaXRsZVJvdGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz1uZXcgayh0aGlzLmN0eCksYT17d2lkdGg6MCxoZWlnaHQ6MH0sbj17d2lkdGg6MCxoZWlnaHQ6MH0scj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIgLmFwZXhjaGFydHMteWF4aXNbcmVsPSciLmNvbmNhdCh0LCInXSAuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nIikpO251bGwhPT1yJiYoYT1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTt2YXIgbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy15YXhpc1tyZWw9JyIuY29uY2F0KHQsIiddIC5hcGV4Y2hhcnRzLXlheGlzLXRpdGxlIHRleHQiKSk7aWYobnVsbCE9PW8mJihuPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLG51bGwhPT1vKXt2YXIgbD10aGlzLnhQYWRkaW5nRm9yWUF4aXNUaXRsZSh0LGEsbixlKTtvLnNldEF0dHJpYnV0ZSgieCIsbC54UG9zLShlPzEwOjApKX1pZihudWxsIT09byl7dmFyIGM9cy5yb3RhdGVBcm91bmRDZW50ZXIobyk7by5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsInJvdGF0ZSgiLmNvbmNhdChlPy0xKmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnJvdGF0ZTppLmNvbmZpZy55YXhpc1t0XS50aXRsZS5yb3RhdGUsIiAiKS5jb25jYXQoYy54LCIgIikuY29uY2F0KGMueSwiKSIpKX19fSx7a2V5OiJ4UGFkZGluZ0ZvcllBeGlzVGl0bGUiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhPXRoaXMudyxuPTAscj0wLG89MTA7cmV0dXJuIHZvaWQgMD09PWEuY29uZmlnLnlheGlzW3RdLnRpdGxlLnRleHR8fHQ8MD97eFBvczpyLHBhZGQ6MH06KHM/KHI9ZS53aWR0aCthLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRYK2kud2lkdGgvMitvLzIsMD09PShuKz0xKSYmKHItPW8vMikpOihyPS0xKmUud2lkdGgrYS5jb25maWcueWF4aXNbdF0udGl0bGUub2Zmc2V0WCtvLzIraS53aWR0aC8yLGEuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihvPTI1LHI9LTEqZS53aWR0aC1hLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRYLW8pKSx7eFBvczpyLHBhZGQ6b30pfX0se2tleToic2V0WUF4aXNYUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9MCxhPTAsbj0xOCxyPTE7aS5jb25maWcueWF4aXMubGVuZ3RoPjEmJih0aGlzLm11bHRpcGxlWXM9ITApLGkuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24obyxsKXt2YXIgYz1pLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YobCk+LTF8fCFvLnNob3d8fG8uZmxvYXRpbmd8fDA9PT10W2xdLndpZHRoLGg9dFtsXS53aWR0aCtlW2xdLndpZHRoO28ub3Bwb3NpdGU/aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD8oYT1pLmdsb2JhbHMuZ3JpZFdpZHRoK2kuZ2xvYmFscy50cmFuc2xhdGVYLTEsaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtsXT1hLW8ubGFiZWxzLm9mZnNldFgpOihhPWkuZ2xvYmFscy5ncmlkV2lkdGgraS5nbG9iYWxzLnRyYW5zbGF0ZVgrcixjfHwocj1yK2grMjApLGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbbF09YS1vLmxhYmVscy5vZmZzZXRYKzIwKToocz1pLmdsb2JhbHMudHJhbnNsYXRlWC1uLGN8fChuPW4raCsyMCksaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtsXT1zK28ubGFiZWxzLm9mZnNldFgpfSkpfX0se2tleToic2V0WUF4aXNUZXh0QWxpZ25tZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhcGV4Y2hhcnRzLXlheGlzIik7KGU9Yi5saXN0VG9BcnJheShlKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt2YXIgcz10LmNvbmZpZy55YXhpc1tpXTtpZihzJiZ2b2lkIDAhPT1zLmxhYmVscy5hbGlnbil7dmFyIGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMteWF4aXNbcmVsPSciLmNvbmNhdChpLCInXSAuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nIikpLG49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMteWF4aXNbcmVsPSciLmNvbmNhdChpLCInXSAuYXBleGNoYXJ0cy15YXhpcy1sYWJlbCIpKTtuPWIubGlzdFRvQXJyYXkobik7dmFyIHI9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsibGVmdCI9PT1zLmxhYmVscy5hbGlnbj8obi5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc2V0QXR0cmlidXRlKCJ0ZXh0LWFuY2hvciIsInN0YXJ0Iil9KSkscy5vcHBvc2l0ZXx8YS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtIi5jb25jYXQoci53aWR0aCwiLCAwKSIpKSk6ImNlbnRlciI9PT1zLmxhYmVscy5hbGlnbj8obi5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc2V0QXR0cmlidXRlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpfSkpLGEuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIi5jb25jYXQoci53aWR0aC8yKihzLm9wcG9zaXRlPzE6LTEpLCIsIDApIikpKToicmlnaHQiPT09cy5sYWJlbHMuYWxpZ24mJihuLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5zZXRBdHRyaWJ1dGUoInRleHQtYW5jaG9yIiwiZW5kIil9KSkscy5vcHBvc2l0ZSYmYS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiLmNvbmNhdChyLndpZHRoLCIsIDApIikpKX19KSl9fV0pLHR9KCksSj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmRvY3VtZW50RXZlbnQ9Yi5iaW5kKHRoaXMuZG9jdW1lbnRFdmVudCx0aGlzKX1yZXR1cm4gYyh0LFt7a2V5OiJhZGRFdmVudExpc3RlbmVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpLmdsb2JhbHMuZXZlbnRzLmhhc093blByb3BlcnR5KHQpP2kuZ2xvYmFscy5ldmVudHNbdF0ucHVzaChlKTppLmdsb2JhbHMuZXZlbnRzW3RdPVtlXX19LHtrZXk6InJlbW92ZUV2ZW50TGlzdGVuZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKGkuZ2xvYmFscy5ldmVudHMuaGFzT3duUHJvcGVydHkodCkpe3ZhciBzPWkuZ2xvYmFscy5ldmVudHNbdF0uaW5kZXhPZihlKTstMSE9PXMmJmkuZ2xvYmFscy5ldmVudHNbdF0uc3BsaWNlKHMsMSl9fX0se2tleToiZmlyZUV2ZW50Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZihpLmdsb2JhbHMuZXZlbnRzLmhhc093blByb3BlcnR5KHQpKXtlJiZlLmxlbmd0aHx8KGU9W10pO2Zvcih2YXIgcz1pLmdsb2JhbHMuZXZlbnRzW3RdLGE9cy5sZW5ndGgsbj0wO248YTtuKyspc1tuXS5hcHBseShudWxsLGUpfX19LHtrZXk6InNldHVwRXZlbnRIYW5kbGVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcy5jdHgscz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKGUuZ2xvYmFscy5jaGFydENsYXNzKTt0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7cy5hZGRFdmVudExpc3RlbmVyKHQsKGZ1bmN0aW9uKHQpe3ZhciBzPU9iamVjdC5hc3NpZ24oe30sZSx7c2VyaWVzSW5kZXg6ZS5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXgsZGF0YVBvaW50SW5kZXg6ZS5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXh9KTsibW91c2Vtb3ZlIj09PXQudHlwZXx8InRvdWNobW92ZSI9PT10LnR5cGU/ImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZU1vdmUmJmUuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZU1vdmUodCxpLHMpOiJtb3VzZWxlYXZlIj09PXQudHlwZXx8InRvdWNobGVhdmUiPT09dC50eXBlPyJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VMZWF2ZSYmZS5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTGVhdmUodCxpLHMpOigibW91c2V1cCI9PT10LnR5cGUmJjE9PT10LndoaWNofHwidG91Y2hlbmQiPT09dC50eXBlKSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMuY2xpY2smJmUuY29uZmlnLmNoYXJ0LmV2ZW50cy5jbGljayh0LGkscyksaS5jdHguZXZlbnRzLmZpcmVFdmVudCgiY2xpY2siLFt0LGksc10pKX0pLHtjYXB0dXJlOiExLHBhc3NpdmU6ITB9KX0pKSx0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24oaSl7ZS5nbG9iYWxzLmRvbS5iYXNlRWwuYWRkRXZlbnRMaXN0ZW5lcihpLHQuZG9jdW1lbnRFdmVudCx7cGFzc2l2ZTohMH0pfSkpLHRoaXMuY3R4LmNvcmUuc2V0dXBCcnVzaEhhbmRsZXIoKX19LHtrZXk6ImRvY3VtZW50RXZlbnQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXQudGFyZ2V0LmNsYXNzTmFtZTtpZigiY2xpY2siPT09dC50eXBlKXt2YXIgcz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1tZW51Iik7cyYmcy5jbGFzc0xpc3QuY29udGFpbnMoImFwZXhjaGFydHMtbWVudS1vcGVuIikmJiJhcGV4Y2hhcnRzLW1lbnUtaWNvbiIhPT1pJiZzLmNsYXNzTGlzdC5yZW1vdmUoImFwZXhjaGFydHMtbWVudS1vcGVuIil9ZS5nbG9iYWxzLmNsaWVudFg9InRvdWNobW92ZSI9PT10LnR5cGU/dC50b3VjaGVzWzBdLmNsaWVudFg6dC5jbGllbnRYLGUuZ2xvYmFscy5jbGllbnRZPSJ0b3VjaG1vdmUiPT09dC50eXBlP3QudG91Y2hlc1swXS5jbGllbnRZOnQuY2xpZW50WX19XSksdH0oKSxRPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBjKHQsW3trZXk6InNldEN1cnJlbnRMb2NhbGVWYWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5jb25maWcuY2hhcnQubG9jYWxlczt3aW5kb3cuQXBleC5jaGFydCYmd2luZG93LkFwZXguY2hhcnQubG9jYWxlcyYmd2luZG93LkFwZXguY2hhcnQubG9jYWxlcy5sZW5ndGg+MCYmKGU9dGhpcy53LmNvbmZpZy5jaGFydC5sb2NhbGVzLmNvbmNhdCh3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzKSk7dmFyIGk9ZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWU9PT10fSkpWzBdO2lmKCFpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgbG9jYWxlIG5hbWUgcHJvdmlkZWQuIFBsZWFzZSBtYWtlIHN1cmUgeW91IHNldCB0aGUgY29ycmVjdCBsb2NhbGUgbmFtZSBpbiBvcHRpb25zIik7dmFyIHM9Yi5leHRlbmQoTCxpKTt0aGlzLncuZ2xvYmFscy5sb2NhbGU9cy5vcHRpb25zfX1dKSx0fSgpLHR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBjKHQsW3trZXk6ImRyYXdBeGlzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpLHMsYT10aGlzLncuZ2xvYmFscyxuPXRoaXMudy5jb25maWcscj1uZXcgRyh0aGlzLmN0eCxlKSxvPW5ldyBLKHRoaXMuY3R4LGUpO2EuYXhpc0NoYXJ0cyYmInJhZGFyIiE9PXQmJihhLmlzQmFySG9yaXpvbnRhbD8ocz1vLmRyYXdZYXhpc0ludmVyc2VkKDApLGk9ci5kcmF3WGF4aXNJbnZlcnNlZCgwKSxhLmRvbS5lbEdyYXBoaWNhbC5hZGQoaSksYS5kb20uZWxHcmFwaGljYWwuYWRkKHMpKTooaT1yLmRyYXdYYXhpcygpLGEuZG9tLmVsR3JhcGhpY2FsLmFkZChpKSxuLnlheGlzLm1hcCgoZnVuY3Rpb24odCxlKXstMT09PWEuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSkmJihzPW8uZHJhd1lheGlzKGUpLGEuZG9tLlBhcGVyLmFkZChzKSl9KSkpKX19XSksdH0oKSxldD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gYyh0LFt7a2V5OiJkcmF3WENyb3NzaGFpcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IGsodGhpcy5jdHgpLGk9bmV3IHcodGhpcy5jdHgpLHM9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5maWxsLmdyYWRpZW50LGE9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5kcm9wU2hhZG93LG49dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5maWxsLnR5cGUscj1zLmNvbG9yRnJvbSxvPXMuY29sb3JUbyxsPXMub3BhY2l0eUZyb20sYz1zLm9wYWNpdHlUbyxoPXMuc3RvcHMsZD1hLmVuYWJsZWQsdT1hLmxlZnQscD1hLnRvcCxnPWEuYmx1cixmPWEuY29sb3IsbT1hLm9wYWNpdHksdj10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwuY29sb3I7aWYodC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zaG93KXsiZ3JhZGllbnQiPT09biYmKHY9ZS5kcmF3R3JhZGllbnQoInZlcnRpY2FsIixyLG8sbCxjLG51bGwsaCxudWxsKSk7dmFyIHg9ZS5kcmF3UmVjdCgpOzE9PT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoJiYoeD1lLmRyYXdMaW5lKCkpO3ZhciB5PXQuZ2xvYmFscy5ncmlkSGVpZ2h0OyghYi5pc051bWJlcih5KXx8eTwwKSYmKHk9MCk7dmFyIFM9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aDsoIWIuaXNOdW1iZXIoUyl8fFM8MCkmJihTPTApLHguYXR0cih7Y2xhc3M6ImFwZXhjaGFydHMteGNyb3NzaGFpcnMiLHg6MCx5OjAseTI6eSx3aWR0aDpTLGhlaWdodDp5LGZpbGw6dixmaWx0ZXI6Im5vbmUiLCJmaWxsLW9wYWNpdHkiOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMub3BhY2l0eSxzdHJva2U6dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zdHJva2UuY29sb3IsInN0cm9rZS13aWR0aCI6dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zdHJva2Uud2lkdGgsInN0cm9rZS1kYXNoYXJyYXkiOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc3Ryb2tlLmRhc2hBcnJheX0pLGQmJih4PWkuZHJvcFNoYWRvdyh4LHtsZWZ0OnUsdG9wOnAsYmx1cjpnLGNvbG9yOmYsb3BhY2l0eTptfSkpLHQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHgpfX19LHtrZXk6ImRyYXdZQ3Jvc3NoYWlycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgayh0aGlzLmN0eCksaT10LmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLHM9dC5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzO2lmKHQuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMuc2hvdyl7dmFyIGE9ZS5kcmF3TGluZSgtcywwLHQuZ2xvYmFscy5ncmlkV2lkdGgrcywwLGkuc3Ryb2tlLmNvbG9yLGkuc3Ryb2tlLmRhc2hBcnJheSxpLnN0cm9rZS53aWR0aCk7YS5hdHRyKHtjbGFzczoiYXBleGNoYXJ0cy15Y3Jvc3NoYWlycyJ9KSx0Lmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChhKX12YXIgbj1lLmRyYXdMaW5lKC1zLDAsdC5nbG9iYWxzLmdyaWRXaWR0aCtzLDAsaS5zdHJva2UuY29sb3IsMCwwKTtuLmF0dHIoe2NsYXNzOiJhcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlbiJ9KSx0Lmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChuKX19XSksdH0oKSxpdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gYyh0LFt7a2V5OiJjaGVja1Jlc3BvbnNpdmVDb25maWciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncscz1pLmNvbmZpZztpZigwIT09cy5yZXNwb25zaXZlLmxlbmd0aCl7dmFyIGE9cy5yZXNwb25zaXZlLnNsaWNlKCk7YS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LmJyZWFrcG9pbnQ+ZS5icmVha3BvaW50PzE6ZS5icmVha3BvaW50PnQuYnJlYWtwb2ludD8tMTowfSkpLnJldmVyc2UoKTt2YXIgbj1uZXcgeih7fSkscj1mdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxzPWFbMF0uYnJlYWtwb2ludCxyPXdpbmRvdy5pbm5lcldpZHRoPjA/d2luZG93LmlubmVyV2lkdGg6c2NyZWVuLndpZHRoO2lmKHI+cyl7dmFyIG89Uy5leHRlbmRBcnJheVByb3BzKG4saS5nbG9iYWxzLmluaXRpYWxDb25maWcsaSk7dD1iLmV4dGVuZChvLHQpLHQ9Yi5leHRlbmQoaS5jb25maWcsdCksZS5vdmVycmlkZVJlc3BvbnNpdmVPcHRpb25zKHQpfWVsc2UgZm9yKHZhciBsPTA7bDxhLmxlbmd0aDtsKyspcjxhW2xdLmJyZWFrcG9pbnQmJih0PVMuZXh0ZW5kQXJyYXlQcm9wcyhuLGFbbF0ub3B0aW9ucyxpKSx0PWIuZXh0ZW5kKGkuY29uZmlnLHQpLGUub3ZlcnJpZGVSZXNwb25zaXZlT3B0aW9ucyh0KSl9O2lmKHQpe3ZhciBvPVMuZXh0ZW5kQXJyYXlQcm9wcyhuLHQsaSk7bz1iLmV4dGVuZChpLmNvbmZpZyxvKSxyKG89Yi5leHRlbmQobyx0KSl9ZWxzZSByKHt9KX19fSx7a2V5OiJvdmVycmlkZVJlc3BvbnNpdmVPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgeih0KS5pbml0KHtyZXNwb25zaXZlT3ZlcnJpZGU6ITB9KTt0aGlzLncuY29uZmlnPWV9fV0pLHR9KCksc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMuY29sb3JzPVtdLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMuaXNDb2xvckZuPSExLHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWQ9InRyZWVtYXAiPT09aS5jb25maWcuY2hhcnQudHlwZSYmaS5jb25maWcucGxvdE9wdGlvbnMudHJlZW1hcC5kaXN0cmlidXRlZHx8ImhlYXRtYXAiPT09aS5jb25maWcuY2hhcnQudHlwZSYmaS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5kaXN0cmlidXRlZCx0aGlzLmlzQmFyRGlzdHJpYnV0ZWQ9aS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkJiYoImJhciI9PT1pLmNvbmZpZy5jaGFydC50eXBlfHwicmFuZ2VCYXIiPT09aS5jb25maWcuY2hhcnQudHlwZSl9cmV0dXJuIGModCxbe2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldERlZmF1bHRDb2xvcnMoKX19LHtrZXk6InNldERlZmF1bHRDb2xvcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPW5ldyBiO2lmKGUuZ2xvYmFscy5kb20uZWxXcmFwLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtdGhlbWUtIi5jb25jYXQoZS5jb25maWcudGhlbWUubW9kZSkpLHZvaWQgMD09PWUuY29uZmlnLmNvbG9ycz9lLmdsb2JhbHMuY29sb3JzPXRoaXMucHJlZGVmaW5lZCgpOihlLmdsb2JhbHMuY29sb3JzPWUuY29uZmlnLmNvbG9ycyxBcnJheS5pc0FycmF5KGUuY29uZmlnLmNvbG9ycykmJmUuY29uZmlnLmNvbG9ycy5sZW5ndGg+MCYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uZmlnLmNvbG9yc1swXSYmKGUuZ2xvYmFscy5jb2xvcnM9ZS5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24oaSxzKXt2YXIgYT1lLmNvbmZpZy5jb2xvcnNbc107cmV0dXJuIGF8fChhPWUuY29uZmlnLmNvbG9yc1swXSksImZ1bmN0aW9uIj09dHlwZW9mIGE/KHQuaXNDb2xvckZuPSEwLGEoe3ZhbHVlOmUuZ2xvYmFscy5heGlzQ2hhcnRzP2UuZ2xvYmFscy5zZXJpZXNbc11bMF0/ZS5nbG9iYWxzLnNlcmllc1tzXVswXTowOmUuZ2xvYmFscy5zZXJpZXNbc10sc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpzLHc6ZX0pKTphfSkpKSksZS5nbG9iYWxzLnNlcmllc0NvbG9ycy5tYXAoKGZ1bmN0aW9uKHQsaSl7dCYmKGUuZ2xvYmFscy5jb2xvcnNbaV09dCl9KSksZS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5lbmFibGVkKXt2YXIgcz1bXSxhPWUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoOyh0aGlzLmlzQmFyRGlzdHJpYnV0ZWR8fHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWQpJiYoYT1lLmdsb2JhbHMuc2VyaWVzWzBdLmxlbmd0aCplLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCk7Zm9yKHZhciBuPWUuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuY29sb3Iscj0xLyhhL2UuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuc2hhZGVJbnRlbnNpdHkpLG89ZS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5zaGFkZVRvLGw9MCxjPTA7YzxhO2MrKyl7dmFyIGg9dm9pZCAwOyJkYXJrIj09PW8/KGg9aS5zaGFkZUNvbG9yKC0xKmwsbiksbCs9cik6KGg9aS5zaGFkZUNvbG9yKGwsbiksbCs9cikscy5wdXNoKGgpfWUuZ2xvYmFscy5jb2xvcnM9cy5zbGljZSgpfXZhciBkPWUuZ2xvYmFscy5jb2xvcnMuc2xpY2UoKTt0aGlzLnB1c2hFeHRyYUNvbG9ycyhlLmdsb2JhbHMuY29sb3JzKSxbImZpbGwiLCJzdHJva2UiXS5mb3JFYWNoKChmdW5jdGlvbihpKXt2b2lkIDA9PT1lLmNvbmZpZ1tpXS5jb2xvcnM/ZS5nbG9iYWxzW2ldLmNvbG9ycz10LmlzQ29sb3JGbj9lLmNvbmZpZy5jb2xvcnM6ZDplLmdsb2JhbHNbaV0uY29sb3JzPWUuY29uZmlnW2ldLmNvbG9ycy5zbGljZSgpLHQucHVzaEV4dHJhQ29sb3JzKGUuZ2xvYmFsc1tpXS5jb2xvcnMpfSkpLHZvaWQgMD09PWUuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzP2UuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycz1kOmUuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycz1lLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycy5zbGljZSgpLHRoaXMucHVzaEV4dHJhQ29sb3JzKGUuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycyw1MCksdm9pZCAwPT09ZS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMuZmlsbC5jb2xvcnM/ZS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnM9WyJkYXJrIj09PWUuY29uZmlnLnRoZW1lLm1vZGU/IiM0MjQyNDIiOiJub25lIl06ZS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnM9ZS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMuZmlsbC5jb2xvcnMuc2xpY2UoKSx0aGlzLnB1c2hFeHRyYUNvbG9ycyhlLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9ycywyMCksdm9pZCAwPT09ZS5jb25maWcubWFya2Vycy5jb2xvcnM/ZS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzPWQ6ZS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzPWUuY29uZmlnLm1hcmtlcnMuY29sb3JzLnNsaWNlKCksdGhpcy5wdXNoRXh0cmFDb2xvcnMoZS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzKX19LHtrZXk6InB1c2hFeHRyYUNvbG9ycyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxzPXRoaXMudyxhPWV8fHMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2lmKG51bGw9PT1pJiYoaT10aGlzLmlzQmFyRGlzdHJpYnV0ZWR8fHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWR8fCJoZWF0bWFwIj09PXMuY29uZmlnLmNoYXJ0LnR5cGUmJnMuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuY29sb3JTY2FsZS5pbnZlcnNlKSxpJiZzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCYmKGE9cy5nbG9iYWxzLnNlcmllc1tzLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoKnMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKSx0Lmxlbmd0aDxhKWZvcih2YXIgbj1hLXQubGVuZ3RoLHI9MDtyPG47cisrKXQucHVzaCh0W3JdKX19LHtrZXk6InVwZGF0ZVRoZW1lT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7dC5jaGFydD10LmNoYXJ0fHx7fSx0LnRvb2x0aXA9dC50b29sdGlwfHx7fTt2YXIgZT10LnRoZW1lLm1vZGV8fCJsaWdodCIsaT10LnRoZW1lLnBhbGV0dGU/dC50aGVtZS5wYWxldHRlOiJkYXJrIj09PWU/InBhbGV0dGU0IjoicGFsZXR0ZTEiLHM9dC5jaGFydC5mb3JlQ29sb3I/dC5jaGFydC5mb3JlQ29sb3I6ImRhcmsiPT09ZT8iI2Y2ZjdmOCI6IiMzNzNkM2YiO3JldHVybiB0LnRvb2x0aXAudGhlbWU9ZSx0LmNoYXJ0LmZvcmVDb2xvcj1zLHQudGhlbWUucGFsZXR0ZT1pLHR9fSx7a2V5OiJwcmVkZWZpbmVkIix2YWx1ZTpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLncuY29uZmlnLnRoZW1lLnBhbGV0dGUpe2Nhc2UicGFsZXR0ZTEiOmRlZmF1bHQ6dGhpcy5jb2xvcnM9WyIjMDA4RkZCIiwiIzAwRTM5NiIsIiNGRUIwMTkiLCIjRkY0NTYwIiwiIzc3NUREMCJdO2JyZWFrO2Nhc2UicGFsZXR0ZTIiOnRoaXMuY29sb3JzPVsiIzNmNTFiNSIsIiMwM2E5ZjQiLCIjNGNhZjUwIiwiI2Y5Y2UxZCIsIiNGRjk4MDAiXTticmVhaztjYXNlInBhbGV0dGUzIjp0aGlzLmNvbG9ycz1bIiMzM2IyZGYiLCIjNTQ2RTdBIiwiI2Q0NTI2ZSIsIiMxM2Q4YWEiLCIjQTU5NzhCIl07YnJlYWs7Y2FzZSJwYWxldHRlNCI6dGhpcy5jb2xvcnM9WyIjNGVjZGM0IiwiI2M3ZjQ2NCIsIiM4MUQ0RkEiLCIjZmQ2YTZhIiwiIzU0NkU3QSJdO2JyZWFrO2Nhc2UicGFsZXR0ZTUiOnRoaXMuY29sb3JzPVsiIzJiOTA4ZiIsIiNmOWEzYTQiLCIjOTBlZTdlIiwiI2ZhNDQ0MyIsIiM2OWQyZTciXTticmVhaztjYXNlInBhbGV0dGU2Ijp0aGlzLmNvbG9ycz1bIiM0NDlERDEiLCIjRjg2NjI0IiwiI0VBMzU0NiIsIiM2NjJFOUIiLCIjQzVEODZEIl07YnJlYWs7Y2FzZSJwYWxldHRlNyI6dGhpcy5jb2xvcnM9WyIjRDcyNjNEIiwiIzFCOTk4QiIsIiMyRTI5NEUiLCIjRjQ2MDM2IiwiI0UyQzA0NCJdO2JyZWFrO2Nhc2UicGFsZXR0ZTgiOnRoaXMuY29sb3JzPVsiIzY2MkU5QiIsIiNGODY2MjQiLCIjRjlDODBFIiwiI0VBMzU0NiIsIiM0M0JDQ0QiXTticmVhaztjYXNlInBhbGV0dGU5Ijp0aGlzLmNvbG9ycz1bIiM1QzQ3NDIiLCIjQTU5NzhCIiwiIzhENUI0QyIsIiM1QTJBMjciLCIjQzRCQkFGIl07YnJlYWs7Y2FzZSJwYWxldHRlMTAiOnRoaXMuY29sb3JzPVsiI0EzMDBENiIsIiM3RDAyRUIiLCIjNTY1M0ZFIiwiIzI5ODNGRiIsIiMwMEIxRjIiXX1yZXR1cm4gdGhpcy5jb2xvcnN9fV0pLHR9KCksYXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIGModCxbe2tleToiZHJhdyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRyYXdUaXRsZVN1YnRpdGxlKCJ0aXRsZSIpLHRoaXMuZHJhd1RpdGxlU3VidGl0bGUoInN1YnRpdGxlIil9fSx7a2V5OiJkcmF3VGl0bGVTdWJ0aXRsZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9InRpdGxlIj09PXQ/ZS5jb25maWcudGl0bGU6ZS5jb25maWcuc3VidGl0bGUscz1lLmdsb2JhbHMuc3ZnV2lkdGgvMixhPWkub2Zmc2V0WSxuPSJtaWRkbGUiO2lmKCJsZWZ0Ij09PWkuYWxpZ24/KHM9MTAsbj0ic3RhcnQiKToicmlnaHQiPT09aS5hbGlnbiYmKHM9ZS5nbG9iYWxzLnN2Z1dpZHRoLTEwLG49ImVuZCIpLHMrPWkub2Zmc2V0WCxhPWErcGFyc2VJbnQoaS5zdHlsZS5mb250U2l6ZSwxMCkraS5tYXJnaW4vMix2b2lkIDAhPT1pLnRleHQpe3ZhciByPW5ldyBrKHRoaXMuY3R4KS5kcmF3VGV4dCh7eDpzLHk6YSx0ZXh0OmkudGV4dCx0ZXh0QW5jaG9yOm4sZm9udFNpemU6aS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5Omkuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0Omkuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6aS5zdHlsZS5jb2xvcixvcGFjaXR5OjF9KTtyLm5vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsImFwZXhjaGFydHMtIi5jb25jYXQodCwiLXRleHQiKSksZS5nbG9iYWxzLmRvbS5QYXBlci5hZGQocil9fX1dKSx0fSgpLG50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gYyh0LFt7a2V5OiJnZXRUaXRsZVN1YnRpdGxlQ29vcmRzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT0wLHM9MCxhPSJ0aXRsZSI9PT10P2UuY29uZmlnLnRpdGxlLmZsb2F0aW5nOmUuY29uZmlnLnN1YnRpdGxlLmZsb2F0aW5nLG49ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtIi5jb25jYXQodCwiLXRleHQiKSk7aWYobnVsbCE9PW4mJiFhKXt2YXIgcj1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2k9ci53aWR0aCxzPWUuZ2xvYmFscy5heGlzQ2hhcnRzP3IuaGVpZ2h0KzU6ci5oZWlnaHR9cmV0dXJue3dpZHRoOmksaGVpZ2h0OnN9fX0se2tleToiZ2V0TGVnZW5kc1JlY3QiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtbGVnZW5kIik7dC5jb25maWcubGVnZW5kLmhlaWdodHx8InRvcCIhPT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJiJib3R0b20iIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9ufHwoZS5zdHlsZS5tYXhIZWlnaHQ9dC5nbG9iYWxzLnN2Z0hlaWdodC8yKyJweCIpO3ZhciBpPU9iamVjdC5hc3NpZ24oe30sYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoZSkpO3JldHVybiBudWxsIT09ZSYmIXQuY29uZmlnLmxlZ2VuZC5mbG9hdGluZyYmdC5jb25maWcubGVnZW5kLnNob3c/dGhpcy5kQ3R4LmxnUmVjdD17eDppLngseTppLnksaGVpZ2h0OmkuaGVpZ2h0LHdpZHRoOjA9PT1pLmhlaWdodD8wOmkud2lkdGh9OnRoaXMuZEN0eC5sZ1JlY3Q9e3g6MCx5OjAsaGVpZ2h0OjAsd2lkdGg6MH0sImxlZnQiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiYicmlnaHQiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9ufHwxLjUqdGhpcy5kQ3R4LmxnUmVjdC53aWR0aD50Lmdsb2JhbHMuc3ZnV2lkdGgmJih0aGlzLmRDdHgubGdSZWN0LndpZHRoPXQuZ2xvYmFscy5zdmdXaWR0aC8xLjUpLHRoaXMuZEN0eC5sZ1JlY3R9fSx7a2V5OiJnZXRMYXJnZXN0U3RyaW5nRnJvbU11bHRpQXJyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQ7aWYodGhpcy53Lmdsb2JhbHMuaXNNdWx0aUxpbmVYKXt2YXIgcz1lLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90Lmxlbmd0aDoxfSkpLGE9TWF0aC5tYXguYXBwbHkoTWF0aCxtKHMpKTtpPWVbcy5pbmRleE9mKGEpXX1yZXR1cm4gaX19XSksdH0oKSxydD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIGModCxbe2tleToiZ2V0eEF4aXNMYWJlbHNDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLncsaT1lLmdsb2JhbHMubGFiZWxzLnNsaWNlKCk7aWYoZS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYwPT09aS5sZW5ndGgmJihpPWUuZ2xvYmFscy5jYXRlZ29yeUxhYmVscyksZS5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5sZW5ndGg+MCl7dmFyIHM9dGhpcy5nZXR4QXhpc1RpbWVTY2FsZUxhYmVsc0Nvb3JkcygpO3Q9e3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuaGVpZ2h0fSxlLmdsb2JhbHMucm90YXRlWExhYmVscz0hMX1lbHNle3RoaXMuZEN0eC5sZ1dpZHRoRm9yU2lkZUxlZ2VuZHM9ImxlZnQiIT09ZS5jb25maWcubGVnZW5kLnBvc2l0aW9uJiYicmlnaHQiIT09ZS5jb25maWcubGVnZW5kLnBvc2l0aW9ufHxlLmNvbmZpZy5sZWdlbmQuZmxvYXRpbmc/MDp0aGlzLmRDdHgubGdSZWN0LndpZHRoO3ZhciBhPWUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsbj1iLmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKGkpLHI9dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihuLGkpO2UuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihyPW49ZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSksMCkpO3ZhciBvPW5ldyAkKHRoaXMuZEN0eC5jdHgpLGw9bjtuPW8ueExhYmVsRm9ybWF0KGEsbixsLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBPKHRoaXMuZEN0eC5jdHgpLmZvcm1hdERhdGUsdzplfSkscj1vLnhMYWJlbEZvcm1hdChhLHIsbCx7aTp2b2lkIDAsZGF0ZUZvcm1hdHRlcjpuZXcgTyh0aGlzLmRDdHguY3R4KS5mb3JtYXREYXRlLHc6ZX0pLChlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJnZvaWQgMD09PW58fCIiPT09U3RyaW5nKG4pLnRyaW0oKSkmJihyPW49IjEiKTt2YXIgYz1uZXcgayh0aGlzLmRDdHguY3R4KSxoPWMuZ2V0VGV4dFJlY3RzKG4sZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSxkPWg7aWYobiE9PXImJihkPWMuZ2V0VGV4dFJlY3RzKHIsZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSksKHQ9e3dpZHRoOmgud2lkdGg+PWQud2lkdGg/aC53aWR0aDpkLndpZHRoLGhlaWdodDpoLmhlaWdodD49ZC5oZWlnaHQ/aC5oZWlnaHQ6ZC5oZWlnaHR9KS53aWR0aCppLmxlbmd0aD5lLmdsb2JhbHMuc3ZnV2lkdGgtdGhpcy5kQ3R4LmxnV2lkdGhGb3JTaWRlTGVnZW5kcy10aGlzLmRDdHgueUF4aXNXaWR0aC10aGlzLmRDdHguZ3JpZFBhZC5sZWZ0LXRoaXMuZEN0eC5ncmlkUGFkLnJpZ2h0JiYwIT09ZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZXx8ZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZUFsd2F5cyl7aWYoIWUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe2UuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPSEwO3ZhciB1PWZ1bmN0aW9uKHQpe3JldHVybiBjLmdldFRleHRSZWN0cyh0LGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSwicm90YXRlKCIuY29uY2F0KGUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUsIiAwIDApIiksITEpfTtoPXUobiksbiE9PXImJihkPXUocikpLHQuaGVpZ2h0PShoLmhlaWdodD5kLmhlaWdodD9oLmhlaWdodDpkLmhlaWdodCkvMS41LHQud2lkdGg9aC53aWR0aD5kLndpZHRoP2gud2lkdGg6ZC53aWR0aH19ZWxzZSBlLmdsb2JhbHMucm90YXRlWExhYmVscz0hMX1yZXR1cm4gZS5jb25maWcueGF4aXMubGFiZWxzLnNob3d8fCh0PXt3aWR0aDowLGhlaWdodDowfSkse3dpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fX19LHtrZXk6ImdldHhBeGlzR3JvdXBMYWJlbHNDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnc7aWYoIWUuZ2xvYmFscy5oYXNHcm91cHMpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjB9O3ZhciBpLHM9KG51bGw9PT0odD1lLmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZm9udFNpemUpfHxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsYT1lLmdsb2JhbHMuZ3JvdXBzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudGl0bGV9KSksbj1iLmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKGEpLHI9dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihuLGEpLG89bmV3IGsodGhpcy5kQ3R4LmN0eCksbD1vLmdldFRleHRSZWN0cyhuLHMpLGM9bDtyZXR1cm4gbiE9PXImJihjPW8uZ2V0VGV4dFJlY3RzKHIscykpLGk9e3dpZHRoOmwud2lkdGg+PWMud2lkdGg/bC53aWR0aDpjLndpZHRoLGhlaWdodDpsLmhlaWdodD49Yy5oZWlnaHQ/bC5oZWlnaHQ6Yy5oZWlnaHR9LGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93fHwoaT17d2lkdGg6MCxoZWlnaHQ6MH0pLHt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH19fSx7a2V5OiJnZXR4QXhpc1RpdGxlQ29vcmRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPTAsaT0wO2lmKHZvaWQgMCE9PXQuY29uZmlnLnhheGlzLnRpdGxlLnRleHQpe3ZhciBzPW5ldyBrKHRoaXMuZEN0eC5jdHgpLmdldFRleHRSZWN0cyh0LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LHQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplKTtlPXMud2lkdGgsaT1zLmhlaWdodH1yZXR1cm57d2lkdGg6ZSxoZWlnaHQ6aX19fSx7a2V5OiJnZXR4QXhpc1RpbWVTY2FsZUxhYmVsc0Nvb3JkcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMudzt0aGlzLmRDdHgudGltZXNjYWxlTGFiZWxzPWUuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMuc2xpY2UoKTt2YXIgaT10aGlzLmRDdHgudGltZXNjYWxlTGFiZWxzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KSkscz1pLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09dD8oY29uc29sZS5lcnJvcigiWW91IGhhdmUgcG9zc2libHkgc3VwcGxpZWQgaW52YWxpZCBEYXRlIGZvcm1hdC4gUGxlYXNlIHN1cHBseSBhIHZhbGlkIEphdmFTY3JpcHQgRGF0ZSIpLDApOnQubGVuZ3RoPmUubGVuZ3RoP3Q6ZX0pLDApO3JldHVybiAxLjA1Kih0PW5ldyBrKHRoaXMuZEN0eC5jdHgpLmdldFRleHRSZWN0cyhzLGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSkpLndpZHRoKmkubGVuZ3RoPmUuZ2xvYmFscy5ncmlkV2lkdGgmJjAhPT1lLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlJiYoZS5nbG9iYWxzLm92ZXJsYXBwaW5nWExhYmVscz0hMCksdH19LHtrZXk6ImFkZGl0aW9uYWxQYWRkaW5nWExhYmVscyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxzPWkuZ2xvYmFscyxhPWkuY29uZmlnLG49YS54YXhpcy50eXBlLHI9dC53aWR0aDtzLnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMSxzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWw9ITE7dmFyIG89aS5jb25maWcueWF4aXNbMF0ub3Bwb3NpdGUmJmkuZ2xvYmFscy5pc0Jhckhvcml6b250YWwsbD1mdW5jdGlvbih0LG8peyhmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHQpfSkobyl8fGZ1bmN0aW9uKHQpe2lmKGUuZEN0eC50aW1lc2NhbGVMYWJlbHMmJmUuZEN0eC50aW1lc2NhbGVMYWJlbHMubGVuZ3RoKXt2YXIgbz1lLmRDdHgudGltZXNjYWxlTGFiZWxzWzBdLGw9ZS5kQ3R4LnRpbWVzY2FsZUxhYmVsc1tlLmRDdHgudGltZXNjYWxlTGFiZWxzLmxlbmd0aC0xXS5wb3NpdGlvbityLzEuNzUtZS5kQ3R4LnlBeGlzV2lkdGhSaWdodCxjPW8ucG9zaXRpb24tci8xLjc1K2UuZEN0eC55QXhpc1dpZHRoTGVmdCxoPSJyaWdodCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJmUuZEN0eC5sZ1JlY3Qud2lkdGg+MD9lLmRDdHgubGdSZWN0LndpZHRoOjA7bD5zLnN2Z1dpZHRoLXMudHJhbnNsYXRlWC1oJiYocy5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITApLGM8LSh0LnNob3cmJiF0LmZsb2F0aW5nfHwiYmFyIiE9PWEuY2hhcnQudHlwZSYmImNhbmRsZXN0aWNrIiE9PWEuY2hhcnQudHlwZSYmInJhbmdlQmFyIiE9PWEuY2hhcnQudHlwZSYmImJveFBsb3QiIT09YS5jaGFydC50eXBlPzEwOnIvMS43NSkmJihzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWw9ITApfWVsc2UiZGF0ZXRpbWUiPT09bj9lLmRDdHguZ3JpZFBhZC5yaWdodDxyJiYhcy5yb3RhdGVYTGFiZWxzJiYocy5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITApOiJkYXRldGltZSIhPT1uJiZlLmRDdHguZ3JpZFBhZC5yaWdodDxyLzItZS5kQ3R4LnlBeGlzV2lkdGhSaWdodCYmIXMucm90YXRlWExhYmVscyYmIWkuY29uZmlnLnhheGlzLmxhYmVscy50cmltJiYoImJldHdlZW4iIT09aS5jb25maWcueGF4aXMudGlja1BsYWNlbWVudHx8aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCkmJihlLmRDdHgueFBhZFJpZ2h0PXIvMisxKX0odCl9O2EueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtvPyhlLmRDdHguZ3JpZFBhZC5sZWZ0PHImJihlLmRDdHgueFBhZExlZnQ9ci8yKzEpLGUuZEN0eC54UGFkUmlnaHQ9ci8yKzEpOmwodCxpKX0pKX19XSksdH0oKSxvdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIGModCxbe2tleToiZ2V0eUF4aXNMYWJlbHNDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPVtdLHM9MTAsYT1uZXcgVih0aGlzLmRDdHguY3R4KTtyZXR1cm4gZS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihuLHIpe3ZhciBvPWUuZ2xvYmFscy55QXhpc1NjYWxlW3JdLGw9MDtpZighYS5pc1lBeGlzSGlkZGVuKHIpJiZuLmxhYmVscy5zaG93JiZ2b2lkIDAhPT1uLmxhYmVscy5taW5XaWR0aCYmKGw9bi5sYWJlbHMubWluV2lkdGgpLCFhLmlzWUF4aXNIaWRkZW4ocikmJm4ubGFiZWxzLnNob3cmJm8ucmVzdWx0Lmxlbmd0aCl7dmFyIGM9ZS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbcl0saD1vLm5pY2VNaW49PT1OdW1iZXIuTUlOX1ZBTFVFPzA6by5uaWNlTWluLGQ9U3RyaW5nKGgpLmxlbmd0aD5TdHJpbmcoby5uaWNlTWF4KS5sZW5ndGg/aDpvLm5pY2VNYXgsdT1jKGQse3Nlcmllc0luZGV4OnIsZGF0YVBvaW50SW5kZXg6LTEsdzplfSkscD11O2lmKHZvaWQgMCE9PXUmJjAhPT11Lmxlbmd0aHx8KHU9ZCksZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCl7cz0wO3ZhciBnPWUuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKTt1PWModT1iLmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKGcpLHtzZXJpZXNJbmRleDpyLGRhdGFQb2ludEluZGV4Oi0xLHc6ZX0pLHA9dC5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycih1LGcpfXZhciBmPW5ldyBrKHQuZEN0eC5jdHgpLG09InJvdGF0ZSgiLmNvbmNhdChuLmxhYmVscy5yb3RhdGUsIiAwIDApIiksdj1mLmdldFRleHRSZWN0cyh1LG4ubGFiZWxzLnN0eWxlLmZvbnRTaXplLG4ubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksbSwhMSkseD12O3UhPT1wJiYoeD1mLmdldFRleHRSZWN0cyhwLG4ubGFiZWxzLnN0eWxlLmZvbnRTaXplLG4ubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksbSwhMSkpLGkucHVzaCh7d2lkdGg6KGw+eC53aWR0aHx8bD52LndpZHRoP2w6eC53aWR0aD52LndpZHRoP3gud2lkdGg6di53aWR0aCkrcyxoZWlnaHQ6eC5oZWlnaHQ+di5oZWlnaHQ/eC5oZWlnaHQ6di5oZWlnaHR9KX1lbHNlIGkucHVzaCh7d2lkdGg6MCxoZWlnaHQ6MH0pfSkpLGl9fSx7a2V5OiJnZXR5QXhpc1RpdGxlQ29vcmRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1bXTtyZXR1cm4gZS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihlLHMpe2lmKGUuc2hvdyYmdm9pZCAwIT09ZS50aXRsZS50ZXh0KXt2YXIgYT1uZXcgayh0LmRDdHguY3R4KSxuPSJyb3RhdGUoIi5jb25jYXQoZS50aXRsZS5yb3RhdGUsIiAwIDApIikscj1hLmdldFRleHRSZWN0cyhlLnRpdGxlLnRleHQsZS50aXRsZS5zdHlsZS5mb250U2l6ZSxlLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksbiwhMSk7aS5wdXNoKHt3aWR0aDpyLndpZHRoLGhlaWdodDpyLmhlaWdodH0pfWVsc2UgaS5wdXNoKHt3aWR0aDowLGhlaWdodDowfSl9KSksaX19LHtrZXk6ImdldFRvdGFsWUF4aXNXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0wLGk9MCxzPTAsYT10Lmdsb2JhbHMueUF4aXNTY2FsZS5sZW5ndGg+MT8xMDowLG49bmV3IFYodGhpcy5kQ3R4LmN0eCkscj1mdW5jdGlvbihyLG8pe3ZhciBsPXQuY29uZmlnLnlheGlzW29dLmZsb2F0aW5nLGM9MDtyLndpZHRoPjAmJiFsPyhjPXIud2lkdGgrYSxmdW5jdGlvbihlKXtyZXR1cm4gdC5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGUpPi0xfShvKSYmKGM9Yy1yLndpZHRoLWEpKTpjPWx8fG4uaXNZQXhpc0hpZGRlbihvKT8wOjUsdC5jb25maWcueWF4aXNbb10ub3Bwb3NpdGU/cys9YzppKz1jLGUrPWN9O3JldHVybiB0Lmdsb2JhbHMueUxhYmVsc0Nvb3Jkcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cih0LGUpfSkpLHQuZ2xvYmFscy55VGl0bGVDb29yZHMubWFwKChmdW5jdGlvbih0LGUpe3IodCxlKX0pKSx0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYhdC5jb25maWcueWF4aXNbMF0uZmxvYXRpbmcmJihlPXQuZ2xvYmFscy55TGFiZWxzQ29vcmRzWzBdLndpZHRoK3QuZ2xvYmFscy55VGl0bGVDb29yZHNbMF0ud2lkdGgrMTUpLHRoaXMuZEN0eC55QXhpc1dpZHRoTGVmdD1pLHRoaXMuZEN0eC55QXhpc1dpZHRoUmlnaHQ9cyxlfX1dKSx0fSgpLGx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gYyh0LFt7a2V5OiJncmlkUGFkRm9yQ29sdW1uc0luTnVtZXJpY0F4aXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZihlLmdsb2JhbHMubm9EYXRhfHxlLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkKXJldHVybiAwO3ZhciBpPWZ1bmN0aW9uKHQpe3JldHVybiJiYXIiPT09dHx8InJhbmdlQmFyIj09PXR8fCJjYW5kbGVzdGljayI9PT10fHwiYm94UGxvdCI9PT10fSxzPWUuY29uZmlnLmNoYXJ0LnR5cGUsYT0wLG49aShzKT9lLmNvbmZpZy5zZXJpZXMubGVuZ3RoOjE7aWYoZS5nbG9iYWxzLmNvbWJvQmFyQ291bnQ+MCYmKG49ZS5nbG9iYWxzLmNvbWJvQmFyQ291bnQpLGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7aSh0LnR5cGUpJiYobi09MSl9KSksZS5jb25maWcuY2hhcnQuc3RhY2tlZCYmKG49MSksKGkocyl8fGUuZ2xvYmFscy5jb21ib0JhckNvdW50PjApJiZlLmdsb2JhbHMuaXNYTnVtZXJpYyYmIWUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJm4+MCl7dmFyIHIsbyxsPU1hdGguYWJzKGUuZ2xvYmFscy5pbml0aWFsTWF4WC1lLmdsb2JhbHMuaW5pdGlhbE1pblgpO2w8PTMmJihsPWUuZ2xvYmFscy5kYXRhUG9pbnRzKSxyPWwvdCxlLmdsb2JhbHMubWluWERpZmYmJmUuZ2xvYmFscy5taW5YRGlmZi9yPjAmJihvPWUuZ2xvYmFscy5taW5YRGlmZi9yKSxvPnQvMiYmKG8vPTIpLChhPW8vbipwYXJzZUludChlLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sdW1uV2lkdGgsMTApLzEwMCk8MSYmKGE9MSksYT1hLyhuPjE/MToxLjUpKzUsZS5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzPWF9cmV0dXJuIGF9fSx7a2V5OiJncmlkUGFkRm9ydGl0bGVTdWJ0aXRsZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5nbG9iYWxzLHM9dGhpcy5kQ3R4LmlzU3BhcmtsaW5lfHwhZS5nbG9iYWxzLmF4aXNDaGFydHM/MDoxMDtbInRpdGxlIiwic3VidGl0bGUiXS5mb3JFYWNoKChmdW5jdGlvbihpKXt2b2lkIDAhPT1lLmNvbmZpZ1tpXS50ZXh0P3MrPWUuY29uZmlnW2ldLm1hcmdpbjpzKz10LmRDdHguaXNTcGFya2xpbmV8fCFlLmdsb2JhbHMuYXhpc0NoYXJ0cz8wOjV9KSksIWUuY29uZmlnLmxlZ2VuZC5zaG93fHwiYm90dG9tIiE9PWUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8ZS5jb25maWcubGVnZW5kLmZsb2F0aW5nfHxlLmdsb2JhbHMuYXhpc0NoYXJ0c3x8KHMrPTEwKTt2YXIgYT10aGlzLmRDdHguZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKCJ0aXRsZSIpLG49dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3Jkcygic3VidGl0bGUiKTtpLmdyaWRIZWlnaHQ9aS5ncmlkSGVpZ2h0LWEuaGVpZ2h0LW4uaGVpZ2h0LXMsaS50cmFuc2xhdGVZPWkudHJhbnNsYXRlWSthLmhlaWdodCtuLmhlaWdodCtzfX0se2tleToic2V0R3JpZFhQb3NGb3JEdWFsWUF4aXMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9bmV3IFYodGhpcy5kQ3R4LmN0eCk7aS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihhLG4pey0xIT09aS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKG4pfHxhLmZsb2F0aW5nfHxzLmlzWUF4aXNIaWRkZW4obil8fChhLm9wcG9zaXRlJiYoaS5nbG9iYWxzLnRyYW5zbGF0ZVg9aS5nbG9iYWxzLnRyYW5zbGF0ZVgtKGVbbl0ud2lkdGgrdFtuXS53aWR0aCktcGFyc2VJbnQoaS5jb25maWcueWF4aXNbbl0ubGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS8xLjItMTIpLGkuZ2xvYmFscy50cmFuc2xhdGVYPDImJihpLmdsb2JhbHMudHJhbnNsYXRlWD0yKSl9KSl9fV0pLHR9KCksY3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5sZ1JlY3Q9e30sdGhpcy55QXhpc1dpZHRoPTAsdGhpcy55QXhpc1dpZHRoTGVmdD0wLHRoaXMueUF4aXNXaWR0aFJpZ2h0PTAsdGhpcy54QXhpc0hlaWdodD0wLHRoaXMuaXNTcGFya2xpbmU9dGhpcy53LmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZCx0aGlzLmRpbUhlbHBlcnM9bmV3IG50KHRoaXMpLHRoaXMuZGltWUF4aXM9bmV3IG90KHRoaXMpLHRoaXMuZGltWEF4aXM9bmV3IHJ0KHRoaXMpLHRoaXMuZGltR3JpZD1uZXcgbHQodGhpcyksdGhpcy5sZ1dpZHRoRm9yU2lkZUxlZ2VuZHM9MCx0aGlzLmdyaWRQYWQ9dGhpcy53LmNvbmZpZy5ncmlkLnBhZGRpbmcsdGhpcy54UGFkUmlnaHQ9MCx0aGlzLnhQYWRMZWZ0PTB9cmV0dXJuIGModCxbe2tleToicGxvdENvb3JkcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5nbG9iYWxzO3RoaXMubGdSZWN0PXRoaXMuZGltSGVscGVycy5nZXRMZWdlbmRzUmVjdCgpLHRoaXMuaXNTcGFya2xpbmUmJihlLmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmxlbmd0aD4wfHxlLmNvbmZpZy5tYXJrZXJzLnNpemU+MCkmJk9iamVjdC5lbnRyaWVzKHRoaXMuZ3JpZFBhZCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIGk9bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1pKXt2YXIgcyxhLG49W10scj0hMCxvPSExO3RyeXtmb3IoaT1pLmNhbGwodCk7IShyPShzPWkubmV4dCgpKS5kb25lKSYmKG4ucHVzaChzLnZhbHVlKSwyIT09bi5sZW5ndGgpO3I9ITApO31jYXRjaCh0KXtvPSEwLGE9dH1maW5hbGx5e3RyeXtyfHxudWxsPT1pLnJldHVybnx8aS5yZXR1cm4oKX1maW5hbGx5e2lmKG8pdGhyb3cgYX19cmV0dXJuIG59fSh0KXx8dih0LDIpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGUpLHM9aVswXSxhPWlbMV07dC5ncmlkUGFkW3NdPU1hdGgubWF4KGEsdC53Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZS8xLjUpfSkpLGkuYXhpc0NoYXJ0cz90aGlzLnNldERpbWVuc2lvbnNGb3JBeGlzQ2hhcnRzKCk6dGhpcy5zZXREaW1lbnNpb25zRm9yTm9uQXhpc0NoYXJ0cygpLHRoaXMuZGltR3JpZC5ncmlkUGFkRm9ydGl0bGVTdWJ0aXRsZSgpLGkuZ3JpZEhlaWdodD1pLmdyaWRIZWlnaHQtdGhpcy5ncmlkUGFkLnRvcC10aGlzLmdyaWRQYWQuYm90dG9tLGkuZ3JpZFdpZHRoPWkuZ3JpZFdpZHRoLXRoaXMuZ3JpZFBhZC5sZWZ0LXRoaXMuZ3JpZFBhZC5yaWdodC10aGlzLnhQYWRSaWdodC10aGlzLnhQYWRMZWZ0O3ZhciBzPXRoaXMuZGltR3JpZC5ncmlkUGFkRm9yQ29sdW1uc0luTnVtZXJpY0F4aXMoaS5ncmlkV2lkdGgpO2kuZ3JpZFdpZHRoPWkuZ3JpZFdpZHRoLTIqcyxpLnRyYW5zbGF0ZVg9aS50cmFuc2xhdGVYK3RoaXMuZ3JpZFBhZC5sZWZ0K3RoaXMueFBhZExlZnQrKHM+MD9zKzQ6MCksaS50cmFuc2xhdGVZPWkudHJhbnNsYXRlWSt0aGlzLmdyaWRQYWQudG9wfX0se2tleToic2V0RGltZW5zaW9uc0ZvckF4aXNDaGFydHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPWUuZ2xvYmFscyxzPXRoaXMuZGltWUF4aXMuZ2V0eUF4aXNMYWJlbHNDb29yZHMoKSxhPXRoaXMuZGltWUF4aXMuZ2V0eUF4aXNUaXRsZUNvb3JkcygpO2UuZ2xvYmFscy55TGFiZWxzQ29vcmRzPVtdLGUuZ2xvYmFscy55VGl0bGVDb29yZHM9W10sZS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbih0LGkpe2UuZ2xvYmFscy55TGFiZWxzQ29vcmRzLnB1c2goe3dpZHRoOnNbaV0ud2lkdGgsaW5kZXg6aX0pLGUuZ2xvYmFscy55VGl0bGVDb29yZHMucHVzaCh7d2lkdGg6YVtpXS53aWR0aCxpbmRleDppfSl9KSksdGhpcy55QXhpc1dpZHRoPXRoaXMuZGltWUF4aXMuZ2V0VG90YWxZQXhpc1dpZHRoKCk7dmFyIG49dGhpcy5kaW1YQXhpcy5nZXR4QXhpc0xhYmVsc0Nvb3JkcygpLHI9dGhpcy5kaW1YQXhpcy5nZXR4QXhpc0dyb3VwTGFiZWxzQ29vcmRzKCksbz10aGlzLmRpbVhBeGlzLmdldHhBeGlzVGl0bGVDb29yZHMoKTt0aGlzLmNvbmRpdGlvbmFsQ2hlY2tzRm9yQXhpc0Nvb3JkcyhuLG8sciksaS50cmFuc2xhdGVYQXhpc1k9ZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/dGhpcy54QXhpc0hlaWdodC84Oi00LGkudHJhbnNsYXRlWEF4aXNYPWUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzJiZlLmdsb2JhbHMuaXNYTnVtZXJpYyYmZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZTw9LTQ1Py10aGlzLnhBeGlzV2lkdGgvNDowLGUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihpLnJvdGF0ZVhMYWJlbHM9ITEsaS50cmFuc2xhdGVYQXhpc1k9cGFyc2VJbnQoZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS8xLjUqLTEpLGkudHJhbnNsYXRlWEF4aXNZPWkudHJhbnNsYXRlWEF4aXNZK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRZLGkudHJhbnNsYXRlWEF4aXNYPWkudHJhbnNsYXRlWEF4aXNYK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYO3ZhciBsPXRoaXMueUF4aXNXaWR0aCxjPXRoaXMueEF4aXNIZWlnaHQ7aS54QXhpc0xhYmVsc0hlaWdodD10aGlzLnhBeGlzSGVpZ2h0LW8uaGVpZ2h0LGkueEF4aXNHcm91cExhYmVsc0hlaWdodD1pLnhBeGlzTGFiZWxzSGVpZ2h0LW4uaGVpZ2h0LGkueEF4aXNMYWJlbHNXaWR0aD10aGlzLnhBeGlzV2lkdGgsaS54QXhpc0hlaWdodD10aGlzLnhBeGlzSGVpZ2h0O3ZhciBoPTEwOygicmFkYXIiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8dGhpcy5pc1NwYXJrbGluZSkmJihsPTAsYz1pLmdvbGRlblBhZGRpbmcpLHRoaXMuaXNTcGFya2xpbmUmJih0aGlzLmxnUmVjdD17aGVpZ2h0OjAsd2lkdGg6MH0pLCh0aGlzLmlzU3BhcmtsaW5lfHwidHJlZW1hcCI9PT1lLmNvbmZpZy5jaGFydC50eXBlKSYmKGw9MCxjPTAsaD0wKSx0aGlzLmlzU3BhcmtsaW5lfHx0aGlzLmRpbVhBeGlzLmFkZGl0aW9uYWxQYWRkaW5nWExhYmVscyhuKTt2YXIgZD1mdW5jdGlvbigpe2kudHJhbnNsYXRlWD1sLGkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC10LmxnUmVjdC5oZWlnaHQtYy0odC5pc1NwYXJrbGluZXx8InRyZWVtYXAiPT09ZS5jb25maWcuY2hhcnQudHlwZT8wOmUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPzEwOjE1KSxpLmdyaWRXaWR0aD1pLnN2Z1dpZHRoLWx9O3N3aXRjaCgidG9wIj09PWUuY29uZmlnLnhheGlzLnBvc2l0aW9uJiYoaD1pLnhBeGlzSGVpZ2h0LWUuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtNSksZS5jb25maWcubGVnZW5kLnBvc2l0aW9uKXtjYXNlImJvdHRvbSI6aS50cmFuc2xhdGVZPWgsZCgpO2JyZWFrO2Nhc2UidG9wIjppLnRyYW5zbGF0ZVk9dGhpcy5sZ1JlY3QuaGVpZ2h0K2gsZCgpO2JyZWFrO2Nhc2UibGVmdCI6aS50cmFuc2xhdGVZPWgsaS50cmFuc2xhdGVYPXRoaXMubGdSZWN0LndpZHRoK2wsaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LWMtMTIsaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1sO2JyZWFrO2Nhc2UicmlnaHQiOmkudHJhbnNsYXRlWT1oLGkudHJhbnNsYXRlWD1sLGkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC1jLTEyLGkuZ3JpZFdpZHRoPWkuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtbC01O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJMZWdlbmQgcG9zaXRpb24gbm90IHN1cHBvcnRlZCIpfXRoaXMuZGltR3JpZC5zZXRHcmlkWFBvc0ZvckR1YWxZQXhpcyhhLHMpLG5ldyBLKHRoaXMuY3R4KS5zZXRZQXhpc1hQb3NpdGlvbihzLGEpfX0se2tleToic2V0RGltZW5zaW9uc0Zvck5vbkF4aXNDaGFydHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLGk9dC5jb25maWcscz0wO3QuY29uZmlnLmxlZ2VuZC5zaG93JiYhdC5jb25maWcubGVnZW5kLmZsb2F0aW5nJiYocz0yMCk7dmFyIGE9InBpZSI9PT1pLmNoYXJ0LnR5cGV8fCJwb2xhckFyZWEiPT09aS5jaGFydC50eXBlfHwiZG9udXQiPT09aS5jaGFydC50eXBlPyJwaWUiOiJyYWRpYWxCYXIiLG49aS5wbG90T3B0aW9uc1thXS5vZmZzZXRZLHI9aS5wbG90T3B0aW9uc1thXS5vZmZzZXRYO2lmKCFpLmxlZ2VuZC5zaG93fHxpLmxlZ2VuZC5mbG9hdGluZylyZXR1cm4gZS5ncmlkSGVpZ2h0PWUuc3ZnSGVpZ2h0LWkuZ3JpZC5wYWRkaW5nLmxlZnQraS5ncmlkLnBhZGRpbmcucmlnaHQsZS5ncmlkV2lkdGg9ZS5ncmlkSGVpZ2h0LGUudHJhbnNsYXRlWT1uLHZvaWQoZS50cmFuc2xhdGVYPXIrKGUuc3ZnV2lkdGgtZS5ncmlkV2lkdGgpLzIpO3N3aXRjaChpLmxlZ2VuZC5wb3NpdGlvbil7Y2FzZSJib3R0b20iOmUuZ3JpZEhlaWdodD1lLnN2Z0hlaWdodC10aGlzLmxnUmVjdC5oZWlnaHQtZS5nb2xkZW5QYWRkaW5nLGUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgsZS50cmFuc2xhdGVZPW4tMTAsZS50cmFuc2xhdGVYPXIrKGUuc3ZnV2lkdGgtZS5ncmlkV2lkdGgpLzI7YnJlYWs7Y2FzZSJ0b3AiOmUuZ3JpZEhlaWdodD1lLnN2Z0hlaWdodC10aGlzLmxnUmVjdC5oZWlnaHQtZS5nb2xkZW5QYWRkaW5nLGUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgsZS50cmFuc2xhdGVZPXRoaXMubGdSZWN0LmhlaWdodCtuKzEwLGUudHJhbnNsYXRlWD1yKyhlLnN2Z1dpZHRoLWUuZ3JpZFdpZHRoKS8yO2JyZWFrO2Nhc2UibGVmdCI6ZS5ncmlkV2lkdGg9ZS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1zLGUuZ3JpZEhlaWdodD0iYXV0byIhPT1pLmNoYXJ0LmhlaWdodD9lLnN2Z0hlaWdodDplLmdyaWRXaWR0aCxlLnRyYW5zbGF0ZVk9bixlLnRyYW5zbGF0ZVg9cit0aGlzLmxnUmVjdC53aWR0aCtzO2JyZWFrO2Nhc2UicmlnaHQiOmUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtcy01LGUuZ3JpZEhlaWdodD0iYXV0byIhPT1pLmNoYXJ0LmhlaWdodD9lLnN2Z0hlaWdodDplLmdyaWRXaWR0aCxlLnRyYW5zbGF0ZVk9bixlLnRyYW5zbGF0ZVg9cisxMDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiTGVnZW5kIHBvc2l0aW9uIG5vdCBzdXBwb3J0ZWQiKX19fSx7a2V5OiJjb25kaXRpb25hbENoZWNrc0ZvckF4aXNDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLncsYT1zLmdsb2JhbHMuaGFzR3JvdXBzPzI6MSxuPWkuaGVpZ2h0K3QuaGVpZ2h0K2UuaGVpZ2h0LHI9cy5nbG9iYWxzLmlzTXVsdGlMaW5lWD8xLjI6cy5nbG9iYWxzLkxJTkVfSEVJR0hUX1JBVElPLG89cy5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/MjI6MTAsbD1zLmdsb2JhbHMucm90YXRlWExhYmVscyYmImJvdHRvbSI9PT1zLmNvbmZpZy5sZWdlbmQucG9zaXRpb24/MTA6MDt0aGlzLnhBeGlzSGVpZ2h0PW4qcithKm8rbCx0aGlzLnhBeGlzV2lkdGg9dC53aWR0aCx0aGlzLnhBeGlzSGVpZ2h0LWUuaGVpZ2h0PnMuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQmJih0aGlzLnhBeGlzSGVpZ2h0PXMuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQpLHMuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQmJnRoaXMueEF4aXNIZWlnaHQ8cy5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCYmKHRoaXMueEF4aXNIZWlnaHQ9cy5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCkscy5jb25maWcueGF4aXMuZmxvYXRpbmcmJih0aGlzLnhBeGlzSGVpZ2h0PTApO3ZhciBjPTAsaD0wO3MuY29uZmlnLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2MrPXQubGFiZWxzLm1pbldpZHRoLGgrPXQubGFiZWxzLm1heFdpZHRofSkpLHRoaXMueUF4aXNXaWR0aDxjJiYodGhpcy55QXhpc1dpZHRoPWMpLHRoaXMueUF4aXNXaWR0aD5oJiYodGhpcy55QXhpc1dpZHRoPWgpfX1dKSx0fSgpLGh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmxnQ3R4PWV9cmV0dXJuIGModCxbe2tleToiZ2V0TGVnZW5kU3R5bGVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dC5zZXRBdHRyaWJ1dGUoInR5cGUiLCJ0ZXh0L2NzcyIpO3ZhciBlPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJcdFxuICAgIFx0XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQge1x0XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHRcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XHRcbiAgICAgICAgcGFkZGluZzogMCAxMHB4O1x0XG4gICAgICB9XHRcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbSwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wIHtcdFxuICAgICAgICBmbGV4LXdyYXA6IHdyYXBcdFxuICAgICAgfVx0XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tbGVmdCB7XHRcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcdFxuICAgICAgICBib3R0b206IDA7XHRcbiAgICAgIH1cdFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tLmFwZXhjaGFydHMtYWxpZ24tbGVmdCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wLmFwZXhjaGFydHMtYWxpZ24tbGVmdCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tcmlnaHQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWxlZnQge1x0XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcdFxuICAgICAgfVx0XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20uYXBleGNoYXJ0cy1hbGlnbi1jZW50ZXIsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcC5hcGV4Y2hhcnRzLWFsaWduLWNlbnRlciB7XHRcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7ICBcdFxuICAgICAgfVx0XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20uYXBleGNoYXJ0cy1hbGlnbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wLmFwZXhjaGFydHMtYWxpZ24tcmlnaHQge1x0XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHRcbiAgICAgIH1cdFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcyB7XHRcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1x0XG4gICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XHRcbiAgICAgIH1cdFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tIC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcCAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVze1x0XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHRcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcdFxuICAgICAgfVx0XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCB7XHRcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1x0XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcdFxuICAgICAgfVx0XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCAqLCAuYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyICoge1x0XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1x0XG4gICAgICB9XHRcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXIge1x0XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcdFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHRcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1x0XG4gICAgICAgIG1hcmdpbi1yaWdodDogM3B4O1x0XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICB9XHRcbiAgICAgIFx0XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXBleGNoYXJ0cy1hbGlnbi1yaWdodCAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXBleGNoYXJ0cy1hbGlnbi1sZWZ0IC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXN7XHRcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1x0XG4gICAgICB9XHRcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMuYXBleGNoYXJ0cy1uby1jbGljayB7XHRcbiAgICAgICAgY3Vyc29yOiBhdXRvO1x0XG4gICAgICB9XHRcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZCAuYXBleGNoYXJ0cy1oaWRkZW4temVyby1zZXJpZXMsIC5hcGV4Y2hhcnRzLWxlZ2VuZCAuYXBleGNoYXJ0cy1oaWRkZW4tbnVsbC1zZXJpZXMge1x0XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcdFxuICAgICAgfVx0XG4gICAgICAuYXBleGNoYXJ0cy1pbmFjdGl2ZS1sZWdlbmQge1x0XG4gICAgICAgIG9wYWNpdHk6IDAuNDU7XHRcbiAgICAgIH0iKTtyZXR1cm4gdC5hcHBlbmRDaGlsZChlKSx0fX0se2tleToiZ2V0TGVnZW5kQkJveCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLWxlZ2VuZCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dC53aWR0aDtyZXR1cm57Y2x3aDp0LmhlaWdodCxjbHd3OmV9fX0se2tleToiYXBwZW5kVG9Gb3JlaWduT2JqZWN0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzO3QuZG9tLmVsTGVnZW5kRm9yZWlnbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5TVkdOUywiZm9yZWlnbk9iamVjdCIpO3ZhciBlPXQuZG9tLmVsTGVnZW5kRm9yZWlnbjtlLnNldEF0dHJpYnV0ZSgieCIsMCksZS5zZXRBdHRyaWJ1dGUoInkiLDApLGUuc2V0QXR0cmlidXRlKCJ3aWR0aCIsdC5zdmdXaWR0aCksZS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsdC5zdmdIZWlnaHQpLHQuZG9tLmVsTGVnZW5kV3JhcC5zZXRBdHRyaWJ1dGUoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIpLGUuYXBwZW5kQ2hpbGQodC5kb20uZWxMZWdlbmRXcmFwKSxlLmFwcGVuZENoaWxkKHRoaXMuZ2V0TGVnZW5kU3R5bGVzKCkpLHQuZG9tLlBhcGVyLm5vZGUuaW5zZXJ0QmVmb3JlKGUsdC5kb20uZWxHcmFwaGljYWwubm9kZSl9fSx7a2V5OiJ0b2dnbGVEYXRhU2VyaWVzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMscz10aGlzLnc7aWYocy5nbG9iYWxzLmF4aXNDaGFydHN8fCJyYWRpYWxCYXIiPT09cy5jb25maWcuY2hhcnQudHlwZSl7cy5nbG9iYWxzLnJlc2l6ZWQ9ITA7dmFyIGE9bnVsbCxuPW51bGw7cy5nbG9iYWxzLnJpc2luZ1Nlcmllcz1bXSxzLmdsb2JhbHMuYXhpc0NoYXJ0cz8oYT1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcOnJlYWxJbmRleD0nIi5jb25jYXQodCwiJ10iKSksbj1wYXJzZUludChhLmdldEF0dHJpYnV0ZSgiZGF0YTpyZWFsSW5kZXgiKSwxMCkpOihhPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9JyIuY29uY2F0KHQrMSwiJ10iKSksbj1wYXJzZUludChhLmdldEF0dHJpYnV0ZSgicmVsIiksMTApLTEpLGU/W3tjczpzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLGNzaTpzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlc30se2NzOnMuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMsY3NpOnMuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzfV0uZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5yaXNlQ29sbGFwc2VkU2VyaWVzKHQuY3MsdC5jc2ksbil9KSk6dGhpcy5oaWRlU2VyaWVzKHtzZXJpZXNFbDphLHJlYWxJbmRleDpufSl9ZWxzZXt2YXIgcj1zLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdCgiIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9JyIuY29uY2F0KHQrMSwiJ10gcGF0aCIpKSxvPXMuY29uZmlnLmNoYXJ0LnR5cGU7aWYoInBpZSI9PT1vfHwicG9sYXJBcmVhIj09PW98fCJkb251dCI9PT1vKXt2YXIgbD1zLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQubGFiZWxzO25ldyBrKHRoaXMubGdDdHguY3R4KS5wYXRoTW91c2VEb3duKHIubWVtYmVyc1swXSxudWxsKSx0aGlzLmxnQ3R4LmN0eC5waWUucHJpbnREYXRhTGFiZWxzSW5uZXIoci5tZW1iZXJzWzBdLm5vZGUsbCl9ci5maXJlKCJjbGljayIpfX19LHtrZXk6ImhpZGVTZXJpZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc2VyaWVzRWwsaT10LnJlYWxJbmRleCxzPXRoaXMudyxhPWIuY2xvbmUocy5jb25maWcuc2VyaWVzKTtpZihzLmdsb2JhbHMuYXhpc0NoYXJ0cyl7dmFyIG49ITE7aWYocy5jb25maWcueWF4aXNbaV0mJnMuY29uZmlnLnlheGlzW2ldLnNob3cmJnMuY29uZmlnLnlheGlzW2ldLnNob3dBbHdheXMmJihuPSEwLHMuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoaSk8MCYmKHMuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMucHVzaCh7aW5kZXg6aSxkYXRhOmFbaV0uZGF0YS5zbGljZSgpLHR5cGU6ZS5wYXJlbnROb2RlLmNsYXNzTmFtZS5iYXNlVmFsLnNwbGl0KCItIilbMV19KSxzLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpKSksIW4pe3MuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMucHVzaCh7aW5kZXg6aSxkYXRhOmFbaV0uZGF0YS5zbGljZSgpLHR5cGU6ZS5wYXJlbnROb2RlLmNsYXNzTmFtZS5iYXNlVmFsLnNwbGl0KCItIilbMV19KSxzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpO3ZhciByPXMuZ2xvYmFscy5yaXNpbmdTZXJpZXMuaW5kZXhPZihpKTtzLmdsb2JhbHMucmlzaW5nU2VyaWVzLnNwbGljZShyLDEpfX1lbHNlIHMuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMucHVzaCh7aW5kZXg6aSxkYXRhOmFbaV19KSxzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpO2Zvcih2YXIgbz1lLmNoaWxkTm9kZXMsbD0wO2w8by5sZW5ndGg7bCsrKW9bbF0uY2xhc3NMaXN0LmNvbnRhaW5zKCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXAiKSYmKG9bbF0uY2xhc3NMaXN0LmNvbnRhaW5zKCJhcGV4Y2hhcnRzLWhpZGUiKT9vW2xdLmNsYXNzTGlzdC5yZW1vdmUoImFwZXhjaGFydHMtaGlkZSIpOm9bbF0uY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1oaWRlIikpO3MuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQ9cy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg9PT1zLmNvbmZpZy5zZXJpZXMubGVuZ3RoLGE9dGhpcy5fZ2V0U2VyaWVzQmFzZWRPbkNvbGxhcHNlZFN0YXRlKGEpLHRoaXMubGdDdHguY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhhLHMuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKX19LHtrZXk6InJpc2VDb2xsYXBzZWRTZXJpZXMiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLncsYT1iLmNsb25lKHMuY29uZmlnLnNlcmllcyk7aWYodC5sZW5ndGg+MCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXS5pbmRleD09PWkmJihzLmdsb2JhbHMuYXhpc0NoYXJ0cz8oYVtpXS5kYXRhPXRbbl0uZGF0YS5zbGljZSgpLHQuc3BsaWNlKG4sMSksZS5zcGxpY2UobiwxKSxzLmdsb2JhbHMucmlzaW5nU2VyaWVzLnB1c2goaSkpOihhW2ldPXRbbl0uZGF0YSx0LnNwbGljZShuLDEpLGUuc3BsaWNlKG4sMSkscy5nbG9iYWxzLnJpc2luZ1Nlcmllcy5wdXNoKGkpKSk7YT10aGlzLl9nZXRTZXJpZXNCYXNlZE9uQ29sbGFwc2VkU3RhdGUoYSksdGhpcy5sZ0N0eC5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKGEscy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpfX19LHtrZXk6Il9nZXRTZXJpZXNCYXNlZE9uQ29sbGFwc2VkU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm4gZS5nbG9iYWxzLmF4aXNDaGFydHM/dC5mb3JFYWNoKChmdW5jdGlvbihpLHMpe2UuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2Yocyk+LTEmJih0W3NdLmRhdGE9W10pfSkpOnQuZm9yRWFjaCgoZnVuY3Rpb24oaSxzKXtlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHMpPi0xJiYodFtzXT0wKX0pKSx0fX1dKSx0fSgpLGR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5vbkxlZ2VuZENsaWNrPXRoaXMub25MZWdlbmRDbGljay5iaW5kKHRoaXMpLHRoaXMub25MZWdlbmRIb3ZlcmVkPXRoaXMub25MZWdlbmRIb3ZlcmVkLmJpbmQodGhpcyksdGhpcy5pc0JhcnNEaXN0cmlidXRlZD0iYmFyIj09PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmdGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQmJjE9PT10aGlzLncuY29uZmlnLnNlcmllcy5sZW5ndGgsdGhpcy5sZWdlbmRIZWxwZXJzPW5ldyBodCh0aGlzKX1yZXR1cm4gYyh0LFt7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscyxpPXQuY29uZmlnO2lmKChpLmxlZ2VuZC5zaG93Rm9yU2luZ2xlU2VyaWVzJiYxPT09ZS5zZXJpZXMubGVuZ3RofHx0aGlzLmlzQmFyc0Rpc3RyaWJ1dGVkfHxlLnNlcmllcy5sZW5ndGg+MXx8IWUuYXhpc0NoYXJ0cykmJmkubGVnZW5kLnNob3cpe2Zvcig7ZS5kb20uZWxMZWdlbmRXcmFwLmZpcnN0Q2hpbGQ7KWUuZG9tLmVsTGVnZW5kV3JhcC5yZW1vdmVDaGlsZChlLmRvbS5lbExlZ2VuZFdyYXAuZmlyc3RDaGlsZCk7dGhpcy5kcmF3TGVnZW5kcygpLGIuaXNJRTExKCk/ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZCh0aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kU3R5bGVzKCkpOnRoaXMubGVnZW5kSGVscGVycy5hcHBlbmRUb0ZvcmVpZ25PYmplY3QoKSwiYm90dG9tIj09PWkubGVnZW5kLnBvc2l0aW9ufHwidG9wIj09PWkubGVnZW5kLnBvc2l0aW9uP3RoaXMubGVnZW5kQWxpZ25Ib3Jpem9udGFsKCk6InJpZ2h0IiE9PWkubGVnZW5kLnBvc2l0aW9uJiYibGVmdCIhPT1pLmxlZ2VuZC5wb3NpdGlvbnx8dGhpcy5sZWdlbmRBbGlnblZlcnRpY2FsKCl9fX0se2tleToiZHJhd0xlZ2VuZHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPWUuY29uZmlnLmxlZ2VuZC5mb250RmFtaWx5LHM9ZS5nbG9iYWxzLnNlcmllc05hbWVzLGE9ZS5nbG9iYWxzLmNvbG9ycy5zbGljZSgpO2lmKCJoZWF0bWFwIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUpe3ZhciBuPWUuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuY29sb3JTY2FsZS5yYW5nZXM7cz1uLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT90Lm5hbWU6dC5mcm9tKyIgLSAiK3QudG99KSksYT1uLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sb3J9KSl9ZWxzZSB0aGlzLmlzQmFyc0Rpc3RyaWJ1dGVkJiYocz1lLmdsb2JhbHMubGFiZWxzLnNsaWNlKCkpO2UuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcy5sZW5ndGgmJihzPWUuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcyk7Zm9yKHZhciByPWUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXIsbz1lLmNvbmZpZy5sZWdlbmQuaW52ZXJzZU9yZGVyLGw9bz9zLmxlbmd0aC0xOjA7bz9sPj0wOmw8PXMubGVuZ3RoLTE7bz9sLS06bCsrKXt2YXIgYz1yKHNbbF0se3Nlcmllc0luZGV4OmwsdzplfSksaD0hMSxkPSExO2lmKGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoPjApZm9yKHZhciB1PTA7dTxlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aDt1KyspZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc1t1XS5pbmRleD09PWwmJihoPSEwKTtpZihlLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg+MClmb3IodmFyIHA9MDtwPGUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aDtwKyspZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXNbcF09PT1sJiYoZD0hMCk7dmFyIGc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO2cuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyIik7dmFyIGY9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMub2Zmc2V0WCxtPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLm9mZnNldFksdj1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5oZWlnaHQseD1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy53aWR0aCx5PWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnN0cm9rZVdpZHRoLHc9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuc3Ryb2tlQ29sb3IsQz1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5yYWRpdXMsQT1nLnN0eWxlO0EuYmFja2dyb3VuZD1hW2xdLEEuY29sb3I9YVtsXSxBLnNldFByb3BlcnR5KCJiYWNrZ3JvdW5kIixhW2xdLCJpbXBvcnRhbnQiKSxlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzJiZlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzW2xdJiYoQS5iYWNrZ3JvdW5kPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmZpbGxDb2xvcnNbbF0pLHZvaWQgMCE9PWUuZ2xvYmFscy5zZXJpZXNDb2xvcnNbbF0mJihBLmJhY2tncm91bmQ9ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1tsXSxBLmNvbG9yPWUuZ2xvYmFscy5zZXJpZXNDb2xvcnNbbF0pLEEuaGVpZ2h0PUFycmF5LmlzQXJyYXkodik/cGFyc2VGbG9hdCh2W2xdKSsicHgiOnBhcnNlRmxvYXQodikrInB4IixBLndpZHRoPUFycmF5LmlzQXJyYXkoeCk/cGFyc2VGbG9hdCh4W2xdKSsicHgiOnBhcnNlRmxvYXQoeCkrInB4IixBLmxlZnQ9KEFycmF5LmlzQXJyYXkoZik/cGFyc2VGbG9hdChmW2xdKTpwYXJzZUZsb2F0KGYpKSsicHgiLEEudG9wPShBcnJheS5pc0FycmF5KG0pP3BhcnNlRmxvYXQobVtsXSk6cGFyc2VGbG9hdChtKSkrInB4IixBLmJvcmRlcldpZHRoPUFycmF5LmlzQXJyYXkoeSk/eVtsXTp5LEEuYm9yZGVyQ29sb3I9QXJyYXkuaXNBcnJheSh3KT93W2xdOncsQS5ib3JkZXJSYWRpdXM9QXJyYXkuaXNBcnJheShDKT9wYXJzZUZsb2F0KENbbF0pKyJweCI6cGFyc2VGbG9hdChDKSsicHgiLGUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUwmJihBcnJheS5pc0FycmF5KGUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUwpP2UuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUxbbF0mJihnLmlubmVySFRNTD1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MW2xdKCkpOmcuaW5uZXJIVE1MPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUwoKSksay5zZXRBdHRycyhnLHtyZWw6bCsxLCJkYXRhOmNvbGxhcHNlZCI6aHx8ZH0pLChofHxkKSYmZy5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZCIpO3ZhciBFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLFQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO1QuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCIpLFQuaW5uZXJIVE1MPUFycmF5LmlzQXJyYXkoYyk/Yy5qb2luKCIgIik6Yzt2YXIgTD1lLmNvbmZpZy5sZWdlbmQubGFiZWxzLnVzZVNlcmllc0NvbG9ycz9lLmdsb2JhbHMuY29sb3JzW2xdOmUuY29uZmlnLmxlZ2VuZC5sYWJlbHMuY29sb3JzO0x8fChMPWUuY29uZmlnLmNoYXJ0LmZvcmVDb2xvciksVC5zdHlsZS5jb2xvcj1MLFQuc3R5bGUuZm9udFNpemU9cGFyc2VGbG9hdChlLmNvbmZpZy5sZWdlbmQuZm9udFNpemUpKyJweCIsVC5zdHlsZS5mb250V2VpZ2h0PWUuY29uZmlnLmxlZ2VuZC5mb250V2VpZ2h0LFQuc3R5bGUuZm9udEZhbWlseT1pfHxlLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGsuc2V0QXR0cnMoVCx7cmVsOmwrMSxpOmwsImRhdGE6ZGVmYXVsdC10ZXh0IjplbmNvZGVVUklDb21wb25lbnQoYyksImRhdGE6Y29sbGFwc2VkIjpofHxkfSksRS5hcHBlbmRDaGlsZChnKSxFLmFwcGVuZENoaWxkKFQpO3ZhciBQPW5ldyBTKHRoaXMuY3R4KTtlLmNvbmZpZy5sZWdlbmQuc2hvd0Zvclplcm9TZXJpZXN8fDA9PT1QLmdldFNlcmllc1RvdGFsQnlJbmRleChsKSYmUC5zZXJpZXNIYXZlU2FtZVZhbHVlcyhsKSYmIVAuaXNTZXJpZXNOdWxsKGwpJiYtMT09PWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YobCkmJi0xPT09ZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihsKSYmRS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWhpZGRlbi16ZXJvLXNlcmllcyIpLGUuY29uZmlnLmxlZ2VuZC5zaG93Rm9yTnVsbFNlcmllc3x8UC5pc1Nlcmllc051bGwobCkmJi0xPT09ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihsKSYmLTE9PT1lLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpJiZFLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtaGlkZGVuLW51bGwtc2VyaWVzIiksZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuYXBwZW5kQ2hpbGQoRSksZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1hbGlnbi0iLmNvbmNhdChlLmNvbmZpZy5sZWdlbmQuaG9yaXpvbnRhbEFsaWduKSksZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuY2xhc3NMaXN0LmFkZCgiYXB4LWxlZ2VuZC1wb3NpdGlvbi0iK2UuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiksRS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMiKSxFLnN0eWxlLm1hcmdpbj0iIi5jb25jYXQoZS5jb25maWcubGVnZW5kLml0ZW1NYXJnaW4udmVydGljYWwsInB4ICIpLmNvbmNhdChlLmNvbmZpZy5sZWdlbmQuaXRlbU1hcmdpbi5ob3Jpem9udGFsLCJweCIpLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLnN0eWxlLndpZHRoPWUuY29uZmlnLmxlZ2VuZC53aWR0aD9lLmNvbmZpZy5sZWdlbmQud2lkdGgrInB4IjoiIixlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5zdHlsZS5oZWlnaHQ9ZS5jb25maWcubGVnZW5kLmhlaWdodD9lLmNvbmZpZy5sZWdlbmQuaGVpZ2h0KyJweCI6IiIsay5zZXRBdHRycyhFLHtyZWw6bCsxLHNlcmllc05hbWU6Yi5lc2NhcGVTdHJpbmcoc1tsXSksImRhdGE6Y29sbGFwc2VkIjpofHxkfSksKGh8fGQpJiZFLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kIiksZS5jb25maWcubGVnZW5kLm9uSXRlbUNsaWNrLnRvZ2dsZURhdGFTZXJpZXN8fEUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1uby1jbGljayIpfWUuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0Lm9uTGVnZW5kQ2xpY2ssITApLGUuY29uZmlnLmxlZ2VuZC5vbkl0ZW1Ib3Zlci5oaWdobGlnaHREYXRhU2VyaWVzJiYwPT09ZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aCYmKGUuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdC5vbkxlZ2VuZEhvdmVyZWQsITApLGUuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0Iix0Lm9uTGVnZW5kSG92ZXJlZCwhMCkpfX0se2tleToic2V0TGVnZW5kV3JhcFhZIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLWxlZ2VuZCIpLGE9cy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPTAscj0wO2lmKCJib3R0b20iPT09aS5jb25maWcubGVnZW5kLnBvc2l0aW9uKXIrPWkuZ2xvYmFscy5zdmdIZWlnaHQtYS5oZWlnaHQvMjtlbHNlIGlmKCJ0b3AiPT09aS5jb25maWcubGVnZW5kLnBvc2l0aW9uKXt2YXIgbz1uZXcgY3QodGhpcy5jdHgpLGw9by5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoInRpdGxlIikuaGVpZ2h0LGM9by5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoInN1YnRpdGxlIikuaGVpZ2h0O3I9cisobD4wP2wtMTA6MCkrKGM+MD9jLTEwOjApfXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixuPW4rdCtpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WCxyPXIrZStpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WSxzLnN0eWxlLmxlZnQ9bisicHgiLHMuc3R5bGUudG9wPXIrInB4IiwiYm90dG9tIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj8ocy5zdHlsZS50b3A9ImF1dG8iLHMuc3R5bGUuYm90dG9tPTUtaS5jb25maWcubGVnZW5kLm9mZnNldFkrInB4Iik6InJpZ2h0Ij09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmKHMuc3R5bGUubGVmdD0iYXV0byIscy5zdHlsZS5yaWdodD0yNStpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WCsicHgiKSxbIndpZHRoIiwiaGVpZ2h0Il0uZm9yRWFjaCgoZnVuY3Rpb24odCl7cy5zdHlsZVt0XSYmKHMuc3R5bGVbdF09cGFyc2VJbnQoaS5jb25maWcubGVnZW5kW3RdLDEwKSsicHgiKX0pKX19LHtrZXk6ImxlZ2VuZEFsaWduSG9yaXpvbnRhbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtbGVnZW5kIikuc3R5bGUucmlnaHQ9MDt2YXIgZT10aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kQkJveCgpLGk9bmV3IGN0KHRoaXMuY3R4KSxzPWkuZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKCJ0aXRsZSIpLGE9aS5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoInN1YnRpdGxlIiksbj0wOyJib3R0b20iPT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uP249LWUuY2x3aC8xLjg6InRvcCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihuPXMuaGVpZ2h0K2EuaGVpZ2h0K3QuY29uZmlnLnRpdGxlLm1hcmdpbit0LmNvbmZpZy5zdWJ0aXRsZS5tYXJnaW4tMTApLHRoaXMuc2V0TGVnZW5kV3JhcFhZKDIwLG4pfX0se2tleToibGVnZW5kQWxpZ25WZXJ0aWNhbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kQkJveCgpLGk9MDsibGVmdCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihpPTIwKSwicmlnaHQiPT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiYoaT10Lmdsb2JhbHMuc3ZnV2lkdGgtZS5jbHd3LTEwKSx0aGlzLnNldExlZ2VuZFdyYXBYWShpLDIwKX19LHtrZXk6Im9uTGVnZW5kSG92ZXJlZCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0Iil8fHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyIik7aWYoImhlYXRtYXAiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8dGhpcy5pc0JhcnNEaXN0cmlidXRlZCl7aWYoaSl7dmFyIHM9cGFyc2VJbnQodC50YXJnZXQuZ2V0QXR0cmlidXRlKCJyZWwiKSwxMCktMTt0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KCJsZWdlbmRIb3ZlciIsW3RoaXMuY3R4LHMsdGhpcy53XSksbmV3IFkodGhpcy5jdHgpLmhpZ2hsaWdodFJhbmdlSW5TZXJpZXModCx0LnRhcmdldCl9fWVsc2UhdC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZCIpJiZpJiZuZXcgWSh0aGlzLmN0eCkudG9nZ2xlU2VyaWVzT25Ib3Zlcih0LHQudGFyZ2V0KX19LHtrZXk6Im9uTGVnZW5kQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZighZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aCYmKHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCIpfHx0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlciIpKSl7dmFyIGk9cGFyc2VJbnQodC50YXJnZXQuZ2V0QXR0cmlidXRlKCJyZWwiKSwxMCktMSxzPSJ0cnVlIj09PXQudGFyZ2V0LmdldEF0dHJpYnV0ZSgiZGF0YTpjb2xsYXBzZWQiKSxhPXRoaXMudy5jb25maWcuY2hhcnQuZXZlbnRzLmxlZ2VuZENsaWNrOyJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhKHRoaXMuY3R4LGksdGhpcy53KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KCJsZWdlbmRDbGljayIsW3RoaXMuY3R4LGksdGhpcy53XSk7dmFyIG49dGhpcy53LmNvbmZpZy5sZWdlbmQubWFya2Vycy5vbkNsaWNrOyJmdW5jdGlvbiI9PXR5cGVvZiBuJiZ0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlciIpJiYobih0aGlzLmN0eCxpLHRoaXMudyksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudCgibGVnZW5kTWFya2VyQ2xpY2siLFt0aGlzLmN0eCxpLHRoaXMud10pKSwidHJlZW1hcCIhPT1lLmNvbmZpZy5jaGFydC50eXBlJiYiaGVhdG1hcCIhPT1lLmNvbmZpZy5jaGFydC50eXBlJiYhdGhpcy5pc0JhcnNEaXN0cmlidXRlZCYmZS5jb25maWcubGVnZW5kLm9uSXRlbUNsaWNrLnRvZ2dsZURhdGFTZXJpZXMmJnRoaXMubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKGkscyl9fX1dKSx0fSgpLHV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLmV2PXRoaXMudy5jb25maWcuY2hhcnQuZXZlbnRzLHRoaXMuc2VsZWN0ZWRDbGFzcz0iYXBleGNoYXJ0cy1zZWxlY3RlZCIsdGhpcy5sb2NhbGVWYWx1ZXM9dGhpcy53Lmdsb2JhbHMubG9jYWxlLnRvb2xiYXIsdGhpcy5taW5YPWkuZ2xvYmFscy5taW5YLHRoaXMubWF4WD1pLmdsb2JhbHMubWF4WH1yZXR1cm4gYyh0LFt7a2V5OiJjcmVhdGVUb29sYmFyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKX0scz1pKCk7aWYocy5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiYXBleGNoYXJ0cy10b29sYmFyIikscy5zdHlsZS50b3A9ZS5jb25maWcuY2hhcnQudG9vbGJhci5vZmZzZXRZKyJweCIscy5zdHlsZS5yaWdodD0zLWUuY29uZmlnLmNoYXJ0LnRvb2xiYXIub2Zmc2V0WCsicHgiLGUuZ2xvYmFscy5kb20uZWxXcmFwLmFwcGVuZENoaWxkKHMpLHRoaXMuZWxab29tPWkoKSx0aGlzLmVsWm9vbUluPWkoKSx0aGlzLmVsWm9vbU91dD1pKCksdGhpcy5lbFBhbj1pKCksdGhpcy5lbFNlbGVjdGlvbj1pKCksdGhpcy5lbFpvb21SZXNldD1pKCksdGhpcy5lbE1lbnVJY29uPWkoKSx0aGlzLmVsTWVudT1pKCksdGhpcy5lbEN1c3RvbUljb25zPVtdLHRoaXMudD1lLmNvbmZpZy5jaGFydC50b29sYmFyLnRvb2xzLEFycmF5LmlzQXJyYXkodGhpcy50LmN1c3RvbUljb25zKSlmb3IodmFyIGE9MDthPHRoaXMudC5jdXN0b21JY29ucy5sZW5ndGg7YSsrKXRoaXMuZWxDdXN0b21JY29ucy5wdXNoKGkoKSk7dmFyIG49W10scj1mdW5jdGlvbihpLHMsYSl7dmFyIHI9aS50b0xvd2VyQ2FzZSgpO3QudFtyXSYmZS5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkJiZuLnB1c2goe2VsOnMsaWNvbjoic3RyaW5nIj09dHlwZW9mIHQudFtyXT90LnRbcl06YSx0aXRsZTp0LmxvY2FsZVZhbHVlc1tpXSxjbGFzczoiYXBleGNoYXJ0cy0iLmNvbmNhdChyLCItaWNvbiIpfSl9O3IoInpvb21JbiIsdGhpcy5lbFpvb21JbiwnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij5cbiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+XG4gICAgPHBhdGggZD0iTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiLz5cbjwvc3ZnPlxuJykscigiem9vbU91dCIsdGhpcy5lbFpvb21PdXQsJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+XG4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPlxuICAgIDxwYXRoIGQ9Ik03IDExdjJoMTB2LTJIN3ptNS05QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiLz5cbjwvc3ZnPlxuJyk7dmFyIG89ZnVuY3Rpb24oaSl7dC50W2ldJiZlLmNvbmZpZy5jaGFydFtpXS5lbmFibGVkJiZuLnB1c2goe2VsOiJ6b29tIj09PWk/dC5lbFpvb206dC5lbFNlbGVjdGlvbixpY29uOiJzdHJpbmciPT10eXBlb2YgdC50W2ldP3QudFtpXToiem9vbSI9PT1pPyc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0iIzAwMDAwMCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiPlxuICAgIDxwYXRoIGQ9Ik0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0eiIvPlxuICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPlxuICAgIDxwYXRoIGQ9Ik0xMiAxMGgtMnYySDl2LTJIN1Y5aDJWN2gxdjJoMnYxeiIvPlxuPC9zdmc+JzonPHN2ZyBmaWxsPSIjNkU4MTkyIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj5cbiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+XG4gICAgPHBhdGggZD0iTTMgNWgyVjNjLTEuMSAwLTIgLjktMiAyem0wIDhoMnYtMkgzdjJ6bTQgOGgydi0ySDd2MnpNMyA5aDJWN0gzdjJ6bTEwLTZoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyek05IDNIN3YyaDJWM3ptMiAxOGgydi0yaC0ydjJ6bTgtOGgydi0yaC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyem0wLTEyaDJWN2gtMnYyem0wIDhoMnYtMmgtMnYyem0tNCA0aDJ2LTJoLTJ2MnptMC0xNmgyVjNoLTJ2MnoiLz5cbjwvc3ZnPicsdGl0bGU6dC5sb2NhbGVWYWx1ZXNbInpvb20iPT09aT8ic2VsZWN0aW9uWm9vbSI6InNlbGVjdGlvbiJdLGNsYXNzOmUuZ2xvYmFscy5pc1RvdWNoRGV2aWNlPyJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuIjoiYXBleGNoYXJ0cy0iLmNvbmNhdChpLCItaWNvbiIpfSl9O28oInpvb20iKSxvKCJzZWxlY3Rpb24iKSx0aGlzLnQucGFuJiZlLmNvbmZpZy5jaGFydC56b29tLmVuYWJsZWQmJm4ucHVzaCh7ZWw6dGhpcy5lbFBhbixpY29uOiJzdHJpbmciPT10eXBlb2YgdGhpcy50LnBhbj90aGlzLnQucGFuOic8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGZpbGw9IiMwMDAwMDAiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0Ij5cbiAgICA8ZGVmcz5cbiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgaWQ9ImEiLz5cbiAgICA8L2RlZnM+XG4gICAgPGNsaXBQYXRoIGlkPSJiIj5cbiAgICAgICAgPHVzZSBvdmVyZmxvdz0idmlzaWJsZSIgeGxpbms6aHJlZj0iI2EiLz5cbiAgICA8L2NsaXBQYXRoPlxuICAgIDxwYXRoIGNsaXAtcGF0aD0idXJsKCNiKSIgZD0iTTIzIDUuNVYyMGMwIDIuMi0xLjggNC00IDRoLTcuM2MtMS4wOCAwLTIuMS0uNDMtMi44NS0xLjE5TDEgMTQuODNzMS4yNi0xLjIzIDEuMy0xLjI1Yy4yMi0uMTkuNDktLjI5Ljc5LS4yOS4yMiAwIC40Mi4wNi42LjE2LjA0LjAxIDQuMzEgMi40NiA0LjMxIDIuNDZWNGMwLS44My42Ny0xLjUgMS41LTEuNVMxMSAzLjE3IDExIDR2N2gxVjEuNWMwLS44My42Ny0xLjUgMS41LTEuNVMxNSAuNjcgMTUgMS41VjExaDFWMi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41VjExaDFWNS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41eiIvPlxuPC9zdmc+Jyx0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5wYW4sY2xhc3M6ZS5nbG9iYWxzLmlzVG91Y2hEZXZpY2U/ImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW4iOiJhcGV4Y2hhcnRzLXBhbi1pY29uIn0pLHIoInJlc2V0Iix0aGlzLmVsWm9vbVJlc2V0LCc8c3ZnIGZpbGw9IiMwMDAwMDAiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPlxuICAgIDxwYXRoIGQ9Ik0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6Ii8+XG4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPlxuPC9zdmc+JyksdGhpcy50LmRvd25sb2FkJiZuLnB1c2goe2VsOnRoaXMuZWxNZW51SWNvbixpY29uOiJzdHJpbmciPT10eXBlb2YgdGhpcy50LmRvd25sb2FkP3RoaXMudC5kb3dubG9hZDonPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDBWMHoiLz48cGF0aCBkPSJNMyAxOGgxOHYtMkgzdjJ6bTAtNWgxOHYtMkgzdjJ6bTAtN3YyaDE4VjZIM3oiLz48L3N2Zz4nLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLm1lbnUsY2xhc3M6ImFwZXhjaGFydHMtbWVudS1pY29uIn0pO2Zvcih2YXIgbD0wO2w8dGhpcy5lbEN1c3RvbUljb25zLmxlbmd0aDtsKyspbi5wdXNoKHtlbDp0aGlzLmVsQ3VzdG9tSWNvbnNbbF0saWNvbjp0aGlzLnQuY3VzdG9tSWNvbnNbbF0uaWNvbix0aXRsZTp0aGlzLnQuY3VzdG9tSWNvbnNbbF0udGl0bGUsaW5kZXg6dGhpcy50LmN1c3RvbUljb25zW2xdLmluZGV4LGNsYXNzOiJhcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24gIit0aGlzLnQuY3VzdG9tSWNvbnNbbF0uY2xhc3N9KTtuLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5pbmRleCYmYi5tb3ZlSW5kZXhJbkFycmF5KG4sZSx0LmluZGV4KX0pKTtmb3IodmFyIGM9MDtjPG4ubGVuZ3RoO2MrKylrLnNldEF0dHJzKG5bY10uZWwse2NsYXNzOm5bY10uY2xhc3MsdGl0bGU6bltjXS50aXRsZX0pLG5bY10uZWwuaW5uZXJIVE1MPW5bY10uaWNvbixzLmFwcGVuZENoaWxkKG5bY10uZWwpO3RoaXMuX2NyZWF0ZUhhbWJ1cmdlck1lbnUocyksZS5nbG9iYWxzLnpvb21FbmFibGVkP3RoaXMuZWxab29tLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKTplLmdsb2JhbHMucGFuRW5hYmxlZD90aGlzLmVsUGFuLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKTplLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCYmdGhpcy5lbFNlbGVjdGlvbi5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyksdGhpcy5hZGRUb29sYmFyRXZlbnRMaXN0ZW5lcnMoKX19LHtrZXk6Il9jcmVhdGVIYW1idXJnZXJNZW51Iix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmVsTWVudUl0ZW1zPVtdLHQuYXBwZW5kQ2hpbGQodGhpcy5lbE1lbnUpLGsuc2V0QXR0cnModGhpcy5lbE1lbnUse2NsYXNzOiJhcGV4Y2hhcnRzLW1lbnUifSk7dmFyIGU9W3tuYW1lOiJleHBvcnRTVkciLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLmV4cG9ydFRvU1ZHfSx7bmFtZToiZXhwb3J0UE5HIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb1BOR30se25hbWU6ImV4cG9ydENTViIsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMuZXhwb3J0VG9DU1Z9XTt0aGlzLncuZ2xvYmFscy5hbGxTZXJpZXNIYXNFcXVhbFh8fGUuc3BsaWNlKDIsMSk7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy5lbE1lbnVJdGVtcy5wdXNoKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSx0aGlzLmVsTWVudUl0ZW1zW2ldLmlubmVySFRNTD1lW2ldLnRpdGxlLGsuc2V0QXR0cnModGhpcy5lbE1lbnVJdGVtc1tpXSx7Y2xhc3M6ImFwZXhjaGFydHMtbWVudS1pdGVtICIuY29uY2F0KGVbaV0ubmFtZSksdGl0bGU6ZVtpXS50aXRsZX0pLHRoaXMuZWxNZW51LmFwcGVuZENoaWxkKHRoaXMuZWxNZW51SXRlbXNbaV0pfX0se2tleToiYWRkVG9vbGJhckV2ZW50TGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5lbFpvb21SZXNldC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5oYW5kbGVab29tUmVzZXQuYmluZCh0aGlzKSksdGhpcy5lbFNlbGVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy50b2dnbGVab29tU2VsZWN0aW9uLmJpbmQodGhpcywic2VsZWN0aW9uIikpLHRoaXMuZWxab29tLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLnRvZ2dsZVpvb21TZWxlY3Rpb24uYmluZCh0aGlzLCJ6b29tIikpLHRoaXMuZWxab29tSW4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuaGFuZGxlWm9vbUluLmJpbmQodGhpcykpLHRoaXMuZWxab29tT3V0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLmhhbmRsZVpvb21PdXQuYmluZCh0aGlzKSksdGhpcy5lbFBhbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy50b2dnbGVQYW5uaW5nLmJpbmQodGhpcykpLHRoaXMuZWxNZW51SWNvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy50b2dnbGVNZW51LmJpbmQodGhpcykpLHRoaXMuZWxNZW51SXRlbXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5jbGFzc0xpc3QuY29udGFpbnMoImV4cG9ydFNWRyIpP2UuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHQuaGFuZGxlRG93bmxvYWQuYmluZCh0LCJzdmciKSk6ZS5jbGFzc0xpc3QuY29udGFpbnMoImV4cG9ydFBORyIpP2UuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHQuaGFuZGxlRG93bmxvYWQuYmluZCh0LCJwbmciKSk6ZS5jbGFzc0xpc3QuY29udGFpbnMoImV4cG9ydENTViIpJiZlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0LmhhbmRsZURvd25sb2FkLmJpbmQodCwiY3N2IikpfSkpO2Zvcih2YXIgZT0wO2U8dGhpcy50LmN1c3RvbUljb25zLmxlbmd0aDtlKyspdGhpcy5lbEN1c3RvbUljb25zW2VdLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLnQuY3VzdG9tSWNvbnNbZV0uY2xpY2suYmluZCh0aGlzLHRoaXMuY3R4LHRoaXMuY3R4LncpKX19LHtrZXk6InRvZ2dsZVpvb21TZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3R4LmdldFN5bmNlZENoYXJ0cygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuY3R4LnRvb2xiYXIudG9nZ2xlT3RoZXJDb250cm9scygpO3ZhciBpPSJzZWxlY3Rpb24iPT09dD9lLmN0eC50b29sYmFyLmVsU2VsZWN0aW9uOmUuY3R4LnRvb2xiYXIuZWxab29tLHM9InNlbGVjdGlvbiI9PT10PyJzZWxlY3Rpb25FbmFibGVkIjoiem9vbUVuYWJsZWQiO2Uudy5nbG9iYWxzW3NdPSFlLncuZ2xvYmFsc1tzXSxpLmNsYXNzTGlzdC5jb250YWlucyhlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpP2kuY2xhc3NMaXN0LnJlbW92ZShlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpOmkuY2xhc3NMaXN0LmFkZChlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpfSkpfX0se2tleToiZ2V0VG9vbGJhckljb25zUmVmZXJlbmNlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0aGlzLmVsWm9vbXx8KHRoaXMuZWxab29tPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXpvb20taWNvbiIpKSx0aGlzLmVsUGFufHwodGhpcy5lbFBhbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1wYW4taWNvbiIpKSx0aGlzLmVsU2VsZWN0aW9ufHwodGhpcy5lbFNlbGVjdGlvbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiIpKX19LHtrZXk6ImVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhciIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy50b2dnbGVPdGhlckNvbnRyb2xzKCksInBhbiI9PT10P3RoaXMudy5nbG9iYWxzLnBhbkVuYWJsZWQ9ITA6dGhpcy53Lmdsb2JhbHMuem9vbUVuYWJsZWQ9ITA7dmFyIGU9InBhbiI9PT10P3RoaXMuZWxQYW46dGhpcy5lbFpvb20saT0icGFuIj09PXQ/dGhpcy5lbFpvb206dGhpcy5lbFBhbjtlJiZlLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKSxpJiZpLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5zZWxlY3RlZENsYXNzKX19LHtrZXk6InRvZ2dsZVBhbm5pbmciLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdHguZ2V0U3luY2VkQ2hhcnRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jdHgudG9vbGJhci50b2dnbGVPdGhlckNvbnRyb2xzKCksdC53Lmdsb2JhbHMucGFuRW5hYmxlZD0hdC53Lmdsb2JhbHMucGFuRW5hYmxlZCx0LmN0eC50b29sYmFyLmVsUGFuLmNsYXNzTGlzdC5jb250YWlucyh0LmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpP3QuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LnJlbW92ZSh0LmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpOnQuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LmFkZCh0LmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpfSkpfX0se2tleToidG9nZ2xlT3RoZXJDb250cm9scyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53O2UuZ2xvYmFscy5wYW5FbmFibGVkPSExLGUuZ2xvYmFscy56b29tRW5hYmxlZD0hMSxlLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZD0hMSx0aGlzLmdldFRvb2xiYXJJY29uc1JlZmVyZW5jZSgpLFt0aGlzLmVsUGFuLHRoaXMuZWxTZWxlY3Rpb24sdGhpcy5lbFpvb21dLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UmJmUuY2xhc3NMaXN0LnJlbW92ZSh0LnNlbGVjdGVkQ2xhc3MpfSkpfX0se2tleToiaGFuZGxlWm9vbUluIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMuaXNSYW5nZUJhciYmKHRoaXMubWluWD10Lmdsb2JhbHMubWluWSx0aGlzLm1heFg9dC5nbG9iYWxzLm1heFkpO3ZhciBlPSh0aGlzLm1pblgrdGhpcy5tYXhYKS8yLGk9KHRoaXMubWluWCtlKS8yLHM9KHRoaXMubWF4WCtlKS8yLGE9dGhpcy5fZ2V0TmV3TWluWE1heFgoaSxzKTt0Lmdsb2JhbHMuZGlzYWJsZVpvb21Jbnx8dGhpcy56b29tVXBkYXRlT3B0aW9ucyhhLm1pblgsYS5tYXhYKX19LHtrZXk6ImhhbmRsZVpvb21PdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHQuZ2xvYmFscy5pc1JhbmdlQmFyJiYodGhpcy5taW5YPXQuZ2xvYmFscy5taW5ZLHRoaXMubWF4WD10Lmdsb2JhbHMubWF4WSksISgiZGF0ZXRpbWUiPT09dC5jb25maWcueGF4aXMudHlwZSYmbmV3IERhdGUodGhpcy5taW5YKS5nZXRVVENGdWxsWWVhcigpPDFlMykpe3ZhciBlPSh0aGlzLm1pblgrdGhpcy5tYXhYKS8yLGk9dGhpcy5taW5YLShlLXRoaXMubWluWCkscz10aGlzLm1heFgtKGUtdGhpcy5tYXhYKSxhPXRoaXMuX2dldE5ld01pblhNYXhYKGkscyk7dC5nbG9iYWxzLmRpc2FibGVab29tT3V0fHx0aGlzLnpvb21VcGRhdGVPcHRpb25zKGEubWluWCxhLm1heFgpfX19LHtrZXk6Il9nZXROZXdNaW5YTWF4WCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYztyZXR1cm57bWluWDppP01hdGguZmxvb3IodCk6dCxtYXhYOmk/TWF0aC5mbG9vcihlKTplfX19LHtrZXk6Inpvb21VcGRhdGVPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZih2b2lkIDAhPT10fHx2b2lkIDAhPT1lKXtpZighKGkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKHQ8MSYmKHQ9MSxlPWkuZ2xvYmFscy5kYXRhUG9pbnRzKSxlLXQ8MikpKXt2YXIgcz17bWluOnQsbWF4OmV9LGE9dGhpcy5nZXRCZWZvcmVab29tUmFuZ2Uocyk7YSYmKHM9YS54YXhpcyk7dmFyIG49e3hheGlzOnN9LHI9Yi5jbG9uZShpLmdsb2JhbHMuaW5pdGlhbENvbmZpZy55YXhpcyk7aS5jb25maWcuY2hhcnQuem9vbS5hdXRvU2NhbGVZYXhpcyYmKHI9bmV3IHEodGhpcy5jdHgpLmF1dG9TY2FsZVkodGhpcy5jdHgscix7eGF4aXM6c30pKSxpLmNvbmZpZy5jaGFydC5ncm91cHx8KG4ueWF4aXM9ciksdGhpcy53Lmdsb2JhbHMuem9vbWVkPSEwLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMobiwhMSx0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKSx0aGlzLnpvb21DYWxsYmFjayhzLHIpfX1lbHNlIHRoaXMuaGFuZGxlWm9vbVJlc2V0KCl9fSx7a2V5OiJ6b29tQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKHQsZSl7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuZXYuem9vbWVkJiZ0aGlzLmV2Lnpvb21lZCh0aGlzLmN0eCx7eGF4aXM6dCx5YXhpczplfSl9fSx7a2V5OiJnZXRCZWZvcmVab29tUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9bnVsbDtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5ldi5iZWZvcmVab29tJiYoaT10aGlzLmV2LmJlZm9yZVpvb20odGhpcyx7eGF4aXM6dCx5YXhpczplfSkpLGl9fSx7a2V5OiJ0b2dnbGVNZW51Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5lbE1lbnUuY2xhc3NMaXN0LmNvbnRhaW5zKCJhcGV4Y2hhcnRzLW1lbnUtb3BlbiIpP3QuZWxNZW51LmNsYXNzTGlzdC5yZW1vdmUoImFwZXhjaGFydHMtbWVudS1vcGVuIik6dC5lbE1lbnUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1tZW51LW9wZW4iKX0pLDApfX0se2tleToiaGFuZGxlRG93bmxvYWQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBqKHRoaXMuY3R4KTtzd2l0Y2godCl7Y2FzZSJzdmciOmkuZXhwb3J0VG9TVkcodGhpcy5jdHgpO2JyZWFrO2Nhc2UicG5nIjppLmV4cG9ydFRvUG5nKHRoaXMuY3R4KTticmVhaztjYXNlImNzdiI6aS5leHBvcnRUb0NTVih7c2VyaWVzOmUuY29uZmlnLnNlcmllcyxjb2x1bW5EZWxpbWl0ZXI6ZS5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmNvbHVtbkRlbGltaXRlcn0pfX19LHtrZXk6ImhhbmRsZVpvb21SZXNldCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jdHguZ2V0U3luY2VkQ2hhcnRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC53O2lmKGUuZ2xvYmFscy5sYXN0WEF4aXMubWluPXZvaWQgMCxlLmdsb2JhbHMubGFzdFhBeGlzLm1heD12b2lkIDAsdC51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCksImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVSZXNldFpvb20pe3ZhciBpPWUuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVSZXNldFpvb20odCxlKTtpJiZ0LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoaSl9ImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQmJnQuY3R4LnRvb2xiYXIuem9vbUNhbGxiYWNrKHttaW46ZS5jb25maWcueGF4aXMubWluLG1heDplLmNvbmZpZy54YXhpcy5tYXh9KSxlLmdsb2JhbHMuem9vbWVkPSExO3ZhciBzPXQuY3R4LnNlcmllcy5lbXB0eUNvbGxhcHNlZFNlcmllcyhiLmNsb25lKGUuZ2xvYmFscy5pbml0aWFsU2VyaWVzKSk7dC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMocyxlLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCl9KSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZWxab29tPW51bGwsdGhpcy5lbFpvb21Jbj1udWxsLHRoaXMuZWxab29tT3V0PW51bGwsdGhpcy5lbFBhbj1udWxsLHRoaXMuZWxTZWxlY3Rpb249bnVsbCx0aGlzLmVsWm9vbVJlc2V0PW51bGwsdGhpcy5lbE1lbnVJY29uPW51bGx9fV0pLHR9KCkscHQ9ZnVuY3Rpb24odCl7ZChpLHV0KTt2YXIgZT1mKGkpO2Z1bmN0aW9uIGkodCl7dmFyIHM7cmV0dXJuIG8odGhpcyxpKSwocz1lLmNhbGwodGhpcyx0KSkuY3R4PXQscy53PXQudyxzLmRyYWdnZWQ9ITEscy5ncmFwaGljcz1uZXcgayhzLmN0eCkscy5ldmVudExpc3Q9WyJtb3VzZWRvd24iLCJtb3VzZWxlYXZlIiwibW91c2Vtb3ZlIiwidG91Y2hzdGFydCIsInRvdWNobW92ZSIsIm1vdXNldXAiLCJ0b3VjaGVuZCJdLHMuY2xpZW50WD0wLHMuY2xpZW50WT0wLHMuc3RhcnRYPTAscy5lbmRYPTAscy5kcmFnWD0wLHMuc3RhcnRZPTAscy5lbmRZPTAscy5kcmFnWT0wLHMubW92ZURpcmVjdGlvbj0ibm9uZSIsc31yZXR1cm4gYyhpLFt7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC54eVJhdGlvcyxzPXRoaXMudyxhPXRoaXM7dGhpcy54eVJhdGlvcz1pLHRoaXMuem9vbVJlY3Q9dGhpcy5ncmFwaGljcy5kcmF3UmVjdCgwLDAsMCwwKSx0aGlzLnNlbGVjdGlvblJlY3Q9dGhpcy5ncmFwaGljcy5kcmF3UmVjdCgwLDAsMCwwKSx0aGlzLmdyaWRSZWN0PXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLWdyaWQiKSx0aGlzLnpvb21SZWN0Lm5vZGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy16b29tLXJlY3QiKSx0aGlzLnNlbGVjdGlvblJlY3Qubm9kZS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0Iikscy5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQodGhpcy56b29tUmVjdCkscy5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQodGhpcy5zZWxlY3Rpb25SZWN0KSwieCI9PT1zLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24udHlwZT90aGlzLnNsRHJhZ2dhYmxlUmVjdD10aGlzLnNlbGVjdGlvblJlY3QuZHJhZ2dhYmxlKHttaW5YOjAsbWluWTowLG1heFg6cy5nbG9iYWxzLmdyaWRXaWR0aCxtYXhZOnMuZ2xvYmFscy5ncmlkSGVpZ2h0fSkub24oImRyYWdtb3ZlIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcywiZHJhZ2dpbmciKSk6InkiPT09cy5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGU/dGhpcy5zbERyYWdnYWJsZVJlY3Q9dGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSh7bWluWDowLG1heFg6cy5nbG9iYWxzLmdyaWRXaWR0aH0pLm9uKCJkcmFnbW92ZSIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsImRyYWdnaW5nIikpOnRoaXMuc2xEcmFnZ2FibGVSZWN0PXRoaXMuc2VsZWN0aW9uUmVjdC5kcmFnZ2FibGUoKS5vbigiZHJhZ21vdmUiLHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLCJkcmFnZ2luZyIpKSx0aGlzLnByZXNlbGVjdGVkU2VsZWN0aW9uKCksdGhpcy5ob3ZlckFyZWE9cy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiIi5jb25jYXQocy5nbG9iYWxzLmNoYXJ0Q2xhc3MsIiAuYXBleGNoYXJ0cy1zdmciKSksdGhpcy5ob3ZlckFyZWEuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy16b29tYWJsZSIpLHRoaXMuZXZlbnRMaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuaG92ZXJBcmVhLmFkZEV2ZW50TGlzdGVuZXIodCxhLnN2Z01vdXNlRXZlbnRzLmJpbmQoYSxpKSx7Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSl9KSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2xEcmFnZ2FibGVSZWN0JiYodGhpcy5zbERyYWdnYWJsZVJlY3QuZHJhZ2dhYmxlKCExKSx0aGlzLnNsRHJhZ2dhYmxlUmVjdC5vZmYoKSx0aGlzLnNlbGVjdGlvblJlY3Qub2ZmKCkpLHRoaXMuc2VsZWN0aW9uUmVjdD1udWxsLHRoaXMuem9vbVJlY3Q9bnVsbCx0aGlzLmdyaWRSZWN0PW51bGx9fSx7a2V5OiJzdmdNb3VzZUV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz10aGlzLGE9dGhpcy5jdHgudG9vbGJhcixuPWkuZ2xvYmFscy56b29tRW5hYmxlZD9pLmNvbmZpZy5jaGFydC56b29tLnR5cGU6aS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGUscj1pLmNvbmZpZy5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZDtpZihlLnNoaWZ0S2V5Pyh0aGlzLnNoaWZ0V2FzUHJlc3NlZD0hMCxhLmVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhcigicGFuIj09PXI/Inpvb20iOiJwYW4iKSk6dGhpcy5zaGlmdFdhc1ByZXNzZWQmJihhLmVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhcihyKSx0aGlzLnNoaWZ0V2FzUHJlc3NlZD0hMSksZS50YXJnZXQpe3ZhciBvLGw9ZS50YXJnZXQuY2xhc3NMaXN0O2lmKGUudGFyZ2V0LnBhcmVudE5vZGUmJm51bGwhPT1lLnRhcmdldC5wYXJlbnROb2RlJiYobz1lLnRhcmdldC5wYXJlbnROb2RlLmNsYXNzTGlzdCksIShsLmNvbnRhaW5zKCJhcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0Iil8fGwuY29udGFpbnMoImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlciIpfHxsLmNvbnRhaW5zKCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0Iil8fG8mJm8uY29udGFpbnMoImFwZXhjaGFydHMtdG9vbGJhciIpKSl7aWYocy5jbGllbnRYPSJ0b3VjaG1vdmUiPT09ZS50eXBlfHwidG91Y2hzdGFydCI9PT1lLnR5cGU/ZS50b3VjaGVzWzBdLmNsaWVudFg6InRvdWNoZW5kIj09PWUudHlwZT9lLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFg6ZS5jbGllbnRYLHMuY2xpZW50WT0idG91Y2htb3ZlIj09PWUudHlwZXx8InRvdWNoc3RhcnQiPT09ZS50eXBlP2UudG91Y2hlc1swXS5jbGllbnRZOiJ0b3VjaGVuZCI9PT1lLnR5cGU/ZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZOmUuY2xpZW50WSwibW91c2Vkb3duIj09PWUudHlwZSYmMT09PWUud2hpY2gpe3ZhciBjPXMuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cy5zdGFydFg9cy5jbGllbnRYLWMubGVmdCxzLnN0YXJ0WT1zLmNsaWVudFktYy50b3Ascy5kcmFnZ2VkPSExLHMudy5nbG9iYWxzLm1vdXNlZG93bj0hMH1pZigoIm1vdXNlbW92ZSI9PT1lLnR5cGUmJjE9PT1lLndoaWNofHwidG91Y2htb3ZlIj09PWUudHlwZSkmJihzLmRyYWdnZWQ9ITAsaS5nbG9iYWxzLnBhbkVuYWJsZWQ/KGkuZ2xvYmFscy5zZWxlY3Rpb249bnVsbCxzLncuZ2xvYmFscy5tb3VzZWRvd24mJnMucGFuRHJhZ2dpbmcoe2NvbnRleHQ6cyx6b29tdHlwZTpuLHh5UmF0aW9zOnR9KSk6KHMudy5nbG9iYWxzLm1vdXNlZG93biYmaS5nbG9iYWxzLnpvb21FbmFibGVkfHxzLncuZ2xvYmFscy5tb3VzZWRvd24mJmkuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKSYmKHMuc2VsZWN0aW9uPXMuc2VsZWN0aW9uRHJhd2luZyh7Y29udGV4dDpzLHpvb210eXBlOm59KSkpLCJtb3VzZXVwIj09PWUudHlwZXx8InRvdWNoZW5kIj09PWUudHlwZXx8Im1vdXNlbGVhdmUiPT09ZS50eXBlKXt2YXIgaD1zLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Mudy5nbG9iYWxzLm1vdXNlZG93biYmKHMuZW5kWD1zLmNsaWVudFgtaC5sZWZ0LHMuZW5kWT1zLmNsaWVudFktaC50b3Ascy5kcmFnWD1NYXRoLmFicyhzLmVuZFgtcy5zdGFydFgpLHMuZHJhZ1k9TWF0aC5hYnMocy5lbmRZLXMuc3RhcnRZKSwoaS5nbG9iYWxzLnpvb21FbmFibGVkfHxpLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCkmJnMuc2VsZWN0aW9uRHJhd24oe2NvbnRleHQ6cyx6b29tdHlwZTpufSksaS5nbG9iYWxzLnBhbkVuYWJsZWQmJmkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmcy5kZWxheWVkUGFuU2Nyb2xsZWQoKSksaS5nbG9iYWxzLnpvb21FbmFibGVkJiZzLmhpZGVTZWxlY3Rpb25SZWN0KHRoaXMuc2VsZWN0aW9uUmVjdCkscy5kcmFnZ2VkPSExLHMudy5nbG9iYWxzLm1vdXNlZG93bj0hMX10aGlzLm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlKCl9fX19LHtrZXk6Im1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztpZih0aGlzLnNlbGVjdGlvblJlY3Qpe3ZhciBlPXRoaXMuc2VsZWN0aW9uUmVjdC5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Uud2lkdGg+MCYmZS5oZWlnaHQ+MCYmdGhpcy5zbERyYWdnYWJsZVJlY3Quc2VsZWN0aXplKHtwb2ludHM6ImwsIHIiLHBvaW50U2l6ZTo4LHBvaW50VHlwZToicmVjdCJ9KS5yZXNpemUoe2NvbnN0cmFpbnQ6e21pblg6MCxtaW5ZOjAsbWF4WDp0Lmdsb2JhbHMuZ3JpZFdpZHRoLG1heFk6dC5nbG9iYWxzLmdyaWRIZWlnaHR9fSkub24oInJlc2l6aW5nIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcywicmVzaXppbmciKSl9fX0se2tleToicHJlc2VsZWN0ZWRTZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy54eVJhdGlvcztpZighdC5nbG9iYWxzLnpvb21FbmFibGVkKWlmKHZvaWQgMCE9PXQuZ2xvYmFscy5zZWxlY3Rpb24mJm51bGwhPT10Lmdsb2JhbHMuc2VsZWN0aW9uKXRoaXMuZHJhd1NlbGVjdGlvblJlY3QodC5nbG9iYWxzLnNlbGVjdGlvbik7ZWxzZSBpZih2b2lkIDAhPT10LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluJiZ2b2lkIDAhPT10LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4KXt2YXIgaT0odC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1pbi10Lmdsb2JhbHMubWluWCkvZS54UmF0aW8scz17eDppLHk6MCx3aWR0aDp0Lmdsb2JhbHMuZ3JpZFdpZHRoLSh0Lmdsb2JhbHMubWF4WC10LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4KS9lLnhSYXRpby1pLGhlaWdodDp0Lmdsb2JhbHMuZ3JpZEhlaWdodCx0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHNlbGVjdGlvbkVuYWJsZWQ6ITB9O3RoaXMuZHJhd1NlbGVjdGlvblJlY3QocyksdGhpcy5tYWtlU2VsZWN0aW9uUmVjdERyYWdnYWJsZSgpLCJmdW5jdGlvbiI9PXR5cGVvZiB0LmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uJiZ0LmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uKHRoaXMuY3R4LHt4YXhpczp7bWluOnQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5taW4sbWF4OnQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXh9LHlheGlzOnt9fSl9fX0se2tleToiZHJhd1NlbGVjdGlvblJlY3QiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQueCxpPXQueSxzPXQud2lkdGgsYT10LmhlaWdodCxuPXQudHJhbnNsYXRlWCxyPXZvaWQgMD09PW4/MDpuLG89dC50cmFuc2xhdGVZLGw9dm9pZCAwPT09bz8wOm8sYz10aGlzLncsaD10aGlzLnpvb21SZWN0LGQ9dGhpcy5zZWxlY3Rpb25SZWN0O2lmKHRoaXMuZHJhZ2dlZHx8bnVsbCE9PWMuZ2xvYmFscy5zZWxlY3Rpb24pe3ZhciB1PXt0cmFuc2Zvcm06InRyYW5zbGF0ZSgiK3IrIiwgIitsKyIpIn07Yy5nbG9iYWxzLnpvb21FbmFibGVkJiZ0aGlzLmRyYWdnZWQmJihzPDAmJihzPTEpLGguYXR0cih7eDplLHk6aSx3aWR0aDpzLGhlaWdodDphLGZpbGw6Yy5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLmZpbGwuY29sb3IsImZpbGwtb3BhY2l0eSI6Yy5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLmZpbGwub3BhY2l0eSxzdHJva2U6Yy5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS5jb2xvciwic3Ryb2tlLXdpZHRoIjpjLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuc3Ryb2tlLndpZHRoLCJzdHJva2Utb3BhY2l0eSI6Yy5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS5vcGFjaXR5fSksay5zZXRBdHRycyhoLm5vZGUsdSkpLGMuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiYoZC5hdHRyKHt4OmUseTppLHdpZHRoOnM+MD9zOjAsaGVpZ2h0OmE+MD9hOjAsZmlsbDpjLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZmlsbC5jb2xvciwiZmlsbC1vcGFjaXR5IjpjLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZmlsbC5vcGFjaXR5LHN0cm9rZTpjLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLmNvbG9yLCJzdHJva2Utd2lkdGgiOmMuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2Uud2lkdGgsInN0cm9rZS1kYXNoYXJyYXkiOmMuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2UuZGFzaEFycmF5LCJzdHJva2Utb3BhY2l0eSI6Yy5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS5vcGFjaXR5fSksay5zZXRBdHRycyhkLm5vZGUsdSkpfX19LHtrZXk6ImhpZGVTZWxlY3Rpb25SZWN0Iix2YWx1ZTpmdW5jdGlvbih0KXt0JiZ0LmF0dHIoe3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH0pfX0se2tleToic2VsZWN0aW9uRHJhd2luZyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LmNvbnRleHQscz10Lnpvb210eXBlLGE9dGhpcy53LG49aSxyPXRoaXMuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1uLnN0YXJ0WC0xLGw9bi5zdGFydFksYz0hMSxoPSExLGQ9bi5jbGllbnRYLXIubGVmdC1vLHU9bi5jbGllbnRZLXIudG9wLWw7cmV0dXJuIE1hdGguYWJzKGQrbyk+YS5nbG9iYWxzLmdyaWRXaWR0aD9kPWEuZ2xvYmFscy5ncmlkV2lkdGgtbzpuLmNsaWVudFgtci5sZWZ0PDAmJihkPW8pLG8+bi5jbGllbnRYLXIubGVmdCYmKGM9ITAsZD1NYXRoLmFicyhkKSksbD5uLmNsaWVudFktci50b3AmJihoPSEwLHU9TWF0aC5hYnModSkpLGU9IngiPT09cz97eDpjP28tZDpvLHk6MCx3aWR0aDpkLGhlaWdodDphLmdsb2JhbHMuZ3JpZEhlaWdodH06InkiPT09cz97eDowLHk6aD9sLXU6bCx3aWR0aDphLmdsb2JhbHMuZ3JpZFdpZHRoLGhlaWdodDp1fTp7eDpjP28tZDpvLHk6aD9sLXU6bCx3aWR0aDpkLGhlaWdodDp1fSxuLmRyYXdTZWxlY3Rpb25SZWN0KGUpLG4uc2VsZWN0aW9uRHJhZ2dpbmcoInJlc2l6aW5nIiksZX19LHtrZXk6InNlbGVjdGlvbkRyYWdnaW5nIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMscz10aGlzLncsYT10aGlzLnh5UmF0aW9zLG49dGhpcy5zZWxlY3Rpb25SZWN0LHI9MDsicmVzaXppbmciPT09dCYmKHI9MzApO3ZhciBvPWZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KG4ubm9kZS5nZXRBdHRyaWJ1dGUodCkpfSxsPXt4Om8oIngiKSx5Om8oInkiKSx3aWR0aDpvKCJ3aWR0aCIpLGhlaWdodDpvKCJoZWlnaHQiKX07cy5nbG9iYWxzLnNlbGVjdGlvbj1sLCJmdW5jdGlvbiI9PXR5cGVvZiBzLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uJiZzLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCYmKGNsZWFyVGltZW91dCh0aGlzLncuZ2xvYmFscy5zZWxlY3Rpb25SZXNpemVUaW1lciksdGhpcy53Lmdsb2JhbHMuc2VsZWN0aW9uUmVzaXplVGltZXI9d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIHQ9aS5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPW4ubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPXt4YXhpczp7bWluOnMuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rKGUubGVmdC10LmxlZnQpKmEueFJhdGlvLG1heDpzLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluKyhlLnJpZ2h0LXQubGVmdCkqYS54UmF0aW99LHlheGlzOnttaW46cy5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbisodC5ib3R0b20tZS5ib3R0b20pKmEueVJhdGlvWzBdLG1heDpzLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWF4LShlLnRvcC10LnRvcCkqYS55UmF0aW9bMF19fTtzLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uKGkuY3R4LHIpLHMuY29uZmlnLmNoYXJ0LmJydXNoLmVuYWJsZWQmJnZvaWQgMCE9PXMuY29uZmlnLmNoYXJ0LmV2ZW50cy5icnVzaFNjcm9sbGVkJiZzLmNvbmZpZy5jaGFydC5ldmVudHMuYnJ1c2hTY3JvbGxlZChpLmN0eCxyKX0pLHIpKX19LHtrZXk6InNlbGVjdGlvbkRyYXduIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmNvbnRleHQsaT10Lnpvb210eXBlLHM9dGhpcy53LGE9ZSxuPXRoaXMueHlSYXRpb3Mscj10aGlzLmN0eC50b29sYmFyO2lmKGEuc3RhcnRYPmEuZW5kWCl7dmFyIG89YS5zdGFydFg7YS5zdGFydFg9YS5lbmRYLGEuZW5kWD1vfWlmKGEuc3RhcnRZPmEuZW5kWSl7dmFyIGw9YS5zdGFydFk7YS5zdGFydFk9YS5lbmRZLGEuZW5kWT1sfXZhciBjPXZvaWQgMCxoPXZvaWQgMDtzLmdsb2JhbHMuaXNSYW5nZUJhcj8oYz1zLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluK2Euc3RhcnRYKm4uaW52ZXJ0ZWRZUmF0aW8saD1zLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluK2EuZW5kWCpuLmludmVydGVkWVJhdGlvKTooYz1zLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluK2Euc3RhcnRYKm4ueFJhdGlvLGg9cy5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbithLmVuZFgqbi54UmF0aW8pO3ZhciBkPVtdLHU9W107aWYocy5jb25maWcueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtkLnB1c2gocy5nbG9iYWxzLnlBeGlzU2NhbGVbZV0ubmljZU1heC1uLnlSYXRpb1tlXSphLnN0YXJ0WSksdS5wdXNoKHMuZ2xvYmFscy55QXhpc1NjYWxlW2VdLm5pY2VNYXgtbi55UmF0aW9bZV0qYS5lbmRZKX0pKSxhLmRyYWdnZWQmJihhLmRyYWdYPjEwfHxhLmRyYWdZPjEwKSYmYyE9PWgpaWYocy5nbG9iYWxzLnpvb21FbmFibGVkKXt2YXIgcD1iLmNsb25lKHMuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKSxnPWIuY2xvbmUocy5nbG9iYWxzLmluaXRpYWxDb25maWcueGF4aXMpO2lmKHMuZ2xvYmFscy56b29tZWQ9ITAscy5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoYz1NYXRoLmZsb29yKGMpLGg9TWF0aC5mbG9vcihoKSxjPDEmJihjPTEsaD1zLmdsb2JhbHMuZGF0YVBvaW50cyksaC1jPDImJihoPWMrMSkpLCJ4eSIhPT1pJiYieCIhPT1pfHwoZz17bWluOmMsbWF4Omh9KSwieHkiIT09aSYmInkiIT09aXx8cC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3BbZV0ubWluPXVbZV0scFtlXS5tYXg9ZFtlXX0pKSxzLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzKXt2YXIgZj1uZXcgcShhLmN0eCk7cD1mLmF1dG9TY2FsZVkoYS5jdHgscCx7eGF4aXM6Z30pfWlmKHIpe3ZhciBtPXIuZ2V0QmVmb3JlWm9vbVJhbmdlKGcscCk7bSYmKGc9bS54YXhpcz9tLnhheGlzOmcscD1tLnlheGlzP20ueWF4aXM6cCl9dmFyIHY9e3hheGlzOmd9O3MuY29uZmlnLmNoYXJ0Lmdyb3VwfHwodi55YXhpcz1wKSxhLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHYsITEsYS53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCksImZ1bmN0aW9uIj09dHlwZW9mIHMuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQmJnIuem9vbUNhbGxiYWNrKGcscCl9ZWxzZSBpZihzLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCl7dmFyIHgseT1udWxsO3g9e21pbjpjLG1heDpofSwieHkiIT09aSYmInkiIT09aXx8KHk9Yi5jbG9uZShzLmNvbmZpZy55YXhpcykpLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7eVtlXS5taW49dVtlXSx5W2VdLm1heD1kW2VdfSkpLHMuZ2xvYmFscy5zZWxlY3Rpb249YS5zZWxlY3Rpb24sImZ1bmN0aW9uIj09dHlwZW9mIHMuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24mJnMuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24oYS5jdHgse3hheGlzOngseWF4aXM6eX0pfX19LHtrZXk6InBhbkRyYWdnaW5nIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmNvbnRleHQsaT10aGlzLncscz1lO2lmKHZvaWQgMCE9PWkuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb24ueCl7dmFyIGE9aS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbi54LXMuY2xpZW50WCxuPWkuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb24ueS1zLmNsaWVudFk7TWF0aC5hYnMoYSk+TWF0aC5hYnMobikmJmE+MD90aGlzLm1vdmVEaXJlY3Rpb249ImxlZnQiOk1hdGguYWJzKGEpPk1hdGguYWJzKG4pJiZhPDA/dGhpcy5tb3ZlRGlyZWN0aW9uPSJyaWdodCI6TWF0aC5hYnMobik+TWF0aC5hYnMoYSkmJm4+MD90aGlzLm1vdmVEaXJlY3Rpb249InVwIjpNYXRoLmFicyhuKT5NYXRoLmFicyhhKSYmbjwwJiYodGhpcy5tb3ZlRGlyZWN0aW9uPSJkb3duIil9aS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbj17eDpzLmNsaWVudFgseTpzLmNsaWVudFl9O3ZhciByPWkuZ2xvYmFscy5pc1JhbmdlQmFyP2kuZ2xvYmFscy5taW5ZOmkuZ2xvYmFscy5taW5YLG89aS5nbG9iYWxzLmlzUmFuZ2VCYXI/aS5nbG9iYWxzLm1heFk6aS5nbG9iYWxzLm1heFg7aS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHxzLnBhblNjcm9sbGVkKHIsbyl9fSx7a2V5OiJkZWxheWVkUGFuU2Nyb2xsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLm1pblgsaT10Lmdsb2JhbHMubWF4WCxzPSh0Lmdsb2JhbHMubWF4WC10Lmdsb2JhbHMubWluWCkvMjsibGVmdCI9PT10aGlzLm1vdmVEaXJlY3Rpb24/KGU9dC5nbG9iYWxzLm1pblgrcyxpPXQuZ2xvYmFscy5tYXhYK3MpOiJyaWdodCI9PT10aGlzLm1vdmVEaXJlY3Rpb24mJihlPXQuZ2xvYmFscy5taW5YLXMsaT10Lmdsb2JhbHMubWF4WC1zKSxlPU1hdGguZmxvb3IoZSksaT1NYXRoLmZsb29yKGkpLHRoaXMudXBkYXRlU2Nyb2xsZWRDaGFydCh7eGF4aXM6e21pbjplLG1heDppfX0sZSxpKX19LHtrZXk6InBhblNjcm9sbGVkIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPXRoaXMueHlSYXRpb3MsYT1iLmNsb25lKGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKSxuPXMueFJhdGlvLHI9aS5nbG9iYWxzLm1pblgsbz1pLmdsb2JhbHMubWF4WDtpLmdsb2JhbHMuaXNSYW5nZUJhciYmKG49cy5pbnZlcnRlZFlSYXRpbyxyPWkuZ2xvYmFscy5taW5ZLG89aS5nbG9iYWxzLm1heFkpLCJsZWZ0Ij09PXRoaXMubW92ZURpcmVjdGlvbj8odD1yK2kuZ2xvYmFscy5ncmlkV2lkdGgvMTUqbixlPW8raS5nbG9iYWxzLmdyaWRXaWR0aC8xNSpuKToicmlnaHQiPT09dGhpcy5tb3ZlRGlyZWN0aW9uJiYodD1yLWkuZ2xvYmFscy5ncmlkV2lkdGgvMTUqbixlPW8taS5nbG9iYWxzLmdyaWRXaWR0aC8xNSpuKSxpLmdsb2JhbHMuaXNSYW5nZUJhcnx8KHQ8aS5nbG9iYWxzLmluaXRpYWxNaW5YfHxlPmkuZ2xvYmFscy5pbml0aWFsTWF4WCkmJih0PXIsZT1vKTt2YXIgbD17bWluOnQsbWF4OmV9O2kuY29uZmlnLmNoYXJ0Lnpvb20uYXV0b1NjYWxlWWF4aXMmJihhPW5ldyBxKHRoaXMuY3R4KS5hdXRvU2NhbGVZKHRoaXMuY3R4LGEse3hheGlzOmx9KSk7dmFyIGM9e3hheGlzOnttaW46dCxtYXg6ZX19O2kuY29uZmlnLmNoYXJ0Lmdyb3VwfHwoYy55YXhpcz1hKSx0aGlzLnVwZGF0ZVNjcm9sbGVkQ2hhcnQoYyx0LGUpfX0se2tleToidXBkYXRlU2Nyb2xsZWRDaGFydCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXMudzt0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHQsITEsITEpLCJmdW5jdGlvbiI9PXR5cGVvZiBzLmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQmJnMuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZCh0aGlzLmN0eCx7eGF4aXM6e21pbjplLG1heDppfX0pfX1dKSxpfSgpLGd0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLnR0Q3R4PWUsdGhpcy5jdHg9ZS5jdHh9cmV0dXJuIGModCxbe2tleToiZ2V0TmVhcmVzdFZhbHVlcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5ob3ZlckFyZWEsaT10LmVsR3JpZCxzPXQuY2xpZW50WCxhPXQuY2xpZW50WSxuPXRoaXMudyxyPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1yLndpZHRoLGw9ci5oZWlnaHQsYz1vLyhuLmdsb2JhbHMuZGF0YVBvaW50cy0xKSxoPWwvbi5nbG9iYWxzLmRhdGFQb2ludHMsZD10aGlzLmhhc0JhcnMoKTshbi5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhZHx8bi5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHwoYz1vL24uZ2xvYmFscy5kYXRhUG9pbnRzKTt2YXIgdT1zLXIubGVmdC1uLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXMscD1hLXIudG9wO3U8MHx8cDwwfHx1Pm98fHA+bD8oZS5jbGFzc0xpc3QucmVtb3ZlKCJob3ZlcmluZy16b29tIiksZS5jbGFzc0xpc3QucmVtb3ZlKCJob3ZlcmluZy1wYW4iKSk6bi5nbG9iYWxzLnpvb21FbmFibGVkPyhlLmNsYXNzTGlzdC5yZW1vdmUoImhvdmVyaW5nLXBhbiIpLGUuY2xhc3NMaXN0LmFkZCgiaG92ZXJpbmctem9vbSIpKTpuLmdsb2JhbHMucGFuRW5hYmxlZCYmKGUuY2xhc3NMaXN0LnJlbW92ZSgiaG92ZXJpbmctem9vbSIpLGUuY2xhc3NMaXN0LmFkZCgiaG92ZXJpbmctcGFuIikpO3ZhciBnPU1hdGgucm91bmQodS9jKSxmPU1hdGguZmxvb3IocC9oKTtkJiYhbi5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoZz1NYXRoLmNlaWwodS9jKSxnLT0xKTt2YXIgbT1udWxsLHY9bnVsbCx4PVtdLHk9W107aWYobi5nbG9iYWxzLnNlcmllc1h2YWx1ZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7eC5wdXNoKFt0WzBdKzFlLTZdLmNvbmNhdCh0KSl9KSksbi5nbG9iYWxzLnNlcmllc1l2YWx1ZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7eS5wdXNoKFt0WzBdKzFlLTZdLmNvbmNhdCh0KSl9KSkseD14Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gYi5pc051bWJlcih0KX0pKX0pKSx5PXkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBiLmlzTnVtYmVyKHQpfSkpfSkpLG4uZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgdz10aGlzLnR0Q3R4LmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGs9dSoody53aWR0aC9vKSxTPXAqKHcuaGVpZ2h0L2wpO209KHY9dGhpcy5jbG9zZXN0SW5NdWx0aUFycmF5KGssUyx4LHkpKS5pbmRleCxnPXYuaixudWxsIT09bSYmKHg9bi5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbbV0sZz0odj10aGlzLmNsb3Nlc3RJbkFycmF5KGsseCkpLmluZGV4KX1yZXR1cm4gbi5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9bnVsbD09PW0/LTE6bSwoIWd8fGc8MSkmJihnPTApLG4uZ2xvYmFscy5pc0Jhckhvcml6b250YWw/bi5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9ZjpuLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1nLHtjYXB0dXJlZFNlcmllczptLGo6bi5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9mOmcsaG92ZXJYOnUsaG92ZXJZOnB9fX0se2tleToiY2xvc2VzdEluTXVsdGlBcnJheSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyl7dmFyIGE9dGhpcy53LG49MCxyPW51bGwsbz0tMTthLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xP249dGhpcy5nZXRGaXJzdEFjdGl2ZVhBcnJheShpKTpyPTA7dmFyIGw9aVtuXVswXSxjPU1hdGguYWJzKHQtbCk7aWYoaS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dmFyIHM9TWF0aC5hYnModC1lKTtzPGMmJihjPXMsbz1pKX0pKX0pKSwtMSE9PW8pe3ZhciBoPXNbbl1bb10sZD1NYXRoLmFicyhlLWgpO3I9bixzLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dmFyIHM9TWF0aC5hYnMoZS10W29dKTtzPGQmJihkPXMscj1pKX0pKX1yZXR1cm57aW5kZXg6cixqOm99fX0se2tleToiZ2V0Rmlyc3RBY3RpdmVYQXJyYXkiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT0wLHM9dC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGVuZ3RoPjA/ZTotMX0pKSxhPTA7YTxzLmxlbmd0aDthKyspaWYoLTEhPT1zW2FdJiYtMT09PWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoYSkmJi0xPT09ZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihhKSl7aT1zW2FdO2JyZWFrfXJldHVybiBpfX0se2tleToiY2xvc2VzdEluQXJyYXkiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPWVbMF0scz1udWxsLGE9TWF0aC5hYnModC1pKSxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPU1hdGguYWJzKHQtZVtuXSk7cjxhJiYoYT1yLHM9bil9cmV0dXJue2luZGV4OnN9fX0se2tleToiaXNYb3ZlcmxhcCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9W10saT10aGlzLncuZ2xvYmFscy5zZXJpZXNYLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXRbMF19KSk7aWYoaS5sZW5ndGg+MClmb3IodmFyIHM9MDtzPGkubGVuZ3RoLTE7cysrKXZvaWQgMCE9PWlbc11bdF0mJnZvaWQgMCE9PWlbcysxXVt0XSYmaVtzXVt0XSE9PWlbcysxXVt0XSYmZS5wdXNoKCJ1bkVxdWFsIik7cmV0dXJuIDA9PT1lLmxlbmd0aH19LHtrZXk6ImlzSW5pdGlhbFNlcmllc1NhbWVMZW4iLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PSEwLGU9dGhpcy53Lmdsb2JhbHMuaW5pdGlhbFNlcmllcyxpPTA7aTxlLmxlbmd0aC0xO2krKylpZihlW2ldLmRhdGEubGVuZ3RoIT09ZVtpKzFdLmRhdGEubGVuZ3RoKXt0PSExO2JyZWFrfXJldHVybiB0fX0se2tleToiZ2V0QmFyc0hlaWdodCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIG0odCkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UuZ2V0QkJveCgpLmhlaWdodH0pLDApfX0se2tleToiZ2V0RWxNYXJrZXJzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIiAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyIpfX0se2tleToiZ2V0QWxsTWFya2VycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXAiKTsodD1tKHQpKS5zb3J0KChmdW5jdGlvbih0LGUpe3ZhciBpPU51bWJlcih0LmdldEF0dHJpYnV0ZSgiZGF0YTpyZWFsSW5kZXgiKSkscz1OdW1iZXIoZS5nZXRBdHRyaWJ1dGUoImRhdGE6cmVhbEluZGV4IikpO3JldHVybiBzPGk/MTpzPmk/LTE6MH0pKTt2YXIgZT1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLnB1c2godC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1tYXJrZXIiKSl9KSksZX19LHtrZXk6Imhhc01hcmtlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RWxNYXJrZXJzKCkubGVuZ3RoPjB9fSx7a2V5OiJnZXRFbEJhcnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtYmFyLXNlcmllcywgIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcywgLmFwZXhjaGFydHMtYm94UGxvdC1zZXJpZXMsIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllcyIpfX0se2tleToiaGFzQmFycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRFbEJhcnMoKS5sZW5ndGg+MH19LHtrZXk6ImdldEhvdmVyTWFya2VyU2l6ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplO3JldHVybiB2b2lkIDA9PT1pJiYoaT1lLmdsb2JhbHMubWFya2Vycy5zaXplW3RdK2UuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCksaX19LHtrZXk6InRvZ2dsZUFsbFRvb2x0aXBTZXJpZXNHcm91cHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXRoaXMudHRDdHg7MD09PWkuYWxsVG9vbHRpcFNlcmllc0dyb3Vwcy5sZW5ndGgmJihpLmFsbFRvb2x0aXBTZXJpZXNHcm91cHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAiKSk7Zm9yKHZhciBzPWkuYWxsVG9vbHRpcFNlcmllc0dyb3VwcyxhPTA7YTxzLmxlbmd0aDthKyspImVuYWJsZSI9PT10PyhzW2FdLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtYWN0aXZlIiksc1thXS5zdHlsZS5kaXNwbGF5PWUuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSk6KHNbYV0uY2xhc3NMaXN0LnJlbW92ZSgiYXBleGNoYXJ0cy1hY3RpdmUiKSxzW2FdLnN0eWxlLmRpc3BsYXk9Im5vbmUiKX19XSksdH0oKSxmdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5jdHg9ZS5jdHgsdGhpcy50dEN0eD1lLHRoaXMudG9vbHRpcFV0aWw9bmV3IGd0KGUpfXJldHVybiBjKHQsW3trZXk6ImRyYXdTZXJpZXNUZXh0cyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zaGFyZWQsaT12b2lkIDA9PT1lfHxlLHM9dC50dEl0ZW1zLGE9dC5pLG49dm9pZCAwPT09YT8wOmEscj10Lmosbz12b2lkIDA9PT1yP251bGw6cixsPXQueTEsYz10LnkyLGg9dC5lLGQ9dGhpcy53O3ZvaWQgMCE9PWQuY29uZmlnLnRvb2x0aXAuY3VzdG9tP3RoaXMuaGFuZGxlQ3VzdG9tVG9vbHRpcCh7aTpuLGo6byx5MTpsLHkyOmMsdzpkfSk6dGhpcy50b2dnbGVBY3RpdmVJbmFjdGl2ZVNlcmllcyhpKTt2YXIgdT10aGlzLmdldFZhbHVlc1RvUHJpbnQoe2k6bixqOm99KTt0aGlzLnByaW50TGFiZWxzKHtpOm4sajpvLHZhbHVlczp1LHR0SXRlbXM6cyxzaGFyZWQ6aSxlOmh9KTt2YXIgcD10aGlzLnR0Q3R4LmdldEVsVG9vbHRpcCgpO3RoaXMudHRDdHgudG9vbHRpcFJlY3QudHRXaWR0aD1wLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLHRoaXMudHRDdHgudG9vbHRpcFJlY3QudHRIZWlnaHQ9cC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9fSx7a2V5OiJwcmludExhYmVscyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLHM9dC5pLGE9dC5qLHI9dC52YWx1ZXMsbz10LnR0SXRlbXMsbD10LnNoYXJlZCxjPXQuZSxoPXRoaXMudyxkPVtdLHU9ZnVuY3Rpb24odCl7cmV0dXJuIGguZ2xvYmFscy5zZXJpZXNHb2Fsc1t0XSYmaC5nbG9iYWxzLnNlcmllc0dvYWxzW3RdW2FdJiZBcnJheS5pc0FycmF5KGguZ2xvYmFscy5zZXJpZXNHb2Fsc1t0XVthXSl9LHA9ci54VmFsLGc9ci56VmFsLGY9ci54QXhpc1RUVmFsLG09IiIsdj1oLmdsb2JhbHMuY29sb3JzW3NdO251bGwhPT1hJiZoLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQmJih2PWguZ2xvYmFscy5jb2xvcnNbYV0pO2Zvcih2YXIgeD1mdW5jdGlvbih0LHIpe3ZhciB4PWkuZ2V0Rm9ybWF0dGVycyhzKTttPWkuZ2V0U2VyaWVzTmFtZSh7Zm46eC55TGJUaXRsZUZvcm1hdHRlcixpbmRleDpzLHNlcmllc0luZGV4OnMsajphfSksInRyZWVtYXAiPT09aC5jb25maWcuY2hhcnQudHlwZSYmKG09eC55TGJUaXRsZUZvcm1hdHRlcihTdHJpbmcoaC5jb25maWcuc2VyaWVzW3NdLmRhdGFbYV0ueCkse3NlcmllczpoLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6YSx3Omh9KSk7dmFyIGI9aC5jb25maWcudG9vbHRpcC5pbnZlcnNlT3JkZXI/cjp0O2lmKGguZ2xvYmFscy5heGlzQ2hhcnRzKXt2YXIgeT1mdW5jdGlvbih0KXtyZXR1cm4geC55TGJGb3JtYXR0ZXIoaC5nbG9iYWxzLnNlcmllc1t0XVthXSx7c2VyaWVzOmguZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDphLHc6aH0pfTtpZihsKXg9aS5nZXRGb3JtYXR0ZXJzKGIpLG09aS5nZXRTZXJpZXNOYW1lKHtmbjp4LnlMYlRpdGxlRm9ybWF0dGVyLGluZGV4OmIsc2VyaWVzSW5kZXg6cyxqOmF9KSx2PWguZ2xvYmFscy5jb2xvcnNbYl0sZT15KGIpLHUoYikmJihkPWguZ2xvYmFscy5zZXJpZXNHb2Fsc1tiXVthXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybnthdHRyczp0LHZhbDp4LnlMYkZvcm1hdHRlcih0LnZhbHVlLHtzZXJpZXNJbmRleDpiLGRhdGFQb2ludEluZGV4OmEsdzpofSl9fSkpKTtlbHNle3ZhciB3LGs9bnVsbD09Y3x8bnVsbD09PSh3PWMudGFyZ2V0KXx8dm9pZCAwPT09dz92b2lkIDA6dy5nZXRBdHRyaWJ1dGUoImZpbGwiKTtrJiYodj0tMSE9PWsuaW5kZXhPZigidXJsIik/ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihrLnN1YnN0cig0KS5zbGljZSgwLC0xKSkuY2hpbGROb2Rlc1swXS5nZXRBdHRyaWJ1dGUoInN0cm9rZSIpOmspLGU9eShzKSx1KHMpJiZBcnJheS5pc0FycmF5KGguZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVthXSkmJihkPWguZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVthXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybnthdHRyczp0LHZhbDp4LnlMYkZvcm1hdHRlcih0LnZhbHVlLHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OmEsdzpofSl9fSkpKX19bnVsbD09PWEmJihlPXgueUxiRm9ybWF0dGVyKGguZ2xvYmFscy5zZXJpZXNbc10sbihuKHt9LGgpLHt9LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnN9KSkpLGkuRE9NSGFuZGxpbmcoe2k6cyx0OmIsajphLHR0SXRlbXM6byx2YWx1ZXM6e3ZhbDplLGdvYWxWYWxzOmQseFZhbDpwLHhBeGlzVFRWYWw6Zix6VmFsOmd9LHNlcmllc05hbWU6bSxzaGFyZWQ6bCxwQ29sb3I6dn0pfSxiPTAseT1oLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xO2I8aC5nbG9iYWxzLnNlcmllcy5sZW5ndGg7YisrLHktLSl4KGIseSl9fSx7a2V5OiJnZXRGb3JtYXR0ZXJzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMudyxzPWkuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3RdO3JldHVybiB2b2lkIDAhPT1pLmdsb2JhbHMudHRWYWw/QXJyYXkuaXNBcnJheShpLmdsb2JhbHMudHRWYWwpPyhzPWkuZ2xvYmFscy50dFZhbFt0XSYmaS5nbG9iYWxzLnR0VmFsW3RdLmZvcm1hdHRlcixlPWkuZ2xvYmFscy50dFZhbFt0XSYmaS5nbG9iYWxzLnR0VmFsW3RdLnRpdGxlJiZpLmdsb2JhbHMudHRWYWxbdF0udGl0bGUuZm9ybWF0dGVyKToocz1pLmdsb2JhbHMudHRWYWwuZm9ybWF0dGVyLCJmdW5jdGlvbiI9PXR5cGVvZiBpLmdsb2JhbHMudHRWYWwudGl0bGUuZm9ybWF0dGVyJiYoZT1pLmdsb2JhbHMudHRWYWwudGl0bGUuZm9ybWF0dGVyKSk6ZT1pLmNvbmZpZy50b29sdGlwLnkudGl0bGUuZm9ybWF0dGVyLCJmdW5jdGlvbiIhPXR5cGVvZiBzJiYocz1pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXT9pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXTpmdW5jdGlvbih0KXtyZXR1cm4gdH0pLCJmdW5jdGlvbiIhPXR5cGVvZiBlJiYoZT1mdW5jdGlvbih0KXtyZXR1cm4gdH0pLHt5TGJGb3JtYXR0ZXI6cyx5TGJUaXRsZUZvcm1hdHRlcjplfX19LHtrZXk6ImdldFNlcmllc05hbWUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZm4saT10LmluZGV4LHM9dC5zZXJpZXNJbmRleCxhPXQuaixuPXRoaXMudztyZXR1cm4gZShTdHJpbmcobi5nbG9iYWxzLnNlcmllc05hbWVzW2ldKSx7c2VyaWVzOm4uZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDphLHc6bn0pfX0se2tleToiRE9NSGFuZGxpbmciLHZhbHVlOmZ1bmN0aW9uKHQpe3QuaTt2YXIgZT10LnQsaT10Lmoscz10LnR0SXRlbXMsYT10LnZhbHVlcyxuPXQuc2VyaWVzTmFtZSxyPXQuc2hhcmVkLG89dC5wQ29sb3IsbD10aGlzLncsYz10aGlzLnR0Q3R4LGg9YS52YWwsZD1hLmdvYWxWYWxzLHU9YS54VmFsLHA9YS54QXhpc1RUVmFsLGc9YS56VmFsLGY9bnVsbDtmPXNbZV0uY2hpbGRyZW4sbC5jb25maWcudG9vbHRpcC5maWxsU2VyaWVzQ29sb3ImJihzW2VdLnN0eWxlLmJhY2tncm91bmRDb2xvcj1vLGZbMF0uc3R5bGUuZGlzcGxheT0ibm9uZSIpLGMuc2hvd1Rvb2x0aXBUaXRsZSYmKG51bGw9PT1jLnRvb2x0aXBUaXRsZSYmKGMudG9vbHRpcFRpdGxlPWwuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUiKSksYy50b29sdGlwVGl0bGUuaW5uZXJIVE1MPXUpLGMuaXNYQXhpc1Rvb2x0aXBFbmFibGVkJiYoYy54YXhpc1Rvb2x0aXBUZXh0LmlubmVySFRNTD0iIiE9PXA/cDp1KTt2YXIgbT1zW2VdLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LWxhYmVsIik7bSYmKG0uaW5uZXJIVE1MPW58fCIiKTt2YXIgdj1zW2VdLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LXZhbHVlIik7diYmKHYuaW5uZXJIVE1MPXZvaWQgMCE9PWg/aDoiIiksZlswXSYmZlswXS5jbGFzc0xpc3QuY29udGFpbnMoImFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXIiKSYmKGwuY29uZmlnLnRvb2x0aXAubWFya2VyLmZpbGxDb2xvcnMmJkFycmF5LmlzQXJyYXkobC5jb25maWcudG9vbHRpcC5tYXJrZXIuZmlsbENvbG9ycykmJihvPWwuY29uZmlnLnRvb2x0aXAubWFya2VyLmZpbGxDb2xvcnNbZV0pLGZbMF0uc3R5bGUuYmFja2dyb3VuZENvbG9yPW8pLGwuY29uZmlnLnRvb2x0aXAubWFya2VyLnNob3d8fChmWzBdLnN0eWxlLmRpc3BsYXk9Im5vbmUiKTt2YXIgeD1zW2VdLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy1sYWJlbCIpLGI9c1tlXS5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWUiKTtpZihkLmxlbmd0aCYmbC5nbG9iYWxzLnNlcmllc0dvYWxzW2VdKXt2YXIgeT1mdW5jdGlvbigpe3ZhciB0PSI8ZGl2ID4iLGU9IjxkaXY+IjtkLmZvckVhY2goKGZ1bmN0aW9uKGkscyl7dCs9JyA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4Ij48c3BhbiBjbGFzcz0iYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlciIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICcuY29uY2F0KGkuYXR0cnMuc3Ryb2tlQ29sb3IsJzsgaGVpZ2h0OiAzcHg7IGJvcmRlci1yYWRpdXM6IDA7IHRvcDogNXB4OyI+PC9zcGFuPiAnKS5jb25jYXQoaS5hdHRycy5uYW1lLCI8L2Rpdj4iKSxlKz0iPGRpdj4iLmNvbmNhdChpLnZhbCwiPC9kaXY+Iil9KSkseC5pbm5lckhUTUw9dCsiPC9kaXY+IixiLmlubmVySFRNTD1lKyI8L2Rpdj4ifTtyP2wuZ2xvYmFscy5zZXJpZXNHb2Fsc1tlXVtpXSYmQXJyYXkuaXNBcnJheShsLmdsb2JhbHMuc2VyaWVzR29hbHNbZV1baV0pP3koKTooeC5pbm5lckhUTUw9IiIsYi5pbm5lckhUTUw9IiIpOnkoKX1lbHNlIHguaW5uZXJIVE1MPSIiLGIuaW5uZXJIVE1MPSIiO251bGwhPT1nJiYoc1tlXS5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei1sYWJlbCIpLmlubmVySFRNTD1sLmNvbmZpZy50b29sdGlwLnoudGl0bGUsc1tlXS5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZSIpLmlubmVySFRNTD12b2lkIDAhPT1nP2c6IiIpLHImJmZbMF0mJihudWxsPT1ofHxsLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpPi0xfHxsLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpPi0xP2ZbMF0ucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PSJub25lIjpmWzBdLnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheT1sLmNvbmZpZy50b29sdGlwLml0ZW1zLmRpc3BsYXkpfX0se2tleToidG9nZ2xlQWN0aXZlSW5hY3RpdmVTZXJpZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZih0KXRoaXMudG9vbHRpcFV0aWwudG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3VwcygiZW5hYmxlIik7ZWxzZXt0aGlzLnRvb2x0aXBVdGlsLnRvZ2dsZUFsbFRvb2x0aXBTZXJpZXNHcm91cHMoImRpc2FibGUiKTt2YXIgaT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cCIpO2kmJihpLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtYWN0aXZlIiksaS5zdHlsZS5kaXNwbGF5PWUuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSl9fX0se2tleToiZ2V0VmFsdWVzVG9QcmludCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC5qLHM9dGhpcy53LGE9dGhpcy5jdHguc2VyaWVzLmZpbHRlcmVkU2VyaWVzWCgpLG49IiIscj0iIixvPW51bGwsbD1udWxsLGM9e3NlcmllczpzLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx3OnN9LGg9cy5nbG9iYWxzLnR0WkZvcm1hdHRlcjtudWxsPT09aT9sPXMuZ2xvYmFscy5zZXJpZXNbZV06cy5nbG9iYWxzLmlzWE51bWVyaWMmJiJ0cmVlbWFwIiE9PXMuY29uZmlnLmNoYXJ0LnR5cGU/KG49YVtlXVtpXSwwPT09YVtlXS5sZW5ndGgmJihuPWFbdGhpcy50b29sdGlwVXRpbC5nZXRGaXJzdEFjdGl2ZVhBcnJheShhKV1baV0pKTpuPXZvaWQgMCE9PXMuZ2xvYmFscy5sYWJlbHNbaV0/cy5nbG9iYWxzLmxhYmVsc1tpXToiIjt2YXIgZD1uO3JldHVybiBuPXMuZ2xvYmFscy5pc1hOdW1lcmljJiYiZGF0ZXRpbWUiPT09cy5jb25maWcueGF4aXMudHlwZT9uZXcgJCh0aGlzLmN0eCkueExhYmVsRm9ybWF0KHMuZ2xvYmFscy50dEtleUZvcm1hdHRlcixkLGQse2k6dm9pZCAwLGRhdGVGb3JtYXR0ZXI6bmV3IE8odGhpcy5jdHgpLmZvcm1hdERhdGUsdzp0aGlzLnd9KTpzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP3MuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdKGQsYyk6cy5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcihkLGMpLHZvaWQgMCE9PXMuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXImJihuPXMuZ2xvYmFscy50dEtleUZvcm1hdHRlcihkLGMpKSxzLmdsb2JhbHMuc2VyaWVzWi5sZW5ndGg+MCYmcy5nbG9iYWxzLnNlcmllc1pbZV0ubGVuZ3RoPjAmJihvPWgocy5nbG9iYWxzLnNlcmllc1pbZV1baV0scykpLHI9ImZ1bmN0aW9uIj09dHlwZW9mIHMuY29uZmlnLnhheGlzLnRvb2x0aXAuZm9ybWF0dGVyP3MuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXIoZCxjKTpuLHt2YWw6QXJyYXkuaXNBcnJheShsKT9sLmpvaW4oIiAiKTpsLHhWYWw6QXJyYXkuaXNBcnJheShuKT9uLmpvaW4oIiAiKTpuLHhBeGlzVFRWYWw6QXJyYXkuaXNBcnJheShyKT9yLmpvaW4oIiAiKTpyLHpWYWw6b319fSx7a2V5OiJoYW5kbGVDdXN0b21Ub29sdGlwIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10Lmoscz10LnkxLGE9dC55MixuPXQudyxyPXRoaXMudHRDdHguZ2V0RWxUb29sdGlwKCksbz1uLmNvbmZpZy50b29sdGlwLmN1c3RvbTtBcnJheS5pc0FycmF5KG8pJiZvW2VdJiYobz1vW2VdKSxyLmlubmVySFRNTD1vKHtjdHg6dGhpcy5jdHgsc2VyaWVzOm4uZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDppLHkxOnMseTI6YSx3Om59KX19XSksdH0oKSxtdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMudHRDdHg9ZSx0aGlzLmN0eD1lLmN0eCx0aGlzLnc9ZS53fXJldHVybiBjKHQsW3trZXk6Im1vdmVYQ3Jvc3NoYWlycyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsaT10aGlzLnR0Q3R4LHM9dGhpcy53LGE9aS5nZXRFbFhDcm9zc2hhaXJzKCksbj10LWkueGNyb3NzaGFpcnNXaWR0aC8yLHI9cy5nbG9iYWxzLmxhYmVscy5zbGljZSgpLmxlbmd0aDtpZihudWxsIT09ZSYmKG49cy5nbG9iYWxzLmdyaWRXaWR0aC9yKmUpLG51bGw9PT1hfHxzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwoYS5zZXRBdHRyaWJ1dGUoIngiLG4pLGEuc2V0QXR0cmlidXRlKCJ4MSIsbiksYS5zZXRBdHRyaWJ1dGUoIngyIixuKSxhLnNldEF0dHJpYnV0ZSgieTIiLHMuZ2xvYmFscy5ncmlkSGVpZ2h0KSxhLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtYWN0aXZlIikpLG48MCYmKG49MCksbj5zLmdsb2JhbHMuZ3JpZFdpZHRoJiYobj1zLmdsb2JhbHMuZ3JpZFdpZHRoKSxpLmlzWEF4aXNUb29sdGlwRW5hYmxlZCl7dmFyIG89bjsidGlja1dpZHRoIiE9PXMuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgmJiJiYXJXaWR0aCIhPT1zLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRofHwobz1uK2kueGNyb3NzaGFpcnNXaWR0aC8yKSx0aGlzLm1vdmVYQXhpc1Rvb2x0aXAobyl9fX0se2tleToibW92ZVlDcm9zc2hhaXJzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnR0Q3R4O251bGwhPT1lLnljcm9zc2hhaXJzJiZrLnNldEF0dHJzKGUueWNyb3NzaGFpcnMse3kxOnQseTI6dH0pLG51bGwhPT1lLnljcm9zc2hhaXJzSGlkZGVuJiZrLnNldEF0dHJzKGUueWNyb3NzaGFpcnNIaWRkZW4se3kxOnQseTI6dH0pfX0se2tleToibW92ZVhBeGlzVG9vbHRpcCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dGhpcy50dEN0eDtpZihudWxsIT09aS54YXhpc1Rvb2x0aXAmJjAhPT1pLnhjcm9zc2hhaXJzV2lkdGgpe2kueGF4aXNUb29sdGlwLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtYWN0aXZlIik7dmFyIHMsYT1pLnhheGlzT2ZmWStlLmNvbmZpZy54YXhpcy50b29sdGlwLm9mZnNldFkrZS5nbG9iYWxzLnRyYW5zbGF0ZVkrMStlLmNvbmZpZy54YXhpcy5vZmZzZXRZO3QtPWkueGF4aXNUb29sdGlwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLzIsaXNOYU4odCl8fCh0Kz1lLmdsb2JhbHMudHJhbnNsYXRlWCxzPW5ldyBrKHRoaXMuY3R4KS5nZXRUZXh0UmVjdHMoaS54YXhpc1Rvb2x0aXBUZXh0LmlubmVySFRNTCksaS54YXhpc1Rvb2x0aXBUZXh0LnN0eWxlLm1pbldpZHRoPXMud2lkdGgrInB4IixpLnhheGlzVG9vbHRpcC5zdHlsZS5sZWZ0PXQrInB4IixpLnhheGlzVG9vbHRpcC5zdHlsZS50b3A9YSsicHgiKX19fSx7a2V5OiJtb3ZlWUF4aXNUb29sdGlwIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10aGlzLnR0Q3R4O251bGw9PT1pLnlheGlzVFRFbHMmJihpLnlheGlzVFRFbHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIikpO3ZhciBzPXBhcnNlSW50KGkueWNyb3NzaGFpcnNIaWRkZW4uZ2V0QXR0cmlidXRlKCJ5MSIpLDEwKSxhPWUuZ2xvYmFscy50cmFuc2xhdGVZK3Msbj1pLnlheGlzVFRFbHNbdF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LHI9ZS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XS0yO2UuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYoci09MjYpLGEtPW4vMiwtMT09PWUuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZih0KT8oaS55YXhpc1RURWxzW3RdLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtYWN0aXZlIiksaS55YXhpc1RURWxzW3RdLnN0eWxlLnRvcD1hKyJweCIsaS55YXhpc1RURWxzW3RdLnN0eWxlLmxlZnQ9citlLmNvbmZpZy55YXhpc1t0XS50b29sdGlwLm9mZnNldFgrInB4Iik6aS55YXhpc1RURWxzW3RdLmNsYXNzTGlzdC5yZW1vdmUoImFwZXhjaGFydHMtYWN0aXZlIil9fSx7a2V5OiJtb3ZlVG9vbHRpcCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxzPXRoaXMudyxhPXRoaXMudHRDdHgsbj1hLmdldEVsVG9vbHRpcCgpLHI9YS50b29sdGlwUmVjdCxvPW51bGwhPT1pP3BhcnNlRmxvYXQoaSk6MSxsPXBhcnNlRmxvYXQodCkrbys1LGM9cGFyc2VGbG9hdChlKStvLzI7aWYobD5zLmdsb2JhbHMuZ3JpZFdpZHRoLzImJihsPWwtci50dFdpZHRoLW8tMTApLGw+cy5nbG9iYWxzLmdyaWRXaWR0aC1yLnR0V2lkdGgtMTAmJihsPXMuZ2xvYmFscy5ncmlkV2lkdGgtci50dFdpZHRoKSxsPC0yMCYmKGw9LTIwKSxzLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIGg9YS5nZXRFbEdyaWQoKSxkPWguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Yz1hLmUuY2xpZW50WStzLmdsb2JhbHMudHJhbnNsYXRlWS1kLnRvcC1yLnR0SGVpZ2h0LzJ9ZWxzZSBzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwoci50dEhlaWdodC8yK2M+cy5nbG9iYWxzLmdyaWRIZWlnaHQmJihjPXMuZ2xvYmFscy5ncmlkSGVpZ2h0LXIudHRIZWlnaHQrcy5nbG9iYWxzLnRyYW5zbGF0ZVkpLGM8MCYmKGM9MCkpO2lzTmFOKGwpfHwobCs9cy5nbG9iYWxzLnRyYW5zbGF0ZVgsbi5zdHlsZS5sZWZ0PWwrInB4IixuLnN0eWxlLnRvcD1jKyJweCIpfX0se2tleToibW92ZU1hcmtlcnMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9dGhpcy50dEN0eDtpZihpLmdsb2JhbHMubWFya2Vycy5zaXplW3RdPjApZm9yKHZhciBhPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIiAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcOnJlYWxJbmRleD0nIi5jb25jYXQodCwiJ10gLmFwZXhjaGFydHMtbWFya2VyIikpLG49MDtuPGEubGVuZ3RoO24rKylwYXJzZUludChhW25dLmdldEF0dHJpYnV0ZSgicmVsIiksMTApPT09ZSYmKHMubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLHMubWFya2VyLmVubGFyZ2VDdXJyZW50UG9pbnQoZSxhW25dKSk7ZWxzZSBzLm1hcmtlci5yZXNldFBvaW50c1NpemUoKSx0aGlzLm1vdmVEeW5hbWljUG9pbnRPbkhvdmVyKGUsdCl9fSx7a2V5OiJtb3ZlRHluYW1pY1BvaW50T25Ib3ZlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaSxzLGE9dGhpcy53LG49dGhpcy50dEN0eCxyPWEuZ2xvYmFscy5wb2ludHNBcnJheSxvPW4udG9vbHRpcFV0aWwuZ2V0SG92ZXJNYXJrZXJTaXplKGUpLGw9YS5jb25maWcuc2VyaWVzW2VdLnR5cGU7aWYoIWx8fCJjb2x1bW4iIT09bCYmImNhbmRsZXN0aWNrIiE9PWwmJiJib3hQbG90IiE9PWwpe2k9cltlXVt0XVswXSxzPXJbZV1bdF1bMV0/cltlXVt0XVsxXTowO3ZhciBjPWEuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFw6cmVhbEluZGV4PSciLmNvbmNhdChlLCInXSAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyBjaXJjbGUiKSk7YyYmczxhLmdsb2JhbHMuZ3JpZEhlaWdodCYmcz4wJiYoYy5zZXRBdHRyaWJ1dGUoInIiLG8pLGMuc2V0QXR0cmlidXRlKCJjeCIsaSksYy5zZXRBdHRyaWJ1dGUoImN5IixzKSksdGhpcy5tb3ZlWENyb3NzaGFpcnMoaSksbi5maXhlZFRvb2x0aXB8fHRoaXMubW92ZVRvb2x0aXAoaSxzLG8pfX19LHtrZXk6Im1vdmVEeW5hbWljUG9pbnRzT25Ib3ZlciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLnR0Q3R4LHM9aS53LGE9MCxuPTAscj1zLmdsb2JhbHMucG9pbnRzQXJyYXk7ZT1uZXcgWSh0aGlzLmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoImFzYyIsWyJsaW5lIiwiYXJlYSIsInNjYXR0ZXIiLCJidWJibGUiXSk7dmFyIG89aS50b29sdGlwVXRpbC5nZXRIb3Zlck1hcmtlclNpemUoZSk7cltlXSYmKGE9cltlXVt0XVswXSxuPXJbZV1bdF1bMV0pO3ZhciBsPWkudG9vbHRpcFV0aWwuZ2V0QWxsTWFya2VycygpO2lmKG51bGwhPT1sKWZvcih2YXIgYz0wO2M8cy5nbG9iYWxzLnNlcmllcy5sZW5ndGg7YysrKXt2YXIgaD1yW2NdO2lmKHMuZ2xvYmFscy5jb21ib0NoYXJ0cyYmdm9pZCAwPT09aCYmbC5zcGxpY2UoYywwLG51bGwpLGgmJmgubGVuZ3RoKXt2YXIgZD1yW2NdW3RdWzFdLHU9dm9pZCAwO2lmKGxbY10uc2V0QXR0cmlidXRlKCJjeCIsYSksInJhbmdlQXJlYSI9PT1zLmNvbmZpZy5jaGFydC50eXBlJiYhcy5nbG9iYWxzLmNvbWJvQ2hhcnRzKXt2YXIgcD10K3MuZ2xvYmFscy5zZXJpZXNbY10ubGVuZ3RoO3U9cltjXVtwXVsxXSxkLT1NYXRoLmFicyhkLXUpLzJ9bnVsbCE9PWQmJiFpc05hTihkKSYmZDxzLmdsb2JhbHMuZ3JpZEhlaWdodCtvJiZkK28+MD8obFtjXSYmbFtjXS5zZXRBdHRyaWJ1dGUoInIiLG8pLGxbY10mJmxbY10uc2V0QXR0cmlidXRlKCJjeSIsZCkpOmxbY10mJmxbY10uc2V0QXR0cmlidXRlKCJyIiwwKX19aWYodGhpcy5tb3ZlWENyb3NzaGFpcnMoYSksIWkuZml4ZWRUb29sdGlwKXt2YXIgZz1ufHxzLmdsb2JhbHMuZ3JpZEhlaWdodDt0aGlzLm1vdmVUb29sdGlwKGEsZyxvKX19fSx7a2V5OiJtb3ZlU3RpY2t5VG9vbHRpcE92ZXJCYXJzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10aGlzLnR0Q3R4LHM9ZS5nbG9iYWxzLmNvbHVtblNlcmllcz9lLmdsb2JhbHMuY29sdW1uU2VyaWVzLmxlbmd0aDplLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxhPXM+PTImJnMlMj09MD9NYXRoLmZsb29yKHMvMik6TWF0aC5mbG9vcihzLzIpKzE7ZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGE9bmV3IFkodGhpcy5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCJkZXNjIikrMSk7dmFyIG49ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSciLmNvbmNhdChhLCInXSBwYXRoW2o9JyIpLmNvbmNhdCh0LCInXSwgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9JyIpLmNvbmNhdChhLCInXSBwYXRoW2o9JyIpLmNvbmNhdCh0LCInXSwgLmFwZXhjaGFydHMtYm94UGxvdC1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nIikuY29uY2F0KGEsIiddIHBhdGhbaj0nIikuY29uY2F0KHQsIiddLCAuYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nIikuY29uY2F0KGEsIiddIHBhdGhbaj0nIikuY29uY2F0KHQsIiddIikpLHI9bj9wYXJzZUZsb2F0KG4uZ2V0QXR0cmlidXRlKCJjeCIpKTowLG89bj9wYXJzZUZsb2F0KG4uZ2V0QXR0cmlidXRlKCJjeSIpKTowLGw9bj9wYXJzZUZsb2F0KG4uZ2V0QXR0cmlidXRlKCJiYXJXaWR0aCIpKTowLGM9bj9wYXJzZUZsb2F0KG4uZ2V0QXR0cmlidXRlKCJiYXJIZWlnaHQiKSk6MCxoPWkuZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZD1uLmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhIil8fG4uY2xhc3NMaXN0LmNvbnRhaW5zKCJhcGV4Y2hhcnRzLWJveFBsb3QtYXJlYSIpO2lmKGUuZ2xvYmFscy5pc1hOdW1lcmljPyhuJiYhZCYmKHItPXMlMiE9MD9sLzI6MCksbiYmZCYmZS5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYoci09bC8yKSk6ZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8KHI9aS54QXhpc1RpY2tzUG9zaXRpb25zW3QtMV0raS5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoLzIsaXNOYU4ocikmJihyPWkueEF4aXNUaWNrc1Bvc2l0aW9uc1t0XS1pLmRhdGFQb2ludHNEaXZpZGVkV2lkdGgvMikpLGUuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/KG8+ZS5nbG9iYWxzLmdyaWRIZWlnaHQvMiYmKG8tPWkudG9vbHRpcFJlY3QudHRIZWlnaHQpLChvPW8rZS5jb25maWcuZ3JpZC5wYWRkaW5nLnRvcCtjLzMpK2M+ZS5nbG9iYWxzLmdyaWRIZWlnaHQmJihvPWUuZ2xvYmFscy5ncmlkSGVpZ2h0LWMpKTplLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcj9vPWkuZS5jbGllbnRZLWgudG9wLWkudG9vbHRpcFJlY3QudHRIZWlnaHQvMjpvK2kudG9vbHRpcFJlY3QudHRIZWlnaHQrMTU+ZS5nbG9iYWxzLmdyaWRIZWlnaHQmJihvPWUuZ2xvYmFscy5ncmlkSGVpZ2h0KSxvPC0xMCYmKG89LTEwKSxlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHx0aGlzLm1vdmVYQ3Jvc3NoYWlycyhyKSwhaS5maXhlZFRvb2x0aXApe3ZhciB1PW98fGUuZ2xvYmFscy5ncmlkSGVpZ2h0O3RoaXMubW92ZVRvb2x0aXAocix1KX19fV0pLHR9KCksdnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZSx0aGlzLmN0eD1lLmN0eCx0aGlzLnRvb2x0aXBQb3NpdGlvbj1uZXcgbXQoZSl9cmV0dXJuIGModCxbe2tleToiZHJhd0R5bmFtaWNQb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IGsodGhpcy5jdHgpLGk9bmV3IEIodGhpcy5jdHgpLHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtc2VyaWVzIik7cz1tKHMpLHQuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJnMuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcGFyc2VGbG9hdCh0LmdldEF0dHJpYnV0ZSgiZGF0YTpyZWFsSW5kZXgiKSktcGFyc2VGbG9hdChlLmdldEF0dHJpYnV0ZSgiZGF0YTpyZWFsSW5kZXgiKSl9KSk7Zm9yKHZhciBhPTA7YTxzLmxlbmd0aDthKyspe3ZhciBuPXNbYV0ucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcCIpO2lmKG51bGwhPT1uKXt2YXIgcj12b2lkIDAsbz0iYXBleGNoYXJ0cy1tYXJrZXIgdyIuY29uY2F0KChNYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNCkpOyJsaW5lIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUmJiJhcmVhIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGV8fHQuZ2xvYmFscy5jb21ib0NoYXJ0c3x8dC5jb25maWcudG9vbHRpcC5pbnRlcnNlY3R8fChvKz0iIG5vLXBvaW50ZXItZXZlbnRzIik7dmFyIGw9aS5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOm8sc2VyaWVzSW5kZXg6TnVtYmVyKG4uZ2V0QXR0cmlidXRlKCJkYXRhOnJlYWxJbmRleCIpKX0pOyhyPWUuZHJhd01hcmtlcigwLDAsbCkpLm5vZGUuc2V0QXR0cmlidXRlKCJkZWZhdWx0LW1hcmtlci1zaXplIiwwKTt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5nbG9iYWxzLlNWR05TLCJnIik7Yy5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIiksYy5hcHBlbmRDaGlsZChyLm5vZGUpLG4uYXBwZW5kQ2hpbGQoYyl9fX19LHtrZXk6ImVubGFyZ2VDdXJyZW50UG9pbnQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwscz1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbCxhPXRoaXMudzsiYnViYmxlIiE9PWEuY29uZmlnLmNoYXJ0LnR5cGUmJnRoaXMubmV3UG9pbnRTaXplKHQsZSk7dmFyIG49ZS5nZXRBdHRyaWJ1dGUoImN4Iikscj1lLmdldEF0dHJpYnV0ZSgiY3kiKTtpZihudWxsIT09aSYmbnVsbCE9PXMmJihuPWkscj1zKSx0aGlzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMobiksIXRoaXMuZml4ZWRUb29sdGlwKXtpZigicmFkYXIiPT09YS5jb25maWcuY2hhcnQudHlwZSl7dmFyIG89dGhpcy50dEN0eC5nZXRFbEdyaWQoKSxsPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bj10aGlzLnR0Q3R4LmUuY2xpZW50WC1sLmxlZnR9dGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVRvb2x0aXAobixyLGEuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZSl9fX0se2tleToiZW5sYXJnZVBvaW50cyIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPXRoaXMscz10aGlzLnR0Q3R4LGE9dCxuPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXNlcmllczpub3QoLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCkgLmFwZXhjaGFydHMtbWFya2VyIikscj1lLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemUsbz0wO288bi5sZW5ndGg7bysrKXt2YXIgbD1uW29dLmdldEF0dHJpYnV0ZSgicmVsIiksYz1uW29dLmdldEF0dHJpYnV0ZSgiaW5kZXgiKTtpZih2b2lkIDA9PT1yJiYocj1lLmdsb2JhbHMubWFya2Vycy5zaXplW2NdK2UuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCksYT09PXBhcnNlSW50KGwsMTApKXtpLm5ld1BvaW50U2l6ZShhLG5bb10pO3ZhciBoPW5bb10uZ2V0QXR0cmlidXRlKCJjeCIpLGQ9bltvXS5nZXRBdHRyaWJ1dGUoImN5Iik7aS50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGgpLHMuZml4ZWRUb29sdGlwfHxpLnRvb2x0aXBQb3NpdGlvbi5tb3ZlVG9vbHRpcChoLGQscil9ZWxzZSBpLm9sZFBvaW50U2l6ZShuW29dKX19fSx7a2V5OiJuZXdQb2ludFNpemUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9aS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplLGE9MD09PXQ/ZS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQ6ZS5wYXJlbnROb2RlLmxhc3RDaGlsZDtpZigiMCIhPT1hLmdldEF0dHJpYnV0ZSgiZGVmYXVsdC1tYXJrZXItc2l6ZSIpKXt2YXIgbj1wYXJzZUludChhLmdldEF0dHJpYnV0ZSgiaW5kZXgiKSwxMCk7dm9pZCAwPT09cyYmKHM9aS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtuXStpLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQpLHM8MCYmKHM9MCksYS5zZXRBdHRyaWJ1dGUoInIiLHMpfX19LHtrZXk6Im9sZFBvaW50U2l6ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9cGFyc2VGbG9hdCh0LmdldEF0dHJpYnV0ZSgiZGVmYXVsdC1tYXJrZXItc2l6ZSIpKTt0LnNldEF0dHJpYnV0ZSgiciIsZSl9fSx7a2V5OiJyZXNldFBvaW50c1NpemUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtc2VyaWVzOm5vdCguYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkKSAuYXBleGNoYXJ0cy1tYXJrZXIiKSxlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBpPXBhcnNlRmxvYXQodFtlXS5nZXRBdHRyaWJ1dGUoImRlZmF1bHQtbWFya2VyLXNpemUiKSk7Yi5pc051bWJlcihpKSYmaT49MD90W2VdLnNldEF0dHJpYnV0ZSgiciIsaSk6dFtlXS5zZXRBdHRyaWJ1dGUoInIiLDApfX19XSksdH0oKSx4dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy50dEN0eD1lfXJldHVybiBjKHQsW3trZXk6ImdldEF0dHIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHBhcnNlRmxvYXQodC50YXJnZXQuZ2V0QXR0cmlidXRlKGUpKX19LHtrZXk6ImhhbmRsZUhlYXRUcmVlVG9vbHRpcCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5lLGk9dC5vcHQscz10LngsYT10Lnksbj10LnR5cGUscj10aGlzLnR0Q3R4LG89dGhpcy53O2lmKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy0iLmNvbmNhdChuLCItcmVjdCIpKSl7dmFyIGw9dGhpcy5nZXRBdHRyKGUsImkiKSxjPXRoaXMuZ2V0QXR0cihlLCJqIiksaD10aGlzLmdldEF0dHIoZSwiY3giKSxkPXRoaXMuZ2V0QXR0cihlLCJjeSIpLHU9dGhpcy5nZXRBdHRyKGUsIndpZHRoIikscD10aGlzLmdldEF0dHIoZSwiaGVpZ2h0Iik7aWYoci50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczppLnR0SXRlbXMsaTpsLGo6YyxzaGFyZWQ6ITEsZTplfSksby5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9bCxvLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1jLHM9aCtyLnRvb2x0aXBSZWN0LnR0V2lkdGgvMit1LGE9ZCtyLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzItcC8yLHIudG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhoK3UvMikscz5vLmdsb2JhbHMuZ3JpZFdpZHRoLzImJihzPWgtci50b29sdGlwUmVjdC50dFdpZHRoLzIrdSksci53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIGc9by5nbG9iYWxzLmRvbS5lbFdyYXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cz1vLmdsb2JhbHMuY2xpZW50WC1nLmxlZnQtKHM+by5nbG9iYWxzLmdyaWRXaWR0aC8yP3IudG9vbHRpcFJlY3QudHRXaWR0aDowKSxhPW8uZ2xvYmFscy5jbGllbnRZLWcudG9wLShhPm8uZ2xvYmFscy5ncmlkSGVpZ2h0LzI/ci50b29sdGlwUmVjdC50dEhlaWdodDowKX19cmV0dXJue3g6cyx5OmF9fX0se2tleToiaGFuZGxlTWFya2VyVG9vbHRpcCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxzPXQuZSxhPXQub3B0LG49dC54LHI9dC55LG89dGhpcy53LGw9dGhpcy50dEN0eDtpZihzLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoImFwZXhjaGFydHMtbWFya2VyIikpe3ZhciBjPXBhcnNlSW50KGEucGF0aHMuZ2V0QXR0cmlidXRlKCJjeCIpLDEwKSxoPXBhcnNlSW50KGEucGF0aHMuZ2V0QXR0cmlidXRlKCJjeSIpLDEwKSxkPXBhcnNlRmxvYXQoYS5wYXRocy5nZXRBdHRyaWJ1dGUoInZhbCIpKTtpZihpPXBhcnNlSW50KGEucGF0aHMuZ2V0QXR0cmlidXRlKCJyZWwiKSwxMCksZT1wYXJzZUludChhLnBhdGhzLnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZSgicmVsIiksMTApLTEsbC5pbnRlcnNlY3Qpe3ZhciB1PWIuZmluZEFuY2VzdG9yKGEucGF0aHMsImFwZXhjaGFydHMtc2VyaWVzIik7dSYmKGU9cGFyc2VJbnQodS5nZXRBdHRyaWJ1dGUoImRhdGE6cmVhbEluZGV4IiksMTApKX1pZihsLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHt0dEl0ZW1zOmEudHRJdGVtcyxpOmUsajppLHNoYXJlZDohbC5zaG93T25JbnRlcnNlY3QmJm8uY29uZmlnLnRvb2x0aXAuc2hhcmVkLGU6c30pLCJtb3VzZXVwIj09PXMudHlwZSYmbC5tYXJrZXJDbGljayhzLGUsaSksby5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9ZSxvLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1pLG49YyxyPWgrby5nbG9iYWxzLnRyYW5zbGF0ZVktMS40KmwudG9vbHRpcFJlY3QudHRIZWlnaHQsbC53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIHA9bC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyPWwuZS5jbGllbnRZK28uZ2xvYmFscy50cmFuc2xhdGVZLXAudG9wfWQ8MCYmKHI9aCksbC5tYXJrZXIuZW5sYXJnZUN1cnJlbnRQb2ludChpLGEucGF0aHMsbixyKX1yZXR1cm57eDpuLHk6cn19fSx7a2V5OiJoYW5kbGVCYXJUb29sdGlwIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLHM9dC5lLGE9dC5vcHQsbj10aGlzLncscj10aGlzLnR0Q3R4LG89ci5nZXRFbFRvb2x0aXAoKSxsPTAsYz0wLGg9MCxkPXRoaXMuZ2V0QmFyVG9vbHRpcFhZKHtlOnMsb3B0OmF9KTtlPWQuaTt2YXIgdT1kLmJhckhlaWdodCxwPWQuajtuLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD1lLG4uZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PXAsbi5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmci50b29sdGlwVXRpbC5oYXNCYXJzKCl8fCFuLmNvbmZpZy50b29sdGlwLnNoYXJlZD8oYz1kLngsaD1kLnksaT1BcnJheS5pc0FycmF5KG4uY29uZmlnLnN0cm9rZS53aWR0aCk/bi5jb25maWcuc3Ryb2tlLndpZHRoW2VdOm4uY29uZmlnLnN0cm9rZS53aWR0aCxsPWMpOm4uZ2xvYmFscy5jb21ib0NoYXJ0c3x8bi5jb25maWcudG9vbHRpcC5zaGFyZWR8fChsLz0yKSxpc05hTihoKT9oPW4uZ2xvYmFscy5zdmdIZWlnaHQtci50b29sdGlwUmVjdC50dEhlaWdodDpoPDAmJihoPTApO3ZhciBnPXBhcnNlSW50KGEucGF0aHMucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoImRhdGE6cmVhbEluZGV4IiksMTApLGY9bi5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpcz9uLmNvbmZpZy55YXhpc1tnXSYmbi5jb25maWcueWF4aXNbZ10ucmV2ZXJzZWQ6bi5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQ7aWYoYytyLnRvb2x0aXBSZWN0LnR0V2lkdGg+bi5nbG9iYWxzLmdyaWRXaWR0aCYmIWY/Yy09ci50b29sdGlwUmVjdC50dFdpZHRoOmM8MCYmKGM9MCksci53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIG09ci5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtoPXIuZS5jbGllbnRZLW0udG9wfW51bGw9PT1yLnRvb2x0aXAmJihyLnRvb2x0aXA9bi5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtdG9vbHRpcCIpKSxuLmNvbmZpZy50b29sdGlwLnNoYXJlZHx8KG4uZ2xvYmFscy5jb21ib0JhckNvdW50PjA/ci50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGwraS8yKTpyLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMobCkpLCFyLmZpeGVkVG9vbHRpcCYmKCFuLmNvbmZpZy50b29sdGlwLnNoYXJlZHx8bi5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmci50b29sdGlwVXRpbC5oYXNCYXJzKCkpJiYoZiYmKGMtPXIudG9vbHRpcFJlY3QudHRXaWR0aCk8MCYmKGM9MCksIWZ8fG4uZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnIudG9vbHRpcFV0aWwuaGFzQmFycygpfHwoaD1oK3UtMioobi5nbG9iYWxzLnNlcmllc1tlXVtwXTwwP3U6MCkpLHIudG9vbHRpcFJlY3QudHRIZWlnaHQraD5uLmdsb2JhbHMuZ3JpZEhlaWdodD9oPW4uZ2xvYmFscy5ncmlkSGVpZ2h0LXIudG9vbHRpcFJlY3QudHRIZWlnaHQrbi5nbG9iYWxzLnRyYW5zbGF0ZVk6KGg9aCtuLmdsb2JhbHMudHJhbnNsYXRlWS1yLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzIpPDAmJihoPTApLG8uc3R5bGUubGVmdD1jK24uZ2xvYmFscy50cmFuc2xhdGVYKyJweCIsby5zdHlsZS50b3A9aCsicHgiKX19LHtrZXk6ImdldEJhclRvb2x0aXBYWSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5lLGk9dC5vcHQscz10aGlzLncsYT1udWxsLG49dGhpcy50dEN0eCxyPTAsbz0wLGw9MCxjPTAsaD0wLGQ9ZS50YXJnZXQuY2xhc3NMaXN0O2lmKGQuY29udGFpbnMoImFwZXhjaGFydHMtYmFyLWFyZWEiKXx8ZC5jb250YWlucygiYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhIil8fGQuY29udGFpbnMoImFwZXhjaGFydHMtYm94UGxvdC1hcmVhIil8fGQuY29udGFpbnMoImFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYSIpKXt2YXIgdT1lLnRhcmdldCxwPXUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZz1pLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxmPXAuaGVpZ2h0O2g9cC5oZWlnaHQ7dmFyIG09cC53aWR0aCx2PXBhcnNlSW50KHUuZ2V0QXR0cmlidXRlKCJjeCIpLDEwKSx4PXBhcnNlSW50KHUuZ2V0QXR0cmlidXRlKCJjeSIpLDEwKTtjPXBhcnNlRmxvYXQodS5nZXRBdHRyaWJ1dGUoImJhcldpZHRoIikpO3ZhciBiPSJ0b3VjaG1vdmUiPT09ZS50eXBlP2UudG91Y2hlc1swXS5jbGllbnRYOmUuY2xpZW50WDthPXBhcnNlSW50KHUuZ2V0QXR0cmlidXRlKCJqIiksMTApLHI9cGFyc2VJbnQodS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZSgicmVsIiksMTApLTE7dmFyIHk9dS5nZXRBdHRyaWJ1dGUoImRhdGEtcmFuZ2UteTEiKSx3PXUuZ2V0QXR0cmlidXRlKCJkYXRhLXJhbmdlLXkyIik7cy5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYocj1wYXJzZUludCh1LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCJkYXRhOnJlYWxJbmRleCIpLDEwKSksbi50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczppLnR0SXRlbXMsaTpyLGo6YSx5MTp5P3BhcnNlSW50KHksMTApOm51bGwseTI6dz9wYXJzZUludCh3LDEwKTpudWxsLHNoYXJlZDohbi5zaG93T25JbnRlcnNlY3QmJnMuY29uZmlnLnRvb2x0aXAuc2hhcmVkLGU6ZX0pLHMuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yP3MuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/KG89Yi1nLmxlZnQrMTUsbD14LW4uZGF0YVBvaW50c0RpdmlkZWRIZWlnaHQrZi8yLW4udG9vbHRpcFJlY3QudHRIZWlnaHQvMik6KG89cy5nbG9iYWxzLmlzWE51bWVyaWM/di1tLzI6di1uLmRhdGFQb2ludHNEaXZpZGVkV2lkdGgrbS8yLGw9ZS5jbGllbnRZLWcudG9wLW4udG9vbHRpcFJlY3QudHRIZWlnaHQvMi0xNSk6cy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD8oKG89dik8bi54eVJhdGlvcy5iYXNlTGluZUludmVydGVkWSYmKG89di1uLnRvb2x0aXBSZWN0LnR0V2lkdGgpLGw9eC1uLmRhdGFQb2ludHNEaXZpZGVkSGVpZ2h0K2YvMi1uLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzIpOihvPXMuZ2xvYmFscy5pc1hOdW1lcmljP3YtbS8yOnYtbi5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoK20vMixsPXgpfXJldHVybnt4Om8seTpsLGJhckhlaWdodDpoLGJhcldpZHRoOmMsaTpyLGo6YX19fV0pLHR9KCksYnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZX1yZXR1cm4gYyh0LFt7a2V5OiJkcmF3WGF4aXNUb29sdGlwIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMudHRDdHgsaT0iYm90dG9tIj09PXQuY29uZmlnLnhheGlzLnBvc2l0aW9uO2UueGF4aXNPZmZZPWk/dC5nbG9iYWxzLmdyaWRIZWlnaHQrMTotdC5nbG9iYWxzLnhBeGlzSGVpZ2h0LXQuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQrMzt2YXIgcz1pPyJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b20iOiJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3AiLGE9dC5nbG9iYWxzLmRvbS5lbFdyYXA7ZS5pc1hBeGlzVG9vbHRpcEVuYWJsZWQmJm51bGw9PT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAiKSYmKGUueGF4aXNUb29sdGlwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUueGF4aXNUb29sdGlwLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMrIiBhcGV4Y2hhcnRzLXRoZW1lLSIrdC5jb25maWcudG9vbHRpcC50aGVtZSksYS5hcHBlbmRDaGlsZChlLnhheGlzVG9vbHRpcCksZS54YXhpc1Rvb2x0aXBUZXh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUueGF4aXNUb29sdGlwVGV4dC5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10ZXh0IiksZS54YXhpc1Rvb2x0aXBUZXh0LnN0eWxlLmZvbnRGYW1pbHk9dC5jb25maWcueGF4aXMudG9vbHRpcC5zdHlsZS5mb250RmFtaWx5fHx0LmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGUueGF4aXNUb29sdGlwVGV4dC5zdHlsZS5mb250U2l6ZT10LmNvbmZpZy54YXhpcy50b29sdGlwLnN0eWxlLmZvbnRTaXplLGUueGF4aXNUb29sdGlwLmFwcGVuZENoaWxkKGUueGF4aXNUb29sdGlwVGV4dCkpfX0se2tleToiZHJhd1lheGlzVG9vbHRpcCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53LGU9dGhpcy50dEN0eCxpPWZ1bmN0aW9uKGkpe3ZhciBzPXQuY29uZmlnLnlheGlzW2ldLm9wcG9zaXRlfHx0LmNvbmZpZy55YXhpc1tpXS5jcm9zc2hhaXJzLm9wcG9zaXRlO2UueWF4aXNPZmZYPXM/dC5nbG9iYWxzLmdyaWRXaWR0aCsxOjE7dmFyIGE9ImFwZXhjaGFydHMteWF4aXN0b29sdGlwIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLSIuY29uY2F0KGkscz8iIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0IjoiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQiKTt0Lmdsb2JhbHMueUF4aXNTYW1lU2NhbGVJbmRpY2VzLm1hcCgoZnVuY3Rpb24oZSxzKXtlLm1hcCgoZnVuY3Rpb24oZSxzKXtzPT09aSYmKGErPXQuY29uZmlnLnlheGlzW3NdLnNob3c/IiAiOiIgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtaGlkZGVuIil9KSl9KSk7dmFyIG49dC5nbG9iYWxzLmRvbS5lbFdyYXA7bnVsbD09PXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC0iLmNvbmNhdChpKSkmJihlLnlheGlzVG9vbHRpcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlLnlheGlzVG9vbHRpcC5zZXRBdHRyaWJ1dGUoImNsYXNzIixhKyIgYXBleGNoYXJ0cy10aGVtZS0iK3QuY29uZmlnLnRvb2x0aXAudGhlbWUpLG4uYXBwZW5kQ2hpbGQoZS55YXhpc1Rvb2x0aXApLDA9PT1pJiYoZS55YXhpc1Rvb2x0aXBUZXh0PVtdKSxlLnlheGlzVG9vbHRpcFRleHRbaV09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksZS55YXhpc1Rvb2x0aXBUZXh0W2ldLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMteWF4aXN0b29sdGlwLXRleHQiKSxlLnlheGlzVG9vbHRpcC5hcHBlbmRDaGlsZChlLnlheGlzVG9vbHRpcFRleHRbaV0pKX0scz0wO3M8dC5jb25maWcueWF4aXMubGVuZ3RoO3MrKylpKHMpfX0se2tleToic2V0WENyb3NzaGFpcldpZHRoIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMudHRDdHgsaT1lLmdldEVsWENyb3NzaGFpcnMoKTtpZihlLnhjcm9zc2hhaXJzV2lkdGg9cGFyc2VJbnQodC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCwxMCksdC5nbG9iYWxzLmNvbWJvQ2hhcnRzKXt2YXIgcz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1iYXItYXJlYSIpO2lmKG51bGwhPT1zJiYiYmFyV2lkdGgiPT09dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCl7dmFyIGE9cGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZSgiYmFyV2lkdGgiKSk7ZS54Y3Jvc3NoYWlyc1dpZHRoPWF9ZWxzZSBpZigidGlja1dpZHRoIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciBuPXQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoO2UueGNyb3NzaGFpcnNXaWR0aD10Lmdsb2JhbHMuZ3JpZFdpZHRoL259fWVsc2UgaWYoInRpY2tXaWR0aCI9PT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoKXt2YXIgcj10Lmdsb2JhbHMubGFiZWxzLmxlbmd0aDtlLnhjcm9zc2hhaXJzV2lkdGg9dC5nbG9iYWxzLmdyaWRXaWR0aC9yfWVsc2UgaWYoImJhcldpZHRoIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciBvPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLWJhci1hcmVhIik7aWYobnVsbCE9PW8pe3ZhciBsPXBhcnNlRmxvYXQoby5nZXRBdHRyaWJ1dGUoImJhcldpZHRoIikpO2UueGNyb3NzaGFpcnNXaWR0aD1sfWVsc2UgZS54Y3Jvc3NoYWlyc1dpZHRoPTF9dC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGUueGNyb3NzaGFpcnNXaWR0aD0wKSxudWxsIT09aSYmZS54Y3Jvc3NoYWlyc1dpZHRoPjAmJmkuc2V0QXR0cmlidXRlKCJ3aWR0aCIsZS54Y3Jvc3NoYWlyc1dpZHRoKX19LHtrZXk6ImhhbmRsZVlDcm9zc2hhaXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy50dEN0eDtlLnljcm9zc2hhaXJzPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzIiksZS55Y3Jvc3NoYWlyc0hpZGRlbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy1oaWRkZW4iKX19LHtrZXk6ImRyYXdZYXhpc1Rvb2x0aXBUZXh0Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy50dEN0eCxhPXRoaXMudyxuPWEuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3RdO2lmKHMueWF4aXNUb29sdGlwc1t0XSl7dmFyIHI9cy5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPShlLXIudG9wKSppLnlSYXRpb1t0XSxsPWEuZ2xvYmFscy5tYXhZQXJyW3RdLWEuZ2xvYmFscy5taW5ZQXJyW3RdLGM9YS5nbG9iYWxzLm1pbllBcnJbdF0rKGwtbyk7cy50b29sdGlwUG9zaXRpb24ubW92ZVlDcm9zc2hhaXJzKGUtci50b3ApLHMueWF4aXNUb29sdGlwVGV4dFt0XS5pbm5lckhUTUw9bihjKSxzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWUF4aXNUb29sdGlwKHQpfX19XSksdH0oKSx5dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy50Q29uZmlnPWkuY29uZmlnLnRvb2x0aXAsdGhpcy50b29sdGlwVXRpbD1uZXcgZ3QodGhpcyksdGhpcy50b29sdGlwTGFiZWxzPW5ldyBmdCh0aGlzKSx0aGlzLnRvb2x0aXBQb3NpdGlvbj1uZXcgbXQodGhpcyksdGhpcy5tYXJrZXI9bmV3IHZ0KHRoaXMpLHRoaXMuaW50ZXJzZWN0PW5ldyB4dCh0aGlzKSx0aGlzLmF4ZXNUb29sdGlwPW5ldyBidCh0aGlzKSx0aGlzLnNob3dPbkludGVyc2VjdD10aGlzLnRDb25maWcuaW50ZXJzZWN0LHRoaXMuc2hvd1Rvb2x0aXBUaXRsZT10aGlzLnRDb25maWcueC5zaG93LHRoaXMuZml4ZWRUb29sdGlwPXRoaXMudENvbmZpZy5maXhlZC5lbmFibGVkLHRoaXMueGF4aXNUb29sdGlwPW51bGwsdGhpcy55YXhpc1RURWxzPW51bGwsdGhpcy5pc0JhclNoYXJlZD0haS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmdGhpcy50Q29uZmlnLnNoYXJlZCx0aGlzLmxhc3RIb3ZlclRpbWU9RGF0ZS5ub3coKX1yZXR1cm4gYyh0LFt7a2V5OiJnZXRFbFRvb2x0aXAiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0fHwodD10aGlzKSx0LncuZ2xvYmFscy5kb20uYmFzZUVsP3Qudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtdG9vbHRpcCIpOm51bGx9fSx7a2V5OiJnZXRFbFhDcm9zc2hhaXJzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXhjcm9zc2hhaXJzIil9fSx7a2V5OiJnZXRFbEdyaWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtZ3JpZCIpfX0se2tleToiZHJhd1Rvb2x0aXAiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt0aGlzLnh5UmF0aW9zPXQsdGhpcy5pc1hBeGlzVG9vbHRpcEVuYWJsZWQ9ZS5jb25maWcueGF4aXMudG9vbHRpcC5lbmFibGVkJiZlLmdsb2JhbHMuYXhpc0NoYXJ0cyx0aGlzLnlheGlzVG9vbHRpcHM9ZS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbih0LGkpe3JldHVybiEhKHQuc2hvdyYmdC50b29sdGlwLmVuYWJsZWQmJmUuZ2xvYmFscy5heGlzQ2hhcnRzKX0pKSx0aGlzLmFsbFRvb2x0aXBTZXJpZXNHcm91cHM9W10sZS5nbG9iYWxzLmF4aXNDaGFydHN8fCh0aGlzLnNob3dUb29sdGlwVGl0bGU9ITEpO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKGkuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy10b29sdGlwIiksZS5jb25maWcudG9vbHRpcC5jc3NDbGFzcyYmaS5jbGFzc0xpc3QuYWRkKGUuY29uZmlnLnRvb2x0aXAuY3NzQ2xhc3MpLGkuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy10aGVtZS0iLmNvbmNhdCh0aGlzLnRDb25maWcudGhlbWUpKSxlLmdsb2JhbHMuZG9tLmVsV3JhcC5hcHBlbmRDaGlsZChpKSxlLmdsb2JhbHMuYXhpc0NoYXJ0cyl7dGhpcy5heGVzVG9vbHRpcC5kcmF3WGF4aXNUb29sdGlwKCksdGhpcy5heGVzVG9vbHRpcC5kcmF3WWF4aXNUb29sdGlwKCksdGhpcy5heGVzVG9vbHRpcC5zZXRYQ3Jvc3NoYWlyV2lkdGgoKSx0aGlzLmF4ZXNUb29sdGlwLmhhbmRsZVlDcm9zc2hhaXIoKTt2YXIgcz1uZXcgRyh0aGlzLmN0eCk7dGhpcy54QXhpc1RpY2tzUG9zaXRpb25zPXMuZ2V0WEF4aXNUaWNrc1Bvc2l0aW9ucygpfWlmKCFlLmdsb2JhbHMuY29tYm9DaGFydHMmJiF0aGlzLnRDb25maWcuaW50ZXJzZWN0JiYicmFuZ2VCYXIiIT09ZS5jb25maWcuY2hhcnQudHlwZXx8dGhpcy50Q29uZmlnLnNoYXJlZHx8KHRoaXMuc2hvd09uSW50ZXJzZWN0PSEwKSwwIT09ZS5jb25maWcubWFya2Vycy5zaXplJiYwIT09ZS5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemV8fHRoaXMubWFya2VyLmRyYXdEeW5hbWljUG9pbnRzKHRoaXMpLGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoIT09ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpe3RoaXMuZGF0YVBvaW50c0RpdmlkZWRIZWlnaHQ9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLmRhdGFQb2ludHMsdGhpcy5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoPWUuZ2xvYmFscy5ncmlkV2lkdGgvZS5nbG9iYWxzLmRhdGFQb2ludHMsdGhpcy5zaG93VG9vbHRpcFRpdGxlJiYodGhpcy50b29sdGlwVGl0bGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy50b29sdGlwVGl0bGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlIiksdGhpcy50b29sdGlwVGl0bGUuc3R5bGUuZm9udEZhbWlseT10aGlzLnRDb25maWcuc3R5bGUuZm9udEZhbWlseXx8ZS5jb25maWcuY2hhcnQuZm9udEZhbWlseSx0aGlzLnRvb2x0aXBUaXRsZS5zdHlsZS5mb250U2l6ZT10aGlzLnRDb25maWcuc3R5bGUuZm9udFNpemUsaS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBUaXRsZSkpO3ZhciBhPWUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoOyhlLmdsb2JhbHMueHlDaGFydHN8fGUuZ2xvYmFscy5jb21ib0NoYXJ0cykmJnRoaXMudENvbmZpZy5zaGFyZWQmJihhPXRoaXMuc2hvd09uSW50ZXJzZWN0PzE6ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpLHRoaXMubGVnZW5kTGFiZWxzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0IiksdGhpcy50dEl0ZW1zPXRoaXMuY3JlYXRlVFRFbGVtZW50cyhhKSx0aGlzLmFkZFNWR0V2ZW50cygpfX19LHtrZXk6ImNyZWF0ZVRURWxlbWVudHMiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLGk9dGhpcy53LHM9W10sYT10aGlzLmdldEVsVG9vbHRpcCgpLG49ZnVuY3Rpb24obil7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ci5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwIiksci5zdHlsZS5vcmRlcj1pLmNvbmZpZy50b29sdGlwLmludmVyc2VPcmRlcj90LW46bisxLGUudENvbmZpZy5zaGFyZWQmJmUudENvbmZpZy5lbmFibGVkT25TZXJpZXMmJkFycmF5LmlzQXJyYXkoZS50Q29uZmlnLmVuYWJsZWRPblNlcmllcykmJmUudENvbmZpZy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihuKTwwJiZyLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAtaGlkZGVuIik7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO28uY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlciIpLG8uc3R5bGUuYmFja2dyb3VuZENvbG9yPWkuZ2xvYmFscy5jb2xvcnNbbl0sci5hcHBlbmRDaGlsZChvKTt2YXIgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtsLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0IiksbC5zdHlsZS5mb250RmFtaWx5PWUudENvbmZpZy5zdHlsZS5mb250RmFtaWx5fHxpLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGwuc3R5bGUuZm9udFNpemU9ZS50Q29uZmlnLnN0eWxlLmZvbnRTaXplLFsieSIsImdvYWxzIiwieiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy10b29sdGlwLSIuY29uY2F0KHQsIi1ncm91cCIpKTt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7aS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC0iLmNvbmNhdCh0LCItbGFiZWwiKSksZS5hcHBlbmRDaGlsZChpKTt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7cy5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC0iLmNvbmNhdCh0LCItdmFsdWUiKSksZS5hcHBlbmRDaGlsZChzKSxsLmFwcGVuZENoaWxkKGUpfSkpLHIuYXBwZW5kQ2hpbGQobCksYS5hcHBlbmRDaGlsZChyKSxzLnB1c2gocil9LHI9MDtyPHQ7cisrKW4ocik7cmV0dXJuIHN9fSx7a2V5OiJhZGRTVkdFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5jb25maWcuY2hhcnQudHlwZSxpPXRoaXMuZ2V0RWxUb29sdGlwKCkscz0hKCJiYXIiIT09ZSYmImNhbmRsZXN0aWNrIiE9PWUmJiJib3hQbG90IiE9PWUmJiJyYW5nZUJhciIhPT1lKSxhPSJhcmVhIj09PWV8fCJsaW5lIj09PWV8fCJzY2F0dGVyIj09PWV8fCJidWJibGUiPT09ZXx8InJhZGFyIj09PWUsbj10Lmdsb2JhbHMuZG9tLlBhcGVyLm5vZGUscj10aGlzLmdldEVsR3JpZCgpO3ImJih0aGlzLnNlcmllc0JvdW5kPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3ZhciBvLGw9W10sYz1bXSxoPXtob3ZlckFyZWE6bixlbEdyaWQ6cix0b29sdGlwRWw6aSx0b29sdGlwWTpsLHRvb2x0aXBYOmMsdHRJdGVtczp0aGlzLnR0SXRlbXN9O2lmKHQuZ2xvYmFscy5heGlzQ2hhcnRzJiYoYT9vPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFw6bG9uZ2VzdFNlcmllcz0ndHJ1ZSddIC5hcGV4Y2hhcnRzLW1hcmtlciIpOnM/bz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtYmFyLWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtYm94UGxvdC1hcmVhLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYSIpOiJoZWF0bWFwIiE9PWUmJiJ0cmVlbWFwIiE9PWV8fChvPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1oZWF0bWFwLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtdHJlZW1hcCIpKSxvJiZvLmxlbmd0aCkpZm9yKHZhciBkPTA7ZDxvLmxlbmd0aDtkKyspbC5wdXNoKG9bZF0uZ2V0QXR0cmlidXRlKCJjeSIpKSxjLnB1c2gob1tkXS5nZXRBdHRyaWJ1dGUoImN4IikpO2lmKHQuZ2xvYmFscy54eUNoYXJ0cyYmIXRoaXMuc2hvd09uSW50ZXJzZWN0fHx0Lmdsb2JhbHMuY29tYm9DaGFydHMmJiF0aGlzLnNob3dPbkludGVyc2VjdHx8cyYmdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJnRoaXMudENvbmZpZy5zaGFyZWQpdGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKFtuXSxoKTtlbHNlIGlmKHMmJiF0Lmdsb2JhbHMuY29tYm9DaGFydHN8fGEmJnRoaXMuc2hvd09uSW50ZXJzZWN0KXRoaXMuYWRkRGF0YXBvaW50RXZlbnRzTGlzdGVuZXJzKGgpO2Vsc2UgaWYoIXQuZ2xvYmFscy5heGlzQ2hhcnRzfHwiaGVhdG1hcCI9PT1lfHwidHJlZW1hcCI9PT1lKXt2YXIgdT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIuYXBleGNoYXJ0cy1zZXJpZXMiKTt0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnModSxoKX1pZih0aGlzLnNob3dPbkludGVyc2VjdCl7dmFyIHA9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtbGluZS1zZXJpZXMgLmFwZXhjaGFydHMtbWFya2VyLCAuYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1tYXJrZXIiKTtwLmxlbmd0aD4wJiZ0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMocCxoKSx0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmIXRoaXMudENvbmZpZy5zaGFyZWQmJnRoaXMuYWRkRGF0YXBvaW50RXZlbnRzTGlzdGVuZXJzKGgpfX19LHtrZXk6ImRyYXdGaXhlZFRvb2x0aXBSZWN0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMuZ2V0RWxUb29sdGlwKCksaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHM9aS53aWR0aCsxMCxhPWkuaGVpZ2h0KzEwLG49dGhpcy50Q29uZmlnLmZpeGVkLm9mZnNldFgscj10aGlzLnRDb25maWcuZml4ZWQub2Zmc2V0WSxvPXRoaXMudENvbmZpZy5maXhlZC5wb3NpdGlvbi50b0xvd2VyQ2FzZSgpO3JldHVybiBvLmluZGV4T2YoInJpZ2h0Iik+LTEmJihuPW4rdC5nbG9iYWxzLnN2Z1dpZHRoLXMrMTApLG8uaW5kZXhPZigiYm90dG9tIik+LTEmJihyPXIrdC5nbG9iYWxzLnN2Z0hlaWdodC1hLTEwKSxlLnN0eWxlLmxlZnQ9bisicHgiLGUuc3R5bGUudG9wPXIrInB4Iix7eDpuLHk6cix0dFdpZHRoOnMsdHRIZWlnaHQ6YX19fSx7a2V5OiJhZGREYXRhcG9pbnRFdmVudHNMaXN0ZW5lcnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgLmFwZXhjaGFydHMtbWFya2VyLCAuYXBleGNoYXJ0cy1iYXItYXJlYSwgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYSwgLmFwZXhjaGFydHMtYm94UGxvdC1hcmVhLCAuYXBleGNoYXJ0cy1yYW5nZWJhci1hcmVhIik7dGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKGUsdCl9fSx7a2V5OiJhZGRQYXRoc0V2ZW50TGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10aGlzLHM9ZnVuY3Rpb24ocyl7dmFyIGE9e3BhdGhzOnRbc10sdG9vbHRpcEVsOmUudG9vbHRpcEVsLHRvb2x0aXBZOmUudG9vbHRpcFksdG9vbHRpcFg6ZS50b29sdGlwWCxlbEdyaWQ6ZS5lbEdyaWQsaG92ZXJBcmVhOmUuaG92ZXJBcmVhLHR0SXRlbXM6ZS50dEl0ZW1zfTtbIm1vdXNlbW92ZSIsIm1vdXNldXAiLCJ0b3VjaG1vdmUiLCJtb3VzZW91dCIsInRvdWNoZW5kIl0ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdFtzXS5hZGRFdmVudExpc3RlbmVyKGUsaS5vblNlcmllc0hvdmVyLmJpbmQoaSxhKSx7Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSl9KSl9LGE9MDthPHQubGVuZ3RoO2ErKylzKGEpfX0se2tleToib25TZXJpZXNIb3ZlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLHM9RGF0ZS5ub3coKS10aGlzLmxhc3RIb3ZlclRpbWU7cz49MTAwP3RoaXMuc2VyaWVzSG92ZXIodCxlKTooY2xlYXJUaW1lb3V0KHRoaXMuc2VyaWVzSG92ZXJUaW1lb3V0KSx0aGlzLnNlcmllc0hvdmVyVGltZW91dD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2kuc2VyaWVzSG92ZXIodCxlKX0pLDEwMC1zKSl9fSx7a2V5OiJzZXJpZXNIb3ZlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO3RoaXMubGFzdEhvdmVyVGltZT1EYXRlLm5vdygpO3ZhciBzPVtdLGE9dGhpcy53O2EuY29uZmlnLmNoYXJ0Lmdyb3VwJiYocz10aGlzLmN0eC5nZXRHcm91cGVkQ2hhcnRzKCkpLGEuZ2xvYmFscy5heGlzQ2hhcnRzJiYoYS5nbG9iYWxzLm1pblg9PT0tMS8wJiZhLmdsb2JhbHMubWF4WD09PTEvMHx8MD09PWEuZ2xvYmFscy5kYXRhUG9pbnRzKXx8KHMubGVuZ3RoP3MuZm9yRWFjaCgoZnVuY3Rpb24ocyl7dmFyIGE9aS5nZXRFbFRvb2x0aXAocyksbj17cGF0aHM6dC5wYXRocyx0b29sdGlwRWw6YSx0b29sdGlwWTp0LnRvb2x0aXBZLHRvb2x0aXBYOnQudG9vbHRpcFgsZWxHcmlkOnQuZWxHcmlkLGhvdmVyQXJlYTp0LmhvdmVyQXJlYSx0dEl0ZW1zOnMudy5nbG9iYWxzLnRvb2x0aXAudHRJdGVtc307cy53Lmdsb2JhbHMubWluWD09PWkudy5nbG9iYWxzLm1pblgmJnMudy5nbG9iYWxzLm1heFg9PT1pLncuZ2xvYmFscy5tYXhYJiZzLncuZ2xvYmFscy50b29sdGlwLnNlcmllc0hvdmVyQnlDb250ZXh0KHtjaGFydEN0eDpzLHR0Q3R4OnMudy5nbG9iYWxzLnRvb2x0aXAsb3B0Om4sZTplfSl9KSk6dGhpcy5zZXJpZXNIb3ZlckJ5Q29udGV4dCh7Y2hhcnRDdHg6dGhpcy5jdHgsdHRDdHg6dGhpcy53Lmdsb2JhbHMudG9vbHRpcCxvcHQ6dCxlOmV9KSl9fSx7a2V5OiJzZXJpZXNIb3ZlckJ5Q29udGV4dCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jaGFydEN0eCxpPXQudHRDdHgscz10Lm9wdCxhPXQuZSxuPWUudyxyPXRoaXMuZ2V0RWxUb29sdGlwKCk7ciYmKGkudG9vbHRpcFJlY3Q9e3g6MCx5OjAsdHRXaWR0aDpyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLHR0SGVpZ2h0OnIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0fSxpLmU9YSwhaS50b29sdGlwVXRpbC5oYXNCYXJzKCl8fG4uZ2xvYmFscy5jb21ib0NoYXJ0c3x8aS5pc0JhclNoYXJlZHx8dGhpcy50Q29uZmlnLm9uRGF0YXNldEhvdmVyLmhpZ2hsaWdodERhdGFTZXJpZXMmJm5ldyBZKGUpLnRvZ2dsZVNlcmllc09uSG92ZXIoYSxhLnRhcmdldC5wYXJlbnROb2RlKSxpLmZpeGVkVG9vbHRpcCYmaS5kcmF3Rml4ZWRUb29sdGlwUmVjdCgpLG4uZ2xvYmFscy5heGlzQ2hhcnRzP2kuYXhpc0NoYXJ0c1Rvb2x0aXBzKHtlOmEsb3B0OnMsdG9vbHRpcFJlY3Q6aS50b29sdGlwUmVjdH0pOmkubm9uQXhpc0NoYXJ0c1Rvb2x0aXBzKHtlOmEsb3B0OnMsdG9vbHRpcFJlY3Q6aS50b29sdGlwUmVjdH0pKX19LHtrZXk6ImF4aXNDaGFydHNUb29sdGlwcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxzPXQuZSxhPXQub3B0LG49dGhpcy53LHI9YS5lbEdyaWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz0idG91Y2htb3ZlIj09PXMudHlwZT9zLnRvdWNoZXNbMF0uY2xpZW50WDpzLmNsaWVudFgsbD0idG91Y2htb3ZlIj09PXMudHlwZT9zLnRvdWNoZXNbMF0uY2xpZW50WTpzLmNsaWVudFk7aWYodGhpcy5jbGllbnRZPWwsdGhpcy5jbGllbnRYPW8sbi5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9LTEsbi5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9LTEsbDxyLnRvcHx8bD5yLnRvcCtyLmhlaWdodCl0aGlzLmhhbmRsZU1vdXNlT3V0KGEpO2Vsc2V7aWYoQXJyYXkuaXNBcnJheSh0aGlzLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzKSYmIW4uY29uZmlnLnRvb2x0aXAuc2hhcmVkKXt2YXIgYz1wYXJzZUludChhLnBhdGhzLmdldEF0dHJpYnV0ZSgiaW5kZXgiKSwxMCk7aWYodGhpcy50Q29uZmlnLmVuYWJsZWRPblNlcmllcy5pbmRleE9mKGMpPDApcmV0dXJuIHZvaWQgdGhpcy5oYW5kbGVNb3VzZU91dChhKX12YXIgaD10aGlzLmdldEVsVG9vbHRpcCgpLGQ9dGhpcy5nZXRFbFhDcm9zc2hhaXJzKCksdT1uLmdsb2JhbHMueHlDaGFydHN8fCJiYXIiPT09bi5jb25maWcuY2hhcnQudHlwZSYmIW4uZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiZ0aGlzLnRDb25maWcuc2hhcmVkfHxuLmdsb2JhbHMuY29tYm9DaGFydHMmJnRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpO2lmKCJtb3VzZW1vdmUiPT09cy50eXBlfHwidG91Y2htb3ZlIj09PXMudHlwZXx8Im1vdXNldXAiPT09cy50eXBlKXtpZihuLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aCtuLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzLmxlbmd0aD09PW4uZ2xvYmFscy5zZXJpZXMubGVuZ3RoKXJldHVybjtudWxsIT09ZCYmZC5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWFjdGl2ZSIpO3ZhciBwPXRoaXMueWF4aXNUb29sdGlwcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiEwPT09dH0pKTtpZihudWxsIT09dGhpcy55Y3Jvc3NoYWlycyYmcC5sZW5ndGgmJnRoaXMueWNyb3NzaGFpcnMuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1hY3RpdmUiKSx1JiYhdGhpcy5zaG93T25JbnRlcnNlY3QpdGhpcy5oYW5kbGVTdGlja3lUb29sdGlwKHMsbyxsLGEpO2Vsc2UgaWYoImhlYXRtYXAiPT09bi5jb25maWcuY2hhcnQudHlwZXx8InRyZWVtYXAiPT09bi5jb25maWcuY2hhcnQudHlwZSl7dmFyIGc9dGhpcy5pbnRlcnNlY3QuaGFuZGxlSGVhdFRyZWVUb29sdGlwKHtlOnMsb3B0OmEseDplLHk6aSx0eXBlOm4uY29uZmlnLmNoYXJ0LnR5cGV9KTtlPWcueCxpPWcueSxoLnN0eWxlLmxlZnQ9ZSsicHgiLGguc3R5bGUudG9wPWkrInB4In1lbHNlIHRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiZ0aGlzLmludGVyc2VjdC5oYW5kbGVCYXJUb29sdGlwKHtlOnMsb3B0OmF9KSx0aGlzLnRvb2x0aXBVdGlsLmhhc01hcmtlcnMoKSYmdGhpcy5pbnRlcnNlY3QuaGFuZGxlTWFya2VyVG9vbHRpcCh7ZTpzLG9wdDphLHg6ZSx5Oml9KTtpZih0aGlzLnlheGlzVG9vbHRpcHMubGVuZ3RoKWZvcih2YXIgZj0wO2Y8bi5jb25maWcueWF4aXMubGVuZ3RoO2YrKyl0aGlzLmF4ZXNUb29sdGlwLmRyYXdZYXhpc1Rvb2x0aXBUZXh0KGYsbCx0aGlzLnh5UmF0aW9zKTthLnRvb2x0aXBFbC5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWFjdGl2ZSIpfWVsc2UibW91c2VvdXQiIT09cy50eXBlJiYidG91Y2hlbmQiIT09cy50eXBlfHx0aGlzLmhhbmRsZU1vdXNlT3V0KGEpfX19LHtrZXk6Im5vbkF4aXNDaGFydHNUb29sdGlwcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5lLGk9dC5vcHQscz10LnRvb2x0aXBSZWN0LGE9dGhpcy53LG49aS5wYXRocy5nZXRBdHRyaWJ1dGUoInJlbCIpLHI9dGhpcy5nZXRFbFRvb2x0aXAoKSxvPWEuZ2xvYmFscy5kb20uZWxXcmFwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKCJtb3VzZW1vdmUiPT09ZS50eXBlfHwidG91Y2htb3ZlIj09PWUudHlwZSl7ci5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWFjdGl2ZSIpLHRoaXMudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6aS50dEl0ZW1zLGk6cGFyc2VJbnQobiwxMCktMSxzaGFyZWQ6ITF9KTt2YXIgbD1hLmdsb2JhbHMuY2xpZW50WC1vLmxlZnQtcy50dFdpZHRoLzIsYz1hLmdsb2JhbHMuY2xpZW50WS1vLnRvcC1zLnR0SGVpZ2h0LTEwO2lmKHIuc3R5bGUubGVmdD1sKyJweCIsci5zdHlsZS50b3A9YysicHgiLGEuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIpe3ZhciBoPW4tMSxkPSgwLGEuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIpKHRoaXMubGVnZW5kTGFiZWxzW2hdLmdldEF0dHJpYnV0ZSgiZGF0YTpkZWZhdWx0LXRleHQiKSx7c2VyaWVzSW5kZXg6aCxkYXRhUG9pbnRJbmRleDpoLHc6YX0pO3RoaXMubGVnZW5kTGFiZWxzW2hdLmlubmVySFRNTD1kfX1lbHNlIm1vdXNlb3V0IiE9PWUudHlwZSYmInRvdWNoZW5kIiE9PWUudHlwZXx8KHIuY2xhc3NMaXN0LnJlbW92ZSgiYXBleGNoYXJ0cy1hY3RpdmUiKSxhLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyJiZ0aGlzLmxlZ2VuZExhYmVscy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmdldEF0dHJpYnV0ZSgiZGF0YTpkZWZhdWx0LXRleHQiKTt0LmlubmVySFRNTD1kZWNvZGVVUklDb21wb25lbnQoZSl9KSkpfX0se2tleToiaGFuZGxlU3RpY2t5VG9vbHRpcCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyl7dmFyIGE9dGhpcy53LG49dGhpcy50b29sdGlwVXRpbC5nZXROZWFyZXN0VmFsdWVzKHtjb250ZXh0OnRoaXMsaG92ZXJBcmVhOnMuaG92ZXJBcmVhLGVsR3JpZDpzLmVsR3JpZCxjbGllbnRYOmUsY2xpZW50WTppfSkscj1uLmosbz1uLmNhcHR1cmVkU2VyaWVzLGw9cy5lbEdyaWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bi5ob3Zlclg8MHx8bi5ob3Zlclg+bC53aWR0aD90aGlzLmhhbmRsZU1vdXNlT3V0KHMpOm51bGwhPT1vP3RoaXMuaGFuZGxlU3RpY2t5Q2FwdHVyZWRTZXJpZXModCxvLHMscik6KHRoaXMudG9vbHRpcFV0aWwuaXNYb3ZlcmxhcChyKXx8YS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCkmJnRoaXMuY3JlYXRlKHQsdGhpcywwLHIscy50dEl0ZW1zKX19LHtrZXk6ImhhbmRsZVN0aWNreUNhcHR1cmVkU2VyaWVzIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzKXt2YXIgYT10aGlzLnc7dGhpcy50Q29uZmlnLnNoYXJlZHx8bnVsbCE9PWEuZ2xvYmFscy5zZXJpZXNbZV1bc10/dm9pZCAwIT09YS5nbG9iYWxzLnNlcmllc1tlXVtzXT90aGlzLnRDb25maWcuc2hhcmVkJiZ0aGlzLnRvb2x0aXBVdGlsLmlzWG92ZXJsYXAocykmJnRoaXMudG9vbHRpcFV0aWwuaXNJbml0aWFsU2VyaWVzU2FtZUxlbigpP3RoaXMuY3JlYXRlKHQsdGhpcyxlLHMsaS50dEl0ZW1zKTp0aGlzLmNyZWF0ZSh0LHRoaXMsZSxzLGkudHRJdGVtcywhMSk6dGhpcy50b29sdGlwVXRpbC5pc1hvdmVybGFwKHMpJiZ0aGlzLmNyZWF0ZSh0LHRoaXMsMCxzLGkudHRJdGVtcyk6dGhpcy5oYW5kbGVNb3VzZU91dChpKX19LHtrZXk6ImRlYWN0aXZhdGVIb3ZlckZpbHRlciIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53LGU9bmV3IGsodGhpcy5jdHgpLGk9dC5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoIi5hcGV4Y2hhcnRzLWJhci1hcmVhIikscz0wO3M8aS5sZW5ndGg7cysrKWUucGF0aE1vdXNlTGVhdmUoaVtzXSl9fSx7a2V5OiJoYW5kbGVNb3VzZU91dCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dGhpcy5nZXRFbFhDcm9zc2hhaXJzKCk7aWYodC50b29sdGlwRWwuY2xhc3NMaXN0LnJlbW92ZSgiYXBleGNoYXJ0cy1hY3RpdmUiKSx0aGlzLmRlYWN0aXZhdGVIb3ZlckZpbHRlcigpLCJidWJibGUiIT09ZS5jb25maWcuY2hhcnQudHlwZSYmdGhpcy5tYXJrZXIucmVzZXRQb2ludHNTaXplKCksbnVsbCE9PWkmJmkuY2xhc3NMaXN0LnJlbW92ZSgiYXBleGNoYXJ0cy1hY3RpdmUiKSxudWxsIT09dGhpcy55Y3Jvc3NoYWlycyYmdGhpcy55Y3Jvc3NoYWlycy5jbGFzc0xpc3QucmVtb3ZlKCJhcGV4Y2hhcnRzLWFjdGl2ZSIpLHRoaXMuaXNYQXhpc1Rvb2x0aXBFbmFibGVkJiZ0aGlzLnhheGlzVG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKCJhcGV4Y2hhcnRzLWFjdGl2ZSIpLHRoaXMueWF4aXNUb29sdGlwcy5sZW5ndGgpe251bGw9PT10aGlzLnlheGlzVFRFbHMmJih0aGlzLnlheGlzVFRFbHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIikpO2Zvcih2YXIgcz0wO3M8dGhpcy55YXhpc1RURWxzLmxlbmd0aDtzKyspdGhpcy55YXhpc1RURWxzW3NdLmNsYXNzTGlzdC5yZW1vdmUoImFwZXhjaGFydHMtYWN0aXZlIil9ZS5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlciYmdGhpcy5sZWdlbmRMYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoImRhdGE6ZGVmYXVsdC10ZXh0Iik7dC5pbm5lckhUTUw9ZGVjb2RlVVJJQ29tcG9uZW50KGUpfSkpfX0se2tleToibWFya2VyQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLnc7ImZ1bmN0aW9uIj09dHlwZW9mIHMuY29uZmlnLmNoYXJ0LmV2ZW50cy5tYXJrZXJDbGljayYmcy5jb25maWcuY2hhcnQuZXZlbnRzLm1hcmtlckNsaWNrKHQsdGhpcy5jdHgse3Nlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx3OnN9KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KCJtYXJrZXJDbGljayIsW3QsdGhpcy5jdHgse3Nlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx3OnN9XSl9fSx7a2V5OiJjcmVhdGUiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMsYSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOm51bGwscj10aGlzLncsbz1lOyJtb3VzZXVwIj09PXQudHlwZSYmdGhpcy5tYXJrZXJDbGljayh0LGkscyksbnVsbD09PW4mJihuPXRoaXMudENvbmZpZy5zaGFyZWQpO3ZhciBsPXRoaXMudG9vbHRpcFV0aWwuaGFzTWFya2VycygpLGM9dGhpcy50b29sdGlwVXRpbC5nZXRFbEJhcnMoKTtpZihyLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKXt2YXIgaD1yLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyLGQ9QXJyYXkuZnJvbSh0aGlzLmxlZ2VuZExhYmVscyk7ZC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmdldEF0dHJpYnV0ZSgiZGF0YTpkZWZhdWx0LXRleHQiKTt0LmlubmVySFRNTD1kZWNvZGVVUklDb21wb25lbnQoZSl9KSk7Zm9yKHZhciB1PTA7dTxkLmxlbmd0aDt1Kyspe3ZhciBwPWRbdV0sZz1wYXJzZUludChwLmdldEF0dHJpYnV0ZSgiaSIpLDEwKSxmPWRlY29kZVVSSUNvbXBvbmVudChwLmdldEF0dHJpYnV0ZSgiZGF0YTpkZWZhdWx0LXRleHQiKSksbT1oKGYse3Nlcmllc0luZGV4Om4/ZzppLGRhdGFQb2ludEluZGV4OnMsdzpyfSk7aWYobilwLmlubmVySFRNTD1yLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGcpPDA/bTpmO2Vsc2UgaWYocC5pbm5lckhUTUw9Zz09PWk/bTpmLGk9PT1nKWJyZWFrfX1pZihuKXtpZihvLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHt0dEl0ZW1zOmEsaTppLGo6cyxzaGFyZWQ6IXRoaXMuc2hvd09uSW50ZXJzZWN0JiZ0aGlzLnRDb25maWcuc2hhcmVkfSksbCYmKHIuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplPjA/by5tYXJrZXIuZW5sYXJnZVBvaW50cyhzKTpvLnRvb2x0aXBQb3NpdGlvbi5tb3ZlRHluYW1pY1BvaW50c09uSG92ZXIocykpLHRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiYodGhpcy5iYXJTZXJpZXNIZWlnaHQ9dGhpcy50b29sdGlwVXRpbC5nZXRCYXJzSGVpZ2h0KGMpLHRoaXMuYmFyU2VyaWVzSGVpZ2h0PjApKXt2YXIgdj1uZXcgayh0aGlzLmN0eCkseD1yLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdCgiLmFwZXhjaGFydHMtYmFyLWFyZWFbaj0nIi5jb25jYXQocywiJ10iKSk7dGhpcy5kZWFjdGl2YXRlSG92ZXJGaWx0ZXIoKSx0aGlzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlU3RpY2t5VG9vbHRpcE92ZXJCYXJzKHMpO2Zvcih2YXIgYj0wO2I8eC5sZW5ndGg7YisrKXYucGF0aE1vdXNlRW50ZXIoeFtiXSl9fWVsc2Ugby50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7c2hhcmVkOiExLHR0SXRlbXM6YSxpOmksajpzfSksdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJm8udG9vbHRpcFBvc2l0aW9uLm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnMocyksbCYmby50b29sdGlwUG9zaXRpb24ubW92ZU1hcmtlcnMoaSxzKX19XSksdH0oKSx3dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5iYXJDdHg9ZSx0aGlzLnRvdGFsRm9ybWF0dGVyPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMudG90YWwuZm9ybWF0dGVyLHRoaXMudG90YWxGb3JtYXR0ZXJ8fCh0aGlzLnRvdGFsRm9ybWF0dGVyPXRoaXMudy5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXIpfXJldHVybiBjKHQsW3trZXk6ImhhbmRsZUJhckRhdGFMYWJlbHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQueCxpPXQueSxzPXQueTEsYT10LnkyLG49dC5pLHI9dC5qLG89dC5yZWFsSW5kZXgsbD10LnNlcmllcyxjPXQuYmFySGVpZ2h0LGg9dC5iYXJXaWR0aCxkPXQuYmFyWVBvc2l0aW9uLHU9dC52aXNpYmxlU2VyaWVzLHA9dC5yZW5kZXJlZFBhdGgsZz10aGlzLncsZj1uZXcgayh0aGlzLmJhckN0eC5jdHgpLG09QXJyYXkuaXNBcnJheSh0aGlzLmJhckN0eC5zdHJva2VXaWR0aCk/dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGhbb106dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGgsdj1lK3BhcnNlRmxvYXQoaCp1KSx4PWkrcGFyc2VGbG9hdChjKnUpO2cuZ2xvYmFscy5pc1hOdW1lcmljJiYhZy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHY9ZStwYXJzZUZsb2F0KGgqKHUrMSkpLHg9aStwYXJzZUZsb2F0KGMqKHUrMSkpLW0pO3ZhciBiLHksdz1udWxsLFM9ZSxDPWksQT1nLmNvbmZpZy5kYXRhTGFiZWxzLEU9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLFQ9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLnRvdGFsO3ZvaWQgMCE9PWQmJnRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXImJih4PWQsQz1kKTt2YXIgTD1BLm9mZnNldFgsUD1BLm9mZnNldFksTT17d2lkdGg6MCxoZWlnaHQ6MH07aWYoZy5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkKXt2YXIgTz10aGlzLmJhckN0eC5zZXJpZXNbbl1bcl07TT1mLmdldFRleHRSZWN0cyhnLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXShPKSxwYXJzZUZsb2F0KEEuc3R5bGUuZm9udFNpemUpKX12YXIgST17eDplLHk6aSxpOm4sajpyLHJlYWxJbmRleDpvLHJlbmRlcmVkUGF0aDpwLGJjeDp2LGJjeTp4LGJhckhlaWdodDpjLGJhcldpZHRoOmgsdGV4dFJlY3RzOk0sc3Ryb2tlV2lkdGg6bSxkYXRhTGFiZWxzWDpTLGRhdGFMYWJlbHNZOkMsZGF0YUxhYmVsc0NvbmZpZzpBLGJhckRhdGFMYWJlbHNDb25maWc6RSxiYXJUb3RhbERhdGFMYWJlbHNDb25maWc6VCxvZmZYOkwsb2ZmWTpQfTtyZXR1cm4geT10aGlzLmJhckN0eC5pc0hvcml6b250YWw/dGhpcy5jYWxjdWxhdGVCYXJzRGF0YUxhYmVsc1Bvc2l0aW9uKEkpOnRoaXMuY2FsY3VsYXRlQ29sdW1uc0RhdGFMYWJlbHNQb3NpdGlvbihJKSxwLmF0dHIoe2N5OnkuYmN5LGN4OnkuYmN4LGo6cix2YWw6bFtuXVtyXSxiYXJIZWlnaHQ6YyxiYXJXaWR0aDpofSksYj10aGlzLmRyYXdDYWxjdWxhdGVkRGF0YUxhYmVscyh7eDp5LmRhdGFMYWJlbHNYLHk6eS5kYXRhTGFiZWxzWSx2YWw6dGhpcy5iYXJDdHguaXNSYW5nZUJhcj9bcyxhXTpsW25dW3JdLGk6byxqOnIsYmFyV2lkdGg6aCxiYXJIZWlnaHQ6Yyx0ZXh0UmVjdHM6TSxkYXRhTGFiZWxzQ29uZmlnOkF9KSxnLmNvbmZpZy5jaGFydC5zdGFja2VkJiZULmVuYWJsZWQmJih3PXRoaXMuZHJhd1RvdGFsRGF0YUxhYmVscyh7eDp5LnRvdGFsRGF0YUxhYmVsc1gseTp5LnRvdGFsRGF0YUxhYmVsc1kscmVhbEluZGV4Om8sdGV4dEFuY2hvcjp5LnRvdGFsRGF0YUxhYmVsc0FuY2hvcix2YWw6dGhpcy5nZXRTdGFja2VkVG90YWxEYXRhTGFiZWwoe3JlYWxJbmRleDpvLGo6cn0pLGRhdGFMYWJlbHNDb25maWc6QSxiYXJUb3RhbERhdGFMYWJlbHNDb25maWc6VH0pKSx7ZGF0YUxhYmVsczpiLHRvdGFsRGF0YUxhYmVsczp3fX19LHtrZXk6ImdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5yZWFsSW5kZXgsaT10Lmoscz10aGlzLncsYT10aGlzLmJhckN0eC5zdGFja2VkU2VyaWVzVG90YWxzW2ldO3JldHVybiB0aGlzLnRvdGFsRm9ybWF0dGVyJiYoYT10aGlzLnRvdGFsRm9ybWF0dGVyKGEsbihuKHt9LHMpLHt9LHtzZXJpZXNJbmRleDplLGRhdGFQb2ludEluZGV4OmksdzpzfSkpKSxhfX0se2tleToiY2FsY3VsYXRlQ29sdW1uc0RhdGFMYWJlbHNQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxzLGE9dGhpcy53LG49dC5pLHI9dC5qLG89dC5yZWFsSW5kZXgsbD10LnksYz10LmJjeCxoPXQuYmFyV2lkdGgsZD10LmJhckhlaWdodCx1PXQudGV4dFJlY3RzLHA9dC5kYXRhTGFiZWxzWSxnPXQuZGF0YUxhYmVsc0NvbmZpZyxmPXQuYmFyRGF0YUxhYmVsc0NvbmZpZyxtPXQuYmFyVG90YWxEYXRhTGFiZWxzQ29uZmlnLHY9dC5zdHJva2VXaWR0aCx4PXQub2ZmWCxiPXQub2ZmWTtkPU1hdGguYWJzKGQpO3ZhciB5PSJ2ZXJ0aWNhbCI9PT1hLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5vcmllbnRhdGlvbjtjLT12LzI7dmFyIHc9YS5nbG9iYWxzLmdyaWRXaWR0aC9hLmdsb2JhbHMuZGF0YVBvaW50cztlPWEuZ2xvYmFscy5pc1hOdW1lcmljP2MtaC8yK3g6Yy13K2gvMit4LHkmJihlPWUrdS5oZWlnaHQvMi12LzItMik7dmFyIFM9dGhpcy5iYXJDdHguc2VyaWVzW25dW3JdPDAsQz1sO3N3aXRjaCh0aGlzLmJhckN0eC5pc1JldmVyc2VkJiYoQz1sLWQrKFM/MipkOjApLGwtPWQpLGYucG9zaXRpb24pe2Nhc2UiY2VudGVyIjpwPXk/Uz9DK2QvMitiOkMrZC8yLWI6Uz9DLWQvMit1LmhlaWdodC8yK2I6QytkLzIrdS5oZWlnaHQvMi1iO2JyZWFrO2Nhc2UiYm90dG9tIjpwPXk/Uz9DK2QrYjpDK2QtYjpTP0MtZCt1LmhlaWdodCt2K2I6QytkLXUuaGVpZ2h0LzIrdi1iO2JyZWFrO2Nhc2UidG9wIjpwPXk/Uz9DK2I6Qy1iOlM/Qy11LmhlaWdodC8yLWI6Qyt1LmhlaWdodCtifWlmKHRoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09byYmbS5lbmFibGVkKXt2YXIgQT1uZXcgayh0aGlzLmJhckN0eC5jdHgpLmdldFRleHRSZWN0cyh0aGlzLmdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCh7cmVhbEluZGV4Om8sajpyfSksZy5mb250U2l6ZSk7aT1TP0MtQS5oZWlnaHQvMi1iLW0ub2Zmc2V0WSsxODpDK0EuaGVpZ2h0K2IrbS5vZmZzZXRZLTE4LHM9ZSttLm9mZnNldFh9cmV0dXJuIGEuY29uZmlnLmNoYXJ0LnN0YWNrZWR8fChwPDA/cD0wK3Y6cCt1LmhlaWdodC8zPmEuZ2xvYmFscy5ncmlkSGVpZ2h0JiYocD1hLmdsb2JhbHMuZ3JpZEhlaWdodC12KSkse2JjeDpjLGJjeTpsLGRhdGFMYWJlbHNYOmUsZGF0YUxhYmVsc1k6cCx0b3RhbERhdGFMYWJlbHNYOnMsdG90YWxEYXRhTGFiZWxzWTppLHRvdGFsRGF0YUxhYmVsc0FuY2hvcjoibWlkZGxlIn19fSx7a2V5OiJjYWxjdWxhdGVCYXJzRGF0YUxhYmVsc1Bvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10Lngscz10LmksYT10Lmosbj10LnJlYWxJbmRleCxyPXQuYmN5LG89dC5iYXJIZWlnaHQsbD10LmJhcldpZHRoLGM9dC50ZXh0UmVjdHMsaD10LmRhdGFMYWJlbHNYLGQ9dC5zdHJva2VXaWR0aCx1PXQuZGF0YUxhYmVsc0NvbmZpZyxwPXQuYmFyRGF0YUxhYmVsc0NvbmZpZyxnPXQuYmFyVG90YWxEYXRhTGFiZWxzQ29uZmlnLGY9dC5vZmZYLG09dC5vZmZZLHY9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLmRhdGFQb2ludHM7bD1NYXRoLmFicyhsKTt2YXIgeCxiLHk9ci0odGhpcy5iYXJDdHguaXNSYW5nZUJhcj8wOnYpK28vMitjLmhlaWdodC8yK20tMyx3PSJzdGFydCIsUz10aGlzLmJhckN0eC5zZXJpZXNbc11bYV08MCxDPWk7c3dpdGNoKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQmJihDPWkrbC0oUz8yKmw6MCksaT1lLmdsb2JhbHMuZ3JpZFdpZHRoLWwpLHAucG9zaXRpb24pe2Nhc2UiY2VudGVyIjpoPVM/QytsLzItZjpNYXRoLm1heChjLndpZHRoLzIsQy1sLzIpK2Y7YnJlYWs7Y2FzZSJib3R0b20iOmg9Uz9DK2wtZC1NYXRoLnJvdW5kKGMud2lkdGgvMiktZjpDLWwrZCtNYXRoLnJvdW5kKGMud2lkdGgvMikrZjticmVhaztjYXNlInRvcCI6aD1TP0MtZCtNYXRoLnJvdW5kKGMud2lkdGgvMiktZjpDLWQtTWF0aC5yb3VuZChjLndpZHRoLzIpK2Z9aWYodGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT1uJiZnLmVuYWJsZWQpe3ZhciBBPW5ldyBrKHRoaXMuYmFyQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKHRoaXMuZ2V0U3RhY2tlZFRvdGFsRGF0YUxhYmVsKHtyZWFsSW5kZXg6bixqOmF9KSx1LmZvbnRTaXplKTtTPyh4PUMtZCtNYXRoLnJvdW5kKEEud2lkdGgvMiktZi1nLm9mZnNldFgtMTUsdz0iZW5kIik6eD1DLWQtTWF0aC5yb3VuZChBLndpZHRoLzIpK2YrZy5vZmZzZXRYKzE1LGI9eStnLm9mZnNldFl9cmV0dXJuIGUuY29uZmlnLmNoYXJ0LnN0YWNrZWR8fChoPDA/aD1oK2Mud2lkdGgrZDpoK2Mud2lkdGgvMj5lLmdsb2JhbHMuZ3JpZFdpZHRoJiYoaD1lLmdsb2JhbHMuZ3JpZFdpZHRoLWMud2lkdGgtZCkpLHtiY3g6aSxiY3k6cixkYXRhTGFiZWxzWDpoLGRhdGFMYWJlbHNZOnksdG90YWxEYXRhTGFiZWxzWDp4LHRvdGFsRGF0YUxhYmVsc1k6Yix0b3RhbERhdGFMYWJlbHNBbmNob3I6d319fSx7a2V5OiJkcmF3Q2FsY3VsYXRlZERhdGFMYWJlbHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQueCxpPXQueSxzPXQudmFsLGE9dC5pLHI9dC5qLG89dC50ZXh0UmVjdHMsbD10LmJhckhlaWdodCxjPXQuYmFyV2lkdGgsaD10LmRhdGFMYWJlbHNDb25maWcsZD10aGlzLncsdT0icm90YXRlKDApIjsidmVydGljYWwiPT09ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMub3JpZW50YXRpb24mJih1PSJyb3RhdGUoLTkwLCAiLmNvbmNhdChlLCIsICIpLmNvbmNhdChpLCIpIikpO3ZhciBwPW5ldyBIKHRoaXMuYmFyQ3R4LmN0eCksZz1uZXcgayh0aGlzLmJhckN0eC5jdHgpLGY9aC5mb3JtYXR0ZXIsbT1udWxsLHY9ZC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihhKT4tMTtpZihoLmVuYWJsZWQmJiF2KXttPWcuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzIix0cmFuc2Zvcm06dX0pO3ZhciB4PSIiO3ZvaWQgMCE9PXMmJih4PWYocyxuKG4oe30sZCkse30se3Nlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6cix3OmR9KSkpO3ZhciBiPWQuZ2xvYmFscy5zZXJpZXNbYV1bcl08MCx5PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLnBvc2l0aW9uOyJ2ZXJ0aWNhbCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5vcmllbnRhdGlvbiYmKCJ0b3AiPT09eSYmKGgudGV4dEFuY2hvcj1iPyJlbmQiOiJzdGFydCIpLCJjZW50ZXIiPT09eSYmKGgudGV4dEFuY2hvcj0ibWlkZGxlIiksImJvdHRvbSI9PT15JiYoaC50ZXh0QW5jaG9yPWI/ImVuZCI6InN0YXJ0IikpLHRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXImJnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGF0YUxhYmVscy5oaWRlT3ZlcmZsb3dpbmdMYWJlbHMmJmM8Zy5nZXRUZXh0UmVjdHMoeCxwYXJzZUZsb2F0KGguc3R5bGUuZm9udFNpemUpKS53aWR0aCYmKHg9IiIpLGQuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGF0YUxhYmVscy5oaWRlT3ZlcmZsb3dpbmdMYWJlbHMmJih0aGlzLmJhckN0eC5pc0hvcml6b250YWw/by53aWR0aC8xLjY+TWF0aC5hYnMoYykmJih4PSIiKTpvLmhlaWdodC8xLjY+TWF0aC5hYnMobCkmJih4PSIiKSk7dmFyIHc9bih7fSxoKTt0aGlzLmJhckN0eC5pc0hvcml6b250YWwmJnM8MCYmKCJzdGFydCI9PT1oLnRleHRBbmNob3I/dy50ZXh0QW5jaG9yPSJlbmQiOiJlbmQiPT09aC50ZXh0QW5jaG9yJiYody50ZXh0QW5jaG9yPSJzdGFydCIpKSxwLnBsb3REYXRhTGFiZWxzVGV4dCh7eDplLHk6aSx0ZXh0OngsaTphLGo6cixwYXJlbnQ6bSxkYXRhTGFiZWxzQ29uZmlnOncsYWx3YXlzRHJhd0RhdGFMYWJlbDohMCxvZmZzZXRDb3JyZWN0aW9uOiEwfSl9cmV0dXJuIG19fSx7a2V5OiJkcmF3VG90YWxEYXRhTGFiZWxzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQueCxzPXQueSxhPXQudmFsLG49dC5yZWFsSW5kZXgscj10LnRleHRBbmNob3Isbz10LmJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZyxsPW5ldyBrKHRoaXMuYmFyQ3R4LmN0eCk7cmV0dXJuIG8uZW5hYmxlZCYmdm9pZCAwIT09aSYmdm9pZCAwIT09cyYmdGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT1uJiYoZT1sLmRyYXdUZXh0KHt4OmkseTpzLGZvcmVDb2xvcjpvLnN0eWxlLmNvbG9yLHRleHQ6YSx0ZXh0QW5jaG9yOnIsZm9udEZhbWlseTpvLnN0eWxlLmZvbnRGYW1pbHksZm9udFNpemU6by5zdHlsZS5mb250U2l6ZSxmb250V2VpZ2h0Om8uc3R5bGUuZm9udFdlaWdodH0pKSxlfX1dKSx0fSgpLGt0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmJhckN0eD1lfXJldHVybiBjKHQsW3trZXk6ImluaXRWYXJpYWJsZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt0aGlzLmJhckN0eC5zZXJpZXM9dCx0aGlzLmJhckN0eC50b3RhbEl0ZW1zPTAsdGhpcy5iYXJDdHguc2VyaWVzTGVuPTAsdGhpcy5iYXJDdHgudmlzaWJsZUk9LTEsdGhpcy5iYXJDdHgudmlzaWJsZUl0ZW1zPTE7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspaWYodFtpXS5sZW5ndGg+MCYmKHRoaXMuYmFyQ3R4LnNlcmllc0xlbj10aGlzLmJhckN0eC5zZXJpZXNMZW4rMSx0aGlzLmJhckN0eC50b3RhbEl0ZW1zKz10W2ldLmxlbmd0aCksZS5nbG9iYWxzLmlzWE51bWVyaWMpZm9yKHZhciBzPTA7czx0W2ldLmxlbmd0aDtzKyspZS5nbG9iYWxzLnNlcmllc1hbaV1bc10+ZS5nbG9iYWxzLm1pblgmJmUuZ2xvYmFscy5zZXJpZXNYW2ldW3NdPGUuZ2xvYmFscy5tYXhYJiZ0aGlzLmJhckN0eC52aXNpYmxlSXRlbXMrKztlbHNlIHRoaXMuYmFyQ3R4LnZpc2libGVJdGVtcz1lLmdsb2JhbHMuZGF0YVBvaW50czswPT09dGhpcy5iYXJDdHguc2VyaWVzTGVuJiYodGhpcy5iYXJDdHguc2VyaWVzTGVuPTEpLHRoaXMuYmFyQ3R4Lnplcm9TZXJpZXNlcz1bXSx0aGlzLmJhckN0eC5yYWRpdXNPblNlcmllc051bWJlcj10Lmxlbmd0aC0xLGUuZ2xvYmFscy5jb21ib0NoYXJ0c3x8dGhpcy5jaGVja1plcm9TZXJpZXMoe3Nlcmllczp0fSl9fSx7a2V5OiJpbml0aWFsUG9zaXRpb25zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGUsaSxzLGEsbixyLG8sbD10aGlzLncsYz1sLmdsb2JhbHMuZGF0YVBvaW50czt0aGlzLmJhckN0eC5pc1JhbmdlQmFyJiYoYz1sLmdsb2JhbHMubGFiZWxzLmxlbmd0aCk7dmFyIGg9dGhpcy5iYXJDdHguc2VyaWVzTGVuO2lmKGwuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93cyYmKGg9MSksdGhpcy5iYXJDdHguaXNIb3Jpem9udGFsKWE9KGk9bC5nbG9iYWxzLmdyaWRIZWlnaHQvYykvaCxsLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGE9KGk9bC5nbG9iYWxzLmdyaWRIZWlnaHQvdGhpcy5iYXJDdHgudG90YWxJdGVtcykvdGhpcy5iYXJDdHguc2VyaWVzTGVuKSxhPWEqcGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5iYXJIZWlnaHQsMTApLzEwMCxvPXRoaXMuYmFyQ3R4LmJhc2VMaW5lSW52ZXJ0ZWRZK2wuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyh0aGlzLmJhckN0eC5pc1JldmVyc2VkP2wuZ2xvYmFscy5ncmlkV2lkdGg6MCktKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/Mip0aGlzLmJhckN0eC5iYXNlTGluZUludmVydGVkWTowKSxlPShpLWEqdGhpcy5iYXJDdHguc2VyaWVzTGVuKS8yO2Vsc2V7aWYocz1sLmdsb2JhbHMuZ3JpZFdpZHRoL3RoaXMuYmFyQ3R4LnZpc2libGVJdGVtcyxsLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihzPWwuZ2xvYmFscy5ncmlkV2lkdGgvbC5nbG9iYWxzLmRhdGFQb2ludHMpLG49cy90aGlzLmJhckN0eC5zZXJpZXNMZW4qcGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCwxMCkvMTAwLGwuZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgZD10aGlzLmJhckN0eC54UmF0aW87bC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoZD10aGlzLmJhckN0eC5pbml0aWFsWFJhdGlvKSxsLmdsb2JhbHMubWluWERpZmYmJi41IT09bC5nbG9iYWxzLm1pblhEaWZmJiZsLmdsb2JhbHMubWluWERpZmYvZD4wJiYocz1sLmdsb2JhbHMubWluWERpZmYvZCksKG49cy90aGlzLmJhckN0eC5zZXJpZXNMZW4qcGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCwxMCkvMTAwKTwxJiYobj0xKX1yPWwuZ2xvYmFscy5ncmlkSGVpZ2h0LXRoaXMuYmFyQ3R4LmJhc2VMaW5lWVt0aGlzLmJhckN0eC55YXhpc0luZGV4XS0odGhpcy5iYXJDdHguaXNSZXZlcnNlZD9sLmdsb2JhbHMuZ3JpZEhlaWdodDowKSsodGhpcy5iYXJDdHguaXNSZXZlcnNlZD8yKnRoaXMuYmFyQ3R4LmJhc2VMaW5lWVt0aGlzLmJhckN0eC55YXhpc0luZGV4XTowKSx0PWwuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyhzLW4qdGhpcy5iYXJDdHguc2VyaWVzTGVuKS8yfXJldHVybnt4OnQseTplLHlEaXZpc2lvbjppLHhEaXZpc2lvbjpzLGJhckhlaWdodDphLGJhcldpZHRoOm4semVyb0g6cix6ZXJvVzpvfX19LHtrZXk6ImdldFBhdGhGaWxsQ29sb3IiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhLG4scixvLGw9dGhpcy53LGM9bmV3IF8odGhpcy5iYXJDdHguY3R4KSxoPW51bGwsZD10aGlzLmJhckN0eC5iYXJPcHRpb25zLmRpc3RyaWJ1dGVkP2k6ZTtyZXR1cm4gdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMucmFuZ2VzLmxlbmd0aD4wJiZ0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5yYW5nZXMubWFwKChmdW5jdGlvbihzKXt0W2VdW2ldPj1zLmZyb20mJnRbZV1baV08PXMudG8mJihoPXMuY29sb3IpfSkpLGwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldJiZsLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXS5maWxsQ29sb3ImJihoPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLmZpbGxDb2xvciksYy5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQ/ZDpzLGRhdGFQb2ludEluZGV4OmksY29sb3I6aCx2YWx1ZTp0W2VdW2ldLGZpbGxDb25maWc6bnVsbD09PShhPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldKXx8dm9pZCAwPT09YT92b2lkIDA6YS5maWxsLGZpbGxUeXBlOm51bGwhPT0obj1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXSkmJnZvaWQgMCE9PW4mJm51bGwhPT0ocj1uLmZpbGwpJiZ2b2lkIDAhPT1yJiZyLnR5cGU/bnVsbD09PShvPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldKXx8dm9pZCAwPT09bz92b2lkIDA6by5maWxsLnR5cGU6bC5jb25maWcuZmlsbC50eXBlfSl9fSx7a2V5OiJnZXRTdHJva2VXaWR0aCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPTAsYT10aGlzLnc7cmV0dXJuIHZvaWQgMD09PXRoaXMuYmFyQ3R4LnNlcmllc1t0XVtlXXx8bnVsbD09PXRoaXMuYmFyQ3R4LnNlcmllc1t0XVtlXT90aGlzLmJhckN0eC5pc051bGxWYWx1ZT0hMDp0aGlzLmJhckN0eC5pc051bGxWYWx1ZT0hMSxhLmNvbmZpZy5zdHJva2Uuc2hvdyYmKHRoaXMuYmFyQ3R4LmlzTnVsbFZhbHVlfHwocz1BcnJheS5pc0FycmF5KHRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoKT90aGlzLmJhckN0eC5zdHJva2VXaWR0aFtpXTp0aGlzLmJhckN0eC5zdHJva2VXaWR0aCkpLHN9fSx7a2V5OiJzaG91bGRBcHBseVJhZGl1cyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ITE7cmV0dXJuIGUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXM+MCYmKGUuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJiJsYXN0Ij09PWUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNXaGVuU3RhY2tlZD90aGlzLmJhckN0eC5sYXN0QWN0aXZlQmFyU2VyaWVJbmRleD09PXQmJihpPSEwKTppPSEwKSxpfX0se2tleToiYmFyQmFja2dyb3VuZCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5qLGk9dC5pLHM9dC54MSxhPXQueDIsbj10LnkxLHI9dC55MixvPXQuZWxTZXJpZXMsbD10aGlzLncsYz1uZXcgayh0aGlzLmJhckN0eC5jdHgpLGg9bmV3IFkodGhpcy5iYXJDdHguY3R4KS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpO2lmKHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoPjAmJmg9PT1pKXtlPj10aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzLmxlbmd0aCYmKGUlPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoKTt2YXIgZD10aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzW2VdLHU9Yy5kcmF3UmVjdCh2b2lkIDAhPT1zP3M6MCx2b2lkIDAhPT1uP246MCx2b2lkIDAhPT1hP2E6bC5nbG9iYWxzLmdyaWRXaWR0aCx2b2lkIDAhPT1yP3I6bC5nbG9iYWxzLmdyaWRIZWlnaHQsdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhclJhZGl1cyxkLHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJPcGFjaXR5KTtvLmFkZCh1KSx1Lm5vZGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1iYWNrZ3JvdW5kQmFyIil9fX0se2tleToiZ2V0Q29sdW1uUGF0aHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5iYXJXaWR0aCxzPXQuYmFyWFBvc2l0aW9uLGE9dC55MSxuPXQueTIscj10LnN0cm9rZVdpZHRoLG89dC5yZWFsSW5kZXgsbD10LmksYz10LmosaD10LncsZD1uZXcgayh0aGlzLmJhckN0eC5jdHgpOyhyPUFycmF5LmlzQXJyYXkocik/cltvXTpyKXx8KHI9MCk7dmFyIHU9aSxwPXM7bnVsbCE9PShlPWguY29uZmlnLnNlcmllc1tvXS5kYXRhW2NdKSYmdm9pZCAwIT09ZSYmZS5jb2x1bW5XaWR0aE9mZnNldCYmKHA9cy1oLmNvbmZpZy5zZXJpZXNbb10uZGF0YVtjXS5jb2x1bW5XaWR0aE9mZnNldC8yLHU9aStoLmNvbmZpZy5zZXJpZXNbb10uZGF0YVtjXS5jb2x1bW5XaWR0aE9mZnNldCk7dmFyIGc9cCxmPXArdTthKz0uMDAxLG4rPS4wMDE7dmFyIG09ZC5tb3ZlKGcsYSksdj1kLm1vdmUoZyxhKSx4PWQubGluZShmLXIsYSk7cmV0dXJuIGguZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYodj10aGlzLmJhckN0eC5nZXRQcmV2aW91c1BhdGgobyxjLCExKSksbT1tK2QubGluZShnLG4pK2QubGluZShmLXIsbikrZC5saW5lKGYtcixhKSsoImFyb3VuZCI9PT1oLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb24/IiBaIjoiIHoiKSx2PXYrZC5saW5lKGcsYSkreCt4K3greCt4K2QubGluZShnLGEpKygiYXJvdW5kIj09PWguY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj8iIFoiOiIgeiIpLHRoaXMuc2hvdWxkQXBwbHlSYWRpdXMobykmJihtPWQucm91bmRQYXRoQ29ybmVycyhtLGguY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXMpKSxoLmNvbmZpZy5jaGFydC5zdGFja2VkJiYodGhpcy5iYXJDdHgueUFycmoucHVzaChuKSx0aGlzLmJhckN0eC55QXJyakYucHVzaChNYXRoLmFicyhhLW4pKSx0aGlzLmJhckN0eC55QXJyalZhbC5wdXNoKHRoaXMuYmFyQ3R4LnNlcmllc1tsXVtjXSkpLHtwYXRoVG86bSxwYXRoRnJvbTp2fX19LHtrZXk6ImdldEJhcnBhdGhzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuYmFyWVBvc2l0aW9uLHM9dC5iYXJIZWlnaHQsYT10LngxLG49dC54MixyPXQuc3Ryb2tlV2lkdGgsbz10LnJlYWxJbmRleCxsPXQuaSxjPXQuaixoPXQudyxkPW5ldyBrKHRoaXMuYmFyQ3R4LmN0eCk7KHI9QXJyYXkuaXNBcnJheShyKT9yW29dOnIpfHwocj0wKTt2YXIgdT1pLHA9cztudWxsIT09KGU9aC5jb25maWcuc2VyaWVzW29dLmRhdGFbY10pJiZ2b2lkIDAhPT1lJiZlLmJhckhlaWdodE9mZnNldCYmKHU9aS1oLmNvbmZpZy5zZXJpZXNbb10uZGF0YVtjXS5iYXJIZWlnaHRPZmZzZXQvMixwPXMraC5jb25maWcuc2VyaWVzW29dLmRhdGFbY10uYmFySGVpZ2h0T2Zmc2V0KTt2YXIgZz11LGY9dStwO2ErPS4wMDEsbis9LjAwMTt2YXIgbT1kLm1vdmUoYSxnKSx2PWQubW92ZShhLGcpO2guZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYodj10aGlzLmJhckN0eC5nZXRQcmV2aW91c1BhdGgobyxjLCExKSk7dmFyIHg9ZC5saW5lKGEsZi1yKTtyZXR1cm4gbT1tK2QubGluZShuLGcpK2QubGluZShuLGYtcikreCsoImFyb3VuZCI9PT1oLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb24/IiBaIjoiIHoiKSx2PXYrZC5saW5lKGEsZykreCt4K3greCt4K2QubGluZShhLGcpKygiYXJvdW5kIj09PWguY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj8iIFoiOiIgeiIpLHRoaXMuc2hvdWxkQXBwbHlSYWRpdXMobykmJihtPWQucm91bmRQYXRoQ29ybmVycyhtLGguY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXMpKSxoLmNvbmZpZy5jaGFydC5zdGFja2VkJiYodGhpcy5iYXJDdHgueEFycmoucHVzaChuKSx0aGlzLmJhckN0eC54QXJyakYucHVzaChNYXRoLmFicyhhLW4pKSx0aGlzLmJhckN0eC54QXJyalZhbC5wdXNoKHRoaXMuYmFyQ3R4LnNlcmllc1tsXVtjXSkpLHtwYXRoVG86bSxwYXRoRnJvbTp2fX19LHtrZXk6ImNoZWNrWmVyb1NlcmllcyIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuc2VyaWVzLGk9dGhpcy53LHM9MDtzPGUubGVuZ3RoO3MrKyl7Zm9yKHZhciBhPTAsbj0wO248ZVtpLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO24rKylhKz1lW3NdW25dOzA9PT1hJiZ0aGlzLmJhckN0eC56ZXJvU2VyaWVzZXMucHVzaChzKX1mb3IodmFyIHI9ZS5sZW5ndGgtMTtyPj0wO3ItLSl0aGlzLmJhckN0eC56ZXJvU2VyaWVzZXMuaW5kZXhPZihyKT4tMSYmcj09PXRoaXMucmFkaXVzT25TZXJpZXNOdW1iZXImJih0aGlzLmJhckN0eC5yYWRpdXNPblNlcmllc051bWJlci09MSk7Zm9yKHZhciBvPWUubGVuZ3RoLTE7bz49MDtvLS0paS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZih0aGlzLmJhckN0eC5yYWRpdXNPblNlcmllc051bWJlcik+LTEmJih0aGlzLmJhckN0eC5yYWRpdXNPblNlcmllc051bWJlci09MSl9fSx7a2V5OiJnZXRYRm9yVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxzPWk/ZTpudWxsO3JldHVybiBudWxsIT10JiYocz1lK3QvdGhpcy5iYXJDdHguaW52ZXJ0ZWRZUmF0aW8tMioodGhpcy5iYXJDdHguaXNSZXZlcnNlZD90L3RoaXMuYmFyQ3R4LmludmVydGVkWVJhdGlvOjApKSxzfX0se2tleToiZ2V0WUZvclZhbHVlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0scz1pP2U6bnVsbDtyZXR1cm4gbnVsbCE9dCYmKHM9ZS10L3RoaXMuYmFyQ3R4LnlSYXRpb1t0aGlzLmJhckN0eC55YXhpc0luZGV4XSsyKih0aGlzLmJhckN0eC5pc1JldmVyc2VkP3QvdGhpcy5iYXJDdHgueVJhdGlvW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdOjApKSxzfX0se2tleToiZ2V0R29hbFZhbHVlcyIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyxhKXt2YXIgbj10aGlzLHI9dGhpcy53LG89W107cmV0dXJuIHIuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXSYmci5nbG9iYWxzLnNlcmllc0dvYWxzW3NdW2FdJiZBcnJheS5pc0FycmF5KHIuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVthXSkmJnIuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVthXS5mb3JFYWNoKChmdW5jdGlvbihzKXt2YXIgYTtvLnB1c2goKGgoYT17fSx0LCJ4Ij09PXQ/bi5nZXRYRm9yVmFsdWUocy52YWx1ZSxlLCExKTpuLmdldFlGb3JWYWx1ZShzLnZhbHVlLGksITEpKSxoKGEsImF0dHJzIixzKSxhKSl9KSksb319LHtrZXk6ImRyYXdHb2FsTGluZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5iYXJYUG9zaXRpb24saT10LmJhcllQb3NpdGlvbixzPXQuZ29hbFgsYT10LmdvYWxZLG49dC5iYXJXaWR0aCxyPXQuYmFySGVpZ2h0LG89bmV3IGsodGhpcy5iYXJDdHguY3R4KSxsPW8uZ3JvdXAoe2NsYXNzTmFtZToiYXBleGNoYXJ0cy1iYXItZ29hbHMtZ3JvdXBzIn0pLGM9bnVsbDtyZXR1cm4gdGhpcy5iYXJDdHguaXNIb3Jpem9udGFsP0FycmF5LmlzQXJyYXkocykmJnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwIT09dC5hdHRycy5zdHJva2VIZWlnaHQ/dC5hdHRycy5zdHJva2VIZWlnaHQ6ci8yLHM9aStlK3IvMjtjPW8uZHJhd0xpbmUodC54LHMtMiplLHQueCxzLHQuYXR0cnMuc3Ryb2tlQ29sb3I/dC5hdHRycy5zdHJva2VDb2xvcjp2b2lkIDAsdC5hdHRycy5zdHJva2VEYXNoQXJyYXksdC5hdHRycy5zdHJva2VXaWR0aD90LmF0dHJzLnN0cm9rZVdpZHRoOjIsdC5hdHRycy5zdHJva2VMaW5lQ2FwKSxsLmFkZChjKX0pKTpBcnJheS5pc0FycmF5KGEpJiZhLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBpPXZvaWQgMCE9PXQuYXR0cnMuc3Ryb2tlV2lkdGg/dC5hdHRycy5zdHJva2VXaWR0aDpuLzIscz1lK2krbi8yO2M9by5kcmF3TGluZShzLTIqaSx0Lnkscyx0LnksdC5hdHRycy5zdHJva2VDb2xvcj90LmF0dHJzLnN0cm9rZUNvbG9yOnZvaWQgMCx0LmF0dHJzLnN0cm9rZURhc2hBcnJheSx0LmF0dHJzLnN0cm9rZUhlaWdodD90LmF0dHJzLnN0cm9rZUhlaWdodDoyLHQuYXR0cnMuc3Ryb2tlTGluZUNhcCksbC5hZGQoYyl9KSksbH19XSksdH0oKSxTdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBzPXRoaXMudzt0aGlzLmJhck9wdGlvbnM9cy5jb25maWcucGxvdE9wdGlvbnMuYmFyLHRoaXMuaXNIb3Jpem9udGFsPXRoaXMuYmFyT3B0aW9ucy5ob3Jpem9udGFsLHRoaXMuc3Ryb2tlV2lkdGg9cy5jb25maWcuc3Ryb2tlLndpZHRoLHRoaXMuaXNOdWxsVmFsdWU9ITEsdGhpcy5pc1JhbmdlQmFyPXMuZ2xvYmFscy5zZXJpZXNSYW5nZS5sZW5ndGgmJnRoaXMuaXNIb3Jpem9udGFsLHRoaXMueHlSYXRpb3M9aSxudWxsIT09dGhpcy54eVJhdGlvcyYmKHRoaXMueFJhdGlvPWkueFJhdGlvLHRoaXMuaW5pdGlhbFhSYXRpbz1pLmluaXRpYWxYUmF0aW8sdGhpcy55UmF0aW89aS55UmF0aW8sdGhpcy5pbnZlcnRlZFhSYXRpbz1pLmludmVydGVkWFJhdGlvLHRoaXMuaW52ZXJ0ZWRZUmF0aW89aS5pbnZlcnRlZFlSYXRpbyx0aGlzLmJhc2VMaW5lWT1pLmJhc2VMaW5lWSx0aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZPWkuYmFzZUxpbmVJbnZlcnRlZFkpLHRoaXMueWF4aXNJbmRleD0wLHRoaXMuc2VyaWVzTGVuPTA7dmFyIGE9bmV3IFkodGhpcy5jdHgpO3RoaXMubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9YS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgiZGVzYyIsWyJiYXIiLCJjb2x1bW4iXSk7dmFyIG49YS5nZXRCYXJTZXJpZXNJbmRpY2VzKCkscj1uZXcgUyh0aGlzLmN0eCk7dGhpcy5zdGFja2VkU2VyaWVzVG90YWxzPXIuZ2V0U3RhY2tlZFNlcmllc1RvdGFscyh0aGlzLncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuLTE9PT1uLmluZGV4T2YoZSk/ZTotMX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybi0xIT09dH0pKSksdGhpcy5iYXJIZWxwZXJzPW5ldyBrdCh0aGlzKX1yZXR1cm4gYyh0LFt7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPW5ldyBrKHRoaXMuY3R4KSxhPW5ldyBTKHRoaXMuY3R4LGkpO3Q9YS5nZXRMb2dTZXJpZXModCksdGhpcy5zZXJpZXM9dCx0aGlzLnlSYXRpbz1hLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKHQpO3ZhciByPXMuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLWJhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllcyJ9KTtpLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWQmJnRoaXMudG90YWxJdGVtcz50aGlzLmJhck9wdGlvbnMuZGF0YUxhYmVscy5tYXhJdGVtcyYmY29uc29sZS53YXJuKCJXQVJOSU5HOiBEYXRhTGFiZWxzIGFyZSBlbmFibGVkIGJ1dCB0aGVyZSBhcmUgdG9vIG1hbnkgdG8gZGlzcGxheS4gVGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgaXNzdWUgd2hlbiByZW5kZXJpbmcuIik7Zm9yKHZhciBvPTAsbD0wO288dC5sZW5ndGg7bysrLGwrKyl7dmFyIGMsaCxkLHUscD12b2lkIDAsZz12b2lkIDAsZj1bXSxtPVtdLHY9aS5nbG9iYWxzLmNvbWJvQ2hhcnRzP2Vbb106byx4PXMuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLXNlcmllcyIscmVsOm8rMSxzZXJpZXNOYW1lOmIuZXNjYXBlU3RyaW5nKGkuZ2xvYmFscy5zZXJpZXNOYW1lc1t2XSksImRhdGE6cmVhbEluZGV4Ijp2fSk7dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMoeCx2KSx0W29dLmxlbmd0aD4wJiYodGhpcy52aXNpYmxlST10aGlzLnZpc2libGVJKzEpO3ZhciB5PTAsdz0wO3RoaXMueVJhdGlvLmxlbmd0aD4xJiYodGhpcy55YXhpc0luZGV4PXYpLHRoaXMuaXNSZXZlcnNlZD1pLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdJiZpLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdLnJldmVyc2VkO3ZhciBDPXRoaXMuYmFySGVscGVycy5pbml0aWFsUG9zaXRpb25zKCk7Zz1DLnkseT1DLmJhckhlaWdodCxoPUMueURpdmlzaW9uLHU9Qy56ZXJvVyxwPUMueCx3PUMuYmFyV2lkdGgsYz1DLnhEaXZpc2lvbixkPUMuemVyb0gsdGhpcy5ob3Jpem9udGFsfHxtLnB1c2gocCt3LzIpO2Zvcih2YXIgQT1zLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy1kYXRhbGFiZWxzIiwiZGF0YTpyZWFsSW5kZXgiOnZ9KSxFPXMuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLWJhci1nb2Fscy1tYXJrZXJzIixzdHlsZToicG9pbnRlci1ldmVudHM6IG5vbmUifSksVD0wO1Q8aS5nbG9iYWxzLmRhdGFQb2ludHM7VCsrKXt2YXIgTD10aGlzLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgobyxULHYpLFA9bnVsbCxNPXtpbmRleGVzOntpOm8sajpULHJlYWxJbmRleDp2LGJjOmx9LHg6cCx5Omcsc3Ryb2tlV2lkdGg6TCxlbFNlcmllczp4fTt0aGlzLmlzSG9yaXpvbnRhbD8oUD10aGlzLmRyYXdCYXJQYXRocyhuKG4oe30sTSkse30se2JhckhlaWdodDp5LHplcm9XOnUseURpdmlzaW9uOmh9KSksdz10aGlzLnNlcmllc1tvXVtUXS90aGlzLmludmVydGVkWVJhdGlvKTooUD10aGlzLmRyYXdDb2x1bW5QYXRocyhuKG4oe30sTSkse30se3hEaXZpc2lvbjpjLGJhcldpZHRoOncsemVyb0g6ZH0pKSx5PXRoaXMuc2VyaWVzW29dW1RdL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0pO3ZhciBPPXRoaXMuYmFySGVscGVycy5kcmF3R29hbExpbmUoe2JhclhQb3NpdGlvbjpQLmJhclhQb3NpdGlvbixiYXJZUG9zaXRpb246UC5iYXJZUG9zaXRpb24sZ29hbFg6UC5nb2FsWCxnb2FsWTpQLmdvYWxZLGJhckhlaWdodDp5LGJhcldpZHRoOnd9KTtPJiZFLmFkZChPKSxnPVAueSxwPVAueCxUPjAmJm0ucHVzaChwK3cvMiksZi5wdXNoKGcpO3ZhciBJPXRoaXMuYmFySGVscGVycy5nZXRQYXRoRmlsbENvbG9yKHQsbyxULHYpO3RoaXMucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6dixwYXRoRmlsbDpJLGo6VCxpOm8scGF0aEZyb206UC5wYXRoRnJvbSxwYXRoVG86UC5wYXRoVG8sc3Ryb2tlV2lkdGg6TCxlbFNlcmllczp4LHg6cCx5Omcsc2VyaWVzOnQsYmFySGVpZ2h0OnksYmFyV2lkdGg6dyxlbERhdGFMYWJlbHNXcmFwOkEsZWxHb2Fsc01hcmtlcnM6RSx2aXNpYmxlU2VyaWVzOnRoaXMudmlzaWJsZUksdHlwZToiYmFyIn0pfWkuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW3ZdPW0saS5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbdl09ZixyLmFkZCh4KX1yZXR1cm4gcn19LHtrZXk6InJlbmRlclNlcmllcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5yZWFsSW5kZXgsaT10LnBhdGhGaWxsLHM9dC5saW5lRmlsbCxhPXQuaixuPXQuaSxyPXQucGF0aEZyb20sbz10LnBhdGhUbyxsPXQuc3Ryb2tlV2lkdGgsYz10LmVsU2VyaWVzLGg9dC54LGQ9dC55LHU9dC55MSxwPXQueTIsZz10LnNlcmllcyxmPXQuYmFySGVpZ2h0LG09dC5iYXJXaWR0aCx2PXQuYmFyWVBvc2l0aW9uLHg9dC5lbERhdGFMYWJlbHNXcmFwLGI9dC5lbEdvYWxzTWFya2Vycyx5PXQudmlzaWJsZVNlcmllcyxTPXQudHlwZSxDPXRoaXMudyxBPW5ldyBrKHRoaXMuY3R4KTtzfHwocz10aGlzLmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQ/Qy5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbYV06Qy5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbZV0pLEMuY29uZmlnLnNlcmllc1tuXS5kYXRhW2FdJiZDLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVthXS5zdHJva2VDb2xvciYmKHM9Qy5jb25maWcuc2VyaWVzW25dLmRhdGFbYV0uc3Ryb2tlQ29sb3IpLHRoaXMuaXNOdWxsVmFsdWUmJihpPSJub25lIik7dmFyIEU9YS9DLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGVHcmFkdWFsbHkuZGVsYXkqKEMuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQvQy5nbG9iYWxzLmRhdGFQb2ludHMpLzIuNCxUPUEucmVuZGVyUGF0aHMoe2k6bixqOmEscmVhbEluZGV4OmUscGF0aEZyb206cixwYXRoVG86byxzdHJva2U6cyxzdHJva2VXaWR0aDpsLHN0cm9rZUxpbmVDYXA6Qy5jb25maWcuc3Ryb2tlLmxpbmVDYXAsZmlsbDppLGFuaW1hdGlvbkRlbGF5OkUsaW5pdGlhbFNwZWVkOkMuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQsZGF0YUNoYW5nZVNwZWVkOkMuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCxjbGFzc05hbWU6ImFwZXhjaGFydHMtIi5jb25jYXQoUywiLWFyZWEiKX0pO1QuYXR0cigiY2xpcC1wYXRoIiwidXJsKCNncmlkUmVjdE1hc2siLmNvbmNhdChDLmdsb2JhbHMuY3VpZCwiKSIpKTt2YXIgTD1DLmNvbmZpZy5mb3JlY2FzdERhdGFQb2ludHM7TC5jb3VudD4wJiZhPj1DLmdsb2JhbHMuZGF0YVBvaW50cy1MLmNvdW50JiYoVC5ub2RlLnNldEF0dHJpYnV0ZSgic3Ryb2tlLWRhc2hhcnJheSIsTC5kYXNoQXJyYXkpLFQubm9kZS5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsTC5zdHJva2VXaWR0aCksVC5ub2RlLnNldEF0dHJpYnV0ZSgiZmlsbC1vcGFjaXR5IixMLmZpbGxPcGFjaXR5KSksdm9pZCAwIT09dSYmdm9pZCAwIT09cCYmKFQuYXR0cigiZGF0YS1yYW5nZS15MSIsdSksVC5hdHRyKCJkYXRhLXJhbmdlLXkyIixwKSksbmV3IHcodGhpcy5jdHgpLnNldFNlbGVjdGlvbkZpbHRlcihULGUsYSksYy5hZGQoVCk7dmFyIFA9bmV3IHd0KHRoaXMpLmhhbmRsZUJhckRhdGFMYWJlbHMoe3g6aCx5OmQseTE6dSx5MjpwLGk6bixqOmEsc2VyaWVzOmcscmVhbEluZGV4OmUsYmFySGVpZ2h0OmYsYmFyV2lkdGg6bSxiYXJZUG9zaXRpb246dixyZW5kZXJlZFBhdGg6VCx2aXNpYmxlU2VyaWVzOnl9KTtyZXR1cm4gbnVsbCE9PVAuZGF0YUxhYmVscyYmeC5hZGQoUC5kYXRhTGFiZWxzKSxQLnRvdGFsRGF0YUxhYmVscyYmeC5hZGQoUC50b3RhbERhdGFMYWJlbHMpLGMuYWRkKHgpLGImJmMuYWRkKGIpLGN9fSx7a2V5OiJkcmF3QmFyUGF0aHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQuYmFySGVpZ2h0LHM9dC5zdHJva2VXaWR0aCxhPXQuemVyb1csbj10Lngscj10Lnksbz10LnlEaXZpc2lvbixsPXQuZWxTZXJpZXMsYz10aGlzLncsaD1lLmksZD1lLmo7Yy5nbG9iYWxzLmlzWE51bWVyaWMmJihyPShjLmdsb2JhbHMuc2VyaWVzWFtoXVtkXS1jLmdsb2JhbHMubWluWCkvdGhpcy5pbnZlcnRlZFhSYXRpby1pKTt2YXIgdT1yK2kqdGhpcy52aXNpYmxlSTtuPXRoaXMuYmFySGVscGVycy5nZXRYRm9yVmFsdWUodGhpcy5zZXJpZXNbaF1bZF0sYSk7dmFyIHA9dGhpcy5iYXJIZWxwZXJzLmdldEJhcnBhdGhzKHtiYXJZUG9zaXRpb246dSxiYXJIZWlnaHQ6aSx4MTphLHgyOm4sc3Ryb2tlV2lkdGg6cyxzZXJpZXM6dGhpcy5zZXJpZXMscmVhbEluZGV4OmUucmVhbEluZGV4LGk6aCxqOmQsdzpjfSk7cmV0dXJuIGMuZ2xvYmFscy5pc1hOdW1lcmljfHwocis9byksdGhpcy5iYXJIZWxwZXJzLmJhckJhY2tncm91bmQoe2o6ZCxpOmgseTE6dS1pKnRoaXMudmlzaWJsZUkseTI6aSp0aGlzLnNlcmllc0xlbixlbFNlcmllczpsfSkse3BhdGhUbzpwLnBhdGhUbyxwYXRoRnJvbTpwLnBhdGhGcm9tLHg6bix5OnIsZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoIngiLGEsbnVsbCxoLGQpLGJhcllQb3NpdGlvbjp1fX19LHtrZXk6ImRyYXdDb2x1bW5QYXRocyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzLGk9dC54LHM9dC55LGE9dC54RGl2aXNpb24sbj10LmJhcldpZHRoLHI9dC56ZXJvSCxvPXQuc3Ryb2tlV2lkdGgsbD10LmVsU2VyaWVzLGM9dGhpcy53LGg9ZS5yZWFsSW5kZXgsZD1lLmksdT1lLmoscD1lLmJjO2lmKGMuZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgZz1oO2MuZ2xvYmFscy5zZXJpZXNYW2hdLmxlbmd0aHx8KGc9Yy5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXgpLGk9KGMuZ2xvYmFscy5zZXJpZXNYW2ddW3VdLWMuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby1uKnRoaXMuc2VyaWVzTGVuLzJ9dmFyIGY9aStuKnRoaXMudmlzaWJsZUk7cz10aGlzLmJhckhlbHBlcnMuZ2V0WUZvclZhbHVlKHRoaXMuc2VyaWVzW2RdW3VdLHIpO3ZhciBtPXRoaXMuYmFySGVscGVycy5nZXRDb2x1bW5QYXRocyh7YmFyWFBvc2l0aW9uOmYsYmFyV2lkdGg6bix5MTpyLHkyOnMsc3Ryb2tlV2lkdGg6byxzZXJpZXM6dGhpcy5zZXJpZXMscmVhbEluZGV4OmUucmVhbEluZGV4LGk6ZCxqOnUsdzpjfSk7cmV0dXJuIGMuZ2xvYmFscy5pc1hOdW1lcmljfHwoaSs9YSksdGhpcy5iYXJIZWxwZXJzLmJhckJhY2tncm91bmQoe2JjOnAsajp1LGk6ZCx4MTpmLW8vMi1uKnRoaXMudmlzaWJsZUkseDI6bip0aGlzLnNlcmllc0xlbitvLzIsZWxTZXJpZXM6bH0pLHtwYXRoVG86bS5wYXRoVG8scGF0aEZyb206bS5wYXRoRnJvbSx4OmkseTpzLGdvYWxZOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKCJ5IixudWxsLHIsZCx1KSxiYXJYUG9zaXRpb246Zn19fSx7a2V5OiJnZXRQcmV2aW91c1BhdGgiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpLHM9dGhpcy53LGE9MDthPHMuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDthKyspe3ZhciBuPXMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2FdO24ucGF0aHMmJm4ucGF0aHMubGVuZ3RoPjAmJnBhcnNlSW50KG4ucmVhbEluZGV4LDEwKT09PXBhcnNlSW50KHQsMTApJiZ2b2lkIDAhPT1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1thXS5wYXRoc1tlXSYmKGk9cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV0ucGF0aHNbZV0uZCl9cmV0dXJuIGl9fV0pLHR9KCksQ3Q9ZnVuY3Rpb24odCl7ZChpLFN0KTt2YXIgZT1mKGkpO2Z1bmN0aW9uIGkoKXtyZXR1cm4gbyh0aGlzLGkpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBjKGksW3trZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxzPXRoaXMudzt0aGlzLmdyYXBoaWNzPW5ldyBrKHRoaXMuY3R4KSx0aGlzLmJhcj1uZXcgU3QodGhpcy5jdHgsdGhpcy54eVJhdGlvcyk7dmFyIGE9bmV3IFModGhpcy5jdHgscyk7dD1hLmdldExvZ1Nlcmllcyh0KSx0aGlzLnlSYXRpbz1hLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKHQpLCIxMDAlIj09PXMuY29uZmlnLmNoYXJ0LnN0YWNrVHlwZSYmKHQ9cy5nbG9iYWxzLnNlcmllc1BlcmNlbnQuc2xpY2UoKSksdGhpcy5zZXJpZXM9dCx0aGlzLnRvdGFsSXRlbXM9MCx0aGlzLnByZXZZPVtdLHRoaXMucHJldlg9W10sdGhpcy5wcmV2WUY9W10sdGhpcy5wcmV2WEY9W10sdGhpcy5wcmV2WVZhbD1bXSx0aGlzLnByZXZYVmFsPVtdLHRoaXMueEFycmo9W10sdGhpcy54QXJyakY9W10sdGhpcy54QXJyalZhbD1bXSx0aGlzLnlBcnJqPVtdLHRoaXMueUFycmpGPVtdLHRoaXMueUFycmpWYWw9W107Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdFtyXS5sZW5ndGg+MCYmKHRoaXMudG90YWxJdGVtcys9dFtyXS5sZW5ndGgpO2Zvcih2YXIgbz10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy1iYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXMifSksbD0wLGM9MCxoPWZ1bmN0aW9uKGEscil7dmFyIGg9dm9pZCAwLGQ9dm9pZCAwLHU9dm9pZCAwLHA9dm9pZCAwLGc9W10sZj1bXSxtPXMuZ2xvYmFscy5jb21ib0NoYXJ0cz9lW2FdOmE7aS55UmF0aW8ubGVuZ3RoPjEmJihpLnlheGlzSW5kZXg9bSksaS5pc1JldmVyc2VkPXMuY29uZmlnLnlheGlzW2kueWF4aXNJbmRleF0mJnMuY29uZmlnLnlheGlzW2kueWF4aXNJbmRleF0ucmV2ZXJzZWQ7dmFyIHY9aS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtc2VyaWVzIixzZXJpZXNOYW1lOmIuZXNjYXBlU3RyaW5nKHMuZ2xvYmFscy5zZXJpZXNOYW1lc1ttXSkscmVsOmErMSwiZGF0YTpyZWFsSW5kZXgiOm19KTtpLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1Nlcmllcyh2LG0pO3ZhciB4PWkuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLWRhdGFsYWJlbHMiLCJkYXRhOnJlYWxJbmRleCI6bX0pLHk9aS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtYmFyLWdvYWxzLW1hcmtlcnMiLHN0eWxlOiJwb2ludGVyLWV2ZW50czogbm9uZSJ9KSx3PTAsaz0wLFM9aS5pbml0aWFsUG9zaXRpb25zKGwsYyxoLGQsdSxwKTtjPVMueSx3PVMuYmFySGVpZ2h0LGQ9Uy55RGl2aXNpb24scD1TLnplcm9XLGw9Uy54LGs9Uy5iYXJXaWR0aCxoPVMueERpdmlzaW9uLHU9Uy56ZXJvSCxpLnlBcnJqPVtdLGkueUFycmpGPVtdLGkueUFycmpWYWw9W10saS54QXJyaj1bXSxpLnhBcnJqRj1bXSxpLnhBcnJqVmFsPVtdLDE9PT1pLnByZXZZLmxlbmd0aCYmaS5wcmV2WVswXS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQpfSkpJiYoaS5wcmV2WVswXT1pLnByZXZZWzBdLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHV9KSksaS5wcmV2WUZbMF09aS5wcmV2WUZbMF0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gMH0pKSk7Zm9yKHZhciBDPTA7QzxzLmdsb2JhbHMuZGF0YVBvaW50cztDKyspe3ZhciBBPWkuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChhLEMsbSksRT17aW5kZXhlczp7aTphLGo6QyxyZWFsSW5kZXg6bSxiYzpyfSxzdHJva2VXaWR0aDpBLHg6bCx5OmMsZWxTZXJpZXM6dn0sVD1udWxsO2kuaXNIb3Jpem9udGFsPyhUPWkuZHJhd1N0YWNrZWRCYXJQYXRocyhuKG4oe30sRSkse30se3plcm9XOnAsYmFySGVpZ2h0OncseURpdmlzaW9uOmR9KSksaz1pLnNlcmllc1thXVtDXS9pLmludmVydGVkWVJhdGlvKTooVD1pLmRyYXdTdGFja2VkQ29sdW1uUGF0aHMobihuKHt9LEUpLHt9LHt4RGl2aXNpb246aCxiYXJXaWR0aDprLHplcm9IOnV9KSksdz1pLnNlcmllc1thXVtDXS9pLnlSYXRpb1tpLnlheGlzSW5kZXhdKTt2YXIgTD1pLmJhckhlbHBlcnMuZHJhd0dvYWxMaW5lKHtiYXJYUG9zaXRpb246VC5iYXJYUG9zaXRpb24sYmFyWVBvc2l0aW9uOlQuYmFyWVBvc2l0aW9uLGdvYWxYOlQuZ29hbFgsZ29hbFk6VC5nb2FsWSxiYXJIZWlnaHQ6dyxiYXJXaWR0aDprfSk7TCYmeS5hZGQoTCksYz1ULnksbD1ULngsZy5wdXNoKGwpLGYucHVzaChjKTt2YXIgUD1pLmJhckhlbHBlcnMuZ2V0UGF0aEZpbGxDb2xvcih0LGEsQyxtKTt2PWkucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6bSxwYXRoRmlsbDpQLGo6QyxpOmEscGF0aEZyb206VC5wYXRoRnJvbSxwYXRoVG86VC5wYXRoVG8sc3Ryb2tlV2lkdGg6QSxlbFNlcmllczp2LHg6bCx5OmMsc2VyaWVzOnQsYmFySGVpZ2h0OncsYmFyV2lkdGg6ayxlbERhdGFMYWJlbHNXcmFwOngsZWxHb2Fsc01hcmtlcnM6eSx0eXBlOiJiYXIiLHZpc2libGVTZXJpZXM6MH0pfXMuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW21dPWcscy5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbbV09ZixpLnByZXZZLnB1c2goaS55QXJyaiksaS5wcmV2WUYucHVzaChpLnlBcnJqRiksaS5wcmV2WVZhbC5wdXNoKGkueUFycmpWYWwpLGkucHJldlgucHVzaChpLnhBcnJqKSxpLnByZXZYRi5wdXNoKGkueEFycmpGKSxpLnByZXZYVmFsLnB1c2goaS54QXJyalZhbCksby5hZGQodil9LGQ9MCx1PTA7ZDx0Lmxlbmd0aDtkKyssdSsrKWgoZCx1KTtyZXR1cm4gb319LHtrZXk6ImluaXRpYWxQb3NpdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMsYSxuKXt2YXIgcixvLGw9dGhpcy53O3JldHVybiB0aGlzLmlzSG9yaXpvbnRhbD8ocj0ocj1zPWwuZ2xvYmFscy5ncmlkSGVpZ2h0L2wuZ2xvYmFscy5kYXRhUG9pbnRzKSpwYXJzZUludChsLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0LDEwKS8xMDAsbj10aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZK2wuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyh0aGlzLmlzUmV2ZXJzZWQ/bC5nbG9iYWxzLmdyaWRXaWR0aDowKS0odGhpcy5pc1JldmVyc2VkPzIqdGhpcy5iYXNlTGluZUludmVydGVkWTowKSxlPShzLXIpLzIpOihvPWk9bC5nbG9iYWxzLmdyaWRXaWR0aC9sLmdsb2JhbHMuZGF0YVBvaW50cyxvPWwuZ2xvYmFscy5pc1hOdW1lcmljJiZsLmdsb2JhbHMuZGF0YVBvaW50cz4xPyhpPWwuZ2xvYmFscy5taW5YRGlmZi90aGlzLnhSYXRpbykqcGFyc2VJbnQodGhpcy5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKS8xMDA6bypwYXJzZUludChsLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sdW1uV2lkdGgsMTApLzEwMCxhPWwuZ2xvYmFscy5ncmlkSGVpZ2h0LXRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF0tKHRoaXMuaXNSZXZlcnNlZD9sLmdsb2JhbHMuZ3JpZEhlaWdodDowKSsodGhpcy5pc1JldmVyc2VkPzIqdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XTowKSx0PWwuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyhpLW8pLzIpLHt4OnQseTplLHlEaXZpc2lvbjpzLHhEaXZpc2lvbjppLGJhckhlaWdodDpyLGJhcldpZHRoOm8semVyb0g6YSx6ZXJvVzpufX19LHtrZXk6ImRyYXdTdGFja2VkQmFyUGF0aHMiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPXQuaW5kZXhlcyxzPXQuYmFySGVpZ2h0LGE9dC5zdHJva2VXaWR0aCxuPXQuemVyb1cscj10Lngsbz10LnksbD10LnlEaXZpc2lvbixjPXQuZWxTZXJpZXMsaD10aGlzLncsZD1vLHU9aS5pLHA9aS5qLGc9MCxmPTA7Zjx0aGlzLnByZXZYRi5sZW5ndGg7ZisrKWcrPXRoaXMucHJldlhGW2ZdW3BdO2lmKHU+MCl7dmFyIG09bjt0aGlzLnByZXZYVmFsW3UtMV1bcF08MD9tPXRoaXMuc2VyaWVzW3VdW3BdPj0wP3RoaXMucHJldlhbdS0xXVtwXStnLTIqKHRoaXMuaXNSZXZlcnNlZD9nOjApOnRoaXMucHJldlhbdS0xXVtwXTp0aGlzLnByZXZYVmFsW3UtMV1bcF0+PTAmJihtPXRoaXMuc2VyaWVzW3VdW3BdPj0wP3RoaXMucHJldlhbdS0xXVtwXTp0aGlzLnByZXZYW3UtMV1bcF0tZysyKih0aGlzLmlzUmV2ZXJzZWQ/ZzowKSksZT1tfWVsc2UgZT1uO3I9bnVsbD09PXRoaXMuc2VyaWVzW3VdW3BdP2U6ZSt0aGlzLnNlcmllc1t1XVtwXS90aGlzLmludmVydGVkWVJhdGlvLTIqKHRoaXMuaXNSZXZlcnNlZD90aGlzLnNlcmllc1t1XVtwXS90aGlzLmludmVydGVkWVJhdGlvOjApO3ZhciB2PXRoaXMuYmFySGVscGVycy5nZXRCYXJwYXRocyh7YmFyWVBvc2l0aW9uOmQsYmFySGVpZ2h0OnMseDE6ZSx4MjpyLHN0cm9rZVdpZHRoOmEsc2VyaWVzOnRoaXMuc2VyaWVzLHJlYWxJbmRleDppLnJlYWxJbmRleCxpOnUsajpwLHc6aH0pO3JldHVybiB0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7ajpwLGk6dSx5MTpkLHkyOnMsZWxTZXJpZXM6Y30pLG8rPWwse3BhdGhUbzp2LnBhdGhUbyxwYXRoRnJvbTp2LnBhdGhGcm9tLGdvYWxYOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKCJ4IixuLG51bGwsdSxwKSxiYXJZUG9zaXRpb246ZCx4OnIseTpvfX19LHtrZXk6ImRyYXdTdGFja2VkQ29sdW1uUGF0aHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueCxzPXQueSxhPXQueERpdmlzaW9uLG49dC5iYXJXaWR0aCxyPXQuemVyb0g7dC5zdHJva2VXaWR0aDt2YXIgbz10LmVsU2VyaWVzLGw9dGhpcy53LGM9ZS5pLGg9ZS5qLGQ9ZS5iYztpZihsLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIHU9bC5nbG9iYWxzLnNlcmllc1hbY11baF07dXx8KHU9MCksaT0odS1sLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tbi8yfWZvcih2YXIgcCxnPWksZj0wLG09MDttPHRoaXMucHJldllGLmxlbmd0aDttKyspZis9aXNOYU4odGhpcy5wcmV2WUZbbV1baF0pPzA6dGhpcy5wcmV2WUZbbV1baF07aWYoYz4wJiYhbC5nbG9iYWxzLmlzWE51bWVyaWN8fGM+MCYmbC5nbG9iYWxzLmlzWE51bWVyaWMmJmwuZ2xvYmFscy5zZXJpZXNYW2MtMV1baF09PT1sLmdsb2JhbHMuc2VyaWVzWFtjXVtoXSl7dmFyIHYseCxiPU1hdGgubWluKHRoaXMueVJhdGlvLmxlbmd0aCsxLGMrMSk7aWYodm9pZCAwIT09dGhpcy5wcmV2WVtjLTFdKWZvcih2YXIgeT0xO3k8Yjt5KyspaWYoIWlzTmFOKHRoaXMucHJldllbYy15XVtoXSkpe3g9dGhpcy5wcmV2WVtjLXldW2hdO2JyZWFrfWZvcih2YXIgdz0xO3c8Yjt3Kyspe2lmKHRoaXMucHJldllWYWxbYy13XVtoXTwwKXt2PXRoaXMuc2VyaWVzW2NdW2hdPj0wP3gtZisyKih0aGlzLmlzUmV2ZXJzZWQ/ZjowKTp4O2JyZWFrfWlmKHRoaXMucHJldllWYWxbYy13XVtoXT49MCl7dj10aGlzLnNlcmllc1tjXVtoXT49MD94OngrZi0yKih0aGlzLmlzUmV2ZXJzZWQ/ZjowKTticmVha319dm9pZCAwPT09diYmKHY9bC5nbG9iYWxzLmdyaWRIZWlnaHQpLHA9dGhpcy5wcmV2WUZbMF0uZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dH0pKSYmdGhpcy5wcmV2WUYuc2xpY2UoMSxjKS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0KX0pKX0pKT9yOnZ9ZWxzZSBwPXI7cz1wLXRoaXMuc2VyaWVzW2NdW2hdL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0rMioodGhpcy5pc1JldmVyc2VkP3RoaXMuc2VyaWVzW2NdW2hdL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF06MCk7dmFyIGs9dGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHtiYXJYUG9zaXRpb246ZyxiYXJXaWR0aDpuLHkxOnAseTI6cyx5UmF0aW86dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHNlcmllczp0aGlzLnNlcmllcyxyZWFsSW5kZXg6ZS5yZWFsSW5kZXgsaTpjLGo6aCx3Omx9KTtyZXR1cm4gdGhpcy5iYXJIZWxwZXJzLmJhckJhY2tncm91bmQoe2JjOmQsajpoLGk6Yyx4MTpnLHgyOm4sZWxTZXJpZXM6b30pLGkrPWEse3BhdGhUbzprLnBhdGhUbyxwYXRoRnJvbTprLnBhdGhGcm9tLGdvYWxZOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKCJ5IixudWxsLHIsYyxoKSxiYXJYUG9zaXRpb246Zyx4OmwuZ2xvYmFscy5pc1hOdW1lcmljP2ktYTppLHk6c319fV0pLGl9KCksQXQ9ZnVuY3Rpb24odCl7ZChpLFN0KTt2YXIgZT1mKGkpO2Z1bmN0aW9uIGkoKXtyZXR1cm4gbyh0aGlzLGkpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBjKGksW3trZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxzPXRoaXMudyxhPW5ldyBrKHRoaXMuY3R4KSxyPW5ldyBfKHRoaXMuY3R4KTt0aGlzLmNhbmRsZXN0aWNrT3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLHRoaXMuYm94T3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJveFBsb3QsdGhpcy5pc0hvcml6b250YWw9cy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw7dmFyIG89bmV3IFModGhpcy5jdHgscyk7dD1vLmdldExvZ1Nlcmllcyh0KSx0aGlzLnNlcmllcz10LHRoaXMueVJhdGlvPW8uZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyksdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXModCk7Zm9yKHZhciBsPWEuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLSIuY29uY2F0KHMuY29uZmlnLmNoYXJ0LnR5cGUsIi1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllcyIpfSksYz1mdW5jdGlvbihvKXtpLmlzQm94UGxvdD0iYm94UGxvdCI9PT1zLmNvbmZpZy5jaGFydC50eXBlfHwiYm94UGxvdCI9PT1zLmNvbmZpZy5zZXJpZXNbb10udHlwZTt2YXIgYyxoLGQsdSxwLGcsZj12b2lkIDAsbT12b2lkIDAsdj1bXSx4PVtdLHk9cy5nbG9iYWxzLmNvbWJvQ2hhcnRzP2Vbb106byx3PWEuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLXNlcmllcyIsc2VyaWVzTmFtZTpiLmVzY2FwZVN0cmluZyhzLmdsb2JhbHMuc2VyaWVzTmFtZXNbeV0pLHJlbDpvKzEsImRhdGE6cmVhbEluZGV4Ijp5fSk7aS5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXModyx5KSx0W29dLmxlbmd0aD4wJiYoaS52aXNpYmxlST1pLnZpc2libGVJKzEpLGkueVJhdGlvLmxlbmd0aD4xJiYoaS55YXhpc0luZGV4PXkpO3ZhciBrPWkuYmFySGVscGVycy5pbml0aWFsUG9zaXRpb25zKCk7bT1rLnkscD1rLmJhckhlaWdodCxoPWsueURpdmlzaW9uLHU9ay56ZXJvVyxmPWsueCxnPWsuYmFyV2lkdGgsYz1rLnhEaXZpc2lvbixkPWsuemVyb0gseC5wdXNoKGYrZy8yKTtmb3IodmFyIFM9YS5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtZGF0YWxhYmVscyIsImRhdGE6cmVhbEluZGV4Ijp5fSksQz1mdW5jdGlvbihlKXt2YXIgYT1pLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgobyxlLHkpLGw9bnVsbCxiPXtpbmRleGVzOntpOm8sajplLHJlYWxJbmRleDp5fSx4OmYseTptLHN0cm9rZVdpZHRoOmEsZWxTZXJpZXM6d307bD1pLmlzSG9yaXpvbnRhbD9pLmRyYXdIb3Jpem9udGFsQm94UGF0aHMobihuKHt9LGIpLHt9LHt5RGl2aXNpb246aCxiYXJIZWlnaHQ6cCx6ZXJvVzp1fSkpOmkuZHJhd1ZlcnRpY2FsQm94UGF0aHMobihuKHt9LGIpLHt9LHt4RGl2aXNpb246YyxiYXJXaWR0aDpnLHplcm9IOmR9KSksbT1sLnksZj1sLngsZT4wJiZ4LnB1c2goZitnLzIpLHYucHVzaChtKSxsLnBhdGhUby5mb3JFYWNoKChmdW5jdGlvbihuLGMpe3ZhciBoPSFpLmlzQm94UGxvdCYmaS5jYW5kbGVzdGlja09wdGlvbnMud2ljay51c2VGaWxsQ29sb3I/bC5jb2xvcltjXTpzLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tvXSxkPXIuZmlsbFBhdGgoe3Nlcmllc051bWJlcjp5LGRhdGFQb2ludEluZGV4OmUsY29sb3I6bC5jb2xvcltjXSx2YWx1ZTp0W29dW2VdfSk7aS5yZW5kZXJTZXJpZXMoe3JlYWxJbmRleDp5LHBhdGhGaWxsOmQsbGluZUZpbGw6aCxqOmUsaTpvLHBhdGhGcm9tOmwucGF0aEZyb20scGF0aFRvOm4sc3Ryb2tlV2lkdGg6YSxlbFNlcmllczp3LHg6Zix5Om0sc2VyaWVzOnQsYmFySGVpZ2h0OnAsYmFyV2lkdGg6ZyxlbERhdGFMYWJlbHNXcmFwOlMsdmlzaWJsZVNlcmllczppLnZpc2libGVJLHR5cGU6cy5jb25maWcuY2hhcnQudHlwZX0pfSkpfSxBPTA7QTxzLmdsb2JhbHMuZGF0YVBvaW50cztBKyspQyhBKTtzLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1t5XT14LHMuZ2xvYmFscy5zZXJpZXNZdmFsdWVzW3ldPXYsbC5hZGQodyl9LGg9MDtoPHQubGVuZ3RoO2grKyljKGgpO3JldHVybiBsfX0se2tleToiZHJhd1ZlcnRpY2FsQm94UGF0aHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueDt0Lnk7dmFyIHM9dC54RGl2aXNpb24sYT10LmJhcldpZHRoLG49dC56ZXJvSCxyPXQuc3Ryb2tlV2lkdGgsbz10aGlzLncsbD1uZXcgayh0aGlzLmN0eCksYz1lLmksaD1lLmosZD0hMCx1PW8uY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLmNvbG9ycy51cHdhcmQscD1vLmNvbmZpZy5wbG90T3B0aW9ucy5jYW5kbGVzdGljay5jb2xvcnMuZG93bndhcmQsZz0iIjt0aGlzLmlzQm94UGxvdCYmKGc9W3RoaXMuYm94T3B0aW9ucy5jb2xvcnMubG93ZXIsdGhpcy5ib3hPcHRpb25zLmNvbG9ycy51cHBlcl0pO3ZhciBmPXRoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0sbT1lLnJlYWxJbmRleCx2PXRoaXMuZ2V0T0hMQ1ZhbHVlKG0saCkseD1uLGI9bjt2Lm8+di5jJiYoZD0hMSk7dmFyIHk9TWF0aC5taW4odi5vLHYuYyksdz1NYXRoLm1heCh2Lm8sdi5jKSxTPXYubTtvLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGk9KG8uZ2xvYmFscy5zZXJpZXNYW21dW2hdLW8uZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby1hLzIpO3ZhciBDPWkrYSp0aGlzLnZpc2libGVJO3ZvaWQgMD09PXRoaXMuc2VyaWVzW2NdW2hdfHxudWxsPT09dGhpcy5zZXJpZXNbY11baF0/KHk9bix3PW4pOih5PW4teS9mLHc9bi13L2YseD1uLXYuaC9mLGI9bi12LmwvZixTPW4tdi5tL2YpO3ZhciBBPWwubW92ZShDLG4pLEU9bC5tb3ZlKEMrYS8yLHkpO3JldHVybiBvLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKEU9dGhpcy5nZXRQcmV2aW91c1BhdGgobSxoLCEwKSksQT10aGlzLmlzQm94UGxvdD9bbC5tb3ZlKEMseSkrbC5saW5lKEMrYS8yLHkpK2wubGluZShDK2EvMix4KStsLmxpbmUoQythLzQseCkrbC5saW5lKEMrYS1hLzQseCkrbC5saW5lKEMrYS8yLHgpK2wubGluZShDK2EvMix5KStsLmxpbmUoQythLHkpK2wubGluZShDK2EsUykrbC5saW5lKEMsUykrbC5saW5lKEMseStyLzIpLGwubW92ZShDLFMpK2wubGluZShDK2EsUykrbC5saW5lKEMrYSx3KStsLmxpbmUoQythLzIsdykrbC5saW5lKEMrYS8yLGIpK2wubGluZShDK2EtYS80LGIpK2wubGluZShDK2EvNCxiKStsLmxpbmUoQythLzIsYikrbC5saW5lKEMrYS8yLHcpK2wubGluZShDLHcpK2wubGluZShDLFMpKyJ6Il06W2wubW92ZShDLHcpK2wubGluZShDK2EvMix3KStsLmxpbmUoQythLzIseCkrbC5saW5lKEMrYS8yLHcpK2wubGluZShDK2EsdykrbC5saW5lKEMrYSx5KStsLmxpbmUoQythLzIseSkrbC5saW5lKEMrYS8yLGIpK2wubGluZShDK2EvMix5KStsLmxpbmUoQyx5KStsLmxpbmUoQyx3LXIvMildLEUrPWwubW92ZShDLHkpLG8uZ2xvYmFscy5pc1hOdW1lcmljfHwoaSs9cykse3BhdGhUbzpBLHBhdGhGcm9tOkUseDppLHk6dyxiYXJYUG9zaXRpb246Qyxjb2xvcjp0aGlzLmlzQm94UGxvdD9nOmQ/W3VdOltwXX19fSx7a2V5OiJkcmF3SG9yaXpvbnRhbEJveFBhdGhzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXM7dC54O3ZhciBpPXQueSxzPXQueURpdmlzaW9uLGE9dC5iYXJIZWlnaHQsbj10Lnplcm9XLHI9dC5zdHJva2VXaWR0aCxvPXRoaXMudyxsPW5ldyBrKHRoaXMuY3R4KSxjPWUuaSxoPWUuaixkPXRoaXMuYm94T3B0aW9ucy5jb2xvcnMubG93ZXI7dGhpcy5pc0JveFBsb3QmJihkPVt0aGlzLmJveE9wdGlvbnMuY29sb3JzLmxvd2VyLHRoaXMuYm94T3B0aW9ucy5jb2xvcnMudXBwZXJdKTt2YXIgdT10aGlzLmludmVydGVkWVJhdGlvLHA9ZS5yZWFsSW5kZXgsZz10aGlzLmdldE9ITENWYWx1ZShwLGgpLGY9bixtPW4sdj1NYXRoLm1pbihnLm8sZy5jKSx4PU1hdGgubWF4KGcubyxnLmMpLGI9Zy5tO28uZ2xvYmFscy5pc1hOdW1lcmljJiYoaT0oby5nbG9iYWxzLnNlcmllc1hbcF1baF0tby5nbG9iYWxzLm1pblgpL3RoaXMuaW52ZXJ0ZWRYUmF0aW8tYS8yKTt2YXIgeT1pK2EqdGhpcy52aXNpYmxlSTt2b2lkIDA9PT10aGlzLnNlcmllc1tjXVtoXXx8bnVsbD09PXRoaXMuc2VyaWVzW2NdW2hdPyh2PW4seD1uKToodj1uK3YvdSx4PW4reC91LGY9bitnLmgvdSxtPW4rZy5sL3UsYj1uK2cubS91KTt2YXIgdz1sLm1vdmUobix5KSxTPWwubW92ZSh2LHkrYS8yKTtyZXR1cm4gby5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJihTPXRoaXMuZ2V0UHJldmlvdXNQYXRoKHAsaCwhMCkpLHc9W2wubW92ZSh2LHkpK2wubGluZSh2LHkrYS8yKStsLmxpbmUoZix5K2EvMikrbC5saW5lKGYseSthLzItYS80KStsLmxpbmUoZix5K2EvMithLzQpK2wubGluZShmLHkrYS8yKStsLmxpbmUodix5K2EvMikrbC5saW5lKHYseSthKStsLmxpbmUoYix5K2EpK2wubGluZShiLHkpK2wubGluZSh2K3IvMix5KSxsLm1vdmUoYix5KStsLmxpbmUoYix5K2EpK2wubGluZSh4LHkrYSkrbC5saW5lKHgseSthLzIpK2wubGluZShtLHkrYS8yKStsLmxpbmUobSx5K2EtYS80KStsLmxpbmUobSx5K2EvNCkrbC5saW5lKG0seSthLzIpK2wubGluZSh4LHkrYS8yKStsLmxpbmUoeCx5KStsLmxpbmUoYix5KSsieiJdLFMrPWwubW92ZSh2LHkpLG8uZ2xvYmFscy5pc1hOdW1lcmljfHwoaSs9cykse3BhdGhUbzp3LHBhdGhGcm9tOlMseDp4LHk6aSxiYXJZUG9zaXRpb246eSxjb2xvcjpkfX19LHtrZXk6ImdldE9ITENWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJue286dGhpcy5pc0JveFBsb3Q/aS5nbG9iYWxzLnNlcmllc0NhbmRsZUhbdF1bZV06aS5nbG9iYWxzLnNlcmllc0NhbmRsZU9bdF1bZV0saDp0aGlzLmlzQm94UGxvdD9pLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1t0XVtlXTppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFt0XVtlXSxtOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVNW3RdW2VdLGw6dGhpcy5pc0JveFBsb3Q/aS5nbG9iYWxzLnNlcmllc0NhbmRsZUNbdF1bZV06aS5nbG9iYWxzLnNlcmllc0NhbmRsZUxbdF1bZV0sYzp0aGlzLmlzQm94UGxvdD9pLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFt0XVtlXTppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1t0XVtlXX19fV0pLGl9KCksRXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIGModCxbe2tleToiY2hlY2tDb2xvclJhbmdlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPSExLGk9dC5jb25maWcucGxvdE9wdGlvbnNbdC5jb25maWcuY2hhcnQudHlwZV07cmV0dXJuIGkuY29sb3JTY2FsZS5yYW5nZXMubGVuZ3RoPjAmJmkuY29sb3JTY2FsZS5yYW5nZXMubWFwKChmdW5jdGlvbih0LGkpe3QuZnJvbTw9MCYmKGU9ITApfSkpLGV9fSx7a2V5OiJnZXRTaGFkZUNvbG9yIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzKXt2YXIgYT10aGlzLncsbj0xLHI9YS5jb25maWcucGxvdE9wdGlvbnNbdF0uc2hhZGVJbnRlbnNpdHksbz10aGlzLmRldGVybWluZUNvbG9yKHQsZSxpKTthLmdsb2JhbHMuaGFzTmVnc3x8cz9uPWEuY29uZmlnLnBsb3RPcHRpb25zW3RdLnJldmVyc2VOZWdhdGl2ZVNoYWRlP28ucGVyY2VudDwwP28ucGVyY2VudC8xMDAqKDEuMjUqcik6KDEtby5wZXJjZW50LzEwMCkqKDEuMjUqcik6by5wZXJjZW50PD0wPzEtKDErby5wZXJjZW50LzEwMCkqcjooMS1vLnBlcmNlbnQvMTAwKSpyOihuPTEtby5wZXJjZW50LzEwMCwidHJlZW1hcCI9PT10JiYobj0oMS1vLnBlcmNlbnQvMTAwKSooMS4yNSpyKSkpO3ZhciBsPW8uY29sb3IsYz1uZXcgYjtyZXR1cm4gYS5jb25maWcucGxvdE9wdGlvbnNbdF0uZW5hYmxlU2hhZGVzJiYobD0iZGFyayI9PT10aGlzLncuY29uZmlnLnRoZW1lLm1vZGU/Yi5oZXhUb1JnYmEoYy5zaGFkZUNvbG9yKC0xKm4sby5jb2xvciksYS5jb25maWcuZmlsbC5vcGFjaXR5KTpiLmhleFRvUmdiYShjLnNoYWRlQ29sb3IobixvLmNvbG9yKSxhLmNvbmZpZy5maWxsLm9wYWNpdHkpKSx7Y29sb3I6bCxjb2xvclByb3BzOm99fX0se2tleToiZGV0ZXJtaW5lQ29sb3IiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLncsYT1zLmdsb2JhbHMuc2VyaWVzW2VdW2ldLG49cy5jb25maWcucGxvdE9wdGlvbnNbdF0scj1uLmNvbG9yU2NhbGUuaW52ZXJzZT9pOmU7bi5kaXN0cmlidXRlZCYmInRyZWVtYXAiPT09cy5jb25maWcuY2hhcnQudHlwZSYmKHI9aSk7dmFyIG89cy5nbG9iYWxzLmNvbG9yc1tyXSxsPW51bGwsYz1NYXRoLm1pbi5hcHBseShNYXRoLG0ocy5nbG9iYWxzLnNlcmllc1tlXSkpLGg9TWF0aC5tYXguYXBwbHkoTWF0aCxtKHMuZ2xvYmFscy5zZXJpZXNbZV0pKTtuLmRpc3RyaWJ1dGVkfHwiaGVhdG1hcCIhPT10fHwoYz1zLmdsb2JhbHMubWluWSxoPXMuZ2xvYmFscy5tYXhZKSx2b2lkIDAhPT1uLmNvbG9yU2NhbGUubWluJiYoYz1uLmNvbG9yU2NhbGUubWluPHMuZ2xvYmFscy5taW5ZP24uY29sb3JTY2FsZS5taW46cy5nbG9iYWxzLm1pblksaD1uLmNvbG9yU2NhbGUubWF4PnMuZ2xvYmFscy5tYXhZP24uY29sb3JTY2FsZS5tYXg6cy5nbG9iYWxzLm1heFkpO3ZhciBkPU1hdGguYWJzKGgpK01hdGguYWJzKGMpLHU9MTAwKmEvKDA9PT1kP2QtMWUtNjpkKTtyZXR1cm4gbi5jb2xvclNjYWxlLnJhbmdlcy5sZW5ndGg+MCYmbi5jb2xvclNjYWxlLnJhbmdlcy5tYXAoKGZ1bmN0aW9uKHQsZSl7aWYoYT49dC5mcm9tJiZhPD10LnRvKXtvPXQuY29sb3IsbD10LmZvcmVDb2xvcj90LmZvcmVDb2xvcjpudWxsLGM9dC5mcm9tLGg9dC50bzt2YXIgaT1NYXRoLmFicyhoKStNYXRoLmFicyhjKTt1PTEwMCphLygwPT09aT9pLTFlLTY6aSl9fSkpLHtjb2xvcjpvLGZvcmVDb2xvcjpsLHBlcmNlbnQ6dX19fSx7a2V5OiJjYWxjdWxhdGVEYXRhTGFiZWxzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnRleHQsaT10Lngscz10LnksYT10Lmksbj10Lmoscj10LmNvbG9yUHJvcHMsbz10LmZvbnRTaXplLGw9dGhpcy53LmNvbmZpZy5kYXRhTGFiZWxzLGM9bmV3IGsodGhpcy5jdHgpLGg9bmV3IEgodGhpcy5jdHgpLGQ9bnVsbDtpZihsLmVuYWJsZWQpe2Q9Yy5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtZGF0YS1sYWJlbHMifSk7dmFyIHU9bC5vZmZzZXRYLHA9bC5vZmZzZXRZLGc9aSt1LGY9cytwYXJzZUZsb2F0KGwuc3R5bGUuZm9udFNpemUpLzMrcDtoLnBsb3REYXRhTGFiZWxzVGV4dCh7eDpnLHk6Zix0ZXh0OmUsaTphLGo6bixjb2xvcjpyLmZvcmVDb2xvcixwYXJlbnQ6ZCxmb250U2l6ZTpvLGRhdGFMYWJlbHNDb25maWc6bH0pfXJldHVybiBkfX0se2tleToiYWRkTGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgayh0aGlzLmN0eCk7dC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLGUucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsZS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGUucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMsdCkpfX1dKSx0fSgpLFR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy54UmF0aW89aS54UmF0aW8sdGhpcy55UmF0aW89aS55UmF0aW8sdGhpcy5keW5hbWljQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbix0aGlzLmhlbHBlcnM9bmV3IEV0KGUpLHRoaXMucmVjdFJhZGl1cz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAucmFkaXVzLHRoaXMuc3Ryb2tlV2lkdGg9dGhpcy53LmNvbmZpZy5zdHJva2Uuc2hvdz90aGlzLncuY29uZmlnLnN0cm9rZS53aWR0aDowfXJldHVybiBjKHQsW3trZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBrKHRoaXMuY3R4KSxzPWkuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLWhlYXRtYXAifSk7cy5hdHRyKCJjbGlwLXBhdGgiLCJ1cmwoI2dyaWRSZWN0TWFzayIuY29uY2F0KGUuZ2xvYmFscy5jdWlkLCIpIikpO3ZhciBhPWUuZ2xvYmFscy5ncmlkV2lkdGgvZS5nbG9iYWxzLmRhdGFQb2ludHMsbj1lLmdsb2JhbHMuZ3JpZEhlaWdodC9lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxyPTAsbz0hMTt0aGlzLm5lZ1JhbmdlPXRoaXMuaGVscGVycy5jaGVja0NvbG9yUmFuZ2UoKTt2YXIgbD10LnNsaWNlKCk7ZS5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQmJihvPSEwLGwucmV2ZXJzZSgpKTtmb3IodmFyIGM9bz8wOmwubGVuZ3RoLTE7bz9jPGwubGVuZ3RoOmM+PTA7bz9jKys6Yy0tKXt2YXIgaD1pLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1oZWF0bWFwLXNlcmllcyIsc2VyaWVzTmFtZTpiLmVzY2FwZVN0cmluZyhlLmdsb2JhbHMuc2VyaWVzTmFtZXNbY10pLHJlbDpjKzEsImRhdGE6cmVhbEluZGV4IjpjfSk7aWYodGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMoaCxjKSxlLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBkPWUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7bmV3IHcodGhpcy5jdHgpLmRyb3BTaGFkb3coaCxkLGMpfWZvcih2YXIgdT0wLHA9ZS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5zaGFkZUludGVuc2l0eSxnPTA7ZzxsW2NdLmxlbmd0aDtnKyspe3ZhciBmPXRoaXMuaGVscGVycy5nZXRTaGFkZUNvbG9yKGUuY29uZmlnLmNoYXJ0LnR5cGUsYyxnLHRoaXMubmVnUmFuZ2UpLG09Zi5jb2xvcix2PWYuY29sb3JQcm9wczsiaW1hZ2UiPT09ZS5jb25maWcuZmlsbC50eXBlJiYobT1uZXcgXyh0aGlzLmN0eCkuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpjLGRhdGFQb2ludEluZGV4Omcsb3BhY2l0eTplLmdsb2JhbHMuaGFzTmVncz92LnBlcmNlbnQ8MD8xLSgxK3YucGVyY2VudC8xMDApOnArdi5wZXJjZW50LzEwMDp2LnBlcmNlbnQvMTAwLHBhdHRlcm5JRDpiLnJhbmRvbUlkKCksd2lkdGg6ZS5jb25maWcuZmlsbC5pbWFnZS53aWR0aD9lLmNvbmZpZy5maWxsLmltYWdlLndpZHRoOmEsaGVpZ2h0OmUuY29uZmlnLmZpbGwuaW1hZ2UuaGVpZ2h0P2UuY29uZmlnLmZpbGwuaW1hZ2UuaGVpZ2h0Om59KSk7dmFyIHg9dGhpcy5yZWN0UmFkaXVzLHk9aS5kcmF3UmVjdCh1LHIsYSxuLHgpO2lmKHkuYXR0cih7Y3g6dSxjeTpyfSkseS5ub2RlLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtaGVhdG1hcC1yZWN0IiksaC5hZGQoeSkseS5hdHRyKHtmaWxsOm0saTpjLGluZGV4OmMsajpnLHZhbDpsW2NdW2ddLCJzdHJva2Utd2lkdGgiOnRoaXMuc3Ryb2tlV2lkdGgsc3Ryb2tlOmUuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAudXNlRmlsbENvbG9yQXNTdHJva2U/bTplLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1swXSxjb2xvcjptfSksdGhpcy5oZWxwZXJzLmFkZExpc3RlbmVycyh5KSxlLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQmJiFlLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciBTPTE7ZS5nbG9iYWxzLnJlc2l6ZWR8fChTPWUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpLHRoaXMuYW5pbWF0ZUhlYXRNYXAoeSx1LHIsYSxuLFMpfWlmKGUuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIEM9MTtpZih0aGlzLmR5bmFtaWNBbmltLmVuYWJsZWQmJmUuZ2xvYmFscy5zaG91bGRBbmltYXRlKXtDPXRoaXMuZHluYW1pY0FuaW0uc3BlZWQ7dmFyIEE9ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbY10mJmUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2NdW2ddJiZlLmdsb2JhbHMucHJldmlvdXNQYXRoc1tjXVtnXS5jb2xvcjtBfHwoQT0icmdiYSgyNTUsIDI1NSwgMjU1LCAwKSIpLHRoaXMuYW5pbWF0ZUhlYXRDb2xvcih5LGIuaXNDb2xvckhleChBKT9BOmIucmdiMmhleChBKSxiLmlzQ29sb3JIZXgobSk/bTpiLnJnYjJoZXgobSksQyl9fXZhciBFPSgwLGUuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKShlLmdsb2JhbHMuc2VyaWVzW2NdW2ddLHt2YWx1ZTplLmdsb2JhbHMuc2VyaWVzW2NdW2ddLHNlcmllc0luZGV4OmMsZGF0YVBvaW50SW5kZXg6Zyx3OmV9KSxUPXRoaXMuaGVscGVycy5jYWxjdWxhdGVEYXRhTGFiZWxzKHt0ZXh0OkUseDp1K2EvMix5OnIrbi8yLGk6YyxqOmcsY29sb3JQcm9wczp2LHNlcmllczpsfSk7bnVsbCE9PVQmJmguYWRkKFQpLHUrPWF9cis9bixzLmFkZChoKX12YXIgTD1lLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQuc2xpY2UoKTtlLmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZD9MLnVuc2hpZnQoIiIpOkwucHVzaCgiIiksZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0PUw7dmFyIFA9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7cmV0dXJuIGUuY29uZmlnLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZPS1QLzIsc319LHtrZXk6ImFuaW1hdGVIZWF0TWFwIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzLGEsbil7dmFyIHI9bmV3IHkodGhpcy5jdHgpO3IuYW5pbWF0ZVJlY3QodCx7eDplK3MvMix5OmkrYS8yLHdpZHRoOjAsaGVpZ2h0OjB9LHt4OmUseTppLHdpZHRoOnMsaGVpZ2h0OmF9LG4sKGZ1bmN0aW9uKCl7ci5hbmltYXRpb25Db21wbGV0ZWQodCl9KSl9fSx7a2V5OiJhbmltYXRlSGVhdENvbG9yIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzKXt0LmF0dHIoe2ZpbGw6ZX0pLmFuaW1hdGUocykuYXR0cih7ZmlsbDppfSl9fV0pLHR9KCksTHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIGModCxbe2tleToiZHJhd1lBeGlzVGV4dHMiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhPXRoaXMudyxuPWEuY29uZmlnLnlheGlzWzBdLHI9YS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF07cmV0dXJuIG5ldyBrKHRoaXMuY3R4KS5kcmF3VGV4dCh7eDp0K24ubGFiZWxzLm9mZnNldFgseTplK24ubGFiZWxzLm9mZnNldFksdGV4dDpyKHMsaSksdGV4dEFuY2hvcjoibWlkZGxlIixmb250U2l6ZTpuLmxhYmVscy5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5Om4ubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkobi5sYWJlbHMuc3R5bGUuY29sb3JzKT9uLmxhYmVscy5zdHlsZS5jb2xvcnNbaV06bi5sYWJlbHMuc3R5bGUuY29sb3JzfSl9fV0pLHR9KCksUHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMuY2hhcnRUeXBlPXRoaXMudy5jb25maWcuY2hhcnQudHlwZSx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCx0aGlzLmFuaW1CZWdpbkFycj1bMF0sdGhpcy5hbmltRHVyPTAsdGhpcy5kb251dERhdGFMYWJlbHM9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQubGFiZWxzLHRoaXMubGluZUNvbG9yQXJyPXZvaWQgMCE9PWkuZ2xvYmFscy5zdHJva2UuY29sb3JzP2kuZ2xvYmFscy5zdHJva2UuY29sb3JzOmkuZ2xvYmFscy5jb2xvcnMsdGhpcy5kZWZhdWx0U2l6ZT1NYXRoLm1pbihpLmdsb2JhbHMuZ3JpZFdpZHRoLGkuZ2xvYmFscy5ncmlkSGVpZ2h0KSx0aGlzLmNlbnRlclk9dGhpcy5kZWZhdWx0U2l6ZS8yLHRoaXMuY2VudGVyWD1pLmdsb2JhbHMuZ3JpZFdpZHRoLzIsInJhZGlhbEJhciI9PT1pLmNvbmZpZy5jaGFydC50eXBlP3RoaXMuZnVsbEFuZ2xlPTM2MDp0aGlzLmZ1bGxBbmdsZT1NYXRoLmFicyhpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZW5kQW5nbGUtaS5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUpLHRoaXMuaW5pdGlhbEFuZ2xlPWkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlJXRoaXMuZnVsbEFuZ2xlLGkuZ2xvYmFscy5yYWRpYWxTaXplPXRoaXMuZGVmYXVsdFNpemUvMi4wNS1pLmNvbmZpZy5zdHJva2Uud2lkdGgtKGkuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkPzA6aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyKSx0aGlzLmRvbnV0U2l6ZT1pLmdsb2JhbHMucmFkaWFsU2l6ZSpwYXJzZUludChpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuc2l6ZSwxMCkvMTAwLHRoaXMubWF4WT0wLHRoaXMuc2xpY2VMYWJlbHM9W10sdGhpcy5zbGljZVNpemVzPVtdLHRoaXMucHJldlNlY3RvckFuZ2xlQXJyPVtdfXJldHVybiBjKHQsW3trZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncscz1uZXcgayh0aGlzLmN0eCk7aWYodGhpcy5yZXQ9cy5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtcGllIn0pLGkuZ2xvYmFscy5ub0RhdGEpcmV0dXJuIHRoaXMucmV0O2Zvcih2YXIgYT0wLG49MDtuPHQubGVuZ3RoO24rKylhKz1iLm5lZ1RvWmVybyh0W25dKTt2YXIgcj1bXSxvPXMuZ3JvdXAoKTswPT09YSYmKGE9MWUtNSksdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLm1heFk9TWF0aC5tYXgoZS5tYXhZLHQpfSkpLGkuY29uZmlnLnlheGlzWzBdLm1heCYmKHRoaXMubWF4WT1pLmNvbmZpZy55YXhpc1swXS5tYXgpLCJiYWNrIj09PWkuY29uZmlnLmdyaWQucG9zaXRpb24mJiJwb2xhckFyZWEiPT09dGhpcy5jaGFydFR5cGUmJnRoaXMuZHJhd1BvbGFyRWxlbWVudHModGhpcy5yZXQpO2Zvcih2YXIgbD0wO2w8dC5sZW5ndGg7bCsrKXt2YXIgYz10aGlzLmZ1bGxBbmdsZSpiLm5lZ1RvWmVybyh0W2xdKS9hO3IucHVzaChjKSwicG9sYXJBcmVhIj09PXRoaXMuY2hhcnRUeXBlPyhyW2xdPXRoaXMuZnVsbEFuZ2xlL3QubGVuZ3RoLHRoaXMuc2xpY2VTaXplcy5wdXNoKGkuZ2xvYmFscy5yYWRpYWxTaXplKnRbbF0vdGhpcy5tYXhZKSk6dGhpcy5zbGljZVNpemVzLnB1c2goaS5nbG9iYWxzLnJhZGlhbFNpemUpfWlmKGkuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7Zm9yKHZhciBoLGQ9MCx1PTA7dTxpLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7dSsrKWQrPWIubmVnVG9aZXJvKGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3VdKTtmb3IodmFyIHA9MDtwPGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtwKyspaD10aGlzLmZ1bGxBbmdsZSpiLm5lZ1RvWmVybyhpLmdsb2JhbHMucHJldmlvdXNQYXRoc1twXSkvZCx0aGlzLnByZXZTZWN0b3JBbmdsZUFyci5wdXNoKGgpfXRoaXMuZG9udXRTaXplPDAmJih0aGlzLmRvbnV0U2l6ZT0wKTt2YXIgZz1pLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuY3VzdG9tU2NhbGUsZj1pLmdsb2JhbHMuZ3JpZFdpZHRoLzIsbT1pLmdsb2JhbHMuZ3JpZEhlaWdodC8yLHY9Zi1pLmdsb2JhbHMuZ3JpZFdpZHRoLzIqZyx4PW0taS5nbG9iYWxzLmdyaWRIZWlnaHQvMipnO2lmKCJkb251dCI9PT10aGlzLmNoYXJ0VHlwZSl7dmFyIHk9cy5kcmF3Q2lyY2xlKHRoaXMuZG9udXRTaXplKTt5LmF0dHIoe2N4OnRoaXMuY2VudGVyWCxjeTp0aGlzLmNlbnRlclksZmlsbDppLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuYmFja2dyb3VuZD9pLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuYmFja2dyb3VuZDoidHJhbnNwYXJlbnQifSksby5hZGQoeSl9dmFyIHc9dGhpcy5kcmF3QXJjcyhyLHQpO2lmKHRoaXMuc2xpY2VMYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dy5hZGQodCl9KSksby5hdHRyKHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgiLmNvbmNhdCh2LCIsICIpLmNvbmNhdCh4LCIpIHNjYWxlKCIpLmNvbmNhdChnLCIpIil9KSxvLmFkZCh3KSx0aGlzLnJldC5hZGQobyksdGhpcy5kb251dERhdGFMYWJlbHMuc2hvdyl7dmFyIFM9dGhpcy5yZW5kZXJJbm5lckRhdGFMYWJlbHModGhpcy5kb251dERhdGFMYWJlbHMse2hvbGxvd1NpemU6dGhpcy5kb251dFNpemUsY2VudGVyWDp0aGlzLmNlbnRlclgsY2VudGVyWTp0aGlzLmNlbnRlclksb3BhY2l0eTp0aGlzLmRvbnV0RGF0YUxhYmVscy5zaG93LHRyYW5zbGF0ZVg6dix0cmFuc2xhdGVZOnh9KTt0aGlzLnJldC5hZGQoUyl9cmV0dXJuImZyb250Ij09PWkuY29uZmlnLmdyaWQucG9zaXRpb24mJiJwb2xhckFyZWEiPT09dGhpcy5jaGFydFR5cGUmJnRoaXMuZHJhd1BvbGFyRWxlbWVudHModGhpcy5yZXQpLHRoaXMucmV0fX0se2tleToiZHJhd0FyY3MiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9bmV3IHcodGhpcy5jdHgpLGE9bmV3IGsodGhpcy5jdHgpLG49bmV3IF8odGhpcy5jdHgpLHI9YS5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtc2xpY2VzIn0pLG89dGhpcy5pbml0aWFsQW5nbGUsbD10aGlzLmluaXRpYWxBbmdsZSxjPXRoaXMuaW5pdGlhbEFuZ2xlLGg9dGhpcy5pbml0aWFsQW5nbGU7dGhpcy5zdHJva2VXaWR0aD1pLmNvbmZpZy5zdHJva2Uuc2hvdz9pLmNvbmZpZy5zdHJva2Uud2lkdGg6MDtmb3IodmFyIGQ9MDtkPHQubGVuZ3RoO2QrKyl7dmFyIHU9YS5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtc2VyaWVzIGFwZXhjaGFydHMtcGllLXNlcmllcyIsc2VyaWVzTmFtZTpiLmVzY2FwZVN0cmluZyhpLmdsb2JhbHMuc2VyaWVzTmFtZXNbZF0pLHJlbDpkKzEsImRhdGE6cmVhbEluZGV4IjpkfSk7ci5hZGQodSksbD1oLGM9KG89YykrdFtkXSxoPWwrdGhpcy5wcmV2U2VjdG9yQW5nbGVBcnJbZF07dmFyIHA9YzxvP3RoaXMuZnVsbEFuZ2xlK2MtbzpjLW8sZz1uLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6ZCxzaXplOnRoaXMuc2xpY2VTaXplc1tkXSx2YWx1ZTplW2RdfSksZj10aGlzLmdldENoYW5nZWRQYXRoKGwsaCksbT1hLmRyYXdQYXRoKHtkOmYsc3Ryb2tlOkFycmF5LmlzQXJyYXkodGhpcy5saW5lQ29sb3JBcnIpP3RoaXMubGluZUNvbG9yQXJyW2RdOnRoaXMubGluZUNvbG9yQXJyLHN0cm9rZVdpZHRoOjAsZmlsbDpnLGZpbGxPcGFjaXR5OmkuY29uZmlnLmZpbGwub3BhY2l0eSxjbGFzc2VzOiJhcGV4Y2hhcnRzLXBpZS1hcmVhIGFwZXhjaGFydHMtIi5jb25jYXQodGhpcy5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSwiLXNsaWNlLSIpLmNvbmNhdChkKX0pO2lmKG0uYXR0cih7aW5kZXg6MCxqOmR9KSxzLnNldFNlbGVjdGlvbkZpbHRlcihtLDAsZCksaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgdj1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O3MuZHJvcFNoYWRvdyhtLHYsZCl9dGhpcy5hZGRMaXN0ZW5lcnMobSx0aGlzLmRvbnV0RGF0YUxhYmVscyksay5zZXRBdHRycyhtLm5vZGUseyJkYXRhOmFuZ2xlIjpwLCJkYXRhOnN0YXJ0QW5nbGUiOm8sImRhdGE6c3Ryb2tlV2lkdGgiOnRoaXMuc3Ryb2tlV2lkdGgsImRhdGE6dmFsdWUiOmVbZF19KTt2YXIgeD17eDowLHk6MH07InBpZSI9PT10aGlzLmNoYXJ0VHlwZXx8InBvbGFyQXJlYSI9PT10aGlzLmNoYXJ0VHlwZT94PWIucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLGkuZ2xvYmFscy5yYWRpYWxTaXplLzEuMjUraS5jb25maWcucGxvdE9wdGlvbnMucGllLmRhdGFMYWJlbHMub2Zmc2V0LChvK3AvMikldGhpcy5mdWxsQW5nbGUpOiJkb251dCI9PT10aGlzLmNoYXJ0VHlwZSYmKHg9Yi5wb2xhclRvQ2FydGVzaWFuKHRoaXMuY2VudGVyWCx0aGlzLmNlbnRlclksKGkuZ2xvYmFscy5yYWRpYWxTaXplK3RoaXMuZG9udXRTaXplKS8yK2kuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kYXRhTGFiZWxzLm9mZnNldCwobytwLzIpJXRoaXMuZnVsbEFuZ2xlKSksdS5hZGQobSk7dmFyIHk9MDtpZighdGhpcy5pbml0aWFsQW5pbXx8aS5nbG9iYWxzLnJlc2l6ZWR8fGkuZ2xvYmFscy5kYXRhQ2hhbmdlZD90aGlzLmFuaW1CZWdpbkFyci5wdXNoKDApOigwPT0oeT1wL3RoaXMuZnVsbEFuZ2xlKmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpJiYoeT0xKSx0aGlzLmFuaW1EdXI9eSt0aGlzLmFuaW1EdXIsdGhpcy5hbmltQmVnaW5BcnIucHVzaCh0aGlzLmFuaW1EdXIpKSx0aGlzLmR5bmFtaWNBbmltJiZpLmdsb2JhbHMuZGF0YUNoYW5nZWQ/dGhpcy5hbmltYXRlUGF0aHMobSx7c2l6ZTp0aGlzLnNsaWNlU2l6ZXNbZF0sZW5kQW5nbGU6YyxzdGFydEFuZ2xlOm8scHJldlN0YXJ0QW5nbGU6bCxwcmV2RW5kQW5nbGU6aCxhbmltYXRlU3RhcnRpbmdQb3M6ITAsaTpkLGFuaW1CZWdpbkFycjp0aGlzLmFuaW1CZWdpbkFycixzaG91bGRTZXRQcmV2UGF0aHM6ITAsZHVyOmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZH0pOnRoaXMuYW5pbWF0ZVBhdGhzKG0se3NpemU6dGhpcy5zbGljZVNpemVzW2RdLGVuZEFuZ2xlOmMsc3RhcnRBbmdsZTpvLGk6ZCx0b3RhbEl0ZW1zOnQubGVuZ3RoLTEsYW5pbUJlZ2luQXJyOnRoaXMuYW5pbUJlZ2luQXJyLGR1cjp5fSksaS5jb25maWcucGxvdE9wdGlvbnMucGllLmV4cGFuZE9uQ2xpY2smJiJwb2xhckFyZWEiIT09dGhpcy5jaGFydFR5cGUmJm0uY2xpY2sodGhpcy5waWVDbGlja2VkLmJpbmQodGhpcyxkKSksdm9pZCAwIT09aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXSYmaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5pbmRleE9mKGQpPi0xJiZ0aGlzLnBpZUNsaWNrZWQoZCksaS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkKXt2YXIgUz14LngsQz14LnksQT0xMDAqcC90aGlzLmZ1bGxBbmdsZSsiJSI7aWYoMCE9PXAmJmkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kYXRhTGFiZWxzLm1pbkFuZ2xlVG9TaG93TGFiZWw8dFtkXSl7dmFyIEU9aS5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXI7dm9pZCAwIT09RSYmKEE9RShpLmdsb2JhbHMuc2VyaWVzUGVyY2VudFtkXVswXSx7c2VyaWVzSW5kZXg6ZCx3Oml9KSk7dmFyIFQ9aS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW2RdLEw9YS5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtZGF0YWxhYmVscyJ9KSxQPWEuZHJhd1RleHQoe3g6Uyx5OkMsdGV4dDpBLHRleHRBbmNob3I6Im1pZGRsZSIsZm9udFNpemU6aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OmkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6VH0pO2lmKEwuYWRkKFApLGkuY29uZmlnLmRhdGFMYWJlbHMuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgTT1pLmNvbmZpZy5kYXRhTGFiZWxzLmRyb3BTaGFkb3c7cy5kcm9wU2hhZG93KFAsTSl9UC5ub2RlLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtcGllLWxhYmVsIiksaS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlJiYhMT09PWkuZ2xvYmFscy5yZXNpemVkJiYoUC5ub2RlLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtcGllLWxhYmVsLWRlbGF5IiksUC5ub2RlLnN0eWxlLmFuaW1hdGlvbkRlbGF5PWkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQvOTQwKyJzIiksdGhpcy5zbGljZUxhYmVscy5wdXNoKEwpfX19cmV0dXJuIHJ9fSx7a2V5OiJhZGRMaXN0ZW5lcnMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9bmV3IGsodGhpcy5jdHgpO3Qubm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIixpLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLGkucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsdGhpcy5yZXZlcnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLHQubm9kZSxlKSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsaS5wYXRoTW91c2VEb3duLmJpbmQodGhpcyx0KSksdGhpcy5kb251dERhdGFMYWJlbHMudG90YWwuc2hvd0Fsd2F5c3x8KHQubm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIix0aGlzLnByaW50RGF0YUxhYmVsc0lubmVyLmJpbmQodGhpcyx0Lm5vZGUsZSkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLHQubm9kZSxlKSkpfX0se2tleToiYW5pbWF0ZVBhdGhzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPWUuZW5kQW5nbGU8ZS5zdGFydEFuZ2xlP3RoaXMuZnVsbEFuZ2xlK2UuZW5kQW5nbGUtZS5zdGFydEFuZ2xlOmUuZW5kQW5nbGUtZS5zdGFydEFuZ2xlLGE9cyxuPWUuc3RhcnRBbmdsZSxyPWUuc3RhcnRBbmdsZTt2b2lkIDAhPT1lLnByZXZTdGFydEFuZ2xlJiZ2b2lkIDAhPT1lLnByZXZFbmRBbmdsZSYmKG49ZS5wcmV2RW5kQW5nbGUsYT1lLnByZXZFbmRBbmdsZTxlLnByZXZTdGFydEFuZ2xlP3RoaXMuZnVsbEFuZ2xlK2UucHJldkVuZEFuZ2xlLWUucHJldlN0YXJ0QW5nbGU6ZS5wcmV2RW5kQW5nbGUtZS5wcmV2U3RhcnRBbmdsZSksZS5pPT09aS5jb25maWcuc2VyaWVzLmxlbmd0aC0xJiYocytyPnRoaXMuZnVsbEFuZ2xlP2UuZW5kQW5nbGU9ZS5lbmRBbmdsZS0ocytyKTpzK3I8dGhpcy5mdWxsQW5nbGUmJihlLmVuZEFuZ2xlPWUuZW5kQW5nbGUrKHRoaXMuZnVsbEFuZ2xlLShzK3IpKSkpLHM9PT10aGlzLmZ1bGxBbmdsZSYmKHM9dGhpcy5mdWxsQW5nbGUtLjAxKSx0aGlzLmFuaW1hdGVBcmModCxuLHIscyxhLGUpfX0se2tleToiYW5pbWF0ZUFyYyIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyxhLG4pe3ZhciByLG89dGhpcyxsPXRoaXMudyxjPW5ldyB5KHRoaXMuY3R4KSxoPW4uc2l6ZTsoaXNOYU4oZSl8fGlzTmFOKGEpKSYmKGU9aSxhPXMsbi5kdXI9MCk7dmFyIGQ9cyx1PWkscD1lPGk/dGhpcy5mdWxsQW5nbGUrZS1pOmUtaTtsLmdsb2JhbHMuZGF0YUNoYW5nZWQmJm4uc2hvdWxkU2V0UHJldlBhdGhzJiZuLnByZXZFbmRBbmdsZSYmKHI9by5nZXRQaWVQYXRoKHttZTpvLHN0YXJ0QW5nbGU6bi5wcmV2U3RhcnRBbmdsZSxhbmdsZTpuLnByZXZFbmRBbmdsZTxuLnByZXZTdGFydEFuZ2xlP3RoaXMuZnVsbEFuZ2xlK24ucHJldkVuZEFuZ2xlLW4ucHJldlN0YXJ0QW5nbGU6bi5wcmV2RW5kQW5nbGUtbi5wcmV2U3RhcnRBbmdsZSxzaXplOmh9KSx0LmF0dHIoe2Q6cn0pKSwwIT09bi5kdXI/dC5hbmltYXRlKG4uZHVyLGwuZ2xvYmFscy5lYXNpbmcsbi5hbmltQmVnaW5BcnJbbi5pXSkuYWZ0ZXJBbGwoKGZ1bmN0aW9uKCl7InBpZSIhPT1vLmNoYXJ0VHlwZSYmImRvbnV0IiE9PW8uY2hhcnRUeXBlJiYicG9sYXJBcmVhIiE9PW8uY2hhcnRUeXBlfHx0aGlzLmFuaW1hdGUobC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkKS5hdHRyKHsic3Ryb2tlLXdpZHRoIjpvLnN0cm9rZVdpZHRofSksbi5pPT09bC5jb25maWcuc2VyaWVzLmxlbmd0aC0xJiZjLmFuaW1hdGlvbkNvbXBsZXRlZCh0KX0pKS5kdXJpbmcoKGZ1bmN0aW9uKGwpe2Q9cCsocy1wKSpsLG4uYW5pbWF0ZVN0YXJ0aW5nUG9zJiYoZD1hKyhzLWEpKmwsdT1lLWErKGktKGUtYSkpKmwpLHI9by5nZXRQaWVQYXRoKHttZTpvLHN0YXJ0QW5nbGU6dSxhbmdsZTpkLHNpemU6aH0pLHQubm9kZS5zZXRBdHRyaWJ1dGUoImRhdGE6cGF0aE9yaWciLHIpLHQuYXR0cih7ZDpyfSl9KSk6KHI9by5nZXRQaWVQYXRoKHttZTpvLHN0YXJ0QW5nbGU6dSxhbmdsZTpzLHNpemU6aH0pLG4uaXNUcmFja3x8KGwuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCksdC5ub2RlLnNldEF0dHJpYnV0ZSgiZGF0YTpwYXRoT3JpZyIsciksdC5hdHRyKHtkOnIsInN0cm9rZS13aWR0aCI6by5zdHJva2VXaWR0aH0pKX19LHtrZXk6InBpZUNsaWNrZWQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy53LHM9dGhpcyxhPXMuc2xpY2VTaXplc1t0XSsoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmV4cGFuZE9uQ2xpY2s/NDowKSxuPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KCIuYXBleGNoYXJ0cy0iLmNvbmNhdChzLmNoYXJ0VHlwZS50b0xvd2VyQ2FzZSgpLCItc2xpY2UtIikuY29uY2F0KHQpKS5tZW1iZXJzWzBdO2lmKCJ0cnVlIiE9PW4uYXR0cigiZGF0YTpwaWVDbGlja2VkIikpe3ZhciByPWkuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFwZXhjaGFydHMtcGllLWFyZWEiKTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHIsKGZ1bmN0aW9uKHQpe3Quc2V0QXR0cmlidXRlKCJkYXRhOnBpZUNsaWNrZWQiLCJmYWxzZSIpO3ZhciBlPXQuZ2V0QXR0cmlidXRlKCJkYXRhOnBhdGhPcmlnIik7dC5zZXRBdHRyaWJ1dGUoImQiLGUpfSkpLG4uYXR0cigiZGF0YTpwaWVDbGlja2VkIiwidHJ1ZSIpO3ZhciBvPXBhcnNlSW50KG4uYXR0cigiZGF0YTpzdGFydEFuZ2xlIiksMTApLGw9cGFyc2VJbnQobi5hdHRyKCJkYXRhOmFuZ2xlIiksMTApO2U9cy5nZXRQaWVQYXRoKHttZTpzLHN0YXJ0QW5nbGU6byxhbmdsZTpsLHNpemU6YX0pLDM2MCE9PWwmJm4ucGxvdChlKX1lbHNle24uYXR0cih7ImRhdGE6cGllQ2xpY2tlZCI6ImZhbHNlIn0pLHRoaXMucmV2ZXJ0RGF0YUxhYmVsc0lubmVyKG4ubm9kZSx0aGlzLmRvbnV0RGF0YUxhYmVscyk7dmFyIGM9bi5hdHRyKCJkYXRhOnBhdGhPcmlnIik7bi5hdHRyKHtkOmN9KX19fSx7a2V5OiJnZXRDaGFuZ2VkUGF0aCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT0iIjtyZXR1cm4gdGhpcy5keW5hbWljQW5pbSYmdGhpcy53Lmdsb2JhbHMuZGF0YUNoYW5nZWQmJihpPXRoaXMuZ2V0UGllUGF0aCh7bWU6dGhpcyxzdGFydEFuZ2xlOnQsYW5nbGU6ZS10LHNpemU6dGhpcy5zaXplfSkpLGl9fSx7a2V5OiJnZXRQaWVQYXRoIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10Lm1lLGk9dC5zdGFydEFuZ2xlLHM9dC5hbmdsZSxhPXQuc2l6ZSxuPWkscj1NYXRoLlBJKihuLTkwKS8xODAsbz1zK2k7TWF0aC5jZWlsKG8pPj10aGlzLmZ1bGxBbmdsZSt0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlJXRoaXMuZnVsbEFuZ2xlJiYobz10aGlzLmZ1bGxBbmdsZSt0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlJXRoaXMuZnVsbEFuZ2xlLS4wMSksTWF0aC5jZWlsKG8pPnRoaXMuZnVsbEFuZ2xlJiYoby09dGhpcy5mdWxsQW5nbGUpO3ZhciBsPU1hdGguUEkqKG8tOTApLzE4MCxjPWUuY2VudGVyWCthKk1hdGguY29zKHIpLGg9ZS5jZW50ZXJZK2EqTWF0aC5zaW4ociksZD1lLmNlbnRlclgrYSpNYXRoLmNvcyhsKSx1PWUuY2VudGVyWSthKk1hdGguc2luKGwpLHA9Yi5wb2xhclRvQ2FydGVzaWFuKGUuY2VudGVyWCxlLmNlbnRlclksZS5kb251dFNpemUsbyksZz1iLnBvbGFyVG9DYXJ0ZXNpYW4oZS5jZW50ZXJYLGUuY2VudGVyWSxlLmRvbnV0U2l6ZSxuKSxmPXM+MTgwPzE6MCxtPVsiTSIsYyxoLCJBIixhLGEsMCxmLDEsZCx1XTtyZXR1cm4iZG9udXQiPT09ZS5jaGFydFR5cGU/W10uY29uY2F0KG0sWyJMIixwLngscC55LCJBIixlLmRvbnV0U2l6ZSxlLmRvbnV0U2l6ZSwwLGYsMCxnLngsZy55LCJMIixjLGgsInoiXSkuam9pbigiICIpOiJwaWUiPT09ZS5jaGFydFR5cGV8fCJwb2xhckFyZWEiPT09ZS5jaGFydFR5cGU/W10uY29uY2F0KG0sWyJMIixlLmNlbnRlclgsZS5jZW50ZXJZLCJMIixjLGhdKS5qb2luKCIgIik6W10uY29uY2F0KG0pLmpvaW4oIiAiKX19LHtrZXk6ImRyYXdQb2xhckVsZW1lbnRzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgcSh0aGlzLmN0eCkscz1uZXcgayh0aGlzLmN0eCksYT1uZXcgTHQodGhpcy5jdHgpLG49cy5ncm91cCgpLHI9cy5ncm91cCgpLG89aS5uaWNlU2NhbGUoMCxNYXRoLmNlaWwodGhpcy5tYXhZKSxlLmNvbmZpZy55YXhpc1swXS50aWNrQW1vdW50LDAsITApLGw9by5yZXN1bHQucmV2ZXJzZSgpLGM9by5yZXN1bHQubGVuZ3RoO3RoaXMubWF4WT1vLm5pY2VNYXg7Zm9yKHZhciBoPWUuZ2xvYmFscy5yYWRpYWxTaXplLGQ9aC8oYy0xKSx1PTA7dTxjLTE7dSsrKXt2YXIgcD1zLmRyYXdDaXJjbGUoaCk7aWYocC5hdHRyKHtjeDp0aGlzLmNlbnRlclgsY3k6dGhpcy5jZW50ZXJZLGZpbGw6Im5vbmUiLCJzdHJva2Utd2lkdGgiOmUuY29uZmlnLnBsb3RPcHRpb25zLnBvbGFyQXJlYS5yaW5ncy5zdHJva2VXaWR0aCxzdHJva2U6ZS5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnJpbmdzLnN0cm9rZUNvbG9yfSksZS5jb25maWcueWF4aXNbMF0uc2hvdyl7dmFyIGc9YS5kcmF3WUF4aXNUZXh0cyh0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLWgrcGFyc2VJbnQoZS5jb25maWcueWF4aXNbMF0ubGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS8yLHUsbFt1XSk7ci5hZGQoZyl9bi5hZGQocCksaC09ZH10aGlzLmRyYXdTcG9rZXModCksdC5hZGQobiksdC5hZGQocil9fSx7a2V5OiJyZW5kZXJJbm5lckRhdGFMYWJlbHMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9bmV3IGsodGhpcy5jdHgpLGE9cy5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cCIsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoIi5jb25jYXQoZS50cmFuc2xhdGVYP2UudHJhbnNsYXRlWDowLCIsICIpLmNvbmNhdChlLnRyYW5zbGF0ZVk/ZS50cmFuc2xhdGVZOjAsIikgc2NhbGUoIikuY29uY2F0KGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5jdXN0b21TY2FsZSwiKSIpfSksbj10LnRvdGFsLnNob3c7YS5ub2RlLnN0eWxlLm9wYWNpdHk9ZS5vcGFjaXR5O3ZhciByLG8sbD1lLmNlbnRlclgsYz1lLmNlbnRlclk7cj12b2lkIDA9PT10Lm5hbWUuY29sb3I/aS5nbG9iYWxzLmNvbG9yc1swXTp0Lm5hbWUuY29sb3I7dmFyIGg9dC5uYW1lLmZvbnRTaXplLGQ9dC5uYW1lLmZvbnRGYW1pbHksdT10Lm5hbWUuZm9udFdlaWdodDtvPXZvaWQgMD09PXQudmFsdWUuY29sb3I/aS5jb25maWcuY2hhcnQuZm9yZUNvbG9yOnQudmFsdWUuY29sb3I7dmFyIHA9dC52YWx1ZS5mb3JtYXR0ZXIsZz0iIixmPSIiO2lmKG4/KHI9dC50b3RhbC5jb2xvcixoPXQudG90YWwuZm9udFNpemUsZD10LnRvdGFsLmZvbnRGYW1pbHksdT10LnRvdGFsLmZvbnRXZWlnaHQsZj10LnRvdGFsLmxhYmVsLGc9dC50b3RhbC5mb3JtYXR0ZXIoaSkpOjE9PT1pLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCYmKGc9cChpLmdsb2JhbHMuc2VyaWVzWzBdLGkpLGY9aS5nbG9iYWxzLnNlcmllc05hbWVzWzBdKSxmJiYoZj10Lm5hbWUuZm9ybWF0dGVyKGYsdC50b3RhbC5zaG93LGkpKSx0Lm5hbWUuc2hvdyl7dmFyIG09cy5kcmF3VGV4dCh7eDpsLHk6YytwYXJzZUZsb2F0KHQubmFtZS5vZmZzZXRZKSx0ZXh0OmYsdGV4dEFuY2hvcjoibWlkZGxlIixmb3JlQ29sb3I6cixmb250U2l6ZTpoLGZvbnRXZWlnaHQ6dSxmb250RmFtaWx5OmR9KTttLm5vZGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1kYXRhbGFiZWwtbGFiZWwiKSxhLmFkZChtKX1pZih0LnZhbHVlLnNob3cpe3ZhciB2PXQubmFtZS5zaG93P3BhcnNlRmxvYXQodC52YWx1ZS5vZmZzZXRZKSsxNjp0LnZhbHVlLm9mZnNldFkseD1zLmRyYXdUZXh0KHt4OmwseTpjK3YsdGV4dDpnLHRleHRBbmNob3I6Im1pZGRsZSIsZm9yZUNvbG9yOm8sZm9udFdlaWdodDp0LnZhbHVlLmZvbnRXZWlnaHQsZm9udFNpemU6dC52YWx1ZS5mb250U2l6ZSxmb250RmFtaWx5OnQudmFsdWUuZm9udEZhbWlseX0pO3gubm9kZS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWRhdGFsYWJlbC12YWx1ZSIpLGEuYWRkKHgpfXJldHVybiBhfX0se2tleToicHJpbnRJbm5lckxhYmVscyIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyl7dmFyIGEsbj10aGlzLnc7cz9hPXZvaWQgMD09PXQubmFtZS5jb2xvcj9uLmdsb2JhbHMuY29sb3JzW3BhcnNlSW50KHMucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoInJlbCIpLDEwKS0xXTp0Lm5hbWUuY29sb3I6bi5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmdC50b3RhbC5zaG93JiYoYT10LnRvdGFsLmNvbG9yKTt2YXIgcj1uLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1kYXRhbGFiZWwtbGFiZWwiKSxvPW4uZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbC12YWx1ZSIpO2k9KDAsdC52YWx1ZS5mb3JtYXR0ZXIpKGksbiksc3x8ImZ1bmN0aW9uIiE9dHlwZW9mIHQudG90YWwuZm9ybWF0dGVyfHwoaT10LnRvdGFsLmZvcm1hdHRlcihuKSk7dmFyIGw9ZT09PXQudG90YWwubGFiZWw7ZT10Lm5hbWUuZm9ybWF0dGVyKGUsbCxuKSxudWxsIT09ciYmKHIudGV4dENvbnRlbnQ9ZSksbnVsbCE9PW8mJihvLnRleHRDb250ZW50PWkpLG51bGwhPT1yJiYoci5zdHlsZS5maWxsPWEpfX0se2tleToicHJpbnREYXRhTGFiZWxzSW5uZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9dC5nZXRBdHRyaWJ1dGUoImRhdGE6dmFsdWUiKSxhPWkuZ2xvYmFscy5zZXJpZXNOYW1lc1twYXJzZUludCh0LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCJyZWwiKSwxMCktMV07aS5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmdGhpcy5wcmludElubmVyTGFiZWxzKGUsYSxzLHQpO3ZhciBuPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMtZ3JvdXAiKTtudWxsIT09biYmKG4uc3R5bGUub3BhY2l0eT0xKX19LHtrZXk6ImRyYXdTcG9rZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncscz1uZXcgayh0aGlzLmN0eCksYT1pLmNvbmZpZy5wbG90T3B0aW9ucy5wb2xhckFyZWEuc3Bva2VzO2lmKDAhPT1hLnN0cm9rZVdpZHRoKXtmb3IodmFyIG49W10scj0zNjAvaS5nbG9iYWxzLnNlcmllcy5sZW5ndGgsbz0wO288aS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7bysrKW4ucHVzaChiLnBvbGFyVG9DYXJ0ZXNpYW4odGhpcy5jZW50ZXJYLHRoaXMuY2VudGVyWSxpLmdsb2JhbHMucmFkaWFsU2l6ZSxpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZStyKm8pKTtuLmZvckVhY2goKGZ1bmN0aW9uKGksbil7dmFyIHI9cy5kcmF3TGluZShpLngsaS55LGUuY2VudGVyWCxlLmNlbnRlclksQXJyYXkuaXNBcnJheShhLmNvbm5lY3RvckNvbG9ycyk/YS5jb25uZWN0b3JDb2xvcnNbbl06YS5jb25uZWN0b3JDb2xvcnMpO3QuYWRkKHIpfSkpfX19LHtrZXk6InJldmVydERhdGFMYWJlbHNJbm5lciIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXMsYT10aGlzLncsbj1hLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzLWdyb3VwIikscj0hMSxvPWEuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFwZXhjaGFydHMtcGllLWFyZWEiKSxsPWZ1bmN0aW9uKHQpe3ZhciBpPXQubWFrZVNsaWNlT3V0LGE9dC5wcmludExhYmVsO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobywoZnVuY3Rpb24odCl7InRydWUiPT09dC5nZXRBdHRyaWJ1dGUoImRhdGE6cGllQ2xpY2tlZCIpJiYoaSYmKHI9ITApLGEmJnMucHJpbnREYXRhTGFiZWxzSW5uZXIodCxlKSl9KSl9O2lmKGwoe21ha2VTbGljZU91dDohMCxwcmludExhYmVsOiExfSksZS50b3RhbC5zaG93JiZhLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xKXImJiFlLnRvdGFsLnNob3dBbHdheXM/bCh7bWFrZVNsaWNlT3V0OiExLHByaW50TGFiZWw6ITB9KTp0aGlzLnByaW50SW5uZXJMYWJlbHMoZSxlLnRvdGFsLmxhYmVsLGUudG90YWwuZm9ybWF0dGVyKGEpKTtlbHNlIGlmKGwoe21ha2VTbGljZU91dDohMSxwcmludExhYmVsOiEwfSksIXIpaWYoYS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cy5sZW5ndGgmJmEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEpaWYoYS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5sZW5ndGg+MCl7dmFyIGM9YS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXSxoPWEuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLSIuY29uY2F0KHRoaXMuY2hhcnRUeXBlLnRvTG93ZXJDYXNlKCksIi1zbGljZS0iKS5jb25jYXQoYykpO3RoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIoaCxlKX1lbHNlIG4mJmEuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMubGVuZ3RoJiYwPT09YS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5sZW5ndGgmJihuLnN0eWxlLm9wYWNpdHk9MCk7ZWxzZSBuJiZhLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiYobi5zdHlsZS5vcGFjaXR5PTApfX1dKSx0fSgpLE10PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuY2hhcnRUeXBlPXRoaXMudy5jb25maWcuY2hhcnQudHlwZSx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCx0aGlzLmFuaW1EdXI9MDt2YXIgaT10aGlzLnc7dGhpcy5ncmFwaGljcz1uZXcgayh0aGlzLmN0eCksdGhpcy5saW5lQ29sb3JBcnI9dm9pZCAwIT09aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM/aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6aS5nbG9iYWxzLmNvbG9ycyx0aGlzLmRlZmF1bHRTaXplPWkuZ2xvYmFscy5zdmdIZWlnaHQ8aS5nbG9iYWxzLnN2Z1dpZHRoP2kuZ2xvYmFscy5ncmlkSGVpZ2h0KzEuNSppLmdsb2JhbHMuZ29sZGVuUGFkZGluZzppLmdsb2JhbHMuZ3JpZFdpZHRoLHRoaXMuaXNMb2c9aS5jb25maWcueWF4aXNbMF0ubG9nYXJpdGhtaWMsdGhpcy5jb3JlVXRpbHM9bmV3IFModGhpcy5jdHgpLHRoaXMubWF4VmFsdWU9dGhpcy5pc0xvZz90aGlzLmNvcmVVdGlscy5nZXRMb2dWYWwoaS5nbG9iYWxzLm1heFksMCk6aS5nbG9iYWxzLm1heFksdGhpcy5taW5WYWx1ZT10aGlzLmlzTG9nP3RoaXMuY29yZVV0aWxzLmdldExvZ1ZhbCh0aGlzLncuZ2xvYmFscy5taW5ZLDApOmkuZ2xvYmFscy5taW5ZLHRoaXMucG9seWdvbnM9aS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMsdGhpcy5zdHJva2VXaWR0aD1pLmNvbmZpZy5zdHJva2Uuc2hvdz9pLmNvbmZpZy5zdHJva2Uud2lkdGg6MCx0aGlzLnNpemU9dGhpcy5kZWZhdWx0U2l6ZS8yLjEtdGhpcy5zdHJva2VXaWR0aC1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmJsdXIsaS5jb25maWcueGF4aXMubGFiZWxzLnNob3cmJih0aGlzLnNpemU9dGhpcy5zaXplLWkuZ2xvYmFscy54QXhpc0xhYmVsc1dpZHRoLzEuNzUpLHZvaWQgMCE9PWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnNpemUmJih0aGlzLnNpemU9aS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIuc2l6ZSksdGhpcy5kYXRhUmFkaXVzT2ZQZXJjZW50PVtdLHRoaXMuZGF0YVJhZGl1cz1bXSx0aGlzLmFuZ2xlQXJyPVtdLHRoaXMueWF4aXNMYWJlbHNUZXh0c1Bvcz1bXX1yZXR1cm4gYyh0LFt7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LHM9bmV3IF8odGhpcy5jdHgpLGE9W10scj1uZXcgSCh0aGlzLmN0eCk7dC5sZW5ndGgmJih0aGlzLmRhdGFQb2ludHNMZW49dFtpLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoKSx0aGlzLmRpc0FuZ2xlPTIqTWF0aC5QSS90aGlzLmRhdGFQb2ludHNMZW47dmFyIG89aS5nbG9iYWxzLmdyaWRXaWR0aC8yLGw9aS5nbG9iYWxzLmdyaWRIZWlnaHQvMixjPW8raS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIub2Zmc2V0WCxoPWwraS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIub2Zmc2V0WSxkPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzIix0cmFuc2Zvcm06InRyYW5zbGF0ZSgiLmNvbmNhdChjfHwwLCIsICIpLmNvbmNhdChofHwwLCIpIil9KSx1PVtdLHA9bnVsbCxnPW51bGw7aWYodGhpcy55YXhpc0xhYmVscz10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy15YXhpcyJ9KSx0LmZvckVhY2goKGZ1bmN0aW9uKHQsbyl7dmFyIGw9dC5sZW5ndGg9PT1pLmdsb2JhbHMuZGF0YVBvaW50cyxjPWUuZ3JhcGhpY3MuZ3JvdXAoKS5hdHRyKHtjbGFzczoiYXBleGNoYXJ0cy1zZXJpZXMiLCJkYXRhOmxvbmdlc3RTZXJpZXMiOmwsc2VyaWVzTmFtZTpiLmVzY2FwZVN0cmluZyhpLmdsb2JhbHMuc2VyaWVzTmFtZXNbb10pLHJlbDpvKzEsImRhdGE6cmVhbEluZGV4IjpvfSk7ZS5kYXRhUmFkaXVzT2ZQZXJjZW50W29dPVtdLGUuZGF0YVJhZGl1c1tvXT1bXSxlLmFuZ2xlQXJyW29dPVtdLHQuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgcz1NYXRoLmFicyhlLm1heFZhbHVlLWUubWluVmFsdWUpO3QrPU1hdGguYWJzKGUubWluVmFsdWUpLGUuaXNMb2cmJih0PWUuY29yZVV0aWxzLmdldExvZ1ZhbCh0LDApKSxlLmRhdGFSYWRpdXNPZlBlcmNlbnRbb11baV09dC9zLGUuZGF0YVJhZGl1c1tvXVtpXT1lLmRhdGFSYWRpdXNPZlBlcmNlbnRbb11baV0qZS5zaXplLGUuYW5nbGVBcnJbb11baV09aSplLmRpc0FuZ2xlfSkpLHU9ZS5nZXREYXRhUG9pbnRzUG9zKGUuZGF0YVJhZGl1c1tvXSxlLmFuZ2xlQXJyW29dKTt2YXIgaD1lLmNyZWF0ZVBhdGhzKHUse3g6MCx5OjB9KTtwPWUuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXAgYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlbiJ9KSxnPWUuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLWRhdGFsYWJlbHMiLCJkYXRhOnJlYWxJbmRleCI6b30pLGkuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6cC5ub2RlLGluZGV4Om99KTt2YXIgZD17aTpvLHJlYWxJbmRleDpvLGFuaW1hdGlvbkRlbGF5Om8saW5pdGlhbFNwZWVkOmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQsZGF0YUNoYW5nZVNwZWVkOmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCxjbGFzc05hbWU6ImFwZXhjaGFydHMtcmFkYXIiLHNob3VsZENsaXBUb0dyaWQ6ITEsYmluZEV2ZW50c09uUGF0aHM6ITEsc3Ryb2tlOmkuZ2xvYmFscy5zdHJva2UuY29sb3JzW29dLHN0cm9rZUxpbmVDYXA6aS5jb25maWcuc3Ryb2tlLmxpbmVDYXB9LGY9bnVsbDtpLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKGY9ZS5nZXRQcmV2aW91c1BhdGgobykpO2Zvcih2YXIgbT0wO208aC5saW5lUGF0aHNUby5sZW5ndGg7bSsrKXt2YXIgdj1lLmdyYXBoaWNzLnJlbmRlclBhdGhzKG4obih7fSxkKSx7fSx7cGF0aEZyb206bnVsbD09PWY/aC5saW5lUGF0aHNGcm9tW21dOmYscGF0aFRvOmgubGluZVBhdGhzVG9bbV0sc3Ryb2tlV2lkdGg6QXJyYXkuaXNBcnJheShlLnN0cm9rZVdpZHRoKT9lLnN0cm9rZVdpZHRoW29dOmUuc3Ryb2tlV2lkdGgsZmlsbDoibm9uZSIsZHJhd1NoYWRvdzohMX0pKTtjLmFkZCh2KTt2YXIgeD1zLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6b30pLHk9ZS5ncmFwaGljcy5yZW5kZXJQYXRocyhuKG4oe30sZCkse30se3BhdGhGcm9tOm51bGw9PT1mP2guYXJlYVBhdGhzRnJvbVttXTpmLHBhdGhUbzpoLmFyZWFQYXRoc1RvW21dLHN0cm9rZVdpZHRoOjAsZmlsbDp4LGRyYXdTaGFkb3c6ITF9KSk7aWYoaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgaz1uZXcgdyhlLmN0eCksUz1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O2suZHJvcFNoYWRvdyh5LE9iamVjdC5hc3NpZ24oe30sUyx7bm9Vc2VyU3BhY2VPblVzZTohMH0pLG8pfWMuYWRkKHkpfXQuZm9yRWFjaCgoZnVuY3Rpb24odCxzKXt2YXIgYT1uZXcgQihlLmN0eCkuZ2V0TWFya2VyQ29uZmlnKHtjc3NDbGFzczoiYXBleGNoYXJ0cy1tYXJrZXIiLHNlcmllc0luZGV4Om8sZGF0YVBvaW50SW5kZXg6c30pLGw9ZS5ncmFwaGljcy5kcmF3TWFya2VyKHVbc10ueCx1W3NdLnksYSk7bC5hdHRyKCJyZWwiLHMpLGwuYXR0cigiaiIscyksbC5hdHRyKCJpbmRleCIsbyksbC5ub2RlLnNldEF0dHJpYnV0ZSgiZGVmYXVsdC1tYXJrZXItc2l6ZSIsYS5wU2l6ZSk7dmFyIGg9ZS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMifSk7aCYmaC5hZGQobCkscC5hZGQoaCksYy5hZGQocCk7dmFyIGQ9aS5jb25maWcuZGF0YUxhYmVscztpZihkLmVuYWJsZWQpe3ZhciBmPWQuZm9ybWF0dGVyKGkuZ2xvYmFscy5zZXJpZXNbb11bc10se3Nlcmllc0luZGV4Om8sZGF0YVBvaW50SW5kZXg6cyx3Oml9KTtyLnBsb3REYXRhTGFiZWxzVGV4dCh7eDp1W3NdLngseTp1W3NdLnksdGV4dDpmLHRleHRBbmNob3I6Im1pZGRsZSIsaTpvLGo6byxwYXJlbnQ6ZyxvZmZzZXRDb3JyZWN0aW9uOiExLGRhdGFMYWJlbHNDb25maWc6bih7fSxkKX0pfWMuYWRkKGcpfSkpLGEucHVzaChjKX0pKSx0aGlzLmRyYXdQb2x5Z29ucyh7cGFyZW50OmR9KSxpLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvdyl7dmFyIGY9dGhpcy5kcmF3WEF4aXNUZXh0cygpO2QuYWRkKGYpfXJldHVybiBhLmZvckVhY2goKGZ1bmN0aW9uKHQpe2QuYWRkKHQpfSkpLGQuYWRkKHRoaXMueWF4aXNMYWJlbHMpLGR9fSx7a2V5OiJkcmF3UG9seWdvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLGk9dGhpcy53LHM9dC5wYXJlbnQsYT1uZXcgTHQodGhpcy5jdHgpLG49aS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnJldmVyc2UoKSxyPW4ubGVuZ3RoLG89W10sbD10aGlzLnNpemUvKHItMSksYz0wO2M8cjtjKyspb1tjXT1sKmM7by5yZXZlcnNlKCk7dmFyIGg9W10sZD1bXTtvLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dmFyIHM9Yi5nZXRQb2x5Z29uUG9zKHQsZS5kYXRhUG9pbnRzTGVuKSxhPSIiO3MuZm9yRWFjaCgoZnVuY3Rpb24odCxzKXtpZigwPT09aSl7dmFyIG49ZS5ncmFwaGljcy5kcmF3TGluZSh0LngsdC55LDAsMCxBcnJheS5pc0FycmF5KGUucG9seWdvbnMuY29ubmVjdG9yQ29sb3JzKT9lLnBvbHlnb25zLmNvbm5lY3RvckNvbG9yc1tzXTplLnBvbHlnb25zLmNvbm5lY3RvckNvbG9ycyk7ZC5wdXNoKG4pfTA9PT1zJiZlLnlheGlzTGFiZWxzVGV4dHNQb3MucHVzaCh7eDp0LngseTp0Lnl9KSxhKz10LngrIiwiK3QueSsiICJ9KSksaC5wdXNoKGEpfSkpLGguZm9yRWFjaCgoZnVuY3Rpb24odCxhKXt2YXIgbj1lLnBvbHlnb25zLnN0cm9rZUNvbG9ycyxyPWUucG9seWdvbnMuc3Ryb2tlV2lkdGgsbz1lLmdyYXBoaWNzLmRyYXdQb2x5Z29uKHQsQXJyYXkuaXNBcnJheShuKT9uW2FdOm4sQXJyYXkuaXNBcnJheShyKT9yW2FdOnIsaS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnNbYV0pO3MuYWRkKG8pfSkpLGQuZm9yRWFjaCgoZnVuY3Rpb24odCl7cy5hZGQodCl9KSksaS5jb25maWcueWF4aXNbMF0uc2hvdyYmdGhpcy55YXhpc0xhYmVsc1RleHRzUG9zLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dmFyIHM9YS5kcmF3WUF4aXNUZXh0cyh0LngsdC55LGksbltpXSk7ZS55YXhpc0xhYmVscy5hZGQocyl9KSl9fSx7a2V5OiJkcmF3WEF4aXNUZXh0cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5jb25maWcueGF4aXMubGFiZWxzLHM9dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMteGF4aXMifSksYT1iLmdldFBvbHlnb25Qb3ModGhpcy5zaXplLHRoaXMuZGF0YVBvaW50c0xlbik7cmV0dXJuIGUuZ2xvYmFscy5sYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24ocixvKXt2YXIgbD1lLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLGM9bmV3IEgodC5jdHgpO2lmKGFbb10pe3ZhciBoPXQuZ2V0VGV4dFBvcyhhW29dLHQuc2l6ZSksZD1sKHIse3Nlcmllc0luZGV4Oi0xLGRhdGFQb2ludEluZGV4Om8sdzplfSk7Yy5wbG90RGF0YUxhYmVsc1RleHQoe3g6aC5uZXdYLHk6aC5uZXdZLHRleHQ6ZCx0ZXh0QW5jaG9yOmgudGV4dEFuY2hvcixpOm8sajpvLHBhcmVudDpzLGNvbG9yOkFycmF5LmlzQXJyYXkoaS5zdHlsZS5jb2xvcnMpJiZpLnN0eWxlLmNvbG9yc1tvXT9pLnN0eWxlLmNvbG9yc1tvXToiI2E4YThhOCIsZGF0YUxhYmVsc0NvbmZpZzpuKHt0ZXh0QW5jaG9yOmgudGV4dEFuY2hvcixkcm9wU2hhZG93OntlbmFibGVkOiExfX0saSksb2Zmc2V0Q29ycmVjdGlvbjohMX0pfX0pKSxzfX0se2tleToiY3JlYXRlUGF0aHMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxzPVtdLGE9W10sbj1bXSxyPVtdO2lmKHQubGVuZ3RoKXthPVt0aGlzLmdyYXBoaWNzLm1vdmUoZS54LGUueSldLHI9W3RoaXMuZ3JhcGhpY3MubW92ZShlLngsZS55KV07dmFyIG89dGhpcy5ncmFwaGljcy5tb3ZlKHRbMF0ueCx0WzBdLnkpLGw9dGhpcy5ncmFwaGljcy5tb3ZlKHRbMF0ueCx0WzBdLnkpO3QuZm9yRWFjaCgoZnVuY3Rpb24oZSxzKXtvKz1pLmdyYXBoaWNzLmxpbmUoZS54LGUueSksbCs9aS5ncmFwaGljcy5saW5lKGUueCxlLnkpLHM9PT10Lmxlbmd0aC0xJiYobys9IloiLGwrPSJaIil9KSkscy5wdXNoKG8pLG4ucHVzaChsKX1yZXR1cm57bGluZVBhdGhzRnJvbTphLGxpbmVQYXRoc1RvOnMsYXJlYVBhdGhzRnJvbTpyLGFyZWFQYXRoc1RvOm59fX0se2tleToiZ2V0VGV4dFBvcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT0ibWlkZGxlIixzPXQueCxhPXQueTtyZXR1cm4gTWF0aC5hYnModC54KT49MTA/dC54PjA/KGk9InN0YXJ0IixzKz0xMCk6dC54PDAmJihpPSJlbmQiLHMtPTEwKTppPSJtaWRkbGUiLE1hdGguYWJzKHQueSk+PWUtMTAmJih0Lnk8MD9hLT0xMDp0Lnk+MCYmKGErPTEwKSkse3RleHRBbmNob3I6aSxuZXdYOnMsbmV3WTphfX19LHtrZXk6ImdldFByZXZpb3VzUGF0aCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPW51bGwscz0wO3M8ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO3MrKyl7dmFyIGE9ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc107YS5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQoYS5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQodCwxMCkmJnZvaWQgMCE9PWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdLnBhdGhzWzBdJiYoaT1lLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXS5wYXRoc1swXS5kKX1yZXR1cm4gaX19LHtrZXk6ImdldERhdGFQb2ludHNQb3MiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnRoaXMuZGF0YVBvaW50c0xlbjt0PXR8fFtdLGU9ZXx8W107Zm9yKHZhciBzPVtdLGE9MDthPGk7YSsrKXt2YXIgbj17fTtuLng9dFthXSpNYXRoLnNpbihlW2FdKSxuLnk9LXRbYV0qTWF0aC5jb3MoZVthXSkscy5wdXNoKG4pfXJldHVybiBzfX1dKSx0fSgpLE90PWZ1bmN0aW9uKHQpe2QoaSxQdCk7dmFyIGU9ZihpKTtmdW5jdGlvbiBpKHQpe3ZhciBzO28odGhpcyxpKSwocz1lLmNhbGwodGhpcyx0KSkuY3R4PXQscy53PXQudyxzLmFuaW1CZWdpbkFycj1bMF0scy5hbmltRHVyPTA7dmFyIGE9cy53O3JldHVybiBzLnN0YXJ0QW5nbGU9YS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGUscy5lbmRBbmdsZT1hLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuZW5kQW5nbGUscy50b3RhbEFuZ2xlPU1hdGguYWJzKGEuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5lbmRBbmdsZS1hLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZSkscy50cmFja1N0YXJ0QW5nbGU9YS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLnN0YXJ0QW5nbGUscy50cmFja0VuZEFuZ2xlPWEuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5lbmRBbmdsZSxzLmRvbnV0RGF0YUxhYmVscz1zLncuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5kYXRhTGFiZWxzLHMucmFkaWFsRGF0YUxhYmVscz1zLmRvbnV0RGF0YUxhYmVscyxzLnRyYWNrU3RhcnRBbmdsZXx8KHMudHJhY2tTdGFydEFuZ2xlPXMuc3RhcnRBbmdsZSkscy50cmFja0VuZEFuZ2xlfHwocy50cmFja0VuZEFuZ2xlPXMuZW5kQW5nbGUpLDM2MD09PXMuZW5kQW5nbGUmJihzLmVuZEFuZ2xlPTM1OS45OSkscy5tYXJnaW49cGFyc2VJbnQoYS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLm1hcmdpbiwxMCksc31yZXR1cm4gYyhpLFt7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgayh0aGlzLmN0eCkscz1pLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy1yYWRpYWxiYXIifSk7aWYoZS5nbG9iYWxzLm5vRGF0YSlyZXR1cm4gczt2YXIgYT1pLmdyb3VwKCksbj10aGlzLmRlZmF1bHRTaXplLzIscj1lLmdsb2JhbHMuZ3JpZFdpZHRoLzIsbz10aGlzLmRlZmF1bHRTaXplLzIuMDU7ZS5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWR8fChvPW8tZS5jb25maWcuc3Ryb2tlLndpZHRoLWUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuYmx1cik7dmFyIGw9ZS5nbG9iYWxzLmZpbGwuY29sb3JzO2lmKGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zaG93KXt2YXIgYz10aGlzLmRyYXdUcmFja3Moe3NpemU6byxjZW50ZXJYOnIsY2VudGVyWTpuLGNvbG9yQXJyOmwsc2VyaWVzOnR9KTthLmFkZChjKX12YXIgaD10aGlzLmRyYXdBcmNzKHtzaXplOm8sY2VudGVyWDpyLGNlbnRlclk6bixjb2xvckFycjpsLHNlcmllczp0fSksZD0zNjA7ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGU8MCYmKGQ9dGhpcy50b3RhbEFuZ2xlKTt2YXIgdT0oMzYwLWQpLzM2MDtpZihlLmdsb2JhbHMucmFkaWFsU2l6ZT1vLW8qdSx0aGlzLnJhZGlhbERhdGFMYWJlbHMudmFsdWUuc2hvdyl7dmFyIHA9TWF0aC5tYXgodGhpcy5yYWRpYWxEYXRhTGFiZWxzLnZhbHVlLm9mZnNldFksdGhpcy5yYWRpYWxEYXRhTGFiZWxzLm5hbWUub2Zmc2V0WSk7ZS5nbG9iYWxzLnJhZGlhbFNpemUrPXAqdX1yZXR1cm4gYS5hZGQoaC5nKSwiZnJvbnQiPT09ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5wb3NpdGlvbiYmKGguZy5hZGQoaC5lbEhvbGxvdyksaC5kYXRhTGFiZWxzJiZoLmcuYWRkKGguZGF0YUxhYmVscykpLHMuYWRkKGEpLHN9fSx7a2V5OiJkcmF3VHJhY2tzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgayh0aGlzLmN0eCkscz1pLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy10cmFja3MifSksYT1uZXcgdyh0aGlzLmN0eCksbj1uZXcgXyh0aGlzLmN0eCkscj10aGlzLmdldFN0cm9rZVdpZHRoKHQpO3Quc2l6ZT10LnNpemUtci8yO2Zvcih2YXIgbz0wO288dC5zZXJpZXMubGVuZ3RoO28rKyl7dmFyIGw9aS5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtcmFkaWFsYmFyLXRyYWNrIGFwZXhjaGFydHMtdHJhY2sifSk7cy5hZGQobCksbC5hdHRyKHtyZWw6bysxfSksdC5zaXplPXQuc2l6ZS1yLXRoaXMubWFyZ2luO3ZhciBjPWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjayxoPW4uZmlsbFBhdGgoe3Nlcmllc051bWJlcjowLHNpemU6dC5zaXplLGZpbGxDb2xvcnM6QXJyYXkuaXNBcnJheShjLmJhY2tncm91bmQpP2MuYmFja2dyb3VuZFtvXTpjLmJhY2tncm91bmQsc29saWQ6ITB9KSxkPXRoaXMudHJhY2tTdGFydEFuZ2xlLHU9dGhpcy50cmFja0VuZEFuZ2xlO01hdGguYWJzKHUpK01hdGguYWJzKGQpPj0zNjAmJih1PTM2MC1NYXRoLmFicyh0aGlzLnN0YXJ0QW5nbGUpLS4xKTt2YXIgcD1pLmRyYXdQYXRoKHtkOiIiLHN0cm9rZTpoLHN0cm9rZVdpZHRoOnIqcGFyc2VJbnQoYy5zdHJva2VXaWR0aCwxMCkvMTAwLGZpbGw6Im5vbmUiLHN0cm9rZU9wYWNpdHk6Yy5vcGFjaXR5LGNsYXNzZXM6ImFwZXhjaGFydHMtcmFkaWFsYmFyLWFyZWEifSk7aWYoYy5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBnPWMuZHJvcFNoYWRvdzthLmRyb3BTaGFkb3cocCxnKX1sLmFkZChwKSxwLmF0dHIoImlkIiwiYXBleGNoYXJ0cy1yYWRpYWxiYXJUcmFjay0iK28pLHRoaXMuYW5pbWF0ZVBhdGhzKHAse2NlbnRlclg6dC5jZW50ZXJYLGNlbnRlclk6dC5jZW50ZXJZLGVuZEFuZ2xlOnUsc3RhcnRBbmdsZTpkLHNpemU6dC5zaXplLGk6byx0b3RhbEl0ZW1zOjIsYW5pbUJlZ2luQXJyOjAsZHVyOjAsaXNUcmFjazohMCxlYXNpbmc6ZS5nbG9iYWxzLmVhc2luZ30pfXJldHVybiBzfX0se2tleToiZHJhd0FyY3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBrKHRoaXMuY3R4KSxzPW5ldyBfKHRoaXMuY3R4KSxhPW5ldyB3KHRoaXMuY3R4KSxuPWkuZ3JvdXAoKSxyPXRoaXMuZ2V0U3Ryb2tlV2lkdGgodCk7dC5zaXplPXQuc2l6ZS1yLzI7dmFyIG89ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5iYWNrZ3JvdW5kLGw9dC5zaXplLXIqdC5zZXJpZXMubGVuZ3RoLXRoaXMubWFyZ2luKnQuc2VyaWVzLmxlbmd0aC1yKnBhcnNlSW50KGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zdHJva2VXaWR0aCwxMCkvMTAwLzIsYz1sLWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cubWFyZ2luO3ZvaWQgMCE9PWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2UmJihvPXRoaXMuZHJhd0hvbGxvd0ltYWdlKHQsbixsLG8pKTt2YXIgaD10aGlzLmRyYXdIb2xsb3coe3NpemU6YyxjZW50ZXJYOnQuY2VudGVyWCxjZW50ZXJZOnQuY2VudGVyWSxmaWxsOm98fCJ0cmFuc3BhcmVudCJ9KTtpZihlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGQ9ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5kcm9wU2hhZG93O2EuZHJvcFNoYWRvdyhoLGQpfXZhciB1PTE7IXRoaXMucmFkaWFsRGF0YUxhYmVscy50b3RhbC5zaG93JiZlLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiYodT0wKTt2YXIgcD1udWxsO3RoaXMucmFkaWFsRGF0YUxhYmVscy5zaG93JiYocD10aGlzLnJlbmRlcklubmVyRGF0YUxhYmVscyh0aGlzLnJhZGlhbERhdGFMYWJlbHMse2hvbGxvd1NpemU6bCxjZW50ZXJYOnQuY2VudGVyWCxjZW50ZXJZOnQuY2VudGVyWSxvcGFjaXR5OnV9KSksImJhY2siPT09ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5wb3NpdGlvbiYmKG4uYWRkKGgpLHAmJm4uYWRkKHApKTt2YXIgZz0hMTtlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaW52ZXJzZU9yZGVyJiYoZz0hMCk7Zm9yKHZhciBmPWc/dC5zZXJpZXMubGVuZ3RoLTE6MDtnP2Y+PTA6Zjx0LnNlcmllcy5sZW5ndGg7Zz9mLS06ZisrKXt2YXIgbT1pLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1yYWRpYWwtc2VyaWVzIixzZXJpZXNOYW1lOmIuZXNjYXBlU3RyaW5nKGUuZ2xvYmFscy5zZXJpZXNOYW1lc1tmXSl9KTtuLmFkZChtKSxtLmF0dHIoe3JlbDpmKzEsImRhdGE6cmVhbEluZGV4IjpmfSksdGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMobSxmKSx0LnNpemU9dC5zaXplLXItdGhpcy5tYXJnaW47dmFyIHY9cy5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmYsc2l6ZTp0LnNpemUsdmFsdWU6dC5zZXJpZXNbZl19KSx4PXRoaXMuc3RhcnRBbmdsZSx5PXZvaWQgMCxTPWIubmVnVG9aZXJvKHQuc2VyaWVzW2ZdPjEwMD8xMDA6dC5zZXJpZXNbZl0pLzEwMCxDPU1hdGgucm91bmQodGhpcy50b3RhbEFuZ2xlKlMpK3RoaXMuc3RhcnRBbmdsZSxBPXZvaWQgMDtlLmdsb2JhbHMuZGF0YUNoYW5nZWQmJih5PXRoaXMuc3RhcnRBbmdsZSxBPU1hdGgucm91bmQodGhpcy50b3RhbEFuZ2xlKmIubmVnVG9aZXJvKGUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2ZdKS8xMDApK3kpLE1hdGguYWJzKEMpK01hdGguYWJzKHgpPj0zNjAmJihDLT0uMDEpLE1hdGguYWJzKEEpK01hdGguYWJzKHkpPj0zNjAmJihBLT0uMDEpO3ZhciBFPUMteCxUPUFycmF5LmlzQXJyYXkoZS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheSk/ZS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheVtmXTplLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5LEw9aS5kcmF3UGF0aCh7ZDoiIixzdHJva2U6dixzdHJva2VXaWR0aDpyLGZpbGw6Im5vbmUiLGZpbGxPcGFjaXR5OmUuY29uZmlnLmZpbGwub3BhY2l0eSxjbGFzc2VzOiJhcGV4Y2hhcnRzLXJhZGlhbGJhci1hcmVhIGFwZXhjaGFydHMtcmFkaWFsYmFyLXNsaWNlLSIrZixzdHJva2VEYXNoQXJyYXk6VH0pO2lmKGsuc2V0QXR0cnMoTC5ub2RlLHsiZGF0YTphbmdsZSI6RSwiZGF0YTp2YWx1ZSI6dC5zZXJpZXNbZl19KSxlLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBQPWUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7YS5kcm9wU2hhZG93KEwsUCxmKX1hLnNldFNlbGVjdGlvbkZpbHRlcihMLDAsZiksdGhpcy5hZGRMaXN0ZW5lcnMoTCx0aGlzLnJhZGlhbERhdGFMYWJlbHMpLG0uYWRkKEwpLEwuYXR0cih7aW5kZXg6MCxqOmZ9KTt2YXIgTT0wOyF0aGlzLmluaXRpYWxBbmltfHxlLmdsb2JhbHMucmVzaXplZHx8ZS5nbG9iYWxzLmRhdGFDaGFuZ2VkfHwoTT1lLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkKSxlLmdsb2JhbHMuZGF0YUNoYW5nZWQmJihNPWUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCksdGhpcy5hbmltRHVyPU0vKDEuMip0LnNlcmllcy5sZW5ndGgpK3RoaXMuYW5pbUR1cix0aGlzLmFuaW1CZWdpbkFyci5wdXNoKHRoaXMuYW5pbUR1ciksdGhpcy5hbmltYXRlUGF0aHMoTCx7Y2VudGVyWDp0LmNlbnRlclgsY2VudGVyWTp0LmNlbnRlclksZW5kQW5nbGU6QyxzdGFydEFuZ2xlOngscHJldkVuZEFuZ2xlOkEscHJldlN0YXJ0QW5nbGU6eSxzaXplOnQuc2l6ZSxpOmYsdG90YWxJdGVtczoyLGFuaW1CZWdpbkFycjp0aGlzLmFuaW1CZWdpbkFycixkdXI6TSxzaG91bGRTZXRQcmV2UGF0aHM6ITAsZWFzaW5nOmUuZ2xvYmFscy5lYXNpbmd9KX1yZXR1cm57ZzpuLGVsSG9sbG93OmgsZGF0YUxhYmVsczpwfX19LHtrZXk6ImRyYXdIb2xsb3ciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBrKHRoaXMuY3R4KS5kcmF3Q2lyY2xlKDIqdC5zaXplKTtyZXR1cm4gZS5hdHRyKHtjbGFzczoiYXBleGNoYXJ0cy1yYWRpYWxiYXItaG9sbG93IixjeDp0LmNlbnRlclgsY3k6dC5jZW50ZXJZLHI6dC5zaXplLGZpbGw6dC5maWxsfSksZX19LHtrZXk6ImRyYXdIb2xsb3dJbWFnZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyl7dmFyIGE9dGhpcy53LG49bmV3IF8odGhpcy5jdHgpLHI9Yi5yYW5kb21JZCgpLG89YS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZTtpZihhLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlQ2xpcHBlZCluLmNsaXBwZWRJbWdBcmVhKHt3aWR0aDppLGhlaWdodDppLGltYWdlOm8scGF0dGVybklEOiJwYXR0ZXJuIi5jb25jYXQoYS5nbG9iYWxzLmN1aWQpLmNvbmNhdChyKX0pLHM9InVybCgjcGF0dGVybiIuY29uY2F0KGEuZ2xvYmFscy5jdWlkKS5jb25jYXQociwiKSIpO2Vsc2V7dmFyIGw9YS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZVdpZHRoLGM9YS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZUhlaWdodDtpZih2b2lkIDA9PT1sJiZ2b2lkIDA9PT1jKXt2YXIgaD1hLmdsb2JhbHMuZG9tLlBhcGVyLmltYWdlKG8pLmxvYWRlZCgoZnVuY3Rpb24oZSl7dGhpcy5tb3ZlKHQuY2VudGVyWC1lLndpZHRoLzIrYS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZU9mZnNldFgsdC5jZW50ZXJZLWUuaGVpZ2h0LzIrYS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZU9mZnNldFkpfSkpO2UuYWRkKGgpfWVsc2V7dmFyIGQ9YS5nbG9iYWxzLmRvbS5QYXBlci5pbWFnZShvKS5sb2FkZWQoKGZ1bmN0aW9uKGUpe3RoaXMubW92ZSh0LmNlbnRlclgtbC8yK2EuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRYLHQuY2VudGVyWS1jLzIrYS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZU9mZnNldFkpLHRoaXMuc2l6ZShsLGMpfSkpO2UuYWRkKGQpfX1yZXR1cm4gc319LHtrZXk6ImdldFN0cm9rZVdpZHRoIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJuIHQuc2l6ZSooMTAwLXBhcnNlSW50KGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuc2l6ZSwxMCkpLzEwMC8odC5zZXJpZXMubGVuZ3RoKzEpLXRoaXMubWFyZ2lufX1dKSxpfSgpLEl0PWZ1bmN0aW9uKHQpe2QoaSxTdCk7dmFyIGU9ZihpKTtmdW5jdGlvbiBpKCl7cmV0dXJuIG8odGhpcyxpKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gYyhpLFt7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPW5ldyBrKHRoaXMuY3R4KTt0aGlzLnJhbmdlQmFyT3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnJhbmdlQmFyLHRoaXMuc2VyaWVzPXQsdGhpcy5zZXJpZXNSYW5nZVN0YXJ0PWkuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0LHRoaXMuc2VyaWVzUmFuZ2VFbmQ9aS5nbG9iYWxzLnNlcmllc1JhbmdlRW5kLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKHQpO2Zvcih2YXIgYT1zLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllcyJ9KSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvLGwsYyxoPXZvaWQgMCxkPXZvaWQgMCx1PXZvaWQgMCxwPWkuZ2xvYmFscy5jb21ib0NoYXJ0cz9lW3JdOnIsZz1zLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy1zZXJpZXMiLHNlcmllc05hbWU6Yi5lc2NhcGVTdHJpbmcoaS5nbG9iYWxzLnNlcmllc05hbWVzW3BdKSxyZWw6cisxLCJkYXRhOnJlYWxJbmRleCI6cH0pO3RoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKGcscCksdFtyXS5sZW5ndGg+MCYmKHRoaXMudmlzaWJsZUk9dGhpcy52aXNpYmxlSSsxKTt2YXIgZj0wLG09MDt0aGlzLnlSYXRpby5sZW5ndGg+MSYmKHRoaXMueWF4aXNJbmRleD1wKTt2YXIgdj10aGlzLmJhckhlbHBlcnMuaW5pdGlhbFBvc2l0aW9ucygpO2Q9di55LGM9di56ZXJvVyxoPXYueCxtPXYuYmFyV2lkdGgsbz12LnhEaXZpc2lvbixsPXYuemVyb0g7Zm9yKHZhciB4PXMuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLWRhdGFsYWJlbHMiLCJkYXRhOnJlYWxJbmRleCI6cH0pLHk9cy5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtcmFuZ2ViYXItZ29hbHMtbWFya2VycyIsc3R5bGU6InBvaW50ZXItZXZlbnRzOiBub25lIn0pLHc9MDt3PGkuZ2xvYmFscy5kYXRhUG9pbnRzO3crKyl7dmFyIFM9dGhpcy5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKHIsdyxwKSxDPXRoaXMuc2VyaWVzUmFuZ2VTdGFydFtyXVt3XSxBPXRoaXMuc2VyaWVzUmFuZ2VFbmRbcl1bd10sRT1udWxsLFQ9bnVsbCxMPXt4OmgseTpkLHN0cm9rZVdpZHRoOlMsZWxTZXJpZXM6Z307aWYodT12LnlEaXZpc2lvbixmPXYuYmFySGVpZ2h0LHRoaXMuaXNIb3Jpem9udGFsKXtUPWQrZip0aGlzLnZpc2libGVJO3ZhciBQPXRoaXMuc2VyaWVzTGVuO2kuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93cyYmKFA9MSk7dmFyIE09KHUtZipQKS8yO2lmKHZvaWQgMD09PWkuY29uZmlnLnNlcmllc1tyXS5kYXRhW3ddKWJyZWFrO2lmKGkuY29uZmlnLnNlcmllc1tyXS5kYXRhW3ddLngpe3ZhciBPPXRoaXMuZGV0ZWN0T3ZlcmxhcHBpbmdCYXJzKHtpOnIsajp3LGJhcllQb3NpdGlvbjpULHNydHk6TSxiYXJIZWlnaHQ6Zix5RGl2aXNpb246dSxpbml0UG9zaXRpb25zOnZ9KTtmPU8uYmFySGVpZ2h0LFQ9Ty5iYXJZUG9zaXRpb259bT0oRT10aGlzLmRyYXdSYW5nZUJhclBhdGhzKG4oe2luZGV4ZXM6e2k6cixqOncscmVhbEluZGV4OnB9LGJhckhlaWdodDpmLGJhcllQb3NpdGlvbjpULHplcm9XOmMseURpdmlzaW9uOnUseTE6Qyx5MjpBfSxMKSkpLmJhcldpZHRofWVsc2UgZj0oRT10aGlzLmRyYXdSYW5nZUNvbHVtblBhdGhzKG4oe2luZGV4ZXM6e2k6cixqOncscmVhbEluZGV4OnB9LHplcm9IOmwsYmFyV2lkdGg6bSx4RGl2aXNpb246b30sTCkpKS5iYXJIZWlnaHQ7dmFyIEk9dGhpcy5iYXJIZWxwZXJzLmRyYXdHb2FsTGluZSh7YmFyWFBvc2l0aW9uOkUuYmFyWFBvc2l0aW9uLGJhcllQb3NpdGlvbjpULGdvYWxYOkUuZ29hbFgsZ29hbFk6RS5nb2FsWSxiYXJIZWlnaHQ6ZixiYXJXaWR0aDptfSk7SSYmeS5hZGQoSSksZD1FLnksaD1FLng7dmFyIEY9dGhpcy5iYXJIZWxwZXJzLmdldFBhdGhGaWxsQ29sb3IodCxyLHcscCksRD1pLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1twXTt0aGlzLnJlbmRlclNlcmllcyh7cmVhbEluZGV4OnAscGF0aEZpbGw6RixsaW5lRmlsbDpELGo6dyxpOnIseDpoLHk6ZCx5MTpDLHkyOkEscGF0aEZyb206RS5wYXRoRnJvbSxwYXRoVG86RS5wYXRoVG8sc3Ryb2tlV2lkdGg6UyxlbFNlcmllczpnLHNlcmllczp0LGJhckhlaWdodDpmLGJhcllQb3NpdGlvbjpULGJhcldpZHRoOm0sZWxEYXRhTGFiZWxzV3JhcDp4LGVsR29hbHNNYXJrZXJzOnksdmlzaWJsZVNlcmllczp0aGlzLnZpc2libGVJLHR5cGU6InJhbmdlYmFyIn0pfWEuYWRkKGcpfXJldHVybiBhfX0se2tleToiZGV0ZWN0T3ZlcmxhcHBpbmdCYXJzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10Lmoscz10LmJhcllQb3NpdGlvbixhPXQuc3J0eSxuPXQuYmFySGVpZ2h0LHI9dC55RGl2aXNpb24sbz10LmluaXRQb3NpdGlvbnMsbD10aGlzLncsYz1bXSxoPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLnJhbmdlTmFtZSxkPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLngsdT1sLmdsb2JhbHMubGFiZWxzLmluZGV4T2YoZCkscD1sLmdsb2JhbHMuc2VyaWVzUmFuZ2VbZV0uZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC54PT09ZCYmdC5vdmVybGFwcy5sZW5ndGg+MH0pKTtyZXR1cm4gcz1sLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3M/YStyKnU6YStuKnRoaXMudmlzaWJsZUkrcip1LHA+LTEmJiFsLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJPdmVybGFwJiYoYz1sLmdsb2JhbHMuc2VyaWVzUmFuZ2VbZV1bcF0ub3ZlcmxhcHMpLmluZGV4T2YoaCk+LTEmJihzPShuPW8uYmFySGVpZ2h0L2MubGVuZ3RoKSp0aGlzLnZpc2libGVJK3IqKDEwMC1wYXJzZUludCh0aGlzLmJhck9wdGlvbnMuYmFySGVpZ2h0LDEwKSkvMTAwLzIrbioodGhpcy52aXNpYmxlSStjLmluZGV4T2YoaCkpK3IqdSkse2JhcllQb3NpdGlvbjpzLGJhckhlaWdodDpufX19LHtrZXk6ImRyYXdSYW5nZUNvbHVtblBhdGhzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXMsaT10Lng7dC5zdHJva2VXaWR0aDt2YXIgcz10LnhEaXZpc2lvbixhPXQuYmFyV2lkdGgsbj10Lnplcm9ILHI9dGhpcy53LG89ZS5pLGw9ZS5qLGM9dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxoPWUucmVhbEluZGV4LGQ9dGhpcy5nZXRSYW5nZVZhbHVlKGgsbCksdT1NYXRoLm1pbihkLnN0YXJ0LGQuZW5kKSxwPU1hdGgubWF4KGQuc3RhcnQsZC5lbmQpO3IuZ2xvYmFscy5pc1hOdW1lcmljJiYoaT0oci5nbG9iYWxzLnNlcmllc1hbb11bbF0tci5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLWEvMik7dmFyIGc9aSthKnRoaXMudmlzaWJsZUk7dm9pZCAwPT09dGhpcy5zZXJpZXNbb11bbF18fG51bGw9PT10aGlzLnNlcmllc1tvXVtsXT91PW46KHU9bi11L2MscD1uLXAvYyk7dmFyIGY9TWF0aC5hYnMocC11KSxtPXRoaXMuYmFySGVscGVycy5nZXRDb2x1bW5QYXRocyh7YmFyWFBvc2l0aW9uOmcsYmFyV2lkdGg6YSx5MTp1LHkyOnAsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzZXJpZXM6dGhpcy5zZXJpZXNSYW5nZUVuZCxyZWFsSW5kZXg6ZS5yZWFsSW5kZXgsaTpoLGo6bCx3OnJ9KTtyZXR1cm4gci5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1zKSx7cGF0aFRvOm0ucGF0aFRvLHBhdGhGcm9tOm0ucGF0aEZyb20sYmFySGVpZ2h0OmYseDppLHk6cCxnb2FsWTp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcygieSIsbnVsbCxuLG8sbCksYmFyWFBvc2l0aW9uOmd9fX0se2tleToiZHJhd1JhbmdlQmFyUGF0aHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueSxzPXQueTEsYT10LnkyLG49dC55RGl2aXNpb24scj10LmJhckhlaWdodCxvPXQuYmFyWVBvc2l0aW9uLGw9dC56ZXJvVyxjPXRoaXMudyxoPWwrcy90aGlzLmludmVydGVkWVJhdGlvLGQ9bCthL3RoaXMuaW52ZXJ0ZWRZUmF0aW8sdT1NYXRoLmFicyhkLWgpLHA9dGhpcy5iYXJIZWxwZXJzLmdldEJhcnBhdGhzKHtiYXJZUG9zaXRpb246byxiYXJIZWlnaHQ6cix4MTpoLHgyOmQsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzZXJpZXM6dGhpcy5zZXJpZXNSYW5nZUVuZCxpOmUucmVhbEluZGV4LHJlYWxJbmRleDplLnJlYWxJbmRleCxqOmUuaix3OmN9KTtyZXR1cm4gYy5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1uKSx7cGF0aFRvOnAucGF0aFRvLHBhdGhGcm9tOnAucGF0aEZyb20sYmFyV2lkdGg6dSx4OmQsZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoIngiLGwsbnVsbCxlLnJlYWxJbmRleCxlLmopLHk6aX19fSx7a2V5OiJnZXRSYW5nZVZhbHVlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm57c3RhcnQ6aS5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbdF1bZV0sZW5kOmkuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFt0XVtlXX19fV0pLGl9KCksRnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMubGluZUN0eD1lfXJldHVybiBjKHQsW3trZXk6InNhbWVWYWx1ZVNlcmllc0ZpeCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoKCJncmFkaWVudCI9PT1pLmNvbmZpZy5maWxsLnR5cGV8fCJncmFkaWVudCI9PT1pLmNvbmZpZy5maWxsLnR5cGVbdF0pJiZuZXcgUyh0aGlzLmxpbmVDdHguY3R4LGkpLnNlcmllc0hhdmVTYW1lVmFsdWVzKHQpKXt2YXIgcz1lW3RdLnNsaWNlKCk7c1tzLmxlbmd0aC0xXT1zW3MubGVuZ3RoLTFdKzFlLTYsZVt0XT1zfXJldHVybiBlfX0se2tleToiY2FsY3VsYXRlUG9pbnRzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnNlcmllcyxpPXQucmVhbEluZGV4LHM9dC54LGE9dC55LG49dC5pLHI9dC5qLG89dC5wcmV2WSxsPXRoaXMudyxjPVtdLGg9W107aWYoMD09PXIpe3ZhciBkPXRoaXMubGluZUN0eC5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WDtsLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGQ9KGwuZ2xvYmFscy5zZXJpZXNYW2ldWzBdLWwuZ2xvYmFscy5taW5YKS90aGlzLmxpbmVDdHgueFJhdGlvK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksYy5wdXNoKGQpLGgucHVzaChiLmlzTnVtYmVyKGVbbl1bMF0pP28rbC5jb25maWcubWFya2Vycy5vZmZzZXRZOm51bGwpLGMucHVzaChzK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksaC5wdXNoKGIuaXNOdW1iZXIoZVtuXVtyKzFdKT9hK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKX1lbHNlIGMucHVzaChzK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksaC5wdXNoKGIuaXNOdW1iZXIoZVtuXVtyKzFdKT9hK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKTtyZXR1cm57eDpjLHk6aH19fSx7a2V5OiJjaGVja1ByZXZpb3VzUGF0aHMiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LnBhdGhGcm9tTGluZSxpPXQucGF0aEZyb21BcmVhLHM9dC5yZWFsSW5kZXgsYT10aGlzLncsbj0wO248YS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO24rKyl7dmFyIHI9YS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbbl07KCJsaW5lIj09PXIudHlwZXx8ImFyZWEiPT09ci50eXBlKSYmci5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQoci5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQocywxMCkmJigibGluZSI9PT1yLnR5cGU/KHRoaXMubGluZUN0eC5hcHBlbmRQYXRoRnJvbT0hMSxlPWEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dLnBhdGhzWzBdLmQpOiJhcmVhIj09PXIudHlwZSYmKHRoaXMubGluZUN0eC5hcHBlbmRQYXRoRnJvbT0hMSxpPWEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dLnBhdGhzWzBdLmQsYS5jb25maWcuc3Ryb2tlLnNob3cmJmEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dLnBhdGhzWzFdJiYoZT1hLmdsb2JhbHMucHJldmlvdXNQYXRoc1tuXS5wYXRoc1sxXS5kKSkpfXJldHVybntwYXRoRnJvbUxpbmU6ZSxwYXRoRnJvbUFyZWE6aX19fSx7a2V5OiJkZXRlcm1pbmVGaXJzdFByZXZZIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuaSxzPXQuc2VyaWVzLGE9dC5wcmV2WSxuPXQubGluZVlQb3NpdGlvbixyPXRoaXMudztpZih2b2lkIDAhPT0obnVsbD09PShlPXNbaV0pfHx2b2lkIDA9PT1lP3ZvaWQgMDplWzBdKSlhPShuPXIuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJmk+MD90aGlzLmxpbmVDdHgucHJldlNlcmllc1lbaS0xXVswXTp0aGlzLmxpbmVDdHguemVyb1kpLXNbaV1bMF0vdGhpcy5saW5lQ3R4LnlSYXRpb1t0aGlzLmxpbmVDdHgueWF4aXNJbmRleF0rMioodGhpcy5saW5lQ3R4LmlzUmV2ZXJzZWQ/c1tpXVswXS90aGlzLmxpbmVDdHgueVJhdGlvW3RoaXMubGluZUN0eC55YXhpc0luZGV4XTowKTtlbHNlIGlmKHIuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJmk+MCYmdm9pZCAwPT09c1tpXVswXSlmb3IodmFyIG89aS0xO28+PTA7by0tKWlmKG51bGwhPT1zW29dWzBdJiZ2b2lkIDAhPT1zW29dWzBdKXthPW49dGhpcy5saW5lQ3R4LnByZXZTZXJpZXNZW29dWzBdO2JyZWFrfXJldHVybntwcmV2WTphLGxpbmVZUG9zaXRpb246bn19fV0pLHR9KCksRHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSxzKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMueHlSYXRpb3M9aSx0aGlzLnBvaW50c0NoYXJ0PSEoImJ1YmJsZSIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJiJzY2F0dGVyIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSl8fHMsdGhpcy5zY2F0dGVyPW5ldyBYKHRoaXMuY3R4KSx0aGlzLm5vTmVnYXRpdmVzPXRoaXMudy5nbG9iYWxzLm1pblg9PT1OdW1iZXIuTUFYX1ZBTFVFLHRoaXMubGluZUhlbHBlcnM9bmV3IEZ0KHRoaXMpLHRoaXMubWFya2Vycz1uZXcgQih0aGlzLmN0eCksdGhpcy5wcmV2U2VyaWVzWT1bXSx0aGlzLmNhdGVnb3J5QXhpc0NvcnJlY3Rpb249MCx0aGlzLnlheGlzSW5kZXg9MH1yZXR1cm4gYyh0LFt7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzKXt2YXIgYT10aGlzLncscj1uZXcgayh0aGlzLmN0eCksbz1hLmdsb2JhbHMuY29tYm9DaGFydHM/ZTphLmNvbmZpZy5jaGFydC50eXBlLGw9ci5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtIi5jb25jYXQobywiLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzIil9KSxjPW5ldyBTKHRoaXMuY3R4LGEpO3RoaXMueVJhdGlvPXRoaXMueHlSYXRpb3MueVJhdGlvLHRoaXMuelJhdGlvPXRoaXMueHlSYXRpb3MuelJhdGlvLHRoaXMueFJhdGlvPXRoaXMueHlSYXRpb3MueFJhdGlvLHRoaXMuYmFzZUxpbmVZPXRoaXMueHlSYXRpb3MuYmFzZUxpbmVZLHQ9Yy5nZXRMb2dTZXJpZXModCksdGhpcy55UmF0aW89Yy5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKTtmb3IodmFyIGg9W10sZD0wO2Q8dC5sZW5ndGg7ZCsrKXt0PXRoaXMubGluZUhlbHBlcnMuc2FtZVZhbHVlU2VyaWVzRml4KGQsdCk7dmFyIHU9YS5nbG9iYWxzLmNvbWJvQ2hhcnRzP2lbZF06ZDt0aGlzLl9pbml0U2VyaWVWYXJpYWJsZXModCxkLHUpO3ZhciBwPVtdLGc9W10sZj1hLmdsb2JhbHMucGFkSG9yaXpvbnRhbCt0aGlzLmNhdGVnb3J5QXhpc0NvcnJlY3Rpb247dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXModGhpcy5lbFNlcmllcyx1KSxhLmdsb2JhbHMuaXNYTnVtZXJpYyYmYS5nbG9iYWxzLnNlcmllc1gubGVuZ3RoPjAmJihmPShhLmdsb2JhbHMuc2VyaWVzWFt1XVswXS1hLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8pLGcucHVzaChmKTt2YXIgbSx2PWYseD12b2lkIDAsYj12LHk9dGhpcy56ZXJvWSx3PXRoaXMuemVyb1k7eT10aGlzLmxpbmVIZWxwZXJzLmRldGVybWluZUZpcnN0UHJldlkoe2k6ZCxzZXJpZXM6dCxwcmV2WTp5LGxpbmVZUG9zaXRpb246MH0pLnByZXZZLHAucHVzaCh5KSxtPXksInJhbmdlQXJlYSI9PT1vJiYoeD13PXRoaXMubGluZUhlbHBlcnMuZGV0ZXJtaW5lRmlyc3RQcmV2WSh7aTpkLHNlcmllczpzLHByZXZZOncsbGluZVlQb3NpdGlvbjowfSkucHJldlkpO3ZhciBDPXt0eXBlOm8sc2VyaWVzOnQscmVhbEluZGV4OnUsaTpkLHg6Zix5OjEscFg6dixwWTptLHBhdGhzRnJvbTp0aGlzLl9jYWxjdWxhdGVQYXRoc0Zyb20oe3R5cGU6byxzZXJpZXM6dCxpOmQscmVhbEluZGV4OnUscHJldlg6YixwcmV2WTp5LHByZXZZMjp3fSksbGluZVBhdGhzOltdLGFyZWFQYXRoczpbXSxzZXJpZXNJbmRleDppLGxpbmVZUG9zaXRpb246MCx4QXJyajpnLHlBcnJqOnAsc2VyaWVzUmFuZ2VFbmQ6c30sQT10aGlzLl9pdGVyYXRlT3ZlckRhdGFQb2ludHMobihuKHt9LEMpLHt9LHtpdGVyYXRpb25zOiJyYW5nZUFyZWEiPT09bz90W2RdLmxlbmd0aC0xOnZvaWQgMCxpc1JhbmdlU3RhcnQ6ITB9KSk7aWYoInJhbmdlQXJlYSI9PT1vKXt2YXIgRT10aGlzLl9jYWxjdWxhdGVQYXRoc0Zyb20oe3NlcmllczpzLGk6ZCxyZWFsSW5kZXg6dSxwcmV2WDpiLHByZXZZOnd9KSxUPXRoaXMuX2l0ZXJhdGVPdmVyRGF0YVBvaW50cyhuKG4oe30sQykse30se3NlcmllczpzLHBZOngscGF0aHNGcm9tOkUsaXRlcmF0aW9uczpzW2RdLmxlbmd0aC0xLGlzUmFuZ2VTdGFydDohMX0pKTtBLmxpbmVQYXRoc1swXT1ULmxpbmVQYXRoK0EubGluZVBhdGgsQS5wYXRoRnJvbUxpbmU9VC5wYXRoRnJvbUxpbmUrQS5wYXRoRnJvbUxpbmV9dGhpcy5faGFuZGxlUGF0aHMoe3R5cGU6byxyZWFsSW5kZXg6dSxpOmQscGF0aHM6QX0pLHRoaXMuZWxTZXJpZXMuYWRkKHRoaXMuZWxQb2ludHNNYWluKSx0aGlzLmVsU2VyaWVzLmFkZCh0aGlzLmVsRGF0YUxhYmVsc1dyYXApLGgucHVzaCh0aGlzLmVsU2VyaWVzKX1pZihhLmNvbmZpZy5jaGFydC5zdGFja2VkKWZvcih2YXIgTD1oLmxlbmd0aDtMPjA7TC0tKWwuYWRkKGhbTC0xXSk7ZWxzZSBmb3IodmFyIFA9MDtQPGgubGVuZ3RoO1ArKylsLmFkZChoW1BdKTtyZXR1cm4gbH19LHtrZXk6Il9pbml0U2VyaWVWYXJpYWJsZXMiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLncsYT1uZXcgayh0aGlzLmN0eCk7dGhpcy54RGl2aXNpb249cy5nbG9iYWxzLmdyaWRXaWR0aC8ocy5nbG9iYWxzLmRhdGFQb2ludHMtKCJvbiI9PT1zLmNvbmZpZy54YXhpcy50aWNrUGxhY2VtZW50PzE6MCkpLHRoaXMuc3Ryb2tlV2lkdGg9QXJyYXkuaXNBcnJheShzLmNvbmZpZy5zdHJva2Uud2lkdGgpP3MuY29uZmlnLnN0cm9rZS53aWR0aFtpXTpzLmNvbmZpZy5zdHJva2Uud2lkdGgsdGhpcy55UmF0aW8ubGVuZ3RoPjEmJih0aGlzLnlheGlzSW5kZXg9aSksdGhpcy5pc1JldmVyc2VkPXMuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0mJnMuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0ucmV2ZXJzZWQsdGhpcy56ZXJvWT1zLmdsb2JhbHMuZ3JpZEhlaWdodC10aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdLSh0aGlzLmlzUmV2ZXJzZWQ/cy5nbG9iYWxzLmdyaWRIZWlnaHQ6MCkrKHRoaXMuaXNSZXZlcnNlZD8yKnRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF06MCksdGhpcy5hcmVhQm90dG9tWT10aGlzLnplcm9ZLCh0aGlzLnplcm9ZPnMuZ2xvYmFscy5ncmlkSGVpZ2h0fHwiZW5kIj09PXMuY29uZmlnLnBsb3RPcHRpb25zLmFyZWEuZmlsbFRvKSYmKHRoaXMuYXJlYUJvdHRvbVk9cy5nbG9iYWxzLmdyaWRIZWlnaHQpLHRoaXMuY2F0ZWdvcnlBeGlzQ29ycmVjdGlvbj10aGlzLnhEaXZpc2lvbi8yLHRoaXMuZWxTZXJpZXM9YS5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtc2VyaWVzIixzZXJpZXNOYW1lOmIuZXNjYXBlU3RyaW5nKHMuZ2xvYmFscy5zZXJpZXNOYW1lc1tpXSl9KSx0aGlzLmVsUG9pbnRzTWFpbj1hLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwIiwiZGF0YTpyZWFsSW5kZXgiOml9KSx0aGlzLmVsRGF0YUxhYmVsc1dyYXA9YS5ncm91cCh7Y2xhc3M6ImFwZXhjaGFydHMtZGF0YWxhYmVscyIsImRhdGE6cmVhbEluZGV4IjppfSk7dmFyIG49dFtlXS5sZW5ndGg9PT1zLmdsb2JhbHMuZGF0YVBvaW50czt0aGlzLmVsU2VyaWVzLmF0dHIoeyJkYXRhOmxvbmdlc3RTZXJpZXMiOm4scmVsOmUrMSwiZGF0YTpyZWFsSW5kZXgiOml9KSx0aGlzLmFwcGVuZFBhdGhGcm9tPSEwfX0se2tleToiX2NhbGN1bGF0ZVBhdGhzRnJvbSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxzLGEsbj10LnR5cGUscj10LnNlcmllcyxvPXQuaSxsPXQucmVhbEluZGV4LGM9dC5wcmV2WCxoPXQucHJldlksZD10LnByZXZZMix1PXRoaXMudyxwPW5ldyBrKHRoaXMuY3R4KTtpZihudWxsPT09cltvXVswXSl7Zm9yKHZhciBnPTA7ZzxyW29dLmxlbmd0aDtnKyspaWYobnVsbCE9PXJbb11bZ10pe2M9dGhpcy54RGl2aXNpb24qZyxoPXRoaXMuemVyb1ktcltvXVtnXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLGU9cC5tb3ZlKGMsaCksaT1wLm1vdmUoYyx0aGlzLmFyZWFCb3R0b21ZKTticmVha319ZWxzZSBlPXAubW92ZShjLGgpLCJyYW5nZUFyZWEiPT09biYmKGU9cC5tb3ZlKGMsZCkrcC5saW5lKGMsaCkpLGk9cC5tb3ZlKGMsdGhpcy5hcmVhQm90dG9tWSkrcC5saW5lKGMsaCk7aWYocz1wLm1vdmUoLTEsdGhpcy56ZXJvWSkrcC5saW5lKC0xLHRoaXMuemVyb1kpLGE9cC5tb3ZlKC0xLHRoaXMuemVyb1kpK3AubGluZSgtMSx0aGlzLnplcm9ZKSx1Lmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCl7dmFyIGY9dGhpcy5saW5lSGVscGVycy5jaGVja1ByZXZpb3VzUGF0aHMoe3BhdGhGcm9tTGluZTpzLHBhdGhGcm9tQXJlYTphLHJlYWxJbmRleDpsfSk7cz1mLnBhdGhGcm9tTGluZSxhPWYucGF0aEZyb21BcmVhfXJldHVybntwcmV2WDpjLHByZXZZOmgsbGluZVBhdGg6ZSxhcmVhUGF0aDppLHBhdGhGcm9tTGluZTpzLHBhdGhGcm9tQXJlYTphfX19LHtrZXk6Il9oYW5kbGVQYXRocyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLGk9dC5yZWFsSW5kZXgscz10LmksYT10LnBhdGhzLHI9dGhpcy53LG89bmV3IGsodGhpcy5jdHgpLGw9bmV3IF8odGhpcy5jdHgpO3RoaXMucHJldlNlcmllc1kucHVzaChhLnlBcnJqKSxyLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1tpXT1hLnhBcnJqLHIuZ2xvYmFscy5zZXJpZXNZdmFsdWVzW2ldPWEueUFycmo7dmFyIGM9ci5jb25maWcuZm9yZWNhc3REYXRhUG9pbnRzO2lmKGMuY291bnQ+MCYmInJhbmdlQXJlYSIhPT1lKXt2YXIgaD1yLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1tpXVtyLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1tpXS5sZW5ndGgtYy5jb3VudC0xXSxkPW8uZHJhd1JlY3QoaCwwLHIuZ2xvYmFscy5ncmlkV2lkdGgsci5nbG9iYWxzLmdyaWRIZWlnaHQsMCk7ci5nbG9iYWxzLmRvbS5lbEZvcmVjYXN0TWFzay5hcHBlbmRDaGlsZChkLm5vZGUpO3ZhciB1PW8uZHJhd1JlY3QoMCwwLGgsci5nbG9iYWxzLmdyaWRIZWlnaHQsMCk7ci5nbG9iYWxzLmRvbS5lbE5vbkZvcmVjYXN0TWFzay5hcHBlbmRDaGlsZCh1Lm5vZGUpfXRoaXMucG9pbnRzQ2hhcnR8fHIuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6dGhpcy5lbFBvaW50c01haW4ubm9kZSxpbmRleDppfSk7dmFyIHA9e2k6cyxyZWFsSW5kZXg6aSxhbmltYXRpb25EZWxheTpzLGluaXRpYWxTcGVlZDpyLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLGRhdGFDaGFuZ2VTcGVlZDpyLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsY2xhc3NOYW1lOiJhcGV4Y2hhcnRzLSIuY29uY2F0KGUpfTtpZigiYXJlYSI9PT1lKWZvcih2YXIgZz1sLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6aX0pLGY9MDtmPGEuYXJlYVBhdGhzLmxlbmd0aDtmKyspe3ZhciBtPW8ucmVuZGVyUGF0aHMobihuKHt9LHApLHt9LHtwYXRoRnJvbTphLnBhdGhGcm9tQXJlYSxwYXRoVG86YS5hcmVhUGF0aHNbZl0sc3Ryb2tlOiJub25lIixzdHJva2VXaWR0aDowLHN0cm9rZUxpbmVDYXA6bnVsbCxmaWxsOmd9KSk7dGhpcy5lbFNlcmllcy5hZGQobSl9aWYoci5jb25maWcuc3Ryb2tlLnNob3cmJiF0aGlzLnBvaW50c0NoYXJ0KXt2YXIgdj1udWxsO2lmKCJsaW5lIj09PWUpdj1sLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6aSxpOnN9KTtlbHNlIGlmKCJzb2xpZCI9PT1yLmNvbmZpZy5zdHJva2UuZmlsbC50eXBlKXY9ci5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbaV07ZWxzZXt2YXIgeD1yLmNvbmZpZy5maWxsO3IuY29uZmlnLmZpbGw9ci5jb25maWcuc3Ryb2tlLmZpbGwsdj1sLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6aSxpOnN9KSxyLmNvbmZpZy5maWxsPXh9Zm9yKHZhciBiPTA7YjxhLmxpbmVQYXRocy5sZW5ndGg7YisrKXt2YXIgeT12OyJyYW5nZUFyZWEiPT09ZSYmKHk9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOml9KSk7dmFyIHc9bihuKHt9LHApLHt9LHtwYXRoRnJvbTphLnBhdGhGcm9tTGluZSxwYXRoVG86YS5saW5lUGF0aHNbYl0sc3Ryb2tlOnYsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzdHJva2VMaW5lQ2FwOnIuY29uZmlnLnN0cm9rZS5saW5lQ2FwLGZpbGw6InJhbmdlQXJlYSI9PT1lP3k6Im5vbmUifSksUz1vLnJlbmRlclBhdGhzKHcpO2lmKHRoaXMuZWxTZXJpZXMuYWRkKFMpLFMuYXR0cigiZmlsbC1ydWxlIiwiZXZlbm9kZCIpLGMuY291bnQ+MCYmInJhbmdlQXJlYSIhPT1lKXt2YXIgQz1vLnJlbmRlclBhdGhzKHcpO0Mubm9kZS5zZXRBdHRyaWJ1dGUoInN0cm9rZS1kYXNoYXJyYXkiLGMuZGFzaEFycmF5KSxjLnN0cm9rZVdpZHRoJiZDLm5vZGUuc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLGMuc3Ryb2tlV2lkdGgpLHRoaXMuZWxTZXJpZXMuYWRkKEMpLEMuYXR0cigiY2xpcC1wYXRoIiwidXJsKCNmb3JlY2FzdE1hc2siLmNvbmNhdChyLmdsb2JhbHMuY3VpZCwiKSIpKSxTLmF0dHIoImNsaXAtcGF0aCIsInVybCgjbm9uRm9yZWNhc3RNYXNrIi5jb25jYXQoci5nbG9iYWxzLmN1aWQsIikiKSl9fX19fSx7a2V5OiJfaXRlcmF0ZU92ZXJEYXRhUG9pbnRzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnR5cGUsaT10LnNlcmllcyxzPXQuaXRlcmF0aW9ucyxhPXQucmVhbEluZGV4LG49dC5pLHI9dC54LG89dC55LGw9dC5wWCxjPXQucFksaD10LnBhdGhzRnJvbSxkPXQubGluZVBhdGhzLHU9dC5hcmVhUGF0aHMscD10LnNlcmllc0luZGV4LGc9dC5saW5lWVBvc2l0aW9uLGY9dC54QXJyaixtPXQueUFycmosdj10LmlzUmFuZ2VTdGFydCx4PXQuc2VyaWVzUmFuZ2VFbmQseT10aGlzLncsdz1uZXcgayh0aGlzLmN0eCksUz10aGlzLnlSYXRpbyxDPWgucHJldlksQT1oLmxpbmVQYXRoLEU9aC5hcmVhUGF0aCxUPWgucGF0aEZyb21MaW5lLEw9aC5wYXRoRnJvbUFyZWEsUD1iLmlzTnVtYmVyKHkuZ2xvYmFscy5taW5ZQXJyW2FdKT95Lmdsb2JhbHMubWluWUFyclthXTp5Lmdsb2JhbHMubWluWTtzfHwocz15Lmdsb2JhbHMuZGF0YVBvaW50cz4xP3kuZ2xvYmFscy5kYXRhUG9pbnRzLTE6eS5nbG9iYWxzLmRhdGFQb2ludHMpO2Zvcih2YXIgTT1vLE89MDtPPHM7TysrKXt2YXIgST12b2lkIDA9PT1pW25dW08rMV18fG51bGw9PT1pW25dW08rMV07aWYoeS5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBGPXkuZ2xvYmFscy5zZXJpZXNYW2FdW08rMV07dm9pZCAwPT09eS5nbG9iYWxzLnNlcmllc1hbYV1bTysxXSYmKEY9eS5nbG9iYWxzLnNlcmllc1hbYV1bcy0xXSkscj0oRi15Lmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW99ZWxzZSByKz10aGlzLnhEaXZpc2lvbjtnPXkuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJm4+MCYmeS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg8eS5jb25maWcuc2VyaWVzLmxlbmd0aC0xP3RoaXMucHJldlNlcmllc1lbZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQsaT0wO2k8eS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7aSsrKWlmKHkuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodCk+LTEpe2UtLTticmVha31yZXR1cm4gZT49MD9lOjB9KG4tMSldW08rMV06dGhpcy56ZXJvWSxJP289Zy1QL1NbdGhpcy55YXhpc0luZGV4XSsyKih0aGlzLmlzUmV2ZXJzZWQ/UC9TW3RoaXMueWF4aXNJbmRleF06MCk6KG89Zy1pW25dW08rMV0vU1t0aGlzLnlheGlzSW5kZXhdKzIqKHRoaXMuaXNSZXZlcnNlZD9pW25dW08rMV0vU1t0aGlzLnlheGlzSW5kZXhdOjApLCJyYW5nZUFyZWEiPT09ZSYmKE09Zy14W25dW08rMV0vU1t0aGlzLnlheGlzSW5kZXhdKzIqKHRoaXMuaXNSZXZlcnNlZD94W25dW08rMV0vU1t0aGlzLnlheGlzSW5kZXhdOjApKSksZi5wdXNoKHIpLG0ucHVzaChvKTt2YXIgRD10aGlzLmxpbmVIZWxwZXJzLmNhbGN1bGF0ZVBvaW50cyh7c2VyaWVzOmkseDpyLHk6byxyZWFsSW5kZXg6YSxpOm4sajpPLHByZXZZOkN9KSx6PXRoaXMuX2NyZWF0ZVBhdGhzKHt0eXBlOmUsc2VyaWVzOmksaTpuLHJlYWxJbmRleDphLGo6Tyx4OnIseTpvLHkyOk0scFg6bCxwWTpjLGxpbmVQYXRoOkEsYXJlYVBhdGg6RSxsaW5lUGF0aHM6ZCxhcmVhUGF0aHM6dSxzZXJpZXNJbmRleDpwLGlzUmFuZ2VTdGFydDp2fSk7dT16LmFyZWFQYXRocyxkPXoubGluZVBhdGhzLGw9ei5wWCxjPXoucFksRT16LmFyZWFQYXRoLEE9ei5saW5lUGF0aCx0aGlzLmFwcGVuZFBhdGhGcm9tJiYoVCs9dy5saW5lKHIsdGhpcy56ZXJvWSksTCs9dy5saW5lKHIsdGhpcy56ZXJvWSkpLHRoaXMuaGFuZGxlTnVsbERhdGFQb2ludHMoaSxELG4sTyxhKSx0aGlzLl9oYW5kbGVNYXJrZXJzQW5kTGFiZWxzKHt0eXBlOmUscG9pbnRzUG9zOkQsaTpuLGo6TyxyZWFsSW5kZXg6YSxpc1JhbmdlU3RhcnQ6dn0pfXJldHVybnt5QXJyajptLHhBcnJqOmYscGF0aEZyb21BcmVhOkwsYXJlYVBhdGhzOnUscGF0aEZyb21MaW5lOlQsbGluZVBhdGhzOmQsbGluZVBhdGg6QSxhcmVhUGF0aDpFfX19LHtrZXk6Il9oYW5kbGVNYXJrZXJzQW5kTGFiZWxzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnR5cGUsaT10LnBvaW50c1BvcyxzPXQuaXNSYW5nZVN0YXJ0LGE9dC5pLG49dC5qLHI9dC5yZWFsSW5kZXgsbz10aGlzLncsbD1uZXcgSCh0aGlzLmN0eCk7aWYodGhpcy5wb2ludHNDaGFydCl0aGlzLnNjYXR0ZXIuZHJhdyh0aGlzLmVsU2VyaWVzLG4se3JlYWxJbmRleDpyLHBvaW50c1BvczppLHpSYXRpbzp0aGlzLnpSYXRpbyxlbFBhcmVudDp0aGlzLmVsUG9pbnRzTWFpbn0pO2Vsc2V7by5nbG9iYWxzLnNlcmllc1thXS5sZW5ndGg+MSYmdGhpcy5lbFBvaW50c01haW4ubm9kZS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuIik7dmFyIGM9dGhpcy5tYXJrZXJzLnBsb3RDaGFydE1hcmtlcnMoaSxyLG4rMSk7bnVsbCE9PWMmJnRoaXMuZWxQb2ludHNNYWluLmFkZChjKX12YXIgaD1sLmRyYXdEYXRhTGFiZWwoe3R5cGU6ZSxpc1JhbmdlU3RhcnQ6cyxwb3M6aSxpOnIsajpuKzF9KTtudWxsIT09aCYmdGhpcy5lbERhdGFMYWJlbHNXcmFwLmFkZChoKX19LHtrZXk6Il9jcmVhdGVQYXRocyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLGk9dC5zZXJpZXMscz10LmksYT10LnJlYWxJbmRleCxuPXQuaixyPXQueCxvPXQueSxsPXQueTIsYz10LnBYLGg9dC5wWSxkPXQubGluZVBhdGgsdT10LmFyZWFQYXRoLHA9dC5saW5lUGF0aHMsZz10LmFyZWFQYXRocyxmPXQuc2VyaWVzSW5kZXgsbT10LmlzUmFuZ2VTdGFydCx2PXRoaXMudyx4PW5ldyBrKHRoaXMuY3R4KSxiPXYuY29uZmlnLnN0cm9rZS5jdXJ2ZSx5PXRoaXMuYXJlYUJvdHRvbVk7aWYoQXJyYXkuaXNBcnJheSh2LmNvbmZpZy5zdHJva2UuY3VydmUpJiYoYj1BcnJheS5pc0FycmF5KGYpP3YuY29uZmlnLnN0cm9rZS5jdXJ2ZVtmW3NdXTp2LmNvbmZpZy5zdHJva2UuY3VydmVbc10pLCJzbW9vdGgiPT09Yil7dmFyIHc9LjM1KihyLWMpO3YuZ2xvYmFscy5oYXNOdWxsVmFsdWVzPyhudWxsIT09aVtzXVtuXSYmKG51bGwhPT1pW3NdW24rMV0/KGQ9eC5tb3ZlKGMsaCkreC5jdXJ2ZShjK3csaCxyLXcsbyxyKzEsbyksdT14Lm1vdmUoYysxLGgpK3guY3VydmUoYyt3LGgsci13LG8scisxLG8pK3gubGluZShyLHkpK3gubGluZShjLHkpKyJ6Iik6KGQ9eC5tb3ZlKGMsaCksdT14Lm1vdmUoYyxoKSsieiIpKSxwLnB1c2goZCksZy5wdXNoKHUpKTooZCs9eC5jdXJ2ZShjK3csaCxyLXcsbyxyLG8pLHUrPXguY3VydmUoYyt3LGgsci13LG8scixvKSksYz1yLGg9byxuPT09aVtzXS5sZW5ndGgtMiYmKHU9dSt4LmN1cnZlKGMsaCxyLG8scix5KSt4Lm1vdmUocixvKSsieiIsInJhbmdlQXJlYSI9PT1lJiZtP2Q9ZCt4LmN1cnZlKGMsaCxyLG8scixsKSt4Lm1vdmUocixsKSsieiI6di5nbG9iYWxzLmhhc051bGxWYWx1ZXN8fChwLnB1c2goZCksZy5wdXNoKHUpKSl9ZWxzZXtpZihudWxsPT09aVtzXVtuKzFdKXtkKz14Lm1vdmUocixvKTt2YXIgUz12Lmdsb2JhbHMuaXNYTnVtZXJpYz8odi5nbG9iYWxzLnNlcmllc1hbYV1bbl0tdi5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvOnItdGhpcy54RGl2aXNpb247dT11K3gubGluZShTLHkpK3gubW92ZShyLG8pKyJ6In1udWxsPT09aVtzXVtuXSYmKGQrPXgubW92ZShyLG8pLHUrPXgubW92ZShyLHkpKSwic3RlcGxpbmUiPT09Yj8oZD1kK3gubGluZShyLG51bGwsIkgiKSt4LmxpbmUobnVsbCxvLCJWIiksdT11K3gubGluZShyLG51bGwsIkgiKSt4LmxpbmUobnVsbCxvLCJWIikpOiJzdHJhaWdodCI9PT1iJiYoZCs9eC5saW5lKHIsbyksdSs9eC5saW5lKHIsbykpLG49PT1pW3NdLmxlbmd0aC0yJiYodT11K3gubGluZShyLHkpK3gubW92ZShyLG8pKyJ6IiwicmFuZ2VBcmVhIj09PWUmJm0/ZD1kK3gubGluZShyLGwpK3gubW92ZShyLGwpKyJ6IjoocC5wdXNoKGQpLGcucHVzaCh1KSkpfXJldHVybntsaW5lUGF0aHM6cCxhcmVhUGF0aHM6ZyxwWDpjLHBZOmgsbGluZVBhdGg6ZCxhcmVhUGF0aDp1fX19LHtrZXk6ImhhbmRsZU51bGxEYXRhUG9pbnRzIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzLGEpe3ZhciBuPXRoaXMudztpZihudWxsPT09dFtpXVtzXSYmbi5jb25maWcubWFya2Vycy5zaG93TnVsbERhdGFQb2ludHN8fDE9PT10W2ldLmxlbmd0aCl7dmFyIHI9dGhpcy5tYXJrZXJzLnBsb3RDaGFydE1hcmtlcnMoZSxhLHMrMSx0aGlzLnN0cm9rZVdpZHRoLW4uY29uZmlnLm1hcmtlcnMuc3Ryb2tlV2lkdGgvMiwhMCk7bnVsbCE9PXImJnRoaXMuZWxQb2ludHNNYWluLmFkZChyKX19fV0pLHR9KCk7d2luZG93LlRyZWVtYXBTcXVhcmVkPXt9LHdpbmRvdy5UcmVlbWFwU3F1YXJlZC5nZW5lcmF0ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpLHMsYSl7dGhpcy54b2Zmc2V0PWUsdGhpcy55b2Zmc2V0PWksdGhpcy5oZWlnaHQ9YSx0aGlzLndpZHRoPXMsdGhpcy5zaG9ydGVzdEVkZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4odGhpcy5oZWlnaHQsdGhpcy53aWR0aCl9LHRoaXMuZ2V0Q29vcmRpbmF0ZXM9ZnVuY3Rpb24odCl7dmFyIGUsaT1bXSxzPXRoaXMueG9mZnNldCxhPXRoaXMueW9mZnNldCxyPW4odCkvdGhpcy5oZWlnaHQsbz1uKHQpL3RoaXMud2lkdGg7aWYodGhpcy53aWR0aD49dGhpcy5oZWlnaHQpZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpLnB1c2goW3MsYSxzK3IsYSt0W2VdL3JdKSxhKz10W2VdL3I7ZWxzZSBmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWkucHVzaChbcyxhLHMrdFtlXS9vLGErb10pLHMrPXRbZV0vbztyZXR1cm4gaX0sdGhpcy5jdXRBcmVhPWZ1bmN0aW9uKGUpe3ZhciBpO2lmKHRoaXMud2lkdGg+PXRoaXMuaGVpZ2h0KXt2YXIgcz1lL3RoaXMuaGVpZ2h0LGE9dGhpcy53aWR0aC1zO2k9bmV3IHQodGhpcy54b2Zmc2V0K3MsdGhpcy55b2Zmc2V0LGEsdGhpcy5oZWlnaHQpfWVsc2V7dmFyIG49ZS90aGlzLndpZHRoLHI9dGhpcy5oZWlnaHQtbjtpPW5ldyB0KHRoaXMueG9mZnNldCx0aGlzLnlvZmZzZXQrbix0aGlzLndpZHRoLHIpfXJldHVybiBpfX1mdW5jdGlvbiBlKGUscyxhLHIsbyl7cj12b2lkIDA9PT1yPzA6cixvPXZvaWQgMD09PW8/MDpvO3ZhciBsPWkoZnVuY3Rpb24odCxlKXt2YXIgaSxzPVtdLGE9ZS9uKHQpO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspc1tpXT10W2ldKmE7cmV0dXJuIHN9KGUscyphKSxbXSxuZXcgdChyLG8scyxhKSxbXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlLGkscz1bXTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWZvcihpPTA7aTx0W2VdLmxlbmd0aDtpKyspcy5wdXNoKHRbZV1baV0pO3JldHVybiBzfShsKX1mdW5jdGlvbiBpKHQsZSxhLHIpe3ZhciBvLGwsYztpZigwIT09dC5sZW5ndGgpcmV0dXJuIG89YS5zaG9ydGVzdEVkZ2UoKSxmdW5jdGlvbih0LGUsaSl7dmFyIGE7cmV0dXJuIDA9PT10Lmxlbmd0aHx8KChhPXQuc2xpY2UoKSkucHVzaChlKSxzKHQsaSk+PXMoYSxpKSl9KGUsbD10WzBdLG8pPyhlLnB1c2gobCksaSh0LnNsaWNlKDEpLGUsYSxyKSk6KGM9YS5jdXRBcmVhKG4oZSksciksci5wdXNoKGEuZ2V0Q29vcmRpbmF0ZXMoZSkpLGkodCxbXSxjLHIpKSxyO3IucHVzaChhLmdldENvb3JkaW5hdGVzKGUpKX1mdW5jdGlvbiBzKHQsZSl7dmFyIGk9TWF0aC5taW4uYXBwbHkoTWF0aCx0KSxzPU1hdGgubWF4LmFwcGx5KE1hdGgsdCksYT1uKHQpO3JldHVybiBNYXRoLm1heChNYXRoLnBvdyhlLDIpKnMvTWF0aC5wb3coYSwyKSxNYXRoLnBvdyhhLDIpLyhNYXRoLnBvdyhlLDIpKmkpKX1mdW5jdGlvbiBhKHQpe3JldHVybiB0JiZ0LmNvbnN0cnVjdG9yPT09QXJyYXl9ZnVuY3Rpb24gbih0KXt2YXIgZSxpPTA7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpKz10W2VdO3JldHVybiBpfWZ1bmN0aW9uIHIodCl7dmFyIGUsaT0wO2lmKGEodFswXSkpZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpKz1yKHRbZV0pO2Vsc2UgaT1uKHQpO3JldHVybiBpfXJldHVybiBmdW5jdGlvbiB0KGkscyxuLG8sbCl7bz12b2lkIDA9PT1vPzA6byxsPXZvaWQgMD09PWw/MDpsO3ZhciBjLGgsZD1bXSx1PVtdO2lmKGEoaVswXSkpe2ZvcihoPTA7aDxpLmxlbmd0aDtoKyspZFtoXT1yKGlbaF0pO2ZvcihjPWUoZCxzLG4sbyxsKSxoPTA7aDxpLmxlbmd0aDtoKyspdS5wdXNoKHQoaVtoXSxjW2hdWzJdLWNbaF1bMF0sY1toXVszXS1jW2hdWzFdLGNbaF1bMF0sY1toXVsxXSkpfWVsc2UgdT1lKGkscyxuLG8sbCk7cmV0dXJuIHV9fSgpO3ZhciB6dCxOdCxSdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuc3Ryb2tlV2lkdGg9dGhpcy53LmNvbmZpZy5zdHJva2Uud2lkdGgsdGhpcy5oZWxwZXJzPW5ldyBFdChlKSx0aGlzLmR5bmFtaWNBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLHRoaXMubGFiZWxzPVtdfXJldHVybiBjKHQsW3trZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncscz1uZXcgayh0aGlzLmN0eCksYT1uZXcgXyh0aGlzLmN0eCksbj1zLmdyb3VwKHtjbGFzczoiYXBleGNoYXJ0cy10cmVlbWFwIn0pO2lmKGkuZ2xvYmFscy5ub0RhdGEpcmV0dXJuIG47dmFyIHI9W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyh0KX0pKTtyLnB1c2goZSl9KSksdGhpcy5uZWdSYW5nZT10aGlzLmhlbHBlcnMuY2hlY2tDb2xvclJhbmdlKCksaS5jb25maWcuc2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dC5kYXRhLmZvckVhY2goKGZ1bmN0aW9uKHQpe0FycmF5LmlzQXJyYXkoZS5sYWJlbHNbaV0pfHwoZS5sYWJlbHNbaV09W10pLGUubGFiZWxzW2ldLnB1c2godC54KX0pKX0pKSx3aW5kb3cuVHJlZW1hcFNxdWFyZWQuZ2VuZXJhdGUocixpLmdsb2JhbHMuZ3JpZFdpZHRoLGkuZ2xvYmFscy5ncmlkSGVpZ2h0KS5mb3JFYWNoKChmdW5jdGlvbihyLG8pe3ZhciBsPXMuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXRyZWVtYXAtc2VyaWVzIixzZXJpZXNOYW1lOmIuZXNjYXBlU3RyaW5nKGkuZ2xvYmFscy5zZXJpZXNOYW1lc1tvXSkscmVsOm8rMSwiZGF0YTpyZWFsSW5kZXgiOm99KTtpZihpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBjPWkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7bmV3IHcoZS5jdHgpLmRyb3BTaGFkb3cobixjLG8pfXZhciBoPXMuZ3JvdXAoe2NsYXNzOiJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzIn0pO3IuZm9yRWFjaCgoZnVuY3Rpb24obixyKXt2YXIgYz1uWzBdLGg9blsxXSxkPW5bMl0sdT1uWzNdLHA9cy5kcmF3UmVjdChjLGgsZC1jLHUtaCwwLCIjZmZmIiwxLGUuc3Ryb2tlV2lkdGgsaS5jb25maWcucGxvdE9wdGlvbnMudHJlZW1hcC51c2VGaWxsQ29sb3JBc1N0cm9rZT9mOmkuZ2xvYmFscy5zdHJva2UuY29sb3JzW29dKTtwLmF0dHIoe2N4OmMsY3k6aCxpbmRleDpvLGk6byxqOnIsd2lkdGg6ZC1jLGhlaWdodDp1LWh9KTt2YXIgZz1lLmhlbHBlcnMuZ2V0U2hhZGVDb2xvcihpLmNvbmZpZy5jaGFydC50eXBlLG8scixlLm5lZ1JhbmdlKSxmPWcuY29sb3I7dm9pZCAwIT09aS5jb25maWcuc2VyaWVzW29dLmRhdGFbcl0mJmkuY29uZmlnLnNlcmllc1tvXS5kYXRhW3JdLmZpbGxDb2xvciYmKGY9aS5jb25maWcuc2VyaWVzW29dLmRhdGFbcl0uZmlsbENvbG9yKTt2YXIgbT1hLmZpbGxQYXRoKHtjb2xvcjpmLHNlcmllc051bWJlcjpvLGRhdGFQb2ludEluZGV4OnJ9KTtwLm5vZGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy10cmVlbWFwLXJlY3QiKSxwLmF0dHIoe2ZpbGw6bX0pLGUuaGVscGVycy5hZGRMaXN0ZW5lcnMocCk7dmFyIHY9e3g6YysoZC1jKS8yLHk6aCsodS1oKS8yLHdpZHRoOjAsaGVpZ2h0OjB9LHg9e3g6Yyx5Omgsd2lkdGg6ZC1jLGhlaWdodDp1LWh9O2lmKGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCYmIWkuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIGI9MTtpLmdsb2JhbHMucmVzaXplZHx8KGI9aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksZS5hbmltYXRlVHJlZW1hcChwLHYseCxiKX1pZihpLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciB5PTE7ZS5keW5hbWljQW5pbS5lbmFibGVkJiZpLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSYmKHk9ZS5keW5hbWljQW5pbS5zcGVlZCxpLmdsb2JhbHMucHJldmlvdXNQYXRoc1tvXSYmaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbb11bcl0mJmkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW29dW3JdLnJlY3QmJih2PWkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW29dW3JdLnJlY3QpLGUuYW5pbWF0ZVRyZWVtYXAocCx2LHgseSkpfXZhciB3PWUuZ2V0Rm9udFNpemUobiksaz1pLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcihlLmxhYmVsc1tvXVtyXSx7dmFsdWU6aS5nbG9iYWxzLnNlcmllc1tvXVtyXSxzZXJpZXNJbmRleDpvLGRhdGFQb2ludEluZGV4OnIsdzppfSksUz1lLmhlbHBlcnMuY2FsY3VsYXRlRGF0YUxhYmVscyh7dGV4dDprLHg6KGMrZCkvMix5OihoK3UpLzIrZS5zdHJva2VXaWR0aC8yK3cvMyxpOm8sajpyLGNvbG9yUHJvcHM6Zyxmb250U2l6ZTp3LHNlcmllczp0fSk7aS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkJiZTJiZlLnJvdGF0ZVRvRml0TGFiZWwoUyx3LGssYyxoLGQsdSksbC5hZGQocCksbnVsbCE9PVMmJmwuYWRkKFMpfSkpLGwuYWRkKGgpLG4uYWRkKGwpfSkpLG59fSx7a2V5OiJnZXRGb250U2l6ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxzPXRoaXMudyxhPWZ1bmN0aW9uIHQoZSl7dmFyIGkscz0wO2lmKEFycmF5LmlzQXJyYXkoZVswXSkpZm9yKGk9MDtpPGUubGVuZ3RoO2krKylzKz10KGVbaV0pO2Vsc2UgZm9yKGk9MDtpPGUubGVuZ3RoO2krKylzKz1lW2ldLmxlbmd0aDtyZXR1cm4gc30odGhpcy5sYWJlbHMpL2Z1bmN0aW9uIHQoZSl7dmFyIGkscz0wO2lmKEFycmF5LmlzQXJyYXkoZVswXSkpZm9yKGk9MDtpPGUubGVuZ3RoO2krKylzKz10KGVbaV0pO2Vsc2UgZm9yKGk9MDtpPGUubGVuZ3RoO2krKylzKz0xO3JldHVybiBzfSh0aGlzLmxhYmVscyk7cmV0dXJuIGU9KHRbMl0tdFswXSkqKHRbM10tdFsxXSksaT1NYXRoLnBvdyhlLC41KSxNYXRoLm1pbihpL2EscGFyc2VJbnQocy5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkpfX0se2tleToicm90YXRlVG9GaXRMYWJlbCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkscyxhLG4scil7dmFyIG89bmV3IGsodGhpcy5jdHgpLGw9by5nZXRUZXh0UmVjdHMoaSxlKTtpZihsLndpZHRoK3RoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoKzU+bi1zJiZsLndpZHRoPD1yLWEpe3ZhciBjPW8ucm90YXRlQXJvdW5kQ2VudGVyKHQubm9kZSk7dC5ub2RlLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwicm90YXRlKC05MCAiLmNvbmNhdChjLngsIiAiKS5jb25jYXQoYy55LCIpIikpfX19LHtrZXk6ImFuaW1hdGVUcmVlbWFwIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxzKXt2YXIgYT1uZXcgeSh0aGlzLmN0eCk7YS5hbmltYXRlUmVjdCh0LHt4OmUueCx5OmUueSx3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH0se3g6aS54LHk6aS55LHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fSxzLChmdW5jdGlvbigpe2EuYW5pbWF0aW9uQ29tcGxldGVkKHQpfSkpfX1dKSx0fSgpLF90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMudGltZVNjYWxlQXJyYXk9W10sdGhpcy51dGM9dGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEN9cmV0dXJuIGModCxbe2tleToiY2FsY3VsYXRlVGltZVNjYWxlVGlja3MiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxzPXRoaXMudztpZihzLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkKXJldHVybiBzLmdsb2JhbHMubGFiZWxzPVtdLHMuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHM9W10sW107dmFyIGE9bmV3IE8odGhpcy5jdHgpLHI9KGUtdCkvODY0ZTU7dGhpcy5kZXRlcm1pbmVJbnRlcnZhbChyKSxzLmdsb2JhbHMuZGlzYWJsZVpvb21Jbj0hMSxzLmdsb2JhbHMuZGlzYWJsZVpvb21PdXQ9ITEscjwuMDAwMTE1NzQwNzQwNzQwNzQwNzU/cy5nbG9iYWxzLmRpc2FibGVab29tSW49ITA6cj41ZTQmJihzLmdsb2JhbHMuZGlzYWJsZVpvb21PdXQ9ITApO3ZhciBvPWEuZ2V0VGltZVVuaXRzZnJvbVRpbWVzdGFtcCh0LGUsdGhpcy51dGMpLGw9cy5nbG9iYWxzLmdyaWRXaWR0aC9yLGM9bC8yNCxoPWMvNjAsZD1oLzYwLHU9TWF0aC5mbG9vcigyNCpyKSxwPU1hdGguZmxvb3IoMTQ0MCpyKSxnPU1hdGguZmxvb3IoODY0MDAqciksZj1NYXRoLmZsb29yKHIpLG09TWF0aC5mbG9vcihyLzMwKSx2PU1hdGguZmxvb3Ioci8zNjUpLHg9e21pbk1pbGxpc2Vjb25kOm8ubWluTWlsbGlzZWNvbmQsbWluU2Vjb25kOm8ubWluU2Vjb25kLG1pbk1pbnV0ZTpvLm1pbk1pbnV0ZSxtaW5Ib3VyOm8ubWluSG91cixtaW5EYXRlOm8ubWluRGF0ZSxtaW5Nb250aDpvLm1pbk1vbnRoLG1pblllYXI6by5taW5ZZWFyfSxiPXtmaXJzdFZhbDp4LGN1cnJlbnRNaWxsaXNlY29uZDp4Lm1pbk1pbGxpc2Vjb25kLGN1cnJlbnRTZWNvbmQ6eC5taW5TZWNvbmQsY3VycmVudE1pbnV0ZTp4Lm1pbk1pbnV0ZSxjdXJyZW50SG91cjp4Lm1pbkhvdXIsY3VycmVudE1vbnRoRGF0ZTp4Lm1pbkRhdGUsY3VycmVudERhdGU6eC5taW5EYXRlLGN1cnJlbnRNb250aDp4Lm1pbk1vbnRoLGN1cnJlbnRZZWFyOngubWluWWVhcixkYXlzV2lkdGhPblhBeGlzOmwsaG91cnNXaWR0aE9uWEF4aXM6YyxtaW51dGVzV2lkdGhPblhBeGlzOmgsc2Vjb25kc1dpZHRoT25YQXhpczpkLG51bWJlck9mU2Vjb25kczpnLG51bWJlck9mTWludXRlczpwLG51bWJlck9mSG91cnM6dSxudW1iZXJPZkRheXM6ZixudW1iZXJPZk1vbnRoczptLG51bWJlck9mWWVhcnM6dn07c3dpdGNoKHRoaXMudGlja0ludGVydmFsKXtjYXNlInllYXJzIjp0aGlzLmdlbmVyYXRlWWVhclNjYWxlKGIpO2JyZWFrO2Nhc2UibW9udGhzIjpjYXNlImhhbGZfeWVhciI6dGhpcy5nZW5lcmF0ZU1vbnRoU2NhbGUoYik7YnJlYWs7Y2FzZSJtb250aHNfZGF5cyI6Y2FzZSJtb250aHNfZm9ydG5pZ2h0IjpjYXNlImRheXMiOmNhc2Uid2Vla19kYXlzIjp0aGlzLmdlbmVyYXRlRGF5U2NhbGUoYik7YnJlYWs7Y2FzZSJob3VycyI6dGhpcy5nZW5lcmF0ZUhvdXJTY2FsZShiKTticmVhaztjYXNlIm1pbnV0ZXNfZml2ZXMiOmNhc2UibWludXRlcyI6dGhpcy5nZW5lcmF0ZU1pbnV0ZVNjYWxlKGIpO2JyZWFrO2Nhc2Uic2Vjb25kc190ZW5zIjpjYXNlInNlY29uZHNfZml2ZXMiOmNhc2Uic2Vjb25kcyI6dGhpcy5nZW5lcmF0ZVNlY29uZFNjYWxlKGIpfXZhciB5PXRoaXMudGltZVNjYWxlQXJyYXkubWFwKChmdW5jdGlvbih0KXt2YXIgZT17cG9zaXRpb246dC5wb3NpdGlvbix1bml0OnQudW5pdCx5ZWFyOnQueWVhcixkYXk6dC5kYXk/dC5kYXk6MSxob3VyOnQuaG91cj90LmhvdXI6MCxtb250aDp0Lm1vbnRoKzF9O3JldHVybiJtb250aCI9PT10LnVuaXQ/bihuKHt9LGUpLHt9LHtkYXk6MSx2YWx1ZTp0LnZhbHVlKzF9KToiZGF5Ij09PXQudW5pdHx8ImhvdXIiPT09dC51bml0P24obih7fSxlKSx7fSx7dmFsdWU6dC52YWx1ZX0pOiJtaW51dGUiPT09dC51bml0P24obih7fSxlKSx7fSx7dmFsdWU6dC52YWx1ZSxtaW51dGU6dC52YWx1ZX0pOiJzZWNvbmQiPT09dC51bml0P24obih7fSxlKSx7fSx7dmFsdWU6dC52YWx1ZSxtaW51dGU6dC5taW51dGUsc2Vjb25kOnQuc2Vjb25kfSk6dH0pKTtyZXR1cm4geS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlPTEsYT1NYXRoLmNlaWwocy5nbG9iYWxzLmdyaWRXaWR0aC8xMjApLG49dC52YWx1ZTt2b2lkIDAhPT1zLmNvbmZpZy54YXhpcy50aWNrQW1vdW50JiYoYT1zLmNvbmZpZy54YXhpcy50aWNrQW1vdW50KSx5Lmxlbmd0aD5hJiYoZT1NYXRoLmZsb29yKHkubGVuZ3RoL2EpKTt2YXIgcj0hMSxvPSExO3N3aXRjaChpLnRpY2tJbnRlcnZhbCl7Y2FzZSJ5ZWFycyI6InllYXIiPT09dC51bml0JiYocj0hMCk7YnJlYWs7Y2FzZSJoYWxmX3llYXIiOmU9NywieWVhciI9PT10LnVuaXQmJihyPSEwKTticmVhaztjYXNlIm1vbnRocyI6ZT0xLCJ5ZWFyIj09PXQudW5pdCYmKHI9ITApO2JyZWFrO2Nhc2UibW9udGhzX2ZvcnRuaWdodCI6ZT0xNSwieWVhciIhPT10LnVuaXQmJiJtb250aCIhPT10LnVuaXR8fChyPSEwKSwzMD09PW4mJihvPSEwKTticmVhaztjYXNlIm1vbnRoc19kYXlzIjplPTEwLCJtb250aCI9PT10LnVuaXQmJihyPSEwKSwzMD09PW4mJihvPSEwKTticmVhaztjYXNlIndlZWtfZGF5cyI6ZT04LCJtb250aCI9PT10LnVuaXQmJihyPSEwKTticmVhaztjYXNlImRheXMiOmU9MSwibW9udGgiPT09dC51bml0JiYocj0hMCk7YnJlYWs7Y2FzZSJob3VycyI6ImRheSI9PT10LnVuaXQmJihyPSEwKTticmVhaztjYXNlIm1pbnV0ZXNfZml2ZXMiOmNhc2Uic2Vjb25kc19maXZlcyI6biU1IT0wJiYobz0hMCk7YnJlYWs7Y2FzZSJzZWNvbmRzX3RlbnMiOm4lMTAhPTAmJihvPSEwKX1pZigiaG91cnMiPT09aS50aWNrSW50ZXJ2YWx8fCJtaW51dGVzX2ZpdmVzIj09PWkudGlja0ludGVydmFsfHwic2Vjb25kc190ZW5zIj09PWkudGlja0ludGVydmFsfHwic2Vjb25kc19maXZlcyI9PT1pLnRpY2tJbnRlcnZhbCl7aWYoIW8pcmV0dXJuITB9ZWxzZSBpZigobiVlPT0wfHxyKSYmIW8pcmV0dXJuITB9KSl9fSx7a2V5OiJyZWNhbGNEaW1lbnNpb25zQmFzZWRPbkZvcm1hdCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncscz10aGlzLmZvcm1hdERhdGVzKHQpLGE9dGhpcy5yZW1vdmVPdmVybGFwcGluZ1RTKHMpO2kuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHM9YS5zbGljZSgpLG5ldyBjdCh0aGlzLmN0eCkucGxvdENvb3JkcygpfX0se2tleToiZGV0ZXJtaW5lSW50ZXJ2YWwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPTI0KnQsaT02MCplO3N3aXRjaCghMCl7Y2FzZSB0LzM2NT41OnRoaXMudGlja0ludGVydmFsPSJ5ZWFycyI7YnJlYWs7Y2FzZSB0PjgwMDp0aGlzLnRpY2tJbnRlcnZhbD0iaGFsZl95ZWFyIjticmVhaztjYXNlIHQ+MTgwOnRoaXMudGlja0ludGVydmFsPSJtb250aHMiO2JyZWFrO2Nhc2UgdD45MDp0aGlzLnRpY2tJbnRlcnZhbD0ibW9udGhzX2ZvcnRuaWdodCI7YnJlYWs7Y2FzZSB0PjYwOnRoaXMudGlja0ludGVydmFsPSJtb250aHNfZGF5cyI7YnJlYWs7Y2FzZSB0PjMwOnRoaXMudGlja0ludGVydmFsPSJ3ZWVrX2RheXMiO2JyZWFrO2Nhc2UgdD4yOnRoaXMudGlja0ludGVydmFsPSJkYXlzIjticmVhaztjYXNlIGU+Mi40OnRoaXMudGlja0ludGVydmFsPSJob3VycyI7YnJlYWs7Y2FzZSBpPjE1OnRoaXMudGlja0ludGVydmFsPSJtaW51dGVzX2ZpdmVzIjticmVhaztjYXNlIGk+NTp0aGlzLnRpY2tJbnRlcnZhbD0ibWludXRlcyI7YnJlYWs7Y2FzZSBpPjE6dGhpcy50aWNrSW50ZXJ2YWw9InNlY29uZHNfdGVucyI7YnJlYWs7Y2FzZSA2MCppPjIwOnRoaXMudGlja0ludGVydmFsPSJzZWNvbmRzX2ZpdmVzIjticmVhaztkZWZhdWx0OnRoaXMudGlja0ludGVydmFsPSJzZWNvbmRzIn19fSx7a2V5OiJnZW5lcmF0ZVllYXJTY2FsZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudE1vbnRoLHM9dC5jdXJyZW50WWVhcixhPXQuZGF5c1dpZHRoT25YQXhpcyxuPXQubnVtYmVyT2ZZZWFycyxyPWUubWluWWVhcixvPTAsbD1uZXcgTyh0aGlzLmN0eCksYz0ieWVhciI7aWYoZS5taW5EYXRlPjF8fGUubWluTW9udGg+MCl7dmFyIGg9bC5kZXRlcm1pbmVSZW1haW5pbmdEYXlzT2ZZZWFyKGUubWluWWVhcixlLm1pbk1vbnRoLGUubWluRGF0ZSk7bz0obC5kZXRlcm1pbmVEYXlzT2ZZZWFyKGUubWluWWVhciktaCsxKSphLHI9ZS5taW5ZZWFyKzEsdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpvLHZhbHVlOnIsdW5pdDpjLHllYXI6cixtb250aDpiLm1vbnRoTW9kKGkrMSl9KX1lbHNlIDE9PT1lLm1pbkRhdGUmJjA9PT1lLm1pbk1vbnRoJiZ0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOm8sdmFsdWU6cix1bml0OmMseWVhcjpzLG1vbnRoOmIubW9udGhNb2QoaSsxKX0pO2Zvcih2YXIgZD1yLHU9byxwPTA7cDxuO3ArKylkKyssdT1sLmRldGVybWluZURheXNPZlllYXIoZC0xKSphK3UsdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjp1LHZhbHVlOmQsdW5pdDpjLHllYXI6ZCxtb250aDoxfSl9fSx7a2V5OiJnZW5lcmF0ZU1vbnRoU2NhbGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlyc3RWYWwsaT10LmN1cnJlbnRNb250aERhdGUscz10LmN1cnJlbnRNb250aCxhPXQuY3VycmVudFllYXIsbj10LmRheXNXaWR0aE9uWEF4aXMscj10Lm51bWJlck9mTW9udGhzLG89cyxsPTAsYz1uZXcgTyh0aGlzLmN0eCksaD0ibW9udGgiLGQ9MDtpZihlLm1pbkRhdGU+MSl7bD0oYy5kZXRlcm1pbmVEYXlzT2ZNb250aHMocysxLGUubWluWWVhciktaSsxKSpuLG89Yi5tb250aE1vZChzKzEpO3ZhciB1PWErZCxwPWIubW9udGhNb2QobyksZz1vOzA9PT1vJiYoaD0ieWVhciIsZz11LHA9MSx1Kz1kKz0xKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmwsdmFsdWU6Zyx1bml0OmgseWVhcjp1LG1vbnRoOnB9KX1lbHNlIHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bCx2YWx1ZTpvLHVuaXQ6aCx5ZWFyOmEsbW9udGg6Yi5tb250aE1vZChzKX0pO2Zvcih2YXIgZj1vKzEsbT1sLHY9MCx4PTE7djxyO3YrKyx4KyspezA9PT0oZj1iLm1vbnRoTW9kKGYpKT8oaD0ieWVhciIsZCs9MSk6aD0ibW9udGgiO3ZhciB5PXRoaXMuX2dldFllYXIoYSxmLGQpO209Yy5kZXRlcm1pbmVEYXlzT2ZNb250aHMoZix5KSpuK207dmFyIHc9MD09PWY/eTpmO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bSx2YWx1ZTp3LHVuaXQ6aCx5ZWFyOnksbW9udGg6MD09PWY/MTpmfSksZisrfX19LHtrZXk6ImdlbmVyYXRlRGF5U2NhbGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlyc3RWYWwsaT10LmN1cnJlbnRNb250aCxzPXQuY3VycmVudFllYXIsYT10LmhvdXJzV2lkdGhPblhBeGlzLG49dC5udW1iZXJPZkRheXMscj1uZXcgTyh0aGlzLmN0eCksbz0iZGF5IixsPWUubWluRGF0ZSsxLGM9bCxoPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD5yLmRldGVybWluZURheXNPZk1vbnRocyhlKzEsaSk/KGM9MSxvPSJtb250aCIsdT1lKz0xLGUpOmV9LGQ9KDI0LWUubWluSG91cikqYSx1PWwscD1oKGMsaSxzKTswPT09ZS5taW5Ib3VyJiYxPT09ZS5taW5EYXRlPyhkPTAsdT1iLm1vbnRoTW9kKGUubWluTW9udGgpLG89Im1vbnRoIixjPWUubWluRGF0ZSxuKyspOjEhPT1lLm1pbkRhdGUmJjA9PT1lLm1pbkhvdXImJjA9PT1lLm1pbk1pbnV0ZSYmKGQ9MCxsPWUubWluRGF0ZSx1PWwscD1oKGM9bCxpLHMpKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmQsdmFsdWU6dSx1bml0Om8seWVhcjp0aGlzLl9nZXRZZWFyKHMscCwwKSxtb250aDpiLm1vbnRoTW9kKHApLGRheTpjfSk7Zm9yKHZhciBnPWQsZj0wO2Y8bjtmKyspe289ImRheSIscD1oKGMrPTEscCx0aGlzLl9nZXRZZWFyKHMscCwwKSk7dmFyIG09dGhpcy5fZ2V0WWVhcihzLHAsMCk7Zz0yNCphK2c7dmFyIHY9MT09PWM/Yi5tb250aE1vZChwKTpjO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Zyx2YWx1ZTp2LHVuaXQ6byx5ZWFyOm0sbW9udGg6Yi5tb250aE1vZChwKSxkYXk6dn0pfX19LHtrZXk6ImdlbmVyYXRlSG91clNjYWxlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpcnN0VmFsLGk9dC5jdXJyZW50RGF0ZSxzPXQuY3VycmVudE1vbnRoLGE9dC5jdXJyZW50WWVhcixuPXQubWludXRlc1dpZHRoT25YQXhpcyxyPXQubnVtYmVyT2ZIb3VycyxvPW5ldyBPKHRoaXMuY3R4KSxsPSJob3VyIixjPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+by5kZXRlcm1pbmVEYXlzT2ZNb250aHMoZSsxLGEpJiYoZj0xLGUrPTEpLHttb250aDplLGRhdGU6Zn19LGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD5vLmRldGVybWluZURheXNPZk1vbnRocyhlKzEsYSk/ZSs9MTplfSxkPTYwLShlLm1pbk1pbnV0ZStlLm1pblNlY29uZC82MCksdT1kKm4scD1lLm1pbkhvdXIrMSxnPXArMTs2MD09PWQmJih1PTAsZz0ocD1lLm1pbkhvdXIpKzEpO3ZhciBmPWksbT1oKGYscyk7dGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjp1LHZhbHVlOnAsdW5pdDpsLGRheTpmLGhvdXI6Zyx5ZWFyOmEsbW9udGg6Yi5tb250aE1vZChtKX0pO2Zvcih2YXIgdj11LHg9MDt4PHI7eCsrKXtsPSJob3VyIixnPj0yNCYmKGc9MCxsPSJkYXkiLG09YyhmKz0xLG0pLm1vbnRoLG09aChmLG0pKTt2YXIgeT10aGlzLl9nZXRZZWFyKGEsbSwwKTt2PTA9PT1nJiYwPT09eD9kKm46NjAqbit2O3ZhciB3PTA9PT1nP2Y6Zzt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOnYsdmFsdWU6dyx1bml0OmwsaG91cjpnLGRheTpmLHllYXI6eSxtb250aDpiLm1vbnRoTW9kKG0pfSksZysrfX19LHtrZXk6ImdlbmVyYXRlTWludXRlU2NhbGUiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmN1cnJlbnRNaWxsaXNlY29uZCxpPXQuY3VycmVudFNlY29uZCxzPXQuY3VycmVudE1pbnV0ZSxhPXQuY3VycmVudEhvdXIsbj10LmN1cnJlbnREYXRlLHI9dC5jdXJyZW50TW9udGgsbz10LmN1cnJlbnRZZWFyLGw9dC5taW51dGVzV2lkdGhPblhBeGlzLGM9dC5zZWNvbmRzV2lkdGhPblhBeGlzLGg9dC5udW1iZXJPZk1pbnV0ZXMsZD1zKzEsdT1uLHA9cixnPW8sZj1hLG09KDYwLWktZS8xZTMpKmMsdj0wO3Y8aDt2KyspZD49NjAmJihkPTAsMjQ9PT0oZis9MSkmJihmPTApKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOm0sdmFsdWU6ZCx1bml0OiJtaW51dGUiLGhvdXI6ZixtaW51dGU6ZCxkYXk6dSx5ZWFyOnRoaXMuX2dldFllYXIoZyxwLDApLG1vbnRoOmIubW9udGhNb2QocCl9KSxtKz1sLGQrK319LHtrZXk6ImdlbmVyYXRlU2Vjb25kU2NhbGUiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmN1cnJlbnRNaWxsaXNlY29uZCxpPXQuY3VycmVudFNlY29uZCxzPXQuY3VycmVudE1pbnV0ZSxhPXQuY3VycmVudEhvdXIsbj10LmN1cnJlbnREYXRlLHI9dC5jdXJyZW50TW9udGgsbz10LmN1cnJlbnRZZWFyLGw9dC5zZWNvbmRzV2lkdGhPblhBeGlzLGM9dC5udW1iZXJPZlNlY29uZHMsaD1pKzEsZD1zLHU9bixwPXIsZz1vLGY9YSxtPSgxZTMtZSkvMWUzKmwsdj0wO3Y8Yzt2KyspaD49NjAmJihoPTAsKytkPj02MCYmKGQ9MCwyND09KytmJiYoZj0wKSkpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bSx2YWx1ZTpoLHVuaXQ6InNlY29uZCIsaG91cjpmLG1pbnV0ZTpkLHNlY29uZDpoLGRheTp1LHllYXI6dGhpcy5fZ2V0WWVhcihnLHAsMCksbW9udGg6Yi5tb250aE1vZChwKX0pLG0rPWwsaCsrfX0se2tleToiY3JlYXRlUmF3RGF0ZVN0cmluZyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10LnllYXI7cmV0dXJuIDA9PT10Lm1vbnRoJiYodC5tb250aD0xKSxpKz0iLSIrKCIwIit0Lm1vbnRoLnRvU3RyaW5nKCkpLnNsaWNlKC0yKSwiZGF5Ij09PXQudW5pdD9pKz0iZGF5Ij09PXQudW5pdD8iLSIrKCIwIitlKS5zbGljZSgtMik6Ii0wMSI6aSs9Ii0iKygiMCIrKHQuZGF5P3QuZGF5OiIxIikpLnNsaWNlKC0yKSwiaG91ciI9PT10LnVuaXQ/aSs9ImhvdXIiPT09dC51bml0PyJUIisoIjAiK2UpLnNsaWNlKC0yKToiVDAwIjppKz0iVCIrKCIwIisodC5ob3VyP3QuaG91cjoiMCIpKS5zbGljZSgtMiksIm1pbnV0ZSI9PT10LnVuaXQ/aSs9IjoiKygiMCIrZSkuc2xpY2UoLTIpOmkrPSI6IisodC5taW51dGU/KCIwIit0Lm1pbnV0ZSkuc2xpY2UoLTIpOiIwMCIpLCJzZWNvbmQiPT09dC51bml0P2krPSI6IisoIjAiK2UpLnNsaWNlKC0yKTppKz0iOjAwIix0aGlzLnV0YyYmKGkrPSIuMDAwWiIpLGl9fSx7a2V5OiJmb3JtYXREYXRlcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudztyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBzPXQudmFsdWUudG9TdHJpbmcoKSxhPW5ldyBPKGUuY3R4KSxuPWUuY3JlYXRlUmF3RGF0ZVN0cmluZyh0LHMpLHI9YS5nZXREYXRlKGEucGFyc2VEYXRlKG4pKTtpZihlLnV0Y3x8KHI9YS5nZXREYXRlKGEucGFyc2VEYXRlV2l0aFRpbWV6b25lKG4pKSksdm9pZCAwPT09aS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdCl7dmFyIG89ImRkIE1NTSIsbD1pLmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVGb3JtYXR0ZXI7InllYXIiPT09dC51bml0JiYobz1sLnllYXIpLCJtb250aCI9PT10LnVuaXQmJihvPWwubW9udGgpLCJkYXkiPT09dC51bml0JiYobz1sLmRheSksImhvdXIiPT09dC51bml0JiYobz1sLmhvdXIpLCJtaW51dGUiPT09dC51bml0JiYobz1sLm1pbnV0ZSksInNlY29uZCI9PT10LnVuaXQmJihvPWwuc2Vjb25kKSxzPWEuZm9ybWF0RGF0ZShyLG8pfWVsc2Ugcz1hLmZvcm1hdERhdGUocixpLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0KTtyZXR1cm57ZGF0ZVN0cmluZzpuLHBvc2l0aW9uOnQucG9zaXRpb24sdmFsdWU6cyx1bml0OnQudW5pdCx5ZWFyOnQueWVhcixtb250aDp0Lm1vbnRofX0pKX19LHtrZXk6InJlbW92ZU92ZXJsYXBwaW5nVFMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcyxzPW5ldyBrKHRoaXMuY3R4KSxhPSExO3QubGVuZ3RoPjAmJnRbMF0udmFsdWUmJnQuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlLmxlbmd0aD09PXRbMF0udmFsdWUubGVuZ3RofSkpJiYoYT0hMCxlPXMuZ2V0VGV4dFJlY3RzKHRbMF0udmFsdWUpLndpZHRoKTt2YXIgbj0wLHI9dC5tYXAoKGZ1bmN0aW9uKHIsbyl7aWYobz4wJiZpLncuY29uZmlnLnhheGlzLmxhYmVscy5oaWRlT3ZlcmxhcHBpbmdMYWJlbHMpe3ZhciBsPWE/ZTpzLmdldFRleHRSZWN0cyh0W25dLnZhbHVlKS53aWR0aCxjPXRbbl0ucG9zaXRpb247cmV0dXJuIHIucG9zaXRpb24+YytsKzEwPyhuPW8scik6bnVsbH1yZXR1cm4gcn0pKTtyZXR1cm4gci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dH0pKX19LHtrZXk6Il9nZXRZZWFyIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQrTWF0aC5mbG9vcihlLzEyKStpfX1dKSx0fSgpLEJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe28odGhpcyx0KSx0aGlzLmN0eD1pLHRoaXMudz1pLncsdGhpcy5lbD1lfXJldHVybiBjKHQsW3trZXk6InNldHVwRWxlbWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10aGlzLncuY29uZmlnLGk9ZS5jaGFydC50eXBlO3QuYXhpc0NoYXJ0cz1bImxpbmUiLCJhcmVhIiwiYmFyIiwicmFuZ2VCYXIiLCJyYW5nZUFyZWEiLCJjYW5kbGVzdGljayIsImJveFBsb3QiLCJzY2F0dGVyIiwiYnViYmxlIiwicmFkYXIiLCJoZWF0bWFwIiwidHJlZW1hcCJdLmluZGV4T2YoaSk+LTEsdC54eUNoYXJ0cz1bImxpbmUiLCJhcmVhIiwiYmFyIiwicmFuZ2VCYXIiLCJyYW5nZUFyZWEiLCJjYW5kbGVzdGljayIsImJveFBsb3QiLCJzY2F0dGVyIiwiYnViYmxlIl0uaW5kZXhPZihpKT4tMSx0LmlzQmFySG9yaXpvbnRhbD0oImJhciI9PT1lLmNoYXJ0LnR5cGV8fCJyYW5nZUJhciI9PT1lLmNoYXJ0LnR5cGV8fCJib3hQbG90Ij09PWUuY2hhcnQudHlwZSkmJmUucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwsdC5jaGFydENsYXNzPSIuYXBleGNoYXJ0cyIrdC5jaGFydElELHQuZG9tLmJhc2VFbD10aGlzLmVsLHQuZG9tLmVsV3JhcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxrLnNldEF0dHJzKHQuZG9tLmVsV3JhcCx7aWQ6dC5jaGFydENsYXNzLnN1YnN0cmluZygxKSxjbGFzczoiYXBleGNoYXJ0cy1jYW52YXMgIit0LmNoYXJ0Q2xhc3Muc3Vic3RyaW5nKDEpfSksdGhpcy5lbC5hcHBlbmRDaGlsZCh0LmRvbS5lbFdyYXApLHQuZG9tLlBhcGVyPW5ldyB3aW5kb3cuU1ZHLkRvYyh0LmRvbS5lbFdyYXApLHQuZG9tLlBhcGVyLmF0dHIoe2NsYXNzOiJhcGV4Y2hhcnRzLXN2ZyIsInhtbG5zOmRhdGEiOiJBcGV4Q2hhcnRzTlMiLHRyYW5zZm9ybToidHJhbnNsYXRlKCIuY29uY2F0KGUuY2hhcnQub2Zmc2V0WCwiLCAiKS5jb25jYXQoZS5jaGFydC5vZmZzZXRZLCIpIil9KSx0LmRvbS5QYXBlci5ub2RlLnN0eWxlLmJhY2tncm91bmQ9ZS5jaGFydC5iYWNrZ3JvdW5kLHRoaXMuc2V0U1ZHRGltZW5zaW9ucygpLHQuZG9tLmVsR3JhcGhpY2FsPXQuZG9tLlBhcGVyLmdyb3VwKCkuYXR0cih7Y2xhc3M6ImFwZXhjaGFydHMtaW5uZXIgYXBleGNoYXJ0cy1ncmFwaGljYWwifSksdC5kb20uZWxBbm5vdGF0aW9ucz10LmRvbS5QYXBlci5ncm91cCgpLmF0dHIoe2NsYXNzOiJhcGV4Y2hhcnRzLWFubm90YXRpb25zIn0pLHQuZG9tLmVsRGVmcz10LmRvbS5QYXBlci5kZWZzKCksdC5kb20uZWxMZWdlbmRXcmFwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQuZG9tLmVsTGVnZW5kV3JhcC5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWxlZ2VuZCIpLHQuZG9tLmVsV3JhcC5hcHBlbmRDaGlsZCh0LmRvbS5lbExlZ2VuZFdyYXApLHQuZG9tLlBhcGVyLmFkZCh0LmRvbS5lbEdyYXBoaWNhbCksdC5kb20uZWxHcmFwaGljYWwuYWRkKHQuZG9tLmVsRGVmcyl9fSx7a2V5OiJwbG90Q2hhcnRUeXBlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPWkuY29uZmlnLGE9aS5nbG9iYWxzLG49e3NlcmllczpbXSxpOltdfSxyPXtzZXJpZXM6W10saTpbXX0sbz17c2VyaWVzOltdLGk6W119LGw9e3NlcmllczpbXSxpOltdfSxjPXtzZXJpZXM6W10saTpbXX0saD17c2VyaWVzOltdLGk6W119LGQ9e3NlcmllczpbXSxpOltdfSx1PXtzZXJpZXM6W10saTpbXX0scD17c2VyaWVzOltdLHNlcmllc1JhbmdlRW5kOltdLGk6W119O2Euc2VyaWVzLm1hcCgoZnVuY3Rpb24oZSxnKXt2YXIgZj0wO3ZvaWQgMCE9PXRbZ10udHlwZT8oImNvbHVtbiI9PT10W2ddLnR5cGV8fCJiYXIiPT09dFtnXS50eXBlPyhhLnNlcmllcy5sZW5ndGg+MSYmcy5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCYmY29uc29sZS53YXJuKCJIb3Jpem9udGFsIGJhcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gYSBtaXhlZC9jb21ibyBjaGFydC4gUGxlYXNlIHR1cm4gb2ZmIGBwbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbGAiKSxjLnNlcmllcy5wdXNoKGUpLGMuaS5wdXNoKGcpLGYrKyxpLmdsb2JhbHMuY29sdW1uU2VyaWVzPWMuc2VyaWVzKToiYXJlYSI9PT10W2ddLnR5cGU/KHIuc2VyaWVzLnB1c2goZSksci5pLnB1c2goZyksZisrKToibGluZSI9PT10W2ddLnR5cGU/KG4uc2VyaWVzLnB1c2goZSksbi5pLnB1c2goZyksZisrKToic2NhdHRlciI9PT10W2ddLnR5cGU/KG8uc2VyaWVzLnB1c2goZSksby5pLnB1c2goZykpOiJidWJibGUiPT09dFtnXS50eXBlPyhsLnNlcmllcy5wdXNoKGUpLGwuaS5wdXNoKGcpLGYrKyk6ImNhbmRsZXN0aWNrIj09PXRbZ10udHlwZT8oaC5zZXJpZXMucHVzaChlKSxoLmkucHVzaChnKSxmKyspOiJib3hQbG90Ij09PXRbZ10udHlwZT8oZC5zZXJpZXMucHVzaChlKSxkLmkucHVzaChnKSxmKyspOiJyYW5nZUJhciI9PT10W2ddLnR5cGU/KHUuc2VyaWVzLnB1c2goZSksdS5pLnB1c2goZyksZisrKToicmFuZ2VBcmVhIj09PXRbZ10udHlwZT8ocC5zZXJpZXMucHVzaChhLnNlcmllc1JhbmdlU3RhcnRbZ10pLHAuc2VyaWVzUmFuZ2VFbmQucHVzaChhLnNlcmllc1JhbmdlRW5kW2ddKSxwLmkucHVzaChnKSxmKyspOmNvbnNvbGUud2FybigiWW91IGhhdmUgc3BlY2lmaWVkIGFuIHVucmVjb2duaXplZCBjaGFydCB0eXBlLiBBdmFpbGFibGUgdHlwZXMgZm9yIHRoaXMgcHJvcGVydHkgYXJlIGxpbmUvYXJlYS9jb2x1bW4vYmFyL3NjYXR0ZXIvYnViYmxlIiksZj4xJiYoYS5jb21ib0NoYXJ0cz0hMCkpOihuLnNlcmllcy5wdXNoKGUpLG4uaS5wdXNoKGcpKX0pKTt2YXIgZz1uZXcgRHQodGhpcy5jdHgsZSksZj1uZXcgQXQodGhpcy5jdHgsZSk7dGhpcy5jdHgucGllPW5ldyBQdCh0aGlzLmN0eCk7dmFyIG09bmV3IE90KHRoaXMuY3R4KTt0aGlzLmN0eC5yYW5nZUJhcj1uZXcgSXQodGhpcy5jdHgsZSk7dmFyIHY9bmV3IE10KHRoaXMuY3R4KSx4PVtdO2lmKGEuY29tYm9DaGFydHMpe2lmKHIuc2VyaWVzLmxlbmd0aD4wJiZ4LnB1c2goZy5kcmF3KHIuc2VyaWVzLCJhcmVhIixyLmkpKSxjLnNlcmllcy5sZW5ndGg+MClpZihpLmNvbmZpZy5jaGFydC5zdGFja2VkKXt2YXIgYj1uZXcgQ3QodGhpcy5jdHgsZSk7eC5wdXNoKGIuZHJhdyhjLnNlcmllcyxjLmkpKX1lbHNlIHRoaXMuY3R4LmJhcj1uZXcgU3QodGhpcy5jdHgsZSkseC5wdXNoKHRoaXMuY3R4LmJhci5kcmF3KGMuc2VyaWVzLGMuaSkpO2lmKHAuc2VyaWVzLmxlbmd0aD4wJiZ4LnB1c2goZy5kcmF3KHAuc2VyaWVzLCJyYW5nZUFyZWEiLHAuaSxwLnNlcmllc1JhbmdlRW5kKSksbi5zZXJpZXMubGVuZ3RoPjAmJngucHVzaChnLmRyYXcobi5zZXJpZXMsImxpbmUiLG4uaSkpLGguc2VyaWVzLmxlbmd0aD4wJiZ4LnB1c2goZi5kcmF3KGguc2VyaWVzLGguaSkpLGQuc2VyaWVzLmxlbmd0aD4wJiZ4LnB1c2goZi5kcmF3KGQuc2VyaWVzLGQuaSkpLHUuc2VyaWVzLmxlbmd0aD4wJiZ4LnB1c2godGhpcy5jdHgucmFuZ2VCYXIuZHJhdyh1LnNlcmllcyx1LmkpKSxvLnNlcmllcy5sZW5ndGg+MCl7dmFyIHk9bmV3IER0KHRoaXMuY3R4LGUsITApO3gucHVzaCh5LmRyYXcoby5zZXJpZXMsInNjYXR0ZXIiLG8uaSkpfWlmKGwuc2VyaWVzLmxlbmd0aD4wKXt2YXIgdz1uZXcgRHQodGhpcy5jdHgsZSwhMCk7eC5wdXNoKHcuZHJhdyhsLnNlcmllcywiYnViYmxlIixsLmkpKX19ZWxzZSBzd2l0Y2gocy5jaGFydC50eXBlKXtjYXNlImxpbmUiOng9Zy5kcmF3KGEuc2VyaWVzLCJsaW5lIik7YnJlYWs7Y2FzZSJhcmVhIjp4PWcuZHJhdyhhLnNlcmllcywiYXJlYSIpO2JyZWFrO2Nhc2UiYmFyIjpzLmNoYXJ0LnN0YWNrZWQ/eD1uZXcgQ3QodGhpcy5jdHgsZSkuZHJhdyhhLnNlcmllcyk6KHRoaXMuY3R4LmJhcj1uZXcgU3QodGhpcy5jdHgsZSkseD10aGlzLmN0eC5iYXIuZHJhdyhhLnNlcmllcykpO2JyZWFrO2Nhc2UiY2FuZGxlc3RpY2siOmNhc2UiYm94UGxvdCI6eD1uZXcgQXQodGhpcy5jdHgsZSkuZHJhdyhhLnNlcmllcyk7YnJlYWs7Y2FzZSJyYW5nZUJhciI6eD10aGlzLmN0eC5yYW5nZUJhci5kcmF3KGEuc2VyaWVzKTticmVhaztjYXNlInJhbmdlQXJlYSI6eD1nLmRyYXcoYS5zZXJpZXNSYW5nZVN0YXJ0LCJyYW5nZUFyZWEiLHZvaWQgMCxhLnNlcmllc1JhbmdlRW5kKTticmVhaztjYXNlImhlYXRtYXAiOng9bmV3IFR0KHRoaXMuY3R4LGUpLmRyYXcoYS5zZXJpZXMpO2JyZWFrO2Nhc2UidHJlZW1hcCI6eD1uZXcgUnQodGhpcy5jdHgsZSkuZHJhdyhhLnNlcmllcyk7YnJlYWs7Y2FzZSJwaWUiOmNhc2UiZG9udXQiOmNhc2UicG9sYXJBcmVhIjp4PXRoaXMuY3R4LnBpZS5kcmF3KGEuc2VyaWVzKTticmVhaztjYXNlInJhZGlhbEJhciI6eD1tLmRyYXcoYS5zZXJpZXMpO2JyZWFrO2Nhc2UicmFkYXIiOng9di5kcmF3KGEuc2VyaWVzKTticmVhaztkZWZhdWx0Ong9Zy5kcmF3KGEuc2VyaWVzKX1yZXR1cm4geH19LHtrZXk6InNldFNWR0RpbWVuc2lvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10aGlzLncuY29uZmlnO3Quc3ZnV2lkdGg9ZS5jaGFydC53aWR0aCx0LnN2Z0hlaWdodD1lLmNoYXJ0LmhlaWdodDt2YXIgaT1iLmdldERpbWVuc2lvbnModGhpcy5lbCkscz1lLmNoYXJ0LndpZHRoLnRvU3RyaW5nKCkuc3BsaXQoL1swLTldKy9nKS5wb3AoKTsiJSI9PT1zP2IuaXNOdW1iZXIoaVswXSkmJigwPT09aVswXS53aWR0aCYmKGk9Yi5nZXREaW1lbnNpb25zKHRoaXMuZWwucGFyZW50Tm9kZSkpLHQuc3ZnV2lkdGg9aVswXSpwYXJzZUludChlLmNoYXJ0LndpZHRoLDEwKS8xMDApOiJweCIhPT1zJiYiIiE9PXN8fCh0LnN2Z1dpZHRoPXBhcnNlSW50KGUuY2hhcnQud2lkdGgsMTApKTt2YXIgYT1lLmNoYXJ0LmhlaWdodC50b1N0cmluZygpLnNwbGl0KC9bMC05XSsvZykucG9wKCk7aWYoImF1dG8iIT09dC5zdmdIZWlnaHQmJiIiIT09dC5zdmdIZWlnaHQpaWYoIiUiPT09YSl7dmFyIG49Yi5nZXREaW1lbnNpb25zKHRoaXMuZWwucGFyZW50Tm9kZSk7dC5zdmdIZWlnaHQ9blsxXSpwYXJzZUludChlLmNoYXJ0LmhlaWdodCwxMCkvMTAwfWVsc2UgdC5zdmdIZWlnaHQ9cGFyc2VJbnQoZS5jaGFydC5oZWlnaHQsMTApO2Vsc2UgdC5heGlzQ2hhcnRzP3Quc3ZnSGVpZ2h0PXQuc3ZnV2lkdGgvMS42MTp0LnN2Z0hlaWdodD10LnN2Z1dpZHRoLzEuMjtpZih0LnN2Z1dpZHRoPDAmJih0LnN2Z1dpZHRoPTApLHQuc3ZnSGVpZ2h0PDAmJih0LnN2Z0hlaWdodD0wKSxrLnNldEF0dHJzKHQuZG9tLlBhcGVyLm5vZGUse3dpZHRoOnQuc3ZnV2lkdGgsaGVpZ2h0OnQuc3ZnSGVpZ2h0fSksIiUiIT09YSl7dmFyIHI9ZS5jaGFydC5zcGFya2xpbmUuZW5hYmxlZD8wOnQuYXhpc0NoYXJ0cz9lLmNoYXJ0LnBhcmVudEhlaWdodE9mZnNldDowO3QuZG9tLlBhcGVyLm5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLm1pbkhlaWdodD10LnN2Z0hlaWdodCtyKyJweCJ9dC5kb20uZWxXcmFwLnN0eWxlLndpZHRoPXQuc3ZnV2lkdGgrInB4Iix0LmRvbS5lbFdyYXAuc3R5bGUuaGVpZ2h0PXQuc3ZnSGVpZ2h0KyJweCJ9fSx7a2V5OiJzaGlmdEdyYXBoUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10LnRyYW5zbGF0ZVksaT17dHJhbnNmb3JtOiJ0cmFuc2xhdGUoIit0LnRyYW5zbGF0ZVgrIiwgIitlKyIpIn07ay5zZXRBdHRycyh0LmRvbS5lbEdyYXBoaWNhbC5ub2RlLGkpfX0se2tleToicmVzaXplTm9uQXhpc0NoYXJ0cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMsaT0wLHM9dC5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQ/MToxNTtzKz10LmNvbmZpZy5ncmlkLnBhZGRpbmcuYm90dG9tLCJ0b3AiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiYiYm90dG9tIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8IXQuY29uZmlnLmxlZ2VuZC5zaG93fHx0LmNvbmZpZy5sZWdlbmQuZmxvYXRpbmd8fChpPW5ldyBkdCh0aGlzLmN0eCkubGVnZW5kSGVscGVycy5nZXRMZWdlbmRCQm94KCkuY2x3aCsxMCk7dmFyIGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtcmFkaWFsYmFyLCAuYXBleGNoYXJ0cy1waWUiKSxuPTIuMDUqdC5nbG9iYWxzLnJhZGlhbFNpemU7aWYoYSYmIXQuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkJiYwIT09dC5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGUpe3ZhciByPWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGEpO249ci5ib3R0b207dmFyIG89ci5ib3R0b20tci50b3A7bj1NYXRoLm1heCgyLjA1KnQuZ2xvYmFscy5yYWRpYWxTaXplLG8pfXZhciBsPW4rZS50cmFuc2xhdGVZK2krcztlLmRvbS5lbExlZ2VuZEZvcmVpZ24mJmUuZG9tLmVsTGVnZW5kRm9yZWlnbi5zZXRBdHRyaWJ1dGUoImhlaWdodCIsbCksdC5jb25maWcuY2hhcnQuaGVpZ2h0JiZTdHJpbmcodC5jb25maWcuY2hhcnQuaGVpZ2h0KS5pbmRleE9mKCIlIik+MHx8KGUuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQ9bCsicHgiLGsuc2V0QXR0cnMoZS5kb20uUGFwZXIubm9kZSx7aGVpZ2h0Omx9KSxlLmRvbS5QYXBlci5ub2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5zdHlsZS5taW5IZWlnaHQ9bCsicHgiKX19LHtrZXk6ImNvcmVDYWxjdWxhdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7bmV3IFoodGhpcy5jdHgpLmluaXQoKX19LHtrZXk6InJlc2V0R2xvYmFscyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9ZnVuY3Rpb24oKXtyZXR1cm4gdC53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm5bXX0pKX0saT1uZXcgTixzPXRoaXMudy5nbG9iYWxzO2kuaW5pdEdsb2JhbFZhcnMocykscy5zZXJpZXNYdmFsdWVzPWUoKSxzLnNlcmllc1l2YWx1ZXM9ZSgpfX0se2tleToiaXNNdWx0aXBsZVkiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy53LmNvbmZpZy55YXhpcy5jb25zdHJ1Y3Rvcj09PUFycmF5JiZ0aGlzLncuY29uZmlnLnlheGlzLmxlbmd0aD4xKXJldHVybiB0aGlzLncuZ2xvYmFscy5pc011bHRpcGxlWUF4aXM9ITAsITB9fSx7a2V5OiJ4eVNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW51bGwsZT10aGlzLnc7aWYoZS5nbG9iYWxzLmF4aXNDaGFydHMpe2lmKCJiYWNrIj09PWUuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMucG9zaXRpb24mJm5ldyBldCh0aGlzLmN0eCkuZHJhd1hDcm9zc2hhaXJzKCksImJhY2siPT09ZS5jb25maWcueWF4aXNbMF0uY3Jvc3NoYWlycy5wb3NpdGlvbiYmbmV3IGV0KHRoaXMuY3R4KS5kcmF3WUNyb3NzaGFpcnMoKSwiZGF0ZXRpbWUiPT09ZS5jb25maWcueGF4aXMudHlwZSYmdm9pZCAwPT09ZS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcil7dGhpcy5jdHgudGltZVNjYWxlPW5ldyBfdCh0aGlzLmN0eCk7dmFyIGk9W107aXNGaW5pdGUoZS5nbG9iYWxzLm1pblgpJiZpc0Zpbml0ZShlLmdsb2JhbHMubWF4WCkmJiFlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2k9dGhpcy5jdHgudGltZVNjYWxlLmNhbGN1bGF0ZVRpbWVTY2FsZVRpY2tzKGUuZ2xvYmFscy5taW5YLGUuZ2xvYmFscy5tYXhYKTplLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoaT10aGlzLmN0eC50aW1lU2NhbGUuY2FsY3VsYXRlVGltZVNjYWxlVGlja3MoZS5nbG9iYWxzLm1pblksZS5nbG9iYWxzLm1heFkpKSx0aGlzLmN0eC50aW1lU2NhbGUucmVjYWxjRGltZW5zaW9uc0Jhc2VkT25Gb3JtYXQoaSl9dD1uZXcgUyh0aGlzLmN0eCkuZ2V0Q2FsY3VsYXRlZFJhdGlvcygpfXJldHVybiB0fX0se2tleToidXBkYXRlU291cmNlQ2hhcnQiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3R4LncuZ2xvYmFscy5zZWxlY3Rpb249dm9pZCAwLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMoe2NoYXJ0OntzZWxlY3Rpb246e3hheGlzOnttaW46dC53Lmdsb2JhbHMubWluWCxtYXg6dC53Lmdsb2JhbHMubWF4WH19fX0sITEsITEpfX0se2tleToic2V0dXBCcnVzaEhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudztpZihlLmNvbmZpZy5jaGFydC5icnVzaC5lbmFibGVkJiYiZnVuY3Rpb24iIT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbil7dmFyIGk9ZS5jb25maWcuY2hhcnQuYnJ1c2gudGFyZ2V0c3x8W2UuY29uZmlnLmNoYXJ0LmJydXNoLnRhcmdldF07aS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgaT1BcGV4Q2hhcnRzLmdldENoYXJ0QnlJRChlKTtpLncuZ2xvYmFscy5icnVzaFNvdXJjZT10LmN0eCwiZnVuY3Rpb24iIT10eXBlb2YgaS53LmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkJiYoaS53LmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkPWZ1bmN0aW9uKCl7dC51cGRhdGVTb3VyY2VDaGFydChpKX0pLCJmdW5jdGlvbiIhPXR5cGVvZiBpLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZCYmKGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkPWZ1bmN0aW9uKCl7dC51cGRhdGVTb3VyY2VDaGFydChpKX0pfSkpLGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb249ZnVuY3Rpb24odCxzKXtpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBpPUFwZXhDaGFydHMuZ2V0Q2hhcnRCeUlEKHQpLGE9Yi5jbG9uZShlLmNvbmZpZy55YXhpcyk7aWYoZS5jb25maWcuY2hhcnQuYnJ1c2guYXV0b1NjYWxlWWF4aXMmJjE9PT1pLncuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKXt2YXIgcj1uZXcgcShpKTthPXIuYXV0b1NjYWxlWShpLGEscyl9dmFyIG89aS53LmNvbmZpZy55YXhpcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSxzKXtyZXR1cm5bXS5jb25jYXQobSh0KSxbbihuKHt9LGkudy5jb25maWcueWF4aXNbc10pLHt9LHttaW46YVswXS5taW4sbWF4OmFbMF0ubWF4fSldKX0pLFtdKTtpLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHt4YXhpczp7bWluOnMueGF4aXMubWluLG1heDpzLnhheGlzLm1heH0seWF4aXM6b30sITEsITEsITEsITEpfSkpfX19fV0pLHR9KCksWHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe28odGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIGModCxbe2tleToiX3VwZGF0ZU9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLHM9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxhPSEoYXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10pfHxhcmd1bWVudHNbM10sbj1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSYmYXJndW1lbnRzWzRdO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obyl7dmFyIGw9W2UuY3R4XTthJiYobD1lLmN0eC5nZXRTeW5jZWRDaGFydHMoKSksZS5jdHgudy5nbG9iYWxzLmlzRXhlY0NhbGxlZCYmKGw9W2UuY3R4XSxlLmN0eC53Lmdsb2JhbHMuaXNFeGVjQ2FsbGVkPSExKSxsLmZvckVhY2goKGZ1bmN0aW9uKGEsYyl7dmFyIGg9YS53O2lmKGguZ2xvYmFscy5zaG91bGRBbmltYXRlPXMsaXx8KGguZ2xvYmFscy5yZXNpemVkPSEwLGguZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMCxzJiZhLnNlcmllcy5nZXRQcmV2aW91c1BhdGhzKCkpLHQmJiJvYmplY3QiPT09cih0KSYmKGEuY29uZmlnPW5ldyB6KHQpLHQ9Uy5leHRlbmRBcnJheVByb3BzKGEuY29uZmlnLHQsaCksYS53Lmdsb2JhbHMuY2hhcnRJRCE9PWUuY3R4LncuZ2xvYmFscy5jaGFydElEJiZkZWxldGUgdC5zZXJpZXMsaC5jb25maWc9Yi5leHRlbmQoaC5jb25maWcsdCksbiYmKGguZ2xvYmFscy5sYXN0WEF4aXM9dC54YXhpcz9iLmNsb25lKHQueGF4aXMpOltdLGguZ2xvYmFscy5sYXN0WUF4aXM9dC55YXhpcz9iLmNsb25lKHQueWF4aXMpOltdLGguZ2xvYmFscy5pbml0aWFsQ29uZmlnPWIuZXh0ZW5kKHt9LGguY29uZmlnKSxoLmdsb2JhbHMuaW5pdGlhbFNlcmllcz1iLmNsb25lKGguY29uZmlnLnNlcmllcyksdC5zZXJpZXMpKSl7Zm9yKHZhciBkPTA7ZDxoLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg7ZCsrKXt2YXIgdT1oLmNvbmZpZy5zZXJpZXNbaC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXNbZF1dO2guZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbZF0uZGF0YT1oLmdsb2JhbHMuYXhpc0NoYXJ0cz91LmRhdGEuc2xpY2UoKTp1fWZvcih2YXIgcD0wO3A8aC5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoO3ArKyl7dmFyIGc9aC5jb25maWcuc2VyaWVzW2guZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzW3BdXTtoLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzW3BdLmRhdGE9aC5nbG9iYWxzLmF4aXNDaGFydHM/Zy5kYXRhLnNsaWNlKCk6Z31hLnNlcmllcy5lbXB0eUNvbGxhcHNlZFNlcmllcyhoLmNvbmZpZy5zZXJpZXMpfXJldHVybiBhLnVwZGF0ZSh0KS50aGVuKChmdW5jdGlvbigpe2M9PT1sLmxlbmd0aC0xJiZvKGEpfSkpfSkpfSkpfX0se2tleToiX3VwZGF0ZVNlcmllcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLHM9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGEpe3ZhciBuLHI9aS53O3JldHVybiByLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZT1lLHIuZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMCxlJiZpLmN0eC5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpLHIuZ2xvYmFscy5heGlzQ2hhcnRzPygwPT09KG49dC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuX2V4dGVuZFNlcmllcyh0LGUpfSkpKS5sZW5ndGgmJihuPVt7ZGF0YTpbXX1dKSxyLmNvbmZpZy5zZXJpZXM9bik6ci5jb25maWcuc2VyaWVzPXQuc2xpY2UoKSxzJiYoci5nbG9iYWxzLmluaXRpYWxDb25maWcuc2VyaWVzPWIuY2xvbmUoci5jb25maWcuc2VyaWVzKSxyLmdsb2JhbHMuaW5pdGlhbFNlcmllcz1iLmNsb25lKHIuY29uZmlnLnNlcmllcykpLGkuY3R4LnVwZGF0ZSgpLnRoZW4oKGZ1bmN0aW9uKCl7YShpLmN0eCl9KSl9KSl9fSx7a2V5OiJfZXh0ZW5kU2VyaWVzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxzPWkuY29uZmlnLnNlcmllc1tlXTtyZXR1cm4gbihuKHt9LGkuY29uZmlnLnNlcmllc1tlXSkse30se25hbWU6dC5uYW1lP3QubmFtZTpzJiZzLm5hbWUsY29sb3I6dC5jb2xvcj90LmNvbG9yOnMmJnMuY29sb3IsdHlwZTp0LnR5cGU/dC50eXBlOnMmJnMudHlwZSxkYXRhOnQuZGF0YT90LmRhdGE6cyYmcy5kYXRhfSl9fSx7a2V5OiJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LHM9bnVsbCxhPSIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcOnJlYWxJbmRleD0nIi5jb25jYXQodCwiJ10iKTtyZXR1cm4gaS5nbG9iYWxzLmF4aXNDaGFydHM/cz1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdCgiIi5jb25jYXQoYSwiIHBhdGhbaj0nIikuY29uY2F0KGUsIiddLCAiKS5jb25jYXQoYSwiIGNpcmNsZVtqPSciKS5jb25jYXQoZSwiJ10sICIpLmNvbmNhdChhLCIgcmVjdFtqPSciKS5jb25jYXQoZSwiJ10iKSkubWVtYmVyc1swXTp2b2lkIDA9PT1lJiYocz1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdCgiIi5jb25jYXQoYSwiIHBhdGhbaj0nIikuY29uY2F0KHQsIiddIikpLm1lbWJlcnNbMF0sInBpZSIhPT1pLmNvbmZpZy5jaGFydC50eXBlJiYicG9sYXJBcmVhIiE9PWkuY29uZmlnLmNoYXJ0LnR5cGUmJiJkb251dCIhPT1pLmNvbmZpZy5jaGFydC50eXBlfHx0aGlzLmN0eC5waWUucGllQ2xpY2tlZCh0KSkscz8obmV3IGsodGhpcy5jdHgpLnBhdGhNb3VzZURvd24ocyxudWxsKSxzLm5vZGU/cy5ub2RlOm51bGwpOihjb25zb2xlLndhcm4oInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbjogRWxlbWVudCBub3QgZm91bmQiKSxudWxsKX19LHtrZXk6ImZvcmNlWEF4aXNVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZihbIm1pbiIsIm1heCJdLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZvaWQgMCE9PXQueGF4aXNbaV0mJihlLmNvbmZpZy54YXhpc1tpXT10LnhheGlzW2ldLGUuZ2xvYmFscy5sYXN0WEF4aXNbaV09dC54YXhpc1tpXSl9KSksdC54YXhpcy5jYXRlZ29yaWVzJiZ0LnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoJiYoZS5jb25maWcueGF4aXMuY2F0ZWdvcmllcz10LnhheGlzLmNhdGVnb3JpZXMpLGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyl7dmFyIGk9bmV3IEQodCk7dD1pLmNvbnZlcnRDYXRUb051bWVyaWNYYXhpcyh0LHRoaXMuY3R4KX1yZXR1cm4gdH19LHtrZXk6ImZvcmNlWUF4aXNVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNoYXJ0JiZ0LmNoYXJ0LnN0YWNrZWQmJiIxMDAlIj09PXQuY2hhcnQuc3RhY2tUeXBlJiYoQXJyYXkuaXNBcnJheSh0LnlheGlzKT90LnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dC55YXhpc1tpXS5taW49MCx0LnlheGlzW2ldLm1heD0xMDB9KSk6KHQueWF4aXMubWluPTAsdC55YXhpcy5tYXg9MTAwKSksdH19LHtrZXk6InJldmVydERlZmF1bHRBeGlzTWluTWF4Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LHM9aS5nbG9iYWxzLmxhc3RYQXhpcyxhPWkuZ2xvYmFscy5sYXN0WUF4aXM7dCYmdC54YXhpcyYmKHM9dC54YXhpcyksdCYmdC55YXhpcyYmKGE9dC55YXhpcyksaS5jb25maWcueGF4aXMubWluPXMubWluLGkuY29uZmlnLnhheGlzLm1heD1zLm1heCxpLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQscyl7aS5nbG9iYWxzLnpvb21lZHx8dm9pZCAwIT09YVtzXT9mdW5jdGlvbih0KXt2b2lkIDAhPT1hW3RdJiYoaS5jb25maWcueWF4aXNbdF0ubWluPWFbdF0ubWluLGkuY29uZmlnLnlheGlzW3RdLm1heD1hW3RdLm1heCl9KHMpOnZvaWQgMCE9PWUuY3R4Lm9wdHMueWF4aXNbc10mJih0Lm1pbj1lLmN0eC5vcHRzLnlheGlzW3NdLm1pbix0Lm1heD1lLmN0eC5vcHRzLnlheGlzW3NdLm1heCl9KSl9fV0pLHR9KCk7enQ9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCxOdD1mdW5jdGlvbih0LGUpe3ZhciBpPSh2b2lkIDAhPT10aGlzP3RoaXM6dCkuU1ZHPWZ1bmN0aW9uKHQpe2lmKGkuc3VwcG9ydGVkKXJldHVybiB0PW5ldyBpLkRvYyh0KSxpLnBhcnNlci5kcmF3fHxpLnByZXBhcmUoKSx0fTtpZihpLm5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsaS54bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLGkueGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLGkuc3ZnanM9Imh0dHA6Ly9zdmdqcy5kZXYiLGkuc3VwcG9ydGVkPSEwLCFpLnN1cHBvcnRlZClyZXR1cm4hMTtpLmRpZD0xZTMsaS5laWQ9ZnVuY3Rpb24odCl7cmV0dXJuIlN2Z2pzIitkKHQpK2kuZGlkKyt9LGkuY3JlYXRlPWZ1bmN0aW9uKHQpe3ZhciBpPWUuY3JlYXRlRWxlbWVudE5TKHRoaXMubnMsdCk7cmV0dXJuIGkuc2V0QXR0cmlidXRlKCJpZCIsdGhpcy5laWQodCkpLGl9LGkuZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIHQsZTtlPSh0PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkucG9wKCk7Zm9yKHZhciBzPXQubGVuZ3RoLTE7cz49MDtzLS0paWYodFtzXSlmb3IodmFyIGEgaW4gZSl0W3NdLnByb3RvdHlwZVthXT1lW2FdO2kuU2V0JiZpLlNldC5pbmhlcml0JiZpLlNldC5pbmhlcml0KCl9LGkuaW52ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LmNyZWF0ZT90LmNyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGkuY3JlYXRlKHQuY3JlYXRlKSl9O3JldHVybiB0LmluaGVyaXQmJihlLnByb3RvdHlwZT1uZXcgdC5pbmhlcml0KSx0LmV4dGVuZCYmaS5leHRlbmQoZSx0LmV4dGVuZCksdC5jb25zdHJ1Y3QmJmkuZXh0ZW5kKHQucGFyZW50fHxpLkNvbnRhaW5lcix0LmNvbnN0cnVjdCksZX0saS5hZG9wdD1mdW5jdGlvbihlKXtyZXR1cm4gZT9lLmluc3RhbmNlP2UuaW5zdGFuY2U6KChzPSJzdmciPT1lLm5vZGVOYW1lP2UucGFyZW50Tm9kZSBpbnN0YW5jZW9mIHQuU1ZHRWxlbWVudD9uZXcgaS5OZXN0ZWQ6bmV3IGkuRG9jOiJsaW5lYXJHcmFkaWVudCI9PWUubm9kZU5hbWU/bmV3IGkuR3JhZGllbnQoImxpbmVhciIpOiJyYWRpYWxHcmFkaWVudCI9PWUubm9kZU5hbWU/bmV3IGkuR3JhZGllbnQoInJhZGlhbCIpOmlbZChlLm5vZGVOYW1lKV0/bmV3KGlbZChlLm5vZGVOYW1lKV0pOm5ldyBpLkVsZW1lbnQoZSkpLnR5cGU9ZS5ub2RlTmFtZSxzLm5vZGU9ZSxlLmluc3RhbmNlPXMscyBpbnN0YW5jZW9mIGkuRG9jJiZzLm5hbWVzcGFjZSgpLmRlZnMoKSxzLnNldERhdGEoSlNPTi5wYXJzZShlLmdldEF0dHJpYnV0ZSgic3ZnanM6ZGF0YSIpKXx8e30pLHMpOm51bGw7dmFyIHN9LGkucHJlcGFyZT1mdW5jdGlvbigpe3ZhciB0PWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxzPSh0P25ldyBpLkRvYyh0KTppLmFkb3B0KGUuZG9jdW1lbnRFbGVtZW50KS5uZXN0ZWQoKSkuc2l6ZSgyLDApO2kucGFyc2VyPXtib2R5OnR8fGUuZG9jdW1lbnRFbGVtZW50LGRyYXc6cy5zdHlsZSgib3BhY2l0eTowO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTEwMCU7dG9wOi0xMDAlO292ZXJmbG93OmhpZGRlbiIpLm5vZGUscG9seTpzLnBvbHlsaW5lKCkubm9kZSxwYXRoOnMucGF0aCgpLm5vZGUsbmF0aXZlOmkuY3JlYXRlKCJzdmciKX19LGkucGFyc2VyPXtuYXRpdmU6aS5jcmVhdGUoInN2ZyIpfSxlLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLChmdW5jdGlvbigpe2kucGFyc2VyLmRyYXd8fGkucHJlcGFyZSgpfSksITEpLGkucmVnZXg9e251bWJlckFuZFVuaXQ6L14oWystXT8oXGQrKFwuXGQqKT98XC5cZCspKGVbKy1dP1xkKyk/KShbYS16JV0qKSQvaSxoZXg6L14jPyhbYS1mXGRdezJ9KShbYS1mXGRdezJ9KShbYS1mXGRdezJ9KSQvaSxyZ2I6L3JnYlwoKFxkKyksKFxkKyksKFxkKylcKS8scmVmZXJlbmNlOi8jKFthLXowLTlcLV9dKykvaSx0cmFuc2Zvcm1zOi9cKVxzKiw/XHMqLyx3aGl0ZXNwYWNlOi9ccy9nLGlzSGV4Oi9eI1thLWYwLTldezMsNn0kL2ksaXNSZ2I6L15yZ2JcKC8saXNDc3M6L1teOl0rOlteO10rOz8vLGlzQmxhbms6L14oXHMrKT8kLyxpc051bWJlcjovXlsrLV0/KFxkKyhcLlxkKik/fFwuXGQrKShlWystXT9cZCspPyQvaSxpc1BlcmNlbnQ6L14tP1tcZFwuXSslJC8saXNJbWFnZTovXC4oanBnfGpwZWd8cG5nfGdpZnxzdmcpKFw/W149XSsuKik/L2ksZGVsaW1pdGVyOi9bXHMsXSsvLGh5cGhlbjovKFteZV0pXC0vZ2kscGF0aExldHRlcnM6L1tNTEhWQ1NRVEFaXS9naSxpc1BhdGhMZXR0ZXI6L1tNTEhWQ1NRVEFaXS9pLG51bWJlcnNXaXRoRG90czovKChcZD9cLlxkKyg/OmVbKy1dP1xkKyk/KSgoPzpcLlxkKyg/OmVbKy1dP1xkKyk/KSspKSsvZ2ksZG90czovXC4vZ30saS51dGlscz17bWFwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXQubGVuZ3RoLHM9W10sYT0wO2E8aTthKyspcy5wdXNoKGUodFthXSkpO3JldHVybiBzfSxmaWx0ZXI6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dC5sZW5ndGgscz1bXSxhPTA7YTxpO2ErKyllKHRbYV0pJiZzLnB1c2godFthXSk7cmV0dXJuIHN9LGZpbHRlclNWR0VsZW1lbnRzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmZpbHRlcihlLChmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHQuU1ZHRWxlbWVudH0pKX19LGkuZGVmYXVsdHM9e2F0dHJzOnsiZmlsbC1vcGFjaXR5IjoxLCJzdHJva2Utb3BhY2l0eSI6MSwic3Ryb2tlLXdpZHRoIjowLCJzdHJva2UtbGluZWpvaW4iOiJtaXRlciIsInN0cm9rZS1saW5lY2FwIjoiYnV0dCIsZmlsbDoiIzAwMDAwMCIsc3Ryb2tlOiIjMDAwMDAwIixvcGFjaXR5OjEseDowLHk6MCxjeDowLGN5OjAsd2lkdGg6MCxoZWlnaHQ6MCxyOjAscng6MCxyeTowLG9mZnNldDowLCJzdG9wLW9wYWNpdHkiOjEsInN0b3AtY29sb3IiOiIjMDAwMDAwIiwiZm9udC1zaXplIjoxNiwiZm9udC1mYW1pbHkiOiJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIiwidGV4dC1hbmNob3IiOiJzdGFydCJ9fSxpLkNvbG9yPWZ1bmN0aW9uKHQpe3ZhciBlLHM7dGhpcy5yPTAsdGhpcy5nPTAsdGhpcy5iPTAsdCYmKCJzdHJpbmciPT10eXBlb2YgdD9pLnJlZ2V4LmlzUmdiLnRlc3QodCk/KGU9aS5yZWdleC5yZ2IuZXhlYyh0LnJlcGxhY2UoaS5yZWdleC53aGl0ZXNwYWNlLCIiKSksdGhpcy5yPXBhcnNlSW50KGVbMV0pLHRoaXMuZz1wYXJzZUludChlWzJdKSx0aGlzLmI9cGFyc2VJbnQoZVszXSkpOmkucmVnZXguaXNIZXgudGVzdCh0KSYmKGU9aS5yZWdleC5oZXguZXhlYyg0PT0ocz10KS5sZW5ndGg/WyIjIixzLnN1YnN0cmluZygxLDIpLHMuc3Vic3RyaW5nKDEsMikscy5zdWJzdHJpbmcoMiwzKSxzLnN1YnN0cmluZygyLDMpLHMuc3Vic3RyaW5nKDMsNCkscy5zdWJzdHJpbmcoMyw0KV0uam9pbigiIik6cyksdGhpcy5yPXBhcnNlSW50KGVbMV0sMTYpLHRoaXMuZz1wYXJzZUludChlWzJdLDE2KSx0aGlzLmI9cGFyc2VJbnQoZVszXSwxNikpOiJvYmplY3QiPT09cih0KSYmKHRoaXMucj10LnIsdGhpcy5nPXQuZyx0aGlzLmI9dC5iKSl9LGkuZXh0ZW5kKGkuQ29sb3Ise3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9IZXgoKX0sdG9IZXg6ZnVuY3Rpb24oKXtyZXR1cm4iIyIrdSh0aGlzLnIpK3UodGhpcy5nKSt1KHRoaXMuYil9LHRvUmdiOmZ1bmN0aW9uKCl7cmV0dXJuInJnYigiK1t0aGlzLnIsdGhpcy5nLHRoaXMuYl0uam9pbigpKyIpIn0sYnJpZ2h0bmVzczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnIvMjU1Ki4zK3RoaXMuZy8yNTUqLjU5K3RoaXMuYi8yNTUqLjExfSxtb3JwaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgaS5Db2xvcih0KSx0aGlzfSxhdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj8odD10PDA/MDp0PjE/MTp0LG5ldyBpLkNvbG9yKHtyOn5+KHRoaXMucisodGhpcy5kZXN0aW5hdGlvbi5yLXRoaXMucikqdCksZzp+fih0aGlzLmcrKHRoaXMuZGVzdGluYXRpb24uZy10aGlzLmcpKnQpLGI6fn4odGhpcy5iKyh0aGlzLmRlc3RpbmF0aW9uLmItdGhpcy5iKSp0KX0pKTp0aGlzfX0pLGkuQ29sb3IudGVzdD1mdW5jdGlvbih0KXtyZXR1cm4gdCs9IiIsaS5yZWdleC5pc0hleC50ZXN0KHQpfHxpLnJlZ2V4LmlzUmdiLnRlc3QodCl9LGkuQ29sb3IuaXNSZ2I9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJudW1iZXIiPT10eXBlb2YgdC5yJiYibnVtYmVyIj09dHlwZW9mIHQuZyYmIm51bWJlciI9PXR5cGVvZiB0LmJ9LGkuQ29sb3IuaXNDb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gaS5Db2xvci5pc1JnYih0KXx8aS5Db2xvci50ZXN0KHQpfSxpLkFycmF5PWZ1bmN0aW9uKHQsZSl7MD09KHQ9KHR8fFtdKS52YWx1ZU9mKCkpLmxlbmd0aCYmZSYmKHQ9ZS52YWx1ZU9mKCkpLHRoaXMudmFsdWU9dGhpcy5wYXJzZSh0KX0saS5leHRlbmQoaS5BcnJheSx7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZS5qb2luKCIgIil9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC52YWx1ZU9mKCksQXJyYXkuaXNBcnJheSh0KT90OnRoaXMuc3BsaXQodCl9fSksaS5Qb2ludEFycmF5PWZ1bmN0aW9uKHQsZSl7aS5BcnJheS5jYWxsKHRoaXMsdCxlfHxbWzAsMF1dKX0saS5Qb2ludEFycmF5LnByb3RvdHlwZT1uZXcgaS5BcnJheSxpLlBvaW50QXJyYXkucHJvdG90eXBlLmNvbnN0cnVjdG9yPWkuUG9pbnRBcnJheTtmb3IodmFyIHM9e006ZnVuY3Rpb24odCxlLGkpe3JldHVybiBlLng9aS54PXRbMF0sZS55PWkueT10WzFdLFsiTSIsZS54LGUueV19LEw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbMF0sZS55PXRbMV0sWyJMIix0WzBdLHRbMV1dfSxIOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzBdLFsiSCIsdFswXV19LFY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS55PXRbMF0sWyJWIix0WzBdXX0sQzpmdW5jdGlvbih0LGUpe3JldHVybiBlLng9dFs0XSxlLnk9dFs1XSxbIkMiLHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdXX0sUTpmdW5jdGlvbih0LGUpe3JldHVybiBlLng9dFsyXSxlLnk9dFszXSxbIlEiLHRbMF0sdFsxXSx0WzJdLHRbM11dfSxaOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZS54PWkueCxlLnk9aS55LFsiWiJdfX0sYT0ibWxodnF0Y3NheiIuc3BsaXQoIiIpLG49MCxvPWEubGVuZ3RoO248bzsrK24pc1thW25dXT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxpLGEpe2lmKCJIIj09dCllWzBdPWVbMF0raS54O2Vsc2UgaWYoIlYiPT10KWVbMF09ZVswXStpLnk7ZWxzZSBpZigiQSI9PXQpZVs1XT1lWzVdK2kueCxlWzZdPWVbNl0raS55O2Vsc2UgZm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7KytuKWVbbl09ZVtuXSsobiUyP2kueTppLngpO2lmKHMmJiJmdW5jdGlvbiI9PXR5cGVvZiBzW3RdKXJldHVybiBzW3RdKGUsaSxhKX19KGFbbl0udG9VcHBlckNhc2UoKSk7aS5QYXRoQXJyYXk9ZnVuY3Rpb24odCxlKXtpLkFycmF5LmNhbGwodGhpcyx0LGV8fFtbIk0iLDAsMF1dKX0saS5QYXRoQXJyYXkucHJvdG90eXBlPW5ldyBpLkFycmF5LGkuUGF0aEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1pLlBhdGhBcnJheSxpLmV4dGVuZChpLlBhdGhBcnJheSx7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsaT10Lmxlbmd0aCxzPSIiO2U8aTtlKyspcys9dFtlXVswXSxudWxsIT10W2VdWzFdJiYocys9dFtlXVsxXSxudWxsIT10W2VdWzJdJiYocys9IiAiLHMrPXRbZV1bMl0sbnVsbCE9dFtlXVszXSYmKHMrPSIgIixzKz10W2VdWzNdLHMrPSIgIixzKz10W2VdWzRdLG51bGwhPXRbZV1bNV0mJihzKz0iICIscys9dFtlXVs1XSxzKz0iICIscys9dFtlXVs2XSxudWxsIT10W2VdWzddJiYocys9IiAiLHMrPXRbZV1bN10pKSkpKTtyZXR1cm4gcysiICJ9KHRoaXMudmFsdWUpfSxtb3ZlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5iYm94KCk7cmV0dXJuIGkueCxpLnksdGhpc30sYXQ6ZnVuY3Rpb24odCl7aWYoIXRoaXMuZGVzdGluYXRpb24pcmV0dXJuIHRoaXM7Zm9yKHZhciBlPXRoaXMudmFsdWUscz10aGlzLmRlc3RpbmF0aW9uLnZhbHVlLGE9W10sbj1uZXcgaS5QYXRoQXJyYXkscj0wLG89ZS5sZW5ndGg7cjxvO3IrKyl7YVtyXT1bZVtyXVswXV07Zm9yKHZhciBsPTEsYz1lW3JdLmxlbmd0aDtsPGM7bCsrKWFbcl1bbF09ZVtyXVtsXSsoc1tyXVtsXS1lW3JdW2xdKSp0OyJBIj09PWFbcl1bMF0mJihhW3JdWzRdPSsoMCE9YVtyXVs0XSksYVtyXVs1XT0rKDAhPWFbcl1bNV0pKX1yZXR1cm4gbi52YWx1ZT1hLG59LHBhcnNlOmZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBpLlBhdGhBcnJheSlyZXR1cm4gdC52YWx1ZU9mKCk7dmFyIGUsYT17TToyLEw6MixIOjEsVjoxLEM6NixTOjQsUTo0LFQ6MixBOjcsWjowfTt0PSJzdHJpbmciPT10eXBlb2YgdD90LnJlcGxhY2UoaS5yZWdleC5udW1iZXJzV2l0aERvdHMsYykucmVwbGFjZShpLnJlZ2V4LnBhdGhMZXR0ZXJzLCIgJCYgIikucmVwbGFjZShpLnJlZ2V4Lmh5cGhlbiwiJDEgLSIpLnRyaW0oKS5zcGxpdChpLnJlZ2V4LmRlbGltaXRlcik6dC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuW10uY29uY2F0LmNhbGwodCxlKX0pLFtdKTt2YXIgbj1bXSxyPW5ldyBpLlBvaW50LG89bmV3IGkuUG9pbnQsbD0wLGg9dC5sZW5ndGg7ZG97aS5yZWdleC5pc1BhdGhMZXR0ZXIudGVzdCh0W2xdKT8oZT10W2xdLCsrbCk6Ik0iPT1lP2U9IkwiOiJtIj09ZSYmKGU9ImwiKSxuLnB1c2goc1tlXS5jYWxsKG51bGwsdC5zbGljZShsLGwrPWFbZS50b1VwcGVyQ2FzZSgpXSkubWFwKHBhcnNlRmxvYXQpLHIsbykpfXdoaWxlKGg+bCk7cmV0dXJuIG59LGJib3g6ZnVuY3Rpb24oKXtyZXR1cm4gaS5wYXJzZXIuZHJhd3x8aS5wcmVwYXJlKCksaS5wYXJzZXIucGF0aC5zZXRBdHRyaWJ1dGUoImQiLHRoaXMudG9TdHJpbmcoKSksaS5wYXJzZXIucGF0aC5nZXRCQm94KCl9fSksaS5OdW1iZXI9aS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUpe3RoaXMudmFsdWU9MCx0aGlzLnVuaXQ9ZXx8IiIsIm51bWJlciI9PXR5cGVvZiB0P3RoaXMudmFsdWU9aXNOYU4odCk/MDppc0Zpbml0ZSh0KT90OnQ8MD8tMzRlMzc6MzRlMzc6InN0cmluZyI9PXR5cGVvZiB0PyhlPXQubWF0Y2goaS5yZWdleC5udW1iZXJBbmRVbml0KSkmJih0aGlzLnZhbHVlPXBhcnNlRmxvYXQoZVsxXSksIiUiPT1lWzVdP3RoaXMudmFsdWUvPTEwMDoicyI9PWVbNV0mJih0aGlzLnZhbHVlKj0xZTMpLHRoaXMudW5pdD1lWzVdKTp0IGluc3RhbmNlb2YgaS5OdW1iZXImJih0aGlzLnZhbHVlPXQudmFsdWVPZigpLHRoaXMudW5pdD10LnVuaXQpfSxleHRlbmQ6e3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuKCIlIj09dGhpcy51bml0P35+KDFlOCp0aGlzLnZhbHVlKS8xZTY6InMiPT10aGlzLnVuaXQ/dGhpcy52YWx1ZS8xZTM6dGhpcy52YWx1ZSkrdGhpcy51bml0fSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHBsdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bmV3IGkuTnVtYmVyKHQpLG5ldyBpLk51bWJlcih0aGlzK3QsdGhpcy51bml0fHx0LnVuaXQpfSxtaW51czpmdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgaS5OdW1iZXIodCksbmV3IGkuTnVtYmVyKHRoaXMtdCx0aGlzLnVuaXR8fHQudW5pdCl9LHRpbWVzOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBpLk51bWJlcih0KSxuZXcgaS5OdW1iZXIodGhpcyp0LHRoaXMudW5pdHx8dC51bml0KX0sZGl2aWRlOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBpLk51bWJlcih0KSxuZXcgaS5OdW1iZXIodGhpcy90LHRoaXMudW5pdHx8dC51bml0KX0sdG86ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGkuTnVtYmVyKHRoaXMpO3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmKGUudW5pdD10KSxlfSxtb3JwaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgaS5OdW1iZXIodCksdC5yZWxhdGl2ZSYmKHRoaXMuZGVzdGluYXRpb24udmFsdWUrPXRoaXMudmFsdWUpLHRoaXN9LGF0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uP25ldyBpLk51bWJlcih0aGlzLmRlc3RpbmF0aW9uKS5taW51cyh0aGlzKS50aW1lcyh0KS5wbHVzKHRoaXMpOnRoaXN9fX0pLGkuRWxlbWVudD1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuX3N0cm9rZT1pLmRlZmF1bHRzLmF0dHJzLnN0cm9rZSx0aGlzLl9ldmVudD1udWxsLHRoaXMuZG9tPXt9LCh0aGlzLm5vZGU9dCkmJih0aGlzLnR5cGU9dC5ub2RlTmFtZSx0aGlzLm5vZGUuaW5zdGFuY2U9dGhpcyx0aGlzLl9zdHJva2U9dC5nZXRBdHRyaWJ1dGUoInN0cm9rZSIpfHx0aGlzLl9zdHJva2UpfSxleHRlbmQ6e3g6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cigieCIsdCl9LHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cigieSIsdCl9LGN4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMueCgpK3RoaXMud2lkdGgoKS8yOnRoaXMueCh0LXRoaXMud2lkdGgoKS8yKX0sY3k6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy55KCkrdGhpcy5oZWlnaHQoKS8yOnRoaXMueSh0LXRoaXMuaGVpZ2h0KCkvMil9LG1vdmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy54KHQpLnkoZSl9LGNlbnRlcjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmN4KHQpLmN5KGUpfSx3aWR0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKCJ3aWR0aCIsdCl9LGhlaWdodDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKCJoZWlnaHQiLHQpfSxzaXplOmZ1bmN0aW9uKHQsZSl7dmFyIHM9cCh0aGlzLHQsZSk7cmV0dXJuIHRoaXMud2lkdGgobmV3IGkuTnVtYmVyKHMud2lkdGgpKS5oZWlnaHQobmV3IGkuTnVtYmVyKHMuaGVpZ2h0KSl9LGNsb25lOmZ1bmN0aW9uKHQpe3RoaXMud3JpdGVEYXRhVG9Eb20oKTt2YXIgZT1tKHRoaXMubm9kZS5jbG9uZU5vZGUoITApKTtyZXR1cm4gdD90LmFkZChlKTp0aGlzLmFmdGVyKGUpLGV9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnJlbW92ZUVsZW1lbnQodGhpcyksdGhpc30scmVwbGFjZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hZnRlcih0KS5yZW1vdmUoKSx0fSxhZGRUbzpmdW5jdGlvbih0KXtyZXR1cm4gdC5wdXQodGhpcyl9LHB1dEluOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZCh0aGlzKX0saWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cigiaWQiLHQpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3R5bGUoImRpc3BsYXkiLCIiKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpfSx2aXNpYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIm5vbmUiIT10aGlzLnN0eWxlKCJkaXNwbGF5Iil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cigiaWQiKX0sY2xhc3NlczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuYXR0cigiY2xhc3MiKTtyZXR1cm4gbnVsbD09dD9bXTp0LnRyaW0oKS5zcGxpdChpLnJlZ2V4LmRlbGltaXRlcil9LGhhc0NsYXNzOmZ1bmN0aW9uKHQpe3JldHVybi0xIT10aGlzLmNsYXNzZXMoKS5pbmRleE9mKHQpfSxhZGRDbGFzczpmdW5jdGlvbih0KXtpZighdGhpcy5oYXNDbGFzcyh0KSl7dmFyIGU9dGhpcy5jbGFzc2VzKCk7ZS5wdXNoKHQpLHRoaXMuYXR0cigiY2xhc3MiLGUuam9pbigiICIpKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzQ2xhc3ModCkmJnRoaXMuYXR0cigiY2xhc3MiLHRoaXMuY2xhc3NlcygpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPXR9KSkuam9pbigiICIpKSx0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXNDbGFzcyh0KT90aGlzLnJlbW92ZUNsYXNzKHQpOnRoaXMuYWRkQ2xhc3ModCl9LHJlZmVyZW5jZTpmdW5jdGlvbih0KXtyZXR1cm4gaS5nZXQodGhpcy5hdHRyKHQpKX0scGFyZW50OmZ1bmN0aW9uKGUpe3ZhciBzPXRoaXM7aWYoIXMubm9kZS5wYXJlbnROb2RlKXJldHVybiBudWxsO2lmKHM9aS5hZG9wdChzLm5vZGUucGFyZW50Tm9kZSksIWUpcmV0dXJuIHM7Zm9yKDtzJiZzLm5vZGUgaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnQ7KXtpZigic3RyaW5nIj09dHlwZW9mIGU/cy5tYXRjaGVzKGUpOnMgaW5zdGFuY2VvZiBlKXJldHVybiBzO2lmKCFzLm5vZGUucGFyZW50Tm9kZXx8IiNkb2N1bWVudCI9PXMubm9kZS5wYXJlbnROb2RlLm5vZGVOYW1lKXJldHVybiBudWxsO3M9aS5hZG9wdChzLm5vZGUucGFyZW50Tm9kZSl9fSxkb2M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGkuRG9jP3RoaXM6dGhpcy5wYXJlbnQoaS5Eb2MpfSxwYXJlbnRzOmZ1bmN0aW9uKHQpe3ZhciBlPVtdLGk9dGhpcztkb3tpZighKGk9aS5wYXJlbnQodCkpfHwhaS5ub2RlKWJyZWFrO2UucHVzaChpKX13aGlsZShpLnBhcmVudCk7cmV0dXJuIGV9LG1hdGNoZXM6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQubWF0Y2hlc3x8dC5tYXRjaGVzU2VsZWN0b3J8fHQubXNNYXRjaGVzU2VsZWN0b3J8fHQubW96TWF0Y2hlc1NlbGVjdG9yfHx0LndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8dC5vTWF0Y2hlc1NlbGVjdG9yKS5jYWxsKHQsZSl9KHRoaXMubm9kZSx0KX0sbmF0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZX0sc3ZnOmZ1bmN0aW9uKHQpe3ZhciBzPWUuY3JlYXRlRWxlbWVudCgic3ZnIik7aWYoISh0JiZ0aGlzIGluc3RhbmNlb2YgaS5QYXJlbnQpKXJldHVybiBzLmFwcGVuZENoaWxkKHQ9ZS5jcmVhdGVFbGVtZW50KCJzdmciKSksdGhpcy53cml0ZURhdGFUb0RvbSgpLHQuYXBwZW5kQ2hpbGQodGhpcy5ub2RlLmNsb25lTm9kZSghMCkpLHMuaW5uZXJIVE1MLnJlcGxhY2UoL148c3ZnPi8sIiIpLnJlcGxhY2UoLzxcL3N2Zz4kLywiIik7cy5pbm5lckhUTUw9Ijxzdmc+Iit0LnJlcGxhY2UoL1xuLywiIikucmVwbGFjZSgvPChbXHc6LV0rKShbXjxdKz8pXC8+L2csIjwkMSQyPjwvJDE+IikrIjwvc3ZnPiI7Zm9yKHZhciBhPTAsbj1zLmZpcnN0Q2hpbGQuY2hpbGROb2Rlcy5sZW5ndGg7YTxuO2ErKyl0aGlzLm5vZGUuYXBwZW5kQ2hpbGQocy5maXJzdENoaWxkLmZpcnN0Q2hpbGQpO3JldHVybiB0aGlzfSx3cml0ZURhdGFUb0RvbTpmdW5jdGlvbigpe3JldHVybih0aGlzLmVhY2h8fHRoaXMubGluZXMpJiYodGhpcy5lYWNoP3RoaXM6dGhpcy5saW5lcygpKS5lYWNoKChmdW5jdGlvbigpe3RoaXMud3JpdGVEYXRhVG9Eb20oKX0pKSx0aGlzLm5vZGUucmVtb3ZlQXR0cmlidXRlKCJzdmdqczpkYXRhIiksT2JqZWN0LmtleXModGhpcy5kb20pLmxlbmd0aCYmdGhpcy5ub2RlLnNldEF0dHJpYnV0ZSgic3ZnanM6ZGF0YSIsSlNPTi5zdHJpbmdpZnkodGhpcy5kb20pKSx0aGlzfSxzZXREYXRhOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRvbT10LHRoaXN9LGlzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2YgZX0odGhpcyx0KX19fSksaS5lYXNpbmc9eyItIjpmdW5jdGlvbih0KXtyZXR1cm4gdH0sIjw+IjpmdW5jdGlvbih0KXtyZXR1cm4tTWF0aC5jb3ModCpNYXRoLlBJKS8yKy41fSwiPiI6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc2luKHQqTWF0aC5QSS8yKX0sIjwiOmZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGguY29zKHQqTWF0aC5QSS8yKX19LGkubW9ycGg9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUscyl7cmV0dXJuIG5ldyBpLk1vcnBoT2JqKGUscykuYXQodCl9fSxpLlNpdHVhdGlvbj1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuaW5pdD0hMSx0aGlzLnJldmVyc2VkPSExLHRoaXMucmV2ZXJzaW5nPSExLHRoaXMuZHVyYXRpb249bmV3IGkuTnVtYmVyKHQuZHVyYXRpb24pLnZhbHVlT2YoKSx0aGlzLmRlbGF5PW5ldyBpLk51bWJlcih0LmRlbGF5KS52YWx1ZU9mKCksdGhpcy5zdGFydD0rbmV3IERhdGUrdGhpcy5kZWxheSx0aGlzLmZpbmlzaD10aGlzLnN0YXJ0K3RoaXMuZHVyYXRpb24sdGhpcy5lYXNlPXQuZWFzZSx0aGlzLmxvb3A9MCx0aGlzLmxvb3BzPSExLHRoaXMuYW5pbWF0aW9ucz17fSx0aGlzLmF0dHJzPXt9LHRoaXMuc3R5bGVzPXt9LHRoaXMudHJhbnNmb3Jtcz1bXSx0aGlzLm9uY2U9e319fSksaS5GWD1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuX3RhcmdldD10LHRoaXMuc2l0dWF0aW9ucz1bXSx0aGlzLmFjdGl2ZT0hMSx0aGlzLnNpdHVhdGlvbj1udWxsLHRoaXMucGF1c2VkPSExLHRoaXMubGFzdFBvcz0wLHRoaXMucG9zPTAsdGhpcy5hYnNQb3M9MCx0aGlzLl9zcGVlZD0xfSxleHRlbmQ6e2FuaW1hdGU6ZnVuY3Rpb24odCxlLHMpeyJvYmplY3QiPT09cih0KSYmKGU9dC5lYXNlLHM9dC5kZWxheSx0PXQuZHVyYXRpb24pO3ZhciBhPW5ldyBpLlNpdHVhdGlvbih7ZHVyYXRpb246dHx8MWUzLGRlbGF5OnN8fDAsZWFzZTppLmVhc2luZ1tlfHwiLSJdfHxlfSk7cmV0dXJuIHRoaXMucXVldWUoYSksdGhpc30sdGFyZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0IGluc3RhbmNlb2YgaS5FbGVtZW50Pyh0aGlzLl90YXJnZXQ9dCx0aGlzKTp0aGlzLl90YXJnZXR9LHRpbWVUb0Fic1BvczpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLnNpdHVhdGlvbi5zdGFydCkvKHRoaXMuc2l0dWF0aW9uLmR1cmF0aW9uL3RoaXMuX3NwZWVkKX0sYWJzUG9zVG9UaW1lOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCp0K3RoaXMuc2l0dWF0aW9uLnN0YXJ0fSxzdGFydEFuaW1GcmFtZTpmdW5jdGlvbigpe3RoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMuYW5pbWF0aW9uRnJhbWU9dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt0aGlzLnN0ZXAoKX0uYmluZCh0aGlzKSl9LHN0b3BBbmltRnJhbWU6ZnVuY3Rpb24oKXt0LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0aW9uRnJhbWUpfSxzdGFydDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmFjdGl2ZSYmdGhpcy5zaXR1YXRpb24mJih0aGlzLmFjdGl2ZT0hMCx0aGlzLnN0YXJ0Q3VycmVudCgpKSx0aGlzfSxzdGFydEN1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb24uc3RhcnQ9K25ldyBEYXRlK3RoaXMuc2l0dWF0aW9uLmRlbGF5L3RoaXMuX3NwZWVkLHRoaXMuc2l0dWF0aW9uLmZpbmlzaD10aGlzLnNpdHVhdGlvbi5zdGFydCt0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCx0aGlzLmluaXRBbmltYXRpb25zKCkuc3RlcCgpfSxxdWV1ZTpmdW5jdGlvbih0KXtyZXR1cm4oImZ1bmN0aW9uIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlNpdHVhdGlvbikmJnRoaXMuc2l0dWF0aW9ucy5wdXNoKHQpLHRoaXMuc2l0dWF0aW9ufHwodGhpcy5zaXR1YXRpb249dGhpcy5zaXR1YXRpb25zLnNoaWZ0KCkpLHRoaXN9LGRlcXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9wKCksdGhpcy5zaXR1YXRpb249dGhpcy5zaXR1YXRpb25zLnNoaWZ0KCksdGhpcy5zaXR1YXRpb24mJih0aGlzLnNpdHVhdGlvbiBpbnN0YW5jZW9mIGkuU2l0dWF0aW9uP3RoaXMuc3RhcnQoKTp0aGlzLnNpdHVhdGlvbi5jYWxsKHRoaXMpKSx0aGlzfSxpbml0QW5pbWF0aW9uczpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5zaXR1YXRpb247aWYoZS5pbml0KXJldHVybiB0aGlzO2Zvcih2YXIgcyBpbiBlLmFuaW1hdGlvbnMpe3Q9dGhpcy50YXJnZXQoKVtzXSgpLEFycmF5LmlzQXJyYXkodCl8fCh0PVt0XSksQXJyYXkuaXNBcnJheShlLmFuaW1hdGlvbnNbc10pfHwoZS5hbmltYXRpb25zW3NdPVtlLmFuaW1hdGlvbnNbc11dKTtmb3IodmFyIGE9dC5sZW5ndGg7YS0tOyllLmFuaW1hdGlvbnNbc11bYV1pbnN0YW5jZW9mIGkuTnVtYmVyJiYodFthXT1uZXcgaS5OdW1iZXIodFthXSkpLGUuYW5pbWF0aW9uc1tzXVthXT10W2FdLm1vcnBoKGUuYW5pbWF0aW9uc1tzXVthXSl9Zm9yKHZhciBzIGluIGUuYXR0cnMpZS5hdHRyc1tzXT1uZXcgaS5Nb3JwaE9iaih0aGlzLnRhcmdldCgpLmF0dHIocyksZS5hdHRyc1tzXSk7Zm9yKHZhciBzIGluIGUuc3R5bGVzKWUuc3R5bGVzW3NdPW5ldyBpLk1vcnBoT2JqKHRoaXMudGFyZ2V0KCkuc3R5bGUocyksZS5zdHlsZXNbc10pO3JldHVybiBlLmluaXRpYWxUcmFuc2Zvcm1hdGlvbj10aGlzLnRhcmdldCgpLm1hdHJpeGlmeSgpLGUuaW5pdD0hMCx0aGlzfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9ucz1bXSx0aGlzfSxjbGVhckN1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb249bnVsbCx0aGlzfSxzdG9wOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5hY3RpdmU7cmV0dXJuIHRoaXMuYWN0aXZlPSExLGUmJnRoaXMuY2xlYXJRdWV1ZSgpLHQmJnRoaXMuc2l0dWF0aW9uJiYoIWkmJnRoaXMuc3RhcnRDdXJyZW50KCksdGhpcy5hdEVuZCgpKSx0aGlzLnN0b3BBbmltRnJhbWUoKSx0aGlzLmNsZWFyQ3VycmVudCgpfSxhZnRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3QoKTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vbigiZmluaXNoZWQuZngiLChmdW5jdGlvbiBpKHMpe3MuZGV0YWlsLnNpdHVhdGlvbj09ZSYmKHQuY2FsbCh0aGlzLGUpLHRoaXMub2ZmKCJmaW5pc2hlZC5meCIsaSkpfSkpLHRoaXMuX2NhbGxTdGFydCgpfSxkdXJpbmc6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYXN0KCkscz1mdW5jdGlvbihzKXtzLmRldGFpbC5zaXR1YXRpb249PWUmJnQuY2FsbCh0aGlzLHMuZGV0YWlsLnBvcyxpLm1vcnBoKHMuZGV0YWlsLnBvcykscy5kZXRhaWwuZWFzZWQsZSl9O3JldHVybiB0aGlzLnRhcmdldCgpLm9mZigiZHVyaW5nLmZ4IixzKS5vbigiZHVyaW5nLmZ4IixzKSx0aGlzLmFmdGVyKChmdW5jdGlvbigpe3RoaXMub2ZmKCJkdXJpbmcuZngiLHMpfSkpLHRoaXMuX2NhbGxTdGFydCgpfSxhZnRlckFsbDpmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbiBlKGkpe3QuY2FsbCh0aGlzKSx0aGlzLm9mZigiYWxsZmluaXNoZWQuZngiLGUpfTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vZmYoImFsbGZpbmlzaGVkLmZ4IixlKS5vbigiYWxsZmluaXNoZWQuZngiLGUpLHRoaXMuX2NhbGxTdGFydCgpfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9ucy5sZW5ndGg/dGhpcy5zaXR1YXRpb25zW3RoaXMuc2l0dWF0aW9ucy5sZW5ndGgtMV06dGhpcy5zaXR1YXRpb259LGFkZDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMubGFzdCgpW2l8fCJhbmltYXRpb25zIl1bdF09ZSx0aGlzLl9jYWxsU3RhcnQoKX0sc3RlcDpmdW5jdGlvbih0KXt2YXIgZSxpLHM7dHx8KHRoaXMuYWJzUG9zPXRoaXMudGltZVRvQWJzUG9zKCtuZXcgRGF0ZSkpLCExIT09dGhpcy5zaXR1YXRpb24ubG9vcHM/KGU9TWF0aC5tYXgodGhpcy5hYnNQb3MsMCksaT1NYXRoLmZsb29yKGUpLCEwPT09dGhpcy5zaXR1YXRpb24ubG9vcHN8fGk8dGhpcy5zaXR1YXRpb24ubG9vcHM/KHRoaXMucG9zPWUtaSxzPXRoaXMuc2l0dWF0aW9uLmxvb3AsdGhpcy5zaXR1YXRpb24ubG9vcD1pKToodGhpcy5hYnNQb3M9dGhpcy5zaXR1YXRpb24ubG9vcHMsdGhpcy5wb3M9MSxzPXRoaXMuc2l0dWF0aW9uLmxvb3AtMSx0aGlzLnNpdHVhdGlvbi5sb29wPXRoaXMuc2l0dWF0aW9uLmxvb3BzKSx0aGlzLnNpdHVhdGlvbi5yZXZlcnNpbmcmJih0aGlzLnNpdHVhdGlvbi5yZXZlcnNlZD10aGlzLnNpdHVhdGlvbi5yZXZlcnNlZCE9Qm9vbGVhbigodGhpcy5zaXR1YXRpb24ubG9vcC1zKSUyKSkpOih0aGlzLmFic1Bvcz1NYXRoLm1pbih0aGlzLmFic1BvcywxKSx0aGlzLnBvcz10aGlzLmFic1BvcyksdGhpcy5wb3M8MCYmKHRoaXMucG9zPTApLHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkJiYodGhpcy5wb3M9MS10aGlzLnBvcyk7dmFyIGE9dGhpcy5zaXR1YXRpb24uZWFzZSh0aGlzLnBvcyk7Zm9yKHZhciBuIGluIHRoaXMuc2l0dWF0aW9uLm9uY2Upbj50aGlzLmxhc3RQb3MmJm48PWEmJih0aGlzLnNpdHVhdGlvbi5vbmNlW25dLmNhbGwodGhpcy50YXJnZXQoKSx0aGlzLnBvcyxhKSxkZWxldGUgdGhpcy5zaXR1YXRpb24ub25jZVtuXSk7cmV0dXJuIHRoaXMuYWN0aXZlJiZ0aGlzLnRhcmdldCgpLmZpcmUoImR1cmluZyIse3Bvczp0aGlzLnBvcyxlYXNlZDphLGZ4OnRoaXMsc2l0dWF0aW9uOnRoaXMuc2l0dWF0aW9ufSksdGhpcy5zaXR1YXRpb24/KHRoaXMuZWFjaEF0KCksMT09dGhpcy5wb3MmJiF0aGlzLnNpdHVhdGlvbi5yZXZlcnNlZHx8dGhpcy5zaXR1YXRpb24ucmV2ZXJzZWQmJjA9PXRoaXMucG9zPyh0aGlzLnN0b3BBbmltRnJhbWUoKSx0aGlzLnRhcmdldCgpLmZpcmUoImZpbmlzaGVkIix7Zng6dGhpcyxzaXR1YXRpb246dGhpcy5zaXR1YXRpb259KSx0aGlzLnNpdHVhdGlvbnMubGVuZ3RofHwodGhpcy50YXJnZXQoKS5maXJlKCJhbGxmaW5pc2hlZCIpLHRoaXMuc2l0dWF0aW9ucy5sZW5ndGh8fCh0aGlzLnRhcmdldCgpLm9mZigiLmZ4IiksdGhpcy5hY3RpdmU9ITEpKSx0aGlzLmFjdGl2ZT90aGlzLmRlcXVldWUoKTp0aGlzLmNsZWFyQ3VycmVudCgpKTohdGhpcy5wYXVzZWQmJnRoaXMuYWN0aXZlJiZ0aGlzLnN0YXJ0QW5pbUZyYW1lKCksdGhpcy5sYXN0UG9zPWEsdGhpcyk6dGhpc30sZWFjaEF0OmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLHM9dGhpcy50YXJnZXQoKSxhPXRoaXMuc2l0dWF0aW9uO2Zvcih2YXIgbiBpbiBhLmFuaW1hdGlvbnMpdD1bXS5jb25jYXQoYS5hbmltYXRpb25zW25dKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciIT10eXBlb2YgdCYmdC5hdD90LmF0KGEuZWFzZShlLnBvcyksZS5wb3MpOnR9KSksc1tuXS5hcHBseShzLHQpO2Zvcih2YXIgbiBpbiBhLmF0dHJzKXQ9W25dLmNvbmNhdChhLmF0dHJzW25dKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciIT10eXBlb2YgdCYmdC5hdD90LmF0KGEuZWFzZShlLnBvcyksZS5wb3MpOnR9KSkscy5hdHRyLmFwcGx5KHMsdCk7Zm9yKHZhciBuIGluIGEuc3R5bGVzKXQ9W25dLmNvbmNhdChhLnN0eWxlc1tuXSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHQmJnQuYXQ/dC5hdChhLmVhc2UoZS5wb3MpLGUucG9zKTp0fSkpLHMuc3R5bGUuYXBwbHkocyx0KTtpZihhLnRyYW5zZm9ybXMubGVuZ3RoKXt0PWEuaW5pdGlhbFRyYW5zZm9ybWF0aW9uLG49MDtmb3IodmFyIHI9YS50cmFuc2Zvcm1zLmxlbmd0aDtuPHI7bisrKXt2YXIgbz1hLnRyYW5zZm9ybXNbbl07byBpbnN0YW5jZW9mIGkuTWF0cml4P3Q9by5yZWxhdGl2ZT90Lm11bHRpcGx5KChuZXcgaS5NYXRyaXgpLm1vcnBoKG8pLmF0KGEuZWFzZSh0aGlzLnBvcykpKTp0Lm1vcnBoKG8pLmF0KGEuZWFzZSh0aGlzLnBvcykpOihvLnJlbGF0aXZlfHxvLnVuZG8odC5leHRyYWN0KCkpLHQ9dC5tdWx0aXBseShvLmF0KGEuZWFzZSh0aGlzLnBvcykpKSl9cy5tYXRyaXgodCl9cmV0dXJuIHRoaXN9LG9uY2U6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXMubGFzdCgpO3JldHVybiBpfHwodD1zLmVhc2UodCkpLHMub25jZVt0XT1lLHRoaXN9LF9jYWxsU3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuc3RhcnQoKX0uYmluZCh0aGlzKSwwKSx0aGlzfX0scGFyZW50OmkuRWxlbWVudCxjb25zdHJ1Y3Q6e2FuaW1hdGU6ZnVuY3Rpb24odCxlLHMpe3JldHVybih0aGlzLmZ4fHwodGhpcy5meD1uZXcgaS5GWCh0aGlzKSkpLmFuaW1hdGUodCxlLHMpfSxkZWxheTpmdW5jdGlvbih0KXtyZXR1cm4odGhpcy5meHx8KHRoaXMuZng9bmV3IGkuRlgodGhpcykpKS5kZWxheSh0KX0sc3RvcDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmZ4JiZ0aGlzLmZ4LnN0b3AodCxlKSx0aGlzfSxmaW5pc2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5meCYmdGhpcy5meC5maW5pc2goKSx0aGlzfX19KSxpLk1vcnBoT2JqPWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5Db2xvci5pc0NvbG9yKGUpP25ldyBpLkNvbG9yKHQpLm1vcnBoKGUpOmkucmVnZXguZGVsaW1pdGVyLnRlc3QodCk/aS5yZWdleC5wYXRoTGV0dGVycy50ZXN0KHQpP25ldyBpLlBhdGhBcnJheSh0KS5tb3JwaChlKTpuZXcgaS5BcnJheSh0KS5tb3JwaChlKTppLnJlZ2V4Lm51bWJlckFuZFVuaXQudGVzdChlKT9uZXcgaS5OdW1iZXIodCkubW9ycGgoZSk6KHRoaXMudmFsdWU9dCx2b2lkKHRoaXMuZGVzdGluYXRpb249ZSkpfSxleHRlbmQ6e2F0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU8MT90aGlzLnZhbHVlOnRoaXMuZGVzdGluYXRpb259LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX19fSksaS5leHRlbmQoaS5GWCx7YXR0cjpmdW5jdGlvbih0LGUsaSl7aWYoIm9iamVjdCI9PT1yKHQpKWZvcih2YXIgcyBpbiB0KXRoaXMuYXR0cihzLHRbc10pO2Vsc2UgdGhpcy5hZGQodCxlLCJhdHRycyIpO3JldHVybiB0aGlzfSxwbG90OmZ1bmN0aW9uKHQsZSxpLHMpe3JldHVybiA0PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMucGxvdChbdCxlLGksc10pOnRoaXMuYWRkKCJwbG90IixuZXcodGhpcy50YXJnZXQoKS5tb3JwaEFycmF5KSh0KSl9fSksaS5Cb3g9aS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUscyxhKXtpZighKCJvYmplY3QiIT09cih0KXx8dCBpbnN0YW5jZW9mIGkuRWxlbWVudCkpcmV0dXJuIGkuQm94LmNhbGwodGhpcyxudWxsIT10LmxlZnQ/dC5sZWZ0OnQueCxudWxsIT10LnRvcD90LnRvcDp0LnksdC53aWR0aCx0LmhlaWdodCk7ND09YXJndW1lbnRzLmxlbmd0aCYmKHRoaXMueD10LHRoaXMueT1lLHRoaXMud2lkdGg9cyx0aGlzLmhlaWdodD1hKSx2KHRoaXMpfX0pLGkuQkJveD1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe2lmKGkuQm94LmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKSx0IGluc3RhbmNlb2YgaS5FbGVtZW50KXt2YXIgczt0cnl7aWYoIWUuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKXtmb3IodmFyIGE9dC5ub2RlO2EucGFyZW50Tm9kZTspYT1hLnBhcmVudE5vZGU7aWYoYSE9ZSl0aHJvdyBuZXcgRXJyb3IoIkVsZW1lbnQgbm90IGluIHRoZSBkb20iKX1zPXQubm9kZS5nZXRCQm94KCl9Y2F0Y2goZSl7aWYodCBpbnN0YW5jZW9mIGkuU2hhcGUpe2kucGFyc2VyLmRyYXd8fGkucHJlcGFyZSgpO3ZhciBuPXQuY2xvbmUoaS5wYXJzZXIuZHJhdy5pbnN0YW5jZSkuc2hvdygpO24mJm4ubm9kZSYmImZ1bmN0aW9uIj09dHlwZW9mIG4ubm9kZS5nZXRCQm94JiYocz1uLm5vZGUuZ2V0QkJveCgpKSxuJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5yZW1vdmUmJm4ucmVtb3ZlKCl9ZWxzZSBzPXt4OnQubm9kZS5jbGllbnRMZWZ0LHk6dC5ub2RlLmNsaWVudFRvcCx3aWR0aDp0Lm5vZGUuY2xpZW50V2lkdGgsaGVpZ2h0OnQubm9kZS5jbGllbnRIZWlnaHR9fWkuQm94LmNhbGwodGhpcyxzKX19LGluaGVyaXQ6aS5Cb3gscGFyZW50OmkuRWxlbWVudCxjb25zdHJ1Y3Q6e2Jib3g6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGkuQkJveCh0aGlzKX19fSksaS5CQm94LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1pLkJCb3gsaS5NYXRyaXg9aS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt2YXIgZT1mKFsxLDAsMCwxLDAsMF0pO3Q9bnVsbD09PXQ/ZTp0IGluc3RhbmNlb2YgaS5FbGVtZW50P3QubWF0cml4aWZ5KCk6InN0cmluZyI9PXR5cGVvZiB0P2YodC5zcGxpdChpLnJlZ2V4LmRlbGltaXRlcikubWFwKHBhcnNlRmxvYXQpKTo2PT1hcmd1bWVudHMubGVuZ3RoP2YoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTpBcnJheS5pc0FycmF5KHQpP2YodCk6dCYmIm9iamVjdCI9PT1yKHQpP3Q6ZTtmb3IodmFyIHM9Yi5sZW5ndGgtMTtzPj0wOy0tcyl0aGlzW2Jbc11dPW51bGwhPXRbYltzXV0/dFtiW3NdXTplW2Jbc11dfSxleHRlbmQ6e2V4dHJhY3Q6ZnVuY3Rpb24oKXt2YXIgdD1nKHRoaXMsMCwxKTtnKHRoaXMsMSwwKTt2YXIgZT0xODAvTWF0aC5QSSpNYXRoLmF0YW4yKHQueSx0LngpLTkwO3JldHVybnt4OnRoaXMuZSx5OnRoaXMuZix0cmFuc2Zvcm1lZFg6KHRoaXMuZSpNYXRoLmNvcyhlKk1hdGguUEkvMTgwKSt0aGlzLmYqTWF0aC5zaW4oZSpNYXRoLlBJLzE4MCkpL01hdGguc3FydCh0aGlzLmEqdGhpcy5hK3RoaXMuYip0aGlzLmIpLHRyYW5zZm9ybWVkWToodGhpcy5mKk1hdGguY29zKGUqTWF0aC5QSS8xODApK3RoaXMuZSpNYXRoLnNpbigtZSpNYXRoLlBJLzE4MCkpL01hdGguc3FydCh0aGlzLmMqdGhpcy5jK3RoaXMuZCp0aGlzLmQpLHJvdGF0aW9uOmUsYTp0aGlzLmEsYjp0aGlzLmIsYzp0aGlzLmMsZDp0aGlzLmQsZTp0aGlzLmUsZjp0aGlzLmYsbWF0cml4Om5ldyBpLk1hdHJpeCh0aGlzKX19LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpLk1hdHJpeCh0aGlzKX0sbW9ycGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb249bmV3IGkuTWF0cml4KHQpLHRoaXN9LG11bHRpcGx5OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaS5NYXRyaXgodGhpcy5uYXRpdmUoKS5tdWx0aXBseShmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGkuTWF0cml4fHwodD1uZXcgaS5NYXRyaXgodCkpLHR9KHQpLm5hdGl2ZSgpKSl9LGludmVyc2U6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGkuTWF0cml4KHRoaXMubmF0aXZlKCkuaW52ZXJzZSgpKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBpLk1hdHJpeCh0aGlzLm5hdGl2ZSgpLnRyYW5zbGF0ZSh0fHwwLGV8fDApKX0sbmF0aXZlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWkucGFyc2VyLm5hdGl2ZS5jcmVhdGVTVkdNYXRyaXgoKSxlPWIubGVuZ3RoLTE7ZT49MDtlLS0pdFtiW2VdXT10aGlzW2JbZV1dO3JldHVybiB0fSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJtYXRyaXgoIit4KHRoaXMuYSkrIiwiK3godGhpcy5iKSsiLCIreCh0aGlzLmMpKyIsIit4KHRoaXMuZCkrIiwiK3godGhpcy5lKSsiLCIreCh0aGlzLmYpKyIpIn19LHBhcmVudDppLkVsZW1lbnQsY29uc3RydWN0OntjdG06ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGkuTWF0cml4KHRoaXMubm9kZS5nZXRDVE0oKSl9LHNjcmVlbkNUTTpmdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiBpLk5lc3RlZCl7dmFyIHQ9dGhpcy5yZWN0KDEsMSksZT10Lm5vZGUuZ2V0U2NyZWVuQ1RNKCk7cmV0dXJuIHQucmVtb3ZlKCksbmV3IGkuTWF0cml4KGUpfXJldHVybiBuZXcgaS5NYXRyaXgodGhpcy5ub2RlLmdldFNjcmVlbkNUTSgpKX19fSksaS5Qb2ludD1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7dmFyIGk7aT1BcnJheS5pc0FycmF5KHQpP3t4OnRbMF0seTp0WzFdfToib2JqZWN0Ij09PXIodCk/e3g6dC54LHk6dC55fTpudWxsIT10P3t4OnQseTpudWxsIT1lP2U6dH06e3g6MCx5OjB9LHRoaXMueD1pLngsdGhpcy55PWkueX0sZXh0ZW5kOntjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgaS5Qb2ludCh0aGlzKX0sbW9ycGg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgaS5Qb2ludCh0LGUpLHRoaXN9fX0pLGkuZXh0ZW5kKGkuRWxlbWVudCx7cG9pbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGkuUG9pbnQodCxlKS50cmFuc2Zvcm0odGhpcy5zY3JlZW5DVE0oKS5pbnZlcnNlKCkpfX0pLGkuZXh0ZW5kKGkuRWxlbWVudCx7YXR0cjpmdW5jdGlvbih0LGUscyl7aWYobnVsbD09dCl7Zm9yKHQ9e30scz0oZT10aGlzLm5vZGUuYXR0cmlidXRlcykubGVuZ3RoLTE7cz49MDtzLS0pdFtlW3NdLm5vZGVOYW1lXT1pLnJlZ2V4LmlzTnVtYmVyLnRlc3QoZVtzXS5ub2RlVmFsdWUpP3BhcnNlRmxvYXQoZVtzXS5ub2RlVmFsdWUpOmVbc10ubm9kZVZhbHVlO3JldHVybiB0fWlmKCJvYmplY3QiPT09cih0KSlmb3IodmFyIGEgaW4gdCl0aGlzLmF0dHIoYSx0W2FdKTtlbHNlIGlmKG51bGw9PT1lKXRoaXMubm9kZS5yZW1vdmVBdHRyaWJ1dGUodCk7ZWxzZXtpZihudWxsPT1lKXJldHVybiBudWxsPT0oZT10aGlzLm5vZGUuZ2V0QXR0cmlidXRlKHQpKT9pLmRlZmF1bHRzLmF0dHJzW3RdOmkucmVnZXguaXNOdW1iZXIudGVzdChlKT9wYXJzZUZsb2F0KGUpOmU7InN0cm9rZS13aWR0aCI9PXQ/dGhpcy5hdHRyKCJzdHJva2UiLHBhcnNlRmxvYXQoZSk+MD90aGlzLl9zdHJva2U6bnVsbCk6InN0cm9rZSI9PXQmJih0aGlzLl9zdHJva2U9ZSksImZpbGwiIT10JiYic3Ryb2tlIiE9dHx8KGkucmVnZXguaXNJbWFnZS50ZXN0KGUpJiYoZT10aGlzLmRvYygpLmRlZnMoKS5pbWFnZShlLDAsMCkpLGUgaW5zdGFuY2VvZiBpLkltYWdlJiYoZT10aGlzLmRvYygpLmRlZnMoKS5wYXR0ZXJuKDAsMCwoZnVuY3Rpb24oKXt0aGlzLmFkZChlKX0pKSkpLCJudW1iZXIiPT10eXBlb2YgZT9lPW5ldyBpLk51bWJlcihlKTppLkNvbG9yLmlzQ29sb3IoZSk/ZT1uZXcgaS5Db2xvcihlKTpBcnJheS5pc0FycmF5KGUpJiYoZT1uZXcgaS5BcnJheShlKSksImxlYWRpbmciPT10P3RoaXMubGVhZGluZyYmdGhpcy5sZWFkaW5nKGUpOiJzdHJpbmciPT10eXBlb2Ygcz90aGlzLm5vZGUuc2V0QXR0cmlidXRlTlMocyx0LGUudG9TdHJpbmcoKSk6dGhpcy5ub2RlLnNldEF0dHJpYnV0ZSh0LGUudG9TdHJpbmcoKSksIXRoaXMucmVidWlsZHx8ImZvbnQtc2l6ZSIhPXQmJiJ4IiE9dHx8dGhpcy5yZWJ1aWxkKHQsZSl9cmV0dXJuIHRoaXN9fSksaS5leHRlbmQoaS5FbGVtZW50LHt0cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXt2YXIgcztyZXR1cm4ib2JqZWN0IiE9PXIodCk/KHM9bmV3IGkuTWF0cml4KHRoaXMpLmV4dHJhY3QoKSwic3RyaW5nIj09dHlwZW9mIHQ/c1t0XTpzKToocz1uZXcgaS5NYXRyaXgodGhpcyksZT0hIWV8fCEhdC5yZWxhdGl2ZSxudWxsIT10LmEmJihzPWU/cy5tdWx0aXBseShuZXcgaS5NYXRyaXgodCkpOm5ldyBpLk1hdHJpeCh0KSksdGhpcy5hdHRyKCJ0cmFuc2Zvcm0iLHMpKX19KSxpLmV4dGVuZChpLkVsZW1lbnQse3VudHJhbnNmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cigidHJhbnNmb3JtIixudWxsKX0sbWF0cml4aWZ5OmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuYXR0cigidHJhbnNmb3JtIil8fCIiKS5zcGxpdChpLnJlZ2V4LnRyYW5zZm9ybXMpLnNsaWNlKDAsLTEpLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9dC50cmltKCkuc3BsaXQoIigiKTtyZXR1cm5bZVswXSxlWzFdLnNwbGl0KGkucmVnZXguZGVsaW1pdGVyKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQpfSkpXX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIm1hdHJpeCI9PWVbMF0/dC5tdWx0aXBseShmKGVbMV0pKTp0W2VbMF1dLmFwcGx5KHQsZVsxXSl9KSxuZXcgaS5NYXRyaXgpfSx0b1BhcmVudDpmdW5jdGlvbih0KXtpZih0aGlzPT10KXJldHVybiB0aGlzO3ZhciBlPXRoaXMuc2NyZWVuQ1RNKCksaT10LnNjcmVlbkNUTSgpLmludmVyc2UoKTtyZXR1cm4gdGhpcy5hZGRUbyh0KS51bnRyYW5zZm9ybSgpLnRyYW5zZm9ybShpLm11bHRpcGx5KGUpKSx0aGlzfSx0b0RvYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvUGFyZW50KHRoaXMuZG9jKCkpfX0pLGkuVHJhbnNmb3JtYXRpb249aS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmImJvb2xlYW4iIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgaT0wLHM9dGhpcy5hcmd1bWVudHMubGVuZ3RoO2k8czsrK2kpdGhpc1t0aGlzLmFyZ3VtZW50c1tpXV09dFtpXTtlbHNlIGlmKHQmJiJvYmplY3QiPT09cih0KSlmb3IoaT0wLHM9dGhpcy5hcmd1bWVudHMubGVuZ3RoO2k8czsrK2kpdGhpc1t0aGlzLmFyZ3VtZW50c1tpXV09dFt0aGlzLmFyZ3VtZW50c1tpXV07dGhpcy5pbnZlcnNlZD0hMSwhMD09PWUmJih0aGlzLmludmVyc2VkPSEwKX19KSxpLlRyYW5zbGF0ZT1pLmludmVudCh7cGFyZW50OmkuTWF0cml4LGluaGVyaXQ6aS5UcmFuc2Zvcm1hdGlvbixjcmVhdGU6ZnVuY3Rpb24odCxlKXt0aGlzLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX0sZXh0ZW5kOnthcmd1bWVudHM6WyJ0cmFuc2Zvcm1lZFgiLCJ0cmFuc2Zvcm1lZFkiXSxtZXRob2Q6InRyYW5zbGF0ZSJ9fSksaS5leHRlbmQoaS5FbGVtZW50LHtzdHlsZTpmdW5jdGlvbih0LGUpe2lmKDA9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMubm9kZS5zdHlsZS5jc3NUZXh0fHwiIjtpZihhcmd1bWVudHMubGVuZ3RoPDIpaWYoIm9iamVjdCI9PT1yKHQpKWZvcih2YXIgcyBpbiB0KXRoaXMuc3R5bGUocyx0W3NdKTtlbHNle2lmKCFpLnJlZ2V4LmlzQ3NzLnRlc3QodCkpcmV0dXJuIHRoaXMubm9kZS5zdHlsZVtoKHQpXTtmb3IodD10LnNwbGl0KC9ccyo7XHMqLykuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hIXR9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgvXHMqOlxzKi8pfSkpO2U9dC5wb3AoKTspdGhpcy5zdHlsZShlWzBdLGVbMV0pfWVsc2UgdGhpcy5ub2RlLnN0eWxlW2godCldPW51bGw9PT1lfHxpLnJlZ2V4LmlzQmxhbmsudGVzdChlKT8iIjplO3JldHVybiB0aGlzfX0pLGkuUGFyZW50PWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCl9LGluaGVyaXQ6aS5FbGVtZW50LGV4dGVuZDp7Y2hpbGRyZW46ZnVuY3Rpb24oKXtyZXR1cm4gaS51dGlscy5tYXAoaS51dGlscy5maWx0ZXJTVkdFbGVtZW50cyh0aGlzLm5vZGUuY2hpbGROb2RlcyksKGZ1bmN0aW9uKHQpe3JldHVybiBpLmFkb3B0KHQpfSkpfSxhZGQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09ZT90aGlzLm5vZGUuYXBwZW5kQ2hpbGQodC5ub2RlKTp0Lm5vZGUhPXRoaXMubm9kZS5jaGlsZE5vZGVzW2VdJiZ0aGlzLm5vZGUuaW5zZXJ0QmVmb3JlKHQubm9kZSx0aGlzLm5vZGUuY2hpbGROb2Rlc1tlXSksdGhpc30scHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWRkKHQsZSksdH0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmluZGV4KHQpPj0wfSxpbmRleDpmdW5jdGlvbih0KXtyZXR1cm5bXS5zbGljZS5jYWxsKHRoaXMubm9kZS5jaGlsZE5vZGVzKS5pbmRleE9mKHQubm9kZSl9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gaS5hZG9wdCh0aGlzLm5vZGUuY2hpbGROb2Rlc1t0XSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KHRoaXMubm9kZS5jaGlsZE5vZGVzLmxlbmd0aC0xKX0sZWFjaDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcz10aGlzLmNoaWxkcmVuKCksYT0wLG49cy5sZW5ndGg7YTxuO2ErKylzW2FdaW5zdGFuY2VvZiBpLkVsZW1lbnQmJnQuYXBwbHkoc1thXSxbYSxzXSksZSYmc1thXWluc3RhbmNlb2YgaS5Db250YWluZXImJnNbYV0uZWFjaCh0LGUpO3JldHVybiB0aGlzfSxyZW1vdmVFbGVtZW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5vZGUucmVtb3ZlQ2hpbGQodC5ub2RlKSx0aGlzfSxjbGVhcjpmdW5jdGlvbigpe2Zvcig7dGhpcy5ub2RlLmhhc0NoaWxkTm9kZXMoKTspdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHRoaXMubm9kZS5sYXN0Q2hpbGQpO3JldHVybiBkZWxldGUgdGhpcy5fZGVmcyx0aGlzfSxkZWZzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jKCkuZGVmcygpfX19KSxpLmV4dGVuZChpLlBhcmVudCx7dW5ncm91cDpmdW5jdGlvbih0LGUpe3JldHVybiAwPT09ZXx8dGhpcyBpbnN0YW5jZW9mIGkuRGVmc3x8dGhpcy5ub2RlPT1pLnBhcnNlci5kcmF3fHwodD10fHwodGhpcyBpbnN0YW5jZW9mIGkuRG9jP3RoaXM6dGhpcy5wYXJlbnQoaS5QYXJlbnQpKSxlPWV8fDEvMCx0aGlzLmVhY2goKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBpLkRlZnM/dGhpczp0aGlzIGluc3RhbmNlb2YgaS5QYXJlbnQ/dGhpcy51bmdyb3VwKHQsZS0xKTp0aGlzLnRvUGFyZW50KHQpfSkpLHRoaXMubm9kZS5maXJzdENoaWxkfHx0aGlzLnJlbW92ZSgpKSx0aGlzfSxmbGF0dGVuOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMudW5ncm91cCh0LGUpfX0pLGkuQ29udGFpbmVyPWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCl9LGluaGVyaXQ6aS5QYXJlbnR9KSxpLlZpZXdCb3g9aS5pbnZlbnQoe3BhcmVudDppLkNvbnRhaW5lcixjb25zdHJ1Y3Q6e319KSxbImNsaWNrIiwiZGJsY2xpY2siLCJtb3VzZWRvd24iLCJtb3VzZXVwIiwibW91c2VvdmVyIiwibW91c2VvdXQiLCJtb3VzZW1vdmUiLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hsZWF2ZSIsInRvdWNoZW5kIiwidG91Y2hjYW5jZWwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXtpLkVsZW1lbnQucHJvdG90eXBlW3RdPWZ1bmN0aW9uKGUpe3JldHVybiBpLm9uKHRoaXMubm9kZSx0LGUpLHRoaXN9fSkpLGkubGlzdGVuZXJzPVtdLGkuaGFuZGxlck1hcD1bXSxpLmxpc3RlbmVySWQ9MCxpLm9uPWZ1bmN0aW9uKHQsZSxzLGEsbil7dmFyIHI9cy5iaW5kKGF8fHQuaW5zdGFuY2V8fHQpLG89KGkuaGFuZGxlck1hcC5pbmRleE9mKHQpKzF8fGkuaGFuZGxlck1hcC5wdXNoKHQpKS0xLGw9ZS5zcGxpdCgiLiIpWzBdLGM9ZS5zcGxpdCgiLiIpWzFdfHwiKiI7aS5saXN0ZW5lcnNbb109aS5saXN0ZW5lcnNbb118fHt9LGkubGlzdGVuZXJzW29dW2xdPWkubGlzdGVuZXJzW29dW2xdfHx7fSxpLmxpc3RlbmVyc1tvXVtsXVtjXT1pLmxpc3RlbmVyc1tvXVtsXVtjXXx8e30scy5fc3ZnanNMaXN0ZW5lcklkfHwocy5fc3ZnanNMaXN0ZW5lcklkPSsraS5saXN0ZW5lcklkKSxpLmxpc3RlbmVyc1tvXVtsXVtjXVtzLl9zdmdqc0xpc3RlbmVySWRdPXIsdC5hZGRFdmVudExpc3RlbmVyKGwscixufHx7cGFzc2l2ZTohMH0pfSxpLm9mZj1mdW5jdGlvbih0LGUscyl7dmFyIGE9aS5oYW5kbGVyTWFwLmluZGV4T2YodCksbj1lJiZlLnNwbGl0KCIuIilbMF0scj1lJiZlLnNwbGl0KCIuIilbMV0sbz0iIjtpZigtMSE9YSlpZihzKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5fc3ZnanNMaXN0ZW5lcklkKSwhcylyZXR1cm47aS5saXN0ZW5lcnNbYV1bbl0mJmkubGlzdGVuZXJzW2FdW25dW3J8fCIqIl0mJih0LnJlbW92ZUV2ZW50TGlzdGVuZXIobixpLmxpc3RlbmVyc1thXVtuXVtyfHwiKiJdW3NdLCExKSxkZWxldGUgaS5saXN0ZW5lcnNbYV1bbl1bcnx8IioiXVtzXSl9ZWxzZSBpZihyJiZuKXtpZihpLmxpc3RlbmVyc1thXVtuXSYmaS5saXN0ZW5lcnNbYV1bbl1bcl0pe2Zvcih2YXIgbCBpbiBpLmxpc3RlbmVyc1thXVtuXVtyXSlpLm9mZih0LFtuLHJdLmpvaW4oIi4iKSxsKTtkZWxldGUgaS5saXN0ZW5lcnNbYV1bbl1bcl19fWVsc2UgaWYocilmb3IodmFyIGMgaW4gaS5saXN0ZW5lcnNbYV0pZm9yKHZhciBvIGluIGkubGlzdGVuZXJzW2FdW2NdKXI9PT1vJiZpLm9mZih0LFtjLHJdLmpvaW4oIi4iKSk7ZWxzZSBpZihuKXtpZihpLmxpc3RlbmVyc1thXVtuXSl7Zm9yKHZhciBvIGluIGkubGlzdGVuZXJzW2FdW25dKWkub2ZmKHQsW24sb10uam9pbigiLiIpKTtkZWxldGUgaS5saXN0ZW5lcnNbYV1bbl19fWVsc2V7Zm9yKHZhciBjIGluIGkubGlzdGVuZXJzW2FdKWkub2ZmKHQsYyk7ZGVsZXRlIGkubGlzdGVuZXJzW2FdLGRlbGV0ZSBpLmhhbmRsZXJNYXBbYV19fSxpLmV4dGVuZChpLkVsZW1lbnQse29uOmZ1bmN0aW9uKHQsZSxzLGEpe3JldHVybiBpLm9uKHRoaXMubm9kZSx0LGUscyxhKSx0aGlzfSxvZmY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5vZmYodGhpcy5ub2RlLHQsZSksdGhpc30sZmlyZTpmdW5jdGlvbihlLHMpe3JldHVybiBlIGluc3RhbmNlb2YgdC5FdmVudD90aGlzLm5vZGUuZGlzcGF0Y2hFdmVudChlKTp0aGlzLm5vZGUuZGlzcGF0Y2hFdmVudChlPW5ldyBpLkN1c3RvbUV2ZW50KGUse2RldGFpbDpzLGNhbmNlbGFibGU6ITB9KSksdGhpcy5fZXZlbnQ9ZSx0aGlzfSxldmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ldmVudH19KSxpLkRlZnM9aS5pbnZlbnQoe2NyZWF0ZToiZGVmcyIsaW5oZXJpdDppLkNvbnRhaW5lcn0pLGkuRz1pLmludmVudCh7Y3JlYXRlOiJnIixpbmhlcml0OmkuQ29udGFpbmVyLGV4dGVuZDp7eDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnRyYW5zZm9ybSgieCIpOnRoaXMudHJhbnNmb3JtKHt4OnQtdGhpcy54KCl9LCEwKX19LGNvbnN0cnVjdDp7Z3JvdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuRyl9fX0pLGkuRG9jPWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dCYmKCJzdmciPT0odD0ic3RyaW5nIj09dHlwZW9mIHQ/ZS5nZXRFbGVtZW50QnlJZCh0KTp0KS5ub2RlTmFtZT90aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyx0KToodGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsaS5jcmVhdGUoInN2ZyIpKSx0LmFwcGVuZENoaWxkKHRoaXMubm9kZSksdGhpcy5zaXplKCIxMDAlIiwiMTAwJSIpKSx0aGlzLm5hbWVzcGFjZSgpLmRlZnMoKSl9LGluaGVyaXQ6aS5Db250YWluZXIsZXh0ZW5kOntuYW1lc3BhY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyKHt4bWxuczppLm5zLHZlcnNpb246IjEuMSJ9KS5hdHRyKCJ4bWxuczp4bGluayIsaS54bGluayxpLnhtbG5zKS5hdHRyKCJ4bWxuczpzdmdqcyIsaS5zdmdqcyxpLnhtbG5zKX0sZGVmczpmdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLl9kZWZzfHwoKHQ9dGhpcy5ub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZWZzIilbMF0pP3RoaXMuX2RlZnM9aS5hZG9wdCh0KTp0aGlzLl9kZWZzPW5ldyBpLkRlZnMsdGhpcy5ub2RlLmFwcGVuZENoaWxkKHRoaXMuX2RlZnMubm9kZSkpLHRoaXMuX2RlZnN9LHBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUucGFyZW50Tm9kZSYmIiNkb2N1bWVudCIhPXRoaXMubm9kZS5wYXJlbnROb2RlLm5vZGVOYW1lP3RoaXMubm9kZS5wYXJlbnROb2RlOm51bGx9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnJlbW92ZUNoaWxkKHRoaXMubm9kZSksdGhpc30sY2xlYXI6ZnVuY3Rpb24oKXtmb3IoO3RoaXMubm9kZS5oYXNDaGlsZE5vZGVzKCk7KXRoaXMubm9kZS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUubGFzdENoaWxkKTtyZXR1cm4gZGVsZXRlIHRoaXMuX2RlZnMsaS5wYXJzZXIuZHJhdyYmIWkucGFyc2VyLmRyYXcucGFyZW50Tm9kZSYmdGhpcy5ub2RlLmFwcGVuZENoaWxkKGkucGFyc2VyLmRyYXcpLHRoaXN9LGNsb25lOmZ1bmN0aW9uKHQpe3RoaXMud3JpdGVEYXRhVG9Eb20oKTt2YXIgZT10aGlzLm5vZGUsaT1tKGUuY2xvbmVOb2RlKCEwKSk7cmV0dXJuIHQ/KHQubm9kZXx8dCkuYXBwZW5kQ2hpbGQoaS5ub2RlKTplLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGkubm9kZSxlLm5leHRTaWJsaW5nKSxpfX19KSxpLmV4dGVuZChpLkVsZW1lbnQse30pLGkuR3JhZGllbnQ9aS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxpLmNyZWF0ZSh0KyJHcmFkaWVudCIpKSx0aGlzLnR5cGU9dH0saW5oZXJpdDppLkNvbnRhaW5lcixleHRlbmQ6e2F0OmZ1bmN0aW9uKHQsZSxzKXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuU3RvcCkudXBkYXRlKHQsZSxzKX0sdXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsZWFyKCksImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY2FsbCh0aGlzLHRoaXMpLHRoaXN9LGZpbGw6ZnVuY3Rpb24oKXtyZXR1cm4idXJsKCMiK3RoaXMuaWQoKSsiKSJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCgpfSxhdHRyOmZ1bmN0aW9uKHQsZSxzKXtyZXR1cm4idHJhbnNmb3JtIj09dCYmKHQ9ImdyYWRpZW50VHJhbnNmb3JtIiksaS5Db250YWluZXIucHJvdG90eXBlLmF0dHIuY2FsbCh0aGlzLHQsZSxzKX19LGNvbnN0cnVjdDp7Z3JhZGllbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5kZWZzKCkuZ3JhZGllbnQodCxlKX19fSksaS5leHRlbmQoaS5HcmFkaWVudCxpLkZYLHtmcm9tOmZ1bmN0aW9uKHQsZSl7cmV0dXJuInJhZGlhbCI9PSh0aGlzLl90YXJnZXR8fHRoaXMpLnR5cGU/dGhpcy5hdHRyKHtmeDpuZXcgaS5OdW1iZXIodCksZnk6bmV3IGkuTnVtYmVyKGUpfSk6dGhpcy5hdHRyKHt4MTpuZXcgaS5OdW1iZXIodCkseTE6bmV3IGkuTnVtYmVyKGUpfSl9LHRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuInJhZGlhbCI9PSh0aGlzLl90YXJnZXR8fHRoaXMpLnR5cGU/dGhpcy5hdHRyKHtjeDpuZXcgaS5OdW1iZXIodCksY3k6bmV3IGkuTnVtYmVyKGUpfSk6dGhpcy5hdHRyKHt4MjpuZXcgaS5OdW1iZXIodCkseTI6bmV3IGkuTnVtYmVyKGUpfSl9fSksaS5leHRlbmQoaS5EZWZzLHtncmFkaWVudDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgaS5HcmFkaWVudCh0KSkudXBkYXRlKGUpfX0pLGkuU3RvcD1pLmludmVudCh7Y3JlYXRlOiJzdG9wIixpbmhlcml0OmkuRWxlbWVudCxleHRlbmQ6e3VwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgaS5OdW1iZXIpJiYodD17b2Zmc2V0OmFyZ3VtZW50c1swXSxjb2xvcjphcmd1bWVudHNbMV0sb3BhY2l0eTphcmd1bWVudHNbMl19KSxudWxsIT10Lm9wYWNpdHkmJnRoaXMuYXR0cigic3RvcC1vcGFjaXR5Iix0Lm9wYWNpdHkpLG51bGwhPXQuY29sb3ImJnRoaXMuYXR0cigic3RvcC1jb2xvciIsdC5jb2xvciksbnVsbCE9dC5vZmZzZXQmJnRoaXMuYXR0cigib2Zmc2V0IixuZXcgaS5OdW1iZXIodC5vZmZzZXQpKSx0aGlzfX19KSxpLlBhdHRlcm49aS5pbnZlbnQoe2NyZWF0ZToicGF0dGVybiIsaW5oZXJpdDppLkNvbnRhaW5lcixleHRlbmQ6e2ZpbGw6ZnVuY3Rpb24oKXtyZXR1cm4idXJsKCMiK3RoaXMuaWQoKSsiKSJ9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbGVhcigpLCJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNhbGwodGhpcyx0aGlzKSx0aGlzfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwoKX0sYXR0cjpmdW5jdGlvbih0LGUscyl7cmV0dXJuInRyYW5zZm9ybSI9PXQmJih0PSJwYXR0ZXJuVHJhbnNmb3JtIiksaS5Db250YWluZXIucHJvdG90eXBlLmF0dHIuY2FsbCh0aGlzLHQsZSxzKX19LGNvbnN0cnVjdDp7cGF0dGVybjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuZGVmcygpLnBhdHRlcm4odCxlLGkpfX19KSxpLmV4dGVuZChpLkRlZnMse3BhdHRlcm46ZnVuY3Rpb24odCxlLHMpe3JldHVybiB0aGlzLnB1dChuZXcgaS5QYXR0ZXJuKS51cGRhdGUocykuYXR0cih7eDowLHk6MCx3aWR0aDp0LGhlaWdodDplLHBhdHRlcm5Vbml0czoidXNlclNwYWNlT25Vc2UifSl9fSksaS5TaGFwZT1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpfSxpbmhlcml0OmkuRWxlbWVudH0pLGkuU3ltYm9sPWkuaW52ZW50KHtjcmVhdGU6InN5bWJvbCIsaW5oZXJpdDppLkNvbnRhaW5lcixjb25zdHJ1Y3Q6e3N5bWJvbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgaS5TeW1ib2wpfX19KSxpLlVzZT1pLmludmVudCh7Y3JlYXRlOiJ1c2UiLGluaGVyaXQ6aS5TaGFwZSxleHRlbmQ6e2VsZW1lbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyKCJocmVmIiwoZXx8IiIpKyIjIit0LGkueGxpbmspfX0sY29uc3RydWN0Ont1c2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuVXNlKS5lbGVtZW50KHQsZSl9fX0pLGkuUmVjdD1pLmludmVudCh7Y3JlYXRlOiJyZWN0Iixpbmhlcml0OmkuU2hhcGUsY29uc3RydWN0OntyZWN0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBpLlJlY3QpLnNpemUodCxlKX19fSksaS5DaXJjbGU9aS5pbnZlbnQoe2NyZWF0ZToiY2lyY2xlIixpbmhlcml0OmkuU2hhcGUsY29uc3RydWN0OntjaXJjbGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBpLkNpcmNsZSkucngobmV3IGkuTnVtYmVyKHQpLmRpdmlkZSgyKSkubW92ZSgwLDApfX19KSxpLmV4dGVuZChpLkNpcmNsZSxpLkZYLHtyeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKCJyIix0KX0scnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucngodCl9fSksaS5FbGxpcHNlPWkuaW52ZW50KHtjcmVhdGU6ImVsbGlwc2UiLGluaGVyaXQ6aS5TaGFwZSxjb25zdHJ1Y3Q6e2VsbGlwc2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuRWxsaXBzZSkuc2l6ZSh0LGUpLm1vdmUoMCwwKX19fSksaS5leHRlbmQoaS5FbGxpcHNlLGkuUmVjdCxpLkZYLHtyeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKCJyeCIsdCl9LHJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoInJ5Iix0KX19KSxpLmV4dGVuZChpLkNpcmNsZSxpLkVsbGlwc2Use3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5jeCgpLXRoaXMucngoKTp0aGlzLmN4KHQrdGhpcy5yeCgpKX0seTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmN5KCktdGhpcy5yeSgpOnRoaXMuY3kodCt0aGlzLnJ5KCkpfSxjeDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoImN4Iik6dGhpcy5hdHRyKCJjeCIsdCl9LGN5OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cigiY3kiKTp0aGlzLmF0dHIoImN5Iix0KX0sd2lkdGg6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/Mip0aGlzLnJ4KCk6dGhpcy5yeChuZXcgaS5OdW1iZXIodCkuZGl2aWRlKDIpKX0saGVpZ2h0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10PzIqdGhpcy5yeSgpOnRoaXMucnkobmV3IGkuTnVtYmVyKHQpLmRpdmlkZSgyKSl9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgcz1wKHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5yeChuZXcgaS5OdW1iZXIocy53aWR0aCkuZGl2aWRlKDIpKS5yeShuZXcgaS5OdW1iZXIocy5oZWlnaHQpLmRpdmlkZSgyKSl9fSksaS5MaW5lPWkuaW52ZW50KHtjcmVhdGU6ImxpbmUiLGluaGVyaXQ6aS5TaGFwZSxleHRlbmQ6e2FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpLlBvaW50QXJyYXkoW1t0aGlzLmF0dHIoIngxIiksdGhpcy5hdHRyKCJ5MSIpXSxbdGhpcy5hdHRyKCJ4MiIpLHRoaXMuYXR0cigieTIiKV1dKX0scGxvdDpmdW5jdGlvbih0LGUscyxhKXtyZXR1cm4gbnVsbD09dD90aGlzLmFycmF5KCk6KHQ9dm9pZCAwIT09ZT97eDE6dCx5MTplLHgyOnMseTI6YX06bmV3IGkuUG9pbnRBcnJheSh0KS50b0xpbmUoKSx0aGlzLmF0dHIodCkpfSxtb3ZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXR0cih0aGlzLmFycmF5KCkubW92ZSh0LGUpLnRvTGluZSgpKX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXAodGhpcyx0LGUpO3JldHVybiB0aGlzLmF0dHIodGhpcy5hcnJheSgpLnNpemUoaS53aWR0aCxpLmhlaWdodCkudG9MaW5lKCkpfX0sY29uc3RydWN0OntsaW5lOmZ1bmN0aW9uKHQsZSxzLGEpe3JldHVybiBpLkxpbmUucHJvdG90eXBlLnBsb3QuYXBwbHkodGhpcy5wdXQobmV3IGkuTGluZSksbnVsbCE9dD9bdCxlLHMsYV06WzAsMCwwLDBdKX19fSksaS5Qb2x5bGluZT1pLmludmVudCh7Y3JlYXRlOiJwb2x5bGluZSIsaW5oZXJpdDppLlNoYXBlLGNvbnN0cnVjdDp7cG9seWxpbmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBpLlBvbHlsaW5lKS5wbG90KHR8fG5ldyBpLlBvaW50QXJyYXkpfX19KSxpLlBvbHlnb249aS5pbnZlbnQoe2NyZWF0ZToicG9seWdvbiIsaW5oZXJpdDppLlNoYXBlLGNvbnN0cnVjdDp7cG9seWdvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuUG9seWdvbikucGxvdCh0fHxuZXcgaS5Qb2ludEFycmF5KX19fSksaS5leHRlbmQoaS5Qb2x5bGluZSxpLlBvbHlnb24se2FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5fHwodGhpcy5fYXJyYXk9bmV3IGkuUG9pbnRBcnJheSh0aGlzLmF0dHIoInBvaW50cyIpKSl9LHBsb3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hcnJheSgpOnRoaXMuY2xlYXIoKS5hdHRyKCJwb2ludHMiLCJzdHJpbmciPT10eXBlb2YgdD90OnRoaXMuX2FycmF5PW5ldyBpLlBvaW50QXJyYXkodCkpfSxjbGVhcjpmdW5jdGlvbigpe3JldHVybiBkZWxldGUgdGhpcy5fYXJyYXksdGhpc30sbW92ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmF0dHIoInBvaW50cyIsdGhpcy5hcnJheSgpLm1vdmUodCxlKSl9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaT1wKHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5hdHRyKCJwb2ludHMiLHRoaXMuYXJyYXkoKS5zaXplKGkud2lkdGgsaS5oZWlnaHQpKX19KSxpLmV4dGVuZChpLkxpbmUsaS5Qb2x5bGluZSxpLlBvbHlnb24se21vcnBoQXJyYXk6aS5Qb2ludEFycmF5LHg6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5iYm94KCkueDp0aGlzLm1vdmUodCx0aGlzLmJib3goKS55KX0seTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmJib3goKS55OnRoaXMubW92ZSh0aGlzLmJib3goKS54LHQpfSx3aWR0aDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmJib3goKTtyZXR1cm4gbnVsbD09dD9lLndpZHRoOnRoaXMuc2l6ZSh0LGUuaGVpZ2h0KX0saGVpZ2h0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYmJveCgpO3JldHVybiBudWxsPT10P2UuaGVpZ2h0OnRoaXMuc2l6ZShlLndpZHRoLHQpfX0pLGkuUGF0aD1pLmludmVudCh7Y3JlYXRlOiJwYXRoIixpbmhlcml0OmkuU2hhcGUsZXh0ZW5kOnttb3JwaEFycmF5OmkuUGF0aEFycmF5LGFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5fHwodGhpcy5fYXJyYXk9bmV3IGkuUGF0aEFycmF5KHRoaXMuYXR0cigiZCIpKSl9LHBsb3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hcnJheSgpOnRoaXMuY2xlYXIoKS5hdHRyKCJkIiwic3RyaW5nIj09dHlwZW9mIHQ/dDp0aGlzLl9hcnJheT1uZXcgaS5QYXRoQXJyYXkodCkpfSxjbGVhcjpmdW5jdGlvbigpe3JldHVybiBkZWxldGUgdGhpcy5fYXJyYXksdGhpc319LGNvbnN0cnVjdDp7cGF0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuUGF0aCkucGxvdCh0fHxuZXcgaS5QYXRoQXJyYXkpfX19KSxpLkltYWdlPWkuaW52ZW50KHtjcmVhdGU6ImltYWdlIixpbmhlcml0OmkuU2hhcGUsZXh0ZW5kOntsb2FkOmZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiB0aGlzO3ZhciBzPXRoaXMsYT1uZXcgdC5JbWFnZTtyZXR1cm4gaS5vbihhLCJsb2FkIiwoZnVuY3Rpb24oKXtpLm9mZihhKTt2YXIgdD1zLnBhcmVudChpLlBhdHRlcm4pO251bGwhPT10JiYoMD09cy53aWR0aCgpJiYwPT1zLmhlaWdodCgpJiZzLnNpemUoYS53aWR0aCxhLmhlaWdodCksdCYmMD09dC53aWR0aCgpJiYwPT10LmhlaWdodCgpJiZ0LnNpemUocy53aWR0aCgpLHMuaGVpZ2h0KCkpLCJmdW5jdGlvbiI9PXR5cGVvZiBzLl9sb2FkZWQmJnMuX2xvYWRlZC5jYWxsKHMse3dpZHRoOmEud2lkdGgsaGVpZ2h0OmEuaGVpZ2h0LHJhdGlvOmEud2lkdGgvYS5oZWlnaHQsdXJsOmV9KSl9KSksaS5vbihhLCJlcnJvciIsKGZ1bmN0aW9uKHQpe2kub2ZmKGEpLCJmdW5jdGlvbiI9PXR5cGVvZiBzLl9lcnJvciYmcy5fZXJyb3IuY2FsbChzLHQpfSkpLHRoaXMuYXR0cigiaHJlZiIsYS5zcmM9dGhpcy5zcmM9ZSxpLnhsaW5rKX0sbG9hZGVkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sb2FkZWQ9dCx0aGlzfSxlcnJvcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZXJyb3I9dCx0aGlzfX0sY29uc3RydWN0OntpbWFnZTpmdW5jdGlvbih0LGUscyl7cmV0dXJuIHRoaXMucHV0KG5ldyBpLkltYWdlKS5sb2FkKHQpLnNpemUoZXx8MCxzfHxlfHwwKX19fSksaS5UZXh0PWkuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxpLmNyZWF0ZSgidGV4dCIpKSx0aGlzLmRvbS5sZWFkaW5nPW5ldyBpLk51bWJlcigxLjMpLHRoaXMuX3JlYnVpbGQ9ITAsdGhpcy5fYnVpbGQ9ITEsdGhpcy5hdHRyKCJmb250LWZhbWlseSIsaS5kZWZhdWx0cy5hdHRyc1siZm9udC1mYW1pbHkiXSl9LGluaGVyaXQ6aS5TaGFwZSxleHRlbmQ6e3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKCJ4Iik6dGhpcy5hdHRyKCJ4Iix0KX0sdGV4dDpmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXt0PSIiO2Zvcih2YXIgZT10aGlzLm5vZGUuY2hpbGROb2RlcyxzPTAsYT1lLmxlbmd0aDtzPGE7KytzKTAhPXMmJjMhPWVbc10ubm9kZVR5cGUmJjE9PWkuYWRvcHQoZVtzXSkuZG9tLm5ld0xpbmVkJiYodCs9IlxuIiksdCs9ZVtzXS50ZXh0Q29udGVudDtyZXR1cm4gdH1pZih0aGlzLmNsZWFyKCkuYnVpbGQoITApLCJmdW5jdGlvbiI9PXR5cGVvZiB0KXQuY2FsbCh0aGlzLHRoaXMpO2Vsc2V7cz0wO2Zvcih2YXIgbj0odD10LnNwbGl0KCJcbiIpKS5sZW5ndGg7czxuO3MrKyl0aGlzLnRzcGFuKHRbc10pLm5ld0xpbmUoKX1yZXR1cm4gdGhpcy5idWlsZCghMSkucmVidWlsZCgpfSxzaXplOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoImZvbnQtc2l6ZSIsdCkucmVidWlsZCgpfSxsZWFkaW5nOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuZG9tLmxlYWRpbmc6KHRoaXMuZG9tLmxlYWRpbmc9bmV3IGkuTnVtYmVyKHQpLHRoaXMucmVidWlsZCgpKX0sbGluZXM6ZnVuY3Rpb24oKXt2YXIgdD0odGhpcy50ZXh0UGF0aCYmdGhpcy50ZXh0UGF0aCgpfHx0aGlzKS5ub2RlLGU9aS51dGlscy5tYXAoaS51dGlscy5maWx0ZXJTVkdFbGVtZW50cyh0LmNoaWxkTm9kZXMpLChmdW5jdGlvbih0KXtyZXR1cm4gaS5hZG9wdCh0KX0pKTtyZXR1cm4gbmV3IGkuU2V0KGUpfSxyZWJ1aWxkOmZ1bmN0aW9uKHQpe2lmKCJib29sZWFuIj09dHlwZW9mIHQmJih0aGlzLl9yZWJ1aWxkPXQpLHRoaXMuX3JlYnVpbGQpe3ZhciBlPXRoaXMscz0wLGE9dGhpcy5kb20ubGVhZGluZypuZXcgaS5OdW1iZXIodGhpcy5hdHRyKCJmb250LXNpemUiKSk7dGhpcy5saW5lcygpLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5kb20ubmV3TGluZWQmJihlLnRleHRQYXRoKCl8fHRoaXMuYXR0cigieCIsZS5hdHRyKCJ4IikpLCJcbiI9PXRoaXMudGV4dCgpP3MrPWE6KHRoaXMuYXR0cigiZHkiLGErcykscz0wKSl9KSksdGhpcy5maXJlKCJyZWJ1aWxkIil9cmV0dXJuIHRoaXN9LGJ1aWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9idWlsZD0hIXQsdGhpc30sc2V0RGF0YTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kb209dCx0aGlzLmRvbS5sZWFkaW5nPW5ldyBpLk51bWJlcih0LmxlYWRpbmd8fDEuMyksdGhpc319LGNvbnN0cnVjdDp7dGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuVGV4dCkudGV4dCh0KX0scGxhaW46ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBpLlRleHQpLnBsYWluKHQpfX19KSxpLlRzcGFuPWkuaW52ZW50KHtjcmVhdGU6InRzcGFuIixpbmhlcml0OmkuU2hhcGUsZXh0ZW5kOnt0ZXh0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMubm9kZS50ZXh0Q29udGVudCsodGhpcy5kb20ubmV3TGluZWQ/IlxuIjoiIik6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P3QuY2FsbCh0aGlzLHRoaXMpOnRoaXMucGxhaW4odCksdGhpcyl9LGR4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoImR4Iix0KX0sZHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cigiZHkiLHQpfSxuZXdMaW5lOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXJlbnQoaS5UZXh0KTtyZXR1cm4gdGhpcy5kb20ubmV3TGluZWQ9ITAsdGhpcy5keSh0LmRvbS5sZWFkaW5nKnQuYXR0cigiZm9udC1zaXplIikpLmF0dHIoIngiLHQueCgpKX19fSksaS5leHRlbmQoaS5UZXh0LGkuVHNwYW4se3BsYWluOmZ1bmN0aW9uKHQpe3JldHVybiExPT09dGhpcy5fYnVpbGQmJnRoaXMuY2xlYXIoKSx0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoZS5jcmVhdGVUZXh0Tm9kZSh0KSksdGhpc30sdHNwYW46ZnVuY3Rpb24odCl7dmFyIGU9KHRoaXMudGV4dFBhdGgmJnRoaXMudGV4dFBhdGgoKXx8dGhpcykubm9kZSxzPW5ldyBpLlRzcGFuO3JldHVybiExPT09dGhpcy5fYnVpbGQmJnRoaXMuY2xlYXIoKSxlLmFwcGVuZENoaWxkKHMubm9kZSkscy50ZXh0KHQpfSxjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgdD0odGhpcy50ZXh0UGF0aCYmdGhpcy50ZXh0UGF0aCgpfHx0aGlzKS5ub2RlO3QuaGFzQ2hpbGROb2RlcygpOyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKTtyZXR1cm4gdGhpc30sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKX19KSxpLlRleHRQYXRoPWkuaW52ZW50KHtjcmVhdGU6InRleHRQYXRoIixpbmhlcml0OmkuUGFyZW50LHBhcmVudDppLlRleHQsY29uc3RydWN0Onttb3JwaEFycmF5OmkuUGF0aEFycmF5LGFycmF5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50cmFjaygpO3JldHVybiB0P3QuYXJyYXkoKTpudWxsfSxwbG90OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudHJhY2soKSxpPW51bGw7cmV0dXJuIGUmJihpPWUucGxvdCh0KSksbnVsbD09dD9pOnRoaXN9LHRyYWNrOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50ZXh0UGF0aCgpO2lmKHQpcmV0dXJuIHQucmVmZXJlbmNlKCJocmVmIil9LHRleHRQYXRoOmZ1bmN0aW9uKCl7aWYodGhpcy5ub2RlLmZpcnN0Q2hpbGQmJiJ0ZXh0UGF0aCI9PXRoaXMubm9kZS5maXJzdENoaWxkLm5vZGVOYW1lKXJldHVybiBpLmFkb3B0KHRoaXMubm9kZS5maXJzdENoaWxkKX19fSksaS5OZXN0ZWQ9aS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGkuY3JlYXRlKCJzdmciKSksdGhpcy5zdHlsZSgib3ZlcmZsb3ciLCJ2aXNpYmxlIil9LGluaGVyaXQ6aS5Db250YWluZXIsY29uc3RydWN0OntuZXN0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IGkuTmVzdGVkKX19fSk7dmFyIGw9e3N0cm9rZTpbImNvbG9yIiwid2lkdGgiLCJvcGFjaXR5IiwibGluZWNhcCIsImxpbmVqb2luIiwibWl0ZXJsaW1pdCIsImRhc2hhcnJheSIsImRhc2hvZmZzZXQiXSxmaWxsOlsiY29sb3IiLCJvcGFjaXR5IiwicnVsZSJdLHByZWZpeDpmdW5jdGlvbih0LGUpe3JldHVybiJjb2xvciI9PWU/dDp0KyItIitlfX07ZnVuY3Rpb24gYyh0LGUscyxhKXtyZXR1cm4gcythLnJlcGxhY2UoaS5yZWdleC5kb3RzLCIgLiIpfWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tKC4pL2csKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUudG9VcHBlckNhc2UoKX0pKX1mdW5jdGlvbiBkKHQpe3JldHVybiB0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSl9ZnVuY3Rpb24gdSh0KXt2YXIgZT10LnRvU3RyaW5nKDE2KTtyZXR1cm4gMT09ZS5sZW5ndGg/IjAiK2U6ZX1mdW5jdGlvbiBwKHQsZSxpKXtpZihudWxsPT1lfHxudWxsPT1pKXt2YXIgcz10LmJib3goKTtudWxsPT1lP2U9cy53aWR0aC9zLmhlaWdodCppOm51bGw9PWkmJihpPXMuaGVpZ2h0L3Mud2lkdGgqZSl9cmV0dXJue3dpZHRoOmUsaGVpZ2h0Oml9fWZ1bmN0aW9uIGcodCxlLGkpe3JldHVybnt4OmUqdC5hK2kqdC5jKzAseTplKnQuYitpKnQuZCswfX1mdW5jdGlvbiBmKHQpe3JldHVybnthOnRbMF0sYjp0WzFdLGM6dFsyXSxkOnRbM10sZTp0WzRdLGY6dFs1XX19ZnVuY3Rpb24gbShlKXtmb3IodmFyIHM9ZS5jaGlsZE5vZGVzLmxlbmd0aC0xO3M+PTA7cy0tKWUuY2hpbGROb2Rlc1tzXWluc3RhbmNlb2YgdC5TVkdFbGVtZW50JiZtKGUuY2hpbGROb2Rlc1tzXSk7cmV0dXJuIGkuYWRvcHQoZSkuaWQoaS5laWQoZS5ub2RlTmFtZSkpfWZ1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQueCYmKHQueD0wLHQueT0wLHQud2lkdGg9MCx0LmhlaWdodD0wKSx0Lnc9dC53aWR0aCx0Lmg9dC5oZWlnaHQsdC54Mj10LngrdC53aWR0aCx0LnkyPXQueSt0LmhlaWdodCx0LmN4PXQueCt0LndpZHRoLzIsdC5jeT10LnkrdC5oZWlnaHQvMix0fWZ1bmN0aW9uIHgodCl7cmV0dXJuIE1hdGguYWJzKHQpPjFlLTM3P3Q6MH1bImZpbGwiLCJzdHJva2UiXS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT17fTtlW3RdPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpcmV0dXJuIHRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBlfHxpLkNvbG9yLmlzUmdiKGUpfHxlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5maWxsKXRoaXMuYXR0cih0LGUpO2Vsc2UgZm9yKHZhciBzPWxbdF0ubGVuZ3RoLTE7cz49MDtzLS0pbnVsbCE9ZVtsW3RdW3NdXSYmdGhpcy5hdHRyKGwucHJlZml4KHQsbFt0XVtzXSksZVtsW3RdW3NdXSk7cmV0dXJuIHRoaXN9LGkuZXh0ZW5kKGkuRWxlbWVudCxpLkZYLGUpfSkpLGkuZXh0ZW5kKGkuRWxlbWVudCxpLkZYLHt0cmFuc2xhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0oe3g6dCx5OmV9KX0sbWF0cml4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoInRyYW5zZm9ybSIsbmV3IGkuTWF0cml4KDY9PWFyZ3VtZW50cy5sZW5ndGg/W10uc2xpY2UuY2FsbChhcmd1bWVudHMpOnQpKX0sb3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKCJvcGFjaXR5Iix0KX0sZHg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueChuZXcgaS5OdW1iZXIodCkucGx1cyh0aGlzIGluc3RhbmNlb2YgaS5GWD8wOnRoaXMueCgpKSwhMCl9LGR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnkobmV3IGkuTnVtYmVyKHQpLnBsdXModGhpcyBpbnN0YW5jZW9mIGkuRlg/MDp0aGlzLnkoKSksITApfX0pLGkuZXh0ZW5kKGkuUGF0aCx7bGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5nZXRUb3RhbExlbmd0aCgpfSxwb2ludEF0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5vZGUuZ2V0UG9pbnRBdExlbmd0aCh0KX19KSxpLlNldD1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe0FycmF5LmlzQXJyYXkodCk/dGhpcy5tZW1iZXJzPXQ6dGhpcy5jbGVhcigpfSxleHRlbmQ6e2FkZDpmdW5jdGlvbigpe2Zvcih2YXIgdD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKyl0aGlzLm1lbWJlcnMucHVzaCh0W2VdKTtyZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW5kZXgodCk7cmV0dXJuIGU+LTEmJnRoaXMubWVtYmVycy5zcGxpY2UoZSwxKSx0aGlzfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLGk9dGhpcy5tZW1iZXJzLmxlbmd0aDtlPGk7ZSsrKXQuYXBwbHkodGhpcy5tZW1iZXJzW2VdLFtlLHRoaXMubWVtYmVyc10pO3JldHVybiB0aGlzfSxjbGVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbWJlcnM9W10sdGhpc30sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVtYmVycy5sZW5ndGh9LGhhczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbmRleCh0KT49MH0saW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWVtYmVycy5pbmRleE9mKHQpfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWVtYmVyc1t0XX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQodGhpcy5tZW1iZXJzLmxlbmd0aC0xKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbWJlcnN9fSxjb25zdHJ1Y3Q6e3NldDpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGkuU2V0KHQpfX19KSxpLkZYLlNldD1pLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuc2V0PXR9fSksaS5TZXQuaW5oZXJpdD1mdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiBpLlNoYXBlLnByb3RvdHlwZSkiZnVuY3Rpb24iPT10eXBlb2YgaS5TaGFwZS5wcm90b3R5cGVbZV0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpLlNldC5wcm90b3R5cGVbZV0mJnQucHVzaChlKTtmb3IodmFyIGUgaW4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtpLlNldC5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCxzPXRoaXMubWVtYmVycy5sZW5ndGg7ZTxzO2UrKyl0aGlzLm1lbWJlcnNbZV0mJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm1lbWJlcnNbZV1bdF0mJnRoaXMubWVtYmVyc1tlXVt0XS5hcHBseSh0aGlzLm1lbWJlcnNbZV0sYXJndW1lbnRzKTtyZXR1cm4iYW5pbWF0ZSI9PXQ/dGhpcy5meHx8KHRoaXMuZng9bmV3IGkuRlguU2V0KHRoaXMpKTp0aGlzfX0pKSx0PVtdLGkuRlgucHJvdG90eXBlKSJmdW5jdGlvbiI9PXR5cGVvZiBpLkZYLnByb3RvdHlwZVtlXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGkuRlguU2V0LnByb3RvdHlwZVtlXSYmdC5wdXNoKGUpO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5GWC5TZXQucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAsaT10aGlzLnNldC5tZW1iZXJzLmxlbmd0aDtlPGk7ZSsrKXRoaXMuc2V0Lm1lbWJlcnNbZV0uZnhbdF0uYXBwbHkodGhpcy5zZXQubWVtYmVyc1tlXS5meCxhcmd1bWVudHMpO3JldHVybiB0aGlzfX0pKX0saS5leHRlbmQoaS5FbGVtZW50LHt9KSxpLmV4dGVuZChpLkVsZW1lbnQse3JlbWVtYmVyOmZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCI9PT1yKGFyZ3VtZW50c1swXSkpZm9yKHZhciBpIGluIHQpdGhpcy5yZW1lbWJlcihpLHRbaV0pO2Vsc2V7aWYoMT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5tZW1vcnkoKVt0XTt0aGlzLm1lbW9yeSgpW3RdPWV9cmV0dXJuIHRoaXN9LGZvcmdldDpmdW5jdGlvbigpe2lmKDA9PWFyZ3VtZW50cy5sZW5ndGgpdGhpcy5fbWVtb3J5PXt9O2Vsc2UgZm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMTt0Pj0wO3QtLSlkZWxldGUgdGhpcy5tZW1vcnkoKVthcmd1bWVudHNbdF1dO3JldHVybiB0aGlzfSxtZW1vcnk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWVtb3J5fHwodGhpcy5fbWVtb3J5PXt9KX19KSxpLmdldD1mdW5jdGlvbih0KXt2YXIgcz1lLmdldEVsZW1lbnRCeUlkKGZ1bmN0aW9uKHQpe3ZhciBlPSh0fHwiIikudG9TdHJpbmcoKS5tYXRjaChpLnJlZ2V4LnJlZmVyZW5jZSk7aWYoZSlyZXR1cm4gZVsxXX0odCl8fHQpO3JldHVybiBpLmFkb3B0KHMpfSxpLnNlbGVjdD1mdW5jdGlvbih0LHMpe3JldHVybiBuZXcgaS5TZXQoaS51dGlscy5tYXAoKHN8fGUpLnF1ZXJ5U2VsZWN0b3JBbGwodCksKGZ1bmN0aW9uKHQpe3JldHVybiBpLmFkb3B0KHQpfSkpKX0saS5leHRlbmQoaS5QYXJlbnQse3NlbGVjdDpmdW5jdGlvbih0KXtyZXR1cm4gaS5zZWxlY3QodCx0aGlzLm5vZGUpfX0pO3ZhciBiPSJhYmNkZWYiLnNwbGl0KCIiKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdC5DdXN0b21FdmVudCl7dmFyIHk9ZnVuY3Rpb24odCxpKXtpPWl8fHtidWJibGVzOiExLGNhbmNlbGFibGU6ITEsZGV0YWlsOnZvaWQgMH07dmFyIHM9ZS5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKTtyZXR1cm4gcy5pbml0Q3VzdG9tRXZlbnQodCxpLmJ1YmJsZXMsaS5jYW5jZWxhYmxlLGkuZGV0YWlsKSxzfTt5LnByb3RvdHlwZT10LkV2ZW50LnByb3RvdHlwZSxpLkN1c3RvbUV2ZW50PXl9ZWxzZSBpLkN1c3RvbUV2ZW50PXQuQ3VzdG9tRXZlbnQ7cmV0dXJuIGl9LHZvaWQgMCE9PShzPWZ1bmN0aW9uKCl7cmV0dXJuIE50KHp0LHp0LmRvY3VtZW50KX0uY2FsbChlLGksZSx0KSkmJih0LmV4cG9ydHM9cyksZnVuY3Rpb24oKXtTVkcuRmlsdGVyPVNWRy5pbnZlbnQoe2NyZWF0ZToiZmlsdGVyIixpbmhlcml0OlNWRy5QYXJlbnQsZXh0ZW5kOntzb3VyY2U6IlNvdXJjZUdyYXBoaWMiLHNvdXJjZUFscGhhOiJTb3VyY2VBbHBoYSIsYmFja2dyb3VuZDoiQmFja2dyb3VuZEltYWdlIixiYWNrZ3JvdW5kQWxwaGE6IkJhY2tncm91bmRBbHBoYSIsZmlsbDoiRmlsbFBhaW50IixzdHJva2U6IlN0cm9rZVBhaW50IixhdXRvU2V0SW46ITAscHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWRkKHQsZSksIXQuYXR0cigiaW4iKSYmdGhpcy5hdXRvU2V0SW4mJnQuYXR0cigiaW4iLHRoaXMuc291cmNlKSx0LmF0dHIoInJlc3VsdCIpfHx0LmF0dHIoInJlc3VsdCIsdCksdH0sYmxlbmQ6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkJsZW5kRWZmZWN0KHQsZSxpKSl9LGNvbG9yTWF0cml4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29sb3JNYXRyaXhFZmZlY3QodCxlKSl9LGNvbnZvbHZlTWF0cml4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbnZvbHZlTWF0cml4RWZmZWN0KHQpKX0sY29tcG9uZW50VHJhbnNmZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29tcG9uZW50VHJhbnNmZXJFZmZlY3QodCkpfSxjb21wb3NpdGU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbXBvc2l0ZUVmZmVjdCh0LGUsaSkpfSxmbG9vZDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkZsb29kRWZmZWN0KHQsZSkpfSxvZmZzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5PZmZzZXRFZmZlY3QodCxlKSl9LGltYWdlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkltYWdlRWZmZWN0KHQpKX0sbWVyZ2U6ZnVuY3Rpb24oKXt2YXIgdD1bdm9pZCAwXTtmb3IodmFyIGUgaW4gYXJndW1lbnRzKXQucHVzaChhcmd1bWVudHNbZV0pO3JldHVybiB0aGlzLnB1dChuZXcoU1ZHLk1lcmdlRWZmZWN0LmJpbmQuYXBwbHkoU1ZHLk1lcmdlRWZmZWN0LHQpKSl9LGdhdXNzaWFuQmx1cjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkdhdXNzaWFuQmx1ckVmZmVjdCh0LGUpKX0sbW9ycGhvbG9neTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLk1vcnBob2xvZ3lFZmZlY3QodCxlKSl9LGRpZmZ1c2VMaWdodGluZzpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuRGlmZnVzZUxpZ2h0aW5nRWZmZWN0KHQsZSxpKSl9LGRpc3BsYWNlbWVudE1hcDpmdW5jdGlvbih0LGUsaSxzLGEpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkRpc3BsYWNlbWVudE1hcEVmZmVjdCh0LGUsaSxzLGEpKX0sc3BlY3VsYXJMaWdodGluZzpmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5TcGVjdWxhckxpZ2h0aW5nRWZmZWN0KHQsZSxpLHMpKX0sdGlsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLlRpbGVFZmZlY3QpfSx0dXJidWxlbmNlOmZ1bmN0aW9uKHQsZSxpLHMsYSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuVHVyYnVsZW5jZUVmZmVjdCh0LGUsaSxzLGEpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idXJsKCMiK3RoaXMuYXR0cigiaWQiKSsiKSJ9fX0pLFNWRy5leHRlbmQoU1ZHLkRlZnMse2ZpbHRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnB1dChuZXcgU1ZHLkZpbHRlcik7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY2FsbChlLGUpLGV9fSksU1ZHLmV4dGVuZChTVkcuQ29udGFpbmVyLHtmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVmcygpLmZpbHRlcih0KX19KSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LFNWRy5HLFNWRy5OZXN0ZWQse2ZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXJlcj10IGluc3RhbmNlb2YgU1ZHLkVsZW1lbnQ/dDp0aGlzLmRvYygpLmZpbHRlcih0KSx0aGlzLmRvYygpJiZ0aGlzLmZpbHRlcmVyLmRvYygpIT09dGhpcy5kb2MoKSYmdGhpcy5kb2MoKS5kZWZzKCkuYWRkKHRoaXMuZmlsdGVyZXIpLHRoaXMuYXR0cigiZmlsdGVyIix0aGlzLmZpbHRlcmVyKSx0aGlzLmZpbHRlcmVyfSx1bmZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXJlciYmITA9PT10JiZ0aGlzLmZpbHRlcmVyLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLmZpbHRlcmVyLHRoaXMuYXR0cigiZmlsdGVyIixudWxsKX19KSxTVkcuRWZmZWN0PVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzKX0saW5oZXJpdDpTVkcuRWxlbWVudCxleHRlbmQ6e2luOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc2VsZWN0KCdbcmVzdWx0PSInK3RoaXMuYXR0cigiaW4iKSsnIl0nKS5nZXQoMCl8fHRoaXMuYXR0cigiaW4iKTp0aGlzLmF0dHIoImluIix0KX0scmVzdWx0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cigicmVzdWx0Iik6dGhpcy5hdHRyKCJyZXN1bHQiLHQpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlc3VsdCgpfX19KSxTVkcuUGFyZW50RWZmZWN0PVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzKX0saW5oZXJpdDpTVkcuUGFyZW50LGV4dGVuZDp7aW46ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5zZWxlY3QoJ1tyZXN1bHQ9IicrdGhpcy5hdHRyKCJpbiIpKyciXScpLmdldCgwKXx8dGhpcy5hdHRyKCJpbiIpOnRoaXMuYXR0cigiaW4iLHQpfSxyZXN1bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKCJyZXN1bHQiKTp0aGlzLmF0dHIoInJlc3VsdCIsdCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzdWx0KCl9fX0pO3ZhciB0PXtibGVuZDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmJsZW5kKHRoaXMsdCxlKX0sY29sb3JNYXRyaXg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5jb2xvck1hdHJpeCh0LGUpLmluKHRoaXMpfSxjb252b2x2ZU1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5jb252b2x2ZU1hdHJpeCh0KS5pbih0aGlzKX0sY29tcG9uZW50VHJhbnNmZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29tcG9uZW50VHJhbnNmZXIodCkuaW4odGhpcyl9LGNvbXBvc2l0ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbXBvc2l0ZSh0aGlzLHQsZSl9LGZsb29kOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuZmxvb2QodCxlKX0sb2Zmc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkub2Zmc2V0KHQsZSkuaW4odGhpcyl9LGltYWdlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmltYWdlKHQpfSxtZXJnZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLm1lcmdlLmFwcGx5KHRoaXMucGFyZW50KCksW3RoaXNdLmNvbmNhdChhcmd1bWVudHMpKX0sZ2F1c3NpYW5CbHVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuZ2F1c3NpYW5CbHVyKHQsZSkuaW4odGhpcyl9LG1vcnBob2xvZ3k6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5tb3JwaG9sb2d5KHQsZSkuaW4odGhpcyl9LGRpZmZ1c2VMaWdodGluZzpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuZGlmZnVzZUxpZ2h0aW5nKHQsZSxpKS5pbih0aGlzKX0sZGlzcGxhY2VtZW50TWFwOmZ1bmN0aW9uKHQsZSxpLHMpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmRpc3BsYWNlbWVudE1hcCh0aGlzLHQsZSxpLHMpfSxzcGVjdWxhckxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpLHMpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNwZWN1bGFyTGlnaHRpbmcodCxlLGkscykuaW4odGhpcyl9LHRpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS50aWxlKCkuaW4odGhpcyl9LHR1cmJ1bGVuY2U6ZnVuY3Rpb24odCxlLGkscyxhKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS50dXJidWxlbmNlKHQsZSxpLHMsYSkuaW4odGhpcyl9fTtTVkcuZXh0ZW5kKFNWRy5FZmZlY3QsdCksU1ZHLmV4dGVuZChTVkcuUGFyZW50RWZmZWN0LHQpLFNWRy5DaGlsZEVmZmVjdD1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9LGluaGVyaXQ6U1ZHLkVsZW1lbnQsZXh0ZW5kOntpbjpmdW5jdGlvbih0KXt0aGlzLmF0dHIoImluIix0KX19fSk7dmFyIGU9e2JsZW5kOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe2luOnQsaW4yOmUsbW9kZTppfHwibm9ybWFsIn0pfSxjb2xvck1hdHJpeDpmdW5jdGlvbih0LGUpeyJtYXRyaXgiPT10JiYoZT1hKGUpKSx0aGlzLmF0dHIoe3R5cGU6dCx2YWx1ZXM6dm9pZCAwPT09ZT9udWxsOmV9KX0sY29udm9sdmVNYXRyaXg6ZnVuY3Rpb24odCl7dD1hKHQpLHRoaXMuYXR0cih7b3JkZXI6TWF0aC5zcXJ0KHQuc3BsaXQoIiAiKS5sZW5ndGgpLGtlcm5lbE1hdHJpeDp0fSl9LGNvbXBvc2l0ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5hdHRyKHtpbjp0LGluMjplLG9wZXJhdG9yOml9KX0sZmxvb2Q6ZnVuY3Rpb24odCxlKXt0aGlzLmF0dHIoImZsb29kLWNvbG9yIix0KSxudWxsIT1lJiZ0aGlzLmF0dHIoImZsb29kLW9wYWNpdHkiLGUpfSxvZmZzZXQ6ZnVuY3Rpb24odCxlKXt0aGlzLmF0dHIoe2R4OnQsZHk6ZX0pfSxpbWFnZTpmdW5jdGlvbih0KXt0aGlzLmF0dHIoImhyZWYiLHQsU1ZHLnhsaW5rKX0sZGlzcGxhY2VtZW50TWFwOmZ1bmN0aW9uKHQsZSxpLHMsYSl7dGhpcy5hdHRyKHtpbjp0LGluMjplLHNjYWxlOmkseENoYW5uZWxTZWxlY3RvcjpzLHlDaGFubmVsU2VsZWN0b3I6YX0pfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24odCxlKXtudWxsIT10fHxudWxsIT1lP3RoaXMuYXR0cigic3RkRGV2aWF0aW9uIixuKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKTp0aGlzLmF0dHIoInN0ZERldmlhdGlvbiIsIjAgMCIpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKHtvcGVyYXRvcjp0LHJhZGl1czplfSl9LHRpbGU6ZnVuY3Rpb24oKXt9LHR1cmJ1bGVuY2U6ZnVuY3Rpb24odCxlLGkscyxhKXt0aGlzLmF0dHIoe251bU9jdGF2ZXM6ZSxzZWVkOmksc3RpdGNoVGlsZXM6cyxiYXNlRnJlcXVlbmN5OnQsdHlwZTphfSl9fSxpPXttZXJnZTpmdW5jdGlvbigpe3ZhciB0O2lmKGFyZ3VtZW50c1swXWluc3RhbmNlb2YgU1ZHLlNldCl7dmFyIGU9dGhpczthcmd1bWVudHNbMF0uZWFjaCgoZnVuY3Rpb24odCl7dGhpcyBpbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/ZS5wdXQodGhpcyk6KHRoaXMgaW5zdGFuY2VvZiBTVkcuRWZmZWN0fHx0aGlzIGluc3RhbmNlb2YgU1ZHLlBhcmVudEVmZmVjdCkmJmUucHV0KG5ldyBTVkcuTWVyZ2VOb2RlKHRoaXMpKX0pKX1lbHNle3Q9QXJyYXkuaXNBcnJheShhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspdFtpXWluc3RhbmNlb2YgU1ZHLk1lcmdlTm9kZT90aGlzLnB1dCh0W2ldKTp0aGlzLnB1dChuZXcgU1ZHLk1lcmdlTm9kZSh0W2ldKSl9fSxjb21wb25lbnRUcmFuc2ZlcjpmdW5jdGlvbih0KXtpZih0aGlzLnJnYj1uZXcgU1ZHLlNldCxbInIiLCJnIiwiYiIsImEiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXNbdF09bmV3KFNWR1siRnVuYyIrdC50b1VwcGVyQ2FzZSgpXSkoImlkZW50aXR5IiksdGhpcy5yZ2IuYWRkKHRoaXNbdF0pLHRoaXMubm9kZS5hcHBlbmRDaGlsZCh0aGlzW3RdLm5vZGUpfS5iaW5kKHRoaXMpKSx0KWZvcih2YXIgZSBpbiB0LnJnYiYmKFsiciIsImciLCJiIl0uZm9yRWFjaChmdW5jdGlvbihlKXt0aGlzW2VdLmF0dHIodC5yZ2IpfS5iaW5kKHRoaXMpKSxkZWxldGUgdC5yZ2IpLHQpdGhpc1tlXS5hdHRyKHRbZV0pfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkpe3RoaXMuYXR0cih7c3VyZmFjZVNjYWxlOnQsZGlmZnVzZUNvbnN0YW50OmUsa2VybmVsVW5pdExlbmd0aDppfSl9LHNwZWN1bGFyTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkscyl7dGhpcy5hdHRyKHtzdXJmYWNlU2NhbGU6dCxkaWZmdXNlQ29uc3RhbnQ6ZSxzcGVjdWxhckV4cG9uZW50Omksa2VybmVsVW5pdExlbmd0aDpzfSl9fSxzPXtkaXN0YW50TGlnaHQ6ZnVuY3Rpb24odCxlKXt0aGlzLmF0dHIoe2F6aW11dGg6dCxlbGV2YXRpb246ZX0pfSxwb2ludExpZ2h0OmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe3g6dCx5OmUsejppfSl9LHNwb3RMaWdodDpmdW5jdGlvbih0LGUsaSxzLGEsbil7dGhpcy5hdHRyKHt4OnQseTplLHo6aSxwb2ludHNBdFg6cyxwb2ludHNBdFk6YSxwb2ludHNBdFo6bn0pfSxtZXJnZU5vZGU6ZnVuY3Rpb24odCl7dGhpcy5hdHRyKCJpbiIsdCl9fTtmdW5jdGlvbiBhKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYodD1uZXcgU1ZHLkFycmF5KHQpKSx0LnRvU3RyaW5nKCkucmVwbGFjZSgvXlxzKy8sIiIpLnJlcGxhY2UoL1xzKyQvLCIiKS5yZXBsYWNlKC9ccysvZywiICIpfWZ1bmN0aW9uIG4odCl7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQ7Zm9yKHZhciBlPTAsaT10Lmxlbmd0aCxzPVtdO2U8aTtlKyspcy5wdXNoKHRbZV0pO3JldHVybiBzLmpvaW4oIiAiKX1mdW5jdGlvbiByKCl7dmFyIHQ9ZnVuY3Rpb24oKXt9O2Zvcih2YXIgZSBpbiJmdW5jdGlvbiI9PXR5cGVvZiBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSYmKHQ9YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV0sQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGFyZ3VtZW50cyxhcmd1bWVudHMubGVuZ3RoLTEsMSkpLGFyZ3VtZW50cylmb3IodmFyIGkgaW4gYXJndW1lbnRzW2VdKXQoYXJndW1lbnRzW2VdW2ldLGksYXJndW1lbnRzW2VdKX1bInIiLCJnIiwiYiIsImEiXS5mb3JFYWNoKChmdW5jdGlvbih0KXtzWyJGdW5jIit0LnRvVXBwZXJDYXNlKCldPWZ1bmN0aW9uKHQpe3N3aXRjaCh0aGlzLmF0dHIoInR5cGUiLHQpLHQpe2Nhc2UidGFibGUiOnRoaXMuYXR0cigidGFibGVWYWx1ZXMiLGFyZ3VtZW50c1sxXSk7YnJlYWs7Y2FzZSJsaW5lYXIiOnRoaXMuYXR0cigic2xvcGUiLGFyZ3VtZW50c1sxXSksdGhpcy5hdHRyKCJpbnRlcmNlcHQiLGFyZ3VtZW50c1syXSk7YnJlYWs7Y2FzZSJnYW1tYSI6dGhpcy5hdHRyKCJhbXBsaXR1ZGUiLGFyZ3VtZW50c1sxXSksdGhpcy5hdHRyKCJleHBvbmVudCIsYXJndW1lbnRzWzJdKSx0aGlzLmF0dHIoIm9mZnNldCIsYXJndW1lbnRzWzJdKX19fSkpLHIoZSwoZnVuY3Rpb24odCxlKXt2YXIgaT1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7U1ZHW2krIkVmZmVjdCJdPVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFNWRy5jcmVhdGUoImZlIitpKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5yZXN1bHQodGhpcy5hdHRyKCJpZCIpKyJPdXQiKX0saW5oZXJpdDpTVkcuRWZmZWN0LGV4dGVuZDp7fX0pfSkpLHIoaSwoZnVuY3Rpb24odCxlKXt2YXIgaT1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7U1ZHW2krIkVmZmVjdCJdPVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFNWRy5jcmVhdGUoImZlIitpKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5yZXN1bHQodGhpcy5hdHRyKCJpZCIpKyJPdXQiKX0saW5oZXJpdDpTVkcuUGFyZW50RWZmZWN0LGV4dGVuZDp7fX0pfSkpLHIocywoZnVuY3Rpb24odCxlKXt2YXIgaT1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7U1ZHW2ldPVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFNWRy5jcmVhdGUoImZlIitpKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGluaGVyaXQ6U1ZHLkNoaWxkRWZmZWN0LGV4dGVuZDp7fX0pfSkpLFNWRy5leHRlbmQoU1ZHLk1lcmdlRWZmZWN0LHtpbjpmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/dGhpcy5hZGQodCwwKTp0aGlzLmFkZChuZXcgU1ZHLk1lcmdlTm9kZSh0KSwwKSx0aGlzfX0pLFNWRy5leHRlbmQoU1ZHLkNvbXBvc2l0ZUVmZmVjdCxTVkcuQmxlbmRFZmZlY3QsU1ZHLkRpc3BsYWNlbWVudE1hcEVmZmVjdCx7aW4yOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc2VsZWN0KCdbcmVzdWx0PSInK3RoaXMuYXR0cigiaW4yIikrJyJdJykuZ2V0KDApfHx0aGlzLmF0dHIoImluMiIpOnRoaXMuYXR0cigiaW4yIix0KX19KSxTVkcuZmlsdGVyPXtzZXBpYXRvbmU6Wy4zNDMsLjY2OSwuMTE5LDAsMCwuMjQ5LC42MjYsLjEzLDAsMCwuMTcyLC4zMzQsLjExMSwwLDAsMCwwLDAsMSwwXX19LmNhbGwodm9pZCAwKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxhLG4scixvLGwsYyl7Zm9yKHZhciBoPXQuc2xpY2UoYSxufHxjKSxkPXIuc2xpY2UobyxsfHxjKSx1PTAscD17cG9zOlswLDBdLHN0YXJ0OlswLDBdfSxnPXtwb3M6WzAsMF0sc3RhcnQ6WzAsMF19O2hbdV09ZS5jYWxsKHAsaFt1XSksZFt1XT1lLmNhbGwoZyxkW3VdKSxoW3VdWzBdIT1kW3VdWzBdfHwiTSI9PWhbdV1bMF18fCJBIj09aFt1XVswXSYmKGhbdV1bNF0hPWRbdV1bNF18fGhbdV1bNV0hPWRbdV1bNV0pPyhBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGgsW3UsMV0uY29uY2F0KHMuY2FsbChwLGhbdV0pKSksQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShkLFt1LDFdLmNvbmNhdChzLmNhbGwoZyxkW3VdKSkpKTooaFt1XT1pLmNhbGwocCxoW3VdKSxkW3VdPWkuY2FsbChnLGRbdV0pKSwrK3UhPWgubGVuZ3RofHx1IT1kLmxlbmd0aDspdT09aC5sZW5ndGgmJmgucHVzaChbIkMiLHAucG9zWzBdLHAucG9zWzFdLHAucG9zWzBdLHAucG9zWzFdLHAucG9zWzBdLHAucG9zWzFdXSksdT09ZC5sZW5ndGgmJmQucHVzaChbIkMiLGcucG9zWzBdLGcucG9zWzFdLGcucG9zWzBdLGcucG9zWzFdLGcucG9zWzBdLGcucG9zWzFdXSk7cmV0dXJue3N0YXJ0OmgsZGVzdDpkfX1mdW5jdGlvbiBlKHQpe3N3aXRjaCh0WzBdKXtjYXNlInoiOmNhc2UiWiI6dFswXT0iTCIsdFsxXT10aGlzLnN0YXJ0WzBdLHRbMl09dGhpcy5zdGFydFsxXTticmVhaztjYXNlIkgiOnRbMF09IkwiLHRbMl09dGhpcy5wb3NbMV07YnJlYWs7Y2FzZSJWIjp0WzBdPSJMIix0WzJdPXRbMV0sdFsxXT10aGlzLnBvc1swXTticmVhaztjYXNlIlQiOnRbMF09IlEiLHRbM109dFsxXSx0WzRdPXRbMl0sdFsxXT10aGlzLnJlZmxlY3Rpb25bMV0sdFsyXT10aGlzLnJlZmxlY3Rpb25bMF07YnJlYWs7Y2FzZSJTIjp0WzBdPSJDIix0WzZdPXRbNF0sdFs1XT10WzNdLHRbNF09dFsyXSx0WzNdPXRbMV0sdFsyXT10aGlzLnJlZmxlY3Rpb25bMV0sdFsxXT10aGlzLnJlZmxlY3Rpb25bMF19cmV0dXJuIHR9ZnVuY3Rpb24gaSh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gdGhpcy5wb3M9W3RbZS0yXSx0W2UtMV1dLC0xIT0iU0NRVCIuaW5kZXhPZih0WzBdKSYmKHRoaXMucmVmbGVjdGlvbj1bMip0aGlzLnBvc1swXS10W2UtNF0sMip0aGlzLnBvc1sxXS10W2UtM11dKSx0fWZ1bmN0aW9uIHModCl7dmFyIGU9W3RdO3N3aXRjaCh0WzBdKXtjYXNlIk0iOnJldHVybiB0aGlzLnBvcz10aGlzLnN0YXJ0PVt0WzFdLHRbMl1dLGU7Y2FzZSJMIjp0WzVdPXRbM109dFsxXSx0WzZdPXRbNF09dFsyXSx0WzFdPXRoaXMucG9zWzBdLHRbMl09dGhpcy5wb3NbMV07YnJlYWs7Y2FzZSJRIjp0WzZdPXRbNF0sdFs1XT10WzNdLHRbNF09MSp0WzRdLzMrMip0WzJdLzMsdFszXT0xKnRbM10vMysyKnRbMV0vMyx0WzJdPTEqdGhpcy5wb3NbMV0vMysyKnRbMl0vMyx0WzFdPTEqdGhpcy5wb3NbMF0vMysyKnRbMV0vMzticmVhaztjYXNlIkEiOmU9ZnVuY3Rpb24odCxlKXt2YXIgaSxzLGEsbixyLG8sbCxjLGgsZCx1LHAsZyxmLG0sdix4LGIseSx3LGssUyxDLEEsRSxULEw9TWF0aC5hYnMoZVsxXSksUD1NYXRoLmFicyhlWzJdKSxNPWVbM10lMzYwLE89ZVs0XSxJPWVbNV0sRj1lWzZdLEQ9ZVs3XSx6PW5ldyBTVkcuUG9pbnQodCksTj1uZXcgU1ZHLlBvaW50KEYsRCksUj1bXTtpZigwPT09THx8MD09PVB8fHoueD09PU4ueCYmei55PT09Ti55KXJldHVybltbIkMiLHoueCx6LnksTi54LE4ueSxOLngsTi55XV07Zm9yKChzPShpPW5ldyBTVkcuUG9pbnQoKHoueC1OLngpLzIsKHoueS1OLnkpLzIpLnRyYW5zZm9ybSgobmV3IFNWRy5NYXRyaXgpLnJvdGF0ZShNKSkpLngqaS54LyhMKkwpK2kueSppLnkvKFAqUCkpPjEmJihMKj1zPU1hdGguc3FydChzKSxQKj1zKSxhPShuZXcgU1ZHLk1hdHJpeCkucm90YXRlKE0pLnNjYWxlKDEvTCwxL1ApLnJvdGF0ZSgtTSksej16LnRyYW5zZm9ybShhKSxvPShuPVsoTj1OLnRyYW5zZm9ybShhKSkueC16LngsTi55LXoueV0pWzBdKm5bMF0rblsxXSpuWzFdLHI9TWF0aC5zcXJ0KG8pLG5bMF0vPXIsblsxXS89cixsPW88ND9NYXRoLnNxcnQoMS1vLzQpOjAsTz09PUkmJihsKj0tMSksYz1uZXcgU1ZHLlBvaW50KChOLngrei54KS8yK2wqLW5bMV0sKE4ueSt6LnkpLzIrbCpuWzBdKSxoPW5ldyBTVkcuUG9pbnQoei54LWMueCx6LnktYy55KSxkPW5ldyBTVkcuUG9pbnQoTi54LWMueCxOLnktYy55KSx1PU1hdGguYWNvcyhoLngvTWF0aC5zcXJ0KGgueCpoLngraC55KmgueSkpLGgueTwwJiYodSo9LTEpLHA9TWF0aC5hY29zKGQueC9NYXRoLnNxcnQoZC54KmQueCtkLnkqZC55KSksZC55PDAmJihwKj0tMSksSSYmdT5wJiYocCs9MipNYXRoLlBJKSwhSSYmdTxwJiYocC09MipNYXRoLlBJKSx2PVtdLHg9dSxnPShwLXUpLyhmPU1hdGguY2VpbCgyKk1hdGguYWJzKHUtcCkvTWF0aC5QSSkpLG09NCpNYXRoLnRhbihnLzQpLzMsaz0wO2s8PWY7aysrKXk9TWF0aC5jb3MoeCksYj1NYXRoLnNpbih4KSx3PW5ldyBTVkcuUG9pbnQoYy54K3ksYy55K2IpLHZba109W25ldyBTVkcuUG9pbnQody54K20qYix3LnktbSp5KSx3LG5ldyBTVkcuUG9pbnQody54LW0qYix3LnkrbSp5KV0seCs9Zztmb3IodlswXVswXT12WzBdWzFdLmNsb25lKCksdlt2Lmxlbmd0aC0xXVsyXT12W3YubGVuZ3RoLTFdWzFdLmNsb25lKCksYT0obmV3IFNWRy5NYXRyaXgpLnJvdGF0ZShNKS5zY2FsZShMLFApLnJvdGF0ZSgtTSksaz0wLFM9di5sZW5ndGg7azxTO2srKyl2W2tdWzBdPXZba11bMF0udHJhbnNmb3JtKGEpLHZba11bMV09dltrXVsxXS50cmFuc2Zvcm0oYSksdltrXVsyXT12W2tdWzJdLnRyYW5zZm9ybShhKTtmb3Ioaz0xLFM9di5sZW5ndGg7azxTO2srKylDPSh3PXZbay0xXVsyXSkueCxBPXcueSxFPSh3PXZba11bMF0pLngsVD13LnksRj0odz12W2tdWzFdKS54LEQ9dy55LFIucHVzaChbIkMiLEMsQSxFLFQsRixEXSk7cmV0dXJuIFJ9KHRoaXMucG9zLHQpLHQ9ZVswXX1yZXR1cm4gdFswXT0iQyIsdGhpcy5wb3M9W3RbNV0sdFs2XV0sdGhpcy5yZWZsZWN0aW9uPVsyKnRbNV0tdFszXSwyKnRbNl0tdFs0XV0sZX1mdW5jdGlvbiBhKHQsZSl7aWYoITE9PT1lKXJldHVybiExO2Zvcih2YXIgaT1lLHM9dC5sZW5ndGg7aTxzOysraSlpZigiTSI9PXRbaV1bMF0pcmV0dXJuIGk7cmV0dXJuITF9U1ZHLmV4dGVuZChTVkcuUGF0aEFycmF5LHttb3JwaDpmdW5jdGlvbihlKXtmb3IodmFyIGk9dGhpcy52YWx1ZSxzPXRoaXMucGFyc2UoZSksbj0wLHI9MCxvPSExLGw9ITE7ITEhPT1ufHwhMSE9PXI7KXt2YXIgYztvPWEoaSwhMSE9PW4mJm4rMSksbD1hKHMsITEhPT1yJiZyKzEpLCExPT09biYmKG49MD09KGM9bmV3IFNWRy5QYXRoQXJyYXkoaC5zdGFydCkuYmJveCgpKS5oZWlnaHR8fDA9PWMud2lkdGg/aS5wdXNoKGlbMF0pLTE6aS5wdXNoKFsiTSIsYy54K2Mud2lkdGgvMixjLnkrYy5oZWlnaHQvMl0pLTEpLCExPT09ciYmKHI9MD09KGM9bmV3IFNWRy5QYXRoQXJyYXkoaC5kZXN0KS5iYm94KCkpLmhlaWdodHx8MD09Yy53aWR0aD9zLnB1c2goc1swXSktMTpzLnB1c2goWyJNIixjLngrYy53aWR0aC8yLGMueStjLmhlaWdodC8yXSktMSk7dmFyIGg9dChpLG4sbyxzLHIsbCk7aT1pLnNsaWNlKDAsbikuY29uY2F0KGguc3RhcnQsITE9PT1vP1tdOmkuc2xpY2UobykpLHM9cy5zbGljZSgwLHIpLmNvbmNhdChoLmRlc3QsITE9PT1sP1tdOnMuc2xpY2UobCkpLG49ITEhPT1vJiZuK2guc3RhcnQubGVuZ3RoLHI9ITEhPT1sJiZyK2guZGVzdC5sZW5ndGh9cmV0dXJuIHRoaXMudmFsdWU9aSx0aGlzLmRlc3RpbmF0aW9uPW5ldyBTVkcuUGF0aEFycmF5LHRoaXMuZGVzdGluYXRpb24udmFsdWU9cyx0aGlzfX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0LnJlbWVtYmVyKCJfZHJhZ2dhYmxlIix0aGlzKSx0aGlzLmVsPXR9dC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7dGhpcy5jb25zdHJhaW50PXQsdGhpcy52YWx1ZT1lLHRoaXMuZWwub24oIm1vdXNlZG93bi5kcmFnIiwoZnVuY3Rpb24odCl7aS5zdGFydCh0KX0pKSx0aGlzLmVsLm9uKCJ0b3VjaHN0YXJ0LmRyYWciLChmdW5jdGlvbih0KXtpLnN0YXJ0KHQpfSkpfSx0LnByb3RvdHlwZS50cmFuc2Zvcm1Qb2ludD1mdW5jdGlvbih0LGUpe3ZhciBpPSh0PXR8fHdpbmRvdy5ldmVudCkuY2hhbmdlZFRvdWNoZXMmJnQuY2hhbmdlZFRvdWNoZXNbMF18fHQ7cmV0dXJuIHRoaXMucC54PWkuY2xpZW50WC0oZXx8MCksdGhpcy5wLnk9aS5jbGllbnRZLHRoaXMucC5tYXRyaXhUcmFuc2Zvcm0odGhpcy5tKX0sdC5wcm90b3R5cGUuZ2V0QkJveD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWwuYmJveCgpO3JldHVybiB0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLk5lc3RlZCYmKHQ9dGhpcy5lbC5yYm94KCkpLCh0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLkd8fHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuVXNlfHx0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLk5lc3RlZCkmJih0Lng9dGhpcy5lbC54KCksdC55PXRoaXMuZWwueSgpKSx0fSx0LnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbih0KXtpZigiY2xpY2siIT10LnR5cGUmJiJtb3VzZWRvd24iIT10LnR5cGUmJiJtb3VzZW1vdmUiIT10LnR5cGV8fDE9PSh0LndoaWNofHx0LmJ1dHRvbnMpKXt2YXIgZT10aGlzO2lmKHRoaXMuZWwuZmlyZSgiYmVmb3JlZHJhZyIse2V2ZW50OnQsaGFuZGxlcjp0aGlzfSksIXRoaXMuZWwuZXZlbnQoKS5kZWZhdWx0UHJldmVudGVkKXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnBhcmVudD10aGlzLnBhcmVudHx8dGhpcy5lbC5wYXJlbnQoU1ZHLk5lc3RlZCl8fHRoaXMuZWwucGFyZW50KFNWRy5Eb2MpLHRoaXMucD10aGlzLnBhcmVudC5ub2RlLmNyZWF0ZVNWR1BvaW50KCksdGhpcy5tPXRoaXMuZWwubm9kZS5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCk7dmFyIGkscz10aGlzLmdldEJCb3goKTtpZih0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLlRleHQpc3dpdGNoKGk9dGhpcy5lbC5ub2RlLmdldENvbXB1dGVkVGV4dExlbmd0aCgpLHRoaXMuZWwuYXR0cigidGV4dC1hbmNob3IiKSl7Y2FzZSJtaWRkbGUiOmkvPTI7YnJlYWs7Y2FzZSJzdGFydCI6aT0wfXRoaXMuc3RhcnRQb2ludHM9e3BvaW50OnRoaXMudHJhbnNmb3JtUG9pbnQodCxpKSxib3g6cyx0cmFuc2Zvcm06dGhpcy5lbC50cmFuc2Zvcm0oKX0sU1ZHLm9uKHdpbmRvdywibW91c2Vtb3ZlLmRyYWciLChmdW5jdGlvbih0KXtlLmRyYWcodCl9KSksU1ZHLm9uKHdpbmRvdywidG91Y2htb3ZlLmRyYWciLChmdW5jdGlvbih0KXtlLmRyYWcodCl9KSksU1ZHLm9uKHdpbmRvdywibW91c2V1cC5kcmFnIiwoZnVuY3Rpb24odCl7ZS5lbmQodCl9KSksU1ZHLm9uKHdpbmRvdywidG91Y2hlbmQuZHJhZyIsKGZ1bmN0aW9uKHQpe2UuZW5kKHQpfSkpLHRoaXMuZWwuZmlyZSgiZHJhZ3N0YXJ0Iix7ZXZlbnQ6dCxwOnRoaXMuc3RhcnRQb2ludHMucG9pbnQsbTp0aGlzLm0saGFuZGxlcjp0aGlzfSl9fX0sdC5wcm90b3R5cGUuZHJhZz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldEJCb3goKSxpPXRoaXMudHJhbnNmb3JtUG9pbnQodCkscz10aGlzLnN0YXJ0UG9pbnRzLmJveC54K2kueC10aGlzLnN0YXJ0UG9pbnRzLnBvaW50LngsYT10aGlzLnN0YXJ0UG9pbnRzLmJveC55K2kueS10aGlzLnN0YXJ0UG9pbnRzLnBvaW50Lnksbj10aGlzLmNvbnN0cmFpbnQscj1pLngtdGhpcy5zdGFydFBvaW50cy5wb2ludC54LG89aS55LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueTtpZih0aGlzLmVsLmZpcmUoImRyYWdtb3ZlIix7ZXZlbnQ6dCxwOmksbTp0aGlzLm0saGFuZGxlcjp0aGlzfSksdGhpcy5lbC5ldmVudCgpLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIGk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4pe3ZhciBsPW4uY2FsbCh0aGlzLmVsLHMsYSx0aGlzLm0pOyJib29sZWFuIj09dHlwZW9mIGwmJihsPXt4OmwseTpsfSksITA9PT1sLng/dGhpcy5lbC54KHMpOiExIT09bC54JiZ0aGlzLmVsLngobC54KSwhMD09PWwueT90aGlzLmVsLnkoYSk6ITEhPT1sLnkmJnRoaXMuZWwueShsLnkpfWVsc2Uib2JqZWN0Ij09dHlwZW9mIG4mJihudWxsIT1uLm1pblgmJnM8bi5taW5YP3I9KHM9bi5taW5YKS10aGlzLnN0YXJ0UG9pbnRzLmJveC54Om51bGwhPW4ubWF4WCYmcz5uLm1heFgtZS53aWR0aCYmKHI9KHM9bi5tYXhYLWUud2lkdGgpLXRoaXMuc3RhcnRQb2ludHMuYm94LngpLG51bGwhPW4ubWluWSYmYTxuLm1pblk/bz0oYT1uLm1pblkpLXRoaXMuc3RhcnRQb2ludHMuYm94Lnk6bnVsbCE9bi5tYXhZJiZhPm4ubWF4WS1lLmhlaWdodCYmKG89KGE9bi5tYXhZLWUuaGVpZ2h0KS10aGlzLnN0YXJ0UG9pbnRzLmJveC55KSxudWxsIT1uLnNuYXBUb0dyaWQmJihzLT1zJW4uc25hcFRvR3JpZCxhLT1hJW4uc25hcFRvR3JpZCxyLT1yJW4uc25hcFRvR3JpZCxvLT1vJW4uc25hcFRvR3JpZCksdGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5HP3RoaXMuZWwubWF0cml4KHRoaXMuc3RhcnRQb2ludHMudHJhbnNmb3JtKS50cmFuc2Zvcm0oe3g6cix5Om99LCEwKTp0aGlzLmVsLm1vdmUocyxhKSk7cmV0dXJuIGl9LHQucHJvdG90eXBlLmVuZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRyYWcodCk7dGhpcy5lbC5maXJlKCJkcmFnZW5kIix7ZXZlbnQ6dCxwOmUsbTp0aGlzLm0saGFuZGxlcjp0aGlzfSksU1ZHLm9mZih3aW5kb3csIm1vdXNlbW92ZS5kcmFnIiksU1ZHLm9mZih3aW5kb3csInRvdWNobW92ZS5kcmFnIiksU1ZHLm9mZih3aW5kb3csIm1vdXNldXAuZHJhZyIpLFNWRy5vZmYod2luZG93LCJ0b3VjaGVuZC5kcmFnIil9LFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQse2RyYWdnYWJsZTpmdW5jdGlvbihlLGkpeyJmdW5jdGlvbiIhPXR5cGVvZiBlJiYib2JqZWN0IiE9dHlwZW9mIGV8fChpPWUsZT0hMCk7dmFyIHM9dGhpcy5yZW1lbWJlcigiX2RyYWdnYWJsZSIpfHxuZXcgdCh0aGlzKTtyZXR1cm4oZT12b2lkIDA9PT1lfHxlKT9zLmluaXQoaXx8e30sZSk6KHRoaXMub2ZmKCJtb3VzZWRvd24uZHJhZyIpLHRoaXMub2ZmKCJ0b3VjaHN0YXJ0LmRyYWciKSksdGhpc319KX0uY2FsbCh2b2lkIDApLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmVsPXQsdC5yZW1lbWJlcigiX3NlbGVjdEhhbmRsZXIiLHRoaXMpLHRoaXMucG9pbnRTZWxlY3Rpb249e2lzU2VsZWN0ZWQ6ITF9LHRoaXMucmVjdFNlbGVjdGlvbj17aXNTZWxlY3RlZDohMX0sdGhpcy5wb2ludHNMaXN0PXtsdDpbMCwwXSxydDpbIndpZHRoIiwwXSxyYjpbIndpZHRoIiwiaGVpZ2h0Il0sbGI6WzAsImhlaWdodCJdLHQ6WyJ3aWR0aCIsMF0scjpbIndpZHRoIiwiaGVpZ2h0Il0sYjpbIndpZHRoIiwiaGVpZ2h0Il0sbDpbMCwiaGVpZ2h0Il19LHRoaXMucG9pbnRDb29yZD1mdW5jdGlvbih0LGUsaSl7dmFyIHM9InN0cmluZyIhPXR5cGVvZiB0P3Q6ZVt0XTtyZXR1cm4gaT9zLzI6c30sdGhpcy5wb2ludENvb3Jkcz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMucG9pbnRzTGlzdFt0XTtyZXR1cm57eDp0aGlzLnBvaW50Q29vcmQoaVswXSxlLCJ0Ij09PXR8fCJiIj09PXQpLHk6dGhpcy5wb2ludENvb3JkKGlbMV0sZSwiciI9PT10fHwibCI9PT10KX19fXQucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmVsLmJib3goKTt0aGlzLm9wdGlvbnM9e307dmFyIHM9dGhpcy5lbC5zZWxlY3RpemUuZGVmYXVsdHMucG9pbnRzO2Zvcih2YXIgYSBpbiB0aGlzLmVsLnNlbGVjdGl6ZS5kZWZhdWx0cyl0aGlzLm9wdGlvbnNbYV09dGhpcy5lbC5zZWxlY3RpemUuZGVmYXVsdHNbYV0sdm9pZCAwIT09ZVthXSYmKHRoaXMub3B0aW9uc1thXT1lW2FdKTt2YXIgbj1bInBvaW50cyIsInBvaW50c0V4Y2x1ZGUiXTtmb3IodmFyIGEgaW4gbil7dmFyIHI9dGhpcy5vcHRpb25zW25bYV1dOyJzdHJpbmciPT10eXBlb2Ygcj9yPXIubGVuZ3RoPjA/ci5zcGxpdCgvXHMqLFxzKi9pKTpbXToiYm9vbGVhbiI9PXR5cGVvZiByJiYicG9pbnRzIj09PW5bYV0mJihyPXI/czpbXSksdGhpcy5vcHRpb25zW25bYV1dPXJ9dGhpcy5vcHRpb25zLnBvaW50cz1bcyx0aGlzLm9wdGlvbnMucG9pbnRzXS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gZS5pbmRleE9mKHQpPi0xfSkpfSkpLHRoaXMub3B0aW9ucy5wb2ludHM9W3RoaXMub3B0aW9ucy5wb2ludHMsdGhpcy5vcHRpb25zLnBvaW50c0V4Y2x1ZGVdLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmluZGV4T2YodCk8MH0pKX0pKSx0aGlzLnBhcmVudD10aGlzLmVsLnBhcmVudCgpLHRoaXMubmVzdGVkPXRoaXMubmVzdGVkfHx0aGlzLnBhcmVudC5ncm91cCgpLHRoaXMubmVzdGVkLm1hdHJpeChuZXcgU1ZHLk1hdHJpeCh0aGlzLmVsKS50cmFuc2xhdGUoaS54LGkueSkpLHRoaXMub3B0aW9ucy5kZWVwU2VsZWN0JiYtMSE9PVsibGluZSIsInBvbHlsaW5lIiwicG9seWdvbiJdLmluZGV4T2YodGhpcy5lbC50eXBlKT90aGlzLnNlbGVjdFBvaW50cyh0KTp0aGlzLnNlbGVjdFJlY3QodCksdGhpcy5vYnNlcnZlKCksdGhpcy5jbGVhbnVwKCl9LHQucHJvdG90eXBlLnNlbGVjdFBvaW50cz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkPXQsdGhpcy5wb2ludFNlbGVjdGlvbi5zZXR8fCh0aGlzLnBvaW50U2VsZWN0aW9uLnNldD10aGlzLnBhcmVudC5zZXQoKSx0aGlzLmRyYXdQb2ludHMoKSksdGhpc30sdC5wcm90b3R5cGUuZ2V0UG9pbnRBcnJheT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWwuYmJveCgpO3JldHVybiB0aGlzLmVsLmFycmF5KCkudmFsdWVPZigpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuW2VbMF0tdC54LGVbMV0tdC55XX0pKX0sdC5wcm90b3R5cGUuZHJhd1BvaW50cz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9dGhpcy5nZXRQb2ludEFycmF5KCksaT0wLHM9ZS5sZW5ndGg7aTxzOysraSl7dmFyIGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGkpeyhpPWl8fHdpbmRvdy5ldmVudCkucHJldmVudERlZmF1bHQ/aS5wcmV2ZW50RGVmYXVsdCgpOmkucmV0dXJuVmFsdWU9ITEsaS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgcz1pLnBhZ2VYfHxpLnRvdWNoZXNbMF0ucGFnZVgsYT1pLnBhZ2VZfHxpLnRvdWNoZXNbMF0ucGFnZVk7dC5lbC5maXJlKCJwb2ludCIse3g6cyx5OmEsaTplLGV2ZW50Oml9KX19KGkpLG49dGhpcy5kcmF3UG9pbnQoZVtpXVswXSxlW2ldWzFdKS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NQb2ludHMpLmFkZENsYXNzKHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cysiX3BvaW50Iikub24oInRvdWNoc3RhcnQiLGEpLm9uKCJtb3VzZWRvd24iLGEpO3RoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmFkZChuKX19LHQucHJvdG90eXBlLmRyYXdQb2ludD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMub3B0aW9ucy5wb2ludFR5cGU7c3dpdGNoKGkpe2Nhc2UiY2lyY2xlIjpyZXR1cm4gdGhpcy5kcmF3Q2lyY2xlKHQsZSk7Y2FzZSJyZWN0IjpyZXR1cm4gdGhpcy5kcmF3UmVjdCh0LGUpO2RlZmF1bHQ6aWYoImZ1bmN0aW9uIj09dHlwZW9mIGkpcmV0dXJuIGkuY2FsbCh0aGlzLHQsZSk7dGhyb3cgbmV3IEVycm9yKCJVbmtub3duICIraSsiIHBvaW50IHR5cGUhIil9fSx0LnByb3RvdHlwZS5kcmF3Q2lyY2xlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubmVzdGVkLmNpcmNsZSh0aGlzLm9wdGlvbnMucG9pbnRTaXplKS5jZW50ZXIodCxlKX0sdC5wcm90b3R5cGUuZHJhd1JlY3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5uZXN0ZWQucmVjdCh0aGlzLm9wdGlvbnMucG9pbnRTaXplLHRoaXMub3B0aW9ucy5wb2ludFNpemUpLmNlbnRlcih0LGUpfSx0LnByb3RvdHlwZS51cGRhdGVQb2ludFNlbGVjdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0UG9pbnRBcnJheSgpO3RoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmVhY2goKGZ1bmN0aW9uKGUpe3RoaXMuY3goKT09PXRbZV1bMF0mJnRoaXMuY3koKT09PXRbZV1bMV18fHRoaXMuY2VudGVyKHRbZV1bMF0sdFtlXVsxXSl9KSl9LHQucHJvdG90eXBlLnVwZGF0ZVJlY3RTZWxlY3Rpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5lbC5iYm94KCk7aWYodGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoMCkuYXR0cih7d2lkdGg6ZS53aWR0aCxoZWlnaHQ6ZS5oZWlnaHR9KSx0aGlzLm9wdGlvbnMucG9pbnRzLmxlbmd0aCYmdGhpcy5vcHRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKGkscyl7dmFyIGE9dC5wb2ludENvb3JkcyhpLGUpO3QucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KHMrMSkuY2VudGVyKGEueCxhLnkpfSkpLHRoaXMub3B0aW9ucy5yb3RhdGlvblBvaW50KXt2YXIgaT10aGlzLnJlY3RTZWxlY3Rpb24uc2V0Lmxlbmd0aCgpO3RoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KGktMSkuY2VudGVyKGUud2lkdGgvMiwyMCl9fSx0LnByb3RvdHlwZS5zZWxlY3RSZWN0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLmVsLmJib3goKTtmdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbihpKXsoaT1pfHx3aW5kb3cuZXZlbnQpLnByZXZlbnREZWZhdWx0P2kucHJldmVudERlZmF1bHQoKTppLnJldHVyblZhbHVlPSExLGkuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIHM9aS5wYWdlWHx8aS50b3VjaGVzWzBdLnBhZ2VYLGE9aS5wYWdlWXx8aS50b3VjaGVzWzBdLnBhZ2VZO2UuZWwuZmlyZSh0LHt4OnMseTphLGV2ZW50Oml9KX19aWYodGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQ9dCx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0PXRoaXMucmVjdFNlbGVjdGlvbi5zZXR8fHRoaXMucGFyZW50LnNldCgpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDApfHx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmFkZCh0aGlzLm5lc3RlZC5yZWN0KGkud2lkdGgsaS5oZWlnaHQpLmFkZENsYXNzKHRoaXMub3B0aW9ucy5jbGFzc1JlY3QpKSx0aGlzLm9wdGlvbnMucG9pbnRzLmxlbmd0aCYmdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5sZW5ndGgoKTwyJiYodGhpcy5vcHRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKHQsYSl7dmFyIG49ZS5wb2ludENvb3Jkcyh0LGkpLHI9ZS5kcmF3UG9pbnQobi54LG4ueSkuYXR0cigiY2xhc3MiLGUub3B0aW9ucy5jbGFzc1BvaW50cysiXyIrdCkub24oIm1vdXNlZG93biIscyh0KSkub24oInRvdWNoc3RhcnQiLHModCkpO2UucmVjdFNlbGVjdGlvbi5zZXQuYWRkKHIpfSkpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLmFkZENsYXNzKGUub3B0aW9ucy5jbGFzc1BvaW50cyl9KSkpLHRoaXMub3B0aW9ucy5yb3RhdGlvblBvaW50JiYodGhpcy5vcHRpb25zLnBvaW50cyYmIXRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDkpfHwhdGhpcy5vcHRpb25zLnBvaW50cyYmIXRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDEpKSl7dmFyIGE9ZnVuY3Rpb24odCl7KHQ9dHx8d2luZG93LmV2ZW50KS5wcmV2ZW50RGVmYXVsdD90LnByZXZlbnREZWZhdWx0KCk6dC5yZXR1cm5WYWx1ZT0hMSx0LnN0b3BQcm9wYWdhdGlvbigpO3ZhciBpPXQucGFnZVh8fHQudG91Y2hlc1swXS5wYWdlWCxzPXQucGFnZVl8fHQudG91Y2hlc1swXS5wYWdlWTtlLmVsLmZpcmUoInJvdCIse3g6aSx5OnMsZXZlbnQ6dH0pfSxuPXRoaXMuZHJhd1BvaW50KGkud2lkdGgvMiwyMCkuYXR0cigiY2xhc3MiLHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cysiX3JvdCIpLm9uKCJ0b3VjaHN0YXJ0IixhKS5vbigibW91c2Vkb3duIixhKTt0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmFkZChuKX19LHQucHJvdG90eXBlLmhhbmRsZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsLmJib3goKTt0aGlzLm5lc3RlZC5tYXRyaXgobmV3IFNWRy5NYXRyaXgodGhpcy5lbCkudHJhbnNsYXRlKHQueCx0LnkpKSx0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy51cGRhdGVSZWN0U2VsZWN0aW9uKCksdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkJiZ0aGlzLnVwZGF0ZVBvaW50U2VsZWN0aW9uKCl9LHQucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKE11dGF0aW9uT2JzZXJ2ZXIpaWYodGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCl0aGlzLm9ic2VydmVySW5zdD10aGlzLm9ic2VydmVySW5zdHx8bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uKCl7dC5oYW5kbGVyKCl9KSksdGhpcy5vYnNlcnZlckluc3Qub2JzZXJ2ZSh0aGlzLmVsLm5vZGUse2F0dHJpYnV0ZXM6ITB9KTtlbHNlIHRyeXt0aGlzLm9ic2VydmVySW5zdC5kaXNjb25uZWN0KCksZGVsZXRlIHRoaXMub2JzZXJ2ZXJJbnN0fWNhdGNoKHQpe31lbHNlIHRoaXMuZWwub2ZmKCJET01BdHRyTW9kaWZpZWQuc2VsZWN0IiksKHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkfHx0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQpJiZ0aGlzLmVsLm9uKCJET01BdHRyTW9kaWZpZWQuc2VsZWN0IiwoZnVuY3Rpb24oKXt0LmhhbmRsZXIoKX0pKX0sdC5wcm90b3R5cGUuY2xlYW51cD1mdW5jdGlvbigpeyF0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy5yZWN0U2VsZWN0aW9uLnNldCYmKHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLnJlbW92ZSgpfSkpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuY2xlYXIoKSxkZWxldGUgdGhpcy5yZWN0U2VsZWN0aW9uLnNldCksIXRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQmJih0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5lYWNoKChmdW5jdGlvbigpe3RoaXMucmVtb3ZlKCl9KSksdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuY2xlYXIoKSxkZWxldGUgdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQpLHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZHx8dGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fCh0aGlzLm5lc3RlZC5yZW1vdmUoKSxkZWxldGUgdGhpcy5uZXN0ZWQpfSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LHtzZWxlY3RpemU6ZnVuY3Rpb24oZSxpKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJihpPWUsZT0hMCksKHRoaXMucmVtZW1iZXIoIl9zZWxlY3RIYW5kbGVyIil8fG5ldyB0KHRoaXMpKS5pbml0KHZvaWQgMD09PWV8fGUsaXx8e30pLHRoaXN9fSksU1ZHLkVsZW1lbnQucHJvdG90eXBlLnNlbGVjdGl6ZS5kZWZhdWx0cz17cG9pbnRzOlsibHQiLCJydCIsInJiIiwibGIiLCJ0IiwiciIsImIiLCJsIl0scG9pbnRzRXhjbHVkZTpbXSxjbGFzc1JlY3Q6InN2Z19zZWxlY3RfYm91bmRpbmdSZWN0IixjbGFzc1BvaW50czoic3ZnX3NlbGVjdF9wb2ludHMiLHBvaW50U2l6ZTo3LHJvdGF0aW9uUG9pbnQ6ITAsZGVlcFNlbGVjdDohMSxwb2ludFR5cGU6ImNpcmNsZSJ9fSgpLGZ1bmN0aW9uKCl7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0LnJlbWVtYmVyKCJfcmVzaXplSGFuZGxlciIsdGhpcyksdGhpcy5lbD10LHRoaXMucGFyYW1ldGVycz17fSx0aGlzLmxhc3RVcGRhdGVDYWxsPW51bGwsdGhpcy5wPXQuZG9jKCkubm9kZS5jcmVhdGVTVkdQb2ludCgpfXQucHJvdG90eXBlLnRyYW5zZm9ybVBvaW50PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wLng9dC0odGhpcy5vZmZzZXQueC13aW5kb3cucGFnZVhPZmZzZXQpLHRoaXMucC55PWUtKHRoaXMub2Zmc2V0Lnktd2luZG93LnBhZ2VZT2Zmc2V0KSx0aGlzLnAubWF0cml4VHJhbnNmb3JtKGl8fHRoaXMubSl9LHQucHJvdG90eXBlLl9leHRyYWN0UG9zaXRpb249ZnVuY3Rpb24odCl7cmV0dXJue3g6bnVsbCE9dC5jbGllbnRYP3QuY2xpZW50WDp0LnRvdWNoZXNbMF0uY2xpZW50WCx5Om51bGwhPXQuY2xpZW50WT90LmNsaWVudFk6dC50b3VjaGVzWzBdLmNsaWVudFl9fSx0LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYodGhpcy5zdG9wKCksInN0b3AiIT09dCl7Zm9yKHZhciBpIGluIHRoaXMub3B0aW9ucz17fSx0aGlzLmVsLnJlc2l6ZS5kZWZhdWx0cyl0aGlzLm9wdGlvbnNbaV09dGhpcy5lbC5yZXNpemUuZGVmYXVsdHNbaV0sdm9pZCAwIT09dFtpXSYmKHRoaXMub3B0aW9uc1tpXT10W2ldKTt0aGlzLmVsLm9uKCJsdC5yZXNpemUiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oInJ0LnJlc2l6ZSIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbigicmIucmVzaXplIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKCJsYi5yZXNpemUiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oInQucmVzaXplIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKCJyLnJlc2l6ZSIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbigiYi5yZXNpemUiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oImwucmVzaXplIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKCJyb3QucmVzaXplIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKCJwb2ludC5yZXNpemUiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMudXBkYXRlKCl9fSx0LnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWwub2ZmKCJsdC5yZXNpemUiKSx0aGlzLmVsLm9mZigicnQucmVzaXplIiksdGhpcy5lbC5vZmYoInJiLnJlc2l6ZSIpLHRoaXMuZWwub2ZmKCJsYi5yZXNpemUiKSx0aGlzLmVsLm9mZigidC5yZXNpemUiKSx0aGlzLmVsLm9mZigici5yZXNpemUiKSx0aGlzLmVsLm9mZigiYi5yZXNpemUiKSx0aGlzLmVsLm9mZigibC5yZXNpemUiKSx0aGlzLmVsLm9mZigicm90LnJlc2l6ZSIpLHRoaXMuZWwub2ZmKCJwb2ludC5yZXNpemUiKSx0aGlzfSx0LnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLm09dGhpcy5lbC5ub2RlLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSx0aGlzLm9mZnNldD17eDp3aW5kb3cucGFnZVhPZmZzZXQseTp3aW5kb3cucGFnZVlPZmZzZXR9O3ZhciBpPXRoaXMuX2V4dHJhY3RQb3NpdGlvbih0LmRldGFpbC5ldmVudCk7aWYodGhpcy5wYXJhbWV0ZXJzPXt0eXBlOnRoaXMuZWwudHlwZSxwOnRoaXMudHJhbnNmb3JtUG9pbnQoaS54LGkueSkseDp0LmRldGFpbC54LHk6dC5kZXRhaWwueSxib3g6dGhpcy5lbC5iYm94KCkscm90YXRpb246dGhpcy5lbC50cmFuc2Zvcm0oKS5yb3RhdGlvbn0sInRleHQiPT09dGhpcy5lbC50eXBlJiYodGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplPXRoaXMuZWwuYXR0cigpWyJmb250LXNpemUiXSksdm9pZCAwIT09dC5kZXRhaWwuaSl7dmFyIHM9dGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKTt0aGlzLnBhcmFtZXRlcnMuaT10LmRldGFpbC5pLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkcz1bc1t0LmRldGFpbC5pXVswXSxzW3QuZGV0YWlsLmldWzFdXX1zd2l0Y2godC50eXBlKXtjYXNlImx0Ijp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0+MCYmdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXT4wKXtpZigidGV4dCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoImZvbnQtc2l6ZSIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplLWlbMF0pO2k9dGhpcy5jaGVja0FzcGVjdFJhdGlvKGkpLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkraVsxXSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlInJ0Ijp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDIpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdPjApe2lmKCJ0ZXh0Ij09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KSx2b2lkIHRoaXMuZWwuYXR0cigiZm9udC1zaXplIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUraVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSwhMCksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkraVsxXSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlInJiIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDApO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdPjApe2lmKCJ0ZXh0Ij09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KSx2b2lkIHRoaXMuZWwuYXR0cigiZm9udC1zaXplIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUraVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0pfX07YnJlYWs7Y2FzZSJsYiI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwxKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0+MCYmdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXT4wKXtpZigidGV4dCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoImZvbnQtc2l6ZSIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplLWlbMF0pO2k9dGhpcy5jaGVja0FzcGVjdFJhdGlvKGksITApLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0pfX07YnJlYWs7Y2FzZSJ0Ijp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDIpO2lmKHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LWlbMV0+MCl7aWYoInRleHQiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55K2lbMV0pLmhlaWdodCh0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdKX19O2JyZWFrO2Nhc2UiciI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0+MCl7aWYoInRleHQiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55KS53aWR0aCh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0pfX07YnJlYWs7Y2FzZSJiIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDApO2lmKHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0+MCl7aWYoInRleHQiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55KS5oZWlnaHQodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXSl9fTticmVhaztjYXNlImwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMSk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdPjApe2lmKCJ0ZXh0Ij09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54K2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KS53aWR0aCh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0pfX07YnJlYWs7Y2FzZSJyb3QiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXQrdGhpcy5wYXJhbWV0ZXJzLnAueCxzPWUrdGhpcy5wYXJhbWV0ZXJzLnAueSxhPU1hdGguYXRhbjIodGhpcy5wYXJhbWV0ZXJzLnAueS10aGlzLnBhcmFtZXRlcnMuYm94LnktdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQvMix0aGlzLnBhcmFtZXRlcnMucC54LXRoaXMucGFyYW1ldGVycy5ib3gueC10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLzIpLG49TWF0aC5hdGFuMihzLXRoaXMucGFyYW1ldGVycy5ib3gueS10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC8yLGktdGhpcy5wYXJhbWV0ZXJzLmJveC54LXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvMikscj10aGlzLnBhcmFtZXRlcnMucm90YXRpb24rMTgwKihuLWEpL01hdGguUEkrdGhpcy5vcHRpb25zLnNuYXBUb0FuZ2xlLzI7dGhpcy5lbC5jZW50ZXIodGhpcy5wYXJhbWV0ZXJzLmJveC5jeCx0aGlzLnBhcmFtZXRlcnMuYm94LmN5KS5yb3RhdGUoci1yJXRoaXMub3B0aW9ucy5zbmFwVG9BbmdsZSx0aGlzLnBhcmFtZXRlcnMuYm94LmN4LHRoaXMucGFyYW1ldGVycy5ib3guY3kpfTticmVhaztjYXNlInBvaW50Ijp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1swXSx0aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMV0pLHM9dGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKTtzW3RoaXMucGFyYW1ldGVycy5pXVswXT10aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMF0raVswXSxzW3RoaXMucGFyYW1ldGVycy5pXVsxXT10aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMV0raVsxXSx0aGlzLmVsLnBsb3Qocyl9fXRoaXMuZWwuZmlyZSgicmVzaXplc3RhcnQiLHtkeDp0aGlzLnBhcmFtZXRlcnMueCxkeTp0aGlzLnBhcmFtZXRlcnMueSxldmVudDp0fSksU1ZHLm9uKHdpbmRvdywidG91Y2htb3ZlLnJlc2l6ZSIsKGZ1bmN0aW9uKHQpe2UudXBkYXRlKHR8fHdpbmRvdy5ldmVudCl9KSksU1ZHLm9uKHdpbmRvdywidG91Y2hlbmQucmVzaXplIiwoZnVuY3Rpb24oKXtlLmRvbmUoKX0pKSxTVkcub24od2luZG93LCJtb3VzZW1vdmUucmVzaXplIiwoZnVuY3Rpb24odCl7ZS51cGRhdGUodHx8d2luZG93LmV2ZW50KX0pKSxTVkcub24od2luZG93LCJtb3VzZXVwLnJlc2l6ZSIsKGZ1bmN0aW9uKCl7ZS5kb25lKCl9KSl9LHQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXtpZih0KXt2YXIgZT10aGlzLl9leHRyYWN0UG9zaXRpb24odCksaT10aGlzLnRyYW5zZm9ybVBvaW50KGUueCxlLnkpLHM9aS54LXRoaXMucGFyYW1ldGVycy5wLngsYT1pLnktdGhpcy5wYXJhbWV0ZXJzLnAueTt0aGlzLmxhc3RVcGRhdGVDYWxsPVtzLGFdLHRoaXMuY2FsYyhzLGEpLHRoaXMuZWwuZmlyZSgicmVzaXppbmciLHtkeDpzLGR5OmEsZXZlbnQ6dH0pfWVsc2UgdGhpcy5sYXN0VXBkYXRlQ2FsbCYmdGhpcy5jYWxjKHRoaXMubGFzdFVwZGF0ZUNhbGxbMF0sdGhpcy5sYXN0VXBkYXRlQ2FsbFsxXSl9LHQucHJvdG90eXBlLmRvbmU9ZnVuY3Rpb24oKXt0aGlzLmxhc3RVcGRhdGVDYWxsPW51bGwsU1ZHLm9mZih3aW5kb3csIm1vdXNlbW92ZS5yZXNpemUiKSxTVkcub2ZmKHdpbmRvdywibW91c2V1cC5yZXNpemUiKSxTVkcub2ZmKHdpbmRvdywidG91Y2htb3ZlLnJlc2l6ZSIpLFNWRy5vZmYod2luZG93LCJ0b3VjaGVuZC5yZXNpemUiKSx0aGlzLmVsLmZpcmUoInJlc2l6ZWRvbmUiKX0sdC5wcm90b3R5cGUuc25hcFRvR3JpZD1mdW5jdGlvbih0LGUsaSxzKXt2YXIgYTtyZXR1cm4gdm9pZCAwIT09cz9hPVsoaSt0KSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCwocytlKSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZF06KGk9bnVsbD09aT8zOmksYT1bKHRoaXMucGFyYW1ldGVycy5ib3gueCt0KygxJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoKSkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWQsKHRoaXMucGFyYW1ldGVycy5ib3gueStlKygyJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCkpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkXSksdDwwJiYoYVswXS09dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLGU8MCYmKGFbMV0tPXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSx0LT1NYXRoLmFicyhhWzBdKTx0aGlzLm9wdGlvbnMuc25hcFRvR3JpZC8yP2FbMF06YVswXS0odDwwPy10aGlzLm9wdGlvbnMuc25hcFRvR3JpZDp0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksZS09TWF0aC5hYnMoYVsxXSk8dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQvMj9hWzFdOmFbMV0tKGU8MD8tdGhpcy5vcHRpb25zLnNuYXBUb0dyaWQ6dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLHRoaXMuY29uc3RyYWludFRvQm94KHQsZSxpLHMpfSx0LnByb3RvdHlwZS5jb25zdHJhaW50VG9Cb3g9ZnVuY3Rpb24odCxlLGkscyl7dmFyIGEsbixyPXRoaXMub3B0aW9ucy5jb25zdHJhaW50fHx7fTtyZXR1cm4gdm9pZCAwIT09cz8oYT1pLG49cyk6KGE9dGhpcy5wYXJhbWV0ZXJzLmJveC54KygxJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoKSxuPXRoaXMucGFyYW1ldGVycy5ib3gueSsoMiZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQpKSx2b2lkIDAhPT1yLm1pblgmJmErdDxyLm1pblgmJih0PXIubWluWC1hKSx2b2lkIDAhPT1yLm1heFgmJmErdD5yLm1heFgmJih0PXIubWF4WC1hKSx2b2lkIDAhPT1yLm1pblkmJm4rZTxyLm1pblkmJihlPXIubWluWS1uKSx2b2lkIDAhPT1yLm1heFkmJm4rZT5yLm1heFkmJihlPXIubWF4WS1uKSxbdCxlXX0sdC5wcm90b3R5cGUuY2hlY2tBc3BlY3RSYXRpbz1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLm9wdGlvbnMuc2F2ZUFzcGVjdFJhdGlvKXJldHVybiB0O3ZhciBpPXQuc2xpY2UoKSxzPXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQsYT10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK3RbMF0sbj10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC10WzFdLHI9YS9uO3JldHVybiByPHM/KGlbMV09YS9zLXRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LGUmJihpWzFdPS1pWzFdKSk6cj5zJiYoaVswXT10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLW4qcyxlJiYoaVswXT0taVswXSkpLGl9LFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQse3Jlc2l6ZTpmdW5jdGlvbihlKXtyZXR1cm4odGhpcy5yZW1lbWJlcigiX3Jlc2l6ZUhhbmRsZXIiKXx8bmV3IHQodGhpcykpLmluaXQoZXx8e30pLHRoaXN9fSksU1ZHLkVsZW1lbnQucHJvdG90eXBlLnJlc2l6ZS5kZWZhdWx0cz17c25hcFRvQW5nbGU6LjEsc25hcFRvR3JpZDoxLGNvbnN0cmFpbnQ6e30sc2F2ZUFzcGVjdFJhdGlvOiExfX0pLmNhbGwodGhpcyl9KCksdm9pZCAwPT09d2luZG93LkFwZXgmJih3aW5kb3cuQXBleD17fSk7dmFyIEh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtvKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiBjKHQsW3trZXk6ImluaXRNb2R1bGVzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY3R4LnB1YmxpY01ldGhvZHM9WyJ1cGRhdGVPcHRpb25zIiwidXBkYXRlU2VyaWVzIiwiYXBwZW5kRGF0YSIsImFwcGVuZFNlcmllcyIsInRvZ2dsZVNlcmllcyIsInNob3dTZXJpZXMiLCJoaWRlU2VyaWVzIiwic2V0TG9jYWxlIiwicmVzZXRTZXJpZXMiLCJ6b29tWCIsInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbiIsImRhdGFVUkkiLCJleHBvcnRUb0NTViIsImFkZFhheGlzQW5ub3RhdGlvbiIsImFkZFlheGlzQW5ub3RhdGlvbiIsImFkZFBvaW50QW5ub3RhdGlvbiIsImNsZWFyQW5ub3RhdGlvbnMiLCJyZW1vdmVBbm5vdGF0aW9uIiwicGFwZXIiLCJkZXN0cm95Il0sdGhpcy5jdHguZXZlbnRMaXN0PVsiY2xpY2siLCJtb3VzZWRvd24iLCJtb3VzZW1vdmUiLCJtb3VzZWxlYXZlIiwidG91Y2hzdGFydCIsInRvdWNobW92ZSIsInRvdWNobGVhdmUiLCJtb3VzZXVwIiwidG91Y2hlbmQiXSx0aGlzLmN0eC5hbmltYXRpb25zPW5ldyB5KHRoaXMuY3R4KSx0aGlzLmN0eC5heGVzPW5ldyB0dCh0aGlzLmN0eCksdGhpcy5jdHguY29yZT1uZXcgQnQodGhpcy5jdHguZWwsdGhpcy5jdHgpLHRoaXMuY3R4LmNvbmZpZz1uZXcgeih7fSksdGhpcy5jdHguZGF0YT1uZXcgVyh0aGlzLmN0eCksdGhpcy5jdHguZ3JpZD1uZXcgVSh0aGlzLmN0eCksdGhpcy5jdHguZ3JhcGhpY3M9bmV3IGsodGhpcy5jdHgpLHRoaXMuY3R4LmNvcmVVdGlscz1uZXcgUyh0aGlzLmN0eCksdGhpcy5jdHguY3Jvc3NoYWlycz1uZXcgZXQodGhpcy5jdHgpLHRoaXMuY3R4LmV2ZW50cz1uZXcgSih0aGlzLmN0eCksdGhpcy5jdHguZXhwb3J0cz1uZXcgaih0aGlzLmN0eCksdGhpcy5jdHgubG9jYWxpemF0aW9uPW5ldyBRKHRoaXMuY3R4KSx0aGlzLmN0eC5vcHRpb25zPW5ldyBQLHRoaXMuY3R4LnJlc3BvbnNpdmU9bmV3IGl0KHRoaXMuY3R4KSx0aGlzLmN0eC5zZXJpZXM9bmV3IFkodGhpcy5jdHgpLHRoaXMuY3R4LnRoZW1lPW5ldyBzdCh0aGlzLmN0eCksdGhpcy5jdHguZm9ybWF0dGVycz1uZXcgJCh0aGlzLmN0eCksdGhpcy5jdHgudGl0bGVTdWJ0aXRsZT1uZXcgYXQodGhpcy5jdHgpLHRoaXMuY3R4LmxlZ2VuZD1uZXcgZHQodGhpcy5jdHgpLHRoaXMuY3R4LnRvb2xiYXI9bmV3IHV0KHRoaXMuY3R4KSx0aGlzLmN0eC50b29sdGlwPW5ldyB5dCh0aGlzLmN0eCksdGhpcy5jdHguZGltZW5zaW9ucz1uZXcgY3QodGhpcy5jdHgpLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnM9bmV3IFh0KHRoaXMuY3R4KSx0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uPW5ldyBwdCh0aGlzLmN0eCksdGhpcy5jdHgudy5nbG9iYWxzLnRvb2x0aXA9bmV3IHl0KHRoaXMuY3R4KX19XSksdH0oKSxZdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gYyh0LFt7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pc1VwZGF0aW5nO3RoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb24mJnRoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb24uZGVzdHJveSgpLHRoaXMuY3R4LnRvb2xiYXImJnRoaXMuY3R4LnRvb2xiYXIuZGVzdHJveSgpLHRoaXMuY3R4LmFuaW1hdGlvbnM9bnVsbCx0aGlzLmN0eC5heGVzPW51bGwsdGhpcy5jdHguYW5ub3RhdGlvbnM9bnVsbCx0aGlzLmN0eC5jb3JlPW51bGwsdGhpcy5jdHguZGF0YT1udWxsLHRoaXMuY3R4LmdyaWQ9bnVsbCx0aGlzLmN0eC5zZXJpZXM9bnVsbCx0aGlzLmN0eC5yZXNwb25zaXZlPW51bGwsdGhpcy5jdHgudGhlbWU9bnVsbCx0aGlzLmN0eC5mb3JtYXR0ZXJzPW51bGwsdGhpcy5jdHgudGl0bGVTdWJ0aXRsZT1udWxsLHRoaXMuY3R4LmxlZ2VuZD1udWxsLHRoaXMuY3R4LmRpbWVuc2lvbnM9bnVsbCx0aGlzLmN0eC5vcHRpb25zPW51bGwsdGhpcy5jdHguY3Jvc3NoYWlycz1udWxsLHRoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb249bnVsbCx0aGlzLmN0eC51cGRhdGVIZWxwZXJzPW51bGwsdGhpcy5jdHgudG9vbGJhcj1udWxsLHRoaXMuY3R4LmxvY2FsaXphdGlvbj1udWxsLHRoaXMuY3R4LncuZ2xvYmFscy50b29sdGlwPW51bGwsdGhpcy5jbGVhckRvbUVsZW1lbnRzKHtpc1VwZGF0aW5nOmV9KX19LHtrZXk6ImtpbGxTVkciLHZhbHVlOmZ1bmN0aW9uKHQpe3QuZWFjaCgoZnVuY3Rpb24odCxlKXt0aGlzLnJlbW92ZUNsYXNzKCIqIiksdGhpcy5vZmYoKSx0aGlzLnN0b3AoKX0pLCEwKSx0LnVuZ3JvdXAoKSx0LmNsZWFyKCl9fSx7a2V5OiJjbGVhckRvbUVsZW1lbnRzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC5pc1VwZGF0aW5nLHM9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLm5vZGU7cy5wYXJlbnROb2RlJiZzLnBhcmVudE5vZGUucGFyZW50Tm9kZSYmIWkmJihzLnBhcmVudE5vZGUucGFyZW50Tm9kZS5zdHlsZS5taW5IZWlnaHQ9InVuc2V0Iik7dmFyIGE9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbDthJiZ0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5yZW1vdmVFdmVudExpc3RlbmVyKHQsZS5jdHguZXZlbnRzLmRvY3VtZW50RXZlbnQpfSkpO3ZhciBuPXRoaXMudy5nbG9iYWxzLmRvbTtpZihudWxsIT09dGhpcy5jdHguZWwpZm9yKDt0aGlzLmN0eC5lbC5maXJzdENoaWxkOyl0aGlzLmN0eC5lbC5yZW1vdmVDaGlsZCh0aGlzLmN0eC5lbC5maXJzdENoaWxkKTt0aGlzLmtpbGxTVkcobi5QYXBlciksbi5QYXBlci5yZW1vdmUoKSxuLmVsV3JhcD1udWxsLG4uZWxHcmFwaGljYWw9bnVsbCxuLmVsQW5ub3RhdGlvbnM9bnVsbCxuLmVsTGVnZW5kV3JhcD1udWxsLG4uYmFzZUVsPW51bGwsbi5lbEdyaWRSZWN0PW51bGwsbi5lbEdyaWRSZWN0TWFzaz1udWxsLG4uZWxHcmlkUmVjdE1hcmtlck1hc2s9bnVsbCxuLmVsRm9yZWNhc3RNYXNrPW51bGwsbi5lbE5vbkZvcmVjYXN0TWFzaz1udWxsLG4uZWxEZWZzPW51bGx9fV0pLHR9KCksV3Q9bmV3IFdlYWtNYXAsJHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7byh0aGlzLHQpLHRoaXMub3B0cz1pLHRoaXMuY3R4PXRoaXMsdGhpcy53PW5ldyBSKGkpLmluaXQoKSx0aGlzLmVsPWUsdGhpcy53Lmdsb2JhbHMuY3VpZD1iLnJhbmRvbUlkKCksdGhpcy53Lmdsb2JhbHMuY2hhcnRJRD10aGlzLncuY29uZmlnLmNoYXJ0LmlkP2IuZXNjYXBlU3RyaW5nKHRoaXMudy5jb25maWcuY2hhcnQuaWQpOnRoaXMudy5nbG9iYWxzLmN1aWQsbmV3IEh0KHRoaXMpLmluaXRNb2R1bGVzKCksdGhpcy5jcmVhdGU9Yi5iaW5kKHRoaXMuY3JlYXRlLHRoaXMpLHRoaXMud2luZG93UmVzaXplSGFuZGxlcj10aGlzLl93aW5kb3dSZXNpemVIYW5kbGVyLmJpbmQodGhpcyksdGhpcy5wYXJlbnRSZXNpemVIYW5kbGVyPXRoaXMuX3BhcmVudFJlc2l6ZUNhbGxiYWNrLmJpbmQodGhpcyl9cmV0dXJuIGModCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGkpe2lmKG51bGwhPT10LmVsKXt2b2lkIDA9PT1BcGV4Ll9jaGFydEluc3RhbmNlcyYmKEFwZXguX2NoYXJ0SW5zdGFuY2VzPVtdKSx0LncuY29uZmlnLmNoYXJ0LmlkJiZBcGV4Ll9jaGFydEluc3RhbmNlcy5wdXNoKHtpZDp0LncuZ2xvYmFscy5jaGFydElELGdyb3VwOnQudy5jb25maWcuY2hhcnQuZ3JvdXAsY2hhcnQ6dH0pLHQuc2V0TG9jYWxlKHQudy5jb25maWcuY2hhcnQuZGVmYXVsdExvY2FsZSk7dmFyIHM9dC53LmNvbmZpZy5jaGFydC5ldmVudHMuYmVmb3JlTW91bnQ7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHMmJnModCx0LncpLHQuZXZlbnRzLmZpcmVFdmVudCgiYmVmb3JlTW91bnQiLFt0LHQud10pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHQud2luZG93UmVzaXplSGFuZGxlciksZnVuY3Rpb24odCxlKXt2YXIgaT0hMTtpZih0Lm5vZGVUeXBlIT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKXt2YXIgcz10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOyJub25lIiE9PXQuc3R5bGUuZGlzcGxheSYmMCE9PXMud2lkdGh8fChpPSEwKX12YXIgYT1uZXcgUmVzaXplT2JzZXJ2ZXIoKGZ1bmN0aW9uKHMpe2kmJmUuY2FsbCh0LHMpLGk9ITB9KSk7dC5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERT9BcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBhLm9ic2VydmUodCl9KSk6YS5vYnNlcnZlKHQpLFd0LnNldChlLGEpfSh0LmVsLnBhcmVudE5vZGUsdC5wYXJlbnRSZXNpemVIYW5kbGVyKSwhdC5jc3Mpe3ZhciBhPXQuZWwuZ2V0Um9vdE5vZGUmJnQuZWwuZ2V0Um9vdE5vZGUoKSxuPWIuaXMoIlNoYWRvd1Jvb3QiLGEpLHI9dC5lbC5vd25lckRvY3VtZW50LG89ci5nZXRFbGVtZW50QnlJZCgiYXBleGNoYXJ0cy1jc3MiKTshbiYmb3x8KHQuY3NzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksdC5jc3MuaWQ9ImFwZXhjaGFydHMtY3NzIix0LmNzcy50ZXh0Q29udGVudD0nQGtleWZyYW1lcyBvcGFxdWUge1xuICAwJSB7XG4gICAgICBvcGFjaXR5OiAwXG4gIH1cblxuICB0byB7XG4gICAgICBvcGFjaXR5OiAxXG4gIH1cbn1cblxuQGtleWZyYW1lcyByZXNpemVhbmltIHtcbiAgMCUsdG8ge1xuICAgICAgb3BhY2l0eTogMFxuICB9XG59XG5cbi5hcGV4Y2hhcnRzLWNhbnZhcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmVcbn1cblxuLmFwZXhjaGFydHMtY2FudmFzIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIHdpZHRoOiA2cHhcbn1cblxuLmFwZXhjaGFydHMtY2FudmFzIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsLjUpO1xuICBib3gtc2hhZG93OiAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSlcbn1cblxuLmFwZXhjaGFydHMtaW5uZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmVcbn1cblxuLmFwZXhjaGFydHMtdGV4dCB0c3BhbiB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0XG59XG5cbi5sZWdlbmQtbW91c2VvdmVyLWluYWN0aXZlIHtcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbDtcbiAgb3BhY2l0eTogLjJcbn1cblxuLmFwZXhjaGFydHMtbGVnZW5kLXRleHQge1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIG1hcmdpbi1sZWZ0OiAtMTVweDtcbn1cblxuLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCB7XG4gIG9wYWNpdHk6IDBcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcCB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm94LXNoYWRvdzogMnB4IDJweCA2cHggLTRweCAjOTk5O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGVmdDogNjJweDtcbiAgb3BhY2l0eTogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAyMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB6LWluZGV4OiAxMjtcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTNlM2UzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LC45Nilcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogcmdiYSgzMCwzMCwzMCwuOClcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcCAqIHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXRcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XG4gIHBhZGRpbmc6IDZweDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBtYXJnaW4tYm90dG9tOiA0cHhcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUge1xuICBiYWNrZ3JvdW5kOiAjZWNlZmYxO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMzMzXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS12YWx1ZSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgZm9udC13ZWlnaHQ6IDYwMFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWw6ZW1wdHksLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LWxhYmVsOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGU6ZW1wdHkge1xuICBkaXNwbGF5OiBub25lXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy1sYWJlbCwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWUge1xuICBwYWRkaW5nOiA2cHggMCA1cHhcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1nb2Fscy1ncm91cCwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWwsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlIHtcbiAgZGlzcGxheTogZmxleFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWw6bm90KDplbXB0eSksLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlOm5vdCg6ZW1wdHkpIHtcbiAgbWFyZ2luLXRvcDogLTZweFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlciB7XG4gIHdpZHRoOiAxMnB4O1xuICBoZWlnaHQ6IDEycHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAwO1xuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJVxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cCB7XG4gIHBhZGRpbmc6IDAgMTBweDtcbiAgZGlzcGxheTogbm9uZTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLmFwZXhjaGFydHMtYWN0aXZlIC5hcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIHtcbiAgb3BhY2l0eTogMVxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC5hcGV4Y2hhcnRzLWFjdGl2ZSwuYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cDpsYXN0LWNoaWxkIHtcbiAgcGFkZGluZy1ib3R0b206IDRweFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC1oaWRkZW4ge1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IDA7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwYWRkaW5nOiAwIWltcG9ydGFudFxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXktZ3JvdXAge1xuICBwYWRkaW5nOiA2cHggMCA1cHhcbn1cblxuLmFwZXhjaGFydHMtY3VzdG9tLXRvb2x0aXAsLmFwZXhjaGFydHMtdG9vbHRpcC1ib3gge1xuICBwYWRkaW5nOiA0cHggOHB4XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94UGxvdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZVxufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLWJveD5kaXYge1xuICBtYXJnaW46IDRweCAwXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94IHNwYW4udmFsdWUge1xuICBmb250LXdlaWdodDogNzAwXG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXIge1xuICBwYWRkaW5nOiA1cHggOHB4XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXIgLmNhdGVnb3J5IHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6ICM3Nzdcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhciAuc2VyaWVzLW5hbWUge1xuICBmb250LXdlaWdodDogNzAwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogNXB4XG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAge1xuICBvcGFjaXR5OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6ICMzNzNkM2Y7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTA7XG4gIGJhY2tncm91bmQ6ICNlY2VmZjE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM5MGE0YWVcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwIHtcbiAgcGFkZGluZzogOXB4IDEwcHg7XG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjcpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC41KTtcbiAgY29sb3I6ICNmZmZcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDpiZWZvcmUge1xuICBsZWZ0OiA1MCU7XG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XG4gIGNvbnRlbnQ6ICIgIjtcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZVxufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YWZ0ZXIge1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItd2lkdGg6IDZweDtcbiAgbWFyZ2luLWxlZnQ6IC02cHhcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmJlZm9yZSB7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci13aWR0aDogN3B4O1xuICBtYXJnaW4tbGVmdDogLTdweFxufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcbiAgYm90dG9tOiAxMDAlXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YWZ0ZXIsLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDpiZWZvcmUge1xuICB0b3A6IDEwMCVcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTphZnRlciB7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICNlY2VmZjFcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICBib3JkZXItYm90dG9tLWNvbG9yOiAjOTBhNGFlXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b20uYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b20uYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwwLDAsLjUpXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YWZ0ZXIge1xuICBib3JkZXItdG9wLWNvbG9yOiAjZWNlZmYxXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YmVmb3JlIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogIzkwYTRhZVxufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wLmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wLmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsMCwwLC41KVxufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAuYXBleGNoYXJ0cy1hY3RpdmUge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCB7XG4gIHBhZGRpbmc6IDRweCAxMHB4XG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwuNSk7XG4gIGNvbG9yOiAjZmZmXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YmVmb3JlIHtcbiAgdG9wOiA1MCU7XG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XG4gIGNvbnRlbnQ6ICIgIjtcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZVxufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YWZ0ZXIge1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItd2lkdGg6IDZweDtcbiAgbWFyZ2luLXRvcDogLTZweFxufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YmVmb3JlIHtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXdpZHRoOiA3cHg7XG4gIG1hcmdpbi10b3A6IC03cHhcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YmVmb3JlIHtcbiAgbGVmdDogMTAwJVxufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gIHJpZ2h0OiAxMDAlXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0OmFmdGVyIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNlY2VmZjFcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YmVmb3JlIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICM5MGE0YWVcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0LmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xuICBib3JkZXItbGVmdC1jb2xvcjogcmdiYSgwLDAsMCwuNSlcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmFmdGVyIHtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZWNlZmYxXG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDpiZWZvcmUge1xuICBib3JkZXItcmlnaHQtY29sb3I6ICM5MGE0YWVcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0LmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLDAsMCwuNSlcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLmFwZXhjaGFydHMtYWN0aXZlIHtcbiAgb3BhY2l0eTogMVxufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZVxufVxuXG4uYXBleGNoYXJ0cy14Y3Jvc3NoYWlycywuYXBleGNoYXJ0cy15Y3Jvc3NoYWlycyB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXG59XG5cbi5hcGV4Y2hhcnRzLXhjcm9zc2hhaXJzLmFwZXhjaGFydHMtYWN0aXZlLC5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLmFwZXhjaGFydHMtYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxufVxuXG4uYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy1oaWRkZW4ge1xuICBvcGFjaXR5OiAwXG59XG5cbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0IHtcbiAgY3Vyc29yOiBtb3ZlXG59XG5cbi5zdmdfc2VsZWN0X2JvdW5kaW5nUmVjdCwuc3ZnX3NlbGVjdF9wb2ludHNfcm90IHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlblxufVxuXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCtnIC5zdmdfc2VsZWN0X2JvdW5kaW5nUmVjdCwuYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCtnIC5zdmdfc2VsZWN0X3BvaW50c19yb3Qge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW5cbn1cblxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9wb2ludHNfbCwuYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCtnIC5zdmdfc2VsZWN0X3BvaW50c19yIHtcbiAgY3Vyc29yOiBldy1yZXNpemU7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGVcbn1cblxuLnN2Z19zZWxlY3RfcG9pbnRzIHtcbiAgZmlsbDogI2VmZWZlZjtcbiAgc3Ryb2tlOiAjMzMzO1xuICByeDogMlxufVxuXG4uYXBleGNoYXJ0cy1zdmcuYXBleGNoYXJ0cy16b29tYWJsZS5ob3ZlcmluZy16b29tIHtcbiAgY3Vyc29yOiBjcm9zc2hhaXJcbn1cblxuLmFwZXhjaGFydHMtc3ZnLmFwZXhjaGFydHMtem9vbWFibGUuaG92ZXJpbmctcGFuIHtcbiAgY3Vyc29yOiBtb3ZlXG59XG5cbi5hcGV4Y2hhcnRzLW1lbnUtaWNvbiwuYXBleGNoYXJ0cy1wYW4taWNvbiwuYXBleGNoYXJ0cy1yZXNldC1pY29uLC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uLC5hcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24sLmFwZXhjaGFydHMtem9vbS1pY29uLC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uLC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGNvbG9yOiAjNmU4MTkyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXJcbn1cblxuLmFwZXhjaGFydHMtbWVudS1pY29uIHN2ZywuYXBleGNoYXJ0cy1yZXNldC1pY29uIHN2ZywuYXBleGNoYXJ0cy16b29tLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uIHN2ZywuYXBleGNoYXJ0cy16b29tb3V0LWljb24gc3ZnIHtcbiAgZmlsbDogIzZlODE5MlxufVxuXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiBzdmcge1xuICBmaWxsOiAjNDQ0O1xuICB0cmFuc2Zvcm06IHNjYWxlKC43Nilcbn1cblxuLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1tZW51LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtcGFuLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtcmVzZXQtaWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy10b29sYmFyLWN1c3RvbS1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb20taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy16b29taW4taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy16b29tb3V0LWljb24gc3ZnIHtcbiAgZmlsbDogI2YzZjRmNVxufVxuXG4uYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtcmVzZXQtem9vbS1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnLC5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZywuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtem9vbS1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnIHtcbiAgZmlsbDogIzAwOGZmYlxufVxuXG4uYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1tZW51LWljb246aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXJlc2V0LWljb246aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uOm5vdCguYXBleGNoYXJ0cy1zZWxlY3RlZCk6aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXpvb20taWNvbjpub3QoLmFwZXhjaGFydHMtc2VsZWN0ZWQpOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy16b29taW4taWNvbjpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtem9vbW91dC1pY29uOmhvdmVyIHN2ZyB7XG4gIGZpbGw6ICMzMzNcbn1cblxuLmFwZXhjaGFydHMtbWVudS1pY29uLC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlXG59XG5cbi5hcGV4Y2hhcnRzLXJlc2V0LWljb24ge1xuICBtYXJnaW4tbGVmdDogNXB4XG59XG5cbi5hcGV4Y2hhcnRzLW1lbnUtaWNvbiwuYXBleGNoYXJ0cy1yZXNldC1pY29uLC5hcGV4Y2hhcnRzLXpvb20taWNvbiB7XG4gIHRyYW5zZm9ybTogc2NhbGUoLjg1KVxufVxuXG4uYXBleGNoYXJ0cy16b29taW4taWNvbiwuYXBleGNoYXJ0cy16b29tb3V0LWljb24ge1xuICB0cmFuc2Zvcm06IHNjYWxlKC43KVxufVxuXG4uYXBleGNoYXJ0cy16b29tb3V0LWljb24ge1xuICBtYXJnaW4tcmlnaHQ6IDNweFxufVxuXG4uYXBleGNoYXJ0cy1wYW4taWNvbiB7XG4gIHRyYW5zZm9ybTogc2NhbGUoLjYyKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsZWZ0OiAxcHg7XG4gIHRvcDogMFxufVxuXG4uYXBleGNoYXJ0cy1wYW4taWNvbiBzdmcge1xuICBmaWxsOiAjZmZmO1xuICBzdHJva2U6ICM2ZTgxOTI7XG4gIHN0cm9rZS13aWR0aDogMlxufVxuXG4uYXBleGNoYXJ0cy1wYW4taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZyB7XG4gIHN0cm9rZTogIzAwOGZmYlxufVxuXG4uYXBleGNoYXJ0cy1wYW4taWNvbjpub3QoLmFwZXhjaGFydHMtc2VsZWN0ZWQpOmhvdmVyIHN2ZyB7XG4gIHN0cm9rZTogIzMzM1xufVxuXG4uYXBleGNoYXJ0cy10b29sYmFyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMTtcbiAgbWF4LXdpZHRoOiAxNzZweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgcGFkZGluZzogMCA2cHggMnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXJcbn1cblxuLmFwZXhjaGFydHMtbWVudSB7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMDAlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIHBhZGRpbmc6IDNweDtcbiAgcmlnaHQ6IDEwcHg7XG4gIG9wYWNpdHk6IDA7XG4gIG1pbi13aWR0aDogMTEwcHg7XG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGw7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lXG59XG5cbi5hcGV4Y2hhcnRzLW1lbnUuYXBleGNoYXJ0cy1tZW51LW9wZW4ge1xuICBvcGFjaXR5OiAxO1xuICBwb2ludGVyLWV2ZW50czogYWxsO1xuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXG59XG5cbi5hcGV4Y2hhcnRzLW1lbnUtaXRlbSB7XG4gIHBhZGRpbmc6IDZweCA3cHg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY3Vyc29yOiBwb2ludGVyXG59XG5cbi5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLW1lbnUtaXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQ6ICNlZWVcbn1cblxuLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1tZW51IHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XG4gIGNvbG9yOiAjZmZmXG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NzY4cHgpIHtcbiAgLmFwZXhjaGFydHMtY2FudmFzOmhvdmVyIC5hcGV4Y2hhcnRzLXRvb2xiYXIge1xuICAgICAgb3BhY2l0eTogMVxuICB9XG59XG5cbi5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlbiwuYXBleGNoYXJ0cy1kYXRhbGFiZWwuYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlbiwuYXBleGNoYXJ0cy1oaWRlIC5hcGV4Y2hhcnRzLXNlcmllcy1wb2ludHMge1xuICBvcGFjaXR5OiAwXG59XG5cbi5hcGV4Y2hhcnRzLWRhdGFsYWJlbCwuYXBleGNoYXJ0cy1kYXRhbGFiZWwtbGFiZWwsLmFwZXhjaGFydHMtZGF0YWxhYmVsLXZhbHVlLC5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMsLmFwZXhjaGFydHMtcGllLWxhYmVsIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICBwb2ludGVyLWV2ZW50czogbm9uZVxufVxuXG4uYXBleGNoYXJ0cy1waWUtbGFiZWwtZGVsYXkge1xuICBvcGFjaXR5OiAwO1xuICBhbmltYXRpb24tbmFtZTogb3BhcXVlO1xuICBhbmltYXRpb24tZHVyYXRpb246IC4zcztcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Vcbn1cblxuLmFwZXhjaGFydHMtYW5ub3RhdGlvbi1yZWN0LC5hcGV4Y2hhcnRzLWFyZWEtc2VyaWVzIC5hcGV4Y2hhcnRzLWFyZWEsLmFwZXhjaGFydHMtYXJlYS1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgLmFwZXhjaGFydHMtbWFya2VyLm5vLXBvaW50ZXItZXZlbnRzLC5hcGV4Y2hhcnRzLWdyaWRsaW5lLC5hcGV4Y2hhcnRzLWxpbmUsLmFwZXhjaGFydHMtbGluZS1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgLmFwZXhjaGFydHMtbWFya2VyLm5vLXBvaW50ZXItZXZlbnRzLC5hcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb24tbGFiZWwsLmFwZXhjaGFydHMtcmFkYXItc2VyaWVzIHBhdGgsLmFwZXhjaGFydHMtcmFkYXItc2VyaWVzIHBvbHlnb24sLmFwZXhjaGFydHMtdG9vbGJhciBzdmcsLmFwZXhjaGFydHMtdG9vbHRpcCAuYXBleGNoYXJ0cy1tYXJrZXIsLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbi1sYWJlbCwuYXBleGNoYXJ0cy15YXhpcy1hbm5vdGF0aW9uLWxhYmVsLC5hcGV4Y2hhcnRzLXpvb20tcmVjdCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lXG59XG5cbi5hcGV4Y2hhcnRzLW1hcmtlciB7XG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcbn1cblxuLnJlc2l6ZS10cmlnZ2VycyB7XG4gIGFuaW1hdGlvbjogMW1zIHJlc2l6ZWFuaW07XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgb3BhY2l0eTogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlblxufVxuXG4uY29udHJhY3QtdHJpZ2dlcjpiZWZvcmUsLnJlc2l6ZS10cmlnZ2VycywucmVzaXplLXRyaWdnZXJzPmRpdiB7XG4gIGNvbnRlbnQ6ICIgIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwXG59XG5cbi5yZXNpemUtdHJpZ2dlcnM+ZGl2IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogI2VlZTtcbiAgb3ZlcmZsb3c6IGF1dG9cbn1cblxuLmNvbnRyYWN0LXRyaWdnZXI6YmVmb3JlIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgd2lkdGg6IDIwMCU7XG4gIGhlaWdodDogMjAwJVxufVxuJyxuP2EucHJlcGVuZCh0LmNzcyk6ci5oZWFkLmFwcGVuZENoaWxkKHQuY3NzKSl9dmFyIGw9dC5jcmVhdGUodC53LmNvbmZpZy5zZXJpZXMse30pO2lmKCFsKXJldHVybiBlKHQpO3QubW91bnQobCkudGhlbigoZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT10eXBlb2YgdC53LmNvbmZpZy5jaGFydC5ldmVudHMubW91bnRlZCYmdC53LmNvbmZpZy5jaGFydC5ldmVudHMubW91bnRlZCh0LHQudyksdC5ldmVudHMuZmlyZUV2ZW50KCJtb3VudGVkIixbdCx0LnddKSxlKGwpfSkpLmNhdGNoKChmdW5jdGlvbih0KXtpKHQpfSkpfWVsc2UgaShuZXcgRXJyb3IoIkVsZW1lbnQgbm90IGZvdW5kIikpfSkpfX0se2tleToiY3JlYXRlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztuZXcgSHQodGhpcykuaW5pdE1vZHVsZXMoKTt2YXIgcz10aGlzLncuZ2xvYmFscztpZihzLm5vRGF0YT0hMSxzLmFuaW1hdGlvbkVuZGVkPSExLHRoaXMucmVzcG9uc2l2ZS5jaGVja1Jlc3BvbnNpdmVDb25maWcoZSksaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiZuZXcgRChpLmNvbmZpZykuY29udmVydENhdFRvTnVtZXJpY1hheGlzKGkuY29uZmlnLHRoaXMuY3R4KSxudWxsPT09dGhpcy5lbClyZXR1cm4gcy5hbmltYXRpb25FbmRlZD0hMCxudWxsO2lmKHRoaXMuY29yZS5zZXR1cEVsZW1lbnRzKCksInRyZWVtYXAiPT09aS5jb25maWcuY2hhcnQudHlwZSYmKGkuY29uZmlnLmdyaWQuc2hvdz0hMSxpLmNvbmZpZy55YXhpc1swXS5zaG93PSExKSwwPT09cy5zdmdXaWR0aClyZXR1cm4gcy5hbmltYXRpb25FbmRlZD0hMCxudWxsO3ZhciBhPVMuY2hlY2tDb21ib1Nlcmllcyh0KTtzLmNvbWJvQ2hhcnRzPWEuY29tYm9DaGFydHMscy5jb21ib0JhckNvdW50PWEuY29tYm9CYXJDb3VudDt2YXIgbj10LmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhJiYwPT09dC5kYXRhLmxlbmd0aH0pKTsoMD09PXQubGVuZ3RofHxuKSYmdGhpcy5zZXJpZXMuaGFuZGxlTm9EYXRhKCksdGhpcy5ldmVudHMuc2V0dXBFdmVudEhhbmRsZXJzKCksdGhpcy5kYXRhLnBhcnNlRGF0YSh0KSx0aGlzLnRoZW1lLmluaXQoKSxuZXcgQih0aGlzKS5zZXRHbG9iYWxNYXJrZXJTaXplKCksdGhpcy5mb3JtYXR0ZXJzLnNldExhYmVsRm9ybWF0dGVycygpLHRoaXMudGl0bGVTdWJ0aXRsZS5kcmF3KCkscy5ub0RhdGEmJnMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aCE9PXMuc2VyaWVzLmxlbmd0aCYmIWkuY29uZmlnLmxlZ2VuZC5zaG93Rm9yU2luZ2xlU2VyaWVzfHx0aGlzLmxlZ2VuZC5pbml0KCksdGhpcy5zZXJpZXMuaGFzQWxsU2VyaWVzRXF1YWxYKCkscy5heGlzQ2hhcnRzJiYodGhpcy5jb3JlLmNvcmVDYWxjdWxhdGlvbnMoKSwiY2F0ZWdvcnkiIT09aS5jb25maWcueGF4aXMudHlwZSYmdGhpcy5mb3JtYXR0ZXJzLnNldExhYmVsRm9ybWF0dGVycygpLHRoaXMuY3R4LnRvb2xiYXIubWluWD1pLmdsb2JhbHMubWluWCx0aGlzLmN0eC50b29sYmFyLm1heFg9aS5nbG9iYWxzLm1heFgpLHRoaXMuZm9ybWF0dGVycy5oZWF0bWFwTGFiZWxGb3JtYXR0ZXJzKCksbmV3IFModGhpcykuZ2V0TGFyZ2VzdE1hcmtlclNpemUoKSx0aGlzLmRpbWVuc2lvbnMucGxvdENvb3JkcygpO3ZhciByPXRoaXMuY29yZS54eVNldHRpbmdzKCk7dGhpcy5ncmlkLmNyZWF0ZUdyaWRNYXNrKCk7dmFyIG89dGhpcy5jb3JlLnBsb3RDaGFydFR5cGUodCxyKSxsPW5ldyBIKHRoaXMpO2wuYnJpbmdGb3J3YXJkKCksaS5jb25maWcuZGF0YUxhYmVscy5iYWNrZ3JvdW5kLmVuYWJsZWQmJmwuZGF0YUxhYmVsc0JhY2tncm91bmQoKSx0aGlzLmNvcmUuc2hpZnRHcmFwaFBvc2l0aW9uKCk7dmFyIGM9e3Bsb3Q6e2xlZnQ6aS5nbG9iYWxzLnRyYW5zbGF0ZVgsdG9wOmkuZ2xvYmFscy50cmFuc2xhdGVZLHdpZHRoOmkuZ2xvYmFscy5ncmlkV2lkdGgsaGVpZ2h0OmkuZ2xvYmFscy5ncmlkSGVpZ2h0fX07cmV0dXJue2VsR3JhcGg6byx4eVJhdGlvczpyLGVsSW5uZXI6aS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbCxkaW1lbnNpb25zOmN9fX0se2tleToibW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLGk9dGhpcyxzPWkudztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGEsbil7aWYobnVsbD09PWkuZWwpcmV0dXJuIG4obmV3IEVycm9yKCJOb3QgZW5vdWdoIGRhdGEgdG8gZGlzcGxheSBvciB0YXJnZXQgZWxlbWVudCBub3QgZm91bmQiKSk7KG51bGw9PT1lfHxzLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkKSYmaS5zZXJpZXMuaGFuZGxlTm9EYXRhKCksaS5ncmlkPW5ldyBVKGkpO3ZhciByPWkuZ3JpZC5kcmF3R3JpZCgpOyJ0cmVlbWFwIiE9PXMuY29uZmlnLmNoYXJ0LnR5cGUmJmkuYXhlcy5kcmF3QXhpcyhzLmNvbmZpZy5jaGFydC50eXBlLHIpLGkuYW5ub3RhdGlvbnM9bmV3IE0oaSksaS5hbm5vdGF0aW9ucy5kcmF3SW1hZ2VBbm5vcygpLGkuYW5ub3RhdGlvbnMuZHJhd1RleHRBbm5vcygpLCJiYWNrIj09PXMuY29uZmlnLmdyaWQucG9zaXRpb24mJnImJnMuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHIuZWwpO3ZhciBvPW5ldyBHKHQuY3R4LHIpLGw9bmV3IEsodC5jdHgscik7aWYobnVsbCE9PXImJihvLnhBeGlzTGFiZWxDb3JyZWN0aW9ucyhyLnhBeGlzVGlja1dpZHRoKSxsLnNldFlBeGlzVGV4dEFsaWdubWVudHMoKSxzLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsZSl7LTE9PT1zLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSkmJmwueUF4aXNUaXRsZVJvdGF0ZShlLHQub3Bwb3NpdGUpfSkpKSwiYmFjayI9PT1zLmNvbmZpZy5hbm5vdGF0aW9ucy5wb3NpdGlvbiYmKHMuZ2xvYmFscy5kb20uUGFwZXIuYWRkKHMuZ2xvYmFscy5kb20uZWxBbm5vdGF0aW9ucyksaS5hbm5vdGF0aW9ucy5kcmF3QXhlc0Fubm90YXRpb25zKCkpLEFycmF5LmlzQXJyYXkoZS5lbEdyYXBoKSlmb3IodmFyIGM9MDtjPGUuZWxHcmFwaC5sZW5ndGg7YysrKXMuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGUuZWxHcmFwaFtjXSk7ZWxzZSBzLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChlLmVsR3JhcGgpO2lmKCJmcm9udCI9PT1zLmNvbmZpZy5ncmlkLnBvc2l0aW9uJiZyJiZzLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChyLmVsKSxyJiZyLmVsR3JpZEJvcmRlcnMmJnIuZWxHcmlkQm9yZGVycy5ub2RlJiZzLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChyLmVsR3JpZEJvcmRlcnMpLCJmcm9udCI9PT1zLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnBvc2l0aW9uJiZpLmNyb3NzaGFpcnMuZHJhd1hDcm9zc2hhaXJzKCksImZyb250Ij09PXMuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMucG9zaXRpb24mJmkuY3Jvc3NoYWlycy5kcmF3WUNyb3NzaGFpcnMoKSwiZnJvbnQiPT09cy5jb25maWcuYW5ub3RhdGlvbnMucG9zaXRpb24mJihzLmdsb2JhbHMuZG9tLlBhcGVyLmFkZChzLmdsb2JhbHMuZG9tLmVsQW5ub3RhdGlvbnMpLGkuYW5ub3RhdGlvbnMuZHJhd0F4ZXNBbm5vdGF0aW9ucygpKSwhcy5nbG9iYWxzLm5vRGF0YSl7aWYocy5jb25maWcudG9vbHRpcC5lbmFibGVkJiYhcy5nbG9iYWxzLm5vRGF0YSYmaS53Lmdsb2JhbHMudG9vbHRpcC5kcmF3VG9vbHRpcChlLnh5UmF0aW9zKSxzLmdsb2JhbHMuYXhpc0NoYXJ0cyYmKHMuZ2xvYmFscy5pc1hOdW1lcmljfHxzLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWN8fHMuZ2xvYmFscy5pc1JhbmdlQmFyKSkocy5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkfHxzLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24mJnMuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5lbmFibGVkfHxzLmNvbmZpZy5jaGFydC5wYW4mJnMuY29uZmlnLmNoYXJ0LnBhbi5lbmFibGVkKSYmaS56b29tUGFuU2VsZWN0aW9uLmluaXQoe3h5UmF0aW9zOmUueHlSYXRpb3N9KTtlbHNle3ZhciBoPXMuY29uZmlnLmNoYXJ0LnRvb2xiYXIudG9vbHM7WyJ6b29tIiwiem9vbWluIiwiem9vbW91dCIsInNlbGVjdGlvbiIsInBhbiIsInJlc2V0Il0uZm9yRWFjaCgoZnVuY3Rpb24odCl7aFt0XT0hMX0pKX1zLmNvbmZpZy5jaGFydC50b29sYmFyLnNob3cmJiFzLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkJiZpLnRvb2xiYXIuY3JlYXRlVG9vbGJhcigpfXMuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5sZW5ndGg+MCYmcy5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QubWV0aG9kKHQucGFyYW1zLCExLHQuY29udGV4dCl9KSkscy5nbG9iYWxzLmF4aXNDaGFydHN8fHMuZ2xvYmFscy5ub0RhdGF8fGkuY29yZS5yZXNpemVOb25BeGlzQ2hhcnRzKCksYShpKX0pKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLndpbmRvd1Jlc2l6ZUhhbmRsZXIpLHRoaXMuZWwucGFyZW50Tm9kZSx0PXRoaXMucGFyZW50UmVzaXplSGFuZGxlciwoZT1XdC5nZXQodCkpJiYoZS5kaXNjb25uZWN0KCksV3QuZGVsZXRlKHQpKTt2YXIgaT10aGlzLncuY29uZmlnLmNoYXJ0LmlkO2kmJkFwZXguX2NoYXJ0SW5zdGFuY2VzLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5pZD09PWIuZXNjYXBlU3RyaW5nKGkpJiZBcGV4Ll9jaGFydEluc3RhbmNlcy5zcGxpY2UoZSwxKX0pKSxuZXcgWXQodGhpcy5jdHgpLmNsZWFyKHtpc1VwZGF0aW5nOiExfSl9fSx7a2V5OiJ1cGRhdGVPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxzPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sYT0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdLG49IShhcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSl8fGFyZ3VtZW50c1s0XSxyPXRoaXMudztyZXR1cm4gci5nbG9iYWxzLnNlbGVjdGlvbj12b2lkIDAsdC5zZXJpZXMmJih0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSwhMCwhMSksdC5zZXJpZXMubGVuZ3RoJiZ0LnNlcmllc1swXS5kYXRhJiYodC5zZXJpZXM9dC5zZXJpZXMubWFwKChmdW5jdGlvbih0LGkpe3JldHVybiBlLnVwZGF0ZUhlbHBlcnMuX2V4dGVuZFNlcmllcyh0LGkpfSkpKSx0aGlzLnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSksdC54YXhpcyYmKHQ9dGhpcy51cGRhdGVIZWxwZXJzLmZvcmNlWEF4aXNVcGRhdGUodCkpLHQueWF4aXMmJih0PXRoaXMudXBkYXRlSGVscGVycy5mb3JjZVlBeGlzVXBkYXRlKHQpKSxyLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg+MCYmdGhpcy5zZXJpZXMuY2xlYXJQcmV2aW91c1BhdGhzKCksdC50aGVtZSYmKHQ9dGhpcy50aGVtZS51cGRhdGVUaGVtZU9wdGlvbnModCkpLHRoaXMudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh0LGkscyxhLG4pfX0se2tleToidXBkYXRlU2VyaWVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO3JldHVybiB0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSksdGhpcy51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCksdGhpcy51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXModCxlLGkpfX0se2tleToiYXBwZW5kU2VyaWVzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxzPXRoaXMudy5jb25maWcuc2VyaWVzLnNsaWNlKCk7cmV0dXJuIHMucHVzaCh0KSx0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSksdGhpcy51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCksdGhpcy51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMocyxlLGkpfX0se2tleToiYXBwZW5kRGF0YSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPXRoaXM7aS53Lmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITAsaS5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpO2Zvcih2YXIgcz1pLncuY29uZmlnLnNlcmllcy5zbGljZSgpLGE9MDthPHMubGVuZ3RoO2ErKylpZihudWxsIT09dFthXSYmdm9pZCAwIT09dFthXSlmb3IodmFyIG49MDtuPHRbYV0uZGF0YS5sZW5ndGg7bisrKXNbYV0uZGF0YS5wdXNoKHRbYV0uZGF0YVtuXSk7cmV0dXJuIGkudy5jb25maWcuc2VyaWVzPXMsZSYmKGkudy5nbG9iYWxzLmluaXRpYWxTZXJpZXM9Yi5jbG9uZShpLncuY29uZmlnLnNlcmllcykpLHRoaXMudXBkYXRlKCl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihpLHMpe25ldyBZdChlLmN0eCkuY2xlYXIoe2lzVXBkYXRpbmc6ITB9KTt2YXIgYT1lLmNyZWF0ZShlLncuY29uZmlnLnNlcmllcyx0KTtpZighYSlyZXR1cm4gaShlKTtlLm1vdW50KGEpLnRoZW4oKGZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09dHlwZW9mIGUudy5jb25maWcuY2hhcnQuZXZlbnRzLnVwZGF0ZWQmJmUudy5jb25maWcuY2hhcnQuZXZlbnRzLnVwZGF0ZWQoZSxlLncpLGUuZXZlbnRzLmZpcmVFdmVudCgidXBkYXRlZCIsW2UsZS53XSksZS53Lmdsb2JhbHMuaXNEaXJ0eT0hMCxpKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXtzKHQpfSkpfSkpfX0se2tleToiZ2V0U3luY2VkQ2hhcnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0R3JvdXBlZENoYXJ0cygpLGU9W3RoaXNdO3JldHVybiB0Lmxlbmd0aCYmKGU9W10sdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLnB1c2godCl9KSkpLGV9fSx7a2V5OiJnZXRHcm91cGVkQ2hhcnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIEFwZXguX2NoYXJ0SW5zdGFuY2VzLmZpbHRlcigoZnVuY3Rpb24odCl7aWYodC5ncm91cClyZXR1cm4hMH0pKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LncuY29uZmlnLmNoYXJ0Lmdyb3VwPT09ZS5ncm91cD9lLmNoYXJ0OnR9KSl9fSx7a2V5OiJ0b2dnbGVTZXJpZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlcmllcy50b2dnbGVTZXJpZXModCl9fSx7a2V5OiJoaWdobGlnaHRTZXJpZXNPbkxlZ2VuZEhvdmVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnNlcmllcy50b2dnbGVTZXJpZXNPbkhvdmVyKHQsZSl9fSx7a2V5OiJzaG93U2VyaWVzIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnNlcmllcy5zaG93U2VyaWVzKHQpfX0se2tleToiaGlkZVNlcmllcyIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5zZXJpZXMuaGlkZVNlcmllcyh0KX19LHtrZXk6InJlc2V0U2VyaWVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO3RoaXMuc2VyaWVzLnJlc2V0U2VyaWVzKHQsZSl9fSx7a2V5OiJhZGRFdmVudExpc3RlbmVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuZXZlbnRzLmFkZEV2ZW50TGlzdGVuZXIodCxlKX19LHtrZXk6InJlbW92ZUV2ZW50TGlzdGVuZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5ldmVudHMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUpfX0se2tleToiYWRkWGF4aXNBbm5vdGF0aW9uIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnZvaWQgMCxzPXRoaXM7aSYmKHM9aSkscy5hbm5vdGF0aW9ucy5hZGRYYXhpc0Fubm90YXRpb25FeHRlcm5hbCh0LGUscyl9fSx7a2V5OiJhZGRZYXhpc0Fubm90YXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dm9pZCAwLHM9dGhpcztpJiYocz1pKSxzLmFubm90YXRpb25zLmFkZFlheGlzQW5ub3RhdGlvbkV4dGVybmFsKHQsZSxzKX19LHtrZXk6ImFkZFBvaW50QW5ub3RhdGlvbiIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp2b2lkIDAscz10aGlzO2kmJihzPWkpLHMuYW5ub3RhdGlvbnMuYWRkUG9pbnRBbm5vdGF0aW9uRXh0ZXJuYWwodCxlLHMpfX0se2tleToiY2xlYXJBbm5vdGF0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dm9pZCAwLGU9dGhpczt0JiYoZT10KSxlLmFubm90YXRpb25zLmNsZWFyQW5ub3RhdGlvbnMoZSl9fSx7a2V5OiJyZW1vdmVBbm5vdGF0aW9uIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dm9pZCAwLGk9dGhpcztlJiYoaT1lKSxpLmFubm90YXRpb25zLnJlbW92ZUFubm90YXRpb24oaSx0KX19LHtrZXk6ImdldENoYXJ0QXJlYSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1pbm5lciIpfX0se2tleToiZ2V0U2VyaWVzVG90YWxYUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY29yZVV0aWxzLmdldFNlcmllc1RvdGFsc1hSYW5nZSh0LGUpfX0se2tleToiZ2V0SGlnaGVzdFZhbHVlSW5TZXJpZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjAsZT1uZXcgWih0aGlzLmN0eCk7cmV0dXJuIGUuZ2V0TWluWU1heFkodCkuaGlnaGVzdFl9fSx7a2V5OiJnZXRMb3dlc3RWYWx1ZUluU2VyaWVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9bmV3IFoodGhpcy5jdHgpO3JldHVybiBlLmdldE1pbllNYXhZKHQpLmxvd2VzdFl9fSx7a2V5OiJnZXRTZXJpZXNUb3RhbCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuc2VyaWVzVG90YWxzfX0se2tleToidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnVwZGF0ZUhlbHBlcnMudG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uKHQsZSl9fSx7a2V5OiJ6b29tWCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmN0eC50b29sYmFyLnpvb21VcGRhdGVPcHRpb25zKHQsZSl9fSx7a2V5OiJzZXRMb2NhbGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMubG9jYWxpemF0aW9uLnNldEN1cnJlbnRMb2NhbGVWYWx1ZXModCl9fSx7a2V5OiJkYXRhVVJJIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGoodGhpcy5jdHgpLmRhdGFVUkkodCl9fSx7a2V5OiJleHBvcnRUb0NTViIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sZT1uZXcgaih0aGlzLmN0eCk7cmV0dXJuIGUuZXhwb3J0VG9DU1YodCl9fSx7a2V5OiJwYXBlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyfX0se2tleToiX3BhcmVudFJlc2l6ZUNhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudy5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkJiZ0aGlzLncuY29uZmlnLmNoYXJ0LnJlZHJhd09uUGFyZW50UmVzaXplJiZ0aGlzLl93aW5kb3dSZXNpemUoKX19LHtrZXk6Il93aW5kb3dSZXNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztjbGVhclRpbWVvdXQodGhpcy53Lmdsb2JhbHMucmVzaXplVGltZXIpLHRoaXMudy5nbG9iYWxzLnJlc2l6ZVRpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3Qudy5nbG9iYWxzLnJlc2l6ZWQ9ITAsdC53Lmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITEsdC5jdHgudXBkYXRlKCl9KSwxNTApfX0se2tleToiX3dpbmRvd1Jlc2l6ZUhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LmNvbmZpZy5jaGFydC5yZWRyYXdPbldpbmRvd1Jlc2l6ZTsiZnVuY3Rpb24iPT10eXBlb2YgdCYmKHQ9dCgpKSx0JiZ0aGlzLl93aW5kb3dSZXNpemUoKX19XSxbe2tleToiZ2V0Q2hhcnRCeUlEIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1iLmVzY2FwZVN0cmluZyh0KSxpPUFwZXguX2NoYXJ0SW5zdGFuY2VzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQ9PT1lfSkpWzBdO3JldHVybiBpJiZpLmNoYXJ0fX0se2tleToiaW5pdE9uTG9hZCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtYXBleGNoYXJ0c10iKSxpPTA7aTxlLmxlbmd0aDtpKyspbmV3IHQoZVtpXSxKU09OLnBhcnNlKGVbaV0uZ2V0QXR0cmlidXRlKCJkYXRhLW9wdGlvbnMiKSkpLnJlbmRlcigpfX0se2tleToiZXhlYyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmdldENoYXJ0QnlJRCh0KTtpZihpKXtpLncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQ9ITA7dmFyIHM9bnVsbDtpZigtMSE9PWkucHVibGljTWV0aG9kcy5pbmRleE9mKGUpKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheShhPjI/YS0yOjApLHI9MjtyPGE7cisrKW5bci0yXT1hcmd1bWVudHNbcl07cz1pW2VdLmFwcGx5KGksbil9cmV0dXJuIHN9fX0se2tleToibWVyZ2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGIuZXh0ZW5kKHQsZSl9fV0pLHR9KCk7dC5leHBvcnRzPSR0fSw5MzU6ZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0Ijthc3luYyBmdW5jdGlvbiBzKHQsZT1udWxsKXt0LmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpLGF3YWl0IG4oImVudGVyIix0LGUpfWFzeW5jIGZ1bmN0aW9uIGEodCxlPW51bGwpe2F3YWl0IG4oImxlYXZlIix0LGUpLHQuY2xhc3NMaXN0LmFkZCgiaGlkZGVuIil9YXN5bmMgZnVuY3Rpb24gbih0LGUsaSl7Y29uc3Qgcz1lLmRhdGFzZXQsYT1pP2Ake2l9LSR7dH1gOnQ7bGV0IG49YHRyYW5zaXRpb24ke3QuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKX1gO2NvbnN0IGw9c1tuXT9zW25dLnNwbGl0KCIgIik6W2FdLGM9c1tgJHtufVN0YXJ0YF0/c1tgJHtufVN0YXJ0YF0uc3BsaXQoIiAiKTpbYCR7YX0tc3RhcnRgXSxoPXNbYCR7bn1FbmRgXT9zW2Ake259RW5kYF0uc3BsaXQoIiAiKTpbYCR7YX0tZW5kYF07cihlLGwpLHIoZSxjKSxhd2FpdCBuZXcgUHJvbWlzZSgodD0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCl9KSl9KSksbyhlLGMpLHIoZSxoKSxhd2FpdCBmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFByb21pc2UoKGU9Pntjb25zdCBpPWdldENvbXB1dGVkU3R5bGUodCkudHJhbnNpdGlvbkR1cmF0aW9uLnNwbGl0KCIsIilbMF0scz0xZTMqTnVtYmVyKGkucmVwbGFjZSgicyIsIiIpKTtzZXRUaW1lb3V0KCgoKT0+e2UoKX0pLHMpfSkpfShlKSxvKGUsaCksbyhlLGwpfWZ1bmN0aW9uIHIodCxlKXt0LmNsYXNzTGlzdC5hZGQoLi4uZSl9ZnVuY3Rpb24gbyh0LGUpe3QuY2xhc3NMaXN0LnJlbW92ZSguLi5lKX1pLmQoZSx7SU86ZnVuY3Rpb24oKXtyZXR1cm4gc30sWnU6ZnVuY3Rpb24oKXtyZXR1cm4gYX19KX0sMjMwOmZ1bmN0aW9uKHQpe3QuZXhwb3J0cz0ib2JqZWN0Ij09dHlwZW9mIHNlbGY/c2VsZi5Gb3JtRGF0YTp3aW5kb3cuRm9ybURhdGF9LDEzMTpmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHModCl7cmV0dXJuIHM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHModCl9ZnVuY3Rpb24gYSh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG4odCxlKXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIHM9ZVtpXTtzLmVudW1lcmFibGU9cy5lbnVtZXJhYmxlfHwhMSxzLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gcyYmKHMud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHMua2V5LHMpfX1mdW5jdGlvbiByKHQsZSxpKXtyZXR1cm4gZSYmbih0LnByb3RvdHlwZSxlKSxpJiZuKHQsaSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH1mdW5jdGlvbiBvKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGUmJmModCxlKX1mdW5jdGlvbiBsKHQpe3JldHVybiBsPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpfSxsKHQpfWZ1bmN0aW9uIGModCxlKXtyZXR1cm4gYz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9LGModCxlKX1mdW5jdGlvbiBoKHQsZSl7aWYobnVsbD09dClyZXR1cm57fTt2YXIgaSxzLGE9ZnVuY3Rpb24odCxlKXtpZihudWxsPT10KXJldHVybnt9O3ZhciBpLHMsYT17fSxuPU9iamVjdC5rZXlzKHQpO2ZvcihzPTA7czxuLmxlbmd0aDtzKyspaT1uW3NdLGUuaW5kZXhPZihpKT49MHx8KGFbaV09dFtpXSk7cmV0dXJuIGF9KHQsZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtmb3Iocz0wO3M8bi5sZW5ndGg7cysrKWk9bltzXSxlLmluZGV4T2YoaSk+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0LGkpJiYoYVtpXT10W2ldKX1yZXR1cm4gYX1mdW5jdGlvbiBkKHQsZSl7aWYoZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpKXJldHVybiBlO2lmKHZvaWQgMCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiB0fSh0KX1mdW5jdGlvbiB1KHQpe3ZhciBlPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaSxzPWwodCk7aWYoZSl7dmFyIGE9bCh0aGlzKS5jb25zdHJ1Y3RvcjtpPVJlZmxlY3QuY29uc3RydWN0KHMsYXJndW1lbnRzLGEpfWVsc2UgaT1zLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZCh0aGlzLGkpfX1mdW5jdGlvbiBwKHQsZSl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJm51bGwhPT0odD1sKHQpKTspO3JldHVybiB0fWZ1bmN0aW9uIGcoKXtyZXR1cm4gZz0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9cCh0LGUpO2lmKHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocyxlKTtyZXR1cm4gYS5nZXQ/YS5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/dDppKTphLnZhbHVlfX0sZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gZih0LGUsaSxzKXtyZXR1cm4gZj0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3Quc2V0P1JlZmxlY3Quc2V0OmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhLG49cCh0LGUpO2lmKG4pe2lmKChhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSkuc2V0KXJldHVybiBhLnNldC5jYWxsKHMsaSksITA7aWYoIWEud3JpdGFibGUpcmV0dXJuITF9aWYoYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHMsZSkpe2lmKCFhLndyaXRhYmxlKXJldHVybiExO2EudmFsdWU9aSxPYmplY3QuZGVmaW5lUHJvcGVydHkocyxlLGEpfWVsc2UhZnVuY3Rpb24odCxlLGkpe2UgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTppLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1pfShzLGUsaSk7cmV0dXJuITB9LGYodCxlLGkscyl9ZnVuY3Rpb24gbSh0LGUsaSxzLGEpe2lmKCFmKHQsZSxpLHN8fHQpJiZhKXRocm93IG5ldyBFcnJvcigiZmFpbGVkIHRvIHNldCBwcm9wZXJ0eSIpO3JldHVybiBpfWZ1bmN0aW9uIHYodCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIGk9bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1pKXt2YXIgcyxhLG49W10scj0hMCxvPSExO3RyeXtmb3IoaT1pLmNhbGwodCk7IShyPShzPWkubmV4dCgpKS5kb25lKSYmKG4ucHVzaChzLnZhbHVlKSwhZXx8bi5sZW5ndGghPT1lKTtyPSEwKTt9Y2F0Y2godCl7bz0hMCxhPXR9ZmluYWxseXt0cnl7cnx8bnVsbD09aS5yZXR1cm58fGkucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IGF9fXJldHVybiBufX0odCxlKXx8eCh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24geCh0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gYih0LGUpO3ZhciBpPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PWkmJnQuY29uc3RydWN0b3ImJihpPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1pfHwiU2V0Ij09PWk/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PWl8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGkpP2IodCxlKTp2b2lkIDB9fWZ1bmN0aW9uIGIodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIGk9MCxzPW5ldyBBcnJheShlKTtpPGU7aSsrKXNbaV09dFtpXTtyZXR1cm4gc31pLmQoZSx7WlA6ZnVuY3Rpb24oKXtyZXR1cm4gRn19KTt2YXIgeT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLE9iamVjdC5hc3NpZ24odGhpcyx7aW5zZXJ0ZWQ6IiIscmF3SW5zZXJ0ZWQ6IiIsc2tpcDohMSx0YWlsU2hpZnQ6MH0sZSl9cmV0dXJuIHIodCxbe2tleToiYWdncmVnYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yYXdJbnNlcnRlZCs9dC5yYXdJbnNlcnRlZCx0aGlzLnNraXA9dGhpcy5za2lwfHx0LnNraXAsdGhpcy5pbnNlcnRlZCs9dC5pbnNlcnRlZCx0aGlzLnRhaWxTaGlmdCs9dC50YWlsU2hpZnQsdGhpc319LHtrZXk6Im9mZnNldCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFpbFNoaWZ0K3RoaXMuaW5zZXJ0ZWQubGVuZ3RofX1dKSx0fSgpO2Z1bmN0aW9uIHcodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgU3RyaW5nfXZhciBrPSJOT05FIixTPSJMRUZUIixDPSJGT1JDRV9MRUZUIixBPSJSSUdIVCIsRT0iRk9SQ0VfUklHSFQiO2Z1bmN0aW9uIFQodCl7c3dpdGNoKHQpe2Nhc2UgUzpyZXR1cm4gQztjYXNlIEE6cmV0dXJuIEU7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gTCh0KXtyZXR1cm4gdC5yZXBsYWNlKC8oWy4qKz9ePSE6JHt9KCl8W1xdXC9cXF0pL2csIlxcJDEiKX1mdW5jdGlvbiBQKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3Q6W3QsbmV3IHldfWZ1bmN0aW9uIE0odCxlKXtpZihlPT09dClyZXR1cm4hMDt2YXIgaSxhPUFycmF5LmlzQXJyYXkoZSksbj1BcnJheS5pc0FycmF5KHQpO2lmKGEmJm4pe2lmKGUubGVuZ3RoIT10Lmxlbmd0aClyZXR1cm4hMTtmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWlmKCFNKGVbaV0sdFtpXSkpcmV0dXJuITE7cmV0dXJuITB9aWYoYSE9bilyZXR1cm4hMTtpZihlJiZ0JiYib2JqZWN0Ij09PXMoZSkmJiJvYmplY3QiPT09cyh0KSl7dmFyIHI9ZSBpbnN0YW5jZW9mIERhdGUsbz10IGluc3RhbmNlb2YgRGF0ZTtpZihyJiZvKXJldHVybiBlLmdldFRpbWUoKT09dC5nZXRUaW1lKCk7aWYociE9bylyZXR1cm4hMTt2YXIgbD1lIGluc3RhbmNlb2YgUmVnRXhwLGM9dCBpbnN0YW5jZW9mIFJlZ0V4cDtpZihsJiZjKXJldHVybiBlLnRvU3RyaW5nKCk9PXQudG9TdHJpbmcoKTtpZihsIT1jKXJldHVybiExO3ZhciBoPU9iamVjdC5rZXlzKGUpO2ZvcihpPTA7aTxoLmxlbmd0aDtpKyspaWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGhbaV0pKXJldHVybiExO2ZvcihpPTA7aTxoLmxlbmd0aDtpKyspaWYoIU0odFtoW2ldXSxlW2hbaV1dKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hKCFlfHwhdHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0KSYmZS50b1N0cmluZygpPT09dC50b1N0cmluZygpfXZhciBPPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkscyxuKXtmb3IoYSh0aGlzLHQpLHRoaXMudmFsdWU9ZSx0aGlzLmN1cnNvclBvcz1pLHRoaXMub2xkVmFsdWU9cyx0aGlzLm9sZFNlbGVjdGlvbj1uO3RoaXMudmFsdWUuc2xpY2UoMCx0aGlzLnN0YXJ0Q2hhbmdlUG9zKSE9PXRoaXMub2xkVmFsdWUuc2xpY2UoMCx0aGlzLnN0YXJ0Q2hhbmdlUG9zKTspLS10aGlzLm9sZFNlbGVjdGlvbi5zdGFydH1yZXR1cm4gcih0LFt7a2V5OiJzdGFydENoYW5nZVBvcyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWluKHRoaXMuY3Vyc29yUG9zLHRoaXMub2xkU2VsZWN0aW9uLnN0YXJ0KX19LHtrZXk6Imluc2VydGVkQ291bnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnNvclBvcy10aGlzLnN0YXJ0Q2hhbmdlUG9zfX0se2tleToiaW5zZXJ0ZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLnN1YnN0cih0aGlzLnN0YXJ0Q2hhbmdlUG9zLHRoaXMuaW5zZXJ0ZWRDb3VudCl9fSx7a2V5OiJyZW1vdmVkQ291bnQiLGdldDpmdW5jdGlvbigpe3JldHVybiBNYXRoLm1heCh0aGlzLm9sZFNlbGVjdGlvbi5lbmQtdGhpcy5zdGFydENoYW5nZVBvc3x8dGhpcy5vbGRWYWx1ZS5sZW5ndGgtdGhpcy52YWx1ZS5sZW5ndGgsMCl9fSx7a2V5OiJyZW1vdmVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbGRWYWx1ZS5zdWJzdHIodGhpcy5zdGFydENoYW5nZVBvcyx0aGlzLnJlbW92ZWRDb3VudCl9fSx7a2V5OiJoZWFkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZS5zdWJzdHJpbmcoMCx0aGlzLnN0YXJ0Q2hhbmdlUG9zKX19LHtrZXk6InRhaWwiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLnN1YnN0cmluZyh0aGlzLnN0YXJ0Q2hhbmdlUG9zK3RoaXMuaW5zZXJ0ZWRDb3VudCl9fSx7a2V5OiJyZW1vdmVEaXJlY3Rpb24iLGdldDpmdW5jdGlvbigpe3JldHVybiF0aGlzLnJlbW92ZWRDb3VudHx8dGhpcy5pbnNlcnRlZENvdW50P2s6dGhpcy5vbGRTZWxlY3Rpb24uZW5kIT09dGhpcy5jdXJzb3JQb3MmJnRoaXMub2xkU2VsZWN0aW9uLnN0YXJ0IT09dGhpcy5jdXJzb3JQb3N8fHRoaXMub2xkU2VsZWN0aW9uLmVuZCE9PXRoaXMub2xkU2VsZWN0aW9uLnN0YXJ0P1M6QX19XSksdH0oKSxJPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiIixpPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowLHM9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDA7YSh0aGlzLHQpLHRoaXMudmFsdWU9ZSx0aGlzLmZyb209aSx0aGlzLnN0b3A9c31yZXR1cm4gcih0LFt7a2V5OiJ0b1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX19LHtrZXk6ImV4dGVuZCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy52YWx1ZSs9U3RyaW5nKHQpfX0se2tleToiYXBwZW5kVG8iLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFwcGVuZCh0aGlzLnRvU3RyaW5nKCkse3RhaWw6ITB9KS5hZ2dyZWdhdGUodC5fYXBwZW5kUGxhY2Vob2xkZXIoKSl9fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue3ZhbHVlOnRoaXMudmFsdWUsZnJvbTp0aGlzLmZyb20sc3RvcDp0aGlzLnN0b3B9fSxzZXQ6ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLHQpfX0se2tleToidW5zaGlmdCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIXRoaXMudmFsdWUubGVuZ3RofHxudWxsIT10JiZ0aGlzLmZyb20+PXQpcmV0dXJuIiI7dmFyIGU9dGhpcy52YWx1ZVswXTtyZXR1cm4gdGhpcy52YWx1ZT10aGlzLnZhbHVlLnNsaWNlKDEpLGV9fSx7a2V5OiJzaGlmdCIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy52YWx1ZS5sZW5ndGgpcmV0dXJuIiI7dmFyIHQ9dGhpcy52YWx1ZVt0aGlzLnZhbHVlLmxlbmd0aC0xXTtyZXR1cm4gdGhpcy52YWx1ZT10aGlzLnZhbHVlLnNsaWNlKDAsLTEpLHR9fV0pLHR9KCk7ZnVuY3Rpb24gRih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuIG5ldyBGLklucHV0TWFzayh0LGUpfXZhciBEPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5fdmFsdWU9IiIsdGhpcy5fdXBkYXRlKE9iamVjdC5hc3NpZ24oe30sdC5ERUZBVUxUUyxlKSksdGhpcy5pc0luaXRpYWxpemVkPSEwfXJldHVybiByKHQsW3trZXk6InVwZGF0ZU9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe09iamVjdC5rZXlzKHQpLmxlbmd0aCYmdGhpcy53aXRoVmFsdWVSZWZyZXNoKHRoaXMuX3VwZGF0ZS5iaW5kKHRoaXMsdCkpfX0se2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLHQpfX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybntfdmFsdWU6dGhpcy52YWx1ZX19LHNldDpmdW5jdGlvbih0KXt0aGlzLl92YWx1ZT10Ll92YWx1ZX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3ZhbHVlPSIifX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMucmVzb2x2ZSh0KX19LHtrZXk6InJlc29sdmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlc2V0KCksdGhpcy5hcHBlbmQodCx7aW5wdXQ6ITB9LCIiKSx0aGlzLmRvQ29tbWl0KCksdGhpcy52YWx1ZX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZXNldCgpLHRoaXMuYXBwZW5kKHQse30sIiIpLHRoaXMuZG9Db21taXQoKX19LHtrZXk6InR5cGVkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvUGFyc2UodGhpcy52YWx1ZSl9LHNldDpmdW5jdGlvbih0KXt0aGlzLnZhbHVlPXRoaXMuZG9Gb3JtYXQodCl9fSx7a2V5OiJyYXdJbnB1dFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5leHRyYWN0SW5wdXQoMCx0aGlzLnZhbHVlLmxlbmd0aCx7cmF3OiEwfSl9LHNldDpmdW5jdGlvbih0KXt0aGlzLnJlc2V0KCksdGhpcy5hcHBlbmQodCx7cmF3OiEwfSwiIiksdGhpcy5kb0NvbW1pdCgpfX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OiJpc0ZpbGxlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNDb21wbGV0ZX19LHtrZXk6Im5lYXJlc3RJbnB1dFBvcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdH19LHtrZXk6ImV4dHJhY3RJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aDtyZXR1cm4gdGhpcy52YWx1ZS5zbGljZSh0LGUpfX0se2tleToiZXh0cmFjdFRhaWwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGg7cmV0dXJuIG5ldyBJKHRoaXMuZXh0cmFjdElucHV0KHQsZSksdCl9fSx7a2V5OiJhcHBlbmRUYWlsIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdyh0KSYmKHQ9bmV3IEkoU3RyaW5nKHQpKSksdC5hcHBlbmRUbyh0aGlzKX19LHtrZXk6Il9hcHBlbmRDaGFyUmF3Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdD8odGhpcy5fdmFsdWUrPXQsbmV3IHkoe2luc2VydGVkOnQscmF3SW5zZXJ0ZWQ6dH0pKTpuZXcgeX19LHtrZXk6Il9hcHBlbmRDaGFyIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxzPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwLGE9dGhpcy5zdGF0ZSxuPVAodGhpcy5kb1ByZXBhcmUodCxpKSkscj12KG4sMik7aWYodD1yWzBdLChlPShlPXJbMV0pLmFnZ3JlZ2F0ZSh0aGlzLl9hcHBlbmRDaGFyUmF3KHQsaSkpKS5pbnNlcnRlZCl7dmFyIG8sbD0hMSE9PXRoaXMuZG9WYWxpZGF0ZShpKTtpZihsJiZudWxsIT1zKXt2YXIgYz10aGlzLnN0YXRlOyEwPT09dGhpcy5vdmVyd3JpdGUmJihvPXMuc3RhdGUscy51bnNoaWZ0KHRoaXMudmFsdWUubGVuZ3RoKSk7dmFyIGg9dGhpcy5hcHBlbmRUYWlsKHMpOyhsPWgucmF3SW5zZXJ0ZWQ9PT1zLnRvU3RyaW5nKCkpJiZoLmluc2VydGVkfHwic2hpZnQiIT09dGhpcy5vdmVyd3JpdGV8fCh0aGlzLnN0YXRlPWMsbz1zLnN0YXRlLHMuc2hpZnQoKSxsPShoPXRoaXMuYXBwZW5kVGFpbChzKSkucmF3SW5zZXJ0ZWQ9PT1zLnRvU3RyaW5nKCkpLGwmJmguaW5zZXJ0ZWQmJih0aGlzLnN0YXRlPWMpfWx8fChlPW5ldyB5LHRoaXMuc3RhdGU9YSxzJiZvJiYocy5zdGF0ZT1vKSl9cmV0dXJuIGV9fSx7a2V5OiJfYXBwZW5kUGxhY2Vob2xkZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB5fX0se2tleToiX2FwcGVuZEVhZ2VyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgeX19LHtrZXk6ImFwcGVuZCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe2lmKCF3KHQpKXRocm93IG5ldyBFcnJvcigidmFsdWUgc2hvdWxkIGJlIHN0cmluZyIpO3ZhciBzPW5ldyB5LGE9dyhpKT9uZXcgSShTdHJpbmcoaSkpOmk7bnVsbCE9ZSYmZS50YWlsJiYoZS5fYmVmb3JlVGFpbFN0YXRlPXRoaXMuc3RhdGUpO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7KytuKXMuYWdncmVnYXRlKHRoaXMuX2FwcGVuZENoYXIodFtuXSxlLGEpKTtyZXR1cm4gbnVsbCE9YSYmKHMudGFpbFNoaWZ0Kz10aGlzLmFwcGVuZFRhaWwoYSkudGFpbFNoaWZ0KSx0aGlzLmVhZ2VyJiZudWxsIT1lJiZlLmlucHV0JiZ0JiZzLmFnZ3JlZ2F0ZSh0aGlzLl9hcHBlbmRFYWdlcigpKSxzfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoO3JldHVybiB0aGlzLl92YWx1ZT10aGlzLnZhbHVlLnNsaWNlKDAsdCkrdGhpcy52YWx1ZS5zbGljZShlKSxuZXcgeX19LHtrZXk6IndpdGhWYWx1ZVJlZnJlc2giLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX3JlZnJlc2hpbmd8fCF0aGlzLmlzSW5pdGlhbGl6ZWQpcmV0dXJuIHQoKTt0aGlzLl9yZWZyZXNoaW5nPSEwO3ZhciBlPXRoaXMucmF3SW5wdXRWYWx1ZSxpPXRoaXMudmFsdWUscz10KCk7cmV0dXJuIHRoaXMucmF3SW5wdXRWYWx1ZT1lLHRoaXMudmFsdWUmJnRoaXMudmFsdWUhPT1pJiYwPT09aS5pbmRleE9mKHRoaXMudmFsdWUpJiZ0aGlzLmFwcGVuZChpLnNsaWNlKHRoaXMudmFsdWUubGVuZ3RoKSx7fSwiIiksZGVsZXRlIHRoaXMuX3JlZnJlc2hpbmcsc319LHtrZXk6InJ1bklzb2xhdGVkIix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLl9pc29sYXRlZHx8IXRoaXMuaXNJbml0aWFsaXplZClyZXR1cm4gdCh0aGlzKTt0aGlzLl9pc29sYXRlZD0hMDt2YXIgZT10aGlzLnN0YXRlLGk9dCh0aGlzKTtyZXR1cm4gdGhpcy5zdGF0ZT1lLGRlbGV0ZSB0aGlzLl9pc29sYXRlZCxpfX0se2tleToiZG9QcmVwYXJlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuIHRoaXMucHJlcGFyZT90aGlzLnByZXBhcmUodCx0aGlzLGUpOnR9fSx7a2V5OiJkb1ZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4oIXRoaXMudmFsaWRhdGV8fHRoaXMudmFsaWRhdGUodGhpcy52YWx1ZSx0aGlzLHQpKSYmKCF0aGlzLnBhcmVudHx8dGhpcy5wYXJlbnQuZG9WYWxpZGF0ZSh0KSl9fSx7a2V5OiJkb0NvbW1pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbW1pdCYmdGhpcy5jb21taXQodGhpcy52YWx1ZSx0aGlzKX19LHtrZXk6ImRvRm9ybWF0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mb3JtYXQ/dGhpcy5mb3JtYXQodCx0aGlzKTp0fX0se2tleToiZG9QYXJzZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyc2U/dGhpcy5wYXJzZSh0LHRoaXMpOnR9fSx7a2V5OiJzcGxpY2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBhLG49YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOntpbnB1dDohMH0scj10K2Usbz10aGlzLmV4dHJhY3RUYWlsKHIpO3RoaXMuZWFnZXImJihzPVQocyksYT10aGlzLmV4dHJhY3RJbnB1dCgwLHIse3JhdzohMH0pKTt2YXIgbD10aGlzLm5lYXJlc3RJbnB1dFBvcyh0LGU+MSYmMCE9PXQmJiF0aGlzLmVhZ2VyP2s6cyksYz1uZXcgeSh7dGFpbFNoaWZ0OmwtdH0pLmFnZ3JlZ2F0ZSh0aGlzLnJlbW92ZShsKSk7aWYodGhpcy5lYWdlciYmcyE9PWsmJmE9PT10aGlzLnJhd0lucHV0VmFsdWUpaWYocz09PUMpZm9yKHZhciBoO2E9PT10aGlzLnJhd0lucHV0VmFsdWUmJihoPXRoaXMudmFsdWUubGVuZ3RoKTspYy5hZ2dyZWdhdGUobmV3IHkoe3RhaWxTaGlmdDotMX0pKS5hZ2dyZWdhdGUodGhpcy5yZW1vdmUoaC0xKSk7ZWxzZSBzPT09RSYmby51bnNoaWZ0KCk7cmV0dXJuIGMuYWdncmVnYXRlKHRoaXMuYXBwZW5kKGksbixvKSl9fSx7a2V5OiJtYXNrRXF1YWxzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXNrPT09dH19LHtrZXk6InR5cGVkVmFsdWVFcXVhbHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMudHlwZWRWYWx1ZTtyZXR1cm4gZT09PWl8fHQuRU1QVFlfVkFMVUVTLmluY2x1ZGVzKGUpJiZ0LkVNUFRZX1ZBTFVFUy5pbmNsdWRlcyhpKXx8dGhpcy5kb0Zvcm1hdChlKT09PXRoaXMuZG9Gb3JtYXQodGhpcy50eXBlZFZhbHVlKX19XSksdH0oKTtmdW5jdGlvbiB6KHQpe2lmKG51bGw9PXQpdGhyb3cgbmV3IEVycm9yKCJtYXNrIHByb3BlcnR5IHNob3VsZCBiZSBkZWZpbmVkIik7cmV0dXJuIHQgaW5zdGFuY2VvZiBSZWdFeHA/Ri5NYXNrZWRSZWdFeHA6dyh0KT9GLk1hc2tlZFBhdHRlcm46dCBpbnN0YW5jZW9mIERhdGV8fHQ9PT1EYXRlP0YuTWFza2VkRGF0ZTp0IGluc3RhbmNlb2YgTnVtYmVyfHwibnVtYmVyIj09dHlwZW9mIHR8fHQ9PT1OdW1iZXI/Ri5NYXNrZWROdW1iZXI6QXJyYXkuaXNBcnJheSh0KXx8dD09PUFycmF5P0YuTWFza2VkRHluYW1pYzpGLk1hc2tlZCYmdC5wcm90b3R5cGUgaW5zdGFuY2VvZiBGLk1hc2tlZD90OnQgaW5zdGFuY2VvZiBGLk1hc2tlZD90LmNvbnN0cnVjdG9yOnQgaW5zdGFuY2VvZiBGdW5jdGlvbj9GLk1hc2tlZEZ1bmN0aW9uOihjb25zb2xlLndhcm4oIk1hc2sgbm90IGZvdW5kIGZvciBtYXNrIix0KSxGLk1hc2tlZCl9ZnVuY3Rpb24gTih0KXtpZihGLk1hc2tlZCYmdCBpbnN0YW5jZW9mIEYuTWFza2VkKXJldHVybiB0O3ZhciBlPSh0PU9iamVjdC5hc3NpZ24oe30sdCkpLm1hc2s7aWYoRi5NYXNrZWQmJmUgaW5zdGFuY2VvZiBGLk1hc2tlZClyZXR1cm4gZTt2YXIgaT16KGUpO2lmKCFpKXRocm93IG5ldyBFcnJvcigiTWFza2VkIGNsYXNzIGlzIG5vdCBmb3VuZCBmb3IgcHJvdmlkZWQgbWFzaywgYXBwcm9wcmlhdGUgbW9kdWxlIG5lZWRzIHRvIGJlIGltcG9ydCBtYW51YWxseSBiZWZvcmUgY3JlYXRpbmcgbWFzay4iKTtyZXR1cm4gbmV3IGkodCl9RC5ERUZBVUxUUz17Zm9ybWF0OmZ1bmN0aW9uKHQpe3JldHVybiB0fSxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gdH19LEQuRU1QVFlfVkFMVUVTPVt2b2lkIDAsbnVsbCwiIl0sRi5NYXNrZWQ9RCxGLmNyZWF0ZU1hc2s9Tjt2YXIgUj1bIm1hc2siXSxfPXswOi9cZC8sYTovW1x1MDA0MS1cdTAwNUFcdTAwNjEtXHUwMDdBXHUwMEFBXHUwMEI1XHUwMEJBXHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkMxXHUwMkM2LVx1MDJEMVx1MDJFMC1cdTAyRTRcdTAyRUNcdTAyRUVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdBLVx1MDM3RFx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwM0ExXHUwM0EzLVx1MDNGNVx1MDNGNy1cdTA0ODFcdTA0OEEtXHUwNTI3XHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1RDAtXHUwNUVBXHUwNUYwLVx1MDVGMlx1MDYyMC1cdTA2NEFcdTA2NkVcdTA2NkZcdTA2NzEtXHUwNkQzXHUwNkQ1XHUwNkU1XHUwNkU2XHUwNkVFXHUwNkVGXHUwNkZBLVx1MDZGQ1x1MDZGRlx1MDcxMFx1MDcxMi1cdTA3MkZcdTA3NEQtXHUwN0E1XHUwN0IxXHUwN0NBLVx1MDdFQVx1MDdGNFx1MDdGNVx1MDdGQVx1MDgwMC1cdTA4MTVcdTA4MUFcdTA4MjRcdTA4MjhcdTA4NDAtXHUwODU4XHUwOEEwXHUwOEEyLVx1MDhBQ1x1MDkwNC1cdTA5MzlcdTA5M0RcdTA5NTBcdTA5NTgtXHUwOTYxXHUwOTcxLVx1MDk3N1x1MDk3OS1cdTA5N0ZcdTA5ODUtXHUwOThDXHUwOThGXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJEXHUwOUNFXHUwOURDXHUwOUREXHUwOURGLVx1MDlFMVx1MDlGMFx1MDlGMVx1MEEwNS1cdTBBMEFcdTBBMEZcdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1MEEzMFx1MEEzMlx1MEEzM1x1MEEzNVx1MEEzNlx1MEEzOFx1MEEzOVx1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNzItXHUwQTc0XHUwQTg1LVx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUwQUFBLVx1MEFCMFx1MEFCMlx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkRcdTBBRDBcdTBBRTBcdTBBRTFcdTBCMDUtXHUwQjBDXHUwQjBGXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzJcdTBCMzNcdTBCMzUtXHUwQjM5XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI3MVx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OVx1MEI5QVx1MEI5Q1x1MEI5RVx1MEI5Rlx1MEJBM1x1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI5XHUwQkQwXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzM1x1MEMzNS1cdTBDMzlcdTBDM0RcdTBDNThcdTBDNTlcdTBDNjBcdTBDNjFcdTBDODUtXHUwQzhDXHUwQzhFLVx1MEM5MFx1MEM5Mi1cdTBDQThcdTBDQUEtXHUwQ0IzXHUwQ0I1LVx1MENCOVx1MENCRFx1MENERVx1MENFMFx1MENFMVx1MENGMVx1MENGMlx1MEQwNS1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQzQVx1MEQzRFx1MEQ0RVx1MEQ2MFx1MEQ2MVx1MEQ3QS1cdTBEN0ZcdTBEODUtXHUwRDk2XHUwRDlBLVx1MERCMVx1MERCMy1cdTBEQkJcdTBEQkRcdTBEQzAtXHUwREM2XHUwRTAxLVx1MEUzMFx1MEUzMlx1MEUzM1x1MEU0MC1cdTBFNDZcdTBFODFcdTBFODJcdTBFODRcdTBFODdcdTBFODhcdTBFOEFcdTBFOERcdTBFOTQtXHUwRTk3XHUwRTk5LVx1MEU5Rlx1MEVBMS1cdTBFQTNcdTBFQTVcdTBFQTdcdTBFQUFcdTBFQUJcdTBFQUQtXHUwRUIwXHUwRUIyXHUwRUIzXHUwRUJEXHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVEQy1cdTBFREZcdTBGMDBcdTBGNDAtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY4OC1cdTBGOENcdTEwMDAtXHUxMDJBXHUxMDNGXHUxMDUwLVx1MTA1NVx1MTA1QS1cdTEwNURcdTEwNjFcdTEwNjVcdTEwNjZcdTEwNkUtXHUxMDcwXHUxMDc1LVx1MTA4MVx1MTA4RVx1MTBBMC1cdTEwQzVcdTEwQzdcdTEwQ0RcdTEwRDAtXHUxMEZBXHUxMEZDLVx1MTI0OFx1MTI0QS1cdTEyNERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1MTI2MC1cdTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEyQjVcdTEyQjgtXHUxMkJFXHUxMkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNUFcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNFx1MTQwMS1cdTE2NkNcdTE2NkYtXHUxNjdGXHUxNjgxLVx1MTY5QVx1MTZBMC1cdTE2RUFcdTE3MDAtXHUxNzBDXHUxNzBFLVx1MTcxMVx1MTcyMC1cdTE3MzFcdTE3NDAtXHUxNzUxXHUxNzYwLVx1MTc2Q1x1MTc2RS1cdTE3NzBcdTE3ODAtXHUxN0IzXHUxN0Q3XHUxN0RDXHUxODIwLVx1MTg3N1x1MTg4MC1cdTE4QThcdTE4QUFcdTE4QjAtXHUxOEY1XHUxOTAwLVx1MTkxQ1x1MTk1MC1cdTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlDMS1cdTE5QzdcdTFBMDAtXHUxQTE2XHUxQTIwLVx1MUE1NFx1MUFBN1x1MUIwNS1cdTFCMzNcdTFCNDUtXHUxQjRCXHUxQjgzLVx1MUJBMFx1MUJBRVx1MUJBRlx1MUJCQS1cdTFCRTVcdTFDMDAtXHUxQzIzXHUxQzRELVx1MUM0Rlx1MUM1QS1cdTFDN0RcdTFDRTktXHUxQ0VDXHUxQ0VFLVx1MUNGMVx1MUNGNVx1MUNGNlx1MUQwMC1cdTFEQkZcdTFFMDAtXHUxRjE1XHUxRjE4LVx1MUYxRFx1MUYyMC1cdTFGNDVcdTFGNDgtXHUxRjREXHUxRjUwLVx1MUY1N1x1MUY1OVx1MUY1Qlx1MUY1RFx1MUY1Ri1cdTFGN0RcdTFGODAtXHUxRkI0XHUxRkI2LVx1MUZCQ1x1MUZCRVx1MUZDMi1cdTFGQzRcdTFGQzYtXHUxRkNDXHUxRkQwLVx1MUZEM1x1MUZENi1cdTFGREJcdTFGRTAtXHUxRkVDXHUxRkYyLVx1MUZGNFx1MUZGNi1cdTFGRkNcdTIwNzFcdTIwN0ZcdTIwOTAtXHUyMDlDXHUyMTAyXHUyMTA3XHUyMTBBLVx1MjExM1x1MjExNVx1MjExOS1cdTIxMURcdTIxMjRcdTIxMjZcdTIxMjhcdTIxMkEtXHUyMTJEXHUyMTJGLVx1MjEzOVx1MjEzQy1cdTIxM0ZcdTIxNDUtXHUyMTQ5XHUyMTRFXHUyMTgzXHUyMTg0XHUyQzAwLVx1MkMyRVx1MkMzMC1cdTJDNUVcdTJDNjAtXHUyQ0U0XHUyQ0VCLVx1MkNFRVx1MkNGMlx1MkNGM1x1MkQwMC1cdTJEMjVcdTJEMjdcdTJEMkRcdTJEMzAtXHUyRDY3XHUyRDZGXHUyRDgwLVx1MkQ5Nlx1MkRBMC1cdTJEQTZcdTJEQTgtXHUyREFFXHUyREIwLVx1MkRCNlx1MkRCOC1cdTJEQkVcdTJEQzAtXHUyREM2XHUyREM4LVx1MkRDRVx1MkREMC1cdTJERDZcdTJERDgtXHUyRERFXHUyRTJGXHUzMDA1XHUzMDA2XHUzMDMxLVx1MzAzNVx1MzAzQlx1MzAzQ1x1MzA0MS1cdTMwOTZcdTMwOUQtXHUzMDlGXHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUzMTJEXHUzMTMxLVx1MzE4RVx1MzFBMC1cdTMxQkFcdTMxRjAtXHUzMUZGXHUzNDAwLVx1NERCNVx1NEUwMC1cdTlGQ0NcdUEwMDAtXHVBNDhDXHVBNEQwLVx1QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjFGXHVBNjJBXHVBNjJCXHVBNjQwLVx1QTY2RVx1QTY3Ri1cdUE2OTdcdUE2QTAtXHVBNkU1XHVBNzE3LVx1QTcxRlx1QTcyMi1cdUE3ODhcdUE3OEItXHVBNzhFXHVBNzkwLVx1QTc5M1x1QTdBMC1cdUE3QUFcdUE3RjgtXHVBODAxXHVBODAzLVx1QTgwNVx1QTgwNy1cdUE4MEFcdUE4MEMtXHVBODIyXHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE4RjItXHVBOEY3XHVBOEZCXHVBOTBBLVx1QTkyNVx1QTkzMC1cdUE5NDZcdUE5NjAtXHVBOTdDXHVBOTg0LVx1QTlCMlx1QTlDRlx1QUEwMC1cdUFBMjhcdUFBNDAtXHVBQTQyXHVBQTQ0LVx1QUE0Qlx1QUE2MC1cdUFBNzZcdUFBN0FcdUFBODAtXHVBQUFGXHVBQUIxXHVBQUI1XHVBQUI2XHVBQUI5LVx1QUFCRFx1QUFDMFx1QUFDMlx1QUFEQi1cdUFBRERcdUFBRTAtXHVBQUVBXHVBQUYyLVx1QUFGNFx1QUIwMS1cdUFCMDZcdUFCMDktXHVBQjBFXHVBQjExLVx1QUIxNlx1QUIyMC1cdUFCMjZcdUFCMjgtXHVBQjJFXHVBQkMwLVx1QUJFMlx1QUMwMC1cdUQ3QTNcdUQ3QjAtXHVEN0M2XHVEN0NCLVx1RDdGQlx1RjkwMC1cdUZBNkRcdUZBNzAtXHVGQUQ5XHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMURcdUZCMUYtXHVGQjI4XHVGQjJBLVx1RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFcdUZCNDNcdUZCNDRcdUZCNDYtXHVGQkIxXHVGQkQzLVx1RkQzRFx1RkQ1MC1cdUZEOEZcdUZEOTItXHVGREM3XHVGREYwLVx1RkRGQlx1RkU3MC1cdUZFNzRcdUZFNzYtXHVGRUZDXHVGRjIxLVx1RkYzQVx1RkY0MS1cdUZGNUFcdUZGNjYtXHVGRkJFXHVGRkMyLVx1RkZDN1x1RkZDQS1cdUZGQ0ZcdUZGRDItXHVGRkQ3XHVGRkRBLVx1RkZEQ10vLCIqIjovLi99LEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KTt2YXIgaT1lLm1hc2sscz1oKGUsUik7dGhpcy5tYXNrZWQ9Tih7bWFzazppfSksT2JqZWN0LmFzc2lnbih0aGlzLHMpfXJldHVybiByKHQsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaXNGaWxsZWQ9ITEsdGhpcy5tYXNrZWQucmVzZXQoKX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aDtyZXR1cm4gMD09PXQmJmU+PTE/KHRoaXMuaXNGaWxsZWQ9ITEsdGhpcy5tYXNrZWQucmVtb3ZlKHQsZSkpOm5ldyB5fX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hc2tlZC52YWx1ZXx8KHRoaXMuaXNGaWxsZWQmJiF0aGlzLmlzT3B0aW9uYWw/dGhpcy5wbGFjZWhvbGRlckNoYXI6IiIpfX0se2tleToidW5tYXNrZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFza2VkLnVubWFza2VkVmFsdWV9fSx7a2V5OiJpc0NvbXBsZXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbih0aGlzLm1hc2tlZC52YWx1ZSl8fHRoaXMuaXNPcHRpb25hbH19LHtrZXk6Il9hcHBlbmRDaGFyIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307aWYodGhpcy5pc0ZpbGxlZClyZXR1cm4gbmV3IHk7dmFyIGk9dGhpcy5tYXNrZWQuc3RhdGUscz10aGlzLm1hc2tlZC5fYXBwZW5kQ2hhcih0LGUpO3JldHVybiBzLmluc2VydGVkJiYhMT09PXRoaXMuZG9WYWxpZGF0ZShlKSYmKHMuaW5zZXJ0ZWQ9cy5yYXdJbnNlcnRlZD0iIix0aGlzLm1hc2tlZC5zdGF0ZT1pKSxzLmluc2VydGVkfHx0aGlzLmlzT3B0aW9uYWx8fHRoaXMubGF6eXx8ZS5pbnB1dHx8KHMuaW5zZXJ0ZWQ9dGhpcy5wbGFjZWhvbGRlckNoYXIpLHMuc2tpcD0hcy5pbnNlcnRlZCYmIXRoaXMuaXNPcHRpb25hbCx0aGlzLmlzRmlsbGVkPUJvb2xlYW4ocy5pbnNlcnRlZCksc319LHtrZXk6ImFwcGVuZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4odD10aGlzLm1hc2tlZCkuYXBwZW5kLmFwcGx5KHQsYXJndW1lbnRzKX19LHtrZXk6Il9hcHBlbmRQbGFjZWhvbGRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgeTtyZXR1cm4gdGhpcy5pc0ZpbGxlZHx8dGhpcy5pc09wdGlvbmFsfHwodGhpcy5pc0ZpbGxlZD0hMCx0Lmluc2VydGVkPXRoaXMucGxhY2Vob2xkZXJDaGFyKSx0fX0se2tleToiX2FwcGVuZEVhZ2VyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgeX19LHtrZXk6ImV4dHJhY3RUYWlsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O3JldHVybih0PXRoaXMubWFza2VkKS5leHRyYWN0VGFpbC5hcHBseSh0LGFyZ3VtZW50cyl9fSx7a2V5OiJhcHBlbmRUYWlsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O3JldHVybih0PXRoaXMubWFza2VkKS5hcHBlbmRUYWlsLmFwcGx5KHQsYXJndW1lbnRzKX19LHtrZXk6ImV4dHJhY3RJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxpPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO3JldHVybiB0aGlzLm1hc2tlZC5leHRyYWN0SW5wdXQodCxlLGkpfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ayxpPTAscz10aGlzLnZhbHVlLmxlbmd0aCxhPU1hdGgubWluKE1hdGgubWF4KHQsaSkscyk7c3dpdGNoKGUpe2Nhc2UgUzpjYXNlIEM6cmV0dXJuIHRoaXMuaXNDb21wbGV0ZT9hOmk7Y2FzZSBBOmNhc2UgRTpyZXR1cm4gdGhpcy5pc0NvbXBsZXRlP2E6cztkZWZhdWx0OnJldHVybiBhfX19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZTtyZXR1cm4odD10aGlzLm1hc2tlZCkuZG9WYWxpZGF0ZS5hcHBseSh0LGFyZ3VtZW50cykmJighdGhpcy5wYXJlbnR8fChlPXRoaXMucGFyZW50KS5kb1ZhbGlkYXRlLmFwcGx5KGUsYXJndW1lbnRzKSl9fSx7a2V5OiJkb0NvbW1pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1hc2tlZC5kb0NvbW1pdCgpfX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybnttYXNrZWQ6dGhpcy5tYXNrZWQuc3RhdGUsaXNGaWxsZWQ6dGhpcy5pc0ZpbGxlZH19LHNldDpmdW5jdGlvbih0KXt0aGlzLm1hc2tlZC5zdGF0ZT10Lm1hc2tlZCx0aGlzLmlzRmlsbGVkPXQuaXNGaWxsZWR9fV0pLHR9KCksWD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLE9iamVjdC5hc3NpZ24odGhpcyxlKSx0aGlzLl92YWx1ZT0iIix0aGlzLmlzRml4ZWQ9ITB9cmV0dXJuIHIodCxbe2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVW5tYXNraW5nP3RoaXMudmFsdWU6IiJ9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9pc1Jhd0lucHV0PSExLHRoaXMuX3ZhbHVlPSIifX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMuX3ZhbHVlLmxlbmd0aDtyZXR1cm4gdGhpcy5fdmFsdWU9dGhpcy5fdmFsdWUuc2xpY2UoMCx0KSt0aGlzLl92YWx1ZS5zbGljZShlKSx0aGlzLl92YWx1ZXx8KHRoaXMuX2lzUmF3SW5wdXQ9ITEpLG5ldyB5fX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ayxpPTAscz10aGlzLl92YWx1ZS5sZW5ndGg7c3dpdGNoKGUpe2Nhc2UgUzpjYXNlIEM6cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm4gc319fSx7a2V5OiJleHRyYWN0SW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5fdmFsdWUubGVuZ3RoLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9O3JldHVybiBpLnJhdyYmdGhpcy5faXNSYXdJbnB1dCYmdGhpcy5fdmFsdWUuc2xpY2UodCxlKXx8IiJ9fSx7a2V5OiJpc0NvbXBsZXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LHtrZXk6ImlzRmlsbGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbih0aGlzLl92YWx1ZSl9fSx7a2V5OiJfYXBwZW5kQ2hhciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LGk9bmV3IHk7aWYodGhpcy5fdmFsdWUpcmV0dXJuIGk7dmFyIHM9dGhpcy5jaGFyPT09dCxhPXMmJih0aGlzLmlzVW5tYXNraW5nfHxlLmlucHV0fHxlLnJhdykmJighZS5yYXd8fCF0aGlzLmVhZ2VyKSYmIWUudGFpbDtyZXR1cm4gYSYmKGkucmF3SW5zZXJ0ZWQ9dGhpcy5jaGFyKSx0aGlzLl92YWx1ZT1pLmluc2VydGVkPXRoaXMuY2hhcix0aGlzLl9pc1Jhd0lucHV0PWEmJihlLnJhd3x8ZS5pbnB1dCksaX19LHtrZXk6Il9hcHBlbmRFYWdlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwZW5kQ2hhcih0aGlzLmNoYXIse3RhaWw6ITB9KX19LHtrZXk6Il9hcHBlbmRQbGFjZWhvbGRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgeTtyZXR1cm4gdGhpcy5fdmFsdWV8fCh0aGlzLl92YWx1ZT10Lmluc2VydGVkPXRoaXMuY2hhciksdH19LHtrZXk6ImV4dHJhY3RUYWlsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXXx8dGhpcy52YWx1ZS5sZW5ndGgsbmV3IEkoIiIpfX0se2tleToiYXBwZW5kVGFpbCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHcodCkmJih0PW5ldyBJKFN0cmluZyh0KSkpLHQuYXBwZW5kVG8odGhpcyl9fSx7a2V5OiJhcHBlbmQiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLl9hcHBlbmRDaGFyKHRbMF0sZSk7cmV0dXJuIG51bGwhPWkmJihzLnRhaWxTaGlmdCs9dGhpcy5hcHBlbmRUYWlsKGkpLnRhaWxTaGlmdCksc319LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6InN0YXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57X3ZhbHVlOnRoaXMuX3ZhbHVlLF9pc1Jhd0lucHV0OnRoaXMuX2lzUmF3SW5wdXR9fSxzZXQ6ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLHQpfX1dKSx0fSgpLEg9WyJjaHVua3MiXSxZPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxpPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO2EodGhpcyx0KSx0aGlzLmNodW5rcz1lLHRoaXMuZnJvbT1pfXJldHVybiByKHQsW3trZXk6InRvU3RyaW5nIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNodW5rcy5tYXAoU3RyaW5nKS5qb2luKCIiKX19LHtrZXk6ImV4dGVuZCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoU3RyaW5nKGUpKXt3KGUpJiYoZT1uZXcgSShTdHJpbmcoZSkpKTt2YXIgaT10aGlzLmNodW5rc1t0aGlzLmNodW5rcy5sZW5ndGgtMV0scz1pJiYoaS5zdG9wPT09ZS5zdG9wfHxudWxsPT1lLnN0b3ApJiZlLmZyb209PT1pLmZyb20raS50b1N0cmluZygpLmxlbmd0aDtpZihlIGluc3RhbmNlb2YgSSlzP2kuZXh0ZW5kKGUudG9TdHJpbmcoKSk6dGhpcy5jaHVua3MucHVzaChlKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiB0KXtpZihudWxsPT1lLnN0b3ApZm9yKHZhciBhO2UuY2h1bmtzLmxlbmd0aCYmbnVsbD09ZS5jaHVua3NbMF0uc3RvcDspKGE9ZS5jaHVua3Muc2hpZnQoKSkuZnJvbSs9ZS5mcm9tLHRoaXMuZXh0ZW5kKGEpO2UudG9TdHJpbmcoKSYmKGUuc3RvcD1lLmJsb2NrSW5kZXgsdGhpcy5jaHVua3MucHVzaChlKSl9fX19LHtrZXk6ImFwcGVuZFRvIix2YWx1ZTpmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBGLk1hc2tlZFBhdHRlcm4pKXJldHVybiBuZXcgSSh0aGlzLnRvU3RyaW5nKCkpLmFwcGVuZFRvKGUpO2Zvcih2YXIgaT1uZXcgeSxzPTA7czx0aGlzLmNodW5rcy5sZW5ndGgmJiFpLnNraXA7KytzKXt2YXIgYT10aGlzLmNodW5rc1tzXSxuPWUuX21hcFBvc1RvQmxvY2soZS52YWx1ZS5sZW5ndGgpLHI9YS5zdG9wLG89dm9pZCAwO2lmKG51bGwhPXImJighbnx8bi5pbmRleDw9cikmJigoYSBpbnN0YW5jZW9mIHR8fGUuX3N0b3BzLmluZGV4T2Yocik+PTApJiZpLmFnZ3JlZ2F0ZShlLl9hcHBlbmRQbGFjZWhvbGRlcihyKSksbz1hIGluc3RhbmNlb2YgdCYmZS5fYmxvY2tzW3JdKSxvKXt2YXIgbD1vLmFwcGVuZFRhaWwoYSk7bC5za2lwPSExLGkuYWdncmVnYXRlKGwpLGUuX3ZhbHVlKz1sLmluc2VydGVkO3ZhciBjPWEudG9TdHJpbmcoKS5zbGljZShsLnJhd0luc2VydGVkLmxlbmd0aCk7YyYmaS5hZ2dyZWdhdGUoZS5hcHBlbmQoYyx7dGFpbDohMH0pKX1lbHNlIGkuYWdncmVnYXRlKGUuYXBwZW5kKGEudG9TdHJpbmcoKSx7dGFpbDohMH0pKX1yZXR1cm4gaX19LHtrZXk6InN0YXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57Y2h1bmtzOnRoaXMuY2h1bmtzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc3RhdGV9KSksZnJvbTp0aGlzLmZyb20sc3RvcDp0aGlzLnN0b3AsYmxvY2tJbmRleDp0aGlzLmJsb2NrSW5kZXh9fSxzZXQ6ZnVuY3Rpb24oZSl7dmFyIGk9ZS5jaHVua3Mscz1oKGUsSCk7T2JqZWN0LmFzc2lnbih0aGlzLHMpLHRoaXMuY2h1bmtzPWkubWFwKChmdW5jdGlvbihlKXt2YXIgaT0iY2h1bmtzImluIGU/bmV3IHQ6bmV3IEk7cmV0dXJuIGkuc3RhdGU9ZSxpfSkpfX0se2tleToidW5zaGlmdCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIXRoaXMuY2h1bmtzLmxlbmd0aHx8bnVsbCE9dCYmdGhpcy5mcm9tPj10KXJldHVybiIiO2Zvcih2YXIgZT1udWxsIT10P3QtdGhpcy5mcm9tOnQsaT0wO2k8dGhpcy5jaHVua3MubGVuZ3RoOyl7dmFyIHM9dGhpcy5jaHVua3NbaV0sYT1zLnVuc2hpZnQoZSk7aWYocy50b1N0cmluZygpKXtpZighYSlicmVhazsrK2l9ZWxzZSB0aGlzLmNodW5rcy5zcGxpY2UoaSwxKTtpZihhKXJldHVybiBhfXJldHVybiIifX0se2tleToic2hpZnQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuY2h1bmtzLmxlbmd0aClyZXR1cm4iIjtmb3IodmFyIHQ9dGhpcy5jaHVua3MubGVuZ3RoLTE7MDw9dDspe3ZhciBlPXRoaXMuY2h1bmtzW3RdLGk9ZS5zaGlmdCgpO2lmKGUudG9TdHJpbmcoKSl7aWYoIWkpYnJlYWs7LS10fWVsc2UgdGhpcy5jaHVua3Muc3BsaWNlKHQsMSk7aWYoaSlyZXR1cm4gaX1yZXR1cm4iIn19XSksdH0oKSxXPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLm1hc2tlZD1lLHRoaXMuX2xvZz1bXTt2YXIgcz1lLl9tYXBQb3NUb0Jsb2NrKGkpfHwoaTwwP3tpbmRleDowLG9mZnNldDowfTp7aW5kZXg6dGhpcy5tYXNrZWQuX2Jsb2Nrcy5sZW5ndGgsb2Zmc2V0OjB9KSxuPXMub2Zmc2V0LHI9cy5pbmRleDt0aGlzLm9mZnNldD1uLHRoaXMuaW5kZXg9cix0aGlzLm9rPSExfXJldHVybiByKHQsW3trZXk6ImJsb2NrIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXNrZWQuX2Jsb2Nrc1t0aGlzLmluZGV4XX19LHtrZXk6InBvcyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFza2VkLl9ibG9ja1N0YXJ0UG9zKHRoaXMuaW5kZXgpK3RoaXMub2Zmc2V0fX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybntpbmRleDp0aGlzLmluZGV4LG9mZnNldDp0aGlzLm9mZnNldCxvazp0aGlzLm9rfX0sc2V0OmZ1bmN0aW9uKHQpe09iamVjdC5hc3NpZ24odGhpcyx0KX19LHtrZXk6InB1c2hTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9sb2cucHVzaCh0aGlzLnN0YXRlKX19LHtrZXk6InBvcFN0YXRlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2xvZy5wb3AoKTtyZXR1cm4gdGhpcy5zdGF0ZT10LHR9fSx7a2V5OiJiaW5kQmxvY2siLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ibG9ja3x8KHRoaXMuaW5kZXg8MCYmKHRoaXMuaW5kZXg9MCx0aGlzLm9mZnNldD0wKSx0aGlzLmluZGV4Pj10aGlzLm1hc2tlZC5fYmxvY2tzLmxlbmd0aCYmKHRoaXMuaW5kZXg9dGhpcy5tYXNrZWQuX2Jsb2Nrcy5sZW5ndGgtMSx0aGlzLm9mZnNldD10aGlzLmJsb2NrLnZhbHVlLmxlbmd0aCkpfX0se2tleToiX3B1c2hMZWZ0Iix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodGhpcy5wdXNoU3RhdGUoKSx0aGlzLmJpbmRCbG9jaygpOzA8PXRoaXMuaW5kZXg7LS10aGlzLmluZGV4LHRoaXMub2Zmc2V0PShudWxsPT09KGU9dGhpcy5ibG9jayl8fHZvaWQgMD09PWU/dm9pZCAwOmUudmFsdWUubGVuZ3RoKXx8MCl7dmFyIGU7aWYodCgpKXJldHVybiB0aGlzLm9rPSEwfXJldHVybiB0aGlzLm9rPSExfX0se2tleToiX3B1c2hSaWdodCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHRoaXMucHVzaFN0YXRlKCksdGhpcy5iaW5kQmxvY2soKTt0aGlzLmluZGV4PHRoaXMubWFza2VkLl9ibG9ja3MubGVuZ3RoOysrdGhpcy5pbmRleCx0aGlzLm9mZnNldD0wKWlmKHQoKSlyZXR1cm4gdGhpcy5vaz0hMDtyZXR1cm4gdGhpcy5vaz0hMX19LHtrZXk6InB1c2hMZWZ0QmVmb3JlRmlsbGVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3B1c2hMZWZ0KChmdW5jdGlvbigpe2lmKCF0LmJsb2NrLmlzRml4ZWQmJnQuYmxvY2sudmFsdWUpcmV0dXJuIHQub2Zmc2V0PXQuYmxvY2submVhcmVzdElucHV0UG9zKHQub2Zmc2V0LEMpLDAhPT10Lm9mZnNldHx8dm9pZCAwfSkpfX0se2tleToicHVzaExlZnRCZWZvcmVJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9wdXNoTGVmdCgoZnVuY3Rpb24oKXtpZighdC5ibG9jay5pc0ZpeGVkKXJldHVybiB0Lm9mZnNldD10LmJsb2NrLm5lYXJlc3RJbnB1dFBvcyh0Lm9mZnNldCxTKSwhMH0pKX19LHtrZXk6InB1c2hMZWZ0QmVmb3JlUmVxdWlyZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcHVzaExlZnQoKGZ1bmN0aW9uKCl7aWYoISh0LmJsb2NrLmlzRml4ZWR8fHQuYmxvY2suaXNPcHRpb25hbCYmIXQuYmxvY2sudmFsdWUpKXJldHVybiB0Lm9mZnNldD10LmJsb2NrLm5lYXJlc3RJbnB1dFBvcyh0Lm9mZnNldCxTKSwhMH0pKX19LHtrZXk6InB1c2hSaWdodEJlZm9yZUZpbGxlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9wdXNoUmlnaHQoKGZ1bmN0aW9uKCl7aWYoIXQuYmxvY2suaXNGaXhlZCYmdC5ibG9jay52YWx1ZSlyZXR1cm4gdC5vZmZzZXQ9dC5ibG9jay5uZWFyZXN0SW5wdXRQb3ModC5vZmZzZXQsRSksdC5vZmZzZXQhPT10LmJsb2NrLnZhbHVlLmxlbmd0aHx8dm9pZCAwfSkpfX0se2tleToicHVzaFJpZ2h0QmVmb3JlSW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcHVzaFJpZ2h0KChmdW5jdGlvbigpe2lmKCF0LmJsb2NrLmlzRml4ZWQpcmV0dXJuIHQub2Zmc2V0PXQuYmxvY2submVhcmVzdElucHV0UG9zKHQub2Zmc2V0LGspLCEwfSkpfX0se2tleToicHVzaFJpZ2h0QmVmb3JlUmVxdWlyZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcHVzaFJpZ2h0KChmdW5jdGlvbigpe2lmKCEodC5ibG9jay5pc0ZpeGVkfHx0LmJsb2NrLmlzT3B0aW9uYWwmJiF0LmJsb2NrLnZhbHVlKSlyZXR1cm4gdC5vZmZzZXQ9dC5ibG9jay5uZWFyZXN0SW5wdXRQb3ModC5vZmZzZXQsayksITB9KSl9fV0pLHR9KCksJD1mdW5jdGlvbih0KXtvKGksdCk7dmFyIGU9dShpKTtmdW5jdGlvbiBpKCl7cmV0dXJuIGEodGhpcyxpKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gcihpLFt7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt0Lm1hc2smJih0LnZhbGlkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnNlYXJjaCh0Lm1hc2spPj0wfSksZyhsKGkucHJvdG90eXBlKSwiX3VwZGF0ZSIsdGhpcykuY2FsbCh0aGlzLHQpfX1dKSxpfShEKTtGLk1hc2tlZFJlZ0V4cD0kO3ZhciBWPVsiX2Jsb2NrcyJdLGo9ZnVuY3Rpb24odCl7byhpLHQpO3ZhciBlPXUoaSk7ZnVuY3Rpb24gaSgpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtyZXR1cm4gYSh0aGlzLGkpLHQuZGVmaW5pdGlvbnM9T2JqZWN0LmFzc2lnbih7fSxfLHQuZGVmaW5pdGlvbnMpLGUuY2FsbCh0aGlzLE9iamVjdC5hc3NpZ24oe30saS5ERUZBVUxUUyx0KSl9cmV0dXJuIHIoaSxbe2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307dC5kZWZpbml0aW9ucz1PYmplY3QuYXNzaWduKHt9LHRoaXMuZGVmaW5pdGlvbnMsdC5kZWZpbml0aW9ucyksZyhsKGkucHJvdG90eXBlKSwiX3VwZGF0ZSIsdGhpcykuY2FsbCh0aGlzLHQpLHRoaXMuX3JlYnVpbGRNYXNrKCl9fSx7a2V5OiJfcmVidWlsZE1hc2siLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuZGVmaW5pdGlvbnM7dGhpcy5fYmxvY2tzPVtdLHRoaXMuX3N0b3BzPVtdLHRoaXMuX21hc2tlZEJsb2Nrcz17fTt2YXIgcz10aGlzLm1hc2s7aWYocyYmZSlmb3IodmFyIGE9ITEsbj0hMSxyPTA7cjxzLmxlbmd0aDsrK3IpaWYoIXRoaXMuYmxvY2tzfHwiY29udGludWUiIT09ZnVuY3Rpb24oKXt2YXIgZT1zLnNsaWNlKHIpLGk9T2JqZWN0LmtleXModC5ibG9ja3MpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1lLmluZGV4T2YodCl9KSk7aS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBlLmxlbmd0aC10Lmxlbmd0aH0pKTt2YXIgYT1pWzBdO2lmKGEpe3ZhciBuPU4oT2JqZWN0LmFzc2lnbih7cGFyZW50OnQsbGF6eTp0LmxhenksZWFnZXI6dC5lYWdlcixwbGFjZWhvbGRlckNoYXI6dC5wbGFjZWhvbGRlckNoYXIsb3ZlcndyaXRlOnQub3ZlcndyaXRlfSx0LmJsb2Nrc1thXSkpO3JldHVybiBuJiYodC5fYmxvY2tzLnB1c2gobiksdC5fbWFza2VkQmxvY2tzW2FdfHwodC5fbWFza2VkQmxvY2tzW2FdPVtdKSx0Ll9tYXNrZWRCbG9ja3NbYV0ucHVzaCh0Ll9ibG9ja3MubGVuZ3RoLTEpKSxyKz1hLmxlbmd0aC0xLCJjb250aW51ZSJ9fSgpKXt2YXIgbz1zW3JdLGw9byBpbiBlO2lmKG8hPT1pLlNUT1BfQ0hBUilpZigieyIhPT1vJiYifSIhPT1vKWlmKCJbIiE9PW8mJiJdIiE9PW8pe2lmKG89PT1pLkVTQ0FQRV9DSEFSKXtpZigrK3IsIShvPXNbcl0pKWJyZWFrO2w9ITF9dmFyIGM9bD9uZXcgQih7cGFyZW50OnRoaXMsbGF6eTp0aGlzLmxhenksZWFnZXI6dGhpcy5lYWdlcixwbGFjZWhvbGRlckNoYXI6dGhpcy5wbGFjZWhvbGRlckNoYXIsbWFzazplW29dLGlzT3B0aW9uYWw6bn0pOm5ldyBYKHtjaGFyOm8sZWFnZXI6dGhpcy5lYWdlcixpc1VubWFza2luZzphfSk7dGhpcy5fYmxvY2tzLnB1c2goYyl9ZWxzZSBuPSFuO2Vsc2UgYT0hYTtlbHNlIHRoaXMuX3N0b3BzLnB1c2godGhpcy5fYmxvY2tzLmxlbmd0aCl9fX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LGcobChpLnByb3RvdHlwZSksInN0YXRlIix0aGlzKSx7X2Jsb2Nrczp0aGlzLl9ibG9ja3MubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zdGF0ZX0pKX0pfSxzZXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5fYmxvY2tzLHM9aCh0LFYpO3RoaXMuX2Jsb2Nrcy5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3JldHVybiB0LnN0YXRlPWVbaV19KSksbShsKGkucHJvdG90eXBlKSwic3RhdGUiLHMsdGhpcywhMCl9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXtnKGwoaS5wcm90b3R5cGUpLCJyZXNldCIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLl9ibG9ja3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVzZXQoKX0pKX19LHtrZXk6ImlzQ29tcGxldGUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ibG9ja3MuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzQ29tcGxldGV9KSl9fSx7a2V5OiJpc0ZpbGxlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNGaWxsZWR9KSl9fSx7a2V5OiJpc0ZpeGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmxvY2tzLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5pc0ZpeGVkfSkpfX0se2tleToiaXNPcHRpb25hbCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNPcHRpb25hbH0pKX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2Jsb2Nrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb0NvbW1pdCgpfSkpLGcobChpLnByb3RvdHlwZSksImRvQ29tbWl0Iix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToidW5tYXNrZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS51bm1hc2tlZFZhbHVlfSksIiIpfSxzZXQ6ZnVuY3Rpb24odCl7bShsKGkucHJvdG90eXBlKSwidW5tYXNrZWRWYWx1ZSIsdCx0aGlzLCEwKX19LHtrZXk6InZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmxvY2tzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLnZhbHVlfSksIiIpfSxzZXQ6ZnVuY3Rpb24odCl7bShsKGkucHJvdG90eXBlKSwidmFsdWUiLHQsdGhpcywhMCl9fSx7a2V5OiJhcHBlbmRUYWlsIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gZyhsKGkucHJvdG90eXBlKSwiYXBwZW5kVGFpbCIsdGhpcykuY2FsbCh0aGlzLHQpLmFnZ3JlZ2F0ZSh0aGlzLl9hcHBlbmRQbGFjZWhvbGRlcigpKX19LHtrZXk6Il9hcHBlbmRFYWdlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPW5ldyB5LGk9bnVsbD09PSh0PXRoaXMuX21hcFBvc1RvQmxvY2sodGhpcy52YWx1ZS5sZW5ndGgpKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pbmRleDtpZihudWxsPT1pKXJldHVybiBlO3RoaXMuX2Jsb2Nrc1tpXS5pc0ZpbGxlZCYmKytpO2Zvcih2YXIgcz1pO3M8dGhpcy5fYmxvY2tzLmxlbmd0aDsrK3Mpe3ZhciBhPXRoaXMuX2Jsb2Nrc1tzXS5fYXBwZW5kRWFnZXIoKTtpZighYS5pbnNlcnRlZClicmVhaztlLmFnZ3JlZ2F0ZShhKX1yZXR1cm4gZX19LHtrZXk6Il9hcHBlbmRDaGFyUmF3Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30saT10aGlzLl9tYXBQb3NUb0Jsb2NrKHRoaXMudmFsdWUubGVuZ3RoKSxzPW5ldyB5O2lmKCFpKXJldHVybiBzO2Zvcih2YXIgYT1pLmluZGV4OzsrK2Epe3ZhciBuLHIsbz10aGlzLl9ibG9ja3NbYV07aWYoIW8pYnJlYWs7dmFyIGw9by5fYXBwZW5kQ2hhcih0LE9iamVjdC5hc3NpZ24oe30sZSx7X2JlZm9yZVRhaWxTdGF0ZTpudWxsPT09KG49ZS5fYmVmb3JlVGFpbFN0YXRlKXx8dm9pZCAwPT09bnx8bnVsbD09PShyPW4uX2Jsb2Nrcyl8fHZvaWQgMD09PXI/dm9pZCAwOnJbYV19KSksYz1sLnNraXA7aWYocy5hZ2dyZWdhdGUobCksY3x8bC5yYXdJbnNlcnRlZClicmVha31yZXR1cm4gc319LHtrZXk6ImV4dHJhY3RUYWlsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxpPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxzPW5ldyBZO3JldHVybiBlPT09aXx8dGhpcy5fZm9yRWFjaEJsb2Nrc0luUmFuZ2UoZSxpLChmdW5jdGlvbihlLGksYSxuKXt2YXIgcj1lLmV4dHJhY3RUYWlsKGEsbik7ci5zdG9wPXQuX2ZpbmRTdG9wQmVmb3JlKGkpLHIuZnJvbT10Ll9ibG9ja1N0YXJ0UG9zKGkpLHIgaW5zdGFuY2VvZiBZJiYoci5ibG9ja0luZGV4PWkpLHMuZXh0ZW5kKHIpfSkpLHN9fSx7a2V5OiJleHRyYWN0SW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGgsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e307aWYodD09PWUpcmV0dXJuIiI7dmFyIHM9IiI7cmV0dXJuIHRoaXMuX2ZvckVhY2hCbG9ja3NJblJhbmdlKHQsZSwoZnVuY3Rpb24odCxlLGEsbil7cys9dC5leHRyYWN0SW5wdXQoYSxuLGkpfSkpLHN9fSx7a2V5OiJfZmluZFN0b3BCZWZvcmUiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPTA7aTx0aGlzLl9zdG9wcy5sZW5ndGg7KytpKXt2YXIgcz10aGlzLl9zdG9wc1tpXTtpZighKHM8PXQpKWJyZWFrO2U9c31yZXR1cm4gZX19LHtrZXk6Il9hcHBlbmRQbGFjZWhvbGRlciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPW5ldyB5O2lmKHRoaXMubGF6eSYmbnVsbD09dClyZXR1cm4gaTt2YXIgcz10aGlzLl9tYXBQb3NUb0Jsb2NrKHRoaXMudmFsdWUubGVuZ3RoKTtpZighcylyZXR1cm4gaTt2YXIgYT1zLmluZGV4LG49bnVsbCE9dD90OnRoaXMuX2Jsb2Nrcy5sZW5ndGg7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5zbGljZShhLG4pLmZvckVhY2goKGZ1bmN0aW9uKHMpe2lmKCFzLmxhenl8fG51bGwhPXQpe3ZhciBhPW51bGwhPXMuX2Jsb2Nrcz9bcy5fYmxvY2tzLmxlbmd0aF06W10sbj1zLl9hcHBlbmRQbGFjZWhvbGRlci5hcHBseShzLGEpO2UuX3ZhbHVlKz1uLmluc2VydGVkLGkuYWdncmVnYXRlKG4pfX0pKSxpfX0se2tleToiX21hcFBvc1RvQmxvY2siLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0iIixpPTA7aTx0aGlzLl9ibG9ja3MubGVuZ3RoOysraSl7dmFyIHM9dGhpcy5fYmxvY2tzW2ldLGE9ZS5sZW5ndGg7aWYodDw9KGUrPXMudmFsdWUpLmxlbmd0aClyZXR1cm57aW5kZXg6aSxvZmZzZXQ6dC1hfX19fSx7a2V5OiJfYmxvY2tTdGFydFBvcyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5zbGljZSgwLHQpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLnZhbHVlLmxlbmd0aH0pLDApfX0se2tleToiX2ZvckVhY2hCbG9ja3NJblJhbmdlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGgsaT1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxzPXRoaXMuX21hcFBvc1RvQmxvY2sodCk7aWYocyl7dmFyIGE9dGhpcy5fbWFwUG9zVG9CbG9jayhlKSxuPWEmJnMuaW5kZXg9PT1hLmluZGV4LHI9cy5vZmZzZXQsbz1hJiZuP2Eub2Zmc2V0OnRoaXMuX2Jsb2Nrc1tzLmluZGV4XS52YWx1ZS5sZW5ndGg7aWYoaSh0aGlzLl9ibG9ja3Nbcy5pbmRleF0scy5pbmRleCxyLG8pLGEmJiFuKXtmb3IodmFyIGw9cy5pbmRleCsxO2w8YS5pbmRleDsrK2wpaSh0aGlzLl9ibG9ja3NbbF0sbCwwLHRoaXMuX2Jsb2Nrc1tsXS52YWx1ZS5sZW5ndGgpO2kodGhpcy5fYmxvY2tzW2EuaW5kZXhdLGEuaW5kZXgsMCxhLm9mZnNldCl9fX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxzPWcobChpLnByb3RvdHlwZSksInJlbW92ZSIsdGhpcykuY2FsbCh0aGlzLHQsZSk7cmV0dXJuIHRoaXMuX2ZvckVhY2hCbG9ja3NJblJhbmdlKHQsZSwoZnVuY3Rpb24odCxlLGksYSl7cy5hZ2dyZWdhdGUodC5yZW1vdmUoaSxhKSl9KSksc319LHtrZXk6Im5lYXJlc3RJbnB1dFBvcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOms7aWYoIXRoaXMuX2Jsb2Nrcy5sZW5ndGgpcmV0dXJuIDA7dmFyIGk9bmV3IFcodGhpcyx0KTtpZihlPT09aylyZXR1cm4gaS5wdXNoUmlnaHRCZWZvcmVJbnB1dCgpP2kucG9zOihpLnBvcFN0YXRlKCksaS5wdXNoTGVmdEJlZm9yZUlucHV0KCk/aS5wb3M6dGhpcy52YWx1ZS5sZW5ndGgpO2lmKGU9PT1TfHxlPT09Qyl7aWYoZT09PVMpe2lmKGkucHVzaFJpZ2h0QmVmb3JlRmlsbGVkKCksaS5vayYmaS5wb3M9PT10KXJldHVybiB0O2kucG9wU3RhdGUoKX1pZihpLnB1c2hMZWZ0QmVmb3JlSW5wdXQoKSxpLnB1c2hMZWZ0QmVmb3JlUmVxdWlyZWQoKSxpLnB1c2hMZWZ0QmVmb3JlRmlsbGVkKCksZT09PVMpe2lmKGkucHVzaFJpZ2h0QmVmb3JlSW5wdXQoKSxpLnB1c2hSaWdodEJlZm9yZVJlcXVpcmVkKCksaS5vayYmaS5wb3M8PXQpcmV0dXJuIGkucG9zO2lmKGkucG9wU3RhdGUoKSxpLm9rJiZpLnBvczw9dClyZXR1cm4gaS5wb3M7aS5wb3BTdGF0ZSgpfXJldHVybiBpLm9rP2kucG9zOmU9PT1DPzA6KGkucG9wU3RhdGUoKSxpLm9rP2kucG9zOihpLnBvcFN0YXRlKCksaS5vaz9pLnBvczowKSl9cmV0dXJuIGU9PT1BfHxlPT09RT8oaS5wdXNoUmlnaHRCZWZvcmVJbnB1dCgpLGkucHVzaFJpZ2h0QmVmb3JlUmVxdWlyZWQoKSxpLnB1c2hSaWdodEJlZm9yZUZpbGxlZCgpP2kucG9zOmU9PT1FP3RoaXMudmFsdWUubGVuZ3RoOihpLnBvcFN0YXRlKCksaS5vaz9pLnBvczooaS5wb3BTdGF0ZSgpLGkub2s/aS5wb3M6dGhpcy5uZWFyZXN0SW5wdXRQb3ModCxTKSkpKTp0fX0se2tleToibWFza2VkQmxvY2siLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1hc2tlZEJsb2Nrcyh0KVswXX19LHtrZXk6Im1hc2tlZEJsb2NrcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMuX21hc2tlZEJsb2Nrc1t0XTtyZXR1cm4gaT9pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2Jsb2Nrc1t0XX0pKTpbXX19XSksaX0oRCk7ai5ERUZBVUxUUz17bGF6eTohMCxwbGFjZWhvbGRlckNoYXI6Il8ifSxqLlNUT1BfQ0hBUj0iYCIsai5FU0NBUEVfQ0hBUj0iXFwiLGouSW5wdXREZWZpbml0aW9uPUIsai5GaXhlZERlZmluaXRpb249WCxGLk1hc2tlZFBhdHRlcm49ajt2YXIgRz1mdW5jdGlvbih0KXtvKGksdCk7dmFyIGU9dShpKTtmdW5jdGlvbiBpKCl7cmV0dXJuIGEodGhpcyxpKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gcihpLFt7a2V5OiJfbWF0Y2hGcm9tIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXhMZW5ndGgtU3RyaW5nKHRoaXMuZnJvbSkubGVuZ3RofX0se2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dD1PYmplY3QuYXNzaWduKHt0bzp0aGlzLnRvfHwwLGZyb206dGhpcy5mcm9tfHwwLG1heExlbmd0aDp0aGlzLm1heExlbmd0aHx8MH0sdCk7dmFyIGU9U3RyaW5nKHQudG8pLmxlbmd0aDtudWxsIT10Lm1heExlbmd0aCYmKGU9TWF0aC5tYXgoZSx0Lm1heExlbmd0aCkpLHQubWF4TGVuZ3RoPWU7Zm9yKHZhciBzPVN0cmluZyh0LmZyb20pLnBhZFN0YXJ0KGUsIjAiKSxhPVN0cmluZyh0LnRvKS5wYWRTdGFydChlLCIwIiksbj0wO248YS5sZW5ndGgmJmFbbl09PT1zW25dOykrK247dC5tYXNrPWEuc2xpY2UoMCxuKS5yZXBsYWNlKC8wL2csIlxcMCIpKyIwIi5yZXBlYXQoZS1uKSxnKGwoaS5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fSx7a2V5OiJpc0NvbXBsZXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZyhsKGkucHJvdG90eXBlKSwiaXNDb21wbGV0ZSIsdGhpcykmJkJvb2xlYW4odGhpcy52YWx1ZSl9fSx7a2V5OiJib3VuZGFyaWVzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0iIixpPSIiLHM9dih0Lm1hdGNoKC9eKFxEKikoXGQqKShcRCopLyl8fFtdLDMpLGE9c1sxXSxuPXNbMl07cmV0dXJuIG4mJihlPSIwIi5yZXBlYXQoYS5sZW5ndGgpK24saT0iOSIucmVwZWF0KGEubGVuZ3RoKStuKSxbZT1lLnBhZEVuZCh0aGlzLm1heExlbmd0aCwiMCIpLGk9aS5wYWRFbmQodGhpcy5tYXhMZW5ndGgsIjkiKV19fSx7a2V5OiJkb1ByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLHM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LGE9UChnKGwoaS5wcm90b3R5cGUpLCJkb1ByZXBhcmUiLHRoaXMpLmNhbGwodGhpcyx0LnJlcGxhY2UoL1xEL2csIiIpLHMpKSxuPXYoYSwyKTtpZih0PW5bMF0sZT1uWzFdLCF0aGlzLmF1dG9maXh8fCF0KXJldHVybiB0O3ZhciByPVN0cmluZyh0aGlzLmZyb20pLnBhZFN0YXJ0KHRoaXMubWF4TGVuZ3RoLCIwIiksbz1TdHJpbmcodGhpcy50bykucGFkU3RhcnQodGhpcy5tYXhMZW5ndGgsIjAiKSxjPXRoaXMudmFsdWUrdDtpZihjLmxlbmd0aD50aGlzLm1heExlbmd0aClyZXR1cm4iIjt2YXIgaD10aGlzLmJvdW5kYXJpZXMoYyksZD12KGgsMiksdT1kWzBdLHA9ZFsxXTtyZXR1cm4gTnVtYmVyKHApPHRoaXMuZnJvbT9yW2MubGVuZ3RoLTFdOk51bWJlcih1KT50aGlzLnRvPyJwYWQiPT09dGhpcy5hdXRvZml4JiZjLmxlbmd0aDx0aGlzLm1heExlbmd0aD9bIiIsZS5hZ2dyZWdhdGUodGhpcy5hcHBlbmQocltjLmxlbmd0aC0xXSt0LHMpKV06b1tjLmxlbmd0aC0xXTp0fX0se2tleToiZG9WYWxpZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMudmFsdWUscz1lLnNlYXJjaCgvW14wXS8pO2lmKC0xPT09cyYmZS5sZW5ndGg8PXRoaXMuX21hdGNoRnJvbSlyZXR1cm4hMDtmb3IodmFyIGE9dGhpcy5ib3VuZGFyaWVzKGUpLG49dihhLDIpLHI9blswXSxvPW5bMV0sYz1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGMpLGQ9MDtkPGM7ZCsrKWhbZF09YXJndW1lbnRzW2RdO3JldHVybiB0aGlzLmZyb208PU51bWJlcihvKSYmTnVtYmVyKHIpPD10aGlzLnRvJiYodD1nKGwoaS5wcm90b3R5cGUpLCJkb1ZhbGlkYXRlIix0aGlzKSkuY2FsbC5hcHBseSh0LFt0aGlzXS5jb25jYXQoaCkpfX1dKSxpfShqKTtGLk1hc2tlZFJhbmdlPUc7dmFyIFU9ZnVuY3Rpb24odCl7byhpLHQpO3ZhciBlPXUoaSk7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gYSh0aGlzLGkpLGUuY2FsbCh0aGlzLE9iamVjdC5hc3NpZ24oe30saS5ERUZBVUxUUyx0KSl9cmV0dXJuIHIoaSxbe2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dC5tYXNrPT09RGF0ZSYmZGVsZXRlIHQubWFzayx0LnBhdHRlcm4mJih0Lm1hc2s9dC5wYXR0ZXJuKTt2YXIgZT10LmJsb2Nrczt0LmJsb2Nrcz1PYmplY3QuYXNzaWduKHt9LGkuR0VUX0RFRkFVTFRfQkxPQ0tTKCkpLHQubWluJiYodC5ibG9ja3MuWS5mcm9tPXQubWluLmdldEZ1bGxZZWFyKCkpLHQubWF4JiYodC5ibG9ja3MuWS50bz10Lm1heC5nZXRGdWxsWWVhcigpKSx0Lm1pbiYmdC5tYXgmJnQuYmxvY2tzLlkuZnJvbT09PXQuYmxvY2tzLlkudG8mJih0LmJsb2Nrcy5tLmZyb209dC5taW4uZ2V0TW9udGgoKSsxLHQuYmxvY2tzLm0udG89dC5tYXguZ2V0TW9udGgoKSsxLHQuYmxvY2tzLm0uZnJvbT09PXQuYmxvY2tzLm0udG8mJih0LmJsb2Nrcy5kLmZyb209dC5taW4uZ2V0RGF0ZSgpLHQuYmxvY2tzLmQudG89dC5tYXguZ2V0RGF0ZSgpKSksT2JqZWN0LmFzc2lnbih0LmJsb2Nrcyx0aGlzLmJsb2NrcyxlKSxPYmplY3Qua2V5cyh0LmJsb2NrcykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGk9dC5ibG9ja3NbZV07ISgiYXV0b2ZpeCJpbiBpKSYmImF1dG9maXgiaW4gdCYmKGkuYXV0b2ZpeD10LmF1dG9maXgpfSkpLGcobChpLnByb3RvdHlwZSksIl91cGRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KX19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9dGhpcy5kYXRlLHM9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShzKSxuPTA7bjxzO24rKylhW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4odD1nKGwoaS5wcm90b3R5cGUpLCJkb1ZhbGlkYXRlIix0aGlzKSkuY2FsbC5hcHBseSh0LFt0aGlzXS5jb25jYXQoYSkpJiYoIXRoaXMuaXNDb21wbGV0ZXx8dGhpcy5pc0RhdGVFeGlzdCh0aGlzLnZhbHVlKSYmbnVsbCE9ZSYmKG51bGw9PXRoaXMubWlufHx0aGlzLm1pbjw9ZSkmJihudWxsPT10aGlzLm1heHx8ZTw9dGhpcy5tYXgpKX19LHtrZXk6ImlzRGF0ZUV4aXN0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mb3JtYXQodGhpcy5wYXJzZSh0LHRoaXMpLHRoaXMpLmluZGV4T2YodCk+PTB9fSx7a2V5OiJkYXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlZFZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy50eXBlZFZhbHVlPXR9fSx7a2V5OiJ0eXBlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0NvbXBsZXRlP2cobChpLnByb3RvdHlwZSksInR5cGVkVmFsdWUiLHRoaXMpOm51bGx9LHNldDpmdW5jdGlvbih0KXttKGwoaS5wcm90b3R5cGUpLCJ0eXBlZFZhbHVlIix0LHRoaXMsITApfX0se2tleToibWFza0VxdWFscyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1EYXRlfHxnKGwoaS5wcm90b3R5cGUpLCJtYXNrRXF1YWxzIix0aGlzKS5jYWxsKHRoaXMsdCl9fV0pLGl9KGopO1UuREVGQVVMVFM9e3BhdHRlcm46ImR7Ln1gbXsufWBZIixmb3JtYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQ/W1N0cmluZyh0LmdldERhdGUoKSkucGFkU3RhcnQoMiwiMCIpLFN0cmluZyh0LmdldE1vbnRoKCkrMSkucGFkU3RhcnQoMiwiMCIpLHQuZ2V0RnVsbFllYXIoKV0uam9pbigiLiIpOiIifSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT12KHQuc3BsaXQoIi4iKSwzKSxpPWVbMF0scz1lWzFdLGE9ZVsyXTtyZXR1cm4gbmV3IERhdGUoYSxzLTEsaSl9fSxVLkdFVF9ERUZBVUxUX0JMT0NLUz1mdW5jdGlvbigpe3JldHVybntkOnttYXNrOkcsZnJvbToxLHRvOjMxLG1heExlbmd0aDoyfSxtOnttYXNrOkcsZnJvbToxLHRvOjEyLG1heExlbmd0aDoyfSxZOnttYXNrOkcsZnJvbToxOTAwLHRvOjk5OTl9fX0sRi5NYXNrZWREYXRlPVU7dmFyIHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7YSh0aGlzLHQpfXJldHVybiByKHQsW3trZXk6InNlbGVjdGlvblN0YXJ0IixnZXQ6ZnVuY3Rpb24oKXt2YXIgdDt0cnl7dD10aGlzLl91bnNhZmVTZWxlY3Rpb25TdGFydH1jYXRjaCh0KXt9cmV0dXJuIG51bGwhPXQ/dDp0aGlzLnZhbHVlLmxlbmd0aH19LHtrZXk6InNlbGVjdGlvbkVuZCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ7dHJ5e3Q9dGhpcy5fdW5zYWZlU2VsZWN0aW9uRW5kfWNhdGNoKHQpe31yZXR1cm4gbnVsbCE9dD90OnRoaXMudmFsdWUubGVuZ3RofX0se2tleToic2VsZWN0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKG51bGwhPXQmJm51bGwhPWUmJih0IT09dGhpcy5zZWxlY3Rpb25TdGFydHx8ZSE9PXRoaXMuc2VsZWN0aW9uRW5kKSl0cnl7dGhpcy5fdW5zYWZlU2VsZWN0KHQsZSl9Y2F0Y2godCl7fX19LHtrZXk6Il91bnNhZmVTZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7fX0se2tleToiaXNBY3RpdmUiLGdldDpmdW5jdGlvbigpe3JldHVybiExfX0se2tleToiYmluZEV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24odCl7fX0se2tleToidW5iaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe319XSksdH0oKTtGLk1hc2tFbGVtZW50PXE7dmFyIFo9ZnVuY3Rpb24odCl7byhpLHQpO3ZhciBlPXUoaSk7ZnVuY3Rpb24gaSh0KXt2YXIgcztyZXR1cm4gYSh0aGlzLGkpLChzPWUuY2FsbCh0aGlzKSkuaW5wdXQ9dCxzLl9oYW5kbGVycz17fSxzfXJldHVybiByKGksW3trZXk6InJvb3RFbGVtZW50IixnZXQ6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7cmV0dXJuIG51bGwhPT0odD1udWxsPT09KGU9KGk9dGhpcy5pbnB1dCkuZ2V0Um9vdE5vZGUpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNhbGwoaSkpJiZ2b2lkIDAhPT10P3Q6ZG9jdW1lbnR9fSx7a2V5OiJpc0FjdGl2ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQ9PT10aGlzLnJvb3RFbGVtZW50LmFjdGl2ZUVsZW1lbnR9fSx7a2V5OiJfdW5zYWZlU2VsZWN0aW9uU3RhcnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0LnNlbGVjdGlvblN0YXJ0fX0se2tleToiX3Vuc2FmZVNlbGVjdGlvbkVuZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQuc2VsZWN0aW9uRW5kfX0se2tleToiX3Vuc2FmZVNlbGVjdCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmlucHV0LnNldFNlbGVjdGlvblJhbmdlKHQsZSl9fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQudmFsdWV9LHNldDpmdW5jdGlvbih0KXt0aGlzLmlucHV0LnZhbHVlPXR9fSx7a2V5OiJiaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO09iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKHMpe3JldHVybiBlLl90b2dnbGVFdmVudEhhbmRsZXIoaS5FVkVOVFNfTUFQW3NdLHRbc10pfSkpfX0se2tleToidW5iaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7T2JqZWN0LmtleXModGhpcy5faGFuZGxlcnMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll90b2dnbGVFdmVudEhhbmRsZXIoZSl9KSl9fSx7a2V5OiJfdG9nZ2xlRXZlbnRIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuX2hhbmRsZXJzW3RdJiYodGhpcy5pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKHQsdGhpcy5faGFuZGxlcnNbdF0pLGRlbGV0ZSB0aGlzLl9oYW5kbGVyc1t0XSksZSYmKHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcih0LGUpLHRoaXMuX2hhbmRsZXJzW3RdPWUpfX1dKSxpfShxKTtaLkVWRU5UU19NQVA9e3NlbGVjdGlvbkNoYW5nZToia2V5ZG93biIsaW5wdXQ6ImlucHV0Iixkcm9wOiJkcm9wIixjbGljazoiY2xpY2siLGZvY3VzOiJmb2N1cyIsY29tbWl0OiJibHVyIn0sRi5IVE1MTWFza0VsZW1lbnQ9Wjt2YXIgSz1mdW5jdGlvbih0KXtvKGksdCk7dmFyIGU9dShpKTtmdW5jdGlvbiBpKCl7cmV0dXJuIGEodGhpcyxpKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gcihpLFt7a2V5OiJfdW5zYWZlU2VsZWN0aW9uU3RhcnQiLGdldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucm9vdEVsZW1lbnQsZT10LmdldFNlbGVjdGlvbiYmdC5nZXRTZWxlY3Rpb24oKSxpPWUmJmUuYW5jaG9yT2Zmc2V0LHM9ZSYmZS5mb2N1c09mZnNldDtyZXR1cm4gbnVsbD09c3x8bnVsbD09aXx8aTxzP2k6c319LHtrZXk6Il91bnNhZmVTZWxlY3Rpb25FbmQiLGdldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucm9vdEVsZW1lbnQsZT10LmdldFNlbGVjdGlvbiYmdC5nZXRTZWxlY3Rpb24oKSxpPWUmJmUuYW5jaG9yT2Zmc2V0LHM9ZSYmZS5mb2N1c09mZnNldDtyZXR1cm4gbnVsbD09c3x8bnVsbD09aXx8aT5zP2k6c319LHtrZXk6Il91bnNhZmVTZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5yb290RWxlbWVudC5jcmVhdGVSYW5nZSl7dmFyIGk9dGhpcy5yb290RWxlbWVudC5jcmVhdGVSYW5nZSgpO2kuc2V0U3RhcnQodGhpcy5pbnB1dC5maXJzdENoaWxkfHx0aGlzLmlucHV0LHQpLGkuc2V0RW5kKHRoaXMuaW5wdXQubGFzdENoaWxkfHx0aGlzLmlucHV0LGUpO3ZhciBzPXRoaXMucm9vdEVsZW1lbnQsYT1zLmdldFNlbGVjdGlvbiYmcy5nZXRTZWxlY3Rpb24oKTthJiYoYS5yZW1vdmVBbGxSYW5nZXMoKSxhLmFkZFJhbmdlKGkpKX19fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQudGV4dENvbnRlbnR9LHNldDpmdW5jdGlvbih0KXt0aGlzLmlucHV0LnRleHRDb250ZW50PXR9fV0pLGl9KFopO0YuSFRNTENvbnRlbnRlZGl0YWJsZU1hc2tFbGVtZW50PUs7dmFyIEo9WyJtYXNrIl0sUT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXthKHRoaXMsdCksdGhpcy5lbD1lIGluc3RhbmNlb2YgcT9lOmUuaXNDb250ZW50RWRpdGFibGUmJiJJTlBVVCIhPT1lLnRhZ05hbWUmJiJURVhUQVJFQSIhPT1lLnRhZ05hbWU/bmV3IEsoZSk6bmV3IFooZSksdGhpcy5tYXNrZWQ9TihpKSx0aGlzLl9saXN0ZW5lcnM9e30sdGhpcy5fdmFsdWU9IiIsdGhpcy5fdW5tYXNrZWRWYWx1ZT0iIix0aGlzLl9zYXZlU2VsZWN0aW9uPXRoaXMuX3NhdmVTZWxlY3Rpb24uYmluZCh0aGlzKSx0aGlzLl9vbklucHV0PXRoaXMuX29uSW5wdXQuYmluZCh0aGlzKSx0aGlzLl9vbkNoYW5nZT10aGlzLl9vbkNoYW5nZS5iaW5kKHRoaXMpLHRoaXMuX29uRHJvcD10aGlzLl9vbkRyb3AuYmluZCh0aGlzKSx0aGlzLl9vbkZvY3VzPXRoaXMuX29uRm9jdXMuYmluZCh0aGlzKSx0aGlzLl9vbkNsaWNrPXRoaXMuX29uQ2xpY2suYmluZCh0aGlzKSx0aGlzLmFsaWduQ3Vyc29yPXRoaXMuYWxpZ25DdXJzb3IuYmluZCh0aGlzKSx0aGlzLmFsaWduQ3Vyc29yRnJpZW5kbHk9dGhpcy5hbGlnbkN1cnNvckZyaWVuZGx5LmJpbmQodGhpcyksdGhpcy5fYmluZEV2ZW50cygpLHRoaXMudXBkYXRlVmFsdWUoKSx0aGlzLl9vbkNoYW5nZSgpfXJldHVybiByKHQsW3trZXk6Im1hc2siLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hc2tlZC5tYXNrfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIXRoaXMubWFza0VxdWFscyh0KSlpZih0IGluc3RhbmNlb2YgRi5NYXNrZWR8fHRoaXMubWFza2VkLmNvbnN0cnVjdG9yIT09eih0KSl7dmFyIGU9Tih7bWFzazp0fSk7ZS51bm1hc2tlZFZhbHVlPXRoaXMubWFza2VkLnVubWFza2VkVmFsdWUsdGhpcy5tYXNrZWQ9ZX1lbHNlIHRoaXMubWFza2VkLnVwZGF0ZU9wdGlvbnMoe21hc2s6dH0pfX0se2tleToibWFza0VxdWFscyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIG51bGw9PXR8fChudWxsPT09KGU9dGhpcy5tYXNrZWQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLm1hc2tFcXVhbHModCkpfX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMudmFsdWUhPT10JiYodGhpcy5tYXNrZWQudmFsdWU9dCx0aGlzLnVwZGF0ZUNvbnRyb2woKSx0aGlzLmFsaWduQ3Vyc29yKCkpfX0se2tleToidW5tYXNrZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VubWFza2VkVmFsdWV9LHNldDpmdW5jdGlvbih0KXt0aGlzLnVubWFza2VkVmFsdWUhPT10JiYodGhpcy5tYXNrZWQudW5tYXNrZWRWYWx1ZT10LHRoaXMudXBkYXRlQ29udHJvbCgpLHRoaXMuYWxpZ25DdXJzb3IoKSl9fSx7a2V5OiJ0eXBlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXNrZWQudHlwZWRWYWx1ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMubWFza2VkLnR5cGVkVmFsdWVFcXVhbHModCl8fCh0aGlzLm1hc2tlZC50eXBlZFZhbHVlPXQsdGhpcy51cGRhdGVDb250cm9sKCksdGhpcy5hbGlnbkN1cnNvcigpKX19LHtrZXk6Il9iaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZWwuYmluZEV2ZW50cyh7c2VsZWN0aW9uQ2hhbmdlOnRoaXMuX3NhdmVTZWxlY3Rpb24saW5wdXQ6dGhpcy5fb25JbnB1dCxkcm9wOnRoaXMuX29uRHJvcCxjbGljazp0aGlzLl9vbkNsaWNrLGZvY3VzOnRoaXMuX29uRm9jdXMsY29tbWl0OnRoaXMuX29uQ2hhbmdlfSl9fSx7a2V5OiJfdW5iaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZWwmJnRoaXMuZWwudW5iaW5kRXZlbnRzKCl9fSx7a2V5OiJfZmlyZUV2ZW50Iix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShlPjE/ZS0xOjApLHM9MTtzPGU7cysrKWlbcy0xXT1hcmd1bWVudHNbc107dmFyIGE9dGhpcy5fbGlzdGVuZXJzW3RdO2EmJmEuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYXBwbHkodm9pZCAwLGkpfSkpfX0se2tleToic2VsZWN0aW9uU3RhcnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJzb3JDaGFuZ2luZz90aGlzLl9jaGFuZ2luZ0N1cnNvclBvczp0aGlzLmVsLnNlbGVjdGlvblN0YXJ0fX0se2tleToiY3Vyc29yUG9zIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3Vyc29yQ2hhbmdpbmc/dGhpcy5fY2hhbmdpbmdDdXJzb3JQb3M6dGhpcy5lbC5zZWxlY3Rpb25FbmR9LHNldDpmdW5jdGlvbih0KXt0aGlzLmVsJiZ0aGlzLmVsLmlzQWN0aXZlJiYodGhpcy5lbC5zZWxlY3QodCx0KSx0aGlzLl9zYXZlU2VsZWN0aW9uKCkpfX0se2tleToiX3NhdmVTZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy52YWx1ZSE9PXRoaXMuZWwudmFsdWUmJmNvbnNvbGUud2FybigiRWxlbWVudCB2YWx1ZSB3YXMgY2hhbmdlZCBvdXRzaWRlIG9mIG1hc2suIFN5bmNyb25pemUgbWFzayB1c2luZyBgbWFzay51cGRhdGVWYWx1ZSgpYCB0byB3b3JrIHByb3Blcmx5LiIpLHRoaXMuX3NlbGVjdGlvbj17c3RhcnQ6dGhpcy5zZWxlY3Rpb25TdGFydCxlbmQ6dGhpcy5jdXJzb3JQb3N9fX0se2tleToidXBkYXRlVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tYXNrZWQudmFsdWU9dGhpcy5lbC52YWx1ZSx0aGlzLl92YWx1ZT10aGlzLm1hc2tlZC52YWx1ZX19LHtrZXk6InVwZGF0ZUNvbnRyb2wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXNrZWQudW5tYXNrZWRWYWx1ZSxlPXRoaXMubWFza2VkLnZhbHVlLGk9dGhpcy51bm1hc2tlZFZhbHVlIT09dHx8dGhpcy52YWx1ZSE9PWU7dGhpcy5fdW5tYXNrZWRWYWx1ZT10LHRoaXMuX3ZhbHVlPWUsdGhpcy5lbC52YWx1ZSE9PWUmJih0aGlzLmVsLnZhbHVlPWUpLGkmJnRoaXMuX2ZpcmVDaGFuZ2VFdmVudHMoKX19LHtrZXk6InVwZGF0ZU9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQubWFzayxpPWgodCxKKSxzPSF0aGlzLm1hc2tFcXVhbHMoZSksYT0hTSh0aGlzLm1hc2tlZCxpKTtzJiYodGhpcy5tYXNrPWUpLGEmJnRoaXMubWFza2VkLnVwZGF0ZU9wdGlvbnMoaSksKHN8fGEpJiZ0aGlzLnVwZGF0ZUNvbnRyb2woKX19LHtrZXk6InVwZGF0ZUN1cnNvciIsdmFsdWU6ZnVuY3Rpb24odCl7bnVsbCE9dCYmKHRoaXMuY3Vyc29yUG9zPXQsdGhpcy5fZGVsYXlVcGRhdGVDdXJzb3IodCkpfX0se2tleToiX2RlbGF5VXBkYXRlQ3Vyc29yIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2Fib3J0VXBkYXRlQ3Vyc29yKCksdGhpcy5fY2hhbmdpbmdDdXJzb3JQb3M9dCx0aGlzLl9jdXJzb3JDaGFuZ2luZz1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2UuZWwmJihlLmN1cnNvclBvcz1lLl9jaGFuZ2luZ0N1cnNvclBvcyxlLl9hYm9ydFVwZGF0ZUN1cnNvcigpKX0pLDEwKX19LHtrZXk6Il9maXJlQ2hhbmdlRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2ZpcmVFdmVudCgiYWNjZXB0Iix0aGlzLl9pbnB1dEV2ZW50KSx0aGlzLm1hc2tlZC5pc0NvbXBsZXRlJiZ0aGlzLl9maXJlRXZlbnQoImNvbXBsZXRlIix0aGlzLl9pbnB1dEV2ZW50KX19LHtrZXk6Il9hYm9ydFVwZGF0ZUN1cnNvciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9jdXJzb3JDaGFuZ2luZyYmKGNsZWFyVGltZW91dCh0aGlzLl9jdXJzb3JDaGFuZ2luZyksZGVsZXRlIHRoaXMuX2N1cnNvckNoYW5naW5nKX19LHtrZXk6ImFsaWduQ3Vyc29yIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY3Vyc29yUG9zPXRoaXMubWFza2VkLm5lYXJlc3RJbnB1dFBvcyh0aGlzLm1hc2tlZC5uZWFyZXN0SW5wdXRQb3ModGhpcy5jdXJzb3JQb3MsUykpfX0se2tleToiYWxpZ25DdXJzb3JGcmllbmRseSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGlvblN0YXJ0PT09dGhpcy5jdXJzb3JQb3MmJnRoaXMuYWxpZ25DdXJzb3IoKX19LHtrZXk6Im9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9saXN0ZW5lcnNbdF18fCh0aGlzLl9saXN0ZW5lcnNbdF09W10pLHRoaXMuX2xpc3RlbmVyc1t0XS5wdXNoKGUpLHRoaXN9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuX2xpc3RlbmVyc1t0XSlyZXR1cm4gdGhpcztpZighZSlyZXR1cm4gZGVsZXRlIHRoaXMuX2xpc3RlbmVyc1t0XSx0aGlzO3ZhciBpPXRoaXMuX2xpc3RlbmVyc1t0XS5pbmRleE9mKGUpO3JldHVybiBpPj0wJiZ0aGlzLl9saXN0ZW5lcnNbdF0uc3BsaWNlKGksMSksdGhpc319LHtrZXk6Il9vbklucHV0Iix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLl9pbnB1dEV2ZW50PXQsdGhpcy5fYWJvcnRVcGRhdGVDdXJzb3IoKSwhdGhpcy5fc2VsZWN0aW9uKXJldHVybiB0aGlzLnVwZGF0ZVZhbHVlKCk7dmFyIGU9bmV3IE8odGhpcy5lbC52YWx1ZSx0aGlzLmN1cnNvclBvcyx0aGlzLnZhbHVlLHRoaXMuX3NlbGVjdGlvbiksaT10aGlzLm1hc2tlZC5yYXdJbnB1dFZhbHVlLHM9dGhpcy5tYXNrZWQuc3BsaWNlKGUuc3RhcnRDaGFuZ2VQb3MsZS5yZW1vdmVkLmxlbmd0aCxlLmluc2VydGVkLGUucmVtb3ZlRGlyZWN0aW9uLHtpbnB1dDohMCxyYXc6ITB9KS5vZmZzZXQsYT1pPT09dGhpcy5tYXNrZWQucmF3SW5wdXRWYWx1ZT9lLnJlbW92ZURpcmVjdGlvbjprLG49dGhpcy5tYXNrZWQubmVhcmVzdElucHV0UG9zKGUuc3RhcnRDaGFuZ2VQb3MrcyxhKTthIT09ayYmKG49dGhpcy5tYXNrZWQubmVhcmVzdElucHV0UG9zKG4saykpLHRoaXMudXBkYXRlQ29udHJvbCgpLHRoaXMudXBkYXRlQ3Vyc29yKG4pLGRlbGV0ZSB0aGlzLl9pbnB1dEV2ZW50fX0se2tleToiX29uQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudmFsdWUhPT10aGlzLmVsLnZhbHVlJiZ0aGlzLnVwZGF0ZVZhbHVlKCksdGhpcy5tYXNrZWQuZG9Db21taXQoKSx0aGlzLnVwZGF0ZUNvbnRyb2woKSx0aGlzLl9zYXZlU2VsZWN0aW9uKCl9fSx7a2V5OiJfb25Ecm9wIix2YWx1ZTpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKX19LHtrZXk6Il9vbkZvY3VzIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmFsaWduQ3Vyc29yRnJpZW5kbHkoKX19LHtrZXk6Il9vbkNsaWNrIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmFsaWduQ3Vyc29yRnJpZW5kbHkoKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fdW5iaW5kRXZlbnRzKCksdGhpcy5fbGlzdGVuZXJzLmxlbmd0aD0wLGRlbGV0ZSB0aGlzLmVsfX1dKSx0fSgpO0YuSW5wdXRNYXNrPVE7dmFyIHR0PWZ1bmN0aW9uKHQpe28oaSx0KTt2YXIgZT11KGkpO2Z1bmN0aW9uIGkoKXtyZXR1cm4gYSh0aGlzLGkpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiByKGksW3trZXk6Il91cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuZW51bSYmKHQubWFzaz0iKiIucmVwZWF0KHQuZW51bVswXS5sZW5ndGgpKSxnKGwoaS5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fSx7a2V5OiJkb1ZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCxlPXRoaXMscz1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KHMpLG49MDtuPHM7bisrKWFbbl09YXJndW1lbnRzW25dO3JldHVybiB0aGlzLmVudW0uc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5kZXhPZihlLnVubWFza2VkVmFsdWUpPj0wfSkpJiYodD1nKGwoaS5wcm90b3R5cGUpLCJkb1ZhbGlkYXRlIix0aGlzKSkuY2FsbC5hcHBseSh0LFt0aGlzXS5jb25jYXQoYSkpfX1dKSxpfShqKTtGLk1hc2tlZEVudW09dHQ7dmFyIGV0LGl0PWZ1bmN0aW9uKHQpe28oaSx0KTt2YXIgZT11KGkpO2Z1bmN0aW9uIGkodCl7cmV0dXJuIGEodGhpcyxpKSxlLmNhbGwodGhpcyxPYmplY3QuYXNzaWduKHt9LGkuREVGQVVMVFMsdCkpfXJldHVybiByKGksW3trZXk6Il91cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe2cobChpLnByb3RvdHlwZSksIl91cGRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KSx0aGlzLl91cGRhdGVSZWdFeHBzKCl9fSx7a2V5OiJfdXBkYXRlUmVnRXhwcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0iXiIrKHRoaXMuYWxsb3dOZWdhdGl2ZT8iWyt8XFwtXT8iOiIiKSxlPSh0aGlzLnNjYWxlPyIoIitMKHRoaXMucmFkaXgpKyJcXGR7MCwiK3RoaXMuc2NhbGUrIn0pPyI6IiIpKyIkIjt0aGlzLl9udW1iZXJSZWdFeHBJbnB1dD1uZXcgUmVnRXhwKHQrIigwfChbMS05XStcXGQqKSk/IitlKSx0aGlzLl9udW1iZXJSZWdFeHA9bmV3IFJlZ0V4cCh0KyJcXGQqIitlKSx0aGlzLl9tYXBUb1JhZGl4UmVnRXhwPW5ldyBSZWdFeHAoIlsiK3RoaXMubWFwVG9SYWRpeC5tYXAoTCkuam9pbigiIikrIl0iLCJnIiksdGhpcy5fdGhvdXNhbmRzU2VwYXJhdG9yUmVnRXhwPW5ldyBSZWdFeHAoTCh0aGlzLnRob3VzYW5kc1NlcGFyYXRvciksImciKX19LHtrZXk6Il9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKHRoaXMuX3Rob3VzYW5kc1NlcGFyYXRvclJlZ0V4cCwiIil9fSx7a2V5OiJfaW5zZXJ0VGhvdXNhbmRzU2VwYXJhdG9ycyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zcGxpdCh0aGlzLnJhZGl4KTtyZXR1cm4gZVswXT1lWzBdLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csdGhpcy50aG91c2FuZHNTZXBhcmF0b3IpLGUuam9pbih0aGlzLnJhZGl4KX19LHtrZXk6ImRvUHJlcGFyZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU7dD10LnJlcGxhY2UodGhpcy5fbWFwVG9SYWRpeFJlZ0V4cCx0aGlzLnJhZGl4KTtmb3IodmFyIHM9dGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0KSxhPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoYT4xP2EtMTowKSxyPTE7cjxhO3IrKyluW3ItMV09YXJndW1lbnRzW3JdO3ZhciBvPVAoKGU9ZyhsKGkucHJvdG90eXBlKSwiZG9QcmVwYXJlIix0aGlzKSkuY2FsbC5hcHBseShlLFt0aGlzLHNdLmNvbmNhdChuKSkpLGM9dihvLDIpLGg9Y1swXSxkPWNbMV07cmV0dXJuIHQmJiFzJiYoZC5za2lwPSEwKSxbaCxkXX19LHtrZXk6Il9zZXBhcmF0b3JzQ291bnQiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLGk9MCxzPTA7czx0Oysrcyl0aGlzLl92YWx1ZS5pbmRleE9mKHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yLHMpPT09cyYmKCsraSxlJiYodCs9dGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RoKSk7cmV0dXJuIGl9fSx7a2V5OiJfc2VwYXJhdG9yc0NvdW50RnJvbVNsaWNlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLl92YWx1ZTtyZXR1cm4gdGhpcy5fc2VwYXJhdG9yc0NvdW50KHRoaXMuX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnModCkubGVuZ3RoLCEwKX19LHtrZXk6ImV4dHJhY3RJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxzPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwLGE9dGhpcy5fYWRqdXN0UmFuZ2VXaXRoU2VwYXJhdG9ycyh0LGUpLG49dihhLDIpO3JldHVybiB0PW5bMF0sZT1uWzFdLHRoaXMuX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnMoZyhsKGkucHJvdG90eXBlKSwiZXh0cmFjdElucHV0Iix0aGlzKS5jYWxsKHRoaXMsdCxlLHMpKX19LHtrZXk6Il9hcHBlbmRDaGFyUmF3Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307aWYoIXRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKXJldHVybiBnKGwoaS5wcm90b3R5cGUpLCJfYXBwZW5kQ2hhclJhdyIsdGhpcykuY2FsbCh0aGlzLHQsZSk7dmFyIHM9ZS50YWlsJiZlLl9iZWZvcmVUYWlsU3RhdGU/ZS5fYmVmb3JlVGFpbFN0YXRlLl92YWx1ZTp0aGlzLl92YWx1ZSxhPXRoaXMuX3NlcGFyYXRvcnNDb3VudEZyb21TbGljZShzKTt0aGlzLl92YWx1ZT10aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKHRoaXMudmFsdWUpO3ZhciBuPWcobChpLnByb3RvdHlwZSksIl9hcHBlbmRDaGFyUmF3Iix0aGlzKS5jYWxsKHRoaXMsdCxlKTt0aGlzLl92YWx1ZT10aGlzLl9pbnNlcnRUaG91c2FuZHNTZXBhcmF0b3JzKHRoaXMuX3ZhbHVlKTt2YXIgcj1lLnRhaWwmJmUuX2JlZm9yZVRhaWxTdGF0ZT9lLl9iZWZvcmVUYWlsU3RhdGUuX3ZhbHVlOnRoaXMuX3ZhbHVlLG89dGhpcy5fc2VwYXJhdG9yc0NvdW50RnJvbVNsaWNlKHIpO3JldHVybiBuLnRhaWxTaGlmdCs9KG8tYSkqdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RoLG4uc2tpcD0hbi5yYXdJbnNlcnRlZCYmdD09PXRoaXMudGhvdXNhbmRzU2VwYXJhdG9yLG59fSx7a2V5OiJfZmluZFNlcGFyYXRvckFyb3VuZCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodGhpcy50aG91c2FuZHNTZXBhcmF0b3Ipe3ZhciBlPXQtdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RoKzEsaT10aGlzLnZhbHVlLmluZGV4T2YodGhpcy50aG91c2FuZHNTZXBhcmF0b3IsZSk7aWYoaTw9dClyZXR1cm4gaX1yZXR1cm4tMX19LHtrZXk6Il9hZGp1c3RSYW5nZVdpdGhTZXBhcmF0b3JzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2ZpbmRTZXBhcmF0b3JBcm91bmQodCk7aT49MCYmKHQ9aSk7dmFyIHM9dGhpcy5fZmluZFNlcGFyYXRvckFyb3VuZChlKTtyZXR1cm4gcz49MCYmKGU9cyt0aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGgpLFt0LGVdfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoLGk9dGhpcy5fYWRqdXN0UmFuZ2VXaXRoU2VwYXJhdG9ycyh0LGUpLHM9dihpLDIpO3Q9c1swXSxlPXNbMV07dmFyIGE9dGhpcy52YWx1ZS5zbGljZSgwLHQpLG49dGhpcy52YWx1ZS5zbGljZShlKSxyPXRoaXMuX3NlcGFyYXRvcnNDb3VudChhLmxlbmd0aCk7dGhpcy5fdmFsdWU9dGhpcy5faW5zZXJ0VGhvdXNhbmRzU2VwYXJhdG9ycyh0aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKGErbikpO3ZhciBvPXRoaXMuX3NlcGFyYXRvcnNDb3VudEZyb21TbGljZShhKTtyZXR1cm4gbmV3IHkoe3RhaWxTaGlmdDooby1yKSp0aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGh9KX19LHtrZXk6Im5lYXJlc3RJbnB1dFBvcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZighdGhpcy50aG91c2FuZHNTZXBhcmF0b3IpcmV0dXJuIHQ7c3dpdGNoKGUpe2Nhc2UgazpjYXNlIFM6Y2FzZSBDOnZhciBpPXRoaXMuX2ZpbmRTZXBhcmF0b3JBcm91bmQodC0xKTtpZihpPj0wKXt2YXIgcz1pK3RoaXMudGhvdXNhbmRzU2VwYXJhdG9yLmxlbmd0aDtpZih0PHN8fHRoaXMudmFsdWUubGVuZ3RoPD1zfHxlPT09QylyZXR1cm4gaX1icmVhaztjYXNlIEE6Y2FzZSBFOnZhciBhPXRoaXMuX2ZpbmRTZXBhcmF0b3JBcm91bmQodCk7aWYoYT49MClyZXR1cm4gYSt0aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGh9cmV0dXJuIHR9fSx7a2V5OiJkb1ZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0odC5pbnB1dD90aGlzLl9udW1iZXJSZWdFeHBJbnB1dDp0aGlzLl9udW1iZXJSZWdFeHApLnRlc3QodGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0aGlzLnZhbHVlKSk7aWYoZSl7dmFyIHM9dGhpcy5udW1iZXI7ZT1lJiYhaXNOYU4ocykmJihudWxsPT10aGlzLm1pbnx8dGhpcy5taW4+PTB8fHRoaXMubWluPD10aGlzLm51bWJlcikmJihudWxsPT10aGlzLm1heHx8dGhpcy5tYXg8PTB8fHRoaXMubnVtYmVyPD10aGlzLm1heCl9cmV0dXJuIGUmJmcobChpLnByb3RvdHlwZSksImRvVmFsaWRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMudmFsdWUpe3ZhciB0PXRoaXMubnVtYmVyLGU9dDtudWxsIT10aGlzLm1pbiYmKGU9TWF0aC5tYXgoZSx0aGlzLm1pbikpLG51bGwhPXRoaXMubWF4JiYoZT1NYXRoLm1pbihlLHRoaXMubWF4KSksZSE9PXQmJih0aGlzLnVubWFza2VkVmFsdWU9U3RyaW5nKGUpKTt2YXIgcz10aGlzLnZhbHVlO3RoaXMubm9ybWFsaXplWmVyb3MmJihzPXRoaXMuX25vcm1hbGl6ZVplcm9zKHMpKSx0aGlzLnBhZEZyYWN0aW9uYWxaZXJvcyYmdGhpcy5zY2FsZT4wJiYocz10aGlzLl9wYWRGcmFjdGlvbmFsWmVyb3MocykpLHRoaXMuX3ZhbHVlPXN9ZyhsKGkucHJvdG90eXBlKSwiZG9Db21taXQiLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJfbm9ybWFsaXplWmVyb3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnModCkuc3BsaXQodGhpcy5yYWRpeCk7cmV0dXJuIGVbMF09ZVswXS5yZXBsYWNlKC9eKFxEKikoMCopKFxkKikvLChmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gZStzfSkpLHQubGVuZ3RoJiYhL1xkJC8udGVzdChlWzBdKSYmKGVbMF09ZVswXSsiMCIpLGUubGVuZ3RoPjEmJihlWzFdPWVbMV0ucmVwbGFjZSgvMCokLywiIiksZVsxXS5sZW5ndGh8fChlLmxlbmd0aD0xKSksdGhpcy5faW5zZXJ0VGhvdXNhbmRzU2VwYXJhdG9ycyhlLmpvaW4odGhpcy5yYWRpeCkpfX0se2tleToiX3BhZEZyYWN0aW9uYWxaZXJvcyIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIHQ7dmFyIGU9dC5zcGxpdCh0aGlzLnJhZGl4KTtyZXR1cm4gZS5sZW5ndGg8MiYmZS5wdXNoKCIiKSxlWzFdPWVbMV0ucGFkRW5kKHRoaXMuc2NhbGUsIjAiKSxlLmpvaW4odGhpcy5yYWRpeCl9fSx7a2V5OiJ1bm1hc2tlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0aGlzLl9ub3JtYWxpemVaZXJvcyh0aGlzLnZhbHVlKSkucmVwbGFjZSh0aGlzLnJhZGl4LCIuIil9LHNldDpmdW5jdGlvbih0KXttKGwoaS5wcm90b3R5cGUpLCJ1bm1hc2tlZFZhbHVlIix0LnJlcGxhY2UoIi4iLHRoaXMucmFkaXgpLHRoaXMsITApfX0se2tleToidHlwZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE51bWJlcih0aGlzLnVubWFza2VkVmFsdWUpfSxzZXQ6ZnVuY3Rpb24odCl7bShsKGkucHJvdG90eXBlKSwidW5tYXNrZWRWYWx1ZSIsU3RyaW5nKHQpLHRoaXMsITApfX0se2tleToibnVtYmVyIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlZFZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy50eXBlZFZhbHVlPXR9fSx7a2V5OiJhbGxvd05lZ2F0aXZlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaWduZWR8fG51bGwhPXRoaXMubWluJiZ0aGlzLm1pbjwwfHxudWxsIT10aGlzLm1heCYmdGhpcy5tYXg8MH19LHtrZXk6InR5cGVkVmFsdWVFcXVhbHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybihnKGwoaS5wcm90b3R5cGUpLCJ0eXBlZFZhbHVlRXF1YWxzIix0aGlzKS5jYWxsKHRoaXMsdCl8fGkuRU1QVFlfVkFMVUVTLmluY2x1ZGVzKHQpJiZpLkVNUFRZX1ZBTFVFUy5pbmNsdWRlcyh0aGlzLnR5cGVkVmFsdWUpKSYmISgwPT09dCYmIiI9PT10aGlzLnZhbHVlKX19XSksaX0oRCk7aXQuREVGQVVMVFM9e3JhZGl4OiIsIix0aG91c2FuZHNTZXBhcmF0b3I6IiIsbWFwVG9SYWRpeDpbIi4iXSxzY2FsZToyLHNpZ25lZDohMSxub3JtYWxpemVaZXJvczohMCxwYWRGcmFjdGlvbmFsWmVyb3M6ITF9LGl0LkVNUFRZX1ZBTFVFUz1bXS5jb25jYXQoZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gYih0KX0oZXQ9RC5FTVBUWV9WQUxVRVMpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KGV0KXx8eChldCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCksWzBdKSxGLk1hc2tlZE51bWJlcj1pdDt2YXIgc3Q9ZnVuY3Rpb24odCl7byhpLHQpO3ZhciBlPXUoaSk7ZnVuY3Rpb24gaSgpe3JldHVybiBhKHRoaXMsaSksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHIoaSxbe2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dC5tYXNrJiYodC52YWxpZGF0ZT10Lm1hc2spLGcobChpLnByb3RvdHlwZSksIl91cGRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KX19XSksaX0oRCk7Ri5NYXNrZWRGdW5jdGlvbj1zdDt2YXIgYXQ9WyJjb21waWxlZE1hc2tzIiwiY3VycmVudE1hc2tSZWYiLCJjdXJyZW50TWFzayJdLG50PWZ1bmN0aW9uKHQpe28oaSx0KTt2YXIgZT11KGkpO2Z1bmN0aW9uIGkodCl7dmFyIHM7cmV0dXJuIGEodGhpcyxpKSwocz1lLmNhbGwodGhpcyxPYmplY3QuYXNzaWduKHt9LGkuREVGQVVMVFMsdCkpKS5jdXJyZW50TWFzaz1udWxsLHN9cmV0dXJuIHIoaSxbe2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7ZyhsKGkucHJvdG90eXBlKSwiX3VwZGF0ZSIsdGhpcykuY2FsbCh0aGlzLHQpLCJtYXNrImluIHQmJih0aGlzLmNvbXBpbGVkTWFza3M9QXJyYXkuaXNBcnJheSh0Lm1hc2spP3QubWFzay5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBOKHQpfSkpOltdKX19LHtrZXk6Il9hcHBlbmRDaGFyUmF3Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30saT10aGlzLl9hcHBseURpc3BhdGNoKHQsZSk7cmV0dXJuIHRoaXMuY3VycmVudE1hc2smJmkuYWdncmVnYXRlKHRoaXMuY3VycmVudE1hc2suX2FwcGVuZENoYXIodCx0aGlzLmN1cnJlbnRNYXNrRmxhZ3MoZSkpKSxpfX0se2tleToiX2FwcGx5RGlzcGF0Y2giLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiIiLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LGk9ZS50YWlsJiZudWxsIT1lLl9iZWZvcmVUYWlsU3RhdGU/ZS5fYmVmb3JlVGFpbFN0YXRlLl92YWx1ZTp0aGlzLnZhbHVlLHM9dGhpcy5yYXdJbnB1dFZhbHVlLGE9ZS50YWlsJiZudWxsIT1lLl9iZWZvcmVUYWlsU3RhdGU/ZS5fYmVmb3JlVGFpbFN0YXRlLl9yYXdJbnB1dFZhbHVlOnMsbj1zLnNsaWNlKGEubGVuZ3RoKSxyPXRoaXMuY3VycmVudE1hc2ssbz1uZXcgeSxsPW51bGw9PXI/dm9pZCAwOnIuc3RhdGU7aWYodGhpcy5jdXJyZW50TWFzaz10aGlzLmRvRGlzcGF0Y2godCxPYmplY3QuYXNzaWduKHt9LGUpKSx0aGlzLmN1cnJlbnRNYXNrKWlmKHRoaXMuY3VycmVudE1hc2shPT1yKXtpZih0aGlzLmN1cnJlbnRNYXNrLnJlc2V0KCksYSl7dmFyIGM9dGhpcy5jdXJyZW50TWFzay5hcHBlbmQoYSx7cmF3OiEwfSk7by50YWlsU2hpZnQ9Yy5pbnNlcnRlZC5sZW5ndGgtaS5sZW5ndGh9biYmKG8udGFpbFNoaWZ0Kz10aGlzLmN1cnJlbnRNYXNrLmFwcGVuZChuLHtyYXc6ITAsdGFpbDohMH0pLnRhaWxTaGlmdCl9ZWxzZSB0aGlzLmN1cnJlbnRNYXNrLnN0YXRlPWw7cmV0dXJuIG99fSx7a2V5OiJfYXBwZW5kUGxhY2Vob2xkZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fYXBwbHlEaXNwYXRjaC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuY3VycmVudE1hc2smJnQuYWdncmVnYXRlKHRoaXMuY3VycmVudE1hc2suX2FwcGVuZFBsYWNlaG9sZGVyKCkpLHR9fSx7a2V5OiJfYXBwZW5kRWFnZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fYXBwbHlEaXNwYXRjaC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuY3VycmVudE1hc2smJnQuYWdncmVnYXRlKHRoaXMuY3VycmVudE1hc2suX2FwcGVuZEVhZ2VyKCkpLHR9fSx7a2V5OiJjdXJyZW50TWFza0ZsYWdzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpO3JldHVybiBPYmplY3QuYXNzaWduKHt9LHQse19iZWZvcmVUYWlsU3RhdGU6KG51bGw9PT0oZT10Ll9iZWZvcmVUYWlsU3RhdGUpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmN1cnJlbnRNYXNrUmVmKT09PXRoaXMuY3VycmVudE1hc2smJihudWxsPT09KGk9dC5fYmVmb3JlVGFpbFN0YXRlKXx8dm9pZCAwPT09aT92b2lkIDA6aS5jdXJyZW50TWFzayl8fHQuX2JlZm9yZVRhaWxTdGF0ZX0pfX0se2tleToiZG9EaXNwYXRjaCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3JldHVybiB0aGlzLmRpc3BhdGNoKHQsdGhpcyxlKX19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBnKGwoaS5wcm90b3R5cGUpLCJkb1ZhbGlkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCkmJighdGhpcy5jdXJyZW50TWFza3x8dGhpcy5jdXJyZW50TWFzay5kb1ZhbGlkYXRlKHRoaXMuY3VycmVudE1hc2tGbGFncyh0KSkpfX0se2tleToiZG9QcmVwYXJlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30scz1QKGcobChpLnByb3RvdHlwZSksImRvUHJlcGFyZSIsdGhpcykuY2FsbCh0aGlzLHQsZSkpLGE9dihzLDIpLG49YVswXSxyPWFbMV07aWYodGhpcy5jdXJyZW50TWFzayl7dmFyIG8sYz1QKGcobChpLnByb3RvdHlwZSksImRvUHJlcGFyZSIsdGhpcykuY2FsbCh0aGlzLG4sdGhpcy5jdXJyZW50TWFza0ZsYWdzKGUpKSksaD12KGMsMik7bj1oWzBdLG89aFsxXSxyPXIuYWdncmVnYXRlKG8pfXJldHVybltuLHJdfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuY3VycmVudE1hc2spfHx2b2lkIDA9PT10fHx0LnJlc2V0KCksdGhpcy5jb21waWxlZE1hc2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlc2V0KCl9KSl9fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudE1hc2s/dGhpcy5jdXJyZW50TWFzay52YWx1ZToiIn0sc2V0OmZ1bmN0aW9uKHQpe20obChpLnByb3RvdHlwZSksInZhbHVlIix0LHRoaXMsITApfX0se2tleToidW5tYXNrZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudE1hc2s/dGhpcy5jdXJyZW50TWFzay51bm1hc2tlZFZhbHVlOiIifSxzZXQ6ZnVuY3Rpb24odCl7bShsKGkucHJvdG90eXBlKSwidW5tYXNrZWRWYWx1ZSIsdCx0aGlzLCEwKX19LHtrZXk6InR5cGVkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRNYXNrP3RoaXMuY3VycmVudE1hc2sudHlwZWRWYWx1ZToiIn0sc2V0OmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyh0KTt0aGlzLmN1cnJlbnRNYXNrJiYodGhpcy5jdXJyZW50TWFzay50eXBlZFZhbHVlPXQsZT10aGlzLmN1cnJlbnRNYXNrLnVubWFza2VkVmFsdWUpLHRoaXMudW5tYXNrZWRWYWx1ZT1lfX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIEJvb2xlYW4obnVsbD09PSh0PXRoaXMuY3VycmVudE1hc2spfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmlzQ29tcGxldGUpfX0se2tleToiaXNGaWxsZWQiLGdldDpmdW5jdGlvbigpe3ZhciB0O3JldHVybiBCb29sZWFuKG51bGw9PT0odD10aGlzLmN1cnJlbnRNYXNrKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pc0ZpbGxlZCl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT1uZXcgeTtyZXR1cm4gdGhpcy5jdXJyZW50TWFzayYmZS5hZ2dyZWdhdGUoKHQ9dGhpcy5jdXJyZW50TWFzaykucmVtb3ZlLmFwcGx5KHQsYXJndW1lbnRzKSkuYWdncmVnYXRlKHRoaXMuX2FwcGx5RGlzcGF0Y2goKSksZX19LHtrZXk6InN0YXRlIixnZXQ6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxnKGwoaS5wcm90b3R5cGUpLCJzdGF0ZSIsdGhpcykse19yYXdJbnB1dFZhbHVlOnRoaXMucmF3SW5wdXRWYWx1ZSxjb21waWxlZE1hc2tzOnRoaXMuY29tcGlsZWRNYXNrcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0YXRlfSkpLGN1cnJlbnRNYXNrUmVmOnRoaXMuY3VycmVudE1hc2ssY3VycmVudE1hc2s6bnVsbD09PSh0PXRoaXMuY3VycmVudE1hc2spfHx2b2lkIDA9PT10P3ZvaWQgMDp0LnN0YXRlfSl9LHNldDpmdW5jdGlvbih0KXt2YXIgZT10LmNvbXBpbGVkTWFza3Mscz10LmN1cnJlbnRNYXNrUmVmLGE9dC5jdXJyZW50TWFzayxuPWgodCxhdCk7dGhpcy5jb21waWxlZE1hc2tzLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIHQuc3RhdGU9ZVtpXX0pKSxudWxsIT1zJiYodGhpcy5jdXJyZW50TWFzaz1zLHRoaXMuY3VycmVudE1hc2suc3RhdGU9YSksbShsKGkucHJvdG90eXBlKSwic3RhdGUiLG4sdGhpcywhMCl9fSx7a2V5OiJleHRyYWN0SW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIHRoaXMuY3VycmVudE1hc2s/KHQ9dGhpcy5jdXJyZW50TWFzaykuZXh0cmFjdElucHV0LmFwcGx5KHQsYXJndW1lbnRzKToiIn19LHtrZXk6ImV4dHJhY3RUYWlsIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCxlLHM9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShzKSxuPTA7bjxzO24rKylhW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz8odD10aGlzLmN1cnJlbnRNYXNrKS5leHRyYWN0VGFpbC5hcHBseSh0LGEpOihlPWcobChpLnByb3RvdHlwZSksImV4dHJhY3RUYWlsIix0aGlzKSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQoYSkpfX0se2tleToiZG9Db21taXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50TWFzayYmdGhpcy5jdXJyZW50TWFzay5kb0NvbW1pdCgpLGcobChpLnByb3RvdHlwZSksImRvQ29tbWl0Iix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCxlLHM9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShzKSxuPTA7bjxzO24rKylhW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz8odD10aGlzLmN1cnJlbnRNYXNrKS5uZWFyZXN0SW5wdXRQb3MuYXBwbHkodCxhKTooZT1nKGwoaS5wcm90b3R5cGUpLCJuZWFyZXN0SW5wdXRQb3MiLHRoaXMpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChhKSl9fSx7a2V5OiJvdmVyd3JpdGUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRNYXNrP3RoaXMuY3VycmVudE1hc2sub3ZlcndyaXRlOmcobChpLnByb3RvdHlwZSksIm92ZXJ3cml0ZSIsdGhpcyl9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oJyJvdmVyd3JpdGUiIG9wdGlvbiBpcyBub3QgYXZhaWxhYmxlIGluIGR5bmFtaWMgbWFzaywgdXNlIHRoaXMgb3B0aW9uIGluIHNpYmxpbmdzJyl9fSx7a2V5OiJlYWdlciIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudE1hc2s/dGhpcy5jdXJyZW50TWFzay5lYWdlcjpnKGwoaS5wcm90b3R5cGUpLCJlYWdlciIsdGhpcyl9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oJyJlYWdlciIgb3B0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4gZHluYW1pYyBtYXNrLCB1c2UgdGhpcyBvcHRpb24gaW4gc2libGluZ3MnKX19LHtrZXk6Im1hc2tFcXVhbHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiZ0aGlzLmNvbXBpbGVkTWFza3MuZXZlcnkoKGZ1bmN0aW9uKGUsaSl7dmFyIHM7cmV0dXJuIGUubWFza0VxdWFscyhudWxsPT09KHM9dFtpXSl8fHZvaWQgMD09PXM/dm9pZCAwOnMubWFzayl9KSl9fSx7a2V5OiJ0eXBlZFZhbHVlRXF1YWxzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gQm9vbGVhbihudWxsPT09KGU9dGhpcy5jdXJyZW50TWFzayl8fHZvaWQgMD09PWU/dm9pZCAwOmUudHlwZWRWYWx1ZUVxdWFscyh0KSl9fV0pLGl9KEQpO250LkRFRkFVTFRTPXtkaXNwYXRjaDpmdW5jdGlvbih0LGUsaSl7aWYoZS5jb21waWxlZE1hc2tzLmxlbmd0aCl7dmFyIHM9ZS5yYXdJbnB1dFZhbHVlLGE9ZS5jb21waWxlZE1hc2tzLm1hcCgoZnVuY3Rpb24oYSxuKXtyZXR1cm4gYS5yZXNldCgpLGEuYXBwZW5kKHMse3JhdzohMH0pLGEuYXBwZW5kKHQsZS5jdXJyZW50TWFza0ZsYWdzKGkpKSx7d2VpZ2h0OmEucmF3SW5wdXRWYWx1ZS5sZW5ndGgsaW5kZXg6bn19KSk7cmV0dXJuIGEuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS53ZWlnaHQtdC53ZWlnaHR9KSksZS5jb21waWxlZE1hc2tzW2FbMF0uaW5kZXhdfX19LEYuTWFza2VkRHluYW1pYz1udDt2YXIgcnQ9e01BU0tFRDoidmFsdWUiLFVOTUFTS0VEOiJ1bm1hc2tlZFZhbHVlIixUWVBFRDoidHlwZWRWYWx1ZSJ9O2Z1bmN0aW9uIG90KHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpydC5NQVNLRUQsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06cnQuTUFTS0VELHM9Tih0KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHMucnVuSXNvbGF0ZWQoKGZ1bmN0aW9uKHMpe3JldHVybiBzW2VdPXQsc1tpXX0pKX19Ri5QSVBFX1RZUEU9cnQsRi5jcmVhdGVQaXBlPW90LEYucGlwZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShlPjE/ZS0xOjApLHM9MTtzPGU7cysrKWlbcy0xXT1hcmd1bWVudHNbc107cmV0dXJuIG90LmFwcGx5KHZvaWQgMCxpKSh0KX07dHJ5e2dsb2JhbFRoaXMuSU1hc2s9Rn1jYXRjaCh0KXt9fSw2ODU6ZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtpLmQoZSx7SXE6ZnVuY3Rpb24oKXtyZXR1cm4gaH19KTt2YXIgcyxhPWZ1bmN0aW9uKCl7cmV0dXJuIGE9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlLGk9MSxzPWFyZ3VtZW50cy5sZW5ndGg7aTxzO2krKylmb3IodmFyIGEgaW4gZT1hcmd1bWVudHNbaV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsYSkmJih0W2FdPWVbYV0pO3JldHVybiB0fSxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5vcHRpb25zPXQsdGhpcy5saXN0ZW5lcnM9e319cmV0dXJuIHQucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5saXN0ZW5lcnNbdF18fFtdO3RoaXMubGlzdGVuZXJzW3RdPWkuY29uY2F0KFtlXSl9LHQucHJvdG90eXBlLnRyaWdnZXJFdmVudD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7KHRoaXMubGlzdGVuZXJzW3RdfHxbXSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQoe3RhcmdldDppLGV2ZW50OmV9KX0pKX0sdH0oKTshZnVuY3Rpb24odCl7dFt0LkFkZD0wXT0iQWRkIix0W3QuUmVtb3ZlPTFdPSJSZW1vdmUifShzfHwocz17fSkpO3ZhciByLG89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5ub3RpZmljYXRpb25zPVtdfXJldHVybiB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQpe3RoaXMubm90aWZpY2F0aW9ucy5wdXNoKHQpLHRoaXMudXBkYXRlRm4odCxzLkFkZCx0aGlzLm5vdGlmaWNhdGlvbnMpfSx0LnByb3RvdHlwZS5zcGxpY2U9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLm5vdGlmaWNhdGlvbnMuc3BsaWNlKHQsZSlbMF07cmV0dXJuIHRoaXMudXBkYXRlRm4oaSxzLlJlbW92ZSx0aGlzLm5vdGlmaWNhdGlvbnMpLGl9LHQucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9ucy5pbmRleE9mKHQpfSx0LnByb3RvdHlwZS5vblVwZGF0ZT1mdW5jdGlvbih0KXt0aGlzLnVwZGF0ZUZuPXR9LHR9KCk7IWZ1bmN0aW9uKHQpe3QuRGlzbWlzcz0iZGlzbWlzcyIsdC5DbGljaz0iY2xpY2sifShyfHwocj17fSkpO3ZhciBsPXt0eXBlczpbe3R5cGU6InN1Y2Nlc3MiLGNsYXNzTmFtZToibm90eWZfX3RvYXN0LS1zdWNjZXNzIixiYWNrZ3JvdW5kQ29sb3I6IiMzZGM3NjMiLGljb246e2NsYXNzTmFtZToibm90eWZfX2ljb24tLXN1Y2Nlc3MiLHRhZ05hbWU6ImkifX0se3R5cGU6ImVycm9yIixjbGFzc05hbWU6Im5vdHlmX190b2FzdC0tZXJyb3IiLGJhY2tncm91bmRDb2xvcjoiI2VkM2QzZCIsaWNvbjp7Y2xhc3NOYW1lOiJub3R5Zl9faWNvbi0tZXJyb3IiLHRhZ05hbWU6ImkifX1dLGR1cmF0aW9uOjJlMyxyaXBwbGU6ITAscG9zaXRpb246e3g6InJpZ2h0Iix5OiJib3R0b20ifSxkaXNtaXNzaWJsZTohMX0sYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLm5vdGlmaWNhdGlvbnM9W10sdGhpcy5ldmVudHM9e30sdGhpcy5YX1BPU0lUSU9OX0ZMRVhfTUFQPXtsZWZ0OiJmbGV4LXN0YXJ0IixjZW50ZXI6ImNlbnRlciIscmlnaHQ6ImZsZXgtZW5kIn0sdGhpcy5ZX1BPU0lUSU9OX0ZMRVhfTUFQPXt0b3A6ImZsZXgtc3RhcnQiLGNlbnRlcjoiY2VudGVyIixib3R0b206ImZsZXgtZW5kIn07dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGU9dGhpcy5fY3JlYXRlSFRNTEVsZW1lbnQoe3RhZ05hbWU6ImRpdiIsY2xhc3NOYW1lOiJub3R5ZiJ9KTt0LmFwcGVuZENoaWxkKGUpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCksdGhpcy5jb250YWluZXI9ZSx0aGlzLmFuaW1hdGlvbkVuZEV2ZW50TmFtZT10aGlzLl9nZXRBbmltYXRpb25FbmRFdmVudE5hbWUoKSx0aGlzLl9jcmVhdGVBMTF5Q29udGFpbmVyKCl9cmV0dXJuIHQucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHQsZSl7dmFyIGk7dGhpcy5ldmVudHM9YShhKHt9LHRoaXMuZXZlbnRzKSwoKGk9e30pW3RdPWUsaSkpfSx0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlKXtlPT09cy5BZGQ/dGhpcy5hZGROb3RpZmljYXRpb24odCk6ZT09PXMuUmVtb3ZlJiZ0aGlzLnJlbW92ZU5vdGlmaWNhdGlvbih0KX0sdC5wcm90b3R5cGUucmVtb3ZlTm90aWZpY2F0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlLGkscz10aGlzLGE9dGhpcy5fcG9wUmVuZGVyZWROb3RpZmljYXRpb24odCk7YSYmKChlPWEubm9kZSkuY2xhc3NMaXN0LmFkZCgibm90eWZfX3RvYXN0LS1kaXNhcHBlYXIiKSxlLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5hbmltYXRpb25FbmRFdmVudE5hbWUsaT1mdW5jdGlvbih0KXt0LnRhcmdldD09PWUmJihlLnJlbW92ZUV2ZW50TGlzdGVuZXIocy5hbmltYXRpb25FbmRFdmVudE5hbWUsaSkscy5jb250YWluZXIucmVtb3ZlQ2hpbGQoZSkpfSkpfSx0LnByb3RvdHlwZS5hZGROb3RpZmljYXRpb249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcmVuZGVyTm90aWZpY2F0aW9uKHQpO3RoaXMubm90aWZpY2F0aW9ucy5wdXNoKHtub3RpZmljYXRpb246dCxub2RlOmV9KSx0aGlzLl9hbm5vdW5jZSh0Lm9wdGlvbnMubWVzc2FnZXx8Ik5vdGlmaWNhdGlvbiIpfSx0LnByb3RvdHlwZS5fcmVuZGVyTm90aWZpY2F0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy5fYnVpbGROb3RpZmljYXRpb25DYXJkKHQpLHM9dC5vcHRpb25zLmNsYXNzTmFtZTtyZXR1cm4gcyYmKGU9aS5jbGFzc0xpc3QpLmFkZC5hcHBseShlLHMuc3BsaXQoIiAiKSksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQoaSksaX0sdC5wcm90b3R5cGUuX3BvcFJlbmRlcmVkTm90aWZpY2F0aW9uPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0tMSxpPTA7aTx0aGlzLm5vdGlmaWNhdGlvbnMubGVuZ3RoJiZlPDA7aSsrKXRoaXMubm90aWZpY2F0aW9uc1tpXS5ub3RpZmljYXRpb249PT10JiYoZT1pKTtpZigtMSE9PWUpcmV0dXJuIHRoaXMubm90aWZpY2F0aW9ucy5zcGxpY2UoZSwxKVswXX0sdC5wcm90b3R5cGUuZ2V0WFBvc2l0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybihudWxsPT09KGU9bnVsbD09dD92b2lkIDA6dC5wb3NpdGlvbil8fHZvaWQgMD09PWU/dm9pZCAwOmUueCl8fCJyaWdodCJ9LHQucHJvdG90eXBlLmdldFlQb3NpdGlvbj1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4obnVsbD09PShlPW51bGw9PXQ/dm9pZCAwOnQucG9zaXRpb24pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnkpfHwiYm90dG9tIn0sdC5wcm90b3R5cGUuYWRqdXN0Q29udGFpbmVyQWxpZ25tZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuWF9QT1NJVElPTl9GTEVYX01BUFt0aGlzLmdldFhQb3NpdGlvbih0KV0saT10aGlzLllfUE9TSVRJT05fRkxFWF9NQVBbdGhpcy5nZXRZUG9zaXRpb24odCldLHM9dGhpcy5jb250YWluZXIuc3R5bGU7cy5zZXRQcm9wZXJ0eSgianVzdGlmeS1jb250ZW50IixpKSxzLnNldFByb3BlcnR5KCJhbGlnbi1pdGVtcyIsZSl9LHQucHJvdG90eXBlLl9idWlsZE5vdGlmaWNhdGlvbkNhcmQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQub3B0aW9ucyxzPWkuaWNvbjt0aGlzLmFkanVzdENvbnRhaW5lckFsaWdubWVudChpKTt2YXIgYT10aGlzLl9jcmVhdGVIVE1MRWxlbWVudCh7dGFnTmFtZToiZGl2IixjbGFzc05hbWU6Im5vdHlmX190b2FzdCJ9KSxuPXRoaXMuX2NyZWF0ZUhUTUxFbGVtZW50KHt0YWdOYW1lOiJkaXYiLGNsYXNzTmFtZToibm90eWZfX3JpcHBsZSJ9KSxvPXRoaXMuX2NyZWF0ZUhUTUxFbGVtZW50KHt0YWdOYW1lOiJkaXYiLGNsYXNzTmFtZToibm90eWZfX3dyYXBwZXIifSksbD10aGlzLl9jcmVhdGVIVE1MRWxlbWVudCh7dGFnTmFtZToiZGl2IixjbGFzc05hbWU6Im5vdHlmX19tZXNzYWdlIn0pO2wuaW5uZXJIVE1MPWkubWVzc2FnZXx8IiI7dmFyIGM9aS5iYWNrZ3JvdW5kfHxpLmJhY2tncm91bmRDb2xvcjtpZihzKXt2YXIgaD10aGlzLl9jcmVhdGVIVE1MRWxlbWVudCh7dGFnTmFtZToiZGl2IixjbGFzc05hbWU6Im5vdHlmX19pY29uIn0pO2lmKCgic3RyaW5nIj09dHlwZW9mIHN8fHMgaW5zdGFuY2VvZiBTdHJpbmcpJiYoaC5pbm5lckhUTUw9bmV3IFN0cmluZyhzKS52YWx1ZU9mKCkpLCJvYmplY3QiPT10eXBlb2Ygcyl7dmFyIGQ9cy50YWdOYW1lLHU9dm9pZCAwPT09ZD8iaSI6ZCxwPXMuY2xhc3NOYW1lLGc9cy50ZXh0LGY9cy5jb2xvcixtPXZvaWQgMD09PWY/YzpmLHY9dGhpcy5fY3JlYXRlSFRNTEVsZW1lbnQoe3RhZ05hbWU6dSxjbGFzc05hbWU6cCx0ZXh0Omd9KTttJiYodi5zdHlsZS5jb2xvcj1tKSxoLmFwcGVuZENoaWxkKHYpfW8uYXBwZW5kQ2hpbGQoaCl9aWYoby5hcHBlbmRDaGlsZChsKSxhLmFwcGVuZENoaWxkKG8pLGMmJihpLnJpcHBsZT8obi5zdHlsZS5iYWNrZ3JvdW5kPWMsYS5hcHBlbmRDaGlsZChuKSk6YS5zdHlsZS5iYWNrZ3JvdW5kPWMpLGkuZGlzbWlzc2libGUpe3ZhciB4PXRoaXMuX2NyZWF0ZUhUTUxFbGVtZW50KHt0YWdOYW1lOiJkaXYiLGNsYXNzTmFtZToibm90eWZfX2Rpc21pc3MifSksYj10aGlzLl9jcmVhdGVIVE1MRWxlbWVudCh7dGFnTmFtZToiYnV0dG9uIixjbGFzc05hbWU6Im5vdHlmX19kaXNtaXNzLWJ0biJ9KTt4LmFwcGVuZENoaWxkKGIpLG8uYXBwZW5kQ2hpbGQoeCksYS5jbGFzc0xpc3QuYWRkKCJub3R5Zl9fdG9hc3QtLWRpc21pc3NpYmxlIiksYi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKGZ1bmN0aW9uKGkpe3ZhciBzLGE7bnVsbD09PShhPShzPWUuZXZlbnRzKVtyLkRpc21pc3NdKXx8dm9pZCAwPT09YXx8YS5jYWxsKHMse3RhcmdldDp0LGV2ZW50Oml9KSxpLnN0b3BQcm9wYWdhdGlvbigpfSkpfWEuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbihpKXt2YXIgcyxhO3JldHVybiBudWxsPT09KGE9KHM9ZS5ldmVudHMpW3IuQ2xpY2tdKXx8dm9pZCAwPT09YT92b2lkIDA6YS5jYWxsKHMse3RhcmdldDp0LGV2ZW50Oml9KX0pKTt2YXIgeT0idG9wIj09PXRoaXMuZ2V0WVBvc2l0aW9uKGkpPyJ1cHBlciI6Imxvd2VyIjtyZXR1cm4gYS5jbGFzc0xpc3QuYWRkKCJub3R5Zl9fdG9hc3QtLSIreSksYX0sdC5wcm90b3R5cGUuX2NyZWF0ZUhUTUxFbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXQudGFnTmFtZSxpPXQuY2xhc3NOYW1lLHM9dC50ZXh0LGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gaSYmKGEuY2xhc3NOYW1lPWkpLGEudGV4dENvbnRlbnQ9c3x8bnVsbCxhfSx0LnByb3RvdHlwZS5fY3JlYXRlQTExeUNvbnRhaW5lcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NyZWF0ZUhUTUxFbGVtZW50KHt0YWdOYW1lOiJkaXYiLGNsYXNzTmFtZToibm90eWYtYW5ub3VuY2VyIn0pO3Quc2V0QXR0cmlidXRlKCJhcmlhLWF0b21pYyIsInRydWUiKSx0LnNldEF0dHJpYnV0ZSgiYXJpYS1saXZlIiwicG9saXRlIiksdC5zdHlsZS5ib3JkZXI9IjAiLHQuc3R5bGUuY2xpcD0icmVjdCgwIDAgMCAwKSIsdC5zdHlsZS5oZWlnaHQ9IjFweCIsdC5zdHlsZS5tYXJnaW49Ii0xcHgiLHQuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsdC5zdHlsZS5wYWRkaW5nPSIwIix0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZS53aWR0aD0iMXB4Iix0LnN0eWxlLm91dGxpbmU9IjAiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCksdGhpcy5hMTF5Q29udGFpbmVyPXR9LHQucHJvdG90eXBlLl9hbm5vdW5jZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuYTExeUNvbnRhaW5lci50ZXh0Q29udGVudD0iIixzZXRUaW1lb3V0KChmdW5jdGlvbigpe2UuYTExeUNvbnRhaW5lci50ZXh0Q29udGVudD10fSksMTAwKX0sdC5wcm90b3R5cGUuX2dldEFuaW1hdGlvbkVuZEV2ZW50TmFtZT1mdW5jdGlvbigpe3ZhciB0LGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiX2Zha2UiKSxpPXtNb3pUcmFuc2l0aW9uOiJhbmltYXRpb25lbmQiLE9UcmFuc2l0aW9uOiJvQW5pbWF0aW9uRW5kIixXZWJraXRUcmFuc2l0aW9uOiJ3ZWJraXRBbmltYXRpb25FbmQiLHRyYW5zaXRpb246ImFuaW1hdGlvbmVuZCJ9O2Zvcih0IGluIGkpaWYodm9pZCAwIT09ZS5zdHlsZVt0XSlyZXR1cm4gaVt0XTtyZXR1cm4iYW5pbWF0aW9uZW5kIn0sdH0oKSxoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgZT10aGlzO3RoaXMuZGlzbWlzcz10aGlzLl9yZW1vdmVOb3RpZmljYXRpb24sdGhpcy5ub3RpZmljYXRpb25zPW5ldyBvLHRoaXMudmlldz1uZXcgYzt2YXIgaT10aGlzLnJlZ2lzdGVyVHlwZXModCk7dGhpcy5vcHRpb25zPWEoYSh7fSxsKSx0KSx0aGlzLm9wdGlvbnMudHlwZXM9aSx0aGlzLm5vdGlmaWNhdGlvbnMub25VcGRhdGUoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUudmlldy51cGRhdGUodCxpKX0pKSx0aGlzLnZpZXcub24oci5EaXNtaXNzLChmdW5jdGlvbih0KXt2YXIgaT10LnRhcmdldCxzPXQuZXZlbnQ7ZS5fcmVtb3ZlTm90aWZpY2F0aW9uKGkpLGkudHJpZ2dlckV2ZW50KHIuRGlzbWlzcyxzKX0pKSx0aGlzLnZpZXcub24oci5DbGljaywoZnVuY3Rpb24odCl7dmFyIGU9dC50YXJnZXQsaT10LmV2ZW50O3JldHVybiBlLnRyaWdnZXJFdmVudChyLkNsaWNrLGkpfSkpfXJldHVybiB0LnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm5vcm1hbGl6ZU9wdGlvbnMoImVycm9yIix0KTtyZXR1cm4gdGhpcy5vcGVuKGUpfSx0LnByb3RvdHlwZS5zdWNjZXNzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubm9ybWFsaXplT3B0aW9ucygic3VjY2VzcyIsdCk7cmV0dXJuIHRoaXMub3BlbihlKX0sdC5wcm90b3R5cGUub3Blbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMudHlwZXMuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PXQudHlwZX0pKXx8e30saT1hKGEoe30sZSksdCk7dGhpcy5hc3NpZ25Qcm9wcyhbInJpcHBsZSIsInBvc2l0aW9uIiwiZGlzbWlzc2libGUiXSxpKTt2YXIgcz1uZXcgbihpKTtyZXR1cm4gdGhpcy5fcHVzaE5vdGlmaWNhdGlvbihzKSxzfSx0LnByb3RvdHlwZS5kaXNtaXNzQWxsPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLm5vdGlmaWNhdGlvbnMuc3BsaWNlKDAsMSk7KTt9LHQucHJvdG90eXBlLmFzc2lnblByb3BzPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpczt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2VbdF09bnVsbD09ZVt0XT9pLm9wdGlvbnNbdF06ZVt0XX0pKX0sdC5wcm90b3R5cGUuX3B1c2hOb3RpZmljYXRpb249ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLm5vdGlmaWNhdGlvbnMucHVzaCh0KTt2YXIgaT12b2lkIDAhPT10Lm9wdGlvbnMuZHVyYXRpb24/dC5vcHRpb25zLmR1cmF0aW9uOnRoaXMub3B0aW9ucy5kdXJhdGlvbjtpJiZzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlLl9yZW1vdmVOb3RpZmljYXRpb24odCl9KSxpKX0sdC5wcm90b3R5cGUuX3JlbW92ZU5vdGlmaWNhdGlvbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm5vdGlmaWNhdGlvbnMuaW5kZXhPZih0KTstMSE9PWUmJnRoaXMubm90aWZpY2F0aW9ucy5zcGxpY2UoZSwxKX0sdC5wcm90b3R5cGUubm9ybWFsaXplT3B0aW9ucz1mdW5jdGlvbih0LGUpe3ZhciBpPXt0eXBlOnR9O3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9pLm1lc3NhZ2U9ZToib2JqZWN0Ij09dHlwZW9mIGUmJihpPWEoYSh7fSxpKSxlKSksaX0sdC5wcm90b3R5cGUucmVnaXN0ZXJUeXBlcz1mdW5jdGlvbih0KXt2YXIgZT0odCYmdC50eXBlc3x8W10pLnNsaWNlKCk7cmV0dXJuIGwudHlwZXMubWFwKChmdW5jdGlvbih0KXt2YXIgaT0tMTtlLmZvckVhY2goKGZ1bmN0aW9uKGUscyl7ZS50eXBlPT09dC50eXBlJiYoaT1zKX0pKTt2YXIgcz0tMSE9PWk/ZS5zcGxpY2UoaSwxKVswXTp7fTtyZXR1cm4gYShhKHt9LHQpLHMpfSkpLmNvbmNhdChlKX0sdH0oKX0sNDE4OmZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7aS5kKGUse1o6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KTtsZXQgcz17ZWFzaW5nOiJlYXNlIixkdXJhdGlvbjoyNTAsZmlsbDoiYmFja3dhcmRzIixkaXNwbGF5OiJibG9jayIsb3ZlcmZsb3c6ImhpZGRlbiJ9LGE9WyJvdmVyZmxvdyIsImRpc3BsYXkiXSxuPSh0LGUpPT57bGV0IGk9T2JqZWN0LmFzc2lnbih7fSxzLGUpLG49aS5kaXNwbGF5LHI9ZT0+dC5zdHlsZS5kaXNwbGF5PWUsbz0oKT0+dC5jbGllbnRIZWlnaHQrInB4IixsPWU9PnQuc3R5bGUub3ZlcmZsb3c9ZT9pLm92ZXJmbG93OiIiLGM9KCk9PnQuZ2V0QW5pbWF0aW9ucygpLGg9YXN5bmMgZT0+e2xldCBzPWMoKS5tYXAoKHQ9PnQuZmluaXNoKCkpKTt2YXIgaDtyZXR1cm4gYXdhaXQoaD1hc3luYyBzPT57bGV0IGM9ZT9vKCk6IjBweCI7ZSYmcihuKSxsKCEwKSxhd2FpdCgoZSxzKT0+e3ZhciBuO2EuZm9yRWFjaCgodD0+ZGVsZXRlIGlbdF0pKTtsZXQgcj1vKCksbD1bcixzXS5tYXAoKHQ9Pih7aGVpZ2h0OnQscGFkZGluZ1RvcDoiMHB4IixwYWRkaW5nQm90dG9tOiIwcHgifSkpKSx7cGFkZGluZ1RvcDpjLHBhZGRpbmdCb3R0b206aH09d2luZG93LmdldENvbXB1dGVkU3R5bGUodCk7bFswXS5wYWRkaW5nVG9wPWMsbFswXS5wYWRkaW5nQm90dG9tPWgsZSYmKGxbMF0uaGVpZ2h0PXIsbC5yZXZlcnNlKCkpLChudWxsPT0obj13aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkiKSk/dm9pZCAwOm4ubWF0Y2hlcykmJihpLmR1cmF0aW9uPTApO2xldCBkPXQuYW5pbWF0ZShsLGkpO3JldHVybiBkLmlkPSgrZSkudG9TdHJpbmcoKSxkfSkoZSxjKS5maW5pc2hlZCxsKCExKSxlfHxyKCJub25lIikscygpfSxuZXcgUHJvbWlzZSgodD0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57aCh0KX0pKX0pKX0pKSkscy5sZW5ndGg/bnVsbDplfSxkPWFzeW5jKCk9PmgoITEpLHU9YXN5bmMoKT0+aCghMCk7cmV0dXJue3VwOmQsZG93bjp1LHRvZ2dsZTphc3luYygpPT57dmFyIGU7bGV0IGk9bnVsbD09KGU9YygpWzBdKT92b2lkIDA6ZS5pZDtyZXR1cm4oKGk/IjEiPT09aTp0Lm9mZnNldEhlaWdodCk/ZDp1KSgpfX19LHI9KHQsZT17fSk9Pm4odCxlKS50b2dnbGUoKX0sMTkyOmZ1bmN0aW9uKHQpe3ZhciBlOyJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZixlPSgpPT4oKCk9Pnt2YXIgdD17NzU6ZnVuY3Rpb24odCl7KGZ1bmN0aW9uKCl7dmFyIGUsaSxzLGEsbixyOyJ1bmRlZmluZWQiIT10eXBlb2YgcGVyZm9ybWFuY2UmJm51bGwhPT1wZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3QuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX06InVuZGVmaW5lZCIhPXR5cGVvZiBwcm9jZXNzJiZudWxsIT09cHJvY2VzcyYmcHJvY2Vzcy5ocnRpbWU/KHQuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybihlKCktbikvMWU2fSxpPXByb2Nlc3MuaHJ0aW1lLGE9KGU9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gMWU5Kih0PWkoKSlbMF0rdFsxXX0pKCkscj0xZTkqcHJvY2Vzcy51cHRpbWUoKSxuPWEtcik6RGF0ZS5ub3c/KHQuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdygpLXN9LHM9RGF0ZS5ub3coKSk6KHQuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpLXN9LHM9KG5ldyBEYXRlKS5nZXRUaW1lKCkpfSkuY2FsbCh0aGlzKX0sNDA4NzoodCxlLGkpPT57Zm9yKHZhciBzPWkoNzUpLGE9InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3c/aS5nOndpbmRvdyxuPVsibW96Iiwid2Via2l0Il0scj0iQW5pbWF0aW9uRnJhbWUiLG89YVsicmVxdWVzdCIrcl0sbD1hWyJjYW5jZWwiK3JdfHxhWyJjYW5jZWxSZXF1ZXN0IityXSxjPTA7IW8mJmM8bi5sZW5ndGg7YysrKW89YVtuW2NdKyJSZXF1ZXN0IityXSxsPWFbbltjXSsiQ2FuY2VsIityXXx8YVtuW2NdKyJDYW5jZWxSZXF1ZXN0IityXTtpZighb3x8IWwpe3ZhciBoPTAsZD0wLHU9W107bz1mdW5jdGlvbih0KXtpZigwPT09dS5sZW5ndGgpe3ZhciBlPXMoKSxpPU1hdGgubWF4KDAsMTYuNjY2NjY2NjY2NjY2NjY4LShlLWgpKTtoPWkrZSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3ZhciB0PXUuc2xpY2UoMCk7dS5sZW5ndGg9MDtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpZighdFtlXS5jYW5jZWxsZWQpdHJ5e3RbZV0uY2FsbGJhY2soaCl9Y2F0Y2godCl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0aHJvdyB0fSksMCl9fSksTWF0aC5yb3VuZChpKSl9cmV0dXJuIHUucHVzaCh7aGFuZGxlOisrZCxjYWxsYmFjazp0LGNhbmNlbGxlZDohMX0pLGR9LGw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx1Lmxlbmd0aDtlKyspdVtlXS5oYW5kbGU9PT10JiYodVtlXS5jYW5jZWxsZWQ9ITApfX10LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY2FsbChhLHQpfSx0LmV4cG9ydHMuY2FuY2VsPWZ1bmN0aW9uKCl7bC5hcHBseShhLGFyZ3VtZW50cyl9LHQuZXhwb3J0cy5wb2x5ZmlsbD1mdW5jdGlvbih0KXt0fHwodD1hKSx0LnJlcXVlc3RBbmltYXRpb25GcmFtZT1vLHQuY2FuY2VsQW5pbWF0aW9uRnJhbWU9bH19fSxlPXt9O2Z1bmN0aW9uIGkocyl7dmFyIGE9ZVtzXTtpZih2b2lkIDAhPT1hKXJldHVybiBhLmV4cG9ydHM7dmFyIG49ZVtzXT17ZXhwb3J0czp7fX07cmV0dXJuIHRbc10uY2FsbChuLmV4cG9ydHMsbixuLmV4cG9ydHMsaSksbi5leHBvcnRzfWkubj10PT57dmFyIGU9dCYmdC5fX2VzTW9kdWxlPygpPT50LmRlZmF1bHQ6KCk9PnQ7cmV0dXJuIGkuZChlLHthOmV9KSxlfSxpLmQ9KHQsZSk9Pntmb3IodmFyIHMgaW4gZSlpLm8oZSxzKSYmIWkubyh0LHMpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxzLHtlbnVtZXJhYmxlOiEwLGdldDplW3NdfSl9LGkuZz1mdW5jdGlvbigpe2lmKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpczt0cnl7cmV0dXJuIHRoaXN8fG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfWNhdGNoKHQpe2lmKCJvYmplY3QiPT10eXBlb2Ygd2luZG93KXJldHVybiB3aW5kb3d9fSgpLGkubz0odCxlKT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSk7dmFyIHM9e307cmV0dXJuKCgpPT57InVzZSBzdHJpY3QiO2kuZChzLHtkZWZhdWx0OigpPT5DfSk7dmFyIHQ9aSg0MDg3KSxlPWkubih0KTtjb25zdCBhPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUmVnRXhwKC88W2Etel1bXHNcU10qPi9pKS50ZXN0KHQpfSxuPWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmlubmVySFRNTD10LGUuY2hpbGROb2Rlc30scj1mdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKGUtdCsxKSkrdH07dmFyIG89IlRZUEVfQ0hBUkFDVEVSIixsPSJSRU1PVkVfQ0hBUkFDVEVSIixjPSJSRU1PVkVfQUxMIixoPSJSRU1PVkVfTEFTVF9WSVNJQkxFX05PREUiLGQ9IlBBVVNFX0ZPUiIsdT0iQ0FMTF9GVU5DVElPTiIscD0iQUREX0hUTUxfVEFHX0VMRU1FTlQiLGc9IkNIQU5HRV9ERUxFVEVfU1BFRUQiLGY9IkNIQU5HRV9ERUxBWSIsbT0iQ0hBTkdFX0NVUlNPUiIsdj0iUEFTVEVfU1RSSU5HIix4PSJIVE1MX1RBRyI7ZnVuY3Rpb24gYih0LGUpe3ZhciBpPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKHM9cy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksaS5wdXNoLmFwcGx5KGkscyl9cmV0dXJuIGl9ZnVuY3Rpb24geSh0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgaT1udWxsIT1hcmd1bWVudHNbZV0/YXJndW1lbnRzW2VdOnt9O2UlMj9iKE9iamVjdChpKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7Uyh0LGUsaVtlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhpKSk6YihPYmplY3QoaSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiB3KHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBrKHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGsodCxlKTt2YXIgaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1pJiZ0LmNvbnN0cnVjdG9yJiYoaT10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aXx8IlNldCI9PT1pP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1pfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChpKT9rKHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gayh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgaT0wLHM9bmV3IEFycmF5KGUpO2k8ZTtpKyspc1tpXT10W2ldO3JldHVybiBzfWZ1bmN0aW9uIFModCxlLGkpe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6aSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09aSx0fWNvbnN0IEM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBpKHMsYil7dmFyIGs9dGhpcztpZihmdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGkpLFModGhpcywic3RhdGUiLHtjdXJzb3JBbmltYXRpb246bnVsbCxsYXN0RnJhbWVUaW1lOm51bGwscGF1c2VVbnRpbDpudWxsLGV2ZW50UXVldWU6W10sZXZlbnRMb29wOm51bGwsZXZlbnRMb29wUGF1c2VkOiExLHJldmVyc2VDYWxsZWRFdmVudHM6W10sY2FsbGVkRXZlbnRzOltdLHZpc2libGVOb2RlczpbXSxpbml0aWFsT3B0aW9uczpudWxsLGVsZW1lbnRzOntjb250YWluZXI6bnVsbCx3cmFwcGVyOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSxjdXJzb3I6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpfX0pLFModGhpcywib3B0aW9ucyIse3N0cmluZ3M6bnVsbCxjdXJzb3I6InwiLGRlbGF5OiJuYXR1cmFsIixwYXVzZUZvcjoxNTAwLGRlbGV0ZVNwZWVkOiJuYXR1cmFsIixsb29wOiExLGF1dG9TdGFydDohMSxkZXZNb2RlOiExLHNraXBBZGRTdHlsZXM6ITEsd3JhcHBlckNsYXNzTmFtZToiVHlwZXdyaXRlcl9fd3JhcHBlciIsY3Vyc29yQ2xhc3NOYW1lOiJUeXBld3JpdGVyX19jdXJzb3IiLHN0cmluZ1NwbGl0dGVyOm51bGwsb25DcmVhdGVUZXh0Tm9kZTpudWxsLG9uUmVtb3ZlTm9kZTpudWxsfSksUyh0aGlzLCJzZXR1cFdyYXBwZXJFbGVtZW50IiwoZnVuY3Rpb24oKXtrLnN0YXRlLmVsZW1lbnRzLmNvbnRhaW5lciYmKGsuc3RhdGUuZWxlbWVudHMud3JhcHBlci5jbGFzc05hbWU9ay5vcHRpb25zLndyYXBwZXJDbGFzc05hbWUsay5zdGF0ZS5lbGVtZW50cy5jdXJzb3IuY2xhc3NOYW1lPWsub3B0aW9ucy5jdXJzb3JDbGFzc05hbWUsay5zdGF0ZS5lbGVtZW50cy5jdXJzb3IuaW5uZXJIVE1MPWsub3B0aW9ucy5jdXJzb3Isay5zdGF0ZS5lbGVtZW50cy5jb250YWluZXIuaW5uZXJIVE1MPSIiLGsuc3RhdGUuZWxlbWVudHMuY29udGFpbmVyLmFwcGVuZENoaWxkKGsuc3RhdGUuZWxlbWVudHMud3JhcHBlciksay5zdGF0ZS5lbGVtZW50cy5jb250YWluZXIuYXBwZW5kQ2hpbGQoay5zdGF0ZS5lbGVtZW50cy5jdXJzb3IpKX0pKSxTKHRoaXMsInN0YXJ0IiwoZnVuY3Rpb24oKXtyZXR1cm4gay5zdGF0ZS5ldmVudExvb3BQYXVzZWQ9ITEsay5ydW5FdmVudExvb3AoKSxrfSkpLFModGhpcywicGF1c2UiLChmdW5jdGlvbigpe3JldHVybiBrLnN0YXRlLmV2ZW50TG9vcFBhdXNlZD0hMCxrfSkpLFModGhpcywic3RvcCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGsuc3RhdGUuZXZlbnRMb29wJiYoKDAsdC5jYW5jZWwpKGsuc3RhdGUuZXZlbnRMb29wKSxrLnN0YXRlLmV2ZW50TG9vcD1udWxsKSxrfSkpLFModGhpcywicGF1c2VGb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gay5hZGRFdmVudFRvUXVldWUoZCx7bXM6dH0pLGt9KSksUyh0aGlzLCJ0eXBlT3V0QWxsU3RyaW5ncyIsKGZ1bmN0aW9uKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBrLm9wdGlvbnMuc3RyaW5ncz8oay50eXBlU3RyaW5nKGsub3B0aW9ucy5zdHJpbmdzKS5wYXVzZUZvcihrLm9wdGlvbnMucGF1c2VGb3IpLGspOihrLm9wdGlvbnMuc3RyaW5ncy5mb3JFYWNoKChmdW5jdGlvbih0KXtrLnR5cGVTdHJpbmcodCkucGF1c2VGb3Ioay5vcHRpb25zLnBhdXNlRm9yKS5kZWxldGVBbGwoay5vcHRpb25zLmRlbGV0ZVNwZWVkKX0pKSxrKX0pKSxTKHRoaXMsInR5cGVTdHJpbmciLChmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDtpZihhKHQpKXJldHVybiBrLnR5cGVPdXRIVE1MU3RyaW5nKHQsZSk7aWYodCl7dmFyIGk9ay5vcHRpb25zfHx7fSxzPWkuc3RyaW5nU3BsaXR0ZXIsbj0iZnVuY3Rpb24iPT10eXBlb2Ygcz9zKHQpOnQuc3BsaXQoIiIpO2sudHlwZUNoYXJhY3RlcnMobixlKX1yZXR1cm4ga30pKSxTKHRoaXMsInBhc3RlU3RyaW5nIiwoZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIGEodCk/ay50eXBlT3V0SFRNTFN0cmluZyh0LGUsITApOih0JiZrLmFkZEV2ZW50VG9RdWV1ZSh2LHtjaGFyYWN0ZXI6dCxub2RlOmV9KSxrKX0pKSxTKHRoaXMsInR5cGVPdXRIVE1MU3RyaW5nIiwoZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsaT1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxzPW4odCk7aWYocy5sZW5ndGg+MClmb3IodmFyIGE9MDthPHMubGVuZ3RoO2ErKyl7dmFyIHI9c1thXSxvPXIuaW5uZXJIVE1MO3ImJjMhPT1yLm5vZGVUeXBlPyhyLmlubmVySFRNTD0iIixrLmFkZEV2ZW50VG9RdWV1ZShwLHtub2RlOnIscGFyZW50Tm9kZTplfSksaT9rLnBhc3RlU3RyaW5nKG8scik6ay50eXBlU3RyaW5nKG8scikpOnIudGV4dENvbnRlbnQmJihpP2sucGFzdGVTdHJpbmcoci50ZXh0Q29udGVudCxlKTprLnR5cGVTdHJpbmcoci50ZXh0Q29udGVudCxlKSl9cmV0dXJuIGt9KSksUyh0aGlzLCJkZWxldGVBbGwiLChmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToibmF0dXJhbCI7cmV0dXJuIGsuYWRkRXZlbnRUb1F1ZXVlKGMse3NwZWVkOnR9KSxrfSkpLFModGhpcywiY2hhbmdlRGVsZXRlU3BlZWQiLChmdW5jdGlvbih0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoIk11c3QgcHJvdmlkZSBuZXcgZGVsZXRlIHNwZWVkIik7cmV0dXJuIGsuYWRkRXZlbnRUb1F1ZXVlKGcse3NwZWVkOnR9KSxrfSkpLFModGhpcywiY2hhbmdlRGVsYXkiLChmdW5jdGlvbih0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoIk11c3QgcHJvdmlkZSBuZXcgZGVsYXkiKTtyZXR1cm4gay5hZGRFdmVudFRvUXVldWUoZix7ZGVsYXk6dH0pLGt9KSksUyh0aGlzLCJjaGFuZ2VDdXJzb3IiLChmdW5jdGlvbih0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoIk11c3QgcHJvdmlkZSBuZXcgY3Vyc29yIik7cmV0dXJuIGsuYWRkRXZlbnRUb1F1ZXVlKG0se2N1cnNvcjp0fSksa30pKSxTKHRoaXMsImRlbGV0ZUNoYXJzIiwoZnVuY3Rpb24odCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJNdXN0IHByb3ZpZGUgYW1vdW50IG9mIGNoYXJhY3RlcnMgdG8gZGVsZXRlIik7Zm9yKHZhciBlPTA7ZTx0O2UrKylrLmFkZEV2ZW50VG9RdWV1ZShsKTtyZXR1cm4ga30pKSxTKHRoaXMsImNhbGxGdW5jdGlvbiIsKGZ1bmN0aW9uKHQsZSl7aWYoIXR8fCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiQ2FsbGJhayBtdXN0IGJlIGEgZnVuY3Rpb24iKTtyZXR1cm4gay5hZGRFdmVudFRvUXVldWUodSx7Y2I6dCx0aGlzQXJnOmV9KSxrfSkpLFModGhpcywidHlwZUNoYXJhY3RlcnMiLChmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDtpZighdHx8IUFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IEVycm9yKCJDaGFyYWN0ZXJzIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtrLmFkZEV2ZW50VG9RdWV1ZShvLHtjaGFyYWN0ZXI6dCxub2RlOmV9KX0pKSxrfSkpLFModGhpcywicmVtb3ZlQ2hhcmFjdGVycyIsKGZ1bmN0aW9uKHQpe2lmKCF0fHwhQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgRXJyb3IoIkNoYXJhY3RlcnMgbXVzdCBiZSBhbiBhcnJheSIpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKCl7ay5hZGRFdmVudFRvUXVldWUobCl9KSksa30pKSxTKHRoaXMsImFkZEV2ZW50VG9RdWV1ZSIsKGZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtyZXR1cm4gay5hZGRFdmVudFRvU3RhdGVQcm9wZXJ0eSh0LGUsaSwiZXZlbnRRdWV1ZSIpfSkpLFModGhpcywiYWRkUmV2ZXJzZUNhbGxlZEV2ZW50IiwoZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLHM9ay5vcHRpb25zLmxvb3A7cmV0dXJuIHM/ay5hZGRFdmVudFRvU3RhdGVQcm9wZXJ0eSh0LGUsaSwicmV2ZXJzZUNhbGxlZEV2ZW50cyIpOmt9KSksUyh0aGlzLCJhZGRFdmVudFRvU3RhdGVQcm9wZXJ0eSIsKGZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxzPWFyZ3VtZW50cy5sZW5ndGg+Mz9hcmd1bWVudHNbM106dm9pZCAwLGE9e2V2ZW50TmFtZTp0LGV2ZW50QXJnczplfHx7fX07cmV0dXJuIGsuc3RhdGVbc109aT9bYV0uY29uY2F0KHcoay5zdGF0ZVtzXSkpOltdLmNvbmNhdCh3KGsuc3RhdGVbc10pLFthXSksa30pKSxTKHRoaXMsInJ1bkV2ZW50TG9vcCIsKGZ1bmN0aW9uKCl7ay5zdGF0ZS5sYXN0RnJhbWVUaW1lfHwoay5zdGF0ZS5sYXN0RnJhbWVUaW1lPURhdGUubm93KCkpO3ZhciB0PURhdGUubm93KCksaT10LWsuc3RhdGUubGFzdEZyYW1lVGltZTtpZighay5zdGF0ZS5ldmVudFF1ZXVlLmxlbmd0aCl7aWYoIWsub3B0aW9ucy5sb29wKXJldHVybjtrLnN0YXRlLmV2ZW50UXVldWU9dyhrLnN0YXRlLmNhbGxlZEV2ZW50cyksay5zdGF0ZS5jYWxsZWRFdmVudHM9W10say5vcHRpb25zPXkoe30say5zdGF0ZS5pbml0aWFsT3B0aW9ucyl9aWYoay5zdGF0ZS5ldmVudExvb3A9ZSgpKGsucnVuRXZlbnRMb29wKSwhay5zdGF0ZS5ldmVudExvb3BQYXVzZWQpe2lmKGsuc3RhdGUucGF1c2VVbnRpbCl7aWYodDxrLnN0YXRlLnBhdXNlVW50aWwpcmV0dXJuO2suc3RhdGUucGF1c2VVbnRpbD1udWxsfXZhciBzLGE9dyhrLnN0YXRlLmV2ZW50UXVldWUpLG49YS5zaGlmdCgpO2lmKCEoaTw9KHM9bi5ldmVudE5hbWU9PT1ofHxuLmV2ZW50TmFtZT09PWw/Im5hdHVyYWwiPT09ay5vcHRpb25zLmRlbGV0ZVNwZWVkP3IoNDAsODApOmsub3B0aW9ucy5kZWxldGVTcGVlZDoibmF0dXJhbCI9PT1rLm9wdGlvbnMuZGVsYXk/cigxMjAsMTYwKTprLm9wdGlvbnMuZGVsYXkpKSl7dmFyIGI9bi5ldmVudE5hbWUsUz1uLmV2ZW50QXJncztzd2l0Y2goay5sb2dJbkRldk1vZGUoe2N1cnJlbnRFdmVudDpuLHN0YXRlOmsuc3RhdGUsZGVsYXk6c30pLGIpe2Nhc2UgdjpjYXNlIG86dmFyIEM9Uy5jaGFyYWN0ZXIsQT1TLm5vZGUsRT1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShDKSxUPUU7ay5vcHRpb25zLm9uQ3JlYXRlVGV4dE5vZGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBrLm9wdGlvbnMub25DcmVhdGVUZXh0Tm9kZSYmKFQ9ay5vcHRpb25zLm9uQ3JlYXRlVGV4dE5vZGUoQyxFKSksVCYmKEE/QS5hcHBlbmRDaGlsZChUKTprLnN0YXRlLmVsZW1lbnRzLndyYXBwZXIuYXBwZW5kQ2hpbGQoVCkpLGsuc3RhdGUudmlzaWJsZU5vZGVzPVtdLmNvbmNhdCh3KGsuc3RhdGUudmlzaWJsZU5vZGVzKSxbe3R5cGU6IlRFWFRfTk9ERSIsY2hhcmFjdGVyOkMsbm9kZTpUfV0pO2JyZWFrO2Nhc2UgbDphLnVuc2hpZnQoe2V2ZW50TmFtZTpoLGV2ZW50QXJnczp7cmVtb3ZpbmdDaGFyYWN0ZXJOb2RlOiEwfX0pO2JyZWFrO2Nhc2UgZDp2YXIgTD1uLmV2ZW50QXJncy5tcztrLnN0YXRlLnBhdXNlVW50aWw9RGF0ZS5ub3coKStwYXJzZUludChMKTticmVhaztjYXNlIHU6dmFyIFA9bi5ldmVudEFyZ3MsTT1QLmNiLE89UC50aGlzQXJnO00uY2FsbChPLHtlbGVtZW50czprLnN0YXRlLmVsZW1lbnRzfSk7YnJlYWs7Y2FzZSBwOnZhciBJPW4uZXZlbnRBcmdzLEY9SS5ub2RlLEQ9SS5wYXJlbnROb2RlO0Q/RC5hcHBlbmRDaGlsZChGKTprLnN0YXRlLmVsZW1lbnRzLndyYXBwZXIuYXBwZW5kQ2hpbGQoRiksay5zdGF0ZS52aXNpYmxlTm9kZXM9W10uY29uY2F0KHcoay5zdGF0ZS52aXNpYmxlTm9kZXMpLFt7dHlwZTp4LG5vZGU6RixwYXJlbnROb2RlOkR8fGsuc3RhdGUuZWxlbWVudHMud3JhcHBlcn1dKTticmVhaztjYXNlIGM6dmFyIHo9ay5zdGF0ZS52aXNpYmxlTm9kZXMsTj1TLnNwZWVkLFI9W107TiYmUi5wdXNoKHtldmVudE5hbWU6ZyxldmVudEFyZ3M6e3NwZWVkOk4sdGVtcDohMH19KTtmb3IodmFyIF89MCxCPXoubGVuZ3RoO188QjtfKyspUi5wdXNoKHtldmVudE5hbWU6aCxldmVudEFyZ3M6e3JlbW92aW5nQ2hhcmFjdGVyTm9kZTohMX19KTtOJiZSLnB1c2goe2V2ZW50TmFtZTpnLGV2ZW50QXJnczp7c3BlZWQ6ay5vcHRpb25zLmRlbGV0ZVNwZWVkLHRlbXA6ITB9fSksYS51bnNoaWZ0LmFwcGx5KGEsUik7YnJlYWs7Y2FzZSBoOnZhciBYPW4uZXZlbnRBcmdzLnJlbW92aW5nQ2hhcmFjdGVyTm9kZTtpZihrLnN0YXRlLnZpc2libGVOb2Rlcy5sZW5ndGgpe3ZhciBIPWsuc3RhdGUudmlzaWJsZU5vZGVzLnBvcCgpLFk9SC50eXBlLFc9SC5ub2RlLCQ9SC5jaGFyYWN0ZXI7ay5vcHRpb25zLm9uUmVtb3ZlTm9kZSYmImZ1bmN0aW9uIj09dHlwZW9mIGsub3B0aW9ucy5vblJlbW92ZU5vZGUmJmsub3B0aW9ucy5vblJlbW92ZU5vZGUoe25vZGU6VyxjaGFyYWN0ZXI6JH0pLFcmJlcucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChXKSxZPT09eCYmWCYmYS51bnNoaWZ0KHtldmVudE5hbWU6aCxldmVudEFyZ3M6e319KX1icmVhaztjYXNlIGc6ay5vcHRpb25zLmRlbGV0ZVNwZWVkPW4uZXZlbnRBcmdzLnNwZWVkO2JyZWFrO2Nhc2UgZjprLm9wdGlvbnMuZGVsYXk9bi5ldmVudEFyZ3MuZGVsYXk7YnJlYWs7Y2FzZSBtOmsub3B0aW9ucy5jdXJzb3I9bi5ldmVudEFyZ3MuY3Vyc29yLGsuc3RhdGUuZWxlbWVudHMuY3Vyc29yLmlubmVySFRNTD1uLmV2ZW50QXJncy5jdXJzb3J9ay5vcHRpb25zLmxvb3AmJihuLmV2ZW50TmFtZT09PWh8fG4uZXZlbnRBcmdzJiZuLmV2ZW50QXJncy50ZW1wfHwoay5zdGF0ZS5jYWxsZWRFdmVudHM9W10uY29uY2F0KHcoay5zdGF0ZS5jYWxsZWRFdmVudHMpLFtuXSkpKSxrLnN0YXRlLmV2ZW50UXVldWU9YSxrLnN0YXRlLmxhc3RGcmFtZVRpbWU9dH19fSkpLHMpaWYoInN0cmluZyI9PXR5cGVvZiBzKXt2YXIgQz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHMpO2lmKCFDKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgY29udGFpbmVyIGVsZW1lbnQiKTt0aGlzLnN0YXRlLmVsZW1lbnRzLmNvbnRhaW5lcj1DfWVsc2UgdGhpcy5zdGF0ZS5lbGVtZW50cy5jb250YWluZXI9cztiJiYodGhpcy5vcHRpb25zPXkoeSh7fSx0aGlzLm9wdGlvbnMpLGIpKSx0aGlzLnN0YXRlLmluaXRpYWxPcHRpb25zPXkoe30sdGhpcy5vcHRpb25zKSx0aGlzLmluaXQoKX12YXIgcyxiO3JldHVybiBzPWksKGI9W3trZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7dGhpcy5zZXR1cFdyYXBwZXJFbGVtZW50KCksdGhpcy5hZGRFdmVudFRvUXVldWUobSx7Y3Vyc29yOnRoaXMub3B0aW9ucy5jdXJzb3J9LCEwKSx0aGlzLmFkZEV2ZW50VG9RdWV1ZShjLG51bGwsITApLCF3aW5kb3d8fHdpbmRvdy5fX19UWVBFV1JJVEVSX0pTX1NUWUxFU19BRERFRF9fX3x8dGhpcy5vcHRpb25zLnNraXBBZGRTdHlsZXN8fCgodD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiLlR5cGV3cml0ZXJfX2N1cnNvcnstd2Via2l0LWFuaW1hdGlvbjpUeXBld3JpdGVyLWN1cnNvciAxcyBpbmZpbml0ZTthbmltYXRpb246VHlwZXdyaXRlci1jdXJzb3IgMXMgaW5maW5pdGU7bWFyZ2luLWxlZnQ6MXB4fUAtd2Via2l0LWtleWZyYW1lcyBUeXBld3JpdGVyLWN1cnNvcnswJXtvcGFjaXR5OjB9NTAle29wYWNpdHk6MX0xMDAle29wYWNpdHk6MH19QGtleWZyYW1lcyBUeXBld3JpdGVyLWN1cnNvcnswJXtvcGFjaXR5OjB9NTAle29wYWNpdHk6MX0xMDAle29wYWNpdHk6MH19IikpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCksd2luZG93Ll9fX1RZUEVXUklURVJfSlNfU1RZTEVTX0FEREVEX19fPSEwKSwhMD09PXRoaXMub3B0aW9ucy5hdXRvU3RhcnQmJnRoaXMub3B0aW9ucy5zdHJpbmdzJiZ0aGlzLnR5cGVPdXRBbGxTdHJpbmdzKCkuc3RhcnQoKX19LHtrZXk6ImxvZ0luRGV2TW9kZSIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zLmRldk1vZGUmJmNvbnNvbGUubG9nKHQpfX1dKSYmZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIHM9ZVtpXTtzLmVudW1lcmFibGU9cy5lbnVtZXJhYmxlfHwhMSxzLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gcyYmKHMud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHMua2V5LHMpfX0ocy5wcm90b3R5cGUsYiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksaX0oKX0pKCkscy5kZWZhdWx0fSkoKSx0LmV4cG9ydHM9ZSgpfSw3MjE6ZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX1pLmQoZSx7WlA6ZnVuY3Rpb24oKXtyZXR1cm4gR3R9fSk7Y29uc3R7dG9TdHJpbmc6YX09T2JqZWN0LnByb3RvdHlwZSx7Z2V0UHJvdG90eXBlT2Y6bn09T2JqZWN0LHI9KG89T2JqZWN0LmNyZWF0ZShudWxsKSx0PT57Y29uc3QgZT1hLmNhbGwodCk7cmV0dXJuIG9bZV18fChvW2VdPWUuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSl9KTt2YXIgbztjb25zdCBsPXQ9Pih0PXQudG9Mb3dlckNhc2UoKSxlPT5yKGUpPT09dCksYz10PT5lPT50eXBlb2YgZT09PXQse2lzQXJyYXk6aH09QXJyYXksZD1jKCJ1bmRlZmluZWQiKSx1PWwoIkFycmF5QnVmZmVyIikscD1jKCJzdHJpbmciKSxnPWMoImZ1bmN0aW9uIiksZj1jKCJudW1iZXIiKSxtPXQ9Pm51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQsdj10PT57aWYoIm9iamVjdCIhPT1yKHQpKXJldHVybiExO2NvbnN0IGU9bih0KTtyZXR1cm4hKG51bGwhPT1lJiZlIT09T2JqZWN0LnByb3RvdHlwZSYmbnVsbCE9PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKXx8U3ltYm9sLnRvU3RyaW5nVGFnIGluIHR8fFN5bWJvbC5pdGVyYXRvciBpbiB0KX0seD1sKCJEYXRlIiksYj1sKCJGaWxlIikseT1sKCJCbG9iIiksdz1sKCJGaWxlTGlzdCIpLGs9bCgiVVJMU2VhcmNoUGFyYW1zIik7ZnVuY3Rpb24gUyh0LGUse2FsbE93bktleXM6aT0hMX09e30pe2lmKG51bGw9PXQpcmV0dXJuO2xldCBzLGE7aWYoIm9iamVjdCIhPXR5cGVvZiB0JiYodD1bdF0pLGgodCkpZm9yKHM9MCxhPXQubGVuZ3RoO3M8YTtzKyspZS5jYWxsKG51bGwsdFtzXSxzLHQpO2Vsc2V7Y29uc3QgYT1pP09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpOk9iamVjdC5rZXlzKHQpLG49YS5sZW5ndGg7bGV0IHI7Zm9yKHM9MDtzPG47cysrKXI9YVtzXSxlLmNhbGwobnVsbCx0W3JdLHIsdCl9fWNvbnN0IEM9KEE9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5JiZuKFVpbnQ4QXJyYXkpLHQ9PkEmJnQgaW5zdGFuY2VvZiBBKTt2YXIgQTtjb25zdCBFPWwoIkhUTUxGb3JtRWxlbWVudCIpLFQ9KCh7aGFzT3duUHJvcGVydHk6dH0pPT4oZSxpKT0+dC5jYWxsKGUsaSkpKE9iamVjdC5wcm90b3R5cGUpLEw9bCgiUmVnRXhwIiksUD0odCxlKT0+e2NvbnN0IGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkscz17fTtTKGksKChpLGEpPT57ITEhPT1lKGksYSx0KSYmKHNbYV09aSl9KSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxzKX07dmFyIE09e2lzQXJyYXk6aCxpc0FycmF5QnVmZmVyOnUsaXNCdWZmZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10JiYhZCh0KSYmbnVsbCE9PXQuY29uc3RydWN0b3ImJiFkKHQuY29uc3RydWN0b3IpJiZnKHQuY29uc3RydWN0b3IuaXNCdWZmZXIpJiZ0LmNvbnN0cnVjdG9yLmlzQnVmZmVyKHQpfSxpc0Zvcm1EYXRhOnQ9Pntjb25zdCBlPSJbb2JqZWN0IEZvcm1EYXRhXSI7cmV0dXJuIHQmJigiZnVuY3Rpb24iPT10eXBlb2YgRm9ybURhdGEmJnQgaW5zdGFuY2VvZiBGb3JtRGF0YXx8YS5jYWxsKHQpPT09ZXx8Zyh0LnRvU3RyaW5nKSYmdC50b1N0cmluZygpPT09ZSl9LGlzQXJyYXlCdWZmZXJWaWV3OmZ1bmN0aW9uKHQpe2xldCBlO3JldHVybiBlPSJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJkFycmF5QnVmZmVyLmlzVmlldz9BcnJheUJ1ZmZlci5pc1ZpZXcodCk6dCYmdC5idWZmZXImJnUodC5idWZmZXIpLGV9LGlzU3RyaW5nOnAsaXNOdW1iZXI6Zixpc0Jvb2xlYW46dD0+ITA9PT10fHwhMT09PXQsaXNPYmplY3Q6bSxpc1BsYWluT2JqZWN0OnYsaXNVbmRlZmluZWQ6ZCxpc0RhdGU6eCxpc0ZpbGU6Yixpc0Jsb2I6eSxpc1JlZ0V4cDpMLGlzRnVuY3Rpb246Zyxpc1N0cmVhbTp0PT5tKHQpJiZnKHQucGlwZSksaXNVUkxTZWFyY2hQYXJhbXM6ayxpc1R5cGVkQXJyYXk6Qyxpc0ZpbGVMaXN0OncsZm9yRWFjaDpTLG1lcmdlOmZ1bmN0aW9uIHQoKXtjb25zdCBlPXt9LGk9KGkscyk9Pnt2KGVbc10pJiZ2KGkpP2Vbc109dChlW3NdLGkpOnYoaSk/ZVtzXT10KHt9LGkpOmgoaSk/ZVtzXT1pLnNsaWNlKCk6ZVtzXT1pfTtmb3IobGV0IHQ9MCxlPWFyZ3VtZW50cy5sZW5ndGg7dDxlO3QrKylhcmd1bWVudHNbdF0mJlMoYXJndW1lbnRzW3RdLGkpO3JldHVybiBlfSxleHRlbmQ6KHQsZSxpLHthbGxPd25LZXlzOmF9PXt9KT0+KFMoZSwoKGUsYSk9PntpJiZnKGUpP3RbYV09cyhlLGkpOnRbYV09ZX0pLHthbGxPd25LZXlzOmF9KSx0KSx0cmltOnQ9PnQudHJpbT90LnRyaW0oKTp0LnJlcGxhY2UoL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLCIiKSxzdHJpcEJPTTp0PT4oNjUyNzk9PT10LmNoYXJDb2RlQXQoMCkmJih0PXQuc2xpY2UoMSkpLHQpLGluaGVyaXRzOih0LGUsaSxzKT0+e3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUscyksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic3VwZXIiLHt2YWx1ZTplLnByb3RvdHlwZX0pLGkmJk9iamVjdC5hc3NpZ24odC5wcm90b3R5cGUsaSl9LHRvRmxhdE9iamVjdDoodCxlLGkscyk9PntsZXQgYSxyLG87Y29uc3QgbD17fTtpZihlPWV8fHt9LG51bGw9PXQpcmV0dXJuIGU7ZG97Zm9yKGE9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkscj1hLmxlbmd0aDtyLS0gPjA7KW89YVtyXSxzJiYhcyhvLHQsZSl8fGxbb118fChlW29dPXRbb10sbFtvXT0hMCk7dD0hMSE9PWkmJm4odCl9d2hpbGUodCYmKCFpfHxpKHQsZSkpJiZ0IT09T2JqZWN0LnByb3RvdHlwZSk7cmV0dXJuIGV9LGtpbmRPZjpyLGtpbmRPZlRlc3Q6bCxlbmRzV2l0aDoodCxlLGkpPT57dD1TdHJpbmcodCksKHZvaWQgMD09PWl8fGk+dC5sZW5ndGgpJiYoaT10Lmxlbmd0aCksaS09ZS5sZW5ndGg7Y29uc3Qgcz10LmluZGV4T2YoZSxpKTtyZXR1cm4tMSE9PXMmJnM9PT1pfSx0b0FycmF5OnQ9PntpZighdClyZXR1cm4gbnVsbDtpZihoKHQpKXJldHVybiB0O2xldCBlPXQubGVuZ3RoO2lmKCFmKGUpKXJldHVybiBudWxsO2NvbnN0IGk9bmV3IEFycmF5KGUpO2Zvcig7ZS0tID4wOylpW2VdPXRbZV07cmV0dXJuIGl9LGZvckVhY2hFbnRyeToodCxlKT0+e2NvbnN0IGk9KHQmJnRbU3ltYm9sLml0ZXJhdG9yXSkuY2FsbCh0KTtsZXQgcztmb3IoOyhzPWkubmV4dCgpKSYmIXMuZG9uZTspe2NvbnN0IGk9cy52YWx1ZTtlLmNhbGwodCxpWzBdLGlbMV0pfX0sbWF0Y2hBbGw6KHQsZSk9PntsZXQgaTtjb25zdCBzPVtdO2Zvcig7bnVsbCE9PShpPXQuZXhlYyhlKSk7KXMucHVzaChpKTtyZXR1cm4gc30saXNIVE1MRm9ybTpFLGhhc093blByb3BlcnR5OlQsaGFzT3duUHJvcDpULHJlZHVjZURlc2NyaXB0b3JzOlAsZnJlZXplTWV0aG9kczp0PT57UCh0LCgoZSxpKT0+e2NvbnN0IHM9dFtpXTtnKHMpJiYoZS5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiBlP2Uud3JpdGFibGU9ITE6ZS5zZXR8fChlLnNldD0oKT0+e3Rocm93IEVycm9yKCJDYW4gbm90IHJlYWQtb25seSBtZXRob2QgJyIraSsiJyIpfSkpfSkpfSx0b09iamVjdFNldDoodCxlKT0+e2NvbnN0IGk9e30scz10PT57dC5mb3JFYWNoKCh0PT57aVt0XT0hMH0pKX07cmV0dXJuIGgodCk/cyh0KTpzKFN0cmluZyh0KS5zcGxpdChlKSksaX0sdG9DYW1lbENhc2U6dD0+dC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1tfLVxzXShbYS16XGRdKShcdyopL2csKGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpK2l9KSksbm9vcDooKT0+e30sdG9GaW5pdGVOdW1iZXI6KHQsZSk9Pih0PSt0LE51bWJlci5pc0Zpbml0ZSh0KT90OmUpfTtmdW5jdGlvbiBPKHQsZSxpLHMsYSl7RXJyb3IuY2FsbCh0aGlzKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLHRoaXMuY29uc3RydWN0b3IpOnRoaXMuc3RhY2s9KG5ldyBFcnJvcikuc3RhY2ssdGhpcy5tZXNzYWdlPXQsdGhpcy5uYW1lPSJBeGlvc0Vycm9yIixlJiYodGhpcy5jb2RlPWUpLGkmJih0aGlzLmNvbmZpZz1pKSxzJiYodGhpcy5yZXF1ZXN0PXMpLGEmJih0aGlzLnJlc3BvbnNlPWEpfU0uaW5oZXJpdHMoTyxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOnRoaXMuY29uZmlnLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX19KTtjb25zdCBJPU8ucHJvdG90eXBlLEY9e307WyJFUlJfQkFEX09QVElPTl9WQUxVRSIsIkVSUl9CQURfT1BUSU9OIiwiRUNPTk5BQk9SVEVEIiwiRVRJTUVET1VUIiwiRVJSX05FVFdPUksiLCJFUlJfRlJfVE9PX01BTllfUkVESVJFQ1RTIiwiRVJSX0RFUFJFQ0FURUQiLCJFUlJfQkFEX1JFU1BPTlNFIiwiRVJSX0JBRF9SRVFVRVNUIiwiRVJSX0NBTkNFTEVEIiwiRVJSX05PVF9TVVBQT1JUIiwiRVJSX0lOVkFMSURfVVJMIl0uZm9yRWFjaCgodD0+e0ZbdF09e3ZhbHVlOnR9fSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sRiksT2JqZWN0LmRlZmluZVByb3BlcnR5KEksImlzQXhpb3NFcnJvciIse3ZhbHVlOiEwfSksTy5mcm9tPSh0LGUsaSxzLGEsbik9Pntjb25zdCByPU9iamVjdC5jcmVhdGUoSSk7cmV0dXJuIE0udG9GbGF0T2JqZWN0KHQsciwoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1FcnJvci5wcm90b3R5cGV9KSwodD0+ImlzQXhpb3NFcnJvciIhPT10KSksTy5jYWxsKHIsdC5tZXNzYWdlLGUsaSxzLGEpLHIuY2F1c2U9dCxyLm5hbWU9dC5uYW1lLG4mJk9iamVjdC5hc3NpZ24ocixuKSxyfTt2YXIgRD1PLHo9aSgyMzApO2Z1bmN0aW9uIE4odCl7cmV0dXJuIE0uaXNQbGFpbk9iamVjdCh0KXx8TS5pc0FycmF5KHQpfWZ1bmN0aW9uIFIodCl7cmV0dXJuIE0uZW5kc1dpdGgodCwiW10iKT90LnNsaWNlKDAsLTIpOnR9ZnVuY3Rpb24gXyh0LGUsaSl7cmV0dXJuIHQ/dC5jb25jYXQoZSkubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiB0PVIodCksIWkmJmU/IlsiK3QrIl0iOnR9KSkuam9pbihpPyIuIjoiIik6ZX1jb25zdCBCPU0udG9GbGF0T2JqZWN0KE0se30sbnVsbCwoZnVuY3Rpb24odCl7cmV0dXJuL15pc1tBLVpdLy50ZXN0KHQpfSkpO3ZhciBYPWZ1bmN0aW9uKHQsZSxpKXtpZighTS5pc09iamVjdCh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiKTtlPWV8fG5ldyh6fHxGb3JtRGF0YSk7Y29uc3Qgcz0oaT1NLnRvRmxhdE9iamVjdChpLHttZXRhVG9rZW5zOiEwLGRvdHM6ITEsaW5kZXhlczohMX0sITEsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIU0uaXNVbmRlZmluZWQoZVt0XSl9KSkpLm1ldGFUb2tlbnMsYT1pLnZpc2l0b3J8fGgsbj1pLmRvdHMscj1pLmluZGV4ZXMsbz0oaS5CbG9ifHwidW5kZWZpbmVkIiE9dHlwZW9mIEJsb2ImJkJsb2IpJiYobD1lKSYmTS5pc0Z1bmN0aW9uKGwuYXBwZW5kKSYmIkZvcm1EYXRhIj09PWxbU3ltYm9sLnRvU3RyaW5nVGFnXSYmbFtTeW1ib2wuaXRlcmF0b3JdO3ZhciBsO2lmKCFNLmlzRnVuY3Rpb24oYSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidmlzaXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmdW5jdGlvbiBjKHQpe2lmKG51bGw9PT10KXJldHVybiIiO2lmKE0uaXNEYXRlKHQpKXJldHVybiB0LnRvSVNPU3RyaW5nKCk7aWYoIW8mJk0uaXNCbG9iKHQpKXRocm93IG5ldyBEKCJCbG9iIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSBhIEJ1ZmZlciBpbnN0ZWFkLiIpO3JldHVybiBNLmlzQXJyYXlCdWZmZXIodCl8fE0uaXNUeXBlZEFycmF5KHQpP28mJiJmdW5jdGlvbiI9PXR5cGVvZiBCbG9iP25ldyBCbG9iKFt0XSk6QnVmZmVyLmZyb20odCk6dH1mdW5jdGlvbiBoKHQsaSxhKXtsZXQgbz10O2lmKHQmJiFhJiYib2JqZWN0Ij09dHlwZW9mIHQpaWYoTS5lbmRzV2l0aChpLCJ7fSIpKWk9cz9pOmkuc2xpY2UoMCwtMiksdD1KU09OLnN0cmluZ2lmeSh0KTtlbHNlIGlmKE0uaXNBcnJheSh0KSYmZnVuY3Rpb24odCl7cmV0dXJuIE0uaXNBcnJheSh0KSYmIXQuc29tZShOKX0odCl8fE0uaXNGaWxlTGlzdCh0KXx8TS5lbmRzV2l0aChpLCJbXSIpJiYobz1NLnRvQXJyYXkodCkpKXJldHVybiBpPVIoaSksby5mb3JFYWNoKChmdW5jdGlvbih0LHMpeyFNLmlzVW5kZWZpbmVkKHQpJiZudWxsIT09dCYmZS5hcHBlbmQoITA9PT1yP18oW2ldLHMsbik6bnVsbD09PXI/aTppKyJbXSIsYyh0KSl9KSksITE7cmV0dXJuISFOKHQpfHwoZS5hcHBlbmQoXyhhLGksbiksYyh0KSksITEpfWNvbnN0IGQ9W10sdT1PYmplY3QuYXNzaWduKEIse2RlZmF1bHRWaXNpdG9yOmgsY29udmVydFZhbHVlOmMsaXNWaXNpdGFibGU6Tn0pO2lmKCFNLmlzT2JqZWN0KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBhbiBvYmplY3QiKTtyZXR1cm4gZnVuY3Rpb24gdChpLHMpe2lmKCFNLmlzVW5kZWZpbmVkKGkpKXtpZigtMSE9PWQuaW5kZXhPZihpKSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrcy5qb2luKCIuIikpO2QucHVzaChpKSxNLmZvckVhY2goaSwoZnVuY3Rpb24oaSxuKXshMD09PSghKE0uaXNVbmRlZmluZWQoaSl8fG51bGw9PT1pKSYmYS5jYWxsKGUsaSxNLmlzU3RyaW5nKG4pP24udHJpbSgpOm4scyx1KSkmJnQoaSxzP3MuY29uY2F0KG4pOltuXSl9KSksZC5wb3AoKX19KHQpLGV9O2Z1bmN0aW9uIEgodCl7Y29uc3QgZT17IiEiOiIlMjEiLCInIjoiJTI3IiwiKCI6IiUyOCIsIikiOiIlMjkiLCJ+IjoiJTdFIiwiJTIwIjoiKyIsIiUwMCI6IlwwIn07cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0KS5yZXBsYWNlKC9bIScoKX5dfCUyMHwlMDAvZywoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KSl9ZnVuY3Rpb24gWSh0LGUpe3RoaXMuX3BhaXJzPVtdLHQmJlgodCx0aGlzLGUpfWNvbnN0IFc9WS5wcm90b3R5cGU7Vy5hcHBlbmQ9ZnVuY3Rpb24odCxlKXt0aGlzLl9wYWlycy5wdXNoKFt0LGVdKX0sVy50b1N0cmluZz1mdW5jdGlvbih0KXtjb25zdCBlPXQ/ZnVuY3Rpb24oZSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUsSCl9Okg7cmV0dXJuIHRoaXMuX3BhaXJzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUodFswXSkrIj0iK2UodFsxXSl9KSwiIikuam9pbigiJiIpfTt2YXIgJD1ZO2Z1bmN0aW9uIFYodCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0KS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9ZnVuY3Rpb24gaih0LGUsaSl7aWYoIWUpcmV0dXJuIHQ7Y29uc3Qgcz1pJiZpLmVuY29kZXx8VixhPWkmJmkuc2VyaWFsaXplO2xldCBuO2lmKG49YT9hKGUsaSk6TS5pc1VSTFNlYXJjaFBhcmFtcyhlKT9lLnRvU3RyaW5nKCk6bmV3ICQoZSxpKS50b1N0cmluZyhzKSxuKXtjb25zdCBlPXQuaW5kZXhPZigiIyIpOy0xIT09ZSYmKHQ9dC5zbGljZSgwLGUpKSx0Kz0oLTE9PT10LmluZGV4T2YoIj8iKT8iPyI6IiYiKStufXJldHVybiB0fXZhciBHPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5oYW5kbGVycz1bXX11c2UodCxlLGkpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDp0LHJlamVjdGVkOmUsc3luY2hyb25vdXM6ISFpJiZpLnN5bmNocm9ub3VzLHJ1bldoZW46aT9pLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9ZWplY3QodCl7dGhpcy5oYW5kbGVyc1t0XSYmKHRoaXMuaGFuZGxlcnNbdF09bnVsbCl9Y2xlYXIoKXt0aGlzLmhhbmRsZXJzJiYodGhpcy5oYW5kbGVycz1bXSl9Zm9yRWFjaCh0KXtNLmZvckVhY2godGhpcy5oYW5kbGVycywoZnVuY3Rpb24oZSl7bnVsbCE9PWUmJnQoZSl9KSl9fSxVPXtzaWxlbnRKU09OUGFyc2luZzohMCxmb3JjZWRKU09OUGFyc2luZzohMCxjbGFyaWZ5VGltZW91dEVycm9yOiExfSxxPSJ1bmRlZmluZWQiIT10eXBlb2YgVVJMU2VhcmNoUGFyYW1zP1VSTFNlYXJjaFBhcmFtczokLFo9Rm9ybURhdGE7Y29uc3QgSz0oKCk9PntsZXQgdDtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3J8fCJSZWFjdE5hdGl2ZSIhPT0odD1uYXZpZ2F0b3IucHJvZHVjdCkmJiJOYXRpdmVTY3JpcHQiIT09dCYmIk5TIiE9PXQpJiYidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudH0pKCk7dmFyIEo9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6cSxGb3JtRGF0YTpaLEJsb2I6QmxvYn0saXNTdGFuZGFyZEJyb3dzZXJFbnY6Syxwcm90b2NvbHM6WyJodHRwIiwiaHR0cHMiLCJmaWxlIiwiYmxvYiIsInVybCIsImRhdGEiXX0sUT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsaSxzLGEpe2xldCBuPXRbYSsrXTtjb25zdCByPU51bWJlci5pc0Zpbml0ZSgrbiksbz1hPj10Lmxlbmd0aDtyZXR1cm4gbj0hbiYmTS5pc0FycmF5KHMpP3MubGVuZ3RoOm4sbz8oTS5oYXNPd25Qcm9wKHMsbik/c1tuXT1bc1tuXSxpXTpzW25dPWksIXIpOihzW25dJiZNLmlzT2JqZWN0KHNbbl0pfHwoc1tuXT1bXSksZSh0LGksc1tuXSxhKSYmTS5pc0FycmF5KHNbbl0pJiYoc1tuXT1mdW5jdGlvbih0KXtjb25zdCBlPXt9LGk9T2JqZWN0LmtleXModCk7bGV0IHM7Y29uc3QgYT1pLmxlbmd0aDtsZXQgbjtmb3Iocz0wO3M8YTtzKyspbj1pW3NdLGVbbl09dFtuXTtyZXR1cm4gZX0oc1tuXSkpLCFyKX1pZihNLmlzRm9ybURhdGEodCkmJk0uaXNGdW5jdGlvbih0LmVudHJpZXMpKXtjb25zdCBpPXt9O3JldHVybiBNLmZvckVhY2hFbnRyeSh0LCgodCxzKT0+e2UoZnVuY3Rpb24odCl7cmV0dXJuIE0ubWF0Y2hBbGwoL1x3K3xcWyhcdyopXS9nLHQpLm1hcCgodD0+IltdIj09PXRbMF0/IiI6dFsxXXx8dFswXSkpfSh0KSxzLGksMCl9KSksaX1yZXR1cm4gbnVsbH0sdHQ9Si5pc1N0YW5kYXJkQnJvd3NlckVudj97d3JpdGU6ZnVuY3Rpb24odCxlLGkscyxhLG4pe2NvbnN0IHI9W107ci5wdXNoKHQrIj0iK2VuY29kZVVSSUNvbXBvbmVudChlKSksTS5pc051bWJlcihpKSYmci5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUoaSkudG9HTVRTdHJpbmcoKSksTS5pc1N0cmluZyhzKSYmci5wdXNoKCJwYXRoPSIrcyksTS5pc1N0cmluZyhhKSYmci5wdXNoKCJkb21haW49IithKSwhMD09PW4mJnIucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPXIuam9pbigiOyAiKX0scmVhZDpmdW5jdGlvbih0KXtjb25zdCBlPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIit0KyIpPShbXjtdKikiKSk7cmV0dXJuIGU/ZGVjb2RlVVJJQ29tcG9uZW50KGVbM10pOm51bGx9LHJlbW92ZTpmdW5jdGlvbih0KXt0aGlzLndyaXRlKHQsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGU6ZnVuY3Rpb24oKXt9LHJlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0scmVtb3ZlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gZXQodCxlKXtyZXR1cm4gdCYmIS9eKFthLXpdW2EtelxkK1wtLl0qOik/XC9cLy9pLnRlc3QoZSk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT90LnJlcGxhY2UoL1wvKyQvLCIiKSsiLyIrZS5yZXBsYWNlKC9eXC8rLywiIik6dH0odCxlKTplfXZhciBpdD1KLmlzU3RhbmRhcmRCcm93c2VyRW52P2Z1bmN0aW9uKCl7Y29uc3QgdD0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2xldCBpO2Z1bmN0aW9uIHMoaSl7bGV0IHM9aTtyZXR1cm4gdCYmKGUuc2V0QXR0cmlidXRlKCJocmVmIixzKSxzPWUuaHJlZiksZS5zZXRBdHRyaWJ1dGUoImhyZWYiLHMpLHtocmVmOmUuaHJlZixwcm90b2NvbDplLnByb3RvY29sP2UucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OmUuaG9zdCxzZWFyY2g6ZS5zZWFyY2g/ZS5zZWFyY2gucmVwbGFjZSgvXlw/LywiIik6IiIsaGFzaDplLmhhc2g/ZS5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9zdG5hbWU6ZS5ob3N0bmFtZSxwb3J0OmUucG9ydCxwYXRobmFtZToiLyI9PT1lLnBhdGhuYW1lLmNoYXJBdCgwKT9lLnBhdGhuYW1lOiIvIitlLnBhdGhuYW1lfX1yZXR1cm4gaT1zKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbih0KXtjb25zdCBlPU0uaXNTdHJpbmcodCk/cyh0KTp0O3JldHVybiBlLnByb3RvY29sPT09aS5wcm90b2NvbCYmZS5ob3N0PT09aS5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiEwfTtmdW5jdGlvbiBzdCh0LGUsaSl7RC5jYWxsKHRoaXMsbnVsbD09dD8iY2FuY2VsZWQiOnQsRC5FUlJfQ0FOQ0VMRUQsZSxpKSx0aGlzLm5hbWU9IkNhbmNlbGVkRXJyb3IifU0uaW5oZXJpdHMoc3QsRCx7X19DQU5DRUxfXzohMH0pO3ZhciBhdD1zdDtjb25zdCBudD1NLnRvT2JqZWN0U2V0KFsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il0pLHJ0PVN5bWJvbCgiaW50ZXJuYWxzIiksb3Q9U3ltYm9sKCJkZWZhdWx0cyIpO2Z1bmN0aW9uIGx0KHQpe3JldHVybiB0JiZTdHJpbmcodCkudHJpbSgpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gY3QodCl7cmV0dXJuITE9PT10fHxudWxsPT10P3Q6TS5pc0FycmF5KHQpP3QubWFwKGN0KTpTdHJpbmcodCl9ZnVuY3Rpb24gaHQodCxlLGkscyl7cmV0dXJuIE0uaXNGdW5jdGlvbihzKT9zLmNhbGwodGhpcyxlLGkpOk0uaXNTdHJpbmcoZSk/TS5pc1N0cmluZyhzKT8tMSE9PWUuaW5kZXhPZihzKTpNLmlzUmVnRXhwKHMpP3MudGVzdChlKTp2b2lkIDA6dm9pZCAwfWZ1bmN0aW9uIGR0KHQsZSl7ZT1lLnRvTG93ZXJDYXNlKCk7Y29uc3QgaT1PYmplY3Qua2V5cyh0KTtsZXQgcyxhPWkubGVuZ3RoO2Zvcig7YS0tID4wOylpZihzPWlbYV0sZT09PXMudG9Mb3dlckNhc2UoKSlyZXR1cm4gcztyZXR1cm4gbnVsbH1mdW5jdGlvbiB1dCh0LGUpe3QmJnRoaXMuc2V0KHQpLHRoaXNbb3RdPWV8fG51bGx9T2JqZWN0LmFzc2lnbih1dC5wcm90b3R5cGUse3NldDpmdW5jdGlvbih0LGUsaSl7Y29uc3Qgcz10aGlzO2Z1bmN0aW9uIGEodCxlLGkpe2NvbnN0IGE9bHQoZSk7aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJoZWFkZXIgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyIpO2NvbnN0IG49ZHQocyxhKTsoIW58fCEwPT09aXx8ITEhPT1zW25dJiYhMSE9PWkpJiYoc1tufHxlXT1jdCh0KSl9cmV0dXJuIE0uaXNQbGFpbk9iamVjdCh0KT9NLmZvckVhY2godCwoKHQsaSk9PnthKHQsaSxlKX0pKTphKGUsdCxpKSx0aGlzfSxnZXQ6ZnVuY3Rpb24odCxlKXtpZighKHQ9bHQodCkpKXJldHVybjtjb25zdCBpPWR0KHRoaXMsdCk7aWYoaSl7Y29uc3QgdD10aGlzW2ldO2lmKCFlKXJldHVybiB0O2lmKCEwPT09ZSlyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLGk9LyhbXlxzLDs9XSspXHMqKD86PVxzKihbXiw7XSspKT8vZztsZXQgcztmb3IoO3M9aS5leGVjKHQpOyllW3NbMV1dPXNbMl07cmV0dXJuIGV9KHQpO2lmKE0uaXNGdW5jdGlvbihlKSlyZXR1cm4gZS5jYWxsKHRoaXMsdCxpKTtpZihNLmlzUmVnRXhwKGUpKXJldHVybiBlLmV4ZWModCk7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19LGhhczpmdW5jdGlvbih0LGUpe2lmKHQ9bHQodCkpe2NvbnN0IGk9ZHQodGhpcyx0KTtyZXR1cm4hKCFpfHxlJiYhaHQoMCx0aGlzW2ldLGksZSkpfXJldHVybiExfSxkZWxldGU6ZnVuY3Rpb24odCxlKXtjb25zdCBpPXRoaXM7bGV0IHM9ITE7ZnVuY3Rpb24gYSh0KXtpZih0PWx0KHQpKXtjb25zdCBhPWR0KGksdCk7IWF8fGUmJiFodCgwLGlbYV0sYSxlKXx8KGRlbGV0ZSBpW2FdLHM9ITApfX1yZXR1cm4gTS5pc0FycmF5KHQpP3QuZm9yRWFjaChhKTphKHQpLHN9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMpLmZvckVhY2godGhpcy5kZWxldGUuYmluZCh0aGlzKSl9LG5vcm1hbGl6ZTpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMsaT17fTtyZXR1cm4gTS5mb3JFYWNoKHRoaXMsKChzLGEpPT57Y29uc3Qgbj1kdChpLGEpO2lmKG4pcmV0dXJuIGVbbl09Y3Qocyksdm9pZCBkZWxldGUgZVthXTtjb25zdCByPXQ/ZnVuY3Rpb24odCl7cmV0dXJuIHQudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKFthLXpcZF0pKFx3KikvZywoKHQsZSxpKT0+ZS50b1VwcGVyQ2FzZSgpK2kpKX0oYSk6U3RyaW5nKGEpLnRyaW0oKTtyIT09YSYmZGVsZXRlIGVbYV0sZVtyXT1jdChzKSxpW3JdPSEwfSkpLHRoaXN9LHRvSlNPTjpmdW5jdGlvbih0KXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIE0uZm9yRWFjaChPYmplY3QuYXNzaWduKHt9LHRoaXNbb3RdfHxudWxsLHRoaXMpLCgoaSxzKT0+e251bGwhPWkmJiExIT09aSYmKGVbc109dCYmTS5pc0FycmF5KGkpP2kuam9pbigiLCAiKTppKX0pKSxlfX0pLE9iamVjdC5hc3NpZ24odXQse2Zyb206ZnVuY3Rpb24odCl7cmV0dXJuIE0uaXNTdHJpbmcodCk/bmV3IHRoaXMoKHQ9Pntjb25zdCBlPXt9O2xldCBpLHMsYTtyZXR1cm4gdCYmdC5zcGxpdCgiXG4iKS5mb3JFYWNoKChmdW5jdGlvbih0KXthPXQuaW5kZXhPZigiOiIpLGk9dC5zdWJzdHJpbmcoMCxhKS50cmltKCkudG9Mb3dlckNhc2UoKSxzPXQuc3Vic3RyaW5nKGErMSkudHJpbSgpLCFpfHxlW2ldJiZudFtpXXx8KCJzZXQtY29va2llIj09PWk/ZVtpXT9lW2ldLnB1c2gocyk6ZVtpXT1bc106ZVtpXT1lW2ldP2VbaV0rIiwgIitzOnMpfSkpLGV9KSh0KSk6dCBpbnN0YW5jZW9mIHRoaXM/dDpuZXcgdGhpcyh0KX0sYWNjZXNzb3I6ZnVuY3Rpb24odCl7Y29uc3QgZT0odGhpc1tydF09dGhpc1tydF09e2FjY2Vzc29yczp7fX0pLmFjY2Vzc29ycyxpPXRoaXMucHJvdG90eXBlO2Z1bmN0aW9uIHModCl7Y29uc3Qgcz1sdCh0KTtlW3NdfHwoZnVuY3Rpb24odCxlKXtjb25zdCBpPU0udG9DYW1lbENhc2UoIiAiK2UpO1siZ2V0Iiwic2V0IiwiaGFzIl0uZm9yRWFjaCgocz0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHMraSx7dmFsdWU6ZnVuY3Rpb24odCxpLGEpe3JldHVybiB0aGlzW3NdLmNhbGwodGhpcyxlLHQsaSxhKX0sY29uZmlndXJhYmxlOiEwfSl9KSl9KGksdCksZVtzXT0hMCl9cmV0dXJuIE0uaXNBcnJheSh0KT90LmZvckVhY2gocyk6cyh0KSx0aGlzfX0pLHV0LmFjY2Vzc29yKFsiQ29udGVudC1UeXBlIiwiQ29udGVudC1MZW5ndGgiLCJBY2NlcHQiLCJBY2NlcHQtRW5jb2RpbmciLCJVc2VyLUFnZW50Il0pLE0uZnJlZXplTWV0aG9kcyh1dC5wcm90b3R5cGUpLE0uZnJlZXplTWV0aG9kcyh1dCk7dmFyIHB0PXV0O2Z1bmN0aW9uIGd0KHQsZSl7bGV0IGk9MDtjb25zdCBzPWZ1bmN0aW9uKHQsZSl7dD10fHwxMDtjb25zdCBpPW5ldyBBcnJheSh0KSxzPW5ldyBBcnJheSh0KTtsZXQgYSxuPTAscj0wO3JldHVybiBlPXZvaWQgMCE9PWU/ZToxZTMsZnVuY3Rpb24obyl7Y29uc3QgbD1EYXRlLm5vdygpLGM9c1tyXTthfHwoYT1sKSxpW25dPW8sc1tuXT1sO2xldCBoPXIsZD0wO2Zvcig7aCE9PW47KWQrPWlbaCsrXSxoJT10O2lmKG49KG4rMSkldCxuPT09ciYmKHI9KHIrMSkldCksbC1hPGUpcmV0dXJuO2NvbnN0IHU9YyYmbC1jO3JldHVybiB1P01hdGgucm91bmQoMWUzKmQvdSk6dm9pZCAwfX0oNTAsMjUwKTtyZXR1cm4gYT0+e2NvbnN0IG49YS5sb2FkZWQscj1hLmxlbmd0aENvbXB1dGFibGU/YS50b3RhbDp2b2lkIDAsbz1uLWksbD1zKG8pO2k9bjtjb25zdCBjPXtsb2FkZWQ6bix0b3RhbDpyLHByb2dyZXNzOnI/bi9yOnZvaWQgMCxieXRlczpvLHJhdGU6bHx8dm9pZCAwLGVzdGltYXRlZDpsJiZyJiZuPD1yPyhyLW4pL2w6dm9pZCAwfTtjW2U/ImRvd25sb2FkIjoidXBsb2FkIl09ITAsdChjKX19ZnVuY3Rpb24gZnQodCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGkpe2xldCBzPXQuZGF0YTtjb25zdCBhPXB0LmZyb20odC5oZWFkZXJzKS5ub3JtYWxpemUoKSxuPXQucmVzcG9uc2VUeXBlO2xldCByO2Z1bmN0aW9uIG8oKXt0LmNhbmNlbFRva2VuJiZ0LmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKHIpLHQuc2lnbmFsJiZ0LnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIscil9TS5pc0Zvcm1EYXRhKHMpJiZKLmlzU3RhbmRhcmRCcm93c2VyRW52JiZhLnNldENvbnRlbnRUeXBlKCExKTtsZXQgbD1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYodC5hdXRoKXtjb25zdCBlPXQuYXV0aC51c2VybmFtZXx8IiIsaT10LmF1dGgucGFzc3dvcmQ/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHQuYXV0aC5wYXNzd29yZCkpOiIiO2Euc2V0KCJBdXRob3JpemF0aW9uIiwiQmFzaWMgIitidG9hKGUrIjoiK2kpKX1jb25zdCBjPWV0KHQuYmFzZVVSTCx0LnVybCk7ZnVuY3Rpb24gaCgpe2lmKCFsKXJldHVybjtjb25zdCBzPXB0LmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBsJiZsLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTshZnVuY3Rpb24odCxlLGkpe2NvbnN0IHM9aS5jb25maWcudmFsaWRhdGVTdGF0dXM7aS5zdGF0dXMmJnMmJiFzKGkuc3RhdHVzKT9lKG5ldyBEKCJSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICIraS5zdGF0dXMsW0QuRVJSX0JBRF9SRVFVRVNULEQuRVJSX0JBRF9SRVNQT05TRV1bTWF0aC5mbG9vcihpLnN0YXR1cy8xMDApLTRdLGkuY29uZmlnLGkucmVxdWVzdCxpKSk6dChpKX0oKGZ1bmN0aW9uKHQpe2UodCksbygpfSksKGZ1bmN0aW9uKHQpe2kodCksbygpfSkse2RhdGE6biYmInRleHQiIT09biYmImpzb24iIT09bj9sLnJlc3BvbnNlOmwucmVzcG9uc2VUZXh0LHN0YXR1czpsLnN0YXR1cyxzdGF0dXNUZXh0Omwuc3RhdHVzVGV4dCxoZWFkZXJzOnMsY29uZmlnOnQscmVxdWVzdDpsfSksbD1udWxsfWlmKGwub3Blbih0Lm1ldGhvZC50b1VwcGVyQ2FzZSgpLGooYyx0LnBhcmFtcyx0LnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxsLnRpbWVvdXQ9dC50aW1lb3V0LCJvbmxvYWRlbmQiaW4gbD9sLm9ubG9hZGVuZD1oOmwub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7bCYmND09PWwucmVhZHlTdGF0ZSYmKDAhPT1sLnN0YXR1c3x8bC5yZXNwb25zZVVSTCYmMD09PWwucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkmJnNldFRpbWVvdXQoaCl9LGwub25hYm9ydD1mdW5jdGlvbigpe2wmJihpKG5ldyBEKCJSZXF1ZXN0IGFib3J0ZWQiLEQuRUNPTk5BQk9SVEVELHQsbCkpLGw9bnVsbCl9LGwub25lcnJvcj1mdW5jdGlvbigpe2kobmV3IEQoIk5ldHdvcmsgRXJyb3IiLEQuRVJSX05FVFdPUkssdCxsKSksbD1udWxsfSxsLm9udGltZW91dD1mdW5jdGlvbigpe2xldCBlPXQudGltZW91dD8idGltZW91dCBvZiAiK3QudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIjtjb25zdCBzPXQudHJhbnNpdGlvbmFsfHxVO3QudGltZW91dEVycm9yTWVzc2FnZSYmKGU9dC50aW1lb3V0RXJyb3JNZXNzYWdlKSxpKG5ldyBEKGUscy5jbGFyaWZ5VGltZW91dEVycm9yP0QuRVRJTUVET1VUOkQuRUNPTk5BQk9SVEVELHQsbCkpLGw9bnVsbH0sSi5pc1N0YW5kYXJkQnJvd3NlckVudil7Y29uc3QgZT0odC53aXRoQ3JlZGVudGlhbHN8fGl0KGMpKSYmdC54c3JmQ29va2llTmFtZSYmdHQucmVhZCh0LnhzcmZDb29raWVOYW1lKTtlJiZhLnNldCh0LnhzcmZIZWFkZXJOYW1lLGUpfXZvaWQgMD09PXMmJmEuc2V0Q29udGVudFR5cGUobnVsbCksInNldFJlcXVlc3RIZWFkZXIiaW4gbCYmTS5mb3JFYWNoKGEudG9KU09OKCksKGZ1bmN0aW9uKHQsZSl7bC5zZXRSZXF1ZXN0SGVhZGVyKGUsdCl9KSksTS5pc1VuZGVmaW5lZCh0LndpdGhDcmVkZW50aWFscyl8fChsLndpdGhDcmVkZW50aWFscz0hIXQud2l0aENyZWRlbnRpYWxzKSxuJiYianNvbiIhPT1uJiYobC5yZXNwb25zZVR5cGU9dC5yZXNwb25zZVR5cGUpLCJmdW5jdGlvbiI9PXR5cGVvZiB0Lm9uRG93bmxvYWRQcm9ncmVzcyYmbC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZ3QodC5vbkRvd25sb2FkUHJvZ3Jlc3MsITApKSwiZnVuY3Rpb24iPT10eXBlb2YgdC5vblVwbG9hZFByb2dyZXNzJiZsLnVwbG9hZCYmbC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGd0KHQub25VcGxvYWRQcm9ncmVzcykpLCh0LmNhbmNlbFRva2VufHx0LnNpZ25hbCkmJihyPWU9PntsJiYoaSghZXx8ZS50eXBlP25ldyBhdChudWxsLHQsbCk6ZSksbC5hYm9ydCgpLGw9bnVsbCl9LHQuY2FuY2VsVG9rZW4mJnQuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKHIpLHQuc2lnbmFsJiYodC5zaWduYWwuYWJvcnRlZD9yKCk6dC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHIpKSk7Y29uc3QgZD1mdW5jdGlvbih0KXtjb25zdCBlPS9eKFstK1x3XXsxLDI1fSkoOj9cL1wvfDopLy5leGVjKHQpO3JldHVybiBlJiZlWzFdfHwiIn0oYyk7ZCYmLTE9PT1KLnByb3RvY29scy5pbmRleE9mKGQpP2kobmV3IEQoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrZCsiOiIsRC5FUlJfQkFEX1JFUVVFU1QsdCkpOmwuc2VuZChzfHxudWxsKX0pKX1jb25zdCBtdD17aHR0cDpmdCx4aHI6ZnR9O3ZhciB2dD10PT57aWYoTS5pc1N0cmluZyh0KSl7Y29uc3QgZT1tdFt0XTtpZighdCl0aHJvdyBFcnJvcihNLmhhc093blByb3AodCk/YEFkYXB0ZXIgJyR7dH0nIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkYDpgQ2FuIG5vdCByZXNvbHZlIGFkYXB0ZXIgJyR7dH0nYCk7cmV0dXJuIGV9aWYoIU0uaXNGdW5jdGlvbih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhZGFwdGVyIGlzIG5vdCBhIGZ1bmN0aW9uIik7cmV0dXJuIHR9O2NvbnN0IHh0PXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn0sYnQ9e3RyYW5zaXRpb25hbDpVLGFkYXB0ZXI6ZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0P3Q9dnQoInhociIpOiJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmInByb2Nlc3MiPT09TS5raW5kT2YocHJvY2VzcykmJih0PXZ0KCJodHRwIikpLHR9KCksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24odCxlKXtjb25zdCBpPWUuZ2V0Q29udGVudFR5cGUoKXx8IiIscz1pLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxhPU0uaXNPYmplY3QodCk7aWYoYSYmTS5pc0hUTUxGb3JtKHQpJiYodD1uZXcgRm9ybURhdGEodCkpLE0uaXNGb3JtRGF0YSh0KSlyZXR1cm4gcyYmcz9KU09OLnN0cmluZ2lmeShRKHQpKTp0O2lmKE0uaXNBcnJheUJ1ZmZlcih0KXx8TS5pc0J1ZmZlcih0KXx8TS5pc1N0cmVhbSh0KXx8TS5pc0ZpbGUodCl8fE0uaXNCbG9iKHQpKXJldHVybiB0O2lmKE0uaXNBcnJheUJ1ZmZlclZpZXcodCkpcmV0dXJuIHQuYnVmZmVyO2lmKE0uaXNVUkxTZWFyY2hQYXJhbXModCkpcmV0dXJuIGUuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiwhMSksdC50b1N0cmluZygpO2xldCBuO2lmKGEpe2lmKGkuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik+LTEpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFgodCxuZXcgSi5jbGFzc2VzLlVSTFNlYXJjaFBhcmFtcyxPYmplY3QuYXNzaWduKHt2aXNpdG9yOmZ1bmN0aW9uKHQsZSxpLHMpe3JldHVybiBKLmlzTm9kZSYmTS5pc0J1ZmZlcih0KT8odGhpcy5hcHBlbmQoZSx0LnRvU3RyaW5nKCJiYXNlNjQiKSksITEpOnMuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sZSkpfSh0LHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7aWYoKG49TS5pc0ZpbGVMaXN0KHQpKXx8aS5pbmRleE9mKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik+LTEpe2NvbnN0IGU9dGhpcy5lbnYmJnRoaXMuZW52LkZvcm1EYXRhO3JldHVybiBYKG4/eyJmaWxlc1tdIjp0fTp0LGUmJm5ldyBlLHRoaXMuZm9ybVNlcmlhbGl6ZXIpfX1yZXR1cm4gYXx8cz8oZS5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24vanNvbiIsITEpLGZ1bmN0aW9uKHQsZSxpKXtpZihNLmlzU3RyaW5nKHQpKXRyeXtyZXR1cm4oMCxKU09OLnBhcnNlKSh0KSxNLnRyaW0odCl9Y2F0Y2godCl7aWYoIlN5bnRheEVycm9yIiE9PXQubmFtZSl0aHJvdyB0fXJldHVybigwLEpTT04uc3RyaW5naWZ5KSh0KX0odCkpOnR9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLnRyYW5zaXRpb25hbHx8YnQudHJhbnNpdGlvbmFsLGk9ZSYmZS5mb3JjZWRKU09OUGFyc2luZyxzPSJqc29uIj09PXRoaXMucmVzcG9uc2VUeXBlO2lmKHQmJk0uaXNTdHJpbmcodCkmJihpJiYhdGhpcy5yZXNwb25zZVR5cGV8fHMpKXtjb25zdCBpPSEoZSYmZS5zaWxlbnRKU09OUGFyc2luZykmJnM7dHJ5e3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKHQpe2lmKGkpe2lmKCJTeW50YXhFcnJvciI9PT10Lm5hbWUpdGhyb3cgRC5mcm9tKHQsRC5FUlJfQkFEX1JFU1BPTlNFLHRoaXMsbnVsbCx0aGlzLnJlc3BvbnNlKTt0aHJvdyB0fX19cmV0dXJuIHR9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSxlbnY6e0Zvcm1EYXRhOkouY2xhc3Nlcy5Gb3JtRGF0YSxCbG9iOkouY2xhc3Nlcy5CbG9ifSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbih0KXtyZXR1cm4gdD49MjAwJiZ0PDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fX07TS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCJdLChmdW5jdGlvbih0KXtidC5oZWFkZXJzW3RdPXt9fSkpLE0uZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbih0KXtidC5oZWFkZXJzW3RdPU0ubWVyZ2UoeHQpfSkpO3ZhciB5dD1idDtmdW5jdGlvbiB3dCh0LGUpe2NvbnN0IGk9dGhpc3x8eXQscz1lfHxpLGE9cHQuZnJvbShzLmhlYWRlcnMpO2xldCBuPXMuZGF0YTtyZXR1cm4gTS5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQpe249dC5jYWxsKGksbixhLm5vcm1hbGl6ZSgpLGU/ZS5zdGF0dXM6dm9pZCAwKX0pKSxhLm5vcm1hbGl6ZSgpLG59ZnVuY3Rpb24ga3QodCl7cmV0dXJuISghdHx8IXQuX19DQU5DRUxfXyl9ZnVuY3Rpb24gU3QodCl7aWYodC5jYW5jZWxUb2tlbiYmdC5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksdC5zaWduYWwmJnQuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IGF0fWZ1bmN0aW9uIEN0KHQpe3JldHVybiBTdCh0KSx0LmhlYWRlcnM9cHQuZnJvbSh0LmhlYWRlcnMpLHQuZGF0YT13dC5jYWxsKHQsdC50cmFuc2Zvcm1SZXF1ZXN0KSwodC5hZGFwdGVyfHx5dC5hZGFwdGVyKSh0KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gU3QodCksZS5kYXRhPXd0LmNhbGwodCx0LnRyYW5zZm9ybVJlc3BvbnNlLGUpLGUuaGVhZGVycz1wdC5mcm9tKGUuaGVhZGVycyksZX0pLChmdW5jdGlvbihlKXtyZXR1cm4ga3QoZSl8fChTdCh0KSxlJiZlLnJlc3BvbnNlJiYoZS5yZXNwb25zZS5kYXRhPXd0LmNhbGwodCx0LnRyYW5zZm9ybVJlc3BvbnNlLGUucmVzcG9uc2UpLGUucmVzcG9uc2UuaGVhZGVycz1wdC5mcm9tKGUucmVzcG9uc2UuaGVhZGVycykpKSxQcm9taXNlLnJlamVjdChlKX0pKX1mdW5jdGlvbiBBdCh0LGUpe2U9ZXx8e307Y29uc3QgaT17fTtmdW5jdGlvbiBzKHQsZSl7cmV0dXJuIE0uaXNQbGFpbk9iamVjdCh0KSYmTS5pc1BsYWluT2JqZWN0KGUpP00ubWVyZ2UodCxlKTpNLmlzUGxhaW5PYmplY3QoZSk/TS5tZXJnZSh7fSxlKTpNLmlzQXJyYXkoZSk/ZS5zbGljZSgpOmV9ZnVuY3Rpb24gYShpKXtyZXR1cm4gTS5pc1VuZGVmaW5lZChlW2ldKT9NLmlzVW5kZWZpbmVkKHRbaV0pP3ZvaWQgMDpzKHZvaWQgMCx0W2ldKTpzKHRbaV0sZVtpXSl9ZnVuY3Rpb24gbih0KXtpZighTS5pc1VuZGVmaW5lZChlW3RdKSlyZXR1cm4gcyh2b2lkIDAsZVt0XSl9ZnVuY3Rpb24gcihpKXtyZXR1cm4gTS5pc1VuZGVmaW5lZChlW2ldKT9NLmlzVW5kZWZpbmVkKHRbaV0pP3ZvaWQgMDpzKHZvaWQgMCx0W2ldKTpzKHZvaWQgMCxlW2ldKX1mdW5jdGlvbiBvKGkpe3JldHVybiBpIGluIGU/cyh0W2ldLGVbaV0pOmkgaW4gdD9zKHZvaWQgMCx0W2ldKTp2b2lkIDB9Y29uc3QgbD17dXJsOm4sbWV0aG9kOm4sZGF0YTpuLGJhc2VVUkw6cix0cmFuc2Zvcm1SZXF1ZXN0OnIsdHJhbnNmb3JtUmVzcG9uc2U6cixwYXJhbXNTZXJpYWxpemVyOnIsdGltZW91dDpyLHRpbWVvdXRNZXNzYWdlOnIsd2l0aENyZWRlbnRpYWxzOnIsYWRhcHRlcjpyLHJlc3BvbnNlVHlwZTpyLHhzcmZDb29raWVOYW1lOnIseHNyZkhlYWRlck5hbWU6cixvblVwbG9hZFByb2dyZXNzOnIsb25Eb3dubG9hZFByb2dyZXNzOnIsZGVjb21wcmVzczpyLG1heENvbnRlbnRMZW5ndGg6cixtYXhCb2R5TGVuZ3RoOnIsYmVmb3JlUmVkaXJlY3Q6cix0cmFuc3BvcnQ6cixodHRwQWdlbnQ6cixodHRwc0FnZW50OnIsY2FuY2VsVG9rZW46cixzb2NrZXRQYXRoOnIscmVzcG9uc2VFbmNvZGluZzpyLHZhbGlkYXRlU3RhdHVzOm99O3JldHVybiBNLmZvckVhY2goT2JqZWN0LmtleXModCkuY29uY2F0KE9iamVjdC5rZXlzKGUpKSwoZnVuY3Rpb24odCl7Y29uc3QgZT1sW3RdfHxhLHM9ZSh0KTtNLmlzVW5kZWZpbmVkKHMpJiZlIT09b3x8KGlbdF09cyl9KSksaX1jb25zdCBFdD17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlvbiIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goKCh0LGUpPT57RXRbdF09ZnVuY3Rpb24oaSl7cmV0dXJuIHR5cGVvZiBpPT09dHx8ImEiKyhlPDE/Im4gIjoiICIpK3R9fSkpO2NvbnN0IFR0PXt9O0V0LnRyYW5zaXRpb25hbD1mdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gcyh0LGUpe3JldHVybiJbQXhpb3MgdjEuMS4zXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK3QrIiciK2UrKGk/Ii4gIitpOiIiKX1yZXR1cm4oaSxhLG4pPT57aWYoITE9PT10KXRocm93IG5ldyBEKHMoYSwiIGhhcyBiZWVuIHJlbW92ZWQiKyhlPyIgaW4gIitlOiIiKSksRC5FUlJfREVQUkVDQVRFRCk7cmV0dXJuIGUmJiFUdFthXSYmKFR0W2FdPSEwLGNvbnNvbGUud2FybihzKGEsIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK2UrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksIXR8fHQoaSxhLG4pfX07dmFyIEx0PXthc3NlcnRPcHRpb25zOmZ1bmN0aW9uKHQsZSxpKXtpZigib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IEQoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiLEQuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnN0IHM9T2JqZWN0LmtleXModCk7bGV0IGE9cy5sZW5ndGg7Zm9yKDthLS0gPjA7KXtjb25zdCBuPXNbYV0scj1lW25dO2lmKHIpe2NvbnN0IGU9dFtuXSxpPXZvaWQgMD09PWV8fHIoZSxuLHQpO2lmKCEwIT09aSl0aHJvdyBuZXcgRCgib3B0aW9uICIrbisiIG11c3QgYmUgIitpLEQuRVJSX0JBRF9PUFRJT05fVkFMVUUpfWVsc2UgaWYoITAhPT1pKXRocm93IG5ldyBEKCJVbmtub3duIG9wdGlvbiAiK24sRC5FUlJfQkFEX09QVElPTil9fSx2YWxpZGF0b3JzOkV0fTtjb25zdCBQdD1MdC52YWxpZGF0b3JzO2NsYXNzIE10e2NvbnN0cnVjdG9yKHQpe3RoaXMuZGVmYXVsdHM9dCx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgRyxyZXNwb25zZTpuZXcgR319cmVxdWVzdCh0LGUpeyJzdHJpbmciPT10eXBlb2YgdD8oZT1lfHx7fSkudXJsPXQ6ZT10fHx7fSxlPUF0KHRoaXMuZGVmYXVsdHMsZSk7Y29uc3R7dHJhbnNpdGlvbmFsOmkscGFyYW1zU2VyaWFsaXplcjpzfT1lO3ZvaWQgMCE9PWkmJkx0LmFzc2VydE9wdGlvbnMoaSx7c2lsZW50SlNPTlBhcnNpbmc6UHQudHJhbnNpdGlvbmFsKFB0LmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOlB0LnRyYW5zaXRpb25hbChQdC5ib29sZWFuKSxjbGFyaWZ5VGltZW91dEVycm9yOlB0LnRyYW5zaXRpb25hbChQdC5ib29sZWFuKX0sITEpLHZvaWQgMCE9PXMmJkx0LmFzc2VydE9wdGlvbnMocyx7ZW5jb2RlOlB0LmZ1bmN0aW9uLHNlcmlhbGl6ZTpQdC5mdW5jdGlvbn0sITApLGUubWV0aG9kPShlLm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2NvbnN0IGE9ZS5oZWFkZXJzJiZNLm1lcmdlKGUuaGVhZGVycy5jb21tb24sZS5oZWFkZXJzW2UubWV0aG9kXSk7YSYmTS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLChmdW5jdGlvbih0KXtkZWxldGUgZS5oZWFkZXJzW3RdfSkpLGUuaGVhZGVycz1uZXcgcHQoZS5oZWFkZXJzLGEpO2NvbnN0IG49W107bGV0IHI9ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKChmdW5jdGlvbih0KXsiZnVuY3Rpb24iPT10eXBlb2YgdC5ydW5XaGVuJiYhMT09PXQucnVuV2hlbihlKXx8KHI9ciYmdC5zeW5jaHJvbm91cyxuLnVuc2hpZnQodC5mdWxmaWxsZWQsdC5yZWplY3RlZCkpfSkpO2NvbnN0IG89W107bGV0IGw7dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaCgoZnVuY3Rpb24odCl7by5wdXNoKHQuZnVsZmlsbGVkLHQucmVqZWN0ZWQpfSkpO2xldCBjLGg9MDtpZighcil7Y29uc3QgdD1bQ3QuYmluZCh0aGlzKSx2b2lkIDBdO2Zvcih0LnVuc2hpZnQuYXBwbHkodCxuKSx0LnB1c2guYXBwbHkodCxvKSxjPXQubGVuZ3RoLGw9UHJvbWlzZS5yZXNvbHZlKGUpO2g8YzspbD1sLnRoZW4odFtoKytdLHRbaCsrXSk7cmV0dXJuIGx9Yz1uLmxlbmd0aDtsZXQgZD1lO2ZvcihoPTA7aDxjOyl7Y29uc3QgdD1uW2grK10sZT1uW2grK107dHJ5e2Q9dChkKX1jYXRjaCh0KXtlLmNhbGwodGhpcyx0KTticmVha319dHJ5e2w9Q3QuY2FsbCh0aGlzLGQpfWNhdGNoKHQpe3JldHVybiBQcm9taXNlLnJlamVjdCh0KX1mb3IoaD0wLGM9by5sZW5ndGg7aDxjOylsPWwudGhlbihvW2grK10sb1toKytdKTtyZXR1cm4gbH1nZXRVcmkodCl7cmV0dXJuIGooZXQoKHQ9QXQodGhpcy5kZWZhdWx0cyx0KSkuYmFzZVVSTCx0LnVybCksdC5wYXJhbXMsdC5wYXJhbXNTZXJpYWxpemVyKX19TS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSwoZnVuY3Rpb24odCl7TXQucHJvdG90eXBlW3RdPWZ1bmN0aW9uKGUsaSl7cmV0dXJuIHRoaXMucmVxdWVzdChBdChpfHx7fSx7bWV0aG9kOnQsdXJsOmUsZGF0YTooaXx8e30pLmRhdGF9KSl9fSkpLE0uZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3JldHVybiBmdW5jdGlvbihpLHMsYSl7cmV0dXJuIHRoaXMucmVxdWVzdChBdChhfHx7fSx7bWV0aG9kOnQsaGVhZGVyczplP3siQ29udGVudC1UeXBlIjoibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9Ont9LHVybDppLGRhdGE6c30pKX19TXQucHJvdG90eXBlW3RdPWUoKSxNdC5wcm90b3R5cGVbdCsiRm9ybSJdPWUoITApfSkpO3ZhciBPdD1NdDtjbGFzcyBJdHtjb25zdHJ1Y3Rvcih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7bGV0IGU7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKChmdW5jdGlvbih0KXtlPXR9KSk7Y29uc3QgaT10aGlzO3RoaXMucHJvbWlzZS50aGVuKCh0PT57aWYoIWkuX2xpc3RlbmVycylyZXR1cm47bGV0IGU9aS5fbGlzdGVuZXJzLmxlbmd0aDtmb3IoO2UtLSA+MDspaS5fbGlzdGVuZXJzW2VdKHQpO2kuX2xpc3RlbmVycz1udWxsfSkpLHRoaXMucHJvbWlzZS50aGVuPXQ9PntsZXQgZTtjb25zdCBzPW5ldyBQcm9taXNlKCh0PT57aS5zdWJzY3JpYmUodCksZT10fSkpLnRoZW4odCk7cmV0dXJuIHMuY2FuY2VsPWZ1bmN0aW9uKCl7aS51bnN1YnNjcmliZShlKX0sc30sdCgoZnVuY3Rpb24odCxzLGEpe2kucmVhc29ufHwoaS5yZWFzb249bmV3IGF0KHQscyxhKSxlKGkucmVhc29uKSl9KSl9dGhyb3dJZlJlcXVlc3RlZCgpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufXN1YnNjcmliZSh0KXt0aGlzLnJlYXNvbj90KHRoaXMucmVhc29uKTp0aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2godCk6dGhpcy5fbGlzdGVuZXJzPVt0XX11bnN1YnNjcmliZSh0KXtpZighdGhpcy5fbGlzdGVuZXJzKXJldHVybjtjb25zdCBlPXRoaXMuX2xpc3RlbmVycy5pbmRleE9mKHQpOy0xIT09ZSYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZShlLDEpfXN0YXRpYyBzb3VyY2UoKXtsZXQgdDtyZXR1cm57dG9rZW46bmV3IEl0KChmdW5jdGlvbihlKXt0PWV9KSksY2FuY2VsOnR9fX12YXIgRnQ9SXQ7Y29uc3QgRHQ9ZnVuY3Rpb24gdChlKXtjb25zdCBpPW5ldyBPdChlKSxhPXMoT3QucHJvdG90eXBlLnJlcXVlc3QsaSk7cmV0dXJuIE0uZXh0ZW5kKGEsT3QucHJvdG90eXBlLGkse2FsbE93bktleXM6ITB9KSxNLmV4dGVuZChhLGksbnVsbCx7YWxsT3duS2V5czohMH0pLGEuY3JlYXRlPWZ1bmN0aW9uKGkpe3JldHVybiB0KEF0KGUsaSkpfSxhfSh5dCk7RHQuQXhpb3M9T3QsRHQuQ2FuY2VsZWRFcnJvcj1hdCxEdC5DYW5jZWxUb2tlbj1GdCxEdC5pc0NhbmNlbD1rdCxEdC5WRVJTSU9OPSIxLjEuMyIsRHQudG9Gb3JtRGF0YT1YLER0LkF4aW9zRXJyb3I9RCxEdC5DYW5jZWw9RHQuQ2FuY2VsZWRFcnJvcixEdC5hbGw9ZnVuY3Rpb24odCl7cmV0dXJuIFByb21pc2UuYWxsKHQpfSxEdC5zcHJlYWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmFwcGx5KG51bGwsZSl9fSxEdC5pc0F4aW9zRXJyb3I9ZnVuY3Rpb24odCl7cmV0dXJuIE0uaXNPYmplY3QodCkmJiEwPT09dC5pc0F4aW9zRXJyb3J9LER0LmZvcm1Ub0pTT049dD0+UShNLmlzSFRNTEZvcm0odCk/bmV3IEZvcm1EYXRhKHQpOnQpO3ZhciB6dD1EdDtjb25zdHtBeGlvczpOdCxBeGlvc0Vycm9yOlJ0LENhbmNlbGVkRXJyb3I6X3QsaXNDYW5jZWw6QnQsQ2FuY2VsVG9rZW46WHQsVkVSU0lPTjpIdCxhbGw6WXQsQ2FuY2VsOld0LGlzQXhpb3NFcnJvcjokdCxzcHJlYWQ6VnQsdG9Gb3JtRGF0YTpqdH09enQ7dmFyIEd0PXp0fSw5NTU6ZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSh0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgaT1hcmd1bWVudHNbZV07Zm9yKHZhciBzIGluIGkpdFtzXT1pW3NdfXJldHVybiB0fXZhciBzPWZ1bmN0aW9uIHQoZSxzKXtmdW5jdGlvbiBhKHQsYSxuKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50KXsibnVtYmVyIj09dHlwZW9mKG49aSh7fSxzLG4pKS5leHBpcmVzJiYobi5leHBpcmVzPW5ldyBEYXRlKERhdGUubm93KCkrODY0ZTUqbi5leHBpcmVzKSksbi5leHBpcmVzJiYobi5leHBpcmVzPW4uZXhwaXJlcy50b1VUQ1N0cmluZygpKSx0PWVuY29kZVVSSUNvbXBvbmVudCh0KS5yZXBsYWNlKC8lKDJbMzQ2Ql18NUV8NjB8N0MpL2csZGVjb2RlVVJJQ29tcG9uZW50KS5yZXBsYWNlKC9bKCldL2csZXNjYXBlKTt2YXIgcj0iIjtmb3IodmFyIG8gaW4gbiluW29dJiYocis9IjsgIitvLCEwIT09bltvXSYmKHIrPSI9IituW29dLnNwbGl0KCI7IilbMF0pKTtyZXR1cm4gZG9jdW1lbnQuY29va2llPXQrIj0iK2Uud3JpdGUoYSx0KStyfX1yZXR1cm4gT2JqZWN0LmNyZWF0ZSh7c2V0OmEsZ2V0OmZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJighYXJndW1lbnRzLmxlbmd0aHx8dCkpe2Zvcih2YXIgaT1kb2N1bWVudC5jb29raWU/ZG9jdW1lbnQuY29va2llLnNwbGl0KCI7ICIpOltdLHM9e30sYT0wO2E8aS5sZW5ndGg7YSsrKXt2YXIgbj1pW2FdLnNwbGl0KCI9Iikscj1uLnNsaWNlKDEpLmpvaW4oIj0iKTt0cnl7dmFyIG89ZGVjb2RlVVJJQ29tcG9uZW50KG5bMF0pO2lmKHNbb109ZS5yZWFkKHIsbyksdD09PW8pYnJlYWt9Y2F0Y2godCl7fX1yZXR1cm4gdD9zW3RdOnN9fSxyZW1vdmU6ZnVuY3Rpb24odCxlKXthKHQsIiIsaSh7fSxlLHtleHBpcmVzOi0xfSkpfSx3aXRoQXR0cmlidXRlczpmdW5jdGlvbihlKXtyZXR1cm4gdCh0aGlzLmNvbnZlcnRlcixpKHt9LHRoaXMuYXR0cmlidXRlcyxlKSl9LHdpdGhDb252ZXJ0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHQoaSh7fSx0aGlzLmNvbnZlcnRlcixlKSx0aGlzLmF0dHJpYnV0ZXMpfX0se2F0dHJpYnV0ZXM6e3ZhbHVlOk9iamVjdC5mcmVlemUocyl9LGNvbnZlcnRlcjp7dmFsdWU6T2JqZWN0LmZyZWV6ZShlKX19KX0oe3JlYWQ6ZnVuY3Rpb24odCl7cmV0dXJuJyInPT09dFswXSYmKHQ9dC5zbGljZSgxLC0xKSksdC5yZXBsYWNlKC8oJVtcZEEtRl17Mn0pKy9naSxkZWNvZGVVUklDb21wb25lbnQpfSx3cml0ZTpmdW5jdGlvbih0KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHQpLnJlcGxhY2UoLyUoMlszNDZCRl18M1tBQy1GXXw0MHw1W0JERV18NjB8N1tCQ0RdKS9nLGRlY29kZVVSSUNvbXBvbmVudCl9fSx7cGF0aDoiLyJ9KTtlLlo9c30sNDY2OmZ1bmN0aW9uKHQsZSl7InVzZSBzdHJpY3QiO3ZhciBpLHMsYT17fTtpPXdpbmRvdyxzPWZ1bmN0aW9uKCl7cmV0dXJuIGk9e30sdC5tPWU9W2Z1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBzKHQsZSl7ZT1lfHx7YnViYmxlczohMSxjYW5jZWxhYmxlOiExLGRldGFpbDp2b2lkIDB9O3ZhciBpPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJDdXN0b21FdmVudCIpO3JldHVybiBpLmluaXRDdXN0b21FdmVudCh0LGUuYnViYmxlcyxlLmNhbmNlbGFibGUsZS5kZXRhaWwpLGl9ZS5fX2VzTW9kdWxlPSEwLGUua2ViYWJDYXNlPWUuaGlnaGxpZ2h0PWUuaXNWYWx1ZUluQXJyYXlPZk9iamVjdHM9ZS5kZWJvdW5jZT1lLnB1dENvbnRlbnQ9ZS5lbnN1cmVFbGVtZW50SW5WaWV3PWUuaGFzQ2xhc3NJblRyZWU9dm9pZCAwLGUuaGFzQ2xhc3NJblRyZWU9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIGUmJnQmJnQuY2xhc3NMaXN0JiZ0LmNsYXNzTGlzdC5jb250YWlucyhlKT90Om51bGx9cmV0dXJuIGkodCxlKXx8ZnVuY3Rpb24gdChlLHMpe3JldHVybiBlJiZlIT09ZG9jdW1lbnQ/aShlLHMpP2U6dChlLnBhcmVudE5vZGUscyk6bnVsbH0odCxlKX0sZS5lbnN1cmVFbGVtZW50SW5WaWV3PWZ1bmN0aW9uKHQsZSl7dmFyIGk9dC5zY3JvbGxUb3ArdC5vZmZzZXRUb3Ascz1pK3QuY2xpZW50SGVpZ2h0LGE9ZS5vZmZzZXRUb3A7ZT1hK2UuY2xpZW50SGVpZ2h0LGE8aT90LnNjcm9sbFRvcC09aS1hOnM8ZSYmKHQuc2Nyb2xsVG9wKz1lLXMpfSxlLnB1dENvbnRlbnQ9ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXQub2Zmc2V0SGVpZ2h0LGE9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gdD1pP2EudG9wOmEudG9wLXMscz1pP2EuYm90dG9tOmEuYm90dG9tK3MsdDw9MD8iYmVsb3ciOnM+PXdpbmRvdy5pbm5lckhlaWdodD8iYWJvdmUiOmk/ZToiYmVsb3cifSxlLmRlYm91bmNlPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcztyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MTAwKSx2b2lkIDA9PT1pJiYoaT0hMSksZnVuY3Rpb24oKXtmb3IodmFyIGE9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspYVtuXT1hcmd1bWVudHNbbl07dmFyIHI9c2VsZixvPWkmJiFzO2NsZWFyVGltZW91dChzKSxzPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cz1udWxsLGl8fHQuYXBwbHkocixhKX0pLGUpLG8mJnQuYXBwbHkocixhKX19LGUuaXNWYWx1ZUluQXJyYXlPZk9iamVjdHM9ZnVuY3Rpb24odCxlLGkpe2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiB0W2VdPT09aTtmb3IodmFyIHM9MCxhPXQ7czxhLmxlbmd0aDtzKyspe3ZhciBuPWFbc107aWYobiYmbltlXSYmbltlXT09PWkpcmV0dXJuITB9cmV0dXJuITF9LGUuaGlnaGxpZ2h0PWZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10LGE9bmV3IFJlZ0V4cCgiKCIrZS50cmltKCkrIikoPyFbXjxdKj5bXjw+XSo8LykiLCJpIik7aWYoIXQubWF0Y2goYSkpcmV0dXJuIHQ7dmFyIG49dC5tYXRjaChhKS5pbmRleDtyZXR1cm4gZT1uK3QubWF0Y2goYSlbMF0udG9TdHJpbmcoKS5sZW5ndGgsZT10LnN1YnN0cmluZyhuLGUpLHMucmVwbGFjZShhLCc8bWFyayBjbGFzcz0iJy5jb25jYXQoaSwnIj4nKS5jb25jYXQoZSwiPC9tYXJrPiIpKX0sZS5rZWJhYkNhc2U9ZnVuY3Rpb24odCl7dmFyIGU9dC5yZXBsYWNlKC9bQS1aXHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwREVdL2csKGZ1bmN0aW9uKHQpe3JldHVybiItIit0LnRvTG93ZXJDYXNlKCl9KSk7cmV0dXJuIHRbMF09PT10WzBdLnRvVXBwZXJDYXNlKCk/ZS5zdWJzdHJpbmcoMSk6ZX0sImZ1bmN0aW9uIiE9dHlwZW9mKGU9d2luZG93KS5DdXN0b21FdmVudCYmKHMucHJvdG90eXBlPWUuRXZlbnQucHJvdG90eXBlLGUuQ3VzdG9tRXZlbnQ9cyl9LGZ1bmN0aW9uKHQsZSxpKXtlLl9fZXNNb2R1bGU9ITAsZS52YWxpZGF0ZU9wdGlvbj1lLnZhbGlkYXRlRGF0YT1lLkRhdGE9dm9pZCAwO3ZhciBzPShhLnByb3RvdHlwZS5uZXdPcHRpb249ZnVuY3Rpb24odCl7cmV0dXJue2lkOnQuaWR8fFN0cmluZyhNYXRoLmZsb29yKDFlOCpNYXRoLnJhbmRvbSgpKSksdmFsdWU6dC52YWx1ZXx8IiIsdGV4dDp0LnRleHR8fCIiLGlubmVySFRNTDp0LmlubmVySFRNTHx8IiIsc2VsZWN0ZWQ6dC5zZWxlY3RlZHx8ITEsZGlzcGxheTp2b2lkIDA9PT10LmRpc3BsYXl8fHQuZGlzcGxheSxkaXNhYmxlZDp0LmRpc2FibGVkfHwhMSxwbGFjZWhvbGRlcjp0LnBsYWNlaG9sZGVyfHwhMSxjbGFzczp0LmNsYXNzfHx2b2lkIDAsZGF0YTp0LmRhdGF8fHt9LG1hbmRhdG9yeTp0Lm1hbmRhdG9yeXx8ITF9fSxhLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCl7dGhpcy5kYXRhLnB1c2goe2lkOlN0cmluZyhNYXRoLmZsb29yKDFlOCpNYXRoLnJhbmRvbSgpKSksdmFsdWU6dC52YWx1ZSx0ZXh0OnQudGV4dCxpbm5lckhUTUw6IiIsc2VsZWN0ZWQ6ITEsZGlzcGxheTohMCxkaXNhYmxlZDohMSxwbGFjZWhvbGRlcjohMSxjbGFzczp2b2lkIDAsbWFuZGF0b3J5OnQubWFuZGF0b3J5LGRhdGE6e319KX0sYS5wcm90b3R5cGUucGFyc2VTZWxlY3REYXRhPWZ1bmN0aW9uKCl7dGhpcy5kYXRhPVtdO2Zvcih2YXIgdD0wLGU9dGhpcy5tYWluLnNlbGVjdC5lbGVtZW50LmNoaWxkTm9kZXM7dDxlLmxlbmd0aDt0Kyspe3ZhciBpPWVbdF07aWYoIk9QVEdST1VQIj09PWkubm9kZU5hbWUpe2Zvcih2YXIgcz17bGFiZWw6aS5sYWJlbCxvcHRpb25zOltdfSxhPTAsbj1pLmNoaWxkTm9kZXM7YTxuLmxlbmd0aDthKyspe3ZhciByLG89blthXTsiT1BUSU9OIj09PW8ubm9kZU5hbWUmJihyPXRoaXMucHVsbE9wdGlvbkRhdGEobykscy5vcHRpb25zLnB1c2gociksci5wbGFjZWhvbGRlciYmIiIhPT1yLnRleHQudHJpbSgpJiYodGhpcy5tYWluLmNvbmZpZy5wbGFjZWhvbGRlclRleHQ9ci50ZXh0KSl9dGhpcy5kYXRhLnB1c2gocyl9ZWxzZSJPUFRJT04iPT09aS5ub2RlTmFtZSYmKHI9dGhpcy5wdWxsT3B0aW9uRGF0YShpKSx0aGlzLmRhdGEucHVzaChyKSxyLnBsYWNlaG9sZGVyJiYiIiE9PXIudGV4dC50cmltKCkmJih0aGlzLm1haW4uY29uZmlnLnBsYWNlaG9sZGVyVGV4dD1yLnRleHQpKX19LGEucHJvdG90eXBlLnB1bGxPcHRpb25EYXRhPWZ1bmN0aW9uKHQpe3JldHVybntpZDohIXQuZGF0YXNldCYmdC5kYXRhc2V0LmlkfHxTdHJpbmcoTWF0aC5mbG9vcigxZTgqTWF0aC5yYW5kb20oKSkpLHZhbHVlOnQudmFsdWUsdGV4dDp0LnRleHQsaW5uZXJIVE1MOnQuaW5uZXJIVE1MLHNlbGVjdGVkOnQuc2VsZWN0ZWQsZGlzYWJsZWQ6dC5kaXNhYmxlZCxwbGFjZWhvbGRlcjoidHJ1ZSI9PT10LmRhdGFzZXQucGxhY2Vob2xkZXIsY2xhc3M6dC5jbGFzc05hbWUsc3R5bGU6dC5zdHlsZS5jc3NUZXh0LGRhdGE6dC5kYXRhc2V0LG1hbmRhdG9yeTohIXQuZGF0YXNldCYmInRydWUiPT09dC5kYXRhc2V0Lm1hbmRhdG9yeX19LGEucHJvdG90eXBlLnNldFNlbGVjdGVkRnJvbVNlbGVjdD1mdW5jdGlvbigpe2lmKHRoaXMubWFpbi5jb25maWcuaXNNdWx0aXBsZSl7Zm9yKHZhciB0PVtdLGU9MCxpPXRoaXMubWFpbi5zZWxlY3QuZWxlbWVudC5vcHRpb25zO2U8aS5sZW5ndGg7ZSsrKXt2YXIgcz1pW2VdOyFzLnNlbGVjdGVkfHwocz10aGlzLmdldE9iamVjdEZyb21EYXRhKHMudmFsdWUsInZhbHVlIikpJiZzLmlkJiZ0LnB1c2gocy5pZCl9dGhpcy5zZXRTZWxlY3RlZCh0LCJpZCIpfWVsc2V7dmFyIGE9dGhpcy5tYWluLnNlbGVjdC5lbGVtZW50Oy0xIT09YS5zZWxlY3RlZEluZGV4JiYoYT1hLm9wdGlvbnNbYS5zZWxlY3RlZEluZGV4XS52YWx1ZSx0aGlzLnNldFNlbGVjdGVkKGEsInZhbHVlIikpfX0sYS5wcm90b3R5cGUuc2V0U2VsZWN0ZWQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT0iaWQiKTtmb3IodmFyIGk9MCxzPXRoaXMuZGF0YTtpPHMubGVuZ3RoO2krKyl7dmFyIGE9c1tpXTtpZihhLmhhc093blByb3BlcnR5KCJsYWJlbCIpKXtpZihhLmhhc093blByb3BlcnR5KCJvcHRpb25zIikpe3ZhciBuPWEub3B0aW9ucztpZihuKWZvcih2YXIgcj0wLG89bjtyPG8ubGVuZ3RoO3IrKyl7dmFyIGw9b1tyXTtsLnBsYWNlaG9sZGVyfHwobC5zZWxlY3RlZD10aGlzLnNob3VsZEJlU2VsZWN0ZWQobCx0LGUpKX19fWVsc2UgYS5zZWxlY3RlZD10aGlzLnNob3VsZEJlU2VsZWN0ZWQoYSx0LGUpfX0sYS5wcm90b3R5cGUuc2hvdWxkQmVTZWxlY3RlZD1mdW5jdGlvbih0LGUsaSl7aWYodm9pZCAwPT09aSYmKGk9ImlkIiksQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHM9MCxhPWU7czxhLmxlbmd0aDtzKyspe3ZhciBuPWFbc107aWYoaSBpbiB0JiZTdHJpbmcodFtpXSk9PT1TdHJpbmcobikpcmV0dXJuITB9ZWxzZSBpZihpIGluIHQmJlN0cmluZyh0W2ldKT09PVN0cmluZyhlKSlyZXR1cm4hMDtyZXR1cm4hMX0sYS5wcm90b3R5cGUuZ2V0U2VsZWN0ZWQ9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9e3RleHQ6IiIscGxhY2Vob2xkZXI6dGhpcy5tYWluLmNvbmZpZy5wbGFjZWhvbGRlclRleHR9LGU9W10saT0wLHM9dGhpcy5kYXRhO2k8cy5sZW5ndGg7aSsrKXt2YXIgYT1zW2ldO2lmKGEuaGFzT3duUHJvcGVydHkoImxhYmVsIikpe2lmKGEuaGFzT3duUHJvcGVydHkoIm9wdGlvbnMiKSl7dmFyIG49YS5vcHRpb25zO2lmKG4pZm9yKHZhciByPTAsbz1uO3I8by5sZW5ndGg7cisrKXt2YXIgbD1vW3JdO2wuc2VsZWN0ZWQmJih0aGlzLm1haW4uY29uZmlnLmlzTXVsdGlwbGU/ZS5wdXNoKGwpOnQ9bCl9fX1lbHNlIGEuc2VsZWN0ZWQmJih0aGlzLm1haW4uY29uZmlnLmlzTXVsdGlwbGU/ZS5wdXNoKGEpOnQ9YSl9cmV0dXJuIHRoaXMubWFpbi5jb25maWcuaXNNdWx0aXBsZT9lOnR9LGEucHJvdG90eXBlLmFkZFRvU2VsZWN0ZWQ9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9PT1lJiYoZT0iaWQiKSx0aGlzLm1haW4uY29uZmlnLmlzTXVsdGlwbGUpe3ZhciBpPVtdLHM9dGhpcy5nZXRTZWxlY3RlZCgpO2lmKEFycmF5LmlzQXJyYXkocykpZm9yKHZhciBhPTAsbj1zO2E8bi5sZW5ndGg7YSsrKXt2YXIgcj1uW2FdO2kucHVzaChyW2VdKX1pLnB1c2godCksdGhpcy5zZXRTZWxlY3RlZChpLGUpfX0sYS5wcm90b3R5cGUucmVtb3ZlRnJvbVNlbGVjdGVkPWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9ImlkIiksdGhpcy5tYWluLmNvbmZpZy5pc011bHRpcGxlKXtmb3IodmFyIGk9W10scz0wLGE9dGhpcy5nZXRTZWxlY3RlZCgpO3M8YS5sZW5ndGg7cysrKXt2YXIgbj1hW3NdO1N0cmluZyhuW2VdKSE9PVN0cmluZyh0KSYmaS5wdXNoKG5bZV0pfXRoaXMuc2V0U2VsZWN0ZWQoaSxlKX19LGEucHJvdG90eXBlLm9uRGF0YUNoYW5nZT1mdW5jdGlvbigpe3RoaXMubWFpbi5vbkNoYW5nZSYmdGhpcy5pc09uQ2hhbmdlRW5hYmxlZCYmdGhpcy5tYWluLm9uQ2hhbmdlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5nZXRTZWxlY3RlZCgpKSkpfSxhLnByb3RvdHlwZS5nZXRPYmplY3RGcm9tRGF0YT1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPSJpZCIpO2Zvcih2YXIgaT0wLHM9dGhpcy5kYXRhO2k8cy5sZW5ndGg7aSsrKXt2YXIgYT1zW2ldO2lmKGUgaW4gYSYmU3RyaW5nKGFbZV0pPT09U3RyaW5nKHQpKXJldHVybiBhO2lmKGEuaGFzT3duUHJvcGVydHkoIm9wdGlvbnMiKSYmYS5vcHRpb25zKWZvcih2YXIgbj0wLHI9YS5vcHRpb25zO248ci5sZW5ndGg7bisrKXt2YXIgbz1yW25dO2lmKFN0cmluZyhvW2VdKT09PVN0cmluZyh0KSlyZXR1cm4gb319cmV0dXJuIG51bGx9LGEucHJvdG90eXBlLnNlYXJjaD1mdW5jdGlvbih0KXt2YXIgZSxpOyIiIT09KHRoaXMuc2VhcmNoVmFsdWU9dCkudHJpbSgpPyhlPXRoaXMubWFpbi5jb25maWcuc2VhcmNoRmlsdGVyLGk9dGhpcy5kYXRhLnNsaWNlKDApLHQ9dC50cmltKCksaT1pLm1hcCgoZnVuY3Rpb24oaSl7aWYoaS5oYXNPd25Qcm9wZXJ0eSgib3B0aW9ucyIpKXt2YXIgcz1pLGE9W107aWYoMCE9PShhPXMub3B0aW9ucz9zLm9wdGlvbnMuZmlsdGVyKChmdW5jdGlvbihpKXtyZXR1cm4gZShpLHQpfSkpOmEpLmxlbmd0aClyZXR1cm4ocz1PYmplY3QuYXNzaWduKHt9LHMpKS5vcHRpb25zPWEsc31yZXR1cm4gaS5oYXNPd25Qcm9wZXJ0eSgidGV4dCIpJiZlKGksdCk/aTpudWxsfSkpLHRoaXMuZmlsdGVyZWQ9aS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpKTp0aGlzLmZpbHRlcmVkPW51bGx9LGEpO2Z1bmN0aW9uIGEodCl7dGhpcy5jb250ZW50T3Blbj0hMSx0aGlzLmNvbnRlbnRQb3NpdGlvbj0iYmVsb3ciLHRoaXMuaXNPbkNoYW5nZUVuYWJsZWQ9ITAsdGhpcy5tYWluPXQubWFpbix0aGlzLnNlYXJjaFZhbHVlPSIiLHRoaXMuZGF0YT1bXSx0aGlzLmZpbHRlcmVkPW51bGwsdGhpcy5wYXJzZVNlbGVjdERhdGEoKSx0aGlzLnNldFNlbGVjdGVkRnJvbVNlbGVjdCgpfWZ1bmN0aW9uIG4odCl7cmV0dXJuIHZvaWQgMCE9PXQudGV4dHx8KGNvbnNvbGUuZXJyb3IoIkRhdGEgb2JqZWN0IG9wdGlvbiBtdXN0IGhhdmUgYXQgbGVhc3QgaGF2ZSBhIHRleHQgdmFsdWUuIENoZWNrIG9iamVjdDogIitKU09OLnN0cmluZ2lmeSh0KSksITEpfWUuRGF0YT1zLGUudmFsaWRhdGVEYXRhPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiBjb25zb2xlLmVycm9yKCJEYXRhIG11c3QgYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyIpLCExO2Zvcih2YXIgZT0wLGk9MCxzPXQ7aTxzLmxlbmd0aDtpKyspe3ZhciBhPXNbaV07aWYoYS5oYXNPd25Qcm9wZXJ0eSgibGFiZWwiKSl7aWYoYS5oYXNPd25Qcm9wZXJ0eSgib3B0aW9ucyIpKXt2YXIgcj1hLm9wdGlvbnM7aWYocilmb3IodmFyIG89MCxsPXI7bzxsLmxlbmd0aDtvKyspbihsW29dKXx8ZSsrfX1lbHNlIG4oYSl8fGUrK31yZXR1cm4gMD09PWV9LGUudmFsaWRhdGVPcHRpb249bn0sZnVuY3Rpb24odCxlLGkpe2UuX19lc01vZHVsZT0hMDt2YXIgcz1pKDMpLGE9aSg0KSxuPWkoNSkscj1pKDEpLG89aSgwKTtmdW5jdGlvbiBsKHQpe3ZhciBlPXRoaXM7dGhpcy5hamF4PW51bGwsdGhpcy5hZGRhYmxlPW51bGwsdGhpcy5iZWZvcmVPbkNoYW5nZT1udWxsLHRoaXMub25DaGFuZ2U9bnVsbCx0aGlzLmJlZm9yZU9wZW49bnVsbCx0aGlzLmFmdGVyT3Blbj1udWxsLHRoaXMuYmVmb3JlQ2xvc2U9bnVsbCx0aGlzLmFmdGVyQ2xvc2U9bnVsbCx0aGlzLndpbmRvd1Njcm9sbD0oMCxvLmRlYm91bmNlKSgoZnVuY3Rpb24odCl7ZS5kYXRhLmNvbnRlbnRPcGVuJiYoImFib3ZlIj09PSgwLG8ucHV0Q29udGVudCkoZS5zbGltLmNvbnRlbnQsZS5kYXRhLmNvbnRlbnRQb3NpdGlvbixlLmRhdGEuY29udGVudE9wZW4pP2UubW92ZUNvbnRlbnRBYm92ZSgpOmUubW92ZUNvbnRlbnRCZWxvdygpKX0pKSx0aGlzLmRvY3VtZW50Q2xpY2s9ZnVuY3Rpb24odCl7dC50YXJnZXQmJiEoMCxvLmhhc0NsYXNzSW5UcmVlKSh0LnRhcmdldCxlLmNvbmZpZy5pZCkmJmUuY2xvc2UoKX07dmFyIGk9dGhpcy52YWxpZGF0ZSh0KTtpLmRhdGFzZXQuc3NpZCYmdGhpcy5kZXN0cm95KGkuZGF0YXNldC5zc2lkKSx0LmFqYXgmJih0aGlzLmFqYXg9dC5hamF4KSx0LmFkZGFibGUmJih0aGlzLmFkZGFibGU9dC5hZGRhYmxlKSx0aGlzLmNvbmZpZz1uZXcgcy5Db25maWcoe3NlbGVjdDppLGlzQWpheDohIXQuYWpheCxzaG93U2VhcmNoOnQuc2hvd1NlYXJjaCxzZWFyY2hQbGFjZWhvbGRlcjp0LnNlYXJjaFBsYWNlaG9sZGVyLHNlYXJjaFRleHQ6dC5zZWFyY2hUZXh0LHNlYXJjaGluZ1RleHQ6dC5zZWFyY2hpbmdUZXh0LHNlYXJjaEZvY3VzOnQuc2VhcmNoRm9jdXMsc2VhcmNoSGlnaGxpZ2h0OnQuc2VhcmNoSGlnaGxpZ2h0LHNlYXJjaEZpbHRlcjp0LnNlYXJjaEZpbHRlcixjbG9zZU9uU2VsZWN0OnQuY2xvc2VPblNlbGVjdCxzaG93Q29udGVudDp0LnNob3dDb250ZW50LHBsYWNlaG9sZGVyVGV4dDp0LnBsYWNlaG9sZGVyLGFsbG93RGVzZWxlY3Q6dC5hbGxvd0Rlc2VsZWN0LGFsbG93RGVzZWxlY3RPcHRpb246dC5hbGxvd0Rlc2VsZWN0T3B0aW9uLGhpZGVTZWxlY3RlZE9wdGlvbjp0LmhpZGVTZWxlY3RlZE9wdGlvbixkZXNlbGVjdExhYmVsOnQuZGVzZWxlY3RMYWJlbCxpc0VuYWJsZWQ6dC5pc0VuYWJsZWQsdmFsdWVzVXNlVGV4dDp0LnZhbHVlc1VzZVRleHQsc2hvd09wdGlvblRvb2x0aXBzOnQuc2hvd09wdGlvblRvb2x0aXBzLHNlbGVjdEJ5R3JvdXA6dC5zZWxlY3RCeUdyb3VwLGxpbWl0OnQubGltaXQsdGltZW91dERlbGF5OnQudGltZW91dERlbGF5LGFkZFRvQm9keTp0LmFkZFRvQm9keX0pLHRoaXMuc2VsZWN0PW5ldyBhLlNlbGVjdCh7c2VsZWN0OmksbWFpbjp0aGlzfSksdGhpcy5kYXRhPW5ldyByLkRhdGEoe21haW46dGhpc30pLHRoaXMuc2xpbT1uZXcgbi5TbGltKHttYWluOnRoaXN9KSx0aGlzLnNlbGVjdC5lbGVtZW50LnBhcmVudE5vZGUmJnRoaXMuc2VsZWN0LmVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5zbGltLmNvbnRhaW5lcix0aGlzLnNlbGVjdC5lbGVtZW50Lm5leHRTaWJsaW5nKSx0LmRhdGE/dGhpcy5zZXREYXRhKHQuZGF0YSk6dGhpcy5yZW5kZXIoKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5kb2N1bWVudENsaWNrKSwiYXV0byI9PT10aGlzLmNvbmZpZy5zaG93Q29udGVudCYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy53aW5kb3dTY3JvbGwsITEpLHQuYmVmb3JlT25DaGFuZ2UmJih0aGlzLmJlZm9yZU9uQ2hhbmdlPXQuYmVmb3JlT25DaGFuZ2UpLHQub25DaGFuZ2UmJih0aGlzLm9uQ2hhbmdlPXQub25DaGFuZ2UpLHQuYmVmb3JlT3BlbiYmKHRoaXMuYmVmb3JlT3Blbj10LmJlZm9yZU9wZW4pLHQuYWZ0ZXJPcGVuJiYodGhpcy5hZnRlck9wZW49dC5hZnRlck9wZW4pLHQuYmVmb3JlQ2xvc2UmJih0aGlzLmJlZm9yZUNsb3NlPXQuYmVmb3JlQ2xvc2UpLHQuYWZ0ZXJDbG9zZSYmKHRoaXMuYWZ0ZXJDbG9zZT10LmFmdGVyQ2xvc2UpLHRoaXMuY29uZmlnLmlzRW5hYmxlZHx8dGhpcy5kaXNhYmxlKCl9bC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7aWYoISh0PSJzdHJpbmciPT10eXBlb2YgdC5zZWxlY3Q/ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0LnNlbGVjdCk6dC5zZWxlY3QpKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgc2VsZWN0IGVsZW1lbnQiKTtpZigiU0VMRUNUIiE9PXQudGFnTmFtZSl0aHJvdyBuZXcgRXJyb3IoIkVsZW1lbnQgaXNudCBvZiB0eXBlIHNlbGVjdCIpO3JldHVybiB0fSxsLnByb3RvdHlwZS5zZWxlY3RlZD1mdW5jdGlvbigpe2lmKHRoaXMuY29uZmlnLmlzTXVsdGlwbGUpe2Zvcih2YXIgdD1bXSxlPTAsaT1hPXRoaXMuZGF0YS5nZXRTZWxlY3RlZCgpO2U8aS5sZW5ndGg7ZSsrKXt2YXIgcz1pW2VdO3QucHVzaChzLnZhbHVlKX1yZXR1cm4gdH12YXIgYTtyZXR1cm4oYT10aGlzLmRhdGEuZ2V0U2VsZWN0ZWQoKSk/YS52YWx1ZToiIn0sbC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSxpLHMpe3ZvaWQgMD09PWUmJihlPSJ2YWx1ZSIpLHZvaWQgMD09PWkmJihpPSEwKSx2b2lkIDA9PT1zJiYocz0hMCksdGhpcy5jb25maWcuaXNNdWx0aXBsZSYmIUFycmF5LmlzQXJyYXkodCk/dGhpcy5kYXRhLmFkZFRvU2VsZWN0ZWQodCxlKTp0aGlzLmRhdGEuc2V0U2VsZWN0ZWQodCxlKSx0aGlzLnNlbGVjdC5zZXRWYWx1ZSgpLHRoaXMuZGF0YS5vbkRhdGFDaGFuZ2UoKSx0aGlzLnJlbmRlcigpLChpPSEoIXRoaXMuY29uZmlnLmhpZGVTZWxlY3RlZE9wdGlvbnx8IXRoaXMuY29uZmlnLmlzTXVsdGlwbGV8fHRoaXMuZGF0YS5nZXRTZWxlY3RlZCgpLmxlbmd0aCE9PXRoaXMuZGF0YS5kYXRhLmxlbmd0aCl8fGkpJiZ0aGlzLmNsb3NlKCl9LGwucHJvdG90eXBlLnNldFNlbGVjdGVkPWZ1bmN0aW9uKHQsZSxpLHMpe3RoaXMuc2V0KHQsZT12b2lkIDA9PT1lPyJ2YWx1ZSI6ZSxpPXZvaWQgMD09PWl8fGkscz12b2lkIDA9PT1zfHxzKX0sbC5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbih0KXtpZigoMCxyLnZhbGlkYXRlRGF0YSkodCkpe2Zvcih2YXIgZT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKSxpPXRoaXMuZGF0YS5nZXRTZWxlY3RlZCgpLHM9MDtzPGUubGVuZ3RoO3MrKyllW3NdLnZhbHVlfHxlW3NdLnBsYWNlaG9sZGVyfHwoZVtzXS52YWx1ZT1lW3NdLnRleHQpO2lmKHRoaXMuY29uZmlnLmlzQWpheCYmaSlpZih0aGlzLmNvbmZpZy5pc011bHRpcGxlKWZvcih2YXIgYT0wLG49aS5yZXZlcnNlKCk7YTxuLmxlbmd0aDthKyspe3ZhciBvPW5bYV07ZS51bnNoaWZ0KG8pfWVsc2V7Zm9yKGUudW5zaGlmdChpKSxzPTA7czxlLmxlbmd0aDtzKyspZVtzXS5wbGFjZWhvbGRlcnx8ZVtzXS52YWx1ZSE9PWkudmFsdWV8fGVbc10udGV4dCE9PWkudGV4dHx8ZS5zcGxpY2UocywxKTt2YXIgbD0hMTtmb3Iocz0wO3M8ZS5sZW5ndGg7cysrKWVbc10ucGxhY2Vob2xkZXImJihsPSEwKTtsfHxlLnVuc2hpZnQoe3RleHQ6IiIscGxhY2Vob2xkZXI6ITB9KX10aGlzLnNlbGVjdC5jcmVhdGUoZSksdGhpcy5kYXRhLnBhcnNlU2VsZWN0RGF0YSgpLHRoaXMuZGF0YS5zZXRTZWxlY3RlZEZyb21TZWxlY3QoKX1lbHNlIGNvbnNvbGUuZXJyb3IoIlZhbGlkYXRpb24gcHJvYmxlbSBvbjogIyIrdGhpcy5zZWxlY3QuZWxlbWVudC5pZCl9LGwucHJvdG90eXBlLmFkZERhdGE9ZnVuY3Rpb24odCl7KDAsci52YWxpZGF0ZURhdGEpKFt0XSk/KHRoaXMuZGF0YS5hZGQodGhpcy5kYXRhLm5ld09wdGlvbih0KSksdGhpcy5zZWxlY3QuY3JlYXRlKHRoaXMuZGF0YS5kYXRhKSx0aGlzLmRhdGEucGFyc2VTZWxlY3REYXRhKCksdGhpcy5kYXRhLnNldFNlbGVjdGVkRnJvbVNlbGVjdCgpLHRoaXMucmVuZGVyKCkpOmNvbnNvbGUuZXJyb3IoIlZhbGlkYXRpb24gcHJvYmxlbSBvbjogIyIrdGhpcy5zZWxlY3QuZWxlbWVudC5pZCl9LGwucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXM7dGhpcy5jb25maWcuaXNFbmFibGVkJiYodGhpcy5kYXRhLmNvbnRlbnRPcGVufHx0aGlzLmNvbmZpZy5oaWRlU2VsZWN0ZWRPcHRpb24mJnRoaXMuY29uZmlnLmlzTXVsdGlwbGUmJnRoaXMuZGF0YS5nZXRTZWxlY3RlZCgpLmxlbmd0aD09PXRoaXMuZGF0YS5kYXRhLmxlbmd0aHx8KHRoaXMuYmVmb3JlT3BlbiYmdGhpcy5iZWZvcmVPcGVuKCksdGhpcy5jb25maWcuaXNNdWx0aXBsZSYmdGhpcy5zbGltLm11bHRpU2VsZWN0ZWQ/dGhpcy5zbGltLm11bHRpU2VsZWN0ZWQucGx1cy5jbGFzc0xpc3QuYWRkKCJzcy1jcm9zcyIpOnRoaXMuc2xpbS5zaW5nbGVTZWxlY3RlZCYmKHRoaXMuc2xpbS5zaW5nbGVTZWxlY3RlZC5hcnJvd0ljb24uYXJyb3cuY2xhc3NMaXN0LnJlbW92ZSgiYXJyb3ctZG93biIpLHRoaXMuc2xpbS5zaW5nbGVTZWxlY3RlZC5hcnJvd0ljb24uYXJyb3cuY2xhc3NMaXN0LmFkZCgiYXJyb3ctdXAiKSksdGhpcy5zbGltW3RoaXMuY29uZmlnLmlzTXVsdGlwbGU/Im11bHRpU2VsZWN0ZWQiOiJzaW5nbGVTZWxlY3RlZCJdLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJhYm92ZSI9PT10aGlzLmRhdGEuY29udGVudFBvc2l0aW9uP3RoaXMuY29uZmlnLm9wZW5BYm92ZTp0aGlzLmNvbmZpZy5vcGVuQmVsb3cpLHRoaXMuY29uZmlnLmFkZFRvQm9keSYmKHQ9dGhpcy5zbGltLmNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLnNsaW0uY29udGVudC5zdHlsZS50b3A9dC50b3ArdC5oZWlnaHQrd2luZG93LnNjcm9sbFkrInB4Iix0aGlzLnNsaW0uY29udGVudC5zdHlsZS5sZWZ0PXQubGVmdCt3aW5kb3cuc2Nyb2xsWCsicHgiLHRoaXMuc2xpbS5jb250ZW50LnN0eWxlLndpZHRoPXQud2lkdGgrInB4IiksdGhpcy5zbGltLmNvbnRlbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbmZpZy5vcGVuKSwidXAiPT09dGhpcy5jb25maWcuc2hvd0NvbnRlbnQudG9Mb3dlckNhc2UoKXx8ImRvd24iIT09dGhpcy5jb25maWcuc2hvd0NvbnRlbnQudG9Mb3dlckNhc2UoKSYmImFib3ZlIj09PSgwLG8ucHV0Q29udGVudCkodGhpcy5zbGltLmNvbnRlbnQsdGhpcy5kYXRhLmNvbnRlbnRQb3NpdGlvbix0aGlzLmRhdGEuY29udGVudE9wZW4pP3RoaXMubW92ZUNvbnRlbnRBYm92ZSgpOnRoaXMubW92ZUNvbnRlbnRCZWxvdygpLHRoaXMuY29uZmlnLmlzTXVsdGlwbGV8fCh0PXRoaXMuZGF0YS5nZXRTZWxlY3RlZCgpKSYmKHQ9dC5pZCwodD10aGlzLnNsaW0ubGlzdC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1pZD0iJyt0KyciXScpKSYmKDAsby5lbnN1cmVFbGVtZW50SW5WaWV3KSh0aGlzLnNsaW0ubGlzdCx0KSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLmRhdGEuY29udGVudE9wZW49ITAsZS5jb25maWcuc2VhcmNoRm9jdXMmJmUuc2xpbS5zZWFyY2guaW5wdXQuZm9jdXMoKSxlLmFmdGVyT3BlbiYmZS5hZnRlck9wZW4oKX0pLHRoaXMuY29uZmlnLnRpbWVvdXREZWxheSkpKX0sbC5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZGF0YS5jb250ZW50T3BlbiYmKHRoaXMuYmVmb3JlQ2xvc2UmJnRoaXMuYmVmb3JlQ2xvc2UoKSx0aGlzLmNvbmZpZy5pc011bHRpcGxlJiZ0aGlzLnNsaW0ubXVsdGlTZWxlY3RlZD8odGhpcy5zbGltLm11bHRpU2VsZWN0ZWQuY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jb25maWcub3BlbkFib3ZlKSx0aGlzLnNsaW0ubXVsdGlTZWxlY3RlZC5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNvbmZpZy5vcGVuQmVsb3cpLHRoaXMuc2xpbS5tdWx0aVNlbGVjdGVkLnBsdXMuY2xhc3NMaXN0LnJlbW92ZSgic3MtY3Jvc3MiKSk6dGhpcy5zbGltLnNpbmdsZVNlbGVjdGVkJiYodGhpcy5zbGltLnNpbmdsZVNlbGVjdGVkLmNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY29uZmlnLm9wZW5BYm92ZSksdGhpcy5zbGltLnNpbmdsZVNlbGVjdGVkLmNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY29uZmlnLm9wZW5CZWxvdyksdGhpcy5zbGltLnNpbmdsZVNlbGVjdGVkLmFycm93SWNvbi5hcnJvdy5jbGFzc0xpc3QuYWRkKCJhcnJvdy1kb3duIiksdGhpcy5zbGltLnNpbmdsZVNlbGVjdGVkLmFycm93SWNvbi5hcnJvdy5jbGFzc0xpc3QucmVtb3ZlKCJhcnJvdy11cCIpKSx0aGlzLnNsaW0uY29udGVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY29uZmlnLm9wZW4pLHRoaXMuZGF0YS5jb250ZW50T3Blbj0hMSx0aGlzLnNlYXJjaCgiIiksc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LnNsaW0uY29udGVudC5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIiksdC5kYXRhLmNvbnRlbnRQb3NpdGlvbj0iYmVsb3ciLHQuY29uZmlnLmlzTXVsdGlwbGUmJnQuc2xpbS5tdWx0aVNlbGVjdGVkPyh0LnNsaW0ubXVsdGlTZWxlY3RlZC5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0LmNvbmZpZy5vcGVuQWJvdmUpLHQuc2xpbS5tdWx0aVNlbGVjdGVkLmNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKHQuY29uZmlnLm9wZW5CZWxvdykpOnQuc2xpbS5zaW5nbGVTZWxlY3RlZCYmKHQuc2xpbS5zaW5nbGVTZWxlY3RlZC5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0LmNvbmZpZy5vcGVuQWJvdmUpLHQuc2xpbS5zaW5nbGVTZWxlY3RlZC5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0LmNvbmZpZy5vcGVuQmVsb3cpKSx0LnNsaW0uc2VhcmNoLmlucHV0LmJsdXIoKSx0LmFmdGVyQ2xvc2UmJnQuYWZ0ZXJDbG9zZSgpfSksdGhpcy5jb25maWcudGltZW91dERlbGF5KSl9LGwucHJvdG90eXBlLm1vdmVDb250ZW50QWJvdmU9ZnVuY3Rpb24oKXt2YXIgdD0wO3RoaXMuY29uZmlnLmlzTXVsdGlwbGUmJnRoaXMuc2xpbS5tdWx0aVNlbGVjdGVkP3Q9dGhpcy5zbGltLm11bHRpU2VsZWN0ZWQuY29udGFpbmVyLm9mZnNldEhlaWdodDp0aGlzLnNsaW0uc2luZ2xlU2VsZWN0ZWQmJih0PXRoaXMuc2xpbS5zaW5nbGVTZWxlY3RlZC5jb250YWluZXIub2Zmc2V0SGVpZ2h0KTt2YXIgZT10K3RoaXMuc2xpbS5jb250ZW50Lm9mZnNldEhlaWdodC0xO3RoaXMuc2xpbS5jb250ZW50LnN0eWxlLm1hcmdpbj0iLSIrZSsicHggMCAwIDAiLHRoaXMuc2xpbS5jb250ZW50LnN0eWxlLmhlaWdodD1lLXQrMSsicHgiLHRoaXMuc2xpbS5jb250ZW50LnN0eWxlLnRyYW5zZm9ybU9yaWdpbj0iY2VudGVyIGJvdHRvbSIsdGhpcy5kYXRhLmNvbnRlbnRQb3NpdGlvbj0iYWJvdmUiLHRoaXMuY29uZmlnLmlzTXVsdGlwbGUmJnRoaXMuc2xpbS5tdWx0aVNlbGVjdGVkPyh0aGlzLnNsaW0ubXVsdGlTZWxlY3RlZC5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNvbmZpZy5vcGVuQmVsb3cpLHRoaXMuc2xpbS5tdWx0aVNlbGVjdGVkLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKHRoaXMuY29uZmlnLm9wZW5BYm92ZSkpOnRoaXMuc2xpbS5zaW5nbGVTZWxlY3RlZCYmKHRoaXMuc2xpbS5zaW5nbGVTZWxlY3RlZC5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNvbmZpZy5vcGVuQmVsb3cpLHRoaXMuc2xpbS5zaW5nbGVTZWxlY3RlZC5jb250YWluZXIuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbmZpZy5vcGVuQWJvdmUpKX0sbC5wcm90b3R5cGUubW92ZUNvbnRlbnRCZWxvdz1mdW5jdGlvbigpe3RoaXMuZGF0YS5jb250ZW50UG9zaXRpb249ImJlbG93Iix0aGlzLmNvbmZpZy5pc011bHRpcGxlJiZ0aGlzLnNsaW0ubXVsdGlTZWxlY3RlZD8odGhpcy5zbGltLm11bHRpU2VsZWN0ZWQuY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jb25maWcub3BlbkFib3ZlKSx0aGlzLnNsaW0ubXVsdGlTZWxlY3RlZC5jb250YWluZXIuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbmZpZy5vcGVuQmVsb3cpKTp0aGlzLnNsaW0uc2luZ2xlU2VsZWN0ZWQmJih0aGlzLnNsaW0uc2luZ2xlU2VsZWN0ZWQuY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jb25maWcub3BlbkFib3ZlKSx0aGlzLnNsaW0uc2luZ2xlU2VsZWN0ZWQuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5jb25maWcub3BlbkJlbG93KSl9LGwucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbigpe3RoaXMuY29uZmlnLmlzRW5hYmxlZD0hMCx0aGlzLmNvbmZpZy5pc011bHRpcGxlJiZ0aGlzLnNsaW0ubXVsdGlTZWxlY3RlZD90aGlzLnNsaW0ubXVsdGlTZWxlY3RlZC5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNvbmZpZy5kaXNhYmxlZCk6dGhpcy5zbGltLnNpbmdsZVNlbGVjdGVkJiZ0aGlzLnNsaW0uc2luZ2xlU2VsZWN0ZWQuY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jb25maWcuZGlzYWJsZWQpLHRoaXMuc2VsZWN0LnRyaWdnZXJNdXRhdGlvbk9ic2VydmVyPSExLHRoaXMuc2VsZWN0LmVsZW1lbnQuZGlzYWJsZWQ9ITEsdGhpcy5zbGltLnNlYXJjaC5pbnB1dC5kaXNhYmxlZD0hMSx0aGlzLnNlbGVjdC50cmlnZ2VyTXV0YXRpb25PYnNlcnZlcj0hMH0sbC5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuY29uZmlnLmlzRW5hYmxlZD0hMSx0aGlzLmNvbmZpZy5pc011bHRpcGxlJiZ0aGlzLnNsaW0ubXVsdGlTZWxlY3RlZD90aGlzLnNsaW0ubXVsdGlTZWxlY3RlZC5jb250YWluZXIuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbmZpZy5kaXNhYmxlZCk6dGhpcy5zbGltLnNpbmdsZVNlbGVjdGVkJiZ0aGlzLnNsaW0uc2luZ2xlU2VsZWN0ZWQuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5jb25maWcuZGlzYWJsZWQpLHRoaXMuc2VsZWN0LnRyaWdnZXJNdXRhdGlvbk9ic2VydmVyPSExLHRoaXMuc2VsZWN0LmVsZW1lbnQuZGlzYWJsZWQ9ITAsdGhpcy5zbGltLnNlYXJjaC5pbnB1dC5kaXNhYmxlZD0hMCx0aGlzLnNlbGVjdC50cmlnZ2VyTXV0YXRpb25PYnNlcnZlcj0hMH0sbC5wcm90b3R5cGUuc2VhcmNoPWZ1bmN0aW9uKHQpe3ZhciBlO3RoaXMuZGF0YS5zZWFyY2hWYWx1ZSE9PXQmJih0aGlzLnNsaW0uc2VhcmNoLmlucHV0LnZhbHVlPXQsdGhpcy5jb25maWcuaXNBamF4PygoZT10aGlzKS5jb25maWcuaXNTZWFyY2hpbmc9ITAsdGhpcy5yZW5kZXIoKSx0aGlzLmFqYXgmJnRoaXMuYWpheCh0LChmdW5jdGlvbihpKXtlLmNvbmZpZy5pc1NlYXJjaGluZz0hMSxBcnJheS5pc0FycmF5KGkpPyhpLnVuc2hpZnQoe3RleHQ6IiIscGxhY2Vob2xkZXI6ITB9KSxlLnNldERhdGEoaSksZS5kYXRhLnNlYXJjaCh0KSxlLnJlbmRlcigpKToic3RyaW5nIj09dHlwZW9mIGk/ZS5zbGltLm9wdGlvbnMoaSk6ZS5yZW5kZXIoKX0pKSk6KHRoaXMuZGF0YS5zZWFyY2godCksdGhpcy5yZW5kZXIoKSkpfSxsLnByb3RvdHlwZS5zZXRTZWFyY2hUZXh0PWZ1bmN0aW9uKHQpe3RoaXMuY29uZmlnLnNlYXJjaFRleHQ9dH0sbC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dGhpcy5jb25maWcuaXNNdWx0aXBsZT90aGlzLnNsaW0udmFsdWVzKCk6KHRoaXMuc2xpbS5wbGFjZWhvbGRlcigpLHRoaXMuc2xpbS5kZXNlbGVjdCgpKSx0aGlzLnNsaW0ub3B0aW9ucygpfSxsLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKHQpe3ZhciBlPSh0PXZvaWQgMD09PXQ/bnVsbDp0KT9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuIit0KyIuc3MtbWFpbiIpOnRoaXMuc2xpbS5jb250YWluZXIsaT10P2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIltkYXRhLXNzaWQ9Ii5jb25jYXQodCwiXSIpKTp0aGlzLnNlbGVjdC5lbGVtZW50O2UmJmkmJihkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5kb2N1bWVudENsaWNrKSwiYXV0byI9PT10aGlzLmNvbmZpZy5zaG93Q29udGVudCYmd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy53aW5kb3dTY3JvbGwsITEpLGkuc3R5bGUuZGlzcGxheT0iIixkZWxldGUgaS5kYXRhc2V0LnNzaWQsaS5zbGltPW51bGwsZS5wYXJlbnRFbGVtZW50JiZlLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoZSksIXRoaXMuY29uZmlnLmFkZFRvQm9keXx8KHQ9dD9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuIit0KyIuc3MtY29udGVudCIpOnRoaXMuc2xpbS5jb250ZW50KSYmZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KSl9LGk9bCxlLmRlZmF1bHQ9aX0sZnVuY3Rpb24odCxlLGkpe2UuX19lc01vZHVsZT0hMCxlLkNvbmZpZz12b2lkIDA7dmFyIHM9KGEucHJvdG90eXBlLnNlYXJjaEZpbHRlcj1mdW5jdGlvbih0LGUpe3JldHVybi0xIT09dC50ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihlLnRvTG93ZXJDYXNlKCkpfSxhKTtmdW5jdGlvbiBhKHQpe3RoaXMuaWQ9IiIsdGhpcy5pc011bHRpcGxlPSExLHRoaXMuaXNBamF4PSExLHRoaXMuaXNTZWFyY2hpbmc9ITEsdGhpcy5zaG93U2VhcmNoPSEwLHRoaXMuc2VhcmNoRm9jdXM9ITAsdGhpcy5zZWFyY2hIaWdobGlnaHQ9ITEsdGhpcy5jbG9zZU9uU2VsZWN0PSEwLHRoaXMuc2hvd0NvbnRlbnQ9ImF1dG8iLHRoaXMuc2VhcmNoUGxhY2Vob2xkZXI9IlNlYXJjaCIsdGhpcy5zZWFyY2hUZXh0PSJObyBSZXN1bHRzIix0aGlzLnNlYXJjaGluZ1RleHQ9IlNlYXJjaGluZy4uLiIsdGhpcy5wbGFjZWhvbGRlclRleHQ9IlNlbGVjdCBWYWx1ZSIsdGhpcy5hbGxvd0Rlc2VsZWN0PSExLHRoaXMuYWxsb3dEZXNlbGVjdE9wdGlvbj0hMSx0aGlzLmhpZGVTZWxlY3RlZE9wdGlvbj0hMSx0aGlzLmRlc2VsZWN0TGFiZWw9IngiLHRoaXMuaXNFbmFibGVkPSEwLHRoaXMudmFsdWVzVXNlVGV4dD0hMSx0aGlzLnNob3dPcHRpb25Ub29sdGlwcz0hMSx0aGlzLnNlbGVjdEJ5R3JvdXA9ITEsdGhpcy5saW1pdD0wLHRoaXMudGltZW91dERlbGF5PTIwMCx0aGlzLmFkZFRvQm9keT0hMSx0aGlzLm1haW49InNzLW1haW4iLHRoaXMuc2luZ2xlU2VsZWN0ZWQ9InNzLXNpbmdsZS1zZWxlY3RlZCIsdGhpcy5hcnJvdz0ic3MtYXJyb3ciLHRoaXMubXVsdGlTZWxlY3RlZD0ic3MtbXVsdGktc2VsZWN0ZWQiLHRoaXMuYWRkPSJzcy1hZGQiLHRoaXMucGx1cz0ic3MtcGx1cyIsdGhpcy52YWx1ZXM9InNzLXZhbHVlcyIsdGhpcy52YWx1ZT0ic3MtdmFsdWUiLHRoaXMudmFsdWVUZXh0PSJzcy12YWx1ZS10ZXh0Iix0aGlzLnZhbHVlRGVsZXRlPSJzcy12YWx1ZS1kZWxldGUiLHRoaXMuY29udGVudD0ic3MtY29udGVudCIsdGhpcy5vcGVuPSJzcy1vcGVuIix0aGlzLm9wZW5BYm92ZT0ic3Mtb3Blbi1hYm92ZSIsdGhpcy5vcGVuQmVsb3c9InNzLW9wZW4tYmVsb3ciLHRoaXMuc2VhcmNoPSJzcy1zZWFyY2giLHRoaXMuc2VhcmNoSGlnaGxpZ2h0ZXI9InNzLXNlYXJjaC1oaWdobGlnaHQiLHRoaXMuYWRkYWJsZT0ic3MtYWRkYWJsZSIsdGhpcy5saXN0PSJzcy1saXN0Iix0aGlzLm9wdGdyb3VwPSJzcy1vcHRncm91cCIsdGhpcy5vcHRncm91cExhYmVsPSJzcy1vcHRncm91cC1sYWJlbCIsdGhpcy5vcHRncm91cExhYmVsU2VsZWN0YWJsZT0ic3Mtb3B0Z3JvdXAtbGFiZWwtc2VsZWN0YWJsZSIsdGhpcy5vcHRpb249InNzLW9wdGlvbiIsdGhpcy5vcHRpb25TZWxlY3RlZD0ic3Mtb3B0aW9uLXNlbGVjdGVkIix0aGlzLmhpZ2hsaWdodGVkPSJzcy1oaWdobGlnaHRlZCIsdGhpcy5kaXNhYmxlZD0ic3MtZGlzYWJsZWQiLHRoaXMuaGlkZT0ic3MtaGlkZSIsdGhpcy5pZD0ic3MtIitNYXRoLmZsb29yKDFlNSpNYXRoLnJhbmRvbSgpKSx0aGlzLnN0eWxlPXQuc2VsZWN0LnN0eWxlLmNzc1RleHQsdGhpcy5jbGFzcz10LnNlbGVjdC5jbGFzc05hbWUuc3BsaXQoIiAiKSx0aGlzLmlzTXVsdGlwbGU9dC5zZWxlY3QubXVsdGlwbGUsdGhpcy5pc0FqYXg9dC5pc0FqYXgsdGhpcy5zaG93U2VhcmNoPSExIT09dC5zaG93U2VhcmNoLHRoaXMuc2VhcmNoRm9jdXM9ITEhPT10LnNlYXJjaEZvY3VzLHRoaXMuc2VhcmNoSGlnaGxpZ2h0PSEwPT09dC5zZWFyY2hIaWdobGlnaHQsdGhpcy5jbG9zZU9uU2VsZWN0PSExIT09dC5jbG9zZU9uU2VsZWN0LHQuc2hvd0NvbnRlbnQmJih0aGlzLnNob3dDb250ZW50PXQuc2hvd0NvbnRlbnQpLHRoaXMuaXNFbmFibGVkPSExIT09dC5pc0VuYWJsZWQsdC5zZWFyY2hQbGFjZWhvbGRlciYmKHRoaXMuc2VhcmNoUGxhY2Vob2xkZXI9dC5zZWFyY2hQbGFjZWhvbGRlciksdC5zZWFyY2hUZXh0JiYodGhpcy5zZWFyY2hUZXh0PXQuc2VhcmNoVGV4dCksdC5zZWFyY2hpbmdUZXh0JiYodGhpcy5zZWFyY2hpbmdUZXh0PXQuc2VhcmNoaW5nVGV4dCksdC5wbGFjZWhvbGRlclRleHQmJih0aGlzLnBsYWNlaG9sZGVyVGV4dD10LnBsYWNlaG9sZGVyVGV4dCksdGhpcy5hbGxvd0Rlc2VsZWN0PSEwPT09dC5hbGxvd0Rlc2VsZWN0LHRoaXMuYWxsb3dEZXNlbGVjdE9wdGlvbj0hMD09PXQuYWxsb3dEZXNlbGVjdE9wdGlvbix0aGlzLmhpZGVTZWxlY3RlZE9wdGlvbj0hMD09PXQuaGlkZVNlbGVjdGVkT3B0aW9uLHQuZGVzZWxlY3RMYWJlbCYmKHRoaXMuZGVzZWxlY3RMYWJlbD10LmRlc2VsZWN0TGFiZWwpLHQudmFsdWVzVXNlVGV4dCYmKHRoaXMudmFsdWVzVXNlVGV4dD10LnZhbHVlc1VzZVRleHQpLHQuc2hvd09wdGlvblRvb2x0aXBzJiYodGhpcy5zaG93T3B0aW9uVG9vbHRpcHM9dC5zaG93T3B0aW9uVG9vbHRpcHMpLHQuc2VsZWN0QnlHcm91cCYmKHRoaXMuc2VsZWN0QnlHcm91cD10LnNlbGVjdEJ5R3JvdXApLHQubGltaXQmJih0aGlzLmxpbWl0PXQubGltaXQpLHQuc2VhcmNoRmlsdGVyJiYodGhpcy5zZWFyY2hGaWx0ZXI9dC5zZWFyY2hGaWx0ZXIpLG51bGwhPXQudGltZW91dERlbGF5JiYodGhpcy50aW1lb3V0RGVsYXk9dC50aW1lb3V0RGVsYXkpLHRoaXMuYWRkVG9Cb2R5PSEwPT09dC5hZGRUb0JvZHl9ZS5Db25maWc9c30sZnVuY3Rpb24odCxlLGkpe2UuX19lc01vZHVsZT0hMCxlLlNlbGVjdD12b2lkIDA7dmFyIHM9aSgwKTtmdW5jdGlvbiBhKHQpe3RoaXMudHJpZ2dlck11dGF0aW9uT2JzZXJ2ZXI9ITAsdGhpcy5lbGVtZW50PXQuc2VsZWN0LHRoaXMubWFpbj10Lm1haW4sdGhpcy5lbGVtZW50LmRpc2FibGVkJiYodGhpcy5tYWluLmNvbmZpZy5pc0VuYWJsZWQ9ITEpLHRoaXMuYWRkQXR0cmlidXRlcygpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKSx0aGlzLm11dGF0aW9uT2JzZXJ2ZXI9bnVsbCx0aGlzLmFkZE11dGF0aW9uT2JzZXJ2ZXIoKSx0aGlzLmVsZW1lbnQuc2xpbT10Lm1haW59YS5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24oKXtpZih0aGlzLm1haW4uZGF0YS5nZXRTZWxlY3RlZCgpKXtpZih0aGlzLm1haW4uY29uZmlnLmlzTXVsdGlwbGUpZm9yKHZhciB0PXRoaXMubWFpbi5kYXRhLmdldFNlbGVjdGVkKCksZT0wLGk9dGhpcy5lbGVtZW50Lm9wdGlvbnM7ZTxpLmxlbmd0aDtlKyspe3ZhciBzPWlbZV07cy5zZWxlY3RlZD0hMTtmb3IodmFyIGE9MCxuPXQ7YTxuLmxlbmd0aDthKyspblthXS52YWx1ZT09PXMudmFsdWUmJihzLnNlbGVjdGVkPSEwKX1lbHNlIHQ9dGhpcy5tYWluLmRhdGEuZ2V0U2VsZWN0ZWQoKSx0aGlzLmVsZW1lbnQudmFsdWU9dD90LnZhbHVlOiIiO3RoaXMubWFpbi5kYXRhLmlzT25DaGFuZ2VFbmFibGVkPSExLHRoaXMuZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2hhbmdlIix7YnViYmxlczohMH0pKSx0aGlzLm1haW4uZGF0YS5pc09uQ2hhbmdlRW5hYmxlZD0hMH19LGEucHJvdG90eXBlLmFkZEF0dHJpYnV0ZXM9ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQudGFiSW5kZXg9LTEsdGhpcy5lbGVtZW50LnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuZWxlbWVudC5kYXRhc2V0LnNzaWQ9dGhpcy5tYWluLmNvbmZpZy5pZCx0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKX0sYS5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChmdW5jdGlvbihlKXt0Lm1haW4uZGF0YS5zZXRTZWxlY3RlZEZyb21TZWxlY3QoKSx0Lm1haW4ucmVuZGVyKCl9KSl9LGEucHJvdG90eXBlLmFkZE11dGF0aW9uT2JzZXJ2ZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMubWFpbi5jb25maWcuaXNBamF4fHwodGhpcy5tdXRhdGlvbk9ic2VydmVyPW5ldyBNdXRhdGlvbk9ic2VydmVyKChmdW5jdGlvbihlKXt0LnRyaWdnZXJNdXRhdGlvbk9ic2VydmVyJiYodC5tYWluLmRhdGEucGFyc2VTZWxlY3REYXRhKCksdC5tYWluLmRhdGEuc2V0U2VsZWN0ZWRGcm9tU2VsZWN0KCksdC5tYWluLnJlbmRlcigpLGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ImNsYXNzIj09PWUuYXR0cmlidXRlTmFtZSYmdC5tYWluLnNsaW0udXBkYXRlQ29udGFpbmVyRGl2Q2xhc3ModC5tYWluLnNsaW0uY29udGFpbmVyKX0pKSl9KSksdGhpcy5vYnNlcnZlTXV0YXRpb25PYnNlcnZlcigpKX0sYS5wcm90b3R5cGUub2JzZXJ2ZU11dGF0aW9uT2JzZXJ2ZXI9ZnVuY3Rpb24oKXt0aGlzLm11dGF0aW9uT2JzZXJ2ZXImJnRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudCx7YXR0cmlidXRlczohMCxjaGlsZExpc3Q6ITAsY2hhcmFjdGVyRGF0YTohMH0pfSxhLnByb3RvdHlwZS5kaXNjb25uZWN0TXV0YXRpb25PYnNlcnZlcj1mdW5jdGlvbigpe3RoaXMubXV0YXRpb25PYnNlcnZlciYmdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKX0sYS5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKHQpe3RoaXMuZWxlbWVudC5pbm5lckhUTUw9IiI7Zm9yKHZhciBlPTAsaT10O2U8aS5sZW5ndGg7ZSsrKXt2YXIgcz1pW2VdO2lmKHMuaGFzT3duUHJvcGVydHkoIm9wdGlvbnMiKSl7dmFyIGE9cyxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGdyb3VwIik7aWYobi5sYWJlbD1hLmxhYmVsLGEub3B0aW9ucylmb3IodmFyIHI9MCxvPWEub3B0aW9ucztyPG8ubGVuZ3RoO3IrKyl7dmFyIGw9b1tyXTtuLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlT3B0aW9uKGwpKX10aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQobil9ZWxzZSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVPcHRpb24ocykpfX0sYS5wcm90b3R5cGUuY3JlYXRlT3B0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO3JldHVybiBlLnZhbHVlPSIiIT09dC52YWx1ZT90LnZhbHVlOnQudGV4dCxlLmlubmVySFRNTD10LmlubmVySFRNTHx8dC50ZXh0LHQuc2VsZWN0ZWQmJihlLnNlbGVjdGVkPXQuc2VsZWN0ZWQpLCExPT09dC5kaXNwbGF5JiYoZS5zdHlsZS5kaXNwbGF5PSJub25lIiksdC5kaXNhYmxlZCYmKGUuZGlzYWJsZWQ9ITApLHQucGxhY2Vob2xkZXImJmUuc2V0QXR0cmlidXRlKCJkYXRhLXBsYWNlaG9sZGVyIiwidHJ1ZSIpLHQubWFuZGF0b3J5JiZlLnNldEF0dHJpYnV0ZSgiZGF0YS1tYW5kYXRvcnkiLCJ0cnVlIiksdC5jbGFzcyYmdC5jbGFzcy5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuY2xhc3NMaXN0LmFkZCh0KX0pKSx0LmRhdGEmJiJvYmplY3QiPT10eXBlb2YgdC5kYXRhJiZPYmplY3Qua2V5cyh0LmRhdGEpLmZvckVhY2goKGZ1bmN0aW9uKGkpe2Uuc2V0QXR0cmlidXRlKCJkYXRhLSIrKDAscy5rZWJhYkNhc2UpKGkpLHQuZGF0YVtpXSl9KSksZX0saT1hLGUuU2VsZWN0PWl9LGZ1bmN0aW9uKHQsZSxpKXtlLl9fZXNNb2R1bGU9ITAsZS5TbGltPXZvaWQgMDt2YXIgcz1pKDApLGE9aSgxKTtmdW5jdGlvbiBuKHQpe3RoaXMubWFpbj10Lm1haW4sdGhpcy5jb250YWluZXI9dGhpcy5jb250YWluZXJEaXYoKSx0aGlzLmNvbnRlbnQ9dGhpcy5jb250ZW50RGl2KCksdGhpcy5zZWFyY2g9dGhpcy5zZWFyY2hEaXYoKSx0aGlzLmxpc3Q9dGhpcy5saXN0RGl2KCksdGhpcy5vcHRpb25zKCksdGhpcy5zaW5nbGVTZWxlY3RlZD1udWxsLHRoaXMubXVsdGlTZWxlY3RlZD1udWxsLHRoaXMubWFpbi5jb25maWcuaXNNdWx0aXBsZT8odGhpcy5tdWx0aVNlbGVjdGVkPXRoaXMubXVsdGlTZWxlY3RlZERpdigpLHRoaXMubXVsdGlTZWxlY3RlZCYmdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5tdWx0aVNlbGVjdGVkLmNvbnRhaW5lcikpOih0aGlzLnNpbmdsZVNlbGVjdGVkPXRoaXMuc2luZ2xlU2VsZWN0ZWREaXYoKSx0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnNpbmdsZVNlbGVjdGVkLmNvbnRhaW5lcikpLHRoaXMubWFpbi5jb25maWcuYWRkVG9Cb2R5Pyh0aGlzLmNvbnRlbnQuY2xhc3NMaXN0LmFkZCh0aGlzLm1haW4uY29uZmlnLmlkKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY29udGVudCkpOnRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuY29udGVudCksdGhpcy5jb250ZW50LmFwcGVuZENoaWxkKHRoaXMuc2VhcmNoLmNvbnRhaW5lciksdGhpcy5jb250ZW50LmFwcGVuZENoaWxkKHRoaXMubGlzdCl9bi5wcm90b3R5cGUuY29udGFpbmVyRGl2PWZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQuc3R5bGUuY3NzVGV4dD10aGlzLm1haW4uY29uZmlnLnN0eWxlLHRoaXMudXBkYXRlQ29udGFpbmVyRGl2Q2xhc3ModCksdH0sbi5wcm90b3R5cGUudXBkYXRlQ29udGFpbmVyRGl2Q2xhc3M9ZnVuY3Rpb24odCl7dGhpcy5tYWluLmNvbmZpZy5jbGFzcz10aGlzLm1haW4uc2VsZWN0LmVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KCIgIiksdC5jbGFzc05hbWU9IiIsdC5jbGFzc0xpc3QuYWRkKHRoaXMubWFpbi5jb25maWcuaWQpLHQuY2xhc3NMaXN0LmFkZCh0aGlzLm1haW4uY29uZmlnLm1haW4pO2Zvcih2YXIgZT0wLGk9dGhpcy5tYWluLmNvbmZpZy5jbGFzcztlPGkubGVuZ3RoO2UrKyl7dmFyIHM9aVtlXTsiIiE9PXMudHJpbSgpJiZ0LmNsYXNzTGlzdC5hZGQocyl9fSxuLnByb3RvdHlwZS5zaW5nbGVTZWxlY3RlZERpdj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTGlzdC5hZGQodGhpcy5tYWluLmNvbmZpZy5zaW5nbGVTZWxlY3RlZCk7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO2kuY2xhc3NMaXN0LmFkZCgicGxhY2Vob2xkZXIiKSxlLmFwcGVuZENoaWxkKGkpO3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtzLmlubmVySFRNTD10aGlzLm1haW4uY29uZmlnLmRlc2VsZWN0TGFiZWwscy5jbGFzc0xpc3QuYWRkKCJzcy1kZXNlbGVjdCIpLHMub25jbGljaz1mdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpLHQubWFpbi5jb25maWcuaXNFbmFibGVkJiZ0Lm1haW4uc2V0KCIiKX0sZS5hcHBlbmRDaGlsZChzKTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7YS5jbGFzc0xpc3QuYWRkKHRoaXMubWFpbi5jb25maWcuYXJyb3cpO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtyZXR1cm4gbi5jbGFzc0xpc3QuYWRkKCJhcnJvdy1kb3duIiksYS5hcHBlbmRDaGlsZChuKSxlLmFwcGVuZENoaWxkKGEpLGUub25jbGljaz1mdW5jdGlvbigpe3QubWFpbi5jb25maWcuaXNFbmFibGVkJiYodC5tYWluLmRhdGEuY29udGVudE9wZW4/dC5tYWluLmNsb3NlKCk6dC5tYWluLm9wZW4oKSl9LHtjb250YWluZXI6ZSxwbGFjZWhvbGRlcjppLGRlc2VsZWN0OnMsYXJyb3dJY29uOntjb250YWluZXI6YSxhcnJvdzpufX19LG4ucHJvdG90eXBlLnBsYWNlaG9sZGVyPWZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLm1haW4uZGF0YS5nZXRTZWxlY3RlZCgpO251bGw9PT1lfHxlJiZlLnBsYWNlaG9sZGVyPygodD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIikpLmNsYXNzTGlzdC5hZGQodGhpcy5tYWluLmNvbmZpZy5kaXNhYmxlZCksdC5pbm5lckhUTUw9dGhpcy5tYWluLmNvbmZpZy5wbGFjZWhvbGRlclRleHQsdGhpcy5zaW5nbGVTZWxlY3RlZCYmKHRoaXMuc2luZ2xlU2VsZWN0ZWQucGxhY2Vob2xkZXIuaW5uZXJIVE1MPXQub3V0ZXJIVE1MKSk6KHQ9IiIsZSYmKHQ9ZS5pbm5lckhUTUwmJiEwIT09dGhpcy5tYWluLmNvbmZpZy52YWx1ZXNVc2VUZXh0P2UuaW5uZXJIVE1MOmUudGV4dCksdGhpcy5zaW5nbGVTZWxlY3RlZCYmKHRoaXMuc2luZ2xlU2VsZWN0ZWQucGxhY2Vob2xkZXIuaW5uZXJIVE1MPWU/dDoiIikpfSxuLnByb3RvdHlwZS5kZXNlbGVjdD1mdW5jdGlvbigpe3RoaXMuc2luZ2xlU2VsZWN0ZWQmJih0aGlzLm1haW4uY29uZmlnLmFsbG93RGVzZWxlY3QmJiIiIT09dGhpcy5tYWluLnNlbGVjdGVkKCk/dGhpcy5zaW5nbGVTZWxlY3RlZC5kZXNlbGVjdC5jbGFzc0xpc3QucmVtb3ZlKCJzcy1oaWRlIik6dGhpcy5zaW5nbGVTZWxlY3RlZC5kZXNlbGVjdC5jbGFzc0xpc3QuYWRkKCJzcy1oaWRlIikpfSxuLnByb3RvdHlwZS5tdWx0aVNlbGVjdGVkRGl2PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NMaXN0LmFkZCh0aGlzLm1haW4uY29uZmlnLm11bHRpU2VsZWN0ZWQpO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2kuY2xhc3NMaXN0LmFkZCh0aGlzLm1haW4uY29uZmlnLnZhbHVlcyksZS5hcHBlbmRDaGlsZChpKTt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtzLmNsYXNzTGlzdC5hZGQodGhpcy5tYWluLmNvbmZpZy5hZGQpO3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtyZXR1cm4gYS5jbGFzc0xpc3QuYWRkKHRoaXMubWFpbi5jb25maWcucGx1cyksYS5vbmNsaWNrPWZ1bmN0aW9uKGUpe3QubWFpbi5kYXRhLmNvbnRlbnRPcGVuJiYodC5tYWluLmNsb3NlKCksZS5zdG9wUHJvcGFnYXRpb24oKSl9LHMuYXBwZW5kQ2hpbGQoYSksZS5hcHBlbmRDaGlsZChzKSxlLm9uY2xpY2s9ZnVuY3Rpb24oZSl7dC5tYWluLmNvbmZpZy5pc0VuYWJsZWQmJihlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnModC5tYWluLmNvbmZpZy52YWx1ZURlbGV0ZSl8fCh0Lm1haW4uZGF0YS5jb250ZW50T3Blbj90Lm1haW4uY2xvc2UoKTp0Lm1haW4ub3BlbigpKSl9LHtjb250YWluZXI6ZSx2YWx1ZXM6aSxhZGQ6cyxwbHVzOmF9fSxuLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXtpZih0aGlzLm11bHRpU2VsZWN0ZWQpe2Zvcih2YXIgdD10aGlzLm11bHRpU2VsZWN0ZWQudmFsdWVzLmNoaWxkTm9kZXMsZT10aGlzLm1haW4uZGF0YS5nZXRTZWxlY3RlZCgpLGk9W10scz0wLGE9dDtzPGEubGVuZ3RoO3MrKyl7Zm9yKHZhciBuPWFbc10scj0hMCxvPTAsbD1lO288bC5sZW5ndGg7bysrKXt2YXIgYz1sW29dO1N0cmluZyhjLmlkKT09PVN0cmluZyhuLmRhdGFzZXQuaWQpJiYocj0hMSl9ciYmaS5wdXNoKG4pfWZvcih2YXIgaD0wLGQ9aTtoPGQubGVuZ3RoO2grKyl7dmFyIHU9ZFtoXTt1LmNsYXNzTGlzdC5hZGQoInNzLW91dCIpLHRoaXMubXVsdGlTZWxlY3RlZC52YWx1ZXMucmVtb3ZlQ2hpbGQodSl9dmFyIHA7Zm9yKHQ9dGhpcy5tdWx0aVNlbGVjdGVkLnZhbHVlcy5jaGlsZE5vZGVzLGM9MDtjPGUubGVuZ3RoO2MrKyl7cj0hMTtmb3IodmFyIGc9MCxmPXQ7ZzxmLmxlbmd0aDtnKyspbj1mW2ddLFN0cmluZyhlW2NdLmlkKT09PVN0cmluZyhuLmRhdGFzZXQuaWQpJiYocj0hMCk7cnx8KDAhPT10Lmxlbmd0aCYmSFRNTEVsZW1lbnQucHJvdG90eXBlLmluc2VydEFkamFjZW50RWxlbWVudD8wPT09Yz90aGlzLm11bHRpU2VsZWN0ZWQudmFsdWVzLmluc2VydEJlZm9yZSh0aGlzLnZhbHVlRGl2KGVbY10pLHRbY10pOnRbYy0xXS5pbnNlcnRBZGphY2VudEVsZW1lbnQoImFmdGVyZW5kIix0aGlzLnZhbHVlRGl2KGVbY10pKTp0aGlzLm11bHRpU2VsZWN0ZWQudmFsdWVzLmFwcGVuZENoaWxkKHRoaXMudmFsdWVEaXYoZVtjXSkpKX0wPT09ZS5sZW5ndGgmJigocD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIikpLmNsYXNzTGlzdC5hZGQodGhpcy5tYWluLmNvbmZpZy5kaXNhYmxlZCkscC5pbm5lckhUTUw9dGhpcy5tYWluLmNvbmZpZy5wbGFjZWhvbGRlclRleHQsdGhpcy5tdWx0aVNlbGVjdGVkLnZhbHVlcy5pbm5lckhUTUw9cC5vdXRlckhUTUwpfX0sbi5wcm90b3R5cGUudmFsdWVEaXY9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2kuY2xhc3NMaXN0LmFkZCh0aGlzLm1haW4uY29uZmlnLnZhbHVlKSxpLmRhdGFzZXQuaWQ9dC5pZDt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7cmV0dXJuIHMuY2xhc3NMaXN0LmFkZCh0aGlzLm1haW4uY29uZmlnLnZhbHVlVGV4dCkscy5pbm5lckhUTUw9dC5pbm5lckhUTUwmJiEwIT09dGhpcy5tYWluLmNvbmZpZy52YWx1ZXNVc2VUZXh0P3QuaW5uZXJIVE1MOnQudGV4dCxpLmFwcGVuZENoaWxkKHMpLHQubWFuZGF0b3J5fHwoKHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKS5jbGFzc0xpc3QuYWRkKHRoaXMubWFpbi5jb25maWcudmFsdWVEZWxldGUpLHMuaW5uZXJIVE1MPXRoaXMubWFpbi5jb25maWcuZGVzZWxlY3RMYWJlbCxzLm9uY2xpY2s9ZnVuY3Rpb24oaSl7aS5wcmV2ZW50RGVmYXVsdCgpLGkuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIHM9ITE7aWYoZS5tYWluLmJlZm9yZU9uQ2hhbmdlfHwocz0hMCksZS5tYWluLmJlZm9yZU9uQ2hhbmdlKXtpPWUubWFpbi5kYXRhLmdldFNlbGVjdGVkKCk7Zm9yKHZhciBhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaSkpLG49MDtuPGEubGVuZ3RoO24rKylhW25dLmlkPT09dC5pZCYmYS5zcGxpY2UobiwxKTshMSE9PWUubWFpbi5iZWZvcmVPbkNoYW5nZShhKSYmKHM9ITApfXMmJihlLm1haW4uZGF0YS5yZW1vdmVGcm9tU2VsZWN0ZWQodC5pZCwiaWQiKSxlLm1haW4ucmVuZGVyKCksZS5tYWluLnNlbGVjdC5zZXRWYWx1ZSgpLGUubWFpbi5kYXRhLm9uRGF0YUNoYW5nZSgpKX0saS5hcHBlbmRDaGlsZChzKSksaX0sbi5wcm90b3R5cGUuY29udGVudERpdj1mdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmNsYXNzTGlzdC5hZGQodGhpcy5tYWluLmNvbmZpZy5jb250ZW50KSx0fSxuLnByb3RvdHlwZS5zZWFyY2hEaXY9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZS5jbGFzc0xpc3QuYWRkKHRoaXMubWFpbi5jb25maWcuc2VhcmNoKTt2YXIgbj17Y29udGFpbmVyOmUsaW5wdXQ6aX07cmV0dXJuIHRoaXMubWFpbi5jb25maWcuc2hvd1NlYXJjaHx8KGUuY2xhc3NMaXN0LmFkZCh0aGlzLm1haW4uY29uZmlnLmhpZGUpLGkucmVhZE9ubHk9ITApLGkudHlwZT0ic2VhcmNoIixpLnBsYWNlaG9sZGVyPXRoaXMubWFpbi5jb25maWcuc2VhcmNoUGxhY2Vob2xkZXIsaS50YWJJbmRleD0wLGkuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix0aGlzLm1haW4uY29uZmlnLnNlYXJjaFBsYWNlaG9sZGVyKSxpLnNldEF0dHJpYnV0ZSgiYXV0b2NhcGl0YWxpemUiLCJvZmYiKSxpLnNldEF0dHJpYnV0ZSgiYXV0b2NvbXBsZXRlIiwib2ZmIiksaS5zZXRBdHRyaWJ1dGUoImF1dG9jb3JyZWN0Iiwib2ZmIiksaS5vbmNsaWNrPWZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7IiI9PT1lLnRhcmdldC52YWx1ZSYmdC5tYWluLnNlYXJjaCgiIil9KSwxMCl9LGkub25rZXlkb3duPWZ1bmN0aW9uKGUpeyJBcnJvd1VwIj09PWUua2V5Pyh0Lm1haW4ub3BlbigpLHQuaGlnaGxpZ2h0VXAoKSxlLnByZXZlbnREZWZhdWx0KCkpOiJBcnJvd0Rvd24iPT09ZS5rZXk/KHQubWFpbi5vcGVuKCksdC5oaWdobGlnaHREb3duKCksZS5wcmV2ZW50RGVmYXVsdCgpKToiVGFiIj09PWUua2V5P3QubWFpbi5kYXRhLmNvbnRlbnRPcGVuP3QubWFpbi5jbG9zZSgpOnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5tYWluLmNsb3NlKCl9KSx0Lm1haW4uY29uZmlnLnRpbWVvdXREZWxheSk6IkVudGVyIj09PWUua2V5JiZlLnByZXZlbnREZWZhdWx0KCl9LGkub25rZXl1cD1mdW5jdGlvbihlKXt2YXIgYT1lLnRhcmdldDtpZigiRW50ZXIiPT09ZS5rZXkpe2lmKHQubWFpbi5hZGRhYmxlJiZlLmN0cmxLZXkpcmV0dXJuIHMuY2xpY2soKSxlLnByZXZlbnREZWZhdWx0KCksdm9pZCBlLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBuPXQubGlzdC5xdWVyeVNlbGVjdG9yKCIuIit0Lm1haW4uY29uZmlnLmhpZ2hsaWdodGVkKTtuJiZuLmNsaWNrKCl9ZWxzZSJBcnJvd1VwIj09PWUua2V5fHwiQXJyb3dEb3duIj09PWUua2V5fHwoIkVzY2FwZSI9PT1lLmtleT90Lm1haW4uY2xvc2UoKTp0Lm1haW4uY29uZmlnLnNob3dTZWFyY2gmJnQubWFpbi5kYXRhLmNvbnRlbnRPcGVuP3QubWFpbi5zZWFyY2goYS52YWx1ZSk6aS52YWx1ZT0iIik7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCl9LGkub25mb2N1cz1mdW5jdGlvbigpe3QubWFpbi5vcGVuKCl9LGUuYXBwZW5kQ2hpbGQoaSksdGhpcy5tYWluLmFkZGFibGUmJihzLmNsYXNzTGlzdC5hZGQodGhpcy5tYWluLmNvbmZpZy5hZGRhYmxlKSxzLmlubmVySFRNTD0iKyIscy5vbmNsaWNrPWZ1bmN0aW9uKGUpe3ZhciBpO3QubWFpbi5hZGRhYmxlJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksIiIhPT0oZT10LnNlYXJjaC5pbnB1dC52YWx1ZSkudHJpbSgpPyhlPXQubWFpbi5hZGRhYmxlKGUpLGk9IiIsZSYmKCJvYmplY3QiPT10eXBlb2YgZT8oMCxhLnZhbGlkYXRlT3B0aW9uKShlKSYmKHQubWFpbi5hZGREYXRhKGUpLGk9ZS52YWx1ZXx8ZS50ZXh0KToodC5tYWluLmFkZERhdGEodC5tYWluLmRhdGEubmV3T3B0aW9uKHt0ZXh0OmUsdmFsdWU6ZX0pKSxpPWUpLHQubWFpbi5zZWFyY2goIiIpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5tYWluLnNldChpLCJ2YWx1ZSIsITEsITEpfSksMTAwKSx0Lm1haW4uY29uZmlnLmNsb3NlT25TZWxlY3QmJnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5tYWluLmNsb3NlKCl9KSwxMDApKSk6dC5zZWFyY2guaW5wdXQuZm9jdXMoKSl9LGUuYXBwZW5kQ2hpbGQocyksbi5hZGRhYmxlPXMpLG59LG4ucHJvdG90eXBlLmhpZ2hsaWdodFVwPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5saXN0LnF1ZXJ5U2VsZWN0b3IoIi4iK3RoaXMubWFpbi5jb25maWcuaGlnaGxpZ2h0ZWQpLGU9bnVsbDtpZih0KWZvcihlPXQucHJldmlvdXNTaWJsaW5nO251bGwhPT1lJiZlLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLm1haW4uY29uZmlnLmRpc2FibGVkKTspZT1lLnByZXZpb3VzU2libGluZztlbHNle3ZhciBpPXRoaXMubGlzdC5xdWVyeVNlbGVjdG9yQWxsKCIuIit0aGlzLm1haW4uY29uZmlnLm9wdGlvbisiOm5vdCguIit0aGlzLm1haW4uY29uZmlnLmRpc2FibGVkKyIpIik7ZT1pW2kubGVuZ3RoLTFdfW51bGwhPT0oZT1lJiZlLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLm1haW4uY29uZmlnLm9wdGdyb3VwTGFiZWwpP251bGw6ZSl8fChpPXQucGFyZW50Tm9kZSkuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMubWFpbi5jb25maWcub3B0Z3JvdXApJiYoIWkucHJldmlvdXNTaWJsaW5nfHwoaT1pLnByZXZpb3VzU2libGluZy5xdWVyeVNlbGVjdG9yQWxsKCIuIit0aGlzLm1haW4uY29uZmlnLm9wdGlvbisiOm5vdCguIit0aGlzLm1haW4uY29uZmlnLmRpc2FibGVkKyIpIikpLmxlbmd0aCYmKGU9aVtpLmxlbmd0aC0xXSkpLGUmJih0JiZ0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5tYWluLmNvbmZpZy5oaWdobGlnaHRlZCksZS5jbGFzc0xpc3QuYWRkKHRoaXMubWFpbi5jb25maWcuaGlnaGxpZ2h0ZWQpLCgwLHMuZW5zdXJlRWxlbWVudEluVmlldykodGhpcy5saXN0LGUpKX0sbi5wcm90b3R5cGUuaGlnaGxpZ2h0RG93bj1mdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5saXN0LnF1ZXJ5U2VsZWN0b3IoIi4iK3RoaXMubWFpbi5jb25maWcuaGlnaGxpZ2h0ZWQpLGk9bnVsbDtpZihlKWZvcihpPWUubmV4dFNpYmxpbmc7bnVsbCE9PWkmJmkuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMubWFpbi5jb25maWcuZGlzYWJsZWQpOylpPWkubmV4dFNpYmxpbmc7ZWxzZSBpPXRoaXMubGlzdC5xdWVyeVNlbGVjdG9yKCIuIit0aGlzLm1haW4uY29uZmlnLm9wdGlvbisiOm5vdCguIit0aGlzLm1haW4uY29uZmlnLmRpc2FibGVkKyIpIik7bnVsbCE9PWl8fG51bGw9PT1lfHwodD1lLnBhcmVudE5vZGUpLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLm1haW4uY29uZmlnLm9wdGdyb3VwKSYmdC5uZXh0U2libGluZyYmKGk9dC5uZXh0U2libGluZy5xdWVyeVNlbGVjdG9yKCIuIit0aGlzLm1haW4uY29uZmlnLm9wdGlvbisiOm5vdCguIit0aGlzLm1haW4uY29uZmlnLmRpc2FibGVkKyIpIikpLGkmJihlJiZlLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5tYWluLmNvbmZpZy5oaWdobGlnaHRlZCksaS5jbGFzc0xpc3QuYWRkKHRoaXMubWFpbi5jb25maWcuaGlnaGxpZ2h0ZWQpLCgwLHMuZW5zdXJlRWxlbWVudEluVmlldykodGhpcy5saXN0LGkpKX0sbi5wcm90b3R5cGUubGlzdERpdj1mdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmNsYXNzTGlzdC5hZGQodGhpcy5tYWluLmNvbmZpZy5saXN0KSx0LnNldEF0dHJpYnV0ZSgicm9sZSIsImxpc3Rib3giKSx0fSxuLnByb3RvdHlwZS5vcHRpb25zPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PSIiKTt2YXIgZT10aGlzLm1haW4uZGF0YS5maWx0ZXJlZHx8dGhpcy5tYWluLmRhdGEuZGF0YTtpZigodGhpcy5saXN0LmlubmVySFRNTD0iIikhPT10KXJldHVybihpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5jbGFzc0xpc3QuYWRkKHRoaXMubWFpbi5jb25maWcub3B0aW9uKSxpLmNsYXNzTGlzdC5hZGQodGhpcy5tYWluLmNvbmZpZy5kaXNhYmxlZCksaS5pbm5lckhUTUw9dCx2b2lkIHRoaXMubGlzdC5hcHBlbmRDaGlsZChpKTtpZih0aGlzLm1haW4uY29uZmlnLmlzQWpheCYmdGhpcy5tYWluLmNvbmZpZy5pc1NlYXJjaGluZylyZXR1cm4oaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuY2xhc3NMaXN0LmFkZCh0aGlzLm1haW4uY29uZmlnLm9wdGlvbiksaS5jbGFzc0xpc3QuYWRkKHRoaXMubWFpbi5jb25maWcuZGlzYWJsZWQpLGkuaW5uZXJIVE1MPXRoaXMubWFpbi5jb25maWcuc2VhcmNoaW5nVGV4dCx2b2lkIHRoaXMubGlzdC5hcHBlbmRDaGlsZChpKTtpZigwPT09ZS5sZW5ndGgpe3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBpLmNsYXNzTGlzdC5hZGQodGhpcy5tYWluLmNvbmZpZy5vcHRpb24pLGkuY2xhc3NMaXN0LmFkZCh0aGlzLm1haW4uY29uZmlnLmRpc2FibGVkKSxpLmlubmVySFRNTD10aGlzLm1haW4uY29uZmlnLnNlYXJjaFRleHQsdm9pZCB0aGlzLmxpc3QuYXBwZW5kQ2hpbGQoaSl9Zm9yKHZhciBzPXRoaXMsYT0wLG49ZTthPG4ubGVuZ3RoO2ErKykhZnVuY3Rpb24odCl7aWYodC5oYXNPd25Qcm9wZXJ0eSgibGFiZWwiKSl7dmFyIGU9dCxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2kuY2xhc3NMaXN0LmFkZChzLm1haW4uY29uZmlnLm9wdGdyb3VwKTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtpZihhLmNsYXNzTGlzdC5hZGQocy5tYWluLmNvbmZpZy5vcHRncm91cExhYmVsKSxzLm1haW4uY29uZmlnLnNlbGVjdEJ5R3JvdXAmJnMubWFpbi5jb25maWcuaXNNdWx0aXBsZSYmYS5jbGFzc0xpc3QuYWRkKHMubWFpbi5jb25maWcub3B0Z3JvdXBMYWJlbFNlbGVjdGFibGUpLGEuaW5uZXJIVE1MPWUubGFiZWwsaS5hcHBlbmRDaGlsZChhKSxlPWUub3B0aW9ucyl7Zm9yKHZhciBuLHI9MCxvPWU7cjxvLmxlbmd0aDtyKyspe3ZhciBsPW9bcl07aS5hcHBlbmRDaGlsZChzLm9wdGlvbihsKSl9cy5tYWluLmNvbmZpZy5zZWxlY3RCeUdyb3VwJiZzLm1haW4uY29uZmlnLmlzTXVsdGlwbGUmJihuPXMsYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpO2Zvcih2YXIgZT0wLHM9aS5jaGlsZHJlbjtlPHMubGVuZ3RoO2UrKyl7dmFyIGE9c1tlXTstMSE9PWEuY2xhc3NOYW1lLmluZGV4T2Yobi5tYWluLmNvbmZpZy5vcHRpb24pJiZhLmNsaWNrKCl9fSkpKX1zLmxpc3QuYXBwZW5kQ2hpbGQoaSl9ZWxzZSBzLmxpc3QuYXBwZW5kQ2hpbGQocy5vcHRpb24odCkpfShuW2FdKX0sbi5wcm90b3R5cGUub3B0aW9uPWZ1bmN0aW9uKHQpe2lmKHQucGxhY2Vob2xkZXIpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmNsYXNzTGlzdC5hZGQodGhpcy5tYWluLmNvbmZpZy5vcHRpb24pLGUuY2xhc3NMaXN0LmFkZCh0aGlzLm1haW4uY29uZmlnLmhpZGUpLGV9dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aS5jbGFzc0xpc3QuYWRkKHRoaXMubWFpbi5jb25maWcub3B0aW9uKSxpLnNldEF0dHJpYnV0ZSgicm9sZSIsIm9wdGlvbiIpLHQuY2xhc3MmJnQuY2xhc3Muc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbih0KXtpLmNsYXNzTGlzdC5hZGQodCl9KSksdC5zdHlsZSYmKGkuc3R5bGUuY3NzVGV4dD10LnN0eWxlKTt2YXIgYT10aGlzLm1haW4uZGF0YS5nZXRTZWxlY3RlZCgpO2kuZGF0YXNldC5pZD10LmlkLHRoaXMubWFpbi5jb25maWcuc2VhcmNoSGlnaGxpZ2h0JiZ0aGlzLm1haW4uc2xpbSYmdC5pbm5lckhUTUwmJiIiIT09dGhpcy5tYWluLnNsaW0uc2VhcmNoLmlucHV0LnZhbHVlLnRyaW0oKT9pLmlubmVySFRNTD0oMCxzLmhpZ2hsaWdodCkodC5pbm5lckhUTUwsdGhpcy5tYWluLnNsaW0uc2VhcmNoLmlucHV0LnZhbHVlLHRoaXMubWFpbi5jb25maWcuc2VhcmNoSGlnaGxpZ2h0ZXIpOnQuaW5uZXJIVE1MJiYoaS5pbm5lckhUTUw9dC5pbm5lckhUTUwpLHRoaXMubWFpbi5jb25maWcuc2hvd09wdGlvblRvb2x0aXBzJiZpLnRleHRDb250ZW50JiZpLnNldEF0dHJpYnV0ZSgidGl0bGUiLGkudGV4dENvbnRlbnQpO3ZhciBuPXRoaXM7cmV0dXJuIGkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgaT10aGlzLmRhdGFzZXQuaWQ7aWYoITA9PT10LnNlbGVjdGVkJiZuLm1haW4uY29uZmlnLmFsbG93RGVzZWxlY3RPcHRpb24pe3ZhciBzPSExO2lmKG4ubWFpbi5iZWZvcmVPbkNoYW5nZSYmbi5tYWluLmNvbmZpZy5pc011bHRpcGxlfHwocz0hMCksbi5tYWluLmJlZm9yZU9uQ2hhbmdlJiZuLm1haW4uY29uZmlnLmlzTXVsdGlwbGUpe2Zvcih2YXIgcj1uLm1haW4uZGF0YS5nZXRTZWxlY3RlZCgpLG89SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyKSksbD0wO2w8by5sZW5ndGg7bCsrKW9bbF0uaWQ9PT1pJiZvLnNwbGljZShsLDEpOyExIT09bi5tYWluLmJlZm9yZU9uQ2hhbmdlKG8pJiYocz0hMCl9cyYmKG4ubWFpbi5jb25maWcuaXNNdWx0aXBsZT8obi5tYWluLmRhdGEucmVtb3ZlRnJvbVNlbGVjdGVkKGksImlkIiksbi5tYWluLnJlbmRlcigpLG4ubWFpbi5zZWxlY3Quc2V0VmFsdWUoKSxuLm1haW4uZGF0YS5vbkRhdGFDaGFuZ2UoKSk6bi5tYWluLnNldCgiIikpfWVsc2UgdC5kaXNhYmxlZHx8dC5zZWxlY3RlZHx8bi5tYWluLmNvbmZpZy5saW1pdCYmQXJyYXkuaXNBcnJheShhKSYmbi5tYWluLmNvbmZpZy5saW1pdDw9YS5sZW5ndGh8fChuLm1haW4uYmVmb3JlT25DaGFuZ2U/KHI9dm9pZCAwLChzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobi5tYWluLmRhdGEuZ2V0T2JqZWN0RnJvbURhdGEoaSkpKSkuc2VsZWN0ZWQ9ITAsbi5tYWluLmNvbmZpZy5pc011bHRpcGxlPyhyPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYSkpKS5wdXNoKHMpOnI9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShzKSksITEhPT1uLm1haW4uYmVmb3JlT25DaGFuZ2UocikmJm4ubWFpbi5zZXQoaSwiaWQiLG4ubWFpbi5jb25maWcuY2xvc2VPblNlbGVjdCkpOm4ubWFpbi5zZXQoaSwiaWQiLG4ubWFpbi5jb25maWcuY2xvc2VPblNlbGVjdCkpfSkpLGU9YSYmKDAscy5pc1ZhbHVlSW5BcnJheU9mT2JqZWN0cykoYSwiaWQiLHQuaWQpLCh0LmRpc2FibGVkfHxlKSYmKGkub25jbGljaz1udWxsLG4ubWFpbi5jb25maWcuYWxsb3dEZXNlbGVjdE9wdGlvbnx8aS5jbGFzc0xpc3QuYWRkKHRoaXMubWFpbi5jb25maWcuZGlzYWJsZWQpLG4ubWFpbi5jb25maWcuaGlkZVNlbGVjdGVkT3B0aW9uJiZpLmNsYXNzTGlzdC5hZGQodGhpcy5tYWluLmNvbmZpZy5oaWRlKSksZT9pLmNsYXNzTGlzdC5hZGQodGhpcy5tYWluLmNvbmZpZy5vcHRpb25TZWxlY3RlZCk6aS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubWFpbi5jb25maWcub3B0aW9uU2VsZWN0ZWQpLGl9LGk9bixlLlNsaW09aX1dLHQuYz1pLHQuZD1mdW5jdGlvbihlLGkscyl7dC5vKGUsaSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkse2VudW1lcmFibGU6ITAsZ2V0OnN9KX0sdC5yPWZ1bmN0aW9uKHQpeyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LHQudD1mdW5jdGlvbihlLGkpe2lmKDEmaSYmKGU9dChlKSksOCZpKXJldHVybiBlO2lmKDQmaSYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHM9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0LnIocyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmV9KSwyJmkmJiJzdHJpbmciIT10eXBlb2YgZSlmb3IodmFyIGEgaW4gZSl0LmQocyxhLGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfS5iaW5kKG51bGwsYSkpO3JldHVybiBzfSx0Lm49ZnVuY3Rpb24oZSl7dmFyIGk9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIHQuZChpLCJhIixpKSxpfSx0Lm89ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9LHQucD0iIix0KHQucz0yKS5kZWZhdWx0O2Z1bmN0aW9uIHQocyl7aWYoaVtzXSlyZXR1cm4gaVtzXS5leHBvcnRzO3ZhciBhPWlbc109e2k6cyxsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3NdLmNhbGwoYS5leHBvcnRzLGEsYS5leHBvcnRzLHQpLGEubD0hMCxhLmV4cG9ydHN9dmFyIGUsaX0sIm9iamVjdCI9PXR5cGVvZiBhJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1zKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10scyk6Im9iamVjdCI9PXR5cGVvZiBhP2EuU2xpbVNlbGVjdD1zKCk6aS5TbGltU2VsZWN0PXMoKSxlLlo9YS5TbGltU2VsZWN0fSw1MTpmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHModCl7cmV0dXJuIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQmJiJjb25zdHJ1Y3RvciJpbiB0JiZ0LmNvbnN0cnVjdG9yPT09T2JqZWN0fWZ1bmN0aW9uIGEodD17fSxlPXt9KXtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChpPT57dm9pZCAwPT09dFtpXT90W2ldPWVbaV06cyhlW2ldKSYmcyh0W2ldKSYmT2JqZWN0LmtleXMoZVtpXSkubGVuZ3RoPjAmJmEodFtpXSxlW2ldKX0pKX1pLmQoZSx7cHQ6ZnVuY3Rpb24oKXtyZXR1cm4gS30sb006ZnVuY3Rpb24oKXtyZXR1cm4gWn0sTFc6ZnVuY3Rpb24oKXtyZXR1cm4gcX0sWlA6ZnVuY3Rpb24oKXtyZXR1cm4gVX19KTtjb25zdCBuPXtib2R5Ont9LGFkZEV2ZW50TGlzdGVuZXIoKXt9LHJlbW92ZUV2ZW50TGlzdGVuZXIoKXt9LGFjdGl2ZUVsZW1lbnQ6e2JsdXIoKXt9LG5vZGVOYW1lOiIifSxxdWVyeVNlbGVjdG9yOigpPT5udWxsLHF1ZXJ5U2VsZWN0b3JBbGw6KCk9PltdLGdldEVsZW1lbnRCeUlkOigpPT5udWxsLGNyZWF0ZUV2ZW50OigpPT4oe2luaXRFdmVudCgpe319KSxjcmVhdGVFbGVtZW50OigpPT4oe2NoaWxkcmVuOltdLGNoaWxkTm9kZXM6W10sc3R5bGU6e30sc2V0QXR0cmlidXRlKCl7fSxnZXRFbGVtZW50c0J5VGFnTmFtZTooKT0+W119KSxjcmVhdGVFbGVtZW50TlM6KCk9Pih7fSksaW1wb3J0Tm9kZTooKT0+bnVsbCxsb2NhdGlvbjp7aGFzaDoiIixob3N0OiIiLGhvc3RuYW1lOiIiLGhyZWY6IiIsb3JpZ2luOiIiLHBhdGhuYW1lOiIiLHByb3RvY29sOiIiLHNlYXJjaDoiIn19O2Z1bmN0aW9uIHIoKXtjb25zdCB0PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6e307cmV0dXJuIGEodCxuKSx0fWNvbnN0IG89e2RvY3VtZW50Om4sbmF2aWdhdG9yOnt1c2VyQWdlbnQ6IiJ9LGxvY2F0aW9uOntoYXNoOiIiLGhvc3Q6IiIsaG9zdG5hbWU6IiIsaHJlZjoiIixvcmlnaW46IiIscGF0aG5hbWU6IiIscHJvdG9jb2w6IiIsc2VhcmNoOiIifSxoaXN0b3J5OntyZXBsYWNlU3RhdGUoKXt9LHB1c2hTdGF0ZSgpe30sZ28oKXt9LGJhY2soKXt9fSxDdXN0b21FdmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxhZGRFdmVudExpc3RlbmVyKCl7fSxyZW1vdmVFdmVudExpc3RlbmVyKCl7fSxnZXRDb21wdXRlZFN0eWxlOigpPT4oe2dldFByb3BlcnR5VmFsdWU6KCk9PiIifSksSW1hZ2UoKXt9LERhdGUoKXt9LHNjcmVlbjp7fSxzZXRUaW1lb3V0KCl7fSxjbGVhclRpbWVvdXQoKXt9LG1hdGNoTWVkaWE6KCk9Pih7fSkscmVxdWVzdEFuaW1hdGlvbkZyYW1lOnQ9PiJ1bmRlZmluZWQiPT10eXBlb2Ygc2V0VGltZW91dD8odCgpLG51bGwpOnNldFRpbWVvdXQodCwwKSxjYW5jZWxBbmltYXRpb25GcmFtZSh0KXsidW5kZWZpbmVkIiE9dHlwZW9mIHNldFRpbWVvdXQmJmNsZWFyVGltZW91dCh0KX19O2Z1bmN0aW9uIGwoKXtjb25zdCB0PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fTtyZXR1cm4gYSh0LG8pLHR9Y2xhc3MgYyBleHRlbmRzIEFycmF5e2NvbnN0cnVjdG9yKHQpeyJudW1iZXIiPT10eXBlb2YgdD9zdXBlcih0KTooc3VwZXIoLi4udHx8W10pLGZ1bmN0aW9uKHQpe2NvbnN0IGU9dC5fX3Byb3RvX187T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fcHJvdG9fXyIse2dldDooKT0+ZSxzZXQodCl7ZS5fX3Byb3RvX189dH19KX0odGhpcykpfX1mdW5jdGlvbiBoKHQ9W10pe2NvbnN0IGU9W107cmV0dXJuIHQuZm9yRWFjaCgodD0+e0FycmF5LmlzQXJyYXkodCk/ZS5wdXNoKC4uLmgodCkpOmUucHVzaCh0KX0pKSxlfWZ1bmN0aW9uIGQodCxlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKHQsZSl9ZnVuY3Rpb24gdSh0LGUpe2NvbnN0IGk9bCgpLHM9cigpO2xldCBhPVtdO2lmKCFlJiZ0IGluc3RhbmNlb2YgYylyZXR1cm4gdDtpZighdClyZXR1cm4gbmV3IGMoYSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBpPXQudHJpbSgpO2lmKGkuaW5kZXhPZigiPCIpPj0wJiZpLmluZGV4T2YoIj4iKT49MCl7bGV0IHQ9ImRpdiI7MD09PWkuaW5kZXhPZigiPGxpIikmJih0PSJ1bCIpLDA9PT1pLmluZGV4T2YoIjx0ciIpJiYodD0idGJvZHkiKSwwIT09aS5pbmRleE9mKCI8dGQiKSYmMCE9PWkuaW5kZXhPZigiPHRoIil8fCh0PSJ0ciIpLDA9PT1pLmluZGV4T2YoIjx0Ym9keSIpJiYodD0idGFibGUiKSwwPT09aS5pbmRleE9mKCI8b3B0aW9uIikmJih0PSJzZWxlY3QiKTtjb25zdCBlPXMuY3JlYXRlRWxlbWVudCh0KTtlLmlubmVySFRNTD1pO2ZvcihsZXQgdD0wO3Q8ZS5jaGlsZE5vZGVzLmxlbmd0aDt0Kz0xKWEucHVzaChlLmNoaWxkTm9kZXNbdF0pfWVsc2UgYT1mdW5jdGlvbih0LGUpe2lmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm5bdF07Y29uc3QgaT1bXSxzPWUucXVlcnlTZWxlY3RvckFsbCh0KTtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrPTEpaS5wdXNoKHNbdF0pO3JldHVybiBpfSh0LnRyaW0oKSxlfHxzKX1lbHNlIGlmKHQubm9kZVR5cGV8fHQ9PT1pfHx0PT09cylhLnB1c2godCk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtpZih0IGluc3RhbmNlb2YgYylyZXR1cm4gdDthPXR9cmV0dXJuIG5ldyBjKGZ1bmN0aW9uKHQpe2NvbnN0IGU9W107Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKz0xKS0xPT09ZS5pbmRleE9mKHRbaV0pJiZlLnB1c2godFtpXSk7cmV0dXJuIGV9KGEpKX11LmZuPWMucHJvdG90eXBlO2NvbnN0IHA9InJlc2l6ZSBzY3JvbGwiLnNwbGl0KCIgIik7ZnVuY3Rpb24gZyh0KXtyZXR1cm4gZnVuY3Rpb24oLi4uZSl7aWYodm9pZCAwPT09ZVswXSl7Zm9yKGxldCBlPTA7ZTx0aGlzLmxlbmd0aDtlKz0xKXAuaW5kZXhPZih0KTwwJiYodCBpbiB0aGlzW2VdP3RoaXNbZV1bdF0oKTp1KHRoaXNbZV0pLnRyaWdnZXIodCkpO3JldHVybiB0aGlzfXJldHVybiB0aGlzLm9uKHQsLi4uZSl9fWcoImNsaWNrIiksZygiYmx1ciIpLGcoImZvY3VzIiksZygiZm9jdXNpbiIpLGcoImZvY3Vzb3V0IiksZygia2V5dXAiKSxnKCJrZXlkb3duIiksZygia2V5cHJlc3MiKSxnKCJzdWJtaXQiKSxnKCJjaGFuZ2UiKSxnKCJtb3VzZWRvd24iKSxnKCJtb3VzZW1vdmUiKSxnKCJtb3VzZXVwIiksZygibW91c2VlbnRlciIpLGcoIm1vdXNlbGVhdmUiKSxnKCJtb3VzZW91dCIpLGcoIm1vdXNlb3ZlciIpLGcoInRvdWNoc3RhcnQiKSxnKCJ0b3VjaGVuZCIpLGcoInRvdWNobW92ZSIpLGcoInJlc2l6ZSIpLGcoInNjcm9sbCIpO2NvbnN0IGY9e2FkZENsYXNzOmZ1bmN0aW9uKC4uLnQpe2NvbnN0IGU9aCh0Lm1hcCgodD0+dC5zcGxpdCgiICIpKSkpO3JldHVybiB0aGlzLmZvckVhY2goKHQ9Pnt0LmNsYXNzTGlzdC5hZGQoLi4uZSl9KSksdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oLi4udCl7Y29uc3QgZT1oKHQubWFwKCh0PT50LnNwbGl0KCIgIikpKSk7cmV0dXJuIHRoaXMuZm9yRWFjaCgodD0+e3QuY2xhc3NMaXN0LnJlbW92ZSguLi5lKX0pKSx0aGlzfSxoYXNDbGFzczpmdW5jdGlvbiguLi50KXtjb25zdCBlPWgodC5tYXAoKHQ9PnQuc3BsaXQoIiAiKSkpKTtyZXR1cm4gZCh0aGlzLCh0PT5lLmZpbHRlcigoZT0+dC5jbGFzc0xpc3QuY29udGFpbnMoZSkpKS5sZW5ndGg+MCkpLmxlbmd0aD4wfSx0b2dnbGVDbGFzczpmdW5jdGlvbiguLi50KXtjb25zdCBlPWgodC5tYXAoKHQ9PnQuc3BsaXQoIiAiKSkpKTt0aGlzLmZvckVhY2goKHQ9PntlLmZvckVhY2goKGU9Pnt0LmNsYXNzTGlzdC50b2dnbGUoZSl9KSl9KSl9LGF0dHI6ZnVuY3Rpb24odCxlKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0aGlzWzBdP3RoaXNbMF0uZ2V0QXR0cmlidXRlKHQpOnZvaWQgMDtmb3IobGV0IGk9MDtpPHRoaXMubGVuZ3RoO2krPTEpaWYoMj09PWFyZ3VtZW50cy5sZW5ndGgpdGhpc1tpXS5zZXRBdHRyaWJ1dGUodCxlKTtlbHNlIGZvcihjb25zdCBlIGluIHQpdGhpc1tpXVtlXT10W2VdLHRoaXNbaV0uc2V0QXR0cmlidXRlKGUsdFtlXSk7cmV0dXJuIHRoaXN9LHJlbW92ZUF0dHI6ZnVuY3Rpb24odCl7Zm9yKGxldCBlPTA7ZTx0aGlzLmxlbmd0aDtlKz0xKXRoaXNbZV0ucmVtb3ZlQXR0cmlidXRlKHQpO3JldHVybiB0aGlzfSx0cmFuc2Zvcm06ZnVuY3Rpb24odCl7Zm9yKGxldCBlPTA7ZTx0aGlzLmxlbmd0aDtlKz0xKXRoaXNbZV0uc3R5bGUudHJhbnNmb3JtPXQ7cmV0dXJuIHRoaXN9LHRyYW5zaXRpb246ZnVuY3Rpb24odCl7Zm9yKGxldCBlPTA7ZTx0aGlzLmxlbmd0aDtlKz0xKXRoaXNbZV0uc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPSJzdHJpbmciIT10eXBlb2YgdD9gJHt0fW1zYDp0O3JldHVybiB0aGlzfSxvbjpmdW5jdGlvbiguLi50KXtsZXRbZSxpLHMsYV09dDtmdW5jdGlvbiBuKHQpe2NvbnN0IGU9dC50YXJnZXQ7aWYoIWUpcmV0dXJuO2NvbnN0IGE9dC50YXJnZXQuZG9tN0V2ZW50RGF0YXx8W107aWYoYS5pbmRleE9mKHQpPDAmJmEudW5zaGlmdCh0KSx1KGUpLmlzKGkpKXMuYXBwbHkoZSxhKTtlbHNle2NvbnN0IHQ9dShlKS5wYXJlbnRzKCk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0xKXUodFtlXSkuaXMoaSkmJnMuYXBwbHkodFtlXSxhKX19ZnVuY3Rpb24gcih0KXtjb25zdCBlPXQmJnQudGFyZ2V0JiZ0LnRhcmdldC5kb203RXZlbnREYXRhfHxbXTtlLmluZGV4T2YodCk8MCYmZS51bnNoaWZ0KHQpLHMuYXBwbHkodGhpcyxlKX0iZnVuY3Rpb24iPT10eXBlb2YgdFsxXSYmKFtlLHMsYV09dCxpPXZvaWQgMCksYXx8KGE9ITEpO2NvbnN0IG89ZS5zcGxpdCgiICIpO2xldCBsO2ZvcihsZXQgdD0wO3Q8dGhpcy5sZW5ndGg7dCs9MSl7Y29uc3QgZT10aGlzW3RdO2lmKGkpZm9yKGw9MDtsPG8ubGVuZ3RoO2wrPTEpe2NvbnN0IHQ9b1tsXTtlLmRvbTdMaXZlTGlzdGVuZXJzfHwoZS5kb203TGl2ZUxpc3RlbmVycz17fSksZS5kb203TGl2ZUxpc3RlbmVyc1t0XXx8KGUuZG9tN0xpdmVMaXN0ZW5lcnNbdF09W10pLGUuZG9tN0xpdmVMaXN0ZW5lcnNbdF0ucHVzaCh7bGlzdGVuZXI6cyxwcm94eUxpc3RlbmVyOm59KSxlLmFkZEV2ZW50TGlzdGVuZXIodCxuLGEpfWVsc2UgZm9yKGw9MDtsPG8ubGVuZ3RoO2wrPTEpe2NvbnN0IHQ9b1tsXTtlLmRvbTdMaXN0ZW5lcnN8fChlLmRvbTdMaXN0ZW5lcnM9e30pLGUuZG9tN0xpc3RlbmVyc1t0XXx8KGUuZG9tN0xpc3RlbmVyc1t0XT1bXSksZS5kb203TGlzdGVuZXJzW3RdLnB1c2goe2xpc3RlbmVyOnMscHJveHlMaXN0ZW5lcjpyfSksZS5hZGRFdmVudExpc3RlbmVyKHQscixhKX19cmV0dXJuIHRoaXN9LG9mZjpmdW5jdGlvbiguLi50KXtsZXRbZSxpLHMsYV09dDsiZnVuY3Rpb24iPT10eXBlb2YgdFsxXSYmKFtlLHMsYV09dCxpPXZvaWQgMCksYXx8KGE9ITEpO2NvbnN0IG49ZS5zcGxpdCgiICIpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCs9MSl7Y29uc3QgZT1uW3RdO2ZvcihsZXQgdD0wO3Q8dGhpcy5sZW5ndGg7dCs9MSl7Y29uc3Qgbj10aGlzW3RdO2xldCByO2lmKCFpJiZuLmRvbTdMaXN0ZW5lcnM/cj1uLmRvbTdMaXN0ZW5lcnNbZV06aSYmbi5kb203TGl2ZUxpc3RlbmVycyYmKHI9bi5kb203TGl2ZUxpc3RlbmVyc1tlXSksciYmci5sZW5ndGgpZm9yKGxldCB0PXIubGVuZ3RoLTE7dD49MDt0LT0xKXtjb25zdCBpPXJbdF07cyYmaS5saXN0ZW5lcj09PXN8fHMmJmkubGlzdGVuZXImJmkubGlzdGVuZXIuZG9tN3Byb3h5JiZpLmxpc3RlbmVyLmRvbTdwcm94eT09PXM/KG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLGkucHJveHlMaXN0ZW5lcixhKSxyLnNwbGljZSh0LDEpKTpzfHwobi5yZW1vdmVFdmVudExpc3RlbmVyKGUsaS5wcm94eUxpc3RlbmVyLGEpLHIuc3BsaWNlKHQsMSkpfX19cmV0dXJuIHRoaXN9LHRyaWdnZXI6ZnVuY3Rpb24oLi4udCl7Y29uc3QgZT1sKCksaT10WzBdLnNwbGl0KCIgIikscz10WzFdO2ZvcihsZXQgYT0wO2E8aS5sZW5ndGg7YSs9MSl7Y29uc3Qgbj1pW2FdO2ZvcihsZXQgaT0wO2k8dGhpcy5sZW5ndGg7aSs9MSl7Y29uc3QgYT10aGlzW2ldO2lmKGUuQ3VzdG9tRXZlbnQpe2NvbnN0IGk9bmV3IGUuQ3VzdG9tRXZlbnQobix7ZGV0YWlsOnMsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSk7YS5kb203RXZlbnREYXRhPXQuZmlsdGVyKCgodCxlKT0+ZT4wKSksYS5kaXNwYXRjaEV2ZW50KGkpLGEuZG9tN0V2ZW50RGF0YT1bXSxkZWxldGUgYS5kb203RXZlbnREYXRhfX19cmV0dXJuIHRoaXN9LHRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzO3JldHVybiB0JiZlLm9uKCJ0cmFuc2l0aW9uZW5kIiwoZnVuY3Rpb24gaShzKXtzLnRhcmdldD09PXRoaXMmJih0LmNhbGwodGhpcyxzKSxlLm9mZigidHJhbnNpdGlvbmVuZCIsaSkpfSkpLHRoaXN9LG91dGVyV2lkdGg6ZnVuY3Rpb24odCl7aWYodGhpcy5sZW5ndGg+MCl7aWYodCl7Y29uc3QgdD10aGlzLnN0eWxlcygpO3JldHVybiB0aGlzWzBdLm9mZnNldFdpZHRoK3BhcnNlRmxvYXQodC5nZXRQcm9wZXJ0eVZhbHVlKCJtYXJnaW4tcmlnaHQiKSkrcGFyc2VGbG9hdCh0LmdldFByb3BlcnR5VmFsdWUoIm1hcmdpbi1sZWZ0IikpfXJldHVybiB0aGlzWzBdLm9mZnNldFdpZHRofXJldHVybiBudWxsfSxvdXRlckhlaWdodDpmdW5jdGlvbih0KXtpZih0aGlzLmxlbmd0aD4wKXtpZih0KXtjb25zdCB0PXRoaXMuc3R5bGVzKCk7cmV0dXJuIHRoaXNbMF0ub2Zmc2V0SGVpZ2h0K3BhcnNlRmxvYXQodC5nZXRQcm9wZXJ0eVZhbHVlKCJtYXJnaW4tdG9wIikpK3BhcnNlRmxvYXQodC5nZXRQcm9wZXJ0eVZhbHVlKCJtYXJnaW4tYm90dG9tIikpfXJldHVybiB0aGlzWzBdLm9mZnNldEhlaWdodH1yZXR1cm4gbnVsbH0sc3R5bGVzOmZ1bmN0aW9uKCl7Y29uc3QgdD1sKCk7cmV0dXJuIHRoaXNbMF0/dC5nZXRDb21wdXRlZFN0eWxlKHRoaXNbMF0sbnVsbCk6e319LG9mZnNldDpmdW5jdGlvbigpe2lmKHRoaXMubGVuZ3RoPjApe2NvbnN0IHQ9bCgpLGU9cigpLGk9dGhpc1swXSxzPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1lLmJvZHksbj1pLmNsaWVudFRvcHx8YS5jbGllbnRUb3B8fDAsbz1pLmNsaWVudExlZnR8fGEuY2xpZW50TGVmdHx8MCxjPWk9PT10P3Quc2Nyb2xsWTppLnNjcm9sbFRvcCxoPWk9PT10P3Quc2Nyb2xsWDppLnNjcm9sbExlZnQ7cmV0dXJue3RvcDpzLnRvcCtjLW4sbGVmdDpzLmxlZnQraC1vfX1yZXR1cm4gbnVsbH0sY3NzOmZ1bmN0aW9uKHQsZSl7Y29uc3QgaT1sKCk7bGV0IHM7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl7Zm9yKHM9MDtzPHRoaXMubGVuZ3RoO3MrPTEpZm9yKGNvbnN0IGUgaW4gdCl0aGlzW3NdLnN0eWxlW2VdPXRbZV07cmV0dXJuIHRoaXN9aWYodGhpc1swXSlyZXR1cm4gaS5nZXRDb21wdXRlZFN0eWxlKHRoaXNbMF0sbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSh0KX1pZigyPT09YXJndW1lbnRzLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiB0KXtmb3Iocz0wO3M8dGhpcy5sZW5ndGg7cys9MSl0aGlzW3NdLnN0eWxlW3RdPWU7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXN9LGVhY2g6ZnVuY3Rpb24odCl7cmV0dXJuIHQ/KHRoaXMuZm9yRWFjaCgoKGUsaSk9Pnt0LmFwcGx5KGUsW2UsaV0pfSkpLHRoaXMpOnRoaXN9LGh0bWw6ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dClyZXR1cm4gdGhpc1swXT90aGlzWzBdLmlubmVySFRNTDpudWxsO2ZvcihsZXQgZT0wO2U8dGhpcy5sZW5ndGg7ZSs9MSl0aGlzW2VdLmlubmVySFRNTD10O3JldHVybiB0aGlzfSx0ZXh0OmZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpcmV0dXJuIHRoaXNbMF0/dGhpc1swXS50ZXh0Q29udGVudC50cmltKCk6bnVsbDtmb3IobGV0IGU9MDtlPHRoaXMubGVuZ3RoO2UrPTEpdGhpc1tlXS50ZXh0Q29udGVudD10O3JldHVybiB0aGlzfSxpczpmdW5jdGlvbih0KXtjb25zdCBlPWwoKSxpPXIoKSxzPXRoaXNbMF07bGV0IGEsbjtpZighc3x8dm9pZCAwPT09dClyZXR1cm4hMTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKHMubWF0Y2hlcylyZXR1cm4gcy5tYXRjaGVzKHQpO2lmKHMud2Via2l0TWF0Y2hlc1NlbGVjdG9yKXJldHVybiBzLndlYmtpdE1hdGNoZXNTZWxlY3Rvcih0KTtpZihzLm1zTWF0Y2hlc1NlbGVjdG9yKXJldHVybiBzLm1zTWF0Y2hlc1NlbGVjdG9yKHQpO2ZvcihhPXUodCksbj0wO248YS5sZW5ndGg7bis9MSlpZihhW25dPT09cylyZXR1cm4hMDtyZXR1cm4hMX1pZih0PT09aSlyZXR1cm4gcz09PWk7aWYodD09PWUpcmV0dXJuIHM9PT1lO2lmKHQubm9kZVR5cGV8fHQgaW5zdGFuY2VvZiBjKXtmb3IoYT10Lm5vZGVUeXBlP1t0XTp0LG49MDtuPGEubGVuZ3RoO24rPTEpaWYoYVtuXT09PXMpcmV0dXJuITA7cmV0dXJuITF9cmV0dXJuITF9LGluZGV4OmZ1bmN0aW9uKCl7bGV0IHQsZT10aGlzWzBdO2lmKGUpe2Zvcih0PTA7bnVsbCE9PShlPWUucHJldmlvdXNTaWJsaW5nKTspMT09PWUubm9kZVR5cGUmJih0Kz0xKTtyZXR1cm4gdH19LGVxOmZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpcmV0dXJuIHRoaXM7Y29uc3QgZT10aGlzLmxlbmd0aDtpZih0PmUtMSlyZXR1cm4gdShbXSk7aWYodDwwKXtjb25zdCBpPWUrdDtyZXR1cm4gdShpPDA/W106W3RoaXNbaV1dKX1yZXR1cm4gdShbdGhpc1t0XV0pfSxhcHBlbmQ6ZnVuY3Rpb24oLi4udCl7bGV0IGU7Y29uc3QgaT1yKCk7Zm9yKGxldCBzPTA7czx0Lmxlbmd0aDtzKz0xKXtlPXRbc107Zm9yKGxldCB0PTA7dDx0aGlzLmxlbmd0aDt0Kz0xKWlmKCJzdHJpbmciPT10eXBlb2YgZSl7Y29uc3Qgcz1pLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2ZvcihzLmlubmVySFRNTD1lO3MuZmlyc3RDaGlsZDspdGhpc1t0XS5hcHBlbmRDaGlsZChzLmZpcnN0Q2hpbGQpfWVsc2UgaWYoZSBpbnN0YW5jZW9mIGMpZm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKz0xKXRoaXNbdF0uYXBwZW5kQ2hpbGQoZVtpXSk7ZWxzZSB0aGlzW3RdLmFwcGVuZENoaWxkKGUpfXJldHVybiB0aGlzfSxwcmVwZW5kOmZ1bmN0aW9uKHQpe2NvbnN0IGU9cigpO2xldCBpLHM7Zm9yKGk9MDtpPHRoaXMubGVuZ3RoO2krPTEpaWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBhPWUuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zm9yKGEuaW5uZXJIVE1MPXQscz1hLmNoaWxkTm9kZXMubGVuZ3RoLTE7cz49MDtzLT0xKXRoaXNbaV0uaW5zZXJ0QmVmb3JlKGEuY2hpbGROb2Rlc1tzXSx0aGlzW2ldLmNoaWxkTm9kZXNbMF0pfWVsc2UgaWYodCBpbnN0YW5jZW9mIGMpZm9yKHM9MDtzPHQubGVuZ3RoO3MrPTEpdGhpc1tpXS5pbnNlcnRCZWZvcmUodFtzXSx0aGlzW2ldLmNoaWxkTm9kZXNbMF0pO2Vsc2UgdGhpc1tpXS5pbnNlcnRCZWZvcmUodCx0aGlzW2ldLmNoaWxkTm9kZXNbMF0pO3JldHVybiB0aGlzfSxuZXh0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD4wP3Q/dGhpc1swXS5uZXh0RWxlbWVudFNpYmxpbmcmJnUodGhpc1swXS5uZXh0RWxlbWVudFNpYmxpbmcpLmlzKHQpP3UoW3RoaXNbMF0ubmV4dEVsZW1lbnRTaWJsaW5nXSk6dShbXSk6dGhpc1swXS5uZXh0RWxlbWVudFNpYmxpbmc/dShbdGhpc1swXS5uZXh0RWxlbWVudFNpYmxpbmddKTp1KFtdKTp1KFtdKX0sbmV4dEFsbDpmdW5jdGlvbih0KXtjb25zdCBlPVtdO2xldCBpPXRoaXNbMF07aWYoIWkpcmV0dXJuIHUoW10pO2Zvcig7aS5uZXh0RWxlbWVudFNpYmxpbmc7KXtjb25zdCBzPWkubmV4dEVsZW1lbnRTaWJsaW5nO3Q/dShzKS5pcyh0KSYmZS5wdXNoKHMpOmUucHVzaChzKSxpPXN9cmV0dXJuIHUoZSl9LHByZXY6ZnVuY3Rpb24odCl7aWYodGhpcy5sZW5ndGg+MCl7Y29uc3QgZT10aGlzWzBdO3JldHVybiB0P2UucHJldmlvdXNFbGVtZW50U2libGluZyYmdShlLnByZXZpb3VzRWxlbWVudFNpYmxpbmcpLmlzKHQpP3UoW2UucHJldmlvdXNFbGVtZW50U2libGluZ10pOnUoW10pOmUucHJldmlvdXNFbGVtZW50U2libGluZz91KFtlLnByZXZpb3VzRWxlbWVudFNpYmxpbmddKTp1KFtdKX1yZXR1cm4gdShbXSl9LHByZXZBbGw6ZnVuY3Rpb24odCl7Y29uc3QgZT1bXTtsZXQgaT10aGlzWzBdO2lmKCFpKXJldHVybiB1KFtdKTtmb3IoO2kucHJldmlvdXNFbGVtZW50U2libGluZzspe2NvbnN0IHM9aS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO3Q/dShzKS5pcyh0KSYmZS5wdXNoKHMpOmUucHVzaChzKSxpPXN9cmV0dXJuIHUoZSl9LHBhcmVudDpmdW5jdGlvbih0KXtjb25zdCBlPVtdO2ZvcihsZXQgaT0wO2k8dGhpcy5sZW5ndGg7aSs9MSludWxsIT09dGhpc1tpXS5wYXJlbnROb2RlJiYodD91KHRoaXNbaV0ucGFyZW50Tm9kZSkuaXModCkmJmUucHVzaCh0aGlzW2ldLnBhcmVudE5vZGUpOmUucHVzaCh0aGlzW2ldLnBhcmVudE5vZGUpKTtyZXR1cm4gdShlKX0scGFyZW50czpmdW5jdGlvbih0KXtjb25zdCBlPVtdO2ZvcihsZXQgaT0wO2k8dGhpcy5sZW5ndGg7aSs9MSl7bGV0IHM9dGhpc1tpXS5wYXJlbnROb2RlO2Zvcig7czspdD91KHMpLmlzKHQpJiZlLnB1c2gocyk6ZS5wdXNoKHMpLHM9cy5wYXJlbnROb2RlfXJldHVybiB1KGUpfSxjbG9zZXN0OmZ1bmN0aW9uKHQpe2xldCBlPXRoaXM7cmV0dXJuIHZvaWQgMD09PXQ/dShbXSk6KGUuaXModCl8fChlPWUucGFyZW50cyh0KS5lcSgwKSksZSl9LGZpbmQ6ZnVuY3Rpb24odCl7Y29uc3QgZT1bXTtmb3IobGV0IGk9MDtpPHRoaXMubGVuZ3RoO2krPTEpe2NvbnN0IHM9dGhpc1tpXS5xdWVyeVNlbGVjdG9yQWxsKHQpO2ZvcihsZXQgdD0wO3Q8cy5sZW5ndGg7dCs9MSllLnB1c2goc1t0XSl9cmV0dXJuIHUoZSl9LGNoaWxkcmVuOmZ1bmN0aW9uKHQpe2NvbnN0IGU9W107Zm9yKGxldCBpPTA7aTx0aGlzLmxlbmd0aDtpKz0xKXtjb25zdCBzPXRoaXNbaV0uY2hpbGRyZW47Zm9yKGxldCBpPTA7aTxzLmxlbmd0aDtpKz0xKXQmJiF1KHNbaV0pLmlzKHQpfHxlLnB1c2goc1tpXSl9cmV0dXJuIHUoZSl9LGZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdShkKHRoaXMsdCkpfSxyZW1vdmU6ZnVuY3Rpb24oKXtmb3IobGV0IHQ9MDt0PHRoaXMubGVuZ3RoO3QrPTEpdGhpc1t0XS5wYXJlbnROb2RlJiZ0aGlzW3RdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpc1t0XSk7cmV0dXJuIHRoaXN9fTtPYmplY3Qua2V5cyhmKS5mb3JFYWNoKCh0PT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHUuZm4sdCx7dmFsdWU6Zlt0XSx3cml0YWJsZTohMH0pfSkpO3ZhciBtPXU7ZnVuY3Rpb24gdih0LGU9MCl7cmV0dXJuIHNldFRpbWVvdXQodCxlKX1mdW5jdGlvbiB4KCl7cmV0dXJuIERhdGUubm93KCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10JiZ0LmNvbnN0cnVjdG9yJiYiT2JqZWN0Ij09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKX1mdW5jdGlvbiB5KC4uLnQpe2NvbnN0IGU9T2JqZWN0KHRbMF0pLGk9WyJfX3Byb3RvX18iLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSJdO2ZvcihsZXQgYT0xO2E8dC5sZW5ndGg7YSs9MSl7Y29uc3Qgbj10W2FdO2lmKG51bGwhPW4mJihzPW4sISgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkhUTUxFbGVtZW50P3MgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDpzJiYoMT09PXMubm9kZVR5cGV8fDExPT09cy5ub2RlVHlwZSkpKSl7Y29uc3QgdD1PYmplY3Qua2V5cyhPYmplY3QobikpLmZpbHRlcigodD0+aS5pbmRleE9mKHQpPDApKTtmb3IobGV0IGk9MCxzPXQubGVuZ3RoO2k8cztpKz0xKXtjb25zdCBzPXRbaV0sYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scyk7dm9pZCAwIT09YSYmYS5lbnVtZXJhYmxlJiYoYihlW3NdKSYmYihuW3NdKT9uW3NdLl9fc3dpcGVyX18/ZVtzXT1uW3NdOnkoZVtzXSxuW3NdKTohYihlW3NdKSYmYihuW3NdKT8oZVtzXT17fSxuW3NdLl9fc3dpcGVyX18/ZVtzXT1uW3NdOnkoZVtzXSxuW3NdKSk6ZVtzXT1uW3NdKX19fXZhciBzO3JldHVybiBlfWZ1bmN0aW9uIHcodCxlLGkpe3Quc3R5bGUuc2V0UHJvcGVydHkoZSxpKX1mdW5jdGlvbiBrKHtzd2lwZXI6dCx0YXJnZXRQb3NpdGlvbjplLHNpZGU6aX0pe2NvbnN0IHM9bCgpLGE9LXQudHJhbnNsYXRlO2xldCBuLHI9bnVsbDtjb25zdCBvPXQucGFyYW1zLnNwZWVkO3Qud3JhcHBlckVsLnN0eWxlLnNjcm9sbFNuYXBUeXBlPSJub25lIixzLmNhbmNlbEFuaW1hdGlvbkZyYW1lKHQuY3NzTW9kZUZyYW1lSUQpO2NvbnN0IGM9ZT5hPyJuZXh0IjoicHJldiIsaD0odCxlKT0+Im5leHQiPT09YyYmdD49ZXx8InByZXYiPT09YyYmdDw9ZSxkPSgpPT57bj0obmV3IERhdGUpLmdldFRpbWUoKSxudWxsPT09ciYmKHI9bik7Y29uc3QgbD1NYXRoLm1heChNYXRoLm1pbigobi1yKS9vLDEpLDApLGM9LjUtTWF0aC5jb3MobCpNYXRoLlBJKS8yO2xldCB1PWErYyooZS1hKTtpZihoKHUsZSkmJih1PWUpLHQud3JhcHBlckVsLnNjcm9sbFRvKHtbaV06dX0pLGgodSxlKSlyZXR1cm4gdC53cmFwcGVyRWwuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsdC53cmFwcGVyRWwuc3R5bGUuc2Nyb2xsU25hcFR5cGU9IiIsc2V0VGltZW91dCgoKCk9Pnt0LndyYXBwZXJFbC5zdHlsZS5vdmVyZmxvdz0iIix0LndyYXBwZXJFbC5zY3JvbGxUbyh7W2ldOnV9KX0pKSx2b2lkIHMuY2FuY2VsQW5pbWF0aW9uRnJhbWUodC5jc3NNb2RlRnJhbWVJRCk7dC5jc3NNb2RlRnJhbWVJRD1zLnJlcXVlc3RBbmltYXRpb25GcmFtZShkKX07ZCgpfWxldCBTLEMsQTtmdW5jdGlvbiBFKCl7cmV0dXJuIFN8fChTPWZ1bmN0aW9uKCl7Y29uc3QgdD1sKCksZT1yKCk7cmV0dXJue3Ntb290aFNjcm9sbDplLmRvY3VtZW50RWxlbWVudCYmInNjcm9sbEJlaGF2aW9yImluIGUuZG9jdW1lbnRFbGVtZW50LnN0eWxlLHRvdWNoOiEhKCJvbnRvdWNoc3RhcnQiaW4gdHx8dC5Eb2N1bWVudFRvdWNoJiZlIGluc3RhbmNlb2YgdC5Eb2N1bWVudFRvdWNoKSxwYXNzaXZlTGlzdGVuZXI6ZnVuY3Rpb24oKXtsZXQgZT0hMTt0cnl7Y29uc3QgaT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQoKXtlPSEwfX0pO3QuYWRkRXZlbnRMaXN0ZW5lcigidGVzdFBhc3NpdmVMaXN0ZW5lciIsbnVsbCxpKX1jYXRjaCh0KXt9cmV0dXJuIGV9KCksZ2VzdHVyZXM6Im9uZ2VzdHVyZXN0YXJ0ImluIHR9fSgpKSxTfXZhciBUPXtvbih0LGUsaSl7Y29uc3Qgcz10aGlzO2lmKCFzLmV2ZW50c0xpc3RlbmVyc3x8cy5kZXN0cm95ZWQpcmV0dXJuIHM7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIHM7Y29uc3QgYT1pPyJ1bnNoaWZ0IjoicHVzaCI7cmV0dXJuIHQuc3BsaXQoIiAiKS5mb3JFYWNoKCh0PT57cy5ldmVudHNMaXN0ZW5lcnNbdF18fChzLmV2ZW50c0xpc3RlbmVyc1t0XT1bXSkscy5ldmVudHNMaXN0ZW5lcnNbdF1bYV0oZSl9KSksc30sb25jZSh0LGUsaSl7Y29uc3Qgcz10aGlzO2lmKCFzLmV2ZW50c0xpc3RlbmVyc3x8cy5kZXN0cm95ZWQpcmV0dXJuIHM7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIHM7ZnVuY3Rpb24gYSguLi5pKXtzLm9mZih0LGEpLGEuX19lbWl0dGVyUHJveHkmJmRlbGV0ZSBhLl9fZW1pdHRlclByb3h5LGUuYXBwbHkocyxpKX1yZXR1cm4gYS5fX2VtaXR0ZXJQcm94eT1lLHMub24odCxhLGkpfSxvbkFueSh0LGUpe2NvbnN0IGk9dGhpcztpZighaS5ldmVudHNMaXN0ZW5lcnN8fGkuZGVzdHJveWVkKXJldHVybiBpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXJldHVybiBpO2NvbnN0IHM9ZT8idW5zaGlmdCI6InB1c2giO3JldHVybiBpLmV2ZW50c0FueUxpc3RlbmVycy5pbmRleE9mKHQpPDAmJmkuZXZlbnRzQW55TGlzdGVuZXJzW3NdKHQpLGl9LG9mZkFueSh0KXtjb25zdCBlPXRoaXM7aWYoIWUuZXZlbnRzTGlzdGVuZXJzfHxlLmRlc3Ryb3llZClyZXR1cm4gZTtpZighZS5ldmVudHNBbnlMaXN0ZW5lcnMpcmV0dXJuIGU7Y29uc3QgaT1lLmV2ZW50c0FueUxpc3RlbmVycy5pbmRleE9mKHQpO3JldHVybiBpPj0wJiZlLmV2ZW50c0FueUxpc3RlbmVycy5zcGxpY2UoaSwxKSxlfSxvZmYodCxlKXtjb25zdCBpPXRoaXM7cmV0dXJuIWkuZXZlbnRzTGlzdGVuZXJzfHxpLmRlc3Ryb3llZD9pOmkuZXZlbnRzTGlzdGVuZXJzPyh0LnNwbGl0KCIgIikuZm9yRWFjaCgodD0+e3ZvaWQgMD09PWU/aS5ldmVudHNMaXN0ZW5lcnNbdF09W106aS5ldmVudHNMaXN0ZW5lcnNbdF0mJmkuZXZlbnRzTGlzdGVuZXJzW3RdLmZvckVhY2goKChzLGEpPT57KHM9PT1lfHxzLl9fZW1pdHRlclByb3h5JiZzLl9fZW1pdHRlclByb3h5PT09ZSkmJmkuZXZlbnRzTGlzdGVuZXJzW3RdLnNwbGljZShhLDEpfSkpfSkpLGkpOml9LGVtaXQoLi4udCl7Y29uc3QgZT10aGlzO2lmKCFlLmV2ZW50c0xpc3RlbmVyc3x8ZS5kZXN0cm95ZWQpcmV0dXJuIGU7aWYoIWUuZXZlbnRzTGlzdGVuZXJzKXJldHVybiBlO2xldCBpLHMsYTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRbMF18fEFycmF5LmlzQXJyYXkodFswXSk/KGk9dFswXSxzPXQuc2xpY2UoMSx0Lmxlbmd0aCksYT1lKTooaT10WzBdLmV2ZW50cyxzPXRbMF0uZGF0YSxhPXRbMF0uY29udGV4dHx8ZSkscy51bnNoaWZ0KGEpLChBcnJheS5pc0FycmF5KGkpP2k6aS5zcGxpdCgiICIpKS5mb3JFYWNoKCh0PT57ZS5ldmVudHNBbnlMaXN0ZW5lcnMmJmUuZXZlbnRzQW55TGlzdGVuZXJzLmxlbmd0aCYmZS5ldmVudHNBbnlMaXN0ZW5lcnMuZm9yRWFjaCgoZT0+e2UuYXBwbHkoYSxbdCwuLi5zXSl9KSksZS5ldmVudHNMaXN0ZW5lcnMmJmUuZXZlbnRzTGlzdGVuZXJzW3RdJiZlLmV2ZW50c0xpc3RlbmVyc1t0XS5mb3JFYWNoKCh0PT57dC5hcHBseShhLHMpfSkpfSkpLGV9fSxMPXt1cGRhdGVTaXplOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzO2xldCBlLGk7Y29uc3Qgcz10LiRlbDtlPXZvaWQgMCE9PXQucGFyYW1zLndpZHRoJiZudWxsIT09dC5wYXJhbXMud2lkdGg/dC5wYXJhbXMud2lkdGg6c1swXS5jbGllbnRXaWR0aCxpPXZvaWQgMCE9PXQucGFyYW1zLmhlaWdodCYmbnVsbCE9PXQucGFyYW1zLmhlaWdodD90LnBhcmFtcy5oZWlnaHQ6c1swXS5jbGllbnRIZWlnaHQsMD09PWUmJnQuaXNIb3Jpem9udGFsKCl8fDA9PT1pJiZ0LmlzVmVydGljYWwoKXx8KGU9ZS1wYXJzZUludChzLmNzcygicGFkZGluZy1sZWZ0Iil8fDAsMTApLXBhcnNlSW50KHMuY3NzKCJwYWRkaW5nLXJpZ2h0Iil8fDAsMTApLGk9aS1wYXJzZUludChzLmNzcygicGFkZGluZy10b3AiKXx8MCwxMCktcGFyc2VJbnQocy5jc3MoInBhZGRpbmctYm90dG9tIil8fDAsMTApLE51bWJlci5pc05hTihlKSYmKGU9MCksTnVtYmVyLmlzTmFOKGkpJiYoaT0wKSxPYmplY3QuYXNzaWduKHQse3dpZHRoOmUsaGVpZ2h0Omksc2l6ZTp0LmlzSG9yaXpvbnRhbCgpP2U6aX0pKX0sdXBkYXRlU2xpZGVzOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzO2Z1bmN0aW9uIGUoZSl7cmV0dXJuIHQuaXNIb3Jpem9udGFsKCk/ZTp7d2lkdGg6ImhlaWdodCIsIm1hcmdpbi10b3AiOiJtYXJnaW4tbGVmdCIsIm1hcmdpbi1ib3R0b20gIjoibWFyZ2luLXJpZ2h0IiwibWFyZ2luLWxlZnQiOiJtYXJnaW4tdG9wIiwibWFyZ2luLXJpZ2h0IjoibWFyZ2luLWJvdHRvbSIsInBhZGRpbmctbGVmdCI6InBhZGRpbmctdG9wIiwicGFkZGluZy1yaWdodCI6InBhZGRpbmctYm90dG9tIixtYXJnaW5SaWdodDoibWFyZ2luQm90dG9tIn1bZV19ZnVuY3Rpb24gaSh0LGkpe3JldHVybiBwYXJzZUZsb2F0KHQuZ2V0UHJvcGVydHlWYWx1ZShlKGkpKXx8MCl9Y29uc3Qgcz10LnBhcmFtcyx7JHdyYXBwZXJFbDphLHNpemU6bixydGxUcmFuc2xhdGU6cix3cm9uZ1JUTDpvfT10LGw9dC52aXJ0dWFsJiZzLnZpcnR1YWwuZW5hYmxlZCxjPWw/dC52aXJ0dWFsLnNsaWRlcy5sZW5ndGg6dC5zbGlkZXMubGVuZ3RoLGg9YS5jaGlsZHJlbihgLiR7dC5wYXJhbXMuc2xpZGVDbGFzc31gKSxkPWw/dC52aXJ0dWFsLnNsaWRlcy5sZW5ndGg6aC5sZW5ndGg7bGV0IHU9W107Y29uc3QgcD1bXSxnPVtdO2xldCBmPXMuc2xpZGVzT2Zmc2V0QmVmb3JlOyJmdW5jdGlvbiI9PXR5cGVvZiBmJiYoZj1zLnNsaWRlc09mZnNldEJlZm9yZS5jYWxsKHQpKTtsZXQgbT1zLnNsaWRlc09mZnNldEFmdGVyOyJmdW5jdGlvbiI9PXR5cGVvZiBtJiYobT1zLnNsaWRlc09mZnNldEFmdGVyLmNhbGwodCkpO2NvbnN0IHY9dC5zbmFwR3JpZC5sZW5ndGgseD10LnNsaWRlc0dyaWQubGVuZ3RoO2xldCBiPXMuc3BhY2VCZXR3ZWVuLHk9LWYsaz0wLFM9MDtpZih2b2lkIDA9PT1uKXJldHVybjsic3RyaW5nIj09dHlwZW9mIGImJmIuaW5kZXhPZigiJSIpPj0wJiYoYj1wYXJzZUZsb2F0KGIucmVwbGFjZSgiJSIsIiIpKS8xMDAqbiksdC52aXJ0dWFsU2l6ZT0tYixyP2guY3NzKHttYXJnaW5MZWZ0OiIiLG1hcmdpbkJvdHRvbToiIixtYXJnaW5Ub3A6IiJ9KTpoLmNzcyh7bWFyZ2luUmlnaHQ6IiIsbWFyZ2luQm90dG9tOiIiLG1hcmdpblRvcDoiIn0pLHMuY2VudGVyZWRTbGlkZXMmJnMuY3NzTW9kZSYmKHcodC53cmFwcGVyRWwsIi0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1iZWZvcmUiLCIiKSx3KHQud3JhcHBlckVsLCItLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYWZ0ZXIiLCIiKSk7Y29uc3QgQz1zLmdyaWQmJnMuZ3JpZC5yb3dzPjEmJnQuZ3JpZDtsZXQgQTtDJiZ0LmdyaWQuaW5pdFNsaWRlcyhkKTtjb25zdCBFPSJhdXRvIj09PXMuc2xpZGVzUGVyVmlldyYmcy5icmVha3BvaW50cyYmT2JqZWN0LmtleXMocy5icmVha3BvaW50cykuZmlsdGVyKCh0PT52b2lkIDAhPT1zLmJyZWFrcG9pbnRzW3RdLnNsaWRlc1BlclZpZXcpKS5sZW5ndGg+MDtmb3IobGV0IGE9MDthPGQ7YSs9MSl7QT0wO2NvbnN0IHI9aC5lcShhKTtpZihDJiZ0LmdyaWQudXBkYXRlU2xpZGUoYSxyLGQsZSksIm5vbmUiIT09ci5jc3MoImRpc3BsYXkiKSl7aWYoImF1dG8iPT09cy5zbGlkZXNQZXJWaWV3KXtFJiYoaFthXS5zdHlsZVtlKCJ3aWR0aCIpXT0iIik7Y29uc3Qgbj1nZXRDb21wdXRlZFN0eWxlKHJbMF0pLG89clswXS5zdHlsZS50cmFuc2Zvcm0sbD1yWzBdLnN0eWxlLndlYmtpdFRyYW5zZm9ybTtpZihvJiYoclswXS5zdHlsZS50cmFuc2Zvcm09Im5vbmUiKSxsJiYoclswXS5zdHlsZS53ZWJraXRUcmFuc2Zvcm09Im5vbmUiKSxzLnJvdW5kTGVuZ3RocylBPXQuaXNIb3Jpem9udGFsKCk/ci5vdXRlcldpZHRoKCEwKTpyLm91dGVySGVpZ2h0KCEwKTtlbHNle2NvbnN0IHQ9aShuLCJ3aWR0aCIpLGU9aShuLCJwYWRkaW5nLWxlZnQiKSxzPWkobiwicGFkZGluZy1yaWdodCIpLGE9aShuLCJtYXJnaW4tbGVmdCIpLG89aShuLCJtYXJnaW4tcmlnaHQiKSxsPW4uZ2V0UHJvcGVydHlWYWx1ZSgiYm94LXNpemluZyIpO2lmKGwmJiJib3JkZXItYm94Ij09PWwpQT10K2ErbztlbHNle2NvbnN0e2NsaWVudFdpZHRoOmksb2Zmc2V0V2lkdGg6bn09clswXTtBPXQrZStzK2Erbysobi1pKX19byYmKHJbMF0uc3R5bGUudHJhbnNmb3JtPW8pLGwmJihyWzBdLnN0eWxlLndlYmtpdFRyYW5zZm9ybT1sKSxzLnJvdW5kTGVuZ3RocyYmKEE9TWF0aC5mbG9vcihBKSl9ZWxzZSBBPShuLShzLnNsaWRlc1BlclZpZXctMSkqYikvcy5zbGlkZXNQZXJWaWV3LHMucm91bmRMZW5ndGhzJiYoQT1NYXRoLmZsb29yKEEpKSxoW2FdJiYoaFthXS5zdHlsZVtlKCJ3aWR0aCIpXT1gJHtBfXB4YCk7aFthXSYmKGhbYV0uc3dpcGVyU2xpZGVTaXplPUEpLGcucHVzaChBKSxzLmNlbnRlcmVkU2xpZGVzPyh5PXkrQS8yK2svMitiLDA9PT1rJiYwIT09YSYmKHk9eS1uLzItYiksMD09PWEmJih5PXktbi8yLWIpLE1hdGguYWJzKHkpPC4wMDEmJih5PTApLHMucm91bmRMZW5ndGhzJiYoeT1NYXRoLmZsb29yKHkpKSxTJXMuc2xpZGVzUGVyR3JvdXA9PTAmJnUucHVzaCh5KSxwLnB1c2goeSkpOihzLnJvdW5kTGVuZ3RocyYmKHk9TWF0aC5mbG9vcih5KSksKFMtTWF0aC5taW4odC5wYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwLFMpKSV0LnBhcmFtcy5zbGlkZXNQZXJHcm91cD09MCYmdS5wdXNoKHkpLHAucHVzaCh5KSx5PXkrQStiKSx0LnZpcnR1YWxTaXplKz1BK2Isaz1BLFMrPTF9fWlmKHQudmlydHVhbFNpemU9TWF0aC5tYXgodC52aXJ0dWFsU2l6ZSxuKSttLHImJm8mJigic2xpZGUiPT09cy5lZmZlY3R8fCJjb3ZlcmZsb3ciPT09cy5lZmZlY3QpJiZhLmNzcyh7d2lkdGg6YCR7dC52aXJ0dWFsU2l6ZStzLnNwYWNlQmV0d2Vlbn1weGB9KSxzLnNldFdyYXBwZXJTaXplJiZhLmNzcyh7W2UoIndpZHRoIildOmAke3QudmlydHVhbFNpemUrcy5zcGFjZUJldHdlZW59cHhgfSksQyYmdC5ncmlkLnVwZGF0ZVdyYXBwZXJTaXplKEEsdSxlKSwhcy5jZW50ZXJlZFNsaWRlcyl7Y29uc3QgZT1bXTtmb3IobGV0IGk9MDtpPHUubGVuZ3RoO2krPTEpe2xldCBhPXVbaV07cy5yb3VuZExlbmd0aHMmJihhPU1hdGguZmxvb3IoYSkpLHVbaV08PXQudmlydHVhbFNpemUtbiYmZS5wdXNoKGEpfXU9ZSxNYXRoLmZsb29yKHQudmlydHVhbFNpemUtbiktTWF0aC5mbG9vcih1W3UubGVuZ3RoLTFdKT4xJiZ1LnB1c2godC52aXJ0dWFsU2l6ZS1uKX1pZigwPT09dS5sZW5ndGgmJih1PVswXSksMCE9PXMuc3BhY2VCZXR3ZWVuKXtjb25zdCBpPXQuaXNIb3Jpem9udGFsKCkmJnI/Im1hcmdpbkxlZnQiOmUoIm1hcmdpblJpZ2h0Iik7aC5maWx0ZXIoKCh0LGUpPT4hcy5jc3NNb2RlfHxlIT09aC5sZW5ndGgtMSkpLmNzcyh7W2ldOmAke2J9cHhgfSl9aWYocy5jZW50ZXJlZFNsaWRlcyYmcy5jZW50ZXJlZFNsaWRlc0JvdW5kcyl7bGV0IHQ9MDtnLmZvckVhY2goKGU9Pnt0Kz1lKyhzLnNwYWNlQmV0d2Vlbj9zLnNwYWNlQmV0d2VlbjowKX0pKSx0LT1zLnNwYWNlQmV0d2Vlbjtjb25zdCBlPXQtbjt1PXUubWFwKCh0PT50PDA/LWY6dD5lP2UrbTp0KSl9aWYocy5jZW50ZXJJbnN1ZmZpY2llbnRTbGlkZXMpe2xldCB0PTA7aWYoZy5mb3JFYWNoKChlPT57dCs9ZSsocy5zcGFjZUJldHdlZW4/cy5zcGFjZUJldHdlZW46MCl9KSksdC09cy5zcGFjZUJldHdlZW4sdDxuKXtjb25zdCBlPShuLXQpLzI7dS5mb3JFYWNoKCgodCxpKT0+e3VbaV09dC1lfSkpLHAuZm9yRWFjaCgoKHQsaSk9PntwW2ldPXQrZX0pKX19aWYoT2JqZWN0LmFzc2lnbih0LHtzbGlkZXM6aCxzbmFwR3JpZDp1LHNsaWRlc0dyaWQ6cCxzbGlkZXNTaXplc0dyaWQ6Z30pLHMuY2VudGVyZWRTbGlkZXMmJnMuY3NzTW9kZSYmIXMuY2VudGVyZWRTbGlkZXNCb3VuZHMpe3codC53cmFwcGVyRWwsIi0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1iZWZvcmUiLC11WzBdKyJweCIpLHcodC53cmFwcGVyRWwsIi0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1hZnRlciIsdC5zaXplLzItZ1tnLmxlbmd0aC0xXS8yKyJweCIpO2NvbnN0IGU9LXQuc25hcEdyaWRbMF0saT0tdC5zbGlkZXNHcmlkWzBdO3Quc25hcEdyaWQ9dC5zbmFwR3JpZC5tYXAoKHQ9PnQrZSkpLHQuc2xpZGVzR3JpZD10LnNsaWRlc0dyaWQubWFwKCh0PT50K2kpKX1pZihkIT09YyYmdC5lbWl0KCJzbGlkZXNMZW5ndGhDaGFuZ2UiKSx1Lmxlbmd0aCE9PXYmJih0LnBhcmFtcy53YXRjaE92ZXJmbG93JiZ0LmNoZWNrT3ZlcmZsb3coKSx0LmVtaXQoInNuYXBHcmlkTGVuZ3RoQ2hhbmdlIikpLHAubGVuZ3RoIT09eCYmdC5lbWl0KCJzbGlkZXNHcmlkTGVuZ3RoQ2hhbmdlIikscy53YXRjaFNsaWRlc1Byb2dyZXNzJiZ0LnVwZGF0ZVNsaWRlc09mZnNldCgpLCEobHx8cy5jc3NNb2RlfHwic2xpZGUiIT09cy5lZmZlY3QmJiJmYWRlIiE9PXMuZWZmZWN0KSl7Y29uc3QgZT1gJHtzLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9YmFja2ZhY2UtaGlkZGVuYCxpPXQuJGVsLmhhc0NsYXNzKGUpO2Q8PXMubWF4QmFja2ZhY2VIaWRkZW5TbGlkZXM/aXx8dC4kZWwuYWRkQ2xhc3MoZSk6aSYmdC4kZWwucmVtb3ZlQ2xhc3MoZSl9fSx1cGRhdGVBdXRvSGVpZ2h0OmZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcyxpPVtdLHM9ZS52aXJ0dWFsJiZlLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ7bGV0IGEsbj0wOyJudW1iZXIiPT10eXBlb2YgdD9lLnNldFRyYW5zaXRpb24odCk6ITA9PT10JiZlLnNldFRyYW5zaXRpb24oZS5wYXJhbXMuc3BlZWQpO2NvbnN0IHI9dD0+cz9lLnNsaWRlcy5maWx0ZXIoKGU9PnBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpLDEwKT09PXQpKVswXTplLnNsaWRlcy5lcSh0KVswXTtpZigiYXV0byIhPT1lLnBhcmFtcy5zbGlkZXNQZXJWaWV3JiZlLnBhcmFtcy5zbGlkZXNQZXJWaWV3PjEpaWYoZS5wYXJhbXMuY2VudGVyZWRTbGlkZXMpKGUudmlzaWJsZVNsaWRlc3x8bShbXSkpLmVhY2goKHQ9PntpLnB1c2godCl9KSk7ZWxzZSBmb3IoYT0wO2E8TWF0aC5jZWlsKGUucGFyYW1zLnNsaWRlc1BlclZpZXcpO2ErPTEpe2NvbnN0IHQ9ZS5hY3RpdmVJbmRleCthO2lmKHQ+ZS5zbGlkZXMubGVuZ3RoJiYhcylicmVhaztpLnB1c2gocih0KSl9ZWxzZSBpLnB1c2gocihlLmFjdGl2ZUluZGV4KSk7Zm9yKGE9MDthPGkubGVuZ3RoO2ErPTEpaWYodm9pZCAwIT09aVthXSl7Y29uc3QgdD1pW2FdLm9mZnNldEhlaWdodDtuPXQ+bj90Om59KG58fDA9PT1uKSYmZS4kd3JhcHBlckVsLmNzcygiaGVpZ2h0IixgJHtufXB4YCl9LHVwZGF0ZVNsaWRlc09mZnNldDpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcyxlPXQuc2xpZGVzO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSs9MSllW2ldLnN3aXBlclNsaWRlT2Zmc2V0PXQuaXNIb3Jpem9udGFsKCk/ZVtpXS5vZmZzZXRMZWZ0OmVbaV0ub2Zmc2V0VG9wfSx1cGRhdGVTbGlkZXNQcm9ncmVzczpmdW5jdGlvbih0PXRoaXMmJnRoaXMudHJhbnNsYXRlfHwwKXtjb25zdCBlPXRoaXMsaT1lLnBhcmFtcyx7c2xpZGVzOnMscnRsVHJhbnNsYXRlOmEsc25hcEdyaWQ6bn09ZTtpZigwPT09cy5sZW5ndGgpcmV0dXJuO3ZvaWQgMD09PXNbMF0uc3dpcGVyU2xpZGVPZmZzZXQmJmUudXBkYXRlU2xpZGVzT2Zmc2V0KCk7bGV0IHI9LXQ7YSYmKHI9dCkscy5yZW1vdmVDbGFzcyhpLnNsaWRlVmlzaWJsZUNsYXNzKSxlLnZpc2libGVTbGlkZXNJbmRleGVzPVtdLGUudmlzaWJsZVNsaWRlcz1bXTtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrPTEpe2NvbnN0IG89c1t0XTtsZXQgbD1vLnN3aXBlclNsaWRlT2Zmc2V0O2kuY3NzTW9kZSYmaS5jZW50ZXJlZFNsaWRlcyYmKGwtPXNbMF0uc3dpcGVyU2xpZGVPZmZzZXQpO2NvbnN0IGM9KHIrKGkuY2VudGVyZWRTbGlkZXM/ZS5taW5UcmFuc2xhdGUoKTowKS1sKS8oby5zd2lwZXJTbGlkZVNpemUraS5zcGFjZUJldHdlZW4pLGg9KHItblswXSsoaS5jZW50ZXJlZFNsaWRlcz9lLm1pblRyYW5zbGF0ZSgpOjApLWwpLyhvLnN3aXBlclNsaWRlU2l6ZStpLnNwYWNlQmV0d2VlbiksZD0tKHItbCksdT1kK2Uuc2xpZGVzU2l6ZXNHcmlkW3RdOyhkPj0wJiZkPGUuc2l6ZS0xfHx1PjEmJnU8PWUuc2l6ZXx8ZDw9MCYmdT49ZS5zaXplKSYmKGUudmlzaWJsZVNsaWRlcy5wdXNoKG8pLGUudmlzaWJsZVNsaWRlc0luZGV4ZXMucHVzaCh0KSxzLmVxKHQpLmFkZENsYXNzKGkuc2xpZGVWaXNpYmxlQ2xhc3MpKSxvLnByb2dyZXNzPWE/LWM6YyxvLm9yaWdpbmFsUHJvZ3Jlc3M9YT8taDpofWUudmlzaWJsZVNsaWRlcz1tKGUudmlzaWJsZVNsaWRlcyl9LHVwZGF0ZVByb2dyZXNzOmZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcztpZih2b2lkIDA9PT10KXtjb25zdCBpPWUucnRsVHJhbnNsYXRlPy0xOjE7dD1lJiZlLnRyYW5zbGF0ZSYmZS50cmFuc2xhdGUqaXx8MH1jb25zdCBpPWUucGFyYW1zLHM9ZS5tYXhUcmFuc2xhdGUoKS1lLm1pblRyYW5zbGF0ZSgpO2xldHtwcm9ncmVzczphLGlzQmVnaW5uaW5nOm4saXNFbmQ6cn09ZTtjb25zdCBvPW4sbD1yOzA9PT1zPyhhPTAsbj0hMCxyPSEwKTooYT0odC1lLm1pblRyYW5zbGF0ZSgpKS9zLG49YTw9MCxyPWE+PTEpLE9iamVjdC5hc3NpZ24oZSx7cHJvZ3Jlc3M6YSxpc0JlZ2lubmluZzpuLGlzRW5kOnJ9KSwoaS53YXRjaFNsaWRlc1Byb2dyZXNzfHxpLmNlbnRlcmVkU2xpZGVzJiZpLmF1dG9IZWlnaHQpJiZlLnVwZGF0ZVNsaWRlc1Byb2dyZXNzKHQpLG4mJiFvJiZlLmVtaXQoInJlYWNoQmVnaW5uaW5nIHRvRWRnZSIpLHImJiFsJiZlLmVtaXQoInJlYWNoRW5kIHRvRWRnZSIpLChvJiYhbnx8bCYmIXIpJiZlLmVtaXQoImZyb21FZGdlIiksZS5lbWl0KCJwcm9ncmVzcyIsYSl9LHVwZGF0ZVNsaWRlc0NsYXNzZXM6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMse3NsaWRlczplLHBhcmFtczppLCR3cmFwcGVyRWw6cyxhY3RpdmVJbmRleDphLHJlYWxJbmRleDpufT10LHI9dC52aXJ0dWFsJiZpLnZpcnR1YWwuZW5hYmxlZDtsZXQgbztlLnJlbW92ZUNsYXNzKGAke2kuc2xpZGVBY3RpdmVDbGFzc30gJHtpLnNsaWRlTmV4dENsYXNzfSAke2kuc2xpZGVQcmV2Q2xhc3N9ICR7aS5zbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzfSAke2kuc2xpZGVEdXBsaWNhdGVOZXh0Q2xhc3N9ICR7aS5zbGlkZUR1cGxpY2F0ZVByZXZDbGFzc31gKSxvPXI/dC4kd3JhcHBlckVsLmZpbmQoYC4ke2kuc2xpZGVDbGFzc31bZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IiR7YX0iXWApOmUuZXEoYSksby5hZGRDbGFzcyhpLnNsaWRlQWN0aXZlQ2xhc3MpLGkubG9vcCYmKG8uaGFzQ2xhc3MoaS5zbGlkZUR1cGxpY2F0ZUNsYXNzKT9zLmNoaWxkcmVuKGAuJHtpLnNsaWRlQ2xhc3N9Om5vdCguJHtpLnNsaWRlRHVwbGljYXRlQ2xhc3N9KVtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJHtufSJdYCkuYWRkQ2xhc3MoaS5zbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzKTpzLmNoaWxkcmVuKGAuJHtpLnNsaWRlQ2xhc3N9LiR7aS5zbGlkZUR1cGxpY2F0ZUNsYXNzfVtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJHtufSJdYCkuYWRkQ2xhc3MoaS5zbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzKSk7bGV0IGw9by5uZXh0QWxsKGAuJHtpLnNsaWRlQ2xhc3N9YCkuZXEoMCkuYWRkQ2xhc3MoaS5zbGlkZU5leHRDbGFzcyk7aS5sb29wJiYwPT09bC5sZW5ndGgmJihsPWUuZXEoMCksbC5hZGRDbGFzcyhpLnNsaWRlTmV4dENsYXNzKSk7bGV0IGM9by5wcmV2QWxsKGAuJHtpLnNsaWRlQ2xhc3N9YCkuZXEoMCkuYWRkQ2xhc3MoaS5zbGlkZVByZXZDbGFzcyk7aS5sb29wJiYwPT09Yy5sZW5ndGgmJihjPWUuZXEoLTEpLGMuYWRkQ2xhc3MoaS5zbGlkZVByZXZDbGFzcykpLGkubG9vcCYmKGwuaGFzQ2xhc3MoaS5zbGlkZUR1cGxpY2F0ZUNsYXNzKT9zLmNoaWxkcmVuKGAuJHtpLnNsaWRlQ2xhc3N9Om5vdCguJHtpLnNsaWRlRHVwbGljYXRlQ2xhc3N9KVtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJHtsLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4Iil9Il1gKS5hZGRDbGFzcyhpLnNsaWRlRHVwbGljYXRlTmV4dENsYXNzKTpzLmNoaWxkcmVuKGAuJHtpLnNsaWRlQ2xhc3N9LiR7aS5zbGlkZUR1cGxpY2F0ZUNsYXNzfVtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJHtsLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4Iil9Il1gKS5hZGRDbGFzcyhpLnNsaWRlRHVwbGljYXRlTmV4dENsYXNzKSxjLmhhc0NsYXNzKGkuc2xpZGVEdXBsaWNhdGVDbGFzcyk/cy5jaGlsZHJlbihgLiR7aS5zbGlkZUNsYXNzfTpub3QoLiR7aS5zbGlkZUR1cGxpY2F0ZUNsYXNzfSlbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IiR7Yy5hdHRyKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpfSJdYCkuYWRkQ2xhc3MoaS5zbGlkZUR1cGxpY2F0ZVByZXZDbGFzcyk6cy5jaGlsZHJlbihgLiR7aS5zbGlkZUNsYXNzfS4ke2kuc2xpZGVEdXBsaWNhdGVDbGFzc31bZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IiR7Yy5hdHRyKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpfSJdYCkuYWRkQ2xhc3MoaS5zbGlkZUR1cGxpY2F0ZVByZXZDbGFzcykpLHQuZW1pdFNsaWRlc0NsYXNzZXMoKX0sdXBkYXRlQWN0aXZlSW5kZXg6ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLGk9ZS5ydGxUcmFuc2xhdGU/ZS50cmFuc2xhdGU6LWUudHJhbnNsYXRlLHtzbGlkZXNHcmlkOnMsc25hcEdyaWQ6YSxwYXJhbXM6bixhY3RpdmVJbmRleDpyLHJlYWxJbmRleDpvLHNuYXBJbmRleDpsfT1lO2xldCBjLGg9dDtpZih2b2lkIDA9PT1oKXtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrPTEpdm9pZCAwIT09c1t0KzFdP2k+PXNbdF0mJmk8c1t0KzFdLShzW3QrMV0tc1t0XSkvMj9oPXQ6aT49c1t0XSYmaTxzW3QrMV0mJihoPXQrMSk6aT49c1t0XSYmKGg9dCk7bi5ub3JtYWxpemVTbGlkZUluZGV4JiYoaDwwfHx2b2lkIDA9PT1oKSYmKGg9MCl9aWYoYS5pbmRleE9mKGkpPj0wKWM9YS5pbmRleE9mKGkpO2Vsc2V7Y29uc3QgdD1NYXRoLm1pbihuLnNsaWRlc1Blckdyb3VwU2tpcCxoKTtjPXQrTWF0aC5mbG9vcigoaC10KS9uLnNsaWRlc1Blckdyb3VwKX1pZihjPj1hLmxlbmd0aCYmKGM9YS5sZW5ndGgtMSksaD09PXIpcmV0dXJuIHZvaWQoYyE9PWwmJihlLnNuYXBJbmRleD1jLGUuZW1pdCgic25hcEluZGV4Q2hhbmdlIikpKTtjb25zdCBkPXBhcnNlSW50KGUuc2xpZGVzLmVxKGgpLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4Iil8fGgsMTApO09iamVjdC5hc3NpZ24oZSx7c25hcEluZGV4OmMscmVhbEluZGV4OmQscHJldmlvdXNJbmRleDpyLGFjdGl2ZUluZGV4Omh9KSxlLmVtaXQoImFjdGl2ZUluZGV4Q2hhbmdlIiksZS5lbWl0KCJzbmFwSW5kZXhDaGFuZ2UiKSxvIT09ZCYmZS5lbWl0KCJyZWFsSW5kZXhDaGFuZ2UiKSwoZS5pbml0aWFsaXplZHx8ZS5wYXJhbXMucnVuQ2FsbGJhY2tzT25Jbml0KSYmZS5lbWl0KCJzbGlkZUNoYW5nZSIpfSx1cGRhdGVDbGlja2VkU2xpZGU6ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLGk9ZS5wYXJhbXMscz1tKHQpLmNsb3Nlc3QoYC4ke2kuc2xpZGVDbGFzc31gKVswXTtsZXQgYSxuPSExO2lmKHMpZm9yKGxldCB0PTA7dDxlLnNsaWRlcy5sZW5ndGg7dCs9MSlpZihlLnNsaWRlc1t0XT09PXMpe249ITAsYT10O2JyZWFrfWlmKCFzfHwhbilyZXR1cm4gZS5jbGlja2VkU2xpZGU9dm9pZCAwLHZvaWQoZS5jbGlja2VkSW5kZXg9dm9pZCAwKTtlLmNsaWNrZWRTbGlkZT1zLGUudmlydHVhbCYmZS5wYXJhbXMudmlydHVhbC5lbmFibGVkP2UuY2xpY2tlZEluZGV4PXBhcnNlSW50KG0ocykuYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKSwxMCk6ZS5jbGlja2VkSW5kZXg9YSxpLnNsaWRlVG9DbGlja2VkU2xpZGUmJnZvaWQgMCE9PWUuY2xpY2tlZEluZGV4JiZlLmNsaWNrZWRJbmRleCE9PWUuYWN0aXZlSW5kZXgmJmUuc2xpZGVUb0NsaWNrZWRTbGlkZSgpfX07ZnVuY3Rpb24gUCh7c3dpcGVyOnQscnVuQ2FsbGJhY2tzOmUsZGlyZWN0aW9uOmksc3RlcDpzfSl7Y29uc3R7YWN0aXZlSW5kZXg6YSxwcmV2aW91c0luZGV4Om59PXQ7bGV0IHI9aTtpZihyfHwocj1hPm4/Im5leHQiOmE8bj8icHJldiI6InJlc2V0IiksdC5lbWl0KGB0cmFuc2l0aW9uJHtzfWApLGUmJmEhPT1uKXtpZigicmVzZXQiPT09cilyZXR1cm4gdm9pZCB0LmVtaXQoYHNsaWRlUmVzZXRUcmFuc2l0aW9uJHtzfWApO3QuZW1pdChgc2xpZGVDaGFuZ2VUcmFuc2l0aW9uJHtzfWApLCJuZXh0Ij09PXI/dC5lbWl0KGBzbGlkZU5leHRUcmFuc2l0aW9uJHtzfWApOnQuZW1pdChgc2xpZGVQcmV2VHJhbnNpdGlvbiR7c31gKX19dmFyIE09e3NsaWRlVG86ZnVuY3Rpb24odD0wLGU9dGhpcy5wYXJhbXMuc3BlZWQsaT0hMCxzLGEpe2lmKCJudW1iZXIiIT10eXBlb2YgdCYmInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcihgVGhlICdpbmRleCcgYXJndW1lbnQgY2Fubm90IGhhdmUgdHlwZSBvdGhlciB0aGFuICdudW1iZXInIG9yICdzdHJpbmcnLiBbJHt0eXBlb2YgdH1dIGdpdmVuLmApO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT1wYXJzZUludCh0LDEwKTtpZighaXNGaW5pdGUoZSkpdGhyb3cgbmV3IEVycm9yKGBUaGUgcGFzc2VkLWluICdpbmRleCcgKHN0cmluZykgY291bGRuJ3QgYmUgY29udmVydGVkIHRvICdudW1iZXInLiBbJHt0fV0gZ2l2ZW4uYCk7dD1lfWNvbnN0IG49dGhpcztsZXQgcj10O3I8MCYmKHI9MCk7Y29uc3R7cGFyYW1zOm8sc25hcEdyaWQ6bCxzbGlkZXNHcmlkOmMscHJldmlvdXNJbmRleDpoLGFjdGl2ZUluZGV4OmQscnRsVHJhbnNsYXRlOnUsd3JhcHBlckVsOnAsZW5hYmxlZDpnfT1uO2lmKG4uYW5pbWF0aW5nJiZvLnByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbnx8IWcmJiFzJiYhYSlyZXR1cm4hMTtjb25zdCBmPU1hdGgubWluKG4ucGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCxyKTtsZXQgbT1mK01hdGguZmxvb3IoKHItZikvbi5wYXJhbXMuc2xpZGVzUGVyR3JvdXApO20+PWwubGVuZ3RoJiYobT1sLmxlbmd0aC0xKTtjb25zdCB2PS1sW21dO2lmKG8ubm9ybWFsaXplU2xpZGVJbmRleClmb3IobGV0IHQ9MDt0PGMubGVuZ3RoO3QrPTEpe2NvbnN0IGU9LU1hdGguZmxvb3IoMTAwKnYpLGk9TWF0aC5mbG9vcigxMDAqY1t0XSkscz1NYXRoLmZsb29yKDEwMCpjW3QrMV0pO3ZvaWQgMCE9PWNbdCsxXT9lPj1pJiZlPHMtKHMtaSkvMj9yPXQ6ZT49aSYmZTxzJiYocj10KzEpOmU+PWkmJihyPXQpfWlmKG4uaW5pdGlhbGl6ZWQmJnIhPT1kKXtpZighbi5hbGxvd1NsaWRlTmV4dCYmdjxuLnRyYW5zbGF0ZSYmdjxuLm1pblRyYW5zbGF0ZSgpKXJldHVybiExO2lmKCFuLmFsbG93U2xpZGVQcmV2JiZ2Pm4udHJhbnNsYXRlJiZ2Pm4ubWF4VHJhbnNsYXRlKCkmJihkfHwwKSE9PXIpcmV0dXJuITF9bGV0IHg7aWYociE9PShofHwwKSYmaSYmbi5lbWl0KCJiZWZvcmVTbGlkZUNoYW5nZVN0YXJ0Iiksbi51cGRhdGVQcm9ncmVzcyh2KSx4PXI+ZD8ibmV4dCI6cjxkPyJwcmV2IjoicmVzZXQiLHUmJi12PT09bi50cmFuc2xhdGV8fCF1JiZ2PT09bi50cmFuc2xhdGUpcmV0dXJuIG4udXBkYXRlQWN0aXZlSW5kZXgociksby5hdXRvSGVpZ2h0JiZuLnVwZGF0ZUF1dG9IZWlnaHQoKSxuLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSwic2xpZGUiIT09by5lZmZlY3QmJm4uc2V0VHJhbnNsYXRlKHYpLCJyZXNldCIhPT14JiYobi50cmFuc2l0aW9uU3RhcnQoaSx4KSxuLnRyYW5zaXRpb25FbmQoaSx4KSksITE7aWYoby5jc3NNb2RlKXtjb25zdCB0PW4uaXNIb3Jpem9udGFsKCksaT11P3Y6LXY7aWYoMD09PWUpe2NvbnN0IGU9bi52aXJ0dWFsJiZuLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ7ZSYmKG4ud3JhcHBlckVsLnN0eWxlLnNjcm9sbFNuYXBUeXBlPSJub25lIixuLl9pbW1lZGlhdGVWaXJ0dWFsPSEwKSxwW3Q/InNjcm9sbExlZnQiOiJzY3JvbGxUb3AiXT1pLGUmJnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PntuLndyYXBwZXJFbC5zdHlsZS5zY3JvbGxTbmFwVHlwZT0iIixuLl9zd2lwZXJJbW1lZGlhdGVWaXJ0dWFsPSExfSkpfWVsc2V7aWYoIW4uc3VwcG9ydC5zbW9vdGhTY3JvbGwpcmV0dXJuIGsoe3N3aXBlcjpuLHRhcmdldFBvc2l0aW9uOmksc2lkZTp0PyJsZWZ0IjoidG9wIn0pLCEwO3Auc2Nyb2xsVG8oe1t0PyJsZWZ0IjoidG9wIl06aSxiZWhhdmlvcjoic21vb3RoIn0pfXJldHVybiEwfXJldHVybiBuLnNldFRyYW5zaXRpb24oZSksbi5zZXRUcmFuc2xhdGUodiksbi51cGRhdGVBY3RpdmVJbmRleChyKSxuLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSxuLmVtaXQoImJlZm9yZVRyYW5zaXRpb25TdGFydCIsZSxzKSxuLnRyYW5zaXRpb25TdGFydChpLHgpLDA9PT1lP24udHJhbnNpdGlvbkVuZChpLHgpOm4uYW5pbWF0aW5nfHwobi5hbmltYXRpbmc9ITAsbi5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZHx8KG4ub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24odCl7biYmIW4uZGVzdHJveWVkJiZ0LnRhcmdldD09PXRoaXMmJihuLiR3cmFwcGVyRWxbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsbi5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCksbi4kd3JhcHBlckVsWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLG4ub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpLG4ub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQ9bnVsbCxkZWxldGUgbi5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCxuLnRyYW5zaXRpb25FbmQoaSx4KSl9KSxuLiR3cmFwcGVyRWxbMF0uYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsbi5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCksbi4kd3JhcHBlckVsWzBdLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLG4ub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpKSwhMH0sc2xpZGVUb0xvb3A6ZnVuY3Rpb24odD0wLGU9dGhpcy5wYXJhbXMuc3BlZWQsaT0hMCxzKXtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IGU9cGFyc2VJbnQodCwxMCk7aWYoIWlzRmluaXRlKGUpKXRocm93IG5ldyBFcnJvcihgVGhlIHBhc3NlZC1pbiAnaW5kZXgnIChzdHJpbmcpIGNvdWxkbid0IGJlIGNvbnZlcnRlZCB0byAnbnVtYmVyJy4gWyR7dH1dIGdpdmVuLmApO3Q9ZX1jb25zdCBhPXRoaXM7bGV0IG49dDtyZXR1cm4gYS5wYXJhbXMubG9vcCYmKG4rPWEubG9vcGVkU2xpZGVzKSxhLnNsaWRlVG8obixlLGkscyl9LHNsaWRlTmV4dDpmdW5jdGlvbih0PXRoaXMucGFyYW1zLnNwZWVkLGU9ITAsaSl7Y29uc3Qgcz10aGlzLHthbmltYXRpbmc6YSxlbmFibGVkOm4scGFyYW1zOnJ9PXM7aWYoIW4pcmV0dXJuIHM7bGV0IG89ci5zbGlkZXNQZXJHcm91cDsiYXV0byI9PT1yLnNsaWRlc1BlclZpZXcmJjE9PT1yLnNsaWRlc1Blckdyb3VwJiZyLnNsaWRlc1Blckdyb3VwQXV0byYmKG89TWF0aC5tYXgocy5zbGlkZXNQZXJWaWV3RHluYW1pYygiY3VycmVudCIsITApLDEpKTtjb25zdCBsPXMuYWN0aXZlSW5kZXg8ci5zbGlkZXNQZXJHcm91cFNraXA/MTpvO2lmKHIubG9vcCl7aWYoYSYmci5sb29wUHJldmVudHNTbGlkZSlyZXR1cm4hMTtzLmxvb3BGaXgoKSxzLl9jbGllbnRMZWZ0PXMuJHdyYXBwZXJFbFswXS5jbGllbnRMZWZ0fXJldHVybiByLnJld2luZCYmcy5pc0VuZD9zLnNsaWRlVG8oMCx0LGUsaSk6cy5zbGlkZVRvKHMuYWN0aXZlSW5kZXgrbCx0LGUsaSl9LHNsaWRlUHJldjpmdW5jdGlvbih0PXRoaXMucGFyYW1zLnNwZWVkLGU9ITAsaSl7Y29uc3Qgcz10aGlzLHtwYXJhbXM6YSxhbmltYXRpbmc6bixzbmFwR3JpZDpyLHNsaWRlc0dyaWQ6byxydGxUcmFuc2xhdGU6bCxlbmFibGVkOmN9PXM7aWYoIWMpcmV0dXJuIHM7aWYoYS5sb29wKXtpZihuJiZhLmxvb3BQcmV2ZW50c1NsaWRlKXJldHVybiExO3MubG9vcEZpeCgpLHMuX2NsaWVudExlZnQ9cy4kd3JhcHBlckVsWzBdLmNsaWVudExlZnR9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdDwwPy1NYXRoLmZsb29yKE1hdGguYWJzKHQpKTpNYXRoLmZsb29yKHQpfWNvbnN0IGQ9aChsP3MudHJhbnNsYXRlOi1zLnRyYW5zbGF0ZSksdT1yLm1hcCgodD0+aCh0KSkpO2xldCBwPXJbdS5pbmRleE9mKGQpLTFdO2lmKHZvaWQgMD09PXAmJmEuY3NzTW9kZSl7bGV0IHQ7ci5mb3JFYWNoKCgoZSxpKT0+e2Q+PWUmJih0PWkpfSkpLHZvaWQgMCE9PXQmJihwPXJbdD4wP3QtMTp0XSl9bGV0IGc9MDtpZih2b2lkIDAhPT1wJiYoZz1vLmluZGV4T2YocCksZzwwJiYoZz1zLmFjdGl2ZUluZGV4LTEpLCJhdXRvIj09PWEuc2xpZGVzUGVyVmlldyYmMT09PWEuc2xpZGVzUGVyR3JvdXAmJmEuc2xpZGVzUGVyR3JvdXBBdXRvJiYoZz1nLXMuc2xpZGVzUGVyVmlld0R5bmFtaWMoInByZXZpb3VzIiwhMCkrMSxnPU1hdGgubWF4KGcsMCkpKSxhLnJld2luZCYmcy5pc0JlZ2lubmluZyl7Y29uc3QgYT1zLnBhcmFtcy52aXJ0dWFsJiZzLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQmJnMudmlydHVhbD9zLnZpcnR1YWwuc2xpZGVzLmxlbmd0aC0xOnMuc2xpZGVzLmxlbmd0aC0xO3JldHVybiBzLnNsaWRlVG8oYSx0LGUsaSl9cmV0dXJuIHMuc2xpZGVUbyhnLHQsZSxpKX0sc2xpZGVSZXNldDpmdW5jdGlvbih0PXRoaXMucGFyYW1zLnNwZWVkLGU9ITAsaSl7cmV0dXJuIHRoaXMuc2xpZGVUbyh0aGlzLmFjdGl2ZUluZGV4LHQsZSxpKX0sc2xpZGVUb0Nsb3Nlc3Q6ZnVuY3Rpb24odD10aGlzLnBhcmFtcy5zcGVlZCxlPSEwLGkscz0uNSl7Y29uc3QgYT10aGlzO2xldCBuPWEuYWN0aXZlSW5kZXg7Y29uc3Qgcj1NYXRoLm1pbihhLnBhcmFtcy5zbGlkZXNQZXJHcm91cFNraXAsbiksbz1yK01hdGguZmxvb3IoKG4tcikvYS5wYXJhbXMuc2xpZGVzUGVyR3JvdXApLGw9YS5ydGxUcmFuc2xhdGU/YS50cmFuc2xhdGU6LWEudHJhbnNsYXRlO2lmKGw+PWEuc25hcEdyaWRbb10pe2NvbnN0IHQ9YS5zbmFwR3JpZFtvXTtsLXQ+KGEuc25hcEdyaWRbbysxXS10KSpzJiYobis9YS5wYXJhbXMuc2xpZGVzUGVyR3JvdXApfWVsc2V7Y29uc3QgdD1hLnNuYXBHcmlkW28tMV07bC10PD0oYS5zbmFwR3JpZFtvXS10KSpzJiYobi09YS5wYXJhbXMuc2xpZGVzUGVyR3JvdXApfXJldHVybiBuPU1hdGgubWF4KG4sMCksbj1NYXRoLm1pbihuLGEuc2xpZGVzR3JpZC5sZW5ndGgtMSksYS5zbGlkZVRvKG4sdCxlLGkpfSxzbGlkZVRvQ2xpY2tlZFNsaWRlOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLHtwYXJhbXM6ZSwkd3JhcHBlckVsOml9PXQscz0iYXV0byI9PT1lLnNsaWRlc1BlclZpZXc/dC5zbGlkZXNQZXJWaWV3RHluYW1pYygpOmUuc2xpZGVzUGVyVmlldztsZXQgYSxuPXQuY2xpY2tlZEluZGV4O2lmKGUubG9vcCl7aWYodC5hbmltYXRpbmcpcmV0dXJuO2E9cGFyc2VJbnQobSh0LmNsaWNrZWRTbGlkZSkuYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKSwxMCksZS5jZW50ZXJlZFNsaWRlcz9uPHQubG9vcGVkU2xpZGVzLXMvMnx8bj50LnNsaWRlcy5sZW5ndGgtdC5sb29wZWRTbGlkZXMrcy8yPyh0Lmxvb3BGaXgoKSxuPWkuY2hpbGRyZW4oYC4ke2Uuc2xpZGVDbGFzc31bZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IiR7YX0iXTpub3QoLiR7ZS5zbGlkZUR1cGxpY2F0ZUNsYXNzfSlgKS5lcSgwKS5pbmRleCgpLHYoKCgpPT57dC5zbGlkZVRvKG4pfSkpKTp0LnNsaWRlVG8obik6bj50LnNsaWRlcy5sZW5ndGgtcz8odC5sb29wRml4KCksbj1pLmNoaWxkcmVuKGAuJHtlLnNsaWRlQ2xhc3N9W2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSIke2F9Il06bm90KC4ke2Uuc2xpZGVEdXBsaWNhdGVDbGFzc30pYCkuZXEoMCkuaW5kZXgoKSx2KCgoKT0+e3Quc2xpZGVUbyhuKX0pKSk6dC5zbGlkZVRvKG4pfWVsc2UgdC5zbGlkZVRvKG4pfX07ZnVuY3Rpb24gTyh0KXtjb25zdCBlPXRoaXMsaT1yKCkscz1sKCksYT1lLnRvdWNoRXZlbnRzRGF0YSx7cGFyYW1zOm4sdG91Y2hlczpvLGVuYWJsZWQ6Y309ZTtpZighYylyZXR1cm47aWYoZS5hbmltYXRpbmcmJm4ucHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uKXJldHVybjshZS5hbmltYXRpbmcmJm4uY3NzTW9kZSYmbi5sb29wJiZlLmxvb3BGaXgoKTtsZXQgaD10O2gub3JpZ2luYWxFdmVudCYmKGg9aC5vcmlnaW5hbEV2ZW50KTtsZXQgZD1tKGgudGFyZ2V0KTtpZigid3JhcHBlciI9PT1uLnRvdWNoRXZlbnRzVGFyZ2V0JiYhZC5jbG9zZXN0KGUud3JhcHBlckVsKS5sZW5ndGgpcmV0dXJuO2lmKGEuaXNUb3VjaEV2ZW50PSJ0b3VjaHN0YXJ0Ij09PWgudHlwZSwhYS5pc1RvdWNoRXZlbnQmJiJ3aGljaCJpbiBoJiYzPT09aC53aGljaClyZXR1cm47aWYoIWEuaXNUb3VjaEV2ZW50JiYiYnV0dG9uImluIGgmJmguYnV0dG9uPjApcmV0dXJuO2lmKGEuaXNUb3VjaGVkJiZhLmlzTW92ZWQpcmV0dXJuO2NvbnN0IHU9ISFuLm5vU3dpcGluZ0NsYXNzJiYiIiE9PW4ubm9Td2lwaW5nQ2xhc3MscD10LmNvbXBvc2VkUGF0aD90LmNvbXBvc2VkUGF0aCgpOnQucGF0aDt1JiZoLnRhcmdldCYmaC50YXJnZXQuc2hhZG93Um9vdCYmcCYmKGQ9bShwWzBdKSk7Y29uc3QgZz1uLm5vU3dpcGluZ1NlbGVjdG9yP24ubm9Td2lwaW5nU2VsZWN0b3I6YC4ke24ubm9Td2lwaW5nQ2xhc3N9YCxmPSEoIWgudGFyZ2V0fHwhaC50YXJnZXQuc2hhZG93Um9vdCk7aWYobi5ub1N3aXBpbmcmJihmP2Z1bmN0aW9uKHQsZT10aGlzKXtyZXR1cm4gZnVuY3Rpb24gZShpKXtpZighaXx8aT09PXIoKXx8aT09PWwoKSlyZXR1cm4gbnVsbDtpLmFzc2lnbmVkU2xvdCYmKGk9aS5hc3NpZ25lZFNsb3QpO2NvbnN0IHM9aS5jbG9zZXN0KHQpO3JldHVybiBzfHxpLmdldFJvb3ROb2RlP3N8fGUoaS5nZXRSb290Tm9kZSgpLmhvc3QpOm51bGx9KGUpfShnLGRbMF0pOmQuY2xvc2VzdChnKVswXSkpcmV0dXJuIHZvaWQoZS5hbGxvd0NsaWNrPSEwKTtpZihuLnN3aXBlSGFuZGxlciYmIWQuY2xvc2VzdChuLnN3aXBlSGFuZGxlcilbMF0pcmV0dXJuO28uY3VycmVudFg9InRvdWNoc3RhcnQiPT09aC50eXBlP2gudGFyZ2V0VG91Y2hlc1swXS5wYWdlWDpoLnBhZ2VYLG8uY3VycmVudFk9InRvdWNoc3RhcnQiPT09aC50eXBlP2gudGFyZ2V0VG91Y2hlc1swXS5wYWdlWTpoLnBhZ2VZO2NvbnN0IHY9by5jdXJyZW50WCxiPW8uY3VycmVudFkseT1uLmVkZ2VTd2lwZURldGVjdGlvbnx8bi5pT1NFZGdlU3dpcGVEZXRlY3Rpb24sdz1uLmVkZ2VTd2lwZVRocmVzaG9sZHx8bi5pT1NFZGdlU3dpcGVUaHJlc2hvbGQ7aWYoeSYmKHY8PXd8fHY+PXMuaW5uZXJXaWR0aC13KSl7aWYoInByZXZlbnQiIT09eSlyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpfWlmKE9iamVjdC5hc3NpZ24oYSx7aXNUb3VjaGVkOiEwLGlzTW92ZWQ6ITEsYWxsb3dUb3VjaENhbGxiYWNrczohMCxpc1Njcm9sbGluZzp2b2lkIDAsc3RhcnRNb3Zpbmc6dm9pZCAwfSksby5zdGFydFg9dixvLnN0YXJ0WT1iLGEudG91Y2hTdGFydFRpbWU9eCgpLGUuYWxsb3dDbGljaz0hMCxlLnVwZGF0ZVNpemUoKSxlLnN3aXBlRGlyZWN0aW9uPXZvaWQgMCxuLnRocmVzaG9sZD4wJiYoYS5hbGxvd1RocmVzaG9sZE1vdmU9ITEpLCJ0b3VjaHN0YXJ0IiE9PWgudHlwZSl7bGV0IHQ9ITA7ZC5pcyhhLmZvY3VzYWJsZUVsZW1lbnRzKSYmKHQ9ITEsIlNFTEVDVCI9PT1kWzBdLm5vZGVOYW1lJiYoYS5pc1RvdWNoZWQ9ITEpKSxpLmFjdGl2ZUVsZW1lbnQmJm0oaS5hY3RpdmVFbGVtZW50KS5pcyhhLmZvY3VzYWJsZUVsZW1lbnRzKSYmaS5hY3RpdmVFbGVtZW50IT09ZFswXSYmaS5hY3RpdmVFbGVtZW50LmJsdXIoKTtjb25zdCBzPXQmJmUuYWxsb3dUb3VjaE1vdmUmJm4udG91Y2hTdGFydFByZXZlbnREZWZhdWx0OyFuLnRvdWNoU3RhcnRGb3JjZVByZXZlbnREZWZhdWx0JiYhc3x8ZFswXS5pc0NvbnRlbnRFZGl0YWJsZXx8aC5wcmV2ZW50RGVmYXVsdCgpfWUucGFyYW1zLmZyZWVNb2RlJiZlLnBhcmFtcy5mcmVlTW9kZS5lbmFibGVkJiZlLmZyZWVNb2RlJiZlLmFuaW1hdGluZyYmIW4uY3NzTW9kZSYmZS5mcmVlTW9kZS5vblRvdWNoU3RhcnQoKSxlLmVtaXQoInRvdWNoU3RhcnQiLGgpfWZ1bmN0aW9uIEkodCl7Y29uc3QgZT1yKCksaT10aGlzLHM9aS50b3VjaEV2ZW50c0RhdGEse3BhcmFtczphLHRvdWNoZXM6bixydGxUcmFuc2xhdGU6byxlbmFibGVkOmx9PWk7aWYoIWwpcmV0dXJuO2xldCBjPXQ7aWYoYy5vcmlnaW5hbEV2ZW50JiYoYz1jLm9yaWdpbmFsRXZlbnQpLCFzLmlzVG91Y2hlZClyZXR1cm4gdm9pZChzLnN0YXJ0TW92aW5nJiZzLmlzU2Nyb2xsaW5nJiZpLmVtaXQoInRvdWNoTW92ZU9wcG9zaXRlIixjKSk7aWYocy5pc1RvdWNoRXZlbnQmJiJ0b3VjaG1vdmUiIT09Yy50eXBlKXJldHVybjtjb25zdCBoPSJ0b3VjaG1vdmUiPT09Yy50eXBlJiZjLnRhcmdldFRvdWNoZXMmJihjLnRhcmdldFRvdWNoZXNbMF18fGMuY2hhbmdlZFRvdWNoZXNbMF0pLGQ9InRvdWNobW92ZSI9PT1jLnR5cGU/aC5wYWdlWDpjLnBhZ2VYLHU9InRvdWNobW92ZSI9PT1jLnR5cGU/aC5wYWdlWTpjLnBhZ2VZO2lmKGMucHJldmVudGVkQnlOZXN0ZWRTd2lwZXIpcmV0dXJuIG4uc3RhcnRYPWQsdm9pZChuLnN0YXJ0WT11KTtpZighaS5hbGxvd1RvdWNoTW92ZSlyZXR1cm4gbShjLnRhcmdldCkuaXMocy5mb2N1c2FibGVFbGVtZW50cyl8fChpLmFsbG93Q2xpY2s9ITEpLHZvaWQocy5pc1RvdWNoZWQmJihPYmplY3QuYXNzaWduKG4se3N0YXJ0WDpkLHN0YXJ0WTp1LGN1cnJlbnRYOmQsY3VycmVudFk6dX0pLHMudG91Y2hTdGFydFRpbWU9eCgpKSk7aWYocy5pc1RvdWNoRXZlbnQmJmEudG91Y2hSZWxlYXNlT25FZGdlcyYmIWEubG9vcClpZihpLmlzVmVydGljYWwoKSl7aWYodTxuLnN0YXJ0WSYmaS50cmFuc2xhdGU8PWkubWF4VHJhbnNsYXRlKCl8fHU+bi5zdGFydFkmJmkudHJhbnNsYXRlPj1pLm1pblRyYW5zbGF0ZSgpKXJldHVybiBzLmlzVG91Y2hlZD0hMSx2b2lkKHMuaXNNb3ZlZD0hMSl9ZWxzZSBpZihkPG4uc3RhcnRYJiZpLnRyYW5zbGF0ZTw9aS5tYXhUcmFuc2xhdGUoKXx8ZD5uLnN0YXJ0WCYmaS50cmFuc2xhdGU+PWkubWluVHJhbnNsYXRlKCkpcmV0dXJuO2lmKHMuaXNUb3VjaEV2ZW50JiZlLmFjdGl2ZUVsZW1lbnQmJmMudGFyZ2V0PT09ZS5hY3RpdmVFbGVtZW50JiZtKGMudGFyZ2V0KS5pcyhzLmZvY3VzYWJsZUVsZW1lbnRzKSlyZXR1cm4gcy5pc01vdmVkPSEwLHZvaWQoaS5hbGxvd0NsaWNrPSExKTtpZihzLmFsbG93VG91Y2hDYWxsYmFja3MmJmkuZW1pdCgidG91Y2hNb3ZlIixjKSxjLnRhcmdldFRvdWNoZXMmJmMudGFyZ2V0VG91Y2hlcy5sZW5ndGg+MSlyZXR1cm47bi5jdXJyZW50WD1kLG4uY3VycmVudFk9dTtjb25zdCBwPW4uY3VycmVudFgtbi5zdGFydFgsZz1uLmN1cnJlbnRZLW4uc3RhcnRZO2lmKGkucGFyYW1zLnRocmVzaG9sZCYmTWF0aC5zcXJ0KHAqKjIrZyoqMik8aS5wYXJhbXMudGhyZXNob2xkKXJldHVybjtpZih2b2lkIDA9PT1zLmlzU2Nyb2xsaW5nKXtsZXQgdDtpLmlzSG9yaXpvbnRhbCgpJiZuLmN1cnJlbnRZPT09bi5zdGFydFl8fGkuaXNWZXJ0aWNhbCgpJiZuLmN1cnJlbnRYPT09bi5zdGFydFg/cy5pc1Njcm9sbGluZz0hMTpwKnArZypnPj0yNSYmKHQ9MTgwKk1hdGguYXRhbjIoTWF0aC5hYnMoZyksTWF0aC5hYnMocCkpL01hdGguUEkscy5pc1Njcm9sbGluZz1pLmlzSG9yaXpvbnRhbCgpP3Q+YS50b3VjaEFuZ2xlOjkwLXQ+YS50b3VjaEFuZ2xlKX1pZihzLmlzU2Nyb2xsaW5nJiZpLmVtaXQoInRvdWNoTW92ZU9wcG9zaXRlIixjKSx2b2lkIDA9PT1zLnN0YXJ0TW92aW5nJiYobi5jdXJyZW50WD09PW4uc3RhcnRYJiZuLmN1cnJlbnRZPT09bi5zdGFydFl8fChzLnN0YXJ0TW92aW5nPSEwKSkscy5pc1Njcm9sbGluZylyZXR1cm4gdm9pZChzLmlzVG91Y2hlZD0hMSk7aWYoIXMuc3RhcnRNb3ZpbmcpcmV0dXJuO2kuYWxsb3dDbGljaz0hMSwhYS5jc3NNb2RlJiZjLmNhbmNlbGFibGUmJmMucHJldmVudERlZmF1bHQoKSxhLnRvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbiYmIWEubmVzdGVkJiZjLnN0b3BQcm9wYWdhdGlvbigpLHMuaXNNb3ZlZHx8KGEubG9vcCYmIWEuY3NzTW9kZSYmaS5sb29wRml4KCkscy5zdGFydFRyYW5zbGF0ZT1pLmdldFRyYW5zbGF0ZSgpLGkuc2V0VHJhbnNpdGlvbigwKSxpLmFuaW1hdGluZyYmaS4kd3JhcHBlckVsLnRyaWdnZXIoIndlYmtpdFRyYW5zaXRpb25FbmQgdHJhbnNpdGlvbmVuZCIpLHMuYWxsb3dNb21lbnR1bUJvdW5jZT0hMSwhYS5ncmFiQ3Vyc29yfHwhMCE9PWkuYWxsb3dTbGlkZU5leHQmJiEwIT09aS5hbGxvd1NsaWRlUHJldnx8aS5zZXRHcmFiQ3Vyc29yKCEwKSxpLmVtaXQoInNsaWRlckZpcnN0TW92ZSIsYykpLGkuZW1pdCgic2xpZGVyTW92ZSIsYykscy5pc01vdmVkPSEwO2xldCBmPWkuaXNIb3Jpem9udGFsKCk/cDpnO24uZGlmZj1mLGYqPWEudG91Y2hSYXRpbyxvJiYoZj0tZiksaS5zd2lwZURpcmVjdGlvbj1mPjA/InByZXYiOiJuZXh0IixzLmN1cnJlbnRUcmFuc2xhdGU9ZitzLnN0YXJ0VHJhbnNsYXRlO2xldCB2PSEwLGI9YS5yZXNpc3RhbmNlUmF0aW87aWYoYS50b3VjaFJlbGVhc2VPbkVkZ2VzJiYoYj0wKSxmPjAmJnMuY3VycmVudFRyYW5zbGF0ZT5pLm1pblRyYW5zbGF0ZSgpPyh2PSExLGEucmVzaXN0YW5jZSYmKHMuY3VycmVudFRyYW5zbGF0ZT1pLm1pblRyYW5zbGF0ZSgpLTErKC1pLm1pblRyYW5zbGF0ZSgpK3Muc3RhcnRUcmFuc2xhdGUrZikqKmIpKTpmPDAmJnMuY3VycmVudFRyYW5zbGF0ZTxpLm1heFRyYW5zbGF0ZSgpJiYodj0hMSxhLnJlc2lzdGFuY2UmJihzLmN1cnJlbnRUcmFuc2xhdGU9aS5tYXhUcmFuc2xhdGUoKSsxLShpLm1heFRyYW5zbGF0ZSgpLXMuc3RhcnRUcmFuc2xhdGUtZikqKmIpKSx2JiYoYy5wcmV2ZW50ZWRCeU5lc3RlZFN3aXBlcj0hMCksIWkuYWxsb3dTbGlkZU5leHQmJiJuZXh0Ij09PWkuc3dpcGVEaXJlY3Rpb24mJnMuY3VycmVudFRyYW5zbGF0ZTxzLnN0YXJ0VHJhbnNsYXRlJiYocy5jdXJyZW50VHJhbnNsYXRlPXMuc3RhcnRUcmFuc2xhdGUpLCFpLmFsbG93U2xpZGVQcmV2JiYicHJldiI9PT1pLnN3aXBlRGlyZWN0aW9uJiZzLmN1cnJlbnRUcmFuc2xhdGU+cy5zdGFydFRyYW5zbGF0ZSYmKHMuY3VycmVudFRyYW5zbGF0ZT1zLnN0YXJ0VHJhbnNsYXRlKSxpLmFsbG93U2xpZGVQcmV2fHxpLmFsbG93U2xpZGVOZXh0fHwocy5jdXJyZW50VHJhbnNsYXRlPXMuc3RhcnRUcmFuc2xhdGUpLGEudGhyZXNob2xkPjApe2lmKCEoTWF0aC5hYnMoZik+YS50aHJlc2hvbGR8fHMuYWxsb3dUaHJlc2hvbGRNb3ZlKSlyZXR1cm4gdm9pZChzLmN1cnJlbnRUcmFuc2xhdGU9cy5zdGFydFRyYW5zbGF0ZSk7aWYoIXMuYWxsb3dUaHJlc2hvbGRNb3ZlKXJldHVybiBzLmFsbG93VGhyZXNob2xkTW92ZT0hMCxuLnN0YXJ0WD1uLmN1cnJlbnRYLG4uc3RhcnRZPW4uY3VycmVudFkscy5jdXJyZW50VHJhbnNsYXRlPXMuc3RhcnRUcmFuc2xhdGUsdm9pZChuLmRpZmY9aS5pc0hvcml6b250YWwoKT9uLmN1cnJlbnRYLW4uc3RhcnRYOm4uY3VycmVudFktbi5zdGFydFkpfWEuZm9sbG93RmluZ2VyJiYhYS5jc3NNb2RlJiYoKGEuZnJlZU1vZGUmJmEuZnJlZU1vZGUuZW5hYmxlZCYmaS5mcmVlTW9kZXx8YS53YXRjaFNsaWRlc1Byb2dyZXNzKSYmKGkudXBkYXRlQWN0aXZlSW5kZXgoKSxpLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSksaS5wYXJhbXMuZnJlZU1vZGUmJmEuZnJlZU1vZGUuZW5hYmxlZCYmaS5mcmVlTW9kZSYmaS5mcmVlTW9kZS5vblRvdWNoTW92ZSgpLGkudXBkYXRlUHJvZ3Jlc3Mocy5jdXJyZW50VHJhbnNsYXRlKSxpLnNldFRyYW5zbGF0ZShzLmN1cnJlbnRUcmFuc2xhdGUpKX1mdW5jdGlvbiBGKHQpe2NvbnN0IGU9dGhpcyxpPWUudG91Y2hFdmVudHNEYXRhLHtwYXJhbXM6cyx0b3VjaGVzOmEscnRsVHJhbnNsYXRlOm4sc2xpZGVzR3JpZDpyLGVuYWJsZWQ6b309ZTtpZighbylyZXR1cm47bGV0IGw9dDtpZihsLm9yaWdpbmFsRXZlbnQmJihsPWwub3JpZ2luYWxFdmVudCksaS5hbGxvd1RvdWNoQ2FsbGJhY2tzJiZlLmVtaXQoInRvdWNoRW5kIixsKSxpLmFsbG93VG91Y2hDYWxsYmFja3M9ITEsIWkuaXNUb3VjaGVkKXJldHVybiBpLmlzTW92ZWQmJnMuZ3JhYkN1cnNvciYmZS5zZXRHcmFiQ3Vyc29yKCExKSxpLmlzTW92ZWQ9ITEsdm9pZChpLnN0YXJ0TW92aW5nPSExKTtzLmdyYWJDdXJzb3ImJmkuaXNNb3ZlZCYmaS5pc1RvdWNoZWQmJighMD09PWUuYWxsb3dTbGlkZU5leHR8fCEwPT09ZS5hbGxvd1NsaWRlUHJldikmJmUuc2V0R3JhYkN1cnNvcighMSk7Y29uc3QgYz14KCksaD1jLWkudG91Y2hTdGFydFRpbWU7aWYoZS5hbGxvd0NsaWNrKXtjb25zdCB0PWwucGF0aHx8bC5jb21wb3NlZFBhdGgmJmwuY29tcG9zZWRQYXRoKCk7ZS51cGRhdGVDbGlja2VkU2xpZGUodCYmdFswXXx8bC50YXJnZXQpLGUuZW1pdCgidGFwIGNsaWNrIixsKSxoPDMwMCYmYy1pLmxhc3RDbGlja1RpbWU8MzAwJiZlLmVtaXQoImRvdWJsZVRhcCBkb3VibGVDbGljayIsbCl9aWYoaS5sYXN0Q2xpY2tUaW1lPXgoKSx2KCgoKT0+e2UuZGVzdHJveWVkfHwoZS5hbGxvd0NsaWNrPSEwKX0pKSwhaS5pc1RvdWNoZWR8fCFpLmlzTW92ZWR8fCFlLnN3aXBlRGlyZWN0aW9ufHwwPT09YS5kaWZmfHxpLmN1cnJlbnRUcmFuc2xhdGU9PT1pLnN0YXJ0VHJhbnNsYXRlKXJldHVybiBpLmlzVG91Y2hlZD0hMSxpLmlzTW92ZWQ9ITEsdm9pZChpLnN0YXJ0TW92aW5nPSExKTtsZXQgZDtpZihpLmlzVG91Y2hlZD0hMSxpLmlzTW92ZWQ9ITEsaS5zdGFydE1vdmluZz0hMSxkPXMuZm9sbG93RmluZ2VyP24/ZS50cmFuc2xhdGU6LWUudHJhbnNsYXRlOi1pLmN1cnJlbnRUcmFuc2xhdGUscy5jc3NNb2RlKXJldHVybjtpZihlLnBhcmFtcy5mcmVlTW9kZSYmcy5mcmVlTW9kZS5lbmFibGVkKXJldHVybiB2b2lkIGUuZnJlZU1vZGUub25Ub3VjaEVuZCh7Y3VycmVudFBvczpkfSk7bGV0IHU9MCxwPWUuc2xpZGVzU2l6ZXNHcmlkWzBdO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCs9dDxzLnNsaWRlc1Blckdyb3VwU2tpcD8xOnMuc2xpZGVzUGVyR3JvdXApe2NvbnN0IGU9dDxzLnNsaWRlc1Blckdyb3VwU2tpcC0xPzE6cy5zbGlkZXNQZXJHcm91cDt2b2lkIDAhPT1yW3QrZV0/ZD49clt0XSYmZDxyW3QrZV0mJih1PXQscD1yW3QrZV0tclt0XSk6ZD49clt0XSYmKHU9dCxwPXJbci5sZW5ndGgtMV0tcltyLmxlbmd0aC0yXSl9bGV0IGc9bnVsbCxmPW51bGw7cy5yZXdpbmQmJihlLmlzQmVnaW5uaW5nP2Y9ZS5wYXJhbXMudmlydHVhbCYmZS5wYXJhbXMudmlydHVhbC5lbmFibGVkJiZlLnZpcnR1YWw/ZS52aXJ0dWFsLnNsaWRlcy5sZW5ndGgtMTplLnNsaWRlcy5sZW5ndGgtMTplLmlzRW5kJiYoZz0wKSk7Y29uc3QgbT0oZC1yW3VdKS9wLGI9dTxzLnNsaWRlc1Blckdyb3VwU2tpcC0xPzE6cy5zbGlkZXNQZXJHcm91cDtpZihoPnMubG9uZ1N3aXBlc01zKXtpZighcy5sb25nU3dpcGVzKXJldHVybiB2b2lkIGUuc2xpZGVUbyhlLmFjdGl2ZUluZGV4KTsibmV4dCI9PT1lLnN3aXBlRGlyZWN0aW9uJiYobT49cy5sb25nU3dpcGVzUmF0aW8/ZS5zbGlkZVRvKHMucmV3aW5kJiZlLmlzRW5kP2c6dStiKTplLnNsaWRlVG8odSkpLCJwcmV2Ij09PWUuc3dpcGVEaXJlY3Rpb24mJihtPjEtcy5sb25nU3dpcGVzUmF0aW8/ZS5zbGlkZVRvKHUrYik6bnVsbCE9PWYmJm08MCYmTWF0aC5hYnMobSk+cy5sb25nU3dpcGVzUmF0aW8/ZS5zbGlkZVRvKGYpOmUuc2xpZGVUbyh1KSl9ZWxzZXtpZighcy5zaG9ydFN3aXBlcylyZXR1cm4gdm9pZCBlLnNsaWRlVG8oZS5hY3RpdmVJbmRleCk7IWUubmF2aWdhdGlvbnx8bC50YXJnZXQhPT1lLm5hdmlnYXRpb24ubmV4dEVsJiZsLnRhcmdldCE9PWUubmF2aWdhdGlvbi5wcmV2RWw/KCJuZXh0Ij09PWUuc3dpcGVEaXJlY3Rpb24mJmUuc2xpZGVUbyhudWxsIT09Zz9nOnUrYiksInByZXYiPT09ZS5zd2lwZURpcmVjdGlvbiYmZS5zbGlkZVRvKG51bGwhPT1mP2Y6dSkpOmwudGFyZ2V0PT09ZS5uYXZpZ2F0aW9uLm5leHRFbD9lLnNsaWRlVG8odStiKTplLnNsaWRlVG8odSl9fWZ1bmN0aW9uIEQoKXtjb25zdCB0PXRoaXMse3BhcmFtczplLGVsOml9PXQ7aWYoaSYmMD09PWkub2Zmc2V0V2lkdGgpcmV0dXJuO2UuYnJlYWtwb2ludHMmJnQuc2V0QnJlYWtwb2ludCgpO2NvbnN0e2FsbG93U2xpZGVOZXh0OnMsYWxsb3dTbGlkZVByZXY6YSxzbmFwR3JpZDpufT10O3QuYWxsb3dTbGlkZU5leHQ9ITAsdC5hbGxvd1NsaWRlUHJldj0hMCx0LnVwZGF0ZVNpemUoKSx0LnVwZGF0ZVNsaWRlcygpLHQudXBkYXRlU2xpZGVzQ2xhc3NlcygpLCgiYXV0byI9PT1lLnNsaWRlc1BlclZpZXd8fGUuc2xpZGVzUGVyVmlldz4xKSYmdC5pc0VuZCYmIXQuaXNCZWdpbm5pbmcmJiF0LnBhcmFtcy5jZW50ZXJlZFNsaWRlcz90LnNsaWRlVG8odC5zbGlkZXMubGVuZ3RoLTEsMCwhMSwhMCk6dC5zbGlkZVRvKHQuYWN0aXZlSW5kZXgsMCwhMSwhMCksdC5hdXRvcGxheSYmdC5hdXRvcGxheS5ydW5uaW5nJiZ0LmF1dG9wbGF5LnBhdXNlZCYmdC5hdXRvcGxheS5ydW4oKSx0LmFsbG93U2xpZGVQcmV2PWEsdC5hbGxvd1NsaWRlTmV4dD1zLHQucGFyYW1zLndhdGNoT3ZlcmZsb3cmJm4hPT10LnNuYXBHcmlkJiZ0LmNoZWNrT3ZlcmZsb3coKX1mdW5jdGlvbiB6KHQpe2NvbnN0IGU9dGhpcztlLmVuYWJsZWQmJihlLmFsbG93Q2xpY2t8fChlLnBhcmFtcy5wcmV2ZW50Q2xpY2tzJiZ0LnByZXZlbnREZWZhdWx0KCksZS5wYXJhbXMucHJldmVudENsaWNrc1Byb3BhZ2F0aW9uJiZlLmFuaW1hdGluZyYmKHQuc3RvcFByb3BhZ2F0aW9uKCksdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSkpKX1mdW5jdGlvbiBOKCl7Y29uc3QgdD10aGlzLHt3cmFwcGVyRWw6ZSxydGxUcmFuc2xhdGU6aSxlbmFibGVkOnN9PXQ7aWYoIXMpcmV0dXJuO2xldCBhO3QucHJldmlvdXNUcmFuc2xhdGU9dC50cmFuc2xhdGUsdC5pc0hvcml6b250YWwoKT90LnRyYW5zbGF0ZT0tZS5zY3JvbGxMZWZ0OnQudHJhbnNsYXRlPS1lLnNjcm9sbFRvcCwwPT09dC50cmFuc2xhdGUmJih0LnRyYW5zbGF0ZT0wKSx0LnVwZGF0ZUFjdGl2ZUluZGV4KCksdC51cGRhdGVTbGlkZXNDbGFzc2VzKCk7Y29uc3Qgbj10Lm1heFRyYW5zbGF0ZSgpLXQubWluVHJhbnNsYXRlKCk7YT0wPT09bj8wOih0LnRyYW5zbGF0ZS10Lm1pblRyYW5zbGF0ZSgpKS9uLGEhPT10LnByb2dyZXNzJiZ0LnVwZGF0ZVByb2dyZXNzKGk/LXQudHJhbnNsYXRlOnQudHJhbnNsYXRlKSx0LmVtaXQoInNldFRyYW5zbGF0ZSIsdC50cmFuc2xhdGUsITEpfWxldCBSPSExO2Z1bmN0aW9uIF8oKXt9Y29uc3QgQj0odCxlKT0+e2NvbnN0IGk9cigpLHtwYXJhbXM6cyx0b3VjaEV2ZW50czphLGVsOm4sd3JhcHBlckVsOm8sZGV2aWNlOmwsc3VwcG9ydDpjfT10LGg9ISFzLm5lc3RlZCxkPSJvbiI9PT1lPyJhZGRFdmVudExpc3RlbmVyIjoicmVtb3ZlRXZlbnRMaXN0ZW5lciIsdT1lO2lmKGMudG91Y2gpe2NvbnN0IGU9ISgidG91Y2hzdGFydCIhPT1hLnN0YXJ0fHwhYy5wYXNzaXZlTGlzdGVuZXJ8fCFzLnBhc3NpdmVMaXN0ZW5lcnMpJiZ7cGFzc2l2ZTohMCxjYXB0dXJlOiExfTtuW2RdKGEuc3RhcnQsdC5vblRvdWNoU3RhcnQsZSksbltkXShhLm1vdmUsdC5vblRvdWNoTW92ZSxjLnBhc3NpdmVMaXN0ZW5lcj97cGFzc2l2ZTohMSxjYXB0dXJlOmh9OmgpLG5bZF0oYS5lbmQsdC5vblRvdWNoRW5kLGUpLGEuY2FuY2VsJiZuW2RdKGEuY2FuY2VsLHQub25Ub3VjaEVuZCxlKX1lbHNlIG5bZF0oYS5zdGFydCx0Lm9uVG91Y2hTdGFydCwhMSksaVtkXShhLm1vdmUsdC5vblRvdWNoTW92ZSxoKSxpW2RdKGEuZW5kLHQub25Ub3VjaEVuZCwhMSk7KHMucHJldmVudENsaWNrc3x8cy5wcmV2ZW50Q2xpY2tzUHJvcGFnYXRpb24pJiZuW2RdKCJjbGljayIsdC5vbkNsaWNrLCEwKSxzLmNzc01vZGUmJm9bZF0oInNjcm9sbCIsdC5vblNjcm9sbCkscy51cGRhdGVPbldpbmRvd1Jlc2l6ZT90W3VdKGwuaW9zfHxsLmFuZHJvaWQ/InJlc2l6ZSBvcmllbnRhdGlvbmNoYW5nZSBvYnNlcnZlclVwZGF0ZSI6InJlc2l6ZSBvYnNlcnZlclVwZGF0ZSIsRCwhMCk6dFt1XSgib2JzZXJ2ZXJVcGRhdGUiLEQsITApfTt2YXIgWD17YXR0YWNoRXZlbnRzOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLGU9cigpLHtwYXJhbXM6aSxzdXBwb3J0OnN9PXQ7dC5vblRvdWNoU3RhcnQ9Ty5iaW5kKHQpLHQub25Ub3VjaE1vdmU9SS5iaW5kKHQpLHQub25Ub3VjaEVuZD1GLmJpbmQodCksaS5jc3NNb2RlJiYodC5vblNjcm9sbD1OLmJpbmQodCkpLHQub25DbGljaz16LmJpbmQodCkscy50b3VjaCYmIVImJihlLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLF8pLFI9ITApLEIodCwib24iKX0sZGV0YWNoRXZlbnRzOmZ1bmN0aW9uKCl7Qih0aGlzLCJvZmYiKX19O2NvbnN0IEg9KHQsZSk9PnQuZ3JpZCYmZS5ncmlkJiZlLmdyaWQucm93cz4xO3ZhciBZPXthZGRDbGFzc2VzOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLHtjbGFzc05hbWVzOmUscGFyYW1zOmkscnRsOnMsJGVsOmEsZGV2aWNlOm4sc3VwcG9ydDpyfT10LG89ZnVuY3Rpb24odCxlKXtjb25zdCBpPVtdO3JldHVybiB0LmZvckVhY2goKHQ9Pnsib2JqZWN0Ij09dHlwZW9mIHQ/T2JqZWN0LmtleXModCkuZm9yRWFjaCgocz0+e3Rbc10mJmkucHVzaChlK3MpfSkpOiJzdHJpbmciPT10eXBlb2YgdCYmaS5wdXNoKGUrdCl9KSksaX0oWyJpbml0aWFsaXplZCIsaS5kaXJlY3Rpb24seyJwb2ludGVyLWV2ZW50cyI6IXIudG91Y2h9LHsiZnJlZS1tb2RlIjp0LnBhcmFtcy5mcmVlTW9kZSYmaS5mcmVlTW9kZS5lbmFibGVkfSx7YXV0b2hlaWdodDppLmF1dG9IZWlnaHR9LHtydGw6c30se2dyaWQ6aS5ncmlkJiZpLmdyaWQucm93cz4xfSx7ImdyaWQtY29sdW1uIjppLmdyaWQmJmkuZ3JpZC5yb3dzPjEmJiJjb2x1bW4iPT09aS5ncmlkLmZpbGx9LHthbmRyb2lkOm4uYW5kcm9pZH0se2lvczpuLmlvc30seyJjc3MtbW9kZSI6aS5jc3NNb2RlfSx7Y2VudGVyZWQ6aS5jc3NNb2RlJiZpLmNlbnRlcmVkU2xpZGVzfSx7IndhdGNoLXByb2dyZXNzIjppLndhdGNoU2xpZGVzUHJvZ3Jlc3N9XSxpLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MpO2UucHVzaCguLi5vKSxhLmFkZENsYXNzKFsuLi5lXS5qb2luKCIgIikpLHQuZW1pdENvbnRhaW5lckNsYXNzZXMoKX0scmVtb3ZlQ2xhc3NlczpmdW5jdGlvbigpe2NvbnN0eyRlbDp0LGNsYXNzTmFtZXM6ZX09dGhpczt0LnJlbW92ZUNsYXNzKGUuam9pbigiICIpKSx0aGlzLmVtaXRDb250YWluZXJDbGFzc2VzKCl9fSxXPXtpbml0OiEwLGRpcmVjdGlvbjoiaG9yaXpvbnRhbCIsdG91Y2hFdmVudHNUYXJnZXQ6IndyYXBwZXIiLGluaXRpYWxTbGlkZTowLHNwZWVkOjMwMCxjc3NNb2RlOiExLHVwZGF0ZU9uV2luZG93UmVzaXplOiEwLHJlc2l6ZU9ic2VydmVyOiEwLG5lc3RlZDohMSxjcmVhdGVFbGVtZW50czohMSxlbmFibGVkOiEwLGZvY3VzYWJsZUVsZW1lbnRzOiJpbnB1dCwgc2VsZWN0LCBvcHRpb24sIHRleHRhcmVhLCBidXR0b24sIHZpZGVvLCBsYWJlbCIsd2lkdGg6bnVsbCxoZWlnaHQ6bnVsbCxwcmV2ZW50SW50ZXJhY3Rpb25PblRyYW5zaXRpb246ITEsdXNlckFnZW50Om51bGwsdXJsOm51bGwsZWRnZVN3aXBlRGV0ZWN0aW9uOiExLGVkZ2VTd2lwZVRocmVzaG9sZDoyMCxhdXRvSGVpZ2h0OiExLHNldFdyYXBwZXJTaXplOiExLHZpcnR1YWxUcmFuc2xhdGU6ITEsZWZmZWN0OiJzbGlkZSIsYnJlYWtwb2ludHM6dm9pZCAwLGJyZWFrcG9pbnRzQmFzZToid2luZG93IixzcGFjZUJldHdlZW46MCxzbGlkZXNQZXJWaWV3OjEsc2xpZGVzUGVyR3JvdXA6MSxzbGlkZXNQZXJHcm91cFNraXA6MCxzbGlkZXNQZXJHcm91cEF1dG86ITEsY2VudGVyZWRTbGlkZXM6ITEsY2VudGVyZWRTbGlkZXNCb3VuZHM6ITEsc2xpZGVzT2Zmc2V0QmVmb3JlOjAsc2xpZGVzT2Zmc2V0QWZ0ZXI6MCxub3JtYWxpemVTbGlkZUluZGV4OiEwLGNlbnRlckluc3VmZmljaWVudFNsaWRlczohMSx3YXRjaE92ZXJmbG93OiEwLHJvdW5kTGVuZ3RoczohMSx0b3VjaFJhdGlvOjEsdG91Y2hBbmdsZTo0NSxzaW11bGF0ZVRvdWNoOiEwLHNob3J0U3dpcGVzOiEwLGxvbmdTd2lwZXM6ITAsbG9uZ1N3aXBlc1JhdGlvOi41LGxvbmdTd2lwZXNNczozMDAsZm9sbG93RmluZ2VyOiEwLGFsbG93VG91Y2hNb3ZlOiEwLHRocmVzaG9sZDowLHRvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbjohMSx0b3VjaFN0YXJ0UHJldmVudERlZmF1bHQ6ITAsdG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQ6ITEsdG91Y2hSZWxlYXNlT25FZGdlczohMSx1bmlxdWVOYXZFbGVtZW50czohMCxyZXNpc3RhbmNlOiEwLHJlc2lzdGFuY2VSYXRpbzouODUsd2F0Y2hTbGlkZXNQcm9ncmVzczohMSxncmFiQ3Vyc29yOiExLHByZXZlbnRDbGlja3M6ITAscHJldmVudENsaWNrc1Byb3BhZ2F0aW9uOiEwLHNsaWRlVG9DbGlja2VkU2xpZGU6ITEscHJlbG9hZEltYWdlczohMCx1cGRhdGVPbkltYWdlc1JlYWR5OiEwLGxvb3A6ITEsbG9vcEFkZGl0aW9uYWxTbGlkZXM6MCxsb29wZWRTbGlkZXM6bnVsbCxsb29wZWRTbGlkZXNMaW1pdDohMCxsb29wRmlsbEdyb3VwV2l0aEJsYW5rOiExLGxvb3BQcmV2ZW50c1NsaWRlOiEwLHJld2luZDohMSxhbGxvd1NsaWRlUHJldjohMCxhbGxvd1NsaWRlTmV4dDohMCxzd2lwZUhhbmRsZXI6bnVsbCxub1N3aXBpbmc6ITAsbm9Td2lwaW5nQ2xhc3M6InN3aXBlci1uby1zd2lwaW5nIixub1N3aXBpbmdTZWxlY3RvcjpudWxsLHBhc3NpdmVMaXN0ZW5lcnM6ITAsbWF4QmFja2ZhY2VIaWRkZW5TbGlkZXM6MTAsY29udGFpbmVyTW9kaWZpZXJDbGFzczoic3dpcGVyLSIsc2xpZGVDbGFzczoic3dpcGVyLXNsaWRlIixzbGlkZUJsYW5rQ2xhc3M6InN3aXBlci1zbGlkZS1pbnZpc2libGUtYmxhbmsiLHNsaWRlQWN0aXZlQ2xhc3M6InN3aXBlci1zbGlkZS1hY3RpdmUiLHNsaWRlRHVwbGljYXRlQWN0aXZlQ2xhc3M6InN3aXBlci1zbGlkZS1kdXBsaWNhdGUtYWN0aXZlIixzbGlkZVZpc2libGVDbGFzczoic3dpcGVyLXNsaWRlLXZpc2libGUiLHNsaWRlRHVwbGljYXRlQ2xhc3M6InN3aXBlci1zbGlkZS1kdXBsaWNhdGUiLHNsaWRlTmV4dENsYXNzOiJzd2lwZXItc2xpZGUtbmV4dCIsc2xpZGVEdXBsaWNhdGVOZXh0Q2xhc3M6InN3aXBlci1zbGlkZS1kdXBsaWNhdGUtbmV4dCIsc2xpZGVQcmV2Q2xhc3M6InN3aXBlci1zbGlkZS1wcmV2IixzbGlkZUR1cGxpY2F0ZVByZXZDbGFzczoic3dpcGVyLXNsaWRlLWR1cGxpY2F0ZS1wcmV2Iix3cmFwcGVyQ2xhc3M6InN3aXBlci13cmFwcGVyIixydW5DYWxsYmFja3NPbkluaXQ6ITAsX2VtaXRDbGFzc2VzOiExfTtmdW5jdGlvbiAkKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKGk9e30pe2NvbnN0IHM9T2JqZWN0LmtleXMoaSlbMF0sYT1pW3NdOyJvYmplY3QiPT10eXBlb2YgYSYmbnVsbCE9PWE/KFsibmF2aWdhdGlvbiIsInBhZ2luYXRpb24iLCJzY3JvbGxiYXIiXS5pbmRleE9mKHMpPj0wJiYhMD09PXRbc10mJih0W3NdPXthdXRvOiEwfSkscyBpbiB0JiYiZW5hYmxlZCJpbiBhPyghMD09PXRbc10mJih0W3NdPXtlbmFibGVkOiEwfSksIm9iamVjdCIhPXR5cGVvZiB0W3NdfHwiZW5hYmxlZCJpbiB0W3NdfHwodFtzXS5lbmFibGVkPSEwKSx0W3NdfHwodFtzXT17ZW5hYmxlZDohMX0pLHkoZSxpKSk6eShlLGkpKTp5KGUsaSl9fWNvbnN0IFY9e2V2ZW50c0VtaXR0ZXI6VCx1cGRhdGU6TCx0cmFuc2xhdGU6e2dldFRyYW5zbGF0ZTpmdW5jdGlvbih0PSh0aGlzLmlzSG9yaXpvbnRhbCgpPyJ4IjoieSIpKXtjb25zdHtwYXJhbXM6ZSxydGxUcmFuc2xhdGU6aSx0cmFuc2xhdGU6cywkd3JhcHBlckVsOmF9PXRoaXM7aWYoZS52aXJ0dWFsVHJhbnNsYXRlKXJldHVybiBpPy1zOnM7aWYoZS5jc3NNb2RlKXJldHVybiBzO2xldCBuPWZ1bmN0aW9uKHQsZT0ieCIpe2NvbnN0IGk9bCgpO2xldCBzLGEsbjtjb25zdCByPWZ1bmN0aW9uKHQpe2NvbnN0IGU9bCgpO2xldCBpO3JldHVybiBlLmdldENvbXB1dGVkU3R5bGUmJihpPWUuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpKSwhaSYmdC5jdXJyZW50U3R5bGUmJihpPXQuY3VycmVudFN0eWxlKSxpfHwoaT10LnN0eWxlKSxpfSh0KTtyZXR1cm4gaS5XZWJLaXRDU1NNYXRyaXg/KGE9ci50cmFuc2Zvcm18fHIud2Via2l0VHJhbnNmb3JtLGEuc3BsaXQoIiwiKS5sZW5ndGg+NiYmKGE9YS5zcGxpdCgiLCAiKS5tYXAoKHQ9PnQucmVwbGFjZSgiLCIsIi4iKSkpLmpvaW4oIiwgIikpLG49bmV3IGkuV2ViS2l0Q1NTTWF0cml4KCJub25lIj09PWE/IiI6YSkpOihuPXIuTW96VHJhbnNmb3JtfHxyLk9UcmFuc2Zvcm18fHIuTXNUcmFuc2Zvcm18fHIubXNUcmFuc2Zvcm18fHIudHJhbnNmb3JtfHxyLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLnJlcGxhY2UoInRyYW5zbGF0ZSgiLCJtYXRyaXgoMSwgMCwgMCwgMSwiKSxzPW4udG9TdHJpbmcoKS5zcGxpdCgiLCIpKSwieCI9PT1lJiYoYT1pLldlYktpdENTU01hdHJpeD9uLm00MToxNj09PXMubGVuZ3RoP3BhcnNlRmxvYXQoc1sxMl0pOnBhcnNlRmxvYXQoc1s0XSkpLCJ5Ij09PWUmJihhPWkuV2ViS2l0Q1NTTWF0cml4P24ubTQyOjE2PT09cy5sZW5ndGg/cGFyc2VGbG9hdChzWzEzXSk6cGFyc2VGbG9hdChzWzVdKSksYXx8MH0oYVswXSx0KTtyZXR1cm4gaSYmKG49LW4pLG58fDB9LHNldFRyYW5zbGF0ZTpmdW5jdGlvbih0LGUpe2NvbnN0IGk9dGhpcyx7cnRsVHJhbnNsYXRlOnMscGFyYW1zOmEsJHdyYXBwZXJFbDpuLHdyYXBwZXJFbDpyLHByb2dyZXNzOm99PWk7bGV0IGwsYz0wLGg9MDtpLmlzSG9yaXpvbnRhbCgpP2M9cz8tdDp0Omg9dCxhLnJvdW5kTGVuZ3RocyYmKGM9TWF0aC5mbG9vcihjKSxoPU1hdGguZmxvb3IoaCkpLGEuY3NzTW9kZT9yW2kuaXNIb3Jpem9udGFsKCk/InNjcm9sbExlZnQiOiJzY3JvbGxUb3AiXT1pLmlzSG9yaXpvbnRhbCgpPy1jOi1oOmEudmlydHVhbFRyYW5zbGF0ZXx8bi50cmFuc2Zvcm0oYHRyYW5zbGF0ZTNkKCR7Y31weCwgJHtofXB4LCAwcHgpYCksaS5wcmV2aW91c1RyYW5zbGF0ZT1pLnRyYW5zbGF0ZSxpLnRyYW5zbGF0ZT1pLmlzSG9yaXpvbnRhbCgpP2M6aDtjb25zdCBkPWkubWF4VHJhbnNsYXRlKCktaS5taW5UcmFuc2xhdGUoKTtsPTA9PT1kPzA6KHQtaS5taW5UcmFuc2xhdGUoKSkvZCxsIT09byYmaS51cGRhdGVQcm9ncmVzcyh0KSxpLmVtaXQoInNldFRyYW5zbGF0ZSIsaS50cmFuc2xhdGUsZSl9LG1pblRyYW5zbGF0ZTpmdW5jdGlvbigpe3JldHVybi10aGlzLnNuYXBHcmlkWzBdfSxtYXhUcmFuc2xhdGU6ZnVuY3Rpb24oKXtyZXR1cm4tdGhpcy5zbmFwR3JpZFt0aGlzLnNuYXBHcmlkLmxlbmd0aC0xXX0sdHJhbnNsYXRlVG86ZnVuY3Rpb24odD0wLGU9dGhpcy5wYXJhbXMuc3BlZWQsaT0hMCxzPSEwLGEpe2NvbnN0IG49dGhpcyx7cGFyYW1zOnIsd3JhcHBlckVsOm99PW47aWYobi5hbmltYXRpbmcmJnIucHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uKXJldHVybiExO2NvbnN0IGw9bi5taW5UcmFuc2xhdGUoKSxjPW4ubWF4VHJhbnNsYXRlKCk7bGV0IGg7aWYoaD1zJiZ0Pmw/bDpzJiZ0PGM/Yzp0LG4udXBkYXRlUHJvZ3Jlc3MoaCksci5jc3NNb2RlKXtjb25zdCB0PW4uaXNIb3Jpem9udGFsKCk7aWYoMD09PWUpb1t0PyJzY3JvbGxMZWZ0Ijoic2Nyb2xsVG9wIl09LWg7ZWxzZXtpZighbi5zdXBwb3J0LnNtb290aFNjcm9sbClyZXR1cm4gayh7c3dpcGVyOm4sdGFyZ2V0UG9zaXRpb246LWgsc2lkZTp0PyJsZWZ0IjoidG9wIn0pLCEwO28uc2Nyb2xsVG8oe1t0PyJsZWZ0IjoidG9wIl06LWgsYmVoYXZpb3I6InNtb290aCJ9KX1yZXR1cm4hMH1yZXR1cm4gMD09PWU/KG4uc2V0VHJhbnNpdGlvbigwKSxuLnNldFRyYW5zbGF0ZShoKSxpJiYobi5lbWl0KCJiZWZvcmVUcmFuc2l0aW9uU3RhcnQiLGUsYSksbi5lbWl0KCJ0cmFuc2l0aW9uRW5kIikpKToobi5zZXRUcmFuc2l0aW9uKGUpLG4uc2V0VHJhbnNsYXRlKGgpLGkmJihuLmVtaXQoImJlZm9yZVRyYW5zaXRpb25TdGFydCIsZSxhKSxuLmVtaXQoInRyYW5zaXRpb25TdGFydCIpKSxuLmFuaW1hdGluZ3x8KG4uYW5pbWF0aW5nPSEwLG4ub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kfHwobi5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24odCl7biYmIW4uZGVzdHJveWVkJiZ0LnRhcmdldD09PXRoaXMmJihuLiR3cmFwcGVyRWxbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsbi5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpLG4uJHdyYXBwZXJFbFswXS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRUcmFuc2l0aW9uRW5kIixuLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCksbi5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQ9bnVsbCxkZWxldGUgbi5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQsaSYmbi5lbWl0KCJ0cmFuc2l0aW9uRW5kIikpfSksbi4kd3JhcHBlckVsWzBdLmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLG4ub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKSxuLiR3cmFwcGVyRWxbMF0uYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsbi5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpKSksITB9fSx0cmFuc2l0aW9uOntzZXRUcmFuc2l0aW9uOmZ1bmN0aW9uKHQsZSl7Y29uc3QgaT10aGlzO2kucGFyYW1zLmNzc01vZGV8fGkuJHdyYXBwZXJFbC50cmFuc2l0aW9uKHQpLGkuZW1pdCgic2V0VHJhbnNpdGlvbiIsdCxlKX0sdHJhbnNpdGlvblN0YXJ0OmZ1bmN0aW9uKHQ9ITAsZSl7Y29uc3QgaT10aGlzLHtwYXJhbXM6c309aTtzLmNzc01vZGV8fChzLmF1dG9IZWlnaHQmJmkudXBkYXRlQXV0b0hlaWdodCgpLFAoe3N3aXBlcjppLHJ1bkNhbGxiYWNrczp0LGRpcmVjdGlvbjplLHN0ZXA6IlN0YXJ0In0pKX0sdHJhbnNpdGlvbkVuZDpmdW5jdGlvbih0PSEwLGUpe2NvbnN0IGk9dGhpcyx7cGFyYW1zOnN9PWk7aS5hbmltYXRpbmc9ITEscy5jc3NNb2RlfHwoaS5zZXRUcmFuc2l0aW9uKDApLFAoe3N3aXBlcjppLHJ1bkNhbGxiYWNrczp0LGRpcmVjdGlvbjplLHN0ZXA6IkVuZCJ9KSl9fSxzbGlkZTpNLGxvb3A6e2xvb3BDcmVhdGU6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMsZT1yKCkse3BhcmFtczppLCR3cmFwcGVyRWw6c309dCxhPXMuY2hpbGRyZW4oKS5sZW5ndGg+MD9tKHMuY2hpbGRyZW4oKVswXS5wYXJlbnROb2RlKTpzO2EuY2hpbGRyZW4oYC4ke2kuc2xpZGVDbGFzc30uJHtpLnNsaWRlRHVwbGljYXRlQ2xhc3N9YCkucmVtb3ZlKCk7bGV0IG49YS5jaGlsZHJlbihgLiR7aS5zbGlkZUNsYXNzfWApO2lmKGkubG9vcEZpbGxHcm91cFdpdGhCbGFuayl7Y29uc3QgdD1pLnNsaWRlc1Blckdyb3VwLW4ubGVuZ3RoJWkuc2xpZGVzUGVyR3JvdXA7aWYodCE9PWkuc2xpZGVzUGVyR3JvdXApe2ZvcihsZXQgcz0wO3M8dDtzKz0xKXtjb25zdCB0PW0oZS5jcmVhdGVFbGVtZW50KCJkaXYiKSkuYWRkQ2xhc3MoYCR7aS5zbGlkZUNsYXNzfSAke2kuc2xpZGVCbGFua0NsYXNzfWApO2EuYXBwZW5kKHQpfW49YS5jaGlsZHJlbihgLiR7aS5zbGlkZUNsYXNzfWApfX0iYXV0byIhPT1pLnNsaWRlc1BlclZpZXd8fGkubG9vcGVkU2xpZGVzfHwoaS5sb29wZWRTbGlkZXM9bi5sZW5ndGgpLHQubG9vcGVkU2xpZGVzPU1hdGguY2VpbChwYXJzZUZsb2F0KGkubG9vcGVkU2xpZGVzfHxpLnNsaWRlc1BlclZpZXcsMTApKSx0Lmxvb3BlZFNsaWRlcys9aS5sb29wQWRkaXRpb25hbFNsaWRlcyx0Lmxvb3BlZFNsaWRlcz5uLmxlbmd0aCYmdC5wYXJhbXMubG9vcGVkU2xpZGVzTGltaXQmJih0Lmxvb3BlZFNsaWRlcz1uLmxlbmd0aCk7Y29uc3Qgbz1bXSxsPVtdO24uZWFjaCgoKHQsZSk9PnttKHQpLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IixlKX0pKTtmb3IobGV0IGU9MDtlPHQubG9vcGVkU2xpZGVzO2UrPTEpe2NvbnN0IHQ9ZS1NYXRoLmZsb29yKGUvbi5sZW5ndGgpKm4ubGVuZ3RoO2wucHVzaChuLmVxKHQpWzBdKSxvLnVuc2hpZnQobi5lcShuLmxlbmd0aC10LTEpWzBdKX1mb3IobGV0IHQ9MDt0PGwubGVuZ3RoO3QrPTEpYS5hcHBlbmQobShsW3RdLmNsb25lTm9kZSghMCkpLmFkZENsYXNzKGkuc2xpZGVEdXBsaWNhdGVDbGFzcykpO2ZvcihsZXQgdD1vLmxlbmd0aC0xO3Q+PTA7dC09MSlhLnByZXBlbmQobShvW3RdLmNsb25lTm9kZSghMCkpLmFkZENsYXNzKGkuc2xpZGVEdXBsaWNhdGVDbGFzcykpfSxsb29wRml4OmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzO3QuZW1pdCgiYmVmb3JlTG9vcEZpeCIpO2NvbnN0e2FjdGl2ZUluZGV4OmUsc2xpZGVzOmksbG9vcGVkU2xpZGVzOnMsYWxsb3dTbGlkZVByZXY6YSxhbGxvd1NsaWRlTmV4dDpuLHNuYXBHcmlkOnIscnRsVHJhbnNsYXRlOm99PXQ7bGV0IGw7dC5hbGxvd1NsaWRlUHJldj0hMCx0LmFsbG93U2xpZGVOZXh0PSEwO2NvbnN0IGM9LXJbZV0tdC5nZXRUcmFuc2xhdGUoKTtlPHM/KGw9aS5sZW5ndGgtMypzK2UsbCs9cyx0LnNsaWRlVG8obCwwLCExLCEwKSYmMCE9PWMmJnQuc2V0VHJhbnNsYXRlKChvPy10LnRyYW5zbGF0ZTp0LnRyYW5zbGF0ZSktYykpOmU+PWkubGVuZ3RoLXMmJihsPS1pLmxlbmd0aCtlK3MsbCs9cyx0LnNsaWRlVG8obCwwLCExLCEwKSYmMCE9PWMmJnQuc2V0VHJhbnNsYXRlKChvPy10LnRyYW5zbGF0ZTp0LnRyYW5zbGF0ZSktYykpLHQuYWxsb3dTbGlkZVByZXY9YSx0LmFsbG93U2xpZGVOZXh0PW4sdC5lbWl0KCJsb29wRml4Iil9LGxvb3BEZXN0cm95OmZ1bmN0aW9uKCl7Y29uc3R7JHdyYXBwZXJFbDp0LHBhcmFtczplLHNsaWRlczppfT10aGlzO3QuY2hpbGRyZW4oYC4ke2Uuc2xpZGVDbGFzc30uJHtlLnNsaWRlRHVwbGljYXRlQ2xhc3N9LC4ke2Uuc2xpZGVDbGFzc30uJHtlLnNsaWRlQmxhbmtDbGFzc31gKS5yZW1vdmUoKSxpLnJlbW92ZUF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4Iil9fSxncmFiQ3Vyc29yOntzZXRHcmFiQ3Vyc29yOmZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcztpZihlLnN1cHBvcnQudG91Y2h8fCFlLnBhcmFtcy5zaW11bGF0ZVRvdWNofHxlLnBhcmFtcy53YXRjaE92ZXJmbG93JiZlLmlzTG9ja2VkfHxlLnBhcmFtcy5jc3NNb2RlKXJldHVybjtjb25zdCBpPSJjb250YWluZXIiPT09ZS5wYXJhbXMudG91Y2hFdmVudHNUYXJnZXQ/ZS5lbDplLndyYXBwZXJFbDtpLnN0eWxlLmN1cnNvcj0ibW92ZSIsaS5zdHlsZS5jdXJzb3I9dD8iZ3JhYmJpbmciOiJncmFiIn0sdW5zZXRHcmFiQ3Vyc29yOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzO3Quc3VwcG9ydC50b3VjaHx8dC5wYXJhbXMud2F0Y2hPdmVyZmxvdyYmdC5pc0xvY2tlZHx8dC5wYXJhbXMuY3NzTW9kZXx8KHRbImNvbnRhaW5lciI9PT10LnBhcmFtcy50b3VjaEV2ZW50c1RhcmdldD8iZWwiOiJ3cmFwcGVyRWwiXS5zdHlsZS5jdXJzb3I9IiIpfX0sZXZlbnRzOlgsYnJlYWtwb2ludHM6e3NldEJyZWFrcG9pbnQ6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMse2FjdGl2ZUluZGV4OmUsaW5pdGlhbGl6ZWQ6aSxsb29wZWRTbGlkZXM6cz0wLHBhcmFtczphLCRlbDpufT10LHI9YS5icmVha3BvaW50cztpZighcnx8ciYmMD09PU9iamVjdC5rZXlzKHIpLmxlbmd0aClyZXR1cm47Y29uc3Qgbz10LmdldEJyZWFrcG9pbnQocix0LnBhcmFtcy5icmVha3BvaW50c0Jhc2UsdC5lbCk7aWYoIW98fHQuY3VycmVudEJyZWFrcG9pbnQ9PT1vKXJldHVybjtjb25zdCBsPShvIGluIHI/cltvXTp2b2lkIDApfHx0Lm9yaWdpbmFsUGFyYW1zLGM9SCh0LGEpLGg9SCh0LGwpLGQ9YS5lbmFibGVkO2MmJiFoPyhuLnJlbW92ZUNsYXNzKGAke2EuY29udGFpbmVyTW9kaWZpZXJDbGFzc31ncmlkICR7YS5jb250YWluZXJNb2RpZmllckNsYXNzfWdyaWQtY29sdW1uYCksdC5lbWl0Q29udGFpbmVyQ2xhc3NlcygpKTohYyYmaCYmKG4uYWRkQ2xhc3MoYCR7YS5jb250YWluZXJNb2RpZmllckNsYXNzfWdyaWRgKSwobC5ncmlkLmZpbGwmJiJjb2x1bW4iPT09bC5ncmlkLmZpbGx8fCFsLmdyaWQuZmlsbCYmImNvbHVtbiI9PT1hLmdyaWQuZmlsbCkmJm4uYWRkQ2xhc3MoYCR7YS5jb250YWluZXJNb2RpZmllckNsYXNzfWdyaWQtY29sdW1uYCksdC5lbWl0Q29udGFpbmVyQ2xhc3NlcygpKSxbIm5hdmlnYXRpb24iLCJwYWdpbmF0aW9uIiwic2Nyb2xsYmFyIl0uZm9yRWFjaCgoZT0+e2NvbnN0IGk9YVtlXSYmYVtlXS5lbmFibGVkLHM9bFtlXSYmbFtlXS5lbmFibGVkO2kmJiFzJiZ0W2VdLmRpc2FibGUoKSwhaSYmcyYmdFtlXS5lbmFibGUoKX0pKTtjb25zdCB1PWwuZGlyZWN0aW9uJiZsLmRpcmVjdGlvbiE9PWEuZGlyZWN0aW9uLHA9YS5sb29wJiYobC5zbGlkZXNQZXJWaWV3IT09YS5zbGlkZXNQZXJWaWV3fHx1KTt1JiZpJiZ0LmNoYW5nZURpcmVjdGlvbigpLHkodC5wYXJhbXMsbCk7Y29uc3QgZz10LnBhcmFtcy5lbmFibGVkO09iamVjdC5hc3NpZ24odCx7YWxsb3dUb3VjaE1vdmU6dC5wYXJhbXMuYWxsb3dUb3VjaE1vdmUsYWxsb3dTbGlkZU5leHQ6dC5wYXJhbXMuYWxsb3dTbGlkZU5leHQsYWxsb3dTbGlkZVByZXY6dC5wYXJhbXMuYWxsb3dTbGlkZVByZXZ9KSxkJiYhZz90LmRpc2FibGUoKTohZCYmZyYmdC5lbmFibGUoKSx0LmN1cnJlbnRCcmVha3BvaW50PW8sdC5lbWl0KCJfYmVmb3JlQnJlYWtwb2ludCIsbCkscCYmaSYmKHQubG9vcERlc3Ryb3koKSx0Lmxvb3BDcmVhdGUoKSx0LnVwZGF0ZVNsaWRlcygpLHQuc2xpZGVUbyhlLXMrdC5sb29wZWRTbGlkZXMsMCwhMSkpLHQuZW1pdCgiYnJlYWtwb2ludCIsbCl9LGdldEJyZWFrcG9pbnQ6ZnVuY3Rpb24odCxlPSJ3aW5kb3ciLGkpe2lmKCF0fHwiY29udGFpbmVyIj09PWUmJiFpKXJldHVybjtsZXQgcz0hMTtjb25zdCBhPWwoKSxuPSJ3aW5kb3ciPT09ZT9hLmlubmVySGVpZ2h0OmkuY2xpZW50SGVpZ2h0LHI9T2JqZWN0LmtleXModCkubWFwKCh0PT57aWYoInN0cmluZyI9PXR5cGVvZiB0JiYwPT09dC5pbmRleE9mKCJAIikpe2NvbnN0IGU9cGFyc2VGbG9hdCh0LnN1YnN0cigxKSk7cmV0dXJue3ZhbHVlOm4qZSxwb2ludDp0fX1yZXR1cm57dmFsdWU6dCxwb2ludDp0fX0pKTtyLnNvcnQoKCh0LGUpPT5wYXJzZUludCh0LnZhbHVlLDEwKS1wYXJzZUludChlLnZhbHVlLDEwKSkpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCs9MSl7Y29uc3R7cG9pbnQ6bix2YWx1ZTpvfT1yW3RdOyJ3aW5kb3ciPT09ZT9hLm1hdGNoTWVkaWEoYChtaW4td2lkdGg6ICR7b31weClgKS5tYXRjaGVzJiYocz1uKTpvPD1pLmNsaWVudFdpZHRoJiYocz1uKX1yZXR1cm4gc3x8Im1heCJ9fSxjaGVja092ZXJmbG93OntjaGVja092ZXJmbG93OmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLHtpc0xvY2tlZDplLHBhcmFtczppfT10LHtzbGlkZXNPZmZzZXRCZWZvcmU6c309aTtpZihzKXtjb25zdCBlPXQuc2xpZGVzLmxlbmd0aC0xLGk9dC5zbGlkZXNHcmlkW2VdK3Quc2xpZGVzU2l6ZXNHcmlkW2VdKzIqczt0LmlzTG9ja2VkPXQuc2l6ZT5pfWVsc2UgdC5pc0xvY2tlZD0xPT09dC5zbmFwR3JpZC5sZW5ndGg7ITA9PT1pLmFsbG93U2xpZGVOZXh0JiYodC5hbGxvd1NsaWRlTmV4dD0hdC5pc0xvY2tlZCksITA9PT1pLmFsbG93U2xpZGVQcmV2JiYodC5hbGxvd1NsaWRlUHJldj0hdC5pc0xvY2tlZCksZSYmZSE9PXQuaXNMb2NrZWQmJih0LmlzRW5kPSExKSxlIT09dC5pc0xvY2tlZCYmdC5lbWl0KHQuaXNMb2NrZWQ/ImxvY2siOiJ1bmxvY2siKX19LGNsYXNzZXM6WSxpbWFnZXM6e2xvYWRJbWFnZTpmdW5jdGlvbih0LGUsaSxzLGEsbil7Y29uc3Qgcj1sKCk7bGV0IG87ZnVuY3Rpb24gYygpe24mJm4oKX1tKHQpLnBhcmVudCgicGljdHVyZSIpWzBdfHx0LmNvbXBsZXRlJiZhP2MoKTplPyhvPW5ldyByLkltYWdlLG8ub25sb2FkPWMsby5vbmVycm9yPWMscyYmKG8uc2l6ZXM9cyksaSYmKG8uc3Jjc2V0PWkpLGUmJihvLnNyYz1lKSk6YygpfSxwcmVsb2FkSW1hZ2VzOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzO2Z1bmN0aW9uIGUoKXtudWxsIT10JiZ0JiYhdC5kZXN0cm95ZWQmJih2b2lkIDAhPT10LmltYWdlc0xvYWRlZCYmKHQuaW1hZ2VzTG9hZGVkKz0xKSx0LmltYWdlc0xvYWRlZD09PXQuaW1hZ2VzVG9Mb2FkLmxlbmd0aCYmKHQucGFyYW1zLnVwZGF0ZU9uSW1hZ2VzUmVhZHkmJnQudXBkYXRlKCksdC5lbWl0KCJpbWFnZXNSZWFkeSIpKSl9dC5pbWFnZXNUb0xvYWQ9dC4kZWwuZmluZCgiaW1nIik7Zm9yKGxldCBpPTA7aTx0LmltYWdlc1RvTG9hZC5sZW5ndGg7aSs9MSl7Y29uc3Qgcz10LmltYWdlc1RvTG9hZFtpXTt0LmxvYWRJbWFnZShzLHMuY3VycmVudFNyY3x8cy5nZXRBdHRyaWJ1dGUoInNyYyIpLHMuc3Jjc2V0fHxzLmdldEF0dHJpYnV0ZSgic3Jjc2V0Iikscy5zaXplc3x8cy5nZXRBdHRyaWJ1dGUoInNpemVzIiksITAsZSl9fX19LGo9e307Y2xhc3MgR3tjb25zdHJ1Y3RvciguLi50KXtsZXQgZSxpO2lmKDE9PT10Lmxlbmd0aCYmdFswXS5jb25zdHJ1Y3RvciYmIk9iamVjdCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodFswXSkuc2xpY2UoOCwtMSk/aT10WzBdOltlLGldPXQsaXx8KGk9e30pLGk9eSh7fSxpKSxlJiYhaS5lbCYmKGkuZWw9ZSksaS5lbCYmbShpLmVsKS5sZW5ndGg+MSl7Y29uc3QgdD1bXTtyZXR1cm4gbShpLmVsKS5lYWNoKChlPT57Y29uc3Qgcz15KHt9LGkse2VsOmV9KTt0LnB1c2gobmV3IEcocykpfSkpLHR9Y29uc3Qgcz10aGlzO3MuX19zd2lwZXJfXz0hMCxzLnN1cHBvcnQ9RSgpLHMuZGV2aWNlPWZ1bmN0aW9uKHQ9e30pe3JldHVybiBDfHwoQz1mdW5jdGlvbih7dXNlckFnZW50OnR9PXt9KXtjb25zdCBlPUUoKSxpPWwoKSxzPWkubmF2aWdhdG9yLnBsYXRmb3JtLGE9dHx8aS5uYXZpZ2F0b3IudXNlckFnZW50LG49e2lvczohMSxhbmRyb2lkOiExfSxyPWkuc2NyZWVuLndpZHRoLG89aS5zY3JlZW4uaGVpZ2h0LGM9YS5tYXRjaCgvKEFuZHJvaWQpOz9bXHNcL10rKFtcZC5dKyk/Lyk7bGV0IGg9YS5tYXRjaCgvKGlQYWQpLipPU1xzKFtcZF9dKykvKTtjb25zdCBkPWEubWF0Y2goLyhpUG9kKSguKk9TXHMoW1xkX10rKSk/LyksdT0haCYmYS5tYXRjaCgvKGlQaG9uZVxzT1N8aU9TKVxzKFtcZF9dKykvKSxwPSJXaW4zMiI9PT1zO2xldCBnPSJNYWNJbnRlbCI9PT1zO3JldHVybiFoJiZnJiZlLnRvdWNoJiZbIjEwMjR4MTM2NiIsIjEzNjZ4MTAyNCIsIjgzNHgxMTk0IiwiMTE5NHg4MzQiLCI4MzR4MTExMiIsIjExMTJ4ODM0IiwiNzY4eDEwMjQiLCIxMDI0eDc2OCIsIjgyMHgxMTgwIiwiMTE4MHg4MjAiLCI4MTB4MTA4MCIsIjEwODB4ODEwIl0uaW5kZXhPZihgJHtyfXgke299YCk+PTAmJihoPWEubWF0Y2goLyhWZXJzaW9uKVwvKFtcZC5dKykvKSxofHwoaD1bMCwxLCIxM18wXzAiXSksZz0hMSksYyYmIXAmJihuLm9zPSJhbmRyb2lkIixuLmFuZHJvaWQ9ITApLChofHx1fHxkKSYmKG4ub3M9ImlvcyIsbi5pb3M9ITApLG59KHQpKSxDfSh7dXNlckFnZW50OmkudXNlckFnZW50fSkscy5icm93c2VyPShBfHwoQT1mdW5jdGlvbigpe2NvbnN0IHQ9bCgpO3JldHVybntpc1NhZmFyaTpmdW5jdGlvbigpe2NvbnN0IGU9dC5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7cmV0dXJuIGUuaW5kZXhPZigic2FmYXJpIik+PTAmJmUuaW5kZXhPZigiY2hyb21lIik8MCYmZS5pbmRleE9mKCJhbmRyb2lkIik8MH0oKSxpc1dlYlZpZXc6LyhpUGhvbmV8aVBvZHxpUGFkKS4qQXBwbGVXZWJLaXQoPyEuKlNhZmFyaSkvaS50ZXN0KHQubmF2aWdhdG9yLnVzZXJBZ2VudCl9fSgpKSxBKSxzLmV2ZW50c0xpc3RlbmVycz17fSxzLmV2ZW50c0FueUxpc3RlbmVycz1bXSxzLm1vZHVsZXM9Wy4uLnMuX19tb2R1bGVzX19dLGkubW9kdWxlcyYmQXJyYXkuaXNBcnJheShpLm1vZHVsZXMpJiZzLm1vZHVsZXMucHVzaCguLi5pLm1vZHVsZXMpO2NvbnN0IGE9e307cy5tb2R1bGVzLmZvckVhY2goKHQ9Pnt0KHtzd2lwZXI6cyxleHRlbmRQYXJhbXM6JChpLGEpLG9uOnMub24uYmluZChzKSxvbmNlOnMub25jZS5iaW5kKHMpLG9mZjpzLm9mZi5iaW5kKHMpLGVtaXQ6cy5lbWl0LmJpbmQocyl9KX0pKTtjb25zdCBuPXkoe30sVyxhKTtyZXR1cm4gcy5wYXJhbXM9eSh7fSxuLGosaSkscy5vcmlnaW5hbFBhcmFtcz15KHt9LHMucGFyYW1zKSxzLnBhc3NlZFBhcmFtcz15KHt9LGkpLHMucGFyYW1zJiZzLnBhcmFtcy5vbiYmT2JqZWN0LmtleXMocy5wYXJhbXMub24pLmZvckVhY2goKHQ9PntzLm9uKHQscy5wYXJhbXMub25bdF0pfSkpLHMucGFyYW1zJiZzLnBhcmFtcy5vbkFueSYmcy5vbkFueShzLnBhcmFtcy5vbkFueSkscy4kPW0sT2JqZWN0LmFzc2lnbihzLHtlbmFibGVkOnMucGFyYW1zLmVuYWJsZWQsZWw6ZSxjbGFzc05hbWVzOltdLHNsaWRlczptKCksc2xpZGVzR3JpZDpbXSxzbmFwR3JpZDpbXSxzbGlkZXNTaXplc0dyaWQ6W10saXNIb3Jpem9udGFsOigpPT4iaG9yaXpvbnRhbCI9PT1zLnBhcmFtcy5kaXJlY3Rpb24saXNWZXJ0aWNhbDooKT0+InZlcnRpY2FsIj09PXMucGFyYW1zLmRpcmVjdGlvbixhY3RpdmVJbmRleDowLHJlYWxJbmRleDowLGlzQmVnaW5uaW5nOiEwLGlzRW5kOiExLHRyYW5zbGF0ZTowLHByZXZpb3VzVHJhbnNsYXRlOjAscHJvZ3Jlc3M6MCx2ZWxvY2l0eTowLGFuaW1hdGluZzohMSxhbGxvd1NsaWRlTmV4dDpzLnBhcmFtcy5hbGxvd1NsaWRlTmV4dCxhbGxvd1NsaWRlUHJldjpzLnBhcmFtcy5hbGxvd1NsaWRlUHJldix0b3VjaEV2ZW50czpmdW5jdGlvbigpe2NvbnN0IHQ9WyJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hlbmQiLCJ0b3VjaGNhbmNlbCJdLGU9WyJwb2ludGVyZG93biIsInBvaW50ZXJtb3ZlIiwicG9pbnRlcnVwIl07cmV0dXJuIHMudG91Y2hFdmVudHNUb3VjaD17c3RhcnQ6dFswXSxtb3ZlOnRbMV0sZW5kOnRbMl0sY2FuY2VsOnRbM119LHMudG91Y2hFdmVudHNEZXNrdG9wPXtzdGFydDplWzBdLG1vdmU6ZVsxXSxlbmQ6ZVsyXX0scy5zdXBwb3J0LnRvdWNofHwhcy5wYXJhbXMuc2ltdWxhdGVUb3VjaD9zLnRvdWNoRXZlbnRzVG91Y2g6cy50b3VjaEV2ZW50c0Rlc2t0b3B9KCksdG91Y2hFdmVudHNEYXRhOntpc1RvdWNoZWQ6dm9pZCAwLGlzTW92ZWQ6dm9pZCAwLGFsbG93VG91Y2hDYWxsYmFja3M6dm9pZCAwLHRvdWNoU3RhcnRUaW1lOnZvaWQgMCxpc1Njcm9sbGluZzp2b2lkIDAsY3VycmVudFRyYW5zbGF0ZTp2b2lkIDAsc3RhcnRUcmFuc2xhdGU6dm9pZCAwLGFsbG93VGhyZXNob2xkTW92ZTp2b2lkIDAsZm9jdXNhYmxlRWxlbWVudHM6cy5wYXJhbXMuZm9jdXNhYmxlRWxlbWVudHMsbGFzdENsaWNrVGltZTp4KCksY2xpY2tUaW1lb3V0OnZvaWQgMCx2ZWxvY2l0aWVzOltdLGFsbG93TW9tZW50dW1Cb3VuY2U6dm9pZCAwLGlzVG91Y2hFdmVudDp2b2lkIDAsc3RhcnRNb3Zpbmc6dm9pZCAwfSxhbGxvd0NsaWNrOiEwLGFsbG93VG91Y2hNb3ZlOnMucGFyYW1zLmFsbG93VG91Y2hNb3ZlLHRvdWNoZXM6e3N0YXJ0WDowLHN0YXJ0WTowLGN1cnJlbnRYOjAsY3VycmVudFk6MCxkaWZmOjB9LGltYWdlc1RvTG9hZDpbXSxpbWFnZXNMb2FkZWQ6MH0pLHMuZW1pdCgiX3N3aXBlciIpLHMucGFyYW1zLmluaXQmJnMuaW5pdCgpLHN9ZW5hYmxlKCl7Y29uc3QgdD10aGlzO3QuZW5hYmxlZHx8KHQuZW5hYmxlZD0hMCx0LnBhcmFtcy5ncmFiQ3Vyc29yJiZ0LnNldEdyYWJDdXJzb3IoKSx0LmVtaXQoImVuYWJsZSIpKX1kaXNhYmxlKCl7Y29uc3QgdD10aGlzO3QuZW5hYmxlZCYmKHQuZW5hYmxlZD0hMSx0LnBhcmFtcy5ncmFiQ3Vyc29yJiZ0LnVuc2V0R3JhYkN1cnNvcigpLHQuZW1pdCgiZGlzYWJsZSIpKX1zZXRQcm9ncmVzcyh0LGUpe2NvbnN0IGk9dGhpczt0PU1hdGgubWluKE1hdGgubWF4KHQsMCksMSk7Y29uc3Qgcz1pLm1pblRyYW5zbGF0ZSgpLGE9KGkubWF4VHJhbnNsYXRlKCktcykqdCtzO2kudHJhbnNsYXRlVG8oYSx2b2lkIDA9PT1lPzA6ZSksaS51cGRhdGVBY3RpdmVJbmRleCgpLGkudXBkYXRlU2xpZGVzQ2xhc3NlcygpfWVtaXRDb250YWluZXJDbGFzc2VzKCl7Y29uc3QgdD10aGlzO2lmKCF0LnBhcmFtcy5fZW1pdENsYXNzZXN8fCF0LmVsKXJldHVybjtjb25zdCBlPXQuZWwuY2xhc3NOYW1lLnNwbGl0KCIgIikuZmlsdGVyKChlPT4wPT09ZS5pbmRleE9mKCJzd2lwZXIiKXx8MD09PWUuaW5kZXhPZih0LnBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzKSkpO3QuZW1pdCgiX2NvbnRhaW5lckNsYXNzZXMiLGUuam9pbigiICIpKX1nZXRTbGlkZUNsYXNzZXModCl7Y29uc3QgZT10aGlzO3JldHVybiBlLmRlc3Ryb3llZD8iIjp0LmNsYXNzTmFtZS5zcGxpdCgiICIpLmZpbHRlcigodD0+MD09PXQuaW5kZXhPZigic3dpcGVyLXNsaWRlIil8fDA9PT10LmluZGV4T2YoZS5wYXJhbXMuc2xpZGVDbGFzcykpKS5qb2luKCIgIil9ZW1pdFNsaWRlc0NsYXNzZXMoKXtjb25zdCB0PXRoaXM7aWYoIXQucGFyYW1zLl9lbWl0Q2xhc3Nlc3x8IXQuZWwpcmV0dXJuO2NvbnN0IGU9W107dC5zbGlkZXMuZWFjaCgoaT0+e2NvbnN0IHM9dC5nZXRTbGlkZUNsYXNzZXMoaSk7ZS5wdXNoKHtzbGlkZUVsOmksY2xhc3NOYW1lczpzfSksdC5lbWl0KCJfc2xpZGVDbGFzcyIsaSxzKX0pKSx0LmVtaXQoIl9zbGlkZUNsYXNzZXMiLGUpfXNsaWRlc1BlclZpZXdEeW5hbWljKHQ9ImN1cnJlbnQiLGU9ITEpe2NvbnN0e3BhcmFtczppLHNsaWRlczpzLHNsaWRlc0dyaWQ6YSxzbGlkZXNTaXplc0dyaWQ6bixzaXplOnIsYWN0aXZlSW5kZXg6b309dGhpcztsZXQgbD0xO2lmKGkuY2VudGVyZWRTbGlkZXMpe2xldCB0LGU9c1tvXS5zd2lwZXJTbGlkZVNpemU7Zm9yKGxldCBpPW8rMTtpPHMubGVuZ3RoO2krPTEpc1tpXSYmIXQmJihlKz1zW2ldLnN3aXBlclNsaWRlU2l6ZSxsKz0xLGU+ciYmKHQ9ITApKTtmb3IobGV0IGk9by0xO2k+PTA7aS09MSlzW2ldJiYhdCYmKGUrPXNbaV0uc3dpcGVyU2xpZGVTaXplLGwrPTEsZT5yJiYodD0hMCkpfWVsc2UgaWYoImN1cnJlbnQiPT09dClmb3IobGV0IHQ9bysxO3Q8cy5sZW5ndGg7dCs9MSkoZT9hW3RdK25bdF0tYVtvXTxyOmFbdF0tYVtvXTxyKSYmKGwrPTEpO2Vsc2UgZm9yKGxldCB0PW8tMTt0Pj0wO3QtPTEpYVtvXS1hW3RdPHImJihsKz0xKTtyZXR1cm4gbH11cGRhdGUoKXtjb25zdCB0PXRoaXM7aWYoIXR8fHQuZGVzdHJveWVkKXJldHVybjtjb25zdHtzbmFwR3JpZDplLHBhcmFtczppfT10O2Z1bmN0aW9uIHMoKXtjb25zdCBlPXQucnRsVHJhbnNsYXRlPy0xKnQudHJhbnNsYXRlOnQudHJhbnNsYXRlLGk9TWF0aC5taW4oTWF0aC5tYXgoZSx0Lm1heFRyYW5zbGF0ZSgpKSx0Lm1pblRyYW5zbGF0ZSgpKTt0LnNldFRyYW5zbGF0ZShpKSx0LnVwZGF0ZUFjdGl2ZUluZGV4KCksdC51cGRhdGVTbGlkZXNDbGFzc2VzKCl9bGV0IGE7aS5icmVha3BvaW50cyYmdC5zZXRCcmVha3BvaW50KCksdC51cGRhdGVTaXplKCksdC51cGRhdGVTbGlkZXMoKSx0LnVwZGF0ZVByb2dyZXNzKCksdC51cGRhdGVTbGlkZXNDbGFzc2VzKCksdC5wYXJhbXMuZnJlZU1vZGUmJnQucGFyYW1zLmZyZWVNb2RlLmVuYWJsZWQ/KHMoKSx0LnBhcmFtcy5hdXRvSGVpZ2h0JiZ0LnVwZGF0ZUF1dG9IZWlnaHQoKSk6KGE9KCJhdXRvIj09PXQucGFyYW1zLnNsaWRlc1BlclZpZXd8fHQucGFyYW1zLnNsaWRlc1BlclZpZXc+MSkmJnQuaXNFbmQmJiF0LnBhcmFtcy5jZW50ZXJlZFNsaWRlcz90LnNsaWRlVG8odC5zbGlkZXMubGVuZ3RoLTEsMCwhMSwhMCk6dC5zbGlkZVRvKHQuYWN0aXZlSW5kZXgsMCwhMSwhMCksYXx8cygpKSxpLndhdGNoT3ZlcmZsb3cmJmUhPT10LnNuYXBHcmlkJiZ0LmNoZWNrT3ZlcmZsb3coKSx0LmVtaXQoInVwZGF0ZSIpfWNoYW5nZURpcmVjdGlvbih0LGU9ITApe2NvbnN0IGk9dGhpcyxzPWkucGFyYW1zLmRpcmVjdGlvbjtyZXR1cm4gdHx8KHQ9Imhvcml6b250YWwiPT09cz8idmVydGljYWwiOiJob3Jpem9udGFsIiksdD09PXN8fCJob3Jpem9udGFsIiE9PXQmJiJ2ZXJ0aWNhbCIhPT10fHwoaS4kZWwucmVtb3ZlQ2xhc3MoYCR7aS5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc30ke3N9YCkuYWRkQ2xhc3MoYCR7aS5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc30ke3R9YCksaS5lbWl0Q29udGFpbmVyQ2xhc3NlcygpLGkucGFyYW1zLmRpcmVjdGlvbj10LGkuc2xpZGVzLmVhY2goKGU9PnsidmVydGljYWwiPT09dD9lLnN0eWxlLndpZHRoPSIiOmUuc3R5bGUuaGVpZ2h0PSIifSkpLGkuZW1pdCgiY2hhbmdlRGlyZWN0aW9uIiksZSYmaS51cGRhdGUoKSksaX1jaGFuZ2VMYW5ndWFnZURpcmVjdGlvbih0KXtjb25zdCBlPXRoaXM7ZS5ydGwmJiJydGwiPT09dHx8IWUucnRsJiYibHRyIj09PXR8fChlLnJ0bD0icnRsIj09PXQsZS5ydGxUcmFuc2xhdGU9Imhvcml6b250YWwiPT09ZS5wYXJhbXMuZGlyZWN0aW9uJiZlLnJ0bCxlLnJ0bD8oZS4kZWwuYWRkQ2xhc3MoYCR7ZS5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc31ydGxgKSxlLmVsLmRpcj0icnRsIik6KGUuJGVsLnJlbW92ZUNsYXNzKGAke2UucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9cnRsYCksZS5lbC5kaXI9Imx0ciIpLGUudXBkYXRlKCkpfW1vdW50KHQpe2NvbnN0IGU9dGhpcztpZihlLm1vdW50ZWQpcmV0dXJuITA7Y29uc3QgaT1tKHR8fGUucGFyYW1zLmVsKTtpZighKHQ9aVswXSkpcmV0dXJuITE7dC5zd2lwZXI9ZTtjb25zdCBzPSgpPT5gLiR7KGUucGFyYW1zLndyYXBwZXJDbGFzc3x8IiIpLnRyaW0oKS5zcGxpdCgiICIpLmpvaW4oIi4iKX1gO2xldCBhPSgoKT0+e2lmKHQmJnQuc2hhZG93Um9vdCYmdC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3Ipe2NvbnN0IGU9bSh0LnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihzKCkpKTtyZXR1cm4gZS5jaGlsZHJlbj10PT5pLmNoaWxkcmVuKHQpLGV9cmV0dXJuIGkuY2hpbGRyZW4/aS5jaGlsZHJlbihzKCkpOm0oaSkuY2hpbGRyZW4ocygpKX0pKCk7aWYoMD09PWEubGVuZ3RoJiZlLnBhcmFtcy5jcmVhdGVFbGVtZW50cyl7Y29uc3QgdD1yKCkuY3JlYXRlRWxlbWVudCgiZGl2Iik7YT1tKHQpLHQuY2xhc3NOYW1lPWUucGFyYW1zLndyYXBwZXJDbGFzcyxpLmFwcGVuZCh0KSxpLmNoaWxkcmVuKGAuJHtlLnBhcmFtcy5zbGlkZUNsYXNzfWApLmVhY2goKHQ9PnthLmFwcGVuZCh0KX0pKX1yZXR1cm4gT2JqZWN0LmFzc2lnbihlLHskZWw6aSxlbDp0LCR3cmFwcGVyRWw6YSx3cmFwcGVyRWw6YVswXSxtb3VudGVkOiEwLHJ0bDoicnRsIj09PXQuZGlyLnRvTG93ZXJDYXNlKCl8fCJydGwiPT09aS5jc3MoImRpcmVjdGlvbiIpLHJ0bFRyYW5zbGF0ZToiaG9yaXpvbnRhbCI9PT1lLnBhcmFtcy5kaXJlY3Rpb24mJigicnRsIj09PXQuZGlyLnRvTG93ZXJDYXNlKCl8fCJydGwiPT09aS5jc3MoImRpcmVjdGlvbiIpKSx3cm9uZ1JUTDoiLXdlYmtpdC1ib3giPT09YS5jc3MoImRpc3BsYXkiKX0pLCEwfWluaXQodCl7Y29uc3QgZT10aGlzO3JldHVybiBlLmluaXRpYWxpemVkfHwhMT09PWUubW91bnQodCl8fChlLmVtaXQoImJlZm9yZUluaXQiKSxlLnBhcmFtcy5icmVha3BvaW50cyYmZS5zZXRCcmVha3BvaW50KCksZS5hZGRDbGFzc2VzKCksZS5wYXJhbXMubG9vcCYmZS5sb29wQ3JlYXRlKCksZS51cGRhdGVTaXplKCksZS51cGRhdGVTbGlkZXMoKSxlLnBhcmFtcy53YXRjaE92ZXJmbG93JiZlLmNoZWNrT3ZlcmZsb3coKSxlLnBhcmFtcy5ncmFiQ3Vyc29yJiZlLmVuYWJsZWQmJmUuc2V0R3JhYkN1cnNvcigpLGUucGFyYW1zLnByZWxvYWRJbWFnZXMmJmUucHJlbG9hZEltYWdlcygpLGUucGFyYW1zLmxvb3A/ZS5zbGlkZVRvKGUucGFyYW1zLmluaXRpYWxTbGlkZStlLmxvb3BlZFNsaWRlcywwLGUucGFyYW1zLnJ1bkNhbGxiYWNrc09uSW5pdCwhMSwhMCk6ZS5zbGlkZVRvKGUucGFyYW1zLmluaXRpYWxTbGlkZSwwLGUucGFyYW1zLnJ1bkNhbGxiYWNrc09uSW5pdCwhMSwhMCksZS5hdHRhY2hFdmVudHMoKSxlLmluaXRpYWxpemVkPSEwLGUuZW1pdCgiaW5pdCIpLGUuZW1pdCgiYWZ0ZXJJbml0IikpLGV9ZGVzdHJveSh0PSEwLGU9ITApe2NvbnN0IGk9dGhpcyx7cGFyYW1zOnMsJGVsOmEsJHdyYXBwZXJFbDpuLHNsaWRlczpyfT1pO3JldHVybiB2b2lkIDA9PT1pLnBhcmFtc3x8aS5kZXN0cm95ZWR8fChpLmVtaXQoImJlZm9yZURlc3Ryb3kiKSxpLmluaXRpYWxpemVkPSExLGkuZGV0YWNoRXZlbnRzKCkscy5sb29wJiZpLmxvb3BEZXN0cm95KCksZSYmKGkucmVtb3ZlQ2xhc3NlcygpLGEucmVtb3ZlQXR0cigic3R5bGUiKSxuLnJlbW92ZUF0dHIoInN0eWxlIiksciYmci5sZW5ndGgmJnIucmVtb3ZlQ2xhc3MoW3Muc2xpZGVWaXNpYmxlQ2xhc3Mscy5zbGlkZUFjdGl2ZUNsYXNzLHMuc2xpZGVOZXh0Q2xhc3Mscy5zbGlkZVByZXZDbGFzc10uam9pbigiICIpKS5yZW1vdmVBdHRyKCJzdHlsZSIpLnJlbW92ZUF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IikpLGkuZW1pdCgiZGVzdHJveSIpLE9iamVjdC5rZXlzKGkuZXZlbnRzTGlzdGVuZXJzKS5mb3JFYWNoKCh0PT57aS5vZmYodCl9KSksITEhPT10JiYoaS4kZWxbMF0uc3dpcGVyPW51bGwsZnVuY3Rpb24odCl7Y29uc3QgZT10O09iamVjdC5rZXlzKGUpLmZvckVhY2goKHQ9Pnt0cnl7ZVt0XT1udWxsfWNhdGNoKHQpe310cnl7ZGVsZXRlIGVbdF19Y2F0Y2godCl7fX0pKX0oaSkpLGkuZGVzdHJveWVkPSEwKSxudWxsfXN0YXRpYyBleHRlbmREZWZhdWx0cyh0KXt5KGosdCl9c3RhdGljIGdldCBleHRlbmRlZERlZmF1bHRzKCl7cmV0dXJuIGp9c3RhdGljIGdldCBkZWZhdWx0cygpe3JldHVybiBXfXN0YXRpYyBpbnN0YWxsTW9kdWxlKHQpe0cucHJvdG90eXBlLl9fbW9kdWxlc19ffHwoRy5wcm90b3R5cGUuX19tb2R1bGVzX189W10pO2NvbnN0IGU9Ry5wcm90b3R5cGUuX19tb2R1bGVzX187ImZ1bmN0aW9uIj09dHlwZW9mIHQmJmUuaW5kZXhPZih0KTwwJiZlLnB1c2godCl9c3RhdGljIHVzZSh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8odC5mb3JFYWNoKCh0PT5HLmluc3RhbGxNb2R1bGUodCkpKSxHKTooRy5pbnN0YWxsTW9kdWxlKHQpLEcpfX1PYmplY3Qua2V5cyhWKS5mb3JFYWNoKCh0PT57T2JqZWN0LmtleXMoVlt0XSkuZm9yRWFjaCgoZT0+e0cucHJvdG90eXBlW2VdPVZbdF1bZV19KSl9KSksRy51c2UoW2Z1bmN0aW9uKHtzd2lwZXI6dCxvbjplLGVtaXQ6aX0pe2NvbnN0IHM9bCgpO2xldCBhPW51bGwsbj1udWxsO2NvbnN0IHI9KCk9Pnt0JiYhdC5kZXN0cm95ZWQmJnQuaW5pdGlhbGl6ZWQmJihpKCJiZWZvcmVSZXNpemUiKSxpKCJyZXNpemUiKSl9LG89KCk9Pnt0JiYhdC5kZXN0cm95ZWQmJnQuaW5pdGlhbGl6ZWQmJmkoIm9yaWVudGF0aW9uY2hhbmdlIil9O2UoImluaXQiLCgoKT0+e3QucGFyYW1zLnJlc2l6ZU9ic2VydmVyJiZ2b2lkIDAhPT1zLlJlc2l6ZU9ic2VydmVyP3QmJiF0LmRlc3Ryb3llZCYmdC5pbml0aWFsaXplZCYmKGE9bmV3IFJlc2l6ZU9ic2VydmVyKChlPT57bj1zLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pntjb25zdHt3aWR0aDppLGhlaWdodDpzfT10O2xldCBhPWksbj1zO2UuZm9yRWFjaCgoKHtjb250ZW50Qm94U2l6ZTplLGNvbnRlbnRSZWN0OmksdGFyZ2V0OnN9KT0+e3MmJnMhPT10LmVsfHwoYT1pP2kud2lkdGg6KGVbMF18fGUpLmlubGluZVNpemUsbj1pP2kuaGVpZ2h0OihlWzBdfHxlKS5ibG9ja1NpemUpfSkpLGE9PT1pJiZuPT09c3x8cigpfSkpfSkpLGEub2JzZXJ2ZSh0LmVsKSk6KHMuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixyKSxzLmFkZEV2ZW50TGlzdGVuZXIoIm9yaWVudGF0aW9uY2hhbmdlIixvKSl9KSksZSgiZGVzdHJveSIsKCgpPT57biYmcy5jYW5jZWxBbmltYXRpb25GcmFtZShuKSxhJiZhLnVub2JzZXJ2ZSYmdC5lbCYmKGEudW5vYnNlcnZlKHQuZWwpLGE9bnVsbCkscy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHIpLHMucmVtb3ZlRXZlbnRMaXN0ZW5lcigib3JpZW50YXRpb25jaGFuZ2UiLG8pfSkpfSxmdW5jdGlvbih7c3dpcGVyOnQsZXh0ZW5kUGFyYW1zOmUsb246aSxlbWl0OnN9KXtjb25zdCBhPVtdLG49bCgpLHI9KHQsZT17fSk9Pntjb25zdCBpPW5ldyhuLk11dGF0aW9uT2JzZXJ2ZXJ8fG4uV2Via2l0TXV0YXRpb25PYnNlcnZlcikoKHQ9PntpZigxPT09dC5sZW5ndGgpcmV0dXJuIHZvaWQgcygib2JzZXJ2ZXJVcGRhdGUiLHRbMF0pO2NvbnN0IGU9ZnVuY3Rpb24oKXtzKCJvYnNlcnZlclVwZGF0ZSIsdFswXSl9O24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lP24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpOm4uc2V0VGltZW91dChlLDApfSkpO2kub2JzZXJ2ZSh0LHthdHRyaWJ1dGVzOnZvaWQgMD09PWUuYXR0cmlidXRlc3x8ZS5hdHRyaWJ1dGVzLGNoaWxkTGlzdDp2b2lkIDA9PT1lLmNoaWxkTGlzdHx8ZS5jaGlsZExpc3QsY2hhcmFjdGVyRGF0YTp2b2lkIDA9PT1lLmNoYXJhY3RlckRhdGF8fGUuY2hhcmFjdGVyRGF0YX0pLGEucHVzaChpKX07ZSh7b2JzZXJ2ZXI6ITEsb2JzZXJ2ZVBhcmVudHM6ITEsb2JzZXJ2ZVNsaWRlQ2hpbGRyZW46ITF9KSxpKCJpbml0IiwoKCk9PntpZih0LnBhcmFtcy5vYnNlcnZlcil7aWYodC5wYXJhbXMub2JzZXJ2ZVBhcmVudHMpe2NvbnN0IGU9dC4kZWwucGFyZW50cygpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCs9MSlyKGVbdF0pfXIodC4kZWxbMF0se2NoaWxkTGlzdDp0LnBhcmFtcy5vYnNlcnZlU2xpZGVDaGlsZHJlbn0pLHIodC4kd3JhcHBlckVsWzBdLHthdHRyaWJ1dGVzOiExfSl9fSkpLGkoImRlc3Ryb3kiLCgoKT0+e2EuZm9yRWFjaCgodD0+e3QuZGlzY29ubmVjdCgpfSkpLGEuc3BsaWNlKDAsYS5sZW5ndGgpfSkpfV0pO3ZhciBVPUc7ZnVuY3Rpb24gcSh7c3dpcGVyOnQsZXh0ZW5kUGFyYW1zOmUsb246aSxlbWl0OnN9KXtjb25zdCBhPXIoKTtsZXQgbixvLGwsYyxoPSExLGQ9bnVsbCx1PW51bGw7ZnVuY3Rpb24gcCgpe2lmKCF0LnBhcmFtcy5zY3JvbGxiYXIuZWx8fCF0LnNjcm9sbGJhci5lbClyZXR1cm47Y29uc3R7c2Nyb2xsYmFyOmUscnRsVHJhbnNsYXRlOmkscHJvZ3Jlc3M6c309dCx7JGRyYWdFbDphLCRlbDpufT1lLHI9dC5wYXJhbXMuc2Nyb2xsYmFyO2xldCBjPW8saD0obC1vKSpzO2k/KGg9LWgsaD4wPyhjPW8taCxoPTApOi1oK28+bCYmKGM9bCtoKSk6aDwwPyhjPW8raCxoPTApOmgrbz5sJiYoYz1sLWgpLHQuaXNIb3Jpem9udGFsKCk/KGEudHJhbnNmb3JtKGB0cmFuc2xhdGUzZCgke2h9cHgsIDAsIDApYCksYVswXS5zdHlsZS53aWR0aD1gJHtjfXB4YCk6KGEudHJhbnNmb3JtKGB0cmFuc2xhdGUzZCgwcHgsICR7aH1weCwgMClgKSxhWzBdLnN0eWxlLmhlaWdodD1gJHtjfXB4YCksci5oaWRlJiYoY2xlYXJUaW1lb3V0KGQpLG5bMF0uc3R5bGUub3BhY2l0eT0xLGQ9c2V0VGltZW91dCgoKCk9PntuWzBdLnN0eWxlLm9wYWNpdHk9MCxuLnRyYW5zaXRpb24oNDAwKX0pLDFlMykpfWZ1bmN0aW9uIGcoKXtpZighdC5wYXJhbXMuc2Nyb2xsYmFyLmVsfHwhdC5zY3JvbGxiYXIuZWwpcmV0dXJuO2NvbnN0e3Njcm9sbGJhcjplfT10LHskZHJhZ0VsOmksJGVsOnN9PWU7aVswXS5zdHlsZS53aWR0aD0iIixpWzBdLnN0eWxlLmhlaWdodD0iIixsPXQuaXNIb3Jpem9udGFsKCk/c1swXS5vZmZzZXRXaWR0aDpzWzBdLm9mZnNldEhlaWdodCxjPXQuc2l6ZS8odC52aXJ0dWFsU2l6ZSt0LnBhcmFtcy5zbGlkZXNPZmZzZXRCZWZvcmUtKHQucGFyYW1zLmNlbnRlcmVkU2xpZGVzP3Quc25hcEdyaWRbMF06MCkpLG89ImF1dG8iPT09dC5wYXJhbXMuc2Nyb2xsYmFyLmRyYWdTaXplP2wqYzpwYXJzZUludCh0LnBhcmFtcy5zY3JvbGxiYXIuZHJhZ1NpemUsMTApLHQuaXNIb3Jpem9udGFsKCk/aVswXS5zdHlsZS53aWR0aD1gJHtvfXB4YDppWzBdLnN0eWxlLmhlaWdodD1gJHtvfXB4YCxzWzBdLnN0eWxlLmRpc3BsYXk9Yz49MT8ibm9uZSI6IiIsdC5wYXJhbXMuc2Nyb2xsYmFyLmhpZGUmJihzWzBdLnN0eWxlLm9wYWNpdHk9MCksdC5wYXJhbXMud2F0Y2hPdmVyZmxvdyYmdC5lbmFibGVkJiZlLiRlbFt0LmlzTG9ja2VkPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0odC5wYXJhbXMuc2Nyb2xsYmFyLmxvY2tDbGFzcyl9ZnVuY3Rpb24gZihlKXtyZXR1cm4gdC5pc0hvcml6b250YWwoKT8idG91Y2hzdGFydCI9PT1lLnR5cGV8fCJ0b3VjaG1vdmUiPT09ZS50eXBlP2UudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRYOmUuY2xpZW50WDoidG91Y2hzdGFydCI9PT1lLnR5cGV8fCJ0b3VjaG1vdmUiPT09ZS50eXBlP2UudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRZOmUuY2xpZW50WX1mdW5jdGlvbiB4KGUpe2NvbnN0e3Njcm9sbGJhcjppLHJ0bFRyYW5zbGF0ZTpzfT10LHskZWw6YX09aTtsZXQgcjtyPShmKGUpLWEub2Zmc2V0KClbdC5pc0hvcml6b250YWwoKT8ibGVmdCI6InRvcCJdLShudWxsIT09bj9uOm8vMikpLyhsLW8pLHI9TWF0aC5tYXgoTWF0aC5taW4ociwxKSwwKSxzJiYocj0xLXIpO2NvbnN0IGM9dC5taW5UcmFuc2xhdGUoKSsodC5tYXhUcmFuc2xhdGUoKS10Lm1pblRyYW5zbGF0ZSgpKSpyO3QudXBkYXRlUHJvZ3Jlc3MoYyksdC5zZXRUcmFuc2xhdGUoYyksdC51cGRhdGVBY3RpdmVJbmRleCgpLHQudXBkYXRlU2xpZGVzQ2xhc3NlcygpfWZ1bmN0aW9uIGIoZSl7Y29uc3QgaT10LnBhcmFtcy5zY3JvbGxiYXIse3Njcm9sbGJhcjphLCR3cmFwcGVyRWw6cn09dCx7JGVsOm8sJGRyYWdFbDpsfT1hO2g9ITAsbj1lLnRhcmdldD09PWxbMF18fGUudGFyZ2V0PT09bD9mKGUpLWUudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW3QuaXNIb3Jpem9udGFsKCk/ImxlZnQiOiJ0b3AiXTpudWxsLGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHIudHJhbnNpdGlvbigxMDApLGwudHJhbnNpdGlvbigxMDApLHgoZSksY2xlYXJUaW1lb3V0KHUpLG8udHJhbnNpdGlvbigwKSxpLmhpZGUmJm8uY3NzKCJvcGFjaXR5IiwxKSx0LnBhcmFtcy5jc3NNb2RlJiZ0LiR3cmFwcGVyRWwuY3NzKCJzY3JvbGwtc25hcC10eXBlIiwibm9uZSIpLHMoInNjcm9sbGJhckRyYWdTdGFydCIsZSl9ZnVuY3Rpb24geShlKXtjb25zdHtzY3JvbGxiYXI6aSwkd3JhcHBlckVsOmF9PXQseyRlbDpuLCRkcmFnRWw6cn09aTtoJiYoZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6ZS5yZXR1cm5WYWx1ZT0hMSx4KGUpLGEudHJhbnNpdGlvbigwKSxuLnRyYW5zaXRpb24oMCksci50cmFuc2l0aW9uKDApLHMoInNjcm9sbGJhckRyYWdNb3ZlIixlKSl9ZnVuY3Rpb24gdyhlKXtjb25zdCBpPXQucGFyYW1zLnNjcm9sbGJhcix7c2Nyb2xsYmFyOmEsJHdyYXBwZXJFbDpufT10LHskZWw6cn09YTtoJiYoaD0hMSx0LnBhcmFtcy5jc3NNb2RlJiYodC4kd3JhcHBlckVsLmNzcygic2Nyb2xsLXNuYXAtdHlwZSIsIiIpLG4udHJhbnNpdGlvbigiIikpLGkuaGlkZSYmKGNsZWFyVGltZW91dCh1KSx1PXYoKCgpPT57ci5jc3MoIm9wYWNpdHkiLDApLHIudHJhbnNpdGlvbig0MDApfSksMWUzKSkscygic2Nyb2xsYmFyRHJhZ0VuZCIsZSksaS5zbmFwT25SZWxlYXNlJiZ0LnNsaWRlVG9DbG9zZXN0KCkpfWZ1bmN0aW9uIGsoZSl7Y29uc3R7c2Nyb2xsYmFyOmksdG91Y2hFdmVudHNUb3VjaDpzLHRvdWNoRXZlbnRzRGVza3RvcDpuLHBhcmFtczpyLHN1cHBvcnQ6b309dCxsPWkuJGVsO2lmKCFsKXJldHVybjtjb25zdCBjPWxbMF0saD0hKCFvLnBhc3NpdmVMaXN0ZW5lcnx8IXIucGFzc2l2ZUxpc3RlbmVycykmJntwYXNzaXZlOiExLGNhcHR1cmU6ITF9LGQ9ISghby5wYXNzaXZlTGlzdGVuZXJ8fCFyLnBhc3NpdmVMaXN0ZW5lcnMpJiZ7cGFzc2l2ZTohMCxjYXB0dXJlOiExfTtpZighYylyZXR1cm47Y29uc3QgdT0ib24iPT09ZT8iYWRkRXZlbnRMaXN0ZW5lciI6InJlbW92ZUV2ZW50TGlzdGVuZXIiO28udG91Y2g/KGNbdV0ocy5zdGFydCxiLGgpLGNbdV0ocy5tb3ZlLHksaCksY1t1XShzLmVuZCx3LGQpKTooY1t1XShuLnN0YXJ0LGIsaCksYVt1XShuLm1vdmUseSxoKSxhW3VdKG4uZW5kLHcsZCkpfWZ1bmN0aW9uIFMoKXtjb25zdHtzY3JvbGxiYXI6ZSwkZWw6aX09dDt0LnBhcmFtcy5zY3JvbGxiYXI9ZnVuY3Rpb24odCxlLGkscyl7Y29uc3QgYT1yKCk7cmV0dXJuIHQucGFyYW1zLmNyZWF0ZUVsZW1lbnRzJiZPYmplY3Qua2V5cyhzKS5mb3JFYWNoKChuPT57aWYoIWlbbl0mJiEwPT09aS5hdXRvKXtsZXQgcj10LiRlbC5jaGlsZHJlbihgLiR7c1tuXX1gKVswXTtyfHwocj1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHIuY2xhc3NOYW1lPXNbbl0sdC4kZWwuYXBwZW5kKHIpKSxpW25dPXIsZVtuXT1yfX0pKSxpfSh0LHQub3JpZ2luYWxQYXJhbXMuc2Nyb2xsYmFyLHQucGFyYW1zLnNjcm9sbGJhcix7ZWw6InN3aXBlci1zY3JvbGxiYXIifSk7Y29uc3Qgcz10LnBhcmFtcy5zY3JvbGxiYXI7aWYoIXMuZWwpcmV0dXJuO2xldCBhPW0ocy5lbCk7dC5wYXJhbXMudW5pcXVlTmF2RWxlbWVudHMmJiJzdHJpbmciPT10eXBlb2Ygcy5lbCYmYS5sZW5ndGg+MSYmMT09PWkuZmluZChzLmVsKS5sZW5ndGgmJihhPWkuZmluZChzLmVsKSksYS5hZGRDbGFzcyh0LmlzSG9yaXpvbnRhbCgpP3MuaG9yaXpvbnRhbENsYXNzOnMudmVydGljYWxDbGFzcyk7bGV0IG49YS5maW5kKGAuJHt0LnBhcmFtcy5zY3JvbGxiYXIuZHJhZ0NsYXNzfWApOzA9PT1uLmxlbmd0aCYmKG49bShgPGRpdiBjbGFzcz0iJHt0LnBhcmFtcy5zY3JvbGxiYXIuZHJhZ0NsYXNzfSI+PC9kaXY+YCksYS5hcHBlbmQobikpLE9iamVjdC5hc3NpZ24oZSx7JGVsOmEsZWw6YVswXSwkZHJhZ0VsOm4sZHJhZ0VsOm5bMF19KSxzLmRyYWdnYWJsZSYmdC5wYXJhbXMuc2Nyb2xsYmFyLmVsJiZ0LnNjcm9sbGJhci5lbCYmaygib24iKSxhJiZhW3QuZW5hYmxlZD8icmVtb3ZlQ2xhc3MiOiJhZGRDbGFzcyJdKHQucGFyYW1zLnNjcm9sbGJhci5sb2NrQ2xhc3MpfWZ1bmN0aW9uIEMoKXtjb25zdCBlPXQucGFyYW1zLnNjcm9sbGJhcixpPXQuc2Nyb2xsYmFyLiRlbDtpJiZpLnJlbW92ZUNsYXNzKHQuaXNIb3Jpem9udGFsKCk/ZS5ob3Jpem9udGFsQ2xhc3M6ZS52ZXJ0aWNhbENsYXNzKSx0LnBhcmFtcy5zY3JvbGxiYXIuZWwmJnQuc2Nyb2xsYmFyLmVsJiZrKCJvZmYiKX1lKHtzY3JvbGxiYXI6e2VsOm51bGwsZHJhZ1NpemU6ImF1dG8iLGhpZGU6ITEsZHJhZ2dhYmxlOiExLHNuYXBPblJlbGVhc2U6ITAsbG9ja0NsYXNzOiJzd2lwZXItc2Nyb2xsYmFyLWxvY2siLGRyYWdDbGFzczoic3dpcGVyLXNjcm9sbGJhci1kcmFnIixzY3JvbGxiYXJEaXNhYmxlZENsYXNzOiJzd2lwZXItc2Nyb2xsYmFyLWRpc2FibGVkIixob3Jpem9udGFsQ2xhc3M6InN3aXBlci1zY3JvbGxiYXItaG9yaXpvbnRhbCIsdmVydGljYWxDbGFzczoic3dpcGVyLXNjcm9sbGJhci12ZXJ0aWNhbCJ9fSksdC5zY3JvbGxiYXI9e2VsOm51bGwsZHJhZ0VsOm51bGwsJGVsOm51bGwsJGRyYWdFbDpudWxsfSxpKCJpbml0IiwoKCk9PnshMT09PXQucGFyYW1zLnNjcm9sbGJhci5lbmFibGVkP0EoKTooUygpLGcoKSxwKCkpfSkpLGkoInVwZGF0ZSByZXNpemUgb2JzZXJ2ZXJVcGRhdGUgbG9jayB1bmxvY2siLCgoKT0+e2coKX0pKSxpKCJzZXRUcmFuc2xhdGUiLCgoKT0+e3AoKX0pKSxpKCJzZXRUcmFuc2l0aW9uIiwoKGUsaSk9PnshZnVuY3Rpb24oZSl7dC5wYXJhbXMuc2Nyb2xsYmFyLmVsJiZ0LnNjcm9sbGJhci5lbCYmdC5zY3JvbGxiYXIuJGRyYWdFbC50cmFuc2l0aW9uKGUpfShpKX0pKSxpKCJlbmFibGUgZGlzYWJsZSIsKCgpPT57Y29uc3R7JGVsOmV9PXQuc2Nyb2xsYmFyO2UmJmVbdC5lbmFibGVkPyJyZW1vdmVDbGFzcyI6ImFkZENsYXNzIl0odC5wYXJhbXMuc2Nyb2xsYmFyLmxvY2tDbGFzcyl9KSksaSgiZGVzdHJveSIsKCgpPT57QygpfSkpO2NvbnN0IEE9KCk9Pnt0LiRlbC5hZGRDbGFzcyh0LnBhcmFtcy5zY3JvbGxiYXIuc2Nyb2xsYmFyRGlzYWJsZWRDbGFzcyksdC5zY3JvbGxiYXIuJGVsJiZ0LnNjcm9sbGJhci4kZWwuYWRkQ2xhc3ModC5wYXJhbXMuc2Nyb2xsYmFyLnNjcm9sbGJhckRpc2FibGVkQ2xhc3MpLEMoKX07T2JqZWN0LmFzc2lnbih0LnNjcm9sbGJhcix7ZW5hYmxlOigpPT57dC4kZWwucmVtb3ZlQ2xhc3ModC5wYXJhbXMuc2Nyb2xsYmFyLnNjcm9sbGJhckRpc2FibGVkQ2xhc3MpLHQuc2Nyb2xsYmFyLiRlbCYmdC5zY3JvbGxiYXIuJGVsLnJlbW92ZUNsYXNzKHQucGFyYW1zLnNjcm9sbGJhci5zY3JvbGxiYXJEaXNhYmxlZENsYXNzKSxTKCksZygpLHAoKX0sZGlzYWJsZTpBLHVwZGF0ZVNpemU6ZyxzZXRUcmFuc2xhdGU6cCxpbml0OlMsZGVzdHJveTpDfSl9ZnVuY3Rpb24gWih7c3dpcGVyOnQsZXh0ZW5kUGFyYW1zOmUsb246aSxlbWl0OnN9KXtlKHtsYXp5OntjaGVja0luVmlldzohMSxlbmFibGVkOiExLGxvYWRQcmV2TmV4dDohMSxsb2FkUHJldk5leHRBbW91bnQ6MSxsb2FkT25UcmFuc2l0aW9uU3RhcnQ6ITEsc2Nyb2xsaW5nRWxlbWVudDoiIixlbGVtZW50Q2xhc3M6InN3aXBlci1sYXp5Iixsb2FkaW5nQ2xhc3M6InN3aXBlci1sYXp5LWxvYWRpbmciLGxvYWRlZENsYXNzOiJzd2lwZXItbGF6eS1sb2FkZWQiLHByZWxvYWRlckNsYXNzOiJzd2lwZXItbGF6eS1wcmVsb2FkZXIifX0pLHQubGF6eT17fTtsZXQgYT0hMSxuPSExO2Z1bmN0aW9uIHIoZSxpPSEwKXtjb25zdCBhPXQucGFyYW1zLmxhenk7aWYodm9pZCAwPT09ZSlyZXR1cm47aWYoMD09PXQuc2xpZGVzLmxlbmd0aClyZXR1cm47Y29uc3Qgbj10LnZpcnR1YWwmJnQucGFyYW1zLnZpcnR1YWwuZW5hYmxlZD90LiR3cmFwcGVyRWwuY2hpbGRyZW4oYC4ke3QucGFyYW1zLnNsaWRlQ2xhc3N9W2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSIke2V9Il1gKTp0LnNsaWRlcy5lcShlKSxvPW4uZmluZChgLiR7YS5lbGVtZW50Q2xhc3N9Om5vdCguJHthLmxvYWRlZENsYXNzfSk6bm90KC4ke2EubG9hZGluZ0NsYXNzfSlgKTshbi5oYXNDbGFzcyhhLmVsZW1lbnRDbGFzcyl8fG4uaGFzQ2xhc3MoYS5sb2FkZWRDbGFzcyl8fG4uaGFzQ2xhc3MoYS5sb2FkaW5nQ2xhc3MpfHxvLnB1c2goblswXSksMCE9PW8ubGVuZ3RoJiZvLmVhY2goKGU9Pntjb25zdCBvPW0oZSk7by5hZGRDbGFzcyhhLmxvYWRpbmdDbGFzcyk7Y29uc3QgbD1vLmF0dHIoImRhdGEtYmFja2dyb3VuZCIpLGM9by5hdHRyKCJkYXRhLXNyYyIpLGg9by5hdHRyKCJkYXRhLXNyY3NldCIpLGQ9by5hdHRyKCJkYXRhLXNpemVzIiksdT1vLnBhcmVudCgicGljdHVyZSIpO3QubG9hZEltYWdlKG9bMF0sY3x8bCxoLGQsITEsKCgpPT57aWYobnVsbCE9dCYmdCYmKCF0fHx0LnBhcmFtcykmJiF0LmRlc3Ryb3llZCl7aWYobD8oby5jc3MoImJhY2tncm91bmQtaW1hZ2UiLGB1cmwoIiR7bH0iKWApLG8ucmVtb3ZlQXR0cigiZGF0YS1iYWNrZ3JvdW5kIikpOihoJiYoby5hdHRyKCJzcmNzZXQiLGgpLG8ucmVtb3ZlQXR0cigiZGF0YS1zcmNzZXQiKSksZCYmKG8uYXR0cigic2l6ZXMiLGQpLG8ucmVtb3ZlQXR0cigiZGF0YS1zaXplcyIpKSx1Lmxlbmd0aCYmdS5jaGlsZHJlbigic291cmNlIikuZWFjaCgodD0+e2NvbnN0IGU9bSh0KTtlLmF0dHIoImRhdGEtc3Jjc2V0IikmJihlLmF0dHIoInNyY3NldCIsZS5hdHRyKCJkYXRhLXNyY3NldCIpKSxlLnJlbW92ZUF0dHIoImRhdGEtc3Jjc2V0IikpfSkpLGMmJihvLmF0dHIoInNyYyIsYyksby5yZW1vdmVBdHRyKCJkYXRhLXNyYyIpKSksby5hZGRDbGFzcyhhLmxvYWRlZENsYXNzKS5yZW1vdmVDbGFzcyhhLmxvYWRpbmdDbGFzcyksbi5maW5kKGAuJHthLnByZWxvYWRlckNsYXNzfWApLnJlbW92ZSgpLHQucGFyYW1zLmxvb3AmJmkpe2NvbnN0IGU9bi5hdHRyKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpO24uaGFzQ2xhc3ModC5wYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzcyk/cih0LiR3cmFwcGVyRWwuY2hpbGRyZW4oYFtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJHtlfSJdOm5vdCguJHt0LnBhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzfSlgKS5pbmRleCgpLCExKTpyKHQuJHdyYXBwZXJFbC5jaGlsZHJlbihgLiR7dC5wYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzc31bZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IiR7ZX0iXWApLmluZGV4KCksITEpfXMoImxhenlJbWFnZVJlYWR5IixuWzBdLG9bMF0pLHQucGFyYW1zLmF1dG9IZWlnaHQmJnQudXBkYXRlQXV0b0hlaWdodCgpfX0pKSxzKCJsYXp5SW1hZ2VMb2FkIixuWzBdLG9bMF0pfSkpfWZ1bmN0aW9uIG8oKXtjb25zdHskd3JhcHBlckVsOmUscGFyYW1zOmksc2xpZGVzOnMsYWN0aXZlSW5kZXg6YX09dCxvPXQudmlydHVhbCYmaS52aXJ0dWFsLmVuYWJsZWQsbD1pLmxhenk7bGV0IGM9aS5zbGlkZXNQZXJWaWV3O2Z1bmN0aW9uIGgodCl7aWYobyl7aWYoZS5jaGlsZHJlbihgLiR7aS5zbGlkZUNsYXNzfVtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJHt0fSJdYCkubGVuZ3RoKXJldHVybiEwfWVsc2UgaWYoc1t0XSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBkKHQpe3JldHVybiBvP20odCkuYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKTptKHQpLmluZGV4KCl9aWYoImF1dG8iPT09YyYmKGM9MCksbnx8KG49ITApLHQucGFyYW1zLndhdGNoU2xpZGVzUHJvZ3Jlc3MpZS5jaGlsZHJlbihgLiR7aS5zbGlkZVZpc2libGVDbGFzc31gKS5lYWNoKCh0PT57cihvP20odCkuYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKTptKHQpLmluZGV4KCkpfSkpO2Vsc2UgaWYoYz4xKWZvcihsZXQgdD1hO3Q8YStjO3QrPTEpaCh0KSYmcih0KTtlbHNlIHIoYSk7aWYobC5sb2FkUHJldk5leHQpaWYoYz4xfHxsLmxvYWRQcmV2TmV4dEFtb3VudCYmbC5sb2FkUHJldk5leHRBbW91bnQ+MSl7Y29uc3QgdD1sLmxvYWRQcmV2TmV4dEFtb3VudCxlPU1hdGguY2VpbChjKSxpPU1hdGgubWluKGErZStNYXRoLm1heCh0LGUpLHMubGVuZ3RoKSxuPU1hdGgubWF4KGEtTWF0aC5tYXgoZSx0KSwwKTtmb3IobGV0IHQ9YStlO3Q8aTt0Kz0xKWgodCkmJnIodCk7Zm9yKGxldCB0PW47dDxhO3QrPTEpaCh0KSYmcih0KX1lbHNle2NvbnN0IHQ9ZS5jaGlsZHJlbihgLiR7aS5zbGlkZU5leHRDbGFzc31gKTt0Lmxlbmd0aD4wJiZyKGQodCkpO2NvbnN0IHM9ZS5jaGlsZHJlbihgLiR7aS5zbGlkZVByZXZDbGFzc31gKTtzLmxlbmd0aD4wJiZyKGQocykpfX1mdW5jdGlvbiBjKCl7Y29uc3QgZT1sKCk7aWYoIXR8fHQuZGVzdHJveWVkKXJldHVybjtjb25zdCBpPXQucGFyYW1zLmxhenkuc2Nyb2xsaW5nRWxlbWVudD9tKHQucGFyYW1zLmxhenkuc2Nyb2xsaW5nRWxlbWVudCk6bShlKSxzPWlbMF09PT1lLG49cz9lLmlubmVyV2lkdGg6aVswXS5vZmZzZXRXaWR0aCxyPXM/ZS5pbm5lckhlaWdodDppWzBdLm9mZnNldEhlaWdodCxoPXQuJGVsLm9mZnNldCgpLHtydGxUcmFuc2xhdGU6ZH09dDtsZXQgdT0hMTtkJiYoaC5sZWZ0LT10LiRlbFswXS5zY3JvbGxMZWZ0KTtjb25zdCBwPVtbaC5sZWZ0LGgudG9wXSxbaC5sZWZ0K3Qud2lkdGgsaC50b3BdLFtoLmxlZnQsaC50b3ArdC5oZWlnaHRdLFtoLmxlZnQrdC53aWR0aCxoLnRvcCt0LmhlaWdodF1dO2ZvcihsZXQgdD0wO3Q8cC5sZW5ndGg7dCs9MSl7Y29uc3QgZT1wW3RdO2lmKGVbMF0+PTAmJmVbMF08PW4mJmVbMV0+PTAmJmVbMV08PXIpe2lmKDA9PT1lWzBdJiYwPT09ZVsxXSljb250aW51ZTt1PSEwfX1jb25zdCBnPSEoInRvdWNoc3RhcnQiIT09dC50b3VjaEV2ZW50cy5zdGFydHx8IXQuc3VwcG9ydC5wYXNzaXZlTGlzdGVuZXJ8fCF0LnBhcmFtcy5wYXNzaXZlTGlzdGVuZXJzKSYme3Bhc3NpdmU6ITAsY2FwdHVyZTohMX07dT8obygpLGkub2ZmKCJzY3JvbGwiLGMsZykpOmF8fChhPSEwLGkub24oInNjcm9sbCIsYyxnKSl9aSgiYmVmb3JlSW5pdCIsKCgpPT57dC5wYXJhbXMubGF6eS5lbmFibGVkJiZ0LnBhcmFtcy5wcmVsb2FkSW1hZ2VzJiYodC5wYXJhbXMucHJlbG9hZEltYWdlcz0hMSl9KSksaSgiaW5pdCIsKCgpPT57dC5wYXJhbXMubGF6eS5lbmFibGVkJiYodC5wYXJhbXMubGF6eS5jaGVja0luVmlldz9jKCk6bygpKX0pKSxpKCJzY3JvbGwiLCgoKT0+e3QucGFyYW1zLmZyZWVNb2RlJiZ0LnBhcmFtcy5mcmVlTW9kZS5lbmFibGVkJiYhdC5wYXJhbXMuZnJlZU1vZGUuc3RpY2t5JiZvKCl9KSksaSgic2Nyb2xsYmFyRHJhZ01vdmUgcmVzaXplIF9mcmVlTW9kZU5vTW9tZW50dW1SZWxlYXNlIiwoKCk9Pnt0LnBhcmFtcy5sYXp5LmVuYWJsZWQmJih0LnBhcmFtcy5sYXp5LmNoZWNrSW5WaWV3P2MoKTpvKCkpfSkpLGkoInRyYW5zaXRpb25TdGFydCIsKCgpPT57dC5wYXJhbXMubGF6eS5lbmFibGVkJiYodC5wYXJhbXMubGF6eS5sb2FkT25UcmFuc2l0aW9uU3RhcnR8fCF0LnBhcmFtcy5sYXp5LmxvYWRPblRyYW5zaXRpb25TdGFydCYmIW4pJiYodC5wYXJhbXMubGF6eS5jaGVja0luVmlldz9jKCk6bygpKX0pKSxpKCJ0cmFuc2l0aW9uRW5kIiwoKCk9Pnt0LnBhcmFtcy5sYXp5LmVuYWJsZWQmJiF0LnBhcmFtcy5sYXp5LmxvYWRPblRyYW5zaXRpb25TdGFydCYmKHQucGFyYW1zLmxhenkuY2hlY2tJblZpZXc/YygpOm8oKSl9KSksaSgic2xpZGVDaGFuZ2UiLCgoKT0+e2NvbnN0e2xhenk6ZSxjc3NNb2RlOmksd2F0Y2hTbGlkZXNQcm9ncmVzczpzLHRvdWNoUmVsZWFzZU9uRWRnZXM6YSxyZXNpc3RhbmNlUmF0aW86bn09dC5wYXJhbXM7ZS5lbmFibGVkJiYoaXx8cyYmKGF8fDA9PT1uKSkmJm8oKX0pKSxpKCJkZXN0cm95IiwoKCk9Pnt0LiRlbCYmdC4kZWwuZmluZChgLiR7dC5wYXJhbXMubGF6eS5sb2FkaW5nQ2xhc3N9YCkucmVtb3ZlQ2xhc3ModC5wYXJhbXMubGF6eS5sb2FkaW5nQ2xhc3MpfSkpLE9iamVjdC5hc3NpZ24odC5sYXp5LHtsb2FkOm8sbG9hZEluU2xpZGU6cn0pfWZ1bmN0aW9uIEsoe3N3aXBlcjp0LGV4dGVuZFBhcmFtczplLG9uOmksZW1pdDpzfSl7bGV0IGE7ZnVuY3Rpb24gbigpe2lmKCF0LnNpemUpcmV0dXJuIHQuYXV0b3BsYXkucnVubmluZz0hMSx2b2lkKHQuYXV0b3BsYXkucGF1c2VkPSExKTtjb25zdCBlPXQuc2xpZGVzLmVxKHQuYWN0aXZlSW5kZXgpO2xldCBpPXQucGFyYW1zLmF1dG9wbGF5LmRlbGF5O2UuYXR0cigiZGF0YS1zd2lwZXItYXV0b3BsYXkiKSYmKGk9ZS5hdHRyKCJkYXRhLXN3aXBlci1hdXRvcGxheSIpfHx0LnBhcmFtcy5hdXRvcGxheS5kZWxheSksY2xlYXJUaW1lb3V0KGEpLGE9digoKCk9PntsZXQgZTt0LnBhcmFtcy5hdXRvcGxheS5yZXZlcnNlRGlyZWN0aW9uP3QucGFyYW1zLmxvb3A/KHQubG9vcEZpeCgpLGU9dC5zbGlkZVByZXYodC5wYXJhbXMuc3BlZWQsITAsITApLHMoImF1dG9wbGF5IikpOnQuaXNCZWdpbm5pbmc/dC5wYXJhbXMuYXV0b3BsYXkuc3RvcE9uTGFzdFNsaWRlP2woKTooZT10LnNsaWRlVG8odC5zbGlkZXMubGVuZ3RoLTEsdC5wYXJhbXMuc3BlZWQsITAsITApLHMoImF1dG9wbGF5IikpOihlPXQuc2xpZGVQcmV2KHQucGFyYW1zLnNwZWVkLCEwLCEwKSxzKCJhdXRvcGxheSIpKTp0LnBhcmFtcy5sb29wPyh0Lmxvb3BGaXgoKSxlPXQuc2xpZGVOZXh0KHQucGFyYW1zLnNwZWVkLCEwLCEwKSxzKCJhdXRvcGxheSIpKTp0LmlzRW5kP3QucGFyYW1zLmF1dG9wbGF5LnN0b3BPbkxhc3RTbGlkZT9sKCk6KGU9dC5zbGlkZVRvKDAsdC5wYXJhbXMuc3BlZWQsITAsITApLHMoImF1dG9wbGF5IikpOihlPXQuc2xpZGVOZXh0KHQucGFyYW1zLnNwZWVkLCEwLCEwKSxzKCJhdXRvcGxheSIpKSwodC5wYXJhbXMuY3NzTW9kZSYmdC5hdXRvcGxheS5ydW5uaW5nfHwhMT09PWUpJiZuKCl9KSxpKX1mdW5jdGlvbiBvKCl7cmV0dXJuIHZvaWQgMD09PWEmJiF0LmF1dG9wbGF5LnJ1bm5pbmcmJih0LmF1dG9wbGF5LnJ1bm5pbmc9ITAscygiYXV0b3BsYXlTdGFydCIpLG4oKSwhMCl9ZnVuY3Rpb24gbCgpe3JldHVybiEhdC5hdXRvcGxheS5ydW5uaW5nJiZ2b2lkIDAhPT1hJiYoYSYmKGNsZWFyVGltZW91dChhKSxhPXZvaWQgMCksdC5hdXRvcGxheS5ydW5uaW5nPSExLHMoImF1dG9wbGF5U3RvcCIpLCEwKX1mdW5jdGlvbiBjKGUpe3QuYXV0b3BsYXkucnVubmluZyYmKHQuYXV0b3BsYXkucGF1c2VkfHwoYSYmY2xlYXJUaW1lb3V0KGEpLHQuYXV0b3BsYXkucGF1c2VkPSEwLDAhPT1lJiZ0LnBhcmFtcy5hdXRvcGxheS53YWl0Rm9yVHJhbnNpdGlvbj9bInRyYW5zaXRpb25lbmQiLCJ3ZWJraXRUcmFuc2l0aW9uRW5kIl0uZm9yRWFjaCgoZT0+e3QuJHdyYXBwZXJFbFswXS5hZGRFdmVudExpc3RlbmVyKGUsZCl9KSk6KHQuYXV0b3BsYXkucGF1c2VkPSExLG4oKSkpKX1mdW5jdGlvbiBoKCl7Y29uc3QgZT1yKCk7ImhpZGRlbiI9PT1lLnZpc2liaWxpdHlTdGF0ZSYmdC5hdXRvcGxheS5ydW5uaW5nJiZjKCksInZpc2libGUiPT09ZS52aXNpYmlsaXR5U3RhdGUmJnQuYXV0b3BsYXkucGF1c2VkJiYobigpLHQuYXV0b3BsYXkucGF1c2VkPSExKX1mdW5jdGlvbiBkKGUpe3QmJiF0LmRlc3Ryb3llZCYmdC4kd3JhcHBlckVsJiZlLnRhcmdldD09PXQuJHdyYXBwZXJFbFswXSYmKFsidHJhbnNpdGlvbmVuZCIsIndlYmtpdFRyYW5zaXRpb25FbmQiXS5mb3JFYWNoKChlPT57dC4kd3JhcHBlckVsWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxkKX0pKSx0LmF1dG9wbGF5LnBhdXNlZD0hMSx0LmF1dG9wbGF5LnJ1bm5pbmc/bigpOmwoKSl9ZnVuY3Rpb24gdSgpe3QucGFyYW1zLmF1dG9wbGF5LmRpc2FibGVPbkludGVyYWN0aW9uP2woKToocygiYXV0b3BsYXlQYXVzZSIpLGMoKSksWyJ0cmFuc2l0aW9uZW5kIiwid2Via2l0VHJhbnNpdGlvbkVuZCJdLmZvckVhY2goKGU9Pnt0LiR3cmFwcGVyRWxbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLGQpfSkpfWZ1bmN0aW9uIHAoKXt0LnBhcmFtcy5hdXRvcGxheS5kaXNhYmxlT25JbnRlcmFjdGlvbnx8KHQuYXV0b3BsYXkucGF1c2VkPSExLHMoImF1dG9wbGF5UmVzdW1lIiksbigpKX10LmF1dG9wbGF5PXtydW5uaW5nOiExLHBhdXNlZDohMX0sZSh7YXV0b3BsYXk6e2VuYWJsZWQ6ITEsZGVsYXk6M2UzLHdhaXRGb3JUcmFuc2l0aW9uOiEwLGRpc2FibGVPbkludGVyYWN0aW9uOiEwLHN0b3BPbkxhc3RTbGlkZTohMSxyZXZlcnNlRGlyZWN0aW9uOiExLHBhdXNlT25Nb3VzZUVudGVyOiExfX0pLGkoImluaXQiLCgoKT0+e3QucGFyYW1zLmF1dG9wbGF5LmVuYWJsZWQmJihvKCkscigpLmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLGgpLHQucGFyYW1zLmF1dG9wbGF5LnBhdXNlT25Nb3VzZUVudGVyJiYodC4kZWwub24oIm1vdXNlZW50ZXIiLHUpLHQuJGVsLm9uKCJtb3VzZWxlYXZlIixwKSkpfSkpLGkoImJlZm9yZVRyYW5zaXRpb25TdGFydCIsKChlLGkscyk9Pnt0LmF1dG9wbGF5LnJ1bm5pbmcmJihzfHwhdC5wYXJhbXMuYXV0b3BsYXkuZGlzYWJsZU9uSW50ZXJhY3Rpb24/dC5hdXRvcGxheS5wYXVzZShpKTpsKCkpfSkpLGkoInNsaWRlckZpcnN0TW92ZSIsKCgpPT57dC5hdXRvcGxheS5ydW5uaW5nJiYodC5wYXJhbXMuYXV0b3BsYXkuZGlzYWJsZU9uSW50ZXJhY3Rpb24/bCgpOmMoKSl9KSksaSgidG91Y2hFbmQiLCgoKT0+e3QucGFyYW1zLmNzc01vZGUmJnQuYXV0b3BsYXkucGF1c2VkJiYhdC5wYXJhbXMuYXV0b3BsYXkuZGlzYWJsZU9uSW50ZXJhY3Rpb24mJm4oKX0pKSxpKCJkZXN0cm95IiwoKCk9Pnt0LiRlbC5vZmYoIm1vdXNlZW50ZXIiLHUpLHQuJGVsLm9mZigibW91c2VsZWF2ZSIscCksdC5hdXRvcGxheS5ydW5uaW5nJiZsKCkscigpLnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLGgpfSkpLE9iamVjdC5hc3NpZ24odC5hdXRvcGxheSx7cGF1c2U6YyxydW46bixzdGFydDpvLHN0b3A6bH0pfX0sNDc4OmZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7aS5kKGUse1pQOmZ1bmN0aW9uKCl7cmV0dXJuIEx9fSk7Y29uc3Qgcz1uZXcgU2V0LGE9bmV3IFdlYWtNYXAsbj1uZXcgV2Vha01hcCxyPW5ldyBXZWFrTWFwLG89bmV3IFdlYWtNYXAsbD1uZXcgV2Vha01hcCxjPW5ldyBXZWFrTWFwLGg9bmV3IFdlYWtNYXAsZD1uZXcgV2Vha1NldDtsZXQgdTtjb25zdCBwPSJfX2FhX3RndCIsZz0iX19hYV9kZWwiO2Z1bmN0aW9uIGYodCl7Y2xlYXJUaW1lb3V0KGguZ2V0KHQpKTtjb25zdCBlPUModCksaT0iZnVuY3Rpb24iPT10eXBlb2YgZT81MDA6ZS5kdXJhdGlvbjtoLnNldCh0LHNldFRpbWVvdXQoKGFzeW5jKCk9Pntjb25zdCBlPXIuZ2V0KHQpO2UmJiFhd2FpdCBlLmZpbmlzaGVkfHwoYS5zZXQodCxrKHQpKSxmdW5jdGlvbih0KXtjb25zdCBlPW8uZ2V0KHQpO251bGw9PWV8fGUuZGlzY29ubmVjdCgpO2xldCBpPWEuZ2V0KHQpLHM9MDtpfHwoaT1rKHQpLGEuc2V0KHQsaSkpO2NvbnN0e29mZnNldFdpZHRoOm4sb2Zmc2V0SGVpZ2h0OnJ9PXUsbD1baS50b3AtNSxuLShpLmxlZnQrNStpLndpZHRoKSxyLShpLnRvcCs1K2kuaGVpZ2h0KSxpLmxlZnQtNV0ubWFwKCh0PT4tMSpNYXRoLmZsb29yKHQpKyJweCIpKS5qb2luKCIgIiksYz1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKCgpPT57KytzPjEmJmYodCl9KSx7cm9vdDp1LHRocmVzaG9sZDoxLHJvb3RNYXJnaW46bH0pO2Mub2JzZXJ2ZSh0KSxvLnNldCh0LGMpfSh0KSl9KSxpKSl9ZnVuY3Rpb24gbSh0KXtzZXRUaW1lb3V0KCgoKT0+e2wuc2V0KHQsc2V0SW50ZXJ2YWwoKCgpPT52KGYuYmluZChudWxsLHQpKSksMmUzKSl9KSxNYXRoLnJvdW5kKDJlMypNYXRoLnJhbmRvbSgpKSl9ZnVuY3Rpb24gdih0KXsiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWVzdElkbGVDYWxsYmFjaz9yZXF1ZXN0SWRsZUNhbGxiYWNrKCgoKT0+dCgpKSk6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dCgpKSl9bGV0IHgsYjtmdW5jdGlvbiB5KHQsZSl7ZXx8cCBpbiB0P2UmJiEocCBpbiBlKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscCx7dmFsdWU6dH0pOk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHAse3ZhbHVlOnR9KX1mdW5jdGlvbiB3KHQpe3JldHVybiBOdW1iZXIodC5yZXBsYWNlKC9bXjAtOS5cLV0vZywiIikpfWZ1bmN0aW9uIGsodCl7Y29uc3QgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt0b3A6ZS50b3Ard2luZG93LnNjcm9sbFksbGVmdDplLmxlZnQrd2luZG93LnNjcm9sbFgsd2lkdGg6ZS53aWR0aCxoZWlnaHQ6ZS5oZWlnaHR9fWZ1bmN0aW9uIFModCxlLGkpe2xldCBzPWUud2lkdGgsYT1lLmhlaWdodCxuPWkud2lkdGgscj1pLmhlaWdodDtjb25zdCBvPWdldENvbXB1dGVkU3R5bGUodCk7aWYoImNvbnRlbnQtYm94Ij09PW8uZ2V0UHJvcGVydHlWYWx1ZSgiYm94LXNpemluZyIpKXtjb25zdCB0PXcoby5wYWRkaW5nVG9wKSt3KG8ucGFkZGluZ0JvdHRvbSkrdyhvLmJvcmRlclRvcFdpZHRoKSt3KG8uYm9yZGVyQm90dG9tV2lkdGgpLGU9dyhvLnBhZGRpbmdMZWZ0KSt3KG8ucGFkZGluZ1JpZ2h0KSt3KG8uYm9yZGVyUmlnaHRXaWR0aCkrdyhvLmJvcmRlckxlZnRXaWR0aCk7cy09ZSxuLT1lLGEtPXQsci09dH1yZXR1cm5bcyxuLGEscl0ubWFwKE1hdGgucm91bmQpfWZ1bmN0aW9uIEModCl7cmV0dXJuIHAgaW4gdCYmYy5oYXModFtwXSk/Yy5nZXQodFtwXSk6e2R1cmF0aW9uOjI1MCxlYXNpbmc6ImVhc2UtaW4tb3V0In19ZnVuY3Rpb24gQSh0KXtpZihwIGluIHQpcmV0dXJuIHRbcF19ZnVuY3Rpb24gRSh0KXtjb25zdCBlPUEodCk7cmV0dXJuISFlJiZkLmhhcyhlKX1mdW5jdGlvbiBUKHQsLi4uZSl7ZS5mb3JFYWNoKChlPT5lKHQsYy5oYXModCkpKSk7Zm9yKGxldCBpPTA7aTx0LmNoaWxkcmVuLmxlbmd0aDtpKyspe2NvbnN0IHM9dC5jaGlsZHJlbi5pdGVtKGkpO3MmJmUuZm9yRWFjaCgodD0+dChzLGMuaGFzKHMpKSkpfX1mdW5jdGlvbiBMKHQsZT17fSl7cmV0dXJuIHgmJmImJih3aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkiKS5tYXRjaGVzJiYiZnVuY3Rpb24iIT10eXBlb2YgZSYmIWUuZGlzcmVzcGVjdFVzZXJNb3Rpb25QcmVmZXJlbmNlfHwoZC5hZGQodCksInN0YXRpYyI9PT1nZXRDb21wdXRlZFN0eWxlKHQpLnBvc2l0aW9uJiZPYmplY3QuYXNzaWduKHQuc3R5bGUse3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9KSxUKHQsZixtLCh0PT5udWxsPT1iP3ZvaWQgMDpiLm9ic2VydmUodCkpKSwiZnVuY3Rpb24iPT10eXBlb2YgZT9jLnNldCh0LGUpOmMuc2V0KHQse2R1cmF0aW9uOjI1MCxlYXNpbmc6ImVhc2UtaW4tb3V0IiwuLi5lfSkseC5vYnNlcnZlKHQse2NoaWxkTGlzdDohMH0pLHMuYWRkKHQpKSksT2JqZWN0LmZyZWV6ZSh7cGFyZW50OnQsZW5hYmxlOigpPT57ZC5hZGQodCl9LGRpc2FibGU6KCk9PntkLmRlbGV0ZSh0KX0saXNFbmFibGVkOigpPT5kLmhhcyh0KX0pfSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYodT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQseD1uZXcgTXV0YXRpb25PYnNlcnZlcigodD0+e2NvbnN0IGU9ZnVuY3Rpb24odCl7cmV0dXJuIXQucmVkdWNlKCgodCxlKT0+Wy4uLnQsLi4uQXJyYXkuZnJvbShlLmFkZGVkTm9kZXMpLC4uLkFycmF5LmZyb20oZS5yZW1vdmVkTm9kZXMpXSksW10pLmV2ZXJ5KCh0PT4iI2NvbW1lbnQiPT09dC5ub2RlTmFtZSkpJiZ0LnJlZHVjZSgoKHQsZSk9PntpZighMT09PXQpcmV0dXJuITE7aWYoZS50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50KXtpZih5KGUudGFyZ2V0KSwhdC5oYXMoZS50YXJnZXQpKXt0LmFkZChlLnRhcmdldCk7Zm9yKGxldCBpPTA7aTxlLnRhcmdldC5jaGlsZHJlbi5sZW5ndGg7aSsrKXtjb25zdCBzPWUudGFyZ2V0LmNoaWxkcmVuLml0ZW0oaSk7aWYocyl7aWYoZyBpbiBzKXJldHVybiExO3koZS50YXJnZXQscyksdC5hZGQocyl9fX1pZihlLnJlbW92ZWROb2Rlcy5sZW5ndGgpZm9yKGxldCBpPTA7aTxlLnJlbW92ZWROb2Rlcy5sZW5ndGg7aSsrKXtjb25zdCBzPWUucmVtb3ZlZE5vZGVzW2ldO2lmKGcgaW4gcylyZXR1cm4hMTtzIGluc3RhbmNlb2YgRWxlbWVudCYmKHQuYWRkKHMpLHkoZS50YXJnZXQscyksbi5zZXQocyxbZS5wcmV2aW91c1NpYmxpbmcsZS5uZXh0U2libGluZ10pKX19cmV0dXJuIHR9KSxuZXcgU2V0KX0odCk7ZSYmZS5mb3JFYWNoKCh0PT5mdW5jdGlvbih0KXt2YXIgZTtjb25zdCBpPXUuY29udGFpbnModCkscz1hLmhhcyh0KTtpJiZuLmhhcyh0KSYmbi5kZWxldGUodCksci5oYXModCkmJihudWxsPT09KGU9ci5nZXQodCkpfHx2b2lkIDA9PT1lfHxlLmNhbmNlbCgpKSxzJiZpP2Z1bmN0aW9uKHQpe2NvbnN0IGU9YS5nZXQodCksaT1rKHQpO2lmKCFFKHQpKXJldHVybiBhLnNldCh0LGkpO2xldCBzO2lmKCFlKXJldHVybjtjb25zdCBuPUModCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pe2NvbnN0IGE9ZS5sZWZ0LWkubGVmdCxyPWUudG9wLWkudG9wLFtvLGwsYyxoXT1TKHQsZSxpKSxkPXt0cmFuc2Zvcm06YHRyYW5zbGF0ZSgke2F9cHgsICR7cn1weClgfSx1PXt0cmFuc2Zvcm06InRyYW5zbGF0ZSgwLCAwKSJ9O28hPT1sJiYoZC53aWR0aD1gJHtvfXB4YCx1LndpZHRoPWAke2x9cHhgKSxjIT09aCYmKGQuaGVpZ2h0PWAke2N9cHhgLHUuaGVpZ2h0PWAke2h9cHhgKSxzPXQuYW5pbWF0ZShbZCx1XSx7ZHVyYXRpb246bi5kdXJhdGlvbixlYXNpbmc6bi5lYXNpbmd9KX1lbHNlIHM9bmV3IEFuaW1hdGlvbihuKHQsInJlbWFpbiIsZSxpKSkscy5wbGF5KCk7ci5zZXQodCxzKSxhLnNldCh0LGkpLHMuYWRkRXZlbnRMaXN0ZW5lcigiZmluaXNoIixmLmJpbmQobnVsbCx0KSl9KHQpOnMmJiFpP2Z1bmN0aW9uKHQpe3ZhciBlO2lmKCFuLmhhcyh0KXx8IWEuaGFzKHQpKXJldHVybjtjb25zdFtpLHNdPW4uZ2V0KHQpO2Z1bmN0aW9uIGwoKXt2YXIgZTt0LnJlbW92ZSgpLGEuZGVsZXRlKHQpLG4uZGVsZXRlKHQpLHIuZGVsZXRlKHQpLG51bGw9PT0oZT1vLmdldCh0KSl8fHZvaWQgMD09PWV8fGUuZGlzY29ubmVjdCgpfWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGcse3ZhbHVlOiEwfSkscyYmcy5wYXJlbnROb2RlJiZzLnBhcmVudE5vZGUgaW5zdGFuY2VvZiBFbGVtZW50P3MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodCxzKTppJiZpLnBhcmVudE5vZGU/aS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHQpOm51bGw9PT0oZT1BKHQpKXx8dm9pZCAwPT09ZXx8ZS5hcHBlbmRDaGlsZCh0KSwhRSh0KSlyZXR1cm4gbCgpO2NvbnN0W2MsaCxkLHVdPWZ1bmN0aW9uKHQpe2NvbnN0IGU9YS5nZXQodCksW2ksLHNdPVModCxlLGsodCkpO2xldCBuPXQucGFyZW50RWxlbWVudDtmb3IoO24mJigic3RhdGljIj09PWdldENvbXB1dGVkU3R5bGUobikucG9zaXRpb258fG4gaW5zdGFuY2VvZiBIVE1MQm9keUVsZW1lbnQpOyluPW4ucGFyZW50RWxlbWVudDtufHwobj1kb2N1bWVudC5ib2R5KTtjb25zdCByPWdldENvbXB1dGVkU3R5bGUobiksbz1hLmdldChuKXx8ayhuKTtyZXR1cm5bTWF0aC5yb3VuZChlLnRvcC1vLnRvcCktdyhyLmJvcmRlclRvcFdpZHRoKSxNYXRoLnJvdW5kKGUubGVmdC1vLmxlZnQpLXcoci5ib3JkZXJMZWZ0V2lkdGgpLGksc119KHQpLHA9Qyh0KSxmPWEuZ2V0KHQpO2xldCBtO09iamVjdC5hc3NpZ24odC5zdHlsZSx7cG9zaXRpb246ImFic29sdXRlIix0b3A6YCR7Y31weGAsbGVmdDpgJHtofXB4YCx3aWR0aDpgJHtkfXB4YCxoZWlnaHQ6YCR7dX1weGAsbWFyZ2luOjAscG9pbnRlckV2ZW50czoibm9uZSIsdHJhbnNmb3JtT3JpZ2luOiJjZW50ZXIiLHpJbmRleDoxMDB9KSwiZnVuY3Rpb24iIT10eXBlb2YgcD9tPXQuYW5pbWF0ZShbe3RyYW5zZm9ybToic2NhbGUoMSkiLG9wYWNpdHk6MX0se3RyYW5zZm9ybToic2NhbGUoLjk4KSIsb3BhY2l0eTowfV0se2R1cmF0aW9uOnAuZHVyYXRpb24sZWFzaW5nOiJlYXNlLW91dCJ9KToobT1uZXcgQW5pbWF0aW9uKHAodCwicmVtb3ZlIixmKSksbS5wbGF5KCkpLHIuc2V0KHQsbSksbS5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2giLGwpfSh0KTpmdW5jdGlvbih0KXtjb25zdCBlPWsodCk7YS5zZXQodCxlKTtjb25zdCBpPUModCk7aWYoIUUodCkpcmV0dXJuO2xldCBzOyJmdW5jdGlvbiIhPXR5cGVvZiBpP3M9dC5hbmltYXRlKFt7dHJhbnNmb3JtOiJzY2FsZSguOTgpIixvcGFjaXR5OjB9LHt0cmFuc2Zvcm06InNjYWxlKDAuOTgpIixvcGFjaXR5OjAsb2Zmc2V0Oi41fSx7dHJhbnNmb3JtOiJzY2FsZSgxKSIsb3BhY2l0eToxfV0se2R1cmF0aW9uOjEuNSppLmR1cmF0aW9uLGVhc2luZzoiZWFzZS1pbiJ9KToocz1uZXcgQW5pbWF0aW9uKGkodCwiYWRkIixlKSkscy5wbGF5KCkpLHIuc2V0KHQscykscy5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2giLGYuYmluZChudWxsLHQpKX0odCl9KHQpKSl9KSksYj1uZXcgUmVzaXplT2JzZXJ2ZXIoKHQ9Pnt0LmZvckVhY2goKHQ9Pnt0LnRhcmdldD09PXUmJihjbGVhclRpbWVvdXQoaC5nZXQodSkpLGguc2V0KHUsc2V0VGltZW91dCgoKCk9PntzLmZvckVhY2goKHQ9PlQodCwodD0+digoKCk9PmYodCkpKSkpKSl9KSwxMDApKSksYS5oYXModC50YXJnZXQpJiZmKHQudGFyZ2V0KX0pKX0pKSxiLm9ic2VydmUodSkpfX1dKTs="}},"time_used":95,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":25,"receive":70,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.tidio.co/widget-v4/fonts/inter_UcCo3FwrK3iLTcviYwYZ8UA3.woff2","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.372Z","timestamp":1785145636372,"http_version":"HTTP/2","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":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"GET /widget-v4/fonts/inter_UcCo3FwrK3iLTcviYwYZ8UA3.woff2 HTTP/1.1\r\nHost: code.tidio.co\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://bit-core.top/\r\nOrigin: https://bit-core.top\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: font/woff2\r\ncontent-length: 73116\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncache-control: public, max-age=31536000, immutable\r\netag: \"6a670afc-11d9c\"\r\nlast-modified: Mon, 27 Jul 2026 07:38:36 GMT\r\nserver: cloudflare\r\nage: 7431\r\ncf-cache-status: HIT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=vY75jaRgKcRPypX3wNfbCcl3YBsw2xAeIBJyUTnxqwFN958Z%2BG3ieLwVU3zII0tnhd4D2b9Ubkj%2FN6HapTh94sYTL0g%2F1Q96TOO8fg1vaffG57aYsjLcJ9ZTH5pS3Lw%3D\"}]}\r\ncf-ray: a21ab8c35bfd723c-OSL\r\nX-Firefox-Spdy: h2\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"]}],"data":{"size":73116,"size_decoded":73815,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 73116, version 1.0","md5":"60b04eb8b865c18ebc9629881225ea3f","sha1":"e011916aaea9f6cbbba00b22bd45cda39bfee2bf","sha256":"7cfebba3d553c9b143bbc3544fff388f4d1fe122604d51470fd46a4babc74970","sha512":"d8031b12558271f0e264f683df6bd6b8f3dbd8de0ed3d331604e5ec9372a8a013386f9eb870b4e8d1610f6786151fd83cd4cbc5f2cc0f8996f8d855cd69b49a7","ssdeep":"1536:iPJpJutTS+KKG4ZKUOs3S6rRVIPzAyI1cnzyuOwizntkhIqu1/HwwKeTxkHS:aSGKG4T1VIky1zVOwSUIquNHwXSAS","tlshash":"f5630228586103d080f684c8eeb6919b8fa529921ff09a8809d75677d346e57dcceb46","first_seen":"2024-08-27T03:47:43Z","last_seen":"2026-07-29T05:11:58.424204Z","times_seen":7400,"resource_available":false,"data":"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"}},"time_used":9,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":8,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.tidio.co/widget-v4//tururu.mp3","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"media","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.565Z","timestamp":1785145636565,"http_version":"HTTP/2","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":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"GET /widget-v4//tururu.mp3 HTTP/1.1\r\nHost: code.tidio.co\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nRange: bytes=0-\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: audio\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nAccept-Encoding: identity\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 206 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: audio/mpeg\r\ncontent-length: 7224\r\nage: 7431\r\naccess-control-allow-origin: *\r\ncache-control: public, max-age=31536000, immutable\r\netag: \"6a670afb-1c38\"\r\nlast-modified: Mon, 27 Jul 2026 07:38:35 GMT\r\nserver: cloudflare\r\ncontent-range: bytes 0-7223/7224\r\ncf-cache-status: HIT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=FXxg63lkhxRGm6NXDhurOXOy%2FEaB33TmRL3BzAigQ7oNvmwsNxTQtcRjREINCUoWhuIHZbOkpSi0BkvlQcP2fiv9odVk%2BnxQhEDmRc9HblMdRJcOxmMiZyH8h1W77js%3D\"}]}\r\ncf-ray: a21ab8c48f38723c-OSL\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"206","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"]}],"data":{"size":7224,"size_decoded":7931,"mime_type":"audio/mpeg","magic":"MPEG ADTS, layer III, v1, 64 kbps, 44.1 kHz, Monaural","md5":"5061b4d134a7b4d5d744f9a127b757a8","sha1":"c5e240ac60d3914cb3836ba6652105c67720b845","sha256":"12c7687514ca85ba2157ed61914ac526bb9dd15cb5a2a2d9e4d88f919349284f","sha512":"bbd050943fd3129822d687f7733034989faa672e543d5fcc0f1bfc69f5af9c7ff3a4c6e1cd55011383760cef14351527f6de22cfb91b25e8d2ac201fc9b9c7c0","ssdeep":"192:2DjGr+6EnIPwZeM/BCepDxN8XcqOBO+JlRh:CjfxnIPkjpDP8Xcg+JlL","tlshash":"11e18c1937f3e09ed620177642d43664fcd01d8017e2945b25a8baebf13e3cbc26a961","first_seen":"2023-04-05T10:44:18Z","last_seen":"2026-07-29T05:11:58.424732Z","times_seen":9277,"resource_available":false,"data":"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"}},"time_used":7,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/img/liquidity-assets.png","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.050Z","timestamp":1785145636050,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /img/liquidity-assets.png HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: image/webp\r\ncontent-length: 81612\r\ncache-control: public, max-age=604800\r\nage: 6413\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: b15404b45f17183c15d9b98690189a8a-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":81612,"size_decoded":81918,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"1cdf93127b6d17c071106d913c78acb9","sha1":"05d3cbb5c380177c8d39977b0b0287c56bf96e6e","sha256":"80f96a97a2437fe22884fd36696aac1ad89cff86b490e79ad934cabdb6f5a885","sha512":"ffb6734a8aeb14725ea50b26e1cfb4b19e162a01a41e2f12d00acd9af9b5fce1dec5191cb7d09a345463d16490697908509e00d0ea2053a08216ca5814b91bf8","ssdeep":"1536:djlcgJsTjM7CkrqOK3gjjZZC3S1b8cjnFnWOiNYD74KSt58nzsH:dZcYLrqL3gjG3Sp8cMNcPSmsH","tlshash":"128302dbb323ed13fb01b6784c29e93be594a90053124ab352d68174cfb3645ba75f88","first_seen":"2026-07-27T08:06:16.613638Z","last_seen":"2026-07-27T09:48:29.867118Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":67,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":46,"receive":21,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.tidio.co/widget-v4/fonts/mulish_SGhgqk3wotYKNnBQ.woff2","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.367Z","timestamp":1785145636367,"http_version":"HTTP/2","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":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"GET /widget-v4/fonts/mulish_SGhgqk3wotYKNnBQ.woff2 HTTP/1.1\r\nHost: code.tidio.co\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nOrigin: https://bit-core.top\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: font/woff2\r\ncontent-length: 27400\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncache-control: public, max-age=31536000, immutable\r\netag: \"6a670afc-6b08\"\r\nlast-modified: Mon, 27 Jul 2026 07:38:36 GMT\r\nserver: cloudflare\r\nage: 7431\r\ncf-cache-status: HIT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=0Oek0rPG%2Bo3yXMpMrUHgGtdchGxsIWLfW0%2F1d28Hu6VJfpGsBqLI0ZfZwKTjbdmlRXbSLCtiscrfpffvkpLD4QI3feugs8JfRmodZJY9j9EbbFBx%2F%2Fhd9RFJyxCDRW0%3D\"}]}\r\ncf-ray: a21ab8c34be2723c-OSL\r\nX-Firefox-Spdy: h2\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"]}],"data":{"size":27400,"size_decoded":28100,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 27400, version 1.0","md5":"d96e6550e1c6b3063f60875bfd4a0870","sha1":"c1b22f0d075bd4413686866134fffcccb3f487b8","sha256":"577db921a554af3596942d3c48b5c91feaac8c767e183d518a8de8de86e5c7d8","sha512":"8446c25d840412230bb91806faab73de9dee5da6a8aae2c980431879d749ca8090d6879e6f42e3be27b416a00ee759dee2febc34df97c3ffa81ae15ce2196802","ssdeep":"768:F4xt+sRZS5Y1nK6uicEP3rhaxoQAoF6jLIRt:F4x3fcUrhOoK63IL","tlshash":"4dc2e10fe287737a5418f23ea969c86e365865503a2e67f1dc1a3ab51e18137b3c4f50","first_seen":"2023-04-08T09:21:33Z","last_seen":"2026-07-29T05:11:58.475312Z","times_seen":9319,"resource_available":false,"data":"d09GMgABAAAAAGsIABMAAAAA5VQAAGqZAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoIEG91gHIVKP0hWQVKDTAZgP1NUQVSBOCcyAIUCL34RCAr1YN1GC4QiADCBwAoBNgIkA4gwBCAFiUgHiT4by9Ul4rGBF+QugFVHfKtHFbBjj7hb0cBSoc0OxB4HCuxx5f+/J0gZMZPiLlAe1G1CwebUmk7PTO1ezRYe1M/Z6e7D0dK6Wu+j7Hdiz2mWSBElSgzsbgOt240hnqEsBdFr2q0/+la/5bYMTqPAKPiW3PqhhJGuePnxJB6PUYYSYUHBkis0xVxO9ecfZ+SfQZwC49W7XvywM7Bt5E9y8pI8/1BXX+e+iMwS25/INh01gFbj1Xgl7kXFz/Pb/HPfAx48SsDoIaI9Y238L7hMN9f6F+VcFleMWkSY8Z0ZrFqXafUQD/g5/YMqlFLEigSJGhEggffykhcnRgRLnCQQEoegNZlZf10278TY/K8yt3Yi1r9yGv1rUrfYFLDDA7wIfEMeRd7r1t6I/j/vGZgzw4Exy8KmIZxqZ5IsC8gkIssAECcOtF2JBsj/r9T57pGwY+pKNCgkBUr45/+PXve5L+uDBTRC4dmzgiONHW3mUtFqUvE38NuqB52o2Ii+7GS5eu+36zqn2sZC0SZaBQSRgPi6Z3vy0b40wU2S5kGBB7QlEJi9TXBVAAhtstuyJsshSEgNpmaCvsC8nkZjpHsTTwKH8cv4eVypVCKVSqQSmZxUDhb4SPZbpqAAFMD/2molxKNQq1AkTVAoFAqFQqFQqFGjRqFQo1Ao4lGoVVWjUFXA3fWev/f/va/4/b9bVZUg59Qls4a0GmFM5AmQHmj1v3X4Db+rKnT30tqQSCjk8NJImVJexBDX3e7va5pdv2w9rSYaaCn0tPi9+DVLCtR9gY9Y972cWjSWZMtua6gtBdqynfqeZKq+5UCPHbQdcryE/NRDXwq1PQtaAvZkAeGMdQ/d9nLa2tORwP9vrV47PRAEhWAcoEWhYszMrVd9d6q6ZhZ4PsGG0OWkq2p6f08vfCaVuAiXKJIsVHSMSLQAIcPS5/+mNTv/7nK90gLddd+E5XmMnEySS/4kudZydZdWtl0LZpPrlNIVj+fBZZfaFRqFMVVhEVbiEFoCQe74dxL2gHEA0npqgWKYX+119vZ2XgIyczKKspQu5F9AKJxMaZejyD+Hpas0Gd+FQTVj8FVVIZEO4D9kzf6bAaxbj8EsRkwVMSI9/PSd5p0LFMnFNLMiK7uSa00ZAX5P/Scy3aICCLPJiRPkg6hAIBAVCASiAlHRfEZUVKy4Ieb27x2cWZuW+nl9x6mII8VznWgKCIrniAiNaNGYn4CCJAaOA64D7lOIgkxUYDKXAouMKbDRlAL7zCiw3xqFunRB2Ah69CCE/eYUYCCziAUc8hsEAUwD0xCQTO8qprqOgjgCDhWoAvcrwfWvrz7P51fwFQbhokKieFO6Kx3Kh8pJeaROtVk1rztN1uSyUJWqdaOlkaAQxowQDhXMc3weC328tJB2oIeuoKvYOtbH+8QmuU2ptE4bjBGMc0UZoR27QLqlYysUALsSoCFS6M6b03GgIE86xdAHpMepdAxIr75sHEgIbARzAUCAFjCIKmoZjANWn7xkm5fL7t/b6Pirts7xDEKYv0T5X+Zs5U+AW2L//VCFbYDY0Vr9DKNbRjBIOQO6+A7TCqKfcErqWzp8pmq36hqq2fhCTYlNmxnehOia+k17GZ1qhpaXx2EyGbeb5El5Y6eOW+KMqoxxh+jXHk3m+5xHIzCm2Uheyhb0XwXo2X+FZFV0fDclNzkjIGsSIpKJcj7EprLKRZo3B6C8rAavvfTH/1/HqewwPTO4Gw/tpQuCpHjy5eRljGMPl2N2DelkqaYpMZao9MgcZbHZsv/y6JJtm2OL60Ha9kqC7TSQ+C5SyhNrsaRIEmYcGxVetplKKW1v2GsFZ+Vap6po4obT3iRFqFPXAfP69mDZKiWUh0tLgtKUcfSPS5Trh/rV7Xo4i7kal+Gdl08XcTPEF5cLA3J4WR0YndeC90MRo8uvT4klz5Fnb1RuurJiyeqT7ob8YXtqnnQW18LVQbZLEU1sJkRQm6Dje26WX7jpfqcJkTbPzcjNvG8UV4wEpYOkunaHbmNsVcDbmXalbhgOb/HkWNY6Egj0udmbCyz5tctjqbwStJKafVJd+2DnzhjdeHyUHoAX9LKpij0kUbDilxoucJUDfn4q51j8wiwL40pijZ7aV2t/CkoX03XSwjO6SXWlhJI1LlJdKhrm+siYZrEp+8bTQqijRtUOtVMXpxxqEgxQ/PhPocxs7ewFuk0HB2+90EOWWkxrIdurASqtty/7NjcaHwr24C+EAwcUfeCpa8qOT6oBbpaxAyZN9ruXLQWDHEPLOaSqq7K5slo1bWWuQUIh3gtb+ljz1lWNHnLyUHFCY+e6pbAap2s8wV1kt4ssFsY9Yu1hCl+leq87Ff1M/bh77rJ56gb1n/2T8F3EXcpKyN4LwkPuTW6uHREYub2IkVbUiKVotdiG3YCCOI2R+Se0kfHi+96gmTA6PGRaOUgIPR/FhVGJSulhlVnHUxVn3SW6eikXt9UoYbS+l1h4hNNw8ZwiP5roAtWp5tZf0Iit3FcILMfKS03ZKdzT7dRFxVpetgOBGpkZybVAZri0oh1bjmZTKtYgwZfieqRTkTFRVIoLwbjf0L/HAdCveJmSNOEhtayK7Rn6Q8+Qa82NeTL+8Rb4thmVICD6tYwAk3tTOg9p/b3+4TK5IXFc3ohE3Py1AjE59+xTcOy/tVhSgmklwc2UeGXdWWxmhbazTqRn9pchfKQSpIn21OASXe6WomCCKhY92vQkWIZ41lJzNS5RUy/UaETwRHF3QTmSwuMgBFQMEHfrK6cvMVpOupp3oDXlV4QHH/roZfxA+q6wSvf8dH/qKIMne4Ur+yn0igU51B1oRs606nEbS5lEI7/LD6BIe5bGrnSyJDIxDilwYdEwT41kp33XX4KdSG0tTjjavTGvU9Rbq0qcpHs1ESqJj6unRpF6pLJQfzS31XHTeVhpVxMe3nSaYJWxFvcbfrQRlcZdmI0gKMOjyaW1ZuEXtlQ7gMxCb02aHQ53yNpoxjE+p8SjVSQgxjzsOM3DCXFsU75WVvyB61IbqhY/infAS9uFpah4LUV819ygDTlIS71BtJ+CBZuntbJApju1XXxnOSNvPDayTXLUHoMnjvR2DMYZRISwGU33XcafFY0bbTy17PEZZuOhoNhJFerGN+faDJbmElpMhXBW5cqTnWoKgJ/3KNAGdCjDOsxYFMFOS25UZeZYuN6GQUOe6JPTVzxrOHTIvnyEKMNIKicMwuvQjeGSyr2a2cmmL5OgKHXBPDNz6oOAVW7LdNazewDtuciJ9cEo3DFGb3Dk+XqqVrgjZJJZAucmTPiIbOfdVSaAKqxO3Rjyo8758H7QkgetjGA2jldGpCisO95jayj4ZyXUoD1wlP7EtxszejtqKZ4c9jrxpe1xSVYsryfK2tRYdgbdhj4uyxtGXpHO+N9KZ4UbRvLFCX3JP1IgV5EyNO5gCO/Cmr/iMsUUBgzwKTZdPCFuhLHs+6p8IQekxGpRmpgDbTSDVv5hI1UJbFeBMUAnpyb6u+J/n/+FEQvgvNF32BxqeKMb2m0XNuw8lmgNjETn9dwe1Fo98YPe3+hNmlhGcSLfIvGiYWuv8Tgk4brFX1zxkmK/UJTizis7uF94g/5Sfjoeuh89kA//C0KqnOqCcc7/9WDmR0nU84LgcmRs/NQggjHXWLXGIWZ371ZccN+TTWTwIWdM4ShnBh18is20ZvAGJbsDid/eU1xKsd+ezng5+uMnPRjANAh8PBKQFflbIorJHes2/hFA0v8xE8OzgN3x62RgoJFQl0Q56YuCRqwV6H3pewGuSzfMI6eJODleWeQGFyp3T3szWR8VrOiaHsR7Z9K2M3mSdruO2VWXM1OCeHDsJ6ojWlB+eX3t43WI7mWlqlBPLKhJvusq1QuEoM/7gSP880S6HKJt428BmaEilMM1CH9LmmNSybARLhLng2Yf8db2rFnisR1d8oX+giBnmRZBs8PHgrOJLGx+AvYv4+QyKCNrwqS8OWvscUuiJKky5StUrFKVanzjQP3arJxEZptrHj/zLbDIYmsFOXRFtl63MNtc8/iZb4FFFlsryKF3Bv35kAITJkSRo+QaRjMyMjIyMjIyMjIyMorR3/7wfvcYBnyE3mFGEZTMNSxHVauOptam5a0Fs801j5/5FlhksbWCHFqk5cGbdN7d7ftZQUnUnN+woY5mgJ2/OYlfGQfiRuMVxZTkJISEBQF5OFOAxEDIECGikio0KFuWSuZBiRAwMGkkHxZMV2ABgpLYzQyJIN7AifAcPokZwtoXaQ2sqDNkit78p0atha13q5uCHJdjr/vkCZcvX+QNNTpKqYdifedfb5f99NsVjTpcR5itAAcTjYZw8ZD49CEGDJAMmUHMmTNhwQoi44DkyAnizBlpqKEQFy5orlwJuRmBbaRR9Iw22hBjeODy5EnMixfEmzd9Y2GqjKO02HhGhWboVWcmk0KzWCw2h9VSczkt5s+lySKDFlvCbanlRhRaI2yptSIWWyeq0HqjltpgTIkgMYttNK5UsLRltskqskMO0055RfaYUmm/OXUOmlfgkDUWU8Es3XKLrURJRJKlMJUqlUiaNHLp0tnIkMFOpkz2smTjy5HDyv/+5yBPHpkCBYwUKsRXpIiREiWMlKrAV6maSA0NQ3fcYeauu8zdc4+Z++4z98BDBr77juWnn0i//CLVqAmpWTNHLVpYa9XGQLsOCIJ0YDkig5QEIKPd1I4BYo8JK0LFQ/q37DkA87gMXRNgWuSIdztjJqg/zJ2IEUtAMG13JH+ghnatAsZoXWQwy48bToRvGDESQJeMRse4tz7o2gPYcoOA63UcILBXQGbS43rmn/lIAgLOwCGGAmuLAcHBYFZ0moFl1ZocBQtucJA9WHvvRFQ3czHLnqg90kW2/Y53IJsnKRD+be+MdEYaxZQJNmHe5r7RFUeccUWteHWly1Mq2TdeH8uOH+fTPYlxuHfYxWcCb73eHvbBQ6/3BmKwUO581vf594fH0/CKTOA9yBOP72tBwXMMSmHsIqve9CcQuol4DM/VY4VyPZwCTuAYjtRj14UNOYd4v1ddKG81N/i5Mut5CU+UGTEQs3D29bNxQD+I8QUtItkXWpqPhb97l1wfv0VIaX/lLgNyjWDD6RppzZUfZBFDplz5ihH2WxhReQQfipZ1bmOgArsziVUnvScUMscJLRLthiI3BfnZZf6fs1YHKXTEldwcrk4kRAzwxTOumsxNUWAazbiZpdDBvU5BESEEe0XkltoZ6zTw1FOkPmdxsQKTznmFzHmBDjl/M60FGIwYL9EUsynIIQqavS0hA7Td+bS69yyiE3rmKMryhi+TPQl0kcCmwEvm/nAHk9A+u/T772qXLIxCaDAZPSXgiFbWlzZ0DnnfaK0gVVGr6TWsWk4dt45X394gapQ0Sps6m+UtPa1om5KoIuJkHbWXbmHYGH1MO9PBcvG8AiEr29dIgju2yPd074OSPfe6By89c/WZ6y7ccu3UjYU7zz567snzT1599u67Dz4oABjo/r0uHRJv26HoxyWPgWMB+2oz6QiFouH9eSLRMK5F8QPFMMkw6MXK6kAJMMWELp2SBetApjliqoKght3K5VPwWFJCJhiidzMkOJjCdcqaiON08booKvklm+Ycpzg+J5VyRhUIgqIr8WeWMm4mxOQkPbFIY1nH8elJIViXkEnklyIZ0BaJYtxhLRh1sucxQb2k/IEznceda7BKQ60DW7kSpCeA+TECC2DDsefdvg5Auz2JdQC9EZC/VgWwDglB2AhgGQ1sQjx6ayRbAOD2r75YgQSiT8qZt0n6eMXkbYQACQ1QemqjAs0JK01eBerjzKFt/kr7Duqy0w7ZfceadfuON8+rTjS/tA8gYxmc9CFl05/WB+AlGkddOA/Cid2J/0sBw3/bQMqN46FuxIezPJsoNTdDD/KijLrnt/FhpBiMgRmuPBx0BRWyuoqrtl7X23WN6pS6rPKqrOpqTC2pTXXQsr0ldb1MZ/TQwhWAGVJuPF3LPauqyOAKS2pUFW9KUW38No1UC1wA6K0A/z81w/R1TXop/WnAD/8KV+qEgB/m0k6p+8nV5AKAAA4CzvMWyOtyhiznZUdhZrykX5DmgVwv/fDLQ/kK5HgjSalE/7+9/b/7yQcfZfgJoXHxCekzYMiIOQuWhpCSceRsKBeu3Iw0ymhjeCqWp8Q3lQEcZRwVNa1eJmYWLgMGDRnmERY1asy4uIysnAlTHtKuyBePpXuu3gsNOvwxCCMqd3xVpimmFp9ddyPku9+yYrkGuytenASZWAgMbEwUDh4JPSJiZoyZMCVgxZY1OXs23rEzgrthhvPgJAhC7l++eihhcEY6egbOH/V3Bw23AC+fEL8PrJSWkJQyKSKPbrVfdaqjUaVGrWoImEdA9HHQN1tqrgjFzIV+hEBR45lMJY5AptIkvgpkOm3hr3b4TAbgYXDQbIZXHGYuY+kbCTMffzqBWQiSTizLIke9LU6HCoBadyR/BXOrPheP3H4dNKvIG6++BiNt0vpKSJ+8fCKq1GHQEL/KO/KFFTPympLJiKB4HrwAQgutgYfoVtCAgnUdUVwFqa22l2lE3bSSWCt6j0DBg5u6ZCijRnKg/RDDPAJ8q1JrAQryPEEhGQ513xvAJKgThigEEVEEC+iYlybe8ZhjAvUQCUVwBLHwCJLyM37q7olRbCqEiSEsjmmChYW8plNtgPDGozkbvfkahtKOaDIfDa1FsFha9MZk+mB8AvUZCuXnr7jyTwOXbIo1AQuKmNd7zI5QbgNeihRFERQVj/v9UemlDwR5YyZVrhr8WJVo8Ps9EIX80Wy+2IDIEATVCgX5YDSFEaVlGUoBHR7bnFdK0on2DXjvc2bMYlpMb6Jfzeb7vGSx3O5RIleADkWZQpOCyR5LJ4l6NUIdKF7dfZQY1ChXUYS3KodDXOug66gvfWjjCyUEJN1SVzZ9AYjK0vEoBlGPEs5JnMgtb/oMOQ60VIXhfFLmaMdzERE34fiIiA5Hffxi8LTxz/uuCvyxtz8mMdY8LhMCWUUDmJbZ1/OimJIZWUyiTMSDy6qNpNi4ZlETVwmMG/P1BbXfNs82232qYeqWZk2fa8sx9B2/9wS9AnV1XiPiuJT0gHAxn/gnnH/tt7Z5T5fsWyGilUpbvb+LfW7SYt7DS2j9s+Xylk9JzpMZc6VatOZGedEE30KJyNsgu3AqkxPojDHTjdFTXgk3pXxSOCilj8EkTaAgAcZ4XIrIe26rOFG7A56lBHs0RfzQPkOLxSM2lTDqYOpXq0wtthH0xfyCOvpMQd17N8+LkcviVIHZU4SC7zqyKadop0Edhs+HkUThCH3uCuPrZW8aaP2rlEWy7jozXfM8cKf9vdfR9Ko2m3wNd7cfyb4036oyf1as8uNpAccIx2SVNtuHKXpoNOeYvEPSIDGLeYe3TK8/NlEmNF1ImGlKz61AMcbRBSnv65RN96Kz4MIpMQiE6nCU5geHD8292eDdU88UeSyRUdJePCIUC7fqNkFXcWBdkZbgxsenKuobf9+Mjdly1Z/N4iYyEtriC3JrlxklpVWjpD/Osfylx+HETjTsDkCqzGgrVLugM/n0v90RpFrE0CUjutvfMrXCqtVp81PKvjS7Mc1Z7tqzqcOtEpGZViXUfvqtlO24Zng91Es3tdpaI4TBe0hjGirbx7eNMvTAwIqlXfAdQHFyWvm4LCJCy0BABp3arrggZthft338/n7Ljnojq3Pwjc0fv4AnU2M6Zyx9g8NblmQJ0HTBpExmnFwoxtJuhAa9Fw8Sp8ygIPxx1er1S0OW+G/Iat6hpyk7h5YIyyuXef7qffI3fxbf8Mf+59TJL/Ch7tvi2srdQ+LHiEKxRQRUtE7+n6Hn4OZ1Lv3qkQTdocd4OiY7l7yv9DjBk3BAQsbFGMd6vgzsLG4Vdw6Yk7cNqTbM2baxOp48r+ngsA80s4oZUwpPWjr0ifjtLAci9g1midFnECp8tOIqNXUNt+5cZ9/ud5qbB/ysdnASpNOX55La27wAEkZW+Jc3O/nDrw7U2AXUjTP+wKgM4addBoQ9EpLH7+3E9duW5HZkB9Jbr7mnG1C+3PeLCEiGzRda+u+hj3bngAKZqed4+Cie/rSiSHZVl3mCpzrabb4qB+9UMgt0OMx/3eKUjIZWOgGD8ilpvVAM2hIG1RMo42ZJvIer9Mb33dszwC9f9ejONwf/gZaGPPIgOfrfH/mftjfXRqT1zTw0OkcvQJmE7fyBRlnxCYFvTbs2ULZV6YHcbYVPcqBySDLFon3g3CZ3Q9+FO4OKzbUS6dSsL/iGGEWrActQfFfsVle7+8r9H6+5MdZWmSimquSfCNemb45CEoA07zFbCG9/Dgpnb5mRjgRc2nssd/WWej5YkMpCdBwkMSmM16Jilj1yTzpuo9bs7kmfMlf7uWys0xZNL6eOsMZCaSv2AOigiPwwp35qzbAzDQxqYlCVwiTZGCRD+rB9LX0wZ45ordyZtYfUm83dOaAPmlcGvtXXZiGc7BrmlJN0oD/5Bps0m9I/WrCHo9SpMuT0BU/ZOPsx2hw31gfMPJYrieoDSeaRZmMamqtL1KgNgH//My9p9iGtJeGgCuxlj7xs7MSiGZszhsFdWu7G6L4BMQZLDutbk9M2OzIY5EPSUlJECT26wqM0wsO0OPJBhlzlwNAbjIa3/Z+NJGR2v/1G7brv0+khkt/1xmOUE9WwhYIUT6SjqwnrTX37/k48mcXYjHKA5VT3Ys+Qe85t7m4sWaUnslUs8g/I84IXe0llz4nsP7Oa9eOHzH+GPr6Z+bbYXPI3z7LxF1W/mNHy9hgI2dqUkH0jv1jhBBns/ePzDi+P+6Dx7aFkue066oLujElcYtMG2aLqx87z5jd8T8PspGimjx+JHdtzes/fHW1dGcHomE+p8tX602dj31r3/hnz2aupN+70gIKOqRvb5xrVZBMqY0hGCjr4qqyx8K3GXU8sn6lNG7WYx2ZtGbLZtgTuFGw7cHXNdsR1BhxOEL6+4+p+vk35du3DPDCG/jhiwUqhM+geUtmSpRu2x0snyxrokoUapcWoaHh7b4FN++TdXZ1f/Np6DhmxoG5Z6nv+P+2fZl8Nhn6+95nPrn/mv5YSzEvsuae83cPj81XJ6fekeai+hyP2sbvH3RWPVWkATRYoyYFuvWVD9NprDYgjOG10nDixrqwZGZ0nzy4rHvgglWUX6O0LHNe5yH0POM5Vbb37sP2mX28fhtL48hP2IQkBK45R/VPNar+Dmq94Jn0tc/bi1V9a8kBUOEK/H3wVBYlJd7/S6sRXls5YOtBvdE96U5colxxhzGINKxyXqK8Pe3S42qMdfh0cauRqh/ZAMqndn19ZI8Ys76K1NMhQbtp2dMeObcc2KYOMUuvFHA8CK97Yusdk2Z3JWPZITZ+iHN+7c/dmaOeuvccrDU7b61tj1BhzPfX4Rj5o51sD1IAVTlPJW/t0B9JJw/7rHSPGOO8D66rPVBXcTdcf27Hr2kO3dvir7rmn7knqV7K++QYIrGBoPtYwhor1YyvYtSdgvKCsjUQlXirlMJG3Ge8KmtRHMm+9cFwtvy268r7tPdsthRLlndN10JG5dzTy7iA9Qd1RR76NSBkK//vqIn11a+g26hPEz99sBW8DLCCp2b/dEfBe5dDvTyQNB65yevzbndoDrPhtW46vn7vm2I4dVx+dX7/laIEdjV1gGwvYvc9gzGf214J3z0Tj1Pja2DLp3kS5W6LRxkBPeZSE74s7ZLarifGqsONoq7EMAiuWjeVCQ4O5kbH35cH3+gfNOl0q97/X1o03vp/lRk+98BWm+Y9DZ0Sa9ncOLbUnqv5r578qvorSsVxgsEtkHWLI1Mtpl7jev7nOr8UGgvz/iuhHA8O9Ot2wceAjqMP2OVY9ZsBI5jKRP9irkOJd9jJ/pbdy2G6QyfvH+VrdFPtRYWmYig3F7NouFWJcFagMV7l7dZKOvhgH9L6ylCqmLt0JEWqb+pqt9zDOTMfyE4lMfvoM456t266BzswCm3i8hnycxVsA6djC7q/OyD+doX5xRvjuTOrXhV2f7At+uw/U0fHiwsXCr+Uln8uFBYPFZXHhP/bqf+2gN3Fk9X7+31Or/t7DvaBvwcFReeaGyLPU75qf7TQvU0ECKwNyUcZsEafbtjB1ULsKKSkKcWCq6rcyNqxYpQhpVRSrJzk6mgatVi8mH/TQTRV7KWwFs0uErqtPtZMFwfGKO9hCvFvO07DoZtGkvhtFeZbVe4SDAUK72aJZrqxcrYxotMOj06N12ynZEpctZLb6Iv5lo/7pQba52YJ8HCS3D6ScldbKElNkAIbDmoC2DFmxwfEjRmJFGRLQapR+uShtMYszrMcoDSpZG9gWGMN4qFucs1gkqVCniusgLZh+0DaRHd549Dkhz8s4iLrGAtPLLiKIYMzf7iJR2s9DNUECNrA2Z1l8NNVZyv/T04exYIc4qtZIoqEOpTnQV9FXCYGTbtfJCp/oXbhjcsUbmrZddxLsDMYrSfaCl1rMQJMtm4zDwvlAj5Zi80UGh7xhm80bHhp2j4ANHF+3ecrckYn0KNEBMW9E3fA/yoaSAduIzeWf9C0ZDceHuZYmG/JxiAxBj4Ok+M5+o65PVe44TDtcW0n81sW0z+0i3fQSSGyTj7Yd5C/b1RjrNfeZTq1YpRzRqlVBmThhMIjjQZlKPaJdpTi9fJLOVNXfEglFJ8ts3ngg4B232XzjgYAvDv4fGaGSnhCCDTqG3QhDZu7RaMxen6UN/DsZv7RP9CA9Se8I7IbikUO0Q7UruXsUVAavFzXBs9mZxkjDin/Wq4WF3ztJhS2KcnnLL4XH//f5PoINkfUqJn35ZAnbifYoTN0r0NLiZSrMbBv0dzM6LR1aVNvns7X8B2xxBWN6/QjWP5BDRLVqi1sbwYVmUQaVBYiJmI0SpT81o52kAnc980qD8AoEYey7Kc3JwYq+6sq+7KDZHZ0ebbiZMl9kxEnsnknv0mggMcSKjBDfoSwjDmZc9WFVFbZ4v6kKNR6ABa+87YoqWs8rQ/xaTcSKYk0avz5eYPDO37SbSc58wAyYFPhTA+QurzFqV79abLmHhE/sE3vfEUbyP0zzQxrpTPqS2NrbMOXqthLfjTU3+lZylByyshWBDqrub/sO6bY1cpVqIZv4js5R8Z8c5dPvMJMkIhfxDvMHWgITVUo4xFNfravEVqEyAeN9Wyv46xKRiTFpL5mu4uPGsSC1yLc6o+CbeXyW2kKRkv6LKfkefQMbUcs7aUxFsivcQFE1GGXNOF2k6lYMmN1ugF+UHDGYZEFS8Lp9+3aQdggVV3Gqfj9MO4wDk1rQP+yTMzosqE5lHPRbWxi/0KdL5F4MGp915J/71Pj5T11f/Rm8zph1PXpZOHO5cvKycPxy9s6fh53+Sr7jKyC/Wlp//r/KKH+xtf3nbw89Vu2+1FT906GOvxwCWp9//3v6N6yLjAYw/1iu//+5fQe281+BE2C45bWP8daSPi2vfZy/kwScJcKpHjeR79+gbxQ7+s1azaDBcx01Yx02aLUuvTs5PBJ+lfFGfnJ6TTznc2A6z3ul5iLPUK87EzBx5qJIgCJvevovjJd+f47Z2YP2gPoS+y4Ky0pFsCaFZHtjXQuVGeZ3UHKUJnfi0eQHzanYw22iwlIabl6iPU3E2Byi4mnayFZw2GPi6XnuUGfnEJcTG/QxcIKzM/ffeffM2Wxu+uxddxW6DM3v3X3osHen3+fbffBQ+tcIrrU7kW24N8c9HGveuY8Ky6TLqnBxtFNt11i7g8xHhP15oTIU97gwbObRn/ujz9qBC4zPsd7BuqKUnv5hk17nM3gCVJ/ZY9eiDpVpyu4SjuX5mD8xZMP0bqSs2FBidWsG8xG4HB9ojf5J/CVDzRyln39SX3ehBBQUx16pp76LMSJUucPvNVmGw31dA9yfKbuup4Z0pY+tEiJKn6Tdj6GSQEgCCmp24937Z9ETs06nOMFbLhwYovOTU0ePxJf2dg54+DJFQCL1o4g0GJQqaWIrm20WiXS3VrYY+IHIgPsa91AXmvsOABOemA8Oan9B64qKxq00uRHXlG90zBwXonOX+aJbbZ9HOzgXnKCO+PVGo183kpmODOiDrn53L467Df0KGCb3AkGNSvBrsbp1JLqWGbsG3SzIAwgqDSwpdG7jXQdmFCdnnPKeBlLFJG6JjY1ZxnB1SrkSw0lScX84YpdUYil7V+qHlTZeT/W4muXubl3vIIOHtHP/T3XjvY4WtH7L+EkjgdmlkInaWjHStTcWf0mGAoLTS9g+PKmoJ9MnmMzDAi0Z4W+jEz+jv4xsjf8VVXbyGZ8WL42QszpMMuhbdrH1VWorSUVWuSnrvwuc1QpBFcE2ELaPh5F6EjfF5ZWxWyU1xJ/A5vUTgV8KibTHGUzEpII6wmAd9Y0NTFipWKNrGM8TEMzbT1k2oxYJ5TptV6fJ8Co7y+Gk2awbuZybwFq/k/uHTGi+sAU8SuB9XRLWtrNFJ3psRKZOFDV3isi/nyg6u4clsXXhRPFDVOpD4j1C9Cx/jEQa5fOmVZuBOKLSJKN9itCj9LmEaY1YINfvWpdJ3220Rv1qWsjQTn+GvYHDXc9Wwh9soRhnXkrCxAkqHJYH3uQ8XnkLoxgnaa6DCWmT21GeSRMhC8uC33bk4uslBNGpzD2QKGfklCw1o+ztA6+x1OtVIrov/iRRR2vXdPRQsfIfON+qVpElZjJLwWmpu4a6nG4zVvNlOK9fjLLc74GxWZ0tryYcDZpvPqKlx5TlH5Vrn89lT2zCQwdsf76Nw7cIOByLVSC6UDgCUzufV/jiwqHdn4U2HxA8vbe26Lh94Ynr0sOt+cX3b8uvhmHbx8ZpWcFfN9F2kc4yiGcfIJ5lublnOXaz+SjP2lr3kwfrswdKrwdAmCjDGunQPHw3lfSwfYJSpYSXOaaOd13tDb29snjXFm4KPyZ6P5EQfZDvFsbl7PdT8Pnr7VUDX+QkTjLBsXKAR+LdoGReSZ2k28mW2nDt4qbxfP3i+nyMsMSOsJCBzEmNEGLLx5vmtpczFTbm5E6S1zLXSjZfw1xDPpGDqQOUEgogqz9b/7OfDDftxwkBgTdVXq7vQy0JhwkW4hba1kOus1XVArxyWuP+lXDef/bu3qAn766CzT+ep5dvHHDeLlk+ong52N05s+fJi5H2OK4UjA2hr236EG3rJtZA2x7eBV0j3epPeXzehI2ub7jQ89itnnX7DEw2IGr1axpMTFa96dpRauvjq94mJtPQ+CWuFWo01zea2Oxk7dMg1dov9Y0zpLHpz9tKxA6xYKijwxyHxCwqAkIm/A9FDFZ3zp5Xz9NW2oqDFL3Ha0JEeJepzF3ZX+FwajskrqAAhWn7abNjLWPMWeEeL7XbPmJXd6CoutRd6ascNuNSqcXPQgovzIGKwscQbKbYuXWGlM8zYJrJRJ40/2CxC5seQ/DuIAtVlDrpYlciV5ZZdoH0wnMexu5zL8if2UxlEjmX2EkvVSBBNrhr+He8E1lS9tYedt8AA5MGGZrgF06KzGDU6nY8Zz5364hIff3SBSoY/f2ceS59jnTPsj9nCf5xrPp7vuB387K7UkxbyKPgruH08lcb6WBkfnbJ7tIn9p9s6M+gFKD+QIUlbg9dfLY3t6lYk5TNYje/iZuhuh43y8Ct5e+flWoydujLbxm+/Lbzd1/IQWYM5kfe+drcNnoLInc9fMm+9FD8Ia88jGZyvdPHfRAuPa8pY2TNym73+4yGG9/8/HEDOUHZ7TkPZy6+8ajdD/+Cy8e/3Cv/+rLT+88bvvc8rHl13lFmQtWYcdhjaWP8Qp8qkXsVaLuFhJUtooEoeWQh+cqxZf3JcHggYcwsYRaqkdSlGHA5U7irM+x0DaxSzcw7kvFfZmi77t8jS6ZkB0K+nn257IFu38Rdg4EjcQdvrRPv6urAT6QPDXcIjX3DNn1nOoQinVrxdcvK3AxeRX1VEYlI5GBySkLvH7hpn3V08u6A/+7JWffdZzwT/ddJD91Ru6drxyKRpZMbRtE93e1WCdfXg3XjEEa9rUNGV05OyXVKD52vE6pMXkP7r+pappHBTOAknsyKd7c9jHW/2fjy19z/Wa4FjUOBjXz1L6IZo+L+LUtUUamq4sM/CAjVv2Andygn1rf/yav7w1/zqZ6P6RisHHTlLOpycDk2kZhjdXK7PskxTNeZ4EdRN9D2HSqYQVa2qZ0qhM1BzvnYuxDB/0gUkvqIceBIk6TdMEDv6PC1fo++19/MwxxKlP39+e0BdiLCHWQySbM4cbtxiP5KFZ2tabVSLj9yQnpZTpeL2vjskeNSSxrOUoYNYp9PvMFgFK/3edeLjcZkeb0IRoN4g9f3Ssaud0fzfn805abpCduazyE1BJ1t0Ga1+XQEpPZc2TYjgRNT5nhOFy+nUmE5nQwoVSU4metkVnfnGIglvVHQ1JGDqEre2YHLUFrTlkek25mSTQ8fbHYdf+yduwXLmIw/hFm4YLbuNpKDdNu6d7+vn1FXnny2HaHGyvaxCAdZFTH4P5X2q4lGM/3aai+Z6DQScmmS5WKzXSxmZNMfYTe5umgTYxPjttkZdjq3uTuI/dc+Ki89JC3UrTfLjlWNB/ebZHLZB6kCQ25cA44XmVPPicPPZRZmU3JGHnuOd7KJvv1NG0BU2C8Tml9iN7c0vdRMeLnpinG6tfU0se2RY/NHYMucH/sJtGp80n7HyvYVjsu3C7UKv63v+tL6fyBmN6WOAowSo21vTsffqGsgV7dQVwSWfFPqoZToyu8OFLe83Ew8BYus25UaLz635YQ0dyKzHNsir9fuPsE72eSxDY0e/lDYXUuNi0woLhIp8J5FhVneydBbT23x2Lofo/Os2teX/doay6zo4Xw74qyaXzvubS79E4ifS+4lA2ELCAAoxEGrAWmupjWl2ZoHvuXmQYccy88jAWQGoRKDY4GmNQU2Gd1hIc5OUZJOUswOUsV4a5BVP7iP07SmNBv84CZvcB3QtKbADmOkjW2zB4KyjS0t6oGtzDVi/Ns4631XXxbJul936179F9owflDYZHhyVXqynqwn05w7Q31vomR/sjvZw71hKSk2D8sVGTRI1v26W/dCy8HLfZlAul93o5d3LvdFAtvdRLyxpaM9sNVC7+Qx8wye4RY32htxzlwjz2745zV1FQuyZ8ZhHMFRHMNxnMBJnJr6dHln7BwGLbfaD9QfG3OQ6o7VuZ+jp4mew9kSzLAD1FBpS7kqVolN5jrUsQYavufuucb3cZ8fHvRQbAG6bv3oRR/68RdaDFjdyj/rsX/+2Prabveln7TH3XP59Mag6VUBaPYmwHHpABtAvb9JiBzo5v76NgvPE502bvvW5rqDox1vrgqB4EzdA8y4j2vIAlk9TsZCUMDPapn9m1wvba7nlN/Ri3Pw4g60WUzrsAR2uiFF43YgUGeYGLgnlLc+ym6EeqoJHCiREwbh8QJFiqPlv3FuKCQu3cQf+FdWT8GfwcLvgtMRXz7JfQafUyezgvlZPZYmHV5QSBSaqIHfhRqqGQhJazYz3k05Uk3hify3bXaUkWyQj9TXzofldlWYPn36bZXHpnDWVY2VmaYvdHBc4TvkRTIOOoHXTNEdYy2uKJL16GqwFKxxo6ENh7u6vOiVu5cE1Z04LBTkT5oI6kATGPyXf+Reua8sE8oyYxm+tugmJKx/s7CwFSnjBGzZPrX8cKcaeHrMBGVdJQoem2D1Oz8Fm2EHfOBp0WOdG2sQeOHMzY16XMc9tY+7KmufnXWqICAIUIeEtcMRf7/Yl5JNyKRtLkrT37RcSnr+ZKDMKlO9Wlkrqt4HE+8c886e55zn4Z5nLlqy6BRZ59xeQ3kf7n3m4ouMNEYZ40nN7tqVS1YsuV8HOY+D/p/VW/+2ZZgqoh7Ub68/2kDEnv+Fy8PZ2ezqhqON3H1j0faicM45TjKnmPOw6a7i6mbS30Pfu6KlZbRkXsnqkt0l0bwXrYtXqvmX+Vn8qtaXW/e3nm7zoyeX7iiNExQITchXrNqwKkVYInzUvrN9tqNJXVD2ameenqbfdmnMZmawe7zyA5WfYePYfPZe97s9enB11UeDl4MZwYbeseoN1b8OVfe+2nuob7Lm42FN37H+duS7Ec2AEf1MNJuz4T7HPRqcGyrxn+dLBMHGDQ2PCJ0jqxova7y58YHGzeJJ8ZqYJhaKdSMvjewceW/k7Kh/S5PK0mTThU23Nn1Jypa+jp4aE+SO/AW5bRzagXYqyoxyWclTNOPn1xXVr2rEnqRVtSWtF7Xe0vqB1k9rRdrD9TvXz21Q9AvaLmu7s+2TeopeqtdvOLDhlPBHs9F/+mri65vWkF7fXLBuJg+tq1aW9WpzUn6mFFPoFA0lSjlOeZTyHrWRejNNS/uO3kR/leFm/MzsYGaZ1zIPMM8yX2L+yWphSVhalpc1ybqZ9SK7jN3GHmPn2ZvYN7L3sU+zH2Q/y36V/ZX/zntA1jBbzF7E+Wz25Z4Dew6sAyOoCnqgKwDACGArCqRgBKDfC/t7h/imaLFEVYuHmS4g4Rm6P53W4RsDS9n3DbWoeOvd86+h3bmrRlpuDn6AbARNPMPomJ6W4PENEfrR7cDjrwyl1eSiAQZYdUoPSPiDZ0MKmn+6ABbaMKWT3oubzGUWNU40eot7qoXv0wZsuddCnfaCUQcreBO3cnaKLVV3xnvvkV5vOqBNp8vwY1pRfD+GyeL3F6gxuOi6I2JrvGoegVMLB2Nq9Y8qPPK/cfqDk/+pAVzEm5BarWhOCB/X+8/szCNzc+vonulpFphZ+qcTGKoVhEmYVIwmfr2VgOfL5WJa0JUefQ4TjXavh+dRf0r4OMDgIUcHMkYZwo6TiLyEcbLIszGEFolFEbZuQM/SWrk7HPY7BUz+vtaT34s92vvm6g9+4f1r6H0gx0OO1uG6/KVzJ0xEO0Az4Z0ldipit3+OyRGFLiyVkgGuJUgdrjBBZh6IBuWlku08AaakWeBKzHQWILCA4W7827kf8QOgTaTklWMVk1KO/BlcLfRB0kqYZ+3N0nUKuID8TawRigvVTYkYcCV8rQEYDECpb0lf3OxbGqyOS0F5gyNPonZv9NOC0vCYANA+ZsAFKWiooSa+X7ZTJtpyZFB5PKxVugOwwEPGgAmUJuxxwlawoyRJTTege9pL7YRRlh2BiKHNwU808Gvz1WAHni8n9+vAeeJLhLB6+ULZCU3NKzXSoMG1OAAZJIcpB+GjH1HOeKQn9ET8Klm5bucZ01DDsfeJ3yflHY/ap/K1dbXEaAgNfcBfwLCAB5l1LNahPGtelkH9oMJxVw6/BaGGo2MQYQQ8Qq5yq0cVAFgMG6XBY40UtOmoqmUQcU/US0vlj8u4F0I2a9uzFk8DGms6C6GUNjrF6zy/OvOz4UdrZ8zubtjPqUHObayUNkIynO1Wz4z0LFI1SHZtbET/2phdRvTexubmLPNMnVAHGia0BiayCpRJPfM7n8O+TaDVcbnxmFEI387EvpTx6fn9Ba/WRCDnDg3jy37u+Y1PnbtKBTIM3mNoUEBEnR3/VxLBUgXGCUUUALIcf73tG/PmBW74EZJAGMO/8t5JAd/BiBmDvOEGLr+AYSEOJcnoszAOdCht2AtoNRt0sWvQJpBPb0S+OivTntEaYlPUzsQJoYHgS1WfBDdQyyO1EPbJHLSAPj6vAFXEzvbRt8ZGrDJTKxiQKUIqU5RFa1E45oPDwCuXFPyDNyE9atr1tzdN7ZSHrgb0EoiA2xLDs0h17YB/D5oLgx3seRUeooS7tt+jn9RbA9P5+DKDDG2efFg14kfvhNiUONWdEWJWpOa0FvF2moUTuPffbfE3YsT48b3tNgjjTWhddIOyTI+JsrSvoegt9sxq9k8rHvfm3j/90G35PDg/tpU8AdXKwRFSTj6nGEhBqSXgY37Hawiyydx3vNsFVBFGuHCraWs65Deg19wRFzfxfv6p2VmQPsLFQ4E1MvMcmnWwFVKhG1xOgNQhSRGt6okgjQjBpfQcI5PIvJoqRZeXgjl2TNlfAQsIDBwQ7I7N2lT7Iyw0RYk20gOr1avYAr7Ez9qV434N+/6G97fhtQhc6GA0dvQGdhXQNgbFKBB4nAmWSznLFqeFOxHK4xaBjs2oOahdsLCwDm6fd4I6T6l9vO7UPsF+gOp9PI3Xq+1uXbe/zhy8W+2fwSZsKP1KM7nF9FXr+Lm49cYe+PGAu1ih5c3Ptk5x3hzR5nUVZn8YaQqm/NQA17qT3/BW/GE11E/N8ZBCJWVZBXRJZjIMuE/T0gKOPqRwvgIG2mRTOXvzZXanAdcTNRH/arIrMt2ilaYOy9Kk4p2VIf6W8ZpwMrMDGwEPKdr80P2b0SAorJ3h5aRfw4L3Gx4atAgK2mSgHjpkZtcDFPTq64yRT481u7cRl9Ny1MEmxwdUWe1BamMpwIWwx+PpMOLKwCg/hVlaG2Yuhd2FkxRhQEZoFpuNw0IB6sFbyxCZ7Pzr9BUul7m7b4N0A9nh71s21Dehf5DJUvCykd8O1VAz8MHKMM9HeGVREKKY+NvnvyGdFgbKiq1dkhMwiuCoAB4y8igKECE+d9nMbGU1I4+9Il5n/e4PTRubDuaS5Vwj4AafGgd//GUWhBWRq/fuAjGuA8Z6WKUzsPylbA6aulRbkqIDBjjPoAwxkNW3j04jEMEG5wW8rloU9SPbnQFMDT2AYAyWK1oT3y1aYesh5EjImpF44qfyIH0uRmFjqMI5Bo61i+4W6XQshiMmM5CgD8fCQBDn2eisCOs1oFvqiz0wBuN9WGsUt95sz0fXoMSn7p8zJP/xoa195XQOmdxFNyYC09/k3kH8uRIStK/+EAZ7PBf+XJ0jCxfDzWSa6zeVwI07WB2DF11ZrUnUFiVDJ3phPrdUXGoVMtnGZggkcFJnqfLhnb5ICiGJLI7zhcJgceb/YX7K/3s1PBUzLS5MUAPLBsHZ4hojG9Gj34h/7jyuLFrgU/XGONZop0uXKOA8UiY3af39g5yVmgZWytQa5eTJaQxCAL0wrfG4e351NZZiq5R6b/UbH/ZtHuzQL24eHhjUWkFahM0H0Ajx+LVMapwLo7dBuSW5vwclKwyNo31v58iVqaspu5JCEsoOy9VCsPOQjs78bItGAAz26CzenYYEl8ZEMoiEkMAG9hqcjatyNkQhOTW7ese/YFO3LwYm9miN8Oy0y3y17jzLMrdx2m2DK2aLcaFjGADzAoYFGsKTkYq7mEjePVNyg7AItLB/M2pBz4RTwwlNT70xDv6L//1nyXqBgwTJhdBd4oVN7OFtC4p3g7StHnkooLtwUMxM5Q3KATR9cb+SZ8LRWY/YW1f8S/997OWvhOgmsJI//ApexWfmgjVGf/qhsxPKtvOxMPvPGbLr1oX8wtgHteIArLGDJPsgZGOl8PfuF/Wx7y2qPJ3+9uDV/fMz4Wj+8yMQVkX0mBGI7GD8UtjmqfAUXfj+5nVXr9YGEsSa4SeMfueiJmrPefw+Co7LYep62LO5qI/1M+TzoPSbM+FEeSiPngNRArV2sIN582H+D8Lbs/daGT/UKwsmYc0aAnuDHeAQ8svl5NoQ1jkIMoiwEFJx8ZdiTFYcHCg3ctiAEMYsnjDH+TRrZGUEUuOVdVyHdinKX0V4VZNndi0JcFrj/AYINuJ52O1ymdEpeHOZlYBlsFpaHUqexf6Xy2xEUTRzPGk/QZJs3wKJ9mpmgmYBC9M6yyJCHS5fHVn2MVxJCfkNL5mH1TjP2COCd3K1ofKdpnBRJEVE/F4/8nQqraSLLrcnsmvBU2df2aiAGKQpf5iiSGsYzHgQ4etMqxXw8BSHhHdWcsbb43zfv/6qB6mhtnCrUxbTB1bUDiy+cMbCl+BrQ712FrfkfCoWjUb0TbuLAbPpkI+sKBX5HaJYzBpa2RldlDJ2lD/Fn7AOjUBqZT42K7eQW+1EnhZhgn10FnFdLjzYmBeUv5kTNKQxbns5Em3yc76RTPJwMhSC0BTgWYQXMOrVhKw9p3LTYJrJCFaa/RJaVfLyZE5mZlpHfVlXG9hbluSjOoGz9IoryyUlPrUOAxlFmx7bHb2SBGNr3365pk87FUeZTKwyG5EsFSeTGWAr9tEaTofBo67YGzylrVYvERQVs+ov/8bjMiTCiD9kTV87kWzYeLybxQ8/5R9qXBduEYaMn4v15w47mJnBWBcmYELq7o1OF+cd7ozeIJuFfKEEL+bJKo1afK6rjQELe3VWdkTBRlZaENaOGMFgzdFa1D0yaqn/l5magXor+vr87GzW7/GFxP1ewpEpbJWXzGr1MEWG1rjr9cJGSpRKaEc+I6CNt8e5nn/o8jQbn9CYI0GVZKTyumFZIbq8UpySh0ARWGJHjgI66KVYQJhyeNh+I+BGChQaQ+XUcZ2obegkVe7F0u2uYJW7V6t4TKAnVnZXYkK3nQMaFlC0RdSNnK9rv/veeXzsqNzxoEUcX0r+rhgP2vsYAQ0mYElF71aZIykviwlNEUTahrjFAfcRRTmiucMynHstmOxp2pCszCExRlz8wzMummfjfp/L1ble9AZCib3uP4btyF3yLzFWrNhaei08eb6PbhC+OCOCKeBWuKtWEfmld9CeJY1UjDkJHLRkaJrlNf9s1kw3aq1Wsx48K4UWslW7l7J50RTmh4xZl7Tp9znvtWBwLZ/PptBQDcISQ2rKKtlCCpeaPzjRc6lpJqeNfn2Ys6JOeA3tWSzDWTRC2AE6RAL+UEzsXTyocabiE5PZJHyoI3l+/hDzwrqm8oXgp+mYVvVizCult1iEvpeYcKZueX4iK5kSoYmh4H9hGs+rLRpWTyT4p6YcjZT1Fm5rPUzBFOpiV6aUmvidIEan83ycqVV6i4iH6ICzSrMATqQ6i1DCpoAtSmnMNyJi2cZVF/WJfGxWM6lu7bpjAqc7K6ZtPDh9MP68sfv+1iaGxmKXdQsQiVRrMMH0bJIdEyjaSVPmKpu73A+81R5Ej+GzglMUI4EbLIguYFhowoQq9utad88Y2UpkGyNId7s7aTTIt6K7u9QIHthh3Vur9c3yyj6BzPz8rBQXhpuM3Tpv6XXKy9bZOTvT7ZWD6TVrZqZmVHDEBefQcGj2zdyO+OpgiyrWmTM0fW2JOilA6t1H1Kacu31H97zbnA8FrodbyCJDKktZStMs7loFx9nlOrtiW/n8YfBoteYohhfwqr2a1mPKwPlBuynft1SrkxDn9pMKihPKeLVniHN4/R6zcKIpeu2dnqsRm8M0lbOkMlZUdstlR1ldDREUuZiPX152eR6LjYOS1PzKIdbl9SO4sgAmVKoU3G3heNIEs+AZD+UQCONuGFUvjEuX9vqzyQvPvlcKT4sjr+rrdx9ABvLFMFsrnZHOSrkSbBcqwele+tpxmDLhSGOVENSVdlmNNIfeWdk9jYBqfvtoJAp7CumBifkBUK5V3QuyUZrYv6bO+roHuqMG2BzY5uGbfXTGkVNSXgabnwDvP1//6HnHYhoeXgFoVJnEkmYnU8CXEK/uNQfQAfOYIUgZTmDdhRAWspClQhxo5GWxyI7IYCfGYoeYw5VlF6s1pHlEo4XfhOBjW7jKjIg7YQMROE5RXJ70ucWeUXWvBR8eBb8ltVcr9XvSE2zPJgl4j+RPzRyr/5sJIAYxiqaRVPIyWx5TsFMeoQ1SmKyWhGmJu2QYgaADXthztgH85qetLlcVGGAXIe3y6iFvRSFW9HDBnzE24c00CPmYbktQE/8W06Aaz5ePwT0UcfXAz9u26yFQEPNccEgEvGbkDjWgAdwSUkuHbxik8CPyNoCfqw1rYa2VaIymPHdqp9PrtirlerXZqrbEDqAen+mwQxWjHVNStbEj6dBwm9X+obDLEmfVlhDUnXHFRlzft4eJevRo9IWp6fmZXDSSiOVyY9kJsRdR2pqcZq9VtFMXtIqeoUryTXQEvAcUJAI+sCyREA0Psf7M/GHjPZnLdRYqUOnjOjE60lWtjtXl4ZmNDo90ts4dXYcR5pAjObJmYixmrnsxQ4vWq3ikAnJRW2xght2flRHHxEDbRw76oEZaAWnfWIkIRYxeB5GnJLWdqWTOZzI7J3AqYQDKOMPwMJN3PfwgoPVy5oJbprXEQe8EXn70xmg/7T+z29ai0923xPj1lp2zhR/5xL79Aa//9VLD/lud/KANyy44WIhHOgG3IxGrpUDa9NEG3Dncqe9erdE2+PNtV2xGPU/P4hnPaO09ex0uZhVBa2jaadHLxok8Ljw1vK63Ipr/c/MUNCb4XfN+OIT3w7DSESOP58jG7eA0ZJEtTBH7fWBxy8JCUmvlaD7Aje45hIct0mmdsHc+A5q95ATNBGehls4CQpnDxfdqNRWeYAtRbEa9m7jmin5XLjZbboZPQiHaKQ2MOrh4zZqeI+W2wfkHgcE8q8W23zcFro6OLmpVL5EiFpNyUljYV2Ssc/r2mRk7pHJ+zbJI+0E31NIawLgbRAw/MR5Hb2MulUz2hSstneTNEXMPsAryLx8mPTau1wogZ3ZFXRGWwbKSNQHVbrtZLBRLkS8MA62u2WSdtv7KmmatI5uM0W2ZURxKkDV2/4s7OOB6l6zxWTeTzwb9gdsa6Q/mZuawCcemor99bbNWJRur0Ue1TCXgDBvDBM+7tbIC3HwP5YGpjdeV7QYa3WgG4OFsslDY6Fz7MJ3ygUVfIAsubzp6fZu0ONEdXoiFovHAh/l+pyN2ByQEJx0ZjMAKgOY+jMEonFTJYASuAEB+P1RgZIBrCh/cqYOORqlY73a6vWoxla33lb5WdQy6ddzKI1pC3LjDvl+1IPhC7reYrxui0RcQiJzZmh4JJHeT52IBx2BSASFCxj11+H8k3Nb+6CdAlare46/MOKFRMXw1+XwoBxfChSzlKt6rSELmMThtTEWGLIEbrEpkJMJBTlyjZUmloxi4iYPOaspLubxImcALQeBFRRIuHsbX0LBvWuervCDzQQwbOEXlmXBxyZyb34g/UQ8SCJmzO9F0UxJprnKJONrWavTofATQOKE18sk1bo9Imei9g2HRFF12IvG+/Pdfp+zoqRReKVfbRTvi24zANXCfVWiEN1vFyT6h3+OxmR20SdFZLhQyzWa1rKMSo41Egsd4pWdWFj62xBn6tkRpZZes3CgvXAkTLjaW52hfzBehZRTnTH406JniMY94knmLWT+lb1HACEckomi20ivEuSZVd0Xoqu0Rv38gkxkLYzWIUnWVVRQlDro4NeqWqKdXVENv765Ho8kwKVVdPpUSGK+SUGeTqz0BWhbyHCPLx+Peg5VvLml90fMVFarQr3HDQmdue8yEzzHK2q2NBhTp6nRqJVDDEZ0Vbx+Uy/oNTqvRVKfTabXAvJX6V9DndkzPeDW17M4r45nNTsuQsUMT09PjIQjWSGtstmPlSdv6xvaYNx2jExPwN+AAcqQQUBWEcK+zjDAUEQmXAnfGS5Q6nz+6jyI24saKmH+m2fQzGHcBhH/Eo06b42CcXWLyY+Pn1ryrGDAeYqEGGwFvZTKDJacuHmFCvo4xHujKwOsNETAyC/+f5d54wWBmCPVxQXl6RJxCB27tT4IodphhvdadFjjkvHI/3xbccncfuGIH0d4ToFhxzg0xWJB7KejuzEFeOL/e546PWwft1SLgscNhsjf64fOdoISEUFHj7H3Cyumzi0RvPK172bxyNYyo4W6r4L+ckygz9tNVGYrLepaNHW8bpc9Ip/ufWBt1IGCJZ7vwedua9bHw98m36KwXoW+2nmemX3e5EMCDqupDboORdUW+tynw3N5kXd/JuuJipoEk5P+YF9SxrCCwDEWcQgVu7S/njDAMa9gRerfKSdOAGXudZwlzQJJP6mtD4Xg8FPS5nm9ht9wdGcaZBNwXO+w9E+E+jaqU9p4AJUqGtPdgGQaUQvAruAbZk48FCTSJa/PP/uTd58awuiggEhVnxFbLIv60tdmcgfv1//sOW3lAoQ9hwhvXXO+V1zxgOaNfn/7J0A6XwhWTM7bFZmVCluQ9/k2V4MFlNsGpriR7wd7FBjVdYa1wrUymAY85nZVNt5c7Klu4s5AfBaEpOiuiAiRsVPGirQIZog6h1MCeaYH0KAIx23b3ta/11eLadWHK/CqoXlw7x97G9t7GUZ6bmEiESReMwJzWOExeFZ4WalcfnWYnED34KlTMfgMJ67ma7WgV+Uj4VDgMAEg/+qyiyzBVB+uGSKd1iZu+lD0Yh/V9WoDGIzqTKLdajVpjknfyebK1eZyM5N1ZWHmnBtBihC8k9z3ArWv3/Zodbk5aIrlcKpHC4XB0olZgBj5Tt/9JZ64NhZ9wQKVA47sBbjGDLyT3pwUPF2BAzB3pAa4yTIW2gILai1lljrmBWwMB1+ObmBNYF5gfSoFVsGrIJrQegierwaodlxioIoAKRpUp/HNiZxWFYBNbNmgRheWoiNflvlqf3eYE5XRhLA1lEmRqkrUk9E6U11JL450GOiVs0UJFpbfCS2TO0HmdgNHY6lI05gJ2jCrrxnhgIR0s8zVvnZs+/olWSalyf0D3ZqUqFgEvIyNUEKabjhehTbi20a3bkw1DJpZDiYRInzO0ARw7A2NuHstJIXTFRWTj6f3Fd+h5KTNtuzWu6rI9h+ShlRYpc0pXtuWfDqv06uH8ngV8EGwkQ4VcuSUc10aVIGiiw4BdVXPZsU7His50U8njesqe2VliPGc6V4kcvsTRFMMAWm7+951w8N47LSNULaYUs4/JH4PVd097X/UgBA3/gN7IxGLmzaz8gEIyOXSY45QPFeYOYleubmRTzWyOMOY//qb/f/PUXTYMIvpt/XAY6YDwgEzZc9X8wQrXWvjzyi9BPSVlCyctSkljaVeoPlrCS1VGPnLoNBWcEtf4Wvy4tVIKWd1/oNxIfkz/54RveURGNx+QJvzlHcs3yMik2gfMdmMcHTrMg13Jo74PHtYrwdGrRnpem1DSnDx73VshWdsOa+Fqym4XScZulAk6Y2KyOuJK/5kiXrG6PealAsfivUiEpcsz8VcRlj247VCpU0nYGIIDL6ZyjS6r0jHXUoYNTH9NehBreYJ9he0oJd2vRXPfkaM6P39ZNn9CCbZGhtuZjKUVZ95AuPT4wbxCTs1oPvIzzPtg8FxSYdn6ZkRA2U7FKwY5wvUIi0EwGFnLESMmgH+exS/E4CDaf3Rto//2KFC+AsoFnP2p9x+4GxQ+8fnxR90J0K0DusorQsCFpcJ6L721cI9ibKlMULXoBasT3k+24g+tWkYw4AVxcFHDjK63UY3TiszcNMIEAeKXlNjZCbgW5XsOMjDyMRnyIVZ+Ev/StznkZ+UXW6unU894BrmbxnQqGstGJZ4GmcGQ1pDLLpHjvhU7/sSm/DdxSPmmsfSnG0Ucm6OhIApqgCuD10nIMqQIqZIgjlcXAB6c6iqp3irHxGiQEQgXzUKLQqiAOplWLcMMs48lBxiGe+GflqfExoFWKycx4yg8ENg8lhF/kwvj5HSx9loOs+w8CcnXRSU5NQ9Ea4MZJSVzEb00FzMEkXZd+yhWSP4AGhsmai7iEHu2OIBQRrvctz85rPb2a/se2e4O0zQKHyWJei43yKZmFz7WkWqkVuaiXCuBhciW8O/n5himP5J+9oN1/+ciDGXPoy6Fhz9D9mQ3bFDB2ePL2VyiaN6HD9c7zn79gnOeYQQxroFoYzjMsAjBLQ3mAHkMSmBvHeKA6OkhDgs6izjcFfdCi3alVk210ULwjWpONC2izDqhRmebsgwvsEUlYyW+PXTcOuI8hiDxBBYhPsW1VMqwEIOfHcMaoLUZO8Fjh1ED1LdppcOC1mB+3KFOlktpqPSmmi/rFoX5TD2b1Ta8OyeCH16U7Wrht36I1ZMg/0trawgMYcvO4vweCGr5YNW1vOiK5WleNC5VirUFVNsTZEFABLuVapZTFJTl8v6NPmLVgYUFf04QCtmyMpjWqjTmckqCKwZZlIIwGt9KQfzIZkPgwpyaCCPpaMy53Dp/LMHzhcrbE4Knrf++HyUkvLV212Yce8vQx+iYvCNl3K7NDs/9OvpGHWZChqAKmtKNUFbqJfYufIb8P0ZHin9WCB+1FoIeyQas0xN6KelYVlhcjKpihdwWMonFhG7bZklr0ZGnPUcfjceL7RgRorw5qBAczjOZ+22qKv3mN7lvLjOu1IFL2eO9pHXnt5/Wh+ZFBMV4QP+FYljxpBnwHDd0GK65p1zuk+iszqDZ2fn5nyl+urtCDR3m0uHbzl4YxK6cZV0oQ1mJdin/C/uCoES1kbLRTkc6lm428TBVcZ1xmnMBkWi6Dd6ntJVa2/tJnIn+Zn5MuUo8TghyUWR1cEbjLO3ubD2/qvivhk8i/8XJKR8hOE5PMWvMa4eHTQHWw3oqgYxRFVVZzm+YWBbaZHma4uS8kkoZEq6LM1jQiRB4aqazluMBJS4UsYZjneia4xEigXcg+/SgtuSi3mEYGzhBKHXKCQKfnUHkOs7o3snU5HqSEctVpVgAQpqRiJWF4IfCgHmI7ussF0oicxG2Ad03Vz47+4K765hNAV1F5tIJXEK1kQMTUQIyi3AB29eD8Otsthdd2d0FjztBsAl4UX8VSPrBy/kd4eT/F54V/94A7NeAHRf3kalqr1xmi3lvHUbdR55XFMwKvr+niSJFBFEsgqYinVVMho24MAKXOMUreYI1oD1B0hHjGmJgtZXi8Hwml3V/IR8alKrAtQ994T4qqatCVJBFwKlowLyHHRmYhGx8tErFGAbiZWfb28uoNodRxDSEFbDSiaFKhHJgLmXCc8O+qS7DlBgKA5BlUYJgq4Km5MNyFZbp+E4qglCOBjzlIqgDZlwhYZFTcgnFO8MYmiYpZ5SB3bjDcMVJCbhGamoKMgvEPBL2WrMY/kqGMMruy2LpiYk0hMaRUklxEyJA+vSuBPbU6gHkQblrt0Psfm76fKLYSceN+kCAPdui6p/X3iXWayvujMybN0txxgojkavf1SGWLq4foxQdJDem7e3TRYyJWDJqHhptmmy6yLbJRzOZUrSjkMLUsLoEYyVsKsDVuTK6e1boJks+leId5K5S0UqM0oZVQsdltGMqLiyRz+XsaBCGpsmv5YW5uZF2e+fMzEi3K/l1nUsRsbKaBP9WLUHUdR4XO44p52T3vyYbHHIL51rt72xk92la1WW5PEoYx3ChMMcK3DZHDJjnUUHRjk2kkp0sZgM1ju2f4/X0JkBXm31KZ2hrRkTMiGnTFm24ObTbi3W5mAik90cJhfl3sFQWRYCWceas43gJGYfQMRdc7IB5L32wtwKhbOfqaqLqyudyn9KqzQPlYbXoueQUox/Nfs0YwQ3uwgwXS2QAAoiXxffAo8IeoGKPzsI4Za78NH4r+GCP1qB0kMAPfpfT0JdAEm/OqL8a5s4u856ngH5LHMC4a4dzj+D59IgFxq/6/aM6BKJWQAaNwLtnajqMcVg8EoQFLOx9V2y8tbN2vKoFm8G47VzDGXPig+SjZF7gchd+kVcy032i+ocrxeodcKjxTQDcmh5BWm72o/Ow3j9KTVdAJ42ZxrstJbgemkxQSZ+diFCnf8JMre9HsIhUsJOG0xELDB8eoulETSGgguvs4nWwyQ2TN5xaUfB+e1IfY0gYbdLnMYkowBV7XEF33I2oc/pMiB7Or34CLBUtBT6nLRAGbjNyXb88Lu9wh/UyDLRkiCiXX7ovDXjzwd2kpoLisAhWW4gJrMaZKClARr3logm7ESMl/zErkchk08dKj2gABauuY/KUgOZUeFb8l4Ke83grDFVqVrOuXWmFZa0Fp7HZz8m3tp1xnNS3suN2tWXQWq0DQ65Pc0+n4R8Mlm4In9htF4UPeT8JVbKyvE233tXop8FFU44oeWeWRlsPi2HdmMHjSkYsinw2z/YwVuxOvrL4ihJLJGJsJrOPABSscX2vFeUitF+SaCSy6s9JZN2qLZHO0ldDo86PZuqGYmOiopREMyxD9+HTN+XBxsDM+6eL5fu6uw0Wi548MHDuHHSmq2tqqlv4/NCyM7vw5S9uv/ngM3uZPH1CCWeEpXAIjrPYbTUr1oesmKTdZlNzNXOf3QGgkcLJC0AeMIPmGwsoydtZmUzYkairbQqzDmAJ8yv4Xq4rNA0ZMrtFcE8Q1rN5ZY6q2xo+lnefmhLtqwFeVdA43lzYmDiqs/H/hOOx98nAIDh4VYPSxrURS66DmitsqQeJztCxUrBytBi092YGJO1gemDoUE18b+httic47UoMNguzNCcWxPIikOZVDQ/5FB0RD0TWqfvTx3vPr61P7MkPJHZmBrQnZvY1+i9PuaodqgHdkXwlvNWedsFgszBLc2JBLC8CaeYDs5/wyHP2Y0AD+ypCCNv+sD4EWx6k9lKLyruXVSeMBlHvqdPek2pKxwBAQSiz8H+q/9vkGuwG/zxpjdgSUA/lK2K/eTQoRWdFryWcXjNMMn+sQW0BIThh9NuA+ZAtJ7WGh47PTMA1l91Aqfwt41qn4OgKhbSugDk0YXYaQCOUPidwRp3SSxea6qF9naGpDoVJYgaLINtAEEHNpazUv+H70hiP0vQRHFROOItS1qOq0nzH+Qxp2WZwx/oqj1tgdekGbigho+cjkXql6jGT2Na73QuMpjo9rlLh+iTLaJj4BBNivoG5N5/J5oclWeS3cicldZawstKGMSvU0vxh9UbXDDu29Wyd6L0n9CBwe3tjMzMWOOe8y0LXabGiCrGsSXHOO1f1TGiPH8x3nHphaXZu6UizVSv96dWTksORcPy4uXHACIs7mSeSmTk2tix0zRhbNHpJnQSEQCaZ5ZgQZ6pTVqeQLTfJ+tAlNsGEKokHCfXaMVkigUetx1eWFnqS34gNS4oi7c3lcHJT6IMRPWpWmqiuDBhDAczSnGyeGjXCMaGqtqs1h+wiBFZrvaZVtkqyLRKSiUtUGY9FG8qnP/151iH8Vz+M8uh2Gk8sLqy4L2R8EAI6B7myPd/VaYvkE2tR3fFpV+tLCjhhD7EdOrxtax6BBVHrmabn4QUej54kJGe7+3B59UHMtmtCbJJQDjPuvT1XNzliup/wHPjA96yZJsYzGOT4TSD1kaapP/IufH50X+/OvAFjZ2uaS0lUb4KXiDryJkhzJlhdpxy0l6soTM7dNrPNp432W4lHotcIVmmbEcLumYL5MS9weWAnlJ9/MoMMuoVPfSLAOGksCy3eWvRiOVIgEyK0kk7/Rc1/z0TrzFqUEsOW8CaKxMjV+A+1W10fHi8rG88xlH9629G6hOwNnU/Lqw38UoyJt8ufqChUH9DRvvEXbrZjKPaWssn+WZag28cUOdPnIqGroe6UyAwMMK8LGEnw8eIRGIF9AwAhoGGYyMFPxNbAGpn9tuNA08k5aRkJD5qzlg9ulL0DaMqQWv2FcfRAOmrpYHeKTR/37qWE9Vf1BAjxDAMBdANfRZzDAwkMfpwUNWp1nQlvxy2H2cIDzlhtItJhjId75nbbBxwshzWbrM/ZwiR4Zxdm8ytyTMZXBJlshfjUINpi8SGK3BYi+LY8dKxFLuExbHSNylpmNlK4f3WvgXSt3m7WKs+DyPpDo+r5dDyWlJXKuDn15BLVtqQlS+sUECkQkwvak5rUrmb4iu+hYy3zxL0AUUqNx42IbHKjzg+/cjrwaeNo/si5yD8OZPqCXHAj3KiU2JVaK1o0ZSUER6Za5KUr5g8d5aLWamUQ43YaWUGIiHZ0tiwtPOX1rmgdDEZvauGyfQFTeOW6VEBd96M9Xe/TWu2RzRQNjoQXl5bCBWg7NYcl4Uwola7NJoUWGWKpjGi+ixRGOieM54V5KZEX6uSnxyWkvTc3lkSkbvUQa/PXdUBBSdm8xSD7Ak6LfY/hK8BbDJnJ9T7dU3hPxt4KdqTEHD6S+hHQ/DIDBTfBPaxEcAzFVGuqKJcNZNWxyVqGv2oEFebCXsH97QY8FlJlqSLy0d0piDIQ23Ns5IPOQJMnFreVlQoMFNE5gH7W2dZbJTgdMwwuxGIU+HB41Vw05EHKc1H6/hC8io8gXhuJZabkKS01XUjBcbTSupOantFrLXZWKWfbGTosgQaN8OSa4KtrZmrDnHt+1fX+k8E5DSQE/a1BztedZxfm/+6fMOAqQdKK+lFo++E22EyWGaguTTXGCo7v82r2L8VSjSgQuNdouOcGKoxsVXp9tKeq9nvjSgqiOBbwDEfqLFkVJ0wH5Q9qfTZbDQcEw8FZ9E/XpPWr5Qt9pFA2XpuiDjHK2ij+RPFZ3aQShRe5ZMHzRhE0igreokjmSpgDs3+Pqp0lWqyNEt5M0UXnUMBwe2CsKM7b/7Yjh1MrTkbDNhuaao1yNgoG16lU5Jh8Pb0rHaQQGvX+xq++6NsssuOn/bfmjCPIPX3eXNhE7x2FUOEJaNeZL8tq8wSrpN6vT7AwKvV/yVwJnCCuZRNtl2SEQmXPcaOxiJOqpCMzAnVD7exnNQzn4d/c8+Uw7VqTw9nemEKx0aJD+s8PGO3HvknW4EBgXTpGmZuta2TQE9cRCohywYWImU9usX6gXVG2xZ8JFyg87P/4K5FOytNt8a+f6uGLZxUQRk39PO8imBwS6QG3AQpgu/Wy1lJ/DrDnLe37JTTUf1n+HO+v9sO9eIK8WtNe/srh9oN1P26V/rvffXkmRIU3P/PKJHPcWLZO5gJ/OrZtBxfekXsiTZLbxl4AQvtJ8FzYjY4OPQyK8YAzn/3S0+K44xlc+pP+RYY8dOwfmh/yHQ3ODx6wpfe7mqcPnjvo++P+c/ufc7oRNjbgKwf0KvBxBoIAAhE47ToADbAN9CRDucRZ93jQdB3kHyvXYHp8QTEaD0X9OPvwDJfxjEXFxMTCYnLy4lKyDjZiZ5/3Hdy9s22jWq9KrCfv4/537B151WU7feDvIhIbh3Gu8oEDTq/KO9fW7ns2CsFgUAQY41zBlJXC2n3Bd7w18u5REklOGKdHGUug907qa39ne22BQc5+LMbW+r4Vc2PeP3A9+f0M1FBtrobPi4un+L9cv/XyGVdsxu7FR718SLbpNvXLzZ6zc/0FAA/LZ9qr6g8vXjLl891XwCOP9iNdGmJh1OY1t2nwXcfW8hRPWbiCI23FEZ3POTI1UAuZMCc7kXPV+YzvXwVw10WtPLpY275Ko6Z0nFyb0PqmUj5lov6lRRCpR3fQTBVbD3LmlHrD66Z+65h33O0/4vgMQ1vcKbu3q8uHzo95fs/3lIZgMPEO2lK1cvUvnQJ94fW2aydMt1lnTQQLgN5Xey5VQF2Rotzd5FdWfHRKy3pzz1shTN1s9iqtIMnc0w2YwbjLmOXNbBcA3GPf84H6lsPf+l38fLAgqaB5oH7X/OgE2GFUHvDa4ylZMvyinHDenDPtAR3NzW1ajOB2V8XtML3jjDQGpQZxRE1+FfN6fBHJnSiDUSWWxpiCTLFRKS8rtrsgqitJHIIIBZuV+2ZDnixCRSbdR8Nlq/3ObovNjiS1ICLmiHZ8aVFd/r7/mp9xFMQlFCLKln+LddLWSmzq5AzMdZY4US9nttV1dq5TwEVUrjU3O6orkwUOYkaYuoC9eogG3flMxI+62MX/GFRrSkSuibrG1nwe+59G3ptbq+0v/Bh+Ntz7W61ChcdKhahjHowSVLKgh9p1ILmcTTmSSWd6eC4KJ3lDpwTOwN6a0jgMSTHRvYMTyi33eCoFO9jLIsjgFEQNJBpZSkBYAWWYfU9yb6D7o1ieKziU6ziMnddFXrEkCIjSjjABL5Zs3SBDgcOSvhAXIMkmRbK2348Pe93l2TGuBJLXsPBJjzt4HHL4uFbGIqlMMuoJTlVsLRVy4jK+DEwKr1TSyXQ1GaxI/Cwpew3jxr3/nBB/a66ODulk4AjU69elzCdlS6gEYquKsryqPjS8wIMeTUZUBws877mYpNReLEHMnBL9Pwh3skJTYYJm0MFncf35ZjFWhH7WEc+t1cIKyuEr8JWG3iAgVV3iw1RcFh5PeMNRnpWhY9WWosYTUKkui4dWMjE7qSt4k0LD+UZ8M1MWaoDY9SdHSFiQpHO/Anu4p5NPBL5s5EmjHsvANKcYtuRPfBMXPJ0jCupBpaLCsiEK73PZWr1uBf23c4zqdIRE/aVgVpBEU9dmPXMuF4R9jKO+aTNAXhWdh39XeCUlg1dTgKFsSzZispQ08zT3SHRAb7Qp5fzcxK9TNZ1846KIEAMzHzHwqIwE9jwgaaCvj5YMxlHWkIZv2DETF8ceJJSrUL3h76GBRVdae0so2B2LJRSuULwonkzqadSjiwjfbFRWJo8lVMfxhtnmPct7M7LwPlNM92WVZDlQiLa1MhIvsLSotRroviHXwo8RYnXoeuB+i8MLQIdqHEg+IZA0caBA4nHY98qbvJ5/P1WeX3/hgmMGP4Jfkj0ph9JeWFAVPAvBto+qTcVJj8SVhwkHeiqrihHhFkLpsCcQeQ9eMROVHt1Id7tlpUXHQwxUy4v0z3UYsUKtC8ofqyuquZLN5/AVds3jSDIWSyRJUblByZUEIs69f4f8bywaoGyyhm0bBsdguxwmGJii5G0ojveSMZ2CZUHOr0fiCQq2VQhC/vOpaq/D7ZNg7e0S5Rln5yXvbAdyHUuIOYYQMVfsmRAoaUQgVr5meh4+qraMzpMZ18xMRD5hohNLfpKXU/ijRaX3j8/AmnfYlTp/hdvrwRen8JOz33/knnsfevjFt35VPP7ZegKY4nz9e08efC2+sqDohlRGoxrnk+oQQW35igLtZ4XQS1ZZKvr0quaVv3xQdk79/OwDL00MmBWJDFDtbQ4MUcoQqzAqkXgAd5I0/0Y7Pw9gcEmlEdcNAuu0GKthMRRkgwCMtpiWKkPcqE24VwkCDAQGYJHlHoQRC3dnF53UTxlxHAqtZfN5VhERwtVxnakiq2mbVAhaw9BmUkm06Wh0vnnXXJRGakkqaq4VFpwV8SRJuFgF1hb0MYH2pYyf5E0LkI+EHDSmStz9ht236PZffxpn+Mw8d5HOpvy+DNuWHA1BI5JZHYsUdXDanEwPrAt+NuLocFI1rMN4r5tLJzL6eLEBcCKnwhmBcGDfaHwgyTL6V5xR8bahn45RlasCAYaOKMbSbUx5BNE9xTGPV+yg3kmlaOpu5xm5q0L+I+LA1h1p/EEtOvSjxwOisz2BK3/0f617/Kj45J7qkM9ISXoiVHK9DqdUxz5I2JyNhZEEVISn0cmcTYACjL/oXLPQ4N+SarVQ6AJehp5Ur+THDzeWmUwwGjtIswwlAkYT8A3M9HSa1i6Fct7EO6hG45ZxRnIEztby/tb+jzGbmXDSbSoFXHLFlQ6CvxM+dsy0HvW7cubearCvIgkbz7EH8H3Nn01JIJiwZLYFZC+mqDSx7s+VFs+T/nGpwYsGO8pxNnRELkRQ5jwr/Ia+7StFNb6Qz8fPM4y5Wy6rMv1CRDJEs7lox/nowkLUbIGAy8n358zS8fuSPjpFd6sawH94TlnY2wDwsbG5kto4XgWgDaOpzWGLe220BXJQpgC/HA5znHFGf1i0VQBFjPbWgIVKG/AEUzA+n5UqFCZ+kd+uL1wAVsptaXAZYNpyqCwghaO9QgrIWYqJr5uk4PRAMQ7HA4kKBqUzgPMT/9brjtdCCfHntM4Q7WzdLjbUeCLeaMzBwMNQs+2vtnp2D/ZJzn1X3WFKPu6F2W2alsKtUdfOIXDLCddjX/Lg8Cg4GEWmECz++MPhbrEWhcyc70bIXavcN8zsE/SArmfG1TkgSFmHNjuqvRDL504b+Rzg0oU3uH/YBrmv/JFKP/qKMm2UmlApi5z6kd9ImRPGLlkUr0RDMFpHualvUSRCGOdbEzb2/a/YPNsQEkOzBCEFAx6LtWM1mUsS+H4qpoxgN/eVDlQJH72LK8Ym1KCr2hiIGIYxhRECkhp3qbQDRiTDwiDjK3ExpvINONiY/dtV2jDoLaWb6sHViAeUTUhCPDX+LTSamG0MdEgzkQniMd/yfKO+8q1Nulzdw+BbG13ntkWgC11K1CrHOY4tjnkCm6L5CzfXiEhdKeZC4FTvb1WZXoiVgTl6PxY5CWdQuFqGTTUVe9jAEhrJxmMueXqReC4e7WROKGX5hkrqJ2p3uVIXk7YZHC5tg0MGdR0Mf3mgTJdDR2ZvblZ/V58F1gP+RwYAGkSbg+eud5AfOohBh+SDvw8ffvWgUHwIEqvI/TfuvhtooKdA17Jj2mGA3t5qAl9DWaU1p4y+Dxi5H4QENKFM5teZbseJFoxaKS8HApFimiRizQ4Z8RMynGv8bc09yCE2J8mDVVGS6bSyS3lAHApiK0mo3G2Wpm3E/l6q2b19aQWdIOM1PR7ZEDvTohqfjhuw3Mb5coX14xGoQ719D7mTUxKWwBaBNeaGhIIxjUWAcGrSKFTduTpGXU7kLOoqAZl8Kp7HK81Zv16mARcj2gFW6g9thAdFWwyY4dRjasdRjBXq3AozJzEMLk3kzffODfne8d+Nro1dvQKg/JMz8vOAgOYt1xx7v/TXnPffTrL5JeA7F1dpAfjetw+oJ9K009aWBwwRAAGDY7IGo7mwTr97iFjCGc9fQX2JrLjVtYeg3ipwUo1zou8E3mpOncI3PnDEZ1XS0+YbNG48AxUezxnU1bZDX+CahfVFbFSPcZlHVjVzkI8Rptr3XqJ9limuL1tCz4vDa8/DmIfVzRIFDp5eYnT9kiYS08B6kMYKXf1gkHVMswEprBp2nUl4k793TCfNP2tTaBUwHTLcjZY+c/1rCfOqShvlYFTz+tFGoBlwdYhb4b+8Rp6znqtxltf+/JCMzXhtxJgAS0XDSAAHzk8FlvuHrBHiAsbuauj0PJg1RdVsIINrQQ1y6AQbIGAAiSjtYWQIAh1IwLT4AK5FZCfKj4FQ1/a9zTkpdbNI8szEuglezuyVUVWWae9n66VJIzKnajazQW2ennWWdbUjc+vEIY0SzFucVYIl7Heahnl9oPmzhMGwnractGidR1ggOmlmsaxT6+i9UPIXoEUpMFCXCQBUkEIp8GEJbBPap6MQRC5w7klNsK7wXk8bN0fX0LMeDbFbOa4icoiRu9A3Rt6orj+soYQ521anV6A/LvgI26EZ9sExy1/D23WMMQiGn7ADoq05xLOsRnRf37Sf6Ff8oLJT+/5fJCDz5lhmhiUPlQf5Vv1odVdaBLUTwNuBIojMDSEIVAtpjKeDDFaYTAsIiyxzUWBEEz0B03kCEvptlkLnLQNNxJO0a3inDOj1Kxli59MyRtxjMo7Ot2WCfntkknOnZIpsTJlmOxMyQz43yyz7+ZTMkc6fZJ7jvCYLZMsti5yXKUt4zXm/s4xuroJJSJqSFhUWkdViGDfuRpGad0Ohq+lyYrOUeb7FLGkJo0IClCrl8lVEQtpiC3u7NCvpaSfXPq4RFa05fhwrFvx4sJ7w1rCYkJHd03FZGVwbVzqKvgHvjZeXleZjWPMbq5BweN03879CLkZxM5yXGUx6qXSZ7c0mR8mxEza6RqUWu4IW3GlJDLYJHFSb3CnLsV6I4XiS/jyumXAGTiGbGOV9XeNCN7h5KWecrUjGlxQSYrf0aJQPwUE5LmDMpeaRtZ6UU/CJb+VQTYqG+kdoqHBvJ4fKBXd+KJ5csZ0sVGfZDlje7WpvrM8tB2iqkHyxPgVnP2HmgU3uRKjznzNWuN0xNmytRPWLvVWed9c9Dhw5cXbfAw89GlTaD3e3msBjT6zxquMyZBquyYgep332cy+s9QYPnrz0Y/7xTx7jRI2JGRU3br/xcAlqX5kkKS0jRdujs+zNXpZ+KIYdjDEHqvbd8qymzJg17YAD7jLXd4MztduSH5y3FnZIf6/Wfug3Ci2NlTHlKmJnwmVXSHrPJj1P+39sxrxApjKdmcxmLvOhw4RNMKGEE0k0XPgIESNFjhI1mmKdunQTEbJgKQXDTTI3VInAxyLmk46LZxmvbgplGbLl8PW0Grn+l+e2JMlKlWGikdkUK7HYQpWgsk2YMzkQaNEqn5SVIU4KdJgyR2zWOCKFixEtljqnpC33RUOTTS75FFJMKeVUUk3NEWNdo947DV5735g00kwr7XTSTS+fiixF/enQRKhM6wvksiGPjhNLBGK9BmVR1Pd1+6z6Zbl4lCco1chwKD3uiwf9sQxnkI3TZdGGl4zus0Lbzj4roropmgUldMtxx/JEPFQ1nZ0M2OLJRamkKRp6lPbNRCf4mzLRvBpnlWTVqKkke1M8GpdI6NYjIFUAIFCuABkBAKiMQFwBIEBG7ZKNvNEOryWoC18V8Grl8GSoXGAcXMrdgKF9y8/0lZTxGs3kG3h5tBCzLh6/u1I3CgqV9qdFSyeelS0dgpUcjZlRTDQUNwvz9f1ryEy2dhYG4/6i4wOfZlzR+4R+UTYaC+aa5Y3FGmaKhVntl6ZkqbIldIORYu4R1UbflUb0619ZqiTLMIoyAA=="}},"time_used":12,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":11,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"wss","addr":"wss://socket.tidio.co/socket.io/?ppk=k73j8w15xddb6w8hwe6twxuiqv0xw2w9\u0026device=desktop\u0026cmv=2_0\u0026ver=1.447.0\u0026seid=57184589-f64e-4b68-a750-53e634e33555\u0026vid=02q7psr38975965no16ps55s00nn8357\u0026EIO=4\u0026transport=websocket","fqdn":"socket.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"websocket","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.599Z","timestamp":1785145636599,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"GET /socket.io/?ppk=k73j8w15xddb6w8hwe6twxuiqv0xw2w9\u0026device=desktop\u0026cmv=2_0\u0026ver=1.447.0\u0026seid=57184589-f64e-4b68-a750-53e634e33555\u0026vid=02q7psr38975965no16ps55s00nn8357\u0026EIO=4\u0026transport=websocket HTTP/1.1\r\nHost: socket.tidio.co\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-WebSocket-Version: 13\r\nOrigin: https://bit-core.top\r\nSec-WebSocket-Extensions: permessage-deflate\r\nSec-WebSocket-Key: sHYTfX4YrxFEDXOlvxPHEA==\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: Upgrade\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: websocket\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nUpgrade: websocket\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 101 Switching Protocols\r\nDate: Mon, 27 Jul 2026 09:47:16 GMT\r\nConnection: upgrade\r\nAccess-Control-Allow-Origin: *\r\nSec-Websocket-Accept: sDQtsvl03xxJ68oBrJnK3CfYVAs=\r\nUpgrade: websocket\r\ncf-cache-status: DYNAMIC\r\nReport-To: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=6Ey9MvUexyfAtpF52S83W60d2rzBeOjY2G8kjysaYcc01pVMOaoZCvwAXoEGb%2FzdfupSNSnWRD6IFKIppvIL1NgwFGujsIqMgrFPHI%2FUefAvtRM3ozwjzfZiJv17YgUF0w%3D%3D\"}]}\r\nNel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nServer: cloudflare\r\nCF-RAY: a21ab8c4e88356b1-OSL\r\n\r\n","headers":null,"cookies":null,"status_code":"101","status_text":"Switching Protocols","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"]}],"data":{"size":0,"size_decoded":597,"mime_type":"text/plain","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-29T06:56:24.505941Z","times_seen":17593773,"resource_available":true,"data":""}},"time_used":230,"timings":{"blocked":0,"dns":16,"connect":17,"send":0,"wait":191,"receive":0,"ssl":6},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"metrics-collector.tidio.co/metrics/WidgetRegistry/observe","fqdn":"metrics-collector.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"104.26.0.115","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:17.100Z","timestamp":1785145637100,"http_version":"HTTP/2","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":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"OPTIONS /metrics/WidgetRegistry/observe HTTP/1.1\r\nHost: metrics-collector.tidio.co\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\nAccess-Control-Request-Method: POST\r\nAccess-Control-Request-Headers: content-type\r\nReferer: https://bit-core.top/\r\nOrigin: https://bit-core.top\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"OPTIONS"},"response":{"raw":"HTTP/2 204 \r\ndate: Mon, 27 Jul 2026 09:47:17 GMT\r\naccess-control-allow-origin: *\r\naccess-control-allow-methods: GET,HEAD,PUT,PATCH,POST,DELETE\r\nvary: Access-Control-Request-Headers\r\naccess-control-allow-headers: content-type\r\ncf-cache-status: DYNAMIC\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=ZkiOgm4Tl6%2BF57wezZHudY0C2bhEQoouDR%2BLiRbrgFhYpKsAvWKD4A2juJVDmlXx%2Fxtc25xeBouFvTlAEX9sp7X3AQweNBSkrIEWIZhDpsj7sm%2Fdr4CDvHUZsg8CtLiZUcJlx8dGwaz4YJCZ\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nserver: cloudflare\r\ncf-ray: a21ab8c7f8c956cb-OSL\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"204","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"]}],"data":{"size":0,"size_decoded":659,"mime_type":"text/plain","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-29T06:56:24.505941Z","times_seen":17593773,"resource_available":true,"data":""}},"time_used":215,"timings":{"blocked":0,"dns":0,"connect":2,"send":0,"wait":204,"receive":0,"ssl":9},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"api-iam.intercom.io/messenger/web/launcher_settings","fqdn":"api-iam.intercom.io","domain":"intercom.io","tld":"io"},"ip":{"addr":"52.2.13.117","port":443,"asn":14618,"as":"AMAZON-AES","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"xhr","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:17.164Z","timestamp":1785145637164,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.intercom.com","organization":""},"issuer":{"commonName":"Amazon RSA 2048 M04","organization":"Amazon"},"validity":{"start":"Thu, 13 Nov 2025 00:00:00 GMT","end":"Fri, 11 Dec 2026 23:59:59 GMT"},"fingerprint":{"sha1":"E2:7C:0F:4C:CC:B1:6F:45:04:99:4A:D4:CB:5C:0B:60:CA:75:CD:8E","sha256":"A6:51:D4:CB:51:4E:EF:B9:AD:B6:95:84:A1:3B:92:C1:BF:81:F5:22:36:A3:50:A2:8E:92:09:4A:15:D0:7E:CC"}}},"request":{"raw":"POST /messenger/web/launcher_settings HTTP/1.1\r\nHost: api-iam.intercom.io\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\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 361\r\nOrigin: https://bit-core.top\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://bit-core.top/\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"POST","post_data":{"size":361,"data":"app_id=p60ru8yf\u0026v=3\u0026g=66bb81a04b6586d610d306b31f5535a175253c0c\u0026s=60c0600c-c5e7-43cc-a3e0-81d178ea0e94\u0026r=\u0026platform=web\u0026installation_type=js-snippet\u0026installation_version=undefined\u0026Idempotency-Key=67ada894da7fb3e8\u0026internal=\u0026is_intersection_booted=false\u0026page_title=bit-core.top\u0026user_active_company_id=undefined\u0026user_data=%7B%7D\u0026referer=https%3A%2F%2Fbit-core.top%2F"}},"response":{"raw":"HTTP/2 403 \r\ndate: Mon, 27 Jul 2026 09:47:18 GMT\r\ncontent-type: application/json; charset=utf-8\r\nstatus: 403 Forbidden\r\nvary: Accept-Encoding, Accept\r\nx-intercom-version: 79771425bbe06a5229fb046ba0643ee6ad9dd05e\r\naccess-control-expose-headers: x-request-id, x-runtime\r\nx-request-id: 001q91amo3aoub9u8g3g\r\nx-frame-options: SAMEORIGIN\r\ncache-control: no-cache\r\naccess-control-allow-origin: https://bit-core.top\r\nstrict-transport-security: max-age=31556952; includeSubDomains; preload\r\nreferrer-policy: strict-origin-when-cross-origin\r\naccess-control-max-age: 86400\r\nx-xss-protection: 1; mode=block\r\nx-request-queueing: 0\r\ntiming-allow-origin: *\r\naccess-control-allow-headers: Content-Type, Idempotency-Key, X-INTERCOM-APP, X-INTERCOM-PAGE-TITLE, X-INTERCOM-USER-DATA, traceparent, X-Continue-Intercom-Trace\r\naccess-control-allow-credentials: true\r\naccess-control-allow-methods: POST, GET, OPTIONS\r\nx-runtime: 0.013764\r\nx-content-type-options: nosniff\r\nserver: nginx\r\ncontent-encoding: gzip\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"403","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Nginx","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":113,"size_decoded":1136,"mime_type":"application/json; charset=utf-8","magic":"JSON text data","md5":"f3ecc06e59a23b51f0ed1d559272d677","sha1":"521046942976a3fc612fa825fd29bb01e0dc4246","sha256":"def908434fee48a39f22e826249efa945c9d7338b2086d6ec24f322d81011220","sha512":"e4cf4e08bded1a49ecf534daaaea8b73116e82726de4f76d0b1ce650a721c41171f34365bbec04333e4d09c96fa18d7589a38601ea2450b505f0efc0e9b11c37","ssdeep":"","tlshash":"afb0120f8156fcbbeba10143fe0f196386d8d4b2a0e008c68494a25c86ce543852b25a","first_seen":"2026-07-27T09:47:52.606037Z","last_seen":"2026-07-27T09:47:52.606037Z","times_seen":1,"resource_available":false,"data":"eyJ0eXBlIjoiZXJyb3IubGlzdCIsInJlcXVlc3RfaWQiOiIwMDFxOTFhbW8zYW91Yjl1OGczZyIsImVycm9ycyI6W3siY29kZSI6ImJsb2NrZWQiLCJtZXNzYWdlIjoiQXBwIHN1c3BlbmRlZCJ9XX0="}},"time_used":931,"timings":{"blocked":0,"dns":2,"connect":99,"send":0,"wait":109,"receive":0,"ssl":721},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cdnjs.cloudflare.com/ajax/libs/twemoji/12.1.1/72x72/1f44b.png","fqdn":"cdnjs.cloudflare.com","domain":"cloudflare.com","tld":"com"},"ip":{"addr":"104.17.25.14","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:17.443Z","timestamp":1785145637443,"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":"cdnjs.cloudflare.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Fri, 10 Jul 2026 07:07:58 GMT","end":"Thu, 08 Oct 2026 08:07:45 GMT"},"fingerprint":{"sha1":"DF:66:97:F5:13:A2:C0:81:D3:5B:60:C4:B0:7F:CD:78:F5:91:14:D5","sha256":"3C:F2:95:73:83:BA:4D:D9:CC:85:8F:BC:7D:2C:22:CF:F3:49:9A:3A:E4:1D:FC:AE:CB:07:3D:66:89:74:0E:C5"}}},"request":{"raw":"GET /ajax/libs/twemoji/12.1.1/72x72/1f44b.png HTTP/1.1\r\nHost: cdnjs.cloudflare.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://bit-core.top/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, 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\ndate: Mon, 27 Jul 2026 09:47:17 GMT\r\ncontent-type: image/png; charset=utf-8\r\ncontent-length: 1224\r\ncf-cache-status: BYPASS\r\naccess-control-allow-origin: *\r\ncache-control: no-transform, public, s-maxage=30672000, max-age=30672000, immutable\r\ncontent-encoding: br\r\nlast-modified: Sat, 19 Dec 2020 02:18:46 GMT\r\nvary: Accept-Encoding\r\nx-cdnjs-cache: HIT\r\ncross-origin-resource-policy: cross-origin\r\ntiming-allow-origin: *\r\nx-content-type-options: nosniff\r\ncf-cdnjs-via: cfworker/r2\r\nstrict-transport-security: max-age=15780000\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=CgLWi2LfpkE0cUMXQZ%2B3thLu48DBJa78AIUoAnae0F4aDWwaYR6uv%2BDe500eoAa4asa%2ByxYX57wtApYmAo9Keu0DjWt%2BEAGU%2Bn0mqWwMBT3oWoi0yZCB9SES2FeE4UuSqEG3lk1H\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.01,\"max_age\":604800}\r\npriority: u=6,i\r\nserver: cloudflare\r\ncf-ray: a21ab8ca0eaa120a-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":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"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":1285,"size_decoded":2216,"mime_type":"image/png; charset=utf-8","magic":"PNG image data, 72 x 72, 8-bit colormap, non-interlaced","md5":"8c685a701d36f492ecc566a4c879fbfd","sha1":"bbfb15f5fdfd47a20122556975dba73b9d035d95","sha256":"dfee1561c6e59c90f7a292f90157bae85f75ccb3ae27b655898a51429e3a8910","sha512":"ea582a7f4c4e579c54ed90487033d44665f9fb5540ef5336b6f0ab591668747f4a2cf1a47a4073ba22fa2251aac43d636d17b9dfd0efe6daff048550c30d583c","ssdeep":"","tlshash":"f721c5c2c156463a48b7e83e2240efc8c8012e06413d50baeca1a55300a63e080e89f0","first_seen":"2023-04-05T10:44:18Z","last_seen":"2026-07-29T01:29:44.695921Z","times_seen":1114,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAAAwFBMVEVHcExdrez/3F3/3F1drexdrez/3F3/3F3/3F3/3F3/3F1drexdrexdrexdrez/3F1drez/3F3/3F1drez/3F3/3F1drez/3F1drexdrexdrez/3F1drez/3F3wm0ZdrezvlkXvlkXvlkXvlkX2tU/+11tvstz90lr5wlTvlkXvlkXvlkX4u1L4vVLvlkVdrez/3F3wmkf+2Fz7y1fyo0rxn0j2tVD5wlT3uVH6xlb0rE3zqEv4vVP8z1n901r1sE7Bu7vOAAAALnRSTlMAQK9ggBBAEO+Az5/PYDAgv99Q779wjzBQ33Cfr4+AIDC/cCDXz4/fgJ9Az++Pgf5MAQAAA8ZJREFUeNqlmFt32joQhcdgY2ODMT7mGkh6TntuvchDzCUhSfv//1UXyPJIHsldod9LeGDtaM8ejSTgVvyyLEfJOIDfJCglf8yD3xZSUkvoJo8R70JwMS8b5tBFHy/EIa9Mucr8FCD1lv7o10oTlPQchlb+tTaelFp2LkiSMyFVGx8uJNfPvOLhMMJpH+AT1kQTZk0xShsln+nEeGH7cY+KAgw8b5ys1KLGAAAj25KGKPkmnlExA8YyKyUXJU9+MPlXGdrtHjVzHG+llOSSEjD4q8KaZ3HWzXGCRLpL690CBn++ouKsmRuyTi0WAGtZcYDl5W9L6NAYetTM4QKIfuN3fFVag8eF/hdHVFTiBRUxEFHdqdRDKRf6LESFiqN4tZgbYE1Yl7lcX/adb7Zi9FXsyNxh9x0VAybUV8mvrK14EmeruWmovof6Lrz2U9pqRZ7Wk3hCxRZqpro3T3rT+duW1l68MXM93Rtc+nIDGh+oFTVDb2LPzA0Nb/N2ke6fWmlxcz2qNnkbt6O/Z2lxczlV28zN2GWOtL7vqNmj0Kx2zyb0UYhnq7lXcWyZ6+neAtbV98KR1ouozNE0NLz5bDx+EWeWFjM3MapdgI0PgqVlH00hNvCRN7krik/Ckda5NXenplV++Jz0VtzZR1O00Ksdt9fjTIubi1W1aeIRM/Wv9zt7WscTKh7vISehOzAYutNSkGXxX4Ro9CiRW9M6iR9Mp9qRYxoBxNSVFl/PCQ2mYDDQvrpnaek6tGD7kraOtEwfe4vZgk1sW1qmjydhK/8ADBbutMipqJDT4/cQbq61oBfk8A0Xm2lxaEGs3NwcpcU4UbN2e4OZsbcYP+RG5ETQpiBzFhcH1aqMkA2lqDH3wrw9CoEOBsDNcfjR4haia0nvFiG689BFKYxuFzIPufwWoZkhlAKZu7VGAb1L3ObexOHXxdafSgN0wOPnfTTSLzlb5NB46e7sRPMG4RQdm//YvdfUbSmjufu+IvXb77kxH02tQfvsLJG6lmzMZ2CMDDrRuTNKTHYSvXAWriVV1vBJyAP5kEu6zVW20VaAIZSWpNRh7lDxBelC6+bVOwpoNDG6s8/qq3tG7102mjj8EiHfgQFAMColmezMO2R0D8cHVZsgK2tW82VKZy/DdRJtmmb0S51/4vfpQEqlSTNdKYzfoUMLSR6uM25DQhB21inKoU1SXtmsPQ8gGCej5rec3N0FxQTApUS/lgSeJ0eva1HTHDhmmflVPuIyfXBBZQZG2O/pWvF2AV08rDOyxljkwyuzQQh2fgLrB1woYWK5YwAAAABJRU5ErkJggg=="}},"time_used":21,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":21,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.tidio.co/widget-v4//notification-sound.mp3","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"media","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:18.226Z","timestamp":1785145638226,"http_version":"HTTP/2","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":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"GET /widget-v4//notification-sound.mp3 HTTP/1.1\r\nHost: code.tidio.co\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nRange: bytes=0-\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: audio\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nAccept-Encoding: identity\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 206 \r\ndate: Mon, 27 Jul 2026 09:47:18 GMT\r\ncontent-type: audio/mpeg\r\ncontent-length: 28255\r\nage: 7434\r\naccess-control-allow-origin: *\r\ncache-control: public, max-age=31536000, immutable\r\netag: \"6a670afb-6e5f\"\r\nlast-modified: Mon, 27 Jul 2026 07:38:35 GMT\r\nserver: cloudflare\r\ncontent-range: bytes 0-28254/28255\r\ncf-cache-status: HIT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Eg%2FyHlSJ0%2F8HQBUHXqguKjH25sfUEtrYEWpdDivzLkLs5aa4JH1kkDEVgwMFSUvskygZby4zCK5Zk6Nzc%2BcWP9mzPVStIQfrv%2BSQcez53UW7nPjzph%2B5IivQ9LY3qw0%3D\"}]}\r\ncf-ray: a21ab8ceeda3723c-OSL\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"206","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"]}],"data":{"size":28255,"size_decoded":28971,"mime_type":"audio/mpeg","magic":"Audio file with ID3 version 2.4.0, contains: MPEG ADTS, layer III, v1, 64 kbps, 44.1 kHz, Stereo","md5":"ed632238ac260d2ff13a5b319163ea80","sha1":"ec3d658a6b985654354abd43c1688d9d020f9eee","sha256":"b43cdddf1836f84ff2873a9716fc541205e42ab4ee6163495fc5d9fa11a475ea","sha512":"951d0ec7b29dad74312dd617d2b715863f417e64e29702535ba6e9fcf231a8dcc2f3de89d5abee1b51fe03f7d3209eae13c17ca04878d7634e3841714e2059d1","ssdeep":"768:N4mLXoawnNyci56NczRzQJhvEgmTKBm9zt1J85voWDmrpNxe:SooaE8B6CzRAhsBmBm9zt1JVlrpNxe","tlshash":"d4c2d0c724248328f92a0db47cb70aabc250bf6804b14be6e34e93015eeffc50f4955a","first_seen":"2025-04-16T11:16:17.238101Z","last_seen":"2026-07-29T05:11:58.488633Z","times_seen":7027,"resource_available":false,"data":"SUQzBAAAAAAAIlRTU0UAAAAOAAADTGF2ZjYxLjcuMTAwAAAAAAAAAAAAAAD/+1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJbmZvAAAADwAAAEMAAG4zAAUJDQ0RFBQYHBwgJCQnKysvMzM2Ojo+QkJGSUlNUVFVWVlcYGBkaGhsb29zd3d7f3+ChoaKjo6SlZWZnZ2hpKSorKywtLS3u7u/w8PHysrO0tLW2trd4eHl6ent8PD0+Pj8/wAAAABMYXZjNjEuMTkAAAAAAAAAAAAAAAAkBP0AAAAAAABuMzjlT6gAAAAAAAAAAAAAAAAAAAAA//uQZAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/3iaacjjqBjxM3/6V7fHEymmZUIG/+4kbMcQUYwTQf88mBpoQgapPPugCQSAsswMiEj7YEhwBl4OAYXGYAxD/8DH4hBMHADCgDBwMBEBP/xBMNIAJAIceAUDxTv/8QAEBBHhmJ8EJxk///w+ciQ4DYcwqC4CVIn///5fJ+RMoFQi//uSZECP8AAAaQAAAAgAAA0gAAABAAABpBQAACAAADSCgAAEh5M8Tf////5uRc+gomCoaLB8PgT////wQJggAeAsHAwKDwOUiA6xTwMupAkf8EUcAY5+DbMEQMAgF/hbwAoMOCyP/DBAjsaYgGUP/yoXC4xECn//m5PqQNFv/6QtR/9xjT//7kwAgAAAEAACAAAASGs4T6B4Oz2UYiJEdHOICixiq6x8eSAG4GDKBH5gE4EQYVYCtmBwABBgPwCKYAIAVEADWQgAxgDwAgRAERgAAC4AAC40D0AwAUEBxxsg4MBPkIiCNPBGpsCUSZqgMRU1jrfLMU3l9SItcV4t2me6S35lnbbv/PuW0+bf2Nw3hKc7V+1N1Zu3ZryuMduzFTG/yxzDVPhnnzeVi/rC3f7zW9f/OfeInBI5IESKEE+5S0YobWmxjOpStGz9+AAAAAGuKGmJjpgxAckrU7+CQPKAUJqdxixEqiY+LISQBiGNDNsgeo46n6UAAfMDnBfjBlRGQzw1KRNhgGuTEvA9UwlQItMCAAKTADwHYwIUBoMAWP/7kmT/gATVYziGeqAASwYlkcpQABiY2w2Z/IAArYhhyzZgAANwEAgDIAmy5J4DABrqouIauwNoloYfprYHC7gliw3lNZrMZ9hA6fNGXJx7renH91+79Z9Vn+q+N/G+YyjpAs5q7WrtVZ/Ten/p2q1f6dAHgAuQHBszxvDbS1NVHQwgWgEOTAgKS2bV40U11sNVJWeB1GkY6hVN4pUHHjhMVOVSHIq+gIBOuX4wMQbDAaFjMF7pU0BB+zR+DiXTNjiAG3rLIHTqp6zf9giR9ryf6lHqJYFwSNTHVaNw9j6Ho+PjHjMuCVJGNjpJU8m5v6b2K0f/d+1P/WYCQA5gogSmIcjgREJmFABu18pqCUSGHmvhdD50zg2F9M3zksJ2AAMVWcHiArgiR1HnxHuYpTBQAPow/MUnNRO7uzelSPEwYoHoMFWEajdVPP8rs4g7gw5GRySaaIRkICAEWhhCYMFBAREqGkrCYRrDhULNGa4IwS/rDC+ThvMPlDDdBEQz8FpUYyUBhUHnGHar7EsmfmM/SEfbAtbU2tsc+GL7Y80aNtn/+5Jk04TTvyRFF33gADSh2GLuJAAKPJ8i72ijwNSL4UHsFKjzebwfS+rvfqmqTZlhkrOFpwmq9V658gv+5q/t/2/RtNJPMjEMGEQODEOgnYya9MVQzDjcqjQCG5iBg5ZdV/B4vl6Tw8FTLhvbQIdL+7H+6mtT+dSl1q9yg7u73dAl1TiMAE3GphoHQwmQETPMSiOrVx0zA1EDJmILN+igFjm6hIWJAwzTzLAixkug2yAsOD4eoI0Xwmq1RMR7eP62NoZlqUQ7dEOC29SAoscJxe3VklvNUDhE/UuD48zCO7Nak962lxy9WFHzJbrvH9p1tzeo4OIUwmimTool6910P29FP7YxBSh629NwBTlwCxhoKTON+jigJDYQCaiNtQEWx5FjZ2NHeOm+9xWEwPzj+xU/0Cj/X+z/9P/UMBAA7TAYAzYweh5eMmDGDj9XBWQx2oGZMJJAQTA+AEgwTwE/AgDCMdHomFnwWUCgVLCxiFTntSoL1G3Cp3DEOAqNGGVOUSAk0zexRhYKCn5VJhGTGZFireq20SYswIEcROhirKIT//uSZPiIxJYvQYP8eXBA4ugQa/sAEOC/HO9thcDBBeMN3TxCcgmzpCtMCaMMZMwjFTl4jOoqKNSh6Kyi9ys89RvVNksrfWees25zrbUezkMyFdFe++2imqrdb9fqMLQyMVChNI0pP1KEPNioNLi3MnkNYvAJNFVKIxwqXK/UEpkl1a4EnZGjmTspikJt+TJmomJQghWz1DYWxy9QABSKpgLwGqOBChhV6AgYdodiGWso9ZgyYXIYAuB4hQCaMCxAlhYB3DeH0I80o8x6nJDi/IecB+xwz02pkKJf/OZglGKV5xFLC9NetC/f2rLLfMA8SloALVwWl3w7UOXCfMEJF5Q+kTvQLbFS2pLkexfluQw9JSNdVWenpOmj3TkLWKFZapi3qBmBgIcYKAUyb7THWANveUWIYOFKbwVyjYDHF0QRw0SJNMUupAfYKq3+CZavd3VEEwH4AuMdPOtjR2CKE/f1gUMg9CUTBzATwQgKJgLQPOYBEARCASYd4FHBuRI4IXYX1A8VH9LZVAyyeCnPbgDEhECdN3oZGmbKrDCEENaaef/7kmTyDJT4P0OD+WpwPqMIUHdJKhEs4xZv4OnAsojjZceM4Mu3CYH9G1f/R3BAgjA9HNwL46mUgaDY+x0UFGZMGkwxedmFiZ5wb3nhxIrk81udLGrKHJJ84+o8vL/MX1tzbnMhIyte+cnrKK+rfb/VrLoGA+CmYPxx5khhLm/eACRDnHoUCh30TkWmmUo1lnqyhbWoKz6krJA7aXbGBHxczWT8wO6v2gAFIGGBUgXxgmQJSYdKSgmUkEmJpshT0Yq6gWmchiEphdQASaxZhhovhciG76CAoUYMBi40y2g3GcJVPOpsv5YCCV9OxLBABFIqcy2LKNg4Jw9irjwJGnp4DuQ3CaJqDqUn+8afVYIuHXXZ4OVvBS0C/lshk2Z8N8d7r7osfEtFZNi/zAg/9scPnG9R/T7eRH3Rh+jL/E+21tb6jii6nFHSVCkTg8xAVHgAGjBWcw8czotBMNaIOMjI3fQGTDtxOJWNUkAOKmOKOmH2bmWdfus+lQAEIwH8CUMCKBgTAIU8sxlIeuNQiPNTUkJ540usS8MImBBTBGQHEwD/+5Jk5wyE7kFCg/pqcDYjCJB7KCoUrOkWb/HnwLEFpCmeCDAAA9MBDATDBfgGI5R8s4UGyQS5oCKJzNKpwhKVXJM8uColxZaY1agBSyjWmemkLUWWLOkOIsgnWyO9pOcmARmxv1aJFyyLM0ARp4wIyhHg+kojWBCpqaWhtrWaTEOAvdQ6VLjiPUqh2oXj8Z8+RC2Z5TQ8261H/Krcw+f9Z/1v5z1oes9ZVF7aK+tfZbemizZ7IAAEMk4NUAADcFGQfHRXB7gArNNDjNCJp8Nyx3CiE850op+awKCwP3R1ivWEzEAUYpB4BkMCVAazCRhuUxS8EqM7VAyDJvVFoyA4KsMFrA4T0KA2JeNTRzFC8yAUYDAD9odAcMshguByYbISciAZlSlQtwzJh8w0BSig7F6iEXmPNhnNAF1io2QCDHQp1qC3Hsml4LNzjRnKKa8lRvvPiePNVnB6r6iNrTJ7UckjjtMhffQIhbQx2u3PepDzje/0KnrNm7H9Uz30W6z184/pfP5Laq8ADA+hM4KOwxGGUzRwdeNig3xNBguflCDY//uSZNMIFc9nxBP6avArQglta4cWFP19G6/tp8CsCOWptilAKs2W3Uq/jMwu8XALhWQ2fdvoAABQUMBoAJwMDpmH2BJBla5NSYjkYnGaLwpZofgb6YSmBgGAjANxgC4D8YBYBNmA2g/R8yRhBYAHEAcGjAcXSIXeyYiIFiK+VkgAM2jxCyYHGp+1dMOUtzb8Pwkslb7Ys7xIFj8NUOVUhA2dYGA8wmiypOI8ZZOW6hHDdWs+Odp+kLYkHyILWufGKbzbGKm+dJnTIhHnGckCk3LfnvU3nfr3rNF84f1We+bP1Gt8qZaqytXUh3WWex9J+KABm8fWdAAApZUdA4wygs6vU4870LJe9vaSNTPRXyEYCIN87IFBMfQO+sYAFO4KgHpgBwF8YEoNcGGGhDRnTAqmZHgkhmO8gxJgqgn6ZD+NZmG7AaBg1gD0YIeBdnANpmqgYQRlyDFIA2oeMHK0Dh0KZCIA9WuUhQQXDPl/2azT8wEOgIXEXGppFLGjLPtiICVBgz2T2b1M+LX4GxzQSDFooECXIhJOnIhUHhVjTw7dUP/7kmS2CDXZZcQb+mryKiKKTQcnDZhtSRkv7WvAkAqp0PYcrx2R8mXUSHwEyePto3r6kzEjwIG6iEjOnD5ZVH8kGvXy/KCZxX8m6/+zY29sfqM/1Ojd4Tihyqf69CzicMwABb2dPEpYzpA+A7AMfqxmIIB2HwzFA8X/X5fNhYcF/bnoX4IEAAGAFANpgHAK0YJec3GBDkdhoSpA+ZgBB4Gb2iBxgpAwCbiVR/mhVCC56tzHSEiZYFZZkFA4wcEzFKkP4rcwoIzDIIDgalOIg+UDZkRgchBxMbEBAy1tPCjrzZl4cQ3pkrd5kWB1GOkAtvIBIQ84uM+xfAxRcNDKhokbiFjg9gpTK5MDnGCbwQgwzOdNBrJHQQBkFE2YrrDJhOrazhWTEKjbY3PdIMq+ubR9jEnG8TwrziyUKNSbcdJX9PIlv6ZLfaTD1ecN/5Zer5l/We38+/88oAAG6VtlbooaDTlK2HKy1fHMj216WQH+HvWKNOWu0ARgAIAkrCYP+RLGKYCZ5mppZ8ZvOu6GWGBZxg9ohQYfXV8GEfhsJhrYJEb/+5JkjoMWnGzDq/yidB4BqmQDDwOYoZ8Qr/JLwIsGK3zw4QYMcBcmdUEZEFpjEOBwlMVp08SrAMNBIIMXRmGQyRCZcpgcHkRIWQmQoUs21abIY5HNyu40NvGpZKRURDRLp2js3jWuwQQCiGt5GEWaoREAwi6cGwmaqWEpFFUueMjywb3Rkwd1i+EbpalG6Qfwkp29RiJwbZZpH8b1TeOee9cyG29LzAl/Xkjt6iW9WXm/Wbfsdf+Y/1o/zvkzADAYamYXAe8s5Xp081ypNUuqrD2omVnXo1jFl9y+t7n/YuoAAACCkxoFJBADRggADmLaJyaYAmZ1kBVmhPy6a/wwJg4CTnXD12ZuprhiuBxmGKHkYsRmMiBggSW2MEWTuDIx8SAzqj8OBqib3RssCoc2pGBRGXI6ctu0JihNnt+bFplthRYoQ7aT7B4Z1lIQEZlYZP0JKE8KcmQADoUnCbH2ifZYQFMd0ymapBiA+xf9xtfPx9Glb9RD/rmJCVesgL+hOljbywW/tK2rziP8st/Pf1v/MP6z/kupAAAaWh3dGAAA//uSZGCIFb5kRmvbmvAnQdrPJeZHlCWhH69hr4CaC2p8x5zmknhGCCz8jqECZC0hpv4Q9xXKGq7eCq+L6Saup/8WYhybjbarphQA0wbTKTIwIoMlFCkzxIpzN9D5JgHjjEObMwAeswJwVhQIMiBfIABy/zZQsAkYNwEYn8SG6iMiidTyRoKfHwKwronFTfXNfecdaYplv6XmN+zbHVufqSjF3/w5ftunjKiudHi/2HfgRpH6iLYUyyaovUVlS+tKbDo8+3Hz6VAbd/Hx/Vkrv5w//Mf6j/87/lv7HVbek39D+s8oAABCuy26BlBQlwGSo/iG/1IclkpuYGqfcWM9KZR6+gV/oXkMn0UAAEj5AcwB0A8MASAxTArBsMwD4MbMyVGzDF3EPQyLUHOMG8C0DNaVtAxUUD0P9bjehIlC2ujwMmCYKvH2qYQGhBM0lDcgBVmTYoIiSWpWMj48AuJV3oxwotcStbtMl/IgQlpi4FQh3wzApU2clwJUCtyWKA+zcaBsOkDUA1cWEsHmhEJlsslXTC+JXUUl9ATRtSz0jyEz6//7kmRMCJXgaETL+5pwMILaHWGHc5JFFx9PbkkAjYto9JeIPuOt/RnDXV5ke+0t/1H/5Qev1pfadfby19bLKmvqLKP2ndXrNGAANNbFIAABDMNDgGHE20yoVLguaL6pkwp6BLbCGF+GVR2TP8J2IhzNgBP/LyGc4jDItxpksEgFEAGZgZEtmH2J2azhBhk9u7GUAI8YJ45Jjw0emGIIsdAqhxsGHIQNIarmGRE1cgFhBWCD2KwW5mpaDHI0EhIUqozwGqnmGaOFwWacDOQRQXWFQLiSZwJcLFmJoOUxYCy91kKq8REaHUddQfw2u7Zwc9/XLJa3bkAf1VEnt6z389/n+nzvJ8t53t6va33U5BYgChISOy24YHVUVq4fX2R4pKiUJw3oNAmbl/qPIbOUMBaAWTAhwG4wcoUdMaPFxDA5S20yPVFNMtqCZzCgwQY1ApKkMV8FTzxLsM/Ng0CfjDAtMOgguKYALp1gnDQaMJAFniaTPSsKTYoDiYfNlYITAp557DRjwMOfdZzNWVLp+BR4iywagtpTQcwAfIOYmmYIjln/+5JkOggVp2hDA/yacCfium1h5x2X3aELL+6JwKyG5bGdvFChmBUSbEQWepB/QuIy6zp9AWIeJKoNmYhZ/PxuktW77DubXTnSLb+Spr68t6/Om33llv5bf86/8z/z/9b/0/8/1NAAZ+ZWwAADthSoSISUzXbUJI/3zKcoXa2JkRtma9A5BO3p/KnuS6wgLAAjAOADkwHUBSMHMCpDILwk00UEWcMYoZAzGjQ+Mwk4KKNaPOEDI/RFw959O3qQCUmBgzspVmEPR+luY6DlZOHCoNFWsERS+hIYDRNIyEYWdJJvsQFotvJQhlBDikwo9IwPGJAseDvAiFkHOGw5oGFIg6qT6zIrDmn0QEBWcd/TIaDgqHLJsdDRTGYnn2EanuiaRdkJO+sZX3Rc6NhreSqfryrr86afaUXr+XPqne3c1P+qsua/Om33mn9A4AAEBLBsyjoNrDNTlx0yZYVUFAQDlQYfGioINvuo2lqDp7Dt9rDH19bu3lkwBMAMBQBYYC4KWGFyhbZk6wk0Y0IOaGP6guhgLQWKZEkmJlA9CesHmBlJ//uSZBWNBH9GRAP7anA5Y+mtae1LkJ0nEi9pq9DXj2Xxt50elgqY2AFsYHBIwfmCkwAik/rWFGlW2CUefqcQRQ5At7KbARrP7jtyw/eK+hoD6ZiRJJTnQFkeKroD4ksCbPKFmkwNTajuShbU3UMG/rkUs28ZvqqLu/lZ/+Xv8s8jy/W7s6+v2dBAAEVchUIAAmmykh0LIwK4NKMDGCc5oK7aKliDAONDLmYO9bHlozszddm1SDH3sDc/238xfXXkjVpIAAFRGC8FlLDC3KoMq5GsyQc2DCmF0MI8Z40XP3DCFH/MR8HYwYAQTEogYHBQJWkGuzN0liJYvM7yskpmh0YxSo+zeQPW7cMSCuYVMrMowgMeBdeumm9azT1aHhtaJsygV1pv40C1611CyQnPWPn0pWe28vt/Lf6z/rzH+r/Oec6P9/b1gAAIQxaEA/YiJYDO6GRiVARLIjJI4AgZxKEnSh3q5DiGNl0+rRCBVxIF78bt/f+KC/8l1P/pAACIONgAEs6CQHjBBLuMOgBc1CxgDMLD7InbTACApNlVJEyFxv/7kmQSiRQCMEZT2opQNcPpXWkidBIBFw0PaklA0o+mMaYV1tD6XzEzkaS7SwrLlYRPqjG1mXLxep5+NyJgEcjbQXW0wt9aW2Kg6VBeIfAYj5EMJBI8ZAQgkzNNyNZYW9OxUW1YlRFeo60c8lqT9Rd+063K9bOnlvf2dfu7ejrAAAprqDrAAFLEhEFMqsPvXNZPBW8ACT7vTNll6teTBcqO5PSxCAlk7XcHTejH3k/328F/jekIAmAqAAYJwARislpGl4T+cWxaRgk93mU8KeYi4op6IZImpcP6cp8NpzGjGfp3JTjmQE7Sy406c1VJnxQLtMDKxUMJ3uLOITIDWrFpRaIEmK6FcNDAYiClmANUHYt2SQNmDTWlfdYiQk6XLJ5YhCbyn6Qtz9Scfy1V8mvqyW1eWH9eY6/Wbcu7s5DlPP8n0+4gACGSL5hDawBhxJzVBJWEjSip2MIY1sOy78PXM8FQhkncXMqZDkM6nSn+/9XxVuPDPTF/SgCEAEADwKAXDBWQ8ExCAJIMH0FnzGahJ8xjEFdMEWCpjFD0hYwvED//+5JkFAkUiUnDK/ySMDMjSaxpjWWQ4TsMD2mrgOONIyHcHRjNwn4ywdwUWggGkwGQNDhGcDChEHGVR9xjoOYmQh0LtSCQk+X3YzAwnK6yoKjFCApqhqGpfuwqYZQ+tSBSZINjdicXxrCpdZ1lDOG1FudJxvSkqeqfyV+ucXt5Y/zL+t/53zvIct7/6PcQADDZXtADstKgxBKDxBJAQJIFFjcsdf0cSGd2NVTGaoMlK+sWJAzk8ayi/b7TqH875zpMAMCIUB1ACfZi/Ccm7ybYYBuWxlijaGEMPybv/G5iIk1GIEEOYIYAxviJmwgKAhUEMXTRVnYIgN92XjSipyQrKaNvWpyLf6BIrD5ZdwdfqbTu+RCOZLnQCGPHVH+dBaEVl9a8iCK7nWkc9MLZwZP2kV6n8kH9qi3f0m/mv87/of5/yHX1+npAARIjgpkGDoqGORTBVMzNkYw5tQKFJx3EphCPB6W3zFWvSmaiY16duWbKMwgBI81vP/qW38df28nVAKXoADIAwFA/MGI0swtRezRiJYM3084zsAojELBjOH4m//uSZBCIhAVBRDPbgkA541k5bYVlkSEVCK9pqcDmjSTprizWYyphxzaTIzAQAI8jy0qAU+DoAseAnBrR6C2r4pKiHrCAKz6QC3kHOlkZZYaMG1mxSGGT66YWgiZoZuQRMjAx1CTSB9pKDf87WOS9/UV/tMT/8z+9Z/+d/z/X7/93Z0dQAGVlIeH3RkJGjA4kyMAx2HonnwNJogq5UaLtR2NYhmGIpaQr2EwGYXv26JhAFqP8QH9X///f09X+giQmAoA6YD4FRh0HfmZGVEZsiqZjs6JmZAQqYWhFx3w6mGlmLwadyaUcHPiYIrEyEgwGXrrDiR5xXLVRUZpntKA8lYc2a3h+Rgy2fvxdxU9ZZ8TH80xvOZwBUEt3JZjMFKdRBVxUFLuYuoIJKY+ZidP1ZgW1fJn2nT+3nn/Wafzvnejr870cv/konBZIDgpoZEZ8DJRcqURCNGzg1jEBYxsWbi5U5c2BE9VqqL5gczF8fv/+9R+q6/gWM53kv////p/2qgkAADAEmBOAkYdwVxmogVm4iDEaIie5oPgamCYMyZr3k//7kmQQjJPzPMKT22pwOgPZHXEnZBFNJwYvaavA041ilcwdEJjZBKHREZnIiY4IorIKw0l2A65OFpVLcUTY9gkouKbTvit//yAAjz4vUoJv5WjF0rGWjsCbF582HqomhKHjNN+IQj+zxjtV5WaerIn9Rd/nX28y6jvby3u7un3d3SAAAxFRrAAAMo6ODEwKIhgLmFmMYJAQME5iqlmCwgXpdpOmNRXSgbaaYWk/rByFH9tT50LAnX5It/LmCBQABwAYwekdjKNLFNDpLIyML6jL1FeMEkTo2vP0jAWItMRsJAwYAWTDjDGAw4MqAL7TJ1mmEQ2f6n+x+sQhqD2Qwu3/05jSUjzilBpq/rbKA3dxe1vVcQBZfr1nxzJjQDtQWR2eoIg29WJ5o+dHT1ZfPV/IT+86f28r+9T/zB/57qd2dvW7v6ekJIOVjMSDs0ONzyJmN5xoM6hiUVHoKoZaK4HczlyozIqWGxZQ1MY8qSU8OTL8n9qDNW8Tt0UwQQAyKA2GECn8YOxCxuWGsmquwcajwThgkAhnbm/aZkJYBq5WgQ7/+5JkE44EVEXBC9yaUDSDWQljZxuQ2ScED2ppUOcNo2W+lN7DQpDgEXRSuMFCkjACBydMWaaomrXeb9qEoUUhUnVQA8FJZRfKZGlJQTGGhJnCJjxmQIEESszkiiQ4EQz5gcSeoUMSD8zqHXpeskfVkNe3nSc+9E/X85/Uf/mXl/d28l1+7p6wAWmiQAMZoQaNsznCoK6ZjgaQCRzN8aiBLlXJF9/ko6XoIFnYricjMU6jgGN71L1LNxSX6zAQAhAIKxhQmJGMwPMbqJn5kl4jmWcL6YhYYJ2BOCmbIOOMED3lgEaQVdBVMEWD9R1C0S8WTM9VqulgDV9lVFJ8ngeorpmRiURiMERjSjUIUnVUQbHyEdzheHGoSMGx43LBLIo5Ax5eqhWOrPfJb7SMe/qJH7zA//R/z/87/n+t3PdHV7u3pAARIUJAjrGBVOAiMalDm6PZNXAAdBEFmGwFFYCJdtdh6d7KFWh47urREXOhfA+bHQtNvDg/3//v/qUQDAdAoMEoG0xnxCTMcMLM3FBY1WFlTVRBzMPQhI4FdnDJhBWO//uSZBKMxCpFwIvbimA9o0hQd8c2D8DhBE9tqUD4C2HN3BUYZLjkF8wsHJglay7TA1g7EZVyPAUpcV4VvZt61OVtFsyPmo6BhSzkVThgNmEFJeNw+/ECNnDpSSFpDMGqiQfWIij5+gOFlL86S3ryb284n95Sar5t/Uf/mHt6/dyXX/t6G5AACzJEPjG4TjnkZjTDejOEMDBwFDJES8MKgKswKwDgMCazeI3LJVACTTPF00arHQ+rNqAz0WJy2/ir39IyACYE4GRgXA9mEykeZJwgZvQCjGRVNgY/IpxgKC2mBvg2YmgdxvhOGdxkgWXaWFYUCRE5ccTpfy7D0oe7AgAqbUAbk9YsAFSgojl8aCDAORbxBjE2QdgEcWPdAbZcBdaUfIBb7VDe9/OlH+XN/UW/zN3Ocjy/W7s6et3Z29QIIoACPQWBMwXVcxyH80ORQz5nQ0QDIhBg4NUUxvFgLBL1UkPRevfKRS2tbyj4gGlL6BPeho0dTh7a339vLgAEHUaIBbDgATAZANMLgwsxNR3jE/KZM5Ul4aXkMI0Dw0KnHP/7kmQSCPQeVsJT2mpwN6NIYHeCLBFdFvwPbgmAz4phgdwdEDBuD1OmMAbwKiC/qxocJVIIFXGK5UTRL9RPZEiMKBwC93fgMFJpfnDksUapekAkmF4EmPVtYADJvdaRfiwFHPNqEGQ950mVv51v5v/n/6P+j/Of6H9Z7+/+f/nfX1+/pgVOsxAV8xdFo0wTk0tuM4cNzEoFPrSE0ELU4QsDnSlerJKAS6Viio8e91BA5z+oF/Xv4V9F3Z1GBgBGYNYERjxBSmjmJSdCJMBio+cmMUNKYNQXB1JxBmSOSUcMpn0jBkIOkMmi14wQ3I5Ev8lbGqcqgUIj4hC0oayxXfkXOwyLJEhwMS+L4d7ieQpoC7KJ7UDfj+qRJYlRHzhpuiI7JHXNKAtrLQ8f1+jjmaPrJf+Ut/Ub+vSar5j5LlevyPT1+7p6l2oBjDwVRZlzdsPzP6tTR8VTBYZDF9rDGcGwUoA1eeQZ8QLFuDYSTvBQyOu3CRvLrdwzytVUACRSBgBxgqHkGLuWiaaxNRqxC3GjmAqYIwb5szEumNsJ2aIoeRb/+5JkE4zkCUXAE9pqcDvDWEF3ZToQkST6D2mpwPYNIY3dFNqr1qTtM7CiA9wlhzO6kONybNXGAtPkqlbnsaFjRgxNNZkVSCmz5NwTi4UTM14BKn902iyEVOM+mHJKfrnCXrbzE/6sv7+st9eZ/1n/53/NvJct1u57kOt3P8mCDhREwIQIypU8w1O41C2A2vIARAYeazmznT/F2HJvwLTSYFEsX7jnU58SBCBAzUQB90VI0d/Cm6fd29AJAFMCgHIw41djGkJMODIiMyJ+sDAFG6MHYJg2k3WDC1CUJ55tUYCONZbsz0lyDJeFottQk7G02OLoc+bWnS6psGFmTDQ/Xk1u5IvJATnYi4xqpaAAVx+tE8SkfgX3KjyeoHgpanNpmF+ee8wLfXkRr+dLfVlz+tD+Yv/Pfzvnejr93/1hDaeXgYDlUAApODg+Mu6CNBBMBQTHygmIAyLFpmNX2iRscDD0GO4mOiTNqEvrtX4m7/6v/1///9/Z//+/1ABMAQBMRgbGHqNsZFRBhsllamo+ZiaiQP5higxmd8z+YTwEBiGJ//uSZBMM89w9PwvagmA74jhza4UajWDBBG91pcEKkZ/B7iiotPywUAv7EQqkA/tYFa0CvqlO0G4jtLKi7MOY5wyROJNgmTpwd6gjFaTRafWH4tqUaymIc5YW3HG3np0iDKbywl6smWt50t/z/+e8M8V6/Z0dHv7OvrAACc+ZSm8DYRqvRoNnm8+ycgEo8GjO4cBoAUtQ5SK9f+PKfM486PC2r8C6fhv+v/T/nu3o6nf29Se5HSQQAAoX+MAQB8wixtTE2GFMjcYgxEGITGMpzAgbDNHIhoE0tjB0H0K3Nk8YEYBhBBPzKLMaU7xxcOzyLWO1i4AbaTJGyx1hiaZsriDPrU8rKVT+SJ/06jX+cb15t5Plfd2dPW/t7Orz3Z1dcWXaYNIS5hWBymdmFoZDTaJ8NpmNAMdwbJi4Wl6RkNoA5ybsvGJBqV2bV6Jx4gR08kO5EGz80aReKe/Ep9bZf+VflABptAhzF7gUAphkupkgKJ1MMxwY8hqWEQ0JhizKoGHRWxChkM9yaLAEqrLDTz0NY7gqbtinJqJ4IUbrNTx0lv/7kmQfiMMFLEK7rGugPIK4Y3dnJo7JjwBvaUnBG5Ffwc80eIMRGopeJr7n5FQq+VP/N/897uT6up/JdHW/s7Ot3dyPX1gEFqfJjCAGzDkvzAEkzQ4tjTCDD7wIwwRO7KxIQUqbu+ueEFSLKXnvR7+pL7SryGHOnr/2/7/6v//o7/QCAAS8mCAgIjBYFRMJcXoxCx/TKndQMgQKwSB7MeJJYwOwRQU6AhlDR256AhEJEykDPbPSNTuF1lVHOt0ku/9VVCL2He3bfGNQd0XHPwybQ0yLxzfyYt5tR9v5Ut/Jv5V/TP/y/9f8/+r/yP/f+Qv+pP/l/5TySthgUPm8KuefjxkmB9mQq9UZEwaRglhBmNIMkQgTkIBYKBYVgdeEvErLCKaGYVVmb/Zp1jtdnoBKtTmWM5tdvO/es0387/oqAAHgEAaAgNjB+BOMYsFM0hQ5jNrYLMyIIUwVQGTMLQBIQvjXLTF2kcnGkDvhYkcYDIoPykDPXPsEISHKSNVveVBF0pss6fiyFpMkD+sP/zWiNmf6xpX6WRt/O/5r/Ou53iT/+5JkMQ7zczO/k9pqUEtD1+B7LUgOFOL6T2mpgTQT3wHsQSDrfznJ8o/nunq9/b0GAoAuYFYIBhSEbGPSLUZqIpJnmrvmd8D6YLIChjpgwGFeDYaEJ86IpP098LZSNEdjuVNUn8O0hBFIqqB/ekpTxnNK/mH2zW+t/fyABsWAgBBgHEUGDCL6Z+g8xonO6mTuG6YEwMhqREDGGsI2a1sMXR4M7MNMBIXxix8iWdjA8RU/xzlCKSrW5jqbS+t5nlFaCx+FB0jyXDYP65+YDJZR/y4f9Gov6Hlb+rNt/We/nPK+/n+3q93I9fU/+kcABAAHBg2mzGB6GyZG4ehnKU/mVmLWYJgLxl3F3mFsBeQWMTRYcg29K2BatqN8swRJ8a59hxlTnQ6RGjmzkaNis/5fb06n39b/z3o6qgAAZd5gDAaGCGT4YaArBnLF1mUtH4ZXYZBhUAGG0iXwYcYewcpmCAClsOufLQSHAsTR9dq+/lhj1KWAdftpuk1Tu5cB5LVNMxJaOgRZloNoDjbzkyHG5x/Gsl6WWNvO/5jt6j39Jv5///uQZDQP85U8vhPbilBG40fge6soDNS+/A9lSZFFE97B7qi4393R7uf5Hq6vZ1AIBYwGAAzCpEwBRXBmPCZGZ4o4e2kEZKB0bsxYZ5A8BiSFA1fddrjRlfQKAchNY3IIj48W0ElzeSg3WqOqzQOev/ovq07OlMUtcYDYlBhlAimqiI8Zu5axlPBMGEiGKZZBNZhRAsmwKYASmj9zkACqp/oPk4j3ve3Rvq6Ssvzv2KPm7iXefpQawRAkxVDeOP5sjBU6N4uLeuPd/Kt/KdR/kuj39nK9fs5Hp93I9alQAAFMG0VcxdCGDMcI1Ms2ZY4oQAxFAYwrywwXCUFAmYXBskhJ4o+y5wcQy2YAe+Ybg1LrxXrDYqDOVGQjnmsfJ4Ig1o7bBKTS2O0vzG/lvRUAAAN1IowBgBTBXBjMXQZ8yth3DAdW/MToLkCA4GGie4YYoDDNzNIHgoRGYIHFzwAlzevc9rGpPlFXPuyXG07HQWxc1qTioL06g+oiNqpSsem3uWerL38639bf0v62/n/63/nW/v/X/p/5/+d9/I9QYACH//uSZDmO431avxvZalBPhOfAewpKDazg9k9pqUE3kZ8J7LUoARmCINKYFoVxozgYmc+mSZsgKJg/gJmI6QyYKQIR2yc7QVQu7JCw0vFCZA+c22R88onZ27dS/UqCEbYxTFCsObeJLeud/Ii38n939IDhABQCA1MHMlMx3hjDXOKtNAApMzBwUzCcBJMY9pMwkgkDiDSoXBAVh0pddCQewayaG36bOi9J+J2OddiMvw1gr7IJKUUnBDC1YxZLWFTR1UaIeUPysjelWTdfnSz153/Pfzvu6Ov3dv+c5PlDAZUVAAzAEFFMJEUEwZhNDIqe3MecLUwPglDLCI4MDkIcMGMkMIDnZHdHAQ8BwodgakbFJ8Xp3m/su7XDyhTXI0iFDPeZfev/Otxb//1qAAAJmWqYC4EZgJEFmAaKIaHoiJirqAGgILGLYPHZlPGnRMmIIIBQAVhGcvs4JCBgFAGtA/ZCxrK+xrDKOX724biqa5QhiXWz6x4lvqqJffyKe/nP89/Z/5v/W385/t/v/T/rQ/nP9H+s/5rkOtpxgBgTkwTpgv/7kmQ7DvNqW76b3WlwTeTnoHsqSgxAwPYu+aeRS5FeQeypKIgqGfoA+aMTdBmSiAGEkBiaH5c5gQg+G+AaTpmCsWtS9BAC9XfidqXPVC7d6j00Sm66i4E0ohQljINJxZuI76dST+v0ywUEoXBkzKLw0Ld83Npo2HWc2MDYRh4Zo6BhidhEDIBYcDos+w/cRZcYDIADeZ8pk2p/CLQJcfCxjuBPqqOzsOwt5meS1BoQ1TtY9K28mnvXWT9/Ub/acflOt3JdPv/o/3/1mAYA+YCIFhhmIEDgdRlxhwmo+78ZuQYhhThNmm0JUYdwUpHcQqAQRd6mzRiooZJc05UDxF65FcrZ2YvY8xGEzNPFzyMEnMMtQFzzXqS7eSPrt5MAWTmAEAEYPIrhgqgwmtIFGYTSIZg0gxmC8C2Y8CvZhRAoHQCndGICV7Sxu0MhEh/rN6bT+tXVO5NeZXetp4CQzFZmQpODM5iUX4yx0epJU4OGtfmZ70c0ev5S/nPP9HX5zp6v/1gAgsbMxFAKMWVEMyhdNIxWM6e5NLB3C4EG/Z2GHYj/+5JkQg7DLS+9C9pqVExjV/N3BUaLmWz6TjTwkRQNH42OiDrFuSEDTrcmp7g1KrNUdYIj6nl+f0eo7+LtnBZWW9/b/v///rp1E+pO8DUo6PdoG90WeCMgGRYMd94ZyYOh5fC4cNXWQ4MPTCoMMRAuFSWptjCNsN2+4DVckWWOU++4U+kfMlQ06Fm1EJH3oE2nlW/j3+39P8z+n+z/x/+r/aPtX49/Ut/T/LdT+d5MAApzVFI1BMeynNQBvNqgGOGJFNowtMIA9NyJHMgA1LiBcDZuapZlsr7bwo8Y7o7hm6j+j+vxtH2clynv7er3//+N3V+6AGaBIAZgXCBGGqFOZ3pUxgjpqGAeD4YMwdBhfIyGIiDABEYKxJMw08cpXmNi3yge5cfeR6p6LJ0r+fdTKeHczTCMjhPFicbXAyTtqfQa5viqNPXF7U9F/lHc909T+z+v3dHX/s6jAHASMAYF8wa0hTGKD8MFwAkwvpDDJtDMMCMBQxe2ZjGLEvPDYOUbS7ZKl83jhqavA4kjhTwYfHsr7RcdYVYm1yzrMdBQHzX5//uSZFcP8ywvvIvaUmRSQ9dwe0dMDZDS7g9hSdEaDx6B3R0g4Dz+mODN/7uzoWiQgDGBkR0YDQIZlZDMmQeEuZNQChghhemebQuZHQixwibiI+pnNbmxzp94/DyOcuVF9WqdUrkOrNWftbiEesduZ09Bm6LZuR1soNRSzTySRhG6HeOh960JX/Qbfahb9Svi3V7ej/f0dfv7OtcJgaCZllHpqOHx7eoZw+ZhrgMRgWN52eMppWXh4IIwcYi0JirWmwkRSJ1ZZLXwkOdU5xoTbPAfMc+8bl9H1B4/TKOTu6euAAABWVtC4FDiaGRgNG9JZmJtGmNAWmFIqGcshcYQQaJgZgKNxSuXa7UtpCYDmL3pFDUy92bCQ3FBpdlEwAKqqKRjhGpzcRjvSVM19i38p1u5Dq93Z/u7Oj/Z0dXu6FLQcExlwgBrikZoe1hghf5l0B4YNZ8lxpnIQY4ANRqDU/aFpBGQ3SPwm1TyG5ACHFx+5QVhEclEZQqXr6DX7yh9fk36egEuIVEwFBhHiLGP0JWYFI9hjrETmOeCOYUARBtqgv/7kmRgjuLwJz4bvjnQRURnoHcnSAzwjPBvZglA+Y0fzc6U4nGQyKQck8FpaqZM5f4sEHK63Vl0jpYYb7KErju0ctvuibAMzTSmfYmiTeXOiQw9qZOYjv0vLDe7n+Q5d2pvIdPV5Dp6vPdPV7OkS7QWMAQGyyGTvw1NmFwaRRhIRGuswGMYHMsWba5aqqyIk0dPe2NZhIUqvgvpkf+LdXnP//F/62f/d/+v//TVAABjAFAIMBQC0wyRvzJ2DINJYGowdjmDGBAuMIkNc2DHazIcCzY6LAYsGOvflIhEzgwZbjoRe7AVJgk41Kq6NLP8wm0He93qvOe3eFZuGG0A8W+bMFGvlH9ain+h38o7nen3d3T1u5zp6/Z2daSoIAiMIsWQw7BLjCBD7MTcp4wjgPTA/BBMfJWEwAACziLHjkDJHCciqsY4IeRmTXECXPD+RoQfflBb9vUiAoX6b/rO7e/kwDBQBpgbgLGOEOyY2Q2hmckZmS+a+YY4D5gghwGfLOwYRIFp6SwyPDDzBX2cEdgmkVW1GHmmm7NWvLSo6livIlr/+5Jkeo7zaS+7k9s6dEcjR5B7K0QNuLDsT2mpQTwRncHtNSiUAXqjRpnB5HpMTVDWJunpqVIg49K+SR/15o9XrPd5Dq63cl0+/t//dyvV7OgskYFAD5jOlqgIfUz+QwjF3ZXMTEEkwHQojEAb4MSkGMBZi7JMmTVW8z9E4jNSlw6PGSX/jM7g8FjrsVDnS0B8NYVzrV8f36mnUqvUefeTAABoqYA4HhhPjZGHEJ6ZtJBBkBAnGKmCEYLwP5gmuEmGyD4c5qACxiBKAJTWCi3J+BbXpTaoYbatbdjebO6fvcrhfXH7+tUnyljni4v0AtFPQmlBKqvmDvvQi/oT+Q5f3dvR//9/Z0gAAPgAEBAQAsmEodSYTorJjuDBGXAdwY74GBgpBEmaKo2YIoaB9Kp7mQG15xX8HRQFE/LsyO+I8wbkWB+WsiAZseJnhGXnepJ+i1/yb9v/7f/0AAwwBAIwOB8yhQk08Pc/4S405iAwGDoxVDM4SqI1CFM+UiWtRp/2vUZIYKovu82tsZltxWaEZMso9oLcBzJWSjxkwUaz/OCf//uSZIEO8z0sOxPaUnBShGeDeydGDCSe7G7lqUFFjx1B7S0gG3UuVD1sr3I/87Xib3c5/X7+jq938v/kOgOAFIgWzFmE7MtUL4z1g8zM/VaMmILwBCNG18dAYiwnp4SQQxQRNFnG7FQeTFZG6r3QJDM9dTvK2gizTVSAABr6dUiiQ1qz/IgL/i9M87I8n0IAAAGaJFQDzAJvTB46DBGIzDKOzD0aQASRkBEhoSE4VCBDSY1E/T8srDamCRzVadv3n/fK47276w9ALm3YjLxKE3fwui3Qy4tUbyw7/Z/5b3d/T7+7o5f38j0e7+n3mBABmYGoQhhrHTGW+NAZlpL5k4ugmMIJ+DBGjdHQCMjcXI6AsxbZNJaEGzY4NQnxR2IGn2YSi0wFt68Xr595BjJu7vO5QTEXoKJoCwo09h/p6QDhgwAQBTB6CRMNsSQwQyWjDcD0MN0BowKgszSnOXCgWB5lYoZBQ1oSsMwOlTDDngkMcnWMSzSnc72xZ1buR1KzW2ichGh8qe+oEyPTUY/Q0v/HvI9bu7p6v///6TAYSBANjP/7kmSJjuLxK7ubuVJQUePnQHtCTAugnu5PaOmBSg9die0dMBtMuMBogE0LQVTN6IHMh0BwwFQ6zF2gfMfwEE8xEhPlnY2v1/BkqIgyqkVuXFOmgap3nzpafLKtbl2s6rQBAYqz1KhtumUryHW/nP66AAADca6IwAY0gxsOCGIrKaFwxowYGNwOagwbph8BqmBKAIhyUOlNJUR1DgaYGdGw+YeHOZhcqec5oBKTjVNYDg/V9T3/H1/Q9/1K+Z6/f/T/o6vd2dAABTAqYxbUxVLAzQSE1qU4xp6wwOFgQhsYyCBRgCA3gYF4SAFlEZqWE7SICg8FrMNw5xEGb+aHd1xsW5P3aj/T1v/s/////+n9y3+ykRbkwBCQZfgxDFAJpo2P7EREaYXJUbDbVBjxhiF2zAUADVfHIVAd4GAD0jhxmMMJzvrbt8kNPfs1ZIqzHZxdR1Quw3nsdlRKO2pHpN/Qv+hB4f9/d29fu/rT6MBgAkwwSRTIID8NcYf0zjVFzKoCLCoHBsNrfmLSLMdByAVDSlAnBfteovFRmaLYlKdsC2n/+5JkmI7Crye8G545wEyix7N3xzaLGJ7qLvlH0UYRnQHtNShgr+4ImuzFAbD12QPrD6Z2vUVjZ9piu/y1+GemAABy6QcBYYS4uxjPCvmHQPAZeAdpkDgTGAUH2Z21MoQX6f4qHiggKms8NghFgqlGIBtw7Dj37eR88ZdTX+8fB8a27VrCm7Dqn/HTHoVIFt6wUGKv0IF/zy/+W8jy/W7s/r9n//s6wAC7dnQXADnEZ8OXsU2tyzOIdGQaecDplgVpqL3n/tbbAhacTyvEGr6AvpiA/3dn9Xo7ffzn+3/Ut7jDsAr6K9yN36wC4SABGAoBYYBAVZjtAomRkJaZYpBBkagEgEHIxlHljAKCpOeOAhdCUumAnYKpEzwB0Gu00PLIl9RMrDkxNZugUB0fmHlovBJC7eC33STX9Cj/q39i3V7O3p9/b19T/6Or2dCPAFASMPgDMw0RFzMLJEMoJZAwdwVjAWAAMv0bAwQASjhAOod7IRXj5UKTNeK1uvLqPBnwQ9R/0sfj6tJ3Ez+zl/O8lQAAAVGZGB4WGBrJGfxfGEQ9//uSZLEO0zIsOZPaOnBDgtfTM4UMjGSu6G9o6UEPCx2B7KUgnCRvm3oOGBQIGZel2YZ4UhgVAKgYCRkq5nZYMxESCNX9Vv3mtTll05NZh6p2pEItLzGhNJpKvKD5+uQjtPQif3//u/o//V/+n/b/UglMBkHYwJEwDAfEvNGwS41wShjNcAcMEkDczjAsDB3BRM6c69F0SRp7ESF5PiTKrZy6QSKyzNoNyGf26HEbrOH5KoBpef8Lfps8/yhP5MEqOUj6ZZFZqIIGuSEZp0BoUfGES2eGLRtQdpOAEFzVLFoBVkQCuKv8a+9YzCa1pGET87KmX+Ib+QGLy3u5Hr9/b1e7+j39vE3+Q4l4jFQETA6BWMcMzYy2CVjLYOTM+C+MxRxUTAwBONNVIUw9gnAgwhFA2bYWvIhFjRA2HlhoRFFHotbZi6uUPdxY8SwbnWWEk5ANY8fi8Q3cqWmHU9B3wh1KAAATcaUQASI0hMKBPBRBEwTjQCmBwtGEECGR4Qj0gQRk8C0cxIiMZUbLEkvAnQH6cQt4/j5b9R/wLyju/p/znf/7kmTHjvLlIrobvlHgTqRnMHsqSgmweu5uMU5RVpGcQeypKL19TuHOn3/ylVft7eVAKb23f5aJlcpyBBpkOGgqMZlBSuDaCSFQa40GihZUGHu0/K0bevr13/7u76dzNPcy//7NHZZMo7AXZNSdihdizYS0BgNgGmLoTOZWJg5hVjpmA2g8ZAwnBg3F0nW7P6ZixGR5JIUUiWQMVBB1MIE0TTtItC052LiEBVkSzJPGW6SqUX6UdDpNXsa04+vaixVPYFrnw4kACF/2msqUheG3+mdMv4+Sb3/+e5Z2g729XV7f9/9AAAEuA4AgAQTzC4P/MTEs0yUwGDU9M0MngGIwcRrjPNCoMqEOAx0cwCp6WkNfbwUaBhulvvI978tn2uUE/Jaa6xsO0Ay4pm95JI+kzvK21/V5lRbEvL+7+n/o7unQEMdbeLaqMAwAEwYQCjHgEwMz1V0wpDwjG1ppMmQOUxJQPjwycHMpYi8482NHDDKwJMVdSySEUQrTFj7cUKHSpriLbf0sJfapL/TbTBovrRveWLDreiZ7XKgVfLHqYCj/+5Jk3w7Cahq7m7g6JEDht/NrihaOcK7aL2lpwYuPXE3tLSBNlbqLW9I5figADEskGAPGEKSIYgwfxEg2ZRajhhHA0DIHhtlMhGEMJedMUTPEbkcWaLCkmEFrS5QUAwO7AqRdmXKXOZWgW3o+WAmlc4cTRJisRmXWSOuyxdE963kUVdDnTXx3T/u//Z///oAKd//hFA4pMbOeAQFQkSmgod3kAIynod3gg/zPb1+7n+z+ojz2wBeLtpuo09Tu+y1FrKk/tR+0oGvGAMAWYWIbJieA0mN6BGZNa8IJB7MC4Og2vyMTGZEaMUTMmILpuI5LchiiGQXtXS5zkqMN/ighgXJxqXtqui6/VLNIy8k4OjZnoC4X6tWPNreVnv5q/m/99n/+2gBBQCMYCkANGEfgzhiGAfAYeoFTmNiFRhiwIJgYCiExmfkKg5h4QMmf8hmgp5nxOYiBLpAICCGEzkPe8UAEck1gKOTr8BUMZfSpmslb+EVBwPQ1j0qmZ944EtIVybxMxqSW4aBOE0jjUoKQWS+Z8wJT02YvoVN1n34T5b////uSROuM4w8nNoPbOnBipGcCe1BKhugjAmZsQRF3E1wJ7TUy///09IAAIEYAAZFAaDDFPiMUQqIw/SUTSfSuAR/BgigcmBsxmVgemMGmbFF3L0taMS1BaWnSut7YylrfvxKBsIbjvfzYw6l7f349f0tCQba2BotM2XFx/4mJ/yP+/////Wrfu6fWYAAAZgrhQmEagSZHhPBrujdm2i0wYuQD5h8huG03igY+QIJ8poIiUyMOAAODg5NULn4RDMNQwcdqZfeUyxQ158Gntwi1FfTbU/Vr2bF7HNTSTeLCs5oViV3TVAL3meUHPOJyfUptUHjIgo9GvP0WzPbD9MNFhMw6QxTABBGMDA74wXQC0rFpjwC76w/XHQJiYC5y2v7rPBI+rYMi53mhWES93I2hLFH5Ul6Pf39nR1//+yzvnb/sR3f6agAA6BgSAMBARTAoJ9LA1piBisGeohYYoYNBWA4YfxVosMMeql6CzrUpashbA95BFD0QkoNAuPGCh3/qGx+7y35QnZiZEO4o5+/u5H39ez/////39Po1bgAMAwGgY//7kmT9j+QJK7SL+2pwYcTW83tHTgyQjNYPbUnBV40cjb8oeAQD0YezbhkgCbGU6USaCMA5mZBymByBgZbiHBjHgQmOag2wW+UeQhg8Ymj2BT7dYrKkycZMkpC9XpVWxxYzHcv2j1CgC7rNXvvEIa6+leR4dz/2W9Lu//DKjAKsIYBoDJiCC/mK6J6aXQkhq1nsGTQDsYUYa5ljhhmJ0DAg6egAUMbdjqIYwkRLMNZlSRdDtR8yfiaXXu+48Co3pLBY6VPUm/KM9J2XWyp9V/FP98ar/////otUz1+RAYokAsBglDJBGGM24REzSwvjQITdMo0H0wMACzNTYZMKQHIhcMDdabVIHjA5KFAYowHF7XYl3GNlzDc3U2BWPUzEKncKqabPnxEEHf/cm/u/1Tmwr7////9Kf/9aNVMIbtzVufVMQU1FMBYC8wIwhDDKMuMaEqwyND3TOkpfMJIUMwUgljZwMeMEMUEyo46YsIvEQWcLiDLgMhrHXW6scL38uw83krhqX2u1Wwxjep4RjCgKD4yfqPDTuKWUceRflCFdyNj/+5JE7Y7iuBc5G9hiIF9EVtJ7S0wL+Hjeb2TpQZGRW43srSAAAAkpgJgTGBAECYQqFpkADGmNMMYYEjHhijhRGAQC8aCC8RhVhQgO4HRpw0ikrRUZFjq8HT19+rlthV/GXbyTUGMPLqnie6JFPUfGYlvbKD/se6ev///7L+v+5Cu3VttXr+ogKUgku5gVRLwDwRntA0CTLPKMEm4NEjN7zjTUWoxP1vdtq+KjLAip1Tv//3x/Uqnu9PX/Y/eLWUXoA8qADGBWC2Y1iK5hUi8GkAMyZ8ppZj7AAmCSAebrLx4FFSC9ptYOk/UuwGNQNI9TyQPBajtujXzUpYcs37WJYDeTWtY2MsGAWNl2TCwz51AfvO9yOu7p/////+//df0qTEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgAA4GgAGAYA2YfITBjhDWmBySMasYvBk2BlGEOUSefzJxmDG8EaYHEACEAYCllwyYAPT9ItIbKW05ZJzI2sSKzETnZ6fjpVAa9s//uSRO0I4t8iNgPaOmBjJFbzey1KB0AnAu0kCLF9kZsJ7J04ZhFMvKMgdhtNTG6IdylXp1EBKf8f7sQ3y/////9tlPr//mgAACBTeH/ZFQMHGTjCX0zyNrbdD+XEyTB9eNDHJqYuv28jynX7+T///pajYxgKqJavkdt6a7iNqfwOxv1jBQAmK5ua0AZtUQpsJzJj6HJhYFh4QlpgYPKdSW6XcCwNBRKGCrIEa3FZ1RXtpu7RsddAoQ3OrKsgX7achL/yd+G+nlf//jN+q+USboWoXN/rVva4s0xi7dqqQgAqW2uyjMKxRgMof+ymZ3w0CJlHY3iFAxA01Y3e5BstF1G5STE4P2dnL+7+R6er269e2W7Uus1L9baTVKVpzadHRUxBTUUzLjEwMFUAy5xgGAQmFySGYSAO5rejZGCIgMYeYIQUCnMPV9owbQSAsJAogMGvcy1jINjKndJCfk1YQAnOnlbqT2rRu727GSIHSUMl5SazWJO6FxM2Dg7RbuVCo81+pfk26n/////+jN1af//qAEQgDGAKCmY2CFZkXm/HHf/7kkTkDoNmIrYT3GnwOiEoCjNFBouseuRudUPBCYieXb4I2sWaa1nbxi4iOGEoG8fvJYZiJknGTgwKHDLg9Id+k9RnUB0qmGYCCxeQhQOXs/afL5xF0Gc/jNrIRirTLJC6NjMIAlk0UDVllQVaVVNBZED62suNQ/rvWYf/s/9v////Ev/Wy6AQQCg3Kz1kFoFjGQAdWnRA5hkyjTTQdHKHEzz8G8L1Hlpt7Oj3/2f/+l1idTfajium2n/Wn+9RgmAlmEWEAY3RzxmQoVGpiUacFZJZoqBdmI+HudoxL5jECnmfJpl5EKDCc7yygCyhaEhAE+nuh5H6BJEoex665M1hyOIuL2s71effU0gJk3SLuyAoDrSOog1Wqvio79ha39AAEqEABJgEgVmDAZ0BjZTHZBkMpZa0w+QqTAoAQNPtLgwewUjPQ3pHpLCsfjIjUGwfheVajZDnPsaF906bIh+GHSpLPUw3j60/HxD0FqKb/mHr6Tn//9CifFne2z7tHsoydvrAIGgMGBeECYsyspkJhAnTURuZgfNBsYA4GAcLSaz/+5Jk+ojzOCK1C9pSdHNE1oF7cEwG7DT7TOxksYkTmkHtnTiT1hhRgqnAXnxNFc4DGk+S9wM4j2UeFo0r2WMOg1vU0Tf+kTEpL87G4o/eFy7efuxebS3Nl39KFH5dPE6wZfHY+/iuR3Wnv+3///9fuv/9JgmguGEwFeZuq85qMEsmdAQQZ11MRlFiEGEsGicMjE5ihiEhRiLMzIAXLl6sylRTxQnJpuq+aExx5Ula1OtEKO7e4n81rn42n2ymUsKPZLKRoBEFjKpGylD4hPXzY83eswUrDTtIACcApiEmrAYVAUhiejNGDCMWZC7L5isBHmA6DAYWpxIcE625xcBnRSD1bSBbTZqAMqJulrKlzqRn9fqg5//yzz7V/d/RtKKdUyn7f9P/////q/9TfXVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQABYVAmMCMMMxcn5TAVBiMywJM1ixhjLYA+MNsQU3mQqjC8FcLcnIfFwFZVuNzvD6laDRY3KFjUPQSCge5L5m7YySUn/3nfr8rO3PeWNSwX//uSRP+OwxoitpPYakRtJNaBe0hODKic0A9pqcFXC5wNn2AYQFtdUQZt+Qkv8t1///+j/+7u71a0gAACyo2jIQGB0bGP5CC8JnwBXG2oCmEwEmHPWGHIEg5BkSpTUk7hJOjQ39lU5bAnuNjkC31Fz9h9UgL31sqnWbP///6/p7v/38xv/1HMBoBkwSQKDIMDZMvcYIyfRxTKubhMHMKkwigmDh+JWMScVUDJBfkefa7AsmmQeS40NT8CspldErylsvnQ9NWCcVdaBddQsx6a2yySD9BlkSf8zdz/u//9/9X/4+yv6EhBSbYcysGDcZy4BJjY5xlDPjFoNmgB5Hq9pi4XurPbqJnt2pe+XMa/Z/3H23//9NjNDtPHdiz9K9NYsgEMCYDkwPwmjB2bmMkMx84wzRzHWmiMccIgwKgoz3tWBMLQmpO03c4zQtTKOPqMhQUEX03RTp7UXm/mS/UHRmBH3tTlMMgn8/tzOJXqBn9vZxjVhOFL54hQgjX+RV6LfZ39//U7rfNzjdvt/0dPT+kAABpwDCPXzDRHpMeoLsztAv/7kkTnDoMpJrST2lJwTILXA3cKRgwAiNQvZglQ7ASfXZ2kVrTD6adMFIKMwXxlDItKcMfQQk3coMDGrDIYw4wRMUHX1ZYCZxTLPp5uHtVXUxtY0sFM0y5cwmuUD+a1e/X/DFnPEHvlX8/2/o///R+zp9thdXanX1sekwAwAjAiAkMas7AxzlSTeLRONS0sMyEAXDCNBRPJA6Aw4B5TLhztEyQJHpyGh06HTBIJCG5L/frdKgo6mEzIO0XIaUjb1QSfOzdYNB/kpVWUGTGVTlxbNu+5xf+S+HP/b//rIkiXwUB0wWi8xEMQ0CLU5I5wz3DgwOHE6ptox5DgflUHCAXmZq+YgaK42JsDikbSFjfHNNQekVjglhCpySqlBBmbaCsSP+N/5T/d///6V+r+tv2/ulF9dTAHAYAANJgjncmEQYWaUQmBlYkrmLgCaYFARhp6p4mFCFUEGxGaXdBDqrUHYCXTLUOsLSCEIaL1EK3kwbaH7E7GSQPOS6uguTJRD8+Tc2raD839uzEqu2R/Cz8S8t7v///6/cYGoFRg6AwmOiL/+5JE/47jgCKzi9pCcGeDRsNj2gYMUJzQD2lJwV2RG43cqSCKZwh3JzIDjG3krCZfoWphTBoHeioQYbIrR0XRrSoGVtBTybGK/xdajkX0ikbEAekuNBim4o/36jSHaavVrl+Db9xNWD9u7mnAQCdubQSy6fET/J+1X+qCjADATMQov8xzQfjUwGBMrJgE3nJUwaJU940oy4CEMJUxFCdsbKoyvYRhsgY/zYmXyolAWnxVgPCVUF9tqMEJX4lbTs8tBi7pGl/swrdMY3X6MWqMHNqOv3f////3t6QPAoAQIAxBpfphlDkGjgOSYi7WBgIBTBYLc2ejKTBSClMsLLOBi1j0pqDksrTMyisI9RSm239nU5S/+LxPlnlrUxl1i9HtOwWd+lS/8e8n/////5j+ipR9n9ozv2IVAC/zMHNmQidU2vgI7rm89tx81zJ0dGw+hMcxSBYFB0jSXibVobYyEEQ4BXUkFPLA+Ti9bJajvK64h6fNL9f6j1VN53ku3+7/t6+3/7qadPH8mU+lwAQC2NtqZ3BWQqM3AQ3HYOdQ6cpe//uSZPWP4xsitAPaWmBgpOaAe0dOC/h6zg915YF2EVrJ7R043UtI7BYIMRPo09Pv1P7f/+eVpx5bpYR1H7F7FMKLe9gv/oYKKWj9ZRai4JgDgoGDIhYYuYiprhkKG+0H0Zr4QxhPBtmd8sgYmoH5zCZxDqAlvlYy5hVftmf9GSko0Vp22+o8iKGxv2eNBPdwuOjgEEusjLflDP9vJ4eivTdpf6un1biSstGVpNV6sodGJizVrU4UNIjOLDExqXGBiBkYOgc5k01VmJGUsaQRdpwSt7GeUFMYXIM5yFq6GDkLUYyEjYCEAisoQGMfALAGTiOAXA4ZYgiFPwyFAKN08pkcouXFtKjywoakLwgtCVJsiFhlYYA3PwT6SDZ712XeCQ7ibfWvFX/akP2rbXtbpWvqOpqrxmsvu9k0/H3K4/TWTEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAAQDkc0OAcyWFMzRMczJIQ4ZYozOCgMDc1u6MiRR1iIHlCu1Qf4a4P/7kkTzjoKjGbYTPVhwPOEXx2NHFI5MeNBPaWkCCRWZAe2tOHlCoepS65obt4LJXFgoGm5+RMX4m++Wo2biX///+3+5CeRo9/1it3eu9ygAAMFALGBIAkYvpdhkmC8mYINYZtbthhrBhGBuBiZw5yphiA4E1idA9R422XOMbGvyuYkMiAq5coYOhhFtDHck5wNGZbwudllv4b6f///////1b55kY3vSKBNsUW1YKIKgqKVmBhk+vN3jJZhzaHJPmFy6xN1T5Sf4MbhHdU7//jr9llv/+r69ZJqWa49uqnYYUAC3BJDyQpmNucAZGwiyZJ65jQIohG/ocYBC5wTCZGGCKMpRnStXt6Ov3cRdOz+kaMZu6v/79cZ/tMM7/ev11QAhJsDbdsFzkcAVKZ0BMuFADshULJjFi9Hbbvq03dHT1////1uqVvG0v6ch2tj2C0VRJ1rzpMz3OAATclTSIQpMfMpMTU0N5xJPeJCNiQnMajMO97HMRx8Zi/qbrRGWvmShGthm16wtt5PPOXitg8j5X11JLWB99NyMjzHU3/9fYzX/+5Bk0wzClh62m686wFkjNrJ7B0YHGCTybOzCkPoF3U2+LFL3UfZ63cksoIXpVefSzVUOAcwBwAjAaBrMKkrsxjAkDUgKEM41C4xiANjCpE0MxN9EyDAUDtUIxQzBokv1ayCUSBCieSVHQVVFK4AAltyQwGkVVk0ekluuX2RJqSrCtGcqRqNJ69OlwPFkX0tqAm1FX9mR6mkRMlUrt10Wbqsst6kzzVVSNDBe6zNC+o1e9bgIcvn5ZAXMDoA0wpQMjK0F1NN0No6txHTgPn4M3YQgxDRhDtoKDMS4d87sGNmHDBBCKs0SRMQDBNXMOBxULrP6ABimjMgQ+VRIXrLGaYNWR82RnCj0DJF8kCu+JAzavnMSskPVs13XxNpdEaiRVYviqyjuu29kK614p9bUW2sQvQvI2TDH2jbUg2sAggSSMuEZHR8ujxiCuJMIBUvMcPmRgcCZRaBsO5MYVqBy7wLzFf4//PVy/LO7+z////RajDitTdq3D196dbeugvSv0DgABotUCAOzArPnMQ4toztCQzDEScMG0EACAGmxYgj/+5Jk/4jBxgk+OyYaBFlCtsN3C0QQyIrKL21pwg8RWQHtvSAYModpE9G5FG6+dAQhI6LwooJahBcqAYaQWjvUuXDDtE4y5EFxTmeRX/8bj9G//f//+935XJ3n32Ksf0oXbrVDztqUYjAKAiMGU4gwFglTO2EGNeJX4y0QRAMLabhT/JgkBahEEYDmSEq3MHYiWOQHHSBGZvmKhAWNyBFp+rkmmLVqSkgmQ37J88OGVgTI9RLrToqjxdKzKKyYfu2x1zkFxnZzD7spK8x39FC/pij7fzGmhW0U1Xobrbbhb0OCszKVc1DZ49DLs3ZUEzCCcwPC4/dlExnIgOOLAiV21VQ7lIBYQi26DcgcTIu9SL1vhK01upPz3Z071DUOW6ti8V2EkVcj0xSvso9GUfj0S0y9kleLrUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAGtCox4eN1wjhto0AHk8fyo0UEgxPAo+L5wwQFADBMTBQuSWxqDBkMl3P6yq5i//uSRPCM4iYRuhs8MNRgw8aCewtGDsiIyg9pqYFoDVrN3B0QsFy8wQ2SJdWoTUhqU7E52FE8tNXJp/fyi7X7v/V/1ltkJEf+6ulfe/PMMCRL8n6gu4AASLgmA2BAYWxPxjFiUmjiFcYyxVpgRBYGDgCmaZRbBgUhDgYDD2Xxe9BQ48Xqy6kjE7dSQM0WIvtri0Ku4+g27Nr/pP/v3Vs4jDnT1///8W///430Kp31rrqQEAJSSSuw4d+gdEbeSmIfaIM0cssg4DLIzV5XguiBuSTH7+/p2ivX+q69K/7Pvw9TObv7b/WYUwgNUvGs6UlJTAAU7UC/gosx4CKkATEk0ZqUuQDD23GjGL0bdm+rz////////Z7PXq00rHOrUwatSgHLIgkAIw5B0DE3CfMrIF4w/0AzDYAHJAjTGfP8MHgFYwkwDQ1tlTJVwu+qFq1el9ZknlqlEtmH7xz7hXY/3bqJblhwxH/MBn+2vFrx/QmgezUnUn/+dQl9TrFp4c3jbloFELxRXmtHTUACNBgBICBiMYggoylRMTNnIMM45zgxxf/7kkTWiIMCHjSTfWjwW6PWgnsJRge4JOrtbYKQxwRe3Y2UVgmjBAANNEMq8wRglAaEZRpEq2Jz1NiXCBEJMRkEQ6cCnXLFf/bqp+X0n6PXz1emWUe4UU6Uf2f2M//K//Lrsc0ee/a1VGaR/W9VcEBUZEwQYVIAbLFacZSsYrgmYhEwfFSmYtlScIx/IrkgyFPcVQXlbPM9uLDYYPjILrfZ51rFepOTKzE8pfURDbz1Rd8tfRZ/6Z2jZzz6UO7Mg6yk1mf7XUq9FFIAAZFQjDBfZoML8ak0VhxDdTG8M1AFowdwGDZoSCMEENcZHjiBI7iUadI7EJgMIQyl9Guya5A8O3IzU25whheGvSe5oa08/3UmBDX+7htRVfaWq7u1rZ101k9fNsXVV/a3Z1Xb+7+xL1kKTF1AoAkwuQmTCcEaMnEOEzPxsjFgA6MI0PM25TIjDLCoDDz7RIg13rPYSQlua6DXJiWp6/tlUIjraaz3CgDVOVaS9MgjsHHdUVc/NxBfzUR6B/dclKPdxyn//6Pucj7y1fjNdNN++sFANmCgB0b/+5Jk/47jSyAzC9lCYGADRoJ7LEQLsHrOLuWpQaaRGUHtLSg6pVhl7D/GkISKaOk3ZixiQmEwLka45yZgEilBoQFNkK0iHgWCJGAcAghj8tijBrGdyM0knz/+UrQ+/NKOQFxmdX4hC3prycrKBC5lf28P8/Zsp/v9v9nu/9R9a8b6j1wuAKYFArZgVCSBhGZheGzmDGDuYSAY5tDBYGG2CqnKd3KvpofgIgeRXlbhwE/CiUo4tvl6HcKueKyG/zqT2dQkLObfKjNM2hByma7er///j1ti/fXVSj16cjcmZX89SAHQNs/ywJhVMmWkgY9EpmTIG9IAUgfr+cQzSOLCc7FVTpjghGYK9mp5x+V6vZ/VX///+7ZV+p6L/2193t01TEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUH34LbmEkCAYcoJhmMgEGL4aYYa4DxgDBMGqeV2YAgSBzkG8DQtZhp01bSkZsLKXKgNLepm0ruEnldXlxJ6awzYkKjTgvuUrHBll0WL2/Kt0dpxraf4spGEu7S//uSZPWOwzIiMoPZWlBlA9ZQe0hMDAx6zi9g6YD3CNyNzQiga7deO+2hKgC9+5ulhHYgAIAS220URDMMMkxyCg1vnHRSJchhIGev1AQEh+KXN3tM+SxGxJnEGeln5V/5L3d3Z+RZ/t9HXfbtp6X0sb0dVIsq9yDlPTrAIALb//F2gtQBqU1p48NgSyJDniRABA4dkTOmFAdfFrs9H6b+pXLdXnO1+cOY+ubxqL92YfOOyBFHeu+rH7GfINUQNXL7MIC4ACDcigAKzHwHTPNRTPk+DYDSTIUOzAoFjh5KTEkPXuQJtDmLO1UigLXQjd7QTi2NKGjug6M0x5oZb9S2q/gwrLf/+v0I0UpWu2hZhxqlJoa2KtHaUqIJa4XlDsDNHkxBTUUzLjEwMKqqqqqqAFJswFANjBBPOMMwbM2Cg1DJOM6MScDIwJABzdXOTMFgRpQtElxYhLYsQwI+AgESwHYelBtoGg8yyGA/vlybwF65S05EX5qfJuf/GoacgrLRt5FyLxVdOVZ7+OpepvZ0hC+2u6gAlwowe01EqXtHMx4ADf/7kmTsiINOIrML2TpgR4K3F3NnKAkMRuVNbWZBeQ1azP6cOEcmStph2YplQDBueKJlr2ZlYJYFAQzIlEw8BuKBAlaozy23Qe9dgzOoAMjgodGE0OBj3jmCL/j3+v+SMpPh2r05aeInTyJcXevQqpv1KNvQXQsi5Rtz6bXKItFFHIRGSougcAWBLbNsMNe4PJ4NnJ042ZxACC6Z6pQAAW8cS9rGu+DQBUJQ5lbKmdydHLf//1ctV5vo9vfJXspKJVU63/X9YAjUOgQFAHMEG1MGVXMST2OZikHrrMNAEM2fYFmOQCA7rSZuNywsAIvthi+Nl6bFp8SSF3apUOzmPZATe/lDfTJenKKo/+6z/vuoaRyn1oVVFECs/Wpm+5puF0UAFiOR4CyRmFUYq1GGnZ7xyTbwoFGz8LmBIWNwT9x7RyhWafEDtBHcJOgqvgvRZU7nf9P/1ZulV1b3afmEUoZyVC86ovppIstF4wHXEgBGZa5gOAdmHaZ+Yogdxm9iSmaAqiYp4PpgSBEGaWaQYLYHhpMIglx4hE2WRsfyGAZEYzH/+5JE+IzDhyKyC9hCIGTEVqN3B0YH2DDebXBjQW0PWgncHSDYyhFTgmxN04v7lhtwN9d/6rl3v4lepSjiv+3qkaaqUVUIVR6d5PI6kGRZfPsbdeg6sAXLAgDGXrQGKAqC6fG4/SGCgpDAcmh4o4YAQO5f0wPQCFcRvTWx0BBrz+xvtMpVhk1mX2m3z73scX5zaSILqNNteOgOaeVaMWdBSlDhZPTG2ZZKy36Es5piVOnp845GTHFEIbDgaSFlAURCsoqkttah4oAQVAiMA0IMxTEqzGRJRMv0sIwZIzjFHDSMBoH8zpESzASB5S3C4pNops1Na62SdV6nTeWgBo0hQbmAk5s8LhqrGilHERXIVxCW1nXKtM8dcB9re19ujGux2/9Nm8WXIMewuKsLigItmMeuyNW1a+0ul6pMQU1FMy4xMDCqqi/wUCExPTcxuR8zJPQ0JzMx8DswNFgzUVfTCwBcGgEjA2AESzf2EPwjM3rlSu/ZWXS5rBZ3YK33uL0M13uQIGQUZVsSMK3LgVr4u+u21FL8+0j309Ctuf623KL1//uSZP+MwmgRtht9KbBlgzZyewtEDlx6yC75B8HHERkF7J0YMrbsv92vpu9KwAACADAEksw8AlDpHB7g8NEigtsb10wwnKNfcsWFbaGVv/96nf////19Ht8V7lz++/rX+kaexIBTO0nN56E79HT1hoN/k4xfyzClSqMTwB86oDVnGhVjL1bElIEKTrwVJYuzsy8e7ry/T9ttgWpnnrtvDsi1vvP/edv9/+v1cCdIu8qq5s6ZVStusVaazjOrX+1xtWx2w2EAKfU5qA80bewwDRI08nU9xQAEJxxfJC4RzwRuY5gRzt2/NOgkEIkxDcTTABADAQ9DVUysUAIifGOuAibMUgp0P16Lv/9//F67Us0pKEkPr/tu/abcyxt71N6EVUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVUP39AIDGJB4GK56mmCAGcsMGEwQGEwDnemtmMwklvwIAUPRibjr7lYLIhFrBtGUqYpPNWc5L4qiia1lcw1XCDWRsRH+bD+3oPmnJa1bO+T6CGhlhh62sUxEZWv6LXvdYM1tCY1y//7kmTtDoMqHjIDvinwNAEnWmdJFI6geMgueyYBJ4XbDY48GPGinWAG5ZLJUeDLaIzDCNQSNMGo2MHQYFgBNLlwC4Sr+ZLFOXkTMKhGHWctnrPd/Pct15m/p6NDrtKUsLOWJWGC6Ovf7o+jCXp2C1ddi3TaGlNlQBNtt0y3QdYjDAI3odMdl0VUPjYMGBIEkUtPd0YjFysPKfTrZ/wt9vJ8p0vNkZot+9voo3NLaunU3/hxs9L1BFuQCy3BlliWgqAU3N2IQs1XnN+yT0E8jlVmwdRIYJxzbN4FFpHcdAJxqTFAaoVqofKMV1E8XkqjukskXpJIXIq/51v7fzh8VW0ibdYu5ZJf9rNTtC7lWUyriiyw1+8H9DRVFr0UKtUH0FEwgNHTBjG5MSgT0yIAwjMqQdMasD0wFgOzQEGXMH4KkBAIA0A9IupC3bQ9GgcVlPDF4GDYIR4LwkkYmNlqDwgpTE5FQjtl8rX68tfcAh2RJvHW3NqUxMzmdNrujQqOvMdZSK3etFeSp6GqiikAKtSRpCIDIOWM7Xo3HQMzVsowoCr/+5Jk8YzDQyKzC68rsFACNtNvsBgJIEjebfFkgYGRGgm+zGBMIyz1kwiB6C3geTPDJo5WBMM4apjXRTHDtoHLs2A7F8XlLVZLUM+19ZpcC9oltpfuacb3p1oqGrWKUybwIhmmpbhsamcFBOwYDoMIEGlMJIPAybAdzDKWsMuSEMJATPg38EY2DQLOKs35Q7rGSISWx40sg5mTJOptsUufqQpd4teH6nfX33j7gxNb+f8TX79pwAdtdwlEVqI3eOmKEYv8whPMCQPBkoxzfNRdC0D2o8I9gH2krTJ0aTRQkQ/kznfCTCUuSYcjK7/nWRdJrrepaWhHQjUovVn5yxLMYmqBwRuYQEnSyYS1+P2o1rdsP9P3tVRYiOjybCLZlCATRm0jReITjxBRekgdpFFNrUNtFHaJ1SpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqABVqcAC5wT8bBVmokB/UyaqDNcNqq5MHgdZmHBI+8qlsYVnVZELF/kbos4yVQPH0Chzb8Q0+KbFO1u/oap1jtOnkcyntYbrvT9Pv//uSRP+Ow2MeMgMeaHBa41Zyc6IcDYR4yC915QGDDRlF3BUglasPPOL2nKkRwDmSJh0ZoWoY2qAbvoyfRkKb+BeYZgkciSwY7h+m6AQCUUpoHg9JQmBl/nSnLIiM4tIOLN8h2HXhAyonMLOtuTX0f/rDX3U2SNqUdIjtbNUnJHT2udZPOrpQlAW/L8GRJXGVRImthOGPLTGDIGBgHHVfPGBwkIbGmL6RaFuMkqTFjdJlmzG/k7U7uIa7ThgQ2aZG3TbLP4w2fm7cbg1h6t3ap6pMtej4peYflNd5ybEynLTqYno0pcYPqgUV2nR6Vm7kAJRygYXfcQAswsaHUjOd0w6Q1694BLv0Guqc/fz/Z//6L//9X/c62ww9ur4qnyP/bQPgZASYNnaYrC8aREmYcmeHErKzmbHzEIYR4wjQzrGFPqz1ZpBIcAkL0LTsDz3VOCXtc1/3x36iWXmVij8UdPWVr8iInsa00aLVHsjfSovu0K+pQsjNLT5wbnHS5gKgLGBYB+Ye4upkbCemUwMQZDCthjFg7GA0BKZ1RUBgkBSml//7kmTkjoKjGjOTfSnQWsNGYWOnDg0Aesgu4QlAwgSd9Z0IVByihq+sQgoqGSxrPvFb4Po0I5ZakdSqR75h1ytNVz8L8o86TS5BK+q5lMdFlIVsJ6UJW4LdL0NrRx1ln6AlizLYrUeMim8iq2CPZmkqZ/GFf2b08CyCaHRnbPAGG46GDgGAIHXfzfzBmb7kl0LDdUmHJOvnTGb+aUuELFMjpLO792lbFMKN9Y0RHKE1SIpMGWtnHAuP6GKQim9AKhwTjB9CcUEIuCc8RDQUJxIGYAw8zYOg5oNs7zVA2QCAxEMg9BEwzpG42bQCkgAsvC+44UlgaRmWBJKKFh7N7kCpNUv55w9nnn/76Yph5SN/UAc/vltK70UPZZGXGSST5VM9xXoZIC1rjQBLpzhEpyi0OSpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqoB2kpHGGRVGP5xGTJWjyRAI4TCIXT4KDRCNpuGYSc4+UqJTvpZfWHpW3e1jD9WHuz0BYBnTQZ5bQ99cDumQXpt1+ZdMrs/04aiZgmMIPbbAFX/+5Jk/47i4xmyi7haIGuDVkB7C0YMQFjKTfVmwZYNGQXcpRBa4bLP5C7nMX2IJG+UB9MFC4yAUsz1WQ3FYEy6+8wjEcwpDI0OvsyCAlPxDd86CRykkBJnYyJyBCFiL0OecPzUKBntxsWsnHyX1btfG3yNNgOWlE/VY6iMr0VTXU6jYqnQqtL2tU5wiYtAw8xtx5FFQo8A9iHU7tt0PC2UCtXn4WOm5V76/Odltf/3f/V9Kf3a//++5NL2nU96GCgIBowghMDFbCHM9cU4x8jJDFhA+MCIBQw40CAwBsDGAB2A0sDTA7ojezl+oTlF4Tqo7lmeVEwsNq11A92+VIa3p0zGPQ192onxrlYu1xBetIsKdAzL3LpRd0Ge4nR3s+UXAtkxZAxJcAycT02iXA0LqIyEFgwJGM3q8UwoB9UrtNBi2qkeKwNC6kbmcklpZ1UYY7piA6LPANE0/FHz+gLEOg0jn3IvNQZ5N9zBd/Dhlky966IKIOkRUkLUh5xh4QKCiKCA0AAalylJhFwmdC0cxR53C/m9Q6YMAx5aZGCSGokh//uSZOeI4vAasou4QkBcA0ZhdYdyBigk50NooQGKjVkB7B0g3i9ijqEhSkFiik9hsVrsEIxGzQqJCo0/Lll2qhLldl279P7f65ipGxBljWkELa9J0mgOERCeKHzJUdubTaPZgAARagdHA10XPmdDiIxzI93TFwJTAIHjMOuBoYkkmnMms9qQalEBSHepxr0RtD99BL3prT3rkCT2/9g2kl6Kl9Hkkj97oRFYVWsWFkQqoikIJct8eBEHVgftVpQ4Ri4A+RDImhp2GFG5GFYrFlTg00TAkTGAtKZrapp5fI8EIJSBc8ejLL1mO/loliPVrEUWa5Z7Wc0SqU+cH3iZZxqq21J32tl9j+hEQB9IkPujgAJ4qKPS1ZkMjBV4aMrMtSYM3pUAAEypBGnLsjB5TkALBH67gM6m1FFApHWSJrTcJl5Dqiu6uz/962VMM0WrvX1/+u7lfcRUhvoXWrRoUA6PRuCZst6YRl4cElmdPDsRa8YbAObJwuYBiUjSst4ZdCZco2TAdbjt/Ae7gMaPJmcflYY0Jsn1H59kL696/c2X///7kkT/jOMcFjILpjugXcNGYnMHSAsYVsxN9KNBngrZSb6saP++n6l83X9426NLs2Yo18njBd6HWnWrLitNpKxqhRJ9I8x1IoySHIepYz9Z4xqAAxZJc5DuAwpCQwyFgaDEzxOJxkBuAkKSjDiICy37VEKF+oJ1nMwTreBUj8rDt+vByI6uwsgDi8JAoK4E3gTNxADwhiOfA0NBAHQriOmBoaiGTy+I6YSFI5m5UJh0JC0ln5ULCGT1JLRlQmIZPXExGSDxOT2jBEZmicnwGDp2rOD9owdM1ZweQmFTuNIeQmdj+M4WNmbRg4cLE5+0YOnatOfwHjp2+sWNLHTt9IeNn9TONY42vscPLHG19lkS9xtfAsiXvsL6LKr32HIXOXxsLG37L7rHIV+LHBBimGYBD40GLswUBozJKI3RsYzbKUy3H00mEYyEA1LovQngBQBT7L+IwP+gozlB9zkvF6MjU3gxQeHlhHkYGy96F0S1dhEAWH44AcHkCaCE4/jgFBTBuuEAsDwOhfEdcIBoOY7lMR1wgIiWWy4TFwkKSWWyoTH/+5Jk/Yjh1Qm4UxpBGGCoNlFjpQ4dVbDGDuGLS6Q2GcHWGukolqSWrKhYQye8SEZULCczsYRHZYTmbRhEdn7B/AYRHatIeQmDoOmCBBYXQOmCBB4XQAQBCB4XQAUTCzws4ERB0zAg4EkHTEECyaIOsggWF0QWQQPJ0QUTQPC6IYTTMJlEJJpmEHISTWYQPJ0TWQQLJ0CISExBTUUzLjEwMKqqqqqqqqqqqgAUg5BCGSgAj1MUW4/wMpSbA8DoCCh4NB0SlSw9x48SSVX2EUKXniUstz7U//+u861KFe0SlljJ4kmsY91JVV51hJCluPHmpKrAAjCS663cMKCsSPRJCT1BXkvuPHW9T3ZUstW3+RQq9zPvflV9n/r9nu//zvVVTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//uSRHwP8koGupkvYJAs4LeqCEYBAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ=="}},"time_used":7,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":6,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.tidio.co/widget-v4/1_447_0/static/js/render.c201a34ef1bfdb786fba.js","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.273Z","timestamp":1785145636273,"http_version":"HTTP/2","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":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"GET /widget-v4/1_447_0/static/js/render.c201a34ef1bfdb786fba.js HTTP/1.1\r\nHost: code.tidio.co\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\nReferer: https://bit-core.top/\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: application/javascript\r\naccess-control-allow-origin: *\r\ncache-control: public, max-age=31536000, immutable\r\ncontent-encoding: gzip\r\netag: W/\"6a670aff-18e2\"\r\nlast-modified: Mon, 27 Jul 2026 07:38:39 GMT\r\nserver: cloudflare\r\nvary: Accept-Encoding\r\nage: 7432\r\ncf-cache-status: HIT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=4eigEyUHa1%2Bm6gliRM1ZmYjmKbdWQ3%2F6%2F9Bpln1XsNWsJbLvAiW2J%2FktED92p9Ag8EOt5p5vNlF3zjfqBUanr7v%2BKBhHO552zkz71TmdT2Zl3ZyvGKQYmEw7YvvoVuI%3D\"}]}\r\ncf-ray: a21ab8c2b9e4723c-OSL\r\nX-Firefox-Spdy: h2\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"]}],"data":{"size":6370,"size_decoded":3234,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (6370), with no line terminators","md5":"f50ef2f0e821cfc64938842add1cc13e","sha1":"fee28952aff5040f82f194e698541efbe7f889e2","sha256":"025bffde9b6e41274392e86a310c510f63d534bc6e955203b25c9e9034ac18df","sha512":"af36c95e7cd17efdf5a2a1e19f87e83ecf5bfa101c8cb06742f0db6e3f1d9720b0e032f10e193a0b13330732ae22f242a320014ca6ff49d1eafe5612f32f9716","ssdeep":"96:oGyozLgGyMGBAMa4qc8uLetLu9qinoAXKNEvydcQ7fFB/4Dw9O9GBdYPuH:2ozxy841LeEbn6gy1sFkzYPU","tlshash":"d2d1c891316824681266d66c307fb30732a9712f650e91a4636cdcedbd38ec6814feda","first_seen":"2026-07-27T07:44:11.912183Z","last_seen":"2026-07-27T10:17:04.98652Z","times_seen":9,"resource_available":true,"data":"IWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e30sdD0obmV3IGUuRXJyb3IpLnN0YWNrO3QmJihlLl9zZW50cnlEZWJ1Z0lkcz1lLl9zZW50cnlEZWJ1Z0lkc3x8e30sZS5fc2VudHJ5RGVidWdJZHNbdF09ImRkZWE0YzgzLTQ3NmMtNDJlNi04MmI5LWYyMDZkZjYxOGRhNSIsZS5fc2VudHJ5RGVidWdJZElkZW50aWZpZXI9InNlbnRyeS1kYmlkLWRkZWE0YzgzLTQ3NmMtNDJlNi04MmI5LWYyMDZkZjYxOGRhNSIpfWNhdGNoKGUpe319KCksZnVuY3Rpb24oKXt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2UuX3NlbnRyeU1vZHVsZU1ldGFkYXRhPWUuX3NlbnRyeU1vZHVsZU1ldGFkYXRhfHx7fSxmdW5jdGlvbigpe3ZhciB0LG89KG5ldyBlLkVycm9yKS5zdGFjayxuPWUuX3NlbnRyeU1vZHVsZU1ldGFkYXRhW29dfHx7fSxpPXsiX3NlbnRyeUJ1bmRsZXJQbHVnaW5BcHBLZXk6dGlkaW8tc2VudHJ5LXdpZGdldC1hcHAta2V5IjohMH0sZD17fTtmb3IodCBpbiBuKW4uaGFzT3duUHJvcGVydHkodCkmJihkW3RdPW5bdF0pO2Zvcih0IGluIGkpaS5oYXNPd25Qcm9wZXJ0eSh0KSYmKGRbdF09aVt0XSk7ZS5fc2VudHJ5TW9kdWxlTWV0YWRhdGFbb109ZH0oKX0oKTt2YXIgX2dsb2JhbD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O19nbG9iYWwuU0VOVFJZX1JFTEVBU0U9e2lkOiIxLjQ0Ny4wIn0sZnVuY3Rpb24oKXt2YXIgZT17MTkxMjpmdW5jdGlvbihlLHQsbyl7InVzZSBzdHJpY3QiO28uZCh0LHtBOmZ1bmN0aW9uKCl7cmV0dXJuIG59fSk7Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3RoaXMuZXZlbnRQcmVmaXg9InRpZGlvQ2hhdC0iLHRoaXMucmVhZHlFdmVudFdhc0ZpcmVkPSExLHRoaXMucXVldWU9W10sdGhpcy5wb3BVcE9wZW49dGhpcy5vcGVuLHRoaXMucG9wVXBIaWRlPXRoaXMuY2xvc2UsdGhpcy5jaGF0RGlzcGxheT10aGlzLmRpc3BsYXksdGhpcy5zZXRDb2xvclBhbGxldGU9dGhpcy5zZXRDb2xvclBhbGV0dGV9b24oZSx0KXsicmVhZHkiPT09ZSYmdGhpcy5yZWFkeUV2ZW50V2FzRmlyZWQ/dCgpOmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoYCR7dGhpcy5ldmVudFByZWZpeH0ke2V9YCxlPT57dChlLmRhdGEpfSwhMSl9dHJpZ2dlcihlLHQpe2lmKCJyZWFkeSI9PT1lJiZ0aGlzLnJlYWR5RXZlbnRXYXNGaXJlZClyZXR1cm4hMTt0cnl7Y29uc3Qgbz1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtpZihvLmluaXRFdmVudChgJHt0aGlzLmV2ZW50UHJlZml4fSR7ZX1gLCEwLCEwKSxvLmRhdGE9dCxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG8pLCJyZWFkeSI9PT1lKXtpZih0aGlzLnJlYWR5RXZlbnRXYXNGaXJlZClyZXR1cm4hMTt0aGlzLl9mbHVzaEFsbEZyb21RdWV1ZSgpLHRoaXMucmVhZHlFdmVudFdhc0ZpcmVkPSEwfX1jYXRjaHtyZXR1cm4hMX1yZXR1cm4hMH1tZXRob2QoZSx0KXtyZXR1cm4icmVhZHkiPT09ZSYmImZ1bmN0aW9uIj09dHlwZW9mIHQ/KHRoaXMub24oInJlYWR5Iix0KSwhMCk6KHRoaXNbZV0mJnRoaXNbZV0odCksITApfV9hZGRUb1F1ZXVlKGUsdD1udWxsKXt0aGlzLnF1ZXVlLnB1c2goe21ldGhvZDplLGFyZ3M6dH0pfV9mbHVzaEFsbEZyb21RdWV1ZSgpe2Zvcig7MCE9PXRoaXMucXVldWUubGVuZ3RoOyl7Y29uc3R7bWV0aG9kOmUsYXJnczp0fT10aGlzLnF1ZXVlLnNoaWZ0KCk7dGhpc1tlXS5hcHBseShudWxsLHQpfX1vcGVuKCl7dGhpcy5fYWRkVG9RdWV1ZSgib3BlbiIpfWNsb3NlKCl7dGhpcy5fYWRkVG9RdWV1ZSgiY2xvc2UiKX1kaXNwbGF5KGU9ITApe3RoaXMuX2FkZFRvUXVldWUoImRpc3BsYXkiLFtlXSl9c2hvdygpe3RoaXMuX2FkZFRvUXVldWUoInNob3ciKX1oaWRlKCl7dGhpcy5fYWRkVG9RdWV1ZSgiaGlkZSIpfXNldENvbG9yUGFsZXR0ZShlKXt0aGlzLl9hZGRUb1F1ZXVlKCJzZXRDb2xvclBhbGV0dGUiLFtlXSl9dHJhY2soZSx0LG8pe3ZvaWQgMD09PWUmJihlPSJ0cmFjayIpLHZvaWQgMD09PXQmJih0PXt9KSx2b2lkIDA9PT1vJiYobz0oKT0+e30pLHRoaXMuX2FkZFRvUXVldWUoInRyYWNrIixbZSx0LG9dKX1tZXNzYWdlRnJvbVZpc2l0b3IoZSl7dGhpcy5fYWRkVG9RdWV1ZSgibWVzc2FnZUZyb21WaXNpdG9yIixbZV0pfW1lc3NhZ2VGcm9tT3BlcmF0b3IoZSx0PSEwKXt0aGlzLl9hZGRUb1F1ZXVlKCJtZXNzYWdlRnJvbU9wZXJhdG9yIixbZSx0XSl9c2V0VmlzaXRvckRhdGEoZSx0KXt0aGlzLl9hZGRUb1F1ZXVlKCJzZXRWaXNpdG9yRGF0YSIsW2UsdF0pfXNldENvbnRhY3RQcm9wZXJ0aWVzKGUsdCl7dGhpcy5fYWRkVG9RdWV1ZSgic2V0Q29udGFjdFByb3BlcnRpZXMiLFtlLHRdKX1hZGRWaXNpdG9yVGFncyhlLHQpe3RoaXMuX2FkZFRvUXVldWUoImFkZFZpc2l0b3JUYWdzIixbZSx0XSl9c2V0RmVhdHVyZXMoZT17fSl7dGhpcy5fYWRkVG9RdWV1ZSgic2V0RmVhdHVyZXMiLFtlXSl9YWRqdXN0U3R5bGVzKGUpe3RoaXMuX2FkZFRvUXVldWUoImFkanVzdFN0eWxlcyIsW2VdKX1zZXRWaXNpdG9yQ3VycmVuY3koZSl7dGhpcy5fYWRkVG9RdWV1ZSgic2V0VmlzaXRvckN1cnJlbmN5IixbZV0pfXNldERldmljZVR5cGUoZSl7dGhpcy5fYWRkVG9RdWV1ZSgic2V0RGV2aWNlVHlwZSIsW2VdKX19fX0sdD17fTtmdW5jdGlvbiBvKG4pe3ZhciBpPXRbbl07aWYodm9pZCAwIT09aSlyZXR1cm4gaS5leHBvcnRzO3ZhciBkPXRbbl09e2V4cG9ydHM6e319O3JldHVybiBlW25dKGQsZC5leHBvcnRzLG8pLGQuZXhwb3J0c31vLmQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClvLm8odCxuKSYmIW8ubyhlLG4pJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtlbnVtZXJhYmxlOiEwLGdldDp0W25dfSl9LG8uaD1mdW5jdGlvbigpe3JldHVybiJjMjAxYTM0ZWYxYmZkYjc4NmZiYSJ9LG8ubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sZnVuY3Rpb24oKXtjb25zdCBlPURhdGUubm93KCk7Y29uc3QgdD0iYm9vbGVhbiI9PXR5cGVvZiBQUk9EVUNUSU9OX0RFVkVMT1BNRU5UX0JVSUxEJiYhMD09PVBST0RVQ1RJT05fREVWRUxPUE1FTlRfQlVJTEQsbj10PyJodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0Ly9kaXN0LyI6Imh0dHBzOi8vY29kZS50aWRpby5jby93aWRnZXQtdjQvIjtmdW5jdGlvbiBpKGUsdCl7dHJ5e2NvbnN0IG89ZS5jcmVhdGVFbGVtZW50KCJsaW5rIik7by5yZWw9InByZWxvYWQiLG8uaHJlZj10LG8uYXM9ImZvbnQiLG8udHlwZT0iZm9udC93b2ZmMiIsby5jcm9zc09yaWdpbj0iIixlLmhlYWQuYXBwZW5kQ2hpbGQobyl9Y2F0Y2h7fX1jb25zdCBkPWZ1bmN0aW9uKCl7dmFyIGU9W10sdD0hMSxvPSExO2Z1bmN0aW9uIG4oKXtpZighdCl7dD0hMDtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rPTEpZVtvXS5mbi5jYWxsKHdpbmRvdyxlW29dLmN0eCk7ZT1bXX19ZnVuY3Rpb24gaSgpeyJjb21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlJiZuKCl9cmV0dXJuIGZ1bmN0aW9uKGQsYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgZm9yIGRvY1JlYWR5KGZuKSBtdXN0IGJlIGEgZnVuY3Rpb24iKTtyZXR1cm4gdD8oc2V0VGltZW91dChmdW5jdGlvbigpe2QoYSl9LDEpLCExKTooZS5wdXNoKHtmbjpkLGN0eDphfSksImNvbXBsZXRlIj09PWRvY3VtZW50LnJlYWR5U3RhdGV8fCFkb2N1bWVudC5hdHRhY2hFdmVudCYmImludGVyYWN0aXZlIj09PWRvY3VtZW50LnJlYWR5U3RhdGU/c2V0VGltZW91dChuLDEpOm98fChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyPyhkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixuLCExKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsbiwhMSkpOihkb2N1bWVudC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixpKSx3aW5kb3cuYXR0YWNoRXZlbnQoIm9ubG9hZCIsbikpLG89ITApLCEwKX19KCk7ZnVuY3Rpb24gYShlKXshZnVuY3Rpb24oZSx0KXtjb25zdCBvPWUuY29udGVudFdpbmRvdy5kb2N1bWVudCxuPW8uY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7bi5zcmM9dCxuLmFzeW5jPSEwLG8uYm9keS5hcHBlbmRDaGlsZChuKX0oZSxgJHtuLnJlcGxhY2UoL1wvJC8sIiIpfS8xXzQ0N18wL3N0YXRpYy9qcy93aWRnZXQuJHtvLmgoKX0uanNgKX1jb25zdCBzPW8oMTkxMikuQTt3aW5kb3cudGlkaW9DaGF0QXBpPW5ldyBzLGQoKCk9PnNldFRpbWVvdXQoKCk9Pnt2YXIgZD13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRpZGlvLWNoYXQtY29kZSIpLHM9L01TSUV8VHJpZGVudC8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCk7aWYoZHx8cylyZXR1cm4hMTshZnVuY3Rpb24oZSx0LG8pe2NvbnN0IG49dC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTtsZXQgaT0hMTtuLm9ubG9hZD1mdW5jdGlvbigpe2l8fChvKG4pLGk9ITApfSxuLmlkPWUsbi5zdHlsZS5kaXNwbGF5PSJub25lIixuLnRpdGxlPSJUaWRpbyBDaGF0IGNvZGUiLHQuYm9keS5hcHBlbmRDaGlsZChuKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aXx8KG8obiksaT0hMCl9LDFlMyl9KCJ0aWRpby1jaGF0LWNvZGUiLHdpbmRvdy5kb2N1bWVudCxkPT57dmFyIHM7dCYmd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18mJihkLmNvbnRlbnRXaW5kb3cuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXz13aW5kb3cuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXyxkLmNvbnRlbnRXaW5kb3cuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fQ09NUE9TRV9fPXdpbmRvdy5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9DT01QT1NFX18pLGZ1bmN0aW9uKGUpe2xldCB0PSJodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L3N0YXRpYy9qcy9XaWRnZXRJZnJhbWUuanMiO3Q9YCR7bn0xXzQ0N18wL3N0YXRpYy9qcy9jaHVuay1XaWRnZXRJZnJhbWUtJHtvLmgoKX0uanNgO2NvbnN0IGk9ZS5jcmVhdGVFbGVtZW50KCJsaW5rIik7aS5yZWw9InByZWxvYWQiLGkuYXM9InNjcmlwdCIsaS5ocmVmPXQsZS5oZWFkLmFwcGVuZENoaWxkKGkpfShkLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLGkoZC5jb250ZW50V2luZG93LmRvY3VtZW50LCJodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL211bGlzaF9TR2hncWszd290WUtObkJRLndvZmYyIiksaSh3aW5kb3cuZG9jdW1lbnQsImh0dHBzOi8vY29kZS50aWRpby5jby93aWRnZXQtdjQvZm9udHMvaW50ZXJfVWNDbzNGd3JLM2lMVGN2aVl3WVo4VUEzLndvZmYyIikscz1kLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQsWyJ0dXJ1cnUubXAzIiwibm90aWZpY2F0aW9uLXNvdW5kLm1wMyJdLmZvckVhY2goZT0+e2NvbnN0IHQ9cy5jcmVhdGVFbGVtZW50KCJhdWRpbyIpO3QucHJlbG9hZD0ibWV0YWRhdGEiLHQuc3JjPWAke259LyR7ZX1gLHMuaGVhZC5hcHBlbmRDaGlsZCh0KX0pLGZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5jcmVhdGVFbGVtZW50KCJsaW5rIik7dC5yZWw9InByZWNvbm5lY3QiLHQuaHJlZj0iaHR0cHM6Ly9zb2NrZXQudGlkaW8uY286NDQzIixlLmhlYWQuYXBwZW5kQ2hpbGQodCl9KGQuY29udGVudFdpbmRvdy5kb2N1bWVudCksZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmNyZWF0ZUVsZW1lbnQoImxpbmsiKTt0LnJlbD0icHJlY29ubmVjdCIsdC5ocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tIixlLmhlYWQuYXBwZW5kQ2hpbGQodCl9KGQuY29udGVudFdpbmRvdy5kb2N1bWVudCksZC5jb250ZW50V2luZG93LnRpZGlvQ2hhdEFwaT13aW5kb3cudGlkaW9DaGF0QXBpLGQuY29udGVudFdpbmRvdy5GSVJTVF9QT1NTSUJMRV9KU19FWEVDVVRJT049ZSwicmVxdWVzdElkbGVDYWxsYmFjayJpbiB3aW5kb3c/d2luZG93LnJlcXVlc3RJZGxlQ2FsbGJhY2soZnVuY3Rpb24oKXthKGQpfSx7dGltZW91dDo1ZTN9KTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YShkKX0sMCl9KX0sMCkpfSgpfSgpOw=="}},"time_used":8,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":8,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T09:47:11.543Z","timestamp":1785145631543,"http_version":"HTTP/2","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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: bit-core.top\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\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\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/2 200 \r\ndate: Mon, 27 Jul 2026 09:47:15 GMT\r\ncontent-type: text/html; charset=UTF-8\r\nx-powered-by: PHP/7.4.33\r\nset-cookie: CameFrom=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; secure\nPHPSESSID=7d00072f40b00a82b09100afcbf12c7f; path=/; domain=bit-core.top; HttpOnly; secure\r\nexpires: Thu, 19 Nov 1981 08:52:00 GMT\r\ncache-control: no-store, no-cache, must-revalidate\r\npragma: no-cache\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 46bbb39a4f75da567a7b02aa0ca8a336-fra-edge5\r\nx-hcdn-cache-status: DYNAMIC\r\nx-hcdn-upstream-rt: 0.286\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Stimulus","description":"A modest JavaScript framework for the HTML you already have.","website":"https://stimulusjs.org/","common_platform_enumeration":"","icon":"Stimulus.svg","categories":["JavaScript frameworks"]},{"name":"OneSignal","description":"OneSignal is a customer engagement messaging solution.","website":"https://onesignal.com","common_platform_enumeration":"","icon":"OneSignal.svg","categories":["Marketing automation","A/B Testing"]},{"name":"Tidio","description":"Tidio is a customer communication product. It provides multi-channel support so users can communicate with customers on the go. Live chat, messenger, or email are all supported.","website":"https://www.tidio.com","common_platform_enumeration":"","icon":"Tidio.svg","categories":["Live chat"]},{"name":"PHP:7.4.33","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":31234,"size_decoded":8334,"mime_type":"text/html; charset=UTF-8","magic":"HTML document, Unicode text, UTF-8 text","md5":"94609088b74278dcbaee3b931fd43660","sha1":"80e36ca5973f87754c2b04cb320a7782abf3a3b3","sha256":"0732cb6e095e67dd2af3f90be4cf457a2b86a15477d63d25115716fcb8356ec1","sha512":"ae4d7844ff7e54b32b00c3b917c82b3597b0e469d9148532a1a6262e07edbd8b6e25d1c02f6d5b197374bd060e25a5a62e646dc03ad3f4433b0329953a8dafb7","ssdeep":"192:BgtThzpf7mZrOzzWuurC2DHVubOSpQLpJN2RNy/SXv2q0uHoD9YJT8oUjQQCwdPu:BgFzzzzWuu1RubppTi/SOqxiZkYvXMFF","tlshash":"e1e21e2164f2102702c390a6fb359a1bbf91e107da0b9e46b2fc4b859fd7d82de4356d","first_seen":"2026-07-27T09:47:52.608981Z","last_seen":"2026-07-27T09:47:52.608981Z","times_seen":1,"resource_available":false,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KCjxoZWFkPgo8bWV0YSBjb250ZW50PSdGdXR1cmUtYml0Y29pbmludmVzdG1lbnQgb2ZmZXJzIHNlY3VyZSwgaW52ZXN0bWVudCBvcHBvcnR1bml0aWVzLicgbmFtZT0nIGRlc2NyaXB0aW9uJy8+CiAgICA8bWV0YSBjb250ZW50PScgQmVzdCBwcm9qZWN0CkxvbmcgVGVybSBwcm9qZWN0CgpFYXJuIE1vbmV5IE9ubGluZQoKTWFrZSxtb25leQoKU2FmZSBpbnZlc3RtZW50IHdlYnNpdGUgCgpMZWdpdCBiaXRjb2luIGludmVzdG1lbnQgcHJvamVjdAoKUmVhbCBpbnZlc3RtZW50IHByb2plY3QKClRydXN0ZWQgd2Vic2l0ZSBmb3IgaW52ZXN0bWVudCAKCkVhcm4gbW9uZXkgYnkgaW52ZXN0aW5nCgpFYXJuIGRhaWx5IHJvaQoKRWFybiBtb25leSBieSBpbnZlc3QgZnVuZAoKUmVhbCBoeWlwIHByb2dyYW0KCkxlZ2l0IG1sbSBwcm9qZWN0CgpHb29kIHdlYnNpdGUgZm9yIGludmVzdG1lbnQgCgpGdXR1cmUgaW52ZXN0bWVudCAKCkhpZ2ggcHJvZml0IHNhZmUgaW52ZXN0bWVudCB3ZWJzaXRlIAoKVWsgUmVnaXN0ZXJlZCB3ZWJzaXRlCgpFYXJuIHJlYWwgbW9uZXkgb24gaW50ZXJuZXQKCicgbmFtZT0nIGtleXdvcmRzJy8+CiAgICA8dGl0bGU+Yml0LWNvcmUudG9wPC90aXRsZT4KICAgIAogIDxtZXRhIG5hbWU9ImRlc2lnbmVyIiBocmVmPSJodHRwczovL3pvbml4LWNhcGl0YWwuY29tIj4KICAgIAogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CiAgICA8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iI2ZmZmZmZiI+CiAgICA8bGluayByZWw9InByZWxvYWQiIGhyZWY9Ii9mb250cy9PdXRmaXQtUmVndWxhci53b2ZmMiIgYXM9ImZvbnQiIHR5cGU9ImZvbnQvd29mZjIiIGNyb3Nzb3JpZ2luPgogICAgPGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSIvZm9udHMvUmVkSGF0RGlzcGxheS1CbGFjay53b2ZmMiIgYXM9ImZvbnQiIHR5cGU9ImZvbnQvd29mZjIiIGNyb3Nzb3JpZ2luPgogICAgPGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSIvZm9udHMvUmVkSGF0RGlzcGxheS1Cb2xkLndvZmYyIiBhcz0iZm9udCIgdHlwZT0iZm9udC93b2ZmMiIgY3Jvc3NvcmlnaW4+CgogICAgPG1ldGEgbmFtZT0iY3NyZi1wYXJhbSIgY29udGVudD0iX2NzcmYiPgogICAgPG1ldGEgbmFtZT0iY3NyZi10b2tlbiIgY29udGVudD0iNG96TWVrYW02dHZuQXF6R1dnT3J4aTRHRllsUWJsR3hGTVkyNUY2V0F6dVY2dm9wTWM2QzdwMXEyWXNPTk9QeFZHbFMtanBkT2RSQ2lGWGRDUGszZWc9PSI+CgogICAgPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSIvZmF2aWNvbi5pY28iPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTgweDE4MCIgaHJlZj0iL2FwcGxlLXRvdWNoLWljb24ucG5nIj4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBzaXplcz0iMzJ4MzIiIGhyZWY9Ii9mYXZpY29uLTMyeDMyLnBuZyI+CiAgICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgc2l6ZXM9IjE2eDE2IiBocmVmPSIvZmF2aWNvbi0xNngxNi5wbmciPgogICAgCgogICAgCiAgICAKICAgIDxsaW5rIGhyZWY9Ii9jc3MvbWFpbi5jc3M/dj0xNjg0OTQ2ODI1IiByZWw9InN0eWxlc2hlZXQiPgoKICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5vbmVzaWduYWwuY29tL3Nka3MvT25lU2lnbmFsU0RLLmpzIiBhc3luYz0iIj48L3NjcmlwdD4KCiAgICA8c2NyaXB0PgogICAgICAgIHdpbmRvdy5PbmVTaWduYWwgPSB3aW5kb3cuT25lU2lnbmFsIHx8IFtdOwogICAgICAgIE9uZVNpZ25hbC5wdXNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBPbmVTaWduYWwuaW5pdCh7CiAgICAgICAgICAgICAgICBhcHBJZDogIjc4NjI3YzU1LWRhNDctNGZjNC04MTMxLWNjNWI4OTk5MzRlNCIsCiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICBPbmVTaWduYWwucHVzaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgT25lU2lnbmFsLm9uKCdzdWJzY3JpcHRpb25DaGFuZ2UnLCBmdW5jdGlvbihpc1N1YnNjcmliZWQpIHsKICAgICAgICAgICAgICAgIGlmIChpc1N1YnNjcmliZWQpIHsKICAgICAgICAgICAgICAgICAgICBPbmVTaWduYWwuZ2V0VXNlcklkKCkudGhlbihmdW5jdGlvbih1c2VySWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJJZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gJ29zX2lkPScgKyB1c2VySWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICA8L3NjcmlwdD4KCiAgICA8c2NyaXB0PgogICAgICAgIHdpbmRvdy5pbnRlcmNvbVNldHRpbmdzID0gewogICAgICAgICAgICBhcGlfYmFzZTogImh0dHBzOi8vYXBpLWlhbS5pbnRlcmNvbS5pbyIsCiAgICAgICAgICAgIGFwcF9pZDogInA2MHJ1OHlmIgogICAgICAgIH07CgogICAgICAgIC8vIFdlIHByZS1maWxsZWQgeW91ciBhcHAgSUQgaW4gdGhlIHdpZGdldCBVUkw6ICdodHRwczovL3dpZGdldC5pbnRlcmNvbS5pby93aWRnZXQvcDYwcnU4eWYnCiAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdyA9IHdpbmRvdzsKICAgICAgICAgICAgdmFyIGljID0gdy5JbnRlcmNvbTsKICAgICAgICAgICAgaWYgKHR5cGVvZiBpYyA9PT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICAgICAgaWMoJ3JlYXR0YWNoX2FjdGl2YXRvcicpOwogICAgICAgICAgICAgICAgaWMoJ3VwZGF0ZScsIHcuaW50ZXJjb21TZXR0aW5ncyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IGRvY3VtZW50OwogICAgICAgICAgICAgICAgdmFyIGkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpLmMoYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBpLnEgPSBbXTsKICAgICAgICAgICAgICAgIGkuYyA9IGZ1bmN0aW9uKGFyZ3MpIHsKICAgICAgICAgICAgICAgICAgICBpLnEucHVzaChhcmdzKTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB3LkludGVyY29tID0gaTsKICAgICAgICAgICAgICAgIHZhciBsID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBkLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgICAgICAgICAgICAgIHMudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogICAgICAgICAgICAgICAgICAgIHMuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHMuc3JjID0gJ2h0dHBzOi8vd2lkZ2V0LmludGVyY29tLmlvL3dpZGdldC9wNjBydTh5Zic7CiAgICAgICAgICAgICAgICAgICAgdmFyIHggPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgICAgICAgICAgICAgICAgICB4LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHMsIHgpOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7CiAgICAgICAgICAgICAgICAgICAgbCgpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3LmF0dGFjaEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgdy5hdHRhY2hFdmVudCgnb25sb2FkJywgbCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHcuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGwsIGZhbHNlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pKCk7CiAgICA8L3NjcmlwdD4KCiAgIAoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICBhZHJvbGxfYWR2X2lkID0gIktFUk1FSEdJTVZEUUxDRUZNMlVVS1UiOwogICAgICAgIGFkcm9sbF9waXhfaWQgPSAiVkdPRFlYVFhFWkdFVkNRRFRQSVJYViI7CiAgICAgICAgYWRyb2xsX3ZlcnNpb24gPSAiMi4wIjsKICAgICAgICAoZnVuY3Rpb24odywgZCwgZSwgbywgYSkgewogICAgICAgICAgICB3Ll9fYWRyb2xsX2xvYWRlZCA9IHRydWU7CiAgICAgICAgICAgIHcuYWRyb2xsID0gdy5hZHJvbGwgfHwgW107CiAgICAgICAgICAgIHcuYWRyb2xsLmYgPSBbJ3NldFByb3BlcnRpZXMnLCAnaWRlbnRpZnknLCAndHJhY2snXTsKICAgICAgICAgICAgdmFyIHJvdW5kdHJpcFVybCA9ICJodHRwczovL3MuYWRyb2xsLmNvbS9qLyIgKyBhZHJvbGxfYWR2X2lkICsgIi9yb3VuZHRyaXAuanMiOwogICAgICAgICAgICBmb3IgKGEgPSAwOyBhIDwgdy5hZHJvbGwuZi5sZW5ndGg7IGErKykgewogICAgICAgICAgICAgICAgdy5hZHJvbGxbdy5hZHJvbGwuZlthXV0gPSB3LmFkcm9sbFt3LmFkcm9sbC5mW2FdXSB8fCAoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdy5hZHJvbGwucHVzaChbbiwgYXJndW1lbnRzXSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSh3LmFkcm9sbC5mW2FdKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGUgPSBkLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgICAgICBvID0gZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07CiAgICAgICAgICAgIGUuYXN5bmMgPSAxOwogICAgICAgICAgICBlLnNyYyA9IHJvdW5kdHJpcFVybDsKICAgICAgICAgICAgby5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLCBvKTsKICAgICAgICB9KSh3aW5kb3csIGRvY3VtZW50KTsKICAgICAgICBhZHJvbGwudHJhY2soInBhZ2VWaWV3Iik7CiAgICA8L3NjcmlwdD4KCjwvaGVhZD4KCjxib2R5IGNsYXNzPSJwYWdlIHBhZ2UtLWluZGV4IiBkYXRhLWNvbnRyb2xsZXI9InNvYy1wcm9vZiI+CiAgICA8ZGl2IGlkPSJmYi1yb290Ij48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InNvYy1wcm9vZi1jb250YWluZXIiIGRhdGEtc29jLXByb29mLXRhcmdldD0iY29udGFpbmVyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IndyYXBwZXIiPgoKCgoKICAgICAgICA8IS0tIE1lbnUgLS0+CgogICAgICAgIDxoZWFkZXIgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXJfX2lubmVyIiBkYXRhLWNvbnRyb2xsZXI9Im5hdiI+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaGVhZGVyX19idXJnZXIiIGRhdGEtYWN0aW9uPSJjbGljay0mZ3Q7bmF2I29wZW4iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpY29uICI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9Ii9pY29ucy9zcHJpdGUuc3ZnI2ljb25zLW1lbnUiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLyIgY2xhc3M9ImhlYWRlcl9fbG9nby13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ii9pbWcvbG9nby5wbmciIGFsdD0iTmVvcyIgd2lkdGg9IjE3MiIgaGVpZ2h0PSI0MCIgbG9hZGluZz0iZWFnZXIiIGNsYXNzPSJoZWFkZXJfX2xvZ28iPgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPSJoZWFkZXJfX25hdiBuYXYiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdl9fbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Im5hdl9faXRlbSI+PGEgaHJlZj0iP2E9aG9tZSIgY2xhc3M9Im5hdl9fbGluayI+SG9tZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJuYXZfX2l0ZW0iPjxhIGhyZWY9Ij9hPWFib3V0IiBjbGFzcz0ibmF2X19saW5rIj5BYm91dCB1czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJuYXZfX2l0ZW0iPjxhIGhyZWY9Ij9hPWZhcSIgY2xhc3M9Im5hdl9fbGluayI+RmFxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Im5hdl9faXRlbSI+PGEgaHJlZj0iP2E9c3VwcG9ydCIgY2xhc3M9Im5hdl9fbGluayI+U3VwcG9ydDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbmF2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1tb2JpbGUgaGlkZGVuIiBkYXRhLW5hdi10YXJnZXQ9InBhbmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LW1vYmlsZV9faGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi1tb2JpbGVfX2Nsb3NlIiBkYXRhLWFjdGlvbj0iY2xpY2stJmd0O25hdiNjbG9zZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaWNvbiAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9Ii9pY29ucy9zcHJpdGUuc3ZnI2ljb25zLWNsb3NlIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvIiBjbGFzcz0ibmF2LW1vYmlsZV9fbG9nby13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iL2ltZy9sb2dvLnBuZyIgYWx0PSJOZW9zIiB3aWR0aD0iMTcyIiBoZWlnaHQ9IjQwIiBsb2FkaW5nPSJlYWdlciIgY2xhc3M9Im5hdi1tb2JpbGVfX2xvZ28iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LW1vYmlsZV9fYm9keS13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1tb2JpbGVfX2JvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYXYgY2xhc3M9Im5hdi1tb2JpbGVfX21lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdi1tb2JpbGVfX21lbnUtbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Im5hdi1tb2JpbGVfX21lbnUtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2E9aG9tZSIgY2xhc3M9Im5hdi1tb2JpbGVfX21lbnUtbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1tb2JpbGVfX21lbnUtbGluay1sYWJlbCI+SG9tZTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Im5hdi1tb2JpbGVfX21lbnUtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2E9YWJvdXQiIGNsYXNzPSJuYXYtbW9iaWxlX19tZW51LWxpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXYtbW9iaWxlX19tZW51LWxpbmstbGFiZWwiPkFib3V0IHVzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibmF2LW1vYmlsZV9fbWVudS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/YT1mYXEiIGNsYXNzPSJuYXYtbW9iaWxlX19tZW51LWxpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXYtbW9iaWxlX19tZW51LWxpbmstbGFiZWwiPkZhcTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Im5hdi1tb2JpbGVfX21lbnUtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2E9c3VwcG9ydCIgY2xhc3M9Im5hdi1tb2JpbGVfX21lbnUtbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1tb2JpbGVfX21lbnUtbGluay1sYWJlbCI+U3VwcG9ydDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJuYXYtbW9iaWxlX19tZW51LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9hPXNpZ251cCIgY2xhc3M9Im5hdi1tb2JpbGVfX21lbnUtbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1tb2JpbGVfX21lbnUtbGluay1sYWJlbCI+U2lnbnVwPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibmF2LW1vYmlsZV9fbWVudS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/YT1sb2dpbiIgY2xhc3M9Im5hdi1tb2JpbGVfX21lbnUtbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1tb2JpbGVfX21lbnUtbGluay1sYWJlbCI+TG9naW48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LW1vYmlsZV9fZm9vdGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXYtbW9iaWxlX19zb2NpYWwiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJmb2xsb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2LW1vYmlsZV9fZG9jcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibmF2LW1vYmlsZV9fZG9jcy1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9hPXJ1bGVzIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9Im5hdi1tb2JpbGVfX2RvY3MtbGluayI+VGVybXMgb2YgVXNlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Im5hdi1tb2JpbGVfX2RvY3MtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/YT1ydWxlcyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJuYXYtbW9iaWxlX19kb2NzLWxpbmsiPlByaXZhY3k8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXJfX2FjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iaGVhZGVyX19sYW5nLWNvbnRhaW5lciIgZGF0YS1jb250cm9sbGVyPSJkcm9wZG93biBsYW5nIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmb3JtX2lkIiB2YWx1ZT0iMTc4NTE0NTYzNTIxNTEiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvcm1fdG9rZW4iIHZhbHVlPSJhMTM2YTA2OGJhYzI2NmQyNmJjMzNiNmFjYjc1YzhlOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImhlYWRlcl9fbGFuZyIgZGF0YS1kcm9wZG93bi10YXJnZXQ9InRyaWdnZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24gIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIvaWNvbnMvc3ByaXRlLnN2ZyNpY29ucy1nbG9iZSI+PC91c2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyX19sYW5nLWRyb3Bkb3duIGRyb3Bkb3duIGhpZGRlbiIgZGF0YS1kcm9wZG93bi10YXJnZXQ9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51X19saXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24tbWVudV9faXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJkcm9wZG93bi1tZW51X19idXR0b24iIGRhdGEtbGFuZz0iZW4iID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ii9pbWcvbGFuZ3MvZW4ucG5nIiBhbHQ9IiIgbG9hZGluZz0ibGF6eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkcm9wZG93bi1tZW51X19idXR0b24tbGFiZWwiPkVuZ2xpc2g8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duX19hcnJvdyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/YT1sb2dpbiIgY2xhc3M9ImhlYWRlcl9fbG9naW4iPkxvZ2luPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/YT1zaWdudXAiIGNsYXNzPSJoZWFkZXJfX2Nvbm5lY3QgYnRuIGJ0bi0tc2Vjb25kYXJ5IGJ0bi0tbWQgdy1bMjAwcHhdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bl9fbGFiZWwiPlNpZ251cDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaWNvbiAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iL2ljb25zL3Nwcml0ZS5zdmcjaWNvbnMtYm9sdCI+PC91c2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/YT1sb2dpbiIgY2xhc3M9ImhlYWRlcl9fY29ubmVjdC1pY29uIGJ0biBidG4tLXNlY29uZGFyeSBidG4tLXJhaXNlZCBidG4tLXNtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24gIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9Ii9pY29ucy9zcHJpdGUuc3ZnI2ljb25zLXVzZXIiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2hlYWRlcj4KICAgICAgICAKPG1haW4gY2xhc3M9Im1haW4iPgoKICAgIDxzZWN0aW9uIGNsYXNzPSJzZWN0aW9uIHNlY3Rpb24tLW1kIHJlbGF0aXZlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIHNtOmdyaWQtY29scy1bOWZyLF84ZnJdIGdhcC00MCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbTptYXgtdy1bNjgwcHhdIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cHBlcmNhc2UgdHJhY2tpbmctWzVweF0gbWItMTYgc206bWF4LXctWzM0Y2hdIj4KICAgICAgICAgICAgICAgICAgICAgICAgYml0LWNvcmUudG9wIGxpcXVpZGl0eSBwcm92aWRlcjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz0idGV4dC1wcmltYXJ5LWgxIGZvbnQtYmxhY2sgbWItMjQiPgogICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIFN1cHJlbWUgPGJyPiA8bWFyaz5DcnlwdG8gUG93ZXI8L21hcms+IDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1kYXJrIG1iLTQwIHNtOm1heC13LVs1MDBweF0iPgogICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlIERlRmkgbGlxdWlkaXR5IHRvIGVhcm4gdXAgdG8gNDAlIE1vbnRobHkuIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGZsZXgtd3JhcCBnYXAtMjQgbWItNjQiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/YT1zaWdudXAiIGNsYXNzPSJidG4gYnRuLS1wcmltYXJ5IGJ0bi0tbWQgbWluLXctWzI4MHB4XSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidG5fX2xhYmVsIj5HZXQgU3RhcnRlZDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaWNvbiAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iL2ljb25zL3Nwcml0ZS5zdmcjaWNvbnMta2V5Ij48L3VzZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtcHJpbWFyeS1oNiB0ZXh0LWRhcmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0IHVwIHRvIDxicj4gPG1hcms+NDAlIE1vbnRobHk8L21hcms+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iL2ltZy9saXF1aWRpdHktYXNzZXRzLnBuZyIgbG9hZGluZz0iZWFnZXIiIGFsdD0iTGlxdWlkaXR5IGFzc2V0cyIgd2lkdGg9IjUyMCIgaGVpZ2h0PSI0OTIiIGNsYXNzPSJ1bnRpbC1zbTpoaWRkZW4gbXgtYXV0byBtdC0yNCI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJibHVyIGJsdXItLWJsdWUiIHN0eWxlPSJ0b3A6IC0yOTBweDsgbGVmdDogMjQwcHg7IHdpZHRoOiA5NDBweDsgaGVpZ2h0OiA5NDBweDsiPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImJsdXIgYmx1ci0tZ3JlZW4iIHN0eWxlPSJ0b3A6IDEwMHB4OyBsZWZ0OiAwOyB3aWR0aDogODAwcHg7IGhlaWdodDogODAwcHg7Ij4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJibHVyIGJsdXItLWJsdWUiIHN0eWxlPSJ0b3A6IDQyMHB4OyBsZWZ0OiAtMjkwcHg7IHdpZHRoOiA5NDBweDsgaGVpZ2h0OiA5NDBweDsgb3BhY2l0eTogMC4yOyI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYmx1ciBibHVyLS1ncmVlbiIgc3R5bGU9InRvcDogMTUwcHg7IGxlZnQ6IDM0NHB4OyB3aWR0aDogMTA1MHB4OyBoZWlnaHQ6IDEwNTBweDsgb3BhY2l0eTogMC4yOyI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYmx1ciBibHVyLS1ibHVlIiBzdHlsZT0idG9wOiAyMDBweDsgcmlnaHQ6IC0yMHB4OyB3aWR0aDogMTA1MHB4OyBoZWlnaHQ6IDEwNTBweDsgb3BhY2l0eTogMC40OyI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYmx1ciBibHVyLS1ncmVlbiIgc3R5bGU9InRvcDogLTE1MHB4OyByaWdodDogLTMwMHB4OyB3aWR0aDogMTA1MHB4OyBoZWlnaHQ6IDEwNTBweDsgb3BhY2l0eTogMC41OyI+CiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+Cgo8c3R5bGU+CiAgICAuaWNvbi1yYWlzZWQtLXNlY29uZGFyeSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDQ2IDYgMTg1KTsKICAgIH0KICAgIC5pY29uLXJhaXNlZC0tc20gewogICAgICAgIGhlaWdodDogMzBweDsKICAgICAgICB3aWR0aDogMzBweDsKICAgIH0KICAgIC5pY29uLXJhaXNlZC0tc20gLmljb24gewogICAgICAgIGhlaWdodDogMTNweDsKICAgICAgICB3aWR0aDogMTNweDsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICB9Cjwvc3R5bGU+CiAgICA8c2VjdGlvbiBjbGFzcz0ic2VjdGlvbiBzZWN0aW9uLS14cyI+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InJlbGF0aXZlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1jZW50ZXIgbWItNDgiPgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0ZXh0LXByaW1hcnktaDEgZm9udC1ibGFjayBtYi0xNiI+T3VyIEJlc3QgUGxhbnMgRm9yIFlvdTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWRhcmsiPkNob29zZSB3aGljaCBwbGFuIHdvcmtzIGJlc3QgZm9yIHlvdTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZmxleC13cmFwIGdhcC00MCBqdXN0aWZ5LWNlbnRlciByZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwhLS0gUGxhbiAxIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1bMjgwcHhdIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJweC0zMiBweS0yNCBiZy13aGl0ZS81MCByb3VuZGVkLWItbWQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtcHJpbWFyeS1oNCBmb250LWJsYWNrIG1iLTQiPjQwJSBNb250aGx5PC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtcHJpbWFyeS1oNiBtYi0yNCI+Rm9yIExpZmV0aW1lPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFjZS15LTE2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZ2FwLTE2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpY29uLXJhaXNlZCBpY29uLXJhaXNlZC0tc2Vjb25kYXJ5IGljb24tcmFpc2VkLS1zbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24gIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iL2ljb25zL3Nwcml0ZS5zdmcjaWNvbnMtYXJyb3ctdXAtZG91YmxlIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1wcmltYXJ5LWg2IHRleHQtZGFyayBteS1hdXRvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluIERlcG9zaXQgOiAkNTAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBnYXAtMTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imljb24tcmFpc2VkIGljb24tcmFpc2VkLS1zZWNvbmRhcnkgaWNvbi1yYWlzZWQtLXNtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaWNvbiAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIvaWNvbnMvc3ByaXRlLnN2ZyNpY29ucy1hcnJvdy11cC1kb3VibGUiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXByaW1hcnktaDYgdGV4dC1kYXJrIG15LWF1dG8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXggRGVwb3NpdCA6IFVubGltaXRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBmbGV4LXdyYXAganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIG10LTQwIGdhcC14LTQwIGdhcC15LTI0Ij4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9hPXNpZ251cCIgY2xhc3M9ImJ0biBidG4tLXByaW1hcnkgYnRuLS1tZCBtaW4tdy1bMjQwcHhdIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidG5fX2xhYmVsIj5DaG9vc2UgYSBQbGFuPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaWNvbiAiPgogICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9Ii9pY29ucy9zcHJpdGUuc3ZnI2ljb25zLWxpcXVpZGl0eSI+PC91c2U+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSI/YT1mYXEiIGNsYXNzPSJsaW5rIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpY29uICI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iL2ljb25zL3Nwcml0ZS5zdmcjaWNvbnMtYm9vayI+PC91c2U+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+IEZBUSdzCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+Cjwvc2VjdGlvbj4KCiAgICA8c2VjdGlvbiBjbGFzcz0ic2VjdGlvbiBzZWN0aW9uLS14cyBzZWN0aW9uLS1kYXJrIHhzOmJnLVt1cmwoJy9pbWcvYmctbGlxdWlkaXR5LmpwZycpXSBiZy1bIzAwMDEwM10gYmctY292ZXIgYmctbm8tcmVwZWF0IGJnLWNlbnRlciAhcHQtMCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGltZyBzcmM9Ii9pbWcvYml0LWdyYXBoLnBuZyIgYWx0PSIiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIiBsb2FkaW5nPSJsYXp5IiBjbGFzcz0ibXgtYXV0byAtbWItMzIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWQtY29scy0xIHNtOmdyaWQtY29scy0yIGdhcC14LTY0IGdhcC15LTI0IGl0ZW1zLWNlbnRlciBtYXgtdy1bMTE0MHB4XSBteC1hdXRvIG1iLTQ4Ij4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0ZXh0LXByaW1hcnktaDEgZm9udC1ibGFjayBtYi04Ij5Qb3dlciBVcCE8L2gyPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtcHJpbWFyeS1oMyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXJrIGNsYXNzPSJ0ZXh0LXNlY29uZGFyeSI+WW91ciBBUFkgd2l0aCBCaXRjb3JlIFByb2ZpdDwvbWFyaz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHJhbnNsYXRlLXktOCI+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im1iLTI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgQml0Y29yZSBpcyBwZWdnZWQgd2l0aCB0aGUgVVMgZG9sbGFyIGluIDE6MSByYXRpby4gQmFjayBpbnZlc3RlZCBhbW91bnQgd2l0aCBGQkkgdG8gYm9vc3QgeW91ciBBUFkuIDwvcD4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgQmFjayAxMDAlIG9mIHRoZSBMUCBkZXBvc2l0IHdpdGggQml0bWF4IHRvIGdldCBhZGRpdGlvbmFsIHByb2ZpdCBvZiArMSUgQVBZKiA8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWJvZHktdGlueSB0ZXh0LWdyYXktZGFyayB3LWZpdCBteC1hdXRvIj4KICAgICAgICAgICAgICAgICogTFAgcmV3YXJkcyBhcmUgcGFpZCBpbiBib3RoIGludmVzdGVkIGNyeXB0b2N1cnJlbmN5IGFuZCBCaXRjb3JlIGF0IHRoZSBzYW1lIEFQWSByYXRlLiA8YnI+CiAgICAgICAgICAgICAgICAqKllvdSBtdXN0IGJhY2sgbm8gbGVzcyB0aGFuIDElIG9mIHRoZSBMUCBkZXBvc2l0IGFtb3VudCB0byBnZXQgdGhlIEFQWSBib29zdC4gPC9wPgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKCiAgICA8c2VjdGlvbiBjbGFzcz0ic2VjdGlvbiBzZWN0aW9uLS1tZCByZWxhdGl2ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBzbTpncmlkLWNvbHMtMiBnYXAteC02NCBnYXAteS0yNCBpdGVtcy1jZW50ZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGc6cGwtODAgcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIvaW1nL25lb3MtcHJlc2FsZS5wbmciIGFsdD0iTkVPUyBQcmVzYWxlIiB3aWR0aD0iNDg0IiBoZWlnaHQ9IjQ4MCIgbG9hZGluZz0ibGF6eSIgY2xhc3M9InVudGlsLXNtOm14LWF1dG8gdW50aWwtc206bWF4LXctWzcwJV0iPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0ZXh0LXByaW1hcnktaDEgZm9udC1ibGFjayBtYi0yNCI+CiAgICAgICAgICAgICAgICAgICAgICAgIEJpdGNvcmUgVG9rZW4gPG1hcmsgY2xhc3M9InRleHQtcHJpbWFyeSI+UHJlc2FsZTwvbWFyaz48L2gyPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1heC13LVs2MDBweF0iPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0ibWItMzIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjaGFuZ2UgYW55IGNyeXB0byBmb3IgQml0Y29yZSB3aXRoIHplcm8gZXhjaGFuZ2UgZmVlLiA8YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXRjb3JlIGN1cnJlbnQgcHJpY2U6ICQwLjAyIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im1iLTMyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1eSBCaXRjb3JlIGJlZm9yZSBpdCBpcyBsaXN0ZWQgb24gZXhjaGFuZ2VzLiA8L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2E9bG9naW4iIGNsYXNzPSJidG4gYnRuLS1wcmltYXJ5IGJ0bi0tbWQgbWluLXctWzI2MHB4XSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bl9fbGFiZWwiPkJ1eSBCaXRjb3JlPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24gIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iL2ljb25zL3Nwcml0ZS5zdmcjaWNvbnMtd2FsbGV0Ij48L3VzZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImJsdXIgYmx1ci0tYmx1ZSIgc3R5bGU9InRvcDogLTE0MHB4OyByaWdodDogLTMyMHB4OyB3aWR0aDogMTA1MHB4OyBoZWlnaHQ6IDEwNTBweDsgb3BhY2l0eTogMC4yOyI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYmx1ciBibHVyLS1ncmVlbiIgc3R5bGU9InRvcDogNzBweDsgbGVmdDogLTE2MHB4OyB3aWR0aDogODAwcHg7IGhlaWdodDogODAwcHg7IG9wYWNpdHk6IDAuMzsiPgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKCiAgICA8c2VjdGlvbiBjbGFzcz0ic2VjdGlvbiBzZWN0aW9uLS1sZyI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVsYXRpdmUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1jZW50ZXIgbWItNDgiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtZGFyayBtYi0xNiI+WW91ciBKb3VybmV5IHRvIEZpbmFuY2lhbCBGcmVlZG9tPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0ZXh0LXByaW1hcnktaDEgZm9udC1ibGFjayI+QmVnaW5zIDxtYXJrPkhlcmU8L21hcms+PC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBzbTpncmlkLWNvbHMtMyBnYXAtMjQgbWQ6Z2FwLTQwIG1heC13LVsxMTAwcHhdIG14LWF1dG8iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgYmctd2hpdGUvNTAiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX190b3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faWNvbiBpY29uLXJhaXNlZCBpY29uLXJhaXNlZC0tcHJpbWFyeSBpY29uLXJhaXNlZC0tbWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24gIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIvaWNvbnMvc3ByaXRlLnN2ZyNpY29ucy11c2VyIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdGl0bGUiPkNyZWF0ZSBBY2NvdW50PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2Rlc2MiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbiB1cCBhbmQgZ28gdG8geW91ciBEYXNoYm9hcmQgU3Rha2luZyBzZWN0aW9uLiA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIGJnLXdoaXRlLzUwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2ljb24gaWNvbi1yYWlzZWQgaWNvbi1yYWlzZWQtLXByaW1hcnkgaWNvbi1yYWlzZWQtLW1kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpY29uICI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iL2ljb25zL3Nwcml0ZS5zdmcjaWNvbnMtY29pbnMiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX190aXRsZSI+Q2hvb3NlIENyeXB0byBBc3NldDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19kZXNjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBjb2luIHRvIGludmVzdCBpbiBhbmQgbWFrZSBhIGRlcG9zaXQgb2YgYW55IGFtb3VudCBhbmQgdGltZWZyYW1lLiA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIGJnLXdoaXRlLzUwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2ljb24gaWNvbi1yYWlzZWQgaWNvbi1yYWlzZWQtLXByaW1hcnkgaWNvbi1yYWlzZWQtLW1kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpY29uICI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iL2ljb25zL3Nwcml0ZS5zdmcjaWNvbnMtY3VwIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdGl0bGUiPkVhcm4gUmV3YXJkcyE8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fZGVzYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZWVwIGNyeXB0byBpbiB5b3VyIHdhbGxldCBhbmQgY2xhaW0gcmV3YXJkcyBldmVyeSAyNCBob3Vycy4gPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZmxleC13cmFwIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBtdC00MCBnYXAteC00MCBnYXAteS0yNCI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2E9c2lnbnVwIiBjbGFzcz0iYnRuIGJ0bi0tcHJpbWFyeSBidG4tLW1kIG1pbi13LVsyNDBweF0iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidG5fX2xhYmVsIj5EZXBvc2l0IE5vdzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpY29uICI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9Ii9pY29ucy9zcHJpdGUuc3ZnI2ljb25zLXN0YWtlIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9hPWZhcSIgY2xhc3M9ImxpbmsiIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaWNvbiAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIvaWNvbnMvc3ByaXRlLnN2ZyNpY29ucy1ib29rIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IEZBUSdzIDwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmx1ciBibHVyLS1ibHVlIiBzdHlsZT0idG9wOiAtMjgwcHg7IGxlZnQ6IC03NzBweDsgb3BhY2l0eTogMC4yOyI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsdXIgYmx1ci0tZ3JlZW4iIHN0eWxlPSJ0b3A6IC0xMzBweDsgbGVmdDogLTI3MHB4OyB3aWR0aDogOTAwcHg7IGhlaWdodDogOTAwcHg7Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsdXIgYmx1ci0tYmx1ZSIgc3R5bGU9InRvcDogLTIzMHB4OyBsZWZ0OiA1MzBweDsgb3BhY2l0eTogMC4yOyI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsdXIgYmx1ci0tZ3JlZW4iIHN0eWxlPSJ0b3A6IC00MjBweDsgbGVmdDogMTEwMHB4OyB3aWR0aDogOTAwcHg7IGhlaWdodDogOTAwcHg7Ij48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICAKCiAgICAKICAgIDxzZWN0aW9uIGNsYXNzPSJzZWN0aW9uIHNlY3Rpb24tLWxnIj4KICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtY2VudGVyIj4KICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRleHQtcHJpbWFyeS1oMSBmb250LWJsYWNrIG1iLTI0Ij4KICAgICAgICAgICAgICAgICAgICAgPG1hcms+R28gQmV5b25kPC9tYXJrPiBZb3VyIExpbWl0cwogICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF4LXctWzg0MHB4XSBteC1hdXRvIG1iLTU2IHRleHQtZGFyayI+CiAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJtYi0yNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBlYXJuLCBzdGFrZSB5b3VyIGNyeXB0byBvciBpbnZpdGUgZm9sbG93ZXJzLCB5b3UgZWFybiBDb21taXNzaW9ucyBhbmQgYWR2YW5jZSBpbiBsZXZlbC4gPC9wPgogICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBoaWdoZXIgeW91ciBsZXZlbCBpcywgdGhlIG1vcmUgYmVuZWZpdHMgeW91IGdldC4gPGJyPiBIZXJl4oCZcyBob3cgUmV3YXJkIGlzIGNhbGN1bGF0ZWQ6IDwvcD4KICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGdhcC14LTI0IGdhcC15LTQ4IHVudGlsLXNtOmZsZXgtY29sIHVudGlsLXNtOml0ZW1zLWNlbnRlciBzbTpqdXN0aWZ5LWJldHdlZW4gbWF4LXctWzk4MHB4XSBteC1hdXRvIG1iLTQ4Ij4KICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1bMjEwcHhdIj4KICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIvaW1nL2xldmVscy1zdGFyLTEucG5nIiBhbHQ9IiIgd2lkdGg9Ijk5IiBoZWlnaHQ9Ijk1IiBjbGFzcz0ibXgtYXV0byBtdC04IG1iLVsxMHB4XSI+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXByaW1hcnktaDIgdGV4dC1wcmltYXJ5IGZvbnQtYmxhY2sgbWItOCI+NSU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtZGFyayB0ZXh0LWJvZHktaDUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFzdCBMZXZlbCA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctWzIxMHB4XSI+CiAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iL2ltZy9sZXZlbHMtc3Rhci0yLnBuZyIgYWx0PSIiIHdpZHRoPSIxNDIiIGhlaWdodD0iMTEzIiBjbGFzcz0ibXgtYXV0byI+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXByaW1hcnktaDIgdGV4dC1wcmltYXJ5IGZvbnQtYmxhY2sgbWItOCI+MSU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtZGFyayB0ZXh0LWJvZHktaDUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJuZCBMZXZlbCA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctWzIxMHB4XSI+CiAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iL2ltZy9sZXZlbHMtc3Rhci0zLnBuZyIgYWx0PSIiIHdpZHRoPSIxNjkiIGhlaWdodD0iMTEzIiBjbGFzcz0ibXgtYXV0byI+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXByaW1hcnktaDIgdGV4dC1wcmltYXJ5IGZvbnQtYmxhY2sgbWItOCI+MC41JTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1kYXJrIHRleHQtYm9keS1oNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgM3JkIExldmVsIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1ib2R5LXRpbnkgdGV4dC1sZWZ0IG1heC13LVs0MDBweF0gbXgtYXV0byI+CiAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgKllvdSBkb24ndCBoYXZlIHRvIGRlcG9zaXQgdG8gZWFybiByZWZlcnJhbCBjb21taXNzaW9ucy4gPC9wPgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iYmx1ciBibHVyLS12aXAiIHN0eWxlPSJ0b3A6IDE4MHB4OyBsZWZ0OiAtMzMwcHg7IHdpZHRoOiAxMDUwcHg7IGhlaWdodDogMTA1MHB4OyBvcGFjaXR5OiAwLjI7Ij4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3M9ImJsdXIgYmx1ci0tdmlwIiBzdHlsZT0idG9wOiA5MHB4OyByaWdodDogLTE4MHB4OyB3aWR0aDogNzgwcHg7IGhlaWdodDogNzgwcHg7IG9wYWNpdHk6IDAuMjsiPjwvZGl2PgogICAgIDwvc2VjdGlvbj4KPC9tYWluPgoKPGZvb3RlciBjbGFzcz0iZm9vdGVyIj4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX19pbm5lciI+CiAgICAgICAgICAgIDxhIGhyZWY9Ii8iIGNsYXNzPSJmb290ZXJfX2xvZ28tbGluayI+CiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iL2ltZy9sb2dvLnBuZyIgYWx0PSJMb2dvIiBsb2FkaW5nPSJsYXp5IiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjU2IiBjbGFzcz0iZm9vdGVyX19sb2dvIj4KICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX19tZW51cyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbWVudSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLW1lbnVfX2NhdGVnb3J5Ij5Db21wYW55PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXItbWVudV9fbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyLW1lbnVfX2l0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImZvb3Rlci1tZW51X19saW5rIiBocmVmPSI/YT1hYm91dCI+QWJvdXQ8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCjxkaXYgY2xhc3M9ImZvb3Rlci1tZW51Ij4KICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1tZW51X19jYXRlZ29yeSI+Q29udGFjdDwvZGl2PgogICAgPHVsIGNsYXNzPSJmb290ZXItbWVudV9fbGlzdCI+CiAgICAgICAgPGxpIGNsYXNzPSJmb290ZXItbWVudV9faXRlbSI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJmb290ZXItbWVudV9fbGluayIgaHJlZj0ibWFpbHRvOmFkbWluQGJpdGNvcmUub25saW5lIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtZW52ZWxvcGUiPjwvaT4gYWRtaW5AYml0LWNvcmUudG9wCiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2xpPgogICAgPC91bD4KPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1tZW51Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbWVudV9fY2F0ZWdvcnkiPkxlYXJuPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXItbWVudV9fbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyLW1lbnVfX2l0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImZvb3Rlci1tZW51X19saW5rIiBocmVmPSI/YT1mYXEiPkZBUTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXItbWVudV9faXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZm9vdGVyLW1lbnVfX2xpbmsiIGhyZWY9Ij9hPXN1cHBvcnQiPkdldCBIZWxwPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1tZW51Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbWVudV9fY2F0ZWdvcnkiPkxlZ2FsPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXItbWVudV9fbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyLW1lbnVfX2l0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImZvb3Rlci1tZW51X19saW5rIiBocmVmPSI/YT1ydWxlcyIgdGFyZ2V0PSJfYmxhbmsiPlRlcm1zIG9mIFVzZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXItbWVudV9faXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZm9vdGVyLW1lbnVfX2xpbmsiIGhyZWY9Ij9hPXJ1bGVzIiB0YXJnZXQ9Il9ibGFuayI+UHJpdmFjeSBQb2xpY3k8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl9fbWlzYyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfX2ZvbGxvdyI+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJmb2xsb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNvY2lhbCBtZWRpYSBsaW5rcyBjYW4gZ28gaGVyZSAtLT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX19ib3R0b20iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl9fdHJ1c3QiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfX2NvcHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+Yml0LWNvcmUudG9wIDxicj4gwqkgPHNjcmlwdD5kb2N1bWVudC53cml0ZShuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpPC9zY3JpcHQ+IEFsbCBSaWdodHMgUmVzZXJ2ZWQuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Zvb3Rlcj4KPC9kaXY+Cgo8IS0tIEFkZCBGb250IEF3ZXNvbWUgZm9yIHRoZSBpY29ucyAtLT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9mb250LWF3ZXNvbWUvNi4wLjAvY3NzL2FsbC5taW4uY3NzIj4KCjxzY3JpcHQgc3JjPSIvanMvdmVuZG9ycy5qcz92PTE2ODE0NjA1MjMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2pzL2FwcC5qcz92PTE2ODQ5NDY4MjUiPjwvc2NyaXB0Pgo8ZGl2IGlkPSJobWV0cmljc19zaXRlX3ZlcmlmaWNhdGlvbiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4yNDY2MjQ8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8vY29kZS50aWRpby5jby9rNzNqOHcxNXhkZGI2dzhod2U2dHd4dWlxdjB4dzJ3OS5qcyIgYXN5bmM+PC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg=="}},"time_used":3983,"timings":{"blocked":-1,"dns":124,"connect":20,"send":0,"wait":307,"receive":0,"ssl":3531},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css","fqdn":"cdnjs.cloudflare.com","domain":"cloudflare.com","tld":"com"},"ip":{"addr":"104.17.25.14","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.023Z","timestamp":1785145636023,"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":"cdnjs.cloudflare.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Fri, 10 Jul 2026 07:07:58 GMT","end":"Thu, 08 Oct 2026 08:07:45 GMT"},"fingerprint":{"sha1":"DF:66:97:F5:13:A2:C0:81:D3:5B:60:C4:B0:7F:CD:78:F5:91:14:D5","sha256":"3C:F2:95:73:83:BA:4D:D9:CC:85:8F:BC:7D:2C:22:CF:F3:49:9A:3A:E4:1D:FC:AE:CB:07:3D:66:89:74:0E:C5"}}},"request":{"raw":"GET /ajax/libs/font-awesome/6.0.0/css/all.min.css HTTP/1.1\r\nHost: cdnjs.cloudflare.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://bit-core.top/\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\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\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: text/css; charset=utf-8\r\ncontent-length: 15248\r\ncf-cache-status: BYPASS\r\naccess-control-allow-origin: *\r\ncache-control: no-transform, public, s-maxage=30672000, max-age=30672000, immutable\r\ncontent-encoding: br\r\nlast-modified: Mon, 07 Feb 2022 21:01:39 GMT\r\nvary: Accept-Encoding\r\nx-cdnjs-cache: HIT\r\ncross-origin-resource-policy: cross-origin\r\ntiming-allow-origin: *\r\nx-content-type-options: nosniff\r\ncf-cdnjs-via: cfworker/r2\r\nstrict-transport-security: max-age=15780000\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=1mQLi4p1L7f0b2f50oHYrQf8wdhNf1z7vmayaTStv1gcrtOLElNlWMjF7yNedt2whdS4fIekFCtOSe0ajuJZWIODOjEqtF71vdckadpCh1Gy8vZniZYZQGCQIiUBIh8WDbw2m6MF\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.01,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nserver: cloudflare\r\ncf-ray: a21ab8c148f3120a-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":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"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":89220,"size_decoded":16233,"mime_type":"text/css; charset=utf-8","magic":"ASCII text, with very long lines (65317)","md5":"dfb8fc36e102730fddf78b5494eb0035","sha1":"b513d9a39af2ee145f12c1ba03f9982960c47029","sha256":"8d321d88cb97fdedc3189506c25de9292c6e73a60ebaab496243346c6404480e","sha512":"f6eb006b5d0844ed078689e9c80215a63af294fbe80f088f52229d5a4e6ddcfca8958d5c39de03484d066beae2e00b93ae83d1e5a42f5d4f710baa8e3e7cc57a","ssdeep":"1536:iUMVM6MVMkMVM9MVMNMVMispxd1zJJ29Nll3IV7UHsR+z:Dd1NY95IV7UMR+z","tlshash":"8a93a9e9e04c05d56732c44baf99b37ca5b6f73cd5810da9f02f580c19d26a822c6f7a","first_seen":"2023-04-06T16:57:15Z","last_seen":"2026-07-29T06:55:06.809626Z","times_seen":13152,"resource_available":false,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDYuMC4wIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tCiAqIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgKEljb25zOiBDQyBCWSA0LjAsIEZvbnRzOiBTSUwgT0ZMIDEuMSwgQ29kZTogTUlUIExpY2Vuc2UpCiAqIENvcHlyaWdodCAyMDIyIEZvbnRpY29ucywgSW5jLgogKi8KLmZhe2ZvbnQtZmFtaWx5OnZhcigtLWZhLXN0eWxlLWZhbWlseSwiRm9udCBBd2Vzb21lIDYgRnJlZSIpO2ZvbnQtd2VpZ2h0OnZhcigtLWZhLXN0eWxlLDkwMCl9LmZhLC5mYS1icmFuZHMsLmZhLWR1b3RvbmUsLmZhLWxpZ2h0LC5mYS1yZWd1bGFyLC5mYS1zb2xpZCwuZmEtdGhpbiwuZmFiLC5mYWQsLmZhbCwuZmFyLC5mYXMsLmZhdHstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDtkaXNwbGF5OnZhcigtLWZhLWRpc3BsYXksaW5saW5lLWJsb2NrKTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2xpbmUtaGVpZ2h0OjE7dGV4dC1yZW5kZXJpbmc6YXV0b30uZmEtMXh7Zm9udC1zaXplOjFlbX0uZmEtMnh7Zm9udC1zaXplOjJlbX0uZmEtM3h7Zm9udC1zaXplOjNlbX0uZmEtNHh7Zm9udC1zaXplOjRlbX0uZmEtNXh7Zm9udC1zaXplOjVlbX0uZmEtNnh7Zm9udC1zaXplOjZlbX0uZmEtN3h7Zm9udC1zaXplOjdlbX0uZmEtOHh7Zm9udC1zaXplOjhlbX0uZmEtOXh7Zm9udC1zaXplOjllbX0uZmEtMTB4e2ZvbnQtc2l6ZToxMGVtfS5mYS0yeHN7Zm9udC1zaXplOi42MjVlbTtsaW5lLWhlaWdodDouMWVtO3ZlcnRpY2FsLWFsaWduOi4yMjVlbX0uZmEteHN7Zm9udC1zaXplOi43NWVtO2xpbmUtaGVpZ2h0Oi4wODMzM2VtO3ZlcnRpY2FsLWFsaWduOi4xMjVlbX0uZmEtc217Zm9udC1zaXplOi44NzVlbTtsaW5lLWhlaWdodDouMDcxNDNlbTt2ZXJ0aWNhbC1hbGlnbjouMDUzNTdlbX0uZmEtbGd7Zm9udC1zaXplOjEuMjVlbTtsaW5lLWhlaWdodDouMDVlbTt2ZXJ0aWNhbC1hbGlnbjotLjA3NWVtfS5mYS14bHtmb250LXNpemU6MS41ZW07bGluZS1oZWlnaHQ6LjA0MTY3ZW07dmVydGljYWwtYWxpZ246LS4xMjVlbX0uZmEtMnhse2ZvbnQtc2l6ZToyZW07bGluZS1oZWlnaHQ6LjAzMTI1ZW07dmVydGljYWwtYWxpZ246LS4xODc1ZW19LmZhLWZ3e3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEuMjVlbX0uZmEtdWx7bGlzdC1zdHlsZS10eXBlOm5vbmU7bWFyZ2luLWxlZnQ6dmFyKC0tZmEtbGktbWFyZ2luLDIuNWVtKTtwYWRkaW5nLWxlZnQ6MH0uZmEtdWw+bGl7cG9zaXRpb246cmVsYXRpdmV9LmZhLWxpe2xlZnQ6Y2FsYyh2YXIoLS1mYS1saS13aWR0aCwgMmVtKSotMSk7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6dmFyKC0tZmEtbGktd2lkdGgsMmVtKTtsaW5lLWhlaWdodDppbmhlcml0fS5mYS1ib3JkZXJ7Ym9yZGVyLXJhZGl1czp2YXIoLS1mYS1ib3JkZXItcmFkaXVzLC4xZW0pO2JvcmRlcjp2YXIoLS1mYS1ib3JkZXItd2lkdGgsLjA4ZW0pIHZhcigtLWZhLWJvcmRlci1zdHlsZSxzb2xpZCkgdmFyKC0tZmEtYm9yZGVyLWNvbG9yLCNlZWUpO3BhZGRpbmc6dmFyKC0tZmEtYm9yZGVyLXBhZGRpbmcsLjJlbSAuMjVlbSAuMTVlbSl9LmZhLXB1bGwtbGVmdHtmbG9hdDpsZWZ0O21hcmdpbi1yaWdodDp2YXIoLS1mYS1wdWxsLW1hcmdpbiwuM2VtKX0uZmEtcHVsbC1yaWdodHtmbG9hdDpyaWdodDttYXJnaW4tbGVmdDp2YXIoLS1mYS1wdWxsLW1hcmdpbiwuM2VtKX0uZmEtYmVhdHstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhLWJlYXQ7YW5pbWF0aW9uLW5hbWU6ZmEtYmVhdDstd2Via2l0LWFuaW1hdGlvbi1kZWxheTp2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksMCk7YW5pbWF0aW9uLWRlbGF5OnZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwwKTstd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpO2FuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpOy13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyk7YW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyk7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsZWFzZS1pbi1vdXQpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZyxlYXNlLWluLW91dCl9LmZhLWJvdW5jZXstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhLWJvdW5jZTthbmltYXRpb24tbmFtZTpmYS1ib3VuY2U7LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LDApO2FuaW1hdGlvbi1kZWxheTp2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksMCk7LXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKTthbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKTstd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sMXMpO2FuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sMXMpOy13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLGN1YmljLWJlemllciguMjgsLjg0LC40MiwxKSk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLGN1YmljLWJlemllciguMjgsLjg0LC40MiwxKSl9LmZhLWZhZGV7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmYS1mYWRlO2FuaW1hdGlvbi1uYW1lOmZhLWZhZGU7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsY3ViaWMtYmV6aWVyKC40LDAsLjYsMSkpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZyxjdWJpYy1iZXppZXIoLjQsMCwuNiwxKSl9LmZhLWJlYXQtZmFkZSwuZmEtZmFkZXstd2Via2l0LWFuaW1hdGlvbi1kZWxheTp2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksMCk7YW5pbWF0aW9uLWRlbGF5OnZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwwKTstd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpO2FuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpOy13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyk7YW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyl9LmZhLWJlYXQtZmFkZXstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhLWJlYXQtZmFkZTthbmltYXRpb24tbmFtZTpmYS1iZWF0LWZhZGU7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsY3ViaWMtYmV6aWVyKC40LDAsLjYsMSkpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZyxjdWJpYy1iZXppZXIoLjQsMCwuNiwxKSl9LmZhLWZsaXB7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmYS1mbGlwO2FuaW1hdGlvbi1uYW1lOmZhLWZsaXA7LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LDApO2FuaW1hdGlvbi1kZWxheTp2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksMCk7LXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKTthbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKTstd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sMXMpO2FuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sMXMpOy13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLGVhc2UtaW4tb3V0KTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsZWFzZS1pbi1vdXQpfS5mYS1zaGFrZXstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhLXNoYWtlO2FuaW1hdGlvbi1uYW1lOmZhLXNoYWtlOy13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyk7YW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyk7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsbGluZWFyKTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsbGluZWFyKX0uZmEtc2hha2UsLmZhLXNwaW57LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LDApO2FuaW1hdGlvbi1kZWxheTp2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksMCk7LXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKTthbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKX0uZmEtc3Bpbnstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhLXNwaW47YW5pbWF0aW9uLW5hbWU6ZmEtc3Bpbjstd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sMnMpO2FuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sMnMpOy13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLGxpbmVhcik7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLGxpbmVhcil9LmZhLXNwaW4tcmV2ZXJzZXstLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb246cmV2ZXJzZX0uZmEtcHVsc2UsLmZhLXNwaW4tcHVsc2V7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmYS1zcGluO2FuaW1hdGlvbi1uYW1lOmZhLXNwaW47LXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKTthbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKTstd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sMXMpO2FuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sMXMpOy13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLHN0ZXBzKDgpKTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsc3RlcHMoOCkpfUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5mYS1iZWF0LC5mYS1iZWF0LWZhZGUsLmZhLWJvdW5jZSwuZmEtZmFkZSwuZmEtZmxpcCwuZmEtcHVsc2UsLmZhLXNoYWtlLC5mYS1zcGluLC5mYS1zcGluLXB1bHNley13ZWJraXQtYW5pbWF0aW9uLWRlbGF5Oi0xbXM7YW5pbWF0aW9uLWRlbGF5Oi0xbXM7LXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246MW1zO2FuaW1hdGlvbi1kdXJhdGlvbjoxbXM7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OjE7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDoxO3RyYW5zaXRpb24tZGVsYXk6MHM7dHJhbnNpdGlvbi1kdXJhdGlvbjowc319QC13ZWJraXQta2V5ZnJhbWVzIGZhLWJlYXR7MCUsOTAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybTpzY2FsZSgxKX00NSV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYmVhdC1zY2FsZSwxLjI1KSk7dHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJlYXQtc2NhbGUsMS4yNSkpfX1Aa2V5ZnJhbWVzIGZhLWJlYXR7MCUsOTAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybTpzY2FsZSgxKX00NSV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYmVhdC1zY2FsZSwxLjI1KSk7dHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJlYXQtc2NhbGUsMS4yNSkpfX1ALXdlYmtpdC1rZXlmcmFtZXMgZmEtYm91bmNlezAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7dHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCl9MTAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJvdW5jZS1zdGFydC1zY2FsZS14LDEuMSksdmFyKC0tZmEtYm91bmNlLXN0YXJ0LXNjYWxlLXksLjkpKSB0cmFuc2xhdGVZKDApO3RyYW5zZm9ybTpzY2FsZSh2YXIoLS1mYS1ib3VuY2Utc3RhcnQtc2NhbGUteCwxLjEpLHZhcigtLWZhLWJvdW5jZS1zdGFydC1zY2FsZS15LC45KSkgdHJhbnNsYXRlWSgwKX0zMCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteCwuOSksdmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteSwxLjEpKSB0cmFuc2xhdGVZKHZhcigtLWZhLWJvdW5jZS1oZWlnaHQsLS41ZW0pKTt0cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteCwuOSksdmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteSwxLjEpKSB0cmFuc2xhdGVZKHZhcigtLWZhLWJvdW5jZS1oZWlnaHQsLS41ZW0pKX01MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYm91bmNlLWxhbmQtc2NhbGUteCwxLjA1KSx2YXIoLS1mYS1ib3VuY2UtbGFuZC1zY2FsZS15LC45NSkpIHRyYW5zbGF0ZVkoMCk7dHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXgsMS4wNSksdmFyKC0tZmEtYm91bmNlLWxhbmQtc2NhbGUteSwuOTUpKSB0cmFuc2xhdGVZKDApfTU3JXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKHZhcigtLWZhLWJvdW5jZS1yZWJvdW5kLC0uMTI1ZW0pKTt0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSh2YXIoLS1mYS1ib3VuY2UtcmVib3VuZCwtLjEyNWVtKSl9NjQley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7dHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCl9dG97LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTt0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKX19QGtleWZyYW1lcyBmYS1ib3VuY2V7MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTt0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKX0xMCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYm91bmNlLXN0YXJ0LXNjYWxlLXgsMS4xKSx2YXIoLS1mYS1ib3VuY2Utc3RhcnQtc2NhbGUteSwuOSkpIHRyYW5zbGF0ZVkoMCk7dHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJvdW5jZS1zdGFydC1zY2FsZS14LDEuMSksdmFyKC0tZmEtYm91bmNlLXN0YXJ0LXNjYWxlLXksLjkpKSB0cmFuc2xhdGVZKDApfTMwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1mYS1ib3VuY2UtanVtcC1zY2FsZS14LC45KSx2YXIoLS1mYS1ib3VuY2UtanVtcC1zY2FsZS15LDEuMSkpIHRyYW5zbGF0ZVkodmFyKC0tZmEtYm91bmNlLWhlaWdodCwtLjVlbSkpO3RyYW5zZm9ybTpzY2FsZSh2YXIoLS1mYS1ib3VuY2UtanVtcC1zY2FsZS14LC45KSx2YXIoLS1mYS1ib3VuY2UtanVtcC1zY2FsZS15LDEuMSkpIHRyYW5zbGF0ZVkodmFyKC0tZmEtYm91bmNlLWhlaWdodCwtLjVlbSkpfTUwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1mYS1ib3VuY2UtbGFuZC1zY2FsZS14LDEuMDUpLHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXksLjk1KSkgdHJhbnNsYXRlWSgwKTt0cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYm91bmNlLWxhbmQtc2NhbGUteCwxLjA1KSx2YXIoLS1mYS1ib3VuY2UtbGFuZC1zY2FsZS15LC45NSkpIHRyYW5zbGF0ZVkoMCl9NTcley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkodmFyKC0tZmEtYm91bmNlLXJlYm91bmQsLS4xMjVlbSkpO3RyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKHZhcigtLWZhLWJvdW5jZS1yZWJvdW5kLC0uMTI1ZW0pKX02NCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTt0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKX10b3std2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApO3RyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApfX1ALXdlYmtpdC1rZXlmcmFtZXMgZmEtZmFkZXs1MCV7b3BhY2l0eTp2YXIoLS1mYS1mYWRlLW9wYWNpdHksLjQpfX1Aa2V5ZnJhbWVzIGZhLWZhZGV7NTAle29wYWNpdHk6dmFyKC0tZmEtZmFkZS1vcGFjaXR5LC40KX19QC13ZWJraXQta2V5ZnJhbWVzIGZhLWJlYXQtZmFkZXswJSx0b3tvcGFjaXR5OnZhcigtLWZhLWJlYXQtZmFkZS1vcGFjaXR5LC40KTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm06c2NhbGUoMSl9NTAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1mYS1iZWF0LWZhZGUtc2NhbGUsMS4xMjUpKTt0cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYmVhdC1mYWRlLXNjYWxlLDEuMTI1KSl9fUBrZXlmcmFtZXMgZmEtYmVhdC1mYWRlezAlLHRve29wYWNpdHk6dmFyKC0tZmEtYmVhdC1mYWRlLW9wYWNpdHksLjQpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybTpzY2FsZSgxKX01MCV7b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJlYXQtZmFkZS1zY2FsZSwxLjEyNSkpO3RyYW5zZm9ybTpzY2FsZSh2YXIoLS1mYS1iZWF0LWZhZGUtc2NhbGUsMS4xMjUpKX19QC13ZWJraXQta2V5ZnJhbWVzIGZhLWZsaXB7NTAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwwKSx2YXIoLS1mYS1mbGlwLXksMSksdmFyKC0tZmEtZmxpcC16LDApLHZhcigtLWZhLWZsaXAtYW5nbGUsLTE4MGRlZykpO3RyYW5zZm9ybTpyb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsMCksdmFyKC0tZmEtZmxpcC15LDEpLHZhcigtLWZhLWZsaXAteiwwKSx2YXIoLS1mYS1mbGlwLWFuZ2xlLC0xODBkZWcpKX19QGtleWZyYW1lcyBmYS1mbGlwezUwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsMCksdmFyKC0tZmEtZmxpcC15LDEpLHZhcigtLWZhLWZsaXAteiwwKSx2YXIoLS1mYS1mbGlwLWFuZ2xlLC0xODBkZWcpKTt0cmFuc2Zvcm06cm90YXRlM2QodmFyKC0tZmEtZmxpcC14LDApLHZhcigtLWZhLWZsaXAteSwxKSx2YXIoLS1mYS1mbGlwLXosMCksdmFyKC0tZmEtZmxpcC1hbmdsZSwtMTgwZGVnKSl9fUAtd2Via2l0LWtleWZyYW1lcyBmYS1zaGFrZXswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTE1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKC0xNWRlZyl9NCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDE1ZGVnKX04JSwyNCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xOGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtMThkZWcpfTEyJSwyOCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDE4ZGVnKX0xNiV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0yMmRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtMjJkZWcpfTIwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjJkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMjJkZWcpfTMyJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTEyZGVnKTt0cmFuc2Zvcm06cm90YXRlKC0xMmRlZyl9MzYley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxMmRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxMmRlZyl9NDAlLHRvey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfX1Aa2V5ZnJhbWVzIGZhLXNoYWtlezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMTVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTE1ZGVnKX00JXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMTVkZWcpfTglLDI0JXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTE4ZGVnKTt0cmFuc2Zvcm06cm90YXRlKC0xOGRlZyl9MTIlLDI4JXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMThkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMThkZWcpfTE2JXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTIyZGVnKTt0cmFuc2Zvcm06cm90YXRlKC0yMmRlZyl9MjAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgyMmRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgyMmRlZyl9MzIley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMTJkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTEyZGVnKX0zNiV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDEyZGVnKTt0cmFuc2Zvcm06cm90YXRlKDEyZGVnKX00MCUsdG97LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9fUAtd2Via2l0LWtleWZyYW1lcyBmYS1zcGluezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRvey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxdHVybik7dHJhbnNmb3JtOnJvdGF0ZSgxdHVybil9fUBrZXlmcmFtZXMgZmEtc3BpbnswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pO3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX0uZmEtcm90YXRlLTkwey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9LmZhLXJvdGF0ZS0xODB7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5mYS1yb3RhdGUtMjcwey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX0uZmEtZmxpcC1ob3Jpem9udGFsey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlWCgtMSk7dHJhbnNmb3JtOnNjYWxlWCgtMSl9LmZhLWZsaXAtdmVydGljYWx7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVZKC0xKTt0cmFuc2Zvcm06c2NhbGVZKC0xKX0uZmEtZmxpcC1ib3RoLC5mYS1mbGlwLWhvcml6b250YWwuZmEtZmxpcC12ZXJ0aWNhbHstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgtMSk7dHJhbnNmb3JtOnNjYWxlKC0xKX0uZmEtcm90YXRlLWJ5ey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSh2YXIoLS1mYS1yb3RhdGUtYW5nbGUsbm9uZSkpO3RyYW5zZm9ybTpyb3RhdGUodmFyKC0tZmEtcm90YXRlLWFuZ2xlLG5vbmUpKX0uZmEtc3RhY2t7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjJlbTtsaW5lLWhlaWdodDoyZW07cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3dpZHRoOjIuNWVtfS5mYS1zdGFjay0xeCwuZmEtc3RhY2stMnh7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEwMCU7ei1pbmRleDp2YXIoLS1mYS1zdGFjay16LWluZGV4LGF1dG8pfS5mYS1zdGFjay0xeHtsaW5lLWhlaWdodDppbmhlcml0fS5mYS1zdGFjay0yeHtmb250LXNpemU6MmVtfS5mYS1pbnZlcnNle2NvbG9yOnZhcigtLWZhLWludmVyc2UsI2ZmZil9LmZhLTA6YmVmb3Jle2NvbnRlbnQ6IlwzMCJ9LmZhLTE6YmVmb3Jle2NvbnRlbnQ6IlwzMSJ9LmZhLTI6YmVmb3Jle2NvbnRlbnQ6IlwzMiJ9LmZhLTM6YmVmb3Jle2NvbnRlbnQ6IlwzMyJ9LmZhLTQ6YmVmb3Jle2NvbnRlbnQ6IlwzNCJ9LmZhLTU6YmVmb3Jle2NvbnRlbnQ6IlwzNSJ9LmZhLTY6YmVmb3Jle2NvbnRlbnQ6IlwzNiJ9LmZhLTc6YmVmb3Jle2NvbnRlbnQ6IlwzNyJ9LmZhLTg6YmVmb3Jle2NvbnRlbnQ6IlwzOCJ9LmZhLTk6YmVmb3Jle2NvbnRlbnQ6IlwzOSJ9LmZhLWE6YmVmb3Jle2NvbnRlbnQ6Ilw0MSJ9LmZhLWFkZHJlc3MtYm9vazpiZWZvcmUsLmZhLWNvbnRhY3QtYm9vazpiZWZvcmV7Y29udGVudDoiXGYyYjkifS5mYS1hZGRyZXNzLWNhcmQ6YmVmb3JlLC5mYS1jb250YWN0LWNhcmQ6YmVmb3JlLC5mYS12Y2FyZDpiZWZvcmV7Y29udGVudDoiXGYyYmIifS5mYS1hbGlnbi1jZW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDM3In0uZmEtYWxpZ24tanVzdGlmeTpiZWZvcmV7Y29udGVudDoiXGYwMzkifS5mYS1hbGlnbi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjAzNiJ9LmZhLWFsaWduLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjAzOCJ9LmZhLWFuY2hvcjpiZWZvcmV7Y29udGVudDoiXGYxM2QifS5mYS1hbmdsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjEwNyJ9LmZhLWFuZ2xlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTA0In0uZmEtYW5nbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTA1In0uZmEtYW5nbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTA2In0uZmEtYW5nbGUtZG91YmxlLWRvd246YmVmb3JlLC5mYS1hbmdsZXMtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxMDMifS5mYS1hbmdsZS1kb3VibGUtbGVmdDpiZWZvcmUsLmZhLWFuZ2xlcy1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwMCJ9LmZhLWFuZ2xlLWRvdWJsZS1yaWdodDpiZWZvcmUsLmZhLWFuZ2xlcy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDEifS5mYS1hbmdsZS1kb3VibGUtdXA6YmVmb3JlLC5mYS1hbmdsZXMtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTAyIn0uZmEtYW5raDpiZWZvcmV7Y29udGVudDoiXGY2NDQifS5mYS1hcHBsZS1hbHQ6YmVmb3JlLC5mYS1hcHBsZS13aG9sZTpiZWZvcmV7Y29udGVudDoiXGY1ZDEifS5mYS1hcmNod2F5OmJlZm9yZXtjb250ZW50OiJcZjU1NyJ9LmZhLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDYzIn0uZmEtYXJyb3ctZG93bi0xLTk6YmVmb3JlLC5mYS1zb3J0LW51bWVyaWMtYXNjOmJlZm9yZSwuZmEtc29ydC1udW1lcmljLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTYyIn0uZmEtYXJyb3ctZG93bi05LTE6YmVmb3JlLC5mYS1zb3J0LW51bWVyaWMtZGVzYzpiZWZvcmUsLmZhLXNvcnQtbnVtZXJpYy1kb3duLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODYifS5mYS1hcnJvdy1kb3duLWEtejpiZWZvcmUsLmZhLXNvcnQtYWxwaGEtYXNjOmJlZm9yZSwuZmEtc29ydC1hbHBoYS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE1ZCJ9LmZhLWFycm93LWRvd24tbG9uZzpiZWZvcmUsLmZhLWxvbmctYXJyb3ctZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNzUifS5mYS1hcnJvdy1kb3duLXNob3J0LXdpZGU6YmVmb3JlLC5mYS1zb3J0LWFtb3VudC1kZXNjOmJlZm9yZSwuZmEtc29ydC1hbW91bnQtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg0In0uZmEtYXJyb3ctZG93bi13aWRlLXNob3J0OmJlZm9yZSwuZmEtc29ydC1hbW91bnQtYXNjOmJlZm9yZSwuZmEtc29ydC1hbW91bnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjAifS5mYS1hcnJvdy1kb3duLXotYTpiZWZvcmUsLmZhLXNvcnQtYWxwaGEtZGVzYzpiZWZvcmUsLmZhLXNvcnQtYWxwaGEtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODgxIn0uZmEtYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwNjAifS5mYS1hcnJvdy1sZWZ0LWxvbmc6YmVmb3JlLC5mYS1sb25nLWFycm93LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTc3In0uZmEtYXJyb3ctcG9pbnRlcjpiZWZvcmUsLmZhLW1vdXNlLXBvaW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ1In0uZmEtYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDYxIn0uZmEtYXJyb3ctcmlnaHQtYXJyb3ctbGVmdDpiZWZvcmUsLmZhLWV4Y2hhbmdlOmJlZm9yZXtjb250ZW50OiJcZjBlYyJ9LmZhLWFycm93LXJpZ2h0LWZyb20tYnJhY2tldDpiZWZvcmUsLmZhLXNpZ24tb3V0OmJlZm9yZXtjb250ZW50OiJcZjA4YiJ9LmZhLWFycm93LXJpZ2h0LWxvbmc6YmVmb3JlLC5mYS1sb25nLWFycm93LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjE3OCJ9LmZhLWFycm93LXJpZ2h0LXRvLWJyYWNrZXQ6YmVmb3JlLC5mYS1zaWduLWluOmJlZm9yZXtjb250ZW50OiJcZjA5MCJ9LmZhLWFycm93LWxlZnQtcm90YXRlOmJlZm9yZSwuZmEtYXJyb3ctcm90YXRlLWJhY2s6YmVmb3JlLC5mYS1hcnJvdy1yb3RhdGUtYmFja3dhcmQ6YmVmb3JlLC5mYS1hcnJvdy1yb3RhdGUtbGVmdDpiZWZvcmUsLmZhLXVuZG86YmVmb3Jle2NvbnRlbnQ6IlxmMGUyIn0uZmEtYXJyb3ctcmlnaHQtcm90YXRlOmJlZm9yZSwuZmEtYXJyb3ctcm90YXRlLWZvcndhcmQ6YmVmb3JlLC5mYS1hcnJvdy1yb3RhdGUtcmlnaHQ6YmVmb3JlLC5mYS1yZWRvOmJlZm9yZXtjb250ZW50OiJcZjAxZSJ9LmZhLWFycm93LXRyZW5kLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxlMDk3In0uZmEtYXJyb3ctdHJlbmQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxlMDk4In0uZmEtYXJyb3ctdHVybi1kb3duOmJlZm9yZSwuZmEtbGV2ZWwtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNDkifS5mYS1hcnJvdy10dXJuLXVwOmJlZm9yZSwuZmEtbGV2ZWwtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ4In0uZmEtYXJyb3ctdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDYyIn0uZmEtYXJyb3ctdXAtMS05OmJlZm9yZSwuZmEtc29ydC1udW1lcmljLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MyJ9LmZhLWFycm93LXVwLTktMTpiZWZvcmUsLmZhLXNvcnQtbnVtZXJpYy11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg3In0uZmEtYXJyb3ctdXAtYS16OmJlZm9yZSwuZmEtc29ydC1hbHBoYS11cDpiZWZvcmV7Y29udGVudDoiXGYxNWUifS5mYS1hcnJvdy11cC1mcm9tLWJyYWNrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDlhIn0uZmEtYXJyb3ctdXAtbG9uZzpiZWZvcmUsLmZhLWxvbmctYXJyb3ctdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTc2In0uZmEtYXJyb3ctdXAtcmlnaHQtZnJvbS1zcXVhcmU6YmVmb3JlLC5mYS1leHRlcm5hbC1saW5rOmJlZm9yZXtjb250ZW50OiJcZjA4ZSJ9LmZhLWFycm93LXVwLXNob3J0LXdpZGU6YmVmb3JlLC5mYS1zb3J0LWFtb3VudC11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg1In0uZmEtYXJyb3ctdXAtd2lkZS1zaG9ydDpiZWZvcmUsLmZhLXNvcnQtYW1vdW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MSJ9LmZhLWFycm93LXVwLXotYTpiZWZvcmUsLmZhLXNvcnQtYWxwaGEtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4MiJ9LmZhLWFycm93cy1oOmJlZm9yZSwuZmEtYXJyb3dzLWxlZnQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDdlIn0uZmEtYXJyb3dzLXJvdGF0ZTpiZWZvcmUsLmZhLXJlZnJlc2g6YmVmb3JlLC5mYS1zeW5jOmJlZm9yZXtjb250ZW50OiJcZjAyMSJ9LmZhLWFycm93cy11cC1kb3duOmJlZm9yZSwuZmEtYXJyb3dzLXY6YmVmb3Jle2NvbnRlbnQ6IlxmMDdkIn0uZmEtYXJyb3dzLXVwLWRvd24tbGVmdC1yaWdodDpiZWZvcmUsLmZhLWFycm93czpiZWZvcmV7Y29udGVudDoiXGYwNDcifS5mYS1hc3RlcmlzazpiZWZvcmV7Y29udGVudDoiXDJhIn0uZmEtYXQ6YmVmb3Jle2NvbnRlbnQ6Ilw0MCJ9LmZhLWF0b206YmVmb3Jle2NvbnRlbnQ6IlxmNWQyIn0uZmEtYXVkaW8tZGVzY3JpcHRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMjllIn0uZmEtYXVzdHJhbC1zaWduOmJlZm9yZXtjb250ZW50OiJcZTBhOSJ9LmZhLWF3YXJkOmJlZm9yZXtjb250ZW50OiJcZjU1OSJ9LmZhLWI6YmVmb3Jle2NvbnRlbnQ6Ilw0MiJ9LmZhLWJhYnk6YmVmb3Jle2NvbnRlbnQ6IlxmNzdjIn0uZmEtYmFieS1jYXJyaWFnZTpiZWZvcmUsLmZhLWNhcnJpYWdlLWJhYnk6YmVmb3Jle2NvbnRlbnQ6IlxmNzdkIn0uZmEtYmFja3dhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDRhIn0uZmEtYmFja3dhcmQtZmFzdDpiZWZvcmUsLmZhLWZhc3QtYmFja3dhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDQ5In0uZmEtYmFja3dhcmQtc3RlcDpiZWZvcmUsLmZhLXN0ZXAtYmFja3dhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDQ4In0uZmEtYmFjb246YmVmb3Jle2NvbnRlbnQ6IlxmN2U1In0uZmEtYmFjdGVyaWE6YmVmb3Jle2NvbnRlbnQ6IlxlMDU5In0uZmEtYmFjdGVyaXVtOmJlZm9yZXtjb250ZW50OiJcZTA1YSJ9LmZhLWJhZy1zaG9wcGluZzpiZWZvcmUsLmZhLXNob3BwaW5nLWJhZzpiZWZvcmV7Y29udGVudDoiXGYyOTAifS5mYS1iYWhhaTpiZWZvcmV7Y29udGVudDoiXGY2NjYifS5mYS1iYWh0LXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMGFjIn0uZmEtYmFuOmJlZm9yZSwuZmEtY2FuY2VsOmJlZm9yZXtjb250ZW50OiJcZjA1ZSJ9LmZhLWJhbi1zbW9raW5nOmJlZm9yZSwuZmEtc21va2luZy1iYW46YmVmb3Jle2NvbnRlbnQ6IlxmNTRkIn0uZmEtYmFuZC1haWQ6YmVmb3JlLC5mYS1iYW5kYWdlOmJlZm9yZXtjb250ZW50OiJcZjQ2MiJ9LmZhLWJhcmNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDJhIn0uZmEtYmFyczpiZWZvcmUsLmZhLW5hdmljb246YmVmb3Jle2NvbnRlbnQ6IlxmMGM5In0uZmEtYmFycy1wcm9ncmVzczpiZWZvcmUsLmZhLXRhc2tzLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4MjgifS5mYS1iYXJzLXN0YWdnZXJlZDpiZWZvcmUsLmZhLXJlb3JkZXI6YmVmb3JlLC5mYS1zdHJlYW06YmVmb3Jle2NvbnRlbnQ6IlxmNTUwIn0uZmEtYmFzZWJhbGwtYmFsbDpiZWZvcmUsLmZhLWJhc2ViYWxsOmJlZm9yZXtjb250ZW50OiJcZjQzMyJ9LmZhLWJhc2ViYWxsLWJhdC1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQzMiJ9LmZhLWJhc2tldC1zaG9wcGluZzpiZWZvcmUsLmZhLXNob3BwaW5nLWJhc2tldDpiZWZvcmV7Y29udGVudDoiXGYyOTEifS5mYS1iYXNrZXRiYWxsLWJhbGw6YmVmb3JlLC5mYS1iYXNrZXRiYWxsOmJlZm9yZXtjb250ZW50OiJcZjQzNCJ9LmZhLWJhdGg6YmVmb3JlLC5mYS1iYXRodHViOmJlZm9yZXtjb250ZW50OiJcZjJjZCJ9LmZhLWJhdHRlcnktMDpiZWZvcmUsLmZhLWJhdHRlcnktZW1wdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ0In0uZmEtYmF0dGVyeS01OmJlZm9yZSwuZmEtYmF0dGVyeS1mdWxsOmJlZm9yZSwuZmEtYmF0dGVyeTpiZWZvcmV7Y29udGVudDoiXGYyNDAifS5mYS1iYXR0ZXJ5LTM6YmVmb3JlLC5mYS1iYXR0ZXJ5LWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMjQyIn0uZmEtYmF0dGVyeS0yOmJlZm9yZSwuZmEtYmF0dGVyeS1xdWFydGVyOmJlZm9yZXtjb250ZW50OiJcZjI0MyJ9LmZhLWJhdHRlcnktNDpiZWZvcmUsLmZhLWJhdHRlcnktdGhyZWUtcXVhcnRlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjQxIn0uZmEtYmVkOmJlZm9yZXtjb250ZW50OiJcZjIzNiJ9LmZhLWJlZC1wdWxzZTpiZWZvcmUsLmZhLXByb2NlZHVyZXM6YmVmb3Jle2NvbnRlbnQ6IlxmNDg3In0uZmEtYmVlci1tdWctZW1wdHk6YmVmb3JlLC5mYS1iZWVyOmJlZm9yZXtjb250ZW50OiJcZjBmYyJ9LmZhLWJlbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMGYzIn0uZmEtYmVsbC1jb25jaWVyZ2U6YmVmb3JlLC5mYS1jb25jaWVyZ2UtYmVsbDpiZWZvcmV7Y29udGVudDoiXGY1NjIifS5mYS1iZWxsLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjFmNiJ9LmZhLWJlemllci1jdXJ2ZTpiZWZvcmV7Y29udGVudDoiXGY1NWIifS5mYS1iaWN5Y2xlOmJlZm9yZXtjb250ZW50OiJcZjIwNiJ9LmZhLWJpbm9jdWxhcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMWU1In0uZmEtYmlvaGF6YXJkOmJlZm9yZXtjb250ZW50OiJcZjc4MCJ9LmZhLWJpdGNvaW4tc2lnbjpiZWZvcmV7Y29udGVudDoiXGUwYjQifS5mYS1ibGVuZGVyOmJlZm9yZXtjb250ZW50OiJcZjUxNyJ9LmZhLWJsZW5kZXItcGhvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmNmI2In0uZmEtYmxvZzpiZWZvcmV7Y29udGVudDoiXGY3ODEifS5mYS1ib2xkOmJlZm9yZXtjb250ZW50OiJcZjAzMiJ9LmZhLWJvbHQ6YmVmb3JlLC5mYS16YXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGU3In0uZmEtYm9sdC1saWdodG5pbmc6YmVmb3Jle2NvbnRlbnQ6IlxlMGI3In0uZmEtYm9tYjpiZWZvcmV7Y29udGVudDoiXGYxZTIifS5mYS1ib25lOmJlZm9yZXtjb250ZW50OiJcZjVkNyJ9LmZhLWJvbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNTVjIn0uZmEtYm9vazpiZWZvcmV7Y29udGVudDoiXGYwMmQifS5mYS1hdGxhczpiZWZvcmUsLmZhLWJvb2stYXRsYXM6YmVmb3Jle2NvbnRlbnQ6IlxmNTU4In0uZmEtYmlibGU6YmVmb3JlLC5mYS1ib29rLWJpYmxlOmJlZm9yZXtjb250ZW50OiJcZjY0NyJ9LmZhLWJvb2stam91cm5hbC13aGlsbHM6YmVmb3JlLC5mYS1qb3VybmFsLXdoaWxsczpiZWZvcmV7Y29udGVudDoiXGY2NmEifS5mYS1ib29rLW1lZGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmN2U2In0uZmEtYm9vay1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjUxOCJ9LmZhLWJvb2stb3Blbi1yZWFkZXI6YmVmb3JlLC5mYS1ib29rLXJlYWRlcjpiZWZvcmV7Y29udGVudDoiXGY1ZGEifS5mYS1ib29rLXF1cmFuOmJlZm9yZSwuZmEtcXVyYW46YmVmb3Jle2NvbnRlbnQ6IlxmNjg3In0uZmEtYm9vay1kZWFkOmJlZm9yZSwuZmEtYm9vay1za3VsbDpiZWZvcmV7Y29udGVudDoiXGY2YjcifS5mYS1ib29rbWFyazpiZWZvcmV7Y29udGVudDoiXGYwMmUifS5mYS1ib3JkZXItYWxsOmJlZm9yZXtjb250ZW50OiJcZjg0YyJ9LmZhLWJvcmRlci1ub25lOmJlZm9yZXtjb250ZW50OiJcZjg1MCJ9LmZhLWJvcmRlci1zdHlsZTpiZWZvcmUsLmZhLWJvcmRlci10b3AtbGVmdDpiZWZvcmV7Y29udGVudDoiXGY4NTMifS5mYS1ib3dsaW5nLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDM2In0uZmEtYm94OmJlZm9yZXtjb250ZW50OiJcZjQ2NiJ9LmZhLWFyY2hpdmU6YmVmb3JlLC5mYS1ib3gtYXJjaGl2ZTpiZWZvcmV7Y29udGVudDoiXGYxODcifS5mYS1ib3gtb3BlbjpiZWZvcmV7Y29udGVudDoiXGY0OWUifS5mYS1ib3gtdGlzc3VlOmJlZm9yZXtjb250ZW50OiJcZTA1YiJ9LmZhLWJveGVzLWFsdDpiZWZvcmUsLmZhLWJveGVzLXN0YWNrZWQ6YmVmb3JlLC5mYS1ib3hlczpiZWZvcmV7Y29udGVudDoiXGY0NjgifS5mYS1icmFpbGxlOmJlZm9yZXtjb250ZW50OiJcZjJhMSJ9LmZhLWJyYWluOmJlZm9yZXtjb250ZW50OiJcZjVkYyJ9LmZhLWJyYXppbGlhbi1yZWFsLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlNDZjIn0uZmEtYnJlYWQtc2xpY2U6YmVmb3Jle2NvbnRlbnQ6IlxmN2VjIn0uZmEtYnJpZWZjYXNlOmJlZm9yZXtjb250ZW50OiJcZjBiMSJ9LmZhLWJyaWVmY2FzZS1tZWRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjQ2OSJ9LmZhLWJyb29tOmJlZm9yZXtjb250ZW50OiJcZjUxYSJ9LmZhLWJyb29tLWJhbGw6YmVmb3JlLC5mYS1xdWlkZGl0Y2gtYnJvb20tYmFsbDpiZWZvcmUsLmZhLXF1aWRkaXRjaDpiZWZvcmV7Y29udGVudDoiXGY0NTgifS5mYS1icnVzaDpiZWZvcmV7Y29udGVudDoiXGY1NWQifS5mYS1idWc6YmVmb3Jle2NvbnRlbnQ6IlxmMTg4In0uZmEtYnVnLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTQ5MCJ9LmZhLWJ1aWxkaW5nOmJlZm9yZXtjb250ZW50OiJcZjFhZCJ9LmZhLWJhbms6YmVmb3JlLC5mYS1idWlsZGluZy1jb2x1bW5zOmJlZm9yZSwuZmEtaW5zdGl0dXRpb246YmVmb3JlLC5mYS1tdXNldW06YmVmb3JlLC5mYS11bml2ZXJzaXR5OmJlZm9yZXtjb250ZW50OiJcZjE5YyJ9LmZhLWJ1bGxob3JuOmJlZm9yZXtjb250ZW50OiJcZjBhMSJ9LmZhLWJ1bGxzZXllOmJlZm9yZXtjb250ZW50OiJcZjE0MCJ9LmZhLWJ1cmdlcjpiZWZvcmUsLmZhLWhhbWJ1cmdlcjpiZWZvcmV7Y29udGVudDoiXGY4MDUifS5mYS1idXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjA3In0uZmEtYnVzLWFsdDpiZWZvcmUsLmZhLWJ1cy1zaW1wbGU6YmVmb3Jle2NvbnRlbnQ6IlxmNTVlIn0uZmEtYnJpZWZjYXNlLWNsb2NrOmJlZm9yZSwuZmEtYnVzaW5lc3MtdGltZTpiZWZvcmV7Y29udGVudDoiXGY2NGEifS5mYS1jOmJlZm9yZXtjb250ZW50OiJcNDMifS5mYS1iaXJ0aGRheS1jYWtlOmJlZm9yZSwuZmEtY2FrZS1jYW5kbGVzOmJlZm9yZSwuZmEtY2FrZTpiZWZvcmV7Y29udGVudDoiXGYxZmQifS5mYS1jYWxjdWxhdG9yOmJlZm9yZXtjb250ZW50OiJcZjFlYyJ9LmZhLWNhbGVuZGFyOmJlZm9yZXtjb250ZW50OiJcZjEzMyJ9LmZhLWNhbGVuZGFyLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjI3NCJ9LmZhLWNhbGVuZGFyLWRheTpiZWZvcmV7Y29udGVudDoiXGY3ODMifS5mYS1jYWxlbmRhci1hbHQ6YmVmb3JlLC5mYS1jYWxlbmRhci1kYXlzOmJlZm9yZXtjb250ZW50OiJcZjA3MyJ9LmZhLWNhbGVuZGFyLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjI3MiJ9LmZhLWNhbGVuZGFyLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjcxIn0uZmEtY2FsZW5kYXItd2VlazpiZWZvcmV7Y29udGVudDoiXGY3ODQifS5mYS1jYWxlbmRhci10aW1lczpiZWZvcmUsLmZhLWNhbGVuZGFyLXhtYXJrOmJlZm9yZXtjb250ZW50OiJcZjI3MyJ9LmZhLWNhbWVyYS1hbHQ6YmVmb3JlLC5mYS1jYW1lcmE6YmVmb3Jle2NvbnRlbnQ6IlxmMDMwIn0uZmEtY2FtZXJhLXJldHJvOmJlZm9yZXtjb250ZW50OiJcZjA4MyJ9LmZhLWNhbWVyYS1yb3RhdGU6YmVmb3Jle2NvbnRlbnQ6IlxlMGQ4In0uZmEtY2FtcGdyb3VuZDpiZWZvcmV7Y29udGVudDoiXGY2YmIifS5mYS1jYW5keS1jYW5lOmJlZm9yZXtjb250ZW50OiJcZjc4NiJ9LmZhLWNhbm5hYmlzOmJlZm9yZXtjb250ZW50OiJcZjU1ZiJ9LmZhLWNhcHN1bGVzOmJlZm9yZXtjb250ZW50OiJcZjQ2YiJ9LmZhLWF1dG9tb2JpbGU6YmVmb3JlLC5mYS1jYXI6YmVmb3Jle2NvbnRlbnQ6IlxmMWI5In0uZmEtYmF0dGVyeS1jYXI6YmVmb3JlLC5mYS1jYXItYmF0dGVyeTpiZWZvcmV7Y29udGVudDoiXGY1ZGYifS5mYS1jYXItY3Jhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNWUxIn0uZmEtY2FyLWFsdDpiZWZvcmUsLmZhLWNhci1yZWFyOmJlZm9yZXtjb250ZW50OiJcZjVkZSJ9LmZhLWNhci1zaWRlOmJlZm9yZXtjb250ZW50OiJcZjVlNCJ9LmZhLWNhcmF2YW46YmVmb3Jle2NvbnRlbnQ6IlxmOGZmIn0uZmEtY2FyZXQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwZDcifS5mYS1jYXJldC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjBkOSJ9LmZhLWNhcmV0LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBkYSJ9LmZhLWNhcmV0LXVwOmJlZm9yZXtjb250ZW50OiJcZjBkOCJ9LmZhLWNhcnJvdDpiZWZvcmV7Y29udGVudDoiXGY3ODcifS5mYS1jYXJ0LWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMjE4In0uZmEtY2FydC1mbGF0YmVkOmJlZm9yZSwuZmEtZG9sbHktZmxhdGJlZDpiZWZvcmV7Y29udGVudDoiXGY0NzQifS5mYS1jYXJ0LWZsYXRiZWQtc3VpdGNhc2U6YmVmb3JlLC5mYS1sdWdnYWdlLWNhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTlkIn0uZmEtY2FydC1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjIxNyJ9LmZhLWNhcnQtc2hvcHBpbmc6YmVmb3JlLC5mYS1zaG9wcGluZy1jYXJ0OmJlZm9yZXtjb250ZW50OiJcZjA3YSJ9LmZhLWNhc2gtcmVnaXN0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNzg4In0uZmEtY2F0OmJlZm9yZXtjb250ZW50OiJcZjZiZSJ9LmZhLWNlZGktc2lnbjpiZWZvcmV7Y29udGVudDoiXGUwZGYifS5mYS1jZW50LXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlM2Y1In0uZmEtY2VydGlmaWNhdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGEzIn0uZmEtY2hhaXI6YmVmb3Jle2NvbnRlbnQ6IlxmNmMwIn0uZmEtYmxhY2tib2FyZDpiZWZvcmUsLmZhLWNoYWxrYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTFiIn0uZmEtY2hhbGtib2FyZC10ZWFjaGVyOmJlZm9yZSwuZmEtY2hhbGtib2FyZC11c2VyOmJlZm9yZXtjb250ZW50OiJcZjUxYyJ9LmZhLWNoYW1wYWduZS1nbGFzc2VzOmJlZm9yZSwuZmEtZ2xhc3MtY2hlZXJzOmJlZm9yZXtjb250ZW50OiJcZjc5ZiJ9LmZhLWNoYXJnaW5nLXN0YXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNWU3In0uZmEtYXJlYS1jaGFydDpiZWZvcmUsLmZhLWNoYXJ0LWFyZWE6YmVmb3Jle2NvbnRlbnQ6IlxmMWZlIn0uZmEtYmFyLWNoYXJ0OmJlZm9yZSwuZmEtY2hhcnQtYmFyOmJlZm9yZXtjb250ZW50OiJcZjA4MCJ9LmZhLWNoYXJ0LWNvbHVtbjpiZWZvcmV7Y29udGVudDoiXGUwZTMifS5mYS1jaGFydC1nYW50dDpiZWZvcmV7Y29udGVudDoiXGUwZTQifS5mYS1jaGFydC1saW5lOmJlZm9yZSwuZmEtbGluZS1jaGFydDpiZWZvcmV7Y29udGVudDoiXGYyMDEifS5mYS1jaGFydC1waWU6YmVmb3JlLC5mYS1waWUtY2hhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjAwIn0uZmEtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDBjIn0uZmEtY2hlY2stZG91YmxlOmJlZm9yZXtjb250ZW50OiJcZjU2MCJ9LmZhLWNoZWNrLXRvLXNsb3Q6YmVmb3JlLC5mYS12b3RlLXllYTpiZWZvcmV7Y29udGVudDoiXGY3NzIifS5mYS1jaGVlc2U6YmVmb3Jle2NvbnRlbnQ6IlxmN2VmIn0uZmEtY2hlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmNDM5In0uZmEtY2hlc3MtYmlzaG9wOmJlZm9yZXtjb250ZW50OiJcZjQzYSJ9LmZhLWNoZXNzLWJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjQzYyJ9LmZhLWNoZXNzLWtpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNDNmIn0uZmEtY2hlc3Mta25pZ2h0OmJlZm9yZXtjb250ZW50OiJcZjQ0MSJ9LmZhLWNoZXNzLXBhd246YmVmb3Jle2NvbnRlbnQ6IlxmNDQzIn0uZmEtY2hlc3MtcXVlZW46YmVmb3Jle2NvbnRlbnQ6IlxmNDQ1In0uZmEtY2hlc3Mtcm9vazpiZWZvcmV7Y29udGVudDoiXGY0NDcifS5mYS1jaGV2cm9uLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDc4In0uZmEtY2hldnJvbi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjA1MyJ9LmZhLWNoZXZyb24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDU0In0uZmEtY2hldnJvbi11cDpiZWZvcmV7Y29udGVudDoiXGYwNzcifS5mYS1jaGlsZDpiZWZvcmV7Y29udGVudDoiXGYxYWUifS5mYS1jaHVyY2g6YmVmb3Jle2NvbnRlbnQ6IlxmNTFkIn0uZmEtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjExMSJ9LmZhLWFycm93LWNpcmNsZS1kb3duOmJlZm9yZSwuZmEtY2lyY2xlLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMGFiIn0uZmEtYXJyb3ctY2lyY2xlLWxlZnQ6YmVmb3JlLC5mYS1jaXJjbGUtYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwYTgifS5mYS1hcnJvdy1jaXJjbGUtcmlnaHQ6YmVmb3JlLC5mYS1jaXJjbGUtYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE5In0uZmEtYXJyb3ctY2lyY2xlLXVwOmJlZm9yZSwuZmEtY2lyY2xlLWFycm93LXVwOmJlZm9yZXtjb250ZW50OiJcZjBhYSJ9LmZhLWNoZWNrLWNpcmNsZTpiZWZvcmUsLmZhLWNpcmNsZS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYwNTgifS5mYS1jaGV2cm9uLWNpcmNsZS1kb3duOmJlZm9yZSwuZmEtY2lyY2xlLWNoZXZyb24tZG93bjpiZWZvcmV7Y29udGVudDoiXGYxM2EifS5mYS1jaGV2cm9uLWNpcmNsZS1sZWZ0OmJlZm9yZSwuZmEtY2lyY2xlLWNoZXZyb24tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMzcifS5mYS1jaGV2cm9uLWNpcmNsZS1yaWdodDpiZWZvcmUsLmZhLWNpcmNsZS1jaGV2cm9uLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEzOCJ9LmZhLWNoZXZyb24tY2lyY2xlLXVwOmJlZm9yZSwuZmEtY2lyY2xlLWNoZXZyb24tdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTM5In0uZmEtY2lyY2xlLWRvbGxhci10by1zbG90OmJlZm9yZSwuZmEtZG9uYXRlOmJlZm9yZXtjb250ZW50OiJcZjRiOSJ9LmZhLWNpcmNsZS1kb3Q6YmVmb3JlLC5mYS1kb3QtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjE5MiJ9LmZhLWFycm93LWFsdC1jaXJjbGUtZG93bjpiZWZvcmUsLmZhLWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjM1OCJ9LmZhLWNpcmNsZS1leGNsYW1hdGlvbjpiZWZvcmUsLmZhLWV4Y2xhbWF0aW9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNmEifS5mYS1jaXJjbGUtaDpiZWZvcmUsLmZhLWhvc3BpdGFsLXN5bWJvbDpiZWZvcmV7Y29udGVudDoiXGY0N2UifS5mYS1hZGp1c3Q6YmVmb3JlLC5mYS1jaXJjbGUtaGFsZi1zdHJva2U6YmVmb3Jle2NvbnRlbnQ6IlxmMDQyIn0uZmEtY2lyY2xlLWluZm86YmVmb3JlLC5mYS1pbmZvLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNWEifS5mYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnQ6YmVmb3JlLC5mYS1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzNTkifS5mYS1jaXJjbGUtbWludXM6YmVmb3JlLC5mYS1taW51cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU2In0uZmEtY2lyY2xlLW5vdGNoOmJlZm9yZXtjb250ZW50OiJcZjFjZSJ9LmZhLWNpcmNsZS1wYXVzZTpiZWZvcmUsLmZhLXBhdXNlLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyOGIifS5mYS1jaXJjbGUtcGxheTpiZWZvcmUsLmZhLXBsYXktY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjE0NCJ9LmZhLWNpcmNsZS1wbHVzOmJlZm9yZSwuZmEtcGx1cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU1In0uZmEtY2lyY2xlLXF1ZXN0aW9uOmJlZm9yZSwuZmEtcXVlc3Rpb24tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1OSJ9LmZhLWNpcmNsZS1yYWRpYXRpb246YmVmb3JlLC5mYS1yYWRpYXRpb24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjdiYSJ9LmZhLWFycm93LWFsdC1jaXJjbGUtcmlnaHQ6YmVmb3JlLC5mYS1jaXJjbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzVhIn0uZmEtY2lyY2xlLXN0b3A6YmVmb3JlLC5mYS1zdG9wLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyOGQifS5mYS1hcnJvdy1hbHQtY2lyY2xlLXVwOmJlZm9yZSwuZmEtY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjM1YiJ9LmZhLWNpcmNsZS11c2VyOmJlZm9yZSwuZmEtdXNlci1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmJkIn0uZmEtY2lyY2xlLXhtYXJrOmJlZm9yZSwuZmEtdGltZXMtY2lyY2xlOmJlZm9yZSwuZmEteG1hcmstY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NyJ9LmZhLWNpdHk6YmVmb3Jle2NvbnRlbnQ6IlxmNjRmIn0uZmEtY2xhcHBlcmJvYXJkOmJlZm9yZXtjb250ZW50OiJcZTEzMSJ9LmZhLWNsaXBib2FyZDpiZWZvcmV7Y29udGVudDoiXGYzMjgifS5mYS1jbGlwYm9hcmQtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmNDZjIn0uZmEtY2xpcGJvYXJkLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNDZkIn0uZmEtY2xvY2stZm91cjpiZWZvcmUsLmZhLWNsb2NrOmJlZm9yZXtjb250ZW50OiJcZjAxNyJ9LmZhLWNsb2NrLXJvdGF0ZS1sZWZ0OmJlZm9yZSwuZmEtaGlzdG9yeTpiZWZvcmV7Y29udGVudDoiXGYxZGEifS5mYS1jbG9uZTpiZWZvcmV7Y29udGVudDoiXGYyNGQifS5mYS1jbG9zZWQtY2FwdGlvbmluZzpiZWZvcmV7Y29udGVudDoiXGYyMGEifS5mYS1jbG91ZDpiZWZvcmV7Y29udGVudDoiXGYwYzIifS5mYS1jbG91ZC1hcnJvdy1kb3duOmJlZm9yZSwuZmEtY2xvdWQtZG93bmxvYWQtYWx0OmJlZm9yZSwuZmEtY2xvdWQtZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGVkIn0uZmEtY2xvdWQtYXJyb3ctdXA6YmVmb3JlLC5mYS1jbG91ZC11cGxvYWQtYWx0OmJlZm9yZSwuZmEtY2xvdWQtdXBsb2FkOmJlZm9yZXtjb250ZW50OiJcZjBlZSJ9LmZhLWNsb3VkLW1lYXRiYWxsOmJlZm9yZXtjb250ZW50OiJcZjczYiJ9LmZhLWNsb3VkLW1vb246YmVmb3Jle2NvbnRlbnQ6IlxmNmMzIn0uZmEtY2xvdWQtbW9vbi1yYWluOmJlZm9yZXtjb250ZW50OiJcZjczYyJ9LmZhLWNsb3VkLXJhaW46YmVmb3Jle2NvbnRlbnQ6IlxmNzNkIn0uZmEtY2xvdWQtc2hvd2Vycy1oZWF2eTpiZWZvcmV7Y29udGVudDoiXGY3NDAifS5mYS1jbG91ZC1zdW46YmVmb3Jle2NvbnRlbnQ6IlxmNmM0In0uZmEtY2xvdWQtc3VuLXJhaW46YmVmb3Jle2NvbnRlbnQ6IlxmNzQzIn0uZmEtY2xvdmVyOmJlZm9yZXtjb250ZW50OiJcZTEzOSJ9LmZhLWNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTIxIn0uZmEtY29kZS1icmFuY2g6YmVmb3Jle2NvbnRlbnQ6IlxmMTI2In0uZmEtY29kZS1jb21taXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzg2In0uZmEtY29kZS1jb21wYXJlOmJlZm9yZXtjb250ZW50OiJcZTEzYSJ9LmZhLWNvZGUtZm9yazpiZWZvcmV7Y29udGVudDoiXGUxM2IifS5mYS1jb2RlLW1lcmdlOmJlZm9yZXtjb250ZW50OiJcZjM4NyJ9LmZhLWNvZGUtcHVsbC1yZXF1ZXN0OmJlZm9yZXtjb250ZW50OiJcZTEzYyJ9LmZhLWNvaW5zOmJlZm9yZXtjb250ZW50OiJcZjUxZSJ9LmZhLWNvbG9uLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMTQwIn0uZmEtY29tbWVudDpiZWZvcmV7Y29udGVudDoiXGYwNzUifS5mYS1jb21tZW50LWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGY2NTEifS5mYS1jb21tZW50LWRvdHM6YmVmb3JlLC5mYS1jb21tZW50aW5nOmJlZm9yZXtjb250ZW50OiJcZjRhZCJ9LmZhLWNvbW1lbnQtbWVkaWNhbDpiZWZvcmV7Y29udGVudDoiXGY3ZjUifS5mYS1jb21tZW50LXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjRiMyJ9LmZhLWNvbW1lbnQtc21zOmJlZm9yZSwuZmEtc21zOmJlZm9yZXtjb250ZW50OiJcZjdjZCJ9LmZhLWNvbW1lbnRzOmJlZm9yZXtjb250ZW50OiJcZjA4NiJ9LmZhLWNvbW1lbnRzLWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGY2NTMifS5mYS1jb21wYWN0LWRpc2M6YmVmb3Jle2NvbnRlbnQ6IlxmNTFmIn0uZmEtY29tcGFzczpiZWZvcmV7Y29udGVudDoiXGYxNGUifS5mYS1jb21wYXNzLWRyYWZ0aW5nOmJlZm9yZSwuZmEtZHJhZnRpbmctY29tcGFzczpiZWZvcmV7Y29udGVudDoiXGY1NjgifS5mYS1jb21wcmVzczpiZWZvcmV7Y29udGVudDoiXGYwNjYifS5mYS1jb21wdXRlci1tb3VzZTpiZWZvcmUsLmZhLW1vdXNlOmJlZm9yZXtjb250ZW50OiJcZjhjYyJ9LmZhLWNvb2tpZTpiZWZvcmV7Y29udGVudDoiXGY1NjMifS5mYS1jb29raWUtYml0ZTpiZWZvcmV7Y29udGVudDoiXGY1NjQifS5mYS1jb3B5OmJlZm9yZXtjb250ZW50OiJcZjBjNSJ9LmZhLWNvcHlyaWdodDpiZWZvcmV7Y29udGVudDoiXGYxZjkifS5mYS1jb3VjaDpiZWZvcmV7Y29udGVudDoiXGY0YjgifS5mYS1jcmVkaXQtY2FyZC1hbHQ6YmVmb3JlLC5mYS1jcmVkaXQtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYwOWQifS5mYS1jcm9wOmJlZm9yZXtjb250ZW50OiJcZjEyNSJ9LmZhLWNyb3AtYWx0OmJlZm9yZSwuZmEtY3JvcC1zaW1wbGU6YmVmb3Jle2NvbnRlbnQ6IlxmNTY1In0uZmEtY3Jvc3M6YmVmb3Jle2NvbnRlbnQ6IlxmNjU0In0uZmEtY3Jvc3NoYWlyczpiZWZvcmV7Y29udGVudDoiXGYwNWIifS5mYS1jcm93OmJlZm9yZXtjb250ZW50OiJcZjUyMCJ9LmZhLWNyb3duOmJlZm9yZXtjb250ZW50OiJcZjUyMSJ9LmZhLWNydXRjaDpiZWZvcmV7Y29udGVudDoiXGY3ZjcifS5mYS1jcnV6ZWlyby1zaWduOmJlZm9yZXtjb250ZW50OiJcZTE1MiJ9LmZhLWN1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWIyIn0uZmEtY3ViZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMWIzIn0uZmEtZDpiZWZvcmV7Y29udGVudDoiXDQ0In0uZmEtZGF0YWJhc2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWMwIn0uZmEtYmFja3NwYWNlOmJlZm9yZSwuZmEtZGVsZXRlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTVhIn0uZmEtZGVtb2NyYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNzQ3In0uZmEtZGVza3RvcC1hbHQ6YmVmb3JlLC5mYS1kZXNrdG9wOmJlZm9yZXtjb250ZW50OiJcZjM5MCJ9LmZhLWRoYXJtYWNoYWtyYTpiZWZvcmV7Y29udGVudDoiXGY2NTUifS5mYS1kaWFncmFtLW5leHQ6YmVmb3Jle2NvbnRlbnQ6IlxlNDc2In0uZmEtZGlhZ3JhbS1wcmVkZWNlc3NvcjpiZWZvcmV7Y29udGVudDoiXGU0NzcifS5mYS1kaWFncmFtLXByb2plY3Q6YmVmb3JlLC5mYS1wcm9qZWN0LWRpYWdyYW06YmVmb3Jle2NvbnRlbnQ6IlxmNTQyIn0uZmEtZGlhZ3JhbS1zdWNjZXNzb3I6YmVmb3Jle2NvbnRlbnQ6IlxlNDdhIn0uZmEtZGlhbW9uZDpiZWZvcmV7Y29udGVudDoiXGYyMTkifS5mYS1kaWFtb25kLXR1cm4tcmlnaHQ6YmVmb3JlLC5mYS1kaXJlY3Rpb25zOmJlZm9yZXtjb250ZW50OiJcZjVlYiJ9LmZhLWRpY2U6YmVmb3Jle2NvbnRlbnQ6IlxmNTIyIn0uZmEtZGljZS1kMjA6YmVmb3Jle2NvbnRlbnQ6IlxmNmNmIn0uZmEtZGljZS1kNjpiZWZvcmV7Y29udGVudDoiXGY2ZDEifS5mYS1kaWNlLWZpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmNTIzIn0uZmEtZGljZS1mb3VyOmJlZm9yZXtjb250ZW50OiJcZjUyNCJ9LmZhLWRpY2Utb25lOmJlZm9yZXtjb250ZW50OiJcZjUyNSJ9LmZhLWRpY2Utc2l4OmJlZm9yZXtjb250ZW50OiJcZjUyNiJ9LmZhLWRpY2UtdGhyZWU6YmVmb3Jle2NvbnRlbnQ6IlxmNTI3In0uZmEtZGljZS10d286YmVmb3Jle2NvbnRlbnQ6IlxmNTI4In0uZmEtZGlzZWFzZTpiZWZvcmV7Y29udGVudDoiXGY3ZmEifS5mYS1kaXZpZGU6YmVmb3Jle2NvbnRlbnQ6IlxmNTI5In0uZmEtZG5hOmJlZm9yZXtjb250ZW50OiJcZjQ3MSJ9LmZhLWRvZzpiZWZvcmV7Y29udGVudDoiXGY2ZDMifS5mYS1kb2xsYXItc2lnbjpiZWZvcmUsLmZhLWRvbGxhcjpiZWZvcmUsLmZhLXVzZDpiZWZvcmV7Y29udGVudDoiXDI0In0uZmEtZG9sbHktYm94OmJlZm9yZSwuZmEtZG9sbHk6YmVmb3Jle2NvbnRlbnQ6IlxmNDcyIn0uZmEtZG9uZy1zaWduOmJlZm9yZXtjb250ZW50OiJcZTE2OSJ9LmZhLWRvb3ItY2xvc2VkOmJlZm9yZXtjb250ZW50OiJcZjUyYSJ9LmZhLWRvb3Itb3BlbjpiZWZvcmV7Y29udGVudDoiXGY1MmIifS5mYS1kb3ZlOmJlZm9yZXtjb250ZW50OiJcZjRiYSJ9LmZhLWNvbXByZXNzLWFsdDpiZWZvcmUsLmZhLWRvd24tbGVmdC1hbmQtdXAtcmlnaHQtdG8tY2VudGVyOmJlZm9yZXtjb250ZW50OiJcZjQyMiJ9LmZhLWRvd24tbG9uZzpiZWZvcmUsLmZhLWxvbmctYXJyb3ctYWx0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzA5In0uZmEtZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDE5In0uZmEtZHJhZ29uOmJlZm9yZXtjb250ZW50OiJcZjZkNSJ9LmZhLWRyYXctcG9seWdvbjpiZWZvcmV7Y29udGVudDoiXGY1ZWUifS5mYS1kcm9wbGV0OmJlZm9yZSwuZmEtdGludDpiZWZvcmV7Y29udGVudDoiXGYwNDMifS5mYS1kcm9wbGV0LXNsYXNoOmJlZm9yZSwuZmEtdGludC1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGY1YzcifS5mYS1kcnVtOmJlZm9yZXtjb250ZW50OiJcZjU2OSJ9LmZhLWRydW0tc3RlZWxwYW46YmVmb3Jle2NvbnRlbnQ6IlxmNTZhIn0uZmEtZHJ1bXN0aWNrLWJpdGU6YmVmb3Jle2NvbnRlbnQ6IlxmNmQ3In0uZmEtZHVtYmJlbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDRiIn0uZmEtZHVtcHN0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNzkzIn0uZmEtZHVtcHN0ZXItZmlyZTpiZWZvcmV7Y29udGVudDoiXGY3OTQifS5mYS1kdW5nZW9uOmJlZm9yZXtjb250ZW50OiJcZjZkOSJ9LmZhLWU6YmVmb3Jle2NvbnRlbnQ6Ilw0NSJ9LmZhLWRlYWY6YmVmb3JlLC5mYS1kZWFmbmVzczpiZWZvcmUsLmZhLWVhci1kZWFmOmJlZm9yZSwuZmEtaGFyZC1vZi1oZWFyaW5nOmJlZm9yZXtjb250ZW50OiJcZjJhNCJ9LmZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmUsLmZhLWVhci1saXN0ZW46YmVmb3Jle2NvbnRlbnQ6IlxmMmEyIn0uZmEtZWFydGgtYWZyaWNhOmJlZm9yZSwuZmEtZ2xvYmUtYWZyaWNhOmJlZm9yZXtjb250ZW50OiJcZjU3YyJ9LmZhLWVhcnRoLWFtZXJpY2E6YmVmb3JlLC5mYS1lYXJ0aC1hbWVyaWNhczpiZWZvcmUsLmZhLWVhcnRoOmJlZm9yZSwuZmEtZ2xvYmUtYW1lcmljYXM6YmVmb3Jle2NvbnRlbnQ6IlxmNTdkIn0uZmEtZWFydGgtYXNpYTpiZWZvcmUsLmZhLWdsb2JlLWFzaWE6YmVmb3Jle2NvbnRlbnQ6IlxmNTdlIn0uZmEtZWFydGgtZXVyb3BlOmJlZm9yZSwuZmEtZ2xvYmUtZXVyb3BlOmJlZm9yZXtjb250ZW50OiJcZjdhMiJ9LmZhLWVhcnRoLW9jZWFuaWE6YmVmb3JlLC5mYS1nbG9iZS1vY2VhbmlhOmJlZm9yZXtjb250ZW50OiJcZTQ3YiJ9LmZhLWVnZzpiZWZvcmV7Y29udGVudDoiXGY3ZmIifS5mYS1lamVjdDpiZWZvcmV7Y29udGVudDoiXGYwNTIifS5mYS1lbGV2YXRvcjpiZWZvcmV7Y29udGVudDoiXGUxNmQifS5mYS1lbGxpcHNpcy1oOmJlZm9yZSwuZmEtZWxsaXBzaXM6YmVmb3Jle2NvbnRlbnQ6IlxmMTQxIn0uZmEtZWxsaXBzaXMtdjpiZWZvcmUsLmZhLWVsbGlwc2lzLXZlcnRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjE0MiJ9LmZhLWVudmVsb3BlOmJlZm9yZXtjb250ZW50OiJcZjBlMCJ9LmZhLWVudmVsb3BlLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmMmI2In0uZmEtZW52ZWxvcGUtb3Blbi10ZXh0OmJlZm9yZXtjb250ZW50OiJcZjY1OCJ9LmZhLWVudmVsb3Blcy1idWxrOmJlZm9yZSwuZmEtbWFpbC1idWxrOmJlZm9yZXtjb250ZW50OiJcZjY3NCJ9LmZhLWVxdWFsczpiZWZvcmV7Y29udGVudDoiXDNkIn0uZmEtZXJhc2VyOmJlZm9yZXtjb250ZW50OiJcZjEyZCJ9LmZhLWV0aGVybmV0OmJlZm9yZXtjb250ZW50OiJcZjc5NiJ9LmZhLWV1cjpiZWZvcmUsLmZhLWV1cm8tc2lnbjpiZWZvcmUsLmZhLWV1cm86YmVmb3Jle2NvbnRlbnQ6IlxmMTUzIn0uZmEtZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlwyMSJ9LmZhLWV4cGFuZDpiZWZvcmV7Y29udGVudDoiXGYwNjUifS5mYS1leWU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZlIn0uZmEtZXllLWRyb3BwZXItZW1wdHk6YmVmb3JlLC5mYS1leWUtZHJvcHBlcjpiZWZvcmUsLmZhLWV5ZWRyb3BwZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMWZiIn0uZmEtZXllLWxvdy12aXNpb246YmVmb3JlLC5mYS1sb3ctdmlzaW9uOmJlZm9yZXtjb250ZW50OiJcZjJhOCJ9LmZhLWV5ZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYwNzAifS5mYS1mOmJlZm9yZXtjb250ZW50OiJcNDYifS5mYS1hbmdyeTpiZWZvcmUsLmZhLWZhY2UtYW5ncnk6YmVmb3Jle2NvbnRlbnQ6IlxmNTU2In0uZmEtZGl6enk6YmVmb3JlLC5mYS1mYWNlLWRpenp5OmJlZm9yZXtjb250ZW50OiJcZjU2NyJ9LmZhLWZhY2UtZmx1c2hlZDpiZWZvcmUsLmZhLWZsdXNoZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTc5In0uZmEtZmFjZS1mcm93bjpiZWZvcmUsLmZhLWZyb3duOmJlZm9yZXtjb250ZW50OiJcZjExOSJ9LmZhLWZhY2UtZnJvd24tb3BlbjpiZWZvcmUsLmZhLWZyb3duLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmNTdhIn0uZmEtZmFjZS1ncmltYWNlOmJlZm9yZSwuZmEtZ3JpbWFjZTpiZWZvcmV7Y29udGVudDoiXGY1N2YifS5mYS1mYWNlLWdyaW46YmVmb3JlLC5mYS1ncmluOmJlZm9yZXtjb250ZW50OiJcZjU4MCJ9LmZhLWZhY2UtZ3Jpbi1iZWFtOmJlZm9yZSwuZmEtZ3Jpbi1iZWFtOmJlZm9yZXtjb250ZW50OiJcZjU4MiJ9LmZhLWZhY2UtZ3Jpbi1iZWFtLXN3ZWF0OmJlZm9yZSwuZmEtZ3Jpbi1iZWFtLXN3ZWF0OmJlZm9yZXtjb250ZW50OiJcZjU4MyJ9LmZhLWZhY2UtZ3Jpbi1oZWFydHM6YmVmb3JlLC5mYS1ncmluLWhlYXJ0czpiZWZvcmV7Y29udGVudDoiXGY1ODQifS5mYS1mYWNlLWdyaW4tc3F1aW50OmJlZm9yZSwuZmEtZ3Jpbi1zcXVpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTg1In0uZmEtZmFjZS1ncmluLXNxdWludC10ZWFyczpiZWZvcmUsLmZhLWdyaW4tc3F1aW50LXRlYXJzOmJlZm9yZXtjb250ZW50OiJcZjU4NiJ9LmZhLWZhY2UtZ3Jpbi1zdGFyczpiZWZvcmUsLmZhLWdyaW4tc3RhcnM6YmVmb3Jle2NvbnRlbnQ6IlxmNTg3In0uZmEtZmFjZS1ncmluLXRlYXJzOmJlZm9yZSwuZmEtZ3Jpbi10ZWFyczpiZWZvcmV7Y29udGVudDoiXGY1ODgifS5mYS1mYWNlLWdyaW4tdG9uZ3VlOmJlZm9yZSwuZmEtZ3Jpbi10b25ndWU6YmVmb3Jle2NvbnRlbnQ6IlxmNTg5In0uZmEtZmFjZS1ncmluLXRvbmd1ZS1zcXVpbnQ6YmVmb3JlLC5mYS1ncmluLXRvbmd1ZS1zcXVpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNThhIn0uZmEtZmFjZS1ncmluLXRvbmd1ZS13aW5rOmJlZm9yZSwuZmEtZ3Jpbi10b25ndWUtd2luazpiZWZvcmV7Y29udGVudDoiXGY1OGIifS5mYS1mYWNlLWdyaW4td2lkZTpiZWZvcmUsLmZhLWdyaW4tYWx0OmJlZm9yZXtjb250ZW50OiJcZjU4MSJ9LmZhLWZhY2UtZ3Jpbi13aW5rOmJlZm9yZSwuZmEtZ3Jpbi13aW5rOmJlZm9yZXtjb250ZW50OiJcZjU4YyJ9LmZhLWZhY2Uta2lzczpiZWZvcmUsLmZhLWtpc3M6YmVmb3Jle2NvbnRlbnQ6IlxmNTk2In0uZmEtZmFjZS1raXNzLWJlYW06YmVmb3JlLC5mYS1raXNzLWJlYW06YmVmb3Jle2NvbnRlbnQ6IlxmNTk3In0uZmEtZmFjZS1raXNzLXdpbmstaGVhcnQ6YmVmb3JlLC5mYS1raXNzLXdpbmstaGVhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTk4In0uZmEtZmFjZS1sYXVnaDpiZWZvcmUsLmZhLWxhdWdoOmJlZm9yZXtjb250ZW50OiJcZjU5OSJ9LmZhLWZhY2UtbGF1Z2gtYmVhbTpiZWZvcmUsLmZhLWxhdWdoLWJlYW06YmVmb3Jle2NvbnRlbnQ6IlxmNTlhIn0uZmEtZmFjZS1sYXVnaC1zcXVpbnQ6YmVmb3JlLC5mYS1sYXVnaC1zcXVpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTliIn0uZmEtZmFjZS1sYXVnaC13aW5rOmJlZm9yZSwuZmEtbGF1Z2gtd2luazpiZWZvcmV7Y29udGVudDoiXGY1OWMifS5mYS1mYWNlLW1laDpiZWZvcmUsLmZhLW1laDpiZWZvcmV7Y29udGVudDoiXGYxMWEifS5mYS1mYWNlLW1laC1ibGFuazpiZWZvcmUsLmZhLW1laC1ibGFuazpiZWZvcmV7Y29udGVudDoiXGY1YTQifS5mYS1mYWNlLXJvbGxpbmctZXllczpiZWZvcmUsLmZhLW1laC1yb2xsaW5nLWV5ZXM6YmVmb3Jle2NvbnRlbnQ6IlxmNWE1In0uZmEtZmFjZS1zYWQtY3J5OmJlZm9yZSwuZmEtc2FkLWNyeTpiZWZvcmV7Y29udGVudDoiXGY1YjMifS5mYS1mYWNlLXNhZC10ZWFyOmJlZm9yZSwuZmEtc2FkLXRlYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNWI0In0uZmEtZmFjZS1zbWlsZTpiZWZvcmUsLmZhLXNtaWxlOmJlZm9yZXtjb250ZW50OiJcZjExOCJ9LmZhLWZhY2Utc21pbGUtYmVhbTpiZWZvcmUsLmZhLXNtaWxlLWJlYW06YmVmb3Jle2NvbnRlbnQ6IlxmNWI4In0uZmEtZmFjZS1zbWlsZS13aW5rOmJlZm9yZSwuZmEtc21pbGUtd2luazpiZWZvcmV7Y29udGVudDoiXGY0ZGEifS5mYS1mYWNlLXN1cnByaXNlOmJlZm9yZSwuZmEtc3VycHJpc2U6YmVmb3Jle2NvbnRlbnQ6IlxmNWMyIn0uZmEtZmFjZS10aXJlZDpiZWZvcmUsLmZhLXRpcmVkOmJlZm9yZXtjb250ZW50OiJcZjVjOCJ9LmZhLWZhbjpiZWZvcmV7Y29udGVudDoiXGY4NjMifS5mYS1mYXVjZXQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDA1In0uZmEtZmF4OmJlZm9yZXtjb250ZW50OiJcZjFhYyJ9LmZhLWZlYXRoZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNTJkIn0uZmEtZmVhdGhlci1hbHQ6YmVmb3JlLC5mYS1mZWF0aGVyLXBvaW50ZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTZiIn0uZmEtZmlsZTpiZWZvcmV7Y29udGVudDoiXGYxNWIifS5mYS1maWxlLWFycm93LWRvd246YmVmb3JlLC5mYS1maWxlLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZjU2ZCJ9LmZhLWZpbGUtYXJyb3ctdXA6YmVmb3JlLC5mYS1maWxlLXVwbG9hZDpiZWZvcmV7Y29udGVudDoiXGY1NzQifS5mYS1maWxlLWF1ZGlvOmJlZm9yZXtjb250ZW50OiJcZjFjNyJ9LmZhLWZpbGUtY29kZTpiZWZvcmV7Y29udGVudDoiXGYxYzkifS5mYS1maWxlLWNvbnRyYWN0OmJlZm9yZXtjb250ZW50OiJcZjU2YyJ9LmZhLWZpbGUtY3N2OmJlZm9yZXtjb250ZW50OiJcZjZkZCJ9LmZhLWZpbGUtZXhjZWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWMzIn0uZmEtYXJyb3ctcmlnaHQtZnJvbS1maWxlOmJlZm9yZSwuZmEtZmlsZS1leHBvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTZlIn0uZmEtZmlsZS1pbWFnZTpiZWZvcmV7Y29udGVudDoiXGYxYzUifS5mYS1hcnJvdy1yaWdodC10by1maWxlOmJlZm9yZSwuZmEtZmlsZS1pbXBvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTZmIn0uZmEtZmlsZS1pbnZvaWNlOmJlZm9yZXtjb250ZW50OiJcZjU3MCJ9LmZhLWZpbGUtaW52b2ljZS1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNTcxIn0uZmEtZmlsZS1hbHQ6YmVmb3JlLC5mYS1maWxlLWxpbmVzOmJlZm9yZSwuZmEtZmlsZS10ZXh0OmJlZm9yZXtjb250ZW50OiJcZjE1YyJ9LmZhLWZpbGUtbWVkaWNhbDpiZWZvcmV7Y29udGVudDoiXGY0NzcifS5mYS1maWxlLXBkZjpiZWZvcmV7Y29udGVudDoiXGYxYzEifS5mYS1maWxlLXBvd2VycG9pbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWM0In0uZmEtZmlsZS1wcmVzY3JpcHRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNTcyIn0uZmEtZmlsZS1zaWduYXR1cmU6YmVmb3Jle2NvbnRlbnQ6IlxmNTczIn0uZmEtZmlsZS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYxYzgifS5mYS1maWxlLW1lZGljYWwtYWx0OmJlZm9yZSwuZmEtZmlsZS13YXZlZm9ybTpiZWZvcmV7Y29udGVudDoiXGY0NzgifS5mYS1maWxlLXdvcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWMyIn0uZmEtZmlsZS1hcmNoaXZlOmJlZm9yZSwuZmEtZmlsZS16aXBwZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMWM2In0uZmEtZmlsbDpiZWZvcmV7Y29udGVudDoiXGY1NzUifS5mYS1maWxsLWRyaXA6YmVmb3Jle2NvbnRlbnQ6IlxmNTc2In0uZmEtZmlsbTpiZWZvcmV7Y29udGVudDoiXGYwMDgifS5mYS1maWx0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGIwIn0uZmEtZmlsdGVyLWNpcmNsZS1kb2xsYXI6YmVmb3JlLC5mYS1mdW5uZWwtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjY2MiJ9LmZhLWZpbHRlci1jaXJjbGUteG1hcms6YmVmb3Jle2NvbnRlbnQ6IlxlMTdiIn0uZmEtZmluZ2VycHJpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTc3In0uZmEtZmlyZTpiZWZvcmV7Y29udGVudDoiXGYwNmQifS5mYS1maXJlLWV4dGluZ3Vpc2hlcjpiZWZvcmV7Y29udGVudDoiXGYxMzQifS5mYS1maXJlLWFsdDpiZWZvcmUsLmZhLWZpcmUtZmxhbWUtY3VydmVkOmJlZm9yZXtjb250ZW50OiJcZjdlNCJ9LmZhLWJ1cm46YmVmb3JlLC5mYS1maXJlLWZsYW1lLXNpbXBsZTpiZWZvcmV7Y29udGVudDoiXGY0NmEifS5mYS1maXNoOmJlZm9yZXtjb250ZW50OiJcZjU3OCJ9LmZhLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxmMDI0In0uZmEtZmxhZy1jaGVja2VyZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTFlIn0uZmEtZmxhZy11c2E6YmVmb3Jle2NvbnRlbnQ6IlxmNzRkIn0uZmEtZmxhc2s6YmVmb3Jle2NvbnRlbnQ6IlxmMGMzIn0uZmEtZmxvcHB5LWRpc2s6YmVmb3JlLC5mYS1zYXZlOmJlZm9yZXtjb250ZW50OiJcZjBjNyJ9LmZhLWZsb3Jpbi1zaWduOmJlZm9yZXtjb250ZW50OiJcZTE4NCJ9LmZhLWZvbGRlcjpiZWZvcmV7Y29udGVudDoiXGYwN2IifS5mYS1mb2xkZXItbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmNjVkIn0uZmEtZm9sZGVyLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmMDdjIn0uZmEtZm9sZGVyLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmNjVlIn0uZmEtZm9sZGVyLXRyZWU6YmVmb3Jle2NvbnRlbnQ6IlxmODAyIn0uZmEtZm9udDpiZWZvcmV7Y29udGVudDoiXGYwMzEifS5mYS1mb290YmFsbC1iYWxsOmJlZm9yZSwuZmEtZm9vdGJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDRlIn0uZmEtZm9yd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNGUifS5mYS1mYXN0LWZvcndhcmQ6YmVmb3JlLC5mYS1mb3J3YXJkLWZhc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDUwIn0uZmEtZm9yd2FyZC1zdGVwOmJlZm9yZSwuZmEtc3RlcC1mb3J3YXJkOmJlZm9yZXtjb250ZW50OiJcZjA1MSJ9LmZhLWZyYW5jLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMThmIn0uZmEtZnJvZzpiZWZvcmV7Y29udGVudDoiXGY1MmUifS5mYS1mdXRib2wtYmFsbDpiZWZvcmUsLmZhLWZ1dGJvbDpiZWZvcmUsLmZhLXNvY2Nlci1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjFlMyJ9LmZhLWc6YmVmb3Jle2NvbnRlbnQ6Ilw0NyJ9LmZhLWdhbWVwYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTFiIn0uZmEtZ2FzLXB1bXA6YmVmb3Jle2NvbnRlbnQ6IlxmNTJmIn0uZmEtZGFzaGJvYXJkOmJlZm9yZSwuZmEtZ2F1Z2UtbWVkOmJlZm9yZSwuZmEtZ2F1Z2U6YmVmb3JlLC5mYS10YWNob21ldGVyLWFsdC1hdmVyYWdlOmJlZm9yZXtjb250ZW50OiJcZjYyNCJ9LmZhLWdhdWdlLWhpZ2g6YmVmb3JlLC5mYS10YWNob21ldGVyLWFsdC1mYXN0OmJlZm9yZSwuZmEtdGFjaG9tZXRlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNjI1In0uZmEtZ2F1Z2Utc2ltcGxlLW1lZDpiZWZvcmUsLmZhLWdhdWdlLXNpbXBsZTpiZWZvcmUsLmZhLXRhY2hvbWV0ZXItYXZlcmFnZTpiZWZvcmV7Y29udGVudDoiXGY2MjkifS5mYS1nYXVnZS1zaW1wbGUtaGlnaDpiZWZvcmUsLmZhLXRhY2hvbWV0ZXItZmFzdDpiZWZvcmUsLmZhLXRhY2hvbWV0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjJhIn0uZmEtZ2F2ZWw6YmVmb3JlLC5mYS1sZWdhbDpiZWZvcmV7Y29udGVudDoiXGYwZTMifS5mYS1jb2c6YmVmb3JlLC5mYS1nZWFyOmJlZm9yZXtjb250ZW50OiJcZjAxMyJ9LmZhLWNvZ3M6YmVmb3JlLC5mYS1nZWFyczpiZWZvcmV7Y29udGVudDoiXGYwODUifS5mYS1nZW06YmVmb3Jle2NvbnRlbnQ6IlxmM2E1In0uZmEtZ2VuZGVybGVzczpiZWZvcmV7Y29udGVudDoiXGYyMmQifS5mYS1naG9zdDpiZWZvcmV7Y29udGVudDoiXGY2ZTIifS5mYS1naWZ0OmJlZm9yZXtjb250ZW50OiJcZjA2YiJ9LmZhLWdpZnRzOmJlZm9yZXtjb250ZW50OiJcZjc5YyJ9LmZhLWdsYXNzZXM6YmVmb3Jle2NvbnRlbnQ6IlxmNTMwIn0uZmEtZ2xvYmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGFjIn0uZmEtZ29sZi1iYWxsLXRlZTpiZWZvcmUsLmZhLWdvbGYtYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0NTAifS5mYS1nb3B1cmFtOmJlZm9yZXtjb250ZW50OiJcZjY2NCJ9LmZhLWdyYWR1YXRpb24tY2FwOmJlZm9yZSwuZmEtbW9ydGFyLWJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjE5ZCJ9LmZhLWdyZWF0ZXItdGhhbjpiZWZvcmV7Y29udGVudDoiXDNlIn0uZmEtZ3JlYXRlci10aGFuLWVxdWFsOmJlZm9yZXtjb250ZW50OiJcZjUzMiJ9LmZhLWdyaXAtaG9yaXpvbnRhbDpiZWZvcmUsLmZhLWdyaXA6YmVmb3Jle2NvbnRlbnQ6IlxmNThkIn0uZmEtZ3JpcC1saW5lczpiZWZvcmV7Y29udGVudDoiXGY3YTQifS5mYS1ncmlwLWxpbmVzLXZlcnRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjdhNSJ9LmZhLWdyaXAtdmVydGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNThlIn0uZmEtZ3VhcmFuaS1zaWduOmJlZm9yZXtjb250ZW50OiJcZTE5YSJ9LmZhLWd1aXRhcjpiZWZvcmV7Y29udGVudDoiXGY3YTYifS5mYS1ndW46YmVmb3Jle2NvbnRlbnQ6IlxlMTliIn0uZmEtaDpiZWZvcmV7Y29udGVudDoiXDQ4In0uZmEtaGFtbWVyOmJlZm9yZXtjb250ZW50OiJcZjZlMyJ9LmZhLWhhbXNhOmJlZm9yZXtjb250ZW50OiJcZjY2NSJ9LmZhLWhhbmQtcGFwZXI6YmVmb3JlLC5mYS1oYW5kOmJlZm9yZXtjb250ZW50OiJcZjI1NiJ9LmZhLWhhbmQtYmFjay1maXN0OmJlZm9yZSwuZmEtaGFuZC1yb2NrOmJlZm9yZXtjb250ZW50OiJcZjI1NSJ9LmZhLWFsbGVyZ2llczpiZWZvcmUsLmZhLWhhbmQtZG90czpiZWZvcmV7Y29udGVudDoiXGY0NjEifS5mYS1maXN0LXJhaXNlZDpiZWZvcmUsLmZhLWhhbmQtZmlzdDpiZWZvcmV7Y29udGVudDoiXGY2ZGUifS5mYS1oYW5kLWhvbGRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNGJkIn0uZmEtaGFuZC1ob2xkaW5nLWRvbGxhcjpiZWZvcmUsLmZhLWhhbmQtaG9sZGluZy11c2Q6YmVmb3Jle2NvbnRlbnQ6IlxmNGMwIn0uZmEtaGFuZC1ob2xkaW5nLWRyb3BsZXQ6YmVmb3JlLC5mYS1oYW5kLWhvbGRpbmctd2F0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNGMxIn0uZmEtaGFuZC1ob2xkaW5nLWhlYXJ0OmJlZm9yZXtjb250ZW50OiJcZjRiZSJ9LmZhLWhhbmQtaG9sZGluZy1tZWRpY2FsOmJlZm9yZXtjb250ZW50OiJcZTA1YyJ9LmZhLWhhbmQtbGl6YXJkOmJlZm9yZXtjb250ZW50OiJcZjI1OCJ9LmZhLWhhbmQtbWlkZGxlLWZpbmdlcjpiZWZvcmV7Y29udGVudDoiXGY4MDYifS5mYS1oYW5kLXBlYWNlOmJlZm9yZXtjb250ZW50OiJcZjI1YiJ9LmZhLWhhbmQtcG9pbnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwYTcifS5mYS1oYW5kLXBvaW50LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE1In0uZmEtaGFuZC1wb2ludC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwYTQifS5mYS1oYW5kLXBvaW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjBhNiJ9LmZhLWhhbmQtcG9pbnRlcjpiZWZvcmV7Y29udGVudDoiXGYyNWEifS5mYS1oYW5kLXNjaXNzb3JzOmJlZm9yZXtjb250ZW50OiJcZjI1NyJ9LmZhLWhhbmQtc3BhcmtsZXM6YmVmb3Jle2NvbnRlbnQ6IlxlMDVkIn0uZmEtaGFuZC1zcG9jazpiZWZvcmV7Y29udGVudDoiXGYyNTkifS5mYS1oYW5kczpiZWZvcmUsLmZhLXNpZ24tbGFuZ3VhZ2U6YmVmb3JlLC5mYS1zaWduaW5nOmJlZm9yZXtjb250ZW50OiJcZjJhNyJ9LmZhLWFtZXJpY2FuLXNpZ24tbGFuZ3VhZ2UtaW50ZXJwcmV0aW5nOmJlZm9yZSwuZmEtYXNsLWludGVycHJldGluZzpiZWZvcmUsLmZhLWhhbmRzLWFtZXJpY2FuLXNpZ24tbGFuZ3VhZ2UtaW50ZXJwcmV0aW5nOmJlZm9yZSwuZmEtaGFuZHMtYXNsLWludGVycHJldGluZzpiZWZvcmV7Y29udGVudDoiXGYyYTMifS5mYS1oYW5kcy1idWJibGVzOmJlZm9yZSwuZmEtaGFuZHMtd2FzaDpiZWZvcmV7Y29udGVudDoiXGUwNWUifS5mYS1oYW5kcy1jbGFwcGluZzpiZWZvcmV7Y29udGVudDoiXGUxYTgifS5mYS1oYW5kcy1ob2xkaW5nOmJlZm9yZXtjb250ZW50OiJcZjRjMiJ9LmZhLWhhbmRzLXByYXlpbmc6YmVmb3JlLC5mYS1wcmF5aW5nLWhhbmRzOmJlZm9yZXtjb250ZW50OiJcZjY4NCJ9LmZhLWhhbmRzaGFrZTpiZWZvcmV7Y29udGVudDoiXGYyYjUifS5mYS1oYW5kcy1oZWxwaW5nOmJlZm9yZSwuZmEtaGFuZHNoYWtlLWFuZ2xlOmJlZm9yZXtjb250ZW50OiJcZjRjNCJ9LmZhLWhhbmRzaGFrZS1hbHQtc2xhc2g6YmVmb3JlLC5mYS1oYW5kc2hha2Utc2ltcGxlLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTA1ZiJ9LmZhLWhhbmRzaGFrZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGUwNjAifS5mYS1oYW51a2lhaDpiZWZvcmV7Y29udGVudDoiXGY2ZTYifS5mYS1oYXJkLWRyaXZlOmJlZm9yZSwuZmEtaGRkOmJlZm9yZXtjb250ZW50OiJcZjBhMCJ9LmZhLWhhc2h0YWc6YmVmb3Jle2NvbnRlbnQ6IlwyMyJ9LmZhLWhhdC1jb3dib3k6YmVmb3Jle2NvbnRlbnQ6IlxmOGMwIn0uZmEtaGF0LWNvd2JveS1zaWRlOmJlZm9yZXtjb250ZW50OiJcZjhjMSJ9LmZhLWhhdC13aXphcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNmU4In0uZmEtaGVhZC1zaWRlLWNvdWdoOmJlZm9yZXtjb250ZW50OiJcZTA2MSJ9LmZhLWhlYWQtc2lkZS1jb3VnaC1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGUwNjIifS5mYS1oZWFkLXNpZGUtbWFzazpiZWZvcmV7Y29udGVudDoiXGUwNjMifS5mYS1oZWFkLXNpZGUtdmlydXM6YmVmb3Jle2NvbnRlbnQ6IlxlMDY0In0uZmEtaGVhZGVyOmJlZm9yZSwuZmEtaGVhZGluZzpiZWZvcmV7Y29udGVudDoiXGYxZGMifS5mYS1oZWFkcGhvbmVzOmJlZm9yZXtjb250ZW50OiJcZjAyNSJ9LmZhLWhlYWRwaG9uZXMtYWx0OmJlZm9yZSwuZmEtaGVhZHBob25lcy1zaW1wbGU6YmVmb3Jle2NvbnRlbnQ6IlxmNThmIn0uZmEtaGVhZHNldDpiZWZvcmV7Y29udGVudDoiXGY1OTAifS5mYS1oZWFydDpiZWZvcmV7Y29udGVudDoiXGYwMDQifS5mYS1oZWFydC1icm9rZW46YmVmb3JlLC5mYS1oZWFydC1jcmFjazpiZWZvcmV7Y29udGVudDoiXGY3YTkifS5mYS1oZWFydC1wdWxzZTpiZWZvcmUsLmZhLWhlYXJ0YmVhdDpiZWZvcmV7Y29udGVudDoiXGYyMWUifS5mYS1oZWxpY29wdGVyOmJlZm9yZXtjb250ZW50OiJcZjUzMyJ9LmZhLWhhcmQtaGF0OmJlZm9yZSwuZmEtaGF0LWhhcmQ6YmVmb3JlLC5mYS1oZWxtZXQtc2FmZXR5OmJlZm9yZXtjb250ZW50OiJcZjgwNyJ9LmZhLWhpZ2hsaWdodGVyOmJlZm9yZXtjb250ZW50OiJcZjU5MSJ9LmZhLWhpcHBvOmJlZm9yZXtjb250ZW50OiJcZjZlZCJ9LmZhLWhvY2tleS1wdWNrOmJlZm9yZXtjb250ZW50OiJcZjQ1MyJ9LmZhLWhvbGx5LWJlcnJ5OmJlZm9yZXtjb250ZW50OiJcZjdhYSJ9LmZhLWhvcnNlOmJlZm9yZXtjb250ZW50OiJcZjZmMCJ9LmZhLWhvcnNlLWhlYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmN2FiIn0uZmEtaG9zcGl0YWwtYWx0OmJlZm9yZSwuZmEtaG9zcGl0YWwtd2lkZTpiZWZvcmUsLmZhLWhvc3BpdGFsOmJlZm9yZXtjb250ZW50OiJcZjBmOCJ9LmZhLWhvc3BpdGFsLXVzZXI6YmVmb3Jle2NvbnRlbnQ6IlxmODBkIn0uZmEtaG90LXR1Yi1wZXJzb246YmVmb3JlLC5mYS1ob3QtdHViOmJlZm9yZXtjb250ZW50OiJcZjU5MyJ9LmZhLWhvdGRvZzpiZWZvcmV7Y29udGVudDoiXGY4MGYifS5mYS1ob3RlbDpiZWZvcmV7Y29udGVudDoiXGY1OTQifS5mYS1ob3VyZ2xhc3MtMjpiZWZvcmUsLmZhLWhvdXJnbGFzcy1oYWxmOmJlZm9yZSwuZmEtaG91cmdsYXNzOmJlZm9yZXtjb250ZW50OiJcZjI1NCJ9LmZhLWhvdXJnbGFzcy1lbXB0eTpiZWZvcmV7Y29udGVudDoiXGYyNTIifS5mYS1ob3VyZ2xhc3MtMzpiZWZvcmUsLmZhLWhvdXJnbGFzcy1lbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjUzIn0uZmEtaG91cmdsYXNzLTE6YmVmb3JlLC5mYS1ob3VyZ2xhc3Mtc3RhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjUxIn0uZmEtaG9tZS1hbHQ6YmVmb3JlLC5mYS1ob21lLWxnLWFsdDpiZWZvcmUsLmZhLWhvbWU6YmVmb3JlLC5mYS1ob3VzZTpiZWZvcmV7Y29udGVudDoiXGYwMTUifS5mYS1ob21lLWxnOmJlZm9yZSwuZmEtaG91c2UtY2hpbW5leTpiZWZvcmV7Y29udGVudDoiXGUzYWYifS5mYS1ob3VzZS1jaGltbmV5LWNyYWNrOmJlZm9yZSwuZmEtaG91c2UtZGFtYWdlOmJlZm9yZXtjb250ZW50OiJcZjZmMSJ9LmZhLWNsaW5pYy1tZWRpY2FsOmJlZm9yZSwuZmEtaG91c2UtY2hpbW5leS1tZWRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjdmMiJ9LmZhLWhvdXNlLWNoaW1uZXktdXNlcjpiZWZvcmV7Y29udGVudDoiXGUwNjUifS5mYS1ob3VzZS1jaGltbmV5LXdpbmRvdzpiZWZvcmV7Y29udGVudDoiXGUwMGQifS5mYS1ob3VzZS1jcmFjazpiZWZvcmV7Y29udGVudDoiXGUzYjEifS5mYS1ob3VzZS1sYXB0b3A6YmVmb3JlLC5mYS1sYXB0b3AtaG91c2U6YmVmb3Jle2NvbnRlbnQ6IlxlMDY2In0uZmEtaG91c2UtbWVkaWNhbDpiZWZvcmV7Y29udGVudDoiXGUzYjIifS5mYS1ob21lLXVzZXI6YmVmb3JlLC5mYS1ob3VzZS11c2VyOmJlZm9yZXtjb250ZW50OiJcZTFiMCJ9LmZhLWhyeXZuaWEtc2lnbjpiZWZvcmUsLmZhLWhyeXZuaWE6YmVmb3Jle2NvbnRlbnQ6IlxmNmYyIn0uZmEtaTpiZWZvcmV7Y29udGVudDoiXDQ5In0uZmEtaS1jdXJzb3I6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ2In0uZmEtaWNlLWNyZWFtOmJlZm9yZXtjb250ZW50OiJcZjgxMCJ9LmZhLWljaWNsZXM6YmVmb3Jle2NvbnRlbnQ6IlxmN2FkIn0uZmEtaGVhcnQtbXVzaWMtY2FtZXJhLWJvbHQ6YmVmb3JlLC5mYS1pY29uczpiZWZvcmV7Y29udGVudDoiXGY4NmQifS5mYS1pZC1iYWRnZTpiZWZvcmV7Y29udGVudDoiXGYyYzEifS5mYS1kcml2ZXJzLWxpY2Vuc2U6YmVmb3JlLC5mYS1pZC1jYXJkOmJlZm9yZXtjb250ZW50OiJcZjJjMiJ9LmZhLWlkLWNhcmQtYWx0OmJlZm9yZSwuZmEtaWQtY2FyZC1jbGlwOmJlZm9yZXtjb250ZW50OiJcZjQ3ZiJ9LmZhLWlnbG9vOmJlZm9yZXtjb250ZW50OiJcZjdhZSJ9LmZhLWltYWdlOmJlZm9yZXtjb250ZW50OiJcZjAzZSJ9LmZhLWltYWdlLXBvcnRyYWl0OmJlZm9yZSwuZmEtcG9ydHJhaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2UwIn0uZmEtaW1hZ2VzOmJlZm9yZXtjb250ZW50OiJcZjMwMiJ9LmZhLWluYm94OmJlZm9yZXtjb250ZW50OiJcZjAxYyJ9LmZhLWluZGVudDpiZWZvcmV7Y29udGVudDoiXGYwM2MifS5mYS1pbmRpYW4tcnVwZWUtc2lnbjpiZWZvcmUsLmZhLWluZGlhbi1ydXBlZTpiZWZvcmUsLmZhLWlucjpiZWZvcmV7Y29udGVudDoiXGUxYmMifS5mYS1pbmR1c3RyeTpiZWZvcmV7Y29udGVudDoiXGYyNzUifS5mYS1pbmZpbml0eTpiZWZvcmV7Y29udGVudDoiXGY1MzQifS5mYS1pbmZvOmJlZm9yZXtjb250ZW50OiJcZjEyOSJ9LmZhLWl0YWxpYzpiZWZvcmV7Y29udGVudDoiXGYwMzMifS5mYS1qOmJlZm9yZXtjb250ZW50OiJcNGEifS5mYS1qZWRpOmJlZm9yZXtjb250ZW50OiJcZjY2OSJ9LmZhLWZpZ2h0ZXItamV0OmJlZm9yZSwuZmEtamV0LWZpZ2h0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGZiIn0uZmEtam9pbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTk1In0uZmEtazpiZWZvcmV7Y29udGVudDoiXDRiIn0uZmEta2FhYmE6YmVmb3Jle2NvbnRlbnQ6IlxmNjZiIn0uZmEta2V5OmJlZm9yZXtjb250ZW50OiJcZjA4NCJ9LmZhLWtleWJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjExYyJ9LmZhLWtoYW5kYTpiZWZvcmV7Y29udGVudDoiXGY2NmQifS5mYS1raXAtc2lnbjpiZWZvcmV7Y29udGVudDoiXGUxYzQifS5mYS1maXJzdC1haWQ6YmVmb3JlLC5mYS1raXQtbWVkaWNhbDpiZWZvcmV7Y29udGVudDoiXGY0NzkifS5mYS1raXdpLWJpcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTM1In0uZmEtbDpiZWZvcmV7Y29udGVudDoiXDRjIn0uZmEtbGFuZG1hcms6YmVmb3Jle2NvbnRlbnQ6IlxmNjZmIn0uZmEtbGFuZ3VhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWFiIn0uZmEtbGFwdG9wOmJlZm9yZXtjb250ZW50OiJcZjEwOSJ9LmZhLWxhcHRvcC1jb2RlOmJlZm9yZXtjb250ZW50OiJcZjVmYyJ9LmZhLWxhcHRvcC1tZWRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjgxMiJ9LmZhLWxhcmktc2lnbjpiZWZvcmV7Y29udGVudDoiXGUxYzgifS5mYS1sYXllci1ncm91cDpiZWZvcmV7Y29udGVudDoiXGY1ZmQifS5mYS1sZWFmOmJlZm9yZXtjb250ZW50OiJcZjA2YyJ9LmZhLWxlZnQtbG9uZzpiZWZvcmUsLmZhLWxvbmctYXJyb3ctYWx0LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzBhIn0uZmEtYXJyb3dzLWFsdC1oOmJlZm9yZSwuZmEtbGVmdC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMzcifS5mYS1sZW1vbjpiZWZvcmV7Y29udGVudDoiXGYwOTQifS5mYS1sZXNzLXRoYW46YmVmb3Jle2NvbnRlbnQ6IlwzYyJ9LmZhLWxlc3MtdGhhbi1lcXVhbDpiZWZvcmV7Y29udGVudDoiXGY1MzcifS5mYS1saWZlLXJpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWNkIn0uZmEtbGlnaHRidWxiOmJlZm9yZXtjb250ZW50OiJcZjBlYiJ9LmZhLWNoYWluOmJlZm9yZSwuZmEtbGluazpiZWZvcmV7Y29udGVudDoiXGYwYzEifS5mYS1jaGFpbi1icm9rZW46YmVmb3JlLC5mYS1jaGFpbi1zbGFzaDpiZWZvcmUsLmZhLWxpbmstc2xhc2g6YmVmb3JlLC5mYS11bmxpbms6YmVmb3Jle2NvbnRlbnQ6IlxmMTI3In0uZmEtbGlyYS1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE5NSJ9LmZhLWxpc3Qtc3F1YXJlczpiZWZvcmUsLmZhLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDNhIn0uZmEtbGlzdC1jaGVjazpiZWZvcmUsLmZhLXRhc2tzOmJlZm9yZXtjb250ZW50OiJcZjBhZSJ9LmZhLWxpc3QtMS0yOmJlZm9yZSwuZmEtbGlzdC1udW1lcmljOmJlZm9yZSwuZmEtbGlzdC1vbDpiZWZvcmV7Y29udGVudDoiXGYwY2IifS5mYS1saXN0LWRvdHM6YmVmb3JlLC5mYS1saXN0LXVsOmJlZm9yZXtjb250ZW50OiJcZjBjYSJ9LmZhLWxpdGVjb2luLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMWQzIn0uZmEtbG9jYXRpb24tYXJyb3c6YmVmb3Jle2NvbnRlbnQ6IlxmMTI0In0uZmEtbG9jYXRpb24tY3Jvc3NoYWlyczpiZWZvcmUsLmZhLWxvY2F0aW9uOmJlZm9yZXtjb250ZW50OiJcZjYwMSJ9LmZhLWxvY2F0aW9uLWRvdDpiZWZvcmUsLmZhLW1hcC1tYXJrZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjNjNSJ9LmZhLWxvY2F0aW9uLXBpbjpiZWZvcmUsLmZhLW1hcC1tYXJrZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDQxIn0uZmEtbG9jazpiZWZvcmV7Y29udGVudDoiXGYwMjMifS5mYS1sb2NrLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmM2MxIn0uZmEtbHVuZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmNjA0In0uZmEtbHVuZ3MtdmlydXM6YmVmb3Jle2NvbnRlbnQ6IlxlMDY3In0uZmEtbTpiZWZvcmV7Y29udGVudDoiXDRkIn0uZmEtbWFnbmV0OmJlZm9yZXtjb250ZW50OiJcZjA3NiJ9LmZhLW1hZ25pZnlpbmctZ2xhc3M6YmVmb3JlLC5mYS1zZWFyY2g6YmVmb3Jle2NvbnRlbnQ6IlxmMDAyIn0uZmEtbWFnbmlmeWluZy1nbGFzcy1kb2xsYXI6YmVmb3JlLC5mYS1zZWFyY2gtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjY4OCJ9LmZhLW1hZ25pZnlpbmctZ2xhc3MtbG9jYXRpb246YmVmb3JlLC5mYS1zZWFyY2gtbG9jYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNjg5In0uZmEtbWFnbmlmeWluZy1nbGFzcy1taW51czpiZWZvcmUsLmZhLXNlYXJjaC1taW51czpiZWZvcmV7Y29udGVudDoiXGYwMTAifS5mYS1tYWduaWZ5aW5nLWdsYXNzLXBsdXM6YmVmb3JlLC5mYS1zZWFyY2gtcGx1czpiZWZvcmV7Y29udGVudDoiXGYwMGUifS5mYS1tYW5hdC1zaWduOmJlZm9yZXtjb250ZW50OiJcZTFkNSJ9LmZhLW1hcDpiZWZvcmV7Y29udGVudDoiXGYyNzkifS5mYS1tYXAtbG9jYXRpb246YmVmb3JlLC5mYS1tYXAtbWFya2VkOmJlZm9yZXtjb250ZW50OiJcZjU5ZiJ9LmZhLW1hcC1sb2NhdGlvbi1kb3Q6YmVmb3JlLC5mYS1tYXAtbWFya2VkLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1YTAifS5mYS1tYXAtcGluOmJlZm9yZXtjb250ZW50OiJcZjI3NiJ9LmZhLW1hcmtlcjpiZWZvcmV7Y29udGVudDoiXGY1YTEifS5mYS1tYXJzOmJlZm9yZXtjb250ZW50OiJcZjIyMiJ9LmZhLW1hcnMtYW5kLXZlbnVzOmJlZm9yZXtjb250ZW50OiJcZjIyNCJ9LmZhLW1hcnMtZG91YmxlOmJlZm9yZXtjb250ZW50OiJcZjIyNyJ9LmZhLW1hcnMtc3Ryb2tlOmJlZm9yZXtjb250ZW50OiJcZjIyOSJ9LmZhLW1hcnMtc3Ryb2tlLWg6YmVmb3JlLC5mYS1tYXJzLXN0cm9rZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYyMmIifS5mYS1tYXJzLXN0cm9rZS11cDpiZWZvcmUsLmZhLW1hcnMtc3Ryb2tlLXY6YmVmb3Jle2NvbnRlbnQ6IlxmMjJhIn0uZmEtZ2xhc3MtbWFydGluaS1hbHQ6YmVmb3JlLC5mYS1tYXJ0aW5pLWdsYXNzOmJlZm9yZXtjb250ZW50OiJcZjU3YiJ9LmZhLWNvY2t0YWlsOmJlZm9yZSwuZmEtbWFydGluaS1nbGFzcy1jaXRydXM6YmVmb3Jle2NvbnRlbnQ6IlxmNTYxIn0uZmEtZ2xhc3MtbWFydGluaTpiZWZvcmUsLmZhLW1hcnRpbmktZ2xhc3MtZW1wdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMDAwIn0uZmEtbWFzazpiZWZvcmV7Y29udGVudDoiXGY2ZmEifS5mYS1tYXNrLWZhY2U6YmVmb3Jle2NvbnRlbnQ6IlxlMWQ3In0uZmEtbWFza3MtdGhlYXRlcjpiZWZvcmUsLmZhLXRoZWF0ZXItbWFza3M6YmVmb3Jle2NvbnRlbnQ6IlxmNjMwIn0uZmEtZXhwYW5kLWFycm93cy1hbHQ6YmVmb3JlLC5mYS1tYXhpbWl6ZTpiZWZvcmV7Y29udGVudDoiXGYzMWUifS5mYS1tZWRhbDpiZWZvcmV7Y29udGVudDoiXGY1YTIifS5mYS1tZW1vcnk6YmVmb3Jle2NvbnRlbnQ6IlxmNTM4In0uZmEtbWVub3JhaDpiZWZvcmV7Y29udGVudDoiXGY2NzYifS5mYS1tZXJjdXJ5OmJlZm9yZXtjb250ZW50OiJcZjIyMyJ9LmZhLWNvbW1lbnQtYWx0OmJlZm9yZSwuZmEtbWVzc2FnZTpiZWZvcmV7Y29udGVudDoiXGYyN2EifS5mYS1tZXRlb3I6YmVmb3Jle2NvbnRlbnQ6IlxmNzUzIn0uZmEtbWljcm9jaGlwOmJlZm9yZXtjb250ZW50OiJcZjJkYiJ9LmZhLW1pY3JvcGhvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTMwIn0uZmEtbWljcm9waG9uZS1hbHQ6YmVmb3JlLC5mYS1taWNyb3Bob25lLWxpbmVzOmJlZm9yZXtjb250ZW50OiJcZjNjOSJ9LmZhLW1pY3JvcGhvbmUtYWx0LXNsYXNoOmJlZm9yZSwuZmEtbWljcm9waG9uZS1saW5lcy1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGY1MzkifS5mYS1taWNyb3Bob25lLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjEzMSJ9LmZhLW1pY3Jvc2NvcGU6YmVmb3Jle2NvbnRlbnQ6IlxmNjEwIn0uZmEtbWlsbC1zaWduOmJlZm9yZXtjb250ZW50OiJcZTFlZCJ9LmZhLWNvbXByZXNzLWFycm93cy1hbHQ6YmVmb3JlLC5mYS1taW5pbWl6ZTpiZWZvcmV7Y29udGVudDoiXGY3OGMifS5mYS1taW51czpiZWZvcmUsLmZhLXN1YnRyYWN0OmJlZm9yZXtjb250ZW50OiJcZjA2OCJ9LmZhLW1pdHRlbjpiZWZvcmV7Y29udGVudDoiXGY3YjUifS5mYS1tb2JpbGUtYW5kcm9pZDpiZWZvcmUsLmZhLW1vYmlsZS1waG9uZTpiZWZvcmUsLmZhLW1vYmlsZTpiZWZvcmV7Y29udGVudDoiXGYzY2UifS5mYS1tb2JpbGUtYnV0dG9uOmJlZm9yZXtjb250ZW50OiJcZjEwYiJ9LmZhLW1vYmlsZS1hbHQ6YmVmb3JlLC5mYS1tb2JpbGUtc2NyZWVuLWJ1dHRvbjpiZWZvcmV7Y29udGVudDoiXGYzY2QifS5mYS1tb25leS1iaWxsOmJlZm9yZXtjb250ZW50OiJcZjBkNiJ9LmZhLW1vbmV5LWJpbGwtMTpiZWZvcmUsLmZhLW1vbmV5LWJpbGwtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNkMSJ9LmZhLW1vbmV5LWJpbGwtMS13YXZlOmJlZm9yZSwuZmEtbW9uZXktYmlsbC13YXZlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1M2IifS5mYS1tb25leS1iaWxsLXdhdmU6YmVmb3Jle2NvbnRlbnQ6IlxmNTNhIn0uZmEtbW9uZXktY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmNTNjIn0uZmEtbW9uZXktY2hlY2stYWx0OmJlZm9yZSwuZmEtbW9uZXktY2hlY2stZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjUzZCJ9LmZhLW1vbnVtZW50OmJlZm9yZXtjb250ZW50OiJcZjVhNiJ9LmZhLW1vb246YmVmb3Jle2NvbnRlbnQ6IlxmMTg2In0uZmEtbW9ydGFyLXBlc3RsZTpiZWZvcmV7Y29udGVudDoiXGY1YTcifS5mYS1tb3NxdWU6YmVmb3Jle2NvbnRlbnQ6IlxmNjc4In0uZmEtbW90b3JjeWNsZTpiZWZvcmV7Y29udGVudDoiXGYyMWMifS5mYS1tb3VudGFpbjpiZWZvcmV7Y29udGVudDoiXGY2ZmMifS5mYS1tdWctaG90OmJlZm9yZXtjb250ZW50OiJcZjdiNiJ9LmZhLWNvZmZlZTpiZWZvcmUsLmZhLW11Zy1zYXVjZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGY0In0uZmEtbXVzaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMDAxIn0uZmEtbjpiZWZvcmV7Y29udGVudDoiXDRlIn0uZmEtbmFpcmEtc2lnbjpiZWZvcmV7Y29udGVudDoiXGUxZjYifS5mYS1uZXR3b3JrLXdpcmVkOmJlZm9yZXtjb250ZW50OiJcZjZmZiJ9LmZhLW5ldXRlcjpiZWZvcmV7Y29udGVudDoiXGYyMmMifS5mYS1uZXdzcGFwZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMWVhIn0uZmEtbm90LWVxdWFsOmJlZm9yZXtjb250ZW50OiJcZjUzZSJ9LmZhLW5vdGUtc3RpY2t5OmJlZm9yZSwuZmEtc3RpY2t5LW5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ5In0uZmEtbm90ZXMtbWVkaWNhbDpiZWZvcmV7Y29udGVudDoiXGY0ODEifS5mYS1vOmJlZm9yZXtjb250ZW50OiJcNGYifS5mYS1vYmplY3QtZ3JvdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ3In0uZmEtb2JqZWN0LXVuZ3JvdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ4In0uZmEtb2lsLWNhbjpiZWZvcmV7Y29udGVudDoiXGY2MTMifS5mYS1vbTpiZWZvcmV7Y29udGVudDoiXGY2NzkifS5mYS1vdHRlcjpiZWZvcmV7Y29udGVudDoiXGY3MDAifS5mYS1kZWRlbnQ6YmVmb3JlLC5mYS1vdXRkZW50OmJlZm9yZXtjb250ZW50OiJcZjAzYiJ9LmZhLXA6YmVmb3Jle2NvbnRlbnQ6Ilw1MCJ9LmZhLXBhZ2VyOmJlZm9yZXtjb250ZW50OiJcZjgxNSJ9LmZhLXBhaW50LXJvbGxlcjpiZWZvcmV7Y29udGVudDoiXGY1YWEifS5mYS1wYWludC1icnVzaDpiZWZvcmUsLmZhLXBhaW50YnJ1c2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWZjIn0uZmEtcGFsZXR0ZTpiZWZvcmV7Y29udGVudDoiXGY1M2YifS5mYS1wYWxsZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDgyIn0uZmEtcGFub3JhbWE6YmVmb3Jle2NvbnRlbnQ6IlxlMjA5In0uZmEtcGFwZXItcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQ4In0uZmEtcGFwZXJjbGlwOmJlZm9yZXtjb250ZW50OiJcZjBjNiJ9LmZhLXBhcmFjaHV0ZS1ib3g6YmVmb3Jle2NvbnRlbnQ6IlxmNGNkIn0uZmEtcGFyYWdyYXBoOmJlZm9yZXtjb250ZW50OiJcZjFkZCJ9LmZhLXBhc3Nwb3J0OmJlZm9yZXtjb250ZW50OiJcZjVhYiJ9LmZhLWZpbGUtY2xpcGJvYXJkOmJlZm9yZSwuZmEtcGFzdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGVhIn0uZmEtcGF1c2U6YmVmb3Jle2NvbnRlbnQ6IlxmMDRjIn0uZmEtcGF3OmJlZm9yZXtjb250ZW50OiJcZjFiMCJ9LmZhLXBlYWNlOmJlZm9yZXtjb250ZW50OiJcZjY3YyJ9LmZhLXBlbjpiZWZvcmV7Y29udGVudDoiXGYzMDQifS5mYS1wZW4tYWx0OmJlZm9yZSwuZmEtcGVuLWNsaXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzA1In0uZmEtcGVuLWZhbmN5OmJlZm9yZXtjb250ZW50OiJcZjVhYyJ9LmZhLXBlbi1uaWI6YmVmb3Jle2NvbnRlbnQ6IlxmNWFkIn0uZmEtcGVuLXJ1bGVyOmJlZm9yZSwuZmEtcGVuY2lsLXJ1bGVyOmJlZm9yZXtjb250ZW50OiJcZjVhZSJ9LmZhLWVkaXQ6YmVmb3JlLC5mYS1wZW4tdG8tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA0NCJ9LmZhLXBlbmNpbC1hbHQ6YmVmb3JlLC5mYS1wZW5jaWw6YmVmb3Jle2NvbnRlbnQ6IlxmMzAzIn0uZmEtcGVvcGxlLWFycm93cy1sZWZ0LXJpZ2h0OmJlZm9yZSwuZmEtcGVvcGxlLWFycm93czpiZWZvcmV7Y29udGVudDoiXGUwNjgifS5mYS1wZW9wbGUtY2FycnktYm94OmJlZm9yZSwuZmEtcGVvcGxlLWNhcnJ5OmJlZm9yZXtjb250ZW50OiJcZjRjZSJ9LmZhLXBlcHBlci1ob3Q6YmVmb3Jle2NvbnRlbnQ6IlxmODE2In0uZmEtcGVyY2VudDpiZWZvcmUsLmZhLXBlcmNlbnRhZ2U6YmVmb3Jle2NvbnRlbnQ6IlwyNSJ9LmZhLW1hbGU6YmVmb3JlLC5mYS1wZXJzb246YmVmb3Jle2NvbnRlbnQ6IlxmMTgzIn0uZmEtYmlraW5nOmJlZm9yZSwuZmEtcGVyc29uLWJpa2luZzpiZWZvcmV7Y29udGVudDoiXGY4NGEifS5mYS1wZXJzb24tYm9vdGg6YmVmb3Jle2NvbnRlbnQ6IlxmNzU2In0uZmEtZGlhZ25vc2VzOmJlZm9yZSwuZmEtcGVyc29uLWRvdHMtZnJvbS1saW5lOmJlZm9yZXtjb250ZW50OiJcZjQ3MCJ9LmZhLWZlbWFsZTpiZWZvcmUsLmZhLXBlcnNvbi1kcmVzczpiZWZvcmV7Y29udGVudDoiXGYxODIifS5mYS1oaWtpbmc6YmVmb3JlLC5mYS1wZXJzb24taGlraW5nOmJlZm9yZXtjb250ZW50OiJcZjZlYyJ9LmZhLXBlcnNvbi1wcmF5aW5nOmJlZm9yZSwuZmEtcHJheTpiZWZvcmV7Y29udGVudDoiXGY2ODMifS5mYS1wZXJzb24tcnVubmluZzpiZWZvcmUsLmZhLXJ1bm5pbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNzBjIn0uZmEtcGVyc29uLXNrYXRpbmc6YmVmb3JlLC5mYS1za2F0aW5nOmJlZm9yZXtjb250ZW50OiJcZjdjNSJ9LmZhLXBlcnNvbi1za2lpbmc6YmVmb3JlLC5mYS1za2lpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmN2M5In0uZmEtcGVyc29uLXNraWluZy1ub3JkaWM6YmVmb3JlLC5mYS1za2lpbmctbm9yZGljOmJlZm9yZXtjb250ZW50OiJcZjdjYSJ9LmZhLXBlcnNvbi1zbm93Ym9hcmRpbmc6YmVmb3JlLC5mYS1zbm93Ym9hcmRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmN2NlIn0uZmEtcGVyc29uLXN3aW1taW5nOmJlZm9yZSwuZmEtc3dpbW1lcjpiZWZvcmV7Y29udGVudDoiXGY1YzQifS5mYS1wZXJzb24td2Fsa2luZzpiZWZvcmUsLmZhLXdhbGtpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNTU0In0uZmEtYmxpbmQ6YmVmb3JlLC5mYS1wZXJzb24td2Fsa2luZy13aXRoLWNhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjlkIn0uZmEtcGVzZXRhLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMjIxIn0uZmEtcGVzby1zaWduOmJlZm9yZXtjb250ZW50OiJcZTIyMiJ9LmZhLXBob25lOmJlZm9yZXtjb250ZW50OiJcZjA5NSJ9LmZhLXBob25lLWFsdDpiZWZvcmUsLmZhLXBob25lLWZsaXA6YmVmb3Jle2NvbnRlbnQ6IlxmODc5In0uZmEtcGhvbmUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmM2RkIn0uZmEtcGhvbmUtdm9sdW1lOmJlZm9yZSwuZmEtdm9sdW1lLWNvbnRyb2wtcGhvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmEwIn0uZmEtcGhvdG8tZmlsbTpiZWZvcmUsLmZhLXBob3RvLXZpZGVvOmJlZm9yZXtjb250ZW50OiJcZjg3YyJ9LmZhLXBpZ2d5LWJhbms6YmVmb3Jle2NvbnRlbnQ6IlxmNGQzIn0uZmEtcGlsbHM6YmVmb3Jle2NvbnRlbnQ6IlxmNDg0In0uZmEtcGl6emEtc2xpY2U6YmVmb3Jle2NvbnRlbnQ6IlxmODE4In0uZmEtcGxhY2Utb2Ytd29yc2hpcDpiZWZvcmV7Y29udGVudDoiXGY2N2YifS5mYS1wbGFuZTpiZWZvcmV7Y29udGVudDoiXGYwNzIifS5mYS1wbGFuZS1hcnJpdmFsOmJlZm9yZXtjb250ZW50OiJcZjVhZiJ9LmZhLXBsYW5lLWRlcGFydHVyZTpiZWZvcmV7Y29udGVudDoiXGY1YjAifS5mYS1wbGFuZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGUwNjkifS5mYS1wbGF5OmJlZm9yZXtjb250ZW50OiJcZjA0YiJ9LmZhLXBsdWc6YmVmb3Jle2NvbnRlbnQ6IlxmMWU2In0uZmEtYWRkOmJlZm9yZSwuZmEtcGx1czpiZWZvcmV7Y29udGVudDoiXDJiIn0uZmEtcGx1cy1taW51czpiZWZvcmV7Y29udGVudDoiXGU0M2MifS5mYS1wb2RjYXN0OmJlZm9yZXtjb250ZW50OiJcZjJjZSJ9LmZhLXBvbzpiZWZvcmV7Y29udGVudDoiXGYyZmUifS5mYS1wb28tYm9sdDpiZWZvcmUsLmZhLXBvby1zdG9ybTpiZWZvcmV7Y29udGVudDoiXGY3NWEifS5mYS1wb29wOmJlZm9yZXtjb250ZW50OiJcZjYxOSJ9LmZhLXBvd2VyLW9mZjpiZWZvcmV7Y29udGVudDoiXGYwMTEifS5mYS1wcmVzY3JpcHRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNWIxIn0uZmEtcHJlc2NyaXB0aW9uLWJvdHRsZTpiZWZvcmV7Y29udGVudDoiXGY0ODUifS5mYS1wcmVzY3JpcHRpb24tYm90dGxlLWFsdDpiZWZvcmUsLmZhLXByZXNjcmlwdGlvbi1ib3R0bGUtbWVkaWNhbDpiZWZvcmV7Y29udGVudDoiXGY0ODYifS5mYS1wcmludDpiZWZvcmV7Y29udGVudDoiXGYwMmYifS5mYS1wdW1wLW1lZGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxlMDZhIn0uZmEtcHVtcC1zb2FwOmJlZm9yZXtjb250ZW50OiJcZTA2YiJ9LmZhLXB1enpsZS1waWVjZTpiZWZvcmV7Y29udGVudDoiXGYxMmUifS5mYS1xOmJlZm9yZXtjb250ZW50OiJcNTEifS5mYS1xcmNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDI5In0uZmEtcXVlc3Rpb246YmVmb3Jle2NvbnRlbnQ6IlwzZiJ9LmZhLXF1b3RlLWxlZnQtYWx0OmJlZm9yZSwuZmEtcXVvdGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMGQifS5mYS1xdW90ZS1yaWdodC1hbHQ6YmVmb3JlLC5mYS1xdW90ZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMGUifS5mYS1yOmJlZm9yZXtjb250ZW50OiJcNTIifS5mYS1yYWRpYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmN2I5In0uZmEtcmFpbmJvdzpiZWZvcmV7Y29udGVudDoiXGY3NWIifS5mYS1yZWNlaXB0OmJlZm9yZXtjb250ZW50OiJcZjU0MyJ9LmZhLXJlY29yZC12aW55bDpiZWZvcmV7Y29udGVudDoiXGY4ZDkifS5mYS1hZDpiZWZvcmUsLmZhLXJlY3RhbmdsZS1hZDpiZWZvcmV7Y29udGVudDoiXGY2NDEifS5mYS1saXN0LWFsdDpiZWZvcmUsLmZhLXJlY3RhbmdsZS1saXN0OmJlZm9yZXtjb250ZW50OiJcZjAyMiJ9LmZhLXJlY3RhbmdsZS10aW1lczpiZWZvcmUsLmZhLXJlY3RhbmdsZS14bWFyazpiZWZvcmUsLmZhLXRpbWVzLXJlY3RhbmdsZTpiZWZvcmUsLmZhLXdpbmRvdy1jbG9zZTpiZWZvcmV7Y29udGVudDoiXGY0MTAifS5mYS1yZWN5Y2xlOmJlZm9yZXtjb250ZW50OiJcZjFiOCJ9LmZhLXJlZ2lzdGVyZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjVkIn0uZmEtcmVwZWF0OmJlZm9yZXtjb250ZW50OiJcZjM2MyJ9LmZhLW1haWwtcmVwbHk6YmVmb3JlLC5mYS1yZXBseTpiZWZvcmV7Y29udGVudDoiXGYzZTUifS5mYS1tYWlsLXJlcGx5LWFsbDpiZWZvcmUsLmZhLXJlcGx5LWFsbDpiZWZvcmV7Y29udGVudDoiXGYxMjIifS5mYS1yZXB1YmxpY2FuOmJlZm9yZXtjb250ZW50OiJcZjc1ZSJ9LmZhLXJlc3Ryb29tOmJlZm9yZXtjb250ZW50OiJcZjdiZCJ9LmZhLXJldHdlZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDc5In0uZmEtcmliYm9uOmJlZm9yZXtjb250ZW50OiJcZjRkNiJ9LmZhLXJpZ2h0LWZyb20tYnJhY2tldDpiZWZvcmUsLmZhLXNpZ24tb3V0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjUifS5mYS1leGNoYW5nZS1hbHQ6YmVmb3JlLC5mYS1yaWdodC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM2MiJ9LmZhLWxvbmctYXJyb3ctYWx0LXJpZ2h0OmJlZm9yZSwuZmEtcmlnaHQtbG9uZzpiZWZvcmV7Y29udGVudDoiXGYzMGIifS5mYS1yaWdodC10by1icmFja2V0OmJlZm9yZSwuZmEtc2lnbi1pbi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmY2In0uZmEtcmluZzpiZWZvcmV7Y29udGVudDoiXGY3MGIifS5mYS1yb2FkOmJlZm9yZXtjb250ZW50OiJcZjAxOCJ9LmZhLXJvYm90OmJlZm9yZXtjb250ZW50OiJcZjU0NCJ9LmZhLXJvY2tldDpiZWZvcmV7Y29udGVudDoiXGYxMzUifS5mYS1yb3RhdGU6YmVmb3JlLC5mYS1zeW5jLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjEifS5mYS1yb3RhdGUtYmFjazpiZWZvcmUsLmZhLXJvdGF0ZS1iYWNrd2FyZDpiZWZvcmUsLmZhLXJvdGF0ZS1sZWZ0OmJlZm9yZSwuZmEtdW5kby1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmVhIn0uZmEtcmVkby1hbHQ6YmVmb3JlLC5mYS1yb3RhdGUtZm9yd2FyZDpiZWZvcmUsLmZhLXJvdGF0ZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYyZjkifS5mYS1yb3V0ZTpiZWZvcmV7Y29udGVudDoiXGY0ZDcifS5mYS1mZWVkOmJlZm9yZSwuZmEtcnNzOmJlZm9yZXtjb250ZW50OiJcZjA5ZSJ9LmZhLXJvdWJsZTpiZWZvcmUsLmZhLXJ1YjpiZWZvcmUsLmZhLXJ1YmxlLXNpZ246YmVmb3JlLC5mYS1ydWJsZTpiZWZvcmV7Y29udGVudDoiXGYxNTgifS5mYS1ydWxlcjpiZWZvcmV7Y29udGVudDoiXGY1NDUifS5mYS1ydWxlci1jb21iaW5lZDpiZWZvcmV7Y29udGVudDoiXGY1NDYifS5mYS1ydWxlci1ob3Jpem9udGFsOmJlZm9yZXtjb250ZW50OiJcZjU0NyJ9LmZhLXJ1bGVyLXZlcnRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjU0OCJ9LmZhLXJ1cGVlLXNpZ246YmVmb3JlLC5mYS1ydXBlZTpiZWZvcmV7Y29udGVudDoiXGYxNTYifS5mYS1ydXBpYWgtc2lnbjpiZWZvcmV7Y29udGVudDoiXGUyM2QifS5mYS1zOmJlZm9yZXtjb250ZW50OiJcNTMifS5mYS1zYWlsYm9hdDpiZWZvcmV7Y29udGVudDoiXGU0NDUifS5mYS1zYXRlbGxpdGU6YmVmb3Jle2NvbnRlbnQ6IlxmN2JmIn0uZmEtc2F0ZWxsaXRlLWRpc2g6YmVmb3Jle2NvbnRlbnQ6IlxmN2MwIn0uZmEtYmFsYW5jZS1zY2FsZTpiZWZvcmUsLmZhLXNjYWxlLWJhbGFuY2VkOmJlZm9yZXtjb250ZW50OiJcZjI0ZSJ9LmZhLWJhbGFuY2Utc2NhbGUtbGVmdDpiZWZvcmUsLmZhLXNjYWxlLXVuYmFsYW5jZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTE1In0uZmEtYmFsYW5jZS1zY2FsZS1yaWdodDpiZWZvcmUsLmZhLXNjYWxlLXVuYmFsYW5jZWQtZmxpcDpiZWZvcmV7Y29udGVudDoiXGY1MTYifS5mYS1zY2hvb2w6YmVmb3Jle2NvbnRlbnQ6IlxmNTQ5In0uZmEtY3V0OmJlZm9yZSwuZmEtc2Npc3NvcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGM0In0uZmEtc2NyZXdkcml2ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNTRhIn0uZmEtc2NyZXdkcml2ZXItd3JlbmNoOmJlZm9yZSwuZmEtdG9vbHM6YmVmb3Jle2NvbnRlbnQ6IlxmN2Q5In0uZmEtc2Nyb2xsOmJlZm9yZXtjb250ZW50OiJcZjcwZSJ9LmZhLXNjcm9sbC10b3JhaDpiZWZvcmUsLmZhLXRvcmFoOmJlZm9yZXtjb250ZW50OiJcZjZhMCJ9LmZhLXNkLWNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmN2MyIn0uZmEtc2VjdGlvbjpiZWZvcmV7Y29udGVudDoiXGU0NDcifS5mYS1zZWVkbGluZzpiZWZvcmUsLmZhLXNwcm91dDpiZWZvcmV7Y29udGVudDoiXGY0ZDgifS5mYS1zZXJ2ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjMzIn0uZmEtc2hhcGVzOmJlZm9yZSwuZmEtdHJpYW5nbGUtY2lyY2xlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGY2MWYifS5mYS1hcnJvdy10dXJuLXJpZ2h0OmJlZm9yZSwuZmEtbWFpbC1mb3J3YXJkOmJlZm9yZSwuZmEtc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDY0In0uZmEtc2hhcmUtZnJvbS1zcXVhcmU6YmVmb3JlLC5mYS1zaGFyZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRkIn0uZmEtc2hhcmUtYWx0OmJlZm9yZSwuZmEtc2hhcmUtbm9kZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMWUwIn0uZmEtaWxzOmJlZm9yZSwuZmEtc2hla2VsLXNpZ246YmVmb3JlLC5mYS1zaGVrZWw6YmVmb3JlLC5mYS1zaGVxZWwtc2lnbjpiZWZvcmUsLmZhLXNoZXFlbDpiZWZvcmV7Y29udGVudDoiXGYyMGIifS5mYS1zaGllbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTMyIn0uZmEtc2hpZWxkLWFsdDpiZWZvcmUsLmZhLXNoaWVsZC1ibGFuazpiZWZvcmV7Y29udGVudDoiXGYzZWQifS5mYS1zaGllbGQtdmlydXM6YmVmb3Jle2NvbnRlbnQ6IlxlMDZjIn0uZmEtc2hpcDpiZWZvcmV7Y29udGVudDoiXGYyMWEifS5mYS1zaGlydDpiZWZvcmUsLmZhLXQtc2hpcnQ6YmVmb3JlLC5mYS10c2hpcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTUzIn0uZmEtc2hvZS1wcmludHM6YmVmb3Jle2NvbnRlbnQ6IlxmNTRiIn0uZmEtc2hvcDpiZWZvcmUsLmZhLXN0b3JlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1NGYifS5mYS1zaG9wLXNsYXNoOmJlZm9yZSwuZmEtc3RvcmUtYWx0LXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTA3MCJ9LmZhLXNob3dlcjpiZWZvcmV7Y29udGVudDoiXGYyY2MifS5mYS1zaHJpbXA6YmVmb3Jle2NvbnRlbnQ6IlxlNDQ4In0uZmEtcmFuZG9tOmJlZm9yZSwuZmEtc2h1ZmZsZTpiZWZvcmV7Y29udGVudDoiXGYwNzQifS5mYS1zaHV0dGxlLXNwYWNlOmJlZm9yZSwuZmEtc3BhY2Utc2h1dHRsZTpiZWZvcmV7Y29udGVudDoiXGYxOTcifS5mYS1zaWduLWhhbmdpbmc6YmVmb3JlLC5mYS1zaWduOmJlZm9yZXtjb250ZW50OiJcZjRkOSJ9LmZhLXNpZ25hbC01OmJlZm9yZSwuZmEtc2lnbmFsLXBlcmZlY3Q6YmVmb3JlLC5mYS1zaWduYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMDEyIn0uZmEtc2lnbmF0dXJlOmJlZm9yZXtjb250ZW50OiJcZjViNyJ9LmZhLW1hcC1zaWduczpiZWZvcmUsLmZhLXNpZ25zLXBvc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMjc3In0uZmEtc2ltLWNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmN2M0In0uZmEtc2luazpiZWZvcmV7Y29udGVudDoiXGUwNmQifS5mYS1zaXRlbWFwOmJlZm9yZXtjb250ZW50OiJcZjBlOCJ9LmZhLXNrdWxsOmJlZm9yZXtjb250ZW50OiJcZjU0YyJ9LmZhLXNrdWxsLWNyb3NzYm9uZXM6YmVmb3Jle2NvbnRlbnQ6IlxmNzE0In0uZmEtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNzE1In0uZmEtc2xlaWdoOmJlZm9yZXtjb250ZW50OiJcZjdjYyJ9LmZhLXNsaWRlcnMtaDpiZWZvcmUsLmZhLXNsaWRlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMWRlIn0uZmEtc21vZzpiZWZvcmV7Y29udGVudDoiXGY3NWYifS5mYS1zbW9raW5nOmJlZm9yZXtjb250ZW50OiJcZjQ4ZCJ9LmZhLXNub3dmbGFrZTpiZWZvcmV7Y29udGVudDoiXGYyZGMifS5mYS1zbm93bWFuOmJlZm9yZXtjb250ZW50OiJcZjdkMCJ9LmZhLXNub3dwbG93OmJlZm9yZXtjb250ZW50OiJcZjdkMiJ9LmZhLXNvYXA6YmVmb3Jle2NvbnRlbnQ6IlxlMDZlIn0uZmEtc29ja3M6YmVmb3Jle2NvbnRlbnQ6IlxmNjk2In0uZmEtc29sYXItcGFuZWw6YmVmb3Jle2NvbnRlbnQ6IlxmNWJhIn0uZmEtc29ydDpiZWZvcmUsLmZhLXVuc29ydGVkOmJlZm9yZXtjb250ZW50OiJcZjBkYyJ9LmZhLXNvcnQtZGVzYzpiZWZvcmUsLmZhLXNvcnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwZGQifS5mYS1zb3J0LWFzYzpiZWZvcmUsLmZhLXNvcnQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGRlIn0uZmEtc3BhOmJlZm9yZXtjb250ZW50OiJcZjViYiJ9LmZhLXBhc3RhZmFyaWFuaXNtOmJlZm9yZSwuZmEtc3BhZ2hldHRpLW1vbnN0ZXItZmx5aW5nOmJlZm9yZXtjb250ZW50OiJcZjY3YiJ9LmZhLXNwZWxsLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjg5MSJ9LmZhLXNwaWRlcjpiZWZvcmV7Y29udGVudDoiXGY3MTcifS5mYS1zcGlubmVyOmJlZm9yZXtjb250ZW50OiJcZjExMCJ9LmZhLXNwbG90Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmNWJjIn0uZmEtc3Bvb246YmVmb3JlLC5mYS11dGVuc2lsLXNwb29uOmJlZm9yZXtjb250ZW50OiJcZjJlNSJ9LmZhLXNwcmF5LWNhbjpiZWZvcmV7Y29udGVudDoiXGY1YmQifS5mYS1haXItZnJlc2hlbmVyOmJlZm9yZSwuZmEtc3ByYXktY2FuLXNwYXJrbGVzOmJlZm9yZXtjb250ZW50OiJcZjVkMCJ9LmZhLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwYzgifS5mYS1leHRlcm5hbC1saW5rLXNxdWFyZTpiZWZvcmUsLmZhLXNxdWFyZS1hcnJvdy11cC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxNGMifS5mYS1jYXJldC1zcXVhcmUtZG93bjpiZWZvcmUsLmZhLXNxdWFyZS1jYXJldC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE1MCJ9LmZhLWNhcmV0LXNxdWFyZS1sZWZ0OmJlZm9yZSwuZmEtc3F1YXJlLWNhcmV0LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTkxIn0uZmEtY2FyZXQtc3F1YXJlLXJpZ2h0OmJlZm9yZSwuZmEtc3F1YXJlLWNhcmV0LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjE1MiJ9LmZhLWNhcmV0LXNxdWFyZS11cDpiZWZvcmUsLmZhLXNxdWFyZS1jYXJldC11cDpiZWZvcmV7Y29udGVudDoiXGYxNTEifS5mYS1jaGVjay1zcXVhcmU6YmVmb3JlLC5mYS1zcXVhcmUtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMTRhIn0uZmEtZW52ZWxvcGUtc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLWVudmVsb3BlOmJlZm9yZXtjb250ZW50OiJcZjE5OSJ9LmZhLXNxdWFyZS1mdWxsOmJlZm9yZXtjb250ZW50OiJcZjQ1YyJ9LmZhLWgtc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMGZkIn0uZmEtbWludXMtc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjE0NiJ9LmZhLXBhcmtpbmc6YmVmb3JlLC5mYS1zcXVhcmUtcGFya2luZzpiZWZvcmV7Y29udGVudDoiXGY1NDAifS5mYS1wZW4tc3F1YXJlOmJlZm9yZSwuZmEtcGVuY2lsLXNxdWFyZTpiZWZvcmUsLmZhLXNxdWFyZS1wZW46YmVmb3Jle2NvbnRlbnQ6IlxmMTRiIn0uZmEtcGhvbmUtc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLXBob25lOmJlZm9yZXtjb250ZW50OiJcZjA5OCJ9LmZhLXBob25lLXNxdWFyZS1hbHQ6YmVmb3JlLC5mYS1zcXVhcmUtcGhvbmUtZmxpcDpiZWZvcmV7Y29udGVudDoiXGY4N2IifS5mYS1wbHVzLXNxdWFyZTpiZWZvcmUsLmZhLXNxdWFyZS1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjBmZSJ9LmZhLXBvbGwtaDpiZWZvcmUsLmZhLXNxdWFyZS1wb2xsLWhvcml6b250YWw6YmVmb3Jle2NvbnRlbnQ6IlxmNjgyIn0uZmEtcG9sbDpiZWZvcmUsLmZhLXNxdWFyZS1wb2xsLXZlcnRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjY4MSJ9LmZhLXNxdWFyZS1yb290LWFsdDpiZWZvcmUsLmZhLXNxdWFyZS1yb290LXZhcmlhYmxlOmJlZm9yZXtjb250ZW50OiJcZjY5OCJ9LmZhLXJzcy1zcXVhcmU6YmVmb3JlLC5mYS1zcXVhcmUtcnNzOmJlZm9yZXtjb250ZW50OiJcZjE0MyJ9LmZhLXNoYXJlLWFsdC1zcXVhcmU6YmVmb3JlLC5mYS1zcXVhcmUtc2hhcmUtbm9kZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMWUxIn0uZmEtZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0OmJlZm9yZSwuZmEtc3F1YXJlLXVwLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM2MCJ9LmZhLXNxdWFyZS14bWFyazpiZWZvcmUsLmZhLXRpbWVzLXNxdWFyZTpiZWZvcmUsLmZhLXhtYXJrLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyZDMifS5mYS1zdGFpcnM6YmVmb3Jle2NvbnRlbnQ6IlxlMjg5In0uZmEtc3RhbXA6YmVmb3Jle2NvbnRlbnQ6IlxmNWJmIn0uZmEtc3RhcjpiZWZvcmV7Y29udGVudDoiXGYwMDUifS5mYS1zdGFyLWFuZC1jcmVzY2VudDpiZWZvcmV7Y29udGVudDoiXGY2OTkifS5mYS1zdGFyLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMDg5In0uZmEtc3Rhci1oYWxmLWFsdDpiZWZvcmUsLmZhLXN0YXItaGFsZi1zdHJva2U6YmVmb3Jle2NvbnRlbnQ6IlxmNWMwIn0uZmEtc3Rhci1vZi1kYXZpZDpiZWZvcmV7Y29udGVudDoiXGY2OWEifS5mYS1zdGFyLW9mLWxpZmU6YmVmb3Jle2NvbnRlbnQ6IlxmNjIxIn0uZmEtZ2JwOmJlZm9yZSwuZmEtcG91bmQtc2lnbjpiZWZvcmUsLmZhLXN0ZXJsaW5nLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU0In0uZmEtc3RldGhvc2NvcGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGYxIn0uZmEtc3RvcDpiZWZvcmV7Y29udGVudDoiXGYwNGQifS5mYS1zdG9wd2F0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmMmYyIn0uZmEtc3RvcHdhdGNoLTIwOmJlZm9yZXtjb250ZW50OiJcZTA2ZiJ9LmZhLXN0b3JlOmJlZm9yZXtjb250ZW50OiJcZjU0ZSJ9LmZhLXN0b3JlLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTA3MSJ9LmZhLXN0cmVldC12aWV3OmJlZm9yZXtjb250ZW50OiJcZjIxZCJ9LmZhLXN0cmlrZXRocm91Z2g6YmVmb3Jle2NvbnRlbnQ6IlxmMGNjIn0uZmEtc3Ryb29wd2FmZWw6YmVmb3Jle2NvbnRlbnQ6IlxmNTUxIn0uZmEtc3Vic2NyaXB0OmJlZm9yZXtjb250ZW50OiJcZjEyYyJ9LmZhLXN1aXRjYXNlOmJlZm9yZXtjb250ZW50OiJcZjBmMiJ9LmZhLW1lZGtpdDpiZWZvcmUsLmZhLXN1aXRjYXNlLW1lZGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMGZhIn0uZmEtc3VpdGNhc2Utcm9sbGluZzpiZWZvcmV7Y29udGVudDoiXGY1YzEifS5mYS1zdW46YmVmb3Jle2NvbnRlbnQ6IlxmMTg1In0uZmEtc3VwZXJzY3JpcHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTJiIn0uZmEtc3dhdGNoYm9vazpiZWZvcmV7Y29udGVudDoiXGY1YzMifS5mYS1zeW5hZ29ndWU6YmVmb3Jle2NvbnRlbnQ6IlxmNjliIn0uZmEtc3lyaW5nZTpiZWZvcmV7Y29udGVudDoiXGY0OGUifS5mYS10OmJlZm9yZXtjb250ZW50OiJcNTQifS5mYS10YWJsZTpiZWZvcmV7Y29udGVudDoiXGYwY2UifS5mYS10YWJsZS1jZWxsczpiZWZvcmUsLmZhLXRoOmJlZm9yZXtjb250ZW50OiJcZjAwYSJ9LmZhLXRhYmxlLWNlbGxzLWxhcmdlOmJlZm9yZSwuZmEtdGgtbGFyZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMDA5In0uZmEtY29sdW1uczpiZWZvcmUsLmZhLXRhYmxlLWNvbHVtbnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGRiIn0uZmEtdGFibGUtbGlzdDpiZWZvcmUsLmZhLXRoLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDBiIn0uZmEtcGluZy1wb25nLXBhZGRsZS1iYWxsOmJlZm9yZSwuZmEtdGFibGUtdGVubmlzLXBhZGRsZS1iYWxsOmJlZm9yZSwuZmEtdGFibGUtdGVubmlzOmJlZm9yZXtjb250ZW50OiJcZjQ1ZCJ9LmZhLXRhYmxldC1hbmRyb2lkOmJlZm9yZSwuZmEtdGFibGV0OmJlZm9yZXtjb250ZW50OiJcZjNmYiJ9LmZhLXRhYmxldC1idXR0b246YmVmb3Jle2NvbnRlbnQ6IlxmMTBhIn0uZmEtdGFibGV0LWFsdDpiZWZvcmUsLmZhLXRhYmxldC1zY3JlZW4tYnV0dG9uOmJlZm9yZXtjb250ZW50OiJcZjNmYSJ9LmZhLXRhYmxldHM6YmVmb3Jle2NvbnRlbnQ6IlxmNDkwIn0uZmEtZGlnaXRhbC10YWNob2dyYXBoOmJlZm9yZSwuZmEtdGFjaG9ncmFwaC1kaWdpdGFsOmJlZm9yZXtjb250ZW50OiJcZjU2NiJ9LmZhLXRhZzpiZWZvcmV7Y29udGVudDoiXGYwMmIifS5mYS10YWdzOmJlZm9yZXtjb250ZW50OiJcZjAyYyJ9LmZhLXRhcGU6YmVmb3Jle2NvbnRlbnQ6IlxmNGRiIn0uZmEtY2FiOmJlZm9yZSwuZmEtdGF4aTpiZWZvcmV7Y29udGVudDoiXGYxYmEifS5mYS10ZWV0aDpiZWZvcmV7Y29udGVudDoiXGY2MmUifS5mYS10ZWV0aC1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjYyZiJ9LmZhLXRlbXBlcmF0dXJlLTA6YmVmb3JlLC5mYS10ZW1wZXJhdHVyZS1lbXB0eTpiZWZvcmUsLmZhLXRoZXJtb21ldGVyLTA6YmVmb3JlLC5mYS10aGVybW9tZXRlci1lbXB0eTpiZWZvcmV7Y29udGVudDoiXGYyY2IifS5mYS10ZW1wZXJhdHVyZS00OmJlZm9yZSwuZmEtdGVtcGVyYXR1cmUtZnVsbDpiZWZvcmUsLmZhLXRoZXJtb21ldGVyLTQ6YmVmb3JlLC5mYS10aGVybW9tZXRlci1mdWxsOmJlZm9yZXtjb250ZW50OiJcZjJjNyJ9LmZhLXRlbXBlcmF0dXJlLTI6YmVmb3JlLC5mYS10ZW1wZXJhdHVyZS1oYWxmOmJlZm9yZSwuZmEtdGhlcm1vbWV0ZXItMjpiZWZvcmUsLmZhLXRoZXJtb21ldGVyLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMmM5In0uZmEtdGVtcGVyYXR1cmUtaGlnaDpiZWZvcmV7Y29udGVudDoiXGY3NjkifS5mYS10ZW1wZXJhdHVyZS1sb3c6YmVmb3Jle2NvbnRlbnQ6IlxmNzZiIn0uZmEtdGVtcGVyYXR1cmUtMTpiZWZvcmUsLmZhLXRlbXBlcmF0dXJlLXF1YXJ0ZXI6YmVmb3JlLC5mYS10aGVybW9tZXRlci0xOmJlZm9yZSwuZmEtdGhlcm1vbWV0ZXItcXVhcnRlcjpiZWZvcmV7Y29udGVudDoiXGYyY2EifS5mYS10ZW1wZXJhdHVyZS0zOmJlZm9yZSwuZmEtdGVtcGVyYXR1cmUtdGhyZWUtcXVhcnRlcnM6YmVmb3JlLC5mYS10aGVybW9tZXRlci0zOmJlZm9yZSwuZmEtdGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMmM4In0uZmEtdGVuZ2Utc2lnbjpiZWZvcmUsLmZhLXRlbmdlOmJlZm9yZXtjb250ZW50OiJcZjdkNyJ9LmZhLXRlcm1pbmFsOmJlZm9yZXtjb250ZW50OiJcZjEyMCJ9LmZhLXRleHQtaGVpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjAzNCJ9LmZhLXJlbW92ZS1mb3JtYXQ6YmVmb3JlLC5mYS10ZXh0LXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjg3ZCJ9LmZhLXRleHQtd2lkdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMDM1In0uZmEtdGhlcm1vbWV0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDkxIn0uZmEtdGh1bWJzLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTY1In0uZmEtdGh1bWJzLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2NCJ9LmZhLXRodW1iLXRhY2s6YmVmb3JlLC5mYS10aHVtYnRhY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDhkIn0uZmEtdGlja2V0OmJlZm9yZXtjb250ZW50OiJcZjE0NSJ9LmZhLXRpY2tldC1hbHQ6YmVmb3JlLC5mYS10aWNrZXQtc2ltcGxlOmJlZm9yZXtjb250ZW50OiJcZjNmZiJ9LmZhLXRpbWVsaW5lOmJlZm9yZXtjb250ZW50OiJcZTI5YyJ9LmZhLXRvZ2dsZS1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxmMjA0In0uZmEtdG9nZ2xlLW9uOmJlZm9yZXtjb250ZW50OiJcZjIwNSJ9LmZhLXRvaWxldDpiZWZvcmV7Y29udGVudDoiXGY3ZDgifS5mYS10b2lsZXQtcGFwZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNzFlIn0uZmEtdG9pbGV0LXBhcGVyLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTA3MiJ9LmZhLXRvb2xib3g6YmVmb3Jle2NvbnRlbnQ6IlxmNTUyIn0uZmEtdG9vdGg6YmVmb3Jle2NvbnRlbnQ6IlxmNWM5In0uZmEtdG9yaWktZ2F0ZTpiZWZvcmV7Y29udGVudDoiXGY2YTEifS5mYS1icm9hZGNhc3QtdG93ZXI6YmVmb3JlLC5mYS10b3dlci1icm9hZGNhc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNTE5In0uZmEtdHJhY3RvcjpiZWZvcmV7Y29udGVudDoiXGY3MjIifS5mYS10cmFkZW1hcms6YmVmb3Jle2NvbnRlbnQ6IlxmMjVjIn0uZmEtdHJhZmZpYy1saWdodDpiZWZvcmV7Y29udGVudDoiXGY2MzcifS5mYS10cmFpbGVyOmJlZm9yZXtjb250ZW50OiJcZTA0MSJ9LmZhLXRyYWluOmJlZm9yZXtjb250ZW50OiJcZjIzOCJ9LmZhLXN1YndheTpiZWZvcmUsLmZhLXRyYWluLXN1YndheTpiZWZvcmV7Y29udGVudDoiXGYyMzkifS5mYS10cmFpbi10cmFtOmJlZm9yZSwuZmEtdHJhbTpiZWZvcmV7Y29udGVudDoiXGY3ZGEifS5mYS10cmFuc2dlbmRlci1hbHQ6YmVmb3JlLC5mYS10cmFuc2dlbmRlcjpiZWZvcmV7Y29udGVudDoiXGYyMjUifS5mYS10cmFzaDpiZWZvcmV7Y29udGVudDoiXGYxZjgifS5mYS10cmFzaC1hcnJvdy11cDpiZWZvcmUsLmZhLXRyYXNoLXJlc3RvcmU6YmVmb3Jle2NvbnRlbnQ6IlxmODI5In0uZmEtdHJhc2gtYWx0OmJlZm9yZSwuZmEtdHJhc2gtY2FuOmJlZm9yZXtjb250ZW50OiJcZjJlZCJ9LmZhLXRyYXNoLWNhbi1hcnJvdy11cDpiZWZvcmUsLmZhLXRyYXNoLXJlc3RvcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjgyYSJ9LmZhLXRyZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMWJiIn0uZmEtZXhjbGFtYXRpb24tdHJpYW5nbGU6YmVmb3JlLC5mYS10cmlhbmdsZS1leGNsYW1hdGlvbjpiZWZvcmUsLmZhLXdhcm5pbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMDcxIn0uZmEtdHJvcGh5OmJlZm9yZXtjb250ZW50OiJcZjA5MSJ9LmZhLXRydWNrOmJlZm9yZXtjb250ZW50OiJcZjBkMSJ9LmZhLXNoaXBwaW5nLWZhc3Q6YmVmb3JlLC5mYS10cnVjay1mYXN0OmJlZm9yZXtjb250ZW50OiJcZjQ4YiJ9LmZhLWFtYnVsYW5jZTpiZWZvcmUsLmZhLXRydWNrLW1lZGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMGY5In0uZmEtdHJ1Y2stbW9uc3RlcjpiZWZvcmV7Y29udGVudDoiXGY2M2IifS5mYS10cnVjay1tb3Zpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNGRmIn0uZmEtdHJ1Y2stcGlja3VwOmJlZm9yZXtjb250ZW50OiJcZjYzYyJ9LmZhLXRydWNrLWxvYWRpbmc6YmVmb3JlLC5mYS10cnVjay1yYW1wLWJveDpiZWZvcmV7Y29udGVudDoiXGY0ZGUifS5mYS10ZWxldHlwZTpiZWZvcmUsLmZhLXR0eTpiZWZvcmV7Y29udGVudDoiXGYxZTQifS5mYS10cnk6YmVmb3JlLC5mYS10dXJraXNoLWxpcmEtc2lnbjpiZWZvcmUsLmZhLXR1cmtpc2gtbGlyYTpiZWZvcmV7Y29udGVudDoiXGUyYmIifS5mYS1sZXZlbC1kb3duLWFsdDpiZWZvcmUsLmZhLXR1cm4tZG93bjpiZWZvcmV7Y29udGVudDoiXGYzYmUifS5mYS1sZXZlbC11cC1hbHQ6YmVmb3JlLC5mYS10dXJuLXVwOmJlZm9yZXtjb250ZW50OiJcZjNiZiJ9LmZhLXRlbGV2aXNpb246YmVmb3JlLC5mYS10di1hbHQ6YmVmb3JlLC5mYS10djpiZWZvcmV7Y29udGVudDoiXGYyNmMifS5mYS11OmJlZm9yZXtjb250ZW50OiJcNTUifS5mYS11bWJyZWxsYTpiZWZvcmV7Y29udGVudDoiXGYwZTkifS5mYS11bWJyZWxsYS1iZWFjaDpiZWZvcmV7Y29udGVudDoiXGY1Y2EifS5mYS11bmRlcmxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGNkIn0uZmEtdW5pdmVyc2FsLWFjY2VzczpiZWZvcmV7Y29udGVudDoiXGYyOWEifS5mYS11bmxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDljIn0uZmEtdW5sb2NrLWFsdDpiZWZvcmUsLmZhLXVubG9jay1rZXlob2xlOmJlZm9yZXtjb250ZW50OiJcZjEzZSJ9LmZhLWFycm93cy1hbHQtdjpiZWZvcmUsLmZhLXVwLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzM4In0uZmEtYXJyb3dzLWFsdDpiZWZvcmUsLmZhLXVwLWRvd24tbGVmdC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwYjIifS5mYS1sb25nLWFycm93LWFsdC11cDpiZWZvcmUsLmZhLXVwLWxvbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMzBjIn0uZmEtZXhwYW5kLWFsdDpiZWZvcmUsLmZhLXVwLXJpZ2h0LWFuZC1kb3duLWxlZnQtZnJvbS1jZW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDI0In0uZmEtZXh0ZXJuYWwtbGluay1hbHQ6YmVmb3JlLC5mYS11cC1yaWdodC1mcm9tLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzNWQifS5mYS11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDkzIn0uZmEtdXNlcjpiZWZvcmV7Y29udGVudDoiXGYwMDcifS5mYS11c2VyLWFzdHJvbmF1dDpiZWZvcmV7Y29udGVudDoiXGY0ZmIifS5mYS11c2VyLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjRmYyJ9LmZhLXVzZXItY2xvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmNGZkIn0uZmEtdXNlci1kb2N0b3I6YmVmb3JlLC5mYS11c2VyLW1kOmJlZm9yZXtjb250ZW50OiJcZjBmMCJ9LmZhLXVzZXItY29nOmJlZm9yZSwuZmEtdXNlci1nZWFyOmJlZm9yZXtjb250ZW50OiJcZjRmZSJ9LmZhLXVzZXItZ3JhZHVhdGU6YmVmb3Jle2NvbnRlbnQ6IlxmNTAxIn0uZmEtdXNlci1mcmllbmRzOmJlZm9yZSwuZmEtdXNlci1ncm91cDpiZWZvcmV7Y29udGVudDoiXGY1MDAifS5mYS11c2VyLWluanVyZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNzI4In0uZmEtdXNlci1hbHQ6YmVmb3JlLC5mYS11c2VyLWxhcmdlOmJlZm9yZXtjb250ZW50OiJcZjQwNiJ9LmZhLXVzZXItYWx0LXNsYXNoOmJlZm9yZSwuZmEtdXNlci1sYXJnZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGY0ZmEifS5mYS11c2VyLWxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmNTAyIn0uZmEtdXNlci1taW51czpiZWZvcmV7Y29udGVudDoiXGY1MDMifS5mYS11c2VyLW5pbmphOmJlZm9yZXtjb250ZW50OiJcZjUwNCJ9LmZhLXVzZXItbnVyc2U6YmVmb3Jle2NvbnRlbnQ6IlxmODJmIn0uZmEtdXNlci1lZGl0OmJlZm9yZSwuZmEtdXNlci1wZW46YmVmb3Jle2NvbnRlbnQ6IlxmNGZmIn0uZmEtdXNlci1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjIzNCJ9LmZhLXVzZXItc2VjcmV0OmJlZm9yZXtjb250ZW50OiJcZjIxYiJ9LmZhLXVzZXItc2hpZWxkOmJlZm9yZXtjb250ZW50OiJcZjUwNSJ9LmZhLXVzZXItc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNTA2In0uZmEtdXNlci10YWc6YmVmb3Jle2NvbnRlbnQ6IlxmNTA3In0uZmEtdXNlci10aWU6YmVmb3Jle2NvbnRlbnQ6IlxmNTA4In0uZmEtdXNlci10aW1lczpiZWZvcmUsLmZhLXVzZXIteG1hcms6YmVmb3Jle2NvbnRlbnQ6IlxmMjM1In0uZmEtdXNlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGMwIn0uZmEtdXNlcnMtY29nOmJlZm9yZSwuZmEtdXNlcnMtZ2VhcjpiZWZvcmV7Y29udGVudDoiXGY1MDkifS5mYS11c2Vycy1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGUwNzMifS5mYS1jdXRsZXJ5OmJlZm9yZSwuZmEtdXRlbnNpbHM6YmVmb3Jle2NvbnRlbnQ6IlxmMmU3In0uZmEtdjpiZWZvcmV7Y29udGVudDoiXDU2In0uZmEtc2h1dHRsZS12YW46YmVmb3JlLC5mYS12YW4tc2h1dHRsZTpiZWZvcmV7Y29udGVudDoiXGY1YjYifS5mYS12YXVsdDpiZWZvcmV7Y29udGVudDoiXGUyYzUifS5mYS12ZWN0b3Itc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjVjYiJ9LmZhLXZlbnVzOmJlZm9yZXtjb250ZW50OiJcZjIyMSJ9LmZhLXZlbnVzLWRvdWJsZTpiZWZvcmV7Y29udGVudDoiXGYyMjYifS5mYS12ZW51cy1tYXJzOmJlZm9yZXtjb250ZW50OiJcZjIyOCJ9LmZhLXZlc3Q6YmVmb3Jle2NvbnRlbnQ6IlxlMDg1In0uZmEtdmVzdC1wYXRjaGVzOmJlZm9yZXtjb250ZW50OiJcZTA4NiJ9LmZhLXZpYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNDkyIn0uZmEtdmlhbHM6YmVmb3Jle2NvbnRlbnQ6IlxmNDkzIn0uZmEtdmlkZW8tY2FtZXJhOmJlZm9yZSwuZmEtdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMDNkIn0uZmEtdmlkZW8tc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNGUyIn0uZmEtdmloYXJhOmJlZm9yZXtjb250ZW50OiJcZjZhNyJ9LmZhLXZpcnVzOmJlZm9yZXtjb250ZW50OiJcZTA3NCJ9LmZhLXZpcnVzLWNvdmlkOmJlZm9yZXtjb250ZW50OiJcZTRhOCJ9LmZhLXZpcnVzLWNvdmlkLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTRhOSJ9LmZhLXZpcnVzLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTA3NSJ9LmZhLXZpcnVzZXM6YmVmb3Jle2NvbnRlbnQ6IlxlMDc2In0uZmEtdm9pY2VtYWlsOmJlZm9yZXtjb250ZW50OiJcZjg5NyJ9LmZhLXZvbGxleWJhbGwtYmFsbDpiZWZvcmUsLmZhLXZvbGxleWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDVmIn0uZmEtdm9sdW1lLWhpZ2g6YmVmb3JlLC5mYS12b2x1bWUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDI4In0uZmEtdm9sdW1lLWRvd246YmVmb3JlLC5mYS12b2x1bWUtbG93OmJlZm9yZXtjb250ZW50OiJcZjAyNyJ9LmZhLXZvbHVtZS1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxmMDI2In0uZmEtdm9sdW1lLW11dGU6YmVmb3JlLC5mYS12b2x1bWUtdGltZXM6YmVmb3JlLC5mYS12b2x1bWUteG1hcms6YmVmb3Jle2NvbnRlbnQ6IlxmNmE5In0uZmEtdnItY2FyZGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjcyOSJ9LmZhLXc6YmVmb3Jle2NvbnRlbnQ6Ilw1NyJ9LmZhLXdhbGxldDpiZWZvcmV7Y29udGVudDoiXGY1NTUifS5mYS1tYWdpYzpiZWZvcmUsLmZhLXdhbmQtbWFnaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMGQwIn0uZmEtbWFnaWMtd2FuZC1zcGFya2xlczpiZWZvcmUsLmZhLXdhbmQtbWFnaWMtc3BhcmtsZXM6YmVmb3Jle2NvbnRlbnQ6IlxlMmNhIn0uZmEtd2FuZC1zcGFya2xlczpiZWZvcmV7Y29udGVudDoiXGY3MmIifS5mYS13YXJlaG91c2U6YmVmb3Jle2NvbnRlbnQ6IlxmNDk0In0uZmEtd2F0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNzczIn0uZmEtbGFkZGVyLXdhdGVyOmJlZm9yZSwuZmEtc3dpbW1pbmctcG9vbDpiZWZvcmUsLmZhLXdhdGVyLWxhZGRlcjpiZWZvcmV7Y29udGVudDoiXGY1YzUifS5mYS13YXZlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGY4M2UifS5mYS13ZWlnaHQtaGFuZ2luZzpiZWZvcmV7Y29udGVudDoiXGY1Y2QifS5mYS13ZWlnaHQtc2NhbGU6YmVmb3JlLC5mYS13ZWlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDk2In0uZmEtd2hlZWxjaGFpcjpiZWZvcmV7Y29udGVudDoiXGYxOTMifS5mYS1nbGFzcy13aGlza2V5OmJlZm9yZSwuZmEtd2hpc2tleS1nbGFzczpiZWZvcmV7Y29udGVudDoiXGY3YTAifS5mYS13aWZpLTM6YmVmb3JlLC5mYS13aWZpLXN0cm9uZzpiZWZvcmUsLmZhLXdpZmk6YmVmb3Jle2NvbnRlbnQ6IlxmMWViIn0uZmEtd2luZDpiZWZvcmV7Y29udGVudDoiXGY3MmUifS5mYS13aW5kb3ctbWF4aW1pemU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQwIn0uZmEtd2luZG93LW1pbmltaXplOmJlZm9yZXtjb250ZW50OiJcZjJkMSJ9LmZhLXdpbmRvdy1yZXN0b3JlOmJlZm9yZXtjb250ZW50OiJcZjJkMiJ9LmZhLXdpbmUtYm90dGxlOmJlZm9yZXtjb250ZW50OiJcZjcyZiJ9LmZhLXdpbmUtZ2xhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmNGUzIn0uZmEtd2luZS1nbGFzcy1hbHQ6YmVmb3JlLC5mYS13aW5lLWdsYXNzLWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZjVjZSJ9LmZhLWtydzpiZWZvcmUsLmZhLXdvbi1zaWduOmJlZm9yZSwuZmEtd29uOmJlZm9yZXtjb250ZW50OiJcZjE1OSJ9LmZhLXdyZW5jaDpiZWZvcmV7Y29udGVudDoiXGYwYWQifS5mYS14OmJlZm9yZXtjb250ZW50OiJcNTgifS5mYS14LXJheTpiZWZvcmV7Y29udGVudDoiXGY0OTcifS5mYS1jbG9zZTpiZWZvcmUsLmZhLW11bHRpcGx5OmJlZm9yZSwuZmEtcmVtb3ZlOmJlZm9yZSwuZmEtdGltZXM6YmVmb3JlLC5mYS14bWFyazpiZWZvcmV7Y29udGVudDoiXGYwMGQifS5mYS15OmJlZm9yZXtjb250ZW50OiJcNTkifS5mYS1jbnk6YmVmb3JlLC5mYS1qcHk6YmVmb3JlLC5mYS1ybWI6YmVmb3JlLC5mYS15ZW4tc2lnbjpiZWZvcmUsLmZhLXllbjpiZWZvcmV7Y29udGVudDoiXGYxNTcifS5mYS15aW4teWFuZzpiZWZvcmV7Y29udGVudDoiXGY2YWQifS5mYS16OmJlZm9yZXtjb250ZW50OiJcNWEifS5mYS1zci1vbmx5LC5mYS1zci1vbmx5LWZvY3VzYWJsZTpub3QoOmZvY3VzKSwuc3Itb25seSwuc3Itb25seS1mb2N1c2FibGU6bm90KDpmb2N1cyl7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O2hlaWdodDoxcHg7cGFkZGluZzowO21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtjbGlwOnJlY3QoMCwwLDAsMCk7d2hpdGUtc3BhY2U6bm93cmFwO2JvcmRlci13aWR0aDowfTpob3N0LDpyb290ey0tZmEtZm9udC1icmFuZHM6bm9ybWFsIDQwMCAxZW0vMSAiRm9udCBBd2Vzb21lIDYgQnJhbmRzIn1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNiBCcmFuZHMiO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCguLi93ZWJmb250cy9mYS1icmFuZHMtNDAwLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC4uL3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIil9LmZhLWJyYW5kcywuZmFie2ZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNiBCcmFuZHMiO2ZvbnQtd2VpZ2h0OjQwMH0uZmEtNDItZ3JvdXA6YmVmb3JlLC5mYS1pbm5vc29mdDpiZWZvcmV7Y29udGVudDoiXGUwODAifS5mYS01MDBweDpiZWZvcmV7Y29udGVudDoiXGYyNmUifS5mYS1hY2Nlc3NpYmxlLWljb246YmVmb3Jle2NvbnRlbnQ6IlxmMzY4In0uZmEtYWNjdXNvZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzY5In0uZmEtYWRuOmJlZm9yZXtjb250ZW50OiJcZjE3MCJ9LmZhLWFkdmVyc2FsOmJlZm9yZXtjb250ZW50OiJcZjM2YSJ9LmZhLWFmZmlsaWF0ZXRoZW1lOmJlZm9yZXtjb250ZW50OiJcZjM2YiJ9LmZhLWFpcmJuYjpiZWZvcmV7Y29udGVudDoiXGY4MzQifS5mYS1hbGdvbGlhOmJlZm9yZXtjb250ZW50OiJcZjM2YyJ9LmZhLWFsaXBheTpiZWZvcmV7Y29udGVudDoiXGY2NDIifS5mYS1hbWF6b246YmVmb3Jle2NvbnRlbnQ6IlxmMjcwIn0uZmEtYW1hem9uLXBheTpiZWZvcmV7Y29udGVudDoiXGY0MmMifS5mYS1hbWlsaWE6YmVmb3Jle2NvbnRlbnQ6IlxmMzZkIn0uZmEtYW5kcm9pZDpiZWZvcmV7Y29udGVudDoiXGYxN2IifS5mYS1hbmdlbGxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMjA5In0uZmEtYW5ncnljcmVhdGl2ZTpiZWZvcmV7Y29udGVudDoiXGYzNmUifS5mYS1hbmd1bGFyOmJlZm9yZXtjb250ZW50OiJcZjQyMCJ9LmZhLWFwcC1zdG9yZTpiZWZvcmV7Y29udGVudDoiXGYzNmYifS5mYS1hcHAtc3RvcmUtaW9zOmJlZm9yZXtjb250ZW50OiJcZjM3MCJ9LmZhLWFwcGVyOmJlZm9yZXtjb250ZW50OiJcZjM3MSJ9LmZhLWFwcGxlOmJlZm9yZXtjb250ZW50OiJcZjE3OSJ9LmZhLWFwcGxlLXBheTpiZWZvcmV7Y29udGVudDoiXGY0MTUifS5mYS1hcnRzdGF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjc3YSJ9LmZhLWFzeW1tZXRyaWs6YmVmb3Jle2NvbnRlbnQ6IlxmMzcyIn0uZmEtYXRsYXNzaWFuOmJlZm9yZXtjb250ZW50OiJcZjc3YiJ9LmZhLWF1ZGlibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMzczIn0uZmEtYXV0b3ByZWZpeGVyOmJlZm9yZXtjb250ZW50OiJcZjQxYyJ9LmZhLWF2aWFuZXg6YmVmb3Jle2NvbnRlbnQ6IlxmMzc0In0uZmEtYXZpYXRvOmJlZm9yZXtjb250ZW50OiJcZjQyMSJ9LmZhLWF3czpiZWZvcmV7Y29udGVudDoiXGYzNzUifS5mYS1iYW5kY2FtcDpiZWZvcmV7Y29udGVudDoiXGYyZDUifS5mYS1iYXR0bGUtbmV0OmJlZm9yZXtjb250ZW50OiJcZjgzNSJ9LmZhLWJlaGFuY2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWI0In0uZmEtYmVoYW5jZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWI1In0uZmEtYmlsaWJpbGk6YmVmb3Jle2NvbnRlbnQ6IlxlM2Q5In0uZmEtYmltb2JqZWN0OmJlZm9yZXtjb250ZW50OiJcZjM3OCJ9LmZhLWJpdGJ1Y2tldDpiZWZvcmV7Y29udGVudDoiXGYxNzEifS5mYS1iaXRjb2luOmJlZm9yZXtjb250ZW50OiJcZjM3OSJ9LmZhLWJpdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMzdhIn0uZmEtYmxhY2stdGllOmJlZm9yZXtjb250ZW50OiJcZjI3ZSJ9LmZhLWJsYWNrYmVycnk6YmVmb3Jle2NvbnRlbnQ6IlxmMzdiIn0uZmEtYmxvZ2dlcjpiZWZvcmV7Y29udGVudDoiXGYzN2MifS5mYS1ibG9nZ2VyLWI6YmVmb3Jle2NvbnRlbnQ6IlxmMzdkIn0uZmEtYmx1ZXRvb3RoOmJlZm9yZXtjb250ZW50OiJcZjI5MyJ9LmZhLWJsdWV0b290aC1iOmJlZm9yZXtjb250ZW50OiJcZjI5NCJ9LmZhLWJvb3RzdHJhcDpiZWZvcmV7Y29udGVudDoiXGY4MzYifS5mYS1ib3RzOmJlZm9yZXtjb250ZW50OiJcZTM0MCJ9LmZhLWJ0YzpiZWZvcmV7Y29udGVudDoiXGYxNWEifS5mYS1idWZmZXI6YmVmb3Jle2NvbnRlbnQ6IlxmODM3In0uZmEtYnVyb21vYmVsZXhwZXJ0ZTpiZWZvcmV7Y29udGVudDoiXGYzN2YifS5mYS1idXktbi1sYXJnZTpiZWZvcmV7Y29udGVudDoiXGY4YTYifS5mYS1idXlzZWxsYWRzOmJlZm9yZXtjb250ZW50OiJcZjIwZCJ9LmZhLWNhbmFkaWFuLW1hcGxlLWxlYWY6YmVmb3Jle2NvbnRlbnQ6IlxmNzg1In0uZmEtY2MtYW1hem9uLXBheTpiZWZvcmV7Y29udGVudDoiXGY0MmQifS5mYS1jYy1hbWV4OmJlZm9yZXtjb250ZW50OiJcZjFmMyJ9LmZhLWNjLWFwcGxlLXBheTpiZWZvcmV7Y29udGVudDoiXGY0MTYifS5mYS1jYy1kaW5lcnMtY2x1YjpiZWZvcmV7Y29udGVudDoiXGYyNGMifS5mYS1jYy1kaXNjb3ZlcjpiZWZvcmV7Y29udGVudDoiXGYxZjIifS5mYS1jYy1qY2I6YmVmb3Jle2NvbnRlbnQ6IlxmMjRiIn0uZmEtY2MtbWFzdGVyY2FyZDpiZWZvcmV7Y29udGVudDoiXGYxZjEifS5mYS1jYy1wYXlwYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWY0In0uZmEtY2Mtc3RyaXBlOmJlZm9yZXtjb250ZW50OiJcZjFmNSJ9LmZhLWNjLXZpc2E6YmVmb3Jle2NvbnRlbnQ6IlxmMWYwIn0uZmEtY2VudGVyY29kZTpiZWZvcmV7Y29udGVudDoiXGYzODAifS5mYS1jZW50b3M6YmVmb3Jle2NvbnRlbnQ6IlxmNzg5In0uZmEtY2hyb21lOmJlZm9yZXtjb250ZW50OiJcZjI2OCJ9LmZhLWNocm9tZWNhc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmODM4In0uZmEtY2xvdWRmbGFyZTpiZWZvcmV7Y29udGVudDoiXGUwN2QifS5mYS1jbG91ZHNjYWxlOmJlZm9yZXtjb250ZW50OiJcZjM4MyJ9LmZhLWNsb3Vkc21pdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMzg0In0uZmEtY2xvdWR2ZXJzaWZ5OmJlZm9yZXtjb250ZW50OiJcZjM4NSJ9LmZhLWNtcGxpZDpiZWZvcmV7Y29udGVudDoiXGUzNjAifS5mYS1jb2RlcGVuOmJlZm9yZXtjb250ZW50OiJcZjFjYiJ9LmZhLWNvZGllcGllOmJlZm9yZXtjb250ZW50OiJcZjI4NCJ9LmZhLWNvbmZsdWVuY2U6YmVmb3Jle2NvbnRlbnQ6IlxmNzhkIn0uZmEtY29ubmVjdGRldmVsb3A6YmVmb3Jle2NvbnRlbnQ6IlxmMjBlIn0uZmEtY29udGFvOmJlZm9yZXtjb250ZW50OiJcZjI2ZCJ9LmZhLWNvdHRvbi1idXJlYXU6YmVmb3Jle2NvbnRlbnQ6IlxmODllIn0uZmEtY3BhbmVsOmJlZm9yZXtjb250ZW50OiJcZjM4OCJ9LmZhLWNyZWF0aXZlLWNvbW1vbnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjVlIn0uZmEtY3JlYXRpdmUtY29tbW9ucy1ieTpiZWZvcmV7Y29udGVudDoiXGY0ZTcifS5mYS1jcmVhdGl2ZS1jb21tb25zLW5jOmJlZm9yZXtjb250ZW50OiJcZjRlOCJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtZXU6YmVmb3Jle2NvbnRlbnQ6IlxmNGU5In0uZmEtY3JlYXRpdmUtY29tbW9ucy1uYy1qcDpiZWZvcmV7Y29udGVudDoiXGY0ZWEifS5mYS1jcmVhdGl2ZS1jb21tb25zLW5kOmJlZm9yZXtjb250ZW50OiJcZjRlYiJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtcGQ6YmVmb3Jle2NvbnRlbnQ6IlxmNGVjIn0uZmEtY3JlYXRpdmUtY29tbW9ucy1wZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNGVkIn0uZmEtY3JlYXRpdmUtY29tbW9ucy1yZW1peDpiZWZvcmV7Y29udGVudDoiXGY0ZWUifS5mYS1jcmVhdGl2ZS1jb21tb25zLXNhOmJlZm9yZXtjb250ZW50OiJcZjRlZiJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtc2FtcGxpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNGYwIn0uZmEtY3JlYXRpdmUtY29tbW9ucy1zYW1wbGluZy1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjRmMSJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNGYyIn0uZmEtY3JlYXRpdmUtY29tbW9ucy16ZXJvOmJlZm9yZXtjb250ZW50OiJcZjRmMyJ9LmZhLWNyaXRpY2FsLXJvbGU6YmVmb3Jle2NvbnRlbnQ6IlxmNmM5In0uZmEtY3NzMzpiZWZvcmV7Y29udGVudDoiXGYxM2MifS5mYS1jc3MzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzOGIifS5mYS1jdXR0bGVmaXNoOmJlZm9yZXtjb250ZW50OiJcZjM4YyJ9LmZhLWQtYW5kLWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzhkIn0uZmEtZC1hbmQtZC1iZXlvbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNmNhIn0uZmEtZGFpbHltb3Rpb246YmVmb3Jle2NvbnRlbnQ6IlxlMDUyIn0uZmEtZGFzaGN1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjEwIn0uZmEtZGVlemVyOmJlZm9yZXtjb250ZW50OiJcZTA3NyJ9LmZhLWRlbGljaW91czpiZWZvcmV7Y29udGVudDoiXGYxYTUifS5mYS1kZXBsb3lkb2c6YmVmb3Jle2NvbnRlbnQ6IlxmMzhlIn0uZmEtZGVza3BybzpiZWZvcmV7Y29udGVudDoiXGYzOGYifS5mYS1kZXY6YmVmb3Jle2NvbnRlbnQ6IlxmNmNjIn0uZmEtZGV2aWFudGFydDpiZWZvcmV7Y29udGVudDoiXGYxYmQifS5mYS1kaGw6YmVmb3Jle2NvbnRlbnQ6IlxmNzkwIn0uZmEtZGlhc3BvcmE6YmVmb3Jle2NvbnRlbnQ6IlxmNzkxIn0uZmEtZGlnZzpiZWZvcmV7Y29udGVudDoiXGYxYTYifS5mYS1kaWdpdGFsLW9jZWFuOmJlZm9yZXtjb250ZW50OiJcZjM5MSJ9LmZhLWRpc2NvcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzkyIn0uZmEtZGlzY291cnNlOmJlZm9yZXtjb250ZW50OiJcZjM5MyJ9LmZhLWRvY2h1YjpiZWZvcmV7Y29udGVudDoiXGYzOTQifS5mYS1kb2NrZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMzk1In0uZmEtZHJhZnQyZGlnaXRhbDpiZWZvcmV7Y29udGVudDoiXGYzOTYifS5mYS1kcmliYmJsZTpiZWZvcmV7Y29udGVudDoiXGYxN2QifS5mYS1kcmliYmJsZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMzk3In0uZmEtZHJvcGJveDpiZWZvcmV7Y29udGVudDoiXGYxNmIifS5mYS1kcnVwYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWE5In0uZmEtZHlhbG9nOmJlZm9yZXtjb250ZW50OiJcZjM5OSJ9LmZhLWVhcmx5YmlyZHM6YmVmb3Jle2NvbnRlbnQ6IlxmMzlhIn0uZmEtZWJheTpiZWZvcmV7Y29udGVudDoiXGY0ZjQifS5mYS1lZGdlOmJlZm9yZXtjb250ZW50OiJcZjI4MiJ9LmZhLWVkZ2UtbGVnYWN5OmJlZm9yZXtjb250ZW50OiJcZTA3OCJ9LmZhLWVsZW1lbnRvcjpiZWZvcmV7Y29udGVudDoiXGY0MzAifS5mYS1lbGxvOmJlZm9yZXtjb250ZW50OiJcZjVmMSJ9LmZhLWVtYmVyOmJlZm9yZXtjb250ZW50OiJcZjQyMyJ9LmZhLWVtcGlyZTpiZWZvcmV7Y29udGVudDoiXGYxZDEifS5mYS1lbnZpcmE6YmVmb3Jle2NvbnRlbnQ6IlxmMjk5In0uZmEtZXJsYW5nOmJlZm9yZXtjb250ZW50OiJcZjM5ZCJ9LmZhLWV0aGVyZXVtOmJlZm9yZXtjb250ZW50OiJcZjQyZSJ9LmZhLWV0c3k6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ3In0uZmEtZXZlcm5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmODM5In0uZmEtZXhwZWRpdGVkc3NsOmJlZm9yZXtjb250ZW50OiJcZjIzZSJ9LmZhLWZhY2Vib29rOmJlZm9yZXtjb250ZW50OiJcZjA5YSJ9LmZhLWZhY2Vib29rLWY6YmVmb3Jle2NvbnRlbnQ6IlxmMzllIn0uZmEtZmFjZWJvb2stbWVzc2VuZ2VyOmJlZm9yZXtjb250ZW50OiJcZjM5ZiJ9LmZhLWZhY2Vib29rLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwODIifS5mYS1mYW50YXN5LWZsaWdodC1nYW1lczpiZWZvcmV7Y29udGVudDoiXGY2ZGMifS5mYS1mZWRleDpiZWZvcmV7Y29udGVudDoiXGY3OTcifS5mYS1mZWRvcmE6YmVmb3Jle2NvbnRlbnQ6IlxmNzk4In0uZmEtZmlnbWE6YmVmb3Jle2NvbnRlbnQ6IlxmNzk5In0uZmEtZmlyZWZveDpiZWZvcmV7Y29udGVudDoiXGYyNjkifS5mYS1maXJlZm94LWJyb3dzZXI6YmVmb3Jle2NvbnRlbnQ6IlxlMDA3In0uZmEtZmlyc3Qtb3JkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmIwIn0uZmEtZmlyc3Qtb3JkZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjUwYSJ9LmZhLWZpcnN0ZHJhZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ExIn0uZmEtZmxpY2tyOmJlZm9yZXtjb250ZW50OiJcZjE2ZSJ9LmZhLWZsaXBib2FyZDpiZWZvcmV7Y29udGVudDoiXGY0NGQifS5mYS1mbHk6YmVmb3Jle2NvbnRlbnQ6IlxmNDE3In0uZmEtZm9udC1hd2Vzb21lLWZsYWc6YmVmb3JlLC5mYS1mb250LWF3ZXNvbWUtbG9nby1mdWxsOmJlZm9yZSwuZmEtZm9udC1hd2Vzb21lOmJlZm9yZXtjb250ZW50OiJcZjJiNCJ9LmZhLWZvbnRpY29uczpiZWZvcmV7Y29udGVudDoiXGYyODAifS5mYS1mb250aWNvbnMtZmk6YmVmb3Jle2NvbnRlbnQ6IlxmM2EyIn0uZmEtZm9ydC1hd2Vzb21lOmJlZm9yZXtjb250ZW50OiJcZjI4NiJ9LmZhLWZvcnQtYXdlc29tZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2EzIn0uZmEtZm9ydW1iZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjExIn0uZmEtZm91cnNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxODAifS5mYS1mcmVlLWNvZGUtY2FtcDpiZWZvcmV7Y29udGVudDoiXGYyYzUifS5mYS1mcmVlYnNkOmJlZm9yZXtjb250ZW50OiJcZjNhNCJ9LmZhLWZ1bGNydW06YmVmb3Jle2NvbnRlbnQ6IlxmNTBiIn0uZmEtZ2FsYWN0aWMtcmVwdWJsaWM6YmVmb3Jle2NvbnRlbnQ6IlxmNTBjIn0uZmEtZ2FsYWN0aWMtc2VuYXRlOmJlZm9yZXtjb250ZW50OiJcZjUwZCJ9LmZhLWdldC1wb2NrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjY1In0uZmEtZ2c6YmVmb3Jle2NvbnRlbnQ6IlxmMjYwIn0uZmEtZ2ctY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjI2MSJ9LmZhLWdpdDpiZWZvcmV7Y29udGVudDoiXGYxZDMifS5mYS1naXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg0MSJ9LmZhLWdpdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQyIn0uZmEtZ2l0aHViOmJlZm9yZXtjb250ZW50OiJcZjA5YiJ9LmZhLWdpdGh1Yi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTEzIn0uZmEtZ2l0aHViLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwOTIifS5mYS1naXRrcmFrZW46YmVmb3Jle2NvbnRlbnQ6IlxmM2E2In0uZmEtZ2l0bGFiOmJlZm9yZXtjb250ZW50OiJcZjI5NiJ9LmZhLWdpdHRlcjpiZWZvcmV7Y29udGVudDoiXGY0MjYifS5mYS1nbGlkZTpiZWZvcmV7Y29udGVudDoiXGYyYTUifS5mYS1nbGlkZS1nOmJlZm9yZXtjb250ZW50OiJcZjJhNiJ9LmZhLWdvZm9yZTpiZWZvcmV7Y29udGVudDoiXGYzYTcifS5mYS1nb2xhbmc6YmVmb3Jle2NvbnRlbnQ6IlxlNDBmIn0uZmEtZ29vZHJlYWRzOmJlZm9yZXtjb250ZW50OiJcZjNhOCJ9LmZhLWdvb2RyZWFkcy1nOmJlZm9yZXtjb250ZW50OiJcZjNhOSJ9LmZhLWdvb2dsZTpiZWZvcmV7Y29udGVudDoiXGYxYTAifS5mYS1nb29nbGUtZHJpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2FhIn0uZmEtZ29vZ2xlLXBheTpiZWZvcmV7Y29udGVudDoiXGUwNzkifS5mYS1nb29nbGUtcGxheTpiZWZvcmV7Y29udGVudDoiXGYzYWIifS5mYS1nb29nbGUtcGx1czpiZWZvcmV7Y29udGVudDoiXGYyYjMifS5mYS1nb29nbGUtcGx1cy1nOmJlZm9yZXtjb250ZW50OiJcZjBkNSJ9LmZhLWdvb2dsZS1wbHVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwZDQifS5mYS1nb29nbGUtd2FsbGV0OmJlZm9yZXtjb250ZW50OiJcZjFlZSJ9LmZhLWdyYXRpcGF5OmJlZm9yZXtjb250ZW50OiJcZjE4NCJ9LmZhLWdyYXY6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ2In0uZmEtZ3JpcGZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2FjIn0uZmEtZ3J1bnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2FkIn0uZmEtZ3VpbGRlZDpiZWZvcmV7Y29udGVudDoiXGUwN2UifS5mYS1ndWxwOmJlZm9yZXtjb250ZW50OiJcZjNhZSJ9LmZhLWhhY2tlci1uZXdzOmJlZm9yZXtjb250ZW50OiJcZjFkNCJ9LmZhLWhhY2tlci1uZXdzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzYWYifS5mYS1oYWNrZXJyYW5rOmJlZm9yZXtjb250ZW50OiJcZjVmNyJ9LmZhLWhhc2hub2RlOmJlZm9yZXtjb250ZW50OiJcZTQ5OSJ9LmZhLWhpcHM6YmVmb3Jle2NvbnRlbnQ6IlxmNDUyIn0uZmEtaGlyZS1hLWhlbHBlcjpiZWZvcmV7Y29udGVudDoiXGYzYjAifS5mYS1oaXZlOmJlZm9yZXtjb250ZW50OiJcZTA3ZiJ9LmZhLWhvb2xpOmJlZm9yZXtjb250ZW50OiJcZjQyNyJ9LmZhLWhvcm5iaWxsOmJlZm9yZXtjb250ZW50OiJcZjU5MiJ9LmZhLWhvdGphcjpiZWZvcmV7Y29udGVudDoiXGYzYjEifS5mYS1ob3V6ejpiZWZvcmV7Y29udGVudDoiXGYyN2MifS5mYS1odG1sNTpiZWZvcmV7Y29udGVudDoiXGYxM2IifS5mYS1odWJzcG90OmJlZm9yZXtjb250ZW50OiJcZjNiMiJ9LmZhLWlkZWFsOmJlZm9yZXtjb250ZW50OiJcZTAxMyJ9LmZhLWltZGI6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ4In0uZmEtaW5zdGFncmFtOmJlZm9yZXtjb250ZW50OiJcZjE2ZCJ9LmZhLWluc3RhZ3JhbS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDU1In0uZmEtaW5zdGFsb2Q6YmVmb3Jle2NvbnRlbnQ6IlxlMDgxIn0uZmEtaW50ZXJjb206YmVmb3Jle2NvbnRlbnQ6IlxmN2FmIn0uZmEtaW50ZXJuZXQtZXhwbG9yZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjZiIn0uZmEtaW52aXNpb246YmVmb3Jle2NvbnRlbnQ6IlxmN2IwIn0uZmEtaW94aG9zdDpiZWZvcmV7Y29udGVudDoiXGYyMDgifS5mYS1pdGNoLWlvOmJlZm9yZXtjb250ZW50OiJcZjgzYSJ9LmZhLWl0dW5lczpiZWZvcmV7Y29udGVudDoiXGYzYjQifS5mYS1pdHVuZXMtbm90ZTpiZWZvcmV7Y29udGVudDoiXGYzYjUifS5mYS1qYXZhOmJlZm9yZXtjb250ZW50OiJcZjRlNCJ9LmZhLWplZGktb3JkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNTBlIn0uZmEtamVua2luczpiZWZvcmV7Y29udGVudDoiXGYzYjYifS5mYS1qaXJhOmJlZm9yZXtjb250ZW50OiJcZjdiMSJ9LmZhLWpvZ2V0OmJlZm9yZXtjb250ZW50OiJcZjNiNyJ9LmZhLWpvb21sYTpiZWZvcmV7Y29udGVudDoiXGYxYWEifS5mYS1qczpiZWZvcmV7Y29udGVudDoiXGYzYjgifS5mYS1qcy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2I5In0uZmEtanNmaWRkbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWNjIn0uZmEta2FnZ2xlOmJlZm9yZXtjb250ZW50OiJcZjVmYSJ9LmZhLWtleWJhc2U6YmVmb3Jle2NvbnRlbnQ6IlxmNGY1In0uZmEta2V5Y2RuOmJlZm9yZXtjb250ZW50OiJcZjNiYSJ9LmZhLWtpY2tzdGFydGVyOmJlZm9yZXtjb250ZW50OiJcZjNiYiJ9LmZhLWtpY2tzdGFydGVyLWs6YmVmb3Jle2NvbnRlbnQ6IlxmM2JjIn0uZmEta29ydnVlOmJlZm9yZXtjb250ZW50OiJcZjQyZiJ9LmZhLWxhcmF2ZWw6YmVmb3Jle2NvbnRlbnQ6IlxmM2JkIn0uZmEtbGFzdGZtOmJlZm9yZXtjb250ZW50OiJcZjIwMiJ9LmZhLWxhc3RmbS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjAzIn0uZmEtbGVhbnB1YjpiZWZvcmV7Y29udGVudDoiXGYyMTIifS5mYS1sZXNzOmJlZm9yZXtjb250ZW50OiJcZjQxZCJ9LmZhLWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2MwIn0uZmEtbGlua2VkaW46YmVmb3Jle2NvbnRlbnQ6IlxmMDhjIn0uZmEtbGlua2VkaW4taW46YmVmb3Jle2NvbnRlbnQ6IlxmMGUxIn0uZmEtbGlub2RlOmJlZm9yZXtjb250ZW50OiJcZjJiOCJ9LmZhLWxpbnV4OmJlZm9yZXtjb250ZW50OiJcZjE3YyJ9LmZhLWx5ZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2MzIn0uZmEtbWFnZW50bzpiZWZvcmV7Y29udGVudDoiXGYzYzQifS5mYS1tYWlsY2hpbXA6YmVmb3Jle2NvbnRlbnQ6IlxmNTllIn0uZmEtbWFuZGFsb3JpYW46YmVmb3Jle2NvbnRlbnQ6IlxmNTBmIn0uZmEtbWFya2Rvd246YmVmb3Jle2NvbnRlbnQ6IlxmNjBmIn0uZmEtbWFzdG9kb246YmVmb3Jle2NvbnRlbnQ6IlxmNGY2In0uZmEtbWF4Y2RuOmJlZm9yZXtjb250ZW50OiJcZjEzNiJ9LmZhLW1kYjpiZWZvcmV7Y29udGVudDoiXGY4Y2EifS5mYS1tZWRhcHBzOmJlZm9yZXtjb250ZW50OiJcZjNjNiJ9LmZhLW1lZGl1bS1tOmJlZm9yZSwuZmEtbWVkaXVtOmJlZm9yZXtjb250ZW50OiJcZjIzYSJ9LmZhLW1lZHJ0OmJlZm9yZXtjb250ZW50OiJcZjNjOCJ9LmZhLW1lZXR1cDpiZWZvcmV7Y29udGVudDoiXGYyZTAifS5mYS1tZWdhcG9ydDpiZWZvcmV7Y29udGVudDoiXGY1YTMifS5mYS1tZW5kZWxleTpiZWZvcmV7Y29udGVudDoiXGY3YjMifS5mYS1taWNyb2Jsb2c6YmVmb3Jle2NvbnRlbnQ6IlxlMDFhIn0uZmEtbWljcm9zb2Z0OmJlZm9yZXtjb250ZW50OiJcZjNjYSJ9LmZhLW1peDpiZWZvcmV7Y29udGVudDoiXGYzY2IifS5mYS1taXhjbG91ZDpiZWZvcmV7Y29udGVudDoiXGYyODkifS5mYS1taXhlcjpiZWZvcmV7Y29udGVudDoiXGUwNTYifS5mYS1taXp1bmk6YmVmb3Jle2NvbnRlbnQ6IlxmM2NjIn0uZmEtbW9keDpiZWZvcmV7Y29udGVudDoiXGYyODUifS5mYS1tb25lcm86YmVmb3Jle2NvbnRlbnQ6IlxmM2QwIn0uZmEtbmFwc3RlcjpiZWZvcmV7Y29udGVudDoiXGYzZDIifS5mYS1uZW9zOmJlZm9yZXtjb250ZW50OiJcZjYxMiJ9LmZhLW5pbWJscjpiZWZvcmV7Y29udGVudDoiXGY1YTgifS5mYS1ub2RlOmJlZm9yZXtjb250ZW50OiJcZjQxOSJ9LmZhLW5vZGUtanM6YmVmb3Jle2NvbnRlbnQ6IlxmM2QzIn0uZmEtbnBtOmJlZm9yZXtjb250ZW50OiJcZjNkNCJ9LmZhLW5zODpiZWZvcmV7Y29udGVudDoiXGYzZDUifS5mYS1udXRyaXRpb25peDpiZWZvcmV7Y29udGVudDoiXGYzZDYifS5mYS1vY3RvcHVzLWRlcGxveTpiZWZvcmV7Y29udGVudDoiXGUwODIifS5mYS1vZG5va2xhc3NuaWtpOmJlZm9yZXtjb250ZW50OiJcZjI2MyJ9LmZhLW9kbm9rbGFzc25pa2ktc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjI2NCJ9LmZhLW9sZC1yZXB1YmxpYzpiZWZvcmV7Y29udGVudDoiXGY1MTAifS5mYS1vcGVuY2FydDpiZWZvcmV7Y29udGVudDoiXGYyM2QifS5mYS1vcGVuaWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTliIn0uZmEtb3BlcmE6YmVmb3Jle2NvbnRlbnQ6IlxmMjZhIn0uZmEtb3B0aW4tbW9uc3RlcjpiZWZvcmV7Y29udGVudDoiXGYyM2MifS5mYS1vcmNpZDpiZWZvcmV7Y29udGVudDoiXGY4ZDIifS5mYS1vc2k6YmVmb3Jle2NvbnRlbnQ6IlxmNDFhIn0uZmEtcGFkbGV0OmJlZm9yZXtjb250ZW50OiJcZTRhMCJ9LmZhLXBhZ2U0OmJlZm9yZXtjb250ZW50OiJcZjNkNyJ9LmZhLXBhZ2VsaW5lczpiZWZvcmV7Y29udGVudDoiXGYxOGMifS5mYS1wYWxmZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2Q4In0uZmEtcGF0cmVvbjpiZWZvcmV7Y29udGVudDoiXGYzZDkifS5mYS1wYXlwYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWVkIn0uZmEtcGVyYnl0ZTpiZWZvcmV7Y29udGVudDoiXGUwODMifS5mYS1wZXJpc2NvcGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2RhIn0uZmEtcGhhYnJpY2F0b3I6YmVmb3Jle2NvbnRlbnQ6IlxmM2RiIn0uZmEtcGhvZW5peC1mcmFtZXdvcms6YmVmb3Jle2NvbnRlbnQ6IlxmM2RjIn0uZmEtcGhvZW5peC1zcXVhZHJvbjpiZWZvcmV7Y29udGVudDoiXGY1MTEifS5mYS1waHA6YmVmb3Jle2NvbnRlbnQ6IlxmNDU3In0uZmEtcGllZC1waXBlcjpiZWZvcmV7Y29udGVudDoiXGYyYWUifS5mYS1waWVkLXBpcGVyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxYTgifS5mYS1waWVkLXBpcGVyLWhhdDpiZWZvcmV7Y29udGVudDoiXGY0ZTUifS5mYS1waWVkLXBpcGVyLXBwOmJlZm9yZXtjb250ZW50OiJcZjFhNyJ9LmZhLXBpZWQtcGlwZXItc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZTAxZSJ9LmZhLXBpbnRlcmVzdDpiZWZvcmV7Y29udGVudDoiXGYwZDIifS5mYS1waW50ZXJlc3QtcDpiZWZvcmV7Y29udGVudDoiXGYyMzEifS5mYS1waW50ZXJlc3Qtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBkMyJ9LmZhLXBpeDpiZWZvcmV7Y29udGVudDoiXGU0M2EifS5mYS1wbGF5c3RhdGlvbjpiZWZvcmV7Y29udGVudDoiXGYzZGYifS5mYS1wcm9kdWN0LWh1bnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjg4In0uZmEtcHVzaGVkOmJlZm9yZXtjb250ZW50OiJcZjNlMSJ9LmZhLXB5dGhvbjpiZWZvcmV7Y29udGVudDoiXGYzZTIifS5mYS1xcTpiZWZvcmV7Y29udGVudDoiXGYxZDYifS5mYS1xdWluc2NhcGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDU5In0uZmEtcXVvcmE6YmVmb3Jle2NvbnRlbnQ6IlxmMmM0In0uZmEtci1wcm9qZWN0OmJlZm9yZXtjb250ZW50OiJcZjRmNyJ9LmZhLXJhc3BiZXJyeS1waTpiZWZvcmV7Y29udGVudDoiXGY3YmIifS5mYS1yYXZlbHJ5OmJlZm9yZXtjb250ZW50OiJcZjJkOSJ9LmZhLXJlYWN0OmJlZm9yZXtjb250ZW50OiJcZjQxYiJ9LmZhLXJlYWN0ZXVyb3BlOmJlZm9yZXtjb250ZW50OiJcZjc1ZCJ9LmZhLXJlYWRtZTpiZWZvcmV7Y29udGVudDoiXGY0ZDUifS5mYS1yZWJlbDpiZWZvcmV7Y29udGVudDoiXGYxZDAifS5mYS1yZWQtcml2ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmM2UzIn0uZmEtcmVkZGl0OmJlZm9yZXtjb250ZW50OiJcZjFhMSJ9LmZhLXJlZGRpdC1hbGllbjpiZWZvcmV7Y29udGVudDoiXGYyODEifS5mYS1yZWRkaXQtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjFhMiJ9LmZhLXJlZGhhdDpiZWZvcmV7Y29udGVudDoiXGY3YmMifS5mYS1yZW5yZW46YmVmb3Jle2NvbnRlbnQ6IlxmMThiIn0uZmEtcmVwbHlkOmJlZm9yZXtjb250ZW50OiJcZjNlNiJ9LmZhLXJlc2VhcmNoZ2F0ZTpiZWZvcmV7Y29udGVudDoiXGY0ZjgifS5mYS1yZXNvbHZpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmM2U3In0uZmEtcmV2OmJlZm9yZXtjb250ZW50OiJcZjViMiJ9LmZhLXJvY2tldGNoYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2U4In0uZmEtcm9ja3JtczpiZWZvcmV7Y29udGVudDoiXGYzZTkifS5mYS1ydXN0OmJlZm9yZXtjb250ZW50OiJcZTA3YSJ9LmZhLXNhZmFyaTpiZWZvcmV7Y29udGVudDoiXGYyNjcifS5mYS1zYWxlc2ZvcmNlOmJlZm9yZXtjb250ZW50OiJcZjgzYiJ9LmZhLXNhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmNDFlIn0uZmEtc2NobGl4OmJlZm9yZXtjb250ZW50OiJcZjNlYSJ9LmZhLXNjcmliZDpiZWZvcmV7Y29udGVudDoiXGYyOGEifS5mYS1zZWFyY2hlbmdpbjpiZWZvcmV7Y29udGVudDoiXGYzZWIifS5mYS1zZWxsY2FzdDpiZWZvcmV7Y29udGVudDoiXGYyZGEifS5mYS1zZWxsc3k6YmVmb3Jle2NvbnRlbnQ6IlxmMjEzIn0uZmEtc2VydmljZXN0YWNrOmJlZm9yZXtjb250ZW50OiJcZjNlYyJ9LmZhLXNoaXJ0c2luYnVsazpiZWZvcmV7Y29udGVudDoiXGYyMTQifS5mYS1zaG9waWZ5OmJlZm9yZXtjb250ZW50OiJcZTA1NyJ9LmZhLXNob3B3YXJlOmJlZm9yZXtjb250ZW50OiJcZjViNSJ9LmZhLXNpbXBseWJ1aWx0OmJlZm9yZXtjb250ZW50OiJcZjIxNSJ9LmZhLXNpc3RyaXg6YmVmb3Jle2NvbnRlbnQ6IlxmM2VlIn0uZmEtc2l0aDpiZWZvcmV7Y29udGVudDoiXGY1MTIifS5mYS1zaXRyb3g6YmVmb3Jle2NvbnRlbnQ6IlxlNDRhIn0uZmEtc2tldGNoOmJlZm9yZXtjb250ZW50OiJcZjdjNiJ9LmZhLXNreWF0bGFzOmJlZm9yZXtjb250ZW50OiJcZjIxNiJ9LmZhLXNreXBlOmJlZm9yZXtjb250ZW50OiJcZjE3ZSJ9LmZhLXNsYWNrLWhhc2g6YmVmb3JlLC5mYS1zbGFjazpiZWZvcmV7Y29udGVudDoiXGYxOTgifS5mYS1zbGlkZXNoYXJlOmJlZm9yZXtjb250ZW50OiJcZjFlNyJ9LmZhLXNuYXBjaGF0LWdob3N0OmJlZm9yZSwuZmEtc25hcGNoYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmFiIn0uZmEtc25hcGNoYXQtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjJhZCJ9LmZhLXNvdW5kY2xvdWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWJlIn0uZmEtc291cmNldHJlZTpiZWZvcmV7Y29udGVudDoiXGY3ZDMifS5mYS1zcGVha2FwOmJlZm9yZXtjb250ZW50OiJcZjNmMyJ9LmZhLXNwZWFrZXItZGVjazpiZWZvcmV7Y29udGVudDoiXGY4M2MifS5mYS1zcG90aWZ5OmJlZm9yZXtjb250ZW50OiJcZjFiYyJ9LmZhLXNxdWFyZS1mb250LWF3ZXNvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmNDI1In0uZmEtZm9udC1hd2Vzb21lLWFsdDpiZWZvcmUsLmZhLXNxdWFyZS1mb250LWF3ZXNvbWUtc3Ryb2tlOmJlZm9yZXtjb250ZW50OiJcZjM1YyJ9LmZhLXNxdWFyZXNwYWNlOmJlZm9yZXtjb250ZW50OiJcZjViZSJ9LmZhLXN0YWNrLWV4Y2hhbmdlOmJlZm9yZXtjb250ZW50OiJcZjE4ZCJ9LmZhLXN0YWNrLW92ZXJmbG93OmJlZm9yZXtjb250ZW50OiJcZjE2YyJ9LmZhLXN0YWNrcGF0aDpiZWZvcmV7Y29udGVudDoiXGY4NDIifS5mYS1zdGF5bGlua2VkOmJlZm9yZXtjb250ZW50OiJcZjNmNSJ9LmZhLXN0ZWFtOmJlZm9yZXtjb250ZW50OiJcZjFiNiJ9LmZhLXN0ZWFtLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxYjcifS5mYS1zdGVhbS1zeW1ib2w6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y2In0uZmEtc3RpY2tlci1tdWxlOmJlZm9yZXtjb250ZW50OiJcZjNmNyJ9LmZhLXN0cmF2YTpiZWZvcmV7Y29udGVudDoiXGY0MjgifS5mYS1zdHJpcGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDI5In0uZmEtc3RyaXBlLXM6YmVmb3Jle2NvbnRlbnQ6IlxmNDJhIn0uZmEtc3R1ZGlvdmluYXJpOmJlZm9yZXtjb250ZW50OiJcZjNmOCJ9LmZhLXN0dW1ibGV1cG9uOmJlZm9yZXtjb250ZW50OiJcZjFhNCJ9LmZhLXN0dW1ibGV1cG9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxYTMifS5mYS1zdXBlcnBvd2VyczpiZWZvcmV7Y29udGVudDoiXGYyZGQifS5mYS1zdXBwbGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y5In0uZmEtc3VzZTpiZWZvcmV7Y29udGVudDoiXGY3ZDYifS5mYS1zd2lmdDpiZWZvcmV7Y29udGVudDoiXGY4ZTEifS5mYS1zeW1mb255OmJlZm9yZXtjb250ZW50OiJcZjgzZCJ9LmZhLXRlYW1zcGVhazpiZWZvcmV7Y29udGVudDoiXGY0ZjkifS5mYS10ZWxlZ3JhbS1wbGFuZTpiZWZvcmUsLmZhLXRlbGVncmFtOmJlZm9yZXtjb250ZW50OiJcZjJjNiJ9LmZhLXRlbmNlbnQtd2VpYm86YmVmb3Jle2NvbnRlbnQ6IlxmMWQ1In0uZmEtdGhlLXJlZC15ZXRpOmJlZm9yZXtjb250ZW50OiJcZjY5ZCJ9LmZhLXRoZW1lY286YmVmb3Jle2NvbnRlbnQ6IlxmNWM2In0uZmEtdGhlbWVpc2xlOmJlZm9yZXtjb250ZW50OiJcZjJiMiJ9LmZhLXRoaW5rLXBlYWtzOmJlZm9yZXtjb250ZW50OiJcZjczMSJ9LmZhLXRpa3RvazpiZWZvcmV7Y29udGVudDoiXGUwN2IifS5mYS10cmFkZS1mZWRlcmF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjUxMyJ9LmZhLXRyZWxsbzpiZWZvcmV7Y29udGVudDoiXGYxODEifS5mYS10dW1ibHI6YmVmb3Jle2NvbnRlbnQ6IlxmMTczIn0uZmEtdHVtYmxyLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNzQifS5mYS10d2l0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWU4In0uZmEtdHdpdHRlcjpiZWZvcmV7Y29udGVudDoiXGYwOTkifS5mYS10d2l0dGVyLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwODEifS5mYS10eXBvMzpiZWZvcmV7Y29udGVudDoiXGY0MmIifS5mYS11YmVyOmJlZm9yZXtjb250ZW50OiJcZjQwMiJ9LmZhLXVidW50dTpiZWZvcmV7Y29udGVudDoiXGY3ZGYifS5mYS11aWtpdDpiZWZvcmV7Y29udGVudDoiXGY0MDMifS5mYS11bWJyYWNvOmJlZm9yZXtjb250ZW50OiJcZjhlOCJ9LmZhLXVuY2hhcnRlZDpiZWZvcmV7Y29udGVudDoiXGUwODQifS5mYS11bmlyZWdpc3RyeTpiZWZvcmV7Y29udGVudDoiXGY0MDQifS5mYS11bml0eTpiZWZvcmV7Y29udGVudDoiXGUwNDkifS5mYS11bnNwbGFzaDpiZWZvcmV7Y29udGVudDoiXGUwN2MifS5mYS11bnRhcHBkOmJlZm9yZXtjb250ZW50OiJcZjQwNSJ9LmZhLXVwczpiZWZvcmV7Y29udGVudDoiXGY3ZTAifS5mYS11c2I6YmVmb3Jle2NvbnRlbnQ6IlxmMjg3In0uZmEtdXNwczpiZWZvcmV7Y29udGVudDoiXGY3ZTEifS5mYS11c3N1bm5haDpiZWZvcmV7Y29udGVudDoiXGY0MDcifS5mYS12YWFkaW46YmVmb3Jle2NvbnRlbnQ6IlxmNDA4In0uZmEtdmlhY29pbjpiZWZvcmV7Y29udGVudDoiXGYyMzcifS5mYS12aWFkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMmE5In0uZmEtdmlhZGVvLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyYWEifS5mYS12aWJlcjpiZWZvcmV7Y29udGVudDoiXGY0MDkifS5mYS12aW1lbzpiZWZvcmV7Y29udGVudDoiXGY0MGEifS5mYS12aW1lby1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk0In0uZmEtdmltZW8tdjpiZWZvcmV7Y29udGVudDoiXGYyN2QifS5mYS12aW5lOmJlZm9yZXtjb250ZW50OiJcZjFjYSJ9LmZhLXZrOmJlZm9yZXtjb250ZW50OiJcZjE4OSJ9LmZhLXZudjpiZWZvcmV7Y29udGVudDoiXGY0MGIifS5mYS12dWVqczpiZWZvcmV7Y29udGVudDoiXGY0MWYifS5mYS13YXRjaG1hbi1tb25pdG9yaW5nOmJlZm9yZXtjb250ZW50OiJcZTA4NyJ9LmZhLXdhemU6YmVmb3Jle2NvbnRlbnQ6IlxmODNmIn0uZmEtd2VlYmx5OmJlZm9yZXtjb250ZW50OiJcZjVjYyJ9LmZhLXdlaWJvOmJlZm9yZXtjb250ZW50OiJcZjE4YSJ9LmZhLXdlaXhpbjpiZWZvcmV7Y29udGVudDoiXGYxZDcifS5mYS13aGF0c2FwcDpiZWZvcmV7Y29udGVudDoiXGYyMzIifS5mYS13aGF0c2FwcC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNDBjIn0uZmEtd2htY3M6YmVmb3Jle2NvbnRlbnQ6IlxmNDBkIn0uZmEtd2lraXBlZGlhLXc6YmVmb3Jle2NvbnRlbnQ6IlxmMjY2In0uZmEtd2luZG93czpiZWZvcmV7Y29udGVudDoiXGYxN2EifS5mYS13aXJzaW5kaGFuZHdlcms6YmVmb3JlLC5mYS13c2g6YmVmb3Jle2NvbnRlbnQ6IlxlMmQwIn0uZmEtd2l4OmJlZm9yZXtjb250ZW50OiJcZjVjZiJ9LmZhLXdpemFyZHMtb2YtdGhlLWNvYXN0OmJlZm9yZXtjb250ZW50OiJcZjczMCJ9LmZhLXdvZHU6YmVmb3Jle2NvbnRlbnQ6IlxlMDg4In0uZmEtd29sZi1wYWNrLWJhdHRhbGlvbjpiZWZvcmV7Y29udGVudDoiXGY1MTQifS5mYS13b3JkcHJlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMTlhIn0uZmEtd29yZHByZXNzLXNpbXBsZTpiZWZvcmV7Y29udGVudDoiXGY0MTEifS5mYS13cGJlZ2lubmVyOmJlZm9yZXtjb250ZW50OiJcZjI5NyJ9LmZhLXdwZXhwbG9yZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmRlIn0uZmEtd3Bmb3JtczpiZWZvcmV7Y29udGVudDoiXGYyOTgifS5mYS13cHJlc3NyOmJlZm9yZXtjb250ZW50OiJcZjNlNCJ9LmZhLXhib3g6YmVmb3Jle2NvbnRlbnQ6IlxmNDEyIn0uZmEteGluZzpiZWZvcmV7Y29udGVudDoiXGYxNjgifS5mYS14aW5nLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNjkifS5mYS15LWNvbWJpbmF0b3I6YmVmb3Jle2NvbnRlbnQ6IlxmMjNiIn0uZmEteWFob286YmVmb3Jle2NvbnRlbnQ6IlxmMTllIn0uZmEteWFtbWVyOmJlZm9yZXtjb250ZW50OiJcZjg0MCJ9LmZhLXlhbmRleDpiZWZvcmV7Y29udGVudDoiXGY0MTMifS5mYS15YW5kZXgtaW50ZXJuYXRpb25hbDpiZWZvcmV7Y29udGVudDoiXGY0MTQifS5mYS15YXJuOmJlZm9yZXtjb250ZW50OiJcZjdlMyJ9LmZhLXllbHA6YmVmb3Jle2NvbnRlbnQ6IlxmMWU5In0uZmEteW9hc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMmIxIn0uZmEteW91dHViZTpiZWZvcmV7Y29udGVudDoiXGYxNjcifS5mYS15b3V0dWJlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGY0MzEifS5mYS16aGlodTpiZWZvcmV7Y29udGVudDoiXGY2M2YifTpob3N0LDpyb290ey0tZmEtZm9udC1yZWd1bGFyOm5vcm1hbCA0MDAgMWVtLzEgIkZvbnQgQXdlc29tZSA2IEZyZWUifUBmb250LWZhY2V7Zm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA2IEZyZWUiO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX0uZmEtcmVndWxhciwuZmFye2ZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNiBGcmVlIjtmb250LXdlaWdodDo0MDB9Omhvc3QsOnJvb3R7LS1mYS1mb250LXNvbGlkOm5vcm1hbCA5MDAgMWVtLzEgIkZvbnQgQXdlc29tZSA2IEZyZWUifUBmb250LWZhY2V7Zm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA2IEZyZWUiO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjkwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCguLi93ZWJmb250cy9mYS1zb2xpZC05MDAud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfS5mYS1zb2xpZCwuZmFze2ZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNiBGcmVlIjtmb250LXdlaWdodDo5MDB9QGZvbnQtZmFjZXtmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjtmb250LWRpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NDAwO3NyYzp1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCguLi93ZWJmb250cy9mYS1icmFuZHMtNDAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IEZyZWUiO2ZvbnQtZGlzcGxheTpibG9jaztmb250LXdlaWdodDo5MDA7c3JjOnVybCguLi93ZWJmb250cy9mYS1zb2xpZC05MDAud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IEZyZWUiO2ZvbnQtZGlzcGxheTpibG9jaztmb250LXdlaWdodDo0MDA7c3JjOnVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJGb250QXdlc29tZSI7Zm9udC1kaXNwbGF5OmJsb2NrO3NyYzp1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC4uL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJGb250QXdlc29tZSI7Zm9udC1kaXNwbGF5OmJsb2NrO3NyYzp1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCguLi93ZWJmb250cy9mYS1icmFuZHMtNDAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6IkZvbnRBd2Vzb21lIjtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKTt1bmljb2RlLXJhbmdlOnUrZjAwMyx1K2YwMDYsdStmMDE0LHUrZjAxNi1mMDE3LHUrZjAxYS1mMDFiLHUrZjAxZCx1K2YwMjIsdStmMDNlLHUrZjA0NCx1K2YwNDYsdStmMDVjLWYwNWQsdStmMDZlLHUrZjA3MCx1K2YwODctZjA4OCx1K2YwOGEsdStmMDk0LHUrZjA5Ni1mMDk3LHUrZjA5ZCx1K2YwYTAsdStmMGEyLHUrZjBhNC1mMGE3LHUrZjBjNSx1K2YwYzcsdStmMGU1LWYwZTYsdStmMGViLHUrZjBmNi1mMGY4LHUrZjEwYyx1K2YxMTQtZjExNSx1K2YxMTgtZjExYSx1K2YxMWMtZjExZCx1K2YxMzMsdStmMTQ3LHUrZjE0ZSx1K2YxNTAtZjE1Mix1K2YxODUtZjE4Nix1K2YxOGUsdStmMTkwLWYxOTIsdStmMTk2LHUrZjFjMS1mMWM5LHUrZjFkOSx1K2YxZGIsdStmMWUzLHUrZjFlYSx1K2YxZjcsdStmMWY5LHUrZjIwYSx1K2YyNDctZjI0OCx1K2YyNGEsdStmMjRkLHUrZjI1NS1mMjViLHUrZjI1ZCx1K2YyNzEtZjI3NCx1K2YyNzgsdStmMjdiLHUrZjI4Yyx1K2YyOGUsdStmMjljLHUrZjJiNSx1K2YyYjcsdStmMmJhLHUrZjJiYyx1K2YyYmUsdStmMmMwLWYyYzEsdStmMmMzLHUrZjJkMCx1K2YyZDIsdStmMmQ0LHUrZjJkY31AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJGb250QXdlc29tZSI7Zm9udC1kaXNwbGF5OmJsb2NrO3NyYzp1cmwoLi4vd2ViZm9udHMvZmEtdjRjb21wYXRpYmlsaXR5LndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC4uL3dlYmZvbnRzL2ZhLXY0Y29tcGF0aWJpbGl0eS50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKTt1bmljb2RlLXJhbmdlOnUrZjA0MSx1K2YwNDcsdStmMDY1LWYwNjYsdStmMDdkLWYwN2UsdStmMDgwLHUrZjA4Yix1K2YwOGUsdStmMDkwLHUrZjA5YSx1K2YwYWMsdStmMGFlLHUrZjBiMix1K2YwZDAsdStmMGQ2LHUrZjBlNCx1K2YwZWMsdStmMTBhLWYxMGIsdStmMTIzLHUrZjEzZSx1K2YxNDgtZjE0OSx1K2YxNGMsdStmMTU2LHUrZjE1ZSx1K2YxNjAtZjE2MSx1K2YxNjMsdStmMTc1LWYxNzgsdStmMTk1LHUrZjFmOCx1K2YyMTksdStmMjUwLHUrZjI1Mix1K2YyN2F9"}},"time_used":68,"timings":{"blocked":-1,"dns":6,"connect":17,"send":0,"wait":44,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/img/logo.png","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.048Z","timestamp":1785145636048,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /img/logo.png HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: image/webp\r\ncontent-length: 12436\r\ncache-control: public, max-age=604800\r\nage: 6412\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 0341bf5fbf8aa84043041ab02e6c5998-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":12436,"size_decoded":12742,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"1eb62d1be813c3904c816df9cb1af5ee","sha1":"af9717123b8241f47c687245b7e25594efcf53b2","sha256":"f7ec55143c4bec7d71c91d5516da983fe97ad81fc712022f87b9f14b1eb98e34","sha512":"971b56970b35f2d408bc77e8a44c57f6fa4373c5c85fb87794d5a86f6a28f0ac1eed2def33ae6c3195562dfafd8867392cfd1be3e611b603f6ab0242fe46c5c1","ssdeep":"384:C9Cm5NkHZJdn/PlOq/DShiXeLco6Cbs268S:C9CaNin/PYgShBco6CN6","tlshash":"b242ae01f260e76ece01eb7f9470dffea4c75003b11871ad54a3a2a685bd82fb300698","first_seen":"2026-07-27T08:06:16.620653Z","last_seen":"2026-07-27T09:48:29.886692Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":26,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":26,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.tidio.co/widget-v4//tururu.mp3","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"media","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.401Z","timestamp":1785145636401,"http_version":"HTTP/2","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":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"GET /widget-v4//tururu.mp3 HTTP/1.1\r\nHost: code.tidio.co\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nRange: bytes=0-\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: audio\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nAccept-Encoding: identity\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 206 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: audio/mpeg\r\ncontent-length: 7224\r\nage: 7430\r\naccess-control-allow-origin: *\r\ncache-control: public, max-age=31536000, immutable\r\netag: \"6a670afb-1c38\"\r\nlast-modified: Mon, 27 Jul 2026 07:38:35 GMT\r\nserver: cloudflare\r\ncontent-range: bytes 0-7223/7224\r\ncf-cache-status: HIT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=XiSyBFI%2BC6Wng4jljHQb9hvl%2F1%2BYCwUhC5fwO%2FPg8X1Q%2F4fbYn4%2BhNcF5ifFCvxW%2BZCWrXVXLdrd5DgosSp5jkHlwzADFIgEWNHZLygc18%2B%2Fs2JUh8njwa3jQ2Ujz64%3D\"}]}\r\ncf-ray: a21ab8c38c98723c-OSL\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"206","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"]}],"data":{"size":7224,"size_decoded":7945,"mime_type":"audio/mpeg","magic":"MPEG ADTS, layer III, v1, 64 kbps, 44.1 kHz, Monaural","md5":"5061b4d134a7b4d5d744f9a127b757a8","sha1":"c5e240ac60d3914cb3836ba6652105c67720b845","sha256":"12c7687514ca85ba2157ed61914ac526bb9dd15cb5a2a2d9e4d88f919349284f","sha512":"bbd050943fd3129822d687f7733034989faa672e543d5fcc0f1bfc69f5af9c7ff3a4c6e1cd55011383760cef14351527f6de22cfb91b25e8d2ac201fc9b9c7c0","ssdeep":"192:2DjGr+6EnIPwZeM/BCepDxN8XcqOBO+JlRh:CjfxnIPkjpDP8Xcg+JlL","tlshash":"11e18c1937f3e09ed620177642d43664fcd01d8017e2945b25a8baebf13e3cbc26a961","first_seen":"2023-04-05T10:44:18Z","last_seen":"2026-07-29T05:11:58.424732Z","times_seen":9277,"resource_available":false,"data":"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"}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"js.intercomcdn.com/frame.592a94f6.js","fqdn":"js.intercomcdn.com","domain":"intercomcdn.com","tld":"com"},"ip":{"addr":"3.164.240.120","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.727Z","timestamp":1785145636727,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.intercomcdn.com","organization":""},"issuer":{"commonName":"Amazon RSA 2048 M04","organization":"Amazon"},"validity":{"start":"Tue, 30 Sep 2025 00:00:00 GMT","end":"Wed, 28 Oct 2026 23:59:59 GMT"},"fingerprint":{"sha1":"64:9F:0E:45:43:8B:97:70:93:C0:3C:A3:8C:86:3C:74:78:46:6C:83","sha256":"E3:A5:51:D3:19:77:B6:1B:44:2E:AB:1F:87:9D:CF:AA:C8:71:56:3F:4E:E4:70:F5:F0:03:7E:70:C2:D9:65:BF"}}},"request":{"raw":"GET /frame.592a94f6.js HTTP/1.1\r\nHost: js.intercomcdn.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\nOrigin: https://bit-core.top\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://bit-core.top/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ncontent-type: application/javascript; charset=UTF-8\r\ncontent-length: 192777\r\nlast-modified: Fri, 24 Jul 2026 17:54:10 GMT\r\nx-amz-server-side-encryption: AES256\r\ncontent-encoding: br\r\nx-amz-version-id: JiywCYbV8fpc0FUvCHpVbdgJwbKTwB8z\r\naccept-ranges: bytes\r\nserver: AmazonS3\r\ndate: Mon, 27 Jul 2026 07:56:17 GMT\r\ncache-control: max-age=31536000, s-maxage=7200, public\r\netag: \"1ad96839ca9934ab9314822f03a233d7\"\r\nvary: Accept-Encoding\r\nx-cache: Hit from cloudfront\r\nvia: 1.1 b5ef788d0f05b31973ca8ae989fe9748.cloudfront.net (CloudFront)\r\nx-amz-cf-pop: ARN53-P2\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-amz-cf-id: heE9PNezVGuIvNj-OzK_bgjz2vK6HB5x8QkhPj4Yzc4EPjf75q4Agg==\r\nage: 6660\r\nx-content-type-options: nosniff\r\nstrict-transport-security: max-age=31536000; includeSubDomains; preload\r\ncross-origin-resource-policy: cross-origin\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Amazon CloudFront","description":"Amazon CloudFront is a fast content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to customers globally with low latency, high transfer speeds.","website":"https://aws.amazon.com/cloudfront/","common_platform_enumeration":"","icon":"Amazon Cloudfront.svg","categories":["CDN"]},{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]},{"name":"Amazon S3","description":"Amazon S3 or Amazon Simple Storage Service is a service offered by Amazon Web Services (AWS) that provides object storage through a web service interface.","website":"https://aws.amazon.com/s3/","common_platform_enumeration":"","icon":"Amazon S3.svg","categories":["CDN"]}],"data":{"size":1247851,"size_decoded":193664,"mime_type":"application/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (65464)","md5":"6e9985840246778980d439efd79dde62","sha1":"921ee30aa1d0bca8913d1ae22cd0b9daea44a314","sha256":"c702dd6f5787265bf5a963618c722db984f41892c4e8c0fd3a7a5899230d8ab4","sha512":"c06903dee5df7b6a7ccfeaa455a4e30a1961bbe1b31d91c4e88ae515df31bcea542ebcb5585ea1db44f17066e8d1e1cd6d3e0d6f186a4b8f893c613722ff3363","ssdeep":"6144:hgUq9l5jjmF1Et0WZzASCkw3rMLj7MdMzL11oIYTn9SIK598zWfZXlQOmcDq6WZT:kNmFat0p7kl4r+RdFnGMgo/aH/p","tlshash":"9225d6ccb2d6f06a43976175812f200af33e6959b54d8050f629e8d1bcb958ee237f78","first_seen":"2026-07-24T18:07:21.508945Z","last_seen":"2026-07-27T12:56:09.791023Z","times_seen":278,"resource_available":false,"data":"LyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgZnJhbWUuNTkyYTk0ZjYuanMuTElDRU5TRS50eHQgKi8KIWZ1bmN0aW9uKCl7dmFyIHQsZSxuLHIsbyxpPXs3MzIzMDpmdW5jdGlvbih0LGUsbil7dmFyIHI9eyIuL2ZhaWxlZC5tcDMiOjMyODYzLCIuL25vdGlmaWNhdGlvbi5tcDMiOjk5MzQxLCIuL29wZXJhdG9yLm1wMyI6MzgyNDQsIi4vc3VibWl0Lm1wMyI6NDQxNTZ9O2Z1bmN0aW9uIG8odCl7dmFyIGU9aSh0KTtyZXR1cm4gbihlKX1mdW5jdGlvbiBpKHQpe2lmKCFuLm8ocix0KSl7dmFyIGU9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrdCsiJyIpO3Rocm93IGUuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsZX1yZXR1cm4gclt0XX1vLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMocil9LG8ucmVzb2x2ZT1pLHQuZXhwb3J0cz1vLG8uaWQ9NzMyMzB9LDI1MTY5OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj17Ii4vYXIuanNvbiI6WzkzNTE3LDQwOTldLCIuL2F6LUFaLmpzb24iOls3ODE4Myw2OTE1XSwiLi9iZy5qc29uIjpbMjUwODksMTM5NV0sIi4vYm4uanNvbiI6WzM4NDc4LDkwMTZdLCIuL2JzLmpzb24iOls0NTYzNyw0NzgzXSwiLi9jYS5qc29uIjpbNTE0ODIsMzI0NF0sIi4vY3MuanNvbiI6WzU2NDA4LDc3MzhdLCIuL2RhLmpzb24iOls4MTQ2OSwyNDk5XSwiLi9kZS1mb3JtLmpzb24iOls3Mjk1NCw3OTBdLCIuL2RlLmpzb24iOls3ODM0NSw3MjMxXSwiLi9lbC5qc29uIjpbNDEzNjMsNTMwNV0sIi4vZW4uanNvbiI6WzI2NzY1XSwiLi9lcy5qc29uIjpbMzIwNzAsNjcwMF0sIi4vZXQuanNvbiI6Wzk4NTEsNzEwNV0sIi4vZmEtSVIuanNvbiI6WzI4OTcsMzEwNV0sIi4vZmkuanNvbiI6Wzc3MjIzLDU3NzddLCIuL2ZyLUNBLmpzb24iOls4OTc1NywzMjAxXSwiLi9mci5qc29uIjpbMTQzMzQsNjMyOF0sIi4vaGUuanNvbiI6WzIxMjY5LDQ2NDNdLCIuL2hpLmpzb24iOls2ODI2NSw2NzQzXSwiLi9oci5qc29uIjpbNzI4MDQsNzE3OF0sIi4vaHUuanNvbiI6WzU1MTA5LDYyMjddLCIuL2h5Lmpzb24iOls5NDc0NSw1MDMxXSwiLi9pZC5qc29uIjpbNjIwMzksOTI2OV0sIi4vaXQuanNvbiI6WzE2OTM1LDMxMDldLCIuL2phLmpzb24iOls5NzUzOSw3NDQ1XSwiLi9rYS5qc29uIjpbMjY1MzAsNjk5Nl0sIi4va28uanNvbiI6WzcxNDAsNjM5OF0sIi4vbHQuanNvbiI6WzcwMTgyLDU1NDBdLCIuL2x2Lmpzb24iOls4MTQ2MCwzODQyXSwiLi9tbi5qc29uIjpbNjA2MTMsNjExXSwiLi9tcy5qc29uIjpbNTgwNjIsOTQ0NF0sIi4vbmIuanNvbiI6WzkyMzgsMjg2NF0sIi4vbmwuanNvbiI6WzExMjgwLDE0NDJdLCIuL3BhY2thZ2UuanNvbiI6WzU4NzM0LDg2NjFdLCIuL3BsLmpzb24iOlsxOTA1MCwxNjBdLCIuL3B0LUJSLmpzb24iOls3MTcxNywyNTI5XSwiLi9wdC5qc29uIjpbNjQ5OCw4MzkyXSwiLi9yby5qc29uIjpbNDAzNzcsMTg5OV0sIi4vcnUuanNvbiI6WzMwMTUxLDY3M10sIi4vc2kuanNvbiI6WzI5NDU4LDUzMDBdLCIuL3NrLmpzb24iOls1MTY4MCw4ODk4XSwiLi9zbC5qc29uIjpbNTE0MzMsODIxOV0sIi4vc3IuanNvbiI6WzgzMTE1LDIwNzddLCIuL3N2Lmpzb24iOls0MDkxOSw3Njk3XSwiLi9zdy5qc29uIjpbNzU1MjQsNDk0Ml0sIi4vdGEuanNvbiI6Wzc5MTgxLDQ3ODddLCIuL3RoLmpzb24iOls0MjY4Miw5NTkyXSwiLi90bC5qc29uIjpbODg2NjIsMzQxMl0sIi4vdHIuanNvbiI6Wzg3OTM2LDMwNTRdLCIuL3VrLmpzb24iOls1Mjk0LDI5OTZdLCIuL3VyLmpzb24iOlsyMDQ2NSw1NTldLCIuL3V6Lmpzb24iOls5MTYwOSw0MDcxXSwiLi92aS5qc29uIjpbMjM4MzEsNTg1N10sIi4vemgtQ04uanNvbiI6WzY0NzU0LDkxNjJdLCIuL3poLVRXLmpzb24iOls5ODk1MCw0MjMwXX07ZnVuY3Rpb24gbyh0KXtpZighbi5vKHIsdCkpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIGU9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrdCsiJyIpO3Rocm93IGUuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsZX0pKTt2YXIgZT1yW3RdLG89ZVswXTtyZXR1cm4gUHJvbWlzZS5hbGwoZS5zbGljZSgxKS5tYXAobi5lKSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbi50KG8sMTkpfSkpfW8ua2V5cz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhyKX0sby5pZD0yNTE2OSx0LmV4cG9ydHM9b30sMTk0OTA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvLGk9big5NjU0MCk7ZnVuY3Rpb24gYSgpe3JldHVybiBhPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sYS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZS5BPWZ1bmN0aW9uKHQpe3JldHVybiBpLmNyZWF0ZUVsZW1lbnQoInN2ZyIsYSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTUsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE1IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCkscnx8KHI9aS5jcmVhdGVFbGVtZW50KCJyZWN0Iix7d2lkdGg6MTYsaGVpZ2h0OjE0LHk6LjUsZmlsbDoiY3VycmVudENvbG9yIixyeDo0fSkpLG98fChvPWkuY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZDoiTTYuMTgxIDExLjFINy45TDYuMTQyIDQuOUg0LjIxM0wyLjQ2IDExLjFoMS41NjRsLjI5Ny0xLjM2MmgxLjU3MnpNNS4wNzcgNi4yOTZoLjA4MmwuNDkgMi4zMDdoLTEuMDh6bTcuNjM1IDQuODA0VjkuODMyaC0xLjMwNlY2LjE2N2gxLjMwNlY0Ljg5OUg4LjUyN3YxLjI2OGgxLjMwN3YzLjY2NUg4LjUyN1YxMS4xeiJ9KSkpfX0sNjYzNzI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvPW4oOTY1NDApO2Z1bmN0aW9uIGkoKXtyZXR1cm4gaT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWUuQT1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLGkoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLHJ8fChyPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik00IDJhMSAxIDAgMCAxIDIgMGg0YTEgMSAwIDEgMSAyIDBoLjVBMS41IDEuNSAwIDAgMSAxNCAzLjVWNEgydi0uNUExLjUgMS41IDAgMCAxIDMuNSAyek0yIDUuNWgxMlYxMmEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMnptMi41NzEgMy43YTEuMSAxLjEgMCAxIDAgMC0yLjIgMS4xIDEuMSAwIDAgMCAwIDIuMm00LjUzLTEuMWExLjEgMS4xIDAgMSAxLTIuMiAwIDEuMSAxLjEgMCAwIDEgMi4yIDBtMi4zMjggMS4xYTEuMSAxLjEgMCAxIDAgMC0yLjIgMS4xIDEuMSAwIDAgMCAwIDIuMk01LjY3IDExLjM5M2ExLjEgMS4xIDAgMSAxLTIuMiAwIDEuMSAxLjEgMCAwIDEgMi4yIDBtMi4zMyAxLjFhMS4xIDEuMSAwIDEgMCAwLTIuMiAxLjEgMS4xIDAgMCAwIDAgMi4yIixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpfX0sMzA2MDg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvPW4oOTY1NDApO2Z1bmN0aW9uIGkoKXtyZXR1cm4gaT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWUuQT1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLGkoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCkscnx8KHI9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJtMTQuODg0IDMuOTUtLjk1MS0uODZhLjM1LjM1IDAgMCAwLS40OTUuMDI2bC03LjIzNiA4LjAxMi0zLjc1Ny0zLjM5M2EuMzUuMzUgMCAwIDAtLjQ5NS4wMjVsLS44Ni45NTFhLjM1LjM1IDAgMCAwIC4wMjYuNDk1bDQuOTYgNC40OGEuMzQuMzQgMCAwIDAgLjE3LjA4Mi40LjQgMCAwIDAgLjA5Ny4wMDguMzUuMzUgMCAwIDAgLjI0My0uMTE1bDguMzI0LTkuMjE3YS4zNS4zNSAwIDAgMC0uMDI2LS40OTQifSkpKX19LDI3NTc1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbz1uKDk2NTQwKTtmdW5jdGlvbiBpKCl7cmV0dXJuIGk9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxpLmFwcGx5KG51bGwsYXJndW1lbnRzKX1lLkE9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixpKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxyfHwocj1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNMTUuNDkgMS40NTNjLjQzLjQzLjQzIDEuMTI1IDAgMS41NTRsLTUuMDIyIDUuMDJhMyAzIDAgMCAxLTEuMzQ0Ljc3NmwtLjg0NS4yMjZhLjMuMyAwIDAgMS0uMzY3LS4zNjhsLjIyNi0uODQzYTMgMyAwIDAgMSAuNzc3LTEuMzQ2bDUuMDIyLTUuMDE5YTEuMSAxLjEgMCAwIDEgMS41NTMgME0zIDJoNy43TDkgMy43SDNhLjMuMyAwIDAgMC0uMy4zdjlhLjMuMyAwIDAgMCAuMy4zaDlhLjMuMyAwIDAgMCAuMy0uM1Y4Ljg4NWwxLjctMS43VjEzYTIgMiAwIDAgMS0yIDJIM2EyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpKX19LDk5MzI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7V0k6ZnVuY3Rpb24oKXtyZXR1cm4gY30sbXA6ZnVuY3Rpb24oKXtyZXR1cm4gc30seTg6ZnVuY3Rpb24oKXtyZXR1cm4gdX19KTt2YXIgcj1uKDIzOTEwKSxvPW4oNjQ3ODUpLGk9big2NjI3NCksYT1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4oKDAsci51KShlW29dLHQpPj1uP286bnVsbCl8fE9iamVjdC5rZXlzKGUpLmZpbmQoKGZ1bmN0aW9uKG8pe3JldHVybigwLHIudSkoZVtvXSx0KT49bn0pKXx8b30sdT1mdW5jdGlvbih0KXtyZXR1cm57dHlwZTppLk1rSSx0YWJOYXZpZ2F0aW9uOnR9fSxzPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybnt0eXBlOmkuQTBVLGFjY2Vzc2liaWxpdHlUaGVtZToiZGVmYXVsdCIsc2Vjb25kYXJ5QWNjZXNzaWJpbGl0eVRoZW1lOiJsaWdodCJ9O3ZhciBlPXQuY29sb3Isbj10LnNlY29uZGFyeUNvbG9yO3JldHVybnt0eXBlOmkuQTBVLGFjY2Vzc2liaWxpdHlUaGVtZTphKGUsby5NLDIsImRlZmF1bHQiKSxzZWNvbmRhcnlBY2Nlc3NpYmlsaXR5VGhlbWU6YShuLG8uTSwyLCJsaWdodCIpfX0sYz1mdW5jdGlvbih0KXtyZXR1cm57dHlwZTppLnEkdSxpc01vZGFsT3Blbjp0fX19LDk0MjE0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse011OmZ1bmN0aW9uKCl7cmV0dXJuIEx9LEF5OmZ1bmN0aW9uKCl7cmV0dXJuIFZ9LFB3OmZ1bmN0aW9uKCl7cmV0dXJuIEZ9LFZ2OmZ1bmN0aW9uKCl7cmV0dXJuIFV9LHdKOmZ1bmN0aW9uKCl7cmV0dXJuIE99LGtJOmZ1bmN0aW9uKCl7cmV0dXJuIE59LGk2OmZ1bmN0aW9uKCl7cmV0dXJuIE19LHF5OmZ1bmN0aW9uKCl7cmV0dXJuIGt9LGRrOmZ1bmN0aW9uKCl7cmV0dXJuIFB9LHVuOmZ1bmN0aW9uKCl7cmV0dXJuIFJ9LEx5OmZ1bmN0aW9uKCl7cmV0dXJuIEJ9LFN5OmZ1bmN0aW9uKCl7cmV0dXJuIHp9LHA2OmZ1bmN0aW9uKCl7cmV0dXJuIFR9LGtCOmZ1bmN0aW9uKCl7cmV0dXJuIEF9LEx0OmZ1bmN0aW9uKCl7cmV0dXJuIER9LGt5OmZ1bmN0aW9uKCl7cmV0dXJuIEh9LElqOmZ1bmN0aW9uKCl7cmV0dXJuIHl9fSk7dmFyIHI9bigyOTk0MSksbz1uKDUxODgzKSxpPW4oMzgyNTMpLGE9bigxNDEyMCksdT1uKDQ2MDUpLHM9big0NTM4NyksYz1uKDE4Mzk5KSxsPW4oNjYyNzQpLGY9bigyNjcwMyksZD1uKDI5NTQ0KSxwPW4oNjMzNDkpLGg9big1NDI0OCksdj1uKDg3MTMzKTtmdW5jdGlvbiB5KHQsZSxuLHIpe3JldHVybnt0eXBlOmwubjFXLGFjY2Vzc1RvVGVhbW1hdGVFbmFibGVkOnQsc2VsZlNlcnZlU3VnZ2VzdGlvbnNNYXRjaDplLGFjdGl2ZUFkbWluczpuLGFjdGl2ZUJvdDpyfX12YXIgZz1uKDQ1MTk5KSxtPW4oODcyNjIpO2Z1bmN0aW9uIGIodCl7cmV0dXJuIGI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGIodCl9ZnVuY3Rpb24gdygpe3c9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnP2U6ZyxhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IGoocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpJKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIscD0ic3VzcGVuZGVkWWllbGQiLGg9ImV4ZWN1dGluZyIsdj0iY29tcGxldGVkIix5PXt9O2Z1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gbSgpe31mdW5jdGlvbiBfKCl7fXZhciBTPXt9O2MoUyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciB4PU9iamVjdC5nZXRQcm90b3R5cGVPZixFPXgmJngoeChQKFtdKSkpO0UmJkUhPT1uJiZyLmNhbGwoRSxhKSYmKFM9RSk7dmFyIEM9Xy5wcm90b3R5cGU9Zy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShTKTtmdW5jdGlvbiBPKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBBKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT1iKGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBJKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT1oKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PXYpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPWsodSxyKTtpZihzKXtpZihzPT09eSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89dixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289aDt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/djpwLGMuYXJnPT09eSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPXYsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBrKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxrKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLHk7dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLHk7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLHkpOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwseSl9ZnVuY3Rpb24gTCh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBUKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBqKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goTCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IoYihlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiBtLnByb3RvdHlwZT1fLG8oQywiY29uc3RydWN0b3IiLHt2YWx1ZTpfLGNvbmZpZ3VyYWJsZTohMH0pLG8oXywiY29uc3RydWN0b3IiLHt2YWx1ZTptLGNvbmZpZ3VyYWJsZTohMH0pLG0uZGlzcGxheU5hbWU9YyhfLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT1tfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxfKToodC5fX3Byb3RvX189XyxjKHQscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShDKSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxPKEEucHJvdG90eXBlKSxjKEEucHJvdG90eXBlLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUEsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBBKGwodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sTyhDKSxjKEMscywiR2VuZXJhdG9yIiksYyhDLGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyhDLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVAsai5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmoscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKFQpLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyx5KTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLHl9LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksVChuKSx5fX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO1Qobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSx5fX0sZX1mdW5jdGlvbiBfKCl7cmV0dXJuIF89T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxfLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBTKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24geCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXtTKGkscixvLGEsdSwibmV4dCIsdCl9ZnVuY3Rpb24gdSh0KXtTKGkscixvLGEsdSwidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19dmFyIEU9MTAwLEM9MzZlNTtmdW5jdGlvbiBPKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7ZSgpLmxhdW5jaGVyRGlzY292ZXJ5TW9kZS5pc0xhdW5jaGVyRGlzY292ZXJ5TW9kZU9wZW5pbmc/KHQoKDAsci5uYykoKSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gdChBKCkpfSksRSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gdCgoMCxyLnlRKSgpKX0pLEUpKTp0KEEoKSl9fWZ1bmN0aW9uIEEoKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt0KGUoKS5hcHAuaXNNZXNzZW5nZXJPcGVuP0woKTpJKCkpfX1mdW5jdGlvbiBJKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIG4scj1lKCksbz0oMCxoLkFlKShyKSxpPXIuYXBwLGE9aS5sYXN0T3BlbkF0VGltZXN0YW1wLHU9aS5oYXNUaGVNZXNzZW5nZXJCZWVuT3BlbmVkLGM9aS5mZWF0dXJlcyxsPShudWxsPT1jP3ZvaWQgMDpjLmltcHJvdmVPcGVuQmVoYXZpb3IpJiYobnVsbD09KG49ci5vcGVuT25Cb290KT92b2lkIDA6bi50eXBlKSxmPSEobnVsbCE9YyYmYy5pbXByb3ZlT3BlbkJlaGF2aW9yKSYmYSYmRGF0ZS5ub3coKS1hPkM7IWwmJighb3x8byYmdSkmJnQoeih7Zm9yY2VMb2NhdGlvblJlZGlyZWN0OiEhZixyZXBsYWNlQ3VycmVudFZpZXc6ISFmfSkpLHQoaygpKSx0KCgwLHMuWTYpKCkpfX1mdW5jdGlvbiBrKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0hMSkse3R5cGU6bC5KNEMsaGlkZUxpZ2h0d2VpZ2h0QXBwTWVzc2VuZ2VyOnR9fWZ1bmN0aW9uIEwodCxlKXt2b2lkIDA9PT10JiYodD0hMSk7dmFyIG49KHZvaWQgMD09PWU/e306ZSkucmV0dXJuRm9jdXMscj12b2lkIDAhPT1uJiZuO3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBvLGk9bigpO3ImJigwLG0uQSkoaSkmJmUoKDAsZy5vKSghMCkpLGUoe3R5cGU6bC5uUTAsZnJvbUNsb3NlQnV0dG9uOnQscGVyc2lzdFN0YXRlOiEobnVsbD09KG89aS5hcHApfHxudWxsPT0obz1vLmZlYXR1cmVzKXx8IW8uaW1wcm92ZU9wZW5CZWhhdmlvcil9KX19ZnVuY3Rpb24gVCh0KXt2YXIgZT12b2lkIDA9PT10P3t9OnQscj1lLmRlZmF1bHRNZXNzYWdlLGk9dm9pZCAwPT09cj8iIjpyLGE9ZS5yZXBsYWNlQ3VycmVudFZpZXcsdT12b2lkIDAhPT1hJiZhLHM9ZS5hcnRpY2xlVXJsLGM9dm9pZCAwPT09cz9udWxsOnMsZj1lLmFydGljbGVJRCxwPXZvaWQgMD09PWY/bnVsbDpmLGg9ZS5hcnRpY2xlSXNTdGFuZGFsb25lLHk9dm9pZCAwIT09aCYmaCxnPWUuYXJ0aWNsZUxpbmtQYXJ0LG09ZS52aXNpYmlsaXR5O3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPW4oNTJlMykuZmV0Y2hOZXdDb252ZXJzYXRpb25Db250ZW50OygwLGQuTE8pKGUoKSl8fHQocigpKSx0KHt0eXBlOmwudnhuLGRlZmF1bHRNZXNzYWdlOmkscmVwbGFjZUN1cnJlbnRWaWV3OnUsYXJ0aWNsZVVybDpjLGZyb21BcnRpY2xlSWQ6cCxmcm9tU3RhbmRhbG9uZUFydGljbGU6eSxwYXJ0czpnP1tnXTpbXX0pLHQoKHU/by5IQzpvLlZDKSgiL21lc3NhZ2VzL2NvbnZlcnNhdGlvbi9uZXciKygwLHYuV0MpKHtmcm9tQXJ0aWNsZUlEOnAsdmlzaWJpbGl0eTptfSkpKX19ZnVuY3Rpb24gaih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITEpLGZ1bmN0aW9uKGUpe2Uoe3R5cGU6bC5lRW4scmVwbGFjZUN1cnJlbnRWaWV3OnR9KSxlKCh0P28uSEM6by5WQykoIi9tZXNzYWdlcy9jb252ZXJzYXRpb24vdHJpZ2dlci1zY3JlZW4iKSl9fWZ1bmN0aW9uIFAoKXtyZXR1cm4gZnVuY3Rpb24odCl7dChqKCEwKSksdChrKCkpfX1mdW5jdGlvbiBOKHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLHZvaWQgMD09PW4mJihuPW51bGwpLGZ1bmN0aW9uKHIsbyl7dmFyIGk9bygpLmFwcCxhPWkuaGFzVGhlTWVzc2VuZ2VyQmVlbk9wZW5lZCx1PWkuaXNXYWl0aW5nRm9yT3BlbkNvbnRlbnQ7YSYmdSYmcih6KHtyZXBsYWNlQ3VycmVudFZpZXc6ITB9KSkscigoMCxjLnApKHQsZSxuKSkscihrKCkpfX1mdW5jdGlvbiBNKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPW51bGwpLGZ1bmN0aW9uKG4pe24oKDAscy5ZNikoKSksbihOKHQsITEsZSkpLG4oKDAsdS5RTCkoaS5BeSx0LHtyZXF1ZXN0T3JpZ2luOiJPcGVuIENvbnZlcnNhdGlvbiBJbiBNZXNzZW5nZXIgYWN0aW9uIn0pKX19ZnVuY3Rpb24gUih0LGUsbil7cmV0dXJuIHZvaWQgMD09PXQmJih0PSIiKSx2b2lkIDA9PT1lJiYoZT0hMSksdm9pZCAwPT09biYmKG49bnVsbCksZnVuY3Rpb24ocixpKXt2YXIgYSx1PWkoKTsoMCxkLkxPKSh1KXx8KDAsZC5FaSkodSk/cihUKHtkZWZhdWx0TWVzc2FnZTp0LHJlcGxhY2VDdXJyZW50VmlldzplLHZpc2liaWxpdHk6bnVsbCE9KGE9bik/YTp2b2lkIDB9KSk6biYmKDAscC5lKSh1KS5vcGVuc0RpcmVjdGx5SW50b0NvbnZlcnNhdGlvbiYmcigoMCxvLlZDKSgiL21lc3NhZ2VzL2NvbnZlcnNhdGlvbi9uZXciKygwLHYuV0MpKHt2aXNpYmlsaXR5Om59KSkpO3IoaygpKX19ZnVuY3Rpb24gVSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUoKDAsdS5RTCkoaS5BeSx0KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gZShOKHQpKX0pKX19ZnVuY3Rpb24geih0KXt2YXIgZT12b2lkIDA9PT10P3t9OnQsbj1lLmZvcmNlTG9jYXRpb25SZWRpcmVjdCxyPXZvaWQgMCE9PW4mJm4saT1lLnJlcGxhY2VDdXJyZW50Vmlldyx1PXZvaWQgMCE9PWkmJmk7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIG49ZSgpLGk9dT9vLkhDOm8uVkMscz0oMCxhLm9QKShuKTshciYmcyYmIi8iIT09c3x8dChpKGYua0cucGF0aCkpfX1mdW5jdGlvbiBIKHQpe2lmKHQpe3ZhciBlPXQucGFyYWdyYXBoLG49dC5pc0Rpc21pc3NlZDtyZXR1cm57dHlwZTpsLm9JVSxwYXJhZ3JhcGg6ZSxpc0Rpc21pc3NlZDpufX19ZnVuY3Rpb24gRigpe3JldHVybiB4KHcoKS5tYXJrKChmdW5jdGlvbiB0KGUsbil7dmFyIHIsbyxhLHU7cmV0dXJuIHcoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gcj1uKCksbz1yLmFwcC5wcml2YWN5UG9saWN5Tm90aWNlLGE9ci5zZXNzaW9uLGUoXyh7dHlwZTpsLm9JVX0sbyx7aXNEaXNtaXNzZWQ6ITB9KSksdT17ZGlzbWlzc2VkX3ByaXZhY3lfcG9saWN5X25vdGljZV9hdDoobmV3IERhdGUpLnRvSVNPU3RyaW5nKCl9LHQubmV4dD01LGkuQXkuY3JlYXRlT3JVcGRhdGVVc2VyKGEsdSx2b2lkIDAsdm9pZCAwLCJhcGlVcGRhdGUiKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9ZnVuY3Rpb24gRCgpe3JldHVybnt0eXBlOmwuaHA3fX1mdW5jdGlvbiBCKHQsZSl7cmV0dXJue3R5cGU6bC56a2QsY3VzdG9tRW1vamlzOnQsbG9hZGluZzplfX12YXIgVj17Y2xvc2VNZXNzZW5nZXI6TCxnZXRBbmRPcGVuQ29udmVyc2F0aW9uOlUsbmF2aWdhdGVCYWNrOmZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6bC51Xzl9fSxvbkxhdW5jaGVyQ2xpY2s6TyxvcGVuQ29udmVyc2F0aW9uOk4sb3BlbkNvbnZlcnNhdGlvbkluTWVzc2VuZ2VyOk0sb3BlbkNvbnZlcnNhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dCgoMCxvLlZDKShmLklqLnBhdGgpKSx0KGsoKSl9fSxvcGVuTWVzc2VuZ2VyOmssb3Blbk5ld0NvbnZlcnNhdGlvbjpSLHNob3dBbmRHZXRDb252ZXJzYXRpb246ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2UoKDAsYy5wKSh0KSksZSgoMCx1LlFMKShpLkF5LHQpKX19LHNob3dDb252ZXJzYXRpb246Yy5wLHNob3dDb252ZXJzYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6bC5YbUZ9fSxzaG93TWVzc2VuZ2VyVHJpZ2dlclNjcmVlbjpqLHNob3dJbml0aWFsU2NyZWVuOnosc2hvd05ld0NvbnZlcnNhdGlvbjpULHRvZ2dsZU1lc3NlbmdlcjpBLHRvZ2dsZVVwZnJvbnRFbWFpbENvbGxlY3RvclN0YXRlOkQsb3Blbk1lc3NlbmdlckxvYWRpbmdWaWV3OlAsdXBkYXRlUmVzb2x1dGlvbkJvdFN0YXRlRnJvbU9wZW46eSxvcGVuTWVzc2VuZ2VyQW5kQ2xvc2VNZXNzYWdlOkl9fSw5MDkzNjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtJUDpmdW5jdGlvbigpe3JldHVybiBCfSxPUTpmdW5jdGlvbigpe3JldHVybiBXfSxuWDpmdW5jdGlvbigpe3JldHVybiBWfSxybTpmdW5jdGlvbigpe3JldHVybiBHfSxUTzpmdW5jdGlvbigpe3JldHVybiBxfSxZMDpmdW5jdGlvbigpe3JldHVybiBIfSxuJDpmdW5jdGlvbigpe3JldHVybiBVfSx4WjpmdW5jdGlvbigpe3JldHVybiB6fSxMNzpmdW5jdGlvbigpe3JldHVybiBOfSxNZDpmdW5jdGlvbigpe3JldHVybiBGfSxOUTpmdW5jdGlvbigpe3JldHVybiBEfSxHTjpmdW5jdGlvbigpe3JldHVybiBNfX0pO3ZhciByPW4oNjYyNzQpO2Z1bmN0aW9uIG8odCl7cmV0dXJuIG89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LG8odCl9ZnVuY3Rpb24gaSgpe2k9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LGE9T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSx1PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LHM9dS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLGM9dS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixsPXUudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBmKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Yoe30sIiIpfWNhdGNoKHQpe2Y9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGQodCxlLG4scil7dmFyIG89ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBiP2U6YixpPU9iamVjdC5jcmVhdGUoby5wcm90b3R5cGUpLHU9bmV3IGoocnx8W10pO3JldHVybiBhKGksIl9pbnZva2UiLHt2YWx1ZTpJKHQsbix1KX0pLGl9ZnVuY3Rpb24gcCh0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1kO3ZhciBoPSJzdXNwZW5kZWRTdGFydCIsdj0ic3VzcGVuZGVkWWllbGQiLHk9ImV4ZWN1dGluZyIsZz0iY29tcGxldGVkIixtPXt9O2Z1bmN0aW9uIGIoKXt9ZnVuY3Rpb24gdygpe31mdW5jdGlvbiBfKCl7fXZhciBTPXt9O2YoUyxzLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciB4PU9iamVjdC5nZXRQcm90b3R5cGVPZixFPXgmJngoeChQKFtdKSkpO0UmJkUhPT1uJiZyLmNhbGwoRSxzKSYmKFM9RSk7dmFyIEM9Xy5wcm90b3R5cGU9Yi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShTKTtmdW5jdGlvbiBPKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Zih0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBBKHQsZSl7ZnVuY3Rpb24gbihpLGEsdSxzKXt2YXIgYz1wKHRbaV0sdCxhKTtpZigidGhyb3ciIT09Yy50eXBlKXt2YXIgbD1jLmFyZyxmPWwudmFsdWU7cmV0dXJuIGYmJiJvYmplY3QiPT1vKGYpJiZyLmNhbGwoZiwiX19hd2FpdCIpP2UucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsdSxzKX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCx1LHMpfSkpOmUucmVzb2x2ZShmKS50aGVuKChmdW5jdGlvbih0KXtsLnZhbHVlPXQsdShsKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsdSxzKX0pKX1zKGMuYXJnKX12YXIgaTthKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBJKGUsbixyKXt2YXIgbz1oO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT15KXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PWcpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPWsodSxyKTtpZihzKXtpZihzPT09bSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1oKXRocm93IG89ZyxyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289eTt2YXIgYz1wKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/Zzp2LGMuYXJnPT09bSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPWcsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBrKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxrKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLG07dmFyIGk9cChvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLG07dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLG0pOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwsbSl9ZnVuY3Rpb24gTCh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBUKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBqKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goTCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVtzXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgaT0tMSxhPWZ1bmN0aW9uIG4oKXtmb3IoOysraTxlLmxlbmd0aDspaWYoci5jYWxsKGUsaSkpcmV0dXJuIG4udmFsdWU9ZVtpXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gYS5uZXh0PWF9fXRocm93IG5ldyBUeXBlRXJyb3IobyhlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiB3LnByb3RvdHlwZT1fLGEoQywiY29uc3RydWN0b3IiLHt2YWx1ZTpfLGNvbmZpZ3VyYWJsZTohMH0pLGEoXywiY29uc3RydWN0b3IiLHt2YWx1ZTp3LGNvbmZpZ3VyYWJsZTohMH0pLHcuZGlzcGxheU5hbWU9ZihfLGwsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT13fHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxfKToodC5fX3Byb3RvX189XyxmKHQsbCwiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShDKSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxPKEEucHJvdG90eXBlKSxmKEEucHJvdG90eXBlLGMsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUEsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBBKGQodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sTyhDKSxmKEMsbCwiR2VuZXJhdG9yIiksZihDLHMsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZihDLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVAsai5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmoscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKFQpLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxtKTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLG19LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksVChuKSxtfX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO1Qobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSxtfX0sZX1mdW5jdGlvbiBhKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gdSh0KXthKGkscixvLHUscywibmV4dCIsdCl9ZnVuY3Rpb24gcyh0KXthKGkscixvLHUscywidGhyb3ciLHQpfXUodm9pZCAwKX0pKX19ZnVuY3Rpb24gcyh0LGUpe3JldHVybiB1KGkoKS5tYXJrKChmdW5jdGlvbiBuKG8sYSl7dmFyIHUscyxsLGY7cmV0dXJuIGkoKS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDppZih1PWEoKSxzPXUuc2Vzc2lvbiwhZS5wYXlsb2FkfHwhZS5wYXlsb2FkLmNvbnZlcnNhdGlvbklkKXtuLm5leHQ9NjticmVha31sPWUucGF5bG9hZC5jb252ZXJzYXRpb25JZCxuLm5leHQ9NzticmVhaztjYXNlIDY6dGhyb3cgbmV3IEVycm9yKCJjb252ZXJzYXRpb25JZCBuZWVkcyB0byBiZSBwcm92aWRlZCBhcyBhIHBhcmFtZXRlciIpO2Nhc2UgNzpyZXR1cm4gbi5wcmV2PTcsbyh7dHlwZTpyLmU5SCxwYXlsb2FkOnt0aW1lc3RhbXA6RGF0ZS5ub3coKX19KSxuLm5leHQ9MTEsdC50cmlnZ2VyVHJhbnNpdGlvbnMocyxsLGUpO2Nhc2UgMTE6Zj1uLnNlbnQsbyhjKGYpKSxuLm5leHQ9MTg7YnJlYWs7Y2FzZSAxNTpuLnByZXY9MTUsbi50MD1uLmNhdGNoKDcpLG8oKGk9bi50MCx7dHlwZTpyLnpINixlcnJvcjohMCxwYXlsb2FkOm5ldyBFcnJvcigoaXx8IkFuIGVycm9yIG9jY3VyZWQgd2hlbiB0cmlnZ2VyaW5nIE9wZXJhdG9yIHRyYW5zaXRpb24uIikudG9TdHJpbmcoKSl9KSk7Y2FzZSAxODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfXZhciBpfSksbixudWxsLFtbNywxNV1dKX0pKSl9ZnVuY3Rpb24gYyh0KXtyZXR1cm57dHlwZTpyLm9uWCxwYXlsb2FkOnQsY29udmVyc2F0aW9uOnR9fXZhciBsPW4oMzgyNTMpLGY9bigzMjk4KSxkPW4oNjk3NDQpLHA9big3NTAxKSxoPW4oNDE1Nyksdj1uKDQ5MDE0KSx5PW4oMTU2NTIpLGc9big1MTg4MyksbT1uKDI2NzAzKSxiPW4oNTQyNDgpLHc9big5ODQ0NyksXz1uKDkxMDYyKSxTPW4oNjczNjUpLHg9big2Njc5OSksRT1uKDE0MTIwKSxDPW4oMTE5NCksTz1uKDg3MTMzKSxBPW4oOTQyMTQpLEk9big4Njk3OSk7ZnVuY3Rpb24gayh0KXtyZXR1cm4gaz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sayh0KX1mdW5jdGlvbiBMKCl7TD1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gbCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGc/ZTpnLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgaihyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOk8odCxuLHUpfSksYX1mdW5jdGlvbiBmKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWw7dmFyIGQ9InN1c3BlbmRlZFN0YXJ0IixwPSJzdXNwZW5kZWRZaWVsZCIsaD0iZXhlY3V0aW5nIix2PSJjb21wbGV0ZWQiLHk9e307ZnVuY3Rpb24gZygpe31mdW5jdGlvbiBtKCl7fWZ1bmN0aW9uIGIoKXt9dmFyIHc9e307Yyh3LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIF89T2JqZWN0LmdldFByb3RvdHlwZU9mLFM9XyYmXyhfKFAoW10pKSk7UyYmUyE9PW4mJnIuY2FsbChTLGEpJiYodz1TKTt2YXIgeD1iLnByb3RvdHlwZT1nLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpO2Z1bmN0aW9uIEUodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEModCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPWYodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGw9Yy52YWx1ZTtyZXR1cm4gbCYmIm9iamVjdCI9PWsobCkmJnIuY2FsbChsLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCxhLHUpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LGEsdSl9KSk6ZS5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxhKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCxhLHUpfSkpfXUocy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIE8oZSxuLHIpe3ZhciBvPWQ7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PWgpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09dil7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9QSh1LHIpO2lmKHMpe2lmKHM9PT15KWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWQpdGhyb3cgbz12LHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz1oO3ZhciBjPWYoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT92OnAsYy5hcmc9PT15KWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89dixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIEEoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LEEoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSkseTt2YXIgaT1mKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwseTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwseSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCx5KX1mdW5jdGlvbiBJKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIFQodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIGoodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChJLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW2FdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGk9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBpLm5leHQ9aX19dGhyb3cgbmV3IFR5cGVFcnJvcihrKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIG0ucHJvdG90eXBlPWIsbyh4LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSksbyhiLCJjb25zdHJ1Y3RvciIse3ZhbHVlOm0sY29uZmlndXJhYmxlOiEwfSksbS5kaXNwbGF5TmFtZT1jKGIscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PW18fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGIpOih0Ll9fcHJvdG9fXz1iLGModCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHgpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LEUoQy5wcm90b3R5cGUpLGMoQy5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QyxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEMobCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxFKHgpLGMoeCxzLCJHZW5lcmF0b3IiKSxjKHgsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHgsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9UCxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goVCksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHkpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSkseX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxUKG4pLHl9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7VChuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLHl9fSxlfWZ1bmN0aW9uIFQodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBqKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpe1QoaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe1QoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX1mdW5jdGlvbiBQKHQpe3JldHVybnt0eXBlOnIuJGFQLGFydGljbGU6dH19ZnVuY3Rpb24gTih0LGUsbixvLGksYSx1LHMpe3JldHVybiB2b2lkIDA9PT1uJiYobj0hMSksdm9pZCAwPT09byYmKG89ITEpLHZvaWQgMD09PWkmJihpPW51bGwpLHZvaWQgMD09PWEmJihhPSIiKSx2b2lkIDA9PT1zJiYocz1udWxsKSxmdW5jdGlvbihjKXtjKHt0eXBlOnIuU2NRLGFydGljbGVJZDp0LGZyb21Ccm93c2VNb2RlOm4sbWV0cmljTWV0YWRhdGE6ZSxjb252ZXJzYXRpb25JZDppLGhhc2g6YSxmcm9tSG9tZVNjcmVlblN1Z2dlc3Rpb25zOnUsbGFuZzpzfSksbyYmYygoMCx5LkVJKSgpKX19ZnVuY3Rpb24gTSh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKG8pe28oe3R5cGU6ci5YRHJ9KSxvKE4odCxlLCExLCEwLG51bGwsIiIsbikpfX1mdW5jdGlvbiBSKHQsZSl7dmFyIG49KDAsYi4kQikoZSgpKTtuLmxlbmd0aD4wP3QoKDAsZy5WQykoblswXS5wYXRoKSk6dCgoMCxBLk11KSgpKX1mdW5jdGlvbiBVKHQsZSxuLG8saSxhLHUscyxjKXtyZXR1cm4gdm9pZCAwPT09biYmKG49ITEpLHZvaWQgMD09PW8mJihvPSExKSx2b2lkIDA9PT1pJiYoaT0iIiksdm9pZCAwPT09YSYmKGE9bnVsbCksdm9pZCAwPT09dSYmKHU9ITEpLHZvaWQgMD09PXMmJihzPW51bGwpLHZvaWQgMD09PWMmJihjPSIiKSxqKEwoKS5tYXJrKChmdW5jdGlvbiBmKGQscCl7dmFyIGgsdix5LGIsXyxTLHgsRTtyZXR1cm4gTCgpLndyYXAoKGZ1bmN0aW9uKGYpe2Zvcig7Oylzd2l0Y2goZi5wcmV2PWYubmV4dCl7Y2FzZSAwOmlmKGg9cCgpLHY9aC5zZXNzaW9uLHk9aC5hcnRpY2xlLGI9eS52aWV3U3RhY2ssXz15LmluU2VhcmNoQnJvd3NlLFM9aC5hcnRpY2xlcywoRT1udWxsIT09cyl8fHQhPT1iW2IubGVuZ3RoLTFdKXtmLm5leHQ9NzticmVha314PSgwLHcuXzkpKGgpLGYubmV4dD0zNDticmVhaztjYXNlIDc6aWYoRXx8IVN8fCFTW3RdfHwhU1t0XS5yZWFjdGlvbnNSZXBseSl7Zi5uZXh0PTE0O2JyZWFrfXg9U1t0XSxkKHt0eXBlOnIuWERyfSksKDA9PT0oMCx3Lmp2KShoKXx8XykmJmQoKDAsZy5WQykoIi8iK20uWkwuaWQrIi9hcnRpY2xlLXN0YW5kYWxvbmUiKygwLE8uV0MpKHtoaWRlUmVhY3Rpb25zOm8/InRydWUiOm51bGwsZnJvbUNsb3NlZDp1PyJ0cnVlIjpudWxsfSkpKSxkKFAoeCkpLGYubmV4dD0zNDticmVhaztjYXNlIDE0OnJldHVybiB1JiZkKHt0eXBlOnIuR3ZafSksZi5wcmV2PTE1LGYubmV4dD0xOCxsLkF5LmdldEFydGljbGUodix0LG51bGwsITEsYSxzKTtjYXNlIDE4Ong9Zi5zZW50LGYubmV4dD0yNzticmVhaztjYXNlIDIxOnJldHVybiBmLnByZXY9MjEsZi50MD1mLmNhdGNoKDE1KSxkKHt0eXBlOnIuR3ZafSksdSYmUihkLHApLHh8fGMmJigwLEkuYkIpKGMpLGYuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDI3OmlmKHgpe2YubmV4dD0zMTticmVha31yZXR1cm4gZCh7dHlwZTpyLkd2Wn0pLHUmJlIoZCxwKSxmLmFicnVwdCgicmV0dXJuIik7Y2FzZSAzMTpkKFAoeCkpLGQoe3R5cGU6ci5YRHJ9KSwoMD09PSgwLHcuanYpKGgpfHxfKSYmZCgoMCxnLlZDKSgiLyIrbS5aTC5pZCsiL2FydGljbGUtc3RhbmRhbG9uZSIrKDAsTy5XQykoe2hpZGVSZWFjdGlvbnM6bz8idHJ1ZSI6bnVsbCxmcm9tQ2xvc2VkOnU/InRydWUiOm51bGx9KSkpO2Nhc2UgMzQ6eCYmZChOKHQsZSwhMSwhMCxudWxsLGksbixzKSk7Y2FzZSAzNTpjYXNlImVuZCI6cmV0dXJuIGYuc3RvcCgpfX0pLGYsbnVsbCxbWzE1LDIxXV0pfSkpKX1mdW5jdGlvbiB6KHQsZSxuLHIsbyl7cmV0dXJuIHZvaWQgMD09PW4mJihuPSExKSx2b2lkIDA9PT1yJiYocj1udWxsKSx2b2lkIDA9PT1vJiYobz1udWxsKSxqKEwoKS5tYXJrKChmdW5jdGlvbiBlKGksYSl7dmFyIHUscyxjLGY7cmV0dXJuIEwoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gdT1hKCkscz11LnNlc3Npb24sYz0oMCxFLlZ5KSh1KSxlLm5leHQ9NSxsLkF5LmdldEFydGljbGUocyx0LGMsbixyLG8pO2Nhc2UgNTpyZXR1cm4gZj1lLnNlbnQsZS5hYnJ1cHQoInJldHVybiIsaShQKGYpKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfWZ1bmN0aW9uIEgodCxlLG4scixvKXtyZXR1cm4gdm9pZCAwPT09biYmKG49ITEpLHZvaWQgMD09PXImJihyPSExKSx2b2lkIDA9PT1vJiYobz0hMSksaihMKCkubWFyaygoZnVuY3Rpb24gaShhLHUpe3ZhciBzO3JldHVybiBMKCkud3JhcCgoZnVuY3Rpb24oaSl7Zm9yKDs7KXN3aXRjaChpLnByZXY9aS5uZXh0KXtjYXNlIDA6cz0oMCxFLlZ5KSh1KCkpLGEoTih0LGUsbixyLHMsIiIsbykpLGEoeih0LDAsbikpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGkuc3RvcCgpfX0pLGkpfSkpKX1mdW5jdGlvbiBGKHQpe3JldHVybiBqKEwoKS5tYXJrKChmdW5jdGlvbiBlKG4scil7dmFyIG8saSxhO3JldHVybiBMKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIG89cigpLGk9by5zZXNzaW9uLGUubmV4dD0zLGwuQXkuZ2V0QXJ0aWNsZUJ5VVJMKGksdC51cmwpO2Nhc2UgMzpyZXR1cm4gYT1lLnNlbnQsZS5uZXh0PTYsbihQKGEpKTtjYXNlIDY6cmV0dXJuIGUubmV4dD04LCgwLGYueFMpKHQubG9jYWxlKTtjYXNlIDg6cmV0dXJuIGUubmV4dD0xMCxuKHt0eXBlOiJDSEFOR0VfQVJUSUNMRV9MT0NBTEUiLGFydGljbGVJZDphLmlkLGFydGljbGVMb2NhbGU6dH0pO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9ZnVuY3Rpb24gRCh0LGUsbixyKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMD09PW4mJihuPW51bGwpLGZ1bmN0aW9uKG8saSl7dmFyIGE9aSgpLnNlc3Npb24sdT10LnNwbGl0KCIjIilbMV18fCIiO3JldHVybiBsLkF5LmdldEFydGljbGVCeVVSTChhLHQscikudGhlbigoZnVuY3Rpb24odCl7KG8oUCh0KSksZSk/byhOKHQuaWQsbnVsbCwhMCwhMCxudWxsLHUpKTooMCx3aW5kb3cucGFyZW50LkludGVyY29tKSgic2hvd0FydGljbGUiLHQuaWQscixuKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXt2YXIgZT0oMCx2LngzKSgpLmNyZWF0ZUVsZW1lbnQoImEiKTtlLnRhcmdldD0iX2JsYW5rIixlLmhyZWY9dCxlLmNsaWNrKCl9KSl9fWZ1bmN0aW9uIEIoKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgbixvLGksYT1lKCk7KHQoe3R5cGU6ci5leFp9KSxudWxsIT0obj0oMCx3LmhiKShhKSkmJm4uaXNTdGFuZGFsb25lJiYoMCx3Lmp2KShhKTw9MSkmJih0KCgwLGcuT0UpKCkpLCgwLE8uQ0gpKG51bGwhPShvPW51bGw9PShpPSgwLEMublcpKGEsMCkpP3ZvaWQgMDppLnNlYXJjaCk/bzoiIikuZnJvbUNsb3NlZCYmKHQoRyhsLkF5KSksdCgoMCxBLk11KSgpKSkpOygwLFMuY0kpKGEpJiZ0KCgwLF8uSikoKSl9fWZ1bmN0aW9uIFYoKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgbixvPWUoKTt0KHt0eXBlOnIuUXlVfSksdCh7dHlwZTpyLmV4Wn0pLG51bGwhPShuPSgwLHcuaGIpKG8pKSYmbi5pc1N0YW5kYWxvbmUmJnQoRyhsLkF5KSl9fWZ1bmN0aW9uIEcodCl7cmV0dXJuIGooTCgpLm1hcmsoKGZ1bmN0aW9uIGUobixvKXt2YXIgaSxhLHUsYyxsLHYseTtyZXR1cm4gTCgpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKGE9bygpLHU9KDAsaC5xWikoYSksYz0oMCx3Lmp2KShhKSwhKG51bGwhPShpPWEudXNlcikmJmkubG9jYWxlJiZjPD0xKSl7ZS5uZXh0PTY7YnJlYWt9cmV0dXJuIGUubmV4dD02LCgwLGYueFMpKGEudXNlci5sb2NhbGUpLmNhdGNoKChmdW5jdGlvbigpe30pKTtjYXNlIDY6bih7dHlwZTpyLk9aeSxjbG9zZWRBdDpuZXcgRGF0ZX0pLGw9KDAsRS5WeSkoYSksdT8odj1hLnVzZXIseT1hLmFydGljbGUsKDAsZC5KcikodiwiY2xvc2VkIixwLnJrLHAucVksIm1lc3NlbmdlciIse2FydGljbGVfaWQ6bnVsbD09eT92b2lkIDA6eS5hY3RpdmVBcnRpY2xlSWR9KSk6bCYmbihzKHQse3R5cGU6ImNsb3NlZF9hcnRpY2xlIixwYXlsb2FkOntjb252ZXJzYXRpb25JZDpsfX0pKSxuKCgwLHgub3cpKCkpO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9ZnVuY3Rpb24gcSh0LGUsbixvLGkpe3JldHVybiBmdW5jdGlvbihhLHUpe3ZhciBzPXUoKS51c2VyO3JldHVybigwLGQuSnIpKHMsImNsaWNrZWQiLHAuaWsscC5xWSwibWVzc2VuZ2VyIix7cmVhY3Rpb25faW5kZXg6bn0pLGEoZnVuY3Rpb24odCxlLG4sbyxpLGEsdSl7dm9pZCAwPT09YSYmKGE9ImhlbHBfY2VudGVyIik7dm9pZCAwPT09dSYmKHU9bnVsbCk7cmV0dXJuIGZ1bmN0aW9uKHMsYyl7cyh7dHlwZTpyLl9hSixhcnRpY2xlSWQ6ZSxyZWFjdGlvbkluZGV4Om59KTt2YXIgbD1jKCkuc2Vzc2lvbixmPSExO3JldHVybiB0LmNyZWF0ZUFydGljbGVSZWFjdGlvbihsLGUsbixmLG8saSxhLHUpfX0odCxlLG4sbyxpLCJtZXNzZW5nZXIiLCJzZWFyY2hfYnJvd3NlIikpfX1mdW5jdGlvbiBXKCl7cmV0dXJue3R5cGU6ci5CSGV9fX0sMTgzOTU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7QTU6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sTl86ZnVuY3Rpb24oKXtyZXR1cm4gZn19KTt2YXIgcj1uKDQxMTcpLG89bigzODI1MyksaT1uKDY5NzQ0KSxhPW4oNzUwMSksdT1uKDY2Mjc0KSxzPW4oOTEwNjIpO2Z1bmN0aW9uIGModCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITApLGZ1bmN0aW9uKG4scil7dmFyIGM9cigpLGw9Yy5zZXNzaW9uO3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBuPXQudXNlcixyPSJzZWFyY2hlZCIsbz1hLkdtLHU9YS5tTSxzPWEub3c7KDAsaS5KcikobixyLG8sdSxzLHtwaHJhc2U6ZX0pfShjLHQpLG4oZnVuY3Rpb24odCxlKXtyZXR1cm57dHlwZTp1LlBJWSxwaHJhc2U6dCxpbW1lZGlhdGU6ZX19KHQsZSkpLG8uQXkuc2VhcmNoQXJ0aWNsZXMobCx0KS50aGVuKChmdW5jdGlvbihlKXtuKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3R5cGU6dS5yUEksc2VhcmNoUmVzdWx0czplLmFydGljbGVzLHBocmFzZTp0fX0odCxlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7bihmdW5jdGlvbih0KXtyZXR1cm57dHlwZTp1LlNzMyxwaHJhc2U6dH19KHQpKX0pKS5maW5hbGx5KChmdW5jdGlvbigpe24oKDAscy5KKSgpKX0pKX19dmFyIGw9KDAsci5zKSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdChjKGUsITEpKX0pLDUwMCx7bGVhZGluZzohMSx0cmFpbGluZzohMH0pO2Z1bmN0aW9uIGYodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2woZSx0KX19ZnVuY3Rpb24gZCh0LGUpe3JldHVybnt0eXBlOnUuZ0xILGFydGljbGVJZDp0LHJlbGF0ZWRDb252ZXJzYXRpb25JZDplfX19LDcyNjgzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0UzOmZ1bmN0aW9uKCl7cmV0dXJuIGJ9LEhKOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LEpROmZ1bmN0aW9uKCl7cmV0dXJuIGd9LE1VOmZ1bmN0aW9uKCl7cmV0dXJuIHZ9LFBKOmZ1bmN0aW9uKCl7cmV0dXJuIHl9LFJSOmZ1bmN0aW9uKCl7cmV0dXJuIG19LFhtOmZ1bmN0aW9uKCl7cmV0dXJuIFN9fSk7dmFyIHI9bigzODI1Myksbz1uKDY5MjY5KSxpPW4oNDQ5ODApLGE9big2OTc0NCksdT1uKDY2Mjc0KTtmdW5jdGlvbiBzKHQpe3JldHVybiBzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxzKHQpfWZ1bmN0aW9uIGMoKXtjPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciB0LGU9e30sbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLG4pe3RbZV09bi52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxhPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIix1PWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsbD1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gZih0LGUsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtmKHt9LCIiKX1jYXRjaCh0KXtmPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1ufX1mdW5jdGlvbiBkKHQsZSxuLHIpe3ZhciBpPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgYj9lOmIsYT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBqKHJ8fFtdKTtyZXR1cm4gbyhhLCJfaW52b2tlIix7dmFsdWU6SSh0LG4sdSl9KSxhfWZ1bmN0aW9uIHAodCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX1lLndyYXA9ZDt2YXIgaD0ic3VzcGVuZGVkU3RhcnQiLHY9InN1c3BlbmRlZFlpZWxkIix5PSJleGVjdXRpbmciLGc9ImNvbXBsZXRlZCIsbT17fTtmdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIHcoKXt9ZnVuY3Rpb24gXygpe312YXIgUz17fTtmKFMsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgeD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsRT14JiZ4KHgoUChbXSkpKTtFJiZFIT09biYmci5jYWxsKEUsYSkmJihTPUUpO3ZhciBDPV8ucHJvdG90eXBlPWIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoUyk7ZnVuY3Rpb24gTyh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2YodCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQSh0LGUpe2Z1bmN0aW9uIG4obyxpLGEsdSl7dmFyIGM9cCh0W29dLHQsaSk7aWYoInRocm93IiE9PWMudHlwZSl7dmFyIGw9Yy5hcmcsZj1sLnZhbHVlO3JldHVybiBmJiYib2JqZWN0Ij09cyhmKSYmci5jYWxsKGYsIl9fYXdhaXQiKT9lLnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24odCl7bC52YWx1ZT10LGEobCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShjLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gSShlLG4scil7dmFyIG89aDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09eSl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT1nKXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1rKHUscik7aWYocyl7aWYocz09PW0pY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09aCl0aHJvdyBvPWcsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPXk7dmFyIGM9cChlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP2c6dixjLmFyZz09PW0pY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz1nLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gayhlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsayhlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSxtO3ZhciBpPXAobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCxtO3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCxtKTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLG0pfWZ1bmN0aW9uIEwodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gVCh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gaih0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEwsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKHMoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gdy5wcm90b3R5cGU9XyxvKEMsImNvbnN0cnVjdG9yIix7dmFsdWU6Xyxjb25maWd1cmFibGU6ITB9KSxvKF8sImNvbnN0cnVjdG9yIix7dmFsdWU6dyxjb25maWd1cmFibGU6ITB9KSx3LmRpc3BsYXlOYW1lPWYoXyxsLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09d3x8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsXyk6KHQuX19wcm90b19fPV8sZih0LGwsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQyksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sTyhBLnByb3RvdHlwZSksZihBLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1BLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQShkKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LE8oQyksZihDLGwsIkdlbmVyYXRvciIpLGYoQyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGYoQywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1QLGoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpqLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChUKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsbSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSxtfSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLFQobiksbX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztUKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpQKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCksbX19LGV9ZnVuY3Rpb24gbCh0LGUsbixyLG8saSxhKXt0cnl7dmFyIHU9dFtpXShhKSxzPXUudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbih0KX11LmRvbmU/ZShzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIGYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7bChpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7bChpLHIsbyxhLHUsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9fWZ1bmN0aW9uIGQodCxlKXt2YXIgbj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYobilyZXR1cm4obj1uLmNhbGwodCkpLm5leHQuYmluZChuKTtpZihBcnJheS5pc0FycmF5KHQpfHwobj1mdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gcCh0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9wKHQsZSk6dm9pZCAwfX0odCkpfHxlJiZ0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXtuJiYodD1uKTt2YXIgcj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiByPj10Lmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6dFtyKytdfX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfWZ1bmN0aW9uIHAodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIGgodCl7cmV0dXJue3R5cGU6dS5BMEYsYmFubmVyczp0fX1mdW5jdGlvbiB2KHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciByPW4oKSxhPSgwLGkuYjApKHIpLnZlcnRpY2FsUGFkZGluZyx1PXIuY3VzdG9taXphdGlvbk92ZXJyaWRlcyxzPSh2b2lkIDA9PT11P3t9OnUpLmlzSGVpZ2h0U2V0QnlCYW5uZXI7KDIwPT09YXx8cykmJmUoKDAsby55KSh7dmVydGljYWxQYWRkaW5nOnR9KSl9fWZ1bmN0aW9uIHkodCxlLG4pe3JldHVybiBmdW5jdGlvbihvLGkpe3ZhciBhPWkoKS5zZXNzaW9uO28oZnVuY3Rpb24odCxlKXtyZXR1cm57dHlwZTp1Lm9fTCxiYW5uZXJJZDp0LGVtYWlsOmV9fSh0LG4pKSxyLkF5LmNvbGxlY3RFbWFpbEZyb21CYW5uZXIoYSx0LGUsbil9fWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gZnVuY3Rpb24obixvKXt2YXIgaT1vKCkuc2Vzc2lvbjtuKHt0eXBlOnUuY2N2fSksci5BeS5kaXNtaXNzQmFubmVyKGksdCxlKTtmb3IodmFyIGEscz1bXSxjPWQobygpLmJhbm5lcnMsITApOyEoYT1jKCkpLmRvbmU7KXt2YXIgbD1hLnZhbHVlO1N0cmluZyhsLmJhbm5lcl9pZCkhPT1TdHJpbmcodCkmJnMucHVzaChsKX1uKGgocykpfX1mdW5jdGlvbiBtKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24obyxpKXt2YXIgYT1pKCkuc2Vzc2lvbjtvKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3R5cGU6dS5keHosYmFubmVySWQ6dCxyZWFjdGlvbjplfX0odCxuKSksci5BeS5yZWFjdFRvQmFubmVyKGEsdCxlLG4pfX1mdW5jdGlvbiBiKHQsZSl7cmV0dXJuIGYoYygpLm1hcmsoKGZ1bmN0aW9uIG4obyxpKXt2YXIgdSxzLGwsZjtyZXR1cm4gYygpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiB1PWkoKSxzPXUuc2Vzc2lvbixuLnByZXY9MSxvKHcodCkpLGw9W10sbi5uZXh0PTYsci5BeS5mZXRjaEJhbm5lclZpZXcocyx0LGUpO2Nhc2UgNjppZihmPW4uc2VudCl7bi5uZXh0PTk7YnJlYWt9cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iKTtjYXNlIDk6bC5wdXNoKGYpLG8oaChsKSksbi5uZXh0PTE2O2JyZWFrO2Nhc2UgMTM6bi5wcmV2PTEzLG4udDA9bi5jYXRjaCgxKSwoMCxhLnVvKSgiQ291bGQgbm90IGZldGNoIGJhbm5lcl92aWV3IGR1ZSB0byBlPSIrbi50MCk7Y2FzZSAxNjpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sbnVsbCxbWzEsMTNdXSl9KSkpfWZ1bmN0aW9uIHcodCl7cmV0dXJue3R5cGU6dS5LJG8sYmFubmVyVmlld0lkOnR9fWZ1bmN0aW9uIF8odCl7cmV0dXJue3R5cGU6dS5QUm0sYmFubmVySWQ6dH19ZnVuY3Rpb24gUyh0KXtyZXR1cm4gZihjKCkubWFyaygoZnVuY3Rpb24gZShuLG8pe3ZhciBpLHUscyxsO3JldHVybiBjKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGk9bygpLHU9aS5zZXNzaW9uLGUucHJldj0xLG4oXyh0KSkscz1bXSxlLm5leHQ9NixyLkF5LmZldGNoQmFubmVyUHJldmlldyh1LHQpO2Nhc2UgNjppZihsPWUuc2VudCl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDk6cy5wdXNoKGwpLG4oaChzKSksZS5uZXh0PTE2O2JyZWFrO2Nhc2UgMTM6ZS5wcmV2PTEzLGUudDA9ZS5jYXRjaCgxKSwoMCxhLnVvKSgiQ291bGQgbm90IGZldGNoIGJhbm5lcl92aWV3IGR1ZSB0byBlPSIrZS50MCk7Y2FzZSAxNjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzEsMTNdXSl9KSkpfX0sNjk1MDg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7TDpmdW5jdGlvbigpe3JldHVybiBvfSxoOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIHI9big2NjI3NCk7ZnVuY3Rpb24gbyh0KXtyZXR1cm57dHlwZTpyLmxXTyxib3RJbnRybzp0LGNyZWF0ZWRBdDpuZXcgRGF0ZX19ZnVuY3Rpb24gaSh0KXtyZXR1cm57dHlwZTpyLmxUbCxib3RJbnRybzp0fX19LDc5MDcwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0k4OmZ1bmN0aW9uKCl7cmV0dXJuIHl9LExGOmZ1bmN0aW9uKCl7cmV0dXJuIHB9LGxtOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LHV6OmZ1bmN0aW9uKCl7cmV0dXJuIGR9LHZzOmZ1bmN0aW9uKCl7cmV0dXJuIGd9fSk7dmFyIHI9bigxODM5NSksbz1uKDY5NzQ0KSxpPW4oNzUwMSksYT1uKDM4MjUzKSx1PW4oNjYyNzQpLHM9big2NTI2MSksYz1uKDUxODgzKSxsPW4oMjY3MDMpLGY9bigxNDEyMCk7ZnVuY3Rpb24gZCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXsiIiE9PXQmJm4oKDAsci5OXykodCkpLG4oe3R5cGU6dS5wbmgscGhyYXNlOnQsaGlkZVJlc3VsdHNXaXRoRGVsYXk6ZX0pfX1mdW5jdGlvbiBwKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciByPW4oKSxhPXIudXNlcix1PWkub3cscz1pLkVZOygwLG8uSnIpKGEsImNsaWNrZWQiLGkuek0scyx1LHtjb2xsZWN0aW9uX2lkOnR9KTt2YXIgZD0oMCxmLm9QKShyKTtkLnN0YXJ0c1dpdGgobC5aTC5wYXRoKyIvY29sbGVjdGlvbiIpP2UoKDAsYy5WQykoZCsiLyIrdCkpOmUoKDAsYy5WQykobC5aTC5wYXRoKyIvY29sbGVjdGlvbi8iK3QpKX19ZnVuY3Rpb24gaCh0KXt2YXIgZT10Lm9iamVjdCxuPXQucGxhY2Uscj10LmNvbnRleHQsbz10Lm1ldGFkYXRhO3JldHVybiB2KHthY3Rpb246ImNsaWNrZWQiLG9iamVjdDplLHBsYWNlOm4sY29udGV4dDpyLG1ldGFkYXRhOnZvaWQgMD09PW8/e306b30pfWZ1bmN0aW9uIHYodCl7dmFyIGU9dC5hY3Rpb24sbj10Lm9iamVjdCxyPXQucGxhY2UsaT10LmNvbnRleHQsYT12b2lkIDA9PT1pPyJtZXNzZW5nZXIiOmksdT10Lm1ldGFkYXRhLHM9dm9pZCAwPT09dT97fTp1O3JldHVybiBmdW5jdGlvbih0LGkpe3ZhciB1PWkoKS51c2VyOygwLG8uSnIpKHUsZSxuLHIsYSxzKX19ZnVuY3Rpb24geSgpe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBuPWUoKS5zZXNzaW9uO3JldHVybigwLGEuVzkpKG4pLnRoZW4oKGZ1bmN0aW9uKGUpe3ZhciBuPWUuYXJ0aWNsZUNvbGxlY3Rpb25zLHI9ZS5oZWxwQ2VudGVyU2Vzc2lvbjt0KGZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOnUuQjJGLGFydGljbGVDb2xsZWN0aW9uczp0fX0obikpLHQoKDAscy5zMCkocikpfSkpfX1mdW5jdGlvbiBnKHQpe3JldHVybnt0eXBlOnUuZllrLHZhbHVlOnR9fX0sNjY3OTk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7JDE6ZnVuY3Rpb24oKXtyZXR1cm4gVH0sQmQ6ZnVuY3Rpb24oKXtyZXR1cm4gUH0sRks6ZnVuY3Rpb24oKXtyZXR1cm4gVX0sTGY6ZnVuY3Rpb24oKXtyZXR1cm4gcX0sTXc6ZnVuY3Rpb24oKXtyZXR1cm4gTn0sWF86ZnVuY3Rpb24oKXtyZXR1cm4gQX0sWUg6ZnVuY3Rpb24oKXtyZXR1cm4gVn0sX1k6ZnVuY3Rpb24oKXtyZXR1cm4gQn0sY0E6ZnVuY3Rpb24oKXtyZXR1cm4gQ30sbFA6ZnVuY3Rpb24oKXtyZXR1cm4gen0sb3c6ZnVuY3Rpb24oKXtyZXR1cm4gSH0scFU6ZnVuY3Rpb24oKXtyZXR1cm4gRn0scGs6ZnVuY3Rpb24oKXtyZXR1cm4gR30scXM6ZnVuY3Rpb24oKXtyZXR1cm4gTX0sc0M6ZnVuY3Rpb24oKXtyZXR1cm4gUn0sdEI6ZnVuY3Rpb24oKXtyZXR1cm4gan19KTt2YXIgcj1uKDY2Mjc0KSxvPW4oNTE4ODMpLGk9bigzMTYyMCksYT1uKDM4MjUzKSx1PW4oNjAzNDUpLHM9big5NDIxNCksYz1uKDY2ODM4KSxsPW4oODcxMzMpLGY9bigxMTQ4MSksZD1uKDQwMTI3KSxwPW4oMjI5NzkpLGg9bigzNjM5Nyksdj1uKDE0MTIwKSx5PW4oMTc3NzcpO2Z1bmN0aW9uIGcodCl7cmV0dXJuIGc9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGcodCl9ZnVuY3Rpb24gbSgpe209ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBiP2U6YixhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IGoocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpJKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIscD0ic3VzcGVuZGVkWWllbGQiLGg9ImV4ZWN1dGluZyIsdj0iY29tcGxldGVkIix5PXt9O2Z1bmN0aW9uIGIoKXt9ZnVuY3Rpb24gdygpe31mdW5jdGlvbiBfKCl7fXZhciBTPXt9O2MoUyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciB4PU9iamVjdC5nZXRQcm90b3R5cGVPZixFPXgmJngoeChQKFtdKSkpO0UmJkUhPT1uJiZyLmNhbGwoRSxhKSYmKFM9RSk7dmFyIEM9Xy5wcm90b3R5cGU9Yi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShTKTtmdW5jdGlvbiBPKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBBKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT1nKGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBJKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT1oKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PXYpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPWsodSxyKTtpZihzKXtpZihzPT09eSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89dixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289aDt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/djpwLGMuYXJnPT09eSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPXYsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBrKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxrKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLHk7dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLHk7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLHkpOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwseSl9ZnVuY3Rpb24gTCh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBUKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBqKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goTCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IoZyhlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiB3LnByb3RvdHlwZT1fLG8oQywiY29uc3RydWN0b3IiLHt2YWx1ZTpfLGNvbmZpZ3VyYWJsZTohMH0pLG8oXywiY29uc3RydWN0b3IiLHt2YWx1ZTp3LGNvbmZpZ3VyYWJsZTohMH0pLHcuZGlzcGxheU5hbWU9YyhfLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT13fHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxfKToodC5fX3Byb3RvX189XyxjKHQscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShDKSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxPKEEucHJvdG90eXBlKSxjKEEucHJvdG90eXBlLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUEsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBBKGwodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sTyhDKSxjKEMscywiR2VuZXJhdG9yIiksYyhDLGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyhDLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVAsai5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmoscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKFQpLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyx5KTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLHl9LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksVChuKSx5fX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO1Qobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSx5fX0sZX1mdW5jdGlvbiBiKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gdyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXtiKGkscixvLGEsdSwibmV4dCIsdCl9ZnVuY3Rpb24gdSh0KXtiKGkscixvLGEsdSwidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19dmFyIF8sUyx4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEJvb2xlYW4oKDAsaS5mJCkodCkoZSgpKSl9LEU9ZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6ci5xSGUsY2hlY2tsaXN0czp0fX07ZnVuY3Rpb24gQyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKG8saSl7byhPKG4pKTt2YXIgYT1pKCkuc2Vzc2lvbjtpZihhKXJldHVybiB0LmRpc21pc3NDaGVja2xpc3ROb3RpZmljYXRpb24oYSxlLG4pLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG8oZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6ci5naEgsY2hlY2tsaXN0UHJvZ3Jlc3NJZDp0fX0obikpfSkpfX1mdW5jdGlvbiBPKHQpe3JldHVybnt0eXBlOnIuczMwLGNoZWNrbGlzdFByb2dyZXNzSWQ6dH19dmFyIEE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITApLGZ1bmN0aW9uKG4pe24oRSh0KSksZSYmbihEKCkpfX0sST1mdW5jdGlvbih0LGUsbil7cmV0dXJue3R5cGU6ci5DMiQsY2hlY2tsaXN0UHJvZ3Jlc3NJZDplLGNoZWNrbGlzdElkOnQsdGFza0lkOm59fSxrPWZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOnIuUU9CLGNoZWNrbGlzdFByb2dyZXNzSWQ6dH19LEw9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpyLklneX19LFQ9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpyLmVLWH19LGo9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLGZ1bmN0aW9uKG4peygwLHUuQzIpKCJTaG93aW5nIGNoZWNrbGlzdCBwcm9ncmVzczogIit0KTt2YXIgaT1lP28uSEM6by5WQztyZXR1cm4gbihmdW5jdGlvbih0KXtyZXR1cm57dHlwZTpyLnViWixjaGVja2xpc3RQcm9ncmVzc0lkOnR9fSh0KSksbihpKCIvdGFza3MvIitmLlRBLmNoZWNrbGlzdERldGFpbHModC50b1N0cmluZygpKSkpfX0sUD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKG8saSl7aWYoeChlLGkpKXt2YXIgYT1pKCksYz1hLmFydGljbGUsbD1hLnRvdXIsZj1hLmNoZWNrbGlzdHM7aWYoZnVuY3Rpb24odCl7cmV0dXJuIEJvb2xlYW4oKDAsaC5GKSgpKHQoKSkpfShpKSlyZXR1cm4oMCx1LkMyKSgiVGFzayBhbHJlYWR5IHJlc29sdmluZy4gUmVzb2x2aW5nIHRhc2tJZCAiK24rIiBpbiB0aGUgYmFja2dyb3VuZC4gY2hlY2tsaXN0SWQ6ICIrdCsiLiBjaGVja2xpc3RQcm9ncmVzc0lkOiAiK2UpLHZvaWQgbyhJKHQsZSxuKSk7aWYobnVsbCE9YyYmYy5hY3RpdmVBcnRpY2xlSWR8fG51bGwhPWwmJmwuYWN0aXZlVG91cnx8bnVsbCE9bCYmbC5pc0ZldGNoaW5nKXsoMCx1LkMyKSgiQXJ0aWNsZS90b3VyIG9wZW4uIEF0dGVtcHRpbmcgdG8gcXVldWUgcmVzb2x2ZSBvZiB0YXNrICIrbik7dmFyIGQ9Zi5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC5xdWV1ZWRUYXNrSWR9KSk7cmV0dXJuIGQmJmQucXVldWVkVGFza0lkJiYoKDAsdS5DMikoIlRhc2sgYWxyZWFkeSBlbnF1ZXVlZCwgbWFya2luZyBxdWV1ZWQgdGFzayAiK2QucXVldWVkVGFza0lkKyIgYXMgcmVzb2x2ZWQuIHByb2dyZXNzOiAiK2QuY2hlY2tsaXN0UHJvZ3Jlc3NJZCksbyhJKGQuaWQsZC5jaGVja2xpc3RQcm9ncmVzc0lkLGQucXVldWVkVGFza0lkKSksKDAsdS5DMikoIkRlcXVldWVpbmcgdGFzazogIitkLnF1ZXVlZFRhc2tJZCsiIHByb2dyZXNzOiAiK2QuY2hlY2tsaXN0UHJvZ3Jlc3NJZCksbyhMKCkpKSwoMCx1LkMyKSgiUXVldWVpbmcgcmVzb2x2ZSBvZiB0YXNrICIrbisiIHwgcHJvZ3Jlc3M6ICIrZSksdm9pZCBvKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3R5cGU6ci5STVEsY2hlY2tsaXN0UHJvZ3Jlc3NJZDp0LHRhc2tJZDplfX0oZSxuKSl9bygoMCxzLnF5KSgpKSxvKGooZSkpLG8oZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6ci5RS1csdGFza0lkOnR9fShuKSksXyYmY2xlYXJUaW1lb3V0KF8pLFMmJmNsZWFyVGltZW91dChTKSxfPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7byhJKHQsZSxuKSksUz1zZXRUaW1lb3V0KChmdW5jdGlvbigpe28oe3R5cGU6ci5xRHl9KX0pLDgwMCl9KSwxMjAwKX19fSxOPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dmFyIG89cigpLnNlc3Npb247byYmYS5BeS5yZWNvcmRWaWV3ZWRTdGF0KG8sdCxlKX19LE09ZnVuY3Rpb24odCxlLG4pe3JldHVybiBmdW5jdGlvbihyLG8pe2lmKHQmJmUmJm4pe3ZhciBpPW8oKS5zZXNzaW9uO2kmJmEuQXkucmVjb3JkVGFza1ZpZXcoaSx0LGUsbil9fX0sUj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKHIsbyl7aWYodCYmZSYmbil7dmFyIGk9bygpLnNlc3Npb247aSYmYS5BeS5yZWNvcmRBY3Rpb25DbGljayhpLHQsZSxuKX19fSxVPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdyhtKCkubWFyaygoZnVuY3Rpb24gcihvLGkpe3ZhciBzLGMsbDtyZXR1cm4gbSgpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKHM9eChlLGkpLGM9aSgpLGw9Yy5zZXNzaW9uKXtyLm5leHQ9NDticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIpO2Nhc2UgNDppZihzKXtyLm5leHQ9NjticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIpO2Nhc2UgNjpyZXR1cm4gbyhJKHQsZSxuKSksci5wcmV2PTcsci5uZXh0PTEwLGEuQXkuY29tcGxldGVDaGVja2xpc3RUYXNrKHtjaGVja2xpc3RJZDp0LGNoZWNrbGlzdFByb2dyZXNzSWQ6ZSx0YXNrSWQ6bixzZXNzaW9uOmx9KTtjYXNlIDEwOnIubmV4dD0xNTticmVhaztjYXNlIDEyOnIucHJldj0xMixyLnQwPXIuY2F0Y2goNyksKDAsdS5DMikoIkNoZWNrbGlzdCB0YXNrIHdpdGggaWQgIituKyIgZm9yIGNoZWNrbGlzdCBpZCAiK3QrIiBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkIik7Y2FzZSAxNTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsbnVsbCxbWzcsMTJdXSl9KSkpfSx6PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHcobSgpLm1hcmsoKGZ1bmN0aW9uIG4ocixvKXt2YXIgaSxzLGM7cmV0dXJuIG0oKS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDppZihpPXgoZSxvKSxzPW8oKSxjPXMuc2Vzc2lvbil7bi5uZXh0PTQ7YnJlYWt9cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iKTtjYXNlIDQ6aWYoaSl7bi5uZXh0PTY7YnJlYWt9cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iKTtjYXNlIDY6cmV0dXJuIHIoayhlKSksbi5wcmV2PTcsbi5uZXh0PTEwLGEuQXkudXBkYXRlQ2hlY2tsaXN0Tm90aWZpY2F0aW9uRGV0YWlscyhjLHQsZSk7Y2FzZSAxMDpuLm5leHQ9MTU7YnJlYWs7Y2FzZSAxMjpuLnByZXY9MTIsbi50MD1uLmNhdGNoKDcpLCgwLHUuQzIpKCJDaGVja2xpc3Qgbm90aWZpY2F0aW9uIGRldGFpbHMgY291bGQgbm90IGJlIHVwZGF0ZWQgZm9yICIrdCsiIHdpdGggcHJvZ3Jlc3MgIitlKTtjYXNlIDE1OmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbixudWxsLFtbNywxMl1dKX0pKSl9LEg9ZnVuY3Rpb24oKXtyZXR1cm4gdyhtKCkubWFyaygoZnVuY3Rpb24gdChlLG4pe3ZhciByLG8saSxzLGYsZCxwLGg7cmV0dXJuIG0oKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZihvPW4oKSxpPW8uc2Vzc2lvbixzPW8uY2hlY2tsaXN0cyxmPW8uYXJ0aWNsZSxkPW8udG91cixpKXt0Lm5leHQ9MzticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzppZighKDAsYy5JKShzKSl7dC5uZXh0PTU7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDU6aWYoIShudWxsIT1mJiZmLmFjdGl2ZUFydGljbGVJZHx8bnVsbCE9ZCYmZC5hY3RpdmVUb3VyfHwodj1udWxsPT1kfHxudWxsPT0ocj1kLmFjdGl2ZVRvdXIpP3ZvaWQgMDpyLmlkLHk9dm9pZCAwLHYmJigoMCxsLkNIKShudWxsPT0oeT13aW5kb3cpfHxudWxsPT0oeT15LnBhcmVudCk/dm9pZCAwOnkubG9jYXRpb24pfHx7fSkucHJvZHVjdF90b3VyX2lkPT09dikpKXt0Lm5leHQ9NzticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgNzpyZXR1cm4ocD1zLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnF1ZXVlZFRhc2tJZH0pKSkmJnAucXVldWVkVGFza0lkJiYoZShQKHAuaWQscC5jaGVja2xpc3RQcm9ncmVzc0lkLHAucXVldWVkVGFza0lkKSksZShMKCkpKSxoPXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGVja2xpc3RQcm9ncmVzc0lkfSkpLHQucHJldj0xMCx0Lm5leHQ9MTMsYS5BeS5yZXNvbHZlQ2hlY2tsaXN0cyh7Y2hlY2tsaXN0UHJvZ3Jlc3NJZHM6aCxzZXNzaW9uOml9KTtjYXNlIDEzOnQubmV4dD0xODticmVhaztjYXNlIDE1OnQucHJldj0xNSx0LnQwPXQuY2F0Y2goMTApLCgwLHUuQzIpKCJDaGVja2xpc3RzIGNvdWxkIG5vdCBiZSByZXNvbHZlZCIpO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX12YXIgdix5fSksdCxudWxsLFtbMTAsMTVdXSl9KSkpfSxGPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPXAuTC5nZXQoImxhc3RDaGVja2xpc3RzQmFja2dyb3VuZFJlc29sdmUiKSxuPWU/SlNPTi5wYXJzZShlKTpudWxsLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCk7biYmbj5yLWYuQ2s/KDAsdS5DMikoIkNoZWNrbGlzdHMgaGF2ZSBhbHJlYWR5IGJlZW4gcmVzb2x2ZWQgaW4gdGhlIGJhY2tncm91bmQgaW4gdGhlIGxhc3QgMjQgaG91cnMuIFJldHVybmluZyBlYXJseS4iKTooKDAsdS5DMikoIkNoZWNrbGlzdHMgaGF2ZSBub3QgYmVlbiByZXNvbHZlZCBpbiB0aGUgYmFja2dyb3VuZCBpbiB0aGUgbGFzdCAyNCBob3Vycy4gQ2hlY2tpbmcgYWdhaW4uIiksdChIKCkpLHAuTC5zZXQoImxhc3RDaGVja2xpc3RzQmFja2dyb3VuZFJlc29sdmUiLHIpKX19LEQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgbj0oMCxpLklNKSgpKGUoKSk7aWYobil7dmFyIHI9bi5jaGVja2xpc3RQcm9ncmVzc0lkLG89KDAsdi5vUCkoZSgpKS5lbmRzV2l0aCgiL3Rhc2tzLyIrZi5UQS5jaGVja2xpc3REZXRhaWxzKHIudG9TdHJpbmcoKSkpO28/KDAsdS5DMikoIkFscmVhZHkgdmlld2luZyBwcm9ncmVzcyAiK3IrIiwgcmVwbGFjaW5nIGN1cnJlbnQgc3RhY2sgZW50cnkiKTooMCx1LkMyKSgiT3BlbmluZyB1bnNlZW4gY2hlY2tsaXN0IHByb2dyZXNzICIrciksdCgoMCxzLnF5KSgpKSx0KGoocixvKSl9fX0sQj1mdW5jdGlvbigpe3JldHVybiB3KG0oKS5tYXJrKChmdW5jdGlvbiB0KGUsbil7dmFyIHIsbyxpLHM7cmV0dXJuIG0oKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZihyPW4oKSxvPXIuc2Vzc2lvbix0LnByZXY9MSxvKXt0Lm5leHQ9NDticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgNDpyZXR1cm4gdC5uZXh0PTYsYS5BeS5sb2FkQ2hlY2tsaXN0cyhvKTtjYXNlIDY6aWYoaT10LnNlbnQscz1pLmNoZWNrbGlzdHMsISgwLGMuSSkocykpe3QubmV4dD0xMDticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMTA6ZShBKGEuQXkuYnVpbGRDaGVja2xpc3RzKHMpLCExKSksdC5uZXh0PTE2O2JyZWFrO2Nhc2UgMTM6dC5wcmV2PTEzLHQudDA9dC5jYXRjaCgxKSwoMCx1LkMyKSgiQ2hlY2tsaXN0cyBjb3VsZCBub3QgYmUgbG9hZGVkIik7Y2FzZSAxNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzEsMTNdXSl9KSkpfSxWPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49ITEpLHcobSgpLm1hcmsoKGZ1bmN0aW9uIHIobyxpKXt2YXIgYyxsLGYsZCxwLGg7cmV0dXJuIG0oKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4oMCx1LkMyKSgiV2lsbCBhdHRlbXB0IHRvIGZldGNoIGNoZWNrbGlzdCBydWxlc2V0IHdpdGggaWQgIit0KSxjPWkoKSxsPWMuc2Vzc2lvbixyLm5leHQ9NCxhLkF5LmZldGNoQ2hlY2tsaXN0KHtzZXNzaW9uOmwscnVsZXNldElkOnQsdHJpZ2dlck1ldGhvZDplfSk7Y2FzZSA0OmlmKGY9ci5zZW50KXtyLm5leHQ9NzticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIpO2Nhc2UgNzpkPVtdLG4mJm8oQigpKSxwPWkoKSwoaD1wLmNoZWNrbGlzdHMpJiZkLmNvbmNhdChoKSwtMT09PWQuaW5kZXhPZihmKSYmZC5wdXNoKGYpLG8oRShkKSksbygoMCxzLnF5KSgpKSxvKGooZi5jaGVja2xpc3RQcm9ncmVzc0lkKSk7Y2FzZSAxNTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIpfSkpKX0sRz1mdW5jdGlvbigpe3JldHVybiB3KG0oKS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciBuLHI7cmV0dXJuIG0oKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDooMCx1LkMyKSgiQ2hlY2tpbmcgZm9yIGNoZWNrbGlzdCBJRCBpbiBVUkwiKSwocj0oMCx5LmEpKG51bGw9PShuPXdpbmRvdyl8fG51bGw9PShuPW4ucGFyZW50KT92b2lkIDA6bi5sb2NhdGlvbiwiaW50ZXJjb21fY2hlY2tsaXN0X2lkIikpPygoMCx1LkMyKSgiQ2hlY2tsaXN0IHJ1bGVzZXQgaWQgIityKyIgYXR0YWNoZWQgaW4gdGhlIHVybCIpLGUoVihyLGQuZS5zaGFyZWFibGVfdXJsKSkpOigwLHUuQzIpKCJObyBhdHRhY2hlZCBjaGVja2xpc3QgZm91bmQgaW4gdGhlIFVSTCIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0scT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7KDAsdS5DMikoIk5hdmlnYXRpbmcgdG8gY29tcGxldGlvbiBzY3JlZW4gZm9yIGNoZWNrbGlzdCBwcm9ncmVzczogIit0KSxlKCgwLG8uVkMpKCIvdGFza3MvIitmLlRBLmNoZWNrbGlzdENvbXBsZXRpb25TY3JlZW4oSlNPTi5zdHJpbmdpZnkodCkpKSl9fX0sMTU2NTI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7REg6ZnVuY3Rpb24oKXtyZXR1cm4gY30sRUk6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sc3M6ZnVuY3Rpb24oKXtyZXR1cm4gZn19KTt2YXIgcj1uKDY5NzQ0KSxvPW4oNzUwMSksaT1uKDY2Mjc0KSxhPW4oMzYwNDYpLHU9big1MjY3KTtmdW5jdGlvbiBzKCl7cmV0dXJuIHM9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxzLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9by5qeCksdm9pZCAwPT09biYmKG49by5tTSksZnVuY3Rpb24oYyxsKXt2YXIgZixkLHA9KDAsYS5jKShsKCkpLGg9cC5jb250ZXh0LHY9cC5tZXRhLHk9bCgpLnVzZXIsZz10PyJleHBhbmRlZCI6ImNvbGxhcHNlZCIsbT17fTtlPT09by5yayYmKG09e2FydGljbGVfaWQ6bnVsbD09KGQ9bCgpLmFydGljbGUpP3ZvaWQgMDpkLmFjdGl2ZUFydGljbGVJZH0pOygwLHIuSnIpKHksZyxlLG4saCxzKHt9LG0sdikpLCF0JiZudWxsIT0oZj1sKCkuY2hyb21lKSYmZi5hdXRvRXhwYW5kZWRCeUNvbnRlbnQmJigwLHUuTmwpKHYuY29udmVyc2F0aW9uSWQpLGMoe3R5cGU6aS52JGwsc2hvdWxkRXhwYW5kOnR9KX19ZnVuY3Rpb24gbCgpe3JldHVybnt0eXBlOmkuVUM5fX1mdW5jdGlvbiBmKHQpe3JldHVybnt0eXBlOmkuc2s1LGF1dG9FeHBhbmQ6dH19fSwyNTgzNjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtBazpmdW5jdGlvbigpe3JldHVybiBDfSxCJDpmdW5jdGlvbigpe3JldHVybiBFfSxZcjpmdW5jdGlvbigpe3JldHVybiBffSxiVTpmdW5jdGlvbigpe3JldHVybiBifSxtTjpmdW5jdGlvbigpe3JldHVybiBTfX0pO3ZhciByPW4oNDExNyksbz1uKDM4MjUzKSxpPW4oNDYwNSksYT1uKDM4Mjg1KSx1PW4oNzExMCkscz1uKDY5NzQ0KSxjPW4oNzY3MjIpLGw9bigxODM5OSksZj1uKDY2Mjc0KTtmdW5jdGlvbiBkKHQpe3JldHVybiBkPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxkKHQpfWZ1bmN0aW9uIHAoKXtwPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciB0LGU9e30sbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLG4pe3RbZV09bi52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxhPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIix1PWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyh0LGUsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtjKHt9LCIiKX1jYXRjaCh0KXtjPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1ufX1mdW5jdGlvbiBsKHQsZSxuLHIpe3ZhciBpPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgYj9lOmIsYT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBqKHJ8fFtdKTtyZXR1cm4gbyhhLCJfaW52b2tlIix7dmFsdWU6SSh0LG4sdSl9KSxhfWZ1bmN0aW9uIGYodCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX1lLndyYXA9bDt2YXIgaD0ic3VzcGVuZGVkU3RhcnQiLHY9InN1c3BlbmRlZFlpZWxkIix5PSJleGVjdXRpbmciLGc9ImNvbXBsZXRlZCIsbT17fTtmdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIHcoKXt9ZnVuY3Rpb24gXygpe312YXIgUz17fTtjKFMsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgeD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsRT14JiZ4KHgoUChbXSkpKTtFJiZFIT09biYmci5jYWxsKEUsYSkmJihTPUUpO3ZhciBDPV8ucHJvdG90eXBlPWIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoUyk7ZnVuY3Rpb24gTyh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2ModCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQSh0LGUpe2Z1bmN0aW9uIG4obyxpLGEsdSl7dmFyIHM9Zih0W29dLHQsaSk7aWYoInRocm93IiE9PXMudHlwZSl7dmFyIGM9cy5hcmcsbD1jLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09ZChsKSYmci5jYWxsKGwsIl9fYXdhaXQiKT9lLnJlc29sdmUobC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUobCkudGhlbigoZnVuY3Rpb24odCl7Yy52YWx1ZT10LGEoYyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShzLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gSShlLG4scil7dmFyIG89aDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09eSl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT1nKXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1rKHUscik7aWYocyl7aWYocz09PW0pY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09aCl0aHJvdyBvPWcsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPXk7dmFyIGM9ZihlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP2c6dixjLmFyZz09PW0pY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz1nLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gayhlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsayhlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSxtO3ZhciBpPWYobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCxtO3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCxtKTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLG0pfWZ1bmN0aW9uIEwodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gVCh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gaih0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEwsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKGQoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gdy5wcm90b3R5cGU9XyxvKEMsImNvbnN0cnVjdG9yIix7dmFsdWU6Xyxjb25maWd1cmFibGU6ITB9KSxvKF8sImNvbnN0cnVjdG9yIix7dmFsdWU6dyxjb25maWd1cmFibGU6ITB9KSx3LmRpc3BsYXlOYW1lPWMoXyxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09d3x8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsXyk6KHQuX19wcm90b19fPV8sYyh0LHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQyksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sTyhBLnByb3RvdHlwZSksYyhBLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1BLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQShsKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LE8oQyksYyhDLHMsIkdlbmVyYXRvciIpLGMoQyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMoQywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1QLGoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpqLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChUKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsbSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSxtfSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLFQobiksbX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztUKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpQKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCksbX19LGV9ZnVuY3Rpb24gaCh0LGUsbixyLG8saSxhKXt0cnl7dmFyIHU9dFtpXShhKSxzPXUudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbih0KX11LmRvbmU/ZShzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIHYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7aChpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7aChpLHIsbyxhLHUsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9fXZhciB5PTAsZz0iIixtPSExO2Z1bmN0aW9uIGIodCxlKXtyZXR1cm4gZnVuY3Rpb24obixyKXt2YXIgbz1yKCksaT0oMCxjLkdtKShvKTtpZighKGkmJiJjb21wb3NlclN1Z2dlc3Rpb25zImluIGkmJm51bGwhPWkmJmkuY29tcG9zZXJTdWdnZXN0aW9ucyYmbnVsbCE9aSYmaS5jb21wb3NlclN1Z2dlc3Rpb25zLmlzRGlzbWlzc2VkKSlyZXR1cm4gZz10LHcobixyLGUpfX12YXIgdz0oMCxyLnMpKChmdW5jdGlvbiB0KGUsbixyKXt2YXIgaT0rK3ksYT1nLHU9bigpLGw9dS5zZXNzaW9uLGY9KDAsYy5HbSkodSksZD1mJiYiY29tcG9zZXJTdWdnZXN0aW9ucyJpbiBmP2YuY29tcG9zZXJTdWdnZXN0aW9uczp2b2lkIDA7aWYoIWR8fCFkLmxvYWRpbmcpcmV0dXJuIG09ITEsZSh4KCEwLHIpKSwoMCxvLllHKShsLGEsMykudGhlbigoZnVuY3Rpb24obyl7aWYoZSh4KCExLHIpKSxlKFMobyxyLGkpKSxtJiZnIT09YSlyZXR1cm4gdy5jYW5jZWwoKSx2b2lkIHQoZSxuLHIpO3ZhciB1PU9iamVjdC5hc3NpZ24oe30se3F1ZXJ5OmEsY29udmVyc2F0aW9uX2lkOnJ9LG8pOygwLHMuQTUpKCJyZWNlaXZlZCIsImNvbXBvc2VyX3NtYXJ0X3N1Z2dlc3Rpb25zIiwibWVzc2VuZ2VyIix7fSx1KX0pKTttPSEwfSksMWUzLHtsZWFkaW5nOiExLHRyYWlsaW5nOiEwfSk7ZnVuY3Rpb24gXyh0LGUsbixyLG8pe3JldHVybiB2b2lkIDA9PT1yJiYocj0hMSksdihwKCkubWFyaygoZnVuY3Rpb24gcyhjLGYpe3ZhciBkLGgsdix5LGcsbSxiLHcsXyx4LEUsQyxPLEE7cmV0dXJuIHAoKS53cmFwKChmdW5jdGlvbihzKXtmb3IoOzspc3dpdGNoKHMucHJldj1zLm5leHQpe2Nhc2UgMDppZihoPWYoKSx2PW51bGw9PWU/dm9pZCAwOmUuaWQseT1oLnNlc3Npb24sZz1oLm5ld0NvbnZlcnNhdGlvbixtPWgudXNlcixiPWguaW5ib3VuZFN1Z2dlc3Rpb25zLHc9aC5hcHAudXNlclBhcnRVeFN0eWxlLF89bnVsbD09Ynx8bnVsbD09KGQ9Yi5zZXJ2ZXJTaWRlU3VnZ2VzdGlvbnMpP3ZvaWQgMDpkLnNuYXBzaG90SWQseD0oMCxhLmwpKCksRT1uZXcgRGF0ZSxjKFMobnVsbCx2KSksIXYpe3MubmV4dD0yMTticmVha31yZXR1cm4gQz17Y29udmVyc2F0aW9uSWQ6dixjbGllbnRJZDp4LGNyZWF0ZWRBdDpFLGJvZHk6KDAsdS4kQikobi50ZXh0KSxjb21wb3NlclN1Z2dlc3Rpb25JdGVtOm4sdXhTdHlsZTp3fSxzLnByZXY9OSxjKCgwLGkuSm4pKHYsQyxyKSkscy5uZXh0PTEzLHQuZmlyZUNvbXBvc2VyU3VnZ2VzdGlvbih5LHtjb252ZXJzYXRpb25JZDp2LHN1Z2dlc3Rpb246bixjbGllbnRJZDp4fSk7Y2FzZSAxMzpjKCgwLGkuYlIpKHYsQyxudWxsPT1lP3ZvaWQgMDplLmxhc3RQYXJ0aWNpcGF0aW5nQWRtaW4sbywhMSxFLCEwKSkscy5uZXh0PTE5O2JyZWFrO2Nhc2UgMTY6cy5wcmV2PTE2LHMudDA9cy5jYXRjaCg5KSxjKCgwLGkucU0pKHYsQyxzLnQwKSk7Y2FzZSAxOTpzLm5leHQ9MzQ7YnJlYWs7Y2FzZSAyMTpyZXR1cm4gTz17Y2xpZW50SWQ6eCxib2R5OigwLHUuJEIpKG4udGV4dCksY3JlYXRlZEF0OkUsY29tcG9zZXJTdWdnZXN0aW9uSXRlbTpuLHV4U3R5bGU6d30scy5wcmV2PTIyLGMoKDAsaS5qVykoTyxyKSkscy5uZXh0PTI2LHQuZmlyZUNvbXBvc2VyU3VnZ2VzdGlvbih5LHtjb252ZXJzYXRpb25JZDp2LHN1Z2dlc3Rpb246bixjbGllbnRJZDp4LGJvdEludHJvOmc/Zy5ib3RJbnRyb0lkOm51bGwsYXJ0aWNsZVVybDpnP2cuYXJ0aWNsZVVybDpudWxsLHJlc29sdXRpb25Cb3RCZWhhdmlvclZlcnNpb25JZDptP20ucmVzb2x1dGlvbkJvdEJlaGF2aW9yVmVyc2lvbklkOm51bGwsc25hcHNob3RJZDpffSk7Y2FzZSAyNjpBPXMuc2VudCxjKCgwLGkuSE4pKEEsbnVsbCxudWxsLEUsInJlc29sdXRpb25fYm90X2F1dG9fc3VnZ2VzdCIpKSxjKCgwLGwucCkoQS5pZCwhMCkpLHMubmV4dD0zNDticmVhaztjYXNlIDMxOnMucHJldj0zMSxzLnQxPXMuY2F0Y2goMjIpLGMoKDAsaS53aikobnVsbCkpO2Nhc2UgMzQ6Y2FzZSJlbmQiOnJldHVybiBzLnN0b3AoKX19KSxzLG51bGwsW1s5LDE2XSxbMjIsMzFdXSl9KSkpfWZ1bmN0aW9uIFModCxlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0rK3kpLHt0eXBlOmYuQTk5LGNvbnZlcnNhdGlvbklkOmUsY29tcG9zZXJTdWdnZXN0aW9uczp0LHByaW9yaXR5Om59fWZ1bmN0aW9uIHgodCxlKXtyZXR1cm57dHlwZTpmLnJfMSxjb252ZXJzYXRpb25JZDplLGxvYWRpbmdTdGF0dXM6dH19ZnVuY3Rpb24gRSh0KXtyZXR1cm57dHlwZTpmLmlEZCxjb252ZXJzYXRpb25JZDp0fX1mdW5jdGlvbiBDKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSx7dHlwZTpmLiRFZSxzdWdnZXN0aW9uUGFydHM6dCxjcmVhdGVkQXQ6bmV3IERhdGUsZnJvbUNsaWVudE1hdGNoOmV9fX0sMTYxMjU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7UjpmdW5jdGlvbigpe3JldHVybiBkfX0pO3ZhciByPW4oMjU4MzYpLG89big1NDEwMSksaT1uKDUxNjY5KSxhPW4oNDYwNSksdT1uKDk0MjE0KSxzPW4oNzExMCksYz1uKDM4Mjg1KTtmdW5jdGlvbiBsKHQsZSxuLHIsbyxpLGwsZil7cmV0dXJuIHZvaWQgMD09PW8mJihvPW51bGwpLHZvaWQgMD09PWkmJihpPSExKSxmdW5jdGlvbihkLHApe3ZhciBoLHYseT1wKCksZz15LnNlc3Npb24sbT15LmFwcC51c2VyUGFydFV4U3R5bGU7Im1lc3NhZ2UiPT09KG51bGw9PW4/dm9pZCAwOm4ucGFydFR5cGUpP2g9bnVsbDpoPW51bGwhPSh2PW51bGw9PW4/dm9pZCAwOm4uaWQpP3Y6bnVsbDt2YXIgYj1mdW5jdGlvbih0KXtpZih0JiZ0LmNsaWVudElkKXJldHVybiB0LmNsaWVudElkO3JldHVybigwLGMubCkoKX0obyksdz1uZXcgRGF0ZSxfPSgwLHMuJEIpKHIudGV4dCksUz17Y29udmVyc2F0aW9uSWQ6ZSxjbGllbnRJZDpiLGNyZWF0ZWRBdDp3LGJvZHk6XyxzZWxlY3RlZFJlcGx5T3B0aW9uOntyZXBseU9wdGlvbjpyLHF1aWNrUmVwbHlQYXJ0Om59LHV4U3R5bGU6bX07cmV0dXJuIGQoKDAsYS5KbikoZSxTLGkpKSxkKCgwLHUua0kpKGUpKSx0LnF1aWNrUmVwbHkoZyxlLGgscixiKS50aGVuKChmdW5jdGlvbih0KXtkKCgwLGEuYlIpKGUsdCxsLGYsITEsdykpfSkpLmNhdGNoKChmdW5jdGlvbih0KXtkKCgwLGEucU0pKGUsUyx0KSl9KSl9fXZhciBmPW4oNjk3NDQpO2Z1bmN0aW9uIGQodCxlLG4sYSx1LHMpe2lmKHZvaWQgMD09PWEmJihhPSExKSwibWVzc2VuZ2VyX3N1Z2dlc3RlZF9jb250ZW50Ij09PW4udHlwZSl7dmFyIGMsZD0icGFydHMiaW4gZT9lOntpZDplLmlkLGxhc3RQYXJ0aWNpcGF0aW5nQWRtaW46ImFkbWluIj09PShudWxsPT0oYz1lLnBhcnQpfHxudWxsPT0oYz1jLmF1dGhvcik/dm9pZCAwOmMudHlwZSk/ZS5wYXJ0LmF1dGhvcjp2b2lkIDB9O3JldHVybigwLHIuWXIpKHQsZCxuLGEscyl9cmV0dXJuInF1aWNrX3JlcGx5Ij09PW4udHlwZT8obnVsbCE9dSYmdS5yZXBseU9wdGlvbnMmJi0xPT09dS5yZXBseU9wdGlvbnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC51dWlkfSkpLmluZGV4T2Yobi51dWlkKSYmKCgwLGYub1MpKCJxdWlja19yZXBseV91dWlkX21pc21hdGNoIiksKDAsZi5zcSkoInF1aWNrX3JlcGx5X3V1aWRfbWlzbWF0Y2giKSwoMCxmLnVvKSgicXVpY2tfcmVwbHlfdXVpZF9taXNtYXRjaCBwYXJ0SWQ9Iit1LmlkKyIgdXVpZD0iK24udXVpZCkpLGwodCxlLmlkLHUsbikpOiJwcmVkaWN0aXZlX2Fuc3dlciI9PT1uLnR5cGU/KDAsby5vKSh0LG4sYSk6KDAsaS5BWCkodCxuLGEpfX0sNDYwNTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtCaDpmdW5jdGlvbigpe3JldHVybiBzdH0sR086ZnVuY3Rpb24oKXtyZXR1cm4geXR9LHNfOmZ1bmN0aW9uKCl7cmV0dXJuIEt9LHFNOmZ1bmN0aW9uKCl7cmV0dXJuIHJ0fSxKbjpmdW5jdGlvbigpe3JldHVybiBldH0sYlI6ZnVuY3Rpb24oKXtyZXR1cm4gbnR9LHdqOmZ1bmN0aW9uKCl7cmV0dXJuIHR0fSxqVzpmdW5jdGlvbigpe3JldHVybiBRfSxITjpmdW5jdGlvbigpe3JldHVybiAkfSx5azpmdW5jdGlvbigpe3JldHVybiBZfSx5ZjpmdW5jdGlvbigpe3JldHVybiBKfSxvVDpmdW5jdGlvbigpe3JldHVybiBpdH0sS006ZnVuY3Rpb24oKXtyZXR1cm4gZHR9LFFMOmZ1bmN0aW9uKCl7cmV0dXJuIEd9LFNoOmZ1bmN0aW9uKCl7cmV0dXJuIEV0fSwkRzpmdW5jdGlvbigpe3JldHVybiBXfSxDdzpmdW5jdGlvbigpe3JldHVybiBtdH0sRm86ZnVuY3Rpb24oKXtyZXR1cm4gcX0sbVE6ZnVuY3Rpb24oKXtyZXR1cm4gbHR9LCRaOmZ1bmN0aW9uKCl7cmV0dXJuIGN0fSxfWjpmdW5jdGlvbigpe3JldHVybiBwdH0sRXc6ZnVuY3Rpb24oKXtyZXR1cm4gWH0sc0Q6ZnVuY3Rpb24oKXtyZXR1cm4gb3R9LFpGOmZ1bmN0aW9uKCl7cmV0dXJuIGZ0fSxOJDpmdW5jdGlvbigpe3JldHVybiB3dH0seVE6ZnVuY3Rpb24oKXtyZXR1cm4gX3R9LGh2OmZ1bmN0aW9uKCl7cmV0dXJuIHh0fSxSaTpmdW5jdGlvbigpe3JldHVybiBTdH0sVDY6ZnVuY3Rpb24oKXtyZXR1cm4gaHR9LERYOmZ1bmN0aW9uKCl7cmV0dXJuIGd0fSxlODpmdW5jdGlvbigpe3JldHVybiBafSx4QTpmdW5jdGlvbigpe3JldHVybiB2dH19KTt2YXIgcj1uKDM1MjA2KSxvPW4oNTc1MjApLGk9big0MDE4KSxhPW4oMzIzNTApLHU9bigzODI1Mykscz1uKDQ0Mjk3KSxjPW4oOTg2ODQpLGw9big2OTc0NCksZj1uKDM0NjE5KSxkPW4oMzMwNDgpLHA9big2MTM2NyksaD1uKDE2MTI1KSx2PW4oMjg4MjQpLHk9bigxODM5OSksZz1uKDU0Nzg4KSxtPW4oOTQyMTQpLGI9big3NzM2KSx3PW4oOTA1MDIpLF89bigyMTEyOSksUz1uKDkxMTg5KSx4PW4oMTgzOTUpLEU9bigzNjI2NiksQz1uKDY2ODU0KSxPPTVlMztmdW5jdGlvbiBBKCl7dmFyIHQsZSxuLHIsbyxpLGEsdT0oMCxFLndTKSgpLHM9bnVsbCE9KHQ9bnVsbD09KGU9KDAsRS5LUSkoKSk/dm9pZCAwOmUuaHJlZik/dDoiIixjPW51bGwhPShuPW51bGw9PShyPSgwLEMuJCkoKSl8fG51bGw9PShyPXIuZG9jdW1lbnQpfHxudWxsPT0ocj1yLmJvZHkpfHxudWxsPT0ocj1yLmlubmVyVGV4dCk/dm9pZCAwOnIudHJpbSgpKT9uOiIiO3JldHVybiBjP3t0aXRsZTp1LHVybDpzLGNvbnRlbnRfdGV4dDoobz1jLGk9TyxhPShuZXcgVGV4dEVuY29kZXIpLmVuY29kZShvKSxhLmxlbmd0aDw9aT9vOihuZXcgVGV4dERlY29kZXIpLmRlY29kZShhLnNsaWNlKDAsaSkpLnNsaWNlKDAsLTEpKyIuLi5bdHJ1bmNhdGVkXSIpfTpudWxsfXZhciBJPW4oODQwNzcpLGs9big0NjYwNCksTD1uKDY2Mjc0KSxUPW4oNzY3MjIpLGo9big2MDc3MSksUD1uKDE0MTIwKSxOPW4oNjg3NjIpLE09big4MzE0NyksUj1uKDcxODE2KSxVPW4oNzI5MCksej1uKDI5NTQ0KSxIPW4oNTE4ODMpLEY9big1OTc3KTtmdW5jdGlvbiBEKCl7cmV0dXJuIEQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxELmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBCKHQpe3JldHVybiBCPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxCKHQpfXZhciBWPSJfX3BlbmRpbmdfaW5ib3VuZF9fIjtmdW5jdGlvbiBHKHQsZSxuKXt2b2lkIDA9PT1uJiYobj17fSk7dmFyIHI9bi5pc1VwZGF0aW5nfHwhMSxvPW4ubmV4dXNFdmVudENyZWF0ZWRBdHx8bnVsbCxhPW4uY2xpZW50QXNzaWduZWRVdWlkfHxudWxsLHU9bi53ZWJTb2NrZXRFbnF1ZXVlZEF0fHxudWxsLHM9bi5jdXN0b21Cb3RTdGF0ZXx8bnVsbCxjPW4uaXNPcGVyYXRvclBhcnR8fCExLGg9bi5yZXF1ZXN0T3JpZ2lufHxudWxsLHY9bi5iYWNrZ3JvdW5kRmV0Y2h8fCExLGc9e2xhc3RBZG1pblBhcnRDcmVhdGVkQXQ6bi5sYXN0QWRtaW5QYXJ0Q3JlYXRlZEF0fHxudWxsLGxhc3RBZG1pblBhcnRJZDpuLmxhc3RBZG1pblBhcnRJZHx8bnVsbH0sdz1uLmV2ZW50RGF0YXx8bnVsbDtyZXR1cm4gZnVuY3Rpb24obixfKXtuKGZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9ITEpO3JldHVybnt0eXBlOkwuTExKLGNvbnZlcnNhdGlvbklkOnQsaXNVcGRhdGluZzplfX0oZSxyKSk7dmFyIHg9XygpLEU9eC5zZXNzaW9uLEM9eC5vcGVyYXRvcixPPXguYXBwLEE9eC51c2VyLEk9eC5jb252ZXJzYXRpb25zLFQ9RCh7c2VsZlNlcnZlU3VnZ2VzdGlvbnNNYXRjaDpPLnNlbGZTZXJ2ZVN1Z2dlc3Rpb25zTWF0Y2gsY2xpZW50QXNzaWduZWRVdWlkOmEscmVxdWVzdE9yaWdpbjpoLG5leHVzQ29ubmVjdGlvblN0YXR1czooMCxTLnApKF8oKSl9LGcse2V2ZW50RGF0YTp3fHx7fX0pLGo9RGF0ZS5ub3coKTtyZXR1cm4gdC5nZXRDb252ZXJzYXRpb24oRSxlLFQpLnRoZW4oKGZ1bmN0aW9uKHIpe3ZhciBoLHY9ST9JLmJ5SWRbZV06bnVsbCxnPVQuZXZlbnREYXRhLnRyYWNlcGFyZW50O2lmKGc/ay5mLm9uTmV3Q29tbWVudFZpYVJlYWx0aW1lKHIsZyk6ay5mLm9uTmV3Q29tbWVudFZpYVBvbGxpbmcociksYSYmKCgwLGwuc3EpKCJmZXRjaF9jb252ZXJzYXRpb25fZHVyYXRpb25zIix7Y2xpZW50X2Fzc2lnbmVkX3V1aWQ6YSx0aW1lX3RvX2ZldGNoX2NvbnZfbXM6RGF0ZS5ub3coKS1qLGlzX29wZXJhdG9yX3BhcnQ6Y30pLG51bGwhPXMmJiJxdWlja19yZXBseV9maW5pc2hlZCI9PT1zPygwLGwuc3EpKCJib3RfcmVwbHkiLHtjbGllbnRfYXNzaWduZWRfdXVpZDphLHRpbWVfdG9fZmV0Y2hfY29udl9tczpEYXRlLm5vdygpLWp9KTp1JiYoMCxsLnNxKSgiaW5ib3hfdG9fbWVzc2VuZ2VyIix7Y2xpZW50X2Fzc2lnbmVkX3V1aWQ6YSx3ZWJfc29ja2V0X2VucXVldWVkX2F0OnUsdGltZV90b19mZXRjaF9jb252X21zOkRhdGUubm93KCktaix1c2VyX2lzX3ByZXNlbnQ6KG51bGw9PUE/dm9pZCAwOkEuaXNQcmVzZW50KXx8ITF9KSksKDAsbC5aSikoImluYm91bmRTdWdnZXN0aW9uQ29udmVyc2F0aW9uQ3JlYXRpb24iLG51bGw9PShoPSgwLGkuSTQpKHIpKT92b2lkIDA6aC5jbGllbnRJZCx7b3JpZ2luOiJjb252ZXJzYXRpb25fcmVmcmVzaGVkIixjb252ZXJzYXRpb25faWQ6bnVsbD09cj92b2lkIDA6ci5pZH0pLG4oZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIHI9bigpLG89ci5uZXdDb252ZXJzYXRpb24sYT0oMCxQLm9QKShyKTt0cnl7dmFyIHU9KDAsaS5JNCkodCkscz11LmNsaWVudElkJiZ1LmNsaWVudElkPT09KDAsaS5JNCkobykuY2xpZW50SWQsYz0hKDAsTi5zQikoYSksbD10LnBhcnRzLmxlbmd0aD49by5wYXJ0cy5sZW5ndGg7cyYmYyYmbCYmKGUoKDAseS5wKSh0LmlkLCEwKSksZSgkKHQsbnVsbCxudWxsLERhdGUubm93KCksImN1c3RvbV9ib3QiKSkpfWNhdGNoKHQpe319fShyKSksbihxKHQsciwhMSxEYXRlLm5vdygpKSksQyl7dmFyIG09Qy5sYXN0Q29tcG9zZXJFdmVudCx3PUMudXNlckNyZWF0ZWRDb252ZXJzYXRpb25BdCxfPUMubGFzdFRyaWdnZXJUcmFuc2l0aW9uVGltZXN0YW1wOygwLGYuX2spKHIsXyksKDAsZi5XbCkocix3LG0pfW8mJigwLHAuaikoKSYmKDAsbC5zcSkoIm5ld0NvbW1lbnRFdmVudCIse2R1cmF0aW9uX21zOigwLGQubUcpKG8pfSksbyYmdiYmZnVuY3Rpb24odCxlKXt2YXIgbj10LnBhcnRzP3QucGFydHMuc2xpY2UoLTEpOm51bGw7aWYoIShuJiZuWzBdJiYoMCxiLms0KShuWzBdKSkpdHJ5e3QudXBkYXRlZEF0LmdldFRpbWUoKT09PWUudXBkYXRlZEF0LmdldFRpbWUoKSYmKDAsbC5zcSkoInJlYWxUaW1lQ29udmVyc2F0aW9uVXBkYXRlR290RXhhY3RDb3B5Iix7Y29udmVyc2F0aW9uX2lkOnQuaWR9KSwoMCxpLnhmKSh0LnBhcnRzLGUucGFydHMsNSkmJigwLGwuc3EpKCJyZWFsVGltZUNvbnZlcnNhdGlvblVwZGF0ZUdvdEV4YWN0UGFydHMiLHtjb252ZXJzYXRpb25faWQ6dC5pZH0pfWNhdGNoKHQpe319KHIsdil9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3ZhciByLG87aWYobihmdW5jdGlvbih0LGUpe3JldHVybnt0eXBlOkwuRTA4LGNvbnZlcnNhdGlvbklkOnQsZXJyb3I6ZX19KGUsdCkpLCEoMCx6LkxPKShfKCkpKWlmKCF2JiZmdW5jdGlvbih0KXtpZighdClyZXR1cm4hMTtpZih0IGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuL1xiNDA0XGIvLnRlc3QodC5tZXNzYWdlKTtpZigib2JqZWN0Ij09PUIodCkmJiJlcnJvcnMiaW4gdCl7dmFyIGU9dC5lcnJvcnM7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIjQwNCI9PT0obnVsbD09dD92b2lkIDA6dC5jb2RlKX0pKX1yZXR1cm4hMX0odCkmJigwLHouRWkpKF8oKSkpbigoMCxILkhDKSgiL21lc3NhZ2VzL2NvbnZlcnNhdGlvbi9uZXciKSk7ZWxzZXt2YXIgaT1udWxsPT0ocj1fKCkuY29udmVyc2F0aW9ucyk/dm9pZCAwOnIuYnlJZFtlXSxhPShudWxsPT1pfHxudWxsPT0obz1pLnBhcnRzKT92b2lkIDA6by5sZW5ndGgpPjA7dnx8YXx8bigoMCxtLlN5KSh7Zm9yY2VMb2NhdGlvblJlZGlyZWN0OiEwLHJlcGxhY2VDdXJyZW50VmlldzohMH0pKX19KSl9fWZ1bmN0aW9uIHEodCxlLG4scil7cmV0dXJuIGZ1bmN0aW9uKGEpeygwLGkuSHApKGUpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBhKCgwLG8uX0QpKHQsZSwhMSkpfSkpLGEoZnVuY3Rpb24odCxlLG4pe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSkse3R5cGU6TC5mRUMsY29udmVyc2F0aW9uOnQsc2tpcE5vdGlmaWNhdGlvbjplLGNyZWF0ZWRBdDpufX0oZSxuLHIpKSwoMCxSLkEpKGUsYSl9fWZ1bmN0aW9uIFcodCxlKXtyZXR1cm4gZnVuY3Rpb24obixyKXtuKGZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOkwuVG1RLGNvbnZlcnNhdGlvbklkOnR9fShlKSk7dmFyIG89cigpLnNlc3Npb247cmV0dXJuIHQubWFya0NvbnZlcnNhdGlvbkFzUmVhZChvLGUpLnRoZW4oKGZ1bmN0aW9uKHQpe3ZhciByLG87KG4oZnVuY3Rpb24odCxlKXtyZXR1cm57dHlwZTpMLnUwYyxjb252ZXJzYXRpb25JZDp0LHJlYWRBdDplfX0oZSx0LnJlYWRBdCkpLG51bGwhPXQmJm51bGwhPShyPXQudGlja2V0KSYmci5pZCkmJm4oKDAsXy5VMykobnVsbD09dHx8bnVsbD09KG89dC50aWNrZXQpP3ZvaWQgMDpvLmlkKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3JldHVybiBuKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3R5cGU6TC5iTGssY29udmVyc2F0aW9uSWQ6dCxlcnJvcjplfX0oZSx0KSl9KSl9fWZ1bmN0aW9uIEsodCl7cmV0dXJue3R5cGU6TC55TTUsY29udmVyc2F0aW9uSWQ6dH19ZnVuY3Rpb24gWih0KXtyZXR1cm57dHlwZTpMLm9fRSxjb252ZXJzYXRpb25JZDp0fX1mdW5jdGlvbiBKKHQsZSxuLHIpe3JldHVybiBmdW5jdGlvbihvLGkpe28oZnVuY3Rpb24odCxlLG4pe3JldHVybnt0eXBlOkwuVDRrLGNvbnZlcnNhdGlvbklkOnQscmVhY3Rpb25JbmRleDplLGlzRnJvbUNvbnZlcnNhdGlvbjohIW59fShlLG4scikpO3ZhciBhPWkoKS5zZXNzaW9uO3JldHVybiB0LmNyZWF0ZVJlYWN0aW9uKGEsZSxuKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3R5cGU6TC5IVEUsY29udmVyc2F0aW9uSWQ6dCxyZWFjdGlvbkluZGV4OmV9fShlLG4pKX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7cmV0dXJuIG8oZnVuY3Rpb24odCxlLG4pe3JldHVybnt0eXBlOkwuSUR6LGNvbnZlcnNhdGlvbklkOnQscmVhY3Rpb25JbmRleDplLGVycm9yOm59fShlLG4sdCkpfSkpfX1mdW5jdGlvbiBZKHQsZSxuLHIsbyxhLHUscyl7cmV0dXJuIHZvaWQgMD09PXImJihyPSExKSx2b2lkIDA9PT1vJiYobz1udWxsKSx2b2lkIDA9PT1hJiYoYT1udWxsKSx2b2lkIDA9PT11JiYodT0hMSksdm9pZCAwPT09ZT9mdW5jdGlvbih0LGUsbixyLG8saSl7dm9pZCAwPT09biYmKG49ITEpO3JldHVybiBmdW5jdGlvbihhLHUpe3ZhciBzLGwsZixkLHA9dSgpLGg9cC5zZXNzaW9uLG09cC5hcHAsYj1wLnVzZXIsXz1wLm5ld0NvbnZlcnNhdGlvbixTPXAuYXBwLEU9Uy51c2VyUGFydFV4U3R5bGUsQz1TLm9wZW5Vc2VyUm9sZSxPPShudWxsPT1tP3ZvaWQgMDptLmZlYXR1cmVzKXx8e30saz1udWxsIT0ocz1PLmZpblNlbmRDdXJyZW50UGFnZURhdGEpJiZzLEw9bnVsbCE9KGw9Ty5maW5FY29tbWVyY2VTeW5jQ2FydCkmJmwsVD0oMCxqLmE0KShtKSxOPUQoe30sZSx7dXhTdHlsZTpFfSksTT1lLmJvZHksUj1lLmNyZWF0ZWRBdCx6PWUudmlhLEg9Xz9fLmJvdEludHJvSWQ6bnVsbCxCPV8/Xy5mcm9tQXJ0aWNsZUlkOm51bGwsRz0hIV8mJl8uZnJvbVN0YW5kYWxvbmVBcnRpY2xlLHE9bnVsbDsoIWkmJiFIfHxpKSYmKHE9KDAsdi4kKShwKSksYShRKE4sbixpLERhdGUubm93KCksbnVsbD09KGY9cSk/dm9pZCAwOmYud2VsY29tZVBhcnRzKSk7dmFyIFc9bmV3IFNldChwLm9wZW5JbmJvdW5kQ29udmVyc2F0aW9uSWRzKTtXLmhhcyhWKXx8KFcuYWRkKFYpLGEoKDAsZy5LTykoQXJyYXkuZnJvbShXKSkpKSxpJiZhKGJ0KCkpO3ZhciBLPW51bGw7aWYoTy5tZXNzZW5nZXJPcHRpbWlzdGljRmluVGhpbmtpbmcmJm51bGwhPShkPXEpJiZkLmZpbklzRmlyc3Qpe3ZhciBaLEo9bnVsbD09KFo9bS5hY3RpdmVCb3QpP3ZvaWQgMDpaLnBhcnRpY2lwYW50O2lmKEope3ZhciBZLGV0LG50PXthZG1pbklkOiJib3QiLGZpcnN0TmFtZTpKLmZpcnN0TmFtZSxhdmF0YXJVcmw6bnVsbCE9KFk9bnVsbD09KGV0PUouYXZhdGFyKT92b2lkIDA6ZXQuc3F1YXJlMTI4KT9ZOnZvaWQgMCxpc0JvdDohMCxoYXNBSTohMCxzaG93QXZhdGFyOiEwLGxhc3RBY3RpdmVBdDpuZXcgRGF0ZSxjbGllbnRJZDplLmNsaWVudElkfTtLPW50LGEoc3QoU3RyaW5nKERhdGUubm93KCkpLG50KSl9fXJldHVybiBhdCh0LGgsZSwoZnVuY3Rpb24odCl7cmV0dXJuIGEodXQoZSx0KSl9KSxUKS50aGVuKChmdW5jdGlvbihuKXt2YXIgcixvLGEsdT17YmxvY2tzOk0sY3JlYXRlZEF0OlIsdXBsb2FkOm4sZW1haWw6aSxjb21wb3NlclN1Z2dlc3Rpb25zOnEsc2VsZlNlcnZlU3VnZ2VzdGlvbnNNYXRjaDptLnNlbGZTZXJ2ZVN1Z2dlc3Rpb25zTWF0Y2gsYm90SW50cm86SCxyZXNvbHV0aW9uQm90QmVoYXZpb3JWZXJzaW9uSWQ6Yj9iLnJlc29sdXRpb25Cb3RCZWhhdmlvclZlcnNpb25JZDpudWxsLG1lc3Nlbmdlck9wZW5SZXF1ZXN0SWQ6bS5tZXNzZW5nZXJPcGVuUmVxdWVzdElkLGN1c3RvbUF0dHJpYnV0ZXM6bnVsbD09KHI9Yi5jdXN0b21BdHRyaWJ1dGVzKT92b2lkIDA6ci5uZXdfY29udmVyc2F0aW9uX2F0dHJpYnV0ZXMsY2xpZW50SWQ6ZS5jbGllbnRJZCxjdXJyZW50UGFnZURhdGE6az9BKCk6bnVsbCxyb2xlTWF0Y2hpbmdEYXRhOntwaW5nUm9sZTpiLnJvbGUsbWF0Y2hpbmdSb2xlOkN9LHNob3BpZnlDYXJ0VG9rZW46TD9JLkEucmVhZCgiY2FydCIpOm51bGwsY29tcG9zZXJTdWdnZXN0aW9uSXRlbTpudWxsIT0obz1lLmNvbXBvc2VyU3VnZ2VzdGlvbkl0ZW0pP286bnVsbCxmcm9tQm9va01lZXRpbmdCdXR0b246bnVsbCE9KGE9ZS5mcm9tQm9va01lZXRpbmdCdXR0b24pJiZhfTtyZXR1cm4gXyYmXy5hcnRpY2xlVXJsJiYodS5jdXJyZW50VXJsPV8uYXJ0aWNsZVVybCx1LnN0YXJ0ZWRGcm9tU2VhcmNoQnJvd3NlPSEwKSx0LmNyZWF0ZUNvbnZlcnNhdGlvbihoLHUpfSkpLnRoZW4oKGZ1bmN0aW9uKHQpe3ZhciBlO2EoJCh0LHIsbyxEYXRlLm5vdygpLHZvaWQgMCx6KSksSyYmYShzdChTdHJpbmcodC5pZCksRCh7fSxLLHtsYXN0QWN0aXZlQXQ6bmV3IERhdGV9KSkpLGkmJmEoKDAsYy5hYikoYixpKSksZnVuY3Rpb24odCl7dy5BLnRyYW5zZmVyRHJhZnQody5BLk5FV19DT05WRVJTQVRJT05fRFJBRlRfSUQsdCl9KHQuaWQpO3ZhciBuPSgwLEYuTikodSgpKSxzPW4hPT1VLmN5LnZpc2libGU/bjpudWxsLGw9KDAsUC5vUCkodSgpKSYmISgwLFAuTjcpKHUoKSk7cmV0dXJuIGEobD9YKCk6KDAseS5lKSh0LmlkLHtyZXBsYWNlQ3VycmVudFZpZXc6ITAsZnJvbUFydGljbGVJZDpCLGZyb21TdGFuZGFsb25lQXJ0aWNsZTpHLHZpc2liaWxpdHk6c30pKSwhQnx8SHx8bnVsbCE9KGU9cSkmJmUuc25hcHNob3RJZHx8YSgoMCx4LkE1KShCLHQuaWQpKSx0fSkpLmNhdGNoKChmdW5jdGlvbih0KXthKHR0KHQpKTt2YXIgZT1uZXcgU2V0KHUoKS5vcGVuSW5ib3VuZENvbnZlcnNhdGlvbklkcyk7ZS5kZWxldGUoVikmJmEoKDAsZy5LTykoQXJyYXkuZnJvbShlKSkpfSkpfX0odCxuLHIsYSx1LHMpOmZ1bmN0aW9uKHQsZSxuLHIsbyxhLHUscyl7dm9pZCAwPT09ciYmKHI9ITEpO3JldHVybiBmdW5jdGlvbihjLGwpe3ZhciBmLGQ9bCgpLHA9ZC5zZXNzaW9uLGg9ZC5hcHAsdj1oLnVzZXJQYXJ0VXhTdHlsZSx5PW51bGwhPShmPSgobnVsbD09aD92b2lkIDA6aC5mZWF0dXJlcyl8fHt9KS5maW5TZW5kQ3VycmVudFBhZ2VEYXRhKSYmZixnPSgwLGouYTQpKGgpLG09RCh7fSxuLHt1eFN0eWxlOnZ9KSxiPW4uYm9keSx3PW4uY3JlYXRlZEF0LF89bi5jbGllbnRJZDtyZXR1cm4gYyhldChlLG0scixzKSkscyYmYyhidCgpKSxhdCh0LHAsbiwoZnVuY3Rpb24odCl7cmV0dXJuIGModXQobix0LGUpKX0pLGcpLnRoZW4oKGZ1bmN0aW9uKHIpe3ZhciBvLGEsdSxjPSgwLFQuVk4pKGwoKSxlKSxmPSFjfHxjLmlzRmV0Y2hpbmd8fGMuaXNVcGRhdGluZz9udWxsOigwLGkuZEYpKGMpO3JldHVybiB0LmNyZWF0ZUNvbW1lbnQocCxlLF8sYix3LHIscyx7bGFzdEFkbWluUGFydENyZWF0ZWRBdDpudWxsPT1mfHxudWxsPT0obz1mLmNyZWF0ZWRBdCk/dm9pZCAwOm8udG9JU09TdHJpbmcoKSxuZXh1c0Nvbm5lY3Rpb25TdGF0dXM6KDAsUy5wKShsKCkpLHBhcnRJZHM6bnVsbD09Y3x8bnVsbD09KGE9Yy5wYXJ0cyk/dm9pZCAwOmEubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pKSxsYXN0QWRtaW5QYXJ0SWQ6bnVsbD09Zj92b2lkIDA6Zi5pZCxsYXN0QWRtaW5QYXJ0Q2xpZW50VXVpZDpudWxsPT1mP3ZvaWQgMDpmLmNsaWVudElkLGN1cnJlbnRQYWdlRGF0YTp5P0EoKTpudWxsLGNvbXBvc2VyU3VnZ2VzdGlvbkl0ZW06bnVsbCE9KHU9bi5jb21wb3NlclN1Z2dlc3Rpb25JdGVtKT91Om51bGx9KX0pKS50aGVuKChmdW5jdGlvbihuKXtudWxsIT1uJiZuLmNtciYmKCgwLE0ud2QpKCJDb252ZXJzYXRpb24gbWlzc2luZyByZXBseSAtIGNvbnZlcnNhdGlvbklkOiAiK2UrIiwgYXBwSWQ6ICIrKG51bGw9PXA/dm9pZCAwOnAuYXBwSWQpLHttZXNzYWdlVHlwZToiY29udmVyc2F0aW9uX21pc3NpbmdfcmVwbHkifSksYyhHKHQsZSx7aXNVcGRhdGluZzohMCxyZXF1ZXN0T3JpZ2luOiJDTVIgYWZ0ZXIgY3JlYXRlQ29tbWVudCJ9KSkpLGMobnQoZSxuLG8sYSx1LERhdGUubm93KCkpKX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGMocnQoZSxuLHQpKX0pKX19KHQsZSxuLHIsbyxhLHUscyl9ZnVuY3Rpb24gUSh0LGUsbixyLG8pe3JldHVybiB2b2lkIDA9PT1uJiYobj12b2lkIDApLHZvaWQgMD09PXImJihyPURhdGUubm93KCkpLHZvaWQgMD09PW8mJihvPVtdKSx7dHlwZTpMLlhXbyxwYXJ0OnQsaXNSZXRyeTplLHRpbWVzdGFtcDpyLGVtYWlsOm4sd2VsY29tZVBhcnRzOm99fWZ1bmN0aW9uIFgoKXtyZXR1cm57dHlwZTpMLkokU319ZnVuY3Rpb24gJCh0LGUsbixyLG8saSl7cmV0dXJuIGZ1bmN0aW9uKGEsdSl7dmFyIHM9dSgpLGM9KDAsUC5ONykocyk7YShmdW5jdGlvbih0LGUsbixyLG8saSxhKXtyZXR1cm57dHlwZTpMLkR6TCxjb252ZXJzYXRpb246dCxvZmZpY2VIb3Vyc1Jlc3BvbnNlOmUsaXNBbm5vdGF0ZWRJbWFnZTpuLGNyZWF0ZWRBdDpyLGNvbnZlcnNhdGlvblRyaWdnZXJUeXBlOm8sb25OZXdDb252ZXJzYXRpb25QYXRoOmksdmlhOmF9fSh0LGUsbixyLG8sYyxpKSk7dmFyIGw9bmV3IFNldChzLm9wZW5JbmJvdW5kQ29udmVyc2F0aW9uSWRzKTtsLmRlbGV0ZShWKSYmKGwuYWRkKHQuaWQpLGEoKDAsZy5LTykoQXJyYXkuZnJvbShsKSkpKX19ZnVuY3Rpb24gdHQodCl7cmV0dXJue3R5cGU6TC5JdGwscmVhc29uOnR9fWZ1bmN0aW9uIGV0KHQsZSxuLHIpe3JldHVybnt0eXBlOkwuUHpTLGNvbnZlcnNhdGlvbklkOnQscGFydDplLGlzUmV0cnk6bixlbWFpbDpyfX1mdW5jdGlvbiBudCh0LGUsbixyLG8saSxhKXtyZXR1cm4gdm9pZCAwPT09YSYmKGE9ITEpLHt0eXBlOkwuSE11LGNvbnZlcnNhdGlvbklkOnQscGFydDplLGxhc3RQYXJ0aWNpcGF0aW5nQWRtaW46bixvZmZpY2VIb3Vyc1Jlc3BvbnNlOnIsaXNBbm5vdGF0ZWRJbWFnZTpvLGNyZWF0ZWRBdDppLGZyb21NZXNzZW5nZXJTdWdnZXN0ZWRDb250ZW50OmF9fWZ1bmN0aW9uIHJ0KHQsZSxuKXtyZXR1cm57dHlwZTpMLlUyZCxjb252ZXJzYXRpb25JZDp0LHBhcnQ6ZSxyZWFzb246bn19ZnVuY3Rpb24gb3QodCxlLG4pe3ZhciByPWUuaWQ7cmV0dXJuIGZ1bmN0aW9uKG8pe3ZhciBpLGE7cmV0dXJuIG4uc2VsZWN0ZWRSZXBseU9wdGlvbnx8bi5jb21wb3NlclN1Z2dlc3Rpb25JdGVtPyhuLnNlbGVjdGVkUmVwbHlPcHRpb24/KGk9bi5zZWxlY3RlZFJlcGx5T3B0aW9uLnJlcGx5T3B0aW9uLGE9bi5zZWxlY3RlZFJlcGx5T3B0aW9uLnF1aWNrUmVwbHlQYXJ0KTppPW4uY29tcG9zZXJTdWdnZXN0aW9uSXRlbSxvKCgwLGguUikodCxlLGksITAsYSkpKTpvKFkodCxyLG4sITApKX19ZnVuY3Rpb24gaXQodCxlLG4scil7dm9pZCAwPT09ciYmKHI9e30pO3ZhciBvPXIsaT1vLmRpbWVuc2lvbnMsYT1vLm9uUHJvZ3Jlc3MsdT1vLnNpZ25hbCxzPW8uZmlsZVNpemVMaW1pdCxjPXZvaWQgMD09PXM/ai51QjpzO3JldHVybiBuLnNpemU+Yz9Qcm9taXNlLnJlamVjdCgiZmlsZV9zaXplIik6dC5jcmVhdGVVcGxvYWRQb2xpY3koZSxuLHtkaW1lbnNpb25zOml9KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gdC5jcmVhdGVVcGxvYWQoZSxuLGEsdSl9KSl9ZnVuY3Rpb24gYXQodCxlLG4scixvKXt2b2lkIDA9PT1vJiYobz1qLnVCKTt2YXIgaT1uLmZpbGUsYT1uLmJvZHksdT1udWxsPT1hP3ZvaWQgMDphWzBdLHM9dS53aWR0aCxjPXUuaGVpZ2h0O3JldHVybiBpP2l0KHQsZSxpLHtkaW1lbnNpb25zOnt3aWR0aDpzLGhlaWdodDpjfSxvblByb2dyZXNzOnIsZmlsZVNpemVMaW1pdDpvfSk6UHJvbWlzZS5yZXNvbHZlKHZvaWQgMCl9ZnVuY3Rpb24gdXQodCxlLG4pe3JldHVybnt0eXBlOkwudWZVLGNvbnZlcnNhdGlvbklkOm4scGFydDp0LHByb2dyZXNzOmV9fWZ1bmN0aW9uIHN0KHQsZSl7dmFyIG47cmV0dXJue3R5cGU6TC5UJDUsY29udmVyc2F0aW9uSWQ6dCxhZG1pbklkOmUuYWRtaW5JZCxmaXJzdE5hbWU6ZS5maXJzdE5hbWUsYXZhdGFyVXJsOmUuYXZhdGFyVXJsLGlzQm90OmUuaXNCb3R8fCExLGhhc0FJOmUuaGFzQUl8fCExLHNob3dBdmF0YXI6bnVsbD09KG49ZS5zaG93QXZhdGFyKXx8bixsYXN0QWN0aXZlQXQ6ZS5sYXN0QWN0aXZlQXR8fG5ldyBEYXRlLGxvYWRpbmdTdGF0dXM6ZS5sb2FkaW5nU3RhdHVzLGNsaWVudElkOmUuY2xpZW50SWQsYWNrbm93bGVkZ2VtZW50UGFydDplLmFja25vd2xlZGdlbWVudFBhcnR9fWZ1bmN0aW9uIGN0KHQpe3ZhciBlPXQuY29udmVyc2F0aW9uSWQsbj10LnBhcnQ7cmV0dXJue3R5cGU6TC5hbE0sY29udmVyc2F0aW9uSWQ6ZSxwYXJ0Om59fWZ1bmN0aW9uIGx0KHQpe3ZhciBlPXQuY29udmVyc2F0aW9uSWQsbj10LnBhcnQ7cmV0dXJue3R5cGU6TC5BZEwsY29udmVyc2F0aW9uSWQ6ZSxwYXJ0Om59fWZ1bmN0aW9uIGZ0KHQpe3ZhciBlPXQuY29udmVyc2F0aW9uSWQsbj10LnBhcnRJZCxyPXQuc3Bhd25lZENvbnZlcnNhdGlvbklkO3JldHVybnt0eXBlOkwuZkVMLGNvbnZlcnNhdGlvbklkOmUscGFydElkOm4sc3Bhd25lZENvbnZlcnNhdGlvbklkOnJ9fWZ1bmN0aW9uIGR0KHQpe3ZhciBlPXQuY29udmVyc2F0aW9uSWQsbj10LmNsaWVudElkO3JldHVybnt0eXBlOkwuRm44LGNvbnZlcnNhdGlvbklkOmUsY2xpZW50SWQ6bn19ZnVuY3Rpb24gcHQodCl7cmV0dXJue3R5cGU6TC51dkksY29udmVyc2F0aW9uOnR9fWZ1bmN0aW9uIGh0KHQsZSl7cmV0dXJue3R5cGU6TC5QNXksY29udmVyc2F0aW9uSWQ6dCxjb21wb3NlclN0YXRlOmV9fWZ1bmN0aW9uIHZ0KHQpe3JldHVybnt0eXBlOkwuTmZiLGNvbnZlcnNhdGlvbklkOnR9fWZ1bmN0aW9uIHl0KHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49bmV3IERhdGUpLHt0eXBlOkwuSUtKLGNvbnZlcnNhdGlvbklkOnQsY29tcG9zZXJDb250ZW50OmUsbGFzdEFjdGl2ZUF0Om59fWZ1bmN0aW9uIGd0KHQsZSxuLHIsbyxpLGEsdSxzKXtyZXR1cm4gZnVuY3Rpb24obCxmKXt2YXIgZD1mKCkscD1kLnNlc3Npb24saD1kLnVzZXI7cmV0dXJuIGwoZnVuY3Rpb24odCxlLG4scixvLGksYSl7cmV0dXJue3R5cGU6TC5QV0MsY29udmVyc2F0aW9uSWQ6dCxwYXJ0SWQ6ZSxpZGVudGlmaWVyOm4sdmFsdWU6cixpZGVudGlmaWVyVHlwZTpvLGZvcm1UeXBlOmksaXNDdXN0b21EYXRhOmF9fShlLG4scixvLGksYSx1KSksdC51cGRhdGVDb252ZXJzYXRpb25Gb3JtKHAsZSxuLHIsbyxzKS50aGVuKChmdW5jdGlvbih0KXtsKGZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybnt0eXBlOkwuWlM5LGNvbnZlcnNhdGlvbjp0LHBhcnRJZDplLGlkZW50aWZpZXI6bixjcmVhdGVkQXQ6cn19KHQsbixyLERhdGUubm93KCkpKSwiZW1haWwiPT09ciYmbCgoMCxjLmFiKShoLG8pKX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7bChmdW5jdGlvbih0LGUsbixyKXtyZXR1cm57dHlwZTpMLmN4NCxjb252ZXJzYXRpb25JZDp0LHBhcnRJZDplLGlkZW50aWZpZXI6bixlcnJvcjpyfX0oZSxuLHIsdCkpfSkpfX1mdW5jdGlvbiBtdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgbz1uKCkuc2Vzc2lvbixpPSgwLHUudEgpKCk7KDAsci5ucikoKSYmKGkrPSI/dj0iK01hdGguZmxvb3IoMWU4Kk1hdGgucmFuZG9tKCkpKSwoMCxhLkNfKShpLCgwLHMueikobyx7Y29udmVyc2F0aW9uX2lkOnR9KSl9fWZ1bmN0aW9uIGJ0KCl7cmV0dXJue3R5cGU6TC5YaUF9fWZ1bmN0aW9uIHd0KHQpe3JldHVybnt0eXBlOkwuemw2LGNvbXBvc2VyU3RhdGU6dH19ZnVuY3Rpb24gX3QodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLHt0eXBlOkwuSzIwLHBhcnRzOnQsY3JlYXRlZEF0Om5ldyBEYXRlLGZyb21DbGllbnRNYXRjaDplfX1mdW5jdGlvbiBTdCh0KXtyZXR1cm57dHlwZTpMLnBpSSx0ZWFtSW50cm86dH19ZnVuY3Rpb24geHQodCl7cmV0dXJue3R5cGU6TC54VTMsc3BlY2lhbE5vdGljZTp0fX1mdW5jdGlvbiBFdCh0LGUpe3JldHVybiBmdW5jdGlvbihuLHIpe24oZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6TC5CVl8sY29udmVyc2F0aW9uSWQ6dH19KGUpKTt2YXIgbz1yKCkuc2Vzc2lvbjtyZXR1cm4gdC5qb2luQ29udmVyc2F0aW9uKG8sZSkudGhlbigoZnVuY3Rpb24oZSl7bihxKHQsZSwhMCxEYXRlLm5vdygpKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3JldHVybiBuKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3R5cGU6TC5XZTgsY29udmVyc2F0aW9uSWQ6dCxlcnJvcjplfX0oZSx0KSl9KSl9fX0sNzE4MTY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7QTpmdW5jdGlvbigpe3JldHVybiBzfSxVOmZ1bmN0aW9uKCl7cmV0dXJuIGN9fSk7dmFyIHIsbz1uKDg4MTE0KSxpPW4oOTQyMTQpLGE9big2Njg1NCksdT0zZTQ7ZnVuY3Rpb24gcyh0LGUpe3ZhciBuLHM9dC5wYXJ0cy5zbGljZSgtMSlbMF07aWYoImdlbmVyaWNIYW5kb2ZmIj09PShudWxsPT1zP3ZvaWQgMDpzLm1lc3NhZ2VUeXBlKSYmbnVsbCE9KG49cy5hdXRob3IpJiZuLmlzQm90JiYhKERhdGUubm93KCktcy5jcmVhdGVkQXQuZ2V0VGltZSgpPnUpKWlmKCJqYXZhc2NyaXB0Ij09PXMuZXZlbnREYXRhLmhhbmRvZmZUeXBlJiZyKXt2YXIgYz17dHJhbnNjcmlwdDpzLmV2ZW50RGF0YS50cmFuc2NyaXB0LGNvbnZlcnNhdGlvbklkOnMuZXZlbnREYXRhLmNvbnZlcnNhdGlvbklkfSxsPXI7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gbChjKX0pLDEwMCksZSgoMCxpLk11KSgpKSxlKCgwLG8ubSkoImhpZGUiKSl9ZWxzZSBpZigidXJsIj09PXMuZXZlbnREYXRhLmhhbmRvZmZUeXBlJiZzLmV2ZW50RGF0YS5oYW5kb2ZmVXJsKXRyeXt2YXIgZixkPW5ldyBVUkwocy5ldmVudERhdGEuaGFuZG9mZlVybCk7aWYoImh0dHBzOiIhPT1kLnByb3RvY29sKXJldHVybjtudWxsPT0oZj0oMCxhLiQpKCkpfHxmLmxvY2F0aW9uLmFzc2lnbihkLmhyZWYpfWNhdGNoKHQpe3JldHVybn19ZnVuY3Rpb24gYyh0KXtyPXR9fSw1NDc4ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtBOTpmdW5jdGlvbigpe3JldHVybiBDfSxLTzpmdW5jdGlvbigpe3JldHVybiB4fSxNdjpmdW5jdGlvbigpe3JldHVybiBffSxVdzpmdW5jdGlvbigpe3JldHVybiBTfSxfQzpmdW5jdGlvbigpe3JldHVybiBkfSxsUzpmdW5jdGlvbigpe3JldHVybiBwfSxwSzpmdW5jdGlvbigpe3JldHVybiBnfSx4SjpmdW5jdGlvbigpe3JldHVybiBFfSx4YjpmdW5jdGlvbigpe3JldHVybiB3fX0pO3ZhciByPW4oNTc1MjApLG89big0MDE4KSxpPW4oMTQ1NDApLGE9big2NjI3NCksdT1uKDM4MjUzKTtmdW5jdGlvbiBzKHQpe3JldHVybiBzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxzKHQpfWZ1bmN0aW9uIGMoKXtjPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciB0LGU9e30sbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLG4pe3RbZV09bi52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxhPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIix1PWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsbD1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gZih0LGUsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtmKHt9LCIiKX1jYXRjaCh0KXtmPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1ufX1mdW5jdGlvbiBkKHQsZSxuLHIpe3ZhciBpPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgYj9lOmIsYT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBqKHJ8fFtdKTtyZXR1cm4gbyhhLCJfaW52b2tlIix7dmFsdWU6SSh0LG4sdSl9KSxhfWZ1bmN0aW9uIHAodCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX1lLndyYXA9ZDt2YXIgaD0ic3VzcGVuZGVkU3RhcnQiLHY9InN1c3BlbmRlZFlpZWxkIix5PSJleGVjdXRpbmciLGc9ImNvbXBsZXRlZCIsbT17fTtmdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIHcoKXt9ZnVuY3Rpb24gXygpe312YXIgUz17fTtmKFMsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgeD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsRT14JiZ4KHgoUChbXSkpKTtFJiZFIT09biYmci5jYWxsKEUsYSkmJihTPUUpO3ZhciBDPV8ucHJvdG90eXBlPWIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoUyk7ZnVuY3Rpb24gTyh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2YodCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQSh0LGUpe2Z1bmN0aW9uIG4obyxpLGEsdSl7dmFyIGM9cCh0W29dLHQsaSk7aWYoInRocm93IiE9PWMudHlwZSl7dmFyIGw9Yy5hcmcsZj1sLnZhbHVlO3JldHVybiBmJiYib2JqZWN0Ij09cyhmKSYmci5jYWxsKGYsIl9fYXdhaXQiKT9lLnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24odCl7bC52YWx1ZT10LGEobCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShjLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gSShlLG4scil7dmFyIG89aDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09eSl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT1nKXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1rKHUscik7aWYocyl7aWYocz09PW0pY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09aCl0aHJvdyBvPWcsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPXk7dmFyIGM9cChlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP2c6dixjLmFyZz09PW0pY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz1nLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gayhlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsayhlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSxtO3ZhciBpPXAobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCxtO3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCxtKTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLG0pfWZ1bmN0aW9uIEwodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gVCh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gaih0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEwsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKHMoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gdy5wcm90b3R5cGU9XyxvKEMsImNvbnN0cnVjdG9yIix7dmFsdWU6Xyxjb25maWd1cmFibGU6ITB9KSxvKF8sImNvbnN0cnVjdG9yIix7dmFsdWU6dyxjb25maWd1cmFibGU6ITB9KSx3LmRpc3BsYXlOYW1lPWYoXyxsLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09d3x8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsXyk6KHQuX19wcm90b19fPV8sZih0LGwsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQyksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sTyhBLnByb3RvdHlwZSksZihBLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1BLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQShkKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LE8oQyksZihDLGwsIkdlbmVyYXRvciIpLGYoQyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGYoQywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1QLGoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpqLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChUKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsbSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSxtfSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLFQobiksbX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztUKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpQKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCksbX19LGV9ZnVuY3Rpb24gbCh0LGUsbixyLG8saSxhKXt0cnl7dmFyIHU9dFtpXShhKSxzPXUudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbih0KX11LmRvbmU/ZShzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIGYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7bChpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7bChpLHIsbyxhLHUsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9fWZ1bmN0aW9uIGQoKXtyZXR1cm4gcCh1LkF5LCJtZXNzZW5nZXJQcmVmZXRjaFNwYWNlRGF0YSIpfWZ1bmN0aW9uIHAodCxlLG4saSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSJ1bmtub3duIiksdm9pZCAwPT09biYmKG49MSksdm9pZCAwPT09aSYmKGk9MTApLGYoYygpLm1hcmsoKGZ1bmN0aW9uIGEodSxzKXt2YXIgbCxmLGQscCxnO3JldHVybiBjKCkud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIHUoaCgpKSxsPXMoKSxmPWwuc2Vzc2lvbixkPWwuYXBwLGEucHJldj0zLGEubmV4dD02LHQuZ2V0Q29udmVyc2F0aW9ucyhmLHtzb3VyY2U6ZSxwYWdlOm4scGVyUGFnZTppLHNlbGZTZXJ2ZVN1Z2dlc3Rpb25zTWF0Y2g6ZC5zZWxmU2VydmVTdWdnZXN0aW9uc01hdGNofSk7Y2FzZSA2OnJldHVybiBwPWEuc2VudCwoZz1wLmNvbnZlcnNhdGlvbnMpLmZvckVhY2goKGZ1bmN0aW9uKGUpeygwLG8uSHApKGUpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3UoKDAsci5fRCkodCxlKSl9KSl9KSksdShTKGcpKSx1KHYocCkpLGEuYWJydXB0KCJyZXR1cm4iLGcpO2Nhc2UgMTQ6cmV0dXJuIGEucHJldj0xNCxhLnQwPWEuY2F0Y2goMyksdSh5KHZvaWQgMCkpLGEuYWJydXB0KCJyZXR1cm4iLFtdKTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gYS5zdG9wKCl9fSksYSxudWxsLFtbMywxNF1dKX0pKSl9ZnVuY3Rpb24gaCgpe3JldHVybnt0eXBlOmEuT05LfX1mdW5jdGlvbiB2KHQpe3JldHVybnt0eXBlOmEubUdYLGNvbnZlcnNhdGlvbnM6dH19ZnVuY3Rpb24geSh0KXtyZXR1cm57dHlwZTphLngwNixlcnJvcjp0fX1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4scil7bihtKGUpKTt2YXIgbz1yKCkuc2Vzc2lvbjtyZXR1cm4gdC5kaXNtaXNzTm90aWZpY2F0aW9ucyhvLGUpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG4oYihlKSl9KSl9fWZ1bmN0aW9uIG0odCl7cmV0dXJue3R5cGU6YS5zVVMsY29udmVyc2F0aW9uSWRzOnR9fWZ1bmN0aW9uIGIodCl7cmV0dXJue3R5cGU6YS5naEgsY29udmVyc2F0aW9uSWRzOnR9fWZ1bmN0aW9uIHcodCl7cmV0dXJue3R5cGU6YS55cWssc2Nyb2xsUG9zaXRpb246dH19ZnVuY3Rpb24gXyh0KXtyZXR1cm57dHlwZTphLmZqbSxjb252ZXJzYXRpb25JZDp0fX1mdW5jdGlvbiBTKHQpe3JldHVybiBmdW5jdGlvbihlKXt0JiZ0LmZvckVhY2goKGZ1bmN0aW9uKHQpeygwLG8uWE4pKHQpJiZ0LnJlYWQmJmUoKDAsaS5wKSh0LmlkKSl9KSl9fWZ1bmN0aW9uIHgodCl7cmV0dXJue3R5cGU6YS5XZnAsb3BlbkluYm91bmRDb252ZXJzYXRpb25JZHM6dH19ZnVuY3Rpb24gRSh0LGUpe3JldHVybnt0eXBlOmEudnlQLGNvbnZlcnNhdGlvbklkOnQsdGl0bGU6ZSx0aXRsZU9yaWdpbjoiYWkifX1mdW5jdGlvbiBDKHQsZSl7cmV0dXJue3R5cGU6YS5LSF8sY29udmVyc2F0aW9uSWQ6dCxxdWV1ZVBvc2l0aW9uVGV4dDplfX19LDY5MjY5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0U6ZnVuY3Rpb24oKXtyZXR1cm4gb30seTpmdW5jdGlvbigpe3JldHVybiBpfX0pO3ZhciByPW4oNjYyNzQpO2Z1bmN0aW9uIG8odCl7cmV0dXJue3R5cGU6ci5XRXgsY3VzdG9taXphdGlvbkF0dHJpYnV0ZXM6dH19ZnVuY3Rpb24gaSh0KXtyZXR1cm57dHlwZTpyLlBZVCxjdXN0b21pemF0aW9uQXR0cmlidXRlczp0fX19LDE0NTQwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse3A6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgcj1uKDY2Mjc0KSxvPWZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOnIuUHJxLGNvbnZlcnNhdGlvbklkOnR9fX0sNzUxMjE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7SDpmdW5jdGlvbigpe3JldHVybiBvfX0pO3ZhciByPW4oNjYyNzQpO2Z1bmN0aW9uIG8odCl7cmV0dXJue3R5cGU6ci5LZTgsdGhlbWVNb2RlOnR9fX0sNTE2Njk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7QVg6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sTUc6ZnVuY3Rpb24oKXtyZXR1cm4gX30sTjc6ZnVuY3Rpb24oKXtyZXR1cm4gU30sX0w6ZnVuY3Rpb24oKXtyZXR1cm4gYn0sYU46ZnVuY3Rpb24oKXtyZXR1cm4gd319KTt2YXIgcj1uKDE3ODMzKSxvPW4ubihyKSxpPW4oNDYwNSksYT1uKDM4Mjg1KSx1PW4oNzExMCkscz1uKDY5NzQ0KSxjPW4oMTgzOTkpLGw9big2NjI3NCksZj1uKDI4ODI0KTtmdW5jdGlvbiBkKHQpe3JldHVybiBkPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxkKHQpfWZ1bmN0aW9uIHAoKXtwPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciB0LGU9e30sbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLG4pe3RbZV09bi52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxhPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIix1PWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyh0LGUsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtjKHt9LCIiKX1jYXRjaCh0KXtjPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1ufX1mdW5jdGlvbiBsKHQsZSxuLHIpe3ZhciBpPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgYj9lOmIsYT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBqKHJ8fFtdKTtyZXR1cm4gbyhhLCJfaW52b2tlIix7dmFsdWU6SSh0LG4sdSl9KSxhfWZ1bmN0aW9uIGYodCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX1lLndyYXA9bDt2YXIgaD0ic3VzcGVuZGVkU3RhcnQiLHY9InN1c3BlbmRlZFlpZWxkIix5PSJleGVjdXRpbmciLGc9ImNvbXBsZXRlZCIsbT17fTtmdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIHcoKXt9ZnVuY3Rpb24gXygpe312YXIgUz17fTtjKFMsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgeD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsRT14JiZ4KHgoUChbXSkpKTtFJiZFIT09biYmci5jYWxsKEUsYSkmJihTPUUpO3ZhciBDPV8ucHJvdG90eXBlPWIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoUyk7ZnVuY3Rpb24gTyh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2ModCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQSh0LGUpe2Z1bmN0aW9uIG4obyxpLGEsdSl7dmFyIHM9Zih0W29dLHQsaSk7aWYoInRocm93IiE9PXMudHlwZSl7dmFyIGM9cy5hcmcsbD1jLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09ZChsKSYmci5jYWxsKGwsIl9fYXdhaXQiKT9lLnJlc29sdmUobC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUobCkudGhlbigoZnVuY3Rpb24odCl7Yy52YWx1ZT10LGEoYyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShzLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gSShlLG4scil7dmFyIG89aDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09eSl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT1nKXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1rKHUscik7aWYocyl7aWYocz09PW0pY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09aCl0aHJvdyBvPWcsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPXk7dmFyIGM9ZihlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP2c6dixjLmFyZz09PW0pY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz1nLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gayhlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsayhlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSxtO3ZhciBpPWYobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCxtO3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCxtKTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLG0pfWZ1bmN0aW9uIEwodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gVCh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gaih0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEwsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKGQoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gdy5wcm90b3R5cGU9XyxvKEMsImNvbnN0cnVjdG9yIix7dmFsdWU6Xyxjb25maWd1cmFibGU6ITB9KSxvKF8sImNvbnN0cnVjdG9yIix7dmFsdWU6dyxjb25maWd1cmFibGU6ITB9KSx3LmRpc3BsYXlOYW1lPWMoXyxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09d3x8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsXyk6KHQuX19wcm90b19fPV8sYyh0LHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQyksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sTyhBLnByb3RvdHlwZSksYyhBLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1BLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQShsKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LE8oQyksYyhDLHMsIkdlbmVyYXRvciIpLGMoQyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMoQywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1QLGoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpqLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChUKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsbSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSxtfSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLFQobiksbX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztUKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpQKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCksbX19LGV9ZnVuY3Rpb24gaCh0LGUsbixyLG8saSxhKXt0cnl7dmFyIHU9dFtpXShhKSxzPXUudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbih0KX11LmRvbmU/ZShzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIHYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7aChpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7aChpLHIsbyxhLHUsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9fXZhciB5PW8oKSgiaW50ZXJjb20uYWN0aW9ucy5pbmJvdW5kLXRyaWdnZXJzIik7ZnVuY3Rpb24gZyh0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPSExKSx2KHAoKS5tYXJrKChmdW5jdGlvbiByKG8sbCl7dmFyIGQsaCx2LGcsYix3LF8sUyx4LEUsQyxPLEEsSSxrLEw7cmV0dXJuIHAoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gaD1udWxsPT0oZD1sKCkubmV3Q29udmVyc2F0aW9uKXx8bnVsbD09KGQ9ZC5jb21wb3NlclN0YXRlKT92b2lkIDA6ZC52aXNpYmxlLHIucHJldj0xLGc9bCgpLGI9Zy5hcHAsdz1nLnNlc3Npb24sXz1nLnVzZXIsUz1nLm5ld0NvbnZlcnNhdGlvbix4PWcuYXBwLnVzZXJQYXJ0VXhTdHlsZSxFPSgwLGEubCkoKSxDPXtjbGllbnRJZDpFLGJvZHk6KDAsdS4kQikoZS50ZXh0KSxjcmVhdGVkQXQ6bmV3IERhdGUsY29tcG9zZXJTdWdnZXN0aW9uSXRlbTplLHV4U3R5bGU6eH0sTz1udWxsPT1fP3ZvaWQgMDpfLnVzZXJTdXBwbGllZEVtYWlsLEE9KDAsZi4kKShnKSxJPShudWxsPT1BP3ZvaWQgMDpBLndlbGNvbWVQYXJ0cyl8fFtdLG8obShlKSksbygoMCxpLmpXKShDLG4sTyxEYXRlLm5vdygpLEkpKSwoMCxzLk0yKSgiaW5ib3VuZFN1Z2dlc3Rpb25Db252ZXJzYXRpb25DcmVhdGlvbiIsRSx7Y3VzdG9tX2JvdF9jb250cm9sX2lkOm51bGw9PWU/dm9pZCAwOmUudXVpZH0pLGs9bnVsbD09X3x8bnVsbD09KHY9Xy5jdXN0b21BdHRyaWJ1dGVzKT92b2lkIDA6di5uZXdfY29udmVyc2F0aW9uX2F0dHJpYnV0ZXMsci5uZXh0PTE1LHQuc3RhcnRDb252ZXJzYXRpb25Gcm9tU3VnZ2VzdGlvbih3LHtzdWdnZXN0aW9uVXVpZDplLnV1aWQsY2xpZW50QXNzaWduZWRVVUlEOkUsc2VsZlNlcnZlU3VnZ2VzdGlvbnNNYXRjaDpiLnNlbGZTZXJ2ZVN1Z2dlc3Rpb25zTWF0Y2gsbWVzc2VuZ2VyT3BlblJlcXVlc3RJZDpiLm1lc3Nlbmdlck9wZW5SZXF1ZXN0SWQsYXJ0aWNsZVVybDpTLmFydGljbGVVcmwsY3VzdG9tQXR0cmlidXRlczprfSk7Y2FzZSAxNTpMPXIuc2VudCwoMCxzLlpKKSgiaW5ib3VuZFN1Z2dlc3Rpb25Db252ZXJzYXRpb25DcmVhdGlvbiIsRSx7b3JpZ2luOiJjb252ZXJzYXRpb25fY3JlYXRlZCIsY29udmVyc2F0aW9uX2lkOm51bGw9PUw/dm9pZCAwOkwuaWR9KSxvKCgwLGkuSE4pKEwsbnVsbCxudWxsLERhdGUubm93KCksImN1c3RvbV9ib3QiKSksbygoMCxjLnApKEwuaWQsITApKSxyLm5leHQ9MjU7YnJlYWs7Y2FzZSAyMTpyLnByZXY9MjEsci50MD1yLmNhdGNoKDEpLG8oKDAsaS53aikobnVsbCkpLHkoIkNvdWxkbnQgc3RhcnQgY29udmVyc2F0aW9uIGZyb20gc3VnZ2VzdGlvbiBkdWUgdG8gZT0iK3IudDApO2Nhc2UgMjU6cmV0dXJuIHIucHJldj0yNSxoJiZvKCgwLGkuTiQpKHt2aXNpYmxlOiEwfSkpLHIuZmluaXNoKDI1KTtjYXNlIDI4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscixudWxsLFtbMSwyMSwyNSwyOF1dKX0pKSl9ZnVuY3Rpb24gbSh0KXtpZigiY2xvc2UtY29tcG9zZXIiPT09dC5wcmVBY3Rpb24pcmV0dXJuKDAsaS5OJCkoe3Zpc2libGU6ITF9KTt0aHJvdyJJbnZhbGlkIFBSRSBBQ1RJT04gdHlwZSBmb3Igc3VnZ2VzdGlvbj0iK3QucHJlQWN0aW9ufWZ1bmN0aW9uIGIodCl7cmV0dXJue3R5cGU6bC5ZZE0sY29tcG9zZXJTdWdnZXN0aW9uczp0fX1mdW5jdGlvbiB3KHQpe3JldHVybnt0eXBlOmwuS1UxLGNvbXBvc2VyU3VnZ2VzdGlvbnM6dH19ZnVuY3Rpb24gXyh0KXtyZXR1cm57dHlwZTpsLnJNdyxjb21wb3NlclN1Z2dlc3Rpb25zOnR9fWZ1bmN0aW9uIFModCl7cmV0dXJue3R5cGU6bC5EM1IscnVsZXNldElkOnR9fX0sMzM3NTU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7SlM6ZnVuY3Rpb24oKXtyZXR1cm4gdX0samQ6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sclE6ZnVuY3Rpb24oKXtyZXR1cm4gaX19KTt2YXIgcj1uKDM4MjUzKSxvPW4oNjYyNzQpO2Z1bmN0aW9uIGkodCl7dmFyIGU9dC5hY3RpdmVTdWJzY3JpcHRpb24sbj10LnVzZXJIYXNoVmVyaWZpZWQscj10LnNlY3VyZUluc3RhbGxWMixpPXQubWVzc2VuZ2VyRW5hYmxlZEZvclZpc2l0b3JzLGE9dC5tZXNzZW5nZXJFbmFibGVkRm9yVXNlcnM7cmV0dXJue3R5cGU6by5CdWIsYWN0aXZlU3Vic2NyaXB0aW9uOmUsdXNlckhhc2hWZXJpZmllZDpuLHNlY3VyZUluc3RhbGxWMjpyLG1lc3NlbmdlckVuYWJsZWRGb3JWaXNpdG9yczppLG1lc3NlbmdlckVuYWJsZWRGb3JVc2VyczphfX1mdW5jdGlvbiBhKCl7cmV0dXJue3R5cGU6by4kb0J9fWZ1bmN0aW9uIHUoKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgbj1lKCkuc2Vzc2lvbjtyZXR1cm4gci5BeS5kaXNhYmxlSW5zdGFsbE1vZGUobikudGhlbigoZnVuY3Rpb24oKXt0KGEoKSl9KSl9fX0sMjk5NDE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7Rmg6ZnVuY3Rpb24oKXtyZXR1cm4gc30sWFg6ZnVuY3Rpb24oKXtyZXR1cm4gdX0salY6ZnVuY3Rpb24oKXtyZXR1cm4gY30sbmM6ZnVuY3Rpb24oKXtyZXR1cm4gZn0seVE6ZnVuY3Rpb24oKXtyZXR1cm4gZH19KTt2YXIgcixvLGk9big2NjI3NCksYT02ZTM7ZnVuY3Rpb24gdSgpe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBuPWUoKS5sYXVuY2hlckRpc2NvdmVyeU1vZGUscj1uLmhhc0Rpc2NvdmVyZWRMYXVuY2hlcixvPW4uaXNMYXVuY2hlckRpc2NvdmVyeU1vZGVPcGVuaW5nLHU9bi5pc0xhdW5jaGVyRGlzY292ZXJ5TW9kZUNsb3Npbmc7cnx8b3x8dXx8KHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dCh7dHlwZTppLnJFWH0pfSksYSksbCh0KSl9fWZ1bmN0aW9uIHMoKXtyJiZjbGVhclRpbWVvdXQociksbyYmY2xlYXJUaW1lb3V0KG8pfWZ1bmN0aW9uIGMoKXtyZXR1cm4gZnVuY3Rpb24odCl7bCh0KX19dmFyIGw9ZnVuY3Rpb24odCl7cj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiB0KHt0eXBlOmkubm5rfSl9KSwxM2UzKSxvPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIHQoZCgpKX0pLDEzNzAwKX07ZnVuY3Rpb24gZigpe3JldHVybnt0eXBlOmkuVVk1fX1mdW5jdGlvbiBkKCl7cmV0dXJue3R5cGU6aS5UOTJ9fX0sNDUxOTk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7bzpmdW5jdGlvbigpe3JldHVybiByfX0pO3ZhciByPSgwLG4oMTU0NTIpLlZQKSgiYXBwL3NldFBlbmRpbmdMYXVuY2hlckZvY3VzIil9LDg4MTE0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse206ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgcj1uKDY2Mjc0KTtmdW5jdGlvbiBvKHQpe3JldHVybnt0eXBlOnIua2ZmLGxhdW5jaGVyRW5hYmxlZE92ZXJyaWRlOnR9fX0sNDUzODc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7WTY6ZnVuY3Rpb24oKXtyZXR1cm4geX0sRzQ6ZnVuY3Rpb24oKXtyZXR1cm4gdn0sWHo6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sZFQ6ZnVuY3Rpb24oKXtyZXR1cm4gbX19KTt2YXIgcj1uKDY2Mjc0KSxvPW4oMzgyNTMpLGk9big0NjA1KSxhPW4oOTQyMTQpLHU9bigxODM5OSkscz1uKDE3ODMzKSxjPW4ubihzKSgpKCJwb3N0czpkZWJ1ZyIpLGw9big2OTc0NCk7ZnVuY3Rpb24gZih0KXtyZXR1cm4gZj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sZih0KX1mdW5jdGlvbiBkKCl7ZD1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gbCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGI/ZTpiLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgaihyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOkkodCxuLHUpfSksYX1mdW5jdGlvbiBwKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWw7dmFyIGg9InN1c3BlbmRlZFN0YXJ0Iix2PSJzdXNwZW5kZWRZaWVsZCIseT0iZXhlY3V0aW5nIixnPSJjb21wbGV0ZWQiLG09e307ZnVuY3Rpb24gYigpe31mdW5jdGlvbiB3KCl7fWZ1bmN0aW9uIF8oKXt9dmFyIFM9e307YyhTLGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIHg9T2JqZWN0LmdldFByb3RvdHlwZU9mLEU9eCYmeCh4KFAoW10pKSk7RSYmRSE9PW4mJnIuY2FsbChFLGEpJiYoUz1FKTt2YXIgQz1fLnByb3RvdHlwZT1iLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFMpO2Z1bmN0aW9uIE8odCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEEodCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPXAodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGw9Yy52YWx1ZTtyZXR1cm4gbCYmIm9iamVjdCI9PWYobCkmJnIuY2FsbChsLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCxhLHUpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LGEsdSl9KSk6ZS5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxhKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCxhLHUpfSkpfXUocy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIEkoZSxuLHIpe3ZhciBvPWg7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PXkpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09Zyl7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9ayh1LHIpO2lmKHMpe2lmKHM9PT1tKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWgpdGhyb3cgbz1nLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz15O3ZhciBjPXAoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT9nOnYsYy5hcmc9PT1tKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89ZyxyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIGsoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LGsoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksbTt2YXIgaT1wKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwsbTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwsbSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCxtKX1mdW5jdGlvbiBMKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIFQodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIGoodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChMLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW2FdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGk9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBpLm5leHQ9aX19dGhyb3cgbmV3IFR5cGVFcnJvcihmKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIHcucHJvdG90eXBlPV8sbyhDLCJjb25zdHJ1Y3RvciIse3ZhbHVlOl8sY29uZmlndXJhYmxlOiEwfSksbyhfLCJjb25zdHJ1Y3RvciIse3ZhbHVlOncsY29uZmlndXJhYmxlOiEwfSksdy5kaXNwbGF5TmFtZT1jKF8scywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LF8pOih0Ll9fcHJvdG9fXz1fLGModCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEMpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LE8oQS5wcm90b3R5cGUpLGMoQS5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QSxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEEobCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxPKEMpLGMoQyxzLCJHZW5lcmF0b3IiKSxjKEMsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKEMsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9UCxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goVCksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLG0pOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksbX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxUKG4pLG19fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7VChuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLG19fSxlfWZ1bmN0aW9uIHAodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBoKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpe3AoaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe3AoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX1mdW5jdGlvbiB2KHQsZSl7cmV0dXJue3R5cGU6ci52elAsY29udmVyc2F0aW9uSWQ6dCxwYXJ0SWQ6ZX19ZnVuY3Rpb24geSgpe3JldHVybnt0eXBlOnIubEx9fWZ1bmN0aW9uIGcodCxlKXtyZXR1cm57dHlwZTpyLlIzVSxjb252ZXJzYXRpb25JZDp0LHBhcnRJZDplfX1mdW5jdGlvbiBtKHQpe3JldHVybiBoKGQoKS5tYXJrKChmdW5jdGlvbiBlKG4scil7dmFyIHMsZixwLGg7cmV0dXJuIGQoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gcz1yKCksZj1zLnNlc3Npb24sZS5wcmV2PTEsYygiU3RhcnRpbmcgcG9zdCBwcmV2aWV3LCBwb3N0X2lkPSIsdCksZS5uZXh0PTUsby5BeS5mZXRjaFBvc3RQcmV2aWV3KGYsdCk7Y2FzZSA1OnA9ZS5zZW50LGg9KDAsby55cykocCksYygiY29udmVyc2F0aW9uIElEIixoLmlkKSxuKCgwLGkuRm8pKG8uQXksaCwhMCxEYXRlLm5vdygpKSksYygiZGVsaXZlcnkgb3B0aW9uIixwLmNvbnZlcnNhdGlvbl9tZXNzYWdlLmRlbGl2ZXJ5X29wdGlvbiksImZ1bGwiIT09cC5jb252ZXJzYXRpb25fbWVzc2FnZS5kZWxpdmVyeV9vcHRpb24mJihuKCgwLHUucCkoaC5pZCkpLG4oKDAsYS5xeSkoKSkpLGUubmV4dD0xNjticmVhaztjYXNlIDEzOmUucHJldj0xMyxlLnQwPWUuY2F0Y2goMSksKDAsbC51bykoIkNvdWxkIG5vdCBmZXRjaCBwb3N0IGR1ZSB0byBlPSIrZS50MCk7Y2FzZSAxNjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzEsMTNdXSl9KSkpfX0sOTUzMTk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7UzpmdW5jdGlvbigpe3JldHVybiBhfX0pO3ZhciByLG89big2NjI3NCksaT01ZTM7ZnVuY3Rpb24gYSh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgYT17dHlwZTpvLkJRVCxwYXlsb2FkOnthbGVydFR5cGU6dCxhbGVydFBheWxvYWQ6ZX19O24oYSksciYmY2xlYXJUaW1lb3V0KHIpLHI9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtuKHt0eXBlOm8ub2V3fSl9KSxpKX19fSw1NzUyMDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtfRDpmdW5jdGlvbigpe3JldHVybiBhfX0pO3ZhciByPW4oMzg5OSksbz1uKDQ1NDk2KSxpPW4oNjYyNzQpLGE9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBmdW5jdGlvbihpLGEpe3ZhciBmPWEoKS5tZXNzZW5nZXJDYXJkcyxkPW4mJmYmJmZbZS51cmldLHA9KDAsby5reCkoZSk7aWYoaShzKHApKSxkJiZ1KGQuY2FyZCkmJiFwLmNhbnZhcy5jb250ZW50JiYocC5jYW52YXM9T2JqZWN0LmFzc2lnbih7fSxwLmNhbnZhcyxkLmNhcmQuY2FudmFzKSksIXAuY2FudmFzLmNvbnRlbnQpe3ZhciBoPWEoKS5zZXNzaW9uO3JldHVybiB0LmdldE1lc3NlbmdlckNhbnZhc1dpdGhDb250ZW50KGgscC5jYW52YXMuaWQscC51cmkpLnRoZW4oKGZ1bmN0aW9uKHQpe2koYyhwLHQuY29udGVudCkpfSkpLmNhdGNoKChmdW5jdGlvbih0KXtpKGwocCkpLCgwLHIualApKCJUaGVyZSB3YXMgYSBwcm9ibGVtIHJldHJpZXZpbmcgdGhlIGxpdmUgY2FyZCBjb250ZW50OiAiK3QpfSkpfWkoYyhwLHAuY2FudmFzLmNvbnRlbnQpKX19LHU9ZnVuY3Rpb24odCl7cmV0dXJuISghdHx8IXQuY2FudmFzKX0scz1mdW5jdGlvbih0KXtyZXR1cm57dHlwZTppLkkwVSxjYXJkOnR9fSxjPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3R5cGU6aS5VSGQsY2FyZDp0LGNvbnRlbnQ6ZX19LGw9ZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6aS4kUmMsY2FyZDp0fX19LDU2NjAwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse3NQOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LHo4OmZ1bmN0aW9uKCl7cmV0dXJuIGN9fSk7dmFyIHI9big0NTQ5Niksbz1uKDU3NTIwKSxpPW4oOTUzMTkpLGE9big2NjI3NCksdT1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gZnVuY3Rpb24oYSx1KXt2YXIgZj11KCkuc2Vzc2lvbjtyZXR1cm4gYShzKGUsbikpLHQuc3VibWl0TWVzc2VuZ2VyQ2FyZEFjdGlvbihmLGUsbixyKS50aGVuKChmdW5jdGlvbihlKXthKGMoZSkpLGEoKDAsby5fRCkodCxlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7YShsKGUsbikpLGEoKDAsaS5TKSgiTWVzc2VuZ2VyQ2FyZFN1Ym1pdEVycm9yIix7Y2FyZFVyaTplLGNvbXBvbmVudElkOm4saW5wdXRWYWx1ZXM6cn0pKX0pKX19LHM9ZnVuY3Rpb24odCxlKXtyZXR1cm57dHlwZTphLmRJZixjYXJkVXJpOnQsY29tcG9uZW50SWQ6ZX19LGM9ZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6YS5aQnosY2FyZDooMCxyLmt4KSh0KX19LGw9ZnVuY3Rpb24odCxlKXtyZXR1cm57dHlwZTphLmtTeSxjYXJkVXJpOnQsY29tcG9uZW50SWQ6ZX19fSw3NDQ5MDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtxOmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSk7dmFyIHI9big1MTg4Myksbz1uKDI2NzAzKSxpPW4oNjYyNzQpO2Z1bmN0aW9uIGEodCxlLG4pe3JldHVybiBmdW5jdGlvbihhKXthKCgwLHIuVkMpKCIvIitvLlpoLmlkKyIvc2hlZXQiKSksYSh7dHlwZTppLnBTSyx1cmw6dCxjYXJkVXJpOmUsY29tcG9uZW50SWQ6bn0pfX19LDM4NDk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7R246ZnVuY3Rpb24oKXtyZXR1cm4gT30sSjpmdW5jdGlvbigpe3JldHVybiBFfSxRSzpmdW5jdGlvbigpe3JldHVybiBTfSxTUTpmdW5jdGlvbigpe3JldHVybiB3fSxnbDpmdW5jdGlvbigpe3JldHVybiBDfSxpdTpmdW5jdGlvbigpe3JldHVybiB4fSxsVTpmdW5jdGlvbigpe3JldHVybiBifSx3djpmdW5jdGlvbigpe3JldHVybiBtfX0pO3ZhciByPW4oNTY2MDApLG89big1NzUyMCksaT1uKDkzNDY0KSxhPW4oNDA3NzApLHU9big1MTM5Nykscz1uKDcxMzA2KSxjPW4oOTQyMTQpLGw9big2OTc0NCksZj1uKDk1MzE5KSxkPW4oNDUzODcpLHA9big1MTg4MyksaD1uKDY2Mjc0KSx2PW4oNzQ0OTApLHk9bigxNDEyMCksZz1uKDY4NzYyKTtmdW5jdGlvbiBtKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dmFyIG89KGUuZGF0YXx8e30pLmludGVyY29tU2hlZXQsaT1yKCksYz0oMCxzLlhTKShpKTtpZihvKXN3aXRjaChvLnR5cGUpe2Nhc2UgdS5DOm4oQygpKTticmVhaztjYXNlIGEubSQ6bihFKCkpO2JyZWFrO2Nhc2UgYS5obzpuKEMoKSk7YnJlYWs7Y2FzZSBhLk5kOm4oUygic2hlZXRfYXBpX2Nsb3NlIikpO2JyZWFrO2Nhc2UgYS5rczppZighby5wYXlsb2FkKXJldHVybjtuKHgoby5wYXlsb2FkLnRpdGxlKSk7YnJlYWs7Y2FzZSBhLnpSOmlmKCFjKXJldHVybjtuKEUoKSksbih3KHQsby5wYXlsb2FkKSl9fX1mdW5jdGlvbiBiKHQsZSxuLHIsbyl7cmV0dXJuIGZ1bmN0aW9uKGksYSl7dmFyIHU9YSgpLHM9dS5hcHAuaXNNZXNzZW5nZXJPcGVuLGw9dS5zZXNzaW9uO3JldHVybiBzfHxpKCgwLGMua0IpKCkpLGkoKDAsdi5xKShyLGUsbikpLGkoQSgpKSxpKCgwLGQuWTYpKCkpLHQuZmV0Y2hNZXNzZW5nZXJTaGVldERhdGEobCxlLG4sbykudGhlbigoZnVuY3Rpb24odCl7aShJKHQpKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXtpKGsoKSl9KSl9fWZ1bmN0aW9uIHcodCxlKXtyZXR1cm4gZnVuY3Rpb24obixhKXt2YXIgdT1hKCksYz0oMCxzLlhTKSh1KS5jYXJkVXJpLGw9dS5zZXNzaW9uO3JldHVybiB0LnN1Ym1pdFNoZWV0KGwsYyxlKS50aGVuKChmdW5jdGlvbihlKXtuKCgwLHIuejgpKGUpKSxuKCgwLG8uX0QpKHQsZSkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0KXtyZXR1cm4gc2V0VGltZW91dCh0LDIqaS5pKX0pKX0pKS50aGVuKChmdW5jdGlvbigpe24oQygpKSxuKFMoInNoZWV0X2FwaV9zdWJtaXQiKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7bigoMCxmLlMpKCJNZXNzZW5nZXJTaGVldFN1Ym1pdEVycm9yIix7c2hlZXRWYWx1ZXM6ZX0pKX0pKX19dmFyIF89ZnVuY3Rpb24odCl7cmV0dXJuKDAsZy5zQikodCk/ImNvbnZlcnNhdGlvbiI6ImhvbWUtc2NyZWVuIn07ZnVuY3Rpb24gUyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgcixvPW4oKSxpPSgwLHMuWFMpKG8pLmNhcmRVcmksYT1udWxsPT0ocj1vLm1lc3NlbmdlckNhcmRzW2ldKT92b2lkIDA6ci5jYXJkO2lmKGEpe3ZhciB1PW8ubWVzc2VuZ2VyU2hlZXQudXJsLGM9by51c2VyLGY9KDAseS5WeSkobyksZD0oMCx5Lm9QKShvKSx2PSJzaGVldF9hcGlfc3VibWl0Ij09PXR8fCJzaGVldF9hcGlfY2xvc2UiPT09dD90Ol8oZCksZz1udWxsPT1hP3ZvaWQgMDphLm1lc3Nlbmdlcl9hcHBfaWQ7Yy5pZCYmdm9pZCAwIT09ZyYmZiYmZnVuY3Rpb24odCxlLG4scixvLGkpe2wuQXkuYnVpbGRBbmRBZGRNZXRyaWModCwiY2xvc2VkIiwibWVzc2VuZ2VyX3NoZWV0IiwibWVzc2VuZ2VyIixlLHt1cmw6bixtZXNzZW5nZXJfY2FyZF91cmk6cixtZXNzZW5nZXJfYXBwX2lkOm8sY29udmVyc2F0aW9uX2lkOml9KX0oe2lkOmMuaWR9LHYsdXx8IiIsaSxnLGYpfWUoe3R5cGU6aC5scGV9KSxlKCgwLHAuT0UpKCkpfX1mdW5jdGlvbiB4KHQpe3JldHVybnt0eXBlOmgud3daLHNoZWV0VGl0bGU6dH19ZnVuY3Rpb24gRSgpe3JldHVybnt0eXBlOmgucnpFfX1mdW5jdGlvbiBDKCl7cmV0dXJue3R5cGU6aC55U3p9fWZ1bmN0aW9uIE8odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSExKSx7dHlwZTpoLnRYUSxpc0xvYWRlZDp0fX12YXIgQT1mdW5jdGlvbigpe3JldHVybnt0eXBlOmguT1hYfX0sST1mdW5jdGlvbih0KXtyZXR1cm57dHlwZTpoLllqcixkYXRhOnR9fSxrPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6aC5IVkh9fX0sNTJlMzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSx7ZmV0Y2hOZXdDb252ZXJzYXRpb25Db250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHl9fSk7dmFyIHI9big0MTYwOSksbz1uKDY5NTA4KSxpPW4oNTE2NjkpLGE9bigyODgyNCksdT1uKDQ2MDUpLHM9bigzODI1MyksYz1uKDU3NTIwKSxsPW4oOTQyMTQpLGY9big2OTc0NCk7ZnVuY3Rpb24gZCh0KXtyZXR1cm4gZD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sZCh0KX1mdW5jdGlvbiBwKCl7cD1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gbCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGI/ZTpiLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgaihyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOkkodCxuLHUpfSksYX1mdW5jdGlvbiBmKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWw7dmFyIGg9InN1c3BlbmRlZFN0YXJ0Iix2PSJzdXNwZW5kZWRZaWVsZCIseT0iZXhlY3V0aW5nIixnPSJjb21wbGV0ZWQiLG09e307ZnVuY3Rpb24gYigpe31mdW5jdGlvbiB3KCl7fWZ1bmN0aW9uIF8oKXt9dmFyIFM9e307YyhTLGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIHg9T2JqZWN0LmdldFByb3RvdHlwZU9mLEU9eCYmeCh4KFAoW10pKSk7RSYmRSE9PW4mJnIuY2FsbChFLGEpJiYoUz1FKTt2YXIgQz1fLnByb3RvdHlwZT1iLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFMpO2Z1bmN0aW9uIE8odCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEEodCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPWYodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGw9Yy52YWx1ZTtyZXR1cm4gbCYmIm9iamVjdCI9PWQobCkmJnIuY2FsbChsLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCxhLHUpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LGEsdSl9KSk6ZS5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxhKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCxhLHUpfSkpfXUocy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIEkoZSxuLHIpe3ZhciBvPWg7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PXkpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09Zyl7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9ayh1LHIpO2lmKHMpe2lmKHM9PT1tKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWgpdGhyb3cgbz1nLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz15O3ZhciBjPWYoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT9nOnYsYy5hcmc9PT1tKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89ZyxyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIGsoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LGsoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksbTt2YXIgaT1mKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwsbTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwsbSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCxtKX1mdW5jdGlvbiBMKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIFQodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIGoodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChMLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW2FdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGk9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBpLm5leHQ9aX19dGhyb3cgbmV3IFR5cGVFcnJvcihkKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIHcucHJvdG90eXBlPV8sbyhDLCJjb25zdHJ1Y3RvciIse3ZhbHVlOl8sY29uZmlndXJhYmxlOiEwfSksbyhfLCJjb25zdHJ1Y3RvciIse3ZhbHVlOncsY29uZmlndXJhYmxlOiEwfSksdy5kaXNwbGF5TmFtZT1jKF8scywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LF8pOih0Ll9fcHJvdG9fXz1fLGModCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEMpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LE8oQS5wcm90b3R5cGUpLGMoQS5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QSxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEEobCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxPKEMpLGMoQyxzLCJHZW5lcmF0b3IiKSxjKEMsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKEMsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9UCxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goVCksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLG0pOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksbX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxUKG4pLG19fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7VChuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLG19fSxlfWZ1bmN0aW9uIGgodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiB2KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpe2goaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe2goaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX12YXIgeT0oMCxyLlM0KSgibWVzc2VuZ2VyL2ZldGNoTmV3Q29udmVyc2F0aW9uQ29udGVudCIsdihwKCkubWFyaygoZnVuY3Rpb24gdChlLG4pe3ZhciByLGQsaCx2LHksZyxtLGIsdyxfLFMseCxFLEMsTyxBO3JldHVybiBwKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIGI9bi5nZXRTdGF0ZSgpLHc9bi5kaXNwYXRjaCxfPWIuc2Vzc2lvbixTPWIuYXBwLHQucHJldj0zLHQubmV4dD02LHMuQXkuZmV0Y2hOZXdDb252ZXJzYXRpb25Db250ZW50KF8pO2Nhc2UgNjp4PXQuc2VudCx0Lm5leHQ9MTI7YnJlYWs7Y2FzZSA5OnJldHVybiB0LnByZXY9OSx0LnQwPXQuY2F0Y2goMyksdC5hYnJ1cHQoInJldHVybiIsbi5yZWplY3RXaXRoVmFsdWUodC50MCkpO2Nhc2UgMTI6aWYoeCl7dC5uZXh0PTE0O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDE0OmlmKEU9KDAsYS4kKShuLmdldFN0YXRlKCkpLEM9bnVsbCE9RSYmbnVsbCE9KG51bGw9PShyPXguY29tcG9zZXJTdWdnZXN0aW9ucyk/dm9pZCAwOnIucHJpb3JpdHkpJiZFLnByaW9yaXR5PHguY29tcG9zZXJTdWdnZXN0aW9ucy5wcmlvcml0eSwoMCxmLnNxKSgibmV3X2NvbnZlcnNhdGlvbl9wcmlvcml0eV9ndWFyZCIse2ZsYWdfZW5hYmxlZDohMCxoaWdoZXJfcHJpb3JpdHlfY2FuZGlkYXRlOkMsc3VwcHJlc3NlZDpDJiZCb29sZWFuKChudWxsPT0oZD14Lm5ld0NvbnZlcnNhdGlvblBhcnRzKT92b2lkIDA6ZC5sZW5ndGgpfHx4LmNvbXBvc2VyU3RhdGUpLGNsaWVudF9tYXRjaF9wcmlvcml0eTpudWxsIT0oaD1udWxsPT1FP3ZvaWQgMDpFLnByaW9yaXR5KT9oOm51bGwsc2VydmVyX2NvbnRlbnRfcHJpb3JpdHk6bnVsbCE9KHY9bnVsbD09KHk9eC5jb21wb3NlclN1Z2dlc3Rpb25zKT92b2lkIDA6eS5wcmlvcml0eSk/djpudWxsfSxDKSxudWxsPT0oZz14Lm5ld0NvbnZlcnNhdGlvblBhcnRzKXx8IWcubGVuZ3RofHxDKXt0Lm5leHQ9MjM7YnJlYWt9cmV0dXJuIE89eC5uZXdDb252ZXJzYXRpb25QYXJ0cy5mbGF0TWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ib2R5fSkpLEE9Ty5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiJtZXNzZW5nZXJDYXJkIj09PXQudHlwZX0pKSx0Lm5leHQ9MjIsUHJvbWlzZS5hbGwoQS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB3KCgwLGMuX0QpKHMuQXksdCwhMSkpfSkpKTtjYXNlIDIyOncoKDAsdS55USkoeC5uZXdDb252ZXJzYXRpb25QYXJ0cykpO2Nhc2UgMjM6cmV0dXJuIHgudGVhbUludHJvJiZ3KCgwLHUuUmkpKHgudGVhbUludHJvKSkseC5zcGVjaWFsTm90aWNlJiZ3KCgwLHUuaHYpKHguc3BlY2lhbE5vdGljZSkpLHguY29tcG9zZXJTdWdnZXN0aW9ucyYmdygoMCxpLmFOKSh4LmNvbXBvc2VyU3VnZ2VzdGlvbnMpKSx3KCgwLG8uaCkoeC5ib3RJbnRybykpLHcoKDAsbC5JaikobnVsbCE9KG09eC5hY2Nlc3NUb1RlYW1tYXRlRW5hYmxlZCk/bTpTLmFjY2Vzc1RvVGVhbW1hdGVFbmFibGVkLFMuc2VsZlNlcnZlU3VnZ2VzdGlvbnNNYXRjaCxTLmFjdGl2ZUFkbWlucyx4LmFjdGl2ZUJvdCkpLHguY29tcG9zZXJTdGF0ZSYmIUMmJncoKDAsdS5OJCkoeC5jb21wb3NlclN0YXRlKSksdC5hYnJ1cHQoInJldHVybiIseCk7Y2FzZSAzMDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzMsOV1dKX0pKSkse2NvbmRpdGlvbjpmdW5jdGlvbih0LGUpe3JldHVybiEhKDAsZS5nZXRTdGF0ZSkoKS5hcHAuZmVhdHVyZXMubmV3Q29udmVyc2F0aW9uSW5ib3VuZE1hdGNoaW5nfX0pfSw1MDE2MDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtMMjpmdW5jdGlvbigpe3JldHVybiB1fSxOcjpmdW5jdGlvbigpe3JldHVybiBzfSxjNjpmdW5jdGlvbigpe3JldHVybiBjfSx5YzpmdW5jdGlvbigpe3JldHVybiBsfX0pO3ZhciByPW4oMzgyNTMpLG89big2NjI3NCksaT1uKDMzMDQ4KSxhPW4oODQwMjMpO2Z1bmN0aW9uIHUoKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgbj1lKCk7aWYoISgwLGEuWGcpKG4pKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTt2YXIgaT1uLnNlc3Npb247dCh7dHlwZTpvLmtPMH0pO3ZhciB1PSgwLGEuYVApKG4pO3JldHVybiByLkF5LmZldGNoTmV3c0l0ZW1zSW5OZXdzZmVlZChpLHUpLnRoZW4oKGZ1bmN0aW9uKGUpe3QoZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6by5BVkosbmV3c0l0ZW1zOnQubmV3c0l0ZW1zLG5leHRQYWdlOnQubmV4dFBhZ2V9fShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7dChmKCkpfSkpfX1mdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPW4oKSxhPWkuc2Vzc2lvbix1PWkudXNlcjtyZXR1cm4gZSh7dHlwZTpvLkViRn0pLHIuQXkuZmV0Y2hOZXdzSXRlbXNJbk5ld3NmZWVkKGEsdS5uZXdzZmVlZElkLHQpLnRoZW4oKGZ1bmN0aW9uKHQpe2UoZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6by5raXosbmV3c0l0ZW1zOnQubmV3c0l0ZW1zLG5leHRQYWdlOnQubmV4dFBhZ2V9fSh0KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7ZShmKCkpfSkpfX1mdW5jdGlvbiBjKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIG49ZSgpLGE9bi5zZXNzaW9uLHU9bi51c2VyO3JldHVybiByLkF5Lm5vdGlmeU5ld3NmZWVkVmlzaXQoYSx1Lm5ld3NmZWVkSWQpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKGUubGFzdF92aXNpdCl7dmFyIG49KDAsaS5rVSkoZS5sYXN0X3Zpc2l0KTtuJiZ0KChyPW4se3R5cGU6by5VT0EsbmV3c2ZlZWRMYXN0VmlzaXQ6cn0pKX12YXIgcn0pKX19ZnVuY3Rpb24gbCh0KXtyZXR1cm57dHlwZTpvLmtwMyxuZXdzZmVlZElkOnR9fWZ1bmN0aW9uIGYoKXtyZXR1cm57dHlwZTpvLlpvVn19fSw5ODY4NDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHskODpmdW5jdGlvbigpe3JldHVybiBpfSxOQTpmdW5jdGlvbigpe3JldHVybiB1fSxhYjpmdW5jdGlvbigpe3JldHVybiBhfSxtSzpmdW5jdGlvbigpe3JldHVybiBzfX0pO3ZhciByPW4oNTQ3ODgpLG89big2NjI3NCk7ZnVuY3Rpb24gaSh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe3ZhciB1PWkoKS5zZXNzaW9uO3JldHVybiBuKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3R5cGU6by5reCxzZXNzaW9uOnQsdXNlclN1cHBsaWVkRW1haWw6ZX19KHUsZSkpLHQuY3JlYXRlT3JVcGRhdGVVc2VyKHUsbnVsbCxlLHZvaWQgMCwiYXBpVXBkYXRlIikudGhlbigoZnVuY3Rpb24obyl7dmFyIGk7bihhKG8sZSkpLChudWxsPT0oaT1vLnVucmVhZENvbnZlcnNhdGlvbklkcyk/dm9pZCAwOmkubGVuZ3RoKT4wJiZuKCgwLHIubFMpKHQsInVwZGF0ZVVzZXJTdXBwbGllZEVtYWlsIikpfSkpfX1mdW5jdGlvbiBhKHQsZSl7cmV0dXJue3R5cGU6by5fYlMsdXNlcjp0LHVzZXJTdXBwbGllZEVtYWlsOmV9fWZ1bmN0aW9uIHUodCxlKXtyZXR1cm4gZnVuY3Rpb24obixyKXt2YXIgaT1yKCkuc2Vzc2lvbjtyZXR1cm4gbih7dHlwZTpvLngzc30pLHQudXBkYXRlUGhvbmVOdW1iZXIoaSxlKS50aGVuKChmdW5jdGlvbigpe24oZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6by5mbjgscGhvbmVOdW1iZXI6dH19KGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7dmFyIGU7dCYmKGU9SlNPTi5wYXJzZSh0KS5tZXNzYWdlKSxuKGZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOm8uV0VpLG1lc3NhZ2U6dH19KGUpKX0pKX19ZnVuY3Rpb24gcygpe3JldHVybnt0eXBlOm8uQWc3fX19LDcxNjIwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse2I6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgcj1uKDY2Mjc0KTtmdW5jdGlvbiBvKHQpe3JldHVybnt0eXBlOnIudU5ELGhpZGU6dH19fSw0Nzg4MzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHskRDpmdW5jdGlvbigpe3JldHVybiB2fSxaeTpmdW5jdGlvbigpe3JldHVybiBofX0pO3ZhciByPW4oMzgyNTMpLG89big2NjI3NCksaT1uKDQ2MDUpLGE9big3MTEwKSx1PW4oMzgyODUpO2Z1bmN0aW9uIHModCl7cmV0dXJuIHM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHModCl9ZnVuY3Rpb24gYygpe2M9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixsPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBmKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Yoe30sIiIpfWNhdGNoKHQpe2Y9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGQodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBiP2U6YixhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IGoocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpJKHQsbix1KX0pLGF9ZnVuY3Rpb24gcCh0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1kO3ZhciBoPSJzdXNwZW5kZWRTdGFydCIsdj0ic3VzcGVuZGVkWWllbGQiLHk9ImV4ZWN1dGluZyIsZz0iY29tcGxldGVkIixtPXt9O2Z1bmN0aW9uIGIoKXt9ZnVuY3Rpb24gdygpe31mdW5jdGlvbiBfKCl7fXZhciBTPXt9O2YoUyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciB4PU9iamVjdC5nZXRQcm90b3R5cGVPZixFPXgmJngoeChQKFtdKSkpO0UmJkUhPT1uJiZyLmNhbGwoRSxhKSYmKFM9RSk7dmFyIEM9Xy5wcm90b3R5cGU9Yi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShTKTtmdW5jdGlvbiBPKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Zih0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBBKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgYz1wKHRbb10sdCxpKTtpZigidGhyb3ciIT09Yy50eXBlKXt2YXIgbD1jLmFyZyxmPWwudmFsdWU7cmV0dXJuIGYmJiJvYmplY3QiPT1zKGYpJiZyLmNhbGwoZiwiX19hd2FpdCIpP2UucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShmKS50aGVuKChmdW5jdGlvbih0KXtsLnZhbHVlPXQsYShsKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KGMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBJKGUsbixyKXt2YXIgbz1oO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT15KXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PWcpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPWsodSxyKTtpZihzKXtpZihzPT09bSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1oKXRocm93IG89ZyxyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289eTt2YXIgYz1wKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/Zzp2LGMuYXJnPT09bSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPWcsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBrKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxrKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLG07dmFyIGk9cChvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLG07dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLG0pOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwsbSl9ZnVuY3Rpb24gTCh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBUKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBqKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goTCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IocyhlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiB3LnByb3RvdHlwZT1fLG8oQywiY29uc3RydWN0b3IiLHt2YWx1ZTpfLGNvbmZpZ3VyYWJsZTohMH0pLG8oXywiY29uc3RydWN0b3IiLHt2YWx1ZTp3LGNvbmZpZ3VyYWJsZTohMH0pLHcuZGlzcGxheU5hbWU9ZihfLGwsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT13fHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxfKToodC5fX3Byb3RvX189XyxmKHQsbCwiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShDKSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxPKEEucHJvdG90eXBlKSxmKEEucHJvdG90eXBlLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUEsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBBKGQodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sTyhDKSxmKEMsbCwiR2VuZXJhdG9yIiksZihDLGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZihDLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVAsai5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmoscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKFQpLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxtKTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLG19LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksVChuKSxtfX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO1Qobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSxtfX0sZX1mdW5jdGlvbiBsKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gZih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXtsKGkscixvLGEsdSwibmV4dCIsdCl9ZnVuY3Rpb24gdSh0KXtsKGkscixvLGEsdSwidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19ZnVuY3Rpb24gZCh0KXtyZXR1cm57dHlwZTpvLnljUSxwbGFuRGF0YTp0fX1mdW5jdGlvbiBwKHQpe3JldHVybnt0eXBlOm8ua1lOLGlzTG9hZGluZzp0fX1mdW5jdGlvbiBoKHQpe3ZhciBlPXZvaWQgMD09PXQ/e306dCxuPWUuZm9yY2Usbz12b2lkIDAhPT1uJiZuLGk9ZS5jb252ZXJzYXRpb25JZDtyZXR1cm4gZihjKCkubWFyaygoZnVuY3Rpb24gdChlLG4pe3ZhciBhLHUscyxsO3JldHVybiBjKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoYT1uKCksdT1hLnNlc3Npb24scz1hLm9uYm9hcmRpbmdQbGFuLCEoIXV8fCFvJiZzLmhhc0ZldGNoZWQmJnMucGxhbkRhdGF8fHMuaXNMb2FkaW5nKSl7dC5uZXh0PTM7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6cmV0dXJuIGUocCghMCkpLHQucHJldj00LHQubmV4dD03LHIuQXkuZ2V0T25ib2FyZGluZ1BsYW4odSxpKTtjYXNlIDc6bD10LnNlbnQsZShkKGwpKTtjYXNlIDk6cmV0dXJuIHQucHJldj05LGUocCghMSkpLHQuZmluaXNoKDkpO2Nhc2UgMTI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1s0LCw5LDEyXV0pfSkpKX1mdW5jdGlvbiB2KHQpe3ZhciBlPXQuY29udmVyc2F0aW9uSWQsbj10LnRhc2tJZCxvPXQudGFza1RpdGxlO3JldHVybiBmKGMoKS5tYXJrKChmdW5jdGlvbiB0KHMsbCl7dmFyIGYsZCxwLGgsdix5LGcsbSxiO3JldHVybiBjKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIGY9bCgpLGQ9Zi5zZXNzaW9uLHA9Zi5hcHAudXNlclBhcnRVeFN0eWxlLGg9IkknbGwgZG8gdGhpcyBzdGVwIG5leHQ6ICIrbysiLiBHaXZlIG1lIHNvbWUgZGV0YWlscyBvbiB3aHkgdGhpcyBpcyBpbXBvcnRhbnQgYXMgdGhlIG5leHQgc3RlcCBmb3IgbWUuIix2PSgwLHUubCkoKSx5PW5ldyBEYXRlLGc9KDAsYS4kQikoaCksbT17Y29udmVyc2F0aW9uSWQ6ZSxjbGllbnRJZDp2LGNyZWF0ZWRBdDp5LGJvZHk6Zyx1eFN0eWxlOnB9LHMoKDAsaS5KbikoZSxtLCExKSksdC5wcmV2PTcsdC5uZXh0PTEwLHIuQXkuY3JlYXRlQ29tbWVudChkLGUsdixnLHksdm9pZCAwLHZvaWQgMCx7cGxhblN0ZXBJZDpufSk7Y2FzZSAxMDpiPXQuc2VudCxzKCgwLGkuYlIpKGUsYixudWxsLG51bGwsITEseSkpLHQubmV4dD0xNzticmVhaztjYXNlIDE0OnQucHJldj0xNCx0LnQwPXQuY2F0Y2goNykscygoMCxpLnFNKShlLG0sdC50MCkpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1s3LDE0XV0pfSkpKX19LDUxMDM1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0JyOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LENDOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LFVFOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LFpOOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LGUkOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LHN2OmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LHZuOmZ1bmN0aW9uKCl7cmV0dXJuIG99LHlFOmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSk7dmFyIHI9bigxNzgzMyksbz0iTUVTU0VOR0VSX0xBU1RfT1BFTl9IRUFSVEJFQVQiLGk9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpvfX0sYT0iT1BFTl9DSEVDS0xJU1RfT05fQk9PVCIsdT0iT1BFTl9DT05WRVJTQVRJT05fT05fQk9PVCIscz0iT1BFTl9ORVdfQ09OVkVSU0FUSU9OX09OX0JPT1QiLGM9IlBFTkRJTkdfQVJUSUNMRV9OQVZJR0FUSU9OIixsPWZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOmMsYXJ0aWNsZUlkOnR9fSxmPW4ubihyKSgpKCJvcGVuT25Cb290X3VybF9jaGFuZ2U6ZGVidWciKX0sOTM5ODI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7bzA6ZnVuY3Rpb24oKXtyZXR1cm4gan0sWFg6ZnVuY3Rpb24oKXtyZXR1cm4gTn0sV0Y6ZnVuY3Rpb24oKXtyZXR1cm4gUH19KTt2YXIgcj1uKDQxNjA5KSxvPW4oMTU0NTIpLGk9bigyMTQ5OCksYT1uKDE3ODMzKSx1PW4ubihhKSxzPW4oOTQyMTQpLGM9bigxMjk1MiksbD1uKDQ1Mzg3KSxmPW4oNTQ3ODgpLGQ9big2OTUwOCkscD1uKDUxNjY5KSxoPW4oNDYwNSksdj1uKDE0MTIwKSx5PW4oMzgyNTMpLGc9big5NTU2NSksbT1uKDgxODM5KSxiPW4ucCsiaW1hZ2VzL2Zpbi10aGlua2luZy1icmFuZGVkLjk1NGM4YjQ5YmMwOTUzY2UyYjJjLndlYnAiLHc9bi5wKyJpbWFnZXMvZmluLXRoaW5raW5nLXVuYnJhbmRlZC5mOTNhYTgxYmUwM2Q4ZGZmZmUzZi53ZWJwIixfPW4oNzI5MCksUz1uKDY5NzQ0KSx4PW4oNTc1MjApLEU9big1NDI0OCksQz1uKDYzMzQ5KSxPPW4oNTEwMzUpO2Z1bmN0aW9uIEEodCl7cmV0dXJuIEE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LEEodCl9ZnVuY3Rpb24gSSgpe0k9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnP2U6ZyxhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IGoocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpPKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIscD0ic3VzcGVuZGVkWWllbGQiLGg9ImV4ZWN1dGluZyIsdj0iY29tcGxldGVkIix5PXt9O2Z1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gbSgpe31mdW5jdGlvbiBiKCl7fXZhciB3PXt9O2ModyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBfPU9iamVjdC5nZXRQcm90b3R5cGVPZixTPV8mJl8oXyhQKFtdKSkpO1MmJlMhPT1uJiZyLmNhbGwoUyxhKSYmKHc9Uyk7dmFyIHg9Yi5wcm90b3R5cGU9Zy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh3KTtmdW5jdGlvbiBFKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBDKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT1BKGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBPKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT1oKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PXYpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPWsodSxyKTtpZihzKXtpZihzPT09eSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89dixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289aDt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/djpwLGMuYXJnPT09eSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPXYsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBrKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxrKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLHk7dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLHk7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLHkpOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwseSl9ZnVuY3Rpb24gTCh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBUKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBqKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goTCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IoQShlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiBtLnByb3RvdHlwZT1iLG8oeCwiY29uc3RydWN0b3IiLHt2YWx1ZTpiLGNvbmZpZ3VyYWJsZTohMH0pLG8oYiwiY29uc3RydWN0b3IiLHt2YWx1ZTptLGNvbmZpZ3VyYWJsZTohMH0pLG0uZGlzcGxheU5hbWU9YyhiLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT1tfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxiKToodC5fX3Byb3RvX189YixjKHQscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh4KSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxFKEMucHJvdG90eXBlKSxjKEMucHJvdG90eXBlLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUMsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBDKGwodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sRSh4KSxjKHgscywiR2VuZXJhdG9yIiksYyh4LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyh4LCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVAsai5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmoscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKFQpLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyx5KTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLHl9LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksVChuKSx5fX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO1Qobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSx5fX0sZX1mdW5jdGlvbiBrKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gTCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXtrKGkscixvLGEsdSwibmV4dCIsdCl9ZnVuY3Rpb24gdSh0KXtrKGkscixvLGEsdSwidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19dmFyIFQ9dSgpKCJpbnRlcmNvbS5hY3Rpb25zLnVzZXIiKSxqPTNlNCxQPSgwLHIuUzQpKCJtZXNzZW5nZXIvb3BlbiIsTChJKCkubWFyaygoZnVuY3Rpb24gdChlLG4pe3ZhciByLG8sYSx1LEEsayxMLGosUCxOLE0sUixVLHosSCxGLEQsQixWLEcscSxXLEssWixKLFksUSxYLCQsdHQsZXQsbnQscnQ7cmV0dXJuIEkoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gTD1uLmdldFN0YXRlKCksaj1uLmRpc3BhdGNoLFA9TC5zZXNzaW9uLE49TC5hcHAsTT0hISgwLGcudCkoKSxSPSgwLHYub1ApKEwpLHo9KFU9IVJ8fCIvbG9hZGluZyI9PT1SKT8iIjpSLEg9KDAsRS5BZSkoTCksRj1MLm9wZW5PbkJvb3QsRD0oMCxDLkFkKShMKSxCPSgwLEMuWXgpKEwpLFY9KDAsQy5lKShMKS5vcGVuc0RpcmVjdGx5SW50b0NvbnZlcnNhdGlvbix0LnByZXY9MTIsdC5uZXh0PTE1LHkuQXkuc2VuZE1lc3Nlbmdlck9wZW4oUCx6LE0sVixCKTtjYXNlIDE1OmlmKEc9dC5zZW50KXt0Lm5leHQ9MTg7YnJlYWt9dGhyb3cgbmV3IEVycm9yKCJSZXNwb25zZSBpcyBudWxsIik7Y2FzZSAxODp0Lm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMDpyZXR1cm4gdC5wcmV2PTIwLHQudDA9dC5jYXRjaCgxMiksVCgiUmVxdWVzdCB0byBtZXNzZW5nZXIgb3BlbiBmYWlsZWQiLHQudDApLHQuYWJydXB0KCJyZXR1cm4iLG4ucmVqZWN0V2l0aFZhbHVlKHQudDApKTtjYXNlIDI0OmlmKCEoMCxfLmdYKShHKSl7dC5uZXh0PTI2O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixuLnJlamVjdFdpdGhWYWx1ZShHLmVycm9ycykpO2Nhc2UgMjY6aWYoRy5hY3RpdmVCb3QmJkcuYWN0aXZlQm90LnBhcnRpY2lwYW50JiYoKDAsbS5GZikoRy5hY3RpdmVCb3QucGFydGljaXBhbnQuYXZhdGFyLnNxdWFyZTEyOCksRy5hY3RpdmVCb3QudXNlQ3VzdG9taXplZElkZW50aXR5PygwLG0uRmYpKHcpOigwLG0uRmYpKGIpKSxudWxsPT0ocj1HLm5ld0NvbnZlcnNhdGlvblBhcnRzKXx8IXIubGVuZ3RoKXt0Lm5leHQ9MzM7YnJlYWt9cmV0dXJuIHE9Ry5uZXdDb252ZXJzYXRpb25QYXJ0cy5mbGF0TWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ib2R5fSkpLFc9cS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiJtZXNzZW5nZXJDYXJkIj09PXQudHlwZX0pKSx0Lm5leHQ9MzIsUHJvbWlzZS5hbGwoVy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBqKCgwLHguX0QpKHkuQXksdCwhMSkpfSkpKTtjYXNlIDMyOmooKDAsaC55USkoRy5uZXdDb252ZXJzYXRpb25QYXJ0cykpO2Nhc2UgMzM6cmV0dXJuIEcudGVhbUludHJvJiZqKCgwLGguUmkpKEcudGVhbUludHJvKSksRy5zcGVjaWFsTm90aWNlJiZqKCgwLGguaHYpKEcuc3BlY2lhbE5vdGljZSkpLEcuY29tcG9zZXJTdWdnZXN0aW9ucyYmaigoMCxwLmFOKShHLmNvbXBvc2VyU3VnZ2VzdGlvbnMpKSxqKCgwLGQuaCkoRy5ib3RJbnRybykpLGooKDAsZi5LTykoRy5vcGVuSW5ib3VuZENvbnZlcnNhdGlvbklkcykpLGooKDAscy5JaikobnVsbCE9KG89Ry5hY2Nlc3NUb1RlYW1tYXRlRW5hYmxlZCk/bzpOLmFjY2Vzc1RvVGVhbW1hdGVFbmFibGVkLG51bGwhPShhPUcuc2VsZlNlcnZlU3VnZ2VzdGlvbnNNYXRjaCk/YTpOLnNlbGZTZXJ2ZVN1Z2dlc3Rpb25zTWF0Y2gsbnVsbCE9KHU9Ry5hY3RpdmVBZG1pbnMpP3U6Ti5hY3RpdmVBZG1pbnMsRy5hY3RpdmVCb3QpKSxqKCgwLGMuSnEpKG51bGwhPShBPUcuYWlTdWdnZXN0aW9uc0F2YWlsYWJsZSkmJkEpKSxudWxsIT0oaz1HLmFpU3VnZ2VzdGlvbkdyb3VwcykmJmsubGVuZ3RoJiZqKCgwLGMuTk8pKEcuYWlTdWdnZXN0aW9uR3JvdXBzKSksRy5jb21wb3NlclN0YXRlJiZqKCgwLGguTiQpKEcuY29tcG9zZXJTdGF0ZSkpLEcucHJpdmFjeVBvbGljeU5vdGljZSYmaigoMCxzLmt5KShHLnByaXZhY3lQb2xpY3lOb3RpY2UpKSwoMCxDLkFkKShuLmdldFN0YXRlKCkpLmFsd2F5c1Zpc2libGUmJiFuLmdldFN0YXRlKCkuYXBwLmlzTWVzc2VuZ2VyT3BlbiYmaigoMCxzLnF5KSgpKSxLPSEoMCxpLklTKSgpJiZGLnR5cGUsWj0oMCx2Lm9QKShuLmdldFN0YXRlKCkpLEo9IVp8fCIvbG9hZGluZyI9PT1aLFk9bnVsbD09Wj92b2lkIDA6Wi5zdGFydHNXaXRoKCIvbWVzc2FnZXMvY29udmVyc2F0aW9uL25ldyIpLFE9Ii9ob21lIj09PVosWD0hMSxIJiZKJiYhVSYmKDAsUy5vUykoIm1lc3Nlbmdlcl9vcGVuX3N0YWxlX3BhdGhuYW1lX3JlY292ZXJlZCIpLCQ9bi5nZXRTdGF0ZSgpLmFwcC5nZW5lcmF0ZWRQbGFuQ29udmVyc2F0aW9uSWQsdHQ9QiYmKCEhRy5nZW5lcmF0ZWRQbGFuQ29udmVyc2F0aW9uSWR8fCEhJCksIXR0JiYoSCYmKFV8fEopJiYhS3x8ViYmSCYmKFl8fFEpfHxELmFsd2F5c1Zpc2libGUmJkQuY29udmVyc2F0aW9uT25seSkmJihHLnJlY2VudE9wZW5JbmJvdW5kQ29udmVyc2F0aW9uPyhqKCgwLGguRm8pKHkuQXksRy5yZWNlbnRPcGVuSW5ib3VuZENvbnZlcnNhdGlvbiwhMSxEYXRlLm5vdygpKSksaigoMCxsLlk2KSgpKSxqKCgwLHMua0kpKEcucmVjZW50T3BlbkluYm91bmRDb252ZXJzYXRpb24uaWQsITApKSxYPSEwKTpELmFsd2F5c1Zpc2libGUmJkQuY29udmVyc2F0aW9uT25seT8oWXx8aigoMCxzLnA2KSh7cmVwbGFjZUN1cnJlbnRWaWV3OiEwLHZpc2liaWxpdHk6Xy5jeS52aXNpYmxlfSkpLFg9ITApOlY/KFl8fGooKDAscy5wNikoe3JlcGxhY2VDdXJyZW50VmlldzohMCx2aXNpYmlsaXR5Ol8uY3kuc2hyaW5rZWR9KSksaigoMCxzLnF5KSgpKSxYPSEwKTooaigoMCxzLnVuKSgiIiwhMCkpLFg9ITApKSxYfHx0dHx8KGV0PSgwLHYub1ApKG4uZ2V0U3RhdGUoKSksbnQ9IWV0fHwiL2xvYWRpbmciPT09ZXQscnQ9IShudWxsIT1GJiZGLnR5cGUpfHwobnVsbD09Rj92b2lkIDA6Ri50eXBlKT09PU8ueUV8fChudWxsPT1GP3ZvaWQgMDpGLnR5cGUpPT09Ty5CcixudCYmSCYmcnQmJigoMCxTLm9TKSgibWVzc2VuZ2VyX29wZW5fbG9hZGluZ19mYWxsYmFja19uYXZpZ2F0aW9uIiksRy5yZWNlbnRPcGVuSW5ib3VuZENvbnZlcnNhdGlvbj9qKCgwLHMua0kpKEcucmVjZW50T3BlbkluYm91bmRDb252ZXJzYXRpb24uaWQsITApKTpWfHxELmFsd2F5c1Zpc2libGV8fGooKDAscy51bikoIiIsITApKSkpLHQuYWJydXB0KCJyZXR1cm4iLEcpO2Nhc2UgNTg6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1sxMiwyMF1dKX0pKSkse2NvbmRpdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBuPSgwLGUuZ2V0U3RhdGUpKCkuYXBwO3JldHVybiFuLm9wZW5SZXF1ZXN0SW5GbGlnaHRTaW5jZXx8RGF0ZS5ub3coKS1uLm9wZW5SZXF1ZXN0SW5GbGlnaHRTaW5jZT5qfX0pLE49KDAsby5zZikoUCl9LDU0MTAxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse286ZnVuY3Rpb24oKXtyZXR1cm4gdn0seTpmdW5jdGlvbigpe3JldHVybiB5fX0pO3ZhciByPW4oMTc4MzMpLG89bi5uKHIpLGk9big0NjA1KSxhPW4oMzgyODUpLHU9big3MTEwKSxzPW4oNjYyNzQpLGM9bigxODM5OSk7ZnVuY3Rpb24gbCh0KXtyZXR1cm4gbD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sbCh0KX1mdW5jdGlvbiBmKCl7Zj1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gZCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGI/ZTpiLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgaihyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOkkodCxuLHUpfSksYX1mdW5jdGlvbiBwKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWQ7dmFyIGg9InN1c3BlbmRlZFN0YXJ0Iix2PSJzdXNwZW5kZWRZaWVsZCIseT0iZXhlY3V0aW5nIixnPSJjb21wbGV0ZWQiLG09e307ZnVuY3Rpb24gYigpe31mdW5jdGlvbiB3KCl7fWZ1bmN0aW9uIF8oKXt9dmFyIFM9e307YyhTLGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIHg9T2JqZWN0LmdldFByb3RvdHlwZU9mLEU9eCYmeCh4KFAoW10pKSk7RSYmRSE9PW4mJnIuY2FsbChFLGEpJiYoUz1FKTt2YXIgQz1fLnByb3RvdHlwZT1iLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFMpO2Z1bmN0aW9uIE8odCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEEodCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPXAodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGY9Yy52YWx1ZTtyZXR1cm4gZiYmIm9iamVjdCI9PWwoZikmJnIuY2FsbChmLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGYuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCxhLHUpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LGEsdSl9KSk6ZS5yZXNvbHZlKGYpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxhKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCxhLHUpfSkpfXUocy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIEkoZSxuLHIpe3ZhciBvPWg7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PXkpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09Zyl7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9ayh1LHIpO2lmKHMpe2lmKHM9PT1tKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWgpdGhyb3cgbz1nLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz15O3ZhciBjPXAoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT9nOnYsYy5hcmc9PT1tKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89ZyxyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIGsoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LGsoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksbTt2YXIgaT1wKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwsbTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwsbSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCxtKX1mdW5jdGlvbiBMKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIFQodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIGoodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChMLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW2FdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGk9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBpLm5leHQ9aX19dGhyb3cgbmV3IFR5cGVFcnJvcihsKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIHcucHJvdG90eXBlPV8sbyhDLCJjb25zdHJ1Y3RvciIse3ZhbHVlOl8sY29uZmlndXJhYmxlOiEwfSksbyhfLCJjb25zdHJ1Y3RvciIse3ZhbHVlOncsY29uZmlndXJhYmxlOiEwfSksdy5kaXNwbGF5TmFtZT1jKF8scywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LF8pOih0Ll9fcHJvdG9fXz1fLGModCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEMpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LE8oQS5wcm90b3R5cGUpLGMoQS5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QSxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEEoZCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxPKEMpLGMoQyxzLCJHZW5lcmF0b3IiKSxjKEMsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKEMsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9UCxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goVCksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLG0pOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksbX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxUKG4pLG19fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7VChuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLG19fSxlfWZ1bmN0aW9uIGQodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBwKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpe2QoaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe2QoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX12YXIgaD1vKCkoImludGVyY29tLmFjdGlvbnMucHJlZGljdGl2ZS1hbnN3ZXJzIik7ZnVuY3Rpb24gdih0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPSExKSxwKGYoKS5tYXJrKChmdW5jdGlvbiByKG8scyl7dmFyIGwsZCxwLHYsZyxtLGIsdyxfLFMseDtyZXR1cm4gZigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLnByZXY9MCxkPXMoKSxwPWQuc2Vzc2lvbix2PWQubmV3Q29udmVyc2F0aW9uLGc9ZC51c2VyLG09ZC5pbmJvdW5kU3VnZ2VzdGlvbnMsYj1kLmFwcC51c2VyUGFydFV4U3R5bGUsdz1udWxsPT1tfHxudWxsPT0obD1tLnNlcnZlclNpZGVTdWdnZXN0aW9ucyk/dm9pZCAwOmwuc25hcHNob3RJZCxfPSgwLGEubCkoKSxTPXtjbGllbnRJZDpfLGJvZHk6KDAsdS4kQikoZS50ZXh0KSxjcmVhdGVkQXQ6bmV3IERhdGUsY29tcG9zZXJTdWdnZXN0aW9uSXRlbTplLHV4U3R5bGU6Yn0sbyh5KG51bGwpKSxvKCgwLGkualcpKFMsbikpLHIubmV4dD0xMSx0LmZpcmVDb21wb3NlclN1Z2dlc3Rpb24ocCx7Y29udmVyc2F0aW9uSWQ6dW5kZWZpbmVkLHN1Z2dlc3Rpb246ZSxjbGllbnRJZDpfLGJvdEludHJvOnY/di5ib3RJbnRyb0lkOm51bGwsYXJ0aWNsZVVybDp2P3YuYXJ0aWNsZVVybDpudWxsLHJlc29sdXRpb25Cb3RCZWhhdmlvclZlcnNpb25JZDpnP2cucmVzb2x1dGlvbkJvdEJlaGF2aW9yVmVyc2lvbklkOm51bGwsc25hcHNob3RJZDp3fSk7Y2FzZSAxMTp4PXIuc2VudCxvKCgwLGkuSE4pKHgsbnVsbCxudWxsLERhdGUubm93KCksInByZWRpY3RpdmVfYW5zd2VyIikpLG8oKDAsYy5wKSh4LmlkLCEwKSksci5uZXh0PTIwO2JyZWFrO2Nhc2UgMTY6ci5wcmV2PTE2LHIudDA9ci5jYXRjaCgwKSxvKCgwLGkud2opKG51bGwpKSxoKCJDb3VsZG50IHN0YXJ0IGNvbnZlcnNhdGlvbiBmcm9tIHN1Z2dlc3Rpb24gZHVlIHRvIGU9IityLnQwKTtjYXNlIDIwOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscixudWxsLFtbMCwxNl1dKX0pKSl9ZnVuY3Rpb24geSh0KXtyZXR1cm57dHlwZTpzLlhocixwcmVkaWN0aXZlQW5zd2Vyc1N1Z2dlc3Rpb25zOnR9fX0sMTgzOTk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7ZTpmdW5jdGlvbigpe3JldHVybiBsfSxwOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9fSk7dmFyIHI9big2NjI3NCksbz1uKDUxODgzKSxpPW4oMTQxMjApLGE9big3MDQwMCksdT1uKDI2NzAzKSxzPW4oNjg3NjIpLGM9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT0hMSk7dmFyIG49e3R5cGU6ci5FbVgsY29udmVyc2F0aW9uSWQ6dH07cmV0dXJuIGUmJihuLnJlcGxhY2VDdXJyZW50Vmlldz1lKSxufSxsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dm9pZCAwPT09ZT97fTplLHI9bi5yZXBsYWNlQ3VycmVudFZpZXcsaT12b2lkIDAhPT1yJiZyLGE9bi5mcm9tQXJ0aWNsZUlkLHU9dm9pZCAwPT09YT9udWxsOmEscz1uLmZyb21TdGFuZGFsb25lQXJ0aWNsZSxjPXZvaWQgMCE9PXMmJnMsbD1uLmZhbGxiYWNrVG9NZXNzYWdlcyxmPXZvaWQgMCE9PWwmJmwsZD1uLnZpc2liaWxpdHkscD12b2lkIDA9PT1kP251bGw6ZDtyZXR1cm4oaT9vLkhDOm8uVkMpKCIvbWVzc2FnZXMvY29udmVyc2F0aW9uLyIrdCsiP2Zyb21TdGFuZGFsb25lQXJ0aWNsZT0iK2MrKHU/IiZmcm9tQXJ0aWNsZUlEPSIrdToiIikrKGY/IiZiYWNrRmFsbGJhY2tSb3V0ZT0vbWVzc2FnZXMiOiIiKSsocD8iJnZpc2liaWxpdHk9IitwOiIiKSl9O2Z1bmN0aW9uIGYodCxlLG4pe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksdm9pZCAwPT09biYmKG49bnVsbCksZnVuY3Rpb24ocixvKXt2YXIgZixkLHAsaD1vKCksdj0oMCxpLm9QKShoKSx5PSgwLGEubWF0Y2hQYXRoKSgiLyIrdS5Jai5pZCsiL2NvbnZlcnNhdGlvbi86Y29udmVyc2F0aW9uSWQiLHYpO3IoYyh0LGUpKTt2YXIgZz0obnVsbD09KGY9aC5yb3V0ZXJIaXN0b3J5KT92b2lkIDA6Zi5oaXN0b3J5KXx8W10sbT0obnVsbD09Zz92b2lkIDA6Zy5sZW5ndGgpfHwwLGI9Z1ttLTFdLHc9ITE7KGU/bTw9MXx8KDAscy5ieCkobnVsbD09Yj92b2lkIDA6Yi5wYXRobmFtZSk6MD09PW0pJiYodz0hMCk7dmFyIF89dC50b1N0cmluZygpPT09KG51bGw9PXl8fG51bGw9PShkPXkucGFyYW1zKT92b2lkIDA6ZC5jb252ZXJzYXRpb25JZCksUz1udWxsIT0ocD1oLnJvdXRlcikmJm51bGwhPShwPXAubG9jYXRpb24pJiZwLnNlYXJjaD9uZXcgVVJMU2VhcmNoUGFyYW1zKGgucm91dGVyLmxvY2F0aW9uLnNlYXJjaCkuZ2V0KCJ2aXNpYmlsaXR5Iik6bnVsbDtpZighX3x8XyYmbiYmbiE9PVMpe3ZhciB4LEU9bnx8KG51bGwhPSh4PWgucm91dGVyKSYmbnVsbCE9KHg9eC5sb2NhdGlvbikmJnguc2VhcmNoP25ldyBVUkxTZWFyY2hQYXJhbXMoaC5yb3V0ZXIubG9jYXRpb24uc2VhcmNoKS5nZXQoInZpc2liaWxpdHkiKTpudWxsKTtyKGwodCx7cmVwbGFjZUN1cnJlbnRWaWV3OmUsZmFsbGJhY2tUb01lc3NhZ2VzOncsdmlzaWJpbGl0eTpFfSkpfX19fSw5NjcxOTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHskTjpmdW5jdGlvbigpe3JldHVybiB6fSxBeTpmdW5jdGlvbigpe3JldHVybiBVfSxFcDpmdW5jdGlvbigpe3JldHVybiBPfSxGTDpmdW5jdGlvbigpe3JldHVybiBMfSxKNzpmdW5jdGlvbigpe3JldHVybiBWfSxOeTpmdW5jdGlvbigpe3JldHVybiBFfSxTMDpmdW5jdGlvbigpe3JldHVybiBQfSxURDpmdW5jdGlvbigpe3JldHVybiBCfSxUdTpmdW5jdGlvbigpe3JldHVybiBIfSxVUzpmdW5jdGlvbigpe3JldHVybiBJfSxydDpmdW5jdGlvbigpe3JldHVybiBSfSx0cDpmdW5jdGlvbigpe3JldHVybiBBfSx1aDpmdW5jdGlvbigpe3JldHVybiBOfSx2bDpmdW5jdGlvbigpe3JldHVybiBUfSx3ajpmdW5jdGlvbigpe3JldHVybiBTfSx4VjpmdW5jdGlvbigpe3JldHVybiBNfX0pO3ZhciByPW4oNjY4MzgpLG89bigzODI1MyksaT1uKDQyNzU0KSxhPW4oNjYyNzQpLHU9big3NzIzNCkscz1uKDg4MzMzKSxjPW4oODcxMzMpLGw9bigyMjk3OSksZj1uKDQwMTI3KSxkPW4oOTU1NjUpLHA9bigxNzc3Nyk7ZnVuY3Rpb24gaCh0KXtyZXR1cm4gaD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0saCh0KX1mdW5jdGlvbiB2KHQsZSxuKXtpZihlJiYhQXJyYXkuaXNBcnJheShlKSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIGcoZSx2b2lkIDAhPT1uJiZuPHI/bjpyKX1yZXR1cm4gdChlLG4pfWZ1bmN0aW9uIHkodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGcodCl9KHQpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KHQpfHxmdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gZyh0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9nKHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gZyh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gbSgpe3JldHVybiBtPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sbS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYigpe2I9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBtP2U6bSxhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IGoocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpJKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIscD0ic3VzcGVuZGVkWWllbGQiLHY9ImV4ZWN1dGluZyIseT0iY29tcGxldGVkIixnPXt9O2Z1bmN0aW9uIG0oKXt9ZnVuY3Rpb24gdygpe31mdW5jdGlvbiBfKCl7fXZhciBTPXt9O2MoUyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciB4PU9iamVjdC5nZXRQcm90b3R5cGVPZixFPXgmJngoeChQKFtdKSkpO0UmJkUhPT1uJiZyLmNhbGwoRSxhKSYmKFM9RSk7dmFyIEM9Xy5wcm90b3R5cGU9bS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShTKTtmdW5jdGlvbiBPKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBBKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT1oKGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBJKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT12KXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PXkpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPWsodSxyKTtpZihzKXtpZihzPT09Zyljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89eSxyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289djt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/eTpwLGMuYXJnPT09Zyljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPXksci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBrKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxrKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLGc7dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLGc7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLGcpOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwsZyl9ZnVuY3Rpb24gTCh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBUKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBqKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goTCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IoaChlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiB3LnByb3RvdHlwZT1fLG8oQywiY29uc3RydWN0b3IiLHt2YWx1ZTpfLGNvbmZpZ3VyYWJsZTohMH0pLG8oXywiY29uc3RydWN0b3IiLHt2YWx1ZTp3LGNvbmZpZ3VyYWJsZTohMH0pLHcuZGlzcGxheU5hbWU9YyhfLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT13fHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxfKToodC5fX3Byb3RvX189XyxjKHQscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShDKSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxPKEEucHJvdG90eXBlKSxjKEEucHJvdG90eXBlLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUEsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBBKGwodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sTyhDKSxjKEMscywiR2VuZXJhdG9yIiksYyhDLGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyhDLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVAsai5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmoscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKFQpLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxnKTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLGd9LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksVChuKSxnfX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO1Qobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSxnfX0sZX1mdW5jdGlvbiB3KHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXt3KGkscixvLGEsdSwibmV4dCIsdCl9ZnVuY3Rpb24gdSh0KXt3KGkscixvLGEsdSwidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19ZnVuY3Rpb24gUyh0KXtyZXR1cm57dHlwZTphLkI2ZCxzdXJ2ZXk6dH19ZnVuY3Rpb24geCh0LGUsbil7cmV0dXJue3R5cGU6YS5XazMsc3VydmV5SWQ6dCxzdXJ2ZXlTdGVwOmUsY29tcGxldGVkOm59fWZ1bmN0aW9uIEUodCxlKXtyZXR1cm57dHlwZTphLkg4RyxxdWVzdGlvbklkOnQscmVzcG9uc2U6ZX19ZnVuY3Rpb24gQyh0LGUsbil7cmV0dXJue3R5cGU6YS51TXEsc3VydmV5SWQ6dCxzdGVwSWQ6ZSx2YWxpZGF0aW9uUmVzdWx0Om59fWZ1bmN0aW9uIE8odCl7cmV0dXJue3R5cGU6YS5hNHoscXVlc3Rpb25JZDp0fX1mdW5jdGlvbiBBKCl7cmV0dXJue3R5cGU6YS5FZGh9fWZ1bmN0aW9uIEkodCl7cmV0dXJue3R5cGU6YS5nWVgscXVlc3Rpb25JZDp0fX1mdW5jdGlvbiBrKCl7cmV0dXJue3R5cGU6YS5oeWl9fWZ1bmN0aW9uIEwodCl7cmV0dXJue3R5cGU6YS5ncEksc3VydmV5SWQ6dH19ZnVuY3Rpb24gVCh0KXtyZXR1cm57dHlwZTphLkZkbyxzdXJ2ZXlJZDp0fX1mdW5jdGlvbiBqKHQpe3JldHVybnt0eXBlOmEua0taLHN1cnZleUlkOnR9fWZ1bmN0aW9uIFAodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIHIsbz1uKCksYT0oMCxpLklTKShvKSxjPSgwLGkuRTUpKG8pLGw9bnVsbD09Y3x8bnVsbD09KHI9Yy5xdWVzdGlvbnMpP3ZvaWQgMDpyLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dH0pKTtpZihhJiZjJiZsKXt2YXIgZixkPSgwLHUuJDApKGwucmVzcG9uc2UsbC5kYXRhKSxwPWQuZmFpbGVkVmFsaWRhdGlvbixoPWQudmFsaWRhdGlvbkVycm9yO2lmKHAmJmghPT1zLmgzLnJlcXVpcmVkKWUoQyhhLmlkLGMuaWQsKChmPXt9KVtsLmlkXT1oLGYpKSl9fX1mdW5jdGlvbiBOKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oYSxzKXt2YXIgYz1zKCksbD0oMCxpLkU1KShjKSxmPXt9O251bGw9PWx8fGwucXVlc3Rpb25zLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPSgwLHUuJDApKHQucmVzcG9uc2UsdC5kYXRhKSxuPWUuZmFpbGVkVmFsaWRhdGlvbixyPWUudmFsaWRhdGlvbkVycm9yO24mJihmW3QuaWRdPXIpfSkpLGEoQyh0LG4sZikpLCgwLHIuSSkoZik/YShmdW5jdGlvbih0LGUsbil7cmV0dXJuIF8oYigpLm1hcmsoKGZ1bmN0aW9uIHIoYSx1KXt2YXIgcyxjLGwsZixwLGg7cmV0dXJuIGIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gcz11KCksYz0oMCxpLlZHKShzKSxsPSgwLGQuSCkoKSxyLnByZXY9MyxyLm5leHQ9NixvLkF5LnN1Ym1pdFN1cnZleShzLnNlc3Npb24sdCxlLG4sYyxsKTtjYXNlIDY6aWYoZj1yLnNlbnQsYShqKHQpKSxwPWYuY29tcGxldGUsaD1mLm5leHRfc3RlcCxmLnN1cnZleV9pZD09PXQpe3IubmV4dD0xMTticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMTE6YShwJiYhaD9rKCk6eCh0LCgwLG8uSHEpKGgpLHApKSxyLm5leHQ9MTc7YnJlYWs7Y2FzZSAxNDpyLnByZXY9MTQsci50MD1yLmNhdGNoKDMpLGEoaih0KSk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsbnVsbCxbWzMsMTRdXSl9KSkpfSh0LGUsbikpOmEoaih0KSl9fWZ1bmN0aW9uIE0oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgbj1lKCkscj0oMCxpLkU1KShuKSxvPW51bGw9PXI/dm9pZCAwOnIucXVlc3Rpb25zLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10LnZhbGlkYXRpb25FcnJvciYmbnVsbCE9PXQudmFsaWRhdGlvbkVycm9yfSkpO3QoTyhvP28uaWQ6dm9pZCAwKSl9fWZ1bmN0aW9uIFIodCxlKXtyZXR1cm4gZnVuY3Rpb24obixyKXt2YXIgdT1yKCkscz0oMCxpLklTKSh1KTtpZihuKGZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOmEuV1hwLHN1cnZleUlkOnR9fSh0KSksbnVsbD09c3x8IXMuY29tcGxldGVkKXt2YXIgYz11LnNlc3Npb24sbD0oMCxkLkgpKCk7by5BeS5kaXNtaXNzU3VydmV5KGMsdCxlLGwpfX19ZnVuY3Rpb24gVSh0LGUpe3JldHVybiBfKGIoKS5tYXJrKChmdW5jdGlvbiBuKHIsaSl7dmFyIGEscyxjLGw7cmV0dXJuIGIoKS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4oMCx1LlNjKSgiV2lsbCBhdHRlbXB0IHRvIGZldGNoIHN1cnZleSBydWxlc2V0IHdpdGggaWQgIit0KSxhPWkoKSxzPWEuc2Vzc2lvbixjPSgwLGQuSCkoKSxuLnByZXY9MyxuLm5leHQ9NixvLkF5LmZldGNoU3VydmV5KHtzZXNzaW9uOnMscnVsZXNldElkOnQsdHJpZ2dlck1ldGhvZDplLGlzUHJldmlldzpjfSk7Y2FzZSA2OihsPW4uc2VudCkmJnIoUyhsKSksbi5uZXh0PTEzO2JyZWFrO2Nhc2UgMTA6bi5wcmV2PTEwLG4udDA9bi5jYXRjaCgzKSwoMCx1LlNjKSgiRmFpbGVkIHRvIGZldGNoIHN1cnZleSB3aXRoIHJ1bGVzZXQgaWQgIit0KyI6IixuLnQwKTtjYXNlIDEzOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbixudWxsLFtbMywxMF1dKX0pKSl9ZnVuY3Rpb24geih0LGUpe3JldHVybiBfKGIoKS5tYXJrKChmdW5jdGlvbiBuKHIsaSl7dmFyIGEscyxjO3JldHVybiBiKCkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuKDAsdS5TYykoIldpbGwgYXR0ZW1wdCB0byBmZXRjaCBzdXJ2ZXkgcHJvZ3Jlc3Mgd2l0aCBpZCAiK3QpLGE9aSgpLHM9YS5zZXNzaW9uLG4ucHJldj0yLG4ubmV4dD01LG8uQXkuZmV0Y2hBY3RpdmVTdXJ2ZXlQcm9ncmVzcyh7c2Vzc2lvbjpzLGVudGl0eUlkOnQsZW50aXR5VHlwZTplfSk7Y2FzZSA1OihjPW4uc2VudCkmJnIoUyhjKSksbi5uZXh0PTEyO2JyZWFrO2Nhc2UgOTpuLnByZXY9OSxuLnQwPW4uY2F0Y2goMiksKDAsdS5TYykoIkZhaWxlZCB0byBmZXRjaCBzdXJ2ZXkgcHJvZ3Jlc3Mgd2l0aCBlbnRpdHkgaWQgIit0KyI6IixuLnQwKTtjYXNlIDEyOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbixudWxsLFtbMiw5XV0pfSkpKX1mdW5jdGlvbiBIKHQpe3JldHVybiBfKGIoKS5tYXJrKChmdW5jdGlvbiBlKG4scil7dmFyIGksYSxzO3JldHVybiBiKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuKDAsdS5TYykoIldpbGwgYXR0ZW1wdCB0byBmZXRjaCBzdXJ2ZXkgd2l0aCBzdXJ2ZXlfaWQgIit0KyIgZm9yIHByZXZpZXciKSxpPXIoKSxhPWkuc2Vzc2lvbixlLm5leHQ9NCxvLkF5LmZldGNoU3VydmV5Rm9yUHJldmlldyh7c2Vzc2lvbjphLHN1cnZleUlkOnR9KTtjYXNlIDQ6KHM9ZS5zZW50KSYmbihTKHMpKTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9ZnVuY3Rpb24gRih0LGUsbil7cmV0dXJuIF8oYigpLm1hcmsoKGZ1bmN0aW9uIHIoaSxhKXt2YXIgcyxjLGwsZixwLGgsZztyZXR1cm4gYigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiBzPWEoKSxjPXMuc2Vzc2lvbixsPSgwLGQuSCkoKSwoMCx1LlNjKSgiV2lsbCBhdHRlbXB0IHRvIGZldGNoIHN1cnZleSBydWxlc2V0IHdpdGggaWQgIit0LmlkKSxpKFQodC5pZCkpLHIucHJldj00LHIubmV4dD03LG8uQXkuc3VibWl0U3VydmV5KGMsdC5pZCx0LnN1cnZleVByb2dyZXNzSWQsdC5zdGVwc1swXS5pZCxbe3F1ZXN0aW9uX2lkOmUscmVzcG9uc2U6bn1dLGwpO2Nhc2UgNzpmPXIuc2VudCxwPWYuY29tcGxldGUsaD1mLm5leHRfc3RlcCxnPW0oe30sdCx7c3RlcHM6W10uY29uY2F0KHYoeSx0LnN0ZXBzfHxbXSksWygwLG8uSHEpKGgpXSksYWN0aXZlU3RlcElkOmguaWQsY29tcGxldGVkOnB9KSwoMCx1LlNjKSgiU3VydmV5IHdpdGggaWQgIit0LmlkKyIgaGFzIGJlZW4gdXBkYXRlZCB3aXRoIG5leHQgc3RlcCIpLGkoUyhnKSksci5uZXh0PTE4O2JyZWFrO2Nhc2UgMTU6ci5wcmV2PTE1LHIudDA9ci5jYXRjaCg0KSwoMCx1LlNjKSgiRmFpbGVkIHRvIHJlY29yZCBhbnN3ZXIgYW5kIGZldGNoIG5leHQgc3RlcCBmb3Igc3VydmV5ICIrdC5pZCsiOiIsci50MCk7Y2FzZSAxODpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsbnVsbCxbWzQsMTVdXSl9KSkpfWZ1bmN0aW9uIEQodCxlLG4pe3ZhciByPXQuc3RlcHNbMF0ucXVlc3Rpb25zLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkPT09ZX0pKSxvPXQuc3RlcHNbMF0ucXVlc3Rpb25zLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQ9PT1lfSkpO2lmKHIpcmV0dXJuKDAsdS5TYykoIldpbGwgdXBkYXRlIHF1ZXN0aW9uIHJlc3BvbnNlIGZvciBzdXJ2ZXkgd2l0aCBpZCAiK3QuaWQpLHQuc3RlcHNbMF0ucXVlc3Rpb25zW29dPW0oe30scix7cmVzcG9uc2U6ci5xdWVzdGlvblR5cGU9PT1zLm1CLm11bHRpU2VsZWN0P1tuXTpufSksdDsoMCx1LlNjKSgiQ291bGQgbm90IGZpbmQgbWF0Y2hpbmcgcXVlc3Rpb24iKX1mdW5jdGlvbiBCKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlOygwLHUuU2MpKCJDaGVja2luZyBmb3Igc3VydmV5IGluIFVSTCIpO3ZhciBuLHI9KDAscC5hKShudWxsPT0oZT13aW5kb3cpfHxudWxsPT0oZT1lLnBhcmVudCk/dm9pZCAwOmUubG9jYXRpb24sImludGVyY29tX3N1cnZleV9pZCIpO3J8fChyPW51bGwhPShuPWwuTC5nZXQoInN1cnZleV9wZW5kaW5nX3RyaWdnZXIiKSk/bjp2b2lkIDApO2lmKHIpe3ZhciBvPSJzdXJ2ZXlfdHJpZ2dlcmVkX2Zyb21fdXJsIixpPWwucy5nZXQobyksYT1pP0pTT04ucGFyc2UoaSk6W107KGE9YXx8W10pLmluZGV4T2Yocik+LTE/KDAsdS5TYykoIlN1cnZleSBydWxlc2V0IGlkICIrcisiIGhhcyBhbHJlYWR5IGJlZW4gdHJpZ2dlcmVkIGluIHRoZSBjdXJyZW50IHRhYiIpOigoMCx1LlNjKSgiU3VydmV5IHJ1bGVzZXQgaWQgIityKyIgYXR0YWNoZWQgaW4gdGhlIHVybCIpLHQoVShyLGYuZS5zaGFyZWFibGVfdXJsKSksYS5wdXNoKHIpLGwucy5zZXQobyxKU09OLnN0cmluZ2lmeShhKSkpLGwuTC5yZW1vdmUoInN1cnZleV9wZW5kaW5nX3RyaWdnZXIiKX1lbHNlKDAsdS5TYykoIk5vIGF0dGFjaGVkIHN1cnZleSBmb3VuZCBpbiB0aGUgVVJMIil9fWZ1bmN0aW9uIFYoKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGUsbixyOygwLHUuU2MpKCJDaGVja2luZyBmb3IgZW1haWwgc3VydmV5IGluIFVSTCIpO3ZhciBpPSgwLHAuYSkobnVsbD09KGU9d2luZG93KXx8bnVsbD09KGU9ZS5wYXJlbnQpP3ZvaWQgMDplLmxvY2F0aW9uLCJpbnRlcmNvbV9lbWFpbF9zdXJ2ZXlfaWQiKSxhPSgwLGMuQ0gpKG51bGw9PShuPXdpbmRvdyl8fG51bGw9PShuPW4ucGFyZW50KT92b2lkIDA6bi5sb2NhdGlvbikuaW50ZXJjb21fZW1haWxfc3VydmV5X3F1ZXN0aW9uX3Jlc3BvbnNlLGY9KDAsYy5DSCkobnVsbD09KHI9d2luZG93KXx8bnVsbD09KHI9ci5wYXJlbnQpP3ZvaWQgMDpyLmxvY2F0aW9uKS5pbnRlcmNvbV9lbWFpbF9zdXJ2ZXlfcXVlc3Rpb25faWQ7aWYoaSl7dmFyIGQ9InN1cnZleV90cmlnZ2VyZWRfZnJvbV9lbWFpbCIsaD1sLnMuZ2V0KGQpLHY9aD9KU09OLnBhcnNlKGgpOltdOyh2PXZ8fFtdKS5pbmRleE9mKGkpPi0xPygwLHUuU2MpKCJTdXJ2ZXkgcnVsZXNldCBpZCAiK2krIiBoYXMgYWxyZWFkeSBiZWVuIHRyaWdnZXJlZCBpbiB0aGUgY3VycmVudCB0YWIiKTooKDAsdS5TYykoIlN1cnZleSBydWxlc2V0IGlkICIraSsiIGF0dGFjaGVkIGluIHRoZSB1cmwiKSx0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIF8oYigpLm1hcmsoKGZ1bmN0aW9uIG4ocixpKXt2YXIgYSxjLGwsZixkLHAsaCx2O3JldHVybiBiKCkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIGE9aSgpLGM9YS5zZXNzaW9uLGw9ZS5xdWVzdGlvbklkLGY9ZS5xdWVzdGlvblJlc3BvbnNlLG4ucHJldj0yLG4ubmV4dD01LG8uQXkuZmV0Y2hTdXJ2ZXlGcm9tU25pcHBldCh7c2Vzc2lvbjpjLHN1cnZleUlkOnR9KTtjYXNlIDU6aWYoZD1uLnNlbnQpe24ubmV4dD04O2JyZWFrfXJldHVybiBuLmFicnVwdCgicmV0dXJuIik7Y2FzZSA4OmlmKHA9ZC5zdGVwcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkPT09ZC5hY3RpdmVTdGVwSWR9KSlbMF0ucXVlc3Rpb25zLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQ9PT1sfSkpWzBdLGg9ZnVuY3Rpb24oKXt2YXIgdCxlPSJzdHJpbmciPT10eXBlb2YgZj9wYXJzZUZsb2F0KGYpOnZvaWQgMCxuPSJzdHJpbmciPT10eXBlb2YgZiYmKG51bGw9PSh0PXAuZGF0YS5vcHRpb25zKT92b2lkIDA6LTEhPT10LmluZGV4T2YoZikpLHI9dm9pZCAwIT09ZSYmIWlzTmFOKGUpJiZwLmRhdGEuc2NhbGVTdGFydDw9ZSYmZTw9cC5kYXRhLnNjYWxlRW5kO3JldHVybiBwLnF1ZXN0aW9uVHlwZT09PXMubUIubXVsdGlTZWxlY3Q/bjpyfSxwJiZmJiZoKCkpe24ubmV4dD0xNDticmVha31yZXR1cm4oMCx1LlNjKSgiQ291bGQgbm90IGZpbmQgbWF0Y2hpbmcgcXVlc3Rpb24sIHF1ZXN0aW9uIHJlc3BvbnNlIHdhcyBub3QgcHJvdmlkZWQgb3IgcXVlc3Rpb24gb3B0aW9ucyBkbyBub3QgbWF0Y2ggd2l0aCByZXNwb25zZSAtIHJldHVybmluZyByZWd1bGFyIHN1cnZleSIpLHIoUyhkKSksbi5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMTQ6dj1EKGQsbCxmKSwobnVsbD09ZD92b2lkIDA6ZC5mb3JtYXQpPT09cy56Ui5iYW5uZXImJnYmJigoMCx1LlNjKSgiV2lsbCBhdHRlbXB0IHRvIHJlY29yZCBhbnN3ZXIgIitmKyIgYW5kIGZldGNoIG5leHQgc3RlcCIpLHIoRih2LGwsZikpKSwobnVsbD09ZD92b2lkIDA6ZC5mb3JtYXQpPT09cy56Ui5wb3N0JiZ2JiYoKDAsdS5TYykoIldpbGwgbWFyayBzZWxlY3RlZCBhbnN3ZXIgIitmKSxyKFModikpKSxuLm5leHQ9MjI7YnJlYWs7Y2FzZSAxOTpuLnByZXY9MTksbi50MD1uLmNhdGNoKDIpLCgwLHUuU2MpKCJGYWlsZWQgdG8gZmV0Y2ggc3VydmV5IGZyb20gc25pcHBldCB3aXRoIGlkICIrdCsiOiIsbi50MCk7Y2FzZSAyMjpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sbnVsbCxbWzIsMTldXSl9KSkpfShpLHtzdXJ2ZXlJZDppLHF1ZXN0aW9uUmVzcG9uc2U6YSxxdWVzdGlvbklkOmZ9KSksdi5wdXNoKGkpLGwucy5zZXQoZCxKU09OLnN0cmluZ2lmeSh2KSkpfWVsc2UoMCx1LlNjKSgiTm8gYXR0YWNoZWQgc3VydmV5IGZvdW5kIGluIHRoZSBVUkwiKX19fSwyMTEyOTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtVMzpmdW5jdGlvbigpe3JldHVybiBtfSxWMDpmdW5jdGlvbigpe3JldHVybiB5fSxWZjpmdW5jdGlvbigpe3JldHVybiBofSxYeTpmdW5jdGlvbigpe3JldHVybiBifSxZSzpmdW5jdGlvbigpe3JldHVybiB2fSxaMjpmdW5jdGlvbigpe3JldHVybiBjfSxadzpmdW5jdGlvbigpe3JldHVybiB3fSxpczpmdW5jdGlvbigpe3JldHVybiBTfSxvbjpmdW5jdGlvbigpe3JldHVybiBwfSx1RzpmdW5jdGlvbigpe3JldHVybiBnfX0pO3ZhciByPW4oNjYyNzQpLG89big2Mzc5OCk7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0saSh0KX1mdW5jdGlvbiBhKCl7YT1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LHU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30scz11Lml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsYz11LmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLGw9dS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGYodCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Zih7fSwiIil9Y2F0Y2godCl7Zj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gZCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGI/ZTpiLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgaihyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOkkodCxuLHUpfSksYX1mdW5jdGlvbiBwKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWQ7dmFyIGg9InN1c3BlbmRlZFN0YXJ0Iix2PSJzdXNwZW5kZWRZaWVsZCIseT0iZXhlY3V0aW5nIixnPSJjb21wbGV0ZWQiLG09e307ZnVuY3Rpb24gYigpe31mdW5jdGlvbiB3KCl7fWZ1bmN0aW9uIF8oKXt9dmFyIFM9e307ZihTLHMsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIHg9T2JqZWN0LmdldFByb3RvdHlwZU9mLEU9eCYmeCh4KFAoW10pKSk7RSYmRSE9PW4mJnIuY2FsbChFLHMpJiYoUz1FKTt2YXIgQz1fLnByb3RvdHlwZT1iLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFMpO2Z1bmN0aW9uIE8odCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtmKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEEodCxlKXtmdW5jdGlvbiBuKG8sYSx1LHMpe3ZhciBjPXAodFtvXSx0LGEpO2lmKCJ0aHJvdyIhPT1jLnR5cGUpe3ZhciBsPWMuYXJnLGY9bC52YWx1ZTtyZXR1cm4gZiYmIm9iamVjdCI9PWkoZikmJnIuY2FsbChmLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGYuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCx1LHMpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LHUscyl9KSk6ZS5yZXNvbHZlKGYpLnRoZW4oKGZ1bmN0aW9uKHQpe2wudmFsdWU9dCx1KGwpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCx1LHMpfSkpfXMoYy5hcmcpfXZhciBhO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBhPWE/YS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIEkoZSxuLHIpe3ZhciBvPWg7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PXkpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09Zyl7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9ayh1LHIpO2lmKHMpe2lmKHM9PT1tKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWgpdGhyb3cgbz1nLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz15O3ZhciBjPXAoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT9nOnYsYy5hcmc9PT1tKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89ZyxyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIGsoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LGsoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksbTt2YXIgaT1wKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwsbTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwsbSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCxtKX1mdW5jdGlvbiBMKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIFQodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIGoodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChMLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW3NdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGE9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBhLm5leHQ9YX19dGhyb3cgbmV3IFR5cGVFcnJvcihpKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIHcucHJvdG90eXBlPV8sbyhDLCJjb25zdHJ1Y3RvciIse3ZhbHVlOl8sY29uZmlndXJhYmxlOiEwfSksbyhfLCJjb25zdHJ1Y3RvciIse3ZhbHVlOncsY29uZmlndXJhYmxlOiEwfSksdy5kaXNwbGF5TmFtZT1mKF8sbCwiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LF8pOih0Ll9fcHJvdG9fXz1fLGYodCxsLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEMpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LE8oQS5wcm90b3R5cGUpLGYoQS5wcm90b3R5cGUsYywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QSxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEEoZCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxPKEMpLGYoQyxsLCJHZW5lcmF0b3IiKSxmKEMscywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxmKEMsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9UCxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goVCksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLG0pOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksbX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxUKG4pLG19fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7VChuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLG19fSxlfWZ1bmN0aW9uIHUodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpe3UoaSxyLG8sYSxzLCJuZXh0Iix0KX1mdW5jdGlvbiBzKHQpe3UoaSxyLG8sYSxzLCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX1mdW5jdGlvbiBjKHQsZSxuLHIpe3JldHVybiBzKGEoKS5tYXJrKChmdW5jdGlvbiBvKGksdSl7dmFyIHMsYyxwO3JldHVybiBhKCkud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6cmV0dXJuIHM9dSgpLGM9cy5zZXNzaW9uLGkobChlKSksby5wcmV2PTIsby5uZXh0PTUsdC5jcmVhdGVUaWNrZXQoYyx7dGlja2V0VHlwZUlkOmUsY29udmVyc2F0aW9uSWQ6cixhdHRyaWJ1dGVzOm59KTtjYXNlIDU6cmV0dXJuIHA9by5zZW50LGkoZihlKSksby5hYnJ1cHQoInJldHVybiIscCk7Y2FzZSAxMDpyZXR1cm4gby5wcmV2PTEwLG8udDA9by5jYXRjaCgyKSxpKGQoZSkpLG8uYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiBvLnN0b3AoKX19KSxvLG51bGwsW1syLDEwXV0pfSkpKX1mdW5jdGlvbiBsKHQpe3JldHVybnt0eXBlOnIuQVRFLHRpY2tldFR5cGVJZDp0fX1mdW5jdGlvbiBmKHQpe3JldHVybnt0eXBlOnIubTdyLHRpY2tldFR5cGVJZDp0fX1mdW5jdGlvbiBkKHQpe3JldHVybnt0eXBlOnIuaHJKLHRpY2tldFR5cGVJZDp0fX1mdW5jdGlvbiBwKHQpe3JldHVybiBzKGEoKS5tYXJrKChmdW5jdGlvbiBlKG4scil7dmFyIGksdSxzO3JldHVybiBhKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGk9cigpLHU9aS5zZXNzaW9uLGUucHJldj0xLGUubmV4dD00LHQuZ2V0VGlja2V0VHlwZXModSk7Y2FzZSA0OnJldHVybiBzPWUuc2VudCxuKCgwLG8ucikocykpLGUuYWJydXB0KCJyZXR1cm4iLHMpO2Nhc2UgOTpyZXR1cm4gZS5wcmV2PTksZS50MD1lLmNhdGNoKDEpLGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMTI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1sxLDldXSl9KSkpfXZhciBoPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3R5cGU6ci5fNEosdGlja2V0czp0LG5leHRQYWdlOmV9fSx2PWZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOnIuJFhKLHRpY2tldHNQb3J0YWxVcmw6dH19LHk9ZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6ci5tNXQsY29udmVyc2F0aW9uc1BvcnRhbFVybDp0fX0sZz1mdW5jdGlvbih0KXtyZXR1cm57dHlwZTpyLlN2QSx0aWNrZXQ6dH19LG09ZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6ci5uMl8saWQ6dH19LGI9ZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6ci5jbHUsaWQ6dH19O2Z1bmN0aW9uIHcodCxlLG4scil7cmV0dXJuIHZvaWQgMD09PW4mJihuPVtdKSxzKGEoKS5tYXJrKChmdW5jdGlvbiBvKGksdSl7dmFyIHMsYyxsO3JldHVybiBhKCkud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6cmV0dXJuIHM9dSgpLGM9cy5zZXNzaW9uLG8ucHJldj0xLG8ubmV4dD00LHQuZ2V0VGlja2V0Rm9ybShjLGUsbixyKTtjYXNlIDQ6cmV0dXJuIGw9by5zZW50LGkoXyhsKSksby5hYnJ1cHQoInJldHVybiIsbCk7Y2FzZSA5OnJldHVybiBvLnByZXY9OSxvLnQwPW8uY2F0Y2goMSksby5hYnJ1cHQoInJldHVybiIsbnVsbCk7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIG8uc3RvcCgpfX0pLG8sbnVsbCxbWzEsOV1dKX0pKSl9dmFyIF89ZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6ci5RNHgsdGlja2V0Rm9ybTp0fX0sUz1mdW5jdGlvbih0KXtyZXR1cm57dHlwZTpyLm9POCx0aWNrZXRGb3JtOnt0aWNrZXRUeXBlSWQ6dH19fX0sMjI5MDY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7JEg6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sVkw6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sWmU6ZnVuY3Rpb24oKXtyZXR1cm4gdn0sZEg6ZnVuY3Rpb24oKXtyZXR1cm4gY30saWU6ZnVuY3Rpb24oKXtyZXR1cm4gcH0sbjk6ZnVuY3Rpb24oKXtyZXR1cm4geX0sc2M6ZnVuY3Rpb24oKXtyZXR1cm4gaH19KTt2YXIgcj1uKDY2Mjc0KSxvPW4oMzgyNTMpO2Z1bmN0aW9uIGkodCl7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGkodCl9ZnVuY3Rpb24gYSgpe2E9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSx1PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LHM9dS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLGM9dS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixsPXUudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBmKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Yoe30sIiIpfWNhdGNoKHQpe2Y9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGQodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBiP2U6YixhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IGoocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpJKHQsbix1KX0pLGF9ZnVuY3Rpb24gcCh0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1kO3ZhciBoPSJzdXNwZW5kZWRTdGFydCIsdj0ic3VzcGVuZGVkWWllbGQiLHk9ImV4ZWN1dGluZyIsZz0iY29tcGxldGVkIixtPXt9O2Z1bmN0aW9uIGIoKXt9ZnVuY3Rpb24gdygpe31mdW5jdGlvbiBfKCl7fXZhciBTPXt9O2YoUyxzLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciB4PU9iamVjdC5nZXRQcm90b3R5cGVPZixFPXgmJngoeChQKFtdKSkpO0UmJkUhPT1uJiZyLmNhbGwoRSxzKSYmKFM9RSk7dmFyIEM9Xy5wcm90b3R5cGU9Yi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShTKTtmdW5jdGlvbiBPKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Zih0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBBKHQsZSl7ZnVuY3Rpb24gbihvLGEsdSxzKXt2YXIgYz1wKHRbb10sdCxhKTtpZigidGhyb3ciIT09Yy50eXBlKXt2YXIgbD1jLmFyZyxmPWwudmFsdWU7cmV0dXJuIGYmJiJvYmplY3QiPT1pKGYpJiZyLmNhbGwoZiwiX19hd2FpdCIpP2UucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsdSxzKX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCx1LHMpfSkpOmUucmVzb2x2ZShmKS50aGVuKChmdW5jdGlvbih0KXtsLnZhbHVlPXQsdShsKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsdSxzKX0pKX1zKGMuYXJnKX12YXIgYTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gYT1hP2EudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBJKGUsbixyKXt2YXIgbz1oO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT15KXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PWcpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPWsodSxyKTtpZihzKXtpZihzPT09bSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1oKXRocm93IG89ZyxyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289eTt2YXIgYz1wKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/Zzp2LGMuYXJnPT09bSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPWcsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBrKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxrKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLG07dmFyIGk9cChvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLG07dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLG0pOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwsbSl9ZnVuY3Rpb24gTCh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBUKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBqKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goTCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVtzXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxhPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gYS5uZXh0PWF9fXRocm93IG5ldyBUeXBlRXJyb3IoaShlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiB3LnByb3RvdHlwZT1fLG8oQywiY29uc3RydWN0b3IiLHt2YWx1ZTpfLGNvbmZpZ3VyYWJsZTohMH0pLG8oXywiY29uc3RydWN0b3IiLHt2YWx1ZTp3LGNvbmZpZ3VyYWJsZTohMH0pLHcuZGlzcGxheU5hbWU9ZihfLGwsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT13fHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxfKToodC5fX3Byb3RvX189XyxmKHQsbCwiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShDKSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxPKEEucHJvdG90eXBlKSxmKEEucHJvdG90eXBlLGMsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUEsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBBKGQodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sTyhDKSxmKEMsbCwiR2VuZXJhdG9yIiksZihDLHMsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZihDLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVAsai5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmoscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKFQpLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxtKTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLG19LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksVChuKSxtfX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO1Qobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSxtfX0sZX1mdW5jdGlvbiB1KHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXt1KGkscixvLGEscywibmV4dCIsdCl9ZnVuY3Rpb24gcyh0KXt1KGkscixvLGEscywidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19ZnVuY3Rpb24gYyh0KXt2YXIgZT10LnNlc3Npb24sbj10LmN1c3RvbUF0dHJpYnV0ZXM7cmV0dXJuIHMoYSgpLm1hcmsoKGZ1bmN0aW9uIHQocil7dmFyIGksdTtyZXR1cm4gYSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnByZXY9MCx0Lm5leHQ9MyxvLkF5LmZldGNoVG9vbHRpcHMoe3Nlc3Npb246ZSxjdXN0b21BdHRyaWJ1dGVzOm59KTtjYXNlIDM6aT10LnNlbnQsdT1vLkF5LmJ1aWxkVG9vbHRpcEdyb3VwcyhudWxsPT1pP3ZvaWQgMDppLnRvb2x0aXBfZ3JvdXBzKSxyKGQodSkpLHQubmV4dD0xMTticmVhaztjYXNlIDg6cmV0dXJuIHQucHJldj04LHQudDA9dC5jYXRjaCgwKSx0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAxMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzAsOF1dKX0pKSl9ZnVuY3Rpb24gbCh0LGUpe3JldHVybiBzKGEoKS5tYXJrKChmdW5jdGlvbiBuKHIsaSl7dmFyIHUscztyZXR1cm4gYSgpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiB1PWkoKSxzPXUuc2Vzc2lvbixuLnByZXY9MSxuLm5leHQ9NCxvLkF5Lm1hcmtUb29sdGlwVmlld2VkKHMsdCxlKTtjYXNlIDQ6cihmKHQpKSxuLm5leHQ9MTA7YnJlYWs7Y2FzZSA3OnJldHVybiBuLnByZXY9NyxuLnQwPW4uY2F0Y2goMSksbi5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLG51bGwsW1sxLDddXSl9KSkpfWZ1bmN0aW9uIGYodCl7cmV0dXJue3R5cGU6ci5wVTUsdG9vbHRpcElkOnR9fWZ1bmN0aW9uIGQodCl7cmV0dXJue3R5cGU6ci5QYXQsdG9vbHRpcEdyb3Vwczp0fX1mdW5jdGlvbiBwKHQpe3JldHVybnt0eXBlOnIuTktYLHRvb2x0aXBJZDp0fX1mdW5jdGlvbiBoKHQpe3JldHVybnt0eXBlOnIubDVuLG1hdGNoZXM6dH19ZnVuY3Rpb24gdih0KXtyZXR1cm57dHlwZTpyLlU5aSx0b29sdGlwR3JvdXA6dH19ZnVuY3Rpb24geSgpe3JldHVybnt0eXBlOnIubnZ9fX0sOTUxNjg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7QzU6ZnVuY3Rpb24oKXtyZXR1cm4gUn0sRGc6ZnVuY3Rpb24oKXtyZXR1cm4gQn0sRzg6ZnVuY3Rpb24oKXtyZXR1cm4gQX0sSl86ZnVuY3Rpb24oKXtyZXR1cm4ga30sVGM6ZnVuY3Rpb24oKXtyZXR1cm4gVn0sWjQ6ZnVuY3Rpb24oKXtyZXR1cm4gVX0sZlM6ZnVuY3Rpb24oKXtyZXR1cm4gR30sa3g6ZnVuY3Rpb24oKXtyZXR1cm4gTX0sbTc6ZnVuY3Rpb24oKXtyZXR1cm4gen0sb3M6ZnVuY3Rpb24oKXtyZXR1cm4gV30scks6ZnVuY3Rpb24oKXtyZXR1cm4gS30sdTc6ZnVuY3Rpb24oKXtyZXR1cm4gSX19KTt2YXIgcj1uKDk5NDM5KSxvPW4oOTQyMTQpLGk9bigxNDQ3MSksYT1uKDY2ODM4KSx1PW4oODcxMzMpLHM9big2OTc0NCksYz1uKDg0MzgyKSxsPW4oMzgyNTMpLGY9big2MTM2NyksZD1uKDUxNDgwKSxwPW4oMjI5NzkpLGg9bigzNTIwNiksdj1uKDY2Mjc0KSx5PW4oNjY3OTkpLGc9bigxNzc3NyksbT1uKDY2ODU0KTtmdW5jdGlvbiBiKHQpe3JldHVybiBiPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxiKHQpfWZ1bmN0aW9uIHcoKXtyZXR1cm4gdz1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LHcuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIF8oKXtfPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciB0LGU9e30sbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLG4pe3RbZV09bi52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxhPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIix1PWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyh0LGUsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtjKHt9LCIiKX1jYXRjaCh0KXtjPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1ufX1mdW5jdGlvbiBsKHQsZSxuLHIpe3ZhciBpPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgZz9lOmcsYT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBqKHJ8fFtdKTtyZXR1cm4gbyhhLCJfaW52b2tlIix7dmFsdWU6SSh0LG4sdSl9KSxhfWZ1bmN0aW9uIGYodCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX1lLndyYXA9bDt2YXIgZD0ic3VzcGVuZGVkU3RhcnQiLHA9InN1c3BlbmRlZFlpZWxkIixoPSJleGVjdXRpbmciLHY9ImNvbXBsZXRlZCIseT17fTtmdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIG0oKXt9ZnVuY3Rpb24gdygpe312YXIgUz17fTtjKFMsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgeD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsRT14JiZ4KHgoUChbXSkpKTtFJiZFIT09biYmci5jYWxsKEUsYSkmJihTPUUpO3ZhciBDPXcucHJvdG90eXBlPWcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoUyk7ZnVuY3Rpb24gTyh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2ModCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQSh0LGUpe2Z1bmN0aW9uIG4obyxpLGEsdSl7dmFyIHM9Zih0W29dLHQsaSk7aWYoInRocm93IiE9PXMudHlwZSl7dmFyIGM9cy5hcmcsbD1jLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09YihsKSYmci5jYWxsKGwsIl9fYXdhaXQiKT9lLnJlc29sdmUobC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUobCkudGhlbigoZnVuY3Rpb24odCl7Yy52YWx1ZT10LGEoYyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShzLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gSShlLG4scil7dmFyIG89ZDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09aCl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT12KXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1rKHUscik7aWYocyl7aWYocz09PXkpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09ZCl0aHJvdyBvPXYsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPWg7dmFyIGM9ZihlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP3Y6cCxjLmFyZz09PXkpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz12LHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gayhlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsayhlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSx5O3ZhciBpPWYobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCx5O3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCx5KTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLHkpfWZ1bmN0aW9uIEwodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gVCh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gaih0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEwsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKGIoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gbS5wcm90b3R5cGU9dyxvKEMsImNvbnN0cnVjdG9yIix7dmFsdWU6dyxjb25maWd1cmFibGU6ITB9KSxvKHcsImNvbnN0cnVjdG9yIix7dmFsdWU6bSxjb25maWd1cmFibGU6ITB9KSxtLmRpc3BsYXlOYW1lPWModyxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09bXx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsdyk6KHQuX19wcm90b19fPXcsYyh0LHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQyksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sTyhBLnByb3RvdHlwZSksYyhBLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1BLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQShsKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LE8oQyksYyhDLHMsIkdlbmVyYXRvciIpLGMoQyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMoQywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1QLGoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpqLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChUKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MseSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSx5fSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLFQobikseX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztUKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpQKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCkseX19LGV9ZnVuY3Rpb24gUyh0LGUsbixyLG8saSxhKXt0cnl7dmFyIHU9dFtpXShhKSxzPXUudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbih0KX11LmRvbmU/ZShzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIHgodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7UyhpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7UyhpLHIsbyxhLHUsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9fXZhciBFPTAsQz01ZTM7ZnVuY3Rpb24gTyh0KXtyZXR1cm4oMCxyLnZuKSh0KXx8KDAsci5PNykodCl8fCgwLHIuRVApKHQpfWZ1bmN0aW9uIEEoKXtyZXR1cm4geChfKCkubWFyaygoZnVuY3Rpb24gdChlLG4pe3ZhciBvLGksYSx1LHMsZixoO3JldHVybiBfKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYobz1uKCksaT1uKCksYT1pLnNlc3Npb24sdT0oMCxyLkdRKShvKSl7dC5uZXh0PTY7YnJlYWt9cmV0dXJuKDAsYy5rNykoIk5vIGFjdGl2ZSB0b3VyIGZvdW5kLCBjYW5ub3QgcHJvZ3Jlc3MiKSx0LmFicnVwdCgicmV0dXJuIik7Y2FzZSA2OmlmKHM9dS5pZCxmPXUucHJvZ3Jlc3NJZCwhKGg9KDAsci5zWCkobykpKXt0Lm5leHQ9MjU7YnJlYWt9aWYoKDAsYy5rNykoIlRvdXIgd2l0aCBpZCAiK3MrIiBpcyBhdHRlbXB0aW5nIHRvIHByb2dyZXNzIHRvIHN0ZXAgIitoKSxPKG8pKXt0Lm5leHQ9MjE7YnJlYWt9cmV0dXJuIGUoe3R5cGU6di54dTJ9KSx0LnByZXY9MTIsdC5uZXh0PTE1LGwuQXkucHJvZ3Jlc3NUb3VyKGEscyxoLmlkLGYpO2Nhc2UgMTU6dC5uZXh0PTIxO2JyZWFrO2Nhc2UgMTc6dC5wcmV2PTE3LHQudDA9dC5jYXRjaCgxMiksZSh7dHlwZTp2LiRTWn0pLCgwLGMuazcpKCJDb3VsZCBub3QgdXBkYXRlIHRvdXIgZHVlIHRvIGU9Iit0LnQwKTtjYXNlIDIxOigwLHIuTzcpKG8pJiZwLnMuc2V0KCJ0b3VyX3Byb2dyZXNzX3ByZXZpZXciLGguaWQpLG5ldyBkLkgobywoZnVuY3Rpb24oKXtlKEgoaC5pZCxmKSksZSh7dHlwZTp2LkEwZX0pfSkpLHQubmV4dD0yOTticmVhaztjYXNlIDI1OndpbmRvdy5wYXJlbnQmJndpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoImV4aXRfdG91cl9wcmV2aWV3IiwiKiIpLFQocyksZShGKGYpKSxlKCgwLHkub3cpKCkpO2Nhc2UgMjk6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1sxMiwxN11dKX0pKSl9ZnVuY3Rpb24gSSgpe3JldHVybiB4KF8oKS5tYXJrKChmdW5jdGlvbiB0KGUsbil7dmFyIG8saSxhLHUscyxmO3JldHVybiBfKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYobz1uKCksaT0oMCxyLkdRKShvKSxhPW4oKSx1PWEuc2Vzc2lvbixzPXdpbmRvdy5wYXJlbnQsKDAsci5PNykobykpe3QubmV4dD0xOTticmVha31yZXR1cm4gZSh7dHlwZTp2LlA4aX0pLHQucHJldj02LCgwLGMuQ1opKE51bWJlcihudWxsPT1pP3ZvaWQgMDppLmlkKSksdC5uZXh0PTEwLGwuQXkucmVzZXRUb3VyKHUsbnVsbD09aT92b2lkIDA6aS5pZCk7Y2FzZSAxMDooZj10LnNlbnQpLnByb2dyZXNzX3N0YXJ0X3VybD8obnVsbD09cy5fX2ludGVyY29tQXNzaWduTG9jYXRpb258fHMuX19pbnRlcmNvbUFzc2lnbkxvY2F0aW9uKGYucHJvZ3Jlc3Nfc3RhcnRfdXJsKSwtMSE9PWYucHJvZ3Jlc3Nfc3RhcnRfdXJsLmluZGV4T2YoIiMiKSYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtudWxsPT1zLl9faW50ZXJjb21SZWxvYWRMb2NhdGlvbnx8cy5fX2ludGVyY29tUmVsb2FkTG9jYXRpb24oKX0pLDFlMykpOigwLGMuazcpKCJDb3VsZCBub3QgcmVkaXJlY3QgVG91ciBkdWUgdG8gaW4gdmFsaWQgcHJvZ3Jlc3MgVVJMIiksdC5uZXh0PTE3O2JyZWFrO2Nhc2UgMTQ6dC5wcmV2PTE0LHQudDA9dC5jYXRjaCg2KSwoMCxjLms3KSgiQ291bGQgbm90IHJlc2V0IHRvdXIgZHVlIHRvIGV4Y2VwdGlvbiAtICIrdC50MCk7Y2FzZSAxNzp0Lm5leHQ9MjE7YnJlYWs7Y2FzZSAxOTpwLnMucmVtb3ZlKCJ0b3VyX3Byb2dyZXNzX3ByZXZpZXciKSxudWxsIT1pJiZpLnVybCYmKG51bGw9PXMuX19pbnRlcmNvbUFzc2lnbkxvY2F0aW9ufHxzLl9faW50ZXJjb21Bc3NpZ25Mb2NhdGlvbihpLnVybCkpO2Nhc2UgMjE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1s2LDE0XV0pfSkpKX1mdW5jdGlvbiBrKCl7cmV0dXJuIHgoXygpLm1hcmsoKGZ1bmN0aW9uIHQoZSxuKXt2YXIgbyxhLHUscyxmLGQscDtyZXR1cm4gXygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKG89bigpLGE9bigpLHU9YS5zZXNzaW9uLHM9KDAsci5HUSkobykpe3QubmV4dD02O2JyZWFrfXJldHVybigwLGMuazcpKCJObyBhY3RpdmUgdG91ciBmb3VuZCwgY2Fubm90IHNub296ZSIpLHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDY6aWYoZj1zLmlkLGQ9cy5wcm9ncmVzc0lkLCgwLHIuTzcpKG8pKWUoWigiIikpO2Vsc2V7ZSh7dHlwZToiU05PT1pFX1RPVVIifSk7dHJ5e3A9aS53LlRPVVIsbC5BeS5zbm9vemVDb250ZW50T2JqZWN0SW5zdGFuY2UodSxwLGYsZCl9Y2F0Y2godCl7KDAsYy5rNykoIkNvdWxkIG5vdCBzbm9vemUgdG91ciBkdWUgdG8gZXhjZXB0aW9uIC0gIit0KX19Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfWZ1bmN0aW9uIEwodCxlKXtpZigoMCxmLmopKCkpe3ZhciBuPW5ldyBDdXN0b21FdmVudCh0LHtkZXRhaWw6ZX0pO3dpbmRvdy5wYXJlbnQuZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuKX19ZnVuY3Rpb24gVCh0KXtMKCJpbnRlcmNvbTp0b3VyQ29tcGxldGUiLHt0b3VySWQ6dH0pfWZ1bmN0aW9uIGoodCl7TCgiaW50ZXJjb206dG91ckVycm9yIix7dG91cklkOnR9KX1mdW5jdGlvbiBQKHQsZSxuLHIsbyl7cmV0dXJuIE4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIE4oKXtyZXR1cm4oTj14KF8oKS5tYXJrKChmdW5jdGlvbiB0KGUsbixyLG8saSl7cmV0dXJuIF8oKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5wcmV2PTAsdC5uZXh0PTMsZSgpO2Nhc2UgMzpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDY6aWYodC5wcmV2PTYsdC50MD10LmNhdGNoKDApLGE9dC50MCx1PXZvaWQgMCxzPXZvaWQgMCwtMT09PShzPVN0cmluZyhudWxsIT0odT1udWxsPT1hP3ZvaWQgMDphLm1lc3NhZ2UpP3U6YSkudG9Mb3dlckNhc2UoKSkuaW5kZXhPZigiYWxyZWFkeSBpbmFjdGl2ZSIpJiYtMT09PXMuaW5kZXhPZigiYWxyZWFkeSBzdG9wcGVkIikmJi0xPT09cy5pbmRleE9mKCJhbHJlYWR5IGNvbXBsZXRlZCIpKXt0Lm5leHQ9MTI7YnJlYWt9cmV0dXJuKDAsYy5rNykoIlRvdXIgIituKyIgIitvKSxudWxsPT1pfHxpKCksdC5hYnJ1cHQoInJldHVybiIsdm9pZCAwKTtjYXNlIDEyOnJldHVybigwLGMuazcpKCJDb3VsZCBub3QgIityKyIgdG91ciBkdWUgdG8gZT0iK3QudDApLHQuYWJydXB0KCJyZXR1cm4iLHZvaWQgMCk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfXZhciBhLHUsc30pLHQsbnVsbCxbWzAsNl1dKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBNKCl7cmV0dXJuIHgoXygpLm1hcmsoKGZ1bmN0aW9uIHQoZSxuKXt2YXIgbyxpLGEsdSxzLGY7cmV0dXJuIF8oKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZihvPW4oKSxpPSgwLHIuR1EpKG8pKXt0Lm5leHQ9NTticmVha31yZXR1cm4oMCxjLms3KSgiTm8gYWN0aXZlIHRvdXIgZm91bmQsIGNhbm5vdCBjb21wbGV0ZSIpLHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDU6aWYoYT1pLmlkLHU9aS5wcm9ncmVzc0lkLHM9bigpLGY9cy5zZXNzaW9uLCgwLGMuazcpKCJUb3VyIHdpdGggaWQgIithKyIgbWFya2VkIGFzIGNvbXBsZXRlIiksTyhvKSl7dC5uZXh0PTEyO2JyZWFrfXJldHVybiBlKHt0eXBlOnYuZHNFfSksdC5uZXh0PTEyLFAoKGZ1bmN0aW9uKCl7cmV0dXJuIGwuQXkuY29tcGxldGVUb3VyKGYsYSx1KX0pLGEsImNvbXBsZXRlIiwiYWxyZWFkeSBpbmFjdGl2ZS9jb21wbGV0ZWQgLSB0cmVhdGluZyBhcyBzdWNjZXNzIik7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX1mdW5jdGlvbiBSKCl7cmV0dXJuIHgoXygpLm1hcmsoKGZ1bmN0aW9uIHQoZSxuKXt2YXIgbyxpLGEsdSxzO3JldHVybiBfKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYobz1uKCksaT0oMCxyLkdRKShvKSl7dC5uZXh0PTU7YnJlYWt9cmV0dXJuKDAsYy5rNykoIk5vIGFjdGl2ZSB0b3VyIGZvdW5kLCBjYW5ub3QgcmVjb3JkIGZhaWx1cmUiKSx0LmFicnVwdCgicmV0dXJuIik7Y2FzZSA1OmlmKGE9aS5pZCx1PWkucHJvZ3Jlc3NJZCxzPSgwLHIuUU8pKG8pLE8obykpe3QubmV4dD0xMTticmVha31yZXR1cm4gaihhKSx0Lm5leHQ9MTEsUCgoZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gbC5BeS5yZWNvcmRUb3VyRmFpbHVyZShvLnNlc3Npb24sYSxudWxsPT1zP3ZvaWQgMDpzLmlkLG51bGw9PXM/dm9pZCAwOnMuc2VsZWN0b3IsbnVsbD09KHQ9d2luZG93KXx8bnVsbD09KHQ9dC5wYXJlbnQpfHxudWxsPT0odD10LmxvY2F0aW9uKT92b2lkIDA6dC5wYXRobmFtZSx1KX0pLGEsInJlY29yZCBmYWlsdXJlIGZvciIsImFscmVhZHkgaW5hY3RpdmUvc3RvcHBlZCAtIHNraXBwaW5nIGZhaWx1cmUgcmVjb3JkaW5nIik7Y2FzZSAxMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX1mdW5jdGlvbiBVKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKCEoMCxoLnJyKSgpKXt2YXIgZSxuPSgwLG0uJCkoKSxyPW51bGw9PW4/dm9pZCAwOm4ubG9jYXRpb247dHJ5e3ZhciBvLGk9bnVsbD09bnx8bnVsbD09KG89bi5wZXJmb3JtYW5jZSl8fG51bGw9PW8uZ2V0RW50cmllc0J5VHlwZXx8bnVsbD09KG89by5nZXRFbnRyaWVzQnlUeXBlKCJuYXZpZ2F0aW9uIikpP3ZvaWQgMDpvWzBdO2lmKG51bGwhPWkmJmkubmFtZSl7aWYoIShlPSgwLHUuQ0gpKGkubmFtZSkucHJvZHVjdF90b3VyX2lkKSl7dmFyIGE9aS5uYW1lLm1hdGNoKC9wcm9kdWN0X3RvdXJfaWQ9KFxkKykvKTthJiYoZT1hWzFdKX1lJiYhZS5tYXRjaCgvXlxkKyQvKSYmKGU9dm9pZCAwKX19Y2F0Y2godCl7KDAsYy5rNykoIlBlcmZvcm1hbmNlIEFQSSB1bmF2YWlsYWJsZSwgZmFsbGluZyBiYWNrIHRvIGxpdmUgVVJMIil9aWYoZXx8KGU9cj8oMCxnLmEpKHIsInByb2R1Y3RfdG91cl9pZCIpOnZvaWQgMCksKDAsYy5rNykoIkNoZWNraW5nIGlmIFVSTCBoYXMgdG91ciBhdHRhY2hlZCIpLGUpe3ZhciBzPSJ0b3VyX3RyaWdnZXJlZF9mcm9tX3VybCIsbD1wLnMuZ2V0KHMpLGY9bD9KU09OLnBhcnNlKGwpOltdOyhmPWZ8fFtdKS5pbmRleE9mKGUpPi0xPygwLGMuazcpKCJUb3VyIHdpdGggaWQgIitlKyIgaGFzIGFscmVhZHkgYmVlbiB0cmlnZ2VyZWQiKTooKDAsYy5rNykoIlRvdXIgaWQgIitlKyIgYXR0YWNoZWQgaW4gdGhlIHVybCIpLHQoeihlKSksZi5wdXNoKGUpLHAucy5zZXQocyxKU09OLnN0cmluZ2lmeShmKSkpfWVsc2UoMCxjLms3KSgiTm8gYXR0YWNoZWQgdG91ciBmb3VuZCBpbiB0aGUgVVJMIil9fX1mdW5jdGlvbiB6KHQpe3JldHVybiB4KF8oKS5tYXJrKChmdW5jdGlvbiBlKG4sbyl7dmFyIGksYSx1LHM7cmV0dXJuIF8oKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZighKDAsaC5ycikoKSl7ZS5uZXh0PTM7YnJlYWt9cmV0dXJuKDAsYy5rNykoIk1vYmlsZSB3ZWIgYnJvd3NlciBkZXRlY3RlZC4gV2lsbCBub3Qgc3RhcnQgdG91ciB3aXRoIGlkICIrdCksZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzppZihpPSgwLHIuR1EpKG8oKSksYT1vKCksdT1hLnNlc3Npb24saSl7ZS5uZXh0PTIwO2JyZWFrfXJldHVybigwLGMuazcpKCJXaWxsIGF0dGVtcHQgdG8gZmV0Y2ggdG91ciB3aXRoIGlkICIrdCksZS5wcmV2PTcsZS5uZXh0PTEwLGwuQXkuZmV0Y2hUb3VyKHtzZXNzaW9uOnUsdG91cklkOnR9KTtjYXNlIDEwOihzPWUuc2VudCkmJnMuaWQmJnMuYWN0aXZlU3RlcElkJiZzLnRpdGxlJiZzLnVybCYmcy5zdGVwcyYmbihWKHMpKSxlLm5leHQ9MTg7YnJlYWs7Y2FzZSAxNDplLnByZXY9MTQsZS50MD1lLmNhdGNoKDcpLHQmJmoodCksKDAsYy5rNykoIkNvdWxkIG5vdCBmZXRjaCBvciBzdGFydCB0b3VyIGR1ZSB0byBlPSIrZS50MCk7Y2FzZSAxODplLm5leHQ9MjE7YnJlYWs7Y2FzZSAyMDooMCxjLms3KSgiQWN0aXZlIHRvdXIgd2l0aCBpZCAiK2kuaWQrIiBhbHJlYWR5IGZvdW5kIHNvIHRvdXIgaWQgIit0KyIgd29uJ3QgYmUgZmV0Y2hlZCIpO2Nhc2UgMjE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1s3LDE0XV0pfSkpKX1mdW5jdGlvbiBIKHQsZSl7cmV0dXJue3R5cGU6di5QVmcsYWN0aXZlU3RlcElkOnQscHJvZ3Jlc3NJZDplfX1mdW5jdGlvbiBGKHQpe3JldHVybnt0eXBlOnYuaDB0LHByb2dyZXNzSWQ6dH19ZnVuY3Rpb24gRCh0LGUpe3JldHVybnt0eXBlOnYuX2pyLHRvdXI6dCxpc1ByZXZpZXdpbmdUb3VyOmV9fWZ1bmN0aW9uIEIodCl7cmV0dXJue3R5cGU6di5YQmssbXV0ZWQ6dH19ZnVuY3Rpb24gVih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtpZighKDAsYS5JKSh0KSl7dmFyIGk9bigpLnVzZXIsdT0oMCxyLkdRKShuKCkpO2lmKCEoMCxhLkkpKHUpKXJldHVybigwLGMuazcpKCJUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGl2ZSB0b3VyIix1KSx2b2lkKDAsYy5rNykoIlRoZSB0b3VyIHdvbid0IGF0dGVtcHQgdG8gc3RhcnQiLHQpO3ZhciBsPWZ1bmN0aW9uKHQpe2lmKHQuc3RlcHMpe3ZhciBlPXQuYWN0aXZlU3RlcElkLG49dC5zdGVwcyxyPW4uZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VJbnQodC5pZCwxMCk9PT1wYXJzZUludChlLDEwKX0pKSxvPW4uc2xpY2UocikuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXQuc2VsZWN0b3J9KSk7aWYobylyZXR1cm4gby5zZWxlY3Rvcn19KHQpO2lmKGwpe3ZhciBkOygwLGMuazcpKCJDaGVja2luZyBpZiBzZWxlY3RvciBvZiB0aGUgZmlyc3QgYWN0aXZlIHBvaW50ZXIgc3RlcCBpcyB2aXNpYmxlIG9uIHRoZSBwYWdlIix0KTt2YXIgcD1udWxsPT0oZD1uKCkuYXBwKXx8bnVsbD09KGQ9ZC5mZWF0dXJlcyk/dm9pZCAwOmQuZGVsYXlUb3VyUmVuZGVyO25ldyBjLnRUKGwscD9DOkUsMCwoZnVuY3Rpb24obil7bj8oKDAsYy5rNykoIk5vZGUgaXMgdmlzaWJsZS4gVG91ciBpcyBhdHRlbXB0aW5nIHRvIHN0YXJ0Iix0KSxlKEQodCwhMSkpLGUoKDAsby5NdSkoKSksKDAscy5KcikoaSwicmVjZWl2ZWQiLCJ0b3VyIiwibWVzc2VuZ2VyIixudWxsLHt0b3VyX2lkOnQuaWR9KSk6KCgwLGMuazcpKCJOb2RlIGlzIG5vdCB2aXNpYmxlLiBUb3VyIHdpbGwgbm90IHN0YXJ0Iix0KSxmdW5jdGlvbih0LGUpeygwLGYuaikoKSYmKCgwLHMub1MpKCJ0b3VyX2ZhaWxlZF9jc3NfZXZhbHVhdGlvbiIse3RvdXJfaWQ6dH0pLCgwLHMudW8pKCJ0b3VyX2ZhaWxlZF9jc3NfZXZhbHVhdGlvbiB0b3VyX2lkPSIrdCkpLCgwLHMuSnIpKGUsInJlY2VpdmVkX2J1dF9mYWlsZWRfY3NzX2V2YWx1YXRpb24iLCJ0b3VyIiwibWVzc2VuZ2VyIixudWxsLHt0b3VyX2lkOnR9KX0odC5pZCxpKSxqKHQuaWQpKX0pLEJvb2xlYW4ocCkpfWVsc2UoMCxjLms3KSgiVG91ciBpcyBhdHRlbXB0aW5nIHRvIHN0YXJ0Iix0KSxlKEQodCwhMSkpLGUoKDAsby5NdSkoKSksKDAscy5KcikoaSwicmVjZWl2ZWQiLCJ0b3VyIiwibWVzc2VuZ2VyIixudWxsLHt0b3VyX2lkOnQuaWR9KX19fWZ1bmN0aW9uIEcodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2UoRCh0LCEwKSksZSgoMCxvLk11KSgpKX19ZnVuY3Rpb24gcSh0LGUpe2lmKCF0KXJldHVybiB0O3RyeXt2YXIgbj1uZXcgVVJMKHQpO3JldHVybiBuLnNlYXJjaFBhcmFtcy5zZXQoInByb2R1Y3RfdG91cl9pZCIsU3RyaW5nKGUpKSxuLnRvU3RyaW5nKCl9Y2F0Y2gobil7dmFyIHI9LTEhPT10LmluZGV4T2YoIj8iKT8iJiI6Ij8iO3JldHVybiIiK3QrcisicHJvZHVjdF90b3VyX2lkPSIrZX19ZnVuY3Rpb24gVyh0KXtyZXR1cm4geChfKCkubWFyaygoZnVuY3Rpb24gZShuLHIpe3ZhciBpLGEscyxmLGQscCxoLHYseSxnLG07cmV0dXJuIF8oKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gaT1yKCksYT1pLnNlc3Npb24sZS5wcmV2PTEsZS5uZXh0PTQsbC5BeS5mZXRjaFRvdXIoe3Nlc3Npb246YSx0b3VySWQ6dH0pO2Nhc2UgNDppZigoZj1lLnNlbnQpJiZmLmlkJiZmLmFjdGl2ZVN0ZXBJZCYmZi50aXRsZSYmZi51cmwmJmYuc3RlcHMpe2UubmV4dD04O2JyZWFrfXJldHVybigwLGMuazcpKCJDb3VsZCBub3QgZmV0Y2ggdG91ciB3aXRoIGlkICIrdCksZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgODpkPWYscD13aW5kb3cucGFyZW50LGg9KDAsdS52eCkoZC51cmwpLHY9dyh7fSxoLHtwb3J0OmgucG9ydCYmcGFyc2VJbnQoaC5wb3J0LDEwKXx8MH0pLHk9bnVsbD09KHM9d2luZG93KXx8bnVsbD09KHM9cy5wYXJlbnQpP3ZvaWQgMDpzLmxvY2F0aW9uLGc9eT97cHJvdG9jb2w6eS5wcm90b2NvbCxob3N0OnkuaG9zdCxwb3J0OnkucG9ydCYmcGFyc2VJbnQoeS5wb3J0LDEwKXx8MCxwYXRobmFtZTp5LnBhdGhuYW1lLGhhc2g6eS5oYXNoLHNlYXJjaDp5LnNlYXJjaCxob3N0bmFtZTp5Lmhvc3RuYW1lLG9yaWdpbjp5Lm9yaWdpbn06dixkLnVybCYmISgwLGMuTDIpKHYsZyk/KG09cShkLnVybCx0KSxudWxsPT1wLl9faW50ZXJjb21Bc3NpZ25Mb2NhdGlvbnx8cC5fX2ludGVyY29tQXNzaWduTG9jYXRpb24obSkpOihuKEQoZCwhMSkpLG4oKDAsby5NdSkoKSkpLGUubmV4dD0yMTticmVhaztjYXNlIDE3OmUucHJldj0xNyxlLnQwPWUuY2F0Y2goMSksaih0KSwoMCxjLms3KSgiQ291bGQgbm90IGZldGNoIG9yIHN0YXJ0IHRvdXIgZHVlIHRvIGU9IitlLnQwKTtjYXNlIDIxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMSwxN11dKX0pKSl9ZnVuY3Rpb24gSygpe3JldHVybiB4KF8oKS5tYXJrKChmdW5jdGlvbiB0KGUsbil7dmFyIG8saSxhLHUscyxmO3JldHVybiBfKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIU8obz1uKCkpKXt0Lm5leHQ9NTticmVha31lKFooIiIpKSx0Lm5leHQ9MTQ7YnJlYWs7Y2FzZSA1OmlmKGk9bigpLGE9aS5zZXNzaW9uLHU9KDAsci5HUSkobykpe3QubmV4dD0xMDticmVha31yZXR1cm4oMCxjLms3KSgiTm8gYWN0aXZlIHRvdXIgZm91bmQsIGNhbm5vdCBzdG9wIiksdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMTA6cmV0dXJuIHM9dS5pZCxmPXUucHJvZ3Jlc3NJZCxlKFooZikpLHQubmV4dD0xNCxQKChmdW5jdGlvbigpe3JldHVybiBsLkF5LnN0b3BUb3VyKGEscyxmKX0pLHMsInN0b3AiLCJhbHJlYWR5IGluYWN0aXZlL3N0b3BwZWQgLSB0cmVhdGluZyBhcyBzdWNjZXNzIik7Y2FzZSAxNDplKCgwLHkub3cpKCkpO2Nhc2UgMTU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9ZnVuY3Rpb24gWih0KXtyZXR1cm57dHlwZTp2Lk9DZCxwcm9ncmVzc0lkOnR9fX0sMjM3MTI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7Y3I6ZnVuY3Rpb24oKXtyZXR1cm4gSH0sRSQ6ZnVuY3Rpb24oKXtyZXR1cm4gRH0sRmI6ZnVuY3Rpb24oKXtyZXR1cm4gcX0sazY6ZnVuY3Rpb24oKXtyZXR1cm4gQn0saGc6ZnVuY3Rpb24oKXtyZXR1cm4gVn0sRkQ6ZnVuY3Rpb24oKXtyZXR1cm4gR30sZHY6ZnVuY3Rpb24oKXtyZXR1cm4gS319KTt2YXIgcj1uKDU3OTIpLG89big5NDIxNCksaT1uKDE4Mzk5KSxhPW4oNDYwNSksdT1uKDE0MTIwKTtmdW5jdGlvbiBzKHQpe3JldHVybiBzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxzKHQpfWZ1bmN0aW9uIGMoKXtjPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciB0LGU9e30sbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLG4pe3RbZV09bi52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxhPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIix1PWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsbD1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gZih0LGUsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtmKHt9LCIiKX1jYXRjaCh0KXtmPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1ufX1mdW5jdGlvbiBkKHQsZSxuLHIpe3ZhciBpPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgYj9lOmIsYT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBqKHJ8fFtdKTtyZXR1cm4gbyhhLCJfaW52b2tlIix7dmFsdWU6SSh0LG4sdSl9KSxhfWZ1bmN0aW9uIHAodCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX1lLndyYXA9ZDt2YXIgaD0ic3VzcGVuZGVkU3RhcnQiLHY9InN1c3BlbmRlZFlpZWxkIix5PSJleGVjdXRpbmciLGc9ImNvbXBsZXRlZCIsbT17fTtmdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIHcoKXt9ZnVuY3Rpb24gXygpe312YXIgUz17fTtmKFMsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgeD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsRT14JiZ4KHgoUChbXSkpKTtFJiZFIT09biYmci5jYWxsKEUsYSkmJihTPUUpO3ZhciBDPV8ucHJvdG90eXBlPWIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoUyk7ZnVuY3Rpb24gTyh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2YodCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQSh0LGUpe2Z1bmN0aW9uIG4obyxpLGEsdSl7dmFyIGM9cCh0W29dLHQsaSk7aWYoInRocm93IiE9PWMudHlwZSl7dmFyIGw9Yy5hcmcsZj1sLnZhbHVlO3JldHVybiBmJiYib2JqZWN0Ij09cyhmKSYmci5jYWxsKGYsIl9fYXdhaXQiKT9lLnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24odCl7bC52YWx1ZT10LGEobCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShjLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gSShlLG4scil7dmFyIG89aDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09eSl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT1nKXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1rKHUscik7aWYocyl7aWYocz09PW0pY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09aCl0aHJvdyBvPWcsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPXk7dmFyIGM9cChlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP2c6dixjLmFyZz09PW0pY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz1nLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gayhlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsayhlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSxtO3ZhciBpPXAobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCxtO3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCxtKTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLG0pfWZ1bmN0aW9uIEwodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gVCh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gaih0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEwsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKHMoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gdy5wcm90b3R5cGU9XyxvKEMsImNvbnN0cnVjdG9yIix7dmFsdWU6Xyxjb25maWd1cmFibGU6ITB9KSxvKF8sImNvbnN0cnVjdG9yIix7dmFsdWU6dyxjb25maWd1cmFibGU6ITB9KSx3LmRpc3BsYXlOYW1lPWYoXyxsLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09d3x8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsXyk6KHQuX19wcm90b19fPV8sZih0LGwsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQyksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sTyhBLnByb3RvdHlwZSksZihBLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1BLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQShkKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LE8oQyksZihDLGwsIkdlbmVyYXRvciIpLGYoQyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGYoQywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1QLGoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpqLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChUKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsbSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSxtfSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLFQobiksbX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztUKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpQKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCksbX19LGV9ZnVuY3Rpb24gbCh0LGUsbixyLG8saSxhKXt0cnl7dmFyIHU9dFtpXShhKSxzPXUudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbih0KX11LmRvbmU/ZShzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIGYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7bChpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7bChpLHIsbyxhLHUsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9fXZhciBkPW4oMzgyODUpO2Z1bmN0aW9uIHAodCl7cmV0dXJuIHA9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHAodCl9ZnVuY3Rpb24gaCgpe2g9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBiP2U6YixhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IGoocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpJKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIsdj0ic3VzcGVuZGVkWWllbGQiLHk9ImV4ZWN1dGluZyIsZz0iY29tcGxldGVkIixtPXt9O2Z1bmN0aW9uIGIoKXt9ZnVuY3Rpb24gdygpe31mdW5jdGlvbiBfKCl7fXZhciBTPXt9O2MoUyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciB4PU9iamVjdC5nZXRQcm90b3R5cGVPZixFPXgmJngoeChQKFtdKSkpO0UmJkUhPT1uJiZyLmNhbGwoRSxhKSYmKFM9RSk7dmFyIEM9Xy5wcm90b3R5cGU9Yi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShTKTtmdW5jdGlvbiBPKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBBKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT1wKGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBJKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT15KXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PWcpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPWsodSxyKTtpZihzKXtpZihzPT09bSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89ZyxyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289eTt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/Zzp2LGMuYXJnPT09bSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPWcsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBrKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxrKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLG07dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLG07dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLG0pOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwsbSl9ZnVuY3Rpb24gTCh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBUKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBqKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goTCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IocChlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiB3LnByb3RvdHlwZT1fLG8oQywiY29uc3RydWN0b3IiLHt2YWx1ZTpfLGNvbmZpZ3VyYWJsZTohMH0pLG8oXywiY29uc3RydWN0b3IiLHt2YWx1ZTp3LGNvbmZpZ3VyYWJsZTohMH0pLHcuZGlzcGxheU5hbWU9YyhfLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT13fHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxfKToodC5fX3Byb3RvX189XyxjKHQscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShDKSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxPKEEucHJvdG90eXBlKSxjKEEucHJvdG90eXBlLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUEsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBBKGwodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sTyhDKSxjKEMscywiR2VuZXJhdG9yIiksYyhDLGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyhDLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVAsai5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmoscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKFQpLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxtKTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLG19LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksVChuKSxtfX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO1Qobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSxtfX0sZX1mdW5jdGlvbiB2KHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24geSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXt2KGkscixvLGEsdSwibmV4dCIsdCl9ZnVuY3Rpb24gdSh0KXt2KGkscixvLGEsdSwidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19dmFyIGc9e307ZnVuY3Rpb24gbSh0KXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYigpe3JldHVybihiPXkoaCgpLm1hcmsoKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGgoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe2lmKGdbZV0pdGhyb3cgbmV3IEVycm9yKCJNdWx0aXBsZSBldmVudHMgb2YgdHlwZT0iK2UrIiBmaXJlZCIpO2dbZV09ITAsc2V0VGltZW91dCh5KGgoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIGgoKS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpnW2VdPSExLHQoKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuKX0pKSksMCl9KSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciB3PW4oNDExNyksXz1uKDE3ODMzKSxTPW4ubihfKSx4PW4oNjYyNzQpLEU9big0NTM4NyksQz1uKDM4MjUzKSxPPW4oNjk1MDgpLEE9ZnVuY3Rpb24odCl7cmV0dXJuIHQud29ya2Zsb3dQcmV2aWV3fSxJPW4oMzIzNTApLGs9big2Njg1NCk7ZnVuY3Rpb24gTCh0KXtyZXR1cm4gTD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sTCh0KX1mdW5jdGlvbiBUKCl7VD1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gbCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGc/ZTpnLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgaihyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOk8odCxuLHUpfSksYX1mdW5jdGlvbiBmKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWw7dmFyIGQ9InN1c3BlbmRlZFN0YXJ0IixwPSJzdXNwZW5kZWRZaWVsZCIsaD0iZXhlY3V0aW5nIix2PSJjb21wbGV0ZWQiLHk9e307ZnVuY3Rpb24gZygpe31mdW5jdGlvbiBtKCl7fWZ1bmN0aW9uIGIoKXt9dmFyIHc9e307Yyh3LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIF89T2JqZWN0LmdldFByb3RvdHlwZU9mLFM9XyYmXyhfKFAoW10pKSk7UyYmUyE9PW4mJnIuY2FsbChTLGEpJiYodz1TKTt2YXIgeD1iLnByb3RvdHlwZT1nLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpO2Z1bmN0aW9uIEUodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEModCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPWYodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGw9Yy52YWx1ZTtyZXR1cm4gbCYmIm9iamVjdCI9PUwobCkmJnIuY2FsbChsLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCxhLHUpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LGEsdSl9KSk6ZS5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxhKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCxhLHUpfSkpfXUocy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIE8oZSxuLHIpe3ZhciBvPWQ7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PWgpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09dil7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9QSh1LHIpO2lmKHMpe2lmKHM9PT15KWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWQpdGhyb3cgbz12LHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz1oO3ZhciBjPWYoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT92OnAsYy5hcmc9PT15KWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89dixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIEEoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LEEoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSkseTt2YXIgaT1mKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwseTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwseSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCx5KX1mdW5jdGlvbiBJKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIGsodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIGoodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChJLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW2FdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGk9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBpLm5leHQ9aX19dGhyb3cgbmV3IFR5cGVFcnJvcihMKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIG0ucHJvdG90eXBlPWIsbyh4LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSksbyhiLCJjb25zdHJ1Y3RvciIse3ZhbHVlOm0sY29uZmlndXJhYmxlOiEwfSksbS5kaXNwbGF5TmFtZT1jKGIscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PW18fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGIpOih0Ll9fcHJvdG9fXz1iLGModCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHgpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LEUoQy5wcm90b3R5cGUpLGMoQy5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QyxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEMobCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxFKHgpLGMoeCxzLCJHZW5lcmF0b3IiKSxjKHgsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHgsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9UCxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goayksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHkpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSkseX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxrKG4pLHl9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7ayhuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLHl9fSxlfWZ1bmN0aW9uIGoodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBQKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpe2ooaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe2ooaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX12YXIgTj1TKCkoImludGVyY29tLmFjdGlvbnMudHJpZ2dlcnMiKSxNPXsib3Blbi1tZXNzZW5nZXItbG9hZGluZy12aWV3IjpvLmRrfSxSPXsic2hvdy1jb252ZXJzYXRpb24iOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGYoYygpLm1hcmsoKGZ1bmN0aW9uIG4ocixvKXtyZXR1cm4gYygpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOmlmKCgwLHUuS1MpKG8oKSkpe24ubmV4dD01O2JyZWFrfXJldHVybiBuLm5leHQ9NCxyKCgwLGEuUUwpKHQsZS5pZCx7cmVxdWVzdE9yaWdpbjoiTWVzc2VuZ2VyIHRyaWdnZXJzIHBvc3QgYWN0aW9ucyJ9KSk7Y2FzZSA0OnJldHVybiBuLmFicnVwdCgicmV0dXJuIixyKCgwLGkucCkoZS5pZCwhMCkpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuKX0pKSl9fSxVPXt9LHo9M2UzO2Z1bmN0aW9uIEgodCl7cmV0dXJue3R5cGU6eC5kSnEsdHJpZ2dlcjp0fX1mdW5jdGlvbiBGKHQpe3JldHVybnt0eXBlOnguaEZrLHRyaWdnZXJJZDp0fX1mdW5jdGlvbiBEKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe24oSCh0KSksZnVuY3Rpb24odCxlLG4pe3RyeXt2YXIgcixvPXQuc2VsZWN0b3IsaT10LmV2ZW50LGE9dC5pZCx1PSgwLEkuZm8pKG51bGw9PShyPSgwLGsuJCkoKSk/dm9pZCAwOnIuZG9jdW1lbnQsbykscz0oMCx3LnMpKChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUsbil7TigiSGFuZGxpbmcgZXZlbnQgKHRyaWdnZXJJZD0iK3QrIikiKSxlKFYodCxuKSl9KGEsZSxuKX0pLHose2xlYWRpbmc6ITAsdHJhaWxpbmc6ITF9KSxjPWZ1bmN0aW9uKCl7TihpKyIgZXZlbnQgZmlyZWQgZnJvbSAiK28rIiAodHJpZ2dlcklkPSIrYSsiKSIpLHMoKX07bnVsbD09dXx8dS5hZGRFdmVudExpc3RlbmVyKGksYyksVVthXT17dGFyZ2V0RWxlbWVudDpudWxsIT11P3U6bnVsbCxib3VuZEhhbmRsZXI6Y30sTigiQXR0YWNoZWQgIitpKyIgZXZlbnQgaGFuZGxlciB0byAiK28pfWNhdGNoKHQpe04oIkNvdWxkbnQgYXR0YWNoIHRoZSBtZXNzZW5nZXIgdHJpZ2dlciB0byB0aGUgRE9NIGR1ZSB0byBlPSIrdCl9fSh0LG4sZSl9fWZ1bmN0aW9uIEIodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7IWZ1bmN0aW9uKHQsZSl7dHJ5e3ZhciBuPSgwLHIuWmcpKHQpKGUpLG89bi5zZWxlY3RvcixpPW4uZXZlbnQsYT1VW3RdLHU9YS50YXJnZXRFbGVtZW50LHM9YS5ib3VuZEhhbmRsZXI7bnVsbD09dXx8dS5yZW1vdmVFdmVudExpc3RlbmVyKGkscyksTigiRGV0YWNoZWQgIitpKyIgZXZlbnQgaGFuZGxlciBmcm9tICIrbyl9Y2F0Y2godCl7TigiQ291bGRuJ3QgZGV0YWNoIHRoZSBtZXNzZW5nZXIgdHJpZ2dlciB0byB0aGUgRE9NIGR1ZSB0byBlPSIrdCl9ZmluYWxseXtkZWxldGUgVVt0XX19KHQsbigpKSxlKGZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOnguZ1V5LHRyaWdnZXJJZDp0fX0odCkpfX1mdW5jdGlvbiBWKHQsZSxuKXtyZXR1cm4gUChUKCkubWFyaygoZnVuY3Rpb24gbyhpLHUpe3ZhciBzLGMsbCxmLHAsaCx2LHksZyxiO3JldHVybiBUKCkud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6cz0oMCxyLlpnKSh0KSxvLnByZXY9MSxzKHUoKSksby5uZXh0PTk7YnJlYWs7Y2FzZSA1OnJldHVybiBvLnByZXY9NSxvLnQwPW8uY2F0Y2goMSksTigiUmVqZWN0ZWQgdHJpZ2dlcj0iK3QrIiBhcyBpdCdzIG5vIGxvbmdlciBwcmVzZW50IGluIHRoZSBzdG9yZSIpLG8uYWJydXB0KCJyZXR1cm4iKTtjYXNlIDk6cmV0dXJuIG8ucHJldj05LG8ubmV4dD0xMixtKCJtZXNzZW5nZXItdHJpZ2dlci1maXJlIik7Y2FzZSAxMjpvLm5leHQ9MTg7YnJlYWs7Y2FzZSAxNDpyZXR1cm4gby5wcmV2PTE0LG8udDE9by5jYXRjaCg5KSxOKCJSZWplY3RlZCB0cmlnZ2VyPSIrdCsiIGFzIG11bHRpcGxlIHRyaWdnZXJzIHdlcmUgZmlyZWQgaW4gc2FtZSB0aWNrIiksby5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMTg6cmV0dXJuIG8ucHJldj0xOCxjPXUoKSxsPWMuc2Vzc2lvbixmPWMuYXBwLnVzZXJQYXJ0VXhTdHlsZSxwPXMoYyksaD0oMCxkLmwpKCksdj17Y2xpZW50SWQ6aCxjcmVhdGVkQXQ6bmV3IERhdGUsdXhTdHlsZTpmfSxpKEYodCkpLGkoWihwKSksaSgoMCxhLmpXKSh2LCExKSksby5uZXh0PTI5LGUuZmlyZVRyaWdnZXIobCx7dHJpZ2dlcklkOlN0cmluZyh0KSxjbGllbnRBc3NpZ25lZFVVSUQ6aH0pO2Nhc2UgMjk6cmV0dXJuIHk9by5zZW50LGkoWShlLHkpKSxuJiYoZz15LmRhdGEuaWQsYj17Ym9keTpbe3R5cGU6InBhcmFncmFwaCIsdGV4dDpufV0sY2xpZW50SWQ6KDAsZC5sKSgpLGNyZWF0ZWRBdDpuZXcgRGF0ZX0sSih1LGcsKGZ1bmN0aW9uKCl7aSgoMCxhLnlrKShlLGcsYikpfSkpKSxpKHt0eXBlOngua240fSksby5hYnJ1cHQoInJldHVybiIse3N1Y2Nlc3M6ITB9KTtjYXNlIDM2OnJldHVybiBvLnByZXY9MzYsby50Mj1vLmNhdGNoKDE4KSxpKHt0eXBlOngucmxrfSksaSgoMCxhLndqKShudWxsKSksTigiQ291bGRudCBmaXJlIG1lc3NlbmdlciB0cmlnZ2VyIGR1ZSB0byBlPSIrby50Miksby5hYnJ1cHQoInJldHVybiIse3N1Y2Nlc3M6ITF9KTtjYXNlIDQyOmNhc2UiZW5kIjpyZXR1cm4gby5zdG9wKCl9fSksbyxudWxsLFtbMSw1XSxbOSwxNF0sWzE4LDM2XV0pfSkpKX1mdW5jdGlvbiBHKHQsZSl7cmV0dXJuIFAoVCgpLm1hcmsoKGZ1bmN0aW9uIG4ocixvKXt2YXIgaSx1LHMsYyxsO3JldHVybiBUKCkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIHU9bygpLHM9dS5zZXNzaW9uLG4ubmV4dD00LHQub3V0Ym91bmRQcmV2aWV3KHMsZSk7Y2FzZSA0OmM9bi5zZW50LGw9KDAsQy55cykoYy5kYXRhKSxyKCgwLGEuRm8pKHQsbCwhMSxEYXRlLm5vdygpKSkscigoMCxFLkc0KShsLmlkLG51bGw9PShpPWwucGFydHNbMF0pP3ZvaWQgMDppLmlkKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbil9KSkpfWZ1bmN0aW9uIHEodCxlKXtyZXR1cm4gUChUKCkubWFyaygoZnVuY3Rpb24gbihyLGkpe3ZhciBhLHUscztyZXR1cm4gVCgpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBhPWkoKSx1PWEuc2Vzc2lvbixuLm5leHQ9NCx0LndvcmtmbG93UHJldmlldyh1LGUpO2Nhc2UgNDpzPW4uc2VudCxyKFcocykpLHIoKDAsby51bikoKSkscigoZnVuY3Rpb24odCxlKXt2YXIgbj1lKCkscj1BKG4pO3ImJih0KGZ1bmN0aW9uKHQpe3ZhciBlPXQud29ya2Zsb3dJbnN0YW5jZUlkLG49dC5yZXNvbHV0aW9uQm90QmVoYXZpb3JWZXJzaW9uSWQ7cmV0dXJue3R5cGU6eC5IVFAsd29ya2Zsb3dJbnN0YW5jZUlkOmUscmVzb2x1dGlvbkJvdEJlaGF2aW9yVmVyc2lvbklkOm59fShyKSksdCgoMCxPLkwpKHIuYm90SW50cm8pKSl9KSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbil9KSkpfWZ1bmN0aW9uIFcodCl7dmFyIGU9dC53b3JrZmxvd0luc3RhbmNlSWQsbj10LnJlc29sdXRpb25Cb3RCZWhhdmlvclZlcnNpb25JZCxyPXQuYm90SW50cm87cmV0dXJue3R5cGU6eC5UYzAsd29ya2Zsb3dJbnN0YW5jZUlkOmUscmVzb2x1dGlvbkJvdEJlaGF2aW9yVmVyc2lvbklkOm4sYm90SW50cm86cn19ZnVuY3Rpb24gSyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt0cnl7dmFyIG89bigpO2UoVigoMCxyLnFXKShvKS5pZCx0KSl9Y2F0Y2godCl7TigiQ291bGRudCByZXRyeSBmaXJpbmcgbWVzc2VuZ2VyIHRyaWdnZXIiKX19fWZ1bmN0aW9uIFoodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPU1bdC5wcmVBY3Rpb25dO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybiBlKG4oKSk7dGhyb3ciSW52YWxpZCBQUkUgQUNUSU9OIHR5cGUgZm9yIHRyaWdnZXI9Iit0LmlkfX1mdW5jdGlvbiBKKHQsZSxuKXt2YXIgcj0wO3NldFRpbWVvdXQoKGZ1bmN0aW9uIG8oKXt2YXIgaSxhO2lmKHI+PTMwMClOKCJDb252ZXJzYXRpb24gIitlKyIgbmV2ZXIgYmVjYW1lIHJlYWR5IGFmdGVyIDMwMCByZXRyaWVzLCBnaXZpbmcgdXAiKTtlbHNle3ZhciB1PW51bGw9PShpPXQoKS5jb252ZXJzYXRpb25zKXx8bnVsbD09KGk9aS5ieUlkKT92b2lkIDA6aVtlXTt1JiYhdS5pc0ZldGNoaW5nJiZ2b2lkIDAhPT0obnVsbD09KGE9dS5jb21wb3NlclN0YXRlKT92b2lkIDA6YS52ZXJzaW9uKSYmcGFyc2VJbnQodS5jb21wb3NlclN0YXRlLnZlcnNpb24sMTApPj0wP24oKToocisrLHNldFRpbWVvdXQobyw1MCkpfX0pLDEwMCl9ZnVuY3Rpb24gWSh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj1lLmFjdGlvbixvPWUuZGF0YSxpPVJbcl07aWYoaSlyZXR1cm4gbihpKHQsbykpO3Rocm93IkludmFsaWQgUE9TVCBBQ1RJT04gdHlwZSBmb3IgdHJpZ2dlcl9hY3Rpb249IityfX19LDcxNDI0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse3BKOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHNYOmZ1bmN0aW9uKCl7cmV0dXJuIHN9fSk7dmFyIHI9bigxNDEyMCksbz1uKDQ2MDUpLGk9big1NDc4OCksYT1uKDY4NzYyKSx1PW4oNjYyNzQpO2Z1bmN0aW9uIHModCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIHM9bigpLGM9KDAsci5vUCkocyksbD0oMCxhLk9tKShjKTtsJiZlKCgwLG8uUUwpKHQsbCx7aXNVcGRhdGluZzohMCxyZXF1ZXN0T3JpZ2luOiJHZXQgVW5yZWFkIENvbnZlcnNhdGlvbnMifSkpLGUoe3R5cGU6dS5BYTl9KTt2YXIgZj1zLnNlc3Npb247cmV0dXJuIHQuZ2V0VW5yZWFkQ29udmVyc2F0aW9ucyhmKS50aGVuKChmdW5jdGlvbihuKXshZnVuY3Rpb24odCxlLG4pe24oZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6dS5hd3AsdW5yZWFkQ29udmVyc2F0aW9uczp0fX0odCkpO3ZhciByPXQudW5yZWFkQ29udmVyc2F0aW9uSWRzO3IubGVuZ3RoPjAmJm4oKDAsaS5sUykoZSwiaGFuZGxlVW5yZWFkQ29udmVyc2F0aW9ucyIpKX0obix0LGUpfSkpLmNhdGNoKChmdW5jdGlvbigpe30pKX19ZnVuY3Rpb24gYyh0LGUpe3ZhciBuPSgwLHIuVnkpKHQpO3JldHVybiBuJiYtMSE9PWUuaW5kZXhPZihuKX19LDY1MjYxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0sxOmZ1bmN0aW9uKCl7cmV0dXJuIFF9LGxoOmZ1bmN0aW9uKCl7cmV0dXJuIG50fSxvaTpmdW5jdGlvbigpe3JldHVybiBHfSxBeTpmdW5jdGlvbigpe3JldHVybiBzdH0sbHg6ZnVuY3Rpb24oKXtyZXR1cm4gSn0sJHo6ZnVuY3Rpb24oKXtyZXR1cm4gYXR9LHQ5OmZ1bmN0aW9uKCl7cmV0dXJuIFl9LHJlOmZ1bmN0aW9uKCl7cmV0dXJuIFZ9LFRoOmZ1bmN0aW9uKCl7cmV0dXJuICR9LHMwOmZ1bmN0aW9uKCl7cmV0dXJuIFh9LE5qOmZ1bmN0aW9uKCl7cmV0dXJuIGV0fSxGUTpmdW5jdGlvbigpe3JldHVybiB0dH19KTt2YXIgcj1uKDI5OTQxKSxvPW4oNjY4MzgpLGk9big5NDIxNCksYT1uKDcyNjgzKSx1PW4oOTY3MTkpLHM9bigyMjkwNiksYz1uKDU0Nzg4KSxsPW4oNDYwNSksZj1uKDk5MzIpLGQ9big3MTQyNCkscD1uKDMzNzU1KSxoPW4oODQzODIpLHY9bigyNjk0NykseT1uKDY5NzQ0KSxnPW4oODcxMzMpLG09big5NTE2OCksYj1uKDY2ODU0KSx3PW4oMzgyODUpLF89bigzNTIwNiksUz1uKDM4OTkpLHg9Imh0dHBzOi8vd3d3LmludGVyY29tLmNvbS9oZWxwL2VuL2NvbGxlY3Rpb25zLzEyMjk1ODE1LW1lc3Nlbmdlci1zZWN1cml0eSIsRT17SURFTlRJVFlfVkVSSUZJQ0FUSU9OX1JFQURZX1dBUk5JTkc6IkludGVyY29tIE1lc3NlbmdlciB3YXJuaW5nOiBJZGVudGl0eSBWZXJpZmljYXRpb24gaXMgc2V0IHVwIGNvcnJlY3RseSBidXQgbm90IGVuYWJsZWQuIEZvciBkZXRhaWxzIG9uIGhvdyB0byBlbmFibGUgaXQsIHNlZSAiK3gsSURFTlRJVFlfVkVSSUZJQ0FUSU9OX0ZBSUxVUkVfV0lUSF9VU0VSX0lEX1dBUk5JTkc6IkludGVyY29tIE1lc3NlbmdlciB3YXJuaW5nOiBZb3VyIElkZW50aXR5IFZlcmlmaWNhdGlvbiB1c2VyX2hhc2ggaXMgaW52YWxpZC4gQ2hlY2sgdGhhdCB5b3UgYXJlIGdlbmVyYXRpbmcgdGhlIHVzZXJfaGFzaCB3aXRoIHlvdXIgdXNlcidzIHVzZXJfaWQgYW5kIHlvdXIgYXBwJ3Mgc2VjcmV0IGtleS4gRm9yIG1vcmUgZGV0YWlscywgc2VlICIreCxJREVOVElUWV9WRVJJRklDQVRJT05fRkFJTFVSRV9XSVRIX0VNQUlMX1dBUk5JTkc6IkludGVyY29tIE1lc3NlbmdlciB3YXJuaW5nOiBZb3VyIElkZW50aXR5IFZlcmlmaWNhdGlvbiB1c2VyX2hhc2ggaXMgaW52YWxpZC4gQ2hlY2sgdGhhdCB5b3UgYXJlIGdlbmVyYXRpbmcgdGhlIHVzZXJfaGFzaCB3aXRoIHlvdXIgdXNlcidzIGVtYWlsIGFuZCB5b3VyIGFwcCdzIHNlY3JldCBrZXkuIEZvciBtb3JlIGRldGFpbHMsIHNlZSAiK3h9LEM9big4MDQ5NiksTz1uKDY2Nzk5KSxBPW4oNjYyNzQpLEk9big1MDE2MCksaz1uKDE4MDM0KSxMPW4oMzE2MjApLFQ9big2MDM0NSksaj1uKDE0MTIwKSxQPW4oNDUzODcpLE49big4ODMzMyksTT1uKDM0OTQ2KSxSPSgwLG4oMzIwOTUpLlApKChmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZnVuY3Rpb24odCxlLG4scil7dmFyIG89dC5lbWFpbCxpPXQudXNlcklkLGE9dC51c2VySGFzaCx1PXQuaW50ZXJjb21Vc2VySnd0LHM9dC5hbm9ueW1vdXNJZDtyZXR1cm4gT2JqZWN0LmFzc2lnbih7ZW5jcnlwdGVkUGF5bG9hZDpyfSx7dXJsOmUsZW1haWw6byx1c2VySWQ6aSx1c2VySGFzaDphLGludGVyY29tVXNlckp3dDp1LGFub255bW91c0lkOnN9LG4pfSh0LGUsbixyKSl9KSw2ZTQsMSk7ZnVuY3Rpb24gVSh0KXtyZXR1cm4gVT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sVSh0KX1mdW5jdGlvbiB6KCl7cmV0dXJuIHo9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSx6LmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBIKCl7SD1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gbCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGc/ZTpnLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgTChyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOk8odCxuLHUpfSksYX1mdW5jdGlvbiBmKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWw7dmFyIGQ9InN1c3BlbmRlZFN0YXJ0IixwPSJzdXNwZW5kZWRZaWVsZCIsaD0iZXhlY3V0aW5nIix2PSJjb21wbGV0ZWQiLHk9e307ZnVuY3Rpb24gZygpe31mdW5jdGlvbiBtKCl7fWZ1bmN0aW9uIGIoKXt9dmFyIHc9e307Yyh3LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIF89T2JqZWN0LmdldFByb3RvdHlwZU9mLFM9XyYmXyhfKFQoW10pKSk7UyYmUyE9PW4mJnIuY2FsbChTLGEpJiYodz1TKTt2YXIgeD1iLnByb3RvdHlwZT1nLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpO2Z1bmN0aW9uIEUodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEModCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPWYodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGw9Yy52YWx1ZTtyZXR1cm4gbCYmIm9iamVjdCI9PVUobCkmJnIuY2FsbChsLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCxhLHUpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LGEsdSl9KSk6ZS5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxhKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCxhLHUpfSkpfXUocy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIE8oZSxuLHIpe3ZhciBvPWQ7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PWgpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09dil7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9QSh1LHIpO2lmKHMpe2lmKHM9PT15KWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWQpdGhyb3cgbz12LHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz1oO3ZhciBjPWYoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT92OnAsYy5hcmc9PT15KWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89dixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIEEoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LEEoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSkseTt2YXIgaT1mKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwseTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwseSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCx5KX1mdW5jdGlvbiBJKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIGsodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIEwodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChJLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFQoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW2FdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGk9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBpLm5leHQ9aX19dGhyb3cgbmV3IFR5cGVFcnJvcihVKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIG0ucHJvdG90eXBlPWIsbyh4LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSksbyhiLCJjb25zdHJ1Y3RvciIse3ZhbHVlOm0sY29uZmlndXJhYmxlOiEwfSksbS5kaXNwbGF5TmFtZT1jKGIscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PW18fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGIpOih0Ll9fcHJvdG9fXz1iLGModCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHgpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LEUoQy5wcm90b3R5cGUpLGMoQy5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QyxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEMobCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxFKHgpLGMoeCxzLCJHZW5lcmF0b3IiKSxjKHgsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHgsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9VCxMLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TCxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goayksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHkpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSkseX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxrKG4pLHl9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7ayhuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6VChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLHl9fSxlfWZ1bmN0aW9uIEYodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBEKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpe0YoaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe0YoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX12YXIgQj1udWxsO2Z1bmN0aW9uIFYodCxlKXtCPXtydWxlc2V0SWQ6dCx0aW1lc3RhbXA6RGF0ZS5ub3coKSxzb3VyY2U6ZX19ZnVuY3Rpb24gRyh0LGUsbixyLG8saSxhLHUscyxjLGwsZil7cmV0dXJuIHZvaWQgMD09PWEmJihhPSExKSx2b2lkIDA9PT1zJiYocz0idW5rbm93biIpLEQoSCgpLm1hcmsoKGZ1bmN0aW9uIGQoaCxnKXt2YXIgbSxiLF8seCxFLEMsTyxBLEksaztyZXR1cm4gSCgpLndyYXAoKGZ1bmN0aW9uKGQpe2Zvcig7Oylzd2l0Y2goZC5wcmV2PWQubmV4dCl7Y2FzZSAwOmlmKG09ZygpLGI9bS5hcHAsXz1tLnNlc3Npb24sKDAsTS5SOCkoYixuKSxfPWV8fF8pe2QubmV4dD02O2JyZWFrfXJldHVybigwLFMualApKCJbSW50ZXJjb21dIENhbm5vdCBjcmVhdGUgb3IgdXBkYXRlIHVzZXI6IHNlc3Npb24gaXMgbnVsbCIpLGQuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgNjppZihfLnNlc3Npb25JZHx8KF8uc2Vzc2lvbklkPXcuQS5nZW5lcmF0ZVVVSUQoKSksbnVsbCE9aSYmaS5oaWRlQ29udmVyc2F0aW9uSGVhZGVyJiYoeD1nKCksRT14LnVzZXIsKDAseS5KcikoRSwiaGlkZV9jb252ZXJzYXRpb25faGVhZGVyIiwibWVzc2VuZ2VyIiwiaW5fYXBwIix7YXBwX2lkOl8uYXBwSWR9KSksaChXKF8sbixyLG8saSxjLGwpKSxhfHwhUihfLG4sbnVsbCE9cj9yOnt9LHUpKXtkLm5leHQ9MTE7YnJlYWt9cmV0dXJuIGQuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMTE6cmV0dXJuIGQucHJldj0xMSxkLm5leHQ9MTQsKDAsTS5VcCkodCxnLHIsdSxzLGMsbCxvKTtjYXNlIDE0OkM9ZC5zZW50LGQubmV4dD0zNTticmVhaztjYXNlIDE3OmlmKGQucHJldj0xNyxkLnQwPWQuY2F0Y2goMTEpLE89ZC50MCxBPSgwLHYuczMpKE8sIi9tZXNzZW5nZXIvd2ViL3BpbmciKSwhKG51bGw9PUE/dm9pZCAwOkEuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuY29kZT09PXYuUm99KSkpKXtkLm5leHQ9MjU7YnJlYWt9cmV0dXJuKDAsUy5qUCkoIkJyb3dzZXIgZXh0ZW5zaW9uIGludGVyY2VwdGVkIGJvb3QgcmVxdWVzdC4gTWVzc2VuZ2VyIHdpbGwgbm90IGxvYWQuIiksZC5hYnJ1cHQoInJldHVybiIsbnVsbCk7Y2FzZSAyNTppZigiNDAzIiE9PSgwLHYuZVIpKEEpfHwhZil7ZC5uZXh0PTI5O2JyZWFrfXJldHVybigwLFMuRlMpKCJUaGlzIGRvbWFpbiBpcyBub3QgYWxsb3dlZCBmb3IgdGhlIEludGVyY29tIE1lc3Nlbmdlci4gQWRkIHlvdXIgZG9tYWluIGhlcmU6IGh0dHBzOi8vYXBwLmludGVyY29tLmNvbS9hL2FwcHMvXy9tZXNzZW5nZXIiKSxmKCEwKSxkLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDI5OnJldHVybiBBJiZBLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiJBcHAgTm90IEZvdW5kIj09PXQubWVzc2FnZX0pKSYmKDAsUy5GUykoIlRoZSBBcHAgSUQgaW4geW91ciBjb2RlIHNuaXBwZXQgaXMgaW5jb3JyZWN0LiBDaGFuZ2UgaXQgdG8geW91ciBBcHAgSUQgZm91bmQgaW4gc2V0dGluZ3MgdG8gY29tcGxldGUgaW5zdGFsbGF0aW9uOiBodHRwOi8vYXBwLmludGVyY29tLmNvbS9hL2FwcHMvXy9zZXR0aW5ncy93ZWIiKSxJPWl0KE8pLGgoWihPLEkpKSwoaz0oMCx2LlJwKShPKSkmJmgoKDAscC5yUSkoaykpLGQuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMzU6aWYoIUMuZXJyb3JzKXtkLm5leHQ9Mzc7YnJlYWt9cmV0dXJuIGQuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMzc6cmV0dXJuIHEoQyxoLGcsdCxfLGkpLGQuYWJydXB0KCJyZXR1cm4iLEMpO2Nhc2UgMzk6Y2FzZSJlbmQiOnJldHVybiBkLnN0b3AoKX19KSxkLG51bGwsW1sxMSwxN11dKX0pKSl9ZnVuY3Rpb24gcSh0LGUsbix2LHcsUyl7dmFyIHgsRSxNOygwLHkuQmQpKHQpLCgwLEMudkgpKG51bGw9PSh4PXQuYXBwKT92b2lkIDA6eC5pc092ZXJyaWRlU2FtcGxpbmdFbmFibGVkKSxmdW5jdGlvbih0LGUpe3QmJmUoKDAscC5yUSkodCkpfSh0Lmluc3RhbGxNb2RlQ29uZmlnLGUpLG90KHQsdyx0Lmluc3RhbGxNb2RlQ29uZmlnKSx1dCh0KSxydCh0KTt2YXIgUj1uKCkudXNlcixVPW51bGw9PShFPW4oKS51c2VyKT92b2lkIDA6RS5sb2NhbGU7ZShLKHQpKSx0LmxvY2FsZSYmdC5sb2NhbGUhPT1VJiZlKHt0eXBlOkEuRV9OLGxvY2FsZTp0LmxvY2FsZX0pO3ZhciBIPSEobnVsbD09Unx8IVIuaWQpJiZSLmlkIT09dC5pZCxGPShudWxsPT1SP3ZvaWQgMDpSLnJvbGUpIT09dC5yb2xlOyhIfHxGKSYmZSh7dHlwZTpBLndBcyxpZENoYW5nZWQ6SH0pLGUoKDAsay5VUykoeih7fSx0LmFwcC5ob21lLmhlYWRlcix7aGVhZGVyQ29sb3JzOm51bGw9PShNPXQuYXBwLmhvbWUpP3ZvaWQgMDpNLmhlYWRlckNvbG9ycyx0aGVtZU1vZGU6KG51bGw9PVM/dm9pZCAwOlMudGhlbWVNb2RlKXx8dC5hcHAuaG9tZS50aGVtZU1vZGV9KSkpLGUoKDAsSS55YykodC5uZXdzZmVlZElkKSksZnVuY3Rpb24odCxlKXt0JiZlKCgwLGwuTiQpKHQpKX0odC5uZXdDb252ZXJzYXRpb25Db21wb3NlclN0YXRlLGUpLGZ1bmN0aW9uKHQpe3QoKDAsbS5aNCkoKSksdCgoMCx1Lko3KSgpKSx0KCgwLHUuVEQpKCkpLHQoKDAsTy5waykoKSl9KGUpLGUoKDAsZi5tcCkodC5sYXVuY2hlclNldHRpbmdzKSksZnVuY3Rpb24odCxlKXt2YXIgbj10Lm5vdGlmaWNhdGlvbkxpbmtDb252ZXJzYXRpb25JZCxyPXQubm90aWZpY2F0aW9uTGlua1dpdGhvdXRDb252ZXJzYXRpb247biYmZSgoMCxpLlZ2KShuKSk7ciYmKGUoKDAsaS5TeSkoKSksZSgoMCxpLnF5KSgpKSxlKCgwLFAuWTYpKCkpKX0odCxlKSxmdW5jdGlvbih0LGUsbixyKXtpZigobnVsbD09dD92b2lkIDA6dC5sZW5ndGgpPjApe3ZhciBvPW4oKTtpZigoMCxkLnBKKShvLHQpKXt2YXIgaT0oMCxqLlZ5KShvKTtlKCgwLGwuUUwpKHIsaSkpfWVsc2UgZSgoMCxjLmxTKShyLCJjcmVhdGVPclVwZGF0ZVVzZXIiKSl9fSh0LnVucmVhZENvbnZlcnNhdGlvbklkcyxlLG4sdiksZnVuY3Rpb24odCxlKXt2YXIgbj0hKDAsXy5ycikoKXx8dC5hcHAuZmVhdHVyZXMuZmluTGF1bmNoZXJEaXNjb3ZlcnlNb2RlO24mJnQuYXBwLmZlYXR1cmVzLmxhdW5jaGVyRGlzY292ZXJ5TW9kZSYmZSgoMCxyLlhYKSgpKX0odCxlKSxmdW5jdGlvbih0LGUpe3ZhciBuLHIsaT1udWxsPT0obj0oMCxiLiQpKCkpP3ZvaWQgMDpuLmxvY2F0aW9uLGE9aT9udWxsPT0ocj0oMCxnLkNIKShpKSk/dm9pZCAwOnIucHJvZHVjdF90b3VyX2lkOnZvaWQgMDsoMCxvLkkpKHQpfHwoKDAsby5JKShhKT9lKCgwLG0uVGMpKHQpKTphPT09dC5pZD8oKDAsaC5rNykoIkFjdGl2ZSB0b3VyIHdpdGggaWQgIit0LmlkKyIgaXMgdGhlIHNhbWUgYXMgdGhlIHF1ZXJ5IHBhcmFtcyBzbyBzdGFydGluZyB0b3VyIiksZSgoMCxtLlRjKSh0KSkpOigwLGguazcpKCJUb3VyIHdpdGggaWQgIit0LmlkKyIgcmVjZWl2ZWQgZnJvbSBwaW5nIHdvbid0IHN0YXJ0IGJlY2F1c2UgdGhlcmUgaXMgYSB0b3VySWQgaW4gdGhlIHF1ZXJ5IHBhcmFtcyIpKX0odC5hY3RpdmVUb3VyLGUpLGZ1bmN0aW9uKHQsZSl7KDAsby5JKSh0KXx8ZSgoMCxhLkhKKSh0KSl9KHQuYmFubmVycyxlKSxmdW5jdGlvbih0LGUpeygwLG8uSSkodCl8fGUoKDAscy4kSCkodCkpfSh0LnRvb2x0aXBHcm91cHMsZSksZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYSxzLGM9KG51bGw9PShyPSgwLGcuQ0gpKG51bGw9PShpPXdpbmRvdyl8fG51bGw9PShpPWkucGFyZW50KT92b2lkIDA6aS5sb2NhdGlvbikpP3ZvaWQgMDpyLmludGVyY29tX3N1cnZleV9pZCl8fChudWxsPT0oYT0oMCxnLkNIKShudWxsPT0ocz13aW5kb3cpfHxudWxsPT0ocz1zLnBhcmVudCk/dm9pZCAwOnMubG9jYXRpb24pKT92b2lkIDA6YS5pbnRlcmNvbV9lbWFpbF9zdXJ2ZXlfaWQpO2lmKHQmJiEoMCxvLkkpKHQpKXJldHVybigwLG8uSSkoYyl8fHBhcnNlSW50KGMpPT09dC5ydWxlc2V0SWQ/dm9pZCBlKCgwLHUud2opKHQpKTp2b2lkIDA7dmFyIGwsZj1uKCkuc3VydmV5O2lmKCFmKXJldHVybjt2YXIgZD1mdW5jdGlvbih0KXtpZighQilyZXR1cm4hMTt2YXIgZT1EYXRlLm5vdygpLUIudGltZXN0YW1wPDFlNCxuPSF0fHxCLnJ1bGVzZXRJZD09PXQ7cmV0dXJuIGUmJm59KGYuaWQ/cGFyc2VJbnQoZi5pZCwxMCk6dm9pZCAwKTtpZihkJiZCKXJldHVybiB2b2lkIGUoKDAsdS53aikoZikpO3ZhciBwPW51bGw9PShsPWYuc3RlcHMpP3ZvaWQgMDpsLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkPT09Zi5hY3RpdmVTdGVwSWR9KSk7aWYoZi5jb21wbGV0ZWQmJihudWxsPT1wP3ZvaWQgMDpwLnN0ZXBUeXBlKT09PU4ueWsudGhhbmtZb3UpcmV0dXJuO2UoKDAsdS50cCkoKSl9KHQuc3VydmV5LGUsbiksZnVuY3Rpb24odCxlLG4pe3ZhciByLGksYT1udWxsPT0ocj0oMCxnLkNIKShudWxsPT0oaT13aW5kb3cpfHxudWxsPT0oaT1pLnBhcmVudCk/dm9pZCAwOmkubG9jYXRpb24pKT92b2lkIDA6ci5pbnRlcmNvbV9jaGVja2xpc3RfaWQ7aWYoISgwLG8uSSkodCkpe2UoKDAsTy5YXykodCwoMCxvLkkpKGEpKSk7dmFyIHU9bigpLHM9KDAsTC5nSCkodSk7KG51bGw9PXM/dm9pZCAwOnMubGVuZ3RoKT4wPygwLFQuT20pKHUuY2hlY2tsaXN0cyk/KCgwLFQuQzIpKCJDaGVja2xpc3RzIHJlY2VpdmVkIGZyb20gcGluZyBhcmUgcmVjZW50bHkgYWN0aXZlIC0gcmVzb2x2aW5nIGFzIG5vcm1hbC4iKSxlKCgwLE8ub3cpKCkpKTooKDAsVC5DMikoIkNoZWNrbGlzdHMgcmVjZWl2ZWQgZnJvbSBwaW5nIGFyZSBub3QgcmVjZW50bHkgYWN0aXZlIC0gcmVzb2x2aW5nIHdpdGggdGhyb3R0bGluZy4iKSxlKCgwLE8ucFUpKCkpKTooMCxULkMyKSgiQ2hlY2tsaXN0cyByZWNlaXZlZCBmcm9tIHBpbmcgZG8gbm90IGNvbnRhaW4gYXV0by1yZXNvbHZlIHJ1bGVzIHRoYXQgcmVxdWlyZSBiYWNrZ3JvdW5kIHJlc29sdmluZy4iKX19KHQuY2hlY2tsaXN0cyxlLG4pfWZ1bmN0aW9uIFcodCxlLG4scixvLGksYSl7cmV0dXJue3R5cGU6QS5QMkksc2Vzc2lvbjp0LHVybDplLGN1c3RvbUF0dHJpYnV0ZXM6bixhbm9ueW1vdXNTZXNzaW9uRHVyYXRpb246cixjdXN0b21pemF0aW9uQXR0cmlidXRlczpvLGludGVybmFsOmksaXNJbnRlcnNlY3Rpb25Cb290ZWQ6YX19ZnVuY3Rpb24gSyh0KXtyZXR1cm57dHlwZTpBLlJ3cSx1c2VyOnR9fWZ1bmN0aW9uIFoodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLHt0eXBlOkEub0p1LGVycm9yOnQsaXNJZGVudGl0eVZlcmlmaWNhdGlvbkVycm9yOmV9fWZ1bmN0aW9uIEoodCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSEwKSx7dHlwZTpBLnFqUyxjbGVhckNvb2tpZXM6dH19ZnVuY3Rpb24gWSgpe3JldHVybnt0eXBlOkEub2c4fX1mdW5jdGlvbiBRKHQpe3JldHVybnt0eXBlOkEub0szLGFub255bW91c1Nlc3Npb246dH19ZnVuY3Rpb24gWCh0KXtyZXR1cm57dHlwZTpBLkpfNyxoZWxwQ2VudGVyU2Vzc2lvbjp0fX1mdW5jdGlvbiAkKHQpe3JldHVybnt0eXBlOkEuaXhqLGF1dGhUb2tlbnM6dH19ZnVuY3Rpb24gdHQoKXtyZXR1cm57dHlwZTpBLm5pWH19ZnVuY3Rpb24gZXQoKXtyZXR1cm57dHlwZTpBLk5Ven19ZnVuY3Rpb24gbnQodCxlLG4pe3JldHVybiBmdW5jdGlvbihyLG8pe3ZhciBpPW8oKS5zZXNzaW9uO2lmKGkpcmV0dXJuIHIoe3R5cGU6QS5POTAsbmFtZTplLG1ldGFkYXRhOm59KSx0LmNyZWF0ZUV2ZW50KGksZSxuKS50aGVuKChmdW5jdGlvbihlKXtpZihlKXt2YXIgbj1lLmJhbm5lcixvPWUuY3VzdG9tQm90LGk9ZS5zdXJ2ZXkscz1lLnRvdXI7bj9yKCgwLGEuSEopKFtuXSkpOnM/cigoMCxtLlRjKShzKSk6aSYmcigoMCx1LndqKShpKSksbyYmcigoMCxsLkZvKSh0LG8pKX1yZXR1cm4gcihmdW5jdGlvbih0KXtyZXR1cm57dHlwZTpBLmNzMixyZXNwb25zZTp0fX0oZSkpLGV9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7cmV0dXJuIHIoe3R5cGU6QS55RHJ9KX0pKX19ZnVuY3Rpb24gcnQodCl7dmFyIGU9dC5jZGFzQnJlYWNoaW5nTGltaXQ7aWYoZSYmZS5sZW5ndGgpe3ZhciBuPTE9PT1lLmxlbmd0aD8iYXR0cmlidXRlIjoiYXR0cmlidXRlcyIscj1lLmpvaW4oIiwgIik7KDAsUy5GUykoIllvdSBoYXZlIHJlYWNoZWQgeW91ciBDREEgbGltaXQgYW5kIHdlIHdlcmUgbm90IGFibGUgdG8gY3JlYXRlIG9yIHVwZGF0ZSB0aGUgZm9sbG93aW5nICIrbisiOiAiK3IrIi4gRm9yIG1vcmUgZGV0YWlscywgc2VlOiBodHRwczovL3d3dy5pbnRlcmNvbS5jb20vaGVscC9jb25maWd1cmUtaW50ZXJjb20vY3VzdG9taXplLWludGVyY29tLXRvLWJlLWFib3V0LXlvdXItdXNlcnMvc2VuZC1jdXN0b20tdXNlci1hdHRyaWJ1dGVzLXRvLWludGVyY29tIil9fWZ1bmN0aW9uIG90KHQsZSxuKXt2b2lkIDA9PT1uJiYobj17fSk7dmFyIHI9ZS51c2VySGFzaCxvPWUudXNlcklkLGk9ZS5lbWFpbCxhPW4sdT1hLnNlY3VyZUluc3RhbGxWMixzPWEuc2VjdXJlSW5zdGFsbFYzO2lmKHV8fHMpe2lmKCFvJiYhaSlyZXR1cm59ZWxzZSBpZighcilyZXR1cm47dmFyIGM9ZnVuY3Rpb24odCxlKXtpZih0LmlkZW50aXR5VmVyaWZpY2F0aW9uUmVhZHkpcmV0dXJuIEUuSURFTlRJVFlfVkVSSUZJQ0FUSU9OX1JFQURZX1dBUk5JTkc7aWYoIXQuaWRlbnRpdHlWZXJpZmllZCYmZS51c2VySWQpcmV0dXJuIEUuSURFTlRJVFlfVkVSSUZJQ0FUSU9OX0ZBSUxVUkVfV0lUSF9VU0VSX0lEX1dBUk5JTkc7aWYoIXQuaWRlbnRpdHlWZXJpZmllZCYmIWUudXNlcklkKXJldHVybiBFLklERU5USVRZX1ZFUklGSUNBVElPTl9GQUlMVVJFX1dJVEhfRU1BSUxfV0FSTklORztyZXR1cm4gbnVsbH0odCxlKTtjJiYoMCxTLkZTKShjKX1mdW5jdGlvbiBpdCh0KXt2YXIgZT0oMCx2LnMzKSh0KTtpZighZSlyZXR1cm4hMTt2YXIgbj0hMTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0KXstMSE9PXQuY29kZS5pbmRleE9mKCJpZGVudGl0eV92ZXJpZmljYXRpb24iKT8obj0hMCwoMCxTLmpQKSgiSW50ZXJjb20gTWVzc2VuZ2VyIGVycm9yOiAiK3QubWVzc2FnZSsiIEZvciBtb3JlIGRldGFpbHMsIHNlZSAiK3gpKTotMSE9PXQuY29kZS5pbmRleE9mKCJpbnRlcmNvbV91c2VyX2p3dCIpJiYobj0hMCwoMCxTLmpQKSgiSW50ZXJjb20gTWVzc2VuZ2VyIEpXVCBlcnJvcjogIit0Lm1lc3NhZ2UrIiBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgIit4KSl9KSksbn1mdW5jdGlvbiBhdCh0KXtyZXR1cm57dHlwZTpBLm9QOSxhbm9ueW1vdXNTZXNzaW9uOnQuYW5vbnltb3VzX3Nlc3Npb24sc2Vzc2lvbkV4cGlyeTp0LnNlc3Npb25fZXhwaXJ5fX1mdW5jdGlvbiB1dCh0KXt0Lmp3dEV4cGlyZWQmJigwLFMuRlMpKCJJbnRlcmNvbSBNZXNzZW5nZXIgSldUIGVycm9yOiBKV1QgaGFzIGV4cGlyZWQuIEZvciBtb3JlIGRldGFpbHMsIHNlZSAiK3gpfXZhciBzdD17Y3JlYXRlT3JVcGRhdGVVc2VyOkcsY3JlYXRlT3JVcGRhdGVVc2VyUmVxdWVzdDpXLGNyZWF0ZU9yVXBkYXRlVXNlclN1Y2Nlc3M6SyxjcmVhdGVPclVwZGF0ZVVzZXJGYWlsdXJlOlosZGVzdHJveVNlc3Npb246Sixhbm9ueW1vdXNTZXNzaW9uQ2hhbmdlZDpRLHVzZXJJc1ByZXNlbnQ6dHQsdXNlcklzQWJzZW50OmV0LGNyZWF0ZUV2ZW50Om50LGlzRHVwbGljYXRlQ3JlYXRlT3JVcGRhdGVVc2VyUmVxdWVzdDpSLGNoZWNrQ2Rhc0JyZWFjaGluZ0xpbWl0OnJ0LGNoZWNrSWRlbnRpdHlWZXJpZmljYXRpb25JbnN0YWxsOm90LGNoZWNrSWRlbnRpdHlWZXJpZmljYXRpb25FcnJvcjppdCxleHRlbmRBbm9ueW1vdXNTZXNzaW9uU3VjY2VzczphdCxjaGVja0p3dEV4cGlyeVN0YXR1czp1dH19LDM0OTQ2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse1I4OmZ1bmN0aW9uKCl7cmV0dXJuIGN9LFVwOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LFhROmZ1bmN0aW9uKCl7cmV0dXJuIGx9fSk7dmFyIHIsbyxpPW4oMTI0NTUpLGE9big2OTc0NCksdT0zMCxzPTE4ZTU7ZnVuY3Rpb24gYyh0LGUpeyghcnx8byE9PWUmJnQmJnQuZmVhdHVyZXMmJnQuZmVhdHVyZXMuc2luZ2xlUGFnZUFwcFJhdGVMaW1pdGluZykmJmwoZSl9ZnVuY3Rpb24gbCh0KXshZnVuY3Rpb24odCxlLG4pe289bixyPSgwLGkuJCkoKGZ1bmN0aW9uKHQsZSxuLHIsbyxpLHUscyl7dmFyIGM9ZSgpLnNlc3Npb247cmV0dXJuIHQuY3JlYXRlT3JVcGRhdGVVc2VyKGMsbnVsbCE9bj9uOnZvaWQgMCx2b2lkIDAscixvLGksdSwoMCxhLmlkKSgpLHMpfSksdCxlLCJ1c2VyX3VwZGF0ZSIpfSh1LHMsdCl9fSwzNTIwNjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtBTTpmdW5jdGlvbigpe3JldHVybiBsfSxBcjpmdW5jdGlvbigpe3JldHVybiB2fSxHNTpmdW5jdGlvbigpe3JldHVybiBhfSxJMTpmdW5jdGlvbigpe3JldHVybiB1fSxJRDpmdW5jdGlvbigpe3JldHVybiBofSxVMDpmdW5jdGlvbigpe3JldHVybiBnfSxXZDpmdW5jdGlvbigpe3JldHVybiB5fSxjVDpmdW5jdGlvbigpe3JldHVybiBtfSxucjpmdW5jdGlvbigpe3JldHVybiBjfSxycjpmdW5jdGlvbigpe3JldHVybiBzfSx1bjpmdW5jdGlvbigpe3JldHVybiBkfSx3MzpmdW5jdGlvbigpe3JldHVybiBmfX0pO3ZhciByPS9pcGhvbmV8aXBhZHxpcG9kfGFuZHJvaWR8YmxhY2tiZXJyeXxvcGVyYSBtaW5pfGllbW9iaWxlL2ksbz1bIi5pbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXIiLCIuaW50ZXJjb20tbGF1bmNoZXItZnJhbWUiLCIjaW50ZXJjb20tY29udGFpbmVyIiwiLmludGVyY29tLW1lc3NlbmdlciIsIi5pbnRlcmNvbS1ub3RpZmljYXRpb25zIl07ZnVuY3Rpb24gaSh0KXt0cnl7aWYoISh0IGluIHdpbmRvdykpcmV0dXJuITE7dmFyIGU9d2luZG93W3RdO3JldHVybiBudWxsIT09ZSYmKGUuc2V0SXRlbSgiaW50ZXJjb20tdGVzdCIsIjAiKSxlLnJlbW92ZUl0ZW0oImludGVyY29tLXRlc3QiKSwhMCl9Y2F0Y2godCl7cmV0dXJuITF9fWZ1bmN0aW9uIGEoKXtyZXR1cm4gaSgibG9jYWxTdG9yYWdlIil9ZnVuY3Rpb24gdSgpe3JldHVybiEhKHdpbmRvdy5GaWxlUmVhZGVyJiZ3aW5kb3cuRmlsZSYmd2luZG93LkZpbGVMaXN0JiZ3aW5kb3cuRm9ybURhdGEpfWZ1bmN0aW9uIHMoKXt2YXIgdD1mKCkudXNlckFnZW50O3JldHVybiEhdCYmKG51bGwhPT10Lm1hdGNoKHIpJiZ2b2lkIDAhPT13aW5kb3cucGFyZW50KX1mdW5jdGlvbiBjKCl7dmFyIHQ9ZigpLnZlbmRvcnx8IiIsZT1mKCkudXNlckFnZW50fHwiIjtyZXR1cm4gMD09PXQuaW5kZXhPZigiQXBwbGUiKSYmL1xzU2FmYXJpXC8vLnRlc3QoZSl9ZnVuY3Rpb24gbCh0KXt2b2lkIDA9PT10JiYodD13aW5kb3cpO3ZhciBlPWYoKSxuPSJHb29nbGUgSW5jLiI9PT1lLnZlbmRvciYmIXQuY2hyb21lO3JldHVybiIiPT09ZS5sYW5ndWFnZXMmJihlLndlYmRyaXZlcnx8bil9ZnVuY3Rpb24gZigpe3JldHVybiBuYXZpZ2F0b3J8fHt9fWZ1bmN0aW9uIGQodCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PWYoKS51c2VyQWdlbnQpLC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KHQpJiYhd2luZG93Lk1TU3RyZWFtfWZ1bmN0aW9uIHAoKXt2YXIgdDtyZXR1cm4obnVsbD09KHQ9ZnVuY3Rpb24oKXtpZihkKCkpe3ZhciB0PWYoKS5hcHBWZXJzaW9uLm1hdGNoKC9PUyAoXGQrKV8oXGQrKV8/KFxkKyk/Lyk7cmV0dXJue21ham9yOnBhcnNlSW50KHRbMV0sMTApLG1pbm9yOnBhcnNlSW50KHRbMl0sMTApLHBhdGNoOnBhcnNlSW50KHRbM118fDAsMTApfX1yZXR1cm4gbnVsbH0oKSk/dm9pZCAwOnQubWFqb3IpPj0xNX1mdW5jdGlvbiBoKCl7dmFyIHQ9ZigpLnVzZXJBZ2VudCxlPWQodCksbj0hIXQubWF0Y2goL1dlYktpdC9pKTtyZXR1cm4gZSYmbiYmIXQubWF0Y2goL0NyaU9TL2kpJiZwKCl9ZnVuY3Rpb24gdigpe3JldHVybiBvLnNvbWUoKGZ1bmN0aW9uKHQpe3ZhciBlPXdpbmRvdy5wYXJlbnQuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KTtpZihlKXt2YXIgbj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKTtyZXR1cm4gbnVsbD09PW58fCJub25lIj09PW4uZGlzcGxheX19KSl9dmFyIHk9ZnVuY3Rpb24oKXtyZXR1cm4ib250b3VjaHN0YXJ0ImluIHdpbmRvd3x8bmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPjB9LGc9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93Lm5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoIk1hYyIpPj0wfSxtPWZ1bmN0aW9uKCl7cmV0dXJuIlJlc2l6ZU9ic2VydmVyImluIHdpbmRvd307ZS5BeT17aGFzWGhyMlN1cHBvcnQ6ZnVuY3Rpb24oKXtyZXR1cm4iWE1MSHR0cFJlcXVlc3QiaW4gd2luZG93JiYid2l0aENyZWRlbnRpYWxzImluIG5ldyBYTUxIdHRwUmVxdWVzdH0saGFzTG9jYWxTdG9yYWdlU3VwcG9ydDphLGhhc1Nlc3Npb25TdG9yYWdlU3VwcG9ydDpmdW5jdGlvbigpe3JldHVybiBpKCJzZXNzaW9uU3RvcmFnZSIpfSxoYXNGaWxlU3VwcG9ydDp1LGhhc0F1ZGlvU3VwcG9ydDpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImF1ZGlvIik7cmV0dXJuISF0LmNhblBsYXlUeXBlJiYhIXQuY2FuUGxheVR5cGUoImF1ZGlvL21wZWc7IikucmVwbGFjZSgvXm5vJC8sIiIpfSxoYXNWaXNpYmlsaXR5U3VwcG9ydDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT1kb2N1bWVudC5oaWRkZW58fHZvaWQgMCE9PWRvY3VtZW50Lm1vekhpZGRlbnx8dm9pZCAwIT09ZG9jdW1lbnQubXNIaWRkZW58fHZvaWQgMCE9PWRvY3VtZW50LndlYmtpdEhpZGRlbn0sbWVzc2VuZ2VySXNWaXNpYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIG8uc29tZSgoZnVuY3Rpb24odCl7dmFyIGU9d2luZG93LnBhcmVudC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpO2lmKGUpe3ZhciBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIG4mJm4ud2lkdGg+MCYmbi5oZWlnaHQ+MH19KSl9LG1lc3Nlbmdlckhhc0Rpc3BsYXlOb25lU2V0OnYsaXNNb2JpbGVCcm93c2VyOnMsaXNJT1NGaXJlZm94OmZ1bmN0aW9uKCl7cmV0dXJuISFmKCkudXNlckFnZW50Lm1hdGNoKCJGeGlPUyIpfSxpc0ZpcmVmb3g6ZnVuY3Rpb24oKXtyZXR1cm4hIWYoKS51c2VyQWdlbnQubWF0Y2goIkZpcmVmb3giKX0saXNTYWZhcmk6Yyxpc0VsZWN0cm9uOmZ1bmN0aW9uKCl7dmFyIHQ9ZigpLnVzZXJBZ2VudHx8IiIsZT13aW5kb3cucGFyZW50fHx7fSxuPWUucHJvY2VzcyYmZS52ZXJzaW9ucyYmZS52ZXJzaW9ucy5lbGVjdHJvbjtyZXR1cm4vXHNFbGVjdHJvblwvLy50ZXN0KHQpfHxufSxpc0lFOmZ1bmN0aW9uKCl7dmFyIHQ9ZigpLnVzZXJBZ2VudHx8IiI7cmV0dXJuIHQuaW5kZXhPZigiTVNJRSIpPjB8fHQuaW5kZXhPZigiVHJpZGVudCIpPjB9LGlzRWRnZTpmdW5jdGlvbigpe3JldHVybihmKCkudXNlckFnZW50fHwiIikuaW5kZXhPZigiRWRnZSIpPjB9LGlzTmF0aXZlTW9iaWxlOmZ1bmN0aW9uKCl7cmV0dXJuIGYoKS5pc05hdGl2ZU1vYmlsZX0saXNDaHJvbWU6ZnVuY3Rpb24oKXt2YXIgdD13aW5kb3cuY2hyb21lLGU9ZigpLnZlbmRvcixuPWYoKS51c2VyQWdlbnQuaW5kZXhPZigiT1BSIik+LTEscj1mKCkudXNlckFnZW50LmluZGV4T2YoIkVkZ2UiKT4tMTtyZXR1cm4hIWYoKS51c2VyQWdlbnQubWF0Y2goIkNyaU9TIil8fG51bGwhPXQmJiJHb29nbGUgSW5jLiI9PT1lJiYhMT09PW4mJiExPT09cn0saXNJT1M6ZCxpc0lPUzE1U2FmYXJpOmgsaXNBbmRyb2lkOmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1mKCkudXNlckFnZW50KSx0JiZ0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiYW5kcm9pZCIpPi0xfSxpc01hY09TOmd9fSw2ODg5NzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0dXJuIHZvaWQgMCE9PXQuQW5kcm9pZEhvc3Q/dC5BbmRyb2lkSG9zdDp2b2lkIDAhPT10LmlPU0hvc3Q/dC5pT1NIb3N0OnZvaWQgMH1mdW5jdGlvbiBvKHQpe3JldHVybiB2b2lkIDAhPT10LkFuZHJvaWRIb3N0PyJhbmRyb2lkIjp2b2lkIDAhPT10LmlPU0hvc3Q/ImlvcyI6dm9pZCAwfW4uZChlLHtWXzpmdW5jdGlvbigpe3JldHVybiByfSx1RTpmdW5jdGlvbigpe3JldHVybiBvfX0pfSw2MTUwMzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtvbjpmdW5jdGlvbigpe3JldHVybiBnfSxhSjpmdW5jdGlvbigpe3JldHVybiBydH0sc1U6ZnVuY3Rpb24oKXtyZXR1cm4gbnR9LEJvOmZ1bmN0aW9uKCl7cmV0dXJuIFN9LHJtOmZ1bmN0aW9uKCl7cmV0dXJuIFJ9LFg0OmZ1bmN0aW9uKCl7cmV0dXJuIE59LHlXOmZ1bmN0aW9uKCl7cmV0dXJuIE19LHZrOmZ1bmN0aW9uKCl7cmV0dXJuIGZ0fSxQUzpmdW5jdGlvbigpe3JldHVybiBGfSxLVjpmdW5jdGlvbigpe3JldHVybiBpdH0sRnk6ZnVuY3Rpb24oKXtyZXR1cm4gR30sTG86ZnVuY3Rpb24oKXtyZXR1cm4geH0sbzg6ZnVuY3Rpb24oKXtyZXR1cm4gVn0sa0c6ZnVuY3Rpb24oKXtyZXR1cm4gUH0sS1c6ZnVuY3Rpb24oKXtyZXR1cm4gZHR9LGtOOmZ1bmN0aW9uKCl7cmV0dXJuIEh9LHRlOmZ1bmN0aW9uKCl7cmV0dXJuIHp9LCRMOmZ1bmN0aW9uKCl7cmV0dXJuIHV0fSxlQzpmdW5jdGlvbigpe3JldHVybiBCfSxOVTpmdW5jdGlvbigpe3JldHVybiBPfSxHbjpmdW5jdGlvbigpe3JldHVybiBRfSxiWTpmdW5jdGlvbigpe3JldHVybiBffSxJRjpmdW5jdGlvbigpe3JldHVybiB3fSxfSjpmdW5jdGlvbigpe3JldHVybiBldH0sS3U6ZnVuY3Rpb24oKXtyZXR1cm4gbX0sUGM6ZnVuY3Rpb24oKXtyZXR1cm4gRX0sSTU6ZnVuY3Rpb24oKXtyZXR1cm4gYn0sSEM6ZnVuY3Rpb24oKXtyZXR1cm4gc3R9LE5XOmZ1bmN0aW9uKCl7cmV0dXJuIEl9LEhkOmZ1bmN0aW9uKCl7cmV0dXJuIEt9LEhxOmZ1bmN0aW9uKCl7cmV0dXJuIFp9LHZKOmZ1bmN0aW9uKCl7cmV0dXJuIFV9LEoxOmZ1bmN0aW9uKCl7cmV0dXJuIEx9LFNZOmZ1bmN0aW9uKCl7cmV0dXJuIGt9LEhmOmZ1bmN0aW9uKCl7cmV0dXJuIFd9LFVtOmZ1bmN0aW9uKCl7cmV0dXJuIHF9LG5mOmZ1bmN0aW9uKCl7cmV0dXJuIFh9LFhsOmZ1bmN0aW9uKCl7cmV0dXJuIEN9LFFuOmZ1bmN0aW9uKCl7cmV0dXJuIGx0fSxvRjpmdW5jdGlvbigpe3JldHVybiBhdH19KTt2YXIgcj1uKDExOTUpLG89big2NjgzOCksaT1uKDkyNDE3KSxhPW4oMzMwNDgpLHU9big4NDM4Mikscz1uKDEzNzA5KSxjPW4oMTgyOTkpLGw9bigyMjk3OSksZj1uKDExMDgpO2Z1bmN0aW9uIGQodCl7aWYodCYmMCE9PXQudHJpbSgpLmxlbmd0aClyZXR1cm4gdH12YXIgcD1uKDk3MTYwKSxoPW4ubihwKTtmdW5jdGlvbiB2KHQpe2lmKHQmJmZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiExO3ZhciBlPShuZXcgT3B0aW9uKS5zdHlsZTtyZXR1cm4gZS5jb2xvcj10LCEhZS5jb2xvcn0odCkpe3ZhciBlPWgoKSh7cHJpbWFyeUNvbG9yOnR9KTtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZS5oZWFkZXJfdGl0bGVfY29sb3J9fWZ1bmN0aW9uIHkoKXtyZXR1cm4geT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LHkuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBnPSJ2aWV3ZWQtdG9vbHRpcHMiO2Z1bmN0aW9uIG0odCl7dmFyIGU9dC5ibG9ja3Msbj10LmNyZWF0ZWRBdCxvPXQuY2xpZW50SWQsaT10LmVtYWlsLGE9dC5jb21wb3NlclN1Z2dlc3Rpb25zLHU9dm9pZCAwPT09YT9udWxsOmEscz10LnNlbGZTZXJ2ZVN1Z2dlc3Rpb25zTWF0Y2gsYz12b2lkIDAhPT1zJiZzLGw9dC5ib3RJbnRybyxmPXZvaWQgMD09PWw/bnVsbDpsLGQ9dC5yZXNvbHV0aW9uQm90QmVoYXZpb3JWZXJzaW9uSWQscD12b2lkIDA9PT1kP251bGw6ZCxoPXQuc3RhcnRlZEZyb21TZWFyY2hCcm93c2Usdj12b2lkIDAhPT1oJiZoLGc9dC5tZXNzZW5nZXJPcGVuUmVxdWVzdElkLG09dm9pZCAwPT09Zz9udWxsOmcsYj10LmN1c3RvbUF0dHJpYnV0ZXMsdz12b2lkIDA9PT1iP251bGw6YixfPXtjcmVhdGVkX2F0Om4sc2VsZl9zZXJ2ZV9zdWdnZXN0aW9uc19tYXRjaDpjfTtvJiYoXy5jbGllbnRfYXNzaWduZWRfdXVpZD1vKSxpJiYoXy5lbWFpbD1pKSx1JiYoXy5jb21wb3Nlcl9zdWdnZXN0aW9ucz1KU09OLnN0cmluZ2lmeSh1LnN1Z2dlc3Rpb25zKSksZiYmKF8uYm90X2ludHJvPWYpLHAmJihfLnJlc29sdXRpb25fYm90X2JlaGF2aW9yX3ZlcnNpb25faWQ9cCksdiYmKF8uc2VhcmNoX2Jyb3dzZT0hMCksbnVsbCE9dSYmdS5zbmFwc2hvdElkJiYoXy5zbmFwc2hvdF9pZD11LnNuYXBzaG90SWQsXy5jb21wb3Nlcl9kaXNhYmxlZD11LmNvbXBvc2VyRGlzYWJsZWQpLG0mJihfLm1lc3Nlbmdlcl9vcGVuX3JlcXVlc3RfaWQ9bSk7dmFyIFM9ZnVuY3Rpb24odCl7dmFyIGU9ITA9PT10LnJ0fHwicGFyYWdyYXBoIiE9PXQudHlwZSxuPXkoe30sdCk7cmV0dXJuIGRlbGV0ZSBuLnJ0LGV8fChuLnRleHQ9KDAsci54KShuLnRleHQpKSxufSx4PWVbMF07aWYoInBhcmFncmFwaCI9PT14LnR5cGV8fCJoZWFkaW5nIj09PXgudHlwZXx8InN1YmhlYWRpbmciPT09eC50eXBlfHwiY29kZSI9PT14LnR5cGV8fCJvcmRlcmVkTGlzdCI9PT14LnR5cGV8fCJ1bm9yZGVyZWRMaXN0Ij09PXgudHlwZSlfLmJsb2Nrcz1KU09OLnN0cmluZ2lmeShlLm1hcChTKSk7ZWxzZSBpZigiaW1hZ2UiPT09eC50eXBlKXt2YXIgRT1lLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuInBhcmFncmFwaCI9PT10LnR5cGU/Uyh0KTp0fSkpO18uYmxvY2tzPUpTT04uc3RyaW5naWZ5KEUpfWVsc2UgaWYoImF0dGFjaG1lbnRMaXN0Ij09PXgudHlwZSl7dmFyIEM9ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiJwYXJhZ3JhcGgiPT09dC50eXBlP1ModCk6dH0pKTtfLmJsb2Nrcz1KU09OLnN0cmluZ2lmeShDKX1yZXR1cm4gdyYmKF8uY3VzdG9tX2F0dHJpYnV0ZXM9SlNPTi5zdHJpbmdpZnkodykpLF99ZnVuY3Rpb24gYih0LGUsbil7cmV0dXJue2NsaWVudF9hc3NpZ25lZF91dWlkOm4sY29udmVyc2F0aW9uX3BhcnQ6SlNPTi5zdHJpbmdpZnkoe2lkOnQscmVwbHlfb3B0aW9uOmV9KX19ZnVuY3Rpb24gdyh0KXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBfKHQpfSkpfWZ1bmN0aW9uIF8odCl7dmFyIGUsbixyO3JldHVybntpZDp0LmlkLHRpdGxlOnQudGl0bGUsZGVzY3JpcHRpb246dC5kZXNjcmlwdGlvbixwdWJsaXNoZWRBdDp0LnB1Ymxpc2hlZF9hdD8oMCxhLmtVKSh0LnB1Ymxpc2hlZF9hdCk6dm9pZCAwLGNvdmVySW1hZ2VVcmw6dC5jb3Zlcl9pbWFnZV91cmwsYXV0aG9yOntuYW1lOm51bGw9PShlPXQuYXV0aG9yKT92b2lkIDA6ZS5uYW1lLGZpcnN0TmFtZTpudWxsPT0obj10LmF1dGhvcik/dm9pZCAwOm4uZmlyc3RfbmFtZSxhdmF0YXI6e3NxdWFyZTEyODpudWxsPT0ocj10LmF1dGhvcik/dm9pZCAwOnIuYXZhdGFyfX0sYmxvY2tzOnQuYmxvY2tzfHxudWxsLGxhYmVsczp0LmxhYmVsc3x8bnVsbCxyZWFjdGlvbnNSZXBseTp0LnJlYWN0aW9uc19yZXBseT9zdCh0LnJlYWN0aW9uc19yZXBseSk6dm9pZCAwfX1mdW5jdGlvbiBTKHQpe3JldHVybntpZDp0LmlkLHRpdGxlOnQudGl0bGUsYmxvY2tzOnQuYmxvY2tzfHxudWxsLHJlYWN0aW9uc1JlcGx5OnQucmVhY3Rpb25zX3JlcGx5P3N0KHQucmVhY3Rpb25zX3JlcGx5KTp2b2lkIDB9fWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQ/e2Jhbm5lcl92aWV3X2lkOnR9Ont9fWZ1bmN0aW9uIEUodCl7cmV0dXJuIHQ/e3Byb2dyZXNzX2lkOnR9Ont9fWZ1bmN0aW9uIEModCxlKXt2YXIgbj1lLnR5cGUscj1lLnBheWxvYWQsbz12b2lkIDA9PT1yP3t9OnIsaT1vLmNvbXBvc2VySGFzQ29udGVudCxhPW8uZXhlY3V0aW9uVGltZTtyZXR1cm57dHlwZTpuLHBheWxvYWQ6SlNPTi5zdHJpbmdpZnkoe2NvbXBvc2VyX2hhc19jb250ZW50OmksZXhlY3V0aW9uX3RpbWU6YX0pLG1ldGE6SlNPTi5zdHJpbmdpZnkoe2NvbnZlcnNhdGlvbl9pZDp0fSl9fWZ1bmN0aW9uIE8odCl7cmV0dXJuIEEodCl8fCF0Lmxhc3RfcGFydGljaXBhdGluZ19hZG1pbj92b2lkIDA6bnQodC5sYXN0X3BhcnRpY2lwYXRpbmdfYWRtaW4pfWZ1bmN0aW9uIEEodCl7dmFyIGU7cmV0dXJuIShudWxsPT0oZT10LmNvbnZlcnNhdGlvbl9tZXNzYWdlKXx8IWUudGVhbV9hdXRob3IpJiYwPT09KHQuY29udmVyc2F0aW9uX3BhcnRzP3QuY29udmVyc2F0aW9uX3BhcnRzLmNvbnZlcnNhdGlvbl9wYXJ0c3x8dC5jb252ZXJzYXRpb25fcGFydHM6W10pLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuYXV0aG9yLmlzX2FkbWluJiYhdC5hdXRob3IuaXNfYm90fSkpLmxlbmd0aH1mdW5jdGlvbiBJKHQpe3JldHVybiB0P3tjYW5Kb2luOnQuY2FuX2pvaW4saW5mbzp0LmluZm99Om51bGx9ZnVuY3Rpb24gayh0KXtyZXR1cm4gdC50aWNrZXRzP3t0aWNrZXRzOnQudGlja2V0cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBMKHQpfSkpLG5leHRQYWdlOnQubmV4dF9wYWdlfTp7dGlja2V0czpbXSxuZXh0UGFnZTpudWxsfX1mdW5jdGlvbiBMKHQpe3ZhciBlLG49ZnVuY3Rpb24odCl7cmV0dXJuIHQuYXR0cmlidXRlcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7dmFyIG47cmV0dXJuIHkoe30sdCwoKG49e30pW2UubmFtZV09eSh7fSxlLHt2YWx1ZTpUKGUudHlwZSxlLnZhbHVlKX0pLG4pKX0pLHt9KX0odCkscj17aWQ6dC5pZCxwdWJsaWNUaWNrZXRJZDp0LnB1YmxpY190aWNrZXRfaWR8fHQudGlja2V0X2lkLGNvbnZlcnNhdGlvbklkOnQuY29udmVyc2F0aW9uX2lkLG5hbWU6dC50aXRsZSxhdHRyaWJ1dGVzOm4sc3RhdHVzOnQuY3VycmVudF9zdGF0dXM/dC5jdXJyZW50X3N0YXR1cy50eXBlOm51bGwsc3RhdHVzTGFiZWw6bnVsbD09KGU9dC5jdXJyZW50X3N0YXR1cyk/dm9pZCAwOmUudGl0bGUsaGlzdG9yeTpqKHQpLGVtb2ppOnQuZW1vamksYXNzaWduZWU6bnQodC5hc3NpZ25lZSksdGlja2V0VHlwZUlkOnQudGlja2V0X3R5cGVfaWQsdGlja2V0VHlwZU5hbWU6dC50aWNrZXRfdHlwZV9uYW1lLHN0YXR1c1VwZGF0ZWRBdDooMCxhLmtVKShwYXJzZUludCh0LmxhdGVzdF9zdGF0dXNfdXBkYXRlZF9hdCkpLHJlYWQ6dC5yZWFkLHJlYWRBdDp0LnJlYWRfYXQsaW5saW5lU3RhdHVzSGVhZGVyVGV4dDp0LmlubGluZV9zdGF0dXNfaGVhZGVyX3RleHR9O3JldHVybiB0LmNvbnZlcnNhdGlvbl9idXR0b24mJihyLmNvbnZlcnNhdGlvbkJ1dHRvbj1mdW5jdGlvbih0KXt2YXIgZSxuLHI7aWYoIXQuY29udmVyc2F0aW9uX2J1dHRvbilyZXR1cm47cmV0dXJue3RleHQ6dC5jb252ZXJzYXRpb25fYnV0dG9uLnRleHQsaWNvbjp0LmNvbnZlcnNhdGlvbl9idXR0b24uaWNvbixjb250aW51ZUNvbnZlcnNhdGlvbjpudWxsPT0oZT1udWxsPT0obj10LmNvbnZlcnNhdGlvbl9idXR0b24pP3ZvaWQgMDpuLmNvbnRpbnVlX2NvbnZlcnNhdGlvbil8fGUsY29udmVyc2F0aW9uQ2hhbm5lbDpudWxsPT0ocj10LmNvbnZlcnNhdGlvbl9idXR0b24pP3ZvaWQgMDpyLmNvbnZlcnNhdGlvbl9jaGFubmVsfX0odCkpLHQuc2hhcmluZz9yLnNoYXJpbmc9SSh0LnNoYXJpbmcpOnIuc2hhcmluZz1udWxsLHJ9ZnVuY3Rpb24gVCh0LGUpe3JldHVybiJmaWxlcyI9PT10P2UubWFwKHMuSyk6ZX1mdW5jdGlvbiBqKHQpe3ZhciBlPXQuc3RhdHVzX2hpc3Rvcnl8fHQuc3RhdHVzX2xpc3Q7cmV0dXJuIHQuY3VycmVudF9zdGF0dXMmJmUubGVuZ3RoP2UubWFwKChmdW5jdGlvbih0KXtyZXR1cm57cmVsYXRpdmVUaW1lOigwLGMuaXcpKCgwLGEua1UpKHBhcnNlSW50KHQuY3JlYXRlZF9kYXRlKSkpLGlzQ3VycmVudDp0LmlzX2N1cnJlbnRfc3RhdHVzLHRpdGxlOnQudGl0bGUsdHlwZTp0LnR5cGUsZGV0YWlsOnQuc3RhdHVzX2RldGFpbH19KSk6W119ZnVuY3Rpb24gUCh0LGUpe2lmKHZvaWQgMD09PWUmJihlPXt9KSx0KXJldHVybiBlLm92ZXJyaWRlQ29tcG9zZXJWaXNpYmlsaXR5JiYodC52aXNpYmlsaXR5PWUub3ZlcnJpZGVDb21wb3NlclZpc2liaWxpdHkpLHt2aXNpYmlsaXR5OnQudmlzaWJpbGl0eSx2aXNpYmxlOiJoaWRkZW4iIT09dC52aXNpYmlsaXR5LGRpc2FibGVkOiJ2aXNpYmxlX2FuZF9kaXNhYmxlZCI9PT10LnZpc2liaWxpdHl8fCJoaWRkZW4iPT09dC52aXNpYmlsaXR5LGN1c3RvbUJvdEFjdGl2ZTp0LmN1c3RvbV9ib3RfYWN0aXZlLHdvcmtmbG93QWN0aXZlOnQud29ya2Zsb3dfYWN0aXZlLHNlbGZTZXJ2ZVN1Z2dlc3Rpb25zRW5hYmxlZDp0LnNlbGZfc2VydmVfc3VnZ2VzdGlvbnNfZW5hYmxlZCx2ZXJzaW9uOnQudmVyc2lvbixwbGFjZWhvbGRlcjp0LnBsYWNlaG9sZGVyfX1mdW5jdGlvbiBOKHQpe3JldHVybntpZDp0LmlkLG5hbWU6dC5uYW1lLGRlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb24sc2VjdGlvbnM6dC5zZWN0aW9ucyxhcnRpY2xlQ291bnQ6dC5hcnRpY2xlX2NvdW50LGFydGljbGVzOnQuYXJ0aWNsZXMsY2hpbGRyZW46dC5jaGlsZHJlbi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFydGljbGVzLmxlbmd0aD4wfHx0LmNoaWxkcmVuLmxlbmd0aD4wfSkpLm1hcChOKSxhdXRob3JzOnQuYXV0aG9yc319ZnVuY3Rpb24gTSh0KXtyZXR1cm57YXJ0aWNsZXM6dC5hcnRpY2xlcy5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlLG4scixvLGk9e2lkOnQuaWQsdXJsOnQudXJsfTtpZihudWxsIT0oZT10LmhpZ2hsaWdodCkmJmUudGl0bGUpaS50aXRsZT1udWxsPT0obz10LmhpZ2hsaWdodCl8fG51bGw9PShvPW8udGl0bGUpP3ZvaWQgMDpvWzBdO2Vsc2UgaWYobnVsbCE9KG49dC5oaWdobGlnaHQpJiZuLnN1bW1hcnkpe3ZhciBhO2kudGl0bGU9dC50aXRsZSxpLnN1bW1hcnk9KG51bGw9PShhPXQuaGlnaGxpZ2h0KXx8bnVsbD09KGE9YS5zdW1tYXJ5KT92b2lkIDA6YVswXSl8fHQuc3VtbWFyeX1lbHNlIGlmKG51bGwhPShyPXQuaGlnaGxpZ2h0KSYmci5ib2R5KXt2YXIgdTtpLnRpdGxlPXQudGl0bGUsaS5zdW1tYXJ5PShudWxsPT0odT10LmhpZ2hsaWdodCl8fG51bGw9PSh1PXUuYm9keSk/dm9pZCAwOnVbMF0pfHx0LnN1bW1hcnl9ZWxzZSBpLnRpdGxlPXQudGl0bGU7cmV0dXJuIGl9KSl9fWZ1bmN0aW9uIFIodCl7cmV0dXJue2F2YWlsYWJsZV9sb2NhbGVzOnQuYXZhaWxhYmxlX2xvY2FsZXMsY29udGVudElkOnQuY29udGVudF9pZCxkZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9uLGlkOnQuaWQscmVhY3Rpb25zUmVwbHk6dC5yZWFjdGlvbnNfcmVwbHk/c3QodC5yZWFjdGlvbnNfcmVwbHkpOnZvaWQgMCx0aXRsZTp0LnRpdGxlLHVwZGF0ZWRBdDp0LnVwZGF0ZWRfYXQsdXJsOnQudXJsLGFsZXhhbmRyaWFEYXRhOnQuYWxleGFuZHJpYV9kYXRhLHB1YmxpY1VybDp0LnB1YmxpY191cmwsaGVscENlbnRlcklkOnQuaGVscF9jZW50ZXJfaWQscmVsYXRlZENvbnZlcnNhdGlvbklkOnQucmVsYXRlZF9jb252ZXJzYXRpb25faWQ/dC5yZWxhdGVkX2NvbnZlcnNhdGlvbl9pZDpudWxsfX1mdW5jdGlvbiBVKHQpe3JldHVybiBBKHQpP3thZG1pbnM6KHQuY29udmVyc2F0aW9uX21lc3NhZ2UudGVhbV9hdXRob3IubGFzdF9hY3RpdmVfYWRtaW5zfHxbXSkubWFwKG50KSxuYW1lOnQuY29udmVyc2F0aW9uX21lc3NhZ2UudGVhbV9hdXRob3IubmFtZX06dm9pZCAwfWZ1bmN0aW9uIHoodCl7cmV0dXJuIHQ/e2NvbnRhaW5lcjp0LmNvbnRhaW5lcixib3JkZXJDb2xvcnM6dC5ib3JkZXJfY29sb3JzfTpudWxsfWZ1bmN0aW9uIEgodCl7dmFyIGU7cmV0dXJuIHQ/e3RpdGxlOnQudGl0bGUsc3VmZml4OnQuc3VmZml4LGF2YXRhcnM6bnVsbD09KGU9dC5hdmF0YXJzKT92b2lkIDA6ZS5tYXAoaXQpLHRpbWVzdGFtcDp0LnRpbWVzdGFtcH06bnVsbH1mdW5jdGlvbiBGKHQpe3JldHVybnthZG1pbnM6dC5hdXRob3JzP3QuYXV0aG9ycy5tYXAoRCk6W10sYXZhdGFyOml0KHQuYXZhdGFyKSxmaXJzdE5hbWU6Qih0LmZpcnN0X25hbWUpLGlkOnQuaWQsaW5pdGlhbDp0LmluaXRpYWwsaXNBZG1pbjp0LmlzX2FkbWluLGlzQm90OnQuaXNfYm90LGlzU2VsZjp0LmlzX3NlbGYsdHlwZTp0LnR5cGUudG9Mb3dlckNhc2UoKX19ZnVuY3Rpb24gRCh0KXtyZXR1cm57YXZhdGFyOml0KHQuYXZhdGFyKSxmaXJzdE5hbWU6Qih0LmZpcnN0X25hbWUpfX1mdW5jdGlvbiBCKHQpe3JldHVybiB0fHwiIn1mdW5jdGlvbiBWKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1bXSksdC5tYXAoRyl9ZnVuY3Rpb24gRyh0KXtyZXR1cm4geSh7fSx0LHtmcm9tOnQuZnJvbT9udCh0LmZyb20pOm51bGwscmVhY3Rpb25fc2V0Oih0LnJlYWN0aW9uX3NldHx8W10pLm1hcChjdCl9KX1mdW5jdGlvbiBxKHQpe3JldHVybiB0P3QubWFwKFcpOltdfWZ1bmN0aW9uIFcodCl7dmFyIGU9SlNPTi5wYXJzZShsLkwuZ2V0KGcpKXx8W107cmV0dXJue2lkOnQuaWQsZGlzcGxheUJlaGF2aW9yOnQuZGlzcGxheV9iZWhhdmlvcnx8MCx0b29sdGlwczp0LnRvb2x0aXBzLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geSh7fSx0LHtpc09wZW46ITEsaXNNYXRjaGVkOigwLG8uSSkodC51cmxfcHJlZGljYXRlcyksaXNWaWV3ZWQ6LTEhPT1uLmluZGV4T2YodC5pZCksdG9vbHRpcEdyb3VwSWQ6ZS5pZCxjdXN0b21pemF0aW9uT3B0aW9uczplLmN1c3RvbWl6YXRpb25fb3B0aW9uc3x8Zi5ufSl9KG4sdCxlKX0pKS5tYXAocy5LKX19ZnVuY3Rpb24gSyh0KXtpZih0KXt2YXIgZT10LnNlbmRlcj9udCh0LnNlbmRlcik6bnVsbDtyZXR1cm57aWQ6dC5pZCxydWxlc2V0SWQ6dC5ydWxlc2V0X2lkLGZvcm1hdDp0LmZvcm1hdCxzZW5kZXI6ZSxzdXJ2ZXlQcm9ncmVzc0lkOnQuc3VydmV5X3Byb2dyZXNzX2lkLHN0ZXBzOnQuc3RlcHMubWFwKFopLHN0ZXBDb3VudDp0LnN0ZXBfY291bnQsYWN0aXZlU3RlcElkOnQuc3RlcHNbMF0uaWQsZGlzbWlzc2VkOiExLGhpZGRlbjohMSxjb21wbGV0ZWQ6ITEsY3VzdG9taXphdGlvbk9wdGlvbnM6eSh7fSwoMCxzLkspKHQuY3VzdG9taXphdGlvbl9vcHRpb25zKSksZGlzbWlzc2libGU6dC5kaXNtaXNzaWJsZSxzaG93UHJvZ3Jlc3NCYXI6dC5zaG93X3Byb2dyZXNzX2Jhcn19fWZ1bmN0aW9uIFoodCl7cmV0dXJue2lkOnQuaWQsYWN0aW9uczp0LmFjdGlvbnMubWFwKFkpLGJsb2Nrczp0LmJsb2NrcyxzdGVwVHlwZTp0LnN0ZXBfdHlwZSxxdWVzdGlvbnM6dC5xdWVzdGlvbnMubWFwKEopLGN1c3RvbUJ1dHRvblRleHQ6dC5jdXN0b21fYnV0dG9uX3RleHR9fWZ1bmN0aW9uIEoodCl7cmV0dXJue2lkOnQuaWQsYmxvY2tzOnQuYmxvY2tzLGRhdGE6KDAscy5LKSh0LmRhdGEpLHF1ZXN0aW9uVHlwZTp0LnF1ZXN0aW9uX3R5cGUscmVzcG9uc2U6dC5yZXNwb25zZXx8dm9pZCAwfX1mdW5jdGlvbiBZKHQpe3JldHVybntpZDp0LmlkLGFjdGlvblR5cGU6dC5hY3Rpb25fdHlwZSx3ZWJVcmw6dC53ZWJfdXJsLGFjdGlvblRpdGxlOnQuYWN0aW9uX3RpdGxlfX1mdW5jdGlvbiBRKHQpe3JldHVybntpZDp0LmlkLGV2ZW50OnQuZXZlbnQscHJlQWN0aW9uOnQubWVzc2VuZ2VyX3ByZV9hY3Rpb24sc2VsZWN0b3I6dC5zZWxlY3Rvcn19ZnVuY3Rpb24gWCh0KXtyZXR1cm4gdD8oKDAsdS5rNykoIlRvdXIgcmVjZWl2ZWQiLHQpLHtpZDp0LmlkLnRvU3RyaW5nKCksYWN0aXZlU3RlcElkOnQuYWN0aXZlX3N0ZXBfaWQudG9TdHJpbmcoKSxhdXRob3I6dC5hdXRob3I/Rih0LmF1dGhvcik6bnVsbCxzdGVwczooZT10LnN0ZXBzLCgwLGkuTSkoZSxbIm9yZGVyIl0sWyJhc2MiXSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue2lkOihlPXQpLmlkLnRvU3RyaW5nKCksYmxvY2tzOmUuYmxvY2tzLG9yZGVyOmUub3JkZXIscHJvZ3Jlc3Npb25CZWhhdmlvcjp0dChlLnByb2dyZXNzaW9uX2JlaGF2aW9yKSxwbGFjZW1lbnQ6ZS5wbGFjZW1lbnQscG9pbnRlclNpemU6ZS5wb2ludGVyX3NpemUsc2VsZWN0b3I6ZS5zZWxlY3RvcixzZWxlY3RvcnM6ZS5zZWxlY3RvcnMsdXJsOmUudXJsLGJ1dHRvblRleHQ6ZS5idXR0b25fdGV4dCx1cmxCdXR0b25WYWx1ZTplLnVybF9idXR0b25fdmFsdWV9O3ZhciBlfSkpLHRpdGxlOnQudGl0bGUsdXJsOnQudXJsLHJlc3RhcnRhYmxlOnQucmVzdGFydGFibGUsc25vb3plYWJsZTp0LnNub296ZWFibGUsZW5kVG91ckFuaW1hdGlvbjp0LmVuZF90b3VyX2FuaW1hdGlvbixwcm9ncmVzc1N0YXJ0VXJsOnQuc3RhcnRfdXJsLHByb2dyZXNzSWQ6dC5wcm9ncmVzc19pZCxidXR0b25Db2xvcjp0LmJ1dHRvbl9jb2xvcixiYWNrZ3JvdW5kQ29sb3I6dC5iYWNrZ3JvdW5kX2NvbG9yLHRvdXJUZXh0Q29sb3JPdmVycmlkZTp2KHQuYmFja2dyb3VuZF9jb2xvciksY3VzdG9tSGVhZGVyVGV4dDp0LmN1c3RvbV9oZWFkZXJfdGV4dCxjdXN0b21Gb250OnQuY3VzdG9tX2ZvbnQsc25vb3plQnV0dG9uVGV4dDp0LnNub296ZV9idXR0b25fdGV4dCxyZXN0YXJ0QnV0dG9uVGV4dDp0LnJlc3RhcnRfYnV0dG9uX3RleHR9KTp7fTt2YXIgZX12YXIgJD1bIm1hbnVhbCIsImNsaWNrIiwidHlwZSIsImhvdmVyIl07ZnVuY3Rpb24gdHQodCl7cmV0dXJuICRbdF19ZnVuY3Rpb24gZXQodCl7dmFyIGU7cmV0dXJue2lkOnQuaWQsYmxvY2tzOnQuYmxvY2tzLGRpc3BsYXlEdXJhdGlvbjp0LmRpc3BsYXlfZHVyYXRpb24sZGlzbWlzc2libGU6bnVsbCE9KGU9dC5kaXNtaXNzaWJsZSkmJmV9fWZ1bmN0aW9uIG50KHQpe3JldHVybiB0P3thdmF0YXI6aXQodC5hdmF0YXIpLGZpcnN0TmFtZTpCKHQuZmlyc3RfbmFtZSksaW5pdGlhbDp0LmluaXRpYWx8fHQuYXZhdGFyLmluaXRpYWxzLGludHJvOmQodC5pbnRybyksaXNBY3RpdmU6dC5pc19hY3RpdmUsaXNBZG1pbjohMCxpc0JvdDp0LmlzX2JvdCxpc1NlbGY6ITEsam9iVGl0bGU6ZCh0LmpvYl90aXRsZSksbGFzdEFjdGl2ZUF0OigwLGEua1UpKHQubGFzdF9hY3RpdmVfYXQpLGxvY2F0aW9uOnQubG9jYXRpb24/b3QodC5sb2NhdGlvbik6dm9pZCAwLGN1c3RvbWl6ZWRJZGVudGl0eTp0LmN1c3RvbWl6ZWRfaWRlbnRpdHksaGFzQUk6dC5oYXNfYWl9Om51bGx9ZnVuY3Rpb24gcnQodCl7aWYodClyZXR1cm57cGFydGljaXBhbnQ6bnQodC5wYXJ0aWNpcGFudCksaGFzQUk6dC5oYXNfYWksdXNlQm90VVg6dC51c2VfYm90X3V4LHVzZUN1c3RvbWl6ZWRJZGVudGl0eTp0Lmhhc19jdXN0b21pemVkX2lkZW50aXR5LHN0cmVhbWluZ1BhcnQ6dC5zdHJlYW1pbmdfcGFydD97dXhTdHlsZTp6KHQuc3RyZWFtaW5nX3BhcnQudXhfc3R5bGUpLG1ldGFkYXRhOkgodC5zdHJlYW1pbmdfcGFydC5tZXRhZGF0YSl9Om51bGx9fWZ1bmN0aW9uIG90KHQpe3JldHVybntjaXR5TmFtZTp0LmNpdHlfbmFtZSxjb3VudHJ5Q29kZTp0LmNvdW50cnlfY29kZSxjb3VudHJ5TmFtZTp0LmNvdW50cnlfbmFtZSx0aW1lem9uZU9mZnNldDp0LnRpbWV6b25lX29mZnNldH19ZnVuY3Rpb24gaXQodCl7dmFyIGUsbjtyZXR1cm4gdC5zcXVhcmVfMTI4P249dC5zcXVhcmVfMTI4OnQuaW1hZ2VfdXJscyYmdC5pbWFnZV91cmxzLnNxdWFyZV8xMjgmJihuPXQuaW1hZ2VfdXJscy5zcXVhcmVfMTI4KSx7c3F1YXJlMTI4Om4sc2hhcGU6dC5zaGFwZSxsYWJlbDp0LmxhYmVsLGluaXRpYWxzOnQuaW5pdGlhbHMsZGFya1NxdWFyZTEyODpudWxsPT0oZT10LmltYWdlX2RhcmtfdXJscyk/dm9pZCAwOmUuc3F1YXJlXzEyOH19ZnVuY3Rpb24gYXQodCl7cmV0dXJuIHR9ZnVuY3Rpb24gdXQodCxlKXtyZXR1cm4icGFydGljaXBhbnRfYWRkZWQiIT09ZSYmInBhcnRpY2lwYW50X3JlbW92ZWQiIT09ZSYmInRlYW1tYXRlX2pvaW5lZCIhPT1lfHwodC5wYXJ0aWNpcGFudC5hdmF0YXI9aXQodC5wYXJ0aWNpcGFudC5hdmF0YXIpKSx0fHx7fX1mdW5jdGlvbiBzdCh0KXtyZXR1cm57cmVhY3Rpb25JbmRleDp0LnJlYWN0aW9uX2luZGV4LHJlYWN0aW9uU2V0Oih0LnJlYWN0aW9uX3NldHx8W10pLm1hcChjdCl9fWZ1bmN0aW9uIGN0KHQpe3JldHVybntlbW9qaTp0LnVuaWNvZGVfZW1vdGljb24saW5kZXg6dC5pbmRleH19ZnVuY3Rpb24gbHQodCl7dmFyIGU7cmV0dXJue3Nob3dMYXN0UGFydE1ldGE6bnVsbD09KGU9bnVsbD09dD92b2lkIDA6dC5zaG93X2xhc3RfcGFydF9tZXRhKXx8ZX19ZnVuY3Rpb24gZnQodCl7cmV0dXJue2NvbnZlcnNhdGlvbk1lZGlhRW5hYmxlZDpudWxsPT10P3ZvaWQgMDp0LmNvbnZlcnNhdGlvbl9tZWRpYV9lbmFibGVkLGNvbnZlcnNhdGlvbkZpbGVzRW5hYmxlZDpudWxsPT10P3ZvaWQgMDp0LmNvbnZlcnNhdGlvbl9maWxlc19lbmFibGVkLGNvbnZlcnNhdGlvbkdpZnNFbmFibGVkOm51bGw9PXQ/dm9pZCAwOnQuY29udmVyc2F0aW9uX2dpZnNfZW5hYmxlZCxjb252ZXJzYXRpb25VcGxvYWRFeHRlbnNpb25zOm51bGw9PXQ/dm9pZCAwOnQuY29udmVyc2F0aW9uX3VwbG9hZF9leHRlbnNpb25zLGNvbnZlcnNhdGlvblZvaWNlTm90ZXNFbmFibGVkOm51bGw9PXQ/dm9pZCAwOnQuY29udmVyc2F0aW9uX3ZvaWNlX25vdGVzX2VuYWJsZWR9fWZ1bmN0aW9uIGR0KHQpe3JldHVybiB0P3koe30sdCx7aWNvbjp7bWVyZ2VkX2ludG9fY29udmVyc2F0aW9uOiJOZXdDb252ZXJzYXRpb24ifVt0LnJlYXNvbl19KTpudWxsfX0sMzgyNTM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7cjA6ZnVuY3Rpb24oKXtyZXR1cm4gZ3R9LFpTOmZ1bmN0aW9uKCl7cmV0dXJuIHNlfSx3ajpmdW5jdGlvbigpe3JldHVybiBOdH0seXM6ZnVuY3Rpb24oKXtyZXR1cm4gTHR9LGozOmZ1bmN0aW9uKCl7cmV0dXJuIFR0fSxIcTpmdW5jdGlvbigpe3JldHVybiBDLkhxfSxPcTpmdW5jdGlvbigpe3JldHVybiBFdH0sQXk6ZnVuY3Rpb24oKXtyZXR1cm4gcGV9LHFWOmZ1bmN0aW9uKCl7cmV0dXJuIHJlfSxvTzpmdW5jdGlvbigpe3JldHVybiBTdH0sWUc6ZnVuY3Rpb24oKXtyZXR1cm4gQ3R9LHRIOmZ1bmN0aW9uKCl7cmV0dXJuIHRlfSxKNTpmdW5jdGlvbigpe3JldHVybiBlZX0sVzk6ZnVuY3Rpb24oKXtyZXR1cm4gbXR9LFo1OmZ1bmN0aW9uKCl7cmV0dXJuIGNlfSxWWTpmdW5jdGlvbigpe3JldHVybiBidH0sWSQ6ZnVuY3Rpb24oKXtyZXR1cm4gZmV9LElHOmZ1bmN0aW9uKCl7cmV0dXJuIGxlfSxLczpmdW5jdGlvbigpe3JldHVybiB3dH0sbGY6ZnVuY3Rpb24oKXtyZXR1cm4gRnR9fSk7dmFyIHI9big0MDIzOCksbz1uKDM4Mjg1KSxpPW4oNDE4NDQpLGE9big2NjY0KSx1PW4oNDQyOTcpLHM9big2NjgzOCksYz1uKDYwNzcxKSxsPW4oMzMwNDgpLGY9big3NzIzNCksZD1uKDYwMzQ1KSxwPW4oODQzODIpLGg9big2ODg5Nyksdj1uKDEzNzA5KSx5PW4oNjk3NDQpLGc9ZnVuY3Rpb24odCl7aWYoIXR8fCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gbnVsbDt2YXIgZT10Lm1hdGNoKC9cLyhbXjtcc10rKS8pO3JldHVybiJhdWRpby9tcDQiPT09dD8iLm00YSI6ZSYmZS5sZW5ndGg+PTI/Ii4iK2VbMV06bnVsbH0sbT1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSgwLHYuSykodCk7cmV0dXJuIGUucHVibGlzaGVkQXQmJihlLnB1Ymxpc2hlZEF0PW5ldyBEYXRlKGUucHVibGlzaGVkQXQpKSxlLnJlY2VpdmVkQXQmJihlLnJlY2VpdmVkQXQ9bmV3IERhdGUoZS5yZWNlaXZlZEF0KSksZS5sYXRlc3RJbnRlcmFjdGlvbkF0JiYoZS5sYXRlc3RJbnRlcmFjdGlvbkF0PW5ldyBEYXRlKGUubGF0ZXN0SW50ZXJhY3Rpb25BdCkpLGV9KSl9O2Z1bmN0aW9uIGIodCl7cmV0dXJuIGI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGIodCl9ZnVuY3Rpb24gdygpe3c9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnP2U6ZyxhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IGoocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpJKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIscD0ic3VzcGVuZGVkWWllbGQiLGg9ImV4ZWN1dGluZyIsdj0iY29tcGxldGVkIix5PXt9O2Z1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gbSgpe31mdW5jdGlvbiBfKCl7fXZhciBTPXt9O2MoUyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciB4PU9iamVjdC5nZXRQcm90b3R5cGVPZixFPXgmJngoeChQKFtdKSkpO0UmJkUhPT1uJiZyLmNhbGwoRSxhKSYmKFM9RSk7dmFyIEM9Xy5wcm90b3R5cGU9Zy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShTKTtmdW5jdGlvbiBPKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBBKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT1iKGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBJKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT1oKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PXYpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPWsodSxyKTtpZihzKXtpZihzPT09eSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89dixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289aDt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/djpwLGMuYXJnPT09eSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPXYsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBrKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxrKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLHk7dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLHk7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLHkpOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwseSl9ZnVuY3Rpb24gTCh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBUKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBqKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goTCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IoYihlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiBtLnByb3RvdHlwZT1fLG8oQywiY29uc3RydWN0b3IiLHt2YWx1ZTpfLGNvbmZpZ3VyYWJsZTohMH0pLG8oXywiY29uc3RydWN0b3IiLHt2YWx1ZTptLGNvbmZpZ3VyYWJsZTohMH0pLG0uZGlzcGxheU5hbWU9YyhfLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT1tfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxfKToodC5fX3Byb3RvX189XyxjKHQscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShDKSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxPKEEucHJvdG90eXBlKSxjKEEucHJvdG90eXBlLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUEsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBBKGwodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sTyhDKSxjKEMscywiR2VuZXJhdG9yIiksYyhDLGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyhDLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVAsai5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmoscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKFQpLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyx5KTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLHl9LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksVChuKSx5fX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO1Qobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlAoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSx5fX0sZX1mdW5jdGlvbiBfKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gUyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXtfKGkscixvLGEsdSwibmV4dCIsdCl9ZnVuY3Rpb24gdSh0KXtfKGkscixvLGEsdSwidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19dmFyIHg9ZnVuY3Rpb24oKXt2YXIgdD1TKHcoKS5tYXJrKChmdW5jdGlvbiB0KGUsbil7dmFyIG8saSxhLHM7cmV0dXJuIHcoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9maW5fc3VjY2Vzcy9vbmJvYXJkaW5nX3BsYW4iLHQucHJldj0xLGE9e30sbiYmKGEuY29udmVyc2F0aW9uX2lkPW4pLHQubmV4dD02LHUuQS5wb3N0KHt1cmw6byxzZXNzaW9uOmUscGFyYW1zOmF9KTtjYXNlIDY6cmV0dXJuIHM9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLG51bGwhPShpPW51bGw9PXM/dm9pZCAwOnMucGxhbl9kYXRhKT9pOm51bGwpO2Nhc2UgMTA6cmV0dXJuIHQucHJldj0xMCx0LnQwPXQuY2F0Y2goMSksdC5hYnJ1cHQoInJldHVybiIsbnVsbCk7Y2FzZSAxMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzEsMTBdXSl9KSkpO3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksRT1mdW5jdGlvbigpe3ZhciB0PVModygpLm1hcmsoKGZ1bmN0aW9uIHQoZSxuLG8saSl7dmFyIGEscyxjLGw7cmV0dXJuIHcoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gYT0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9maW5fc3VjY2Vzcy9vbmJvYXJkaW5nX3BsYW4vdG9nZ2xlX3Rhc2tfZG9uZSIsdC5wcmV2PTEsYz17dGFza19pZDpuLGRvbmU6b30saSYmKGMuY29udmVyc2F0aW9uX2lkPWkpLHQubmV4dD02LHUuQS5wb3N0KHt1cmw6YSxzZXNzaW9uOmUscGFyYW1zOmN9KTtjYXNlIDY6cmV0dXJuIGw9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLG51bGwhPShzPW51bGw9PWw/dm9pZCAwOmwucGxhbl9kYXRhKT9zOm51bGwpO2Nhc2UgMTA6cmV0dXJuIHQucHJldj0xMCx0LnQwPXQuY2F0Y2goMSksdC5hYnJ1cHQoInJldHVybiIsbnVsbCk7Y2FzZSAxMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzEsMTBdXSl9KSkpO3JldHVybiBmdW5jdGlvbihlLG4scixvKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLEM9big2MTUwMyksTz1uKDE3ODMzKSxBPW4ubihPKSxJPW4oNzI5MCk7ZnVuY3Rpb24gayh0KXtpZih0KXJldHVybnt0eXBlOkkuQm5bdC5hdmF0YXJfdHlwZV0sYXZhdGFyczp0LmF2YXRhcnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm57bGFiZWw6dC5sYWJlbCxpbml0aWFsczp0LmluaXRpYWxzLHNxdWFyZTEyODp0LmltYWdlX3VybHMuc3F1YXJlXzEyOCxkYXJrU3F1YXJlMTI4OnQuaW1hZ2VfZGFya191cmwsc2hhcGU6dC5zaGFwZSxpbWFnZVVybDp0LmltYWdlX3VybH19KSl9fXZhciBMPVsiYXZhdGFyX2RldGFpbHMiXTtmdW5jdGlvbiBUKCl7cmV0dXJuIFQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxULmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBqKHQpe3ZhciBlO2lmKHQpcmV0dXJue3VzZUJvdEhlYWRlcjp0LnVzZV9ib3RfaGVhZGVyLGRpc3BsYXlBY3RpdmVJbmRpY2F0b3I6dC5kaXNwbGF5X2FjdGl2ZV9pbmRpY2F0b3IsaGlkZUdyZWV0aW5nOnQuaGlkZV9ncmVldGluZyxjb2xsYXBzZWQ6KGU9dC5jb2xsYXBzZWQse3RpdGxlOmUudGl0bGUsc3VidGl0bGU6ZS5zdWJ0aXRsZSxleHBhbmRlZFN1YnRpdGxlOmUuZXhwYW5kZWRfc3VidGl0bGUsaWNvbjplLmljb24sYXZhdGFyR3JvdXA6ayhlLmF2YXRhcl9kZXRhaWxzKX0pLGV4cGFuZGVkOlAodC5leHBhbmRlZCl9fWZ1bmN0aW9uIFAodCl7cmV0dXJuIHQ/e3RpdGxlOnQudGl0bGUsYm9keTp0LmJvZHksZm9vdGVyOnQuZm9vdGVyLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9dC5hdmF0YXJfZGV0YWlscztyZXR1cm4gVCh7fSxmdW5jdGlvbih0LGUpe2lmKG51bGw9PXQpcmV0dXJue307dmFyIG49e307Zm9yKHZhciByIGluIHQpaWYoe30uaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpKXtpZigtMSE9PWUuaW5kZXhPZihyKSljb250aW51ZTtuW3JdPXRbcl19cmV0dXJuIG59KHQsTCkse2F2YXRhckdyb3VwOmsoZSl9KX0pKSxhdmF0YXJHcm91cDprKHQuYXZhdGFyX2RldGFpbHMpfTpudWxsfWZ1bmN0aW9uIE4oKXtyZXR1cm4gTj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LE4uYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIE0odCl7dmFyIGU9dC50ZXh0LG49dC5zdWJ0aXRsZSxyPXQuaWNvbixvPXQuYXZhdGFyX2RldGFpbHM7cmV0dXJuIE4oe3RleHQ6ZSxzdWJ0aXRsZTpuLGljb246UihyKX0sbyYme2F2YXRhckdyb3VwOmsobyl9KX1mdW5jdGlvbiBSKHQpe3N3aXRjaCh0KXtjYXNlImNoZXZyb24iOnJldHVybiJSaWdodENoZXZyb25Db2xvcmFibGUiO2Nhc2UicXVlc3Rpb25fYnViYmxlIjpyZXR1cm4iQXNrUXVlc3Rpb24iO2RlZmF1bHQ6cmV0dXJuIkNvbXBvc2VyU2VuZCJ9fWZ1bmN0aW9uIFUodCl7aWYodClyZXR1cm57bmV3Q29udmVyc2F0aW9uUHJvbXB0Ontob21lQ2FyZDpNKHQuaG9tZV9jYXJkKSxjdGE6TSh0LmN0YSl9LGhlYWRlcjpqKHQuaGVhZGVyKX19ZnVuY3Rpb24geih0KXtyZXR1cm4gdD97aWNvbjp0Lmljb24sdGV4dDp0LnRleHQsbGlua1VybDp0LmxpbmtfdXJsfTp2b2lkIDB9dmFyIEg9big2Mjk0OCksRj1uKDQ2NjA0KTtmdW5jdGlvbiBEKCl7cmV0dXJuIEQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxELmFwcGx5KG51bGwsYXJndW1lbnRzKX1BKCkoImludGVyY29tLmNsaWVudHMub3BlbkNsaWVudCIpO2Z1bmN0aW9uIEIodCl7aWYodClyZXR1cm57Y29udGFpbmVyOnQuY29udGFpbmVyLGJvcmRlckNvbG9yczp0LmJvcmRlcl9jb2xvcnN9fWZ1bmN0aW9uIFYodCl7cmV0dXJuIHQ/e3BhcmFncmFwaDp0LnBhcmFncmFwaCxpc0Rpc21pc3NlZDp0LmlzX2Rpc21pc3NlZH06dm9pZCAwfWZ1bmN0aW9uIEcodCl7cmV0dXJuIHQ/dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBEKHt9LHQse3NlcmlhbGl6ZWRfb2JqZWN0OnEodC5ydWxlc2V0X2xpbmtfb2JqZWN0X3R5cGUsdC5zZXJpYWxpemVkX29iamVjdCl9KX0pKTpbXX1mdW5jdGlvbiBxKHQsZSl7c3dpdGNoKHQpe2Nhc2UiaW5ib3VuZF90cmlnZ2VyIjpjYXNlImluYm91bmRfY3VzdG9tX2JvdCI6cmV0dXJuIFcoZSk7Y2FzZSJtZXNzZW5nZXJfdHJpZ2dlciI6Y2FzZSJidXR0b25fY3VzdG9tX2JvdCI6Y2FzZSJ0cmlnZ2VyYWJsZV9jdXN0b21fYm90IjpyZXR1cm4oMCxDLkduKShlKTtkZWZhdWx0OnJldHVybiBlfX1mdW5jdGlvbiBXKHQpe3ZhciBlLG47cmV0dXJuIHQ/e3N1Z2dlc3Rpb25QYXJ0czpaKHtwYXJ0czpudWxsIT0oZT10LnBhcnRzKT9lOm51bGwsb3BlcmF0b3I6dC5vcGVyYXRvcn0pLGNvbXBvc2VyRGlzYWJsZWQ6dC5jb21wb3Nlcl9kaXNhYmxlZCxwcm9tcHQ6dC5wcm9tcHQscnVsZXNldElkOnQucnVsZXNldF9pZCxzdWdnZXN0aW9uczp0LnN1Z2dlc3Rpb25zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybntwcmVBY3Rpb246dC5wcmVfYWN0aW9uLHRleHQ6dC50ZXh0LHV1aWQ6dC51dWlkfX0odCl9KSksdXBkYXRlZEF0OnQudXBkYXRlZF9hdCxwcmlvcml0eTp0LnByaW9yaXR5LHNuYXBzaG90SWQ6dC5zbmFwc2hvdF9pZCx1eFN0eWxlOnQudXhfc3R5bGU/e2NvbnRhaW5lcjp0LnV4X3N0eWxlLmNvbnRhaW5lcixib3JkZXJDb2xvcnM6dC51eF9zdHlsZS5ib3JkZXJfY29sb3JzLGFsaWduQnV0dG9uczp0LnV4X3N0eWxlLmFsaWduX2J1dHRvbnMsd2VsY29tZVBhcnRzV2l0aFN1Z2dlc3Rpb25zOiEhdC51eF9zdHlsZS53ZWxjb21lX3BhcnRzX3dpdGhfc3VnZ2VzdGlvbnN9Om51bGwsd2VsY29tZVBhcnRzOkoodC53ZWxjb21lX3BhcnRzfHxbXSksZmluSXNGaXJzdDpudWxsIT0obj10LmZpbl9pc19maXJzdCkmJm59OnZvaWQgMH1mdW5jdGlvbiBLKHQpe3ZhciBlPSgwLEguWikoKTtyZXR1cm4hdHx8ZS5jb252ZXJzYXRpb25FbXB0eVN0YXRlRW5hYmxlZD92b2lkIDA6e2lkOnQuaWQscGFydHM6dC5wYXJ0cyxvcGVyYXRvcjooMCxDLlBTKSh0Lm9wZXJhdG9yKX19ZnVuY3Rpb24gWih0KXt2YXIgZT10LnBhcnRzLG49dC5vcGVyYXRvcjtyZXR1cm4gZSYmbj97cGFydHM6ZSxvcGVyYXRvcjooMCxDLlBTKShuKX06dm9pZCAwfWZ1bmN0aW9uIEoodCl7cmV0dXJuIHQubWFwKE50KX1mdW5jdGlvbiBZKHQpe3ZhciBlLG47aWYodClyZXR1cm57YXZhdGFyR3JvdXA6ayhudWxsIT0oZT10LmF2YXRhcl9kZXRhaWxzKT9lOnZvaWQgMCksdGl0bGU6dC50aXRsZSxzdWJ0aXRsZTp0LnN1YnRpdGxlLG5vdGljZVR5cGU6bnVsbCE9KG49dC5ub3RpY2VfdHlwZSk/bjp2b2lkIDB9fWZ1bmN0aW9uIFEodCl7cmV0dXJuIFE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LFEodCl9ZnVuY3Rpb24gWCgpe1g9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnP2U6ZyxhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IEwocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpPKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIscD0ic3VzcGVuZGVkWWllbGQiLGg9ImV4ZWN1dGluZyIsdj0iY29tcGxldGVkIix5PXt9O2Z1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gbSgpe31mdW5jdGlvbiBiKCl7fXZhciB3PXt9O2ModyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBfPU9iamVjdC5nZXRQcm90b3R5cGVPZixTPV8mJl8oXyhUKFtdKSkpO1MmJlMhPT1uJiZyLmNhbGwoUyxhKSYmKHc9Uyk7dmFyIHg9Yi5wcm90b3R5cGU9Zy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh3KTtmdW5jdGlvbiBFKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBDKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT1RKGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBPKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT1oKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PXYpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPUEodSxyKTtpZihzKXtpZihzPT09eSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89dixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289aDt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/djpwLGMuYXJnPT09eSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPXYsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBBKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxBKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLHk7dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLHk7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLHkpOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwseSl9ZnVuY3Rpb24gSSh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBrKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBMKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goSSx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBUKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IoUShlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiBtLnByb3RvdHlwZT1iLG8oeCwiY29uc3RydWN0b3IiLHt2YWx1ZTpiLGNvbmZpZ3VyYWJsZTohMH0pLG8oYiwiY29uc3RydWN0b3IiLHt2YWx1ZTptLGNvbmZpZ3VyYWJsZTohMH0pLG0uZGlzcGxheU5hbWU9YyhiLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT1tfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxiKToodC5fX3Byb3RvX189YixjKHQscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh4KSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxFKEMucHJvdG90eXBlKSxjKEMucHJvdG90eXBlLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUMsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBDKGwodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sRSh4KSxjKHgscywiR2VuZXJhdG9yIiksYyh4LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyh4LCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVQsTC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkwscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKGspLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyx5KTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLHl9LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksayhuKSx5fX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO2sobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlQoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSx5fX0sZX1mdW5jdGlvbiAkKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gdHQoKXt2YXIgdDtyZXR1cm4gdD1YKCkubWFyaygoZnVuY3Rpb24gdChlKXt2YXIgbixvLGk7cmV0dXJuIFgoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbj1lLmN1cnJlbnRVcmwsbz1lLnNlc3Npb24saT0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9wYWdlX3ZpZXdfZXZlbnRzIix0Lm5leHQ9NCx1LkEucG9zdCh7dXJsOmksY3VycmVudFVybDpuLHNlc3Npb246b30pO2Nhc2UgNDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSx0dD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpeyQoaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpeyQoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfSx0dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIGV0PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxldCh0KX1mdW5jdGlvbiBudCgpe250PWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciB0LGU9e30sbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLG4pe3RbZV09bi52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxhPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIix1PWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyh0LGUsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtjKHt9LCIiKX1jYXRjaCh0KXtjPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1ufX1mdW5jdGlvbiBsKHQsZSxuLHIpe3ZhciBpPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgZz9lOmcsYT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBMKHJ8fFtdKTtyZXR1cm4gbyhhLCJfaW52b2tlIix7dmFsdWU6Tyh0LG4sdSl9KSxhfWZ1bmN0aW9uIGYodCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX1lLndyYXA9bDt2YXIgZD0ic3VzcGVuZGVkU3RhcnQiLHA9InN1c3BlbmRlZFlpZWxkIixoPSJleGVjdXRpbmciLHY9ImNvbXBsZXRlZCIseT17fTtmdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIG0oKXt9ZnVuY3Rpb24gYigpe312YXIgdz17fTtjKHcsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgXz1PYmplY3QuZ2V0UHJvdG90eXBlT2YsUz1fJiZfKF8oVChbXSkpKTtTJiZTIT09biYmci5jYWxsKFMsYSkmJih3PVMpO3ZhciB4PWIucHJvdG90eXBlPWcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodyk7ZnVuY3Rpb24gRSh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2ModCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQyh0LGUpe2Z1bmN0aW9uIG4obyxpLGEsdSl7dmFyIHM9Zih0W29dLHQsaSk7aWYoInRocm93IiE9PXMudHlwZSl7dmFyIGM9cy5hcmcsbD1jLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09ZXQobCkmJnIuY2FsbChsLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCxhLHUpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LGEsdSl9KSk6ZS5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxhKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCxhLHUpfSkpfXUocy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIE8oZSxuLHIpe3ZhciBvPWQ7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PWgpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09dil7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9QSh1LHIpO2lmKHMpe2lmKHM9PT15KWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWQpdGhyb3cgbz12LHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz1oO3ZhciBjPWYoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT92OnAsYy5hcmc9PT15KWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89dixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIEEoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LEEoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSkseTt2YXIgaT1mKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwseTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwseSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCx5KX1mdW5jdGlvbiBJKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIGsodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIEwodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChJLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFQoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW2FdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGk9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBpLm5leHQ9aX19dGhyb3cgbmV3IFR5cGVFcnJvcihldChlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiBtLnByb3RvdHlwZT1iLG8oeCwiY29uc3RydWN0b3IiLHt2YWx1ZTpiLGNvbmZpZ3VyYWJsZTohMH0pLG8oYiwiY29uc3RydWN0b3IiLHt2YWx1ZTptLGNvbmZpZ3VyYWJsZTohMH0pLG0uZGlzcGxheU5hbWU9YyhiLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT1tfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxiKToodC5fX3Byb3RvX189YixjKHQscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh4KSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxFKEMucHJvdG90eXBlKSxjKEMucHJvdG90eXBlLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUMsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBDKGwodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sRSh4KSxjKHgscywiR2VuZXJhdG9yIiksYyh4LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyh4LCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVQsTC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkwscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKGspLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyx5KTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLHl9LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksayhuKSx5fX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO2sobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlQoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSx5fX0sZX1mdW5jdGlvbiBydCh0LGUsbixyLG8saSxhKXt0cnl7dmFyIHU9dFtpXShhKSxzPXUudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbih0KX11LmRvbmU/ZShzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIG90KCl7dmFyIHQ7cmV0dXJuIHQ9bnQoKS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciBuLG8saTtyZXR1cm4gbnQoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbj1lLnNlc3Npb24sbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9sYXVuY2hlcl9zZXR0aW5ncyIsdC5uZXh0PTQsdS5BLnBvc3Qoe3VybDpvLHNlc3Npb246bn0pO2Nhc2UgNDpyZXR1cm4gaT10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKDAsdi5LKShpKSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSksb3Q9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXtydChpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7cnQoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfSxvdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIGl0PVsiY3VzdG9tX2JvdCIsImNvbXBvc2VyX3N1Z2dlc3Rpb25zIiwicHJlZGljdGl2ZV9hbnN3ZXJzX3N1Z2dlc3Rpb25zIl07ZnVuY3Rpb24gYXQoKXthdD1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gbCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGc/ZTpnLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgTChyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOk8odCxuLHUpfSksYX1mdW5jdGlvbiBmKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWw7dmFyIGQ9InN1c3BlbmRlZFN0YXJ0IixwPSJzdXNwZW5kZWRZaWVsZCIsaD0iZXhlY3V0aW5nIix2PSJjb21wbGV0ZWQiLHk9e307ZnVuY3Rpb24gZygpe31mdW5jdGlvbiBtKCl7fWZ1bmN0aW9uIGIoKXt9dmFyIHc9e307Yyh3LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIF89T2JqZWN0LmdldFByb3RvdHlwZU9mLFM9XyYmXyhfKFQoW10pKSk7UyYmUyE9PW4mJnIuY2FsbChTLGEpJiYodz1TKTt2YXIgeD1iLnByb3RvdHlwZT1nLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpO2Z1bmN0aW9uIEUodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEModCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPWYodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGw9Yy52YWx1ZTtyZXR1cm4gbCYmIm9iamVjdCI9PXN0KGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBPKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT1oKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PXYpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPUEodSxyKTtpZihzKXtpZihzPT09eSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89dixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289aDt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/djpwLGMuYXJnPT09eSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPXYsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBBKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxBKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLHk7dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLHk7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLHkpOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwseSl9ZnVuY3Rpb24gSSh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBrKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBMKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goSSx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBUKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3Ioc3QoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gbS5wcm90b3R5cGU9YixvKHgsImNvbnN0cnVjdG9yIix7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSxvKGIsImNvbnN0cnVjdG9yIix7dmFsdWU6bSxjb25maWd1cmFibGU6ITB9KSxtLmRpc3BsYXlOYW1lPWMoYixzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09bXx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsYik6KHQuX19wcm90b19fPWIsYyh0LHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeCksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sRShDLnByb3RvdHlwZSksYyhDLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1DLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQyhsKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LEUoeCksYyh4LHMsIkdlbmVyYXRvciIpLGMoeCxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMoeCwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1ULEwucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpMLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChrKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MseSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSx5fSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLGsobikseX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztrKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpUKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCkseX19LGV9ZnVuY3Rpb24gdXQodCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIG49bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1uKXt2YXIgcixvLGksYSx1PVtdLHM9ITAsYz0hMTt0cnl7aWYoaT0obj1uLmNhbGwodCkpLm5leHQsMD09PWUpe2lmKE9iamVjdChuKSE9PW4pcmV0dXJuO3M9ITF9ZWxzZSBmb3IoOyEocz0ocj1pLmNhbGwobikpLmRvbmUpJiYodS5wdXNoKHIudmFsdWUpLHUubGVuZ3RoIT09ZSk7cz0hMCk7fWNhdGNoKHQpe2M9ITAsbz10fWZpbmFsbHl7dHJ5e2lmKCFzJiZudWxsIT1uLnJldHVybiYmKGE9bi5yZXR1cm4oKSxPYmplY3QoYSkhPT1hKSlyZXR1cm59ZmluYWxseXtpZihjKXRocm93IG99fXJldHVybiB1fX0odCxlKXx8ZnQodCxlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHN0KHQpe3JldHVybiBzdD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sc3QodCl9ZnVuY3Rpb24gY3QodCxlLG4pe2lmKGUmJiFBcnJheS5pc0FycmF5KGUpJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXt2YXIgcj1lLmxlbmd0aDtyZXR1cm4gZHQoZSx2b2lkIDAhPT1uJiZuPHI/bjpyKX1yZXR1cm4gdChlLG4pfWZ1bmN0aW9uIGx0KHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBkdCh0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ0KHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGZ0KHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBkdCh0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9kdCh0LGUpOnZvaWQgMH19ZnVuY3Rpb24gZHQodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIHB0KHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gaHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7cHQoaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe3B0KGkscixvLGEsdSwidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19ZnVuY3Rpb24gdnQoKXtyZXR1cm4gdnQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSx2dC5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIHl0PU9iamVjdC5hc3NpZ24sZ3Q9IlN0YXRlIFN5bmMiO2Z1bmN0aW9uIG10KHQpe3ZhciBlPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2hlbHBfY2VudGVyX2NvbnRlbnQiO3JldHVybiB1LkEucG9zdCh7dXJsOmUsc2Vzc2lvbjp0fSkudGhlbigoZnVuY3Rpb24odCl7dmFyIGU9dC5jb2xsZWN0aW9ucyxuPXQuYXJ0aWNsZV9zdWdnZXN0aW9ucyxyPXQuYXJ0aWNsZV9zdWdnZXN0aW9uc19tZXRhZGF0YSxvPXQuaGVscF9jZW50ZXJfc2Vzc2lvbjtyZXR1cm57YXJ0aWNsZVN1Z2dlc3Rpb25zOnZvaWQgMCE9PW4/e3N1Z2dlc3Rpb25zOm4sbWV0YWRhdGE6cn06dm9pZCAwLGFydGljbGVDb2xsZWN0aW9uczplLm1hcChDLlg0KSxoZWxwQ2VudGVyU2Vzc2lvbjpvfX0pKX1mdW5jdGlvbiBidCh0LGUsbixvKXt2YXIgaT17ZXZlbnRfbmFtZTplLG1ldGFkYXRhOm59O3JldHVybiB1LkEuc2VuZEJlYWNvbih7dXJsOm98fCgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2V2ZW50cyIsc2Vzc2lvbjp0LHBhcmFtczp7ZXZlbnRfbGlzdDpKU09OLnN0cmluZ2lmeSh7ZGF0YTpbaV19KX19KX1mdW5jdGlvbiB3dCh0LGUsbil7cmV0dXJuIF90LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBfdCgpe3JldHVybihfdD1odChhdCgpLm1hcmsoKGZ1bmN0aW9uIHQoZSxuLG8pe3ZhciBpLGEscyxjLGwsZixkLHA7cmV0dXJuIGF0KCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoZSl7dC5uZXh0PTI7YnJlYWt9dGhyb3cgbmV3IEVycm9yKCJTZXNzaW9uIGlzIHJlcXVpcmVkIGZvciB0cmFuc2NyaXB0aW9uIik7Y2FzZSAyOnJldHVybiBpPW5ldyBGb3JtRGF0YSxhPWcobi50eXBlKXx8Ii53ZWJtIixzPURhdGUubm93KCksYz0idm9pY2Utbm90ZS0iK3MrYSxpLmFwcGVuZCgiYXVkaW8iLG4sYyksaS5hcHBlbmQoInVwbG9hZCIsSlNPTi5zdHJpbmdpZnkoe3NpemVfaW5fYnl0ZXM6bi5zaXplLGNvbnRlbnRfdHlwZTpuLnR5cGUsZmlsZV9uYW1lOmN9KSksbD0oMCx1LnopKGUse30pLE9iamVjdC5lbnRyaWVzKGwpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPWN0KHV0LHQsMiksbj1lWzBdLHI9ZVsxXTtudWxsIT1yJiZpLmFwcGVuZChuLFN0cmluZyhyKSl9KSksZj0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9jb252ZXJzYXRpb25zL3RyYW5zY3JpYmUiLHQubmV4dD0xMyxmZXRjaChmLHttZXRob2Q6IlBPU1QiLGJvZHk6aSxjcmVkZW50aWFsczoiaW5jbHVkZSIsc2lnbmFsOm99KS5jYXRjaCgoZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKHQubWVzc2FnZSl9KSk7Y2FzZSAxMzppZigoZD10LnNlbnQpLm9rKXt0Lm5leHQ9MTY7YnJlYWt9dGhyb3cgbmV3IEVycm9yKCJIVFRQICIrZC5zdGF0dXMpO2Nhc2UgMTY6cmV0dXJuIHQubmV4dD0xOCxkLmpzb24oKTtjYXNlIDE4OmlmKChwPXQuc2VudCkmJiJzdHJpbmciPT10eXBlb2YgcC50ZXh0KXt0Lm5leHQ9MjE7YnJlYWt9dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJlc3BvbnNlIGZvcm1hdCIpO2Nhc2UgMjE6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHApO2Nhc2UgMjI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBTdCh0LGUsbil7cmV0dXJuIHh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB4dCgpe3JldHVybih4dD1odChhdCgpLm1hcmsoKGZ1bmN0aW9uIHQoZSxuLG8pe3ZhciBpLGEscztyZXR1cm4gYXQoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZihlKXt0Lm5leHQ9MjticmVha310aHJvdyBuZXcgRXJyb3IoIlNlc3Npb24gaXMgcmVxdWlyZWQgZm9yIFRUUyIpO2Nhc2UgMjpyZXR1cm4gaT0oMCx1LnopKGUse2NvbnZlcnNhdGlvbl9wYXJ0X2lkOm59KSxhPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL3R0cyIsdC5uZXh0PTYsZmV0Y2goYSx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn0sYm9keTpuZXcgVVJMU2VhcmNoUGFyYW1zKE9iamVjdC5lbnRyaWVzKGkpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXt2YXIgbj1jdCh1dCxlLDIpLHI9blswXSxvPW5bMV07cmV0dXJuIG51bGwhPW8mJih0W3JdPVN0cmluZyhvKSksdH0pLHt9KSkudG9TdHJpbmcoKSxjcmVkZW50aWFsczoiaW5jbHVkZSIsc2lnbmFsOm99KTtjYXNlIDY6aWYoKHM9dC5zZW50KS5vayl7dC5uZXh0PTk7YnJlYWt9dGhyb3cgbmV3IEVycm9yKCJIVFRQICIrcy5zdGF0dXMpO2Nhc2UgOTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIscy5ibG9iKCkpO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBFdCh0LGUpe3ZvaWQgMD09PWUmJihlPXt9KTt2YXIgbj0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi92b2ljZS9jb25uZWN0IixvPWUuY29udmVyc2F0aW9uSWQ/e2NvbnZlcnNhdGlvbl9pZDplLmNvbnZlcnNhdGlvbklkfTp7fTtyZXR1cm4gdS5BLnBvc3Qoe3VybDpuLHNlc3Npb246dCxwYXJhbXM6b30pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpfWZ1bmN0aW9uIEN0KHQsZSxuKXt2YXIgbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9zZWxmX3NlcnZlX3N1Z2dlc3Rpb25zIixpPXtxdWVyeTplLGFuc3dlcnNfbGltaXQ6bn07cmV0dXJuIHUuQS5wb3N0KHt1cmw6byxzZXNzaW9uOnQscGFyYW1zOml9KX1mdW5jdGlvbiBPdCh0KXtyZXR1cm57Y29udmVyc2F0aW9uczp0LmNvbnZlcnNhdGlvbnMubWFwKEx0KSxwYWdlczpJdCh0LnBhZ2VzKX19ZnVuY3Rpb24gQXQodCl7cmV0dXJue3VucmVhZENvbnZlcnNhdGlvbklkczoodC51bnJlYWRfY29udmVyc2F0aW9uX2lkc3x8W10pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudG9TdHJpbmcoKX0pKSx1bnJlYWREaXNtaXNzZWRDb252ZXJzYXRpb25JZHM6KHQudW5yZWFkX2Rpc21pc3NlZF9jb252ZXJzYXRpb25faWRzfHxbXSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZygpfSkpfX1mdW5jdGlvbiBJdCh0KXtyZXR1cm57cGFnZTp0LnBhZ2UscGVyUGFnZTp0LnBlcl9wYWdlLHRvdGFsUGFnZXM6dC50b3RhbF9wYWdlc319ZnVuY3Rpb24ga3QodCl7cmV0dXJue3dvcmtmbG93SW5zdGFuY2VJZDp0LndvcmtmbG93X2luc3RhbmNlX2lkLHJlc29sdXRpb25Cb3RCZWhhdmlvclZlcnNpb25JZDp0LnJlc29sdXRpb25fYm90X2JlaGF2aW9yX3ZlcnNpb25faWQsYm90SW50cm86UXQodC5ib3RfaW50cm8pfX1mdW5jdGlvbiBMdCh0KXtyZXR1cm4gdnQoe30sVHQodCkse3BhcnRzOltqdCh0KV0uY29uY2F0KGN0KGx0LFB0KHQpKSl9KX1mdW5jdGlvbiBUdCh0KXtyZXR1cm4gdC5pbnRlcmFjdGlvbl9tb2RlJiZGLmYuc2V0SW50ZXJhY3Rpb25Nb2RlKHQuaW50ZXJhY3Rpb25fbW9kZSksdnQoe2lzRmV0Y2hpbmc6ITEsaXNVcGRhdGluZzohMSxjb21wb3NlclN0YXRlOigwLEMua0cpKHQuY29tcG9zZXJfc3RhdGUpLGRpc21pc3NlZDp0LmRpc21pc3NlZCxpZDp0LmlkLGludGVyY29tTGlua1NvbHV0aW9uOnQuaW50ZXJjb21fbGlua19zb2x1dGlvbixsYXN0UGFydENyZWF0ZWRBdDooMCxsLmtVKSh0LnVwZGF0ZWRfYXQpLGxhc3RQYXJ0aWNpcGF0aW5nQWRtaW46KDAsQy5OVSkodCkscGFydGljaXBhbnRzOnQucGFydGljaXBhbnRzfHxbXSxwcmV2ZW50RW5kVXNlclJlcGxpZXM6dC5wcmV2ZW50X2VuZF91c2VyX3JlcGxpZXMscHJldmVudEVuZFVzZXJSZXBsaWVzVGltZXN0YW1wOnQucHJldmVudF9lbmRfdXNlcl9yZXBsaWVzX3RpbWVzdGFtcCxpbmJvdW5kQ29udmVyc2F0aW9uc0Rpc2FibGVkOnQuaW5ib3VuZF9jb252ZXJzYXRpb25zX2Rpc2FibGVkLHJlYWQ6dC5yZWFkLHJlYWRBdDp0LnJlYWRfYXQ/KDAsbC5rVSkodC5yZWFkX2F0KTp2b2lkIDAsdXNlclBhcnRpY2lwYXRlZDp0LnVzZXJfcGFydGljaXBhdGVkLG5vdGlmaWNhdGlvblN0YXR1czp0Lm5vdGlmaWNhdGlvbl9zdGF0dXMsY3VycmVudENoYW5uZWw6dC5jdXJyZW50X2NoYW5uZWwsYW5hbHl0aWNzTWV0YWRhdGE6e2N1c3RvbUJvdElkOnQuYW5hbHl0aWNzX21ldGFkYXRhP3QuYW5hbHl0aWNzX21ldGFkYXRhLmN1c3RvbV9ib3RfaWQ6dm9pZCAwfSxpc0luYm91bmQ6dC5pc19pbmJvdW5kLHN0YXRlOnQuc3RhdGUsdGlja2V0OnQudGlja2V0PygwLEMuSjEpKHQudGlja2V0KTp2b2lkIDAsc2hhcmluZzooMCxDLk5XKSh0LnNoYXJpbmcpLHVwZGF0ZWRBdDooMCxsLmtVKSh0LnVwZGF0ZWRfYXQpLGVsaWdpYmxlRm9yUmVjZW50Q29udmVyc2F0aW9uczp0LmVsaWdpYmxlX2Zvcl9yZWNlbnRfY29udmVyc2F0aW9ucyx1eFN0eWxlOnQudXhfc3R5bGUsdWlGbGFnczooMCxDLlFuKSh0LnVpX2ZsYWdzKSxvd25lcklkOnQub3duZXJfaWQsZXhjbHVkZUZyb21Db252ZXJzYXRpb25zTGlzdDp0LmV4Y2x1ZGVfZnJvbV9jb252ZXJzYXRpb25fbGlzdCxoZWFkZXI6aih0LmhlYWRlciksZm9vdGVyTm90aWNlOlkodC5mb290ZXJfbm90aWNlKSxjb252ZXJzYXRpb25FbmRlZEJ1dHRvbjooMCxDLktXKSh0LmNvbnZlcnNhdGlvbl9lbmRlZF9idXR0b24pLHRlYW1JbnRybzp0LnRlYW1faW50cm8sc3BlY2lhbE5vdGljZTp0LnNwZWNpYWxfbm90aWNlLHNob3VsZEluY2x1ZGVJbk9wZW5JbmJvdW5kSWRzOnQuc2hvdWxkX2luY2x1ZGVfaW5fb3Blbl9pbmJvdW5kX2lkcyxzYWxlc2ZvcmNlX2V4dGVybmFsX3JlZmVyZW5jZTp0LnNhbGVzZm9yY2VfZXh0ZXJuYWxfcmVmZXJlbmNlLGVzY2FsYXRlZFRvU2FsZXNmb3JjZTp0LmVzY2FsYXRlZF90b19zYWxlc2ZvcmNlLHBvd2VyZWRCeTp6KHQucG93ZXJlZF9ieSksdGl0bGU6dC50aXRsZX0sbnVsbCE9dC50aXRsZV9vcmlnaW4mJnt0aXRsZU9yaWdpbjp0LnRpdGxlX29yaWdpbn0sbnVsbCE9dC5oYW5kb3ZlcmVkX3RvJiZ7aGFuZG92ZXJlZFRvOnQuaGFuZG92ZXJlZF90b30se2hpdGxQcmV2aWV3UmV2aWV3VXJsOnQuaGl0bF9wcmV2aWV3X3Jldmlld191cmx9KX1mdW5jdGlvbiBqdCh0KXt2YXIgZSxuLHI9dC5jb252ZXJzYXRpb25fbWVzc2FnZTtyZXR1cm57YXV0aG9yOigwLEMuUFMpKHIuYXV0aG9yKSxib2R5OkR0KHIuYmxvY2tzfHxbXSxyLmF0dGFjaG1lbnRzfHxbXSksY2xpZW50SWQ6ci5jbGllbnRfYXNzaWduZWRfdXVpZCxjcmVhdGVkQXQ6KDAsbC5rVSkoci5jcmVhdGVkX2F0KSxldmVudERhdGE6e30sZm9ybTpyLmZvcm0saWQ6bnVsbCE9KGU9ci5pZCkmJmUuc3RhcnRzV2l0aCgibWVzc2FnZS0iKT9yLmlkOiJtZXNzYWdlLSIrci5pZCxpc01lc3NhZ2U6ITAsbWVzc2FnZVR5cGU6VXQociksbm90aWZpY2F0aW9uVHlwZToobj1yLmRlbGl2ZXJ5X29wdGlvbix7YmFkZ2U6ImJhZGdlIixmdWxsOiJmdWxsIixzdW1tYXJ5OiJzbmlwcGV0In1bbl0pLHBhcnRUeXBlOiJtZXNzYWdlIixwb2ludGVyU2VsZWN0b3I6ci5wb2ludGVyX3NlbGVjdG9yLHJlYWN0aW9uc1JlcGx5OnIucmVhY3Rpb25zX3JlcGx5PygwLEMuSEMpKHIucmVhY3Rpb25zX3JlcGx5KTp2b2lkIDAscmVwbHlPcHRpb25zOnIucmVwbHlfb3B0aW9uc3x8W10scmVwbHlUeXBlOnIucmVwbHlfdHlwZSxzZWVuU3RhdGU6SHQoci5zZWVuX2J5X2FkbWluKSxzZW50QXQ6KDAsbC5rVSkoci5zZW50X2F0KSxzaG93Q3JlYXRlZEF0OnIuc2hvd19jcmVhdGVkX2F0LHRlYW1BdXRob3I6KDAsQy52SikodCkscnVsZXNldElkOnIuZ29vZ2xlX2FuYWx5dGljc19pZGVudGlmaWVyLHV4U3R5bGU6KDAsQy50ZSkoci51eF9zdHlsZSksbWV0YWRhdGE6KDAsQy5rTikoci5tZXRhZGF0YSksc2tpcFV4U3R5bGVWYWxpZGF0aW9uOnIuc2tpcF91eF9zdHlsZV92YWxpZGF0aW9ufX1mdW5jdGlvbiBQdCh0KXt2YXIgZT1bXTtyZXR1cm4gdC5jb252ZXJzYXRpb25fcGFydHMmJihlPXQuY29udmVyc2F0aW9uX3BhcnRzLmNvbnZlcnNhdGlvbl9wYXJ0c3x8dC5jb252ZXJzYXRpb25fcGFydHMpLGUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4ibGlnaHR3ZWlnaHRfcmVwbHlfdXNlcl9yZXNwb25zZSIhPT10LnBhcnRfdHlwZX0pKS5tYXAoTnQpfWZ1bmN0aW9uIE50KHQpe3ZhciBlLG47cmV0dXJue2F1dGhvcjp0LmF1dGhvcj97YXZhdGFyOigwLEMuS1YpKHQuYXV0aG9yLmF2YXRhciksZmlyc3ROYW1lOigwLEMuZUMpKHQuYXV0aG9yLmZpcnN0X25hbWUpLGlkOnQuYXV0aG9yLmlkLGluaXRpYWw6dC5hdXRob3IuaW5pdGlhbCxpc0FkbWluOnQuYXV0aG9yLmlzX2FkbWluLGlzQm90OnQuYXV0aG9yLmlzX2JvdCxpc1NlbGY6dC5hdXRob3IuaXNfc2VsZix0eXBlOnQuYXV0aG9yLmlzX2FkbWluPyJhZG1pbiI6InVzZXIifTp2b2lkIDAsYm9keTpEdCh0LmJsb2Nrc3x8W10sdC5hdHRhY2htZW50c3x8W10pLGNtcjp0LmNtcixjbGllbnRJZDp0LmNsaWVudF9hc3NpZ25lZF91dWlkLGNvbnZlcnNhdGlvblJhdGluZzpWdCh0KSxjcmVhdGVkQXQ6KDAsbC5rVSkodC5jcmVhdGVkX2F0KSxldmVudERhdGE6KDAsQy4kTCkodC5ldmVudF9kYXRhLHQucGFydF90eXBlKSxmb3JtOnQuZm9ybT8obj10LmZvcm0sdnQoe30sbix7ZGlzYWJsZWRNZXNzYWdlOm4uZGlzYWJsZWRfbWVzc2FnZX0pKTp2b2lkIDAsaWQ6dC5pZCxpc01lc3NhZ2U6ITEsbWVzc2FnZVR5cGU6VXQodCksY2Fyb3VzZWw6dC5jYXJvdXNlbF9jb250ZW50LHNlZ21lbnRzOm51bGwhPShlPXQuc2VnbWVudHMpP2U6dC5jb21wb3NhYmxlX3NlYXJjaF9jb250ZW50LGNhbGVuZGFyQ2FyZDp0LmNhbGVuZGFyX2NhcmRfY29udGVudCxoYW5kb3ZlckN0YTp0LmhhbmRvdmVyX2N0YV9jb250ZW50LGhhbmRvdmVyQ29udGV4dERhdGE6dC5oYW5kb3Zlcl9jb250ZXh0X2RhdGEscGxhbkRhdGE6dC5wbGFuX2RhdGEscGFydFR5cGU6dC5wYXJ0X3R5cGUscmVwbHlPcHRpb25zOnQucmVwbHlfb3B0aW9uc3x8W10sc2VlblN0YXRlOkh0KHQuc2Vlbl9ieV9hZG1pbiksc2hvd0NyZWF0ZWRBdDohMCxzb3VyY2VzOnQuc291cmNlcyx0b2tlblNlcXVlbmNlSW5kZXg6MWU0PT09dC50b2tlbl9zZXF1ZW5jZV9pbmRleD92b2lkIDA6dC50b2tlbl9zZXF1ZW5jZV9pbmRleCx1eFN0eWxlOigwLEMudGUpKHQudXhfc3R5bGUpLG1ldGFkYXRhOigwLEMua04pKHQubWV0YWRhdGEpLGFuc3dlckZvb3Rlcjp0LmFuc3dlcl9mb290ZXImJnt0ZXh0OnQuYW5zd2VyX2Zvb3Rlci50ZXh0LHJlcGx5T3B0aW9uczp0LmFuc3dlcl9mb290ZXIucmVwbHlfb3B0aW9uc30sZmluUmVzcG9uc2VUeXBlOnQuZmluX3Jlc3BvbnNlX3R5cGUsZmluRXJyb3JUeXBlOnQuZmluX2Vycm9yX3R5cGUsaXNGaW5Wb2ljZVBhcnQ6ISF0LmZpbl92b2ljZXx8dm9pZCAwLGZpblNpZ25pZmljYW50UmVzcG9uc2U6dC5maW5fc2lnbmlmaWNhbnRfcmVzcG9uc2Usc2tpcFV4U3R5bGVWYWxpZGF0aW9uOnQuc2tpcF91eF9zdHlsZV92YWxpZGF0aW9uLHN0cmVhbUdyb3VwSWQ6dC5zdHJlYW1fZ3JvdXBfaWR9fWZ1bmN0aW9uIE10KHQpe3ZhciBlPXQuaW5zdGFsbF9tb2RlO2lmKGUpe3ZhciBuPWUuYWN0aXZlX3N1YnNjcmlwdGlvbixyPWUudXNlcl9oYXNoX3ZlcmlmaWVkLG89ZS5zZWN1cmVfaW5zdGFsbF92MixpPWUubWVzc2VuZ2VyX2VuYWJsZWRfZm9yX3Zpc2l0b3JzO3JldHVybnthY3RpdmVTdWJzY3JpcHRpb246bixtZXNzZW5nZXJFbmFibGVkRm9yVXNlcnM6ZS5tZXNzZW5nZXJfZW5hYmxlZF9mb3JfdXNlcnMsbWVzc2VuZ2VyRW5hYmxlZEZvclZpc2l0b3JzOmksc2VjdXJlSW5zdGFsbFYyOm8sdXNlckhhc2hWZXJpZmllZDpyfX19ZnVuY3Rpb24gUnQodCl7dmFyIGUsbixyLG8saSxhLHUscyxjLGw9dC5hcHAsZj1mdW5jdGlvbih0KXtyZXR1cm57YW5vbnltb3VzSW5ib3VuZE1lc3NhZ2VzOnQuaW5ib3VuZF9sZWFkX21lc3NhZ2luZ3x8dC5pbmJvdW5kX2xlYWRfbWVzc2FnaW5nX2RvY3Nfc2l0ZSxhaVRpdGxlczp0LmFpX3RpdGxlcyxnb29nbGVBbmFseXRpY3M6dC5nb29nbGVfYW5hbHl0aWNzLGh1YnNwb3RJbnN0YWxsZWQ6dC5odWJzcG90X2luc3RhbGxlZCxpbmJvdW5kTWVzc2FnZXM6dC5pbmJvdW5kX21lc3NhZ2VzLGxhdW5jaGVyRGlzY292ZXJ5TW9kZTp0LmxhdW5jaGVyX2Rpc2NvdmVyeV9tb2RlLGxhdW5jaGVyU2V0dGluZ3M6dC5sYXVuY2hlcl9zZXR0aW5ncyxtYXJrZXRvRW5yaWNobWVudEluc3RhbGxlZDp0Lm1hcmtldG9fZW5yaWNobWVudF9pbnN0YWxsZWQsc2luZ2xlUGFnZUFwcFJhdGVMaW1pdGluZzp0LnNpbmdsZV9wYWdlX2FwcF9yYXRlX2xpbWl0aW5nLGNyb3NzU2l0ZUNvb2tpZXM6dC5jcm9zc19zaXRlX2Nvb2tpZXMsY29va2llU2VjdXJlRmxhZzp0LmNvb2tpZV9zZWN1cmVfZmxhZyxjaGVja2xpc3RzOnQuY2hlY2tsaXN0cyxjaGVja2xpc3RzUmVtaW5kZXJzOnQuY2hlY2tsaXN0c19yZW1pbmRlcnMsZ29vZ2xlQW5hbHl0aWNzNEludGVncmF0aW9uOnQuZ29vZ2xlX2FuYWx5dGljc180X2ludGVncmF0aW9uLHZpZXdJbkhlbHBDZW50ZXJCdXR0b246dC52aWV3X2luX2hlbHBfY2VudGVyX2J1dHRvbixjdXN0b21lclByaXZhY3lQb2xpY3k6dC5jdXN0b21lcl9wcml2YWN5X3BvbGljeSxjb252ZXJzYXRpb25OZXdTdHlsaW5nOnQubWVzc2VuZ2VyX25ld19jb252b19zdHlsaW5nLGJ1YmJsZVNlZW5JbmRpY2F0b3I6dC5idWJibGVfc2Vlbl9pbmRpY2F0b3IsZGlzYWJsZUZpbkltYWdlUmVhZGluZzp0LmRpc2FibGVfZmluX2ltYWdlX3JlYWRpbmcsbmV3TW9iaWxlTm90aWZpY2F0aW9uc0VuYWJsZWQ6dC5uZXdfbW9iaWxlX25vdGlmaWNhdGlvbnNfZW5hYmxlZCxkZWxheVRvdXJSZW5kZXI6dC5kZWxheV90b3VyX3JlbmRlcixkaXNhYmxlVGlja2V0c0FmdGVyQ29udmVyc2F0aW9uRW5kOnQuZGlzYWJsZV90aWNrZXRzX2FmdGVyX2NvbnZlcnNhdGlvbl9lbmQsbmV4dXNBYmx5OnQubmV4dXNfYWJseSxmaW5MYXRlbmN5SGVhZGVyUmV2YW1wOnQuZmluX2xhdGVuY3lfbWVzc2VuZ2VyX2hlYWRlcl9yZXZhbXBfZW5hYmxlZCxkaXNhYmxlVGlja2V0RW1haWxOb3RpZmljYXRpb246dC5kaXNhYmxlX3RpY2tldF9lbWFpbF9ub3RpZmljYXRpb24sbWVyY3VyeVVpQ2hhbmdlczp0Lm1lcmN1cnlfdWlfY2hhbmdlcyxlbmFibGVDdXN0b21FbW9qaXM6dC5lbmFibGVfY3VzdG9tX2Vtb2ppcyxmaW5JbWFnZXNHcmlkOnQuZmluX2ltYWdlc19ncmlkLG5ld1ByaXZhY3lQb2xpY3lMYXlvdXQ6dC5uZXdfcHJpdmFjeV9wb2xpY3lfbGF5b3V0LGZpbkxhdW5jaGVyRGlzY292ZXJ5TW9kZTp0LmZpbl9sYXVuY2hlcl9kaXNjb3ZlcnlfbW9kZSxhbHdheXNHZXRTYWxlc2ZvcmNlVG9rZW46dC5hbHdheXNfZ2V0X3NhbGVzZm9yY2VfdG9rZW4sYXNhbmFMaW1pdFVwbG9hZHNUbzVtYjp0LmFzYW5hX2xpbWl0X3VwbG9hZHNfdG9fNW1iLGNsaWVudFNpZGVBY3Rpb25zOnQuY2xpZW50X3NpZGVfYWN0aW9ucyxtZXNzZW5nZXJUdHM6dC5tZXNzZW5nZXJfdHRzLHVybEJhc2VkQ2xpZW50TWF0Y2hpbmc6dC51cmxfYmFzZWRfY2xpZW50X21hdGNoaW5nLGZpblNlbmRDdXJyZW50UGFnZURhdGE6dC5maW5fc2VuZF9jdXJyZW50X3BhZ2VfZGF0YSxtZXNzZW5nZXJPcHRpbWlzdGljRmluVGhpbmtpbmc6dC5tZXNzZW5nZXJfb3B0aW1pc3RpY19maW5fdGhpbmtpbmcsZmluRWNvbW1lcmNlU3luY0NhcnQ6dC5maW5fZWNvbW1lcmNlX3N5bmNfY2FydCxuZXdDb252ZXJzYXRpb25JbmJvdW5kTWF0Y2hpbmc6dC50ZWFtX3dvcmtmbG93c19uZXdfY29udmVyc2F0aW9uX2luYm91bmRfbWF0Y2hpbmcsZmluT25seUNsaWNrT3V0c2lkZTp0LmZpbl9vbmx5X2NsaWNrX291dHNpZGUsY2Fyb3VzZWxHcmlkTGF5b3V0OnQuY2Fyb3VzZWxfZ3JpZF9sYXlvdXQsdm9pY2VSZWNvcmRlcktleWJvYXJkU2hvcnRjdXQ6dC52b2ljZV9yZWNvcmRlcl9rZXlib2FyZF9zaG9ydGN1dCxpbXByb3ZlT3BlbkJlaGF2aW9yOnQuaW1wcm92ZV9vcGVuX2JlaGF2aW9yLHNtYXJ0U3VnZ2VzdGlvbkltcHJlc3Npb25zOnQuc21hcnRfc3VnZ2VzdGlvbl9pbXByZXNzaW9uc19lbmFibGVkLGltcHJvdmVTcG90bGlnaHRDb2RlQmxvY2tSZW5kZXJpbmc6dC5pbXByb3ZlX3Nwb3RsaWdodF9jb2RlX2Jsb2NrX3JlbmRlcmluZyxmdWxsUGFnZUNvbnZlcnNhdGlvbnNDYXJkOnQuZnVsbF9wYWdlX2NvbnZlcnNhdGlvbnNfY2FyZCxtZXNzZW5nZXJSaWNoVGV4dDp0Lm1lc3Nlbmdlcl9yaWNoX3RleHQsZmluVm9pY2U6dC5maW5fdm9pY2Usc3VjY2Vzc1BsYW5SZW5hbWU6dC5zdWNjZXNzX3BsYW5fcmVuYW1lLGZpblNkckNhbGVuZGFyTGF6eUF2YWlsYWJpbGl0eTp0LmZpbl9zZHJfY2FsZW5kYXJfbGF6eV9hdmFpbGFiaWxpdHl9fSh0Lm1vZHVsZXMuZmVhdHVyZXN8fHQubW9kdWxlcy5tZXNzYWdlcy5mZWF0dXJlcyksZD0obnVsbD09KGU9dC5tb2R1bGVzKT92b2lkIDA6ZS5ob21lKXx8e30scD10Lm1vZHVsZXMuY3VzdG9taXphdGlvbixoPShudWxsPT0obj10LmxhdW5jaGVyX3NldHRpbmdzKT92b2lkIDA6bi50aGVtZV9tb2RlKXx8KG51bGw9PXA/dm9pZCAwOnAudGhlbWVfbW9kZSk7cmV0dXJue2JhY2tncm91bmRJbWFnZTpsLm1lc3Nlbmdlcl9iYWNrZ3JvdW5kLGxvZ29Vcmw6bC5tZXNzZW5nZXJfbG9nb191cmwsbG9nb0RhcmtVcmw6bnVsbD09cD92b2lkIDA6cC5tZXNzZW5nZXJfbG9nb19kYXJrX3VybCxpc0F1ZGlvRW5hYmxlZDpsLmF1ZGlvX2VuYWJsZWR8fCExLGlzRGV2ZWxvcGVyV29ya3NwYWNlOmwuZGV2ZWxvcGVyX3dvcmtzcGFjZXx8ITEsYXJ0aWNsZUF1dG9SZWFjdGlvbkVuYWJsZWQ6bC5hcnRpY2xlX2F1dG9fcmVhY3Rpb25fZW5hYmxlZHx8ITEsaXNFcnJvclJlcG9ydGluZ0Rpc2FibGVkOnQubW9kdWxlcy5lcnJvcl9yZXBvcnRpbmcmJnQubW9kdWxlcy5lcnJvcl9yZXBvcnRpbmcuZGlzYWJsZWQsaXNJbnRlcmNvbUxpbmtFbmFibGVkOmwuc2hvd19wb3dlcmVkX2J5LGlzT3ZlcnJpZGVTYW1wbGluZ0VuYWJsZWQ6dC5tb2R1bGVzLm1ldHJpY3MmJnQubW9kdWxlcy5tZXRyaWNzLmVuYWJsZWQsb3BlbkNvbmZpZzp7dW5pZmllZFN0eWxpbmc6ITAsb3BlblRvOm51bGw9PShyPXQub3Blbl9jb25maWcpP3ZvaWQgMDpyLm9wZW5fdG8sc3BhY2VzOm51bGwhPShvPXQub3Blbl9jb25maWcpJiZvLnNwYWNlcz9udWxsPT0oaT10Lm9wZW5fY29uZmlnKT92b2lkIDA6aS5zcGFjZXMubWFwKChmdW5jdGlvbih0KXt2YXIgZT0oMCx2LkspKHQpO3JldHVybiBlLmJhZGdlJiZlLmJhZGdlLmxhYmVsJiYoZS5iYWRnZS5sYWJlbD1OdW1iZXIoZS5iYWRnZS5sYWJlbCkpLGV9KSk6W10sdXNlckhhc1JlY2VpdmVkQ2hlY2tsaXN0czoobnVsbD09KGE9dC5vcGVuX2NvbmZpZyk/dm9pZCAwOmEudXNlcl9oYXNfcmVjZWl2ZWRfY2hlY2tsaXN0cyl8fCExLHVzZXJIYXNMaXZlTmV3c2ZlZWQ6KG51bGw9PSh1PXQub3Blbl9jb25maWcpP3ZvaWQgMDp1LnVzZXJfaGFzX2xpdmVfbmV3c2ZlZWQpfHwhMSx1c2VySGFzVGlja2V0czoobnVsbD09KHM9dC5vcGVuX2NvbmZpZyk/dm9pZCAwOnMudXNlcl9oYXNfdGlja2V0cyl8fCExfSxpbmJvdW5kQ29udmVyc2F0aW9uc0Rpc2FibGVkOmwuaW5ib3VuZF9jb252ZXJzYXRpb25zX2Rpc2FibGVkfHwhMSxjb252ZXJzYXRpb25IaXN0b3J5VHRsRGF5czpudWxsIT0oYz1sLmNvbnZlcnNhdGlvbl9oaXN0b3J5X3R0bF9kYXlzKT9jOnZvaWQgMCxzbXNFbmFibGVkOmwuc21zX25vdGlmaWNhdGlvbnNfZW5hYmxlZHx8ITEsdXNlckNvbnZlcnNhdGlvbkdpZnNFbmFibGVkOmwudXNlcl9jb252ZXJzYXRpb25fZ2lmc19lbmFibGVkLGN1c3RvbUdvb2dsZUFuYWx5dGljc1RyYWNrZXJJZDp0Lm1vZHVsZXMubWVzc2FnZXMuZ29vZ2xlX2FuYWx5dGljc190cmFja2luZ19pZCxzZWxmU2VydmVTdWdnZXN0aW9uc01hdGNoOmwuc2VsZl9zZXJ2ZV9zdWdnZXN0aW9uc19tYXRjaHx8ITEsdXBmcm9udEVtYWlsQ29sbGVjdGlvblNldHRpbmc6bC51cGZyb250X2VtYWlsX2NvbGxlY3Rpb25fc2V0dGluZyx1c2VDYWNoZUZvcjpsLnVzZV9jYWNoZV9mb3Isb3JpZ2luQ29va2llRG9tYWluOnQub3JpZ2luX2Nvb2tpZV9kb21haW4sZmVhdHVyZXM6ZixoZWxwQ2VudGVyU2l0ZVVybDpsLmhlbHBfY2VudGVyX3NpdGVfdXJsfHx2b2lkIDAscmVhbHRpbWVDb25maWc6e2VuZHBvaW50czp0Lm1vZHVsZXMucnRtLmVuZHBvaW50cyxvcHRpb25zOnQubW9kdWxlcy5ydG0ub3B0aW9uc30sdGVhbUdyZWV0aW5nOmwudGVhbV9ncmVldGluZyx0ZWFtSW50cm86bC50ZWFtX2ludHJvLGV4cGVjdGVkUmVzcG9uc2VEZWxheVRyYW5zbGF0aW9uS2V5OmwuZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfdHJhbnNsYXRpb25fa2V5LHRlbXBvcmFyeUV4cGVjdGF0aW9uc01lc3NhZ2U6bC50ZW1wb3JhcnlfZXhwZWN0YXRpb25zX21lc3NhZ2Usb2ZmaWNlSG91cnNSZXNwb25zZTpsLm9mZmljZV9ob3Vyc19yZXNwb25zZXx8dm9pZCAwLGxhdW5jaGVyRXhwZWN0ZWRSZXNwb25zZURlbGF5VHJhbnNsYXRpb25LZXk6bC5sYXVuY2hlcl9leHBlY3RlZF9yZXNwb25zZV9kZWxheV90cmFuc2xhdGlvbl9rZXksbmFtZTpsLm5hbWUsY3VzdG9tRm9udDpudWxsIT1wJiZwLmN1c3RvbV9mb250PygwLHYuSykobnVsbD09cD92b2lkIDA6cC5jdXN0b21fZm9udCk6dm9pZCAwLGhvbWU6KDAsdi5LKSh2dCh7fSxkLHtoZWFkZXJDb2xvcnM6bnVsbD09cD92b2lkIDA6cC5oZWFkZXIsdGhlbWVNb2RlOmh9KSksdGhlbWVNb2RlOmgsbG9jYWxpemVkRXhwZWN0ZWRSZXNwb25zZURlbGF5U2hvcnRUZXh0OmwubG9jYWxpemVkX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5X3Nob3J0X3RleHQsbG9jYWxpemVkRXhwZWN0ZWRSZXNwb25zZURlbGF5TG9uZ1RleHQ6bC5sb2NhbGl6ZWRfZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfbG9uZ190ZXh0fX1mdW5jdGlvbiBVdCh0KXtpZigidGlja2V0X3N0YXR1c191cGRhdGUiPT09dC5wYXJ0X3R5cGV8fCJ0aWNrZXRfc3RhdGVfdXBkYXRlZF9ieV93b3JrZmxvdyI9PT10LnBhcnRfdHlwZSlyZXR1cm4idGlja2V0U3RhdHVzVXBkYXRlIjtpZigiaW5saW5lX2Fuc3dlciI9PT10LnBhcnRfdHlwZSlyZXR1cm4iaW5saW5lQW5zd2VyIjtpZigicmVsZXZhbnRfYXJ0aWNsZXMiPT09dC5wYXJ0X3R5cGUpcmV0dXJuInJlbGV2YW50QXJ0aWNsZXMiO2lmKCJmaW5fYW5zd2VyIj09PXQucGFydF90eXBlKXJldHVybiJmaW5BbnN3ZXIiO2lmKCJmaW5UaG91Z2h0Ij09PXQucGFydF90eXBlKXJldHVybiJmaW5UaG91Z2h0IjtpZigiZ2VuZXJhdGVkX3BsYW4iPT09dC5wYXJ0X3R5cGUpcmV0dXJuImdlbmVyYXRlZFBsYW4iO2lmKCJhdHRyaWJ1dGVfY29sbGVjdG9yIj09PXQucGFydF90eXBlKXJldHVybiJhdHRyaWJ1dGVDb2xsZWN0b3IiO2lmKCJtZXJnZWRfcHJpbWFyeV9jb252ZXJzYXRpb24iPT09dC5wYXJ0X3R5cGUpcmV0dXJuIm1lcmdlZFByaW1hcnlDb252ZXJzYXRpb24iO2lmKCJnZW5lcmljX2hhbmRvZmYiPT09dC5wYXJ0X3R5cGUpcmV0dXJuImdlbmVyaWNIYW5kb2ZmIjtpZigiY29tcG9zaXRlIj09PXQucGFydF90eXBlKXJldHVybiJjb21wb3NpdGUiO2lmKCJjb21wb3NhYmxlX3NlYXJjaCI9PT10LnBhcnRfdHlwZSlyZXR1cm4iY29tcG9zYWJsZVNlYXJjaCI7aWYoImNhcm91c2VsIj09PXQucGFydF90eXBlKXJldHVybiJjYXJvdXNlbCI7aWYoImNhbGVuZGFyX2NhcmQiPT09dC5wYXJ0X3R5cGUpcmV0dXJuImNhbGVuZGFyQ2FyZCI7aWYoImhhbmRvdmVyX2N0YSI9PT10LnBhcnRfdHlwZSlyZXR1cm4iaGFuZG92ZXJDdGEiO2lmKCJoYW5kb3Zlcl9jb250ZXh0Ij09PXQucGFydF90eXBlKXJldHVybiJoYW5kb3ZlckNvbnRleHQiO2lmKHp0KHQsImxpbmsiKXx8ZnVuY3Rpb24odCxlKXt2YXIgbj0hMDtyZXR1cm4gdC5ibG9ja3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC50eXBlIT09ZSYmKG49ITEpfSkpLG4mJnQuYmxvY2tzLmxlbmd0aD4xfSh0LCJsaW5rIikpcmV0dXJuImxpbmsiO2lmKHp0KHQsIm5vdGlmaWNhdGlvbkNoYW5uZWxzQ2FyZCIpKXJldHVybiJub3RpZmljYXRpb25DaGFubmVscyI7aWYoenQodCwiY29udmVyc2F0aW9uUmF0aW5nIikpcmV0dXJuImNvbnZlcnNhdGlvblJhdGluZyI7aWYoenQodCwidGlja2V0IikpcmV0dXJuInRpY2tldENhcmQiO3ZhciBlPVsiY2hhdCIsInBvc3QiLCJub3RlIiwidmlkZW8iLCJwb2ludGVyIl1bdC5tZXNzYWdlX3N0eWxlXTtyZXR1cm4gZXx8dm9pZCAwfWZ1bmN0aW9uIHp0KHQsZSl7dmFyIG49dC5ibG9ja3MmJjE9PT10LmJsb2Nrcy5sZW5ndGgmJnQuYmxvY2tzWzBdO3JldHVybiBuJiZuLnR5cGU9PT1lfWZ1bmN0aW9uIEh0KHQpe3JldHVybnt1bnNlZW46Im5vdC1zZWVuLXlldCIsc2Vlbjoic2VlbiJ9W3RdfHwibm90LXNlZW4teWV0In1mdW5jdGlvbiBGdCh0KXtyZXR1cm57Y29udGFjdF9yb2xlOiJsZWFkIix1c2VyX3JvbGU6InVzZXIiLHZpc2l0b3Jfcm9sZToidmlzaXRvciJ9W3RdfWZ1bmN0aW9uIER0KHQsZSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10Lmxlbmd0aCYmInZpZGVvUmVwbHkiPT09dFswXS50eXBlfSh0KSlyZXR1cm4gdDtpZihmdW5jdGlvbih0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYidmlkZW9GaWxlIj09PXRbMF0udHlwZX0odCkpcmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybltPYmplY3QuYXNzaWduKHt9LHRbMF0pXX0odCk7dmFyIG49W107cmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO3ZhciBuPVtdO3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7dC5hdHRhY2htZW50cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuLnB1c2godC51cmwpfSkpfSkpLGUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbi5tYXAoQnQpLmluZGV4T2YoQnQodC51cmwpKTwwfSkpfSh0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuImF0dGFjaG1lbnRMaXN0Ij09PXQudHlwZX0pKSxlKS5mb3JFYWNoKChmdW5jdGlvbih0KXshZnVuY3Rpb24odCl7cmV0dXJuIHQuY29udGVudF90eXBlLmluZGV4T2YoImltYWdlIik+PTB9KHQpP24ucHVzaChmdW5jdGlvbih0KXtyZXR1cm57dHlwZToiYXR0YWNobWVudExpc3QiLGF0dGFjaG1lbnRzOlt7Y29udGVudFR5cGU6dC5jb250ZW50X3R5cGUsbmFtZTp0Lm5hbWUsc2l6ZTp0LnNpemUsdXJsOnQudXJsfV19fSh0KSk6bi5wdXNoKGZ1bmN0aW9uKHQpe3JldHVybntoZWlnaHQ6cGFyc2VJbnQodC5oZWlnaHQsMTApLHR5cGU6ImltYWdlIix1cmw6dC51cmwsd2lkdGg6cGFyc2VJbnQodC53aWR0aCwxMCl9fSh0KSl9KSksdC5jb25jYXQobil9ZnVuY3Rpb24gQnQodCl7cmV0dXJuIHQuc3BsaXQoIj8iKVswXX1mdW5jdGlvbiBWdCh0KXtpZigiY29udmVyc2F0aW9uUmF0aW5nIiE9PVV0KHQpKXJldHVybnt9O3ZhciBlPXQuYmxvY2tzWzBdLG49ZS5yZW1hcmsscj1lLnV1aWQsbz1lLmJsb2NrX3JhdGluZztyZXR1cm57Y2hvc2VuUmF0aW5nOnQuYmxvY2tzWzBdLnJhdGluZ19pbmRleCxyZW1hcms6bix1dWlkOnIsYmxvY2tSYXRpbmc6ISFvfX1mdW5jdGlvbiBHdCh0KXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm57aWQ6dC5pZCxuYW1lOnQubmFtZSxhdHRyaWJ1dGVzOnF0KHQuYXR0cmlidXRlcyksZW1vamk6dC5lbW9qaSxhcmNoaXZlZDp0LmFyY2hpdmVkLGF0dHJpYnV0ZVZhbHVlczp0LmF0dHJpYnV0ZV92YWx1ZXN9fSh0KX0pKX1mdW5jdGlvbiBxdCh0KXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiJsaXN0Ij09PXQudHlwZSYmKHQubGlzdE9wdGlvbnM9dC5vcHRpb25zLmxpc3Rfb3B0aW9ucyksImZpbGVzIj09PXQudHlwZSYmKHQubGltaXQ9InNpbmdsZSI9PT10LmlkZW50aWZpZXI/MToxMCkse2lkOnQuaWQsbmFtZTp0Lm5hbWUsdmFsdWU6dC52YWx1ZSxkZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9uLHR5cGU6dC50eXBlLGxpc3RPcHRpb25zOnQubGlzdE9wdGlvbnMsbGltaXQ6dC5saW1pdCxyZXF1aXJlZDp0LnJlcXVpcmVkLG9wdGlvbnM6dC5vcHRpb25zLGlkZW50aWZpZXI6dC5pZGVudGlmaWVyLGlzQ29udHJvbGxpbmdBdHRyaWJ1dGU6dC5pc19jb250cm9sbGluZ19hdHRyaWJ1dGV9fSkpfWZ1bmN0aW9uIFd0KCl7cmV0dXJuKFd0PWh0KGF0KCkubWFyaygoZnVuY3Rpb24gdChlLG4sbyxpKXt2YXIgYSxzLGM7cmV0dXJuIGF0KCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIGE9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvdGlja2V0cy90aWNrZXRfZm9ybSIscz12dCh7dGlja2V0X3R5cGVfaWQ6bixhdHRyaWJ1dGVzOkpTT04uc3RyaW5naWZ5KG8pfSxpJiZ7dXBkYXRlZF9hdHRyaWJ1dGVfaWQ6aX0pLHQubmV4dD00LHUuQS5wb3N0KHt1cmw6YSxzZXNzaW9uOmUscGFyYW1zOnN9KTtjYXNlIDQ6cmV0dXJuIGM9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLEt0KGMpKTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBLdCh0KXtyZXR1cm57dGlja2V0VHlwZUlkOnQudGlja2V0X3R5cGVfaWQsbmFtZTp0Lm5hbWUsZm9ybUZpZWxkczpxdCh0LmZvcm1fZmllbGRzKX19ZnVuY3Rpb24gWnQodCl7cmV0dXJuIHQ/dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB2dCh7fSx0LHtzZXJpYWxpemVkX29iamVjdDpKdCh0LnJ1bGVzZXRfbGlua19vYmplY3RfdHlwZSx0LnNlcmlhbGl6ZWRfb2JqZWN0KX0pfSkpOltdfWZ1bmN0aW9uIEp0KHQsZSl7c3dpdGNoKHQpe2Nhc2UiaW5ib3VuZF90cmlnZ2VyIjpjYXNlImluYm91bmRfY3VzdG9tX2JvdCI6cmV0dXJuIFl0KGUpO2Nhc2UibWVzc2VuZ2VyX3RyaWdnZXIiOmNhc2UiYnV0dG9uX2N1c3RvbV9ib3QiOmNhc2UidHJpZ2dlcmFibGVfY3VzdG9tX2JvdCI6cmV0dXJuKDAsQy5HbikoZSk7ZGVmYXVsdDpyZXR1cm4gZX19ZnVuY3Rpb24gWXQodCl7cmV0dXJuIHQ/e3N1Z2dlc3Rpb25QYXJ0czpYdCh0KSxjb21wb3NlckRpc2FibGVkOnQuY29tcG9zZXJfZGlzYWJsZWQscHJvbXB0OnQucHJvbXB0LHJ1bGVzZXRJZDp0LnJ1bGVzZXRfaWQsc3VnZ2VzdGlvbnM6dC5zdWdnZXN0aW9ucy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm57cHJlQWN0aW9uOnQucHJlX2FjdGlvbix0ZXh0OnQudGV4dCx1dWlkOnQudXVpZH19KHQpfSkpLHVwZGF0ZWRBdDp0LnVwZGF0ZWRfYXQscHJpb3JpdHk6dC5wcmlvcml0eSxzbmFwc2hvdElkOnQuc25hcHNob3RfaWQsd2VsY29tZVBhcnRzOihlPXQud2VsY29tZV9wYXJ0c3x8W10sZS5tYXAoTnQpKSx1eFN0eWxlOnQudXhfc3R5bGU/e2NvbnRhaW5lcjp0LnV4X3N0eWxlLmNvbnRhaW5lcixhbGlnbkJ1dHRvbnM6dC51eF9zdHlsZS5hbGlnbl9idXR0b25zLHdlbGNvbWVQYXJ0c1dpdGhTdWdnZXN0aW9uczp0LnV4X3N0eWxlLndlbGNvbWVfcGFydHNfd2l0aF9zdWdnZXN0aW9uc306bnVsbH06bnVsbDt2YXIgZX1mdW5jdGlvbiBRdCh0KXtyZXR1cm4gdD97aWQ6dC5pZCxwYXJ0czp0LnBhcnRzLG9wZXJhdG9yOigwLEMuUFMpKHQub3BlcmF0b3IpfTpudWxsfWZ1bmN0aW9uIFh0KHQpe3ZhciBlPXQucGFydHMsbj10Lm9wZXJhdG9yO3JldHVybiBlJiZuP3twYXJ0czplLG9wZXJhdG9yOigwLEMuUFMpKG4pfTp2b2lkIDB9ZnVuY3Rpb24gJHQodCl7dmFyIGU9KDAsaC51RSkod2luZG93KTtlJiYodC5zZGtfd2Vidmlld19wbGF0Zm9ybT1lKX1mdW5jdGlvbiB0ZSgpe3JldHVybigwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2NvbnZlcnNhdGlvbnMvdHJhbnNjcmlwdCJ9ZnVuY3Rpb24gZWUodCl7dmFyIGU9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvY3VzdG9tX2Vtb2ppcyI7cmV0dXJuIHUuQS5wb3N0KHt1cmw6ZSxzZXNzaW9uOnR9KX1mdW5jdGlvbiBuZSh0KXtyZXR1cm57Y2FyZHM6dC5jYXJkcy5tYXAoKGZ1bmN0aW9uKHQpe2lmKCJtZXNzZW5nZXJfYXBwIj09PXQudHlwZSlyZXR1cm57dHlwZTp0LnR5cGUsY2FyZF90aXRsZTp0LmNhcmRfdGl0bGUsdXJpOnQuZmFsbGJhY2tfdXJsLGNhbnZhczp0LmNhbnZhcyxtZXNzZW5nZXJBcHBJZDp0Lm1lc3Nlbmdlcl9hcHBfaWQsbWVzc2VuZ2VyQ2FyZElkOnQubWVzc2VuZ2VyX2NhcmRfaWR9O2lmKCJyZWNlbnRfY29udmVyc2F0aW9uIj09PXQudHlwZSlyZXR1cm57dHlwZTp0LnR5cGUsY2FyZF90aXRsZTp0LmNhcmRfdGl0bGUsbGltaXQ6dC5saW1pdCxjb252ZXJzYXRpb25zOnQuY29udmVyc2F0aW9ucy5tYXAoTHQpfTtpZigicmVjZW50X3RpY2tldHMiPT09dC50eXBlJiZ0LnRpY2tldHMpcmV0dXJue3R5cGU6dC50eXBlLGNhcmRfdGl0bGU6dC5jYXJkX3RpdGxlLHRpY2tldHM6dC50aWNrZXRzLm1hcChDLkoxKX07aWYoIm5ld19jb252ZXJzYXRpb24iPT09dC50eXBlJiZ0LmFjdGlvbil7dmFyIGU9dC5hY3Rpb247cmV0dXJuIHZ0KHt9LHQse2FjdGlvbjp2dCh7fSxlLHthdmF0YXJfZGV0YWlsczprKGUuYXZhdGFyX2RldGFpbHMpfSl9KX1yZXR1cm4gdH0pKX19ZnVuY3Rpb24gcmUodCl7dmFyIGU9dC5zZXNzaW9uLG49KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvZXh0ZW5kX3Nlc3Npb24iO3JldHVybiB1LkEucG9zdCh7dXJsOm4sc2Vzc2lvbjplLHBhcmFtczp7fX0pfWZ1bmN0aW9uIG9lKHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBlbmRwb2ludHM6IGV4cGVjdGVkIGFuIGFycmF5Iik7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtpZighdHx8Im9iamVjdCIhPT1zdCh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgZW5kcG9pbnQ6IGV4cGVjdGVkIGFuIG9iamVjdCIpO3ZhciBlPXQ7cmV0dXJue2VuZHBvaW50OlN0cmluZyhlLmVuZHBvaW50fHwiIiksZmFsbGJhY2s6QXJyYXkuaXNBcnJheShlLmZhbGxiYWNrKT9lLmZhbGxiYWNrLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fSkpOnZvaWQgMCxjb25uZWN0aXZpdHlDaGVja1VybDplLmNvbm5lY3Rpdml0eV9jaGVja191cmw/U3RyaW5nKGUuY29ubmVjdGl2aXR5X2NoZWNrX3VybCk6dm9pZCAwLHdzQ29ubmVjdGl2aXR5Q2hlY2tVcmw6ZS53c19jb25uZWN0aXZpdHlfY2hlY2tfdXJsP1N0cmluZyhlLndzX2Nvbm5lY3Rpdml0eV9jaGVja191cmwpOnZvaWQgMH19KSl9ZnVuY3Rpb24gaWUoKXtyZXR1cm4oaWU9aHQoYXQoKS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciBuLG8saTtyZXR1cm4gYXQoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbj1lLnNlc3Npb24sbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvcnRtL2F1dGhvcml6ZSIsdC5uZXh0PTQsdS5BLnBvc3Qoe3VybDpvLHNlc3Npb246bixwYXJhbXM6e319KTtjYXNlIDQ6cmV0dXJuIGk9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHt0b2tlbjpTdHJpbmcoaS50b2tlbil9KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBhZSgpe3JldHVybihhZT1odChhdCgpLm1hcmsoKGZ1bmN0aW9uIHQoZSl7dmFyIG4sbyxpO3JldHVybiBhdCgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBuPWUuc2Vzc2lvbixvPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9ydG0vY29ubmVjdCIsdC5uZXh0PTQsdS5BLnBvc3Qoe3VybDpvLHNlc3Npb246bixwYXJhbXM6e319KTtjYXNlIDQ6cmV0dXJuIGk9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHtjaGFubmVsOlN0cmluZyhpLmNoYW5uZWx8fCIiKSxlbmRwb2ludHM6b2UoaS5lbmRwb2ludHMpfSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gdWUoKXtyZXR1cm4odWU9aHQoYXQoKS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciBuLG8saTtyZXR1cm4gYXQoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbj1lLnNlc3Npb24sbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9uZXh1c19jb25maWciLHQubmV4dD00LHUuQS5wb3N0KHt1cmw6byxzZXNzaW9uOm4scGFyYW1zOnt9fSk7Y2FzZSA0OnJldHVybiBpPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIix7ZW5kcG9pbnRzOmkuZW5kcG9pbnRzfHxbXSxvcHRpb25zOmkub3B0aW9uc3x8bnVsbH0pO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHNlKHQsZSxuKXt2YXIgbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9tZWV0aW5nL2Jvb2siLGk9e2NvbnZlcnNhdGlvbl9pZDplLHN0YXJ0X3RpbWU6bn07cmV0dXJuIHUuQS5wb3N0KHt1cmw6byxzZXNzaW9uOnQscGFyYW1zOml9KX1mdW5jdGlvbiBjZSh0LGUsbil7dm9pZCAwPT09biYmKG49MCk7dmFyIG89KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvbWVldGluZy9hdmFpbGFiaWxpdHkiLGk9e2NvbnZlcnNhdGlvbl9pZDplLG1vbnRoX29mZnNldDpufTtyZXR1cm4gdS5BLnBvc3Qoe3VybDpvLHNlc3Npb246dCxwYXJhbXM6aX0pfWZ1bmN0aW9uIGxlKHQpe3ZhciBlPXQuc2Vzc2lvbixuPXQudG9rZW4sbz10LnNlbGVjdG9yLGk9dC51cmwsYT0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9lbGVtZW50X3BpY2tlci9zZXNzaW9ucy9zZWxlY3RvciIscz17dG9rZW46bixzZWxlY3RvcjpvLHVybDppfTtyZXR1cm4gdS5BLnBvc3Qoe3VybDphLHNlc3Npb246ZSxwYXJhbXM6c30pfWZ1bmN0aW9uIGZlKHQsZSxuKXt2YXIgbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9jb252ZXJzYXRpb25zLyIrZSsiL2hhbmRvdmVyX2N0YV9zcGF3biIsaT17Y29udmVyc2F0aW9uX2lkOmUsY29udmVyc2F0aW9uX3BhcnRfaWQ6bn07cmV0dXJuIHUuQS5wb3N0KHt1cmw6byxzZXNzaW9uOnQscGFyYW1zOml9KX12YXIgZGU9e2FkZENvbnZlcnNhdGlvblJhdGluZ1JlbWFyazpmdW5jdGlvbih0LGUsbixvKXt2YXIgaT0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9jb252ZXJzYXRpb25zLyIrZSsiL3JlbWFyayIsYT17cmVtYXJrOm8scmF0aW5nX3V1aWQ6bn07cmV0dXJuIHUuQS5wb3N0KHt1cmw6aSxzZXNzaW9uOnQscGFyYW1zOmF9KS50aGVuKChmdW5jdGlvbigpe30pKX0sYm9va01lZXRpbmc6c2UsZ2V0TWVldGluZ0F2YWlsYWJpbGl0eTpjZSxidWlsZEJhbm5lcjpDLkZ5LGJ1aWxkQ29tbWVudDpOdCxidWlsZENvbXBvc2VyU3VnZ2VzdGlvbnM6WXQsYnVpbGRCb3RJbnRybzpRdCxidWlsZFRvdXI6Qy5uZixjaGFuZ2VDb252ZXJzYXRpb25SYXRpbmdJbmRleDpmdW5jdGlvbih0LGUsbixvKXt2YXIgaT0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9jb252ZXJzYXRpb25zLyIrZSsiL3JhdGUiLGE9e3JhdGluZ19pbmRleDpvLHJhdGluZ191dWlkOm59O3JldHVybiB1LkEucG9zdCh7dXJsOmksc2Vzc2lvbjp0LHBhcmFtczphfSkudGhlbigoZnVuY3Rpb24oKXt9KSl9LGNvbGxlY3RFbWFpbEZyb21CYW5uZXI6ZnVuY3Rpb24odCxlLG4sbyl7dmFyIGk9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvYmFubmVycy8iK2UrIi9jb2xsZWN0X2VtYWlsIixhPU9iamVjdC5hc3NpZ24oe2VtYWlsOm99LCgwLEMuTG8pKG4pKTtyZXR1cm4gdS5BLnBvc3Qoe3VybDppLHNlc3Npb246dCxwYXJhbXM6YX0pfSxjb21wbGV0ZVRvdXI6ZnVuY3Rpb24odCxlLG4pe3ZhciBvPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL3RvdXJzLyIrZSsiL2NvbXBsZXRlIixpPSgwLEMuUGMpKG4pO3JldHVybiB1LkEucG9zdCh7dXJsOm8sc2Vzc2lvbjp0LHBhcmFtczppfSl9LGNyZWF0ZUFydGljbGVSZWFjdGlvbjpmdW5jdGlvbih0LGUsbixvLGksYSxzLGMpe3ZvaWQgMD09PW8mJihvPSExKSx2b2lkIDA9PT1pJiYoaT1udWxsKSx2b2lkIDA9PT1zJiYocz0iaGVscF9jZW50ZXIiKSx2b2lkIDA9PT1jJiYoYz1udWxsKTt2YXIgbD0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9hcnRpY2xlcy8iK2UrIi9yZWFjdCIsZj17cmVhY3Rpb25faW5kZXg6bixhbGxvd19hdXRvX3Jlc3BvbnNlczpvLGFydGljbGVfY29udGVudF9pZDppLGFydGljbGVfY2hhbm5lbDpzLGFydGljbGVfc291cmNlOmMsaGVscF9jZW50ZXJfaWQ6YX07cmV0dXJuIHUuQS5wb3N0KHt1cmw6bCxzZXNzaW9uOnQscGFyYW1zOmZ9KS50aGVuKChmdW5jdGlvbigpe30pKX0sY3JlYXRlQ29tbWVudDpmdW5jdGlvbih0LGUsbixvLHMsYyxsLGYpe3ZvaWQgMD09PWYmJihmPXt9KTt2YXIgZD1mLmxhc3RBZG1pblBhcnRDcmVhdGVkQXR8fG51bGwscD1mLm5leHVzQ29ubmVjdGlvblN0YXR1c3x8bnVsbCxoPWYucGFydElkc3x8bnVsbCx2PWYubGFzdEFkbWluUGFydElkfHxudWxsLHk9Zi5sYXN0QWRtaW5QYXJ0Q2xpZW50VXVpZHx8bnVsbCxnPWYuY3VycmVudFBhZ2VEYXRhfHxudWxsLG09Zi5jb21wb3NlclN1Z2dlc3Rpb25JdGVtfHxudWxsLGI9Zi5wbGFuU3RlcElkfHxudWxsLHc9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvY29udmVyc2F0aW9ucy8iK2UrIi9yZXBseSIsXz0oMCxDLkt1KSh7YmxvY2tzOm8sY3JlYXRlZEF0OnMsY2xpZW50SWQ6bixlbWFpbDpsfSk7bSYmKF89T2JqZWN0LmFzc2lnbih7fSxfLHtzbWFydF9zdWdnZXN0aW9uOkpTT04uc3RyaW5naWZ5KG0pfSkpLGQmJmgmJihfPU9iamVjdC5hc3NpZ24oe30sXyx7bGFzdF9hZG1pbl9wYXJ0X2NyZWF0ZWRfYXQ6ZCxsYXN0X2FkbWluX3BhcnRfaWQ6dixsYXN0X2FkbWluX3BhcnRfY2xpZW50X3V1aWQ6eSxwYXJ0X2lkczpoLnRvU3RyaW5nKCl9KSkscCYmKF89T2JqZWN0LmFzc2lnbih7fSxfLHtuZXh1c19jb25uZWN0aW9uX3N0YXR1czpKU09OLnN0cmluZ2lmeSh2dCh7fSxwLHtnbG9iYWxDb25uZWN0aW9uU3RhdGU6d2luZG93Lm5leHVzQ29ubmVjdGlvblN0YXRlfSkpfSkpLGcmJihfPU9iamVjdC5hc3NpZ24oe30sXyx7Y3VycmVudF9wYWdlX2RhdGE6SlNPTi5zdHJpbmdpZnkoZyl9KSksYiYmKF89T2JqZWN0LmFzc2lnbih7fSxfLHtwbGFuX3N0ZXBfaWQ6Yn0pKTt2YXIgUz17dXJsOncsc2Vzc2lvbjp0LHBhcmFtczpfLGhlYWRlcnM6eyJYLUNPTlRJTlVFLUlOVEVSQ09NLVRSQUNFIjoidHJ1ZSJ9fSx4PWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LE50KHQpLHtjbGllbnRJZDpufSl9O2lmKEYuZi5pc0VuYWJsZWQoKSl7dmFyIEU9bmV3IEYuZigicmVwbHkiLGUpO3JldHVybiBFLnNldEF0dHJpYnV0ZXMoeyJuZXh1cy5jb25uZWN0aW9uX3N0YXRlIjp3aW5kb3cubmV4dXNDb25uZWN0aW9uU3RhdGV9KSxpLl8ud2l0aChhLnUuc2V0U3BhbihpLl8uYWN0aXZlKCksRS5nZXRGaXJzdFRva2VuU3BhbigpKSwoZnVuY3Rpb24oKXtyZXR1cm4gdS5BLnBvc3QoUykudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIEUuc2V0Q29tbWVudENyZWF0ZWRBdChlLHQuY3JlYXRlZF9hdCkseCh0KX0pKX0pKX1yZXR1cm4gdS5BLnBvc3QoUykudGhlbih4KX0sY3JlYXRlQ29udmVyc2F0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5ibG9ja3Mscz1lLmNyZWF0ZWRBdCxjPWUuZW1haWwsbD1lLmNvbXBvc2VyU3VnZ2VzdGlvbnMsZj1lLnNlbGZTZXJ2ZVN1Z2dlc3Rpb25zTWF0Y2gsZD1lLnJlc29sdXRpb25Cb3RCZWhhdmlvclZlcnNpb25JZCxwPWUuYm90SW50cm8saD1lLmN1cnJlbnRVcmwsdj1lLnN0YXJ0ZWRGcm9tU2VhcmNoQnJvd3NlLHk9dm9pZCAwIT09diYmdixnPWUubWVzc2VuZ2VyT3BlblJlcXVlc3RJZCxtPXZvaWQgMD09PWc/bnVsbDpnLGI9ZS5jdXN0b21BdHRyaWJ1dGVzLHc9dm9pZCAwPT09Yj9udWxsOmIsXz1lLmNsaWVudElkLFM9dm9pZCAwPT09Xz9udWxsOl8seD1lLmN1cnJlbnRQYWdlRGF0YSxFPXZvaWQgMD09PXg/bnVsbDp4LE89ZS5yb2xlTWF0Y2hpbmdEYXRhLEE9ZS5zaG9waWZ5Q2FydFRva2VuLEk9dm9pZCAwPT09QT9udWxsOkEsaz1lLmNvbXBvc2VyU3VnZ2VzdGlvbkl0ZW0sTD12b2lkIDA9PT1rP251bGw6ayxUPWUuZnJvbUJvb2tNZWV0aW5nQnV0dG9uLGo9dm9pZCAwIT09VCYmVCxQPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL21lc3NhZ2VzIixOPSgwLEMuS3UpKHtibG9ja3M6bixjcmVhdGVkQXQ6cyxjbGllbnRJZDpTfHwoMCxvLmwpKCksZW1haWw6Yyxjb21wb3NlclN1Z2dlc3Rpb25zOmwsc2VsZlNlcnZlU3VnZ2VzdGlvbnNNYXRjaDpmLGJvdEludHJvOnAscmVzb2x1dGlvbkJvdEJlaGF2aW9yVmVyc2lvbklkOmQsc3RhcnRlZEZyb21TZWFyY2hCcm93c2U6eSxtZXNzZW5nZXJPcGVuUmVxdWVzdElkOm0sY3VzdG9tQXR0cmlidXRlczp3fSk7TCYmKE49T2JqZWN0LmFzc2lnbih7fSxOLHtzbWFydF9zdWdnZXN0aW9uOkpTT04uc3RyaW5naWZ5KEwpfSkpLEUmJihOPU9iamVjdC5hc3NpZ24oe30sTix7Y3VycmVudF9wYWdlX2RhdGE6SlNPTi5zdHJpbmdpZnkoRSl9KSksTyYmKE49T2JqZWN0LmFzc2lnbih7fSxOLHtyb2xlX21hdGNoaW5nX2RhdGE6SlNPTi5zdHJpbmdpZnkoTyl9KSksSSYmKE49T2JqZWN0LmFzc2lnbih7fSxOLHtzaG9waWZ5X2NhcnRfdG9rZW46SX0pKSxqJiYoTj1PYmplY3QuYXNzaWduKHt9LE4se2Zyb21fYm9va19tZWV0aW5nX2J1dHRvbjoidHJ1ZSJ9KSk7dmFyIE09e3VybDpQLHNlc3Npb246dCxwYXJhbXM6TixoZWFkZXJzOnsiWC1DT05USU5VRS1JTlRFUkNPTS1UUkFDRSI6InRydWUifX07aWYoaCYmKE0uY3VycmVudFVybD1oKSxGLmYuaXNFbmFibGVkKCkpe3ZhciBSPW5ldyBGLmYoImNyZWF0ZV9jb252ZXJzYXRpb24iKTtyZXR1cm4gUi5zZXRBdHRyaWJ1dGVzKHsibmV4dXMuY29ubmVjdGlvbl9zdGF0ZSI6d2luZG93Lm5leHVzQ29ubmVjdGlvblN0YXRlfSksaS5fLndpdGgoYS51LnNldFNwYW4oaS5fLmFjdGl2ZSgpLFIuZ2V0Rmlyc3RUb2tlblNwYW4oKSksKGZ1bmN0aW9uKCl7cmV0dXJuIHUuQS5wb3N0KE0pLnRoZW4oKGZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBSLnNldENvbW1lbnRDcmVhdGVkQXQodC5pZCxudWxsPT0oZT10LmNvbnZlcnNhdGlvbl9wYXJ0c1swXSk/dm9pZCAwOmUuY3JlYXRlZF9hdCksTHQodCl9KSl9KSl9cmV0dXJuIHUuQS5wb3N0KE0pLnRoZW4oTHQpfSxjcmVhdGVFdmVudDpmdW5jdGlvbih0LGUsbixvKXtpZih2b2lkIDA9PT1vJiYobz0hMSksbylyZXR1cm4gYnQodCxlLG4pLnRoZW4oKGZ1bmN0aW9uKCl7fSkpO3ZhciBpPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2V2ZW50cyIsYT17ZXZlbnRfbmFtZTplLG1ldGFkYXRhOm59LGM9e2V2ZW50X2xpc3Q6SlNPTi5zdHJpbmdpZnkoe2RhdGE6W2FdfSl9O3JldHVybiB1LkEucG9zdCh7dXJsOmksc2Vzc2lvbjp0LHBhcmFtczpjfSkudGhlbigoZnVuY3Rpb24odCl7aWYoISgwLHMuSSkodCkpcmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0sbj1lLmJhbm5lcixyPWUuY3VzdG9tX2JvdCxvPWUuY2xpZW50X21hdGNoZXMsaT1lLnRvdXIsYT1lLnN1cnZleSx1PWUubnVkZ2U7cmV0dXJue2Jhbm5lcjpuPygwLEMuRnkpKG4pOm4sY3VzdG9tQm90OnI/THQocik6cixjbGllbnRzaWRlUnVsZXNldENvbmRpdGlvbnM6WnQob3x8W10pLHRvdXI6aT8oMCxDLm5mKShpKTppLHN1cnZleTphPygwLEMuSGQpKGEpOmEsbnVkZ2U6dT8oMCxDLl9KKSh1KTp1fX0odCl9KSl9LGNyZWF0ZU1ldHJpY3M6ZnVuY3Rpb24odCxlLG4saSxhLHMpe3ZvaWQgMD09PW4mJihuPVtdKSx2b2lkIDA9PT1pJiYoaT1bXSksdm9pZCAwPT09YSYmKGE9W10pLHZvaWQgMD09PXMmJihzPSExKTt2YXIgYz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9tZXRyaWNzIixsPSgwLG8ubCkoKSxmPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybnttZXRyaWNzOkpTT04uc3RyaW5naWZ5KHQpLGxvZ3M6SlNPTi5zdHJpbmdpZnkoZSksb3BfbWV0cmljczpKU09OLnN0cmluZ2lmeShuKSxoY19tZXRyaWNzOkpTT04uc3RyaW5naWZ5KHIpfX0oZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB2dCh7fSx0LHttZXRhZGF0YTp2dCh7fSx0Lm1ldGFkYXRhfHx7fSx7aHR0cF9yZXF1ZXN0X2lkOmx9KX0pfSkpLG4saSxhKTtyZXR1cm4gcz91LkEuc2VuZEJlYWNvbih7dXJsOmMsc2Vzc2lvbjp0LHBhcmFtczpmLHNob3VsZFNldFVzZXJEYXRhOiExfSk6dS5BLmZldGNoKHt1cmw6YyxzZXNzaW9uOnQscGFyYW1zOmYsc2hvdWxkU2V0VXNlckRhdGE6ITEsa2VlcGFsaXZlOiEwfSkudGhlbigoZnVuY3Rpb24oKXt9KSl9LGNyZWF0ZU9yVXBkYXRlVXNlcjpmdW5jdGlvbih0LGUsbixvLGksYSxzLGMsZil7dm9pZCAwPT09ZSYmKGU9e30pLHZvaWQgMD09PXMmJihzPSExKSx2b2lkIDA9PT1jJiYoYz0hMSksZT15dCh7fSxlKSx2b2lkIDAhPT1uJiYoZS5hbm9ueW1vdXNfZW1haWw9bik7dmFyIGQ9e3NvdXJjZTppLHNhbXBsaW5nOmN9O3ZvaWQgMCE9PW8mJihkLl9pbnRlcmNvbUVuY3J5cHRlZFBheWxvYWQ9byk7dmFyIGg9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvcGluZyI7cmV0dXJuIHUuQS5wb3N0KHt1cmw6aCxzZXNzaW9uOnQscGFyYW1zOmQsY3VzdG9tQXR0cmlidXRlczplLGludGVybmFsOmEsaXNJbnRlcnNlY3Rpb25Cb290ZWQ6cyxhbm9ueW1vdXNTZXNzaW9uRHVyYXRpb246Zn0pLnRoZW4oKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZXJyb3JzO3JldHVybiBlP3tlcnJvcnM6ZX06dm9pZCAwPT09KG51bGw9PXQ/dm9pZCAwOnQudXNlcik/e2Vycm9yczpbe2NvZGU6InBpbmdfcmV0dXJuZWRfbm9fdXNlciJ9XX06ZnVuY3Rpb24odCl7dmFyIGUsbixyLG89dC51c2VyO3QuYWN0aXZlX3RvdXImJigwLHAuazcpKCJUb3VyIGF0dGVtcHRpbmcgdG8gcmVzdW1lIGZyb20gcGluZyIsdC5hY3RpdmVfdG91cik7cmV0dXJue2lkOm8uaWQsYWN0aXZlQ29tcGFueUlkOm8uYWN0aXZlX2NvbXBhbnlfaWR8fCItMSIsYWN0aXZlVG91cjooMCxDLm5mKSh0LmFjdGl2ZV90b3VyKSxhbm9ueW1vdXNJZDpvLmFub255bW91c19pZCxhbm9ueW1vdXNTZXNzaW9uOnQuYW5vbnltb3VzX3Nlc3Npb24sYXBwOlJ0KHQpLGFydGljbGVDb252ZXJzYXRpb25JZDpKU09OLnN0cmluZ2lmeSh0LmFydGljbGVfY29udmVyc2F0aW9uX2lkKSxiYW5uZXJzOigwLEMubzgpKHQuYmFubmVycyksY2Rhc0JyZWFjaGluZ0xpbWl0OnQuY2Rhc19icmVhY2hpbmdfbGltaXR8fFtdLGNoZWNrbGlzdHM6bSh0LmNoZWNrbGlzdHMpLGNsaWVudHNpZGVSdWxlc2V0Q29uZGl0aW9uczpadCh0LmNsaWVudF9tYXRjaGVzKSxyZXF1aXJlc0Nvb2tpZUNvbnNlbnQ6by5yZXF1aXJlc19jb29raWVfY29uc2VudCxjb3VudHJ5Q29kZTpvLmNvdW50cnlfY29kZSxoYXNDb252ZXJzYXRpb25zOiExIT09by5oYXNfY29udmVyc2F0aW9ucyxpZGVudGl0eVZlcmlmaWNhdGlvblJlYWR5OnQuaWRlbnRpdHlfdmVyaWZpY2F0aW9uX3JlYWR5LGlkZW50aXR5VmVyaWZpZWQ6dC5pZGVudGl0eV92ZXJpZmllZCxpbnN0YWxsTW9kZUNvbmZpZzpNdCh0KSxsYXVuY2hlclNldHRpbmdzOigwLHYuSykodC5sYXVuY2hlcl9zZXR0aW5ncyksbGFzdENvbnRhY3RlZEF0Om8ubGFzdF9jb250YWN0ZWRfYXQsbG9jYWxlOm8ubG9jYWxlLG5ld0NvbnZlcnNhdGlvbkNvbXBvc2VyU3RhdGU6KDAsQy5rRykobnVsbD09dD92b2lkIDA6dC5jb21wb3Nlcl9zdGF0ZSksbm90aWZpY2F0aW9uTGlua0NvbnZlcnNhdGlvbklkOnQubm90aWZpY2F0aW9uX2xpbmtfY29udmVyc2F0aW9uX2lkLG5vdGlmaWNhdGlvbkxpbmtXaXRob3V0Q29udmVyc2F0aW9uOm51bGwhPShlPXQubm90aWZpY2F0aW9uX2xpbmtfd2l0aG91dF9jb252ZXJzYXRpb24pJiZlLHBob25lTnVtYmVyOm8ucGhvbmVfbnVtYmVyLHJvbGU6RnQoby5yb2xlKSx1bnJlYWRDb252ZXJzYXRpb25JZHM6bnVsbD09KG49dC51bnJlYWRfY29udmVyc2F0aW9uX2lkcyk/dm9pZCAwOm4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZygpfSkpLHVucmVhZERpc21pc3NlZENvbnZlcnNhdGlvbklkczpudWxsPT0ocj10LnVucmVhZF9kaXNtaXNzZWRfY29udmVyc2F0aW9uX2lkcyk/dm9pZCAwOnIubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZygpfSkpLHVucmVhZE5ld3NJdGVtc0NvdW50OnQudW5yZWFkX25ld3NfaXRlbXNfY291bnQsdW5yZWFkVGlja2V0c0NvdW50OnQudW5yZWFkX3RpY2tldHNfY291bnQsbGFzdFVucmVhZE5ld3NJdGVtSWQ6dC5sYXN0X3VucmVhZF9uZXdzX2l0ZW1faWQsbmV3c2ZlZWRMYXN0VmlzaXQ6dC5uZXdzZmVlZF9sYXN0X3Zpc2l0PygwLGwua1UpKHQubmV3c2ZlZWRfbGFzdF92aXNpdCk6dm9pZCAwLHVzZXJTdXBwbGllZEVtYWlsOm8uYW5vbnltb3VzX2VtYWlsLG5ld1Nlc3Npb246by5uZXdfc2Vzc2lvbixzZWFyY2hSZXF1aXJlZEJlZm9yZUNvbnZlcnNhdGlvbjpvLmhlbHBfY2VudGVyX3JlcXVpcmVfc2VhcmNoLHN1cnZleTooMCxDLkhkKSh0LnN1cnZleSksdG9vbHRpcEdyb3VwczooMCxDLlVtKSh0LnRvb2x0aXBfZ3JvdXBzKSxwcmV2ZW50TXVsdGlwbGVJbmJvdW5kQ29udmVyc2F0aW9uOm8ucHJldmVudF9tdWx0aXBsZV9pbmJvdW5kX2NvbnZlcnNhdGlvbix0ZXN0QXNzaWdubWVudHM6by51c2VyX2Fzc2lnbm1lbnRzLG5ld3NmZWVkSWQ6dC5uZXdzZmVlZF9pZCxzZXNzaW9uRXhwaXJ5OnQuc2Vzc2lvbl9leHBpcnksand0RXhwaXJlZDp0Lmp3dF9leHBpcmVkfX0odCl9KSl9LGNyZWF0ZVBhZ2VWaWV3RXZlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sY3JlYXRlUmVhY3Rpb246ZnVuY3Rpb24odCxlLG4pe3ZhciBvPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2NvbnZlcnNhdGlvbnMvIitlKyIvcmVhY3QiLGk9e3JlYWN0aW9uX2luZGV4Om59O3JldHVybiB1LkEucG9zdCh7dXJsOm8sc2Vzc2lvbjp0LHBhcmFtczppfSkudGhlbigoZnVuY3Rpb24oKXt9KSl9LGNyZWF0ZVVwbG9hZDpmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8saSl7aWYobnVsbCE9ciYmci5hYm9ydGVkKWkobmV3IEVycm9yKCJVcGxvYWQgYWJvcnRlZCIpKTtlbHNle3ZhciBhPW5ldyBGb3JtRGF0YTthLmFwcGVuZCgia2V5Iix0LmtleSksYS5hcHBlbmQoImFjbCIsdC5hY2wpLGEuYXBwZW5kKCJDb250ZW50LVR5cGUiLHQuY29udGVudF90eXBlKSxhLmFwcGVuZCgiQVdTQWNjZXNzS2V5SWQiLHQuYXdzX2FjY2Vzc19rZXkpLGEuYXBwZW5kKCJwb2xpY3kiLHQucG9saWN5KSxhLmFwcGVuZCgic2lnbmF0dXJlIix0LnNpZ25hdHVyZSksYS5hcHBlbmQoInN1Y2Nlc3NfYWN0aW9uX3N0YXR1cyIsdC5zdWNjZXNzX2FjdGlvbl9zdGF0dXMpLHQubWV0YWRhdGEmJnQubWV0YWRhdGEuc2FmZV9hcHBfaWQmJmEuYXBwZW5kKCJ4LWFtei1tZXRhLXNhZmVfYXBwX2lkIix0Lm1ldGFkYXRhLnNhZmVfYXBwX2lkKSxhLmFwcGVuZCgiZmlsZSIsZSk7dmFyIHU9bmV3IFhNTEh0dHBSZXF1ZXN0LHM9ITEsYz0hMSxsPWZ1bmN0aW9uKHQsZSl7c3x8KHM9ITAsciYmci5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsZCksdChlKSl9LGY9ZnVuY3Rpb24odCl7cmV0dXJuIGwoaSx0KX0sZD1mdW5jdGlvbigpe2M9ITAsdS5hYm9ydCgpLGYobmV3IEVycm9yKCJVcGxvYWQgYWJvcnRlZCIpKX07ciYmci5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsZCksdS51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLChmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aENvbXB1dGFibGUsbz10LmxvYWRlZCxpPXQudG90YWw7aWYobiYmZSYmKG51bGw9PXJ8fCFyLmFib3J0ZWQpKXt2YXIgYT1NYXRoLmZsb29yKG8vaSoxMDApO24oYSl9fSksITEpLHUuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLChmdW5jdGlvbigpe251bGwhPXImJnIuYWJvcnRlZHx8Y3x8KCgwLHkuc3EpKCJtZXNzZW5nZXJfdXBsb2FkIix7eGhyX3N0YXR1czp1LnN0YXR1cyx1cGxvYWRfc3RhdGU6ImVycm9yZWQifSwhMCksZihuZXcgRXJyb3IoIlVwbG9hZCBmYWlsZWQgd2l0aCBYSFIgZXJyb3IsIHN0YXR1czogIit1LnN0YXR1cykpKX0pLCExKSx1LmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoZnVuY3Rpb24oKXtudWxsIT1yJiZyLmFib3J0ZWR8fGN8fCgoMCx5LnNxKSgibWVzc2VuZ2VyX3VwbG9hZCIse3hocl9zdGF0dXM6dS5zdGF0dXMsdXBsb2FkX3N0YXRlOiJhYm9ydGVkIn0sITApLGYobmV3IEVycm9yKCJVcGxvYWQgYWJvcnRlZCBieSB1c2VyIG9yIHN5c3RlbSIpKSl9KSwhMSksdS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoZnVuY3Rpb24oKXt2YXIgZTtudWxsIT1yJiZyLmFib3J0ZWR8fCgyMDE9PT11LnN0YXR1cz8oZT17aWQ6dC5pZCxwdWJsaWNVcmw6dC5wdWJsaWNfdXJsLGNvbnRlbnRUeXBlOnQuY29udGVudF90eXBlfSxsKG8sZSkpOigoMCx5LnNxKSgibWVzc2VuZ2VyX3VwbG9hZCIse3hocl9zdGF0dXM6dS5zdGF0dXMsdXBsb2FkX3N0YXRlOiJmYWlsZWQifSwhMCksZihuZXcgRXJyb3IoIlVwbG9hZCBmYWlsZWQgd2l0aCBzdGF0dXMgIit1LnN0YXR1cykpKSl9KSwhMSksdS5vcGVuKCJQT1NUIix0LnVwbG9hZF9kZXN0aW5hdGlvbiwhMCksdS5zZW5kKGEpfX0pKX0sY3JlYXRlVXBsb2FkUG9saWN5OmZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1uJiYobj17fSk7dmFyIG89bi5kaW1lbnNpb25zLGk9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvdXBsb2FkcyIsYT12b2lkIDAhPT0obnVsbD09bz92b2lkIDA6by53aWR0aCkmJnZvaWQgMCE9PShudWxsPT1vP3ZvaWQgMDpvLmhlaWdodCkscz17aW5jbHVkZV9tZXRhZGF0YTohMCx1cGxvYWQ6SlNPTi5zdHJpbmdpZnkodnQoe29yaWdpbmFsX2ZpbGVuYW1lOigwLGMuVyQpKGUubmFtZSksc2l6ZV9pbl9ieXRlczplLnNpemUsY29udGVudF90eXBlOmUudHlwZX0sYSYme3dpZHRoOm8ud2lkdGgsaGVpZ2h0Om8uaGVpZ2h0fSkpfTtyZXR1cm4gdS5BLnBvc3Qoe3VybDppLHNlc3Npb246dCxwYXJhbXM6c30pLnRoZW4oQy5vRil9LGRpc2FibGVJbnN0YWxsTW9kZTpmdW5jdGlvbih0KXt2YXIgZT0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9pbnN0YWxsIjtyZXR1cm4gdS5BLnBvc3Qoe3VybDplLHNlc3Npb246dH0pfSxkaXNtaXNzQmFubmVyOmZ1bmN0aW9uKHQsZSxuKXt2YXIgbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9iYW5uZXJzLyIrZSsiL2Rpc21pc3MiLGk9KDAsQy5Mbykobik7cmV0dXJuIHUuQS5wb3N0KHt1cmw6byxzZXNzaW9uOnQscGFyYW1zOml9KX0sZGlzbWlzc05vdGlmaWNhdGlvbnM6ZnVuY3Rpb24odCxlKXt2YXIgbj0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9jb252ZXJzYXRpb25zL2Rpc21pc3MiLG89e2NvbnZlcnNhdGlvbl9pZHM6ZX07cmV0dXJuIHUuQS5wb3N0KHt1cmw6bixzZXNzaW9uOnQscGFyYW1zOm99KS50aGVuKChmdW5jdGlvbigpe30pKX0sc2V0VXNlckF1dGhUb2tlbnM6ZnVuY3Rpb24odCxlKXt2YXIgbj0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi91c2VyX2F1dGhfdG9rZW5zIixvPXthdXRoX3Rva2VuczpKU09OLnN0cmluZ2lmeShlKX07cmV0dXJuIHUuQS5wb3N0KHt1cmw6bixzZXNzaW9uOnQscGFyYW1zOm99KS50aGVuKChmdW5jdGlvbigpe30pKX0sZmV0Y2hCYW5uZXJWaWV3OmZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1uJiYobj17fSk7dmFyIG89KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvYmFubmVycy8iK2UrIi9mZXRjaCIsaT17ZXZlbnRfbWV0YWRhdGE6SlNPTi5zdHJpbmdpZnkobil9O3JldHVybiB1LkEucG9zdCh7dXJsOm8sc2Vzc2lvbjp0LHBhcmFtczppfSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuKDAsQy5GeSkodC5iYW5uZXIpfSkpfSxmZXRjaENoZWNrbGlzdDpmdW5jdGlvbih0KXt2YXIgZT12b2lkIDA9PT10P3t9OnQsbj1lLnNlc3Npb24sbz1lLnJ1bGVzZXRJZCxpPWUudHJpZ2dlck1ldGhvZDtpZihuKXsoMCxkLkMyKSgiQXR0ZW1wdGluZyB0byBmZXRjaCBjaGVja2xpc3Qgd2l0aCBzZXNzaW9uIGRhdGEuIik7dmFyIGE9e3RyaWdnZXJfbWV0aG9kOml9O3JldHVybiB1LkEucG9zdCh7dXJsOigwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2NoZWNrbGlzdHMvIitvKyIvZmV0Y2giLHNlc3Npb246bixwYXJhbXM6YX0pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBtKFt0LmNoZWNrbGlzdF0pWzBdfSkpfX0sZmV0Y2hDcm9zc0RvbWFpblRva2VuOmZ1bmN0aW9uKHQsZSl7dmFyIG49KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvY3Jvc3NfZG9tYWluX3Rva2VuIixvPXthdWRpZW5jZTplfTtyZXR1cm4gdS5BLnBvc3Qoe3VybDpuLHNlc3Npb246dCxwYXJhbXM6byxoZWFkZXJzOnsiWC1JbnRlcmNvbS1YRC1SZXF1ZXN0IjoiMSJ9fSkudGhlbigoZnVuY3Rpb24odCl7dmFyIGU9dC54ZF90b2tlbixuPXQuZXhwaXJlc19hdDtpZigic3RyaW5nIiE9dHlwZW9mIGV8fDA9PT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgeGRfdG9rZW4gcmVzcG9uc2UiKTtyZXR1cm57eGRUb2tlbjplLGV4cGlyZXNBdDpufX0pKX0sZmV0Y2hNZXNzZW5nZXJTaGVldERhdGE6ZnVuY3Rpb24odCxlLG4sbyl7dmFyIGk9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvc2hlZXRzL29wZW4iLGE9e2FjdGlvbl9pZDpuLHVyaTplLHZhbHVlczpKU09OLnN0cmluZ2lmeShvKX07cmV0dXJuIHUuQS5wb3N0KHt1cmw6aSxzZXNzaW9uOnQscGFyYW1zOmF9KX0sZmV0Y2hNZXNzZW5nZXJTaGVldERhdGFXaXRoVG9rZW46ZnVuY3Rpb24odCxlLG4pe3ZhciBvPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL21lc3Nlbmdlcl9jYXJkX3ZpZXcvb3Blbl9zaGVldCIsaT17YWN0aW9uX2lkOmUsdG9rZW46dCx2YWx1ZXM6SlNPTi5zdHJpbmdpZnkobil9O3JldHVybiB1LkEucG9zdCh7dXJsOm8scGFyYW1zOml9KX0sZmV0Y2hTdXJ2ZXk6ZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwPT09dD97fTp0LG49ZS5zZXNzaW9uLG89ZS5ydWxlc2V0SWQsaT1lLnRyaWdnZXJNZXRob2QsYT1lLmlzUHJldmlldyxzPWUudG9rZW47aWYoIW4mJiFzKXJldHVybigwLGYuU2MpKCJBIHNlc3Npb24gb3IgYSB0b2tlbiBtdXN0IGJlIHN1cHBsaWVkIHdoZW4gZmV0Y2hpbmcgYSBzdXJ2ZXkiKSxQcm9taXNlLnJlamVjdCgibWlzc2luZ19zZXNzaW9uX2FuZF90b2tlbiIpO2lmKG4peygwLGYuU2MpKCJBdHRlbXB0aW5nIHRvIGZldGNoIHN1cnZleSB3aXRoIHNlc3Npb24gZGF0YS4iKTt2YXIgYz17dHJpZ2dlcl9tZXRob2Q6aSxpc19wcmV2aWV3OmF9O3JldHVybiB1LkEucG9zdCh7dXJsOigwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL3N1cnZleXMvIitvKyIvZmV0Y2giLHNlc3Npb246bixwYXJhbXM6Y30pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybigwLEMuSGQpKHQuc3VydmV5KX0pKX19LGZldGNoQWN0aXZlU3VydmV5UHJvZ3Jlc3M6ZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwPT09dD97fTp0LG49ZS5zZXNzaW9uLG89ZS5lbnRpdHlJZCxpPXtlbnRpdHlfaWQ6byxlbnRpdHlfdHlwZTplLmVudGl0eVR5cGV9LGE9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvc3VydmV5cy9mZXRjaF9hY3RpdmVfc3VydmV5IjtpZihuKXJldHVybigwLGYuU2MpKCJBdHRlbXB0aW5nIHRvIGZldGNoIGFjdGl2ZSBzdXJ2ZXkgcHJvZ3Jlc3Mgd2l0aCBpZCAiK28pLHUuQS5wb3N0KHt1cmw6YSxzZXNzaW9uOm4scGFyYW1zOml9KS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4oMCxDLkhkKSh0LnN1cnZleSl9KSl9LGZldGNoU3VydmV5Rm9yUHJldmlldzpmdW5jdGlvbih0KXt2YXIgZT12b2lkIDA9PT10P3t9OnQsbj1lLnNlc3Npb24sbz1lLnN1cnZleUlkLGk9e3N1cnZleV9pZDpvfSxhPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL3N1cnZleXMvZmV0Y2hfZm9yX3ByZXZpZXciO2lmKG4pcmV0dXJuKDAsZi5TYykoIkF0dGVtcHRpbmcgdG8gZmV0Y2ggc3VydmV5IHdpdGggc3VydmV5IGlkICIrbysiIGZvciBwcmV2aWV3IiksdS5BLnBvc3Qoe3VybDphLHNlc3Npb246bixwYXJhbXM6aX0pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybigwLEMuSGQpKHQuc3VydmV5KX0pKX0sZmV0Y2hTdXJ2ZXlGcm9tU25pcHBldDpmdW5jdGlvbih0KXt2YXIgZT12b2lkIDA9PT10P3t9OnQsbj1lLnNlc3Npb24sbz1lLnN1cnZleUlkLGk9ZS50b2tlbjtyZXR1cm4gbnx8aT9uPygoMCxmLlNjKSgiQXR0ZW1wdGluZyB0byBmZXRjaCBzdXJ2ZXkgZnJvbSBzbmlwcGV0IHdpdGggc2Vzc2lvbiBkYXRhLiIpLHUuQS5wb3N0KHt1cmw6KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvc3VydmV5cy8iK28rIi9mZXRjaF9mcm9tX3NuaXBwZXQiLHNlc3Npb246bixwYXJhbXM6e319KS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4oMCxDLkhkKSh0LnN1cnZleSl9KSkpOnZvaWQgMDooKDAsZi5TYykoIkEgc2Vzc2lvbiBvciBhIHRva2VuIG11c3QgYmUgc3VwcGxpZWQgd2hlbiBmZXRjaGluZyBhIHN1cnZleSIpLFByb21pc2UucmVqZWN0KCJtaXNzaW5nX3Nlc3Npb25fYW5kX3Rva2VuIikpfSxmZXRjaFRvdXI6ZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwPT09dD97fTp0LG49ZS5zZXNzaW9uLG89ZS50b3VySWQsaT1lLnRva2VuO2lmKCFuJiYhaSlyZXR1cm4oMCxwLms3KSgiQSBzZXNzaW9uIG9yIGEgdG9rZW4gbXVzdCBiZSBzdXBwbGllZCB3aGVuIGZldGNoaW5nIGEgdG91ciIpLFByb21pc2UucmVqZWN0KCJtaXNzaW5nX3Nlc3Npb25fYW5kX3Rva2VuIik7aWYobilyZXR1cm4oMCxwLms3KSgiQXR0ZW1wdGluZyB0byBmZXRjaCB0b3VyIHdpdGggc2Vzc2lvbiBkYXRhLiIpLHUuQS5wb3N0KHt1cmw6KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvdG91cnMvIitvKyIvZmV0Y2giLHNlc3Npb246bn0pLnRoZW4oQy5uZik7KDAscC5rNykoIkF0dGVtcHRpbmcgdG8gZmV0Y2ggdG91ciBmb3IgbWVzc2VuZ2VyIGNhcmQgaW4gZmFsbGJhY2sgc3RhdGUuIik7dmFyIGE9e3Rva2VuOml9O3JldHVybiB1LkEucG9zdCh7dXJsOigwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL3RvdXJzLyIrbysiL2ZldGNoX3dpdGhfdG9rZW4iLHBhcmFtczphfSkudGhlbihDLm5mKX0sZmlyZUNvbXBvc2VyU3VnZ2VzdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBuPWUuY29udmVyc2F0aW9uSWQsbz1lLnN1Z2dlc3Rpb24saT1lLmNsaWVudElkLGE9ZS5ib3RJbnRybyxzPWUucmVzb2x1dGlvbkJvdEJlaGF2aW9yVmVyc2lvbklkLGM9ZS5hcnRpY2xlVXJsLGw9dm9pZCAwPT09Yz9udWxsOmMsZj1lLnNuYXBzaG90SWQsZD12b2lkIDA9PT1mP251bGw6ZixwPW4/KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvY29udmVyc2F0aW9ucy8iK24rIi9yZXBseSI6KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvbWVzc2FnZXMiLGg9e2NvbXBvc2VyX3N1Z2dlc3Rpb246SlNPTi5zdHJpbmdpZnkobyksY2xpZW50X2Fzc2lnbmVkX3V1aWQ6aX07biYmKGguY29udmVyc2F0aW9uX2lkPW4pLGEmJihoLmJvdF9pbnRybz1hKSxzJiYoaC5yZXNvbHV0aW9uX2JvdF9iZWhhdmlvcl92ZXJzaW9uX2lkPXMpLGwmJihoLnNlYXJjaF9icm93c2U9ITApLGQmJihoLnNuYXBzaG90X2lkPWQpO3ZhciB2PXUuQS5wb3N0KHt1cmw6cCxzZXNzaW9uOnQscGFyYW1zOmgsY3VycmVudFVybDpsfSk7cmV0dXJuIG4/di50aGVuKE50KTp2LnRoZW4oTHQpfSxmaXJlVHJpZ2dlcjpmdW5jdGlvbih0LGUpe3ZhciBuPWUudHJpZ2dlcklkLG89ZS5jbGllbnRBc3NpZ25lZFVVSUQsaT0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi90cmlnZ2Vycy8iK24rIi9maXJlIixhPXtjbGllbnRfYXNzaWduZWRfdXVpZDpvfTtyZXR1cm4gdS5BLnBvc3Qoe3VybDppLHNlc3Npb246dCxwYXJhbXM6YX0pfSxnZXRBcnRpY2xlOmZ1bmN0aW9uKHQsZSxuLG8saSxhKXt2b2lkIDA9PT1vJiYobz0hMSk7dmFyIHM9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvYXJ0aWNsZXMvIitlLGM9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89e2NvbnZlcnNhdGlvbl9pZDp0LGJyb3dzZV9tb2RlOmV9O3JldHVybiBuJiYoby5oZWxwX2NlbnRlcl9pZD1uKSxyJiYoby5sYW5nPXIpLG99KG4sbyxpLGEpO3JldHVybiB1LkEucG9zdCh7dXJsOnMsc2Vzc2lvbjp0LHBhcmFtczpjfSkudGhlbihDLnJtKX0sZ2V0QXJ0aWNsZUJ5VVJMOmZ1bmN0aW9uKHQsZSxuKXt2YXIgbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9hcnRpY2xlcy91cmwiLGk9e3VybDplLGhlbHBfY2VudGVyX2lkOm59O3JldHVybiB1LkEucG9zdCh7dXJsOm8sc2Vzc2lvbjp0LHBhcmFtczppfSkudGhlbihDLnJtKX0sZ2V0QXJ0aWNsZVJlYWN0aW9uOmZ1bmN0aW9uKHQsZSxuLG8pe3ZhciBpPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2FydGljbGVzL2dldF9yZWFjdGlvbiIsYT17YXJ0aWNsZV9pZDplLGFydGljbGVfY29udGVudF9pZDpufTt1LkEucG9zdCh7dXJsOmksc2Vzc2lvbjp0LHBhcmFtczphfSkudGhlbigoZnVuY3Rpb24odCl7dD9vKG51bGwsdCk6bygpfSkpLmNhdGNoKChmdW5jdGlvbih0KXtvKHQpfSkpfSxnZXRDYXJkVmlldzpmdW5jdGlvbih0KXt2YXIgZT0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9tZXNzZW5nZXJfY2FyZF92aWV3LyIsbj17dG9rZW46dH07cmV0dXJuIHUuQS5wb3N0KHt1cmw6ZSxwYXJhbXM6bn0pfSxnZXRDb252ZXJzYXRpb246ZnVuY3Rpb24odCxlLG4pe3ZhciBvPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2NvbnZlcnNhdGlvbnMvIitlLGk9bi5zZWxmU2VydmVTdWdnZXN0aW9uc01hdGNoLGE9bi5jbGllbnRBc3NpZ25lZFV1aWQscz1uLnJlcXVlc3RPcmlnaW4sYz1uLm5leHVzQ29ubmVjdGlvblN0YXR1c3x8e30sbD1zPT09Z3QsZj12dCh7fSxpJiZ7c2VsZl9zZXJ2ZV9zdWdnZXN0aW9uc19tYXRjaDppfSxhJiZ7Y2xpZW50X2Fzc2lnbmVkX3V1aWQ6YX0scyYme3JlcXVlc3Rfb3JpZ2luOnN9LGwmJntzeW5jOmx9KTtyZXR1cm4gbCYmKGY9T2JqZWN0LmFzc2lnbih7fSxmLHtuZXh1c19jb25uZWN0aW9uX3N0YXR1czpKU09OLnN0cmluZ2lmeSh2dCh7fSxjLHtnbG9iYWxDb25uZWN0aW9uU3RhdGU6d2luZG93Lm5leHVzQ29ubmVjdGlvblN0YXRlfSkpLGxhc3RfYWRtaW5fcGFydF9jcmVhdGVkX2F0Om4ubGFzdEFkbWluUGFydENyZWF0ZWRBdCxsYXN0X2FkbWluX3BhcnRfaWQ6bi5sYXN0QWRtaW5QYXJ0SWR9KSksdS5BLnBvc3Qoe3VybDpvLHNlc3Npb246dCxwYXJhbXM6Zn0pLnRoZW4oTHQpfSxnZXRDb252ZXJzYXRpb25UcmFuc2NyaXB0VVJMOnRlLGdldENvbnZlcnNhdGlvbnM6ZnVuY3Rpb24odCxlKXt2YXIgbj1lLnNvdXJjZSxvPWUucGFnZSxpPWUucGVyUGFnZSxhPWUuc2VsZlNlcnZlU3VnZ2VzdGlvbnNNYXRjaCxzPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2NvbnZlcnNhdGlvbnMiLGM9e3BhZ2U6byxwZXJfcGFnZTppLHNvdXJjZTpuLHNlbGZfc2VydmVfc3VnZ2VzdGlvbnNfbWF0Y2g6YX07cmV0dXJuIHUuQS5wb3N0KHt1cmw6cyxzZXNzaW9uOnQscGFyYW1zOmN9KS50aGVuKE90KX0sZ2V0SG9tZURhdGE6ZnVuY3Rpb24odCl7dmFyIGU9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvaG9tZSI7cmV0dXJuIHUuQS5wb3N0KHt1cmw6ZSxzZXNzaW9uOnR9KS50aGVuKG5lKX0sZ2V0TWVzc2VuZ2VyQ2FudmFzQ29udGVudFdpdGhUb2tlbjpmdW5jdGlvbih0LGUpe3ZhciBuPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL21lc3Nlbmdlcl9jYXJkX3ZpZXcvbGl2ZV9jb250ZW50IixvPXt0b2tlbjp0LGNhbnZhc19pZDplfTtyZXR1cm4gdS5BLnBvc3Qoe3VybDpuLHBhcmFtczpvfSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5hc3NpZ24odCx7aWQ6ZX0pfSkpfSxnZXRNZXNzZW5nZXJDYW52YXNXaXRoQ29udGVudDpmdW5jdGlvbih0LGUsbil7dmFyIG89KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvbWVzc2VuZ2VyX2NhcmRzL2NvbnRlbnQiLGk9e2NhbnZhc19pZDplLHVyaTpufTtyZXR1cm4gJHQoaSksdS5BLnBvc3Qoe3VybDpvLHNlc3Npb246dCxwYXJhbXM6aX0pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKHQse2lkOmV9KX0pKX0sZ2V0VW5yZWFkQ29udmVyc2F0aW9uczpmdW5jdGlvbih0KXt2YXIgZT0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9jb252ZXJzYXRpb25zL3VucmVhZCI7cmV0dXJuIHUuQS5wb3N0KHt1cmw6ZSxzZXNzaW9uOnR9KS50aGVuKEF0KX0sbWFya0NvbnZlcnNhdGlvbkFzUmVhZDpmdW5jdGlvbih0LGUpe3ZhciBuPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2NvbnZlcnNhdGlvbnMvIitlKyIvcmVhZCI7cmV0dXJuIHUuQS5wb3N0KHt1cmw6bixzZXNzaW9uOnR9KS50aGVuKEx0KX0sb3V0Ym91bmRQcmV2aWV3OmZ1bmN0aW9uKHQsZSl7dmFyIG49KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvY3VzdG9tX2JvdHMvIitlKyIvb3V0Ym91bmRfcHJldmlldyI7cmV0dXJuIHUuQS5wb3N0KHt1cmw6bixzZXNzaW9uOnR9KX0sd29ya2Zsb3dQcmV2aWV3OmZ1bmN0aW9uKHQsZSl7dmFyIG49KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvd29ya2Zsb3dzLyIrZSsiL2J1aWxkX3ByZXZpZXciO3JldHVybiB1LkEucG9zdCh7dXJsOm4sc2Vzc2lvbjp0fSkudGhlbihrdCl9LHByb2dyZXNzVG91cjpmdW5jdGlvbih0LGUsbixvKXt2YXIgaT1PYmplY3QuYXNzaWduKHtzdGVwX2lkOm59LCgwLEMuUGMpKG8pKTtyZXR1cm4gdS5BLmZldGNoKHt1cmw6KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvdG91cnMvIitlKyIvcHJvZ3Jlc3MiLHNlc3Npb246dCxwYXJhbXM6aSxrZWVwYWxpdmU6ITB9KX0scXVpY2tSZXBseTpmdW5jdGlvbih0LGUsbixvLHMpe3ZhciBjPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2NvbnZlcnNhdGlvbnMvIitlKyIvcXVpY2tfcmVwbHkiLGw9KDAsQy5JNSkobixvLHMpLGY9eyJYLUNPTlRJTlVFLUlOVEVSQ09NLVRSQUNFIjoidHJ1ZSJ9O2lmKEYuZi5pc0VuYWJsZWQoKSl7dmFyIGQ9bmV3IEYuZigicXVpY2tfcmVwbHkiKTtyZXR1cm4gZC5zZXRBdHRyaWJ1dGVzKHsibmV4dXMuY29ubmVjdGlvbl9zdGF0ZSI6d2luZG93Lm5leHVzQ29ubmVjdGlvblN0YXRlfSksaS5fLndpdGgoYS51LnNldFNwYW4oaS5fLmFjdGl2ZSgpLGQuZ2V0Rmlyc3RUb2tlblNwYW4oKSksKGZ1bmN0aW9uKCl7cmV0dXJuIHUuQS5wb3N0KHt1cmw6YyxzZXNzaW9uOnQscGFyYW1zOmwsaGVhZGVyczpmfSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIGQuc2V0Q29tbWVudENyZWF0ZWRBdChlLHQuY3JlYXRlZF9hdCksTnQodCl9KSl9KSl9cmV0dXJuIHUuQS5wb3N0KHt1cmw6YyxzZXNzaW9uOnQscGFyYW1zOmwsaGVhZGVyczpmfSkudGhlbihOdCl9LHJlYWN0VG9CYW5uZXI6ZnVuY3Rpb24odCxlLG4sbyl7dmFyIGk9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvYmFubmVycy8iK2UrIi9yZWFjdCIsYT1PYmplY3QuYXNzaWduKHtyZWFjdGlvbjpvfSwoMCxDLkxvKShuKSk7cmV0dXJuIHUuQS5wb3N0KHt1cmw6aSxzZXNzaW9uOnQscGFyYW1zOmF9KX0scmVjb3JkSW50ZXJhY3Rpb25zOmZ1bmN0aW9uKHQsZSxuKXt2YXIgbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9jb252ZXJzYXRpb25zLyIrZSsiL3JlY29yZF9pbnRlcmFjdGlvbnMiLGk9e2ludGVyYWN0aW9uczpufTtyZXR1cm4gdS5BLnBvc3Qoe3VybDpvLHNlc3Npb246dCxwYXJhbXM6aX0pLnRoZW4oKGZ1bmN0aW9uKCl7fSkpfSxyZWNvcmROZXdzSXRlbVJlYWN0aW9uOmZ1bmN0aW9uKHQsZSxuKXt2YXIgbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9uZXdzLyIrZSsiL3JlYWN0IixpPXtyZWFjdGlvbl9pbmRleDpufTtyZXR1cm4gdS5BLnBvc3Qoe3VybDpvLHNlc3Npb246dCxwYXJhbXM6aX0pfSxyZWNvcmRBbnN3ZXJSZWFjdGlvbjpmdW5jdGlvbih0LGUsbil7dmFyIG89KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvYW5zd2Vycy8iK2UrIi9yZWFjdCIsaT17cmVhY3Rpb25faW5kZXg6bn07cmV0dXJuIHUuQS5wb3N0KHt1cmw6byxzZXNzaW9uOnQscGFyYW1zOml9KX0scmVjb3JkU21hcnRTdWdnZXN0aW9uSW1wcmVzc2lvbnM6ZnVuY3Rpb24odCxlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO3ZhciBuPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL3NtYXJ0X3N1Z2dlc3Rpb25faW1wcmVzc2lvbnMiLG89e2dyb3VwX3V1aWRzOmV9O3JldHVybiB1LkEuc2VuZEJlYWNvbih7dXJsOm4sc2Vzc2lvbjp0LHBhcmFtczpvfSkudGhlbigoZnVuY3Rpb24oKXt9KSwoZnVuY3Rpb24oKXt9KSl9LHJlY29yZFRvdXJGYWlsdXJlOmZ1bmN0aW9uKHQsZSxuLG8saSxhKXt2YXIgcz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi90b3Vycy8iK2UrIi9yZWNvcmRfZmFpbHVyZSIsYz17ZmFpbGVkX3NlbGVjdG9yOm8sZmFpbHVyZV91cmw6aSx0b3VyX3N0ZXBfaWQ6bn0sbD1PYmplY3QuYXNzaWduKGMsKDAsQy5QYykoYSkpO3JldHVybiB1LkEucG9zdCh7dXJsOnMsc2Vzc2lvbjp0LHBhcmFtczpsfSl9LHJ1bGVzZXRDb25kaXRpb25TYXRpc2ZpZWQ6ZnVuY3Rpb24odCxlLG4sbyxpLGEscyxjLGwpe3ZhciBmPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL3J1bGVzZXRzLyIrZSsiL21hdGNoIixkPXt1c2VyX2lkOm8sY29tcGFueV9pZDppLHJ1bGVzZXRfbGlua19pZDpuLHByZWRpY2F0ZXM6SlNPTi5zdHJpbmdpZnkoYSl9O3JldHVybiBzJiYoZC5jaGVja3BvaW50X2lkPXMpLGMmJihkLm5vdGlmaWNhdGlvbl9yZWNvcmRfaWQ9YyksbCYmKGQuZXh0cmFfY29udGV4dD1KU09OLnN0cmluZ2lmeShsKSksdS5BLnBvc3Qoe3VybDpmLHNlc3Npb246dCxwYXJhbXM6ZH0pLnRoZW4oKGZ1bmN0aW9uKHQpe3ZhciBlPXQuY3VzdG9tX2JvdCxuPXQuY29tcG9zZXJfc3VnZ2VzdGlvbnMscj10LnByZWRpY3RpdmVfYW5zd2Vyc19zdWdnZXN0aW9ucztyZXR1cm4gdnQoe30sZnVuY3Rpb24odCxlKXtpZihudWxsPT10KXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiB0KWlmKHt9Lmhhc093blByb3BlcnR5LmNhbGwodCxyKSl7aWYoLTEhPT1lLmluZGV4T2YocikpY29udGludWU7bltyXT10W3JdfXJldHVybiBufSh0LGl0KSx7Y3VzdG9tQm90OmUsY29tcG9zZXJTdWdnZXN0aW9uczpZdChuKSxhbnN3ZXJib3RQcmVkaWN0aXZlQ29udGV4dHM6cn0pfSkpfSxzZWFyY2hHaWZzOmZ1bmN0aW9uKHQsZSl7dmFyIG49KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvZ2lmcyIsbz17cXVlcnk6ZX07cmV0dXJuIHUuQS5wb3N0KHt1cmw6bixzZXNzaW9uOnQscGFyYW1zOm99KX0sc2VuZEJlYWNvbkV2ZW50OmJ0LHNub296ZUNvbnRlbnRPYmplY3RJbnN0YW5jZTpmdW5jdGlvbih0LGUsbixvKXt2YXIgaT0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9zbm9vemUiLGE9e29iamVjdF90eXBlOmUsb2JqZWN0X2lkOm4saW5zdGFuY2VfaWQ6b307cmV0dXJuIHUuQS5wb3N0KHt1cmw6aSxzZXNzaW9uOnQscGFyYW1zOmF9KX0sc3Bhd25IYW5kb3ZlckNvbnZlcnNhdGlvbjpmZSxzdGFydENvbnZlcnNhdGlvbkZyb21TdWdnZXN0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5zdWdnZXN0aW9uVXVpZCxvPWUuY2xpZW50QXNzaWduZWRVVUlELGk9ZS5zZWxmU2VydmVTdWdnZXN0aW9uc01hdGNoLGE9ZS5hcnRpY2xlVXJsLHM9dm9pZCAwPT09YT9udWxsOmEsYz1lLm1lc3Nlbmdlck9wZW5SZXF1ZXN0SWQsbD12b2lkIDA9PT1jP251bGw6YyxmPWUuY3VzdG9tQXR0cmlidXRlcyxkPXZvaWQgMD09PWY/bnVsbDpmLHA9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvY3VzdG9tX2JvdHMvdHJpZ2dlcl9pbmJvdW5kX2NvbnZlcnNhdGlvbiIsaD17aWQ6bixjbGllbnRfYXNzaWduZWRfdXVpZDpvLHNlbGZfc2VydmVfc3VnZ2VzdGlvbnNfbWF0Y2g6aX07cmV0dXJuIHMmJihoLnNlYXJjaF9icm93c2U9ITApLGwmJihoLm1lc3Nlbmdlcl9vcGVuX3JlcXVlc3RfaWQ9bCksZCYmKGguY3VzdG9tX2F0dHJpYnV0ZXM9SlNPTi5zdHJpbmdpZnkoZCkpLHUuQS5wb3N0KHt1cmw6cCxzZXNzaW9uOnQscGFyYW1zOmgsY3VycmVudFVybDpzfSkudGhlbihMdCl9LHN0b3BUb3VyOmZ1bmN0aW9uKHQsZSxuKXt2YXIgbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi90b3Vycy8iK2UrIi9zdG9wIixpPSgwLEMuUGMpKG4pO3JldHVybiB1LkEucG9zdCh7dXJsOm8sc2Vzc2lvbjp0LHBhcmFtczppfSl9LHN1Ym1pdFN1cnZleTpmdW5jdGlvbih0LGUsbixvLGksYSl7dmFyIHM9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvc3VydmV5cy8iK2UrIi9zdWJtaXQiLGM9e3N1cnZleV9wcm9ncmVzc19pZDpuLGN1cnJlbnRfc3RlcF9pZDpvLHJlc3BvbnNlczpKU09OLnN0cmluZ2lmeShpKSxpc19wcmV2aWV3OmF9O3JldHVybiB1LkEucG9zdCh7dXJsOnMsc2Vzc2lvbjp0LHBhcmFtczpjfSl9LGRpc21pc3NTdXJ2ZXk6ZnVuY3Rpb24odCxlLG4sbyl7dmFyIGk9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvc3VydmV5cy8iK2UrIi9kaXNtaXNzIixhPXtzdXJ2ZXlfcHJvZ3Jlc3NfaWQ6bixpc19wcmV2aWV3Om99O3JldHVybiB1LkEucG9zdCh7dXJsOmksc2Vzc2lvbjp0LHBhcmFtczphfSl9LHJlY29yZFZpZXdlZFN0YXQ6ZnVuY3Rpb24odCxlLG4pe3ZhciBvPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2NoZWNrbGlzdHMvIitlKyIvdmlldyIsaT17Y2hlY2tsaXN0X3Byb2dyZXNzX2lkOm59O3JldHVybiB1LkEucG9zdCh7dXJsOm8sc2Vzc2lvbjp0LHBhcmFtczppfSl9LHJlY29yZFRhc2tWaWV3OmZ1bmN0aW9uKHQsZSxuLG8pe3ZhciBpPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2NoZWNrbGlzdHMvIitlKyIvdmlld190YXNrIixhPXtjaGVja2xpc3RfcHJvZ3Jlc3NfaWQ6bixjaGVja2xpc3RfdGFza19pZDpvfTtyZXR1cm4gdS5BLnBvc3Qoe3VybDppLHNlc3Npb246dCxwYXJhbXM6YX0pfSxyZWNvcmRBY3Rpb25DbGljazpmdW5jdGlvbih0LGUsbixvKXt2YXIgaT0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9jaGVja2xpc3RzLyIrZSsiL2FjdGlvbl9jbGljayIsYT17Y2hlY2tsaXN0X3Byb2dyZXNzX2lkOm4sY2hlY2tsaXN0X3Rhc2tfaWQ6b307cmV0dXJuIHUuQS5mZXRjaCh7dXJsOmksc2Vzc2lvbjp0LHBhcmFtczphLG1ldGhvZDoiUE9TVCIsa2VlcGFsaXZlOiEwfSl9LHJlc2V0VG91cjpmdW5jdGlvbih0LGUpe3ZhciBuPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL3RvdXJzLyIrZSsiL3Jlc2V0IjtyZXR1cm4gdS5BLnBvc3Qoe3VybDpuLHNlc3Npb246dH0pfSxyZXNvbHZlQ2hlY2tsaXN0czpmdW5jdGlvbih0KXt2YXIgZT10LmNoZWNrbGlzdFByb2dyZXNzSWRzLG49dC5zZXNzaW9uLG89KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvY2hlY2tsaXN0cy9yZXNvbHZlIixpPXtjaGVja2xpc3RfcHJvZ3Jlc3NfaWRzOmV9O3JldHVybiB1LkEucG9zdCh7dXJsOm8sc2Vzc2lvbjpuLHBhcmFtczppfSl9LHNlYXJjaEFydGljbGVzOmZ1bmN0aW9uKHQsZSl7dmFyIG49KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvYXJ0aWNsZXMvc2VhcmNoIixvPXtwaHJhc2U6ZX07cmV0dXJuIHUuQS5wb3N0KHt1cmw6bixzZXNzaW9uOnQscGFyYW1zOm99KS50aGVuKEMueVcpfSxzdWJtaXRNZXNzZW5nZXJDYXJkQWN0aW9uOmZ1bmN0aW9uKHQsZSxuLG8pe3ZhciBpPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL21lc3Nlbmdlcl9jYXJkcyIsYT17YWN0aW9uX2lkOm4sdXJpOmUsdmFsdWVzOkpTT04uc3RyaW5naWZ5KG8pfTtyZXR1cm4gJHQoYSksdS5BLnBvc3Qoe3VybDppLHNlc3Npb246dCxwYXJhbXM6YX0pfSxzdWJtaXRNZXNzZW5nZXJDYXJkQWN0aW9uV2l0aFRva2VuOmZ1bmN0aW9uKHQsZSxuKXt2YXIgbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9tZXNzZW5nZXJfY2FyZF92aWV3L3N1Ym1pdCIsaT17YWN0aW9uX2lkOmUsdG9rZW46dCx2YWx1ZXM6SlNPTi5zdHJpbmdpZnkobil9O3JldHVybiB1LkEucG9zdCh7dXJsOm8scGFyYW1zOml9KX0sc3VibWl0U2hlZXQ6ZnVuY3Rpb24odCxlLG4pe3ZhciBvPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL3NoZWV0cy9zdWJtaXQiLGk9e3VyaTplLHNoZWV0X3ZhbHVlczpKU09OLnN0cmluZ2lmeShuKX07cmV0dXJuIHUuQS5wb3N0KHt1cmw6byxzZXNzaW9uOnQscGFyYW1zOml9KX0sc3VibWl0U2hlZXRXaXRoVG9rZW46ZnVuY3Rpb24odCxlKXt2YXIgbj0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9tZXNzZW5nZXJfY2FyZF92aWV3L3N1Ym1pdF9zaGVldCIsbz17dG9rZW46dCxzaGVldF92YWx1ZXM6SlNPTi5zdHJpbmdpZnkoZSl9O3JldHVybiB1LkEucG9zdCh7dXJsOm4scGFyYW1zOm99KX0sdHJhbnNjcmliZUF1ZGlvOnd0LGZldGNoVHRzQXVkaW86U3QsY29ubmVjdEZpblZvaWNlOkV0LHRyaWdnZXJUcmFuc2l0aW9uczpmdW5jdGlvbih0LGUsbil7dmFyIG89KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvb3BlcmF0b3IvdHJpZ2dlciIsaT0oMCxDLlhsKShlLG4pO3JldHVybiB1LkEucG9zdCh7dXJsOm8sc2Vzc2lvbjp0LHBhcmFtczppfSkudGhlbihMdCl9LHVwZGF0ZUNvbnZlcnNhdGlvbkZvcm06ZnVuY3Rpb24odCxlLG4sbyxpLGEpe3ZhciBzPWE/e2lkZW50aWZpZXI6byx2YWx1ZTppLGNvbnZlcnNhdGlvbl9wYXJ0X2lkOm4sdXBmcm9udF9lbWFpbF9jb2xsZWN0aW9uOmF9OntpZGVudGlmaWVyOm8sdmFsdWU6aSxjb252ZXJzYXRpb25fcGFydF9pZDpufSxjPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2NvbnZlcnNhdGlvbnMvIitlKyIvZm9ybSIsbD17Zm9ybV9wYXJhbXM6SlNPTi5zdHJpbmdpZnkocyl9O3JldHVybiB1LkEucG9zdCh7dXJsOmMsc2Vzc2lvbjp0LHBhcmFtczpsfSkudGhlbihMdCl9LHVwZGF0ZVBob25lTnVtYmVyOmZ1bmN0aW9uKHQsZSl7dmFyIG49KDAsci56aikoKS5hcGlfYmFzZSsiL2FwcHMvIit0LmFwcElkKyIvbm90aWZpY2F0aW9uX2NoYW5uZWxzL3Bob25lX251bWJlciIsbz17cGhvbmVfbnVtYmVyOmV9O3JldHVybiB1LkEucG9zdCh7dXJsOm4sc2Vzc2lvbjp0LHBhcmFtczpvfSl9LHZpc2l0b3JBdXRvTWVzc2FnZUNvbmRpdGlvblNhdGlzZmllZDpmdW5jdGlvbih0LGUpe3ZhciBuPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL21lc3NhZ2VzLyIrZS5pZCsiL21hdGNoIixvPXtwcmVkaWNhdGVzOkpTT04uc3RyaW5naWZ5KGUucHJlZGljYXRlcyl9O3JldHVybiB1LkEucG9zdCh7dXJsOm4sc2Vzc2lvbjp0LHBhcmFtczpvfSkudGhlbigoZnVuY3Rpb24odCl7aWYoISgwLHMuSSkodCkpcmV0dXJuIEx0KHQpfSkpfSxnZW5lcmF0ZUFydGljbGVDYXJkOmZ1bmN0aW9uKHQsZSl7dmFyIG49KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvYXJ0aWNsZXMvIitlKyIvY2FyZCI7cmV0dXJuIHUuQS5wb3N0KHt1cmw6bixzZXNzaW9uOnR9KX0sY3JlYXRlVGlja2V0OmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS50aWNrZXRUeXBlSWQsbz1lLmNvbnZlcnNhdGlvbklkLGk9ZS5hdHRyaWJ1dGVzLGE9dm9pZCAwPT09aT9bXTppLHM9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvdGlja2V0cy9jcmVhdGUiLGM9e3R5cGVfaWQ6bixhdHRyaWJ1dGVzOkpTT04uc3RyaW5naWZ5KGEpfTtyZXR1cm4gbyYmKGMuY29udmVyc2F0aW9uX2lkPW8pLHUuQS5wb3N0KHt1cmw6cyxzZXNzaW9uOnQscGFyYW1zOmN9KS50aGVuKEMuSjEpfSxmZXRjaE5ld3NJdGVtc0luTmV3c2ZlZWQ6ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PW4mJihuPTEpO3ZhciBvPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL25ld3MiLGk9e25ld3NmZWVkX2lkOmUscGFnZTpufTtyZXR1cm4gdS5BLnBvc3Qoe3VybDpvLHNlc3Npb246dCxwYXJhbXM6aX0pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybntuZXh0UGFnZTp0Lm5leHRfcGFnZSxuZXdzSXRlbXM6dC5uZXdzX2l0ZW1zPygwLEMuSUYpKHQubmV3c19pdGVtcyk6KDAsQy5JRikodCl9fSkpfSxub3RpZnlOZXdzZmVlZFZpc2l0OmZ1bmN0aW9uKHQsZSl7dmFyIG49KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvbmV3cy92aXNpdCIsbz17bmV3c2ZlZWRfaWQ6ZX07cmV0dXJuIHUuQS5wb3N0KHt1cmw6bixzZXNzaW9uOnQscGFyYW1zOm99KX0scG9zdEZvckxhdW5jaGVyU2V0dGluZ3M6ZnVuY3Rpb24odCl7cmV0dXJuIG90LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZmV0Y2hUb29sdGlwczpmdW5jdGlvbih0KXt2YXIgZT10LnNlc3Npb24sbj10LmN1c3RvbUF0dHJpYnV0ZXMsbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9lbWJlZGRlZC9jb250ZW50IjtyZXR1cm4gdS5BLnBvc3Qoe3VybDpvLHNlc3Npb246ZSxwYXJhbXM6e30sY3VzdG9tQXR0cmlidXRlczpufSl9LG1hcmtUb29sdGlwVmlld2VkOmZ1bmN0aW9uKHQsZSxuKXt2YXIgbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi90b29sdGlwcy8iK2UrIi92aWV3ZWQiLGk9e3Rvb2x0aXBfZ3JvdXBfaWQ6bn07cmV0dXJuIHUuQS5wb3N0KHt1cmw6byxzZXNzaW9uOnQscGFyYW1zOml9KX0sYnVpbGRUb29sdGlwR3JvdXBzOkMuVW0sYnVpbGRUb29sdGlwR3JvdXA6Qy5IZixmZXRjaE5ld3NJdGVtRGV0YWlsczpmdW5jdGlvbih0LGUpe3ZhciBuPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL25ld3MvIitlO3JldHVybiB1LkEucG9zdCh7dXJsOm4sc2Vzc2lvbjp0fSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuKDAsQy5iWSkodCl9KSl9LGZldGNoQW5zd2VyRGV0YWlsczpmdW5jdGlvbih0LGUpe3ZhciBuPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL2Fuc3dlcnMvIitlO3JldHVybiB1LkEucG9zdCh7dXJsOm4sc2Vzc2lvbjp0fSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuKDAsQy5CbykodCl9KSl9LGdldFRpY2tldFR5cGVzOmZ1bmN0aW9uKHQpe3ZhciBlPSgwLHIuemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL3RpY2tldHMvdHlwZXMiO3JldHVybiB1LkEucG9zdCh7dXJsOmUsc2Vzc2lvbjp0fSkudGhlbihHdCl9LGdldFRpY2tldHM6ZnVuY3Rpb24odCxlKXt2YXIgbj0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi90aWNrZXRzIixvPXt9O3JldHVybiBlJiYoby5wYWdlPWUpLHUuQS5wb3N0KHt1cmw6bixzZXNzaW9uOnQscGFyYW1zOm99KS50aGVuKEMuU1kpfSxnZXRUaWNrZXRzQ29udGVudDpmdW5jdGlvbih0KXt2YXIgZT0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi90aWNrZXRzX2NvbnRlbnQiO3JldHVybiB1LkEucG9zdCh7dXJsOmUsc2Vzc2lvbjp0fSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJue3RpY2tldHNQb3J0YWxVcmw6dC50aWNrZXRzX3BvcnRhbF91cmx8fG51bGwsY29udmVyc2F0aW9uc1BvcnRhbFVybDp0LmNvbnZlcnNhdGlvbnNfcG9ydGFsX3VybHx8bnVsbH19KSl9LGdldFRpY2tldERldGFpbHM6ZnVuY3Rpb24odCxlKXt2YXIgbj0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi90aWNrZXRzLyIrZTtyZXR1cm4gdS5BLnBvc3Qoe3VybDpuLHNlc3Npb246dH0pLnRoZW4oQy5KMSl9LGNvbXBsZXRlQ2hlY2tsaXN0VGFzazpmdW5jdGlvbih0KXt2YXIgZT10LmNoZWNrbGlzdElkLG49dC5jaGVja2xpc3RQcm9ncmVzc0lkLG89dC50YXNrSWQsaT10LnNlc3Npb24sYT0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9jaGVja2xpc3RzLyIrZSsiL2NvbXBsZXRlX3Rhc2siLHM9e2NoZWNrbGlzdF9wcm9ncmVzc19pZDpuLHRhc2tfaWQ6b307cmV0dXJuIHUuQS5wb3N0KHt1cmw6YSxzZXNzaW9uOmkscGFyYW1zOnN9KX0sYnVpbGRDaGVja2xpc3RzOm0sbG9hZENoZWNrbGlzdHM6ZnVuY3Rpb24odCl7dmFyIGU9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvY2hlY2tsaXN0cy9saXN0IjtyZXR1cm4gdS5BLnBvc3Qoe3VybDplLHNlc3Npb246dH0pfSxkaXNtaXNzQ2hlY2tsaXN0Tm90aWZpY2F0aW9uOmZ1bmN0aW9uKHQsZSxuKXt2YXIgbz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9jaGVja2xpc3RzLyIrZSsiL2Rpc21pc3Nfbm90aWZpY2F0aW9uIixpPXtjaGVja2xpc3RfcHJvZ3Jlc3NfaWQ6bn07cmV0dXJuIHUuQS5wb3N0KHt1cmw6byxzZXNzaW9uOnQscGFyYW1zOml9KX0sdXBkYXRlQ2hlY2tsaXN0Tm90aWZpY2F0aW9uRGV0YWlsczpmdW5jdGlvbih0LGUsbil7dmFyIG89KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvY2hlY2tsaXN0cy8iK2UrIi91cGRhdGVfbm90aWZpY2F0aW9uX2RldGFpbHMiLGk9e2NoZWNrbGlzdF9wcm9ncmVzc19pZDpufTtyZXR1cm4gdS5BLnBvc3Qoe3VybDpvLHNlc3Npb246dCxwYXJhbXM6aX0pfSxtYXJrVGlja2V0QXNSZWFkOmZ1bmN0aW9uKHQsZSl7dmFyIG49KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvdGlja2V0cy8iK2UrIi9yZWFkIjtyZXR1cm4gdS5BLnBvc3Qoe3VybDpuLHNlc3Npb246dH0pfSxqb2luQ29udmVyc2F0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIG49KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvY29udmVyc2F0aW9ucy8iK2UrIi9qb2luIjtyZXR1cm4gdS5BLnBvc3Qoe3VybDpuLHNlc3Npb246dH0pLnRoZW4oTHQpfSxmZXRjaEJhbm5lclByZXZpZXc6ZnVuY3Rpb24odCxlKXt2YXIgbj0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9iYW5uZXJzLyIrZSsiL2ZldGNoX3ByZXZpZXciO3JldHVybiB1LkEucG9zdCh7dXJsOm4sc2Vzc2lvbjp0fSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuKDAsQy5GeSkodC5iYW5uZXIpfSkpfSxmZXRjaFBvc3RQcmV2aWV3OmZ1bmN0aW9uKHQsZSl7dmFyIG49KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvbWVzc2FnZXMvIitlKyIvcG9zdF9wcmV2aWV3IjtyZXR1cm4gdS5BLnBvc3Qoe3VybDpuLHNlc3Npb246dH0pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpfSxzZW5kTWVzc2VuZ2VyT3BlbjpmdW5jdGlvbih0LGUsbixvLGkpe3ZhciBhPXt9O2UmJihhLmluaXRpYWxfdmlldz1lKSxpJiYoYS5mdWxsX3BhZ2VfbGF5b3V0PSEwKTt2YXIgcz0oMCxyLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9vcGVuIixjPW8/e2Zpbl9vbmx5X21lc3NlbmdlcjohMH06bnVsbDtyZXR1cm4gdS5BLnBvc3Qoe3VybDpzLHNlc3Npb246dCxwYXJhbXM6YSxjdXN0b21BdHRyaWJ1dGVzOmMsaXNJbnRlcnNlY3Rpb25Cb290ZWQ6bixyZXR1cm5JbnRlcmNvbVJlcXVlc3RJZDohMH0pLnRoZW4oKGZ1bmN0aW9uKHQpe3ZhciBlLG4scixvLGksYSx1LHM9dC5yZXNwb25zZSxjPXQuaW50ZXJjb21SZXF1ZXN0SWQsbD1zLmVycm9ycztpZihsKXJldHVybntlcnJvcnM6bCxpbnRlcmNvbVJlcXVlc3RJZDpjfTt2YXIgZixkLHAsaCx2PSgwLEguWikoKTtyZXR1cm4gRi5mLmluaXRUcmFjaW5nKCkse2Vycm9yczpudWxsLGNvbXBvc2VyU3VnZ2VzdGlvbnM6VyhzLmNvbXBvc2VyX3N1Z2dlc3Rpb25zKSxib3RJbnRybzpLKHMuYm90X2ludHJvKSxjbGllbnRzaWRlUnVsZXNldENvbmRpdGlvbnM6RyhzLmNsaWVudF9tYXRjaGVzKSx0ZXN0QXNzaWdubWVudHM6cy51c2VyX2Fzc2lnbm1lbnRzLHJlc29sdXRpb25Cb3RCZWhhdmlvclZlcnNpb25JZDpzLnJlc29sdXRpb25fYm90X2JlaGF2aW9yX3ZlcnNpb25faWQsYWNjZXNzVG9UZWFtbWF0ZUVuYWJsZWQ6cy5hY2Nlc3NfdG9fdGVhbW1hdGVfZW5hYmxlZCxhY3RpdmVCb3Q6KDAsQy5hSikocy5hY3RpdmVfYm90KSxhY3RpdmVBZG1pbnM6bnVsbD09KGU9cy5hY3RpdmVfYWRtaW5zKT92b2lkIDA6ZS5tYXAoQy5zVSksc2VsZlNlcnZlU3VnZ2VzdGlvbnNNYXRjaDpzLnNlbGZfc2VydmVfc3VnZ2VzdGlvbnNfbWF0Y2gsYWlTdWdnZXN0aW9uc0F2YWlsYWJsZTpzLmFpX3N1Z2dlc3Rpb25zX2F2YWlsYWJsZSxhaVN1Z2dlc3Rpb25Hcm91cHM6bnVsbCE9KG49bnVsbD09KHI9cy5haV9zdWdnZXN0aW9uX2dyb3Vwcyk/dm9pZCAwOnIubWFwKChmdW5jdGlvbih0KXtyZXR1cm57dGV4dDp0LnRleHQsZ3JvdXBVdWlkOnQuZ3JvdXBfdXVpZH19KSkpP246bnVsbCxjb21wb3NlclN0YXRlOigwLEMua0cpKHMuY29tcG9zZXJfc3RhdGUse292ZXJyaWRlQ29tcG9zZXJWaXNpYmlsaXR5OiEwPT09KG51bGw9PShvPXMuY29tcG9zZXJfc3VnZ2VzdGlvbnMpP3ZvaWQgMDpvLmNvbXBvc2VyX2Rpc2FibGVkKT8iaGlkZGVuIjpudWxsfSksZXhwZWN0YXRpb25TZXR0aW5nOlUocy5uZXdfY29udmVyc2F0aW9uKSxvcGVuSW5ib3VuZENvbnZlcnNhdGlvbklkczpzLm9wZW5faW5ib3VuZF9jb252ZXJzYXRpb25faWRzLHVzZXJUaWNrZXRFbWFpbEZvbGxvd1Vwc0VuYWJsZWQ6cy51c2VyX3RpY2tldF9lbWFpbF9mb2xsb3dfdXBzX2VuYWJsZWQsYXR0YWNobWVudFNldHRpbmdzOigwLEMudmspKHMuYXR0YWNobWVudF9zZXR0aW5ncyksY29udmVyc2F0aW9uU3RhdGVTeW5jU2V0dGluZ3M6KGY9cy5jb252ZXJzYXRpb25fc3RhdGVfc3luY19zZXR0aW5ncyx7ZW5hYmxlZDpudWxsIT0oZD1udWxsPT1mP3ZvaWQgMDpmLmVuYWJsZWQpJiZkLHN5bmNJbnRlcnZhbDpudWxsIT0ocD1udWxsPT1mP3ZvaWQgMDpmLnN5bmNfaW50ZXJ2YWwpP3A6MWU0LHN0YXJ0VGltZW91dDpudWxsIT0oaD1udWxsPT1mP3ZvaWQgMDpmLnN0YXJ0X3RpbWVvdXQpP2g6MWU0fSksaW50ZXJjb21SZXF1ZXN0SWQ6Yyxwcml2YWN5UG9saWN5Tm90aWNlOlYocy5wcml2YWN5X3BvbGljeV9ub3RpY2UpLHVzZXJIYXNFbWFpbDpzLnVzZXJfaGFzX2VtYWlsLHVzZXJQYXJ0VXhTdHlsZTpCKHMudXNlcl9wYXJ0X3V4X3N0eWxlKSxuZXdDb252ZXJzYXRpb25QYXJ0czpudWxsIT0oaT1zLm5ld19jb252ZXJzYXRpb24pJiZpLnBhcnRzJiYhdi5jb252ZXJzYXRpb25FbXB0eVN0YXRlRW5hYmxlZD9KKHMubmV3X2NvbnZlcnNhdGlvbi5wYXJ0cyk6bnVsbCxwb3dlcmVkQnk6eihzLnBvd2VyZWRfYnkpLHRlYW1JbnRybzpudWxsPT0oYT1zLm5ld19jb252ZXJzYXRpb24pP3ZvaWQgMDphLnRlYW1faW50cm8sc3BlY2lhbE5vdGljZTpudWxsPT0odT1zLm5ld19jb252ZXJzYXRpb24pP3ZvaWQgMDp1LnNwZWNpYWxfbm90aWNlLHJlY2VudE9wZW5JbmJvdW5kQ29udmVyc2F0aW9uOnMucmVjZW50X29wZW5faW5ib3VuZF9jb252ZXJzYXRpb24/THQocy5yZWNlbnRfb3Blbl9pbmJvdW5kX2NvbnZlcnNhdGlvbik6dm9pZCAwLGdlbmVyYXRlZFBsYW5Db252ZXJzYXRpb25JZDpzLmdlbmVyYXRlZF9wbGFuX2NvbnZlcnNhdGlvbl9pZCx1c2VyUm9sZTpGdChzLnVzZXJfcm9sZSl9fSkpfSxmZXRjaE5ld0NvbnZlcnNhdGlvbkNvbnRlbnQ6ZnVuY3Rpb24odCl7dmFyIGU9KDAsci56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvbmV3X2NvbnZlcnNhdGlvbl9jb250ZW50IjtyZXR1cm4gdS5BLnBvc3Qoe3VybDplLHNlc3Npb246dCxwYXJhbXM6e319KS50aGVuKChmdW5jdGlvbih0KXt2YXIgZSxuLHIsbztpZighdHx8IXQubmV3X2NvbnZlcnNhdGlvbilyZXR1cm4gbnVsbDt2YXIgaT0oMCxILlopKCk7cmV0dXJue25ld0NvbnZlcnNhdGlvblBhcnRzOm51bGwhPShlPXQubmV3X2NvbnZlcnNhdGlvbikmJmUucGFydHMmJiFpLmNvbnZlcnNhdGlvbkVtcHR5U3RhdGVFbmFibGVkP0oodC5uZXdfY29udmVyc2F0aW9uLnBhcnRzKTpudWxsLGNvbXBvc2VyU3VnZ2VzdGlvbnM6Vyh0LmNvbXBvc2VyX3N1Z2dlc3Rpb25zKSxjb21wb3NlclN0YXRlOigwLEMua0cpKHQuY29tcG9zZXJfc3RhdGUse292ZXJyaWRlQ29tcG9zZXJWaXNpYmlsaXR5OiEwPT09KG51bGw9PShuPXQuY29tcG9zZXJfc3VnZ2VzdGlvbnMpP3ZvaWQgMDpuLmNvbXBvc2VyX2Rpc2FibGVkKT8iaGlkZGVuIjpudWxsfSksYm90SW50cm86Syh0LmJvdF9pbnRybyksYWN0aXZlQm90OigwLEMuYUopKHQuYWN0aXZlX2JvdCksYWNjZXNzVG9UZWFtbWF0ZUVuYWJsZWQ6dC5hY2Nlc3NfdG9fdGVhbW1hdGVfZW5hYmxlZCxoYXNGaW46dC5oYXNfZmluLHBvd2VyZWRCeTp6KHQucG93ZXJlZF9ieSksdGVhbUludHJvOm51bGw9PShyPXQubmV3X2NvbnZlcnNhdGlvbik/dm9pZCAwOnIudGVhbV9pbnRybyxzcGVjaWFsTm90aWNlOm51bGw9PShvPXQubmV3X2NvbnZlcnNhdGlvbik/dm9pZCAwOm8uc3BlY2lhbF9ub3RpY2UsZXhwZWN0YXRpb25TZXR0aW5nOlUodC5uZXdfY29udmVyc2F0aW9uKSx1c2VyUm9sZTpGdCh0LnVzZXJfcm9sZSl9fSkpfSxnZXRUaWNrZXRGb3JtOmZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiBXdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGV4dGVuZEFub255bW91c1Nlc3Npb246cmUsYXV0aG9yaXplUmVhbHRpbWU6ZnVuY3Rpb24odCl7cmV0dXJuIGllLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZ2V0UmVhbHRpbWVDb25maWc6ZnVuY3Rpb24odCl7cmV0dXJuIGFlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZ2V0Q29tcG9zZXJTdWdnZXN0aW9uczpDdCxnZXRDdXN0b21FbW9qaXM6ZWUsZ2V0TmV4dXNDb25maWc6ZnVuY3Rpb24odCl7cmV0dXJuIHVlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZ2V0T25ib2FyZGluZ1BsYW46eCx0b2dnbGVUYXNrRG9uZTpFfSxwZT1kZX0sNDQyOTc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7ejpmdW5jdGlvbigpe3JldHVybiBUfSxBOmZ1bmN0aW9uKCl7cmV0dXJuIFB9fSk7dmFyIHI9bigzNTIwNiksbz1uKDM4OTkpLGk9bigyNTExNSksYT1uKDgzMTQ3KTt2YXIgdT1mdW5jdGlvbih0LGUsbixyLG8sdSxzKXtpZih2b2lkIDA9PT1zJiYocz0hMSksKDAsaS5VOCkodCkpe3ZhciBjPW5ldyBYTUxIdHRwUmVxdWVzdDtjLm9uZXJyb3I9ZnVuY3Rpb24oKXsoMCxhLlpRKSh7Y2F0ZWdvcnk6Imh0dHAtcmVxdWVzdCIsbWVzc2FnZToiTmV0d29yayByZXF1ZXN0IGZhaWxlZCIsZGF0YTp7dXJsOigwLGkuUFYpKHQpLG1ldGhvZDplfSxsZXZlbDoiZXJyb3IifSk7dmFyIG49bmV3IEVycm9yKCJOZXR3b3JrIHJlcXVlc3QgZmFpbGVkIGZvciBVUkw6ICIrdCk7dShuKX0sYy5vbmFib3J0PWZ1bmN0aW9uKCl7KDAsYS5aUSkoe2NhdGVnb3J5OiJodHRwLXJlcXVlc3QiLG1lc3NhZ2U6Ik5ldHdvcmsgcmVxdWVzdCBhYm9ydGVkIixkYXRhOnt1cmw6KDAsaS5QVikodCksbWV0aG9kOmV9LGxldmVsOiJ3YXJuaW5nIn0pLHUobmV3IEVycm9yKCJOZXR3b3JrIHJlcXVlc3QgYWJvcnRlZCIpKX0sYy5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgbj1jLnJlYWR5U3RhdGUscj1jLnN0YXR1cyxsPWMucmVzcG9uc2UsZj1udWxsO3MmJihmPWMuZ2V0UmVzcG9uc2VIZWFkZXIoIngtcmVxdWVzdC1pZCIpKSw0PT09biYmKHI+PTIwMCYmcjwzMDA/byhzP3tyZXNwb25zZTpsLGludGVyY29tUmVxdWVzdElkOmZ9OmwpOigoMCxhLlpRKSh7Y2F0ZWdvcnk6Imh0dHAtcmVxdWVzdCIsbWVzc2FnZToiSFRUUCByZXF1ZXN0IGZhaWxlZCIsZGF0YTp7dXJsOigwLGkuUFYpKHQpLG1ldGhvZDplLHN0YXR1czpyLGhhc1Jlc3BvbnNlOiEhbH0sbGV2ZWw6ImVycm9yIn0pLHUocz97cmVzcG9uc2U6bCxpbnRlcmNvbVJlcXVlc3RJZDpmfTpsfHxuZXcgRXJyb3IoIkhUVFAgcmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgIityKSkpKX0sYy5vcGVuKGUsdCwhMCksYy53aXRoQ3JlZGVudGlhbHM9ITAsT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24odCl7Yy5zZXRSZXF1ZXN0SGVhZGVyKHQsblt0XSl9KSksYy5zZW5kKHIpfWVsc2UgdSgoMCxpLlQ3KSh0KSl9LHM9ci5BeS5oYXNYaHIyU3VwcG9ydCgpLGM9ZnVuY3Rpb24odCxlLG4scil7aWYodm9pZCAwPT09ciYmKHI9ITEpLCEoMCxpLlU4KSh0KSl7dmFyIGE9KDAsaS5UNykodCk7cmV0dXJuKDAsby5qUCkoIkhUVFAgcmVxdWVzdCByZWplY3RlZDoiLGEubWVzc2FnZSksUHJvbWlzZS5yZWplY3QoYSl9aWYoLTEhPT10LmluZGV4T2YoIj8iKSl0cnl7dmFyIGM9bmV3IFVSTCh0KTtjLnNlYXJjaD0iIix0PWMudG9TdHJpbmcoKX1jYXRjaChhKXsoMCxvLmpQKSgiRmFpbGVkIHRvIHBhcnNlIFVSTCBmb3IgcXVlcnkgcGFyYW1ldGVyIHN0cmlwcGluZzoiLHQsYSk7dmFyIGw9dC5zcGxpdCgiPyIpO3Q9bFswXXx8dH1yZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8saSl7aWYoIXMpdGhyb3cgbmV3IEVycm9yKCJCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgWE1MSHR0cFJlcXVlc3QuIik7dSh0LCJQT1NUIixlLG4sbyxpLHIpfSkpfSxsPSJJZGVtcG90ZW5jeS1LZXkiO2Z1bmN0aW9uIGYodCl7cmV0dXJuIE1hdGguZmxvb3IoNDI5NDk2NzI5NiooMSt0KCkpKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpfXZhciBkPW4oMzYyNjYpLHA9big4NDA3NyksaD1uKDM4MDQyKSx2PW4oNzE0NDQpLHk9big5MTk2NCksZz1uKDQ0ODMpLG09big4MzE1OCksYj1uKDc4NjUzKSx3PW4oMzE0MDEpLF89bigxMTM4OCksUz1uKDg0MTkwKSx4PW4oNTc0NzEpLEU9WyJ1cmwiLCJzZXNzaW9uIiwicGFyYW1zIiwiY3VzdG9tQXR0cmlidXRlcyIsImN1cnJlbnRVcmwiLCJpZGVtcG90ZW5jeUtleSIsInJlZmVycmVyIiwiaW50ZXJuYWwiLCJpc0ludGVyc2VjdGlvbkJvb3RlZCIsInNob3VsZFNldFVzZXJEYXRhIiwicmV0dXJuSW50ZXJjb21SZXF1ZXN0SWQiLCJhbm9ueW1vdXNTZXNzaW9uRHVyYXRpb24iLCJoZWFkZXJzIl0sQz1bInVybCIsInNlc3Npb24iLCJwYXJhbXMiLCJjdXN0b21BdHRyaWJ1dGVzIiwiY3VycmVudFVybCIsImlkZW1wb3RlbmN5S2V5IiwicmVmZXJyZXIiLCJpbnRlcm5hbCIsImlzSW50ZXJzZWN0aW9uQm9vdGVkIiwic2hvdWxkU2V0VXNlckRhdGEiLCJtZXRob2QiLCJrZWVwYWxpdmUiLCJhbm9ueW1vdXNTZXNzaW9uRHVyYXRpb24iLCJoZWFkZXJzIl07ZnVuY3Rpb24gTygpe3JldHVybiBPPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sTy5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gQSh0LGUpe2lmKG51bGw9PXQpcmV0dXJue307dmFyIG49e307Zm9yKHZhciByIGluIHQpaWYoe30uaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpKXtpZigtMSE9PWUuaW5kZXhPZihyKSljb250aW51ZTtuW3JdPXRbcl19cmV0dXJuIG59dmFyIEk9MyxrPWZ1bmN0aW9uKCl7cmV0dXJuIHIuQXkuaXNNb2JpbGVCcm93c2VyKCk/Im1vYmlsZV93ZWIiOiJ3ZWIifSxMPXthbm9ueW1vdXNTZXNzaW9uOiIiLGhlbHBDZW50ZXJTZXNzaW9uOm51bGx9O2Z1bmN0aW9uIFQodCxlLG4sbyxhLHUscyxjLEUsQyl7dmFyIE8sQSxMO3ZvaWQgMD09PUUmJihFPSEwKSxvPW98fChudWxsPT0oTz0oMCxkLktRKSgpKT92b2lkIDA6Ty5ocmVmKSx1PXV8fCgwLGQuVVApKCksbz0oMCxpLnhIKShvKSx1PSgwLGkueEgpKHUpLHIuQXkuaXNOYXRpdmVNb2JpbGUoKSYmKG89dm9pZCAwKSxhPWF8fCh2b2lkIDA9PT1MJiYoTD1NYXRoLnJhbmRvbSksZihMKStmKEwpKTt2YXIgVD10LmFwcElkLGo9dC5hbm9ueW1vdXNTZXNzaW9uLFA9dC5zZXNzaW9uSWQsTj10LmFjdGl2ZUNvbXBhbnlJZCxNPXQubWVzc2VuZ2VyU3R5bGVJZCxSPSgoQT17YXBwX2lkOlQsdjpJLGc6IjY2YmI4MWEwNGI2NTg2ZDYxMGQzMDZiMzFmNTUzNWExNzUyNTNjMGMiLHM6UCxyOnUscGxhdGZvcm06aygpLGluc3RhbGxhdGlvbl90eXBlOigwLGIubCkoKSxpbnN0YWxsYXRpb25fdmVyc2lvbjooMCx3LkopKCl8fHZvaWQgMH0pW2xdPWEsQS5pbnRlcm5hbD1zP0pTT04uc3RyaW5naWZ5KHMpOiIiLEEuaXNfaW50ZXJzZWN0aW9uX2Jvb3RlZD0hIWMsQS5wYWdlX3RpdGxlPSgwLGQud1MpKCksQS51c2VyX2FjdGl2ZV9jb21wYW55X2lkPU4sQSk7aWYoKDAsdi51dCkoKSYmKFIud29ya2Zsb3dfcHJldmlld19zdGFydGVkPSEwLFIucHJldmlld193b3JrZmxvd19pbnN0YW5jZV9pZD0oMCx2LnV0KSgpKSwoMCx2LlpIKSgpJiYoUi53b3JrZmxvd19wcmV2aWV3X3N0YXJ0ZWQ9ITAsUi5yZXNvbHV0aW9uX2JvdF9iZWhhdmlvcl92ZXJzaW9uX2lkPSgwLHYuWkgpKCkpLCgwLGcuSUUpKCkmJihSLnByZXZpZXdfcGVyc29uYWxpdHlfc2V0dGluZ3M9SlNPTi5zdHJpbmdpZnkoKDAsZy5JRSkoKSkpLCgwLG0ueEUpKCkpe3ZhciBVPSgwLF8uTykoKDAsbS54RSkoKSk7Ui5maW5fcHJldmlld19zZXR0aW5ncz1KU09OLnN0cmluZ2lmeShVKX1pZigoMCxTLklSKSgpKXt2YXIgej0oMCxfLk8pKCgwLFMuSVIpKCkpO1IucHJldmlld19zZXR0aW5ncz1KU09OLnN0cmluZ2lmeSh6KX0oMCx5LnJOKSgpJiYoUi5maW5fZXhwZXJpbWVudGFsX2RlbW89SlNPTi5zdHJpbmdpZnkoKDAseS5yTikoKSkpLCgwLHgudSkoKSYmKFIubWVzc2VuZ2VyX2Vudmlyb25tZW50PSgwLHgudSkoKSksTSYmKFIubWVzc2VuZ2VyX3N0eWxlX2lkPU0pLEUmJihSLnVzZXJfZGF0YT1mdW5jdGlvbih0LGUpe3ZhciBuPXQudXNlcklkLHI9dC5lbWFpbCxvPXQudXNlckhhc2gsaT10LmFub255bW91c0lkLGE9dC5pbnRlcmNvbVVzZXJKd3QsdT1PYmplY3QuYXNzaWduKHtlbWFpbDpyLHVzZXJfaWQ6bix1c2VyX2hhc2g6byxhbm9ueW1vdXNfaWQ6aSxpbnRlcmNvbV91c2VyX2p3dDphfSxlKTtyZXR1cm4gZGVsZXRlIHUubmV3X2NvbnZlcnNhdGlvbl9hdHRyaWJ1dGVzLEpTT04uc3RyaW5naWZ5KHUpfSh0LG4pKSxudWxsIT09QyYmKFIuYW5vbnltb3VzX3Nlc3Npb25fZHVyYXRpb249Qyk7dmFyIEg9T2JqZWN0LmFzc2lnbihSLGUpO2lmKHZvaWQgMCE9PW8mJihILnJlZmVyZXI9byksaiYmKEguYW5vbnltb3VzX3Nlc3Npb249aiksVCl7dmFyIEY9cC5BLnJlYWQoKDAsaC5yNCkoVCkpO3ZvaWQgMCE9PUYmJihILmRldmljZV9pZGVudGlmaWVyPUYpfXJldHVybiBIfWZ1bmN0aW9uIGoodCl7dmFyIGU9W107cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByPXRbbl07bj1lbmNvZGVVUklDb21wb25lbnQobiksQXJyYXkuaXNBcnJheShyKT9yLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLnB1c2gobisiW109IitlbmNvZGVVUklDb21wb25lbnQodCkpfSkpOmUucHVzaChuKyI9IitlbmNvZGVVUklDb21wb25lbnQocikpfSkpLGUuam9pbigiJiIpfXZhciBQPXtwb3N0OmZ1bmN0aW9uKHQpe3ZhciBlPXQudXJsLG49dC5zZXNzaW9uLHI9dm9pZCAwPT09bj9MOm4sbz10LnBhcmFtcyxpPXZvaWQgMD09PW8/e306byxhPXQuY3VzdG9tQXR0cmlidXRlcyx1PXZvaWQgMD09PWE/bnVsbDphLHM9dC5jdXJyZW50VXJsLGw9dm9pZCAwPT09cz9udWxsOnMsZj10LmlkZW1wb3RlbmN5S2V5LGQ9dm9pZCAwPT09Zj9udWxsOmYscD10LnJlZmVycmVyLGg9dm9pZCAwPT09cD9udWxsOnAsdj10LmludGVybmFsLHk9dm9pZCAwPT09dj9udWxsOnYsZz10LmlzSW50ZXJzZWN0aW9uQm9vdGVkLG09dm9pZCAwPT09Zz9udWxsOmcsYj10LnNob3VsZFNldFVzZXJEYXRhLHc9dm9pZCAwPT09Ynx8YixfPXQucmV0dXJuSW50ZXJjb21SZXF1ZXN0SWQsUz12b2lkIDAhPT1fJiZfLHg9dC5hbm9ueW1vdXNTZXNzaW9uRHVyYXRpb24sQz12b2lkIDA9PT14P251bGw6eCxJPXQuaGVhZGVycyxrPXZvaWQgMD09PUk/e306SSxQPUEodCxFKTtpZighcilyZXR1cm4gUHJvbWlzZS5yZWplY3QoImh0dHBfcG9zdF9zZXNzaW9uX2VtcHR5Iik7dmFyIE49Tyh7fSxUKHIsaSx1LGwsZCxoLHksbSx3LEMpLFApLE09Tyh7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9LGspO3JldHVybiBjKGUsTSxqKE4pLFMpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBTP2Z1bmN0aW9uKHQpe3ZhciBlPXQucmVzcG9uc2Usbj10LmludGVyY29tUmVxdWVzdElkO3RyeXtyZXR1cm57cmVzcG9uc2U6SlNPTi5wYXJzZShlKSxpbnRlcmNvbVJlcXVlc3RJZDpufX1jYXRjaCh0KXtyZXR1cm57cmVzcG9uc2U6ZSxpbnRlcmNvbVJlcXVlc3RJZDpufX19KHQpOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gSlNPTi5wYXJzZSh0KX1jYXRjaChlKXtyZXR1cm4gdH19KHQpfSkpfSxzZW5kQmVhY29uOmZ1bmN0aW9uKHQpe3ZhciBlLHI9dC51cmwsbz10LnNlc3Npb24saT12b2lkIDA9PT1vP0w6byxhPXQucGFyYW1zLHU9dm9pZCAwPT09YT97fTphLHM9dC5jdXN0b21BdHRyaWJ1dGVzLGM9dm9pZCAwPT09cz9udWxsOnMsbD10LmN1cnJlbnRVcmwsZj12b2lkIDA9PT1sP251bGw6bCxkPXQuaWRlbXBvdGVuY3lLZXkscD12b2lkIDA9PT1kP251bGw6ZCxoPXQucmVmZXJyZXIsdj12b2lkIDA9PT1oP251bGw6aCx5PXQuaW50ZXJuYWwsZz12b2lkIDA9PT15P251bGw6eSxtPXQuaXNJbnRlcnNlY3Rpb25Cb290ZWQsYj12b2lkIDA9PT1tP251bGw6bSx3PXQuc2hvdWxkU2V0VXNlckRhdGEsXz12b2lkIDA9PT13fHx3LFM9dC5hbm9ueW1vdXNTZXNzaW9uRHVyYXRpb24seD12b2lkIDA9PT1TP251bGw6UyxFPXQuaGVhZGVycyxDPXZvaWQgMD09PUU/e306RTtpZighaSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoImh0dHBfcG9zdF9zZXNzaW9uX2VtcHR5Iik7dmFyIEE9VChpLHUsYyxmLHAsdixnLGIsXyx4KTtpZihudWxsIT0oZT1uYXZpZ2F0b3IpJiZlLnNlbmRCZWFjb24pe3JldHVybiBuYXZpZ2F0b3Iuc2VuZEJlYWNvbihyLG5ldyBCbG9iKFtqKEEpXSx7dHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn0pKT9Qcm9taXNlLnJlc29sdmUoKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIlNlbmRCZWFjb24gZmFpbGVkIGFuZCBubyBmYWxsYmFjayBhdmFpbGFibGUiKSl9dmFyIEk9Tyh7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9LEMpO3JldHVybiBuLmcuZmV0Y2gocix7aGVhZGVyczpJLGJvZHk6aihBKSxtZXRob2Q6IlBPU1QiLGtlZXBhbGl2ZTohMH0pLnRoZW4oKGZ1bmN0aW9uKCl7fSkpfSxmZXRjaDpmdW5jdGlvbih0KXt2YXIgZT10LnVybCxyPXQuc2Vzc2lvbixvPXZvaWQgMD09PXI/TDpyLGk9dC5wYXJhbXMsYT12b2lkIDA9PT1pP3t9OmksdT10LmN1c3RvbUF0dHJpYnV0ZXMscz12b2lkIDA9PT11P251bGw6dSxjPXQuY3VycmVudFVybCxsPXZvaWQgMD09PWM/bnVsbDpjLGY9dC5pZGVtcG90ZW5jeUtleSxkPXZvaWQgMD09PWY/bnVsbDpmLHA9dC5yZWZlcnJlcixoPXZvaWQgMD09PXA/bnVsbDpwLHY9dC5pbnRlcm5hbCx5PXZvaWQgMD09PXY/bnVsbDp2LGc9dC5pc0ludGVyc2VjdGlvbkJvb3RlZCxtPXZvaWQgMD09PWc/bnVsbDpnLGI9dC5zaG91bGRTZXRVc2VyRGF0YSx3PXZvaWQgMD09PWJ8fGIsXz10Lm1ldGhvZCxTPXZvaWQgMD09PV8/IlBPU1QiOl8seD10LmtlZXBhbGl2ZSxFPXZvaWQgMCE9PXgmJngsST10LmFub255bW91c1Nlc3Npb25EdXJhdGlvbixrPXZvaWQgMD09PUk/bnVsbDpJLFA9dC5oZWFkZXJzLE49dm9pZCAwPT09UD97fTpQLE09QSh0LEMpO2lmKCFvKXJldHVybiBQcm9taXNlLnJlamVjdCgiaHR0cF9wb3N0X3Nlc3Npb25fZW1wdHkiKTt2YXIgUj1PKHt9LFQobyxhLHMsbCxkLGgseSxtLHcsayksTSksVT1PKHsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn0sTik7cmV0dXJuIG4uZy5mZXRjaChlLHtoZWFkZXJzOlUsYm9keTpqKFIpLG1ldGhvZDpTLGtlZXBhbGl2ZTpFfSl9fX0sNTI2NzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtBUDpmdW5jdGlvbigpe3JldHVybiBzfSxObDpmdW5jdGlvbigpe3JldHVybiBjfSxQaDpmdW5jdGlvbigpe3JldHVybiBhfSxkdTpmdW5jdGlvbigpe3JldHVybiBpfSxpRDpmdW5jdGlvbigpe3JldHVybiB1fX0pO3ZhciByPW4oNjk3NDQpO2Z1bmN0aW9uIG8oKXtyZXR1cm4gbz1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LG8uYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIGkodCl7dmFyIGU9dC5jb252ZXJzYXRpb25JZCxuPXQucGFydElkLG89dC5pdGVtLGk9dC5sYXlvdXQsYT17Y29udmVyc2F0aW9uX2lkOmUscGFydF9pZDpuLGNhcm91c2VsX2l0ZW1faWQ6by5pZCxjYXJvdXNlbF9pdGVtX3RpdGxlOm8udGl0bGUsY2Fyb3VzZWxfaXRlbV91cmw6by51cmwsaGFzX2ltYWdlOiEhby5pbWFnZSxsYXlvdXQ6aX07KDAsci5BNSkoImNsaWNrZWQiLCJjYXJvdXNlbF9jYXJkIiwibWVzc2VuZ2VyIiwiaW5fY29udmVyc2F0aW9uIixhKSwoMCxyLnNxKSgiY2Fyb3VzZWxfY2FyZF9jbGlja2VkIixhLCEwKX1mdW5jdGlvbiBhKHQpe3ZhciBlPXQuY29udmVyc2F0aW9uSWQsbj10LnBhcnRJZCxpPXQuaXRlbXMsYT10LmxheW91dCx1PWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pKSxzPXtjb252ZXJzYXRpb25faWQ6ZSxwYXJ0X2lkOm4sY2Fyb3VzZWxfaXRlbV9jb3VudDppLmxlbmd0aCxjYXJvdXNlbF9pdGVtX2lkczp1LGxheW91dDphfTsoMCxyLkE1KSgidmlld2VkIiwiY2Fyb3VzZWxfY2FyZCIsIm1lc3NlbmdlciIsImluX2NvbnZlcnNhdGlvbiIscyksKDAsci5zcSkoImNhcm91c2VsX2NhcmRfdmlld2VkIixvKHt9LHMse2Nhcm91c2VsX2l0ZW1faWRzOnUuam9pbigiLCIpfSksITApfWZ1bmN0aW9uIHUodCl7dmFyIGU9dC5jb252ZXJzYXRpb25JZCxuPXQucGFydElkLG89dC5pdGVtLGk9dC5sYXlvdXQsYT17Y29udmVyc2F0aW9uX2lkOmUscGFydF9pZDpuLGNhcm91c2VsX2l0ZW1faWQ6by5pZCxjYXJvdXNlbF9pdGVtX3RpdGxlOm8udGl0bGUsY2Fyb3VzZWxfaXRlbV91cmw6by51cmwsbGF5b3V0Oml9OygwLHIuQTUpKCJjbGlja2VkIiwiY2Fyb3VzZWxfY2FyZF9jdGEiLCJtZXNzZW5nZXIiLCJpbl9jb252ZXJzYXRpb24iLGEpLCgwLHIuc3EpKCJjYXJvdXNlbF9jYXJkX2N0YV9jbGlja2VkIixhLCEwKX1mdW5jdGlvbiBzKHQpeygwLHIuc3EpKCJtZXNzZW5nZXJfYXV0b19leHBhbmRlZF9ieV9jYXJvdXNlbCIse2NvbnZlcnNhdGlvbl9pZDp0fSwhMCl9ZnVuY3Rpb24gYyh0KXsoMCxyLnNxKSgibWVzc2VuZ2VyX2NvbGxhcHNlZF9hZnRlcl9jYXJvdXNlbCIse2NvbnZlcnNhdGlvbl9pZDp0fSwhMCl9fSw3ODU1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0E6ZnVuY3Rpb24oKXtyZXR1cm4gYX19KTt2YXIgcj1uKDk4MDU0KSxvPSgwLHIuQXkpKCJzdmciLHt0YXJnZXQ6ImUxd2MxaXZxMCJ9KSgid2lkdGg6MTJweDtoZWlnaHQ6MTJweDtmaWxsOiIsKDAsci53NCkoInRleHRFcnJvciIpLCI7IiksaT1uKDc0ODQ4KTtmdW5jdGlvbiBhKCl7cmV0dXJuKDAsaS5qc3gpKG8se2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLHZpZXdCb3g6IjAgMCAxMiAxMiIsY2hpbGRyZW46KDAsaS5qc3gpKCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGNsaXBSdWxlOiJldmVub2RkIixmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik02IDExLjI1QTUuMjUgNS4yNSAwIDEwNiAuNzVhNS4yNSA1LjI1IDAgMDAwIDEwLjV6bTAtNC41NjNhLjUyNi41MjYgMCAwMS0uNTIyLS40NjVMNS4xNyAzLjU1NmEuODM2LjgzNiAwIDExMS42NiAwbC0uMzA4IDIuNjY2QS41MjYuNTI2IDAgMDE2IDYuNjg3em0wIDIuNjg4YS45MTYuOTE2IDAgMDEtLjkzOC0uOTM4YzAtLjUzNS40MDMtLjkzNy45MzgtLjkzNy41MzUgMCAuOTM4LjQwMi45MzguOTM4QS45MTYuOTE2IDAgMDE2IDkuMzc0eiJ9KX0pfX0sNjMyOTU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDc0ODQ4KTtlLkE9ZnVuY3Rpb24oKXtyZXR1cm4oMCxyLmpzeCkoInN2ZyIse2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLHZpZXdCb3g6IjAgMCAxNiAxOCIsY2hpbGRyZW46KDAsci5qc3gpKCJwYXRoIix7ZDoiTTE0LjE1NCA2LjkxOGwtLjAwNC4wMDMuMDAxLS4wMDQtMy4yODcgMy4yODYtLjAwNi0uMDA1LTMuNTc0IDMuNTc0Yy0uMDE2LjAxNy0uMDMuMDM2LS4wNDguMDUzbC0uMDUuMDQ3LS4wNDMuMDQxdi0uMDAyYy0xLjE2NyAxLjA3LTIuNjkyIDEuMzMxLTMuODIzLjItMS4xMy0xLjEzLS44OS0yLjY3Ny4xOC0zLjg0M2wtLjAwNS0uMDA0LjA3NC0uMDczLjAxNi0uMDE4Yy4wMDYtLjAwNS4wMTItLjAwOS4wMTctLjAxNmw2LjA1My02LjA1My43NjEuNzYtNi4wNTMgNi4wNTQtLjAyOS4wMjh2LjAwMWwtLjAwNS4wMDQtLjA3My4wNzRjLjAxMS0uMDEuMDI1LS4wMTguMDM1LS4wMy0uNjg4Ljc1LS45MyAxLjYzNi0uMjEgMi4zNTYuNzIuNzIgMS41ODMuNDU2IDIuMzMzLS4yMzJsLS4wMy4wMzQuMDQtLjA0Mi4wMS0uMDA4LjAwOC0uMDA5LjAzMy0uMDMuMDMxLS4wMzQuMDEtLjAwOS4wMDctLjAwOSA1LjAwNC01LjAwMy4wMDUuMDA2IDEuODU4LTEuODU5YzEuMjIzLTEuMjE4IDEuNTEtMi45MTMuMjkxLTQuMTMyQzEyLjQ2Mi44MDYgMTAuNDE0Ljc0IDkuMTk1IDEuOTU4TDIuMjQ4IDguOTA1Yy4wMDMgMCAuMDA2LS4wMDIuMDA4LS4wMDQtMS42MjUgMS42NjctMS41NDIgNC40My4xMDMgNi4wNzQgMS42NDYgMS42NDYgNC40NzQgMS43OTUgNi4xNDEuMTctLjAwMy4wMDItLjAwNC4wMDgtLjAwOC4wMTJsLjA0Ny0uMDQ3IDYuMDUzLTYuMDU0LjA0Mi0uMDQyLjc0My43OC0uMDI1LjAyMS4wMDEuMDAyLTYuMDUgNi4wNS0uMDAyLjAwMi0uMDAyLjAwMS0uMDQ2LjA0NmgtLjAwMmMtMi4wOTQgMi4wNC01LjU3OCAxLjg5NC03LjY1Mi0uMTgtMi4wNDktMi4wNDktMi4xNS01LjQwNy0uMTgzLTcuNTA1bC0uMDA2LS4wMDVoLS4wMDJsLjA3Ni0uMDc4IDYuOTQzLTYuOTQ0LjAwMy0uMDAyLjAwNC0uMDA1YzEuNjQxLTEuNjQgNC4zNjctMS41NzQgNi4wMDguMDY2IDEuNjQgMS42NDIgMS4zNTMgNC4wMTQtLjI4OCA1LjY1NXoiLGZpbGxSdWxlOiJldmVub2RkIn0pfSl9fSwzNzg5MTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtBOmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSk7dmFyIHI9big3MzM1MSksbz1uKDU0NzI2KSxpPW4oNzQ4NDgpO2Z1bmN0aW9uIGEodCl7dmFyIGU9dC5kaXNhYmxlZCxuPXQubG9hZGluZztyZXR1cm4oMCxpLmpzeCkoci5iLHsiYXJpYS1oaWRkZW4iOiJ0cnVlIixkaXNhYmxlZDplLGlzTG9hZGluZzpuLGNoaWxkcmVuOigwLGkuanN4KShvLkEse30pfSl9fSw1Njk2MDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtBOmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSk7dmFyIHI9bigyOTgyOCksbz1uKDY3OTc5KSxpPW4oNzQ4NDgpO2Z1bmN0aW9uIGEoKXt2YXIgdD0oMCxvLklzKSgpO3JldHVybigwLGkuanN4KShyLlgse2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLGN1c3RvbWlzYXRpb246dCxjaGlsZHJlbjooMCxpLmpzeCkoInBhdGgiLHtkOiJNMSA1LjQ4NWw1LjE5NCA0LjcwNkwxMy4zNi44NzQiLHN0cm9rZVdpZHRoOiIyLjUiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIn0pfSl9fSwzNjQ0NzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtBOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIHI9bigxNDQzKSxvPW4oNzQ4NDgpO2Z1bmN0aW9uIGkoKXtyZXR1cm4oMCxvLmpzeCkoci5kLHtmb2N1c2FibGU6ImZhbHNlIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIix3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIsY2hpbGRyZW46KDAsby5qc3gpKCJwYXRoIix7ZDoiTTcuMzU3IDEuMDcxYy4zNC0uMDM1LjY3OS0uMDcxLjk4Mi0uMDcxIDMgMCA2LjMwNCAyLjA1NCA2LjYyNSA1LjU5LjAxOC4yMTQuMDM2LjQyOC4wMzYuNjQyIDAgMy4wNTQtMi41MTggNi4xNzktNi4zNTcgNi42OTdBNi45NTggNi45NTggMCAwIDEgNy43NSAxNGMtLjM1NyAwLS4zNTcgMC0uNzUtLjA3MS0uOTEgMS4xNzgtMS45ODIgMS40ODItMy4xNiAxLjY5NmEzLjE4NCAzLjE4NCAwIDAgMS0uNTM2LjA1NGMtLjMwNCAwLS43MzMtLjE0My0uNTM2LS4zNC45MjgtLjc4NSAxLjAzNi0xLjMwMyAxLjAzNi0yLjIxNCAwLS4wOSAwLS4xNzktLjAxOC0uMjY4LTEuNjI1LTEuMTA3LTIuNTM2LTIuNTcxLTIuNzUtNC40NDZBNy43NTMgNy43NTMgMCAwIDEgMSA3Ljc2OEMxIDQuNzE0IDMuNTE4IDEuNTg5IDcuMzU3IDEuMDd6In0pfSl9fSwxMzgwODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtBOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIHI9big2ODk5Niksbz1uKDc0ODQ4KTtmdW5jdGlvbiBpKCl7cmV0dXJuKDAsby5qc3gpKHIuTix7Zm9jdXNhYmxlOiJmYWxzZSIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsd2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46KDAsby5qc3gpKCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJNMTMuOTMzIDMuMDlhLjM1LjM1IDAgMCAwLS40OTUuMDI2bC03LjIzNiA4LjAxMi0zLjc1Ny0zLjM5M2EuMzUuMzUgMCAwIDAtLjQ5NS4wMjVsLS44Ni45NTFhLjM1LjM1IDAgMCAwIC4wMjYuNDk1bDQuOTYgNC40OGEuMzQuMzQgMCAwIDAgLjE3LjA4Mi4zNDYuMzQ2IDAgMCAwIC4zNC0uMTA3bDguMzI0LTkuMjE3YS4zNS4zNSAwIDAgMC0uMDI2LS40OTRsLS45NTEtLjg2eiJ9KX0pfX0sNTIxNjU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDU5NDc3KSxvPW4oNzQ4NDgpO2UuQT1mdW5jdGlvbigpe3JldHVybigwLG8uanN4KShyLlUse2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLGNoaWxkcmVuOigwLG8uanN4KSgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGw6Im5vbmUiLGZpbGxSdWxlOiJldmVub2RkIixjaGlsZHJlbjooMCxvLmpzeCkoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgtMzQwLjAwMDAwMCwgLTMyLjAwMDAwMCkiLGZpbGw6ImN1cnJlbnRDb2xvciIsY2hpbGRyZW46KDAsby5qc3gpKCJwb2x5Z29uIix7cG9pbnRzOiIzNTAuNjU2NTM3IDQ0IDM0NiAzOS4zNDM0NjMgMzQxLjM0MzQ2MyA0NCAzNDAgNDIuNjU2NTM3IDM0NC42NTY1MzcgMzggMzQwIDMzLjM0MzQ2MyAzNDEuMzQzNDYzIDMyIDM0NiAzNi42NTY1MzcgMzUwLjY1NjUzNyAzMiAzNTIgMzMuMzQzNDYzIDM0Ny4zNDM0NjMgMzggMzUyIDQyLjY1NjUzNyJ9KX0pfSl9KX19LDE4Njg0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0E6ZnVuY3Rpb24oKXtyZXR1cm4gaX19KTt2YXIgcj1uKDc0ODQ4KTtmdW5jdGlvbiBvKCl7cmV0dXJuIG89T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxvLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBpKHQpe3JldHVybigwLHIuanN4KSgic3ZnIixvKHtmb2N1c2FibGU6ImZhbHNlIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIix3aWR0aDoiOCIsaGVpZ2h0OiI4Iix2aWV3Qm94OiIwIDAgOCA4IixmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcifSx0LHtjaGlsZHJlbjooMCxyLmpzeCkoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGQ6Ik04IDcuMjMyNTFMNy4yMzI1MSA4TDQgNC43Njc0OUwwLjc2NzQ5MiA4TDAgNy4yMzI1MUwzLjIzMjUxIDRMMCAwLjc2NzQ5MkwwLjc2NzQ5MiAwTDQgMy4yMzI1MUw3LjIzMjUxIDBMOCAwLjc2NzQ5Mkw0Ljc2NzQ5IDRMOCA3LjIzMjUxWiIsZmlsbDoiY3VycmVudENvbG9yIn0pfSkpfX0sNzUzNTM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDc0ODQ4KTtlLkE9ZnVuY3Rpb24oKXtyZXR1cm4oMCxyLmpzeCkoInN2ZyIse2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLHZpZXdCb3g6IjAgMCAxOCAxOCIsY2hpbGRyZW46KDAsci5qc3gpKCJwYXRoIix7ZDoiTTkgMGE5IDkgMCAxIDEgMCAxOEE5IDkgMCAwIDEgOSAwem0wIDFDNC41ODkgMSAxIDQuNTg5IDEgOXMzLjU4OSA4IDggOCA4LTMuNTg5IDgtOC0zLjU4OS04LTgtOHpNNSA2Ljk5OWExIDEgMCAxIDEgMi4wMDIuMDA0QTEgMSAwIDAgMSA1IDYuOTk5em01Ljk5OSAwYTEuMDAyIDEuMDAyIDAgMCAxIDIuMDAxIDAgMSAxIDAgMSAxLTIuMDAxIDB6TTguOTU5IDEzLjVjLS4wODYgMC0uMTczLS4wMDItLjI2LS4wMDctMi40NC0uMTMyLTQuMDI0LTIuMDk5LTQuMDktMi4xODJsLS4zMS0uMzkyLjc4MS0uNjIuMzEyLjM5Yy4wMTQuMDE3IDEuMzgyIDEuNzAzIDMuMzcgMS44MDYgMS4zMDYuMDcyIDIuNjEtLjU1NCAzLjg4Mi0xLjg0NmwuMzUxLS4zNTYuNzEyLjcwMi0uMzUuMzU2Yy0xLjQwNyAxLjQyNy0yLjg4NiAyLjE1LTQuMzk4IDIuMTV6IixmaWxsUnVsZToiZXZlbm9kZCJ9KX0pfX0sNTE2Mzg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDc0ODQ4KTtlLkE9ZnVuY3Rpb24oKXtyZXR1cm4oMCxyLmpzeCkoInN2ZyIse2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLGNoaWxkcmVuOigwLHIuanN4cykoImciLHtmaWxsOiJub25lIixmaWxsUnVsZToiZXZlbm9kZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpbKDAsci5qc3gpKCJwYXRoIix7ZDoiTTkgMTAuOTk1VjUuNjcyTTE2LjY1MiAxNS42NTJIMS4zNDhMOSAuMzQ4eiIsc3Ryb2tlTGluZWNhcDoicm91bmQifSksKDAsci5qc3gpKCJwYXRoIix7ZDoiTTkuMzQ4IDEzLjIxN2EuMzQ4LjM0OCAwIDEgMS0uNjk2IDAgLjM0OC4zNDggMCAwIDEgLjY5NiAweiJ9KV19KX0pfX0sNTA4MDQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUse0FJOmZ1bmN0aW9uKCl7cmV0dXJuIFNvfSxBSUN1cnZlZDpmdW5jdGlvbigpe3JldHVybiB4by5BfSxBY3Rpdml0eTpmdW5jdGlvbigpe3JldHVybiBOb30sQWxlcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5BfSxBcHA6ZnVuY3Rpb24oKXtyZXR1cm4gVG99LEFydGljbGU6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sQXJ0aWNsZUZlZWRiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHBlfSxBcnRpY2xlSWNvbjpmdW5jdGlvbigpe3JldHVybiBlZX0sQXJ0aWNsZU9wZW5Cb29rOmZ1bmN0aW9uKCl7cmV0dXJuIG9lfSxBcnRpY2xlT3BlbkJvb2tPdXRsaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIGNlfSxBc2tRdWVzdGlvbjpmdW5jdGlvbigpe3JldHVybiBmfSxBc2tRdWVzdGlvblNxdWFyZTpmdW5jdGlvbigpe3JldHVybiBofSxBdHRhY2hlbWVudDpmdW5jdGlvbigpe3JldHVybiB2LkF9LEF0dGFjaG1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gVXJ9LEJlbGw6ZnVuY3Rpb24oKXtyZXR1cm4ga3J9LEJvdW5jZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gem99LEJ1dHRvblBpbGw6ZnVuY3Rpb24oKXtyZXR1cm4gRG99LEJ1dHRvblN1Ym1pdDpmdW5jdGlvbigpe3JldHVybiBtLkF9LEJ1dHRvblN1Y2Nlc3M6ZnVuY3Rpb24oKXtyZXR1cm4gYi5BfSxDYWxlbmRhcjpmdW5jdGlvbigpe3JldHVybiB3ZS5BfSxDaGF0QnViYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHcuQX0sQ2hhdFdpdGhVczpmdW5jdGlvbigpe3JldHVybiB4fSxDaGVjazpmdW5jdGlvbigpe3JldHVybiBFLkF9LENoZWNrU2xpbTpmdW5jdGlvbigpe3JldHVybiBPZS5BfSxDaGV2cm9uQmFjazpmdW5jdGlvbigpe3JldHVybiBTcn0sQ2hldnJvbkRvd246ZnVuY3Rpb24oKXtyZXR1cm4gQ3J9LENsaWNrRWxlbWVudDpmdW5jdGlvbigpe3JldHVybiBHb30sQ2xvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gSX0sQ2xvY2tGaWxsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4ga30sQ2xvY2tNNTpmdW5jdGlvbigpe3JldHVybiBRdH0sQ2xvc2U6ZnVuY3Rpb24oKXtyZXR1cm4gUC5BfSxDbG9zZUJ1dHRvbjpmdW5jdGlvbigpe3JldHVybiBqLkF9LENsb3NlSWNvbjpmdW5jdGlvbigpe3JldHVybiBtb30sQ2xvc2VNNTpmdW5jdGlvbigpe3JldHVybiBRbn0sQ29sbGFwc2U6ZnVuY3Rpb24oKXtyZXR1cm4gTX0sQ29sbGFwc2VJY29uOmZ1bmN0aW9uKCl7cmV0dXJuIHNvfSxDb21wYW55OmZ1bmN0aW9uKCl7cmV0dXJuIEtvfSxDb21wb3NlOmZ1bmN0aW9uKCl7cmV0dXJuIFIuQX0sQ29tcG9zZXJBdHRhY2htZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHNyfSxDb21wb3NlckVtb2ppOmZ1bmN0aW9uKCl7cmV0dXJuIGlyfSxDb21wb3NlckVtb2ppQWN0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIHlyfSxDb21wb3NlckdpZjpmdW5jdGlvbigpe3JldHVybiBucn0sQ29tcG9zZXJHaWZBY3RpdmU6ZnVuY3Rpb24oKXtyZXR1cm4gcHJ9LENvbXBvc2VyU2VuZDpmdW5jdGlvbigpe3JldHVybiBicn0sQ29udGFjdEJvb2s6ZnVuY3Rpb24oKXtyZXR1cm4gWW99LENvdXBvbjpmdW5jdGlvbigpe3JldHVybiB0aX0sQ3JlZGl0Q2FyZDpmdW5jdGlvbigpe3JldHVybiByaX0sQ3N2RmlsZUljb246ZnVuY3Rpb24oKXtyZXR1cm4gSnJ9LERlc2NyaXB0aW9uSWNvbjpmdW5jdGlvbigpe3JldHVybiBIdH0sRG93bmxvYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gVX0sRWxsaXBzaXNIb3Jpem9udGFsSWNvbjpmdW5jdGlvbigpe3JldHVybiBwb30sRW1haWxGaWxsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gYWl9LEVtb2ppUGlja2VyOmZ1bmN0aW9uKCl7cmV0dXJuIEguQX0sRW5kQ2FsbDpmdW5jdGlvbigpe3JldHVybiBFaX0sRXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gRi5BfSxFcnJvckJhZGdlSWNvbjpmdW5jdGlvbigpe3JldHVybiBGcn0sRXZlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gY2l9LEV4cGFuZDpmdW5jdGlvbigpe3JldHVybiB1b30sRXhwYW5kSWNvbjpmdW5jdGlvbigpe3JldHVybiBmb30sRXh0ZXJuYWxMaW5rOmZ1bmN0aW9uKCl7cmV0dXJuIEJ9LEV4dGVybmFsU291cmNlQXJ0aWNsZVByZXZpZXc6ZnVuY3Rpb24oKXtyZXR1cm4gUmV9LEZpbGVJY29uOmZ1bmN0aW9uKCl7cmV0dXJuIFZyfSxGaW5Db2xsYXBzZUljb246ZnVuY3Rpb24oKXtyZXR1cm4gYm99LEZpbkxhdW5jaGVyOmZ1bmN0aW9uKCl7cmV0dXJuIFl9LEdyZXlJbmZvSWNvbjpmdW5jdGlvbigpe3JldHVybiBHdH0sSGVscDpmdW5jdGlvbigpe3JldHVybiBXZX0sSGVscEFjdGl2ZTpmdW5jdGlvbigpe3JldHVybiBEZX0sSGVscENlbnRlcjpmdW5jdGlvbigpe3JldHVybiBHfSxIb21lOmZ1bmN0aW9uKCl7cmV0dXJuIGVufSxIb21lQWN0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIFllfSxJbmZvOmZ1bmN0aW9uKCl7cmV0dXJuIG9vfSxJbmxpbmVTb3VyY2VBcnRpY2xlUHJldmlldzpmdW5jdGlvbigpe3JldHVybiBUZX0sSW5zaWdodHM6ZnVuY3Rpb24oKXtyZXR1cm4gdml9LEpvYlRpdGxlOmZ1bmN0aW9uKCl7cmV0dXJuIEt9LExhcmdlUmlnaHRBcnJvdzpmdW5jdGlvbigpe3JldHVybiBkaX0sTGF1bmNoZXI6ZnVuY3Rpb24oKXtyZXR1cm4gWi5BfSxMYXVuY2hlck1pbmltaXplOmZ1bmN0aW9uKCl7cmV0dXJuIFEuQX0sTGVmdENhcmV0OmZ1bmN0aW9uKCl7cmV0dXJuICR9LExlZnRDYXJldE01OmZ1bmN0aW9uKCl7cmV0dXJuIEt0fSxMaXN0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0fSxMb2NhdGlvbjpmdW5jdGlvbigpe3JldHVybiBydH0sTG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuIG1pfSxNZW51SWNvbjpmdW5jdGlvbigpe3JldHVybiBhdH0sTWVyY3VyeUNoZXZyb25Eb3duOmZ1bmN0aW9uKCl7cmV0dXJuIE9yfSxNZXJjdXJ5RWxsaXBzaXNWZXJ0aWNhbEljb246ZnVuY3Rpb24oKXtyZXR1cm4gaG99LE1lc3NhZ2VzOmZ1bmN0aW9uKCl7cmV0dXJuIGxufSxNZXNzYWdlc0FjdGl2ZTpmdW5jdGlvbigpe3JldHVybiB1bn0sTWljOmZ1bmN0aW9uKCl7cmV0dXJuIElpfSxNaWNPZmY6ZnVuY3Rpb24oKXtyZXR1cm4gVGl9LE1pY3JvcGhvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdXR9LE1vcmVNZW51SWNvbjpmdW5jdGlvbigpe3JldHVybiBsdH0sTmV3OmZ1bmN0aW9uKCl7cmV0dXJuIGZ0fSxOZXdDb252ZXJzYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gcHR9LE5ld01lc3NhZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gaHQuQX0sTmV3czpmdW5jdGlvbigpe3JldHVybiBtbn0sTmV3c0FjdGl2ZTpmdW5jdGlvbigpe3JldHVybiB2bn0sTm9NZXNzYWdlc0ljb246ZnVuY3Rpb24oKXtyZXR1cm4geXR9LE5vdGlmaWNhdGlvbnNJY29uOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LE9wZW5Jbk5ld1dpbmRvdzpmdW5jdGlvbigpe3JldHVybiBndC5BfSxQYXJhZ3JhcGg6ZnVuY3Rpb24oKXtyZXR1cm4gbXR9LFBkZkZpbGVJY29uOmZ1bmN0aW9uKCl7cmV0dXJuIHJvfSxQZXJzb246ZnVuY3Rpb24oKXtyZXR1cm4geWV9LFBlcnNvblR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gTWl9LFBob25lOmZ1bmN0aW9uKCl7cmV0dXJuIF9pfSxQaG90bzpmdW5jdGlvbigpe3JldHVybiBqcn0sUHJvZHVjdFRvdXI6ZnVuY3Rpb24oKXtyZXR1cm4gYnQuQX0sUXVvdGU6ZnVuY3Rpb24oKXtyZXR1cm4gYmV9LFJldHJ5OmZ1bmN0aW9uKCl7cmV0dXJuIHpyfSxSZXRyeVVwbG9hZEljb246ZnVuY3Rpb24oKXtyZXR1cm4gSHJ9LFJpZ2h0Q2hldnJvbjpmdW5jdGlvbigpe3JldHVybiB3dC5BfSxSaWdodENoZXZyb25Db2xvcmFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gX3QuQX0sUmlnaHRDaGV2cm9uU21hbGw6ZnVuY3Rpb24oKXtyZXR1cm4gU3QuQX0sUm9ja2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGtufSxSdGVCb2xkOmZ1bmN0aW9uKCl7cmV0dXJuICRpfSxSdGVCdWxsZXRlZExpc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gc2F9LFJ0ZUl0YWxpYzpmdW5jdGlvbigpe3JldHVybiBuYX0sUnRlTGluazpmdW5jdGlvbigpe3JldHVybiBpYX0sUnRlTnVtYmVyZWRMaXN0OmZ1bmN0aW9uKCl7cmV0dXJuIGxhfSxTZWFyY2g6ZnVuY3Rpb24oKXtyZXR1cm4geHR9LFNlbGZTZXJ2ZTpmdW5jdGlvbigpe3JldHVybiBFdC5BfSxTZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIEN0fSxTbGE6ZnVuY3Rpb24oKXtyZXR1cm4gQXR9LFNsaXBwaW5nQXdheTpmdW5jdGlvbigpe3JldHVybiBWaX0sU3BlYWtlcjpmdW5jdGlvbigpe3JldHVybiBLaS5BfSxTdGFyczpmdW5jdGlvbigpe3JldHVybiBXaX0sU3RvcDpmdW5jdGlvbigpe3JldHVybiBrdH0sU3VydmV5U3RhcjpmdW5jdGlvbigpe3JldHVybiBMdC5BfSxUYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIGpufSxUYXNrQWN0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIE1ufSxUaGluRG93bkFycm93SWNvbjpmdW5jdGlvbigpe3JldHVybiBnb30sVGhpbkxlZnRBcnJvd0ljb246ZnVuY3Rpb24oKXtyZXR1cm4gdm99LFRoaW5SaWdodEFycm93SWNvbjpmdW5jdGlvbigpe3JldHVybiB5b30sVGlja2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFR0LkF9LFRpY2tldERlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4gRG59LFRpY2tldFJlc29sdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIEtufSxUaWNrZXRTbWFsbDpmdW5jdGlvbigpe3JldHVybiB6bn0sVGlja2V0V2FpdGluZ09uWW91OmZ1bmN0aW9uKCl7cmV0dXJuIEdufSxUaWNrZXRzOmZ1bmN0aW9uKCl7cmV0dXJuIE9ufSxUaWNrZXRzQWN0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIHhufSxUaW55QWxlcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gWWl9LFRvcENhcmV0OmZ1bmN0aW9uKCl7cmV0dXJuIENlfSxUeHRGaWxlSWNvbjpmdW5jdGlvbigpe3JldHVybiBYcn0sVW5yZWFkSW5kaWNhdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIFh0fSxWaWRlbzpmdW5jdGlvbigpe3JldHVybiBNcn0sVmlkZW9QYXVzZTpmdW5jdGlvbigpe3JldHVybiBqdC5BfSxWaWRlb1BsYXk6ZnVuY3Rpb24oKXtyZXR1cm4gUHQuQX0sVmlkZW9SZXBsYXk6ZnVuY3Rpb24oKXtyZXR1cm4gTnQuQX0sVmlld0NvbnZlcnNhdGlvbjpmdW5jdGlvbigpe3JldHVybiBJb30sV2F2ZWZvcm06ZnVuY3Rpb24oKXtyZXR1cm4gRHR9LFdlUnVuT25JbnRlcmNvbTpmdW5jdGlvbigpe3JldHVybiBGdC5BfSxXcmVuY2g6ZnVuY3Rpb24oKXtyZXR1cm4gSGl9LFppcEZpbGVJY29uOmZ1bmN0aW9uKCl7cmV0dXJuIFdyfX0pO3ZhciByLG89big5NjU0MCk7ZnVuY3Rpb24gaSgpe3JldHVybiBpPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0saS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIGEsdT1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLGkoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLCJhcmlhLWhpZGRlbiI6InRydWUiLHZpZXdCb3g6IjAgMCAxNiAxNiJ9LHQpLHJ8fChyPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0zLjUgNS41YTQuNSA0LjUgMCAwIDEgOSAwVjhsMi4yOTMgMi4yOTNjLjYzLjYzLjE4NCAxLjcwNy0uNzA3IDEuNzA3SDEuOTE0Yy0uODkgMC0xLjMzNy0xLjA3Ny0uNzA3LTEuNzA3TDMuNSA4em02LjUgOC4wOGEyIDIgMCAxIDEtMy45OTgtLjA4aDMuOTk2eiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpKX0scz1uKDc4NTUpO2Z1bmN0aW9uIGMoKXtyZXR1cm4gYz1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGMuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBsLGY9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixjKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjEzLGhlaWdodDoxNSxmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTMgMTUiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxhfHwoYT1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik02LjI5IDBhNi4yOSA2LjI5IDAgMCAxIDYuMjkgNi4yOWMwIDYuMjktNi4yODQgOC43MS02LjI4NCA4Ljcxdi0yLjQySDYuMjlBNi4yOSA2LjI5IDAgMSAxIDYuMjkgMG0uNTggOS4xMDNhLjU3OC41NzggMCAxIDAgMCAuMDAxem0tLjU3OC01LjcxYy0xLjAxIDAtMS44NC43OC0xLjkyNSAxLjc3bC45NTcuMTM1YS45Ny45NyAwIDAgMSAxLjkzOC4wMjhjMCAuOTY0LTEuMzU1Ljk2NC0xLjM1NSAyLjMxMnYuMTA4aC43N3YtLjEwOGMwLS43NyAxLjU0Ny0uOTYzIDEuNTQ3LTIuMzEyYTEuOTM0IDEuOTM0IDAgMCAwLTEuOTMyLTEuOTMyeiJ9KSkpfTtmdW5jdGlvbiBkKCl7cmV0dXJuIGQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxkLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgcCxoPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZCh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNCxoZWlnaHQ6MTYsZmlsbDoiY3VycmVudENvbG9yIix2aWV3Qm94OiIwIDAgMTQgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxsfHwobD1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJtNi44NTcgMTYtMi4zMDUtMi4zMDVIMS42YTEuNTQgMS41NCAwIDAgMS0xLjEzLS40NyAxLjU0IDEuNTQgMCAwIDEtLjQ3LTEuMTNWMS42UTAgLjk0LjQ3LjQ3QTEuNTQgMS41NCAwIDAgMSAxLjYgMGgxMC41MTRxLjY2IDAgMS4xMy40N3QuNDcgMS4xM3YxMC40OTVxMCAuNjYtLjQ3IDEuMTNhMS41NCAxLjU0IDAgMCAxLTEuMTMuNDdIOS4xNDN6bS43MDUtNy41NDNxMC0uNzA0LjE0My0xLjAxLjE0My0uMzA0LjU4LS43NDIuNjY3LS42NDguOTcyLTEuMTA1dC4zMDUtMS4wODZxMC0xLjAyOC0uNzE0LTEuNjM4LS43MTUtLjYxLTEuODU3LS42MS0xLjAyOSAwLTEuNzcuNTItLjc0Mi41MTktMS4wMyAxLjQ0M2wxLjMzMy41MzNxLjIyOC0uNTcyLjYwNi0uODQ4YTEuNDUgMS40NSAwIDAgMSAuODgtLjI3NnEuNDY1IDAgLjc3NS4yMzh0LjMxLjY3NnEwIC4zNDMtLjIzOC42OTYtLjIzOS4zNTItLjc1Mi44MjgtLjU3Mi41MTUtLjc5IDEuMDM4LS4yMi41MjQtLjIyIDEuMzQzem0tLjc0IDIuOTUyYS45NS45NSAwIDAgMCAuNzAyLS4yODcuOTYuOTYgMCAwIDAgLjI4Ni0uNzA1Ljk1Ljk1IDAgMCAwLS4yODgtLjcwMy45Ni45NiAwIDAgMC0uNzA1LS4yODUuOTUuOTUgMCAwIDAtLjcwMy4yODcuOTYuOTYgMCAwIDAtLjI4NS43MDVxMCAuNDE3LjI4Ny43MDMuMjg4LjI4NS43MDUuMjg1In0pKSl9LHY9big2MzI5NSk7ZnVuY3Rpb24geSgpe3JldHVybiB5PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0seS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIGc9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIix5KHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxwfHwocD1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik0yIDMuNUguNVYxNGMwIC44MjUuNjc1IDEuNSAxLjUgMS41aDEwLjVWMTRIMnptMTItM0g1Yy0uODI1IDAtMS41LjY3NS0xLjUgMS41djljMCAuODI1LjY3NSAxLjUgMS41IDEuNWg5Yy44MjUgMCAxLjUtLjY3NSAxLjUtMS41VjJjMC0uODI1LS42NzUtMS41LTEuNS0xLjVNMTQgMTFINVYyaDl6TTYuNSA1Ljc1aDZ2MS41aC02ek02LjUgOGgzdjEuNWgtM3ptMC00LjVoNlY1aC02eiJ9KSkpfSxtPW4oMzc4OTEpLGI9big1Njk2MCksdz1uKDM2NDQ3KSxfPW4oNjIzNjApLFM9big3NDg0OCk7ZnVuY3Rpb24geCgpe3JldHVybigwLFMuanN4KShfLk0se2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLHZpZXdCb3g6IjAgMCAxNSAxNiIsY2hpbGRyZW46KDAsUy5qc3gpKCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGNsaXBSdWxlOiJldmVub2RkIixkOiJNMSA2LjU2NjIxQzEgNS4xNjM4NiAxIDQuNDYyNjggMS4zMDMzMiAzLjg0MDQyQzEuNTUxMzMgMy4zMzE2NSAyLjAzNTY5IDIuODE3ODcgMi41Mjg5NyAyLjU0MDM0QzMuMTMyMjkgMi4yMDA5IDMuNzY5MTEgMi4xNjMzNCA1LjA0Mjc1IDIuMDg4MkM1LjkzMTQxIDIuMDM1NzggNi45Mjk5MiAyIDggMkM5LjA3MDA4IDIgMTAuMDY4NiAyLjAzNTc4IDEwLjk1NzIgMi4wODgyQzEyLjIzMDkgMi4xNjMzNCAxMi44Njc3IDIuMjAwOSAxMy40NzEgMi41NDAzNEMxMy45NjQzIDIuODE3ODcgMTQuNDQ4NyAzLjMzMTY1IDE0LjY5NjcgMy44NDA0MkMxNSA0LjQ2MjY4IDE1IDUuMTYzODYgMTUgNi41NjYyMVY4LjQzMzc5QzE1IDkuODM2MTQgMTUgMTAuNTM3MyAxNC42OTY3IDExLjE1OTZDMTQuNDQ4NyAxMS42NjgzIDEzLjk2NDMgMTIuMTgyMSAxMy40NzEgMTIuNDU5N0MxMi44Njc3IDEyLjc5OTEgMTIuMjMwOSAxMi44MzY3IDEwLjk1NzMgMTIuOTExOEMxMC4wNjg2IDEyLjk2NDIgOS4wNzAwOCAxMyA4IDEzQzcuMTIzNCAxMyA2LjI5NDgzIDEyLjk3NiA1LjUzNTMzIDEyLjkzODVMMi44MDk2NyAxNC4xNzc0QzIuMjA3MjcgMTQuNDUxMiAxLjkwNjA2IDE0LjU4ODIgMS42NjI2IDE0LjU0NTdDMS40NDk4OCAxNC41MDg2IDEuMjYxMTcgMTQuMzg3MSAxLjEzOTM4IDE0LjIwODhDMSAxNC4wMDQ3IDEgMTMuNjczOSAxIDEzLjAxMjJWNi41NjYyMVpNNCA1LjRDNCA1LjE3OTA5IDQuMTc5MDkgNSA0LjQgNUgxMS42QzExLjgyMDkgNSAxMiA1LjE3OTA5IDEyIDUuNFY2QzEyIDYuMjIwOTEgMTEuODIwOSA2LjQgMTEuNiA2LjRINC40QzQuMTc5MDkgNi40IDQgNi4yMjA5MSA0IDZWNS40Wk00LjQgOEM0LjE3OTA5IDggNCA4LjE3OTA5IDQgOC40VjlDNCA5LjIyMDkxIDQuMTc5MDkgOS40IDQuNCA5LjRIOC42QzguODIwOTEgOS40IDkgOS4yMjA5MSA5IDlWOC40QzkgOC4xNzkwOSA4LjgyMDkxIDggOC42IDhINC40WiIsZmlsbDoiY3VycmVudENvbG9yIn0pfSl9dmFyIEU9bigxMzgwOCksQz1uKDk4MDU0KSxPPSgwLEMuQXkpKCJzdmciLHt0YXJnZXQ6ImV4NHFhOXYxIn0pKCJmaWxsOiIsKDAsQy53NCkoImJ1dHRvbkJhY2tncm91bmRDb2xvciIpLCI7IiksQT0oMCxDLkF5KSgic3ZnIix7dGFyZ2V0OiJleDRxYTl2MCJ9KSgiZmlsbDoiLCgwLEMudzQpKCJ0ZXh0TXV0ZWQiKSwiOyIpO2Z1bmN0aW9uIEkodCl7dmFyIGU9dC5zaXplLG49dm9pZCAwPT09ZT8xNDplO3JldHVybigwLFMuanN4KShPLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOm4saGVpZ2h0Om4sdmlld0JveDoiMCAwIDE0IDE0IixjaGlsZHJlbjooMCxTLmpzeCkoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTEyLjUgN2MwIDMuMDM3Ni0yLjQ2MjQgNS41LTUuNSA1LjUtMy4wMzc1NyAwLTUuNS0yLjQ2MjQtNS41LTUuNSAwLTMuMDM3NTcgMi40NjI0My01LjUgNS41LTUuNSAzLjAzNzYgMCA1LjUgMi40NjI0MyA1LjUgNS41ek0xNCA3YzAgMy44NjYtMy4xMzQgNy03IDctMy44NjU5OSAwLTctMy4xMzQtNy03IDAtMy44NjU5OSAzLjEzNDAxLTcgNy03IDMuODY2IDAgNyAzLjEzNDAxIDcgN3pNNi4yNzg0NCAzLjQ4MjE5djMuNzgwOTNsLjAwMTA1LjAwMTA0Yy4wMDMwNS4wNzgwNS4wMzY1OC4xNTE4LjA5MzQxLjIwNTQ2bC4wNzQ1Mi4wNTY2TDkuNjcwNiA5LjY5NzA4bC4xNTAwOS4wMzc3M2guMDU2NjdjLjA5MzQxLS4wMTg4Ni4xNDkwNC0uMDc0NDIuMjA1NzQtLjEzMTAybC40MTI1LS42NTUxNGMuMDM1NS0uMDQ5MjYuMDU1Mi0uMTA4MDkuMDU2Ni0uMTY4NzYgMC0uMDkzMjktLjA1NjYtLjE0ODg1LS4xNTAxLS4yMDU0NUw3LjYyODE3IDYuNjgzNDVWMy40ODIxOWMwLS4xNDk4OS0uMTMxMi0uMjk5NzktLjMwMDE3LS4yOTk3OWgtLjc0OTM4Yy0uMTY4OTggMC0uMzAwMTguMTQ5OS0uMzAwMTguMjk5Nzl6IixjbGlwUnVsZToiZXZlbm9kZCJ9KX0pfWZ1bmN0aW9uIGsodCl7dmFyIGU9dC5zaXplLG49dm9pZCAwPT09ZT8xNDplO3JldHVybigwLFMuanN4KShBLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOm4saGVpZ2h0Om4sdmlld0JveDoiMCAwIDEzIDEyIixjaGlsZHJlbjooMCxTLmpzeCkoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGQ6Ik02LjUgMC4yNUMzLjMyIDAuMjUgMC43NSAyLjgyIDAuNzUgNkMwLjc1IDkuMTggMy4zMiAxMS43NSA2LjUgMTEuNzVDOS42OCAxMS43NSAxMi4yNSA5LjE4IDEyLjI1IDZDMTIuMjUgMi44MiA5LjY4IDAuMjUgNi41IDAuMjVaTTkuMjUgNi43NUg1Ljc1VjIuNUM1Ljc1IDIuMDkgNi4wOSAxLjc1IDYuNSAxLjc1QzYuOTEgMS43NSA3LjI1IDIuMDkgNy4yNSAyLjVWNS4yNUg5LjI1QzkuNjYgNS4yNSAxMCA1LjU5IDEwIDZDMTAgNi40MSA5LjY2IDYuNzUgOS4yNSA2Ljc1WiJ9KX0pfXZhciBMLFQsaj1uKDUyMTY1KSxQPW4oMTg2ODQpO2Z1bmN0aW9uIE4oKXtyZXR1cm4gTj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LE4uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBNPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsTih7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksTHx8KEw9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7c3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOjEuNyxkOiJtMSAxIDUgNSJ9KSksVHx8KFQ9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7c3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOjEuNzUsZDoiTTEuNSA2LjVoNXYtNW0zLjUgOC41MDIgNSA1bS01LjUtLjV2LTVoNSJ9KSkpfSxSPW4oMjc1NzUpO2Z1bmN0aW9uIFUoKXtyZXR1cm4oMCxTLmpzeHMpKCJzdmciLHt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpbKDAsUy5qc3gpKCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGQ6Ik03Ljk5OTkgMTMuNjQ5OUM0Ljg3OTQ5IDEzLjY0OTkgMi4zNDk5IDExLjEyMDMgMi4zNDk5IDcuOTk5OUMyLjM0OTkgNC44Nzk0OSA0Ljg3OTQ5IDIuMzQ5OSA3Ljk5OTkgMi4zNDk5QzExLjEyMDMgMi4zNDk5IDEzLjY0OTkgNC44Nzk0OSAxMy42NDk5IDcuOTk5OUMxMy42NDk5IDExLjEyMDMgMTEuMTIwMyAxMy42NDk5IDcuOTk5OSAxMy42NDk5Wk0wLjY0OTkwMiA3Ljk5OTlDMC42NDk5MDIgMTIuMDU5MiAzLjk0MDYxIDE1LjM0OTkgNy45OTk5IDE1LjM0OTlDMTIuMDU5MiAxNS4zNDk5IDE1LjM0OTkgMTIuMDU5MiAxNS4zNDk5IDcuOTk5OUMxNS4zNDk5IDMuOTQwNjEgMTIuMDU5MiAwLjY0OTkwMiA3Ljk5OTkgMC42NDk5MDJDMy45NDA2MSAwLjY0OTkwMiAwLjY0OTkwMiAzLjk0MDYxIDAuNjQ5OTAyIDcuOTk5OVoifSksKDAsUy5qc3gpKCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGQ6Ik03LjM5ODg2IDExLjQ2NzdDNy43MzA4MSAxMS43OTk2IDguMjY5IDExLjc5OTYgOC42MDA5NCAxMS40Njc3TDEwLjkwODYgOS4xNTk5OUMxMS4yNDA2IDguODI4MDQgMTEuMjQwNiA4LjI4OTg1IDEwLjkwODYgNy45NTc5MUMxMC41NzY3IDcuNjI1OTYgMTAuMDM4NSA3LjYyNTk2IDkuNzA2NTUgNy45NTc5MUw4Ljg0OTkgOC44MTQ1NlY1LjEzMzE0QzguODQ5OSA0LjY2MzcgOC40NjkzNCA0LjI4MzE0IDcuOTk5OSA0LjI4MzE0QzcuNTMwNDYgNC4yODMxNCA3LjE0OTkgNC42NjM3IDcuMTQ5OSA1LjEzMzE0VjguODE0NTZMNi4yOTMyNSA3Ljk1NzkxQzUuOTYxMyA3LjYyNTk2IDUuNDIzMTIgNy42MjU5NiA1LjA5MTE3IDcuOTU3OTFDNC43NTkyMiA4LjI4OTg1IDQuNzU5MjIgOC44MjgwNCA1LjA5MTE3IDkuMTU5OTlMNy4zOTg4NiAxMS40Njc3WiJ9KV19KX12YXIgeixIPW4oNzUzNTMpLEY9big1MTYzOCk7ZnVuY3Rpb24gRCgpe3JldHVybiBEPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sRC5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIEI9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixEKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIix2aWV3Qm94OiIwIDAgMTYgMTYifSx0KSx6fHwoej1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNMyAzLjdoNFYySDNhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtMmgtMS43djJhLjMuMyAwIDAgMS0uMy4zSDNhLjMuMyAwIDAgMS0uMy0uM1Y0YS4zLjMgMCAwIDEgLjMtLjNNOS4yMTggM2MwIC40Ny4zOC44NS44NS44NWgxLjg4TDguMjk2IDcuNTAyYS44NS44NSAwIDAgMCAxLjIwMiAxLjIwMmwzLjY1Mi0zLjY1MnYxLjg4YS44NS44NSAwIDAgMCAxLjcgMFYzYS44NS44NSAwIDAgMC0uODUtLjg1aC0zLjkzMmEuODUuODUgMCAwIDAtLjg1Ljg1IixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpfSxWPSgwLEMuQXkpKCJzdmciLHt0YXJnZXQ6ImUxdG1rdzF6MCJ9KSgiZmlsbDoiLCgwLEMudzQpKCJsaW5rQ29sb3IiKSwiIWltcG9ydGFudDtoZWlnaHQ6MTNweDt3aWR0aDoxM3B4O3BhZGRpbmctcmlnaHQ6NXB4OyIpLEc9ZnVuY3Rpb24oKXtyZXR1cm4oMCxTLmpzeCkoVix7Zm9jdXNhYmxlOiJmYWxzZSIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsdmlld0JveDoiMCAwIDE1IDE1Iix2ZXJzaW9uOiIxLjEiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46KDAsUy5qc3gpKCJnIix7c3Ryb2tlV2lkdGg6IjEiLGZpbGxSdWxlOiJldmVub2RkIixzdHJva2U6ImN1cnJlbnRDb2xvciIsY2hpbGRyZW46KDAsUy5qc3gpKCJnIix7ZmlsbFJ1bGU6Im5vbnplcm8iLGNoaWxkcmVuOigwLFMuanN4cykoImciLHtjaGlsZHJlbjpbKDAsUy5qc3gpKCJwYXRoIix7ZDoiTTEsMTQgTDEsNCBMOC4xMTUzODQ2Miw0IEM4LjM5MTUyNjk5LDQgOC42MTUzODQ2MiwzLjc3NjE0MjM3IDguNjE1Mzg0NjIsMy41IEM4LjYxNTM4NDYyLDMuMjIzODU3NjMgOC4zOTE1MjY5OSwzIDguMTE1Mzg0NjIsMyBMMC41LDMgQzAuMjIzODU3NjI1LDMgMCwzLjIyMzg1NzYzIDAsMy41IEwwLDE0LjUgQzAsMTQuNzc2MTQyNCAwLjIyMzg1NzYyNSwxNSAwLjUsMTUgTDExLjUsMTUgQzExLjc3NjE0MjQsMTUgMTIsMTQuNzc2MTQyNCAxMiwxNC41IEwxMiw3LjczMDc2OTIzIEMxMiw3LjQ1NDYyNjg2IDExLjc3NjE0MjQsNy4yMzA3NjkyMyAxMS41LDcuMjMwNzY5MjMgQzExLjIyMzg1NzYsNy4yMzA3NjkyMyAxMSw3LjQ1NDYyNjg2IDExLDcuNzMwNzY5MjMgTDExLDE0IEwxLDE0IFoifSksKDAsUy5qc3gpKCJwYXRoIix7ZDoiTTUuMzUzNTUzMzksMTAuMzUzNTUzNCBMMTIuODUzNTUzNCwyLjg1MzU1MzM5IEMxMy4wNDg4MTU1LDIuNjU4MjkxMjQgMTMuMDQ4ODE1NSwyLjM0MTcwODc2IDEyLjg1MzU1MzQsMi4xNDY0NDY2MSBDMTIuNjU4MjkxMiwxLjk1MTE4NDQ2IDEyLjM0MTcwODgsMS45NTExODQ0NiAxMi4xNDY0NDY2LDIuMTQ2NDQ2NjEgTDQuNjQ2NDQ2NjEsOS42NDY0NDY2MSBDNC40NTExODQ0Niw5Ljg0MTcwODc2IDQuNDUxMTg0NDYsMTAuMTU4MjkxMiA0LjY0NjQ0NjYxLDEwLjM1MzU1MzQgQzQuODQxNzA4NzYsMTAuNTQ4ODE1NSA1LjE1ODI5MTI0LDEwLjU0ODgxNTUgNS4zNTM1NTMzOSwxMC4zNTM1NTM0IFoifSksKDAsUy5qc3gpKCJwYXRoIix7ZDoiTTE0LDUuNSBDMTQsNS43NzYxNDIzNyAxNC4yMjM4NTc2LDYgMTQuNSw2IEMxNC43NzYxNDI0LDYgMTUsNS43NzYxNDIzNyAxNSw1LjUgTDE1LDAuNSBDMTUsMC4yMjM4NTc2MjUgMTQuNzc2MTQyNCw5LjQzNjg5NTcxZS0xNiAxNC41LDguODgxNzg0MmUtMTYgTDkuNSwwIEM5LjIyMzg1NzYzLC00LjkwNTI3Mzk2ZS0xNyA5LDAuMjIzODU3NjI1IDksMC41IEM5LDAuNzc2MTQyMzc1IDkuMjIzODU3NjMsMSA5LjUsMSBMMTQsMSBMMTQsNS41IFoifSldfSl9KX0pfSl9O3ZhciBxPXtuYW1lOiJvdTh4c3ciLHN0eWxlczoiZmxleDowIDAgYXV0byJ9LFc9KDAsQy5BeSkoInN2ZyIse3RhcmdldDoiZTEwZGZ3NDgwIn0pKCJ3aWR0aDoxNnB4O2hlaWdodDoxNnB4O21hcmdpbi1yaWdodDo1cHg7dmVydGljYWwtYWxpZ246dGV4dC1ib3R0b207Pmc+Z3tzdHJva2U6IiwoMCxDLnc0KSgiaGVhZGVyVGl0bGVDb2xvciIpLCI7fSIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzQmlvJiZxfSksIjsiKSxLPWZ1bmN0aW9uKCl7cmV0dXJuKDAsUy5qc3gpKFcse2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLHZpZXdCb3g6IjAgMCAxNyAxNSIsY2hpbGRyZW46KDAsUy5qc3gpKCJnIix7c3Ryb2tlV2lkdGg6IjEiLGZpbGxSdWxlOiJldmVub2RkIixzdHJva2VMaW5lam9pbjoicm91bmQiLGZpbGw6Im5vbmUiLGNoaWxkcmVuOigwLFMuanN4KSgiZyIse3N0cm9rZToiY3VycmVudENvbG9yIixjaGlsZHJlbjooMCxTLmpzeHMpKCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoLTEwNzMgLTEyMCl0cmFuc2xhdGUoMTAwMiAzMCl0cmFuc2xhdGUoNzIgOTApdHJhbnNsYXRlKDAgMSkiLGNoaWxkcmVuOlsoMCxTLmpzeCkoInBhdGgiLHtkOiJNMC40IDYuN0w2LjcgNi43IixzdHJva2VMaW5lY2FwOiJyb3VuZCJ9KSwoMCxTLmpzeCkoInBhdGgiLHtkOiJNOC45IDYuN0wxNS4yIDYuNyIsc3Ryb2tlTGluZWNhcDoicm91bmQifSksKDAsUy5qc3gpKCJwb2x5Z29uIix7cG9pbnRzOiIxNS4yIDMuMiAwLjQgMy4yIDAuNCAxMy4xIDE1LjIgMTMuMSJ9KSwoMCxTLmpzeCkoInBvbHlnb24iLHtwb2ludHM6IjguOSA4LjkgNi43IDguOSA2LjcgNiA4LjkgNiJ9KSwoMCxTLmpzeCkoInBhdGgiLHtkOiJNNSAzLjJDNSAxLjYgNi4yIDAuNCA3LjggMC40IDkuNCAwLjQgMTAuNiAxLjYgMTAuNiAzLjIifSldfSl9KX0pfSl9LFo9big4MzM3OCksSj1uKDg4NTc2KSxZPWZ1bmN0aW9uKHQpe3ZhciBlPXQuY29sb3Isbj0oMCxKLkEpKCkscj1TdHJpbmcobiYmZSYmbltlXXx8bi5pY29uRGVmYXVsdCk7cmV0dXJuKDAsUy5qc3gpKCJzdmciLHtmb2N1c2FibGU6ImZhbHNlIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIix2aWV3Qm94OiIwIDAgMzIgMzIiLGZpbGw6Im5vbmUiLGNoaWxkcmVuOigwLFMuanN4KSgicGF0aCIse2ZpbGw6cixkOiJNMjcuNTM4NCAyMC40MzExQzMwLjAxNjcgMjAuNDMxMSAzMi4wMjA2IDE4LjQwMTUgMzEuOTc4OSAxNS45MTQyQzMxLjkzOCAxMy40Nzg2IDI5LjkwMDQgMTEuNTQ4MyAyNy40NjQ3IDExLjU0ODNIMjUuNzYxQzI0LjQ4NzQgMTEuNTQ4MyAyMy4zMTkzIDExLjEwMDYgMjIuNDAyNSAxMC4zNTU0QzIyLjMxMzcgMTAuMjgzNCAyMi4zMTM3IDEwLjE0ODQgMjIuNDAyNSAxMC4wNzY0QzIzLjMxOTMgOS4zMzExNyAyNC40ODc0IDguODgzNDcgMjUuNzYxIDguODgzNDdIMjcuNDU5NEMyOS45Mzc2IDguODgzNDcgMzEuOTk2NiA2Ljg4ODM5IDMxLjk3ODkgNC40MTAwN0MzMS45NjExIDEuOTMxNzYgMjkuOTk3MiAwLjAxNzUxNzcgMjcuNTY5NiAwLjAwMDY0MDQyNEMyNS4wOTE0IC0wLjAxNzEyNTIgMjMuMDk2MyAyLjA0MjgxIDIzLjA5NjMgNC41MjAyM1Y2LjIxODYyQzIzLjA5NjMgNy40OTI0MiAyMi42NDg2IDguNjYwNTIgMjEuOTAzNCA5LjU3NzIzQzIxLjgzMTQgOS42NjYwNiAyMS42OTYzIDkuNjY2MDYgMjEuNjI0NSA5LjU3NzIzQzIwLjg3OTIgOC42NjA1MiAyMC40MzE2IDcuNDkyNDIgMjAuNDMxNiA2LjIxODYyVjQuNDQyMDVDMjAuNDMxNiAxLjk2Mzc0IDE4LjQwMTggLTAuMDQxMTA4OSAxNS45MTQ3IDAuMDAwNjQwNDI0QzEzLjQ3OTEgMC4wNDE1MDE1IDExLjU0ODkgMi4wNzkyMyAxMS41NDg5IDQuNTE0OVY2LjIxODYyQzExLjU0ODkgNy40OTI0MiAxMS4xMDEyIDguNjYwNTIgMTAuMzU2IDkuNTc3MjNDMTAuMjg0IDkuNjY2MDYgMTAuMTQ5IDkuNjY2MDYgMTAuMDc3MSA5LjU3NzIzQzkuMzMxODQgOC42NjA1MiA4Ljg4NDE0IDcuNDkyNDIgOC44ODQxNCA2LjIxODYyVjQuNDQyMDVDOC44ODQxNCAxLjkzMTc4IDYuODAxMTcgLTAuMDkyNjI4NiA0LjI2OTY0IDAuMDA0MTk0MzJDMS45NjgxNyAwLjA5MTI0NjEgMC4wOTIxNjEgMS45NjczIDAuMDA0MjIzMzIgNC4yNjg4NUMtMC4wOTE3MDg3IDYuODAwNDUgMS45MzE3NCA4Ljg4MzQ3IDQuNDQxOTUgOC44ODM0N0g2LjIxODQ3QzcuNDkyMjQgOC44ODM0NyA4LjY2MDMxIDkuMzMxMTcgOS41NzcgMTAuMDc2NEM5LjY2NTgxIDEwLjE0ODQgOS42NjU4MSAxMC4yODM0IDkuNTc3IDEwLjM1NTRDOC42NjAzMSAxMS4xMDA2IDcuNDkyMjQgMTEuNTQ4MyA2LjIxODQ3IDExLjU0ODNINC41MTQ4QzIuMDc5MiAxMS41NDgzIDAuMDQxNTI2OCAxMy40Nzg2IDAuMDAwNjY2ODE4IDE1LjkxNDJDLTAuMDQwMTkzIDE4LjM0OTkgMS45NjI4NCAyMC40MzExIDQuNDQxMDggMjAuNDMxMUg2LjIxNzU4QzcuNDkxMzUgMjAuNDMxMSA4LjY1OTQyIDIwLjg3ODkgOS41NzYwOSAyMS42MjQxQzkuNjY0OTIgMjEuNjk2IDkuNjY0OTIgMjEuODMxIDkuNTc2MDkgMjEuOTAzMUM4LjY1OTQyIDIyLjY0ODMgNy40OTEzNSAyMy4wOTYgNi4yMTc1OCAyMy4wOTZINC40NDEwOEMxLjkzMDg2IDIzLjA5NiAtMC4wOTM0ODU5IDI1LjE3OSAwLjAwMzMzNDIgMjcuNzEwN0MwLjA5MDM4MzYgMzAuMDEyMSAxLjk2NjM5IDMxLjg4ODMgNC4yNjg3NSAzMS45NzUyQzYuODAwMjggMzIuMDcxMiA4Ljg4MzI1IDMwLjA0NzcgOC44ODMyNSAyNy41Mzc0VjI1Ljc2MDhDOC44ODMyNSAyNC40ODcgOS4zMzA5NSAyMy4zMTkgMTAuMDc2MiAyMi40MDIyQzEwLjE0ODEgMjIuMzEzNCAxMC4yODMyIDIyLjMxMzQgMTAuMzU1MSAyMi40MDIyQzExLjEwMDMgMjMuMzE5IDExLjU0OCAyNC40ODcgMTEuNTQ4IDI1Ljc2MDhWMjcuNDY0NUMxMS41NDggMjkuOTAwMiAxMy40NzgyIDMxLjkzOCAxNS45MTM4IDMxLjk3ODlDMTguNDAxOCAzMi4wMjA2IDIwLjQzMDYgMzAuMDE2NyAyMC40MzA2IDI3LjUzODNWMjUuNzYxN0MyMC40MzA2IDI0LjQ4NzkgMjAuODc4MiAyMy4zMTk4IDIxLjYyMzYgMjIuNDAzMkMyMS42OTU1IDIyLjMxNDQgMjEuODMwNSAyMi4zMTQ0IDIxLjkwMjQgMjIuNDAzMkMyMi42NDc4IDIzLjMxOTggMjMuMDk1NSAyNC40ODc5IDIzLjA5NTUgMjUuNzYxN1YyNy41MzgzQzIzLjA5NTUgMzAuMDQ4NyAyNS4xNzgzIDMyLjA3MyAyNy43MDk4IDMxLjk3NjJDMzAuMDExMyAzMS44ODkxIDMxLjg4NzQgMzAuMDEzIDMxLjk3NDQgMjcuNzEwN0MzMi4wNzA0IDI1LjE3OSAzMC4wNDY4IDIzLjA5NiAyNy41MzY4IDIzLjA5NkgyNS43NjAyQzI0LjQ4NjQgMjMuMDk2IDIzLjMxODMgMjIuNjQ4MyAyMi40MDE3IDIxLjkwMzFDMjIuMzEyOSAyMS44MzEgMjIuMzEyOSAyMS42OTYgMjIuNDAxNyAyMS42MjQxQzIzLjMxODMgMjAuODc4OSAyNC40ODY0IDIwLjQzMTEgMjUuNzYwMiAyMC40MzExSDI3LjUzNjhIMjcuNTM4NFpNMTQuMjE1NSA4Ljg4MzQ3SDE3Ljc2ODVDMTkuMDQyMyA4Ljg4MzQ3IDIwLjIxMDMgOS4zMzExNyAyMS4xMjcgMTAuMDc2NEMyMS4yMTU4IDEwLjE0ODQgMjEuMjE1OCAxMC4yODM0IDIxLjEyNyAxMC4zNTU0QzIwLjIxMDMgMTEuMTAwNiAxOS4wNDIzIDExLjU0ODMgMTcuNzY4NSAxMS41NDgzSDE0LjIxNTVDMTIuOTQxNyAxMS41NDgzIDExLjc3MzYgMTEuMTAwNiAxMC44NTcgMTAuMzU1NEMxMC43NjgxIDEwLjI4MzQgMTAuNzY4MSAxMC4xNDg0IDEwLjg1NyAxMC4wNzY0QzExLjc3MzYgOS4zMzExNyAxMi45NDE3IDguODgzNDcgMTQuMjE1NSA4Ljg4MzQ3Wk04Ljg4NTkxIDE1Ljk4OTdWMTQuMjEzMkM4Ljg4NTkxIDEyLjkzOTQgOS4zMzM2MSAxMS43NzEzIDEwLjA3ODkgMTAuODU0NkMxMC4xNTA4IDEwLjc2NTggMTAuMjg1OCAxMC43NjU4IDEwLjM1NzggMTAuODU0NkMxMS4xMDMgMTEuNzcxMyAxMS41NTA3IDEyLjkzOTQgMTEuNTUwNyAxNC4yMTMyVjE1Ljk4ODlWMTcuNzY1NEMxMS41NTA3IDE5LjAzOTIgMTEuMTAzIDIwLjIwNzIgMTAuMzU3OCAyMS4xMjRDMTAuMjg1OCAyMS4yMTI4IDEwLjE1MDggMjEuMjEyOCAxMC4wNzg5IDIxLjEyNEM5LjMzMzYxIDIwLjIwNzIgOC44ODU5MSAxOS4wMzkyIDguODg1OTEgMTcuNzY1NFYxNS45ODg5VjE1Ljk4OTdaTTE3Ljc2ODUgMjMuMDk2SDE0LjIxNTVDMTIuOTQxNyAyMy4wOTYgMTEuNzczNiAyMi42NDgzIDEwLjg1NyAyMS45MDMxQzEwLjc2ODEgMjEuODMxIDEwLjc2ODEgMjEuNjk2IDEwLjg1NyAyMS42MjQxQzExLjc3MzYgMjAuODc4OSAxMi45NDE3IDIwLjQzMTEgMTQuMjE1NSAyMC40MzExSDE3Ljc2ODVDMTkuMDQyMyAyMC40MzExIDIwLjIxMDMgMjAuODc4OSAyMS4xMjcgMjEuNjI0MUMyMS4yMTU4IDIxLjY5NiAyMS4yMTU4IDIxLjgzMSAyMS4xMjcgMjEuOTAzMUMyMC4yMTAzIDIyLjY0ODMgMTkuMDQyMyAyMy4wOTYgMTcuNzY4NSAyMy4wOTZaTTIzLjA5ODEgMTUuOTg5N1YxNy43NjY0QzIzLjA5ODEgMTkuMDQwMiAyMi42NTAzIDIwLjIwODMgMjEuOTA1MSAyMS4xMjQ5QzIxLjgzMzIgMjEuMjEzNyAyMS42OTgyIDIxLjIxMzcgMjEuNjI2MSAyMS4xMjQ5QzIwLjg4MDkgMjAuMjA4MyAyMC40MzMzIDE5LjA0MDIgMjAuNDMzMyAxNy43NjY0VjE1Ljk4OTdWMTQuMjEzMkMyMC40MzMzIDEyLjkzOTQgMjAuODgwOSAxMS43NzEzIDIxLjYyNjEgMTAuODU0NkMyMS42OTgyIDEwLjc2NTggMjEuODMzMiAxMC43NjU4IDIxLjkwNTEgMTAuODU0NkMyMi42NTAzIDExLjc3MTMgMjMuMDk4MSAxMi45Mzk0IDIzLjA5ODEgMTQuMjEzMlYxNS45ODk3WiJ9KX0pfSxRPW4oMjY1NTUpLFg9KDAsQy5BeSkoInN2ZyIse3RhcmdldDoiZWEwZHpyYTAifSkoIm1hcmdpbjowIGF1dG87d2lkdGg6OXB4O2hlaWdodDoxNXB4Oz5nPmd7ZmlsbDoiLCgwLEMudzQpKCJoZWFkZXJUaXRsZUNvbG9yIiksIjt9Iik7ZnVuY3Rpb24gJCgpe3JldHVybigwLFMuanN4KShYLHtmb2N1c2FibGU6ImZhbHNlIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjooMCxTLmpzeCkoImciLHtmaWxsOiJub25lIixjaGlsZHJlbjooMCxTLmpzeCkoImciLHtmaWxsOiJjdXJyZW50Q29sb3IiLGNoaWxkcmVuOigwLFMuanN4KSgicG9seWdvbiIse3RyYW5zZm9ybToidHJhbnNsYXRlKC00MCAtMjkpdHJhbnNsYXRlKDQ3LjA3MTA2OCAzNi4wNzEwNjgpcm90YXRlKC0zMTUpdHJhbnNsYXRlKC00Ny4wNzEwNjggLTM2LjA3MTA2OCkiLHBvaW50czoiNDQuMyAzOC44IDQ0LjMgMzEuMSA0Mi4xIDMxLjEgNDIuMSA0MCA0Mi4xIDQxLjEgNTIuMSA0MS4xIDUyLjEgMzguOCJ9KX0pfSl9KX12YXIgdHQ9KDAsQy5BeSkoInN2ZyIse3RhcmdldDoiZTFodWowOHUwIn0pKCJ3aWR0aDoxMnB4O2hlaWdodDoxMnB4O2ZpbGw6IiwoMCxDLnc0KSgidGV4dEVycm9yIiksIjsiKTtmdW5jdGlvbiBldCgpe3JldHVybigwLFMuanN4KSh0dCx7Zm9jdXNhYmxlOiJmYWxzZSIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsdmlld0JveDoiMCAwIDE0IDE0IixjaGlsZHJlbjooMCxTLmpzeCkoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGZpbGw6ImN1cnJlbnRDb2xvciIsZDoiTTMuNCA0YzAtLjY2NS0uNTM1LTEuMi0xLjItMS4yQzEuNTM1IDIuOCAxIDMuMzM1IDEgNGMwIC42NjUuNTM1IDEuMiAxLjIgMS4yLjY2NSAwIDEuMi0uNTM1IDEuMi0xLjJ6bTAgNGMwLS42NjUtLjUzNS0xLjItMS4yLTEuMkMxLjUzNSA2LjggMSA3LjMzNSAxIDhjMCAuNjY1LjUzNSAxLjIgMS4yIDEuMi42NjUgMCAxLjItLjUzNSAxLjItMS4yem0tMS4yIDIuOGMuNjY1IDAgMS4yLjUzNSAxLjIgMS4yIDAgLjY2NS0uNTM1IDEuMi0xLjIgMS4yLS42NjUgMC0xLjItLjUzNS0xLjItMS4yIDAtLjY2NS41MzUtMS4yIDEuMi0xLjJ6TTUgMy42YS40LjQgMCAwMS40LS40aDkuMmEuNC40IDAgMDEuNC40di44YS40LjQgMCAwMS0uNC40SDUuNGEuNC40IDAgMDEtLjQtLjR2LS44em0wIDRhLjQuNCAwIDAxLjQtLjRoOS4yYS40LjQgMCAwMS40LjR2LjhhLjQuNCAwIDAxLS40LjRINS40YS40LjQgMCAwMS0uNC0uNHYtLjh6bTAgNGMwLS4yMi4xOC0uNC40LS40aDcuMmMuMjIgMCAuNC4xOC40LjR2LjhhLjQuNCAwIDAxLS40LjRINS40YS40LjQgMCAwMS0uNC0uNHYtLjh6In0pfSl9dmFyIG50LHJ0PWZ1bmN0aW9uKCl7cmV0dXJuKDAsUy5qc3gpKFcse2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLHZpZXdCb3g6IjAgMCAxOCAxOCIsY2hpbGRyZW46KDAsUy5qc3gpKCJnIix7c3Ryb2tlV2lkdGg6IjEiLGZpbGxSdWxlOiJldmVub2RkIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixmaWxsOiJub25lIixjaGlsZHJlbjooMCxTLmpzeHMpKCJnIix7c3Ryb2tlOiJjdXJyZW50Q29sb3IiLGNoaWxkcmVuOlsoMCxTLmpzeCkoInBhdGgiLHtkOiJNMTYuNyA5QzE2LjcgMTMuMiAxMy4yIDE2LjcgOSAxNi43IDQuOCAxNi43IDEuMyAxMy4yIDEuMyA5IDEuMyA0LjggNC44IDEuMyA5IDEuMyAxMy4yIDEuMyAxNi43IDQuOCAxNi43IDlMMTYuNyA5WiJ9KSwoMCxTLmpzeCkoInBhdGgiLHtkOiJNMTQuNyAzLjhDMTQuNyAzLjggMTQuMyA1LjcgMTMgNi4zIDExLjcgNiAxMC4zIDcgMTAuNyA3IDExIDcgMTEuMyA4LjMgMTEuMyA4LjMgMTEuNyA4LjcgMTIuMyA4LjMgMTIuMyA4LjMgMTMuMiA5LjIgMTEgMTAuNyAxMSAxMSAxMSAxMS4zIDExLjggMTEuNSAxMS4zIDEyIDEwLjggMTIuNSAxMC4zIDEyLjcgMTAuMyAxMi43IDEwLjMgMTQuMyA4LjcgMTQuMyA4LjMgMTQuMyA4IDE0LjMgNy4zIDEzIDcuMyAxMi43IDcuMyAxMi4zIDcuNyAxMiA3LjcgMTEuNyA3LjcgMTEuMyA3IDEwLjcgNyAxMC43IDcgOS4zIDYgOS43IDUgOS43IDQgOS43IDQgOC4zIDQgOC4zIDQgOC4zIDQgNiA1LjcgNS43IDcuMyA1LjMgNy4zIDYgNy4zIDYgOCA2LjcgOS4zIDYgMTAgNiAxMCA2IDEwLjMgMy43IDkuNyA0IDkgNC4zIDguNCA0LjEgOC4zIDMuMyA4LjIgMi4zIDExLjIgMS43IDExLjIgMS43In0pXX0pfSl9KX07ZnVuY3Rpb24gb3QoKXtyZXR1cm4gb3Q9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxvdC5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIGl0LGF0PWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsb3Qoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDMyIDMyIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksbnR8fChudD1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNMzAuMyAxNmMwIDcuODk4LTYuNDAyIDE0LjMtMTQuMyAxNC4zUzEuNyAyMy44OTggMS43IDE2IDguMTAyIDEuNyAxNiAxLjcgMzAuMyA4LjEwMiAzMC4zIDE2bTEuNyAwYzAgOC44MzctNy4xNjMgMTYtMTYgMTZTMCAyNC44MzcgMCAxNiA3LjE2MyAwIDE2IDBzMTYgNy4xNjMgMTYgMTZtLTguNTg3LTEuNDEyQTEuOTMgMS45MyAwIDAgMCAyMiAxNHEtLjgyNCAwLTEuNDEzLjU4OEExLjkzIDEuOTMgMCAwIDAgMjAgMTZxMCAuODI0LjU4NyAxLjQxM1EyMS4xNzYgMTggMjIgMTh0MS40MTMtLjU4N1EyNCAxNi44MjUgMjQgMTZ0LS41ODctMS40MTJtLTYgMEExLjkzIDEuOTMgMCAwIDAgMTYgMTRxLS44MjUgMC0xLjQxMi41ODhBMS45MyAxLjkzIDAgMCAwIDE0IDE2cTAgLjgyNC41ODggMS40MTNRMTUuMTc1IDE4IDE2IDE4cS44MjQgMCAxLjQxMy0uNTg3UTE4IDE2LjgyNSAxOCAxNnQtLjU4Ny0xLjQxMm0tNiAwQTEuOTMgMS45MyAwIDAgMCAxMCAxNHEtLjgyNSAwLTEuNDEyLjU4OEExLjkzIDEuOTMgMCAwIDAgOCAxNnEwIC44MjQuNTg4IDEuNDEzUTkuMTc1IDE4IDEwIDE4dDEuNDEyLS41ODdUMTIgMTZ0LS41ODgtMS40MTIiLGNsaXBSdWxlOiJldmVub2RkIn0pKSl9LHV0PWZ1bmN0aW9uKHQpe3ZhciBlPXQuY29sb3Isbj0oMCxKLkEpKCkscj1TdHJpbmcobltlXSk7cmV0dXJuKDAsUy5qc3gpKCJzdmciLHt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6Ii0yIC0xIDE2IDE2IixmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOigwLFMuanN4KSgicGF0aCIse2Q6Ik02IDlDNy42NiA5IDkgNy42NiA5IDZWM0M5IDEuMzQgNy42NiAwIDYgMEM0LjM0IDAgMyAxLjM0IDMgM1Y2QzMgNy42NiA0LjM0IDkgNiA5Wk0xMC41IDVWNkMxMC41IDguNDggOC40OCAxMC41IDYgMTAuNUMzLjUyIDEwLjUgMS41IDguNDggMS41IDZWNUgwVjZDMCA5LjA2IDIuMjkgMTEuNTggNS4yNSAxMS45NVYxNEg2Ljc1VjExLjk1QzkuNzEgMTEuNTggMTIgOS4wNiAxMiA2VjVIMTAuNVoiLGZpbGw6cn0pfSl9O2Z1bmN0aW9uIHN0KCl7cmV0dXJuIHN0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sc3QuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBjdCxsdD1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLHN0KHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxpdHx8KGl0PW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZDoiTTQuNSA4YTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwbTUgMGExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMG01IDBhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDAifSkpKX07ZnVuY3Rpb24gZnQoKXtyZXR1cm4oMCxTLmpzeCkoInN2ZyIse2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjooMCxTLmpzeCkoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGQ6Ik04IDIuNUM4LjQ2MTA2IDIuNSA4LjgzNDgyIDIuODczNzYgOC44MzQ4MiAzLjMzNDgyVjcuMTY1MThMMTIuNjY1MiA3LjE2NTE4QzEzLjEyNjIgNy4xNjUxOCAxMy41IDcuNTM4OTQgMTMuNSA4QzEzLjUgOC40NjEwNiAxMy4xMjYyIDguODM0ODIgMTIuNjY1MiA4LjgzNDgyTDguODM0ODIgOC44MzQ4MlYxMi42NjUyQzguODM0ODIgMTMuMTI2MiA4LjQ2MTA2IDEzLjUgOCAxMy41QzcuNTM4OTQgMTMuNSA3LjE2NTE4IDEzLjEyNjIgNy4xNjUxOCAxMi42NjUyVjguODM0ODJIMy4zMzQ4MkMyLjg3Mzc2IDguODM0ODIgMi41IDguNDYxMDYgMi41IDhDMi41IDcuNTM4OTQgMi44NzM3NiA3LjE2NTE4IDMuMzM0ODIgNy4xNjUxOEg3LjE2NTE4VjMuMzM0ODJDNy4xNjUxOCAyLjg3Mzc2IDcuNTM4OTQgMi41IDggMi41WiIsZmlsbDoiY3VycmVudENvbG9yIn0pfSl9ZnVuY3Rpb24gZHQoKXtyZXR1cm4gZHQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxkdC5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIHB0PWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZHQoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTcsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNyAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLGN0fHwoY3Q9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoibTQuNTYzIDE0LjYwNSA5LjM1Ni01LjQwMmMxLS41NzcgMS0yLjAyIDAtMi41OThMNC41NjMgMS4yMDNhMS41IDEuNSAwIDAgMC0yLjI1IDEuM3YxMC44MDNhMS41IDEuNSAwIDAgMCAyLjI1IDEuM002LjUxIDguMzg3IDIuMzEzIDkuNTEyVjYuMjk3TDYuNTEgNy40MmMuNDk0LjEzMy40OTQuODM0IDAgLjk2NiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpKX0saHQ9big3OTk4OCksdnQ9KDAsQy5BeSkoInN2ZyIse3RhcmdldDoiZTFldTUzOG0wIn0pKCIucHJpbWFyeXtmaWxsOmN1cnJlbnRDb2xvcjt9LnNlY29uZGFyeXtmaWxsOiIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRoZW1lLmljb25PbkludmVyc2V9KSwiO30iKSx5dD1mdW5jdGlvbigpe3JldHVybigwLFMuanN4cykodnQse3dpZHRoOiIzMyIsaGVpZ2h0OiIzMiIsdmlld0JveDoiMCAwIDMzIDMyIixmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOlsoMCxTLmpzeCkoInBhdGgiLHtjbGFzc05hbWU6InByaW1hcnkiLGZpbGxSdWxlOiJldmVub2RkIixjbGlwUnVsZToiZXZlbm9kZCIsZDoiTTI3LjMzMzQgMi42NjY3NUMyOC43MTQxIDIuNjY2NzUgMjkuODMzNCAzLjc4NjA0IDI5LjgzMzQgNS4xNjY3NVYyMi41MDAxQzI5LjgzMzQgMjIuNTAzOCAyOS44MzM0IDIyLjUwNzUgMjkuODMzMyAyMi41MTEyVjI4Ljk0NTJDMjkuODMzMyAzMC4yODAyIDI4LjIyMDMgMzAuOTUwMSAyNy4yNzQ2IDMwLjAwNzhMMjEuMjQ0OSAyNC4wMDAxSDUuNjY2NzFDNC4yODYgMjQuMDAwMSAzLjE2NjcxIDIyLjg4MDggMy4xNjY3MSAyMS41MDAxVjUuMTY2NzVDMy4xNjY3MSAzLjc4NjA0IDQuMjg2IDIuNjY2NzUgNS42NjY3MSAyLjY2Njc1SDI3LjMzMzRaIn0pLCgwLFMuanN4KSgicGF0aCIse2NsYXNzTmFtZToic2Vjb25kYXJ5IixmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0yMyA5LjY2Njc1QzIzLjU1MjMgOS42NjY3NSAyNCAxMC4xMTQ1IDI0IDEwLjY2NjdDMjQgMTEuMjE5IDIzLjU1MjMgMTEuNjY2NyAyMyAxMS42NjY3SDkuNjY2NjdDOS4xMTQzOCAxMS42NjY3IDguNjY2NjcgMTEuMjE5IDguNjY2NjcgMTAuNjY2N0M4LjY2NjY3IDEwLjExNDUgOS4xMTQzOCA5LjY2Njc1IDkuNjY2NjcgOS42NjY3NUgyM1pNMTcgMTYuMzMzNEMxNy41NTIzIDE2LjMzMzQgMTggMTYuNzgxMSAxOCAxNy4zMzM0QzE4IDE3Ljg4NTcgMTcuNTUyMyAxOC4zMzM0IDE3IDE4LjMzMzRIMTAuMzMzM0M5Ljc4MTA1IDE4LjMzMzQgOS4zMzMzMyAxNy44ODU3IDkuMzMzMzMgMTcuMzMzNEM5LjMzMzMzIDE2Ljc4MTEgOS43ODEwNSAxNi4zMzM0IDEwLjMzMzMgMTYuMzMzNEgxN1oifSldfSl9LGd0PW4oNjY3NDgpO2Z1bmN0aW9uIG10KCl7cmV0dXJuKDAsUy5qc3gpKCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhtbG5zWGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHdpZHRoOiIxNnB4IixoZWlnaHQ6IjE2cHgiLHZpZXdCb3g6IjAgMCAxNiAxNiIsdmVyc2lvbjoiMS4xIixjaGlsZHJlbjooMCxTLmpzeCkoImciLHtpZDoic3VyZmFjZTEiLGNoaWxkcmVuOigwLFMuanN4KSgicGF0aCIse3N0eWxlOntzdHJva2U6Im5vbmUiLGZpbGxSdWxlOiJub256ZXJvIixmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxPcGFjaXR5OjF9LGQ6Ik0gMCAxNC40Mzc1IEwgOCAxNC40Mzc1IEwgOCAxMi40Mzc1IEwgMCAxMi40Mzc1IFogTSAwIDExLjEwMTU2MiBMIDE2IDExLjEwMTU2MiBMIDE2IDkuMTAxNTYyIEwgMCA5LjEwMTU2MiBaIE0gMCA3Ljc3MzQzOCBMIDE2IDcuNzczNDM4IEwgMTYgNS43NzM0MzggTCAwIDUuNzczNDM4IFogTSAwIDIuNDM3NSBMIDAgNC40Mzc1IEwgMTYgNC40Mzc1IEwgMTYgMi40Mzc1IFogTSAwIDIuNDM3NSAifSl9KX0pfXZhciBidD1uKDUwMjgyKSx3dD1uKDIyNTMyKSxfdD1uKDU0NzI2KSxTdD1uKDEzNjA2KSx4dD1mdW5jdGlvbigpe3JldHVybigwLFMuanN4cykoInN2ZyIse3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2IixmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOlsoMCxTLmpzeCkoImNpcmNsZSIse2N4OiI3LjUiLGN5OiI3LjUiLHI6IjQuNjI1IixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjEuNzUifSksKDAsUy5qc3gpKCJwYXRoIix7ZDoiTTEzLjM4MTMgMTQuNjE4N0MxMy43MjMgMTQuOTYwNCAxNC4yNzcgMTQuOTYwNCAxNC42MTg3IDE0LjYxODdDMTQuOTYwNCAxNC4yNzcgMTQuOTYwNCAxMy43MjMgMTQuNjE4NyAxMy4zODEzTDEzLjM4MTMgMTQuNjE4N1pNMTAuMzgxMyAxMS42MTg3TDEzLjM4MTMgMTQuNjE4N0wxNC42MTg3IDEzLjM4MTNMMTEuNjE4NyAxMC4zODEzTDEwLjM4MTMgMTEuNjE4N1oiLGZpbGw6ImN1cnJlbnRDb2xvciJ9KV19KX0sRXQ9big1Njg2NiksQ3Q9ZnVuY3Rpb24oKXtyZXR1cm4oMCxTLmpzeCkoInN2ZyIse2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsY2hpbGRyZW46KDAsUy5qc3gpKCJwYXRoIix7ZDoiTTEuMzg4IDE1Ljc3Yy0uOTc3LjUxOC0xLjU3Mi4wNjEtMS4zMjktMS4wMTlsMS4wMzMtNC41ODVjLjEyMy0uNTQzLjY1OS0xLjAzNCAxLjIxNi0xLjFsNi4xOTUtLjcyYzEuNjQ4LS4xOSAxLjY1NC0uNDk4IDAtLjY4N2wtNi4xOTUtLjcwOGMtLjU1LS4wNjMtMS4wOS0uNTQtMS4yMTItMS4wODVMLjA1NiAxLjIzNEMtLjE4Ny4xNjEuNDA4LS4yODkgMS4zODcuMjMxbDEyLjg1IDYuODI5Yy45NzguNTE5Ljk4IDEuMzYgMCAxLjg4bC0xMi44NSA2LjgzeiIsZmlsbFJ1bGU6ImV2ZW5vZGQifSl9KX0sT3Q9KDAsQy5BeSkoInN2ZyIse3RhcmdldDoiZXhiNTZwaTAifSkoIndpZHRoOjEycHg7aGVpZ2h0OjEycHg7ZmlsbDoiLCgwLEMudzQpKCJ0ZXh0RXJyb3IiKSwiOyIpO2Z1bmN0aW9uIEF0KCl7cmV0dXJuKDAsUy5qc3hzKShPdCx7Zm9jdXNhYmxlOiJmYWxzZSIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsdmlld0JveDoiMCAwIDE1IDE1IixjaGlsZHJlbjpbKDAsUy5qc3gpKCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGNsaXBSdWxlOiJldmVub2RkIixmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik04IDVhMy41IDMuNSAwIDAxMi44MzIgNS41NTdMOCA4LjVWNXptNi4wNS0xLjgxOGwuNDY4LjU4NmMuMTEzLjA4My4wOC4yNjYtLjA2NC4zNjdMMTIuNjcgNS40M2MtLjA4My4xMTEtLjI2Ny4wNzktLjM2OS0uMDY1bC0uNDY4LS41ODZjLS4xMTItLjA4My0uMDgtLjI2Ni4wNjUtLjM2N2wxLjg0NS0xLjI4NGMuMDcyLS4wNS4yNTctLjAxOC4zMDcuMDU0eiJ9KSwoMCxTLmpzeCkoInJlY3QiLHt4OiI1LjUiLHdpZHRoOiI1IixoZWlnaHQ6IjEuNSIscng6Ii41IixmaWxsOiJjdXJyZW50Q29sb3IifSksKDAsUy5qc3gpKCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGNsaXBSdWxlOiJldmVub2RkIixmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik04IDEzLjVhNSA1IDAgMTAwLTEwIDUgNSAwIDAwMCAxMHpNOCAxNUE2LjUgNi41IDAgMTA4IDJhNi41IDYuNSAwIDAwMCAxM3oifSksKDAsUy5qc3gpKCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGNsaXBSdWxlOiJldmVub2RkIixmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik04LjUgMXYyaC0xVjFoMXoifSldfSl9dmFyIEl0LGt0PWZ1bmN0aW9uKHQpe3ZhciBlPXQuY29sb3Isbj0oMCxKLkEpKCkscj1TdHJpbmcobltlXSk7cmV0dXJuKDAsUy5qc3gpKCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOnIsc3Ryb2tlOiJub25lIixjaGlsZHJlbjooMCxTLmpzeCkoInBhdGgiLHtkOiJNMTcgNGgtMTBhMyAzIDAgMCAwIC0zIDN2MTBhMyAzIDAgMCAwIDMgM2gxMGEzIDMgMCAwIDAgMyAtM3YtMTBhMyAzIDAgMCAwIC0zIC0zeiJ9KX0pfSxMdD1uKDgxNzI5KSxUdD1uKDQ1MCksanQ9bigzMzkxNiksUHQ9big4NjMzNCksTnQ9big3MzM1KTtmdW5jdGlvbiBNdCgpe3JldHVybiBNdD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LE10LmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgUnQsVXQsenQsSHQ9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixNdCh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNCxoZWlnaHQ6MTAsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE0IDEwIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksSXR8fChJdD1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik0wIDguOTZjMC0uMzM2IDAtLjUwNC4wNjUtLjYzMmEuNi42IDAgMCAxIC4yNjMtLjI2M0MuNDU2IDggLjYyNCA4IC45NiA4aDkuMDhjLjMzNiAwIC41MDQgMCAuNjMyLjA2NWEuNi42IDAgMCAxIC4yNjMuMjYzYy4wNjUuMTI4LjA2NS4yOTYuMDY1LjYzMnYuMDhjMCAuMzM2IDAgLjUwNC0uMDY1LjYzMmEuNi42IDAgMCAxLS4yNjMuMjYzYy0uMTI4LjA2NS0uMjk2LjA2NS0uNjMyLjA2NUguOTZjLS4zMzYgMC0uNTA0IDAtLjYzMi0uMDY1YS42LjYgMCAwIDEtLjI2My0uMjYzQzAgOS41NDQgMCA5LjM3NiAwIDkuMDR6bTAtNGMwLS4zMzYgMC0uNTA0LjA2NS0uNjMyYS42LjYgMCAwIDEgLjI2My0uMjYzQy40NTYgNCAuNjI0IDQgLjk2IDRoNS4wOGMuMzM2IDAgLjUwNCAwIC42MzIuMDY1YS42LjYgMCAwIDEgLjI2My4yNjNDNyA0LjQ1NiA3IDQuNjI0IDcgNC45NnYuMDhjMCAuMzM2IDAgLjUwNC0uMDY1LjYzMmEuNi42IDAgMCAxLS4yNjMuMjYzQzYuNTQ0IDYgNi4zNzYgNiA2LjA0IDZILjk2Yy0uMzM2IDAtLjUwNCAwLS42MzItLjA2NWEuNi42IDAgMCAxLS4yNjMtLjI2M0MwIDUuNTQ0IDAgNS4zNzYgMCA1LjA0ek0uMDY1LjMyOEMwIC40NTYgMCAuNjI0IDAgLjk2di4wOGMwIC4zMzYgMCAuNTA0LjA2NS42MzJhLjYuNiAwIDAgMCAuMjYzLjI2M0MuNDU2IDIgLjYyNCAyIC45NiAyaDEyLjA4Yy4zMzYgMCAuNTA0IDAgLjYzMi0uMDY1YS42LjYgMCAwIDAgLjI2My0uMjYzQzE0IDEuNTQ0IDE0IDEuMzc2IDE0IDEuMDRWLjk2YzAtLjMzNiAwLS41MDQtLjA2NS0uNjMyYS42LjYgMCAwIDAtLjI2My0uMjYzQzEzLjU0NCAwIDEzLjM3NiAwIDEzLjA0IDBILjk2Qy42MjQgMCAuNDU2IDAgLjMyOC4wNjVhLjYuNiAwIDAgMC0uMjYzLjI2MyJ9KSkpfSxGdD1uKDczODAwKSxEdD1mdW5jdGlvbih0KXt2YXIgZT10LmNvbG9yLG49KDAsSi5BKSgpLHI9ZT9TdHJpbmcobltlXSk6ImN1cnJlbnRDb2xvciI7cmV0dXJuKDAsUy5qc3gpKCJzdmciLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHZpZXdCb3g6IjAgMCAxOCAxOCIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjooMCxTLmpzeCkoInBhdGgiLHtkOiJNMi4yNSA3LjVMMi4yNSAxMC41TTUuNjI1IDguMjVWOS43NU05IDQuNVYxMy41TTEyLjM3NSAyLjI1VjE1Ljc1TTE1Ljc1IDcuNVYxMC41IixzdHJva2U6cixzdHJva2VXaWR0aDoiMS42IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIn0pfSl9O2Z1bmN0aW9uIEJ0KCl7cmV0dXJuIEJ0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sQnQuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBWdCxHdD1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLEJ0KHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxSdHx8KFJ0PW8uY3JlYXRlRWxlbWVudCgicGF0aCIse3N0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoxLjcsZDoiTTguMzEyIDEyVjcifSkpLFV0fHwoVXQ9by5jcmVhdGVFbGVtZW50KCJjaXJjbGUiLHtyOjEuMSxmaWxsOiJjdXJyZW50Q29sb3IiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDguMzEyIDUuMSkifSkpLHp0fHwoenQ9by5jcmVhdGVFbGVtZW50KCJjaXJjbGUiLHtjeDo4LjMxMyxjeTo4LHI6Ni41LHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoxLjc1fSkpKX07ZnVuY3Rpb24gcXQoKXtyZXR1cm4gcXQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxxdC5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFd0LEt0PWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIscXQoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6OCxoZWlnaHQ6MTIsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDggMTIiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxWdHx8KFZ0PW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZDoiTTYuNzEuNzFhLjk5Ni45OTYgMCAwIDAtMS40MSAwTC43MSA1LjNhLjk5Ni45OTYgMCAwIDAgMCAxLjQxTDUuMyAxMS4zYS45OTYuOTk2IDAgMSAwIDEuNDEtMS40MUwyLjgzIDZsMy44OC0zLjg4Yy4zOS0uMzkuMzgtMS4wMyAwLTEuNDEifSkpKX07ZnVuY3Rpb24gWnQoKXtyZXR1cm4gWnQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxadC5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIEp0LFl0LFF0PWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsWnQoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLFd0fHwoV3Q9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsT3BhY2l0eTouOSxkOiJNNy45OTMuNUMzLjg1My41LjUgMy44Ni41IDhzMy4zNTMgNy41IDcuNDkzIDcuNWM0LjE0NyAwIDcuNTA3LTMuMzYgNy41MDctNy41UzEyLjE0LjUgNy45OTMuNU04IDE0Yy0zLjMxNSAwLTYtMi42ODUtNi02czIuNjg1LTYgNi02IDYgMi42ODUgNiA2LTIuNjg1IDYtNiA2bS0uMTY1LTkuNzVINy43OWMtLjMgMC0uNTQuMjQtLjU0LjU0djMuNTRjMCAuMjYyLjEzNS41MS4zNjcuNjQ1bDMuMTEzIDEuODY3Yy4yNTUuMTUuNTg1LjA3NS43MzUtLjE4YS41MzMuNTMzIDAgMCAwLS4xODctLjc0Mkw4LjM3NSA4LjE5NVY0Ljc5YzAtLjMtLjI0LS41NC0uNTQtLjU0In0pKSl9LFh0PWZ1bmN0aW9uKCl7dmFyIHQ9KDAsSi5BKSgpO3JldHVybigwLFMuanN4KSgic3ZnIix7d2lkdGg6OCxoZWlnaHQ6OCxjaGlsZHJlbjooMCxTLmpzeCkoImNpcmNsZSIse2ZpbGw6dC5ub3RpZmljYXRpb25GaWxsLGN4OiI4IixyOiI0IixjeToiOCIsc3Ryb2tlV2lkdGg6IjAifSl9KX07ZnVuY3Rpb24gJHQoKXtyZXR1cm4gJHQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSwkdC5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIHRlLGVlPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsJHQoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTgsaGVpZ2h0OjE4LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxOCAxOCIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLEp0fHwoSnQ9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJNMTQuMjUgMy43NXYxMC41SDMuNzVWMy43NXptMC0xLjVIMy43NWMtLjgyNSAwLTEuNS42NzUtMS41IDEuNXYxMC41YzAgLjgyNS42NzUgMS41IDEuNSAxLjVoMTAuNWMuODI1IDAgMS41LS42NzUgMS41LTEuNVYzLjc1YzAtLjgyNS0uNjc1LTEuNS0xLjUtMS41In0pKSxZdHx8KFl0PW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZDoiTTEwLjUgMTIuNzVINS4yNXYtMS41aDUuMjV6bTIuMjUtM2gtNy41di0xLjVoNy41em0wLTNoLTcuNXYtMS41aDcuNXoifSkpKX07ZnVuY3Rpb24gbmUoKXtyZXR1cm4gbmU9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxuZS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIHJlLG9lPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsbmUoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTcsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNyAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLHRlfHwodGU9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJNNy41NjMgMy41N2MwLS41NzUtLjMyNC0xLjExNC0uODcyLTEuMjg1QTYuMyA2LjMgMCAwIDAgNC44MTMgMmE2LjMgNi4zIDAgMCAwLTMuMDQ1Ljc4My45Mi45MiAwIDAgMC0uNDU1LjgxMnY5LjE1NWMwIC41Ni42MzcuOTA4IDEuMTU3LjdBNi4zIDYuMyAwIDAgMSA0LjgxMyAxM2MxLjA1NSAwIDIuMDUuMjYgMi45MjUuNzE5YTEuMjQgMS4yNCAwIDAgMCAxLjE1IDBBNi4zIDYuMyAwIDAgMSAxMS44MTIgMTNjLjgyNyAwIDEuNjE4LjE2IDIuMzQyLjQ1LjUyLjIwOCAxLjE1OC0uMTQgMS4xNTgtLjdWMy41OTVhLjkyLjkyIDAgMCAwLS40NTYtLjgxMkE2LjMgNi4zIDAgMCAwIDExLjgxMyAyYy0uNjU1IDAtMS4yODUuMS0xLjg3OS4yODUtLjU0OC4xNy0uODcxLjcxLS44NzEgMS4yODRWMTFhLjc1Ljc1IDAgMCAxLTEuNSAweiJ9KSkpfTtmdW5jdGlvbiBpZSgpe3JldHVybiBpZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGllLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgYWUsdWUsc2UsY2U9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixpZSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMzIgMzIiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxyZXx8KHJlPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0xNS45OSAyNi41NjZhMi4wNiAyLjA2IDAgMCAxLTEuMDkyLS4yOSAxNyAxNyAwIDAgMC0uNTY1LS4yOThjLTMuNjI5LTEuODI1LTguMDUzLTIuMzc2LTExLjg5MS0uOTItMS4yMi40NzEtMi40NDItLjUyLTIuNDQyLTEuNzc5VjcuOTgzYzAtLjguNDc2LTEuNTQ4IDEuMjMtMS44MzYgNC44MDctMi4wMDUgMTAuNDUtMS4zMTIgMTQuNzYgMS41MzYgNC4zMS0yLjg0NyA5Ljk3My0zLjU0MSAxNC43OC0xLjUzNi43NTQuMjg4IDEuMjMgMS4wMzUgMS4yMyAxLjgzNlYyMy4yOGMwIDEuMjU5LTEuMjIxIDIuMjUtMi40NDIgMS43NzktMy44MzgtMS40NTYtOC4yNjItLjkwNS0xMS44OTEuOTJxLS4yODYuMTQzLS41NjUuMjk4YTIuMTQgMi4xNCAwIDAgMS0xLjExMy4yOW0tLjgyNy0yLjAwNFY5LjExOUMxMC4zNiA2LjE0NyA1Ljg2NSA2LjAxIDEuODY4IDcuNjc2bC0uMDIzLjAwOS0uMDIzLjAwOWEuMjMuMjMgMCAwIDAtLjEwOC4wOTIuMzYuMzYgMCAwIDAtLjA1OC4xOTdWMjMuMjhjMCAuMDg4LjA0NS4xNy4xMDYuMjE3YS4xLjEgMCAwIDAgLjA0OC4wMjRoLjAwNnEuMDAyLjAwMi4wMjktLjAwOGwuMDEtLjAwM2M0LjA4Mi0xLjU0OCA5Ljk2Ni0uOTczIDEzLjMwOCAxLjA1M20xLjY1NSAwVjkuMTE5QzE5LjYxNiA3LjMzNiAyNCA1LjM4NyAzMC4xMzIgNy42NzZsLjAyMy4wMDkuMDIzLjAwOWMuMDM1LjAxMy4wNzQuMDQuMTA4LjA5MmEuMzYuMzYgMCAwIDEgLjA1OC4xOTdWMjMuMjhhLjI4LjI4IDAgMCAxLS4xMDYuMjE3LjEuMSAwIDAgMS0uMDQ4LjAyNGgtLjAwOGwtLjAyNy0uMDA4LS4wMS0uMDAzYy00LjA4Mi0xLjU0OC0xMC4wNDItLjk3My0xMy4zMjcgMS4wNTNtMTAuNTUtMTMuODQzYy0yLjY1Mi0uNTUtNS42MDQtLjE3My04LjA1Ni43OTZhLjgyOC44MjggMCAxIDAgLjYwOCAxLjU0YzIuMTk3LS44NjcgNC44Mi0xLjE5IDcuMTEyLS43MTRhLjgyOC44MjggMCAwIDAgLjMzNi0xLjYyMm0tOC4wNTYgNC42OTNjMi40NTItLjk2OCA1LjQwNC0xLjM0NiA4LjA1Ni0uNzk2YS44MjguODI4IDAgMSAxLS4zMzYgMS42MjJjLTIuMjkyLS40NzUtNC45MTQtLjE1My03LjExMi43MTVhLjgyOC44MjggMCAxIDEtLjYwOC0xLjU0MW04LjA1NiAzLjEwMWMtMi42NTItLjU1LTUuNjA0LS4xNzItOC4wNTYuNzk2YS44MjguODI4IDAgMSAwIC42MDggMS41NDFjMi4xOTctLjg2NyA0LjgyLTEuMTkgNy4xMTItLjcxNWEuODI4LjgyOCAwIDAgMCAuMzM2LTEuNjIyIixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpfTtmdW5jdGlvbiBsZSgpe3JldHVybiBsZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGxlLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgZmUsZGUscGU9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixsZSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDo3NSxoZWlnaHQ6NzUsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDc1IDc1IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksYWV8fChhZT1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik0xNi44NzYgMjAuNjI1SDQ1djMuNzVIMTYuODc2em0wIDkuMzc1SDQ1djMuNzVIMTYuODc2em0wIDkuMzc0aDE1djMuNzVoLTE1em0yOS45OTkgMTYuODc1YzEuMDM1IDAgMS44NzUtMS4yNiAxLjg3NS0yLjgxM3MtLjg0LTIuODEyLTEuODc1LTIuODEyUzQ1IDUxLjg4MyA0NSA1My40MzZzLjg0IDIuODEzIDEuODc1IDIuODEzbTExLjI1IDBjMS4wMzUgMCAxLjg3NC0xLjI2IDEuODc0LTIuODEzcy0uODM5LTIuODEyLTEuODc0LTIuODEyLTEuODc1IDEuMjU5LTEuODc1IDIuODEyLjg0IDIuODEzIDEuODc1IDIuODEzIn0pKSx1ZXx8KHVlPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik02OC45OCA1NC43M2ExNi41IDE2LjUgMCAwIDAtLjk5My0zLjE2OSAxNyAxNyAwIDAgMC0xLjU1Ni0yLjgxMiAxNi45IDE2LjkgMCAwIDAtNC41NTYtNC42MTMgMTcgMTcgMCAwIDAtMi44Ny0xLjU1NiAxNyAxNyAwIDAgMC0zLjE2OC0uOTkzIDIwIDIwIDAgMCAwLTEuNDYyLS4yMjVWMTEuMjVhMS44OCAxLjg4IDAgMCAwLS41NDQtMS4zMzFMNDQuNDU2LjU0NEExLjg4IDEuODggMCAwIDAgNDMuMTI1IDBIOS4zNzVDOC4zNCAwIDcuNTAyLjg0IDcuNTAyIDEuODc1djU5Ljk5OWMwIDEuMDM1Ljg0IDEuODc1IDEuODc1IDEuODc1aDI3LjE2OHEuMDUuMTQyLjA5OC4yODZjLjA3NC4yMjIuMTQ3LjQ0MS4yNC42NTFhMTYuOSAxNi45IDAgMCAwIDMuNjE4IDUuMzYybDIuNjI1LTIuNTVhMTMuMSAxMy4xIDAgMCAxLTIuODEyLTQuMTYyIDEzLjEzIDEzLjEzIDAgMCAxIDEuMi0xMi40NSAxMy4xIDEzLjEgMCAwIDEgNS43NzQtNC43NjIgMTMgMTMgMCAwIDEgMi40NTYtLjc2OSAxMy40IDEzLjQgMCAwIDEgNS4yODggMCAxMy4xMyAxMy4xMyAwIDAgMSA5LjM3NSA3Ljc0NGMuMzM3Ljc5LjU5NSAxLjYxNC43NjggMi40NTZhMTMuMyAxMy4zIDAgMCAxIDAgNS4yODcgMTMuMSAxMy4xIDAgMCAxLTMuNTgxIDYuNjE5IDEzLjQgMTMuNCAwIDAgMS0xLjg3NSAxLjYxMiAxMy4xIDEzLjEgMCAwIDEtNC42ODcgMS45NyAxMy40IDEzLjQgMCAwIDEtNS4yODggMCAxMyAxMyAwIDAgMS0yLjQ1Ni0uNzdsLTEuNDYyIDMuNDVhMTYuOSAxNi45IDAgMCAwIDYuNjc1IDEuMjc1IDE2Ljc1IDE2Ljc1IDAgMCAwIDYuNTYyLTEuMzMgMTcgMTcgMCAwIDAgMi44MTMtMS41NTcgMTYuOSAxNi45IDAgMCAwIDQuNTU2LTQuNjEyIDE3IDE3IDAgMCAwIDEuNTU2LTIuODcgMTYuNiAxNi42IDAgMCAwIC45OTQtMy4xNjhjLjQ1NS0yLjI0LjQ1NS00LjU0OCAwLTYuNzg3ek00My4xMjYgMy43NWw2LjczMSA2LjczMWgtNi43MzF6bTYuMDQgMzcuODFjLjQ3My0uMTA1Ljk3NC0uMjE3IDEuNDYtLjIxN1YxNUg0MS4yNWExLjg3NSAxLjg3NSAwIDAgMS0xLjg3NS0xLjg3NVYzLjc1SDExLjI1MXY1Ni4yNDloMTguODhhNS42MjUgNS42MjUgMCAwIDAgNS43OTQtNC44MTl2LS4zOTRjLjIyLTEuMDg2LjU0Ni0yLjE0Ny45NzUtMy4xNjhhMTcgMTcgMCAwIDEgMS41NTYtMi44N2MuNjAzLS45MiAxLjI5NC0xLjc4IDIuMDYzLTIuNTY4YTE2LjkgMTYuOSAwIDAgMSA4LjUzLTQuNTkzeiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpLHNlfHwoc2U9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJtNTYuMjUgNjUuNTIgMi42NDMtMi42NDRjLTMuODM2LTMuODM3LTEwLjA1Ni0zLjgzNy0xMy44OTMgMGwyLjY0NCAyLjY0M2E2LjIyNSA2LjIyNSAwIDAgMSA4LjYwNiAwIn0pKSl9O2Z1bmN0aW9uIGhlKCl7cmV0dXJuIGhlPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0saGUuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciB2ZSx5ZT1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLGhlKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxmZXx8KGZlPW8uY3JlYXRlRWxlbWVudCgiY2lyY2xlIix7cjoyLjk1NSxmaWxsOiJjdXJyZW50Q29sb3IiLHRyYW5zZm9ybToibWF0cml4KC0xIDAgMCAxIDggMy45NTUpIn0pKSxkZXx8KGRlPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZDoiTTEzLjUgMTRjLjU1MiAwIDEuMDAyLS40NS45LS45OTMtLjE5Mi0xLjAyOC0uNzI5LTIuNDk3LTIuMTU1LTMuNjEtLjU1Ny0uNDY0LTIuMTg2LTEuMzA2LTQuMjQ1LTEuMzA2cy0zLjY4OC44NDItNC4yNDUgMS4zMDdjLTEuNDI3IDEuMTEyLTEuOTYzIDIuNTgtMi4xNTUgMy42MDktLjEwMi41NDMuMzQ4Ljk5My45Ljk5M3oifSkpKX07ZnVuY3Rpb24gZ2UoKXtyZXR1cm4gZ2U9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxnZS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIG1lLGJlPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsZ2Uoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLHZlfHwodmU9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJNMTIuMjg2IDExLjVoLTIuMTQzTDguNzE0IDguN1Y0LjVIMTN2NC4yaC0yLjE0M3ptLTUuNzE1IDBINC40M0wzIDguN1Y0LjVoNC4yODZ2NC4ySDUuMTQzeiJ9KSkpfSx3ZT1uKDY2MzcyKTtmdW5jdGlvbiBfZSgpe3JldHVybiBfZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LF9lLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgU2UseGUsRWUsQ2U9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixfZSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksbWV8fChtZT1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsc3Ryb2tlV2lkdGg6MS43LGQ6Ik0xMS41IDkuNSA4IDYgNC41IDkuNSJ9KSkpfSxPZT1uKDMwNjA4KTtmdW5jdGlvbiBBZSgpe3JldHVybiBBZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LEFlLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgSWUsa2UsTGUsVGU9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixBZSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksU2V8fChTZT1vLmNyZWF0ZUVsZW1lbnQoInJlY3QiLHt3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoiY3VycmVudENvbG9yIixyeDo4fSkpLHhlfHwoeGU9by5jcmVhdGVFbGVtZW50KCJnIix7Y2xpcFBhdGg6InVybCgjYjM0NmEpIn0sby5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJNOC4wMDcgNS42ODdhNy43IDcuNyAwIDAgMC0xLjI3NC0uNjE0IDcuNyA3LjcgMCAwIDAtMS40Mi0uNDA2Yy0uMTA2LS4wMi0uMjEzLS4wNDctLjMyLS4wNkE3IDcgMCAwIDAgNCA0LjUyN3Y2LjE4YTcuODUgNy44NSAwIDAgMSA0IDEuMTYgNy44NSA3Ljg1IDAgMCAxIDQtMS4xNnYtNi4xOGE3Ljg1IDcuODUgMCAwIDAtNCAxLjE2em0zIDQuMDg2YTkgOSAwIDAgMC0zIC45NFY2Ljg2bC41Mi0uMzJhNi44IDYuOCAwIDAgMSAyLjQ4LS45MnoifSkpKSxFZXx8KEVlPW8uY3JlYXRlRWxlbWVudCgiZGVmcyIsbnVsbCxvLmNyZWF0ZUVsZW1lbnQoImNsaXBQYXRoIix7aWQ6ImIzNDZhIn0sby5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiI2ZmZiIsZDoiTTQgNGg4djhINHoifSkpKSkpfTtmdW5jdGlvbiBqZSgpe3JldHVybiBqZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGplLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgUGUsTmUsTWUsUmU9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixqZSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksSWV8fChJZT1vLmNyZWF0ZUVsZW1lbnQoInJlY3QiLHt3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoiY3VycmVudENvbG9yIixyeDo4fSkpLGtlfHwoa2U9by5jcmVhdGVFbGVtZW50KCJnIix7ZmlsbDoiY3VycmVudENvbG9yIixjbGlwUGF0aDoidXJsKCNmZmM3YSkifSxvLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNOC40NCAxMC4yM2MtLjMzNSAwLS42Ni0uMDY1LS45NjUtLjE4bC0uMjE1LjIxNWExLjEwMyAxLjEwMyAwIDAgMS0xLjUyIDAgMS4wNyAxLjA3IDAgMCAxLS4zMTUtLjc2YzAtLjI4NS4xMS0uNTU1LjMxNS0uNzZsMS4wNi0xLjA2YTEuMDcgMS4wNyAwIDAgMSAxLjUyIDBjLjA1NS4wNTUuMS4xMTUuMTQ1LjE4aC4wM2MuMDQgMCAuMTE1LS4wMS4xNzUtLjA3NWwuNDYtLjQ2YTEuNiAxLjYgMCAwIDAtLjIwNS0uMjVjLS43NS0uNzUtMS45Ny0uNzUtMi43MjUgMEw1LjE0IDguMTRhMS45IDEuOSAwIDAgMC0uNTY1IDEuMzZjMCAuNTE1LjIgMSAuNTY1IDEuMzYuMzY1LjM2NS44NDUuNTY1IDEuMzYuNTY1czEtLjIgMS4zNi0uNTY1bC42NC0uNjRzLS4wNC4wMDUtLjA2LjAwNXoifSksby5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTEwLjg2IDUuMTRjLS43MjUtLjcyNS0xLjk5NS0uNzMtMi43MiAwbC0uNTUuNTVjLjM1IDAgLjY4LjA4Ljk5NS4yMWwuMTYtLjE2Yy4yMDUtLjIwNS40NzUtLjMxNS43Ni0uMzE1cy41NTUuMTEuNzYuMzE1LjMxNS40NzUuMzE1Ljc2LS4xMS41NTUtLjMxNS43NmwtMS4wNiAxLjA2YTEuMTAzIDEuMTAzIDAgMCAxLTEuNTIgMCAxIDEgMCAwIDEtLjA5NS0uMTJoLS4wMmEuMjUuMjUgMCAwIDAtLjE3NS4wNjVsLS40NjUuNDY1Yy4wNS4wNjUuMS4xMzUuMTYuMTk1LjM2NS4zNjUuODQ1LjU2NSAxLjM2LjU2NXMxLS4yIDEuMzYtLjU2NWwxLjA2LTEuMDZjLjM2NS0uMzY1LjU2NS0uODQ1LjU2NS0xLjM2cy0uMi0xLS41NjUtMS4zNnoifSkpKSxMZXx8KExlPW8uY3JlYXRlRWxlbWVudCgiZGVmcyIsbnVsbCxvLmNyZWF0ZUVsZW1lbnQoImNsaXBQYXRoIix7aWQ6ImZmYzdhIn0sby5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiI2ZmZiIsZDoiTTQgNGg4djhINHoifSkpKSkpfTtmdW5jdGlvbiBVZSgpe3JldHVybiBVZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LFVlLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgemUsSGUsRmUsRGU9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixVZSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoyNCxoZWlnaHQ6MjQsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDI0IDI0IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksUGV8fChQZT1vLmNyZWF0ZUVsZW1lbnQoIm1hc2siLHtpZDoiMDQ1ZmEiLGZpbGw6Im5vbmUifSxvLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTIyLjUgMTJjMCA1Ljc5OS00LjcwMSAxMC41LTEwLjUgMTAuNVMxLjUgMTcuNzk5IDEuNSAxMiA2LjIwMSAxLjUgMTIgMS41IDIyLjUgNi4yMDEgMjIuNSAxMk0xMS45MjYgNy44NWExLjU2IDEuNTYgMCAwIDAtMS40NjUgMS4wMi44NS44NSAwIDEgMS0xLjU5NC0uNTg4IDMuMjYgMy4yNiAwIDEgMSA1LjU0NyAzLjIzM2wtLjAxOS4wMjItLjAyLjAyMS0xLjA3NSAxLjEwNS0uMDA2LjAwNi0uMDA2LjAwNmMtLjMxOS4zMTUtLjUxMi41MzQtLjUxMi45NHYuMzYzYS44NS44NSAwIDAgMS0xLjcgMHYtLjM2NGMwLTEuMTQ0LjY2NC0xLjggMS4wMDMtMi4xMzRsLjAwOS0uMDA4IDEuMDQ2LTEuMDc2YTEuNTYgMS41NiAwIDAgMC0xLjIwOC0yLjU0Nm0wIDkuOTE3YS44ODQuODg0IDAgMSAwIDAtMS43NjcuODg0Ljg4NCAwIDAgMCAwIDEuNzY3IixjbGlwUnVsZToiZXZlbm9kZCIsc2hhcGVSZW5kZXJpbmc6ImNyaXNwRWRnZXMifSkpKSxOZXx8KE5lPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0yMi41IDEyYzAgNS43OTktNC43MDEgMTAuNS0xMC41IDEwLjVTMS41IDE3Ljc5OSAxLjUgMTIgNi4yMDEgMS41IDEyIDEuNSAyMi41IDYuMjAxIDIyLjUgMTJNMTEuOTI2IDcuODVhMS41NiAxLjU2IDAgMCAwLTEuNDY1IDEuMDIuODUuODUgMCAxIDEtMS41OTQtLjU4OCAzLjI2IDMuMjYgMCAxIDEgNS41NDcgMy4yMzNsLS4wMTkuMDIyLS4wMi4wMjEtMS4wNzUgMS4xMDUtLjAwNi4wMDYtLjAwNi4wMDZjLS4zMTkuMzE1LS41MTIuNTM0LS41MTIuOTR2LjM2M2EuODUuODUgMCAwIDEtMS43IDB2LS4zNjRjMC0xLjE0NC42NjQtMS44IDEuMDAzLTIuMTM0bC4wMDktLjAwOCAxLjA0Ni0xLjA3NmExLjU2IDEuNTYgMCAwIDAtMS4yMDgtMi41NDZtMCA5LjkxN2EuODg0Ljg4NCAwIDEgMCAwLTEuNzY3Ljg4NC44ODQgMCAwIDAgMCAxLjc2NyIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpLE1lfHwoTWU9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJtMTAuNDYyIDguODcgMS41OTUuNTg4em0tMS4wOTIuNTAzLS41ODggMS41OTV6bS0uNTAzLTEuMDkxLTEuNTk1LS41ODl6bTUuNTQ3IDMuMjMzLTEuMjk3LTEuMDk5em0tLjAxOS4wMjIgMS4yMiAxLjE4NS4wNC0uMDQyLjAzOC0uMDQ0em0tLjAyLjAyMSAxLjIxOSAxLjE4NnpNMTMuMyAxMi42NjNsMS4yMiAxLjE4NXptLS4wMDYuMDA2IDEuMTk1IDEuMjEuMDEyLS4wMTIuMDEyLS4wMTN6bS0uMDA2LjAwNi0xLjE5NC0xLjIxek0xMi4wOCAxMS40OGwxLjE5NCAxLjIxem0uMDA5LS4wMDggMS4xOTQgMS4yMS4wMTItLjAxMy4wMTMtLjAxMnptMS4wNDYtMS4wNzYgMS4yMTggMS4xODYuMDUxLS4wNTMuMDQ2LS4wNTZ6TTEyIDI0LjJjNi43MzggMCAxMi4yLTUuNDYyIDEyLjItMTIuMmgtMy40YTguOCA4LjggMCAwIDEtOC44IDguOHpNLS4yIDEyYzAgNi43MzggNS40NjIgMTIuMiAxMi4yIDEyLjJ2LTMuNEE4LjggOC44IDAgMCAxIDMuMiAxMnpNMTItLjJDNS4yNjItLjItLjIgNS4yNjItLjIgMTJoMy40QTguOCA4LjggMCAwIDEgMTIgMy4yek0yNC4yIDEyQzI0LjIgNS4yNjIgMTguNzM4LS4yIDEyLS4ydjMuNGE4LjggOC44IDAgMCAxIDguOCA4Ljh6TTEyLjA1NyA5LjQ1OGEuMTQuMTQgMCAwIDEtLjA1LjA2NS4xNS4xNSAwIDAgMS0uMDgxLjAyN3YtMy40YTMuMjYgMy4yNiAwIDAgMC0zLjA2IDIuMTMyem0tMy4yNzUgMS41MWEyLjU1IDIuNTUgMCAwIDAgMy4yNzQtMS41MWwtMy4xOS0xLjE3NmEuODUuODUgMCAwIDEgMS4wOTItLjUwNHptLTEuNTEtMy4yNzVhMi41NSAyLjU1IDAgMCAwIDEuNTEgMy4yNzVsMS4xNzYtMy4xOWEuODUuODUgMCAwIDEgLjUwMyAxLjA5MnptNC42NTQtMy4yNDNhNC45NiA0Ljk2IDAgMCAwLTQuNjU0IDMuMjQzbDMuMTkgMS4xNzdhMS41NiAxLjU2IDAgMCAxIDEuNDY0LTEuMDJ6bTQuOTYgNC45NmE0Ljk2IDQuOTYgMCAwIDAtNC45Ni00Ljk2djMuNGMuODYxIDAgMS41Ni42OTggMS41NiAxLjU2em0tMS4xNzQgMy4yMDNhNC45NSA0Ljk1IDAgMCAwIDEuMTczLTMuMjAzaC0zLjRjMCAuMzg0LS4xMzguNzM0LS4zNjggMS4wMDZ6bS0uMDE5LjAyMy4wMTktLjAyMy0yLjU5NS0yLjE5Ny0uMDIuMDIzem0tLjEuMTA4LjAyMS0uMDIxLTIuNDM3LTIuMzcxLS4wMi4wMjF6bS0xLjA3NCAxLjEwNCAxLjA3NS0xLjEwNC0yLjQzOC0yLjM3MS0xLjA3NCAxLjEwNXptLS4wMDYuMDA2LjAwNi0uMDA2LTIuNDM3LTIuMzctLjAwNi4wMDZ6bS0uMDMuMDMxLjAwNi0uMDA2LTIuMzg5LTIuNDItLjAwNi4wMDd6bS0uMDA3LS4yN2EuOC44IDAgMCAxLS4xMTIuMzgyYy0uMDI1LjA0LS4wMzkuMDUyLS4wMTguMDI4LjAyMy0uMDI2LjA2LS4wNjUuMTM3LS4xNGwtMi4zODktMi40MmMtLjMzLjMyNi0xLjAxOC45ODUtMS4wMTggMi4xNXptMCAuMzYzdi0uMzY0aC0zLjR2LjM2NHptLTIuNTUgMi41NWEyLjU1IDIuNTUgMCAwIDAgMi41NS0yLjU1aC0zLjRjMC0uNDcuMzgtLjg1Ljg1LS44NXptLTIuNTUtMi41NWEyLjU1IDIuNTUgMCAwIDAgMi41NSAyLjU1di0zLjRjLjQ2OSAwIC44NS4zOC44NS44NXptMC0uMzY0di4zNjRoMy40di0uMzY0em0xLjUxLTMuMzQ0Yy0uMzcyLjM2Ni0xLjUxIDEuNDU1LTEuNTEgMy4zNDRoMy40YzAtLjQuMTktLjYyMS40OTctLjkyM3ptLjAwOC0uMDA5LS4wMDkuMDEgMi4zODggMi40Mi4wMDktLjAxem0xLjAyMS0xLjA1LTEuMDQ2IDEuMDc1IDIuNDM4IDIuMzcgMS4wNDUtMS4wNzR6bS0uMTMuMTk5YS4xNC4xNCAwIDAgMSAuMDMzLS4wOWwyLjYzMSAyLjE1M2EzLjI1IDMuMjUgMCAwIDAgLjczNi0yLjA2M3ptLjE0LjE0YS4xNC4xNCAwIDAgMS0uMTQtLjE0aDMuNGMwLTEuOC0xLjQ2LTMuMjYtMy4yNi0zLjI2em0tLjgxNSA3LjMzNGMwLS40NTEuMzY2LS44MTcuODE3LS44MTd2My40YTIuNTg0IDIuNTg0IDAgMCAwIDIuNTgzLTIuNTgzem0uODE3LjgxNmEuODE2LjgxNiAwIDAgMS0uODE3LS44MTZoMy40YTIuNTg0IDIuNTg0IDAgMCAwLTIuNTgzLTIuNTg0em0uODE2LS44MTZjMCAuNDUtLjM2Ni44MTYtLjgxNi44MTZ2LTMuNGEyLjU4NCAyLjU4NCAwIDAgMC0yLjU4NCAyLjU4NHptLS44MTYtLjgxN2MuNDUgMCAuODE2LjM2Ni44MTYuODE3aC0zLjRhMi41ODQgMi41ODQgMCAwIDAgMi41ODQgMi41ODN6IixtYXNrOiJ1cmwoIzA0NWZhKSJ9KSkpfTtmdW5jdGlvbiBCZSgpe3JldHVybiBCZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LEJlLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgVmUsR2UscWUsV2U9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixCZSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoyNCxoZWlnaHQ6MjQsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDI0IDI0IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksemV8fCh6ZT1vLmNyZWF0ZUVsZW1lbnQoImNpcmNsZSIse2N4OjEyLGN5OjEyLHI6OS42NSxzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6MS43LGNsYXNzTmFtZToiNTRlOGM3YjRzdHJva2UgYjE1YmU0ZmFjaXJjbGUifSkpLEhlfHwoSGU9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7c3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VXaWR0aDoxLjcsZDoiTTkuNjY0IDguNTc2YTIuNDEgMi40MSAwIDEgMSA0LjEwMiAyLjM5bC0xLjA3NSAxLjEwNGMtLjMyNi4zMjItLjc2NS43Ni0uNzY1IDEuNTQ0di4zNjQiLGNsYXNzTmFtZToiNTRlOGM3YjRzdHJva2UgOTczZWExZTduZWdhdGl2ZSJ9KSksRmV8fChGZT1vLmNyZWF0ZUVsZW1lbnQoImNpcmNsZSIse2N4OjExLjkyNyxjeToxNi44ODQscjouODg0LGZpbGw6ImN1cnJlbnRDb2xvciIsY2xhc3NOYW1lOiI1YjM2MDY4ZGZpbGwgOTczZWExZTduZWdhdGl2ZSJ9KSkpfTtmdW5jdGlvbiBLZSgpe3JldHVybiBLZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LEtlLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgWmUsSmUsWWU9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixLZSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoyNCxoZWlnaHQ6MjQsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDI0IDI0IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksVmV8fChWZT1vLmNyZWF0ZUVsZW1lbnQoIm1hc2siLHtpZDoiZGE2YWEiLGZpbGw6Im5vbmUifSxvLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTEwLjUgMi4zMzUgMyA3LjUxYy0uNjI1LjQzNy0xIDEuMTE2LTEgMS44NFYxOS43QzIgMjAuOTY1IDMuMTI1IDIyIDQuNSAyMmgxNWMxLjM3NSAwIDIuNS0xLjAzNSAyLjUtMi4zVjkuMzVjMC0uNzI0LS4zNzUtMS40MDMtMS0xLjg0bC03LjUtNS4xNzVhMi42OSAyLjY5IDAgMCAwLTMgME03LjMxNiAxNC4zNjZhLjg1Ljg1IDAgMSAwLTEuMTMyIDEuMjY4QTguNyA4LjcgMCAwIDAgMTIgMTcuODUyYTguNyA4LjcgMCAwIDAgNS44MTYtMi4yMTguODUuODUgMCAxIDAtMS4xMzItMS4yNjhBNyA3IDAgMCAxIDEyIDE2LjE1MmMtMS44IDAtMy40NC0uNjc1LTQuNjg0LTEuNzg2IixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpLEdlfHwoR2U9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTEwLjUgMi4zMzUgMyA3LjUxYy0uNjI1LjQzNy0xIDEuMTE2LTEgMS44NFYxOS43QzIgMjAuOTY1IDMuMTI1IDIyIDQuNSAyMmgxNWMxLjM3NSAwIDIuNS0xLjAzNSAyLjUtMi4zVjkuMzVjMC0uNzI0LS4zNzUtMS40MDMtMS0xLjg0bC03LjUtNS4xNzVhMi42OSAyLjY5IDAgMCAwLTMgME03LjMxNiAxNC4zNjZhLjg1Ljg1IDAgMSAwLTEuMTMyIDEuMjY4QTguNyA4LjcgMCAwIDAgMTIgMTcuODUyYTguNyA4LjcgMCAwIDAgNS44MTYtMi4yMTguODUuODUgMCAxIDAtMS4xMzItMS4yNjhBNyA3IDAgMCAxIDEyIDE2LjE1MmMtMS44IDAtMy40NC0uNjc1LTQuNjg0LTEuNzg2IixjbGlwUnVsZToiZXZlbm9kZCJ9KSkscWV8fChxZT1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Im0zIDcuNTEtLjk2NS0xLjQtLjAxLjAwN3ptNy41LTUuMTc1TDkuNTM4LjkzNGwtLjAwMy4wMDJ6TTIxIDcuNTFsLjk3NC0xLjM5My0uMDA5LS4wMDZ6bS03LjUtNS4xNzUuOTY2LTEuNC0uMDA0LS4wMDF6TTYuMTE2IDE0LjQzNGwxLjI2OCAxLjEzMnptMS4yLS4wNjggMS4xMzMtMS4yNjh6bS0xLjEzMiAxLjI2OEw1LjA1IDE2LjkwMnptMTEuNjMyIDAgMS4xMzMgMS4yNjh6bS4wNjgtMS4yLTEuMjY4IDEuMTMyem0tMS4yLS4wNjgtMS4xMzMtMS4yNjh6TTMuOTY1IDguOTFsNy41LTUuMTc1TDkuNTM2LjkzNmwtNy41IDUuMTc1em0tLjI2NS40NGMwLS4xMi4wNjMtLjI5OS4yNzQtLjQ0N0wyLjAyNiA2LjExN0MuOTg3IDYuODQzLjMgOC4wMjIuMyA5LjM1em0wIDEwLjM1VjkuMzVILjNWMTkuN3ptLjguNmEuOS45IDAgMCAxLS42MTUtLjIyNy41LjUgMCAwIDEtLjE4NS0uMzczSC4zYzAgMi4zMzUgMi4wMjIgNCA0LjIgNHptMTUgMGgtMTV2My40aDE1em0uOC0uNmEuNS41IDAgMCAxLS4xODUuMzczLjkuOSAwIDAgMS0uNjE1LjIyN3YzLjRjMi4xNzggMCA0LjItMS42NjUgNC4yLTR6bTAtMTAuMzVWMTkuN2gzLjRWOS4zNXptLS4yNzQtLjQ0N2MuMjExLjE0OC4yNzQuMzI2LjI3NC40NDdoMy40YzAtMS4zMjgtLjY4Ny0yLjUwNy0xLjcyNi0zLjIzM3ptLTcuNDkxLTUuMTY5IDcuNSA1LjE3NSAxLjkzLTIuNzk4LTcuNS01LjE3NXptLTEuMDczLjAwMmEuOTkuOTkgMCAwIDEgMS4wNzYgMEwxNC40NjIuOTM0YTQuMzkgNC4zOSAwIDAgMC00LjkyNCAwem0tNC4wNzggMTEuODNhLjg1Ljg1IDAgMCAxLTEuMi4wNjhsMi4yNjUtMi41MzZhMi41NSAyLjU1IDAgMCAwLTMuNi4yMDN6bS0uMDY4LTEuMmMuMzUuMzEzLjM4Ljg1LjA2OCAxLjJsLTIuNTM2LTIuMjY1YTIuNTUgMi41NSAwIDAgMCAuMjAzIDMuNnpNMTIgMTYuMTUyYy0xLjggMC0zLjQ0LS42NzUtNC42ODQtMS43ODZsLTIuMjY1IDIuNTM2QTEwLjQgMTAuNCAwIDAgMCAxMiAxOS41NTJ6bTQuNjg0LTEuNzg2QTcgNyAwIDAgMSAxMiAxNi4xNTJ2My40YzIuNjY3IDAgNS4xMDUtMS4wMDQgNi45NDktMi42NXptLS4wNjggMS4yYS44NS44NSAwIDAgMSAuMDY4LTEuMmwyLjI2NSAyLjUzNmEyLjU1IDIuNTUgMCAwIDAgLjIwMy0zLjZ6bTEuMi4wNjhhLjg1Ljg1IDAgMCAxLTEuMi0uMDY4bDIuNTM2LTIuMjY1YTIuNTUgMi41NSAwIDAgMC0zLjYtLjIwM3pNMTIgMTcuODUyYTguNyA4LjcgMCAwIDAgNS44MTYtMi4yMThsLTIuMjY1LTIuNTM2QTUuMyA1LjMgMCAwIDEgMTIgMTQuNDUyem0tNS44MTYtMi4yMThBOC43IDguNyAwIDAgMCAxMiAxNy44NTJ2LTMuNGE1LjMgNS4zIDAgMCAxLTMuNTUxLTEuMzU0eiIsbWFzazoidXJsKCNkYTZhYSkifSkpKX07ZnVuY3Rpb24gUWUoKXtyZXR1cm4gUWU9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxRZS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFhlLCRlLHRuLGVuPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsUWUoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MjQsaGVpZ2h0OjI0LGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIix2aWV3Qm94OiIwIDAgMjQgMjQiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxaZXx8KFplPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse3N0cm9rZVdpZHRoOjEuNyxkOiJNMi44NSA5LjM1YzAtLjQyMy4yMTgtLjg1LjYzNS0xLjE0M2w3LjQ5Ni01LjE3MmguMDAxYTEuODQgMS44NCAwIDAgMSAyLjAzNiAwbDcuNDk1IDUuMTcuMDAyLjAwMmMuNDE3LjI5My42MzUuNzIuNjM1IDEuMTQyVjE5LjdjMCAuNzMtLjY3NiAxLjQ1LTEuNjUgMS40NWgtMTVjLS45NzQgMC0xLjY1LS43Mi0xLjY1LTEuNDV6IixjbGFzc05hbWU6IjJjNDRlNzUwc3Ryb2tlIn0pKSxKZXx8KEplPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse3N0cm9rZToiI2N1cnJlbnRDb2xvciIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZVdpZHRoOjEuNyxkOiJNMTcuMjUgMTVBNy44NiA3Ljg2IDAgMCAxIDEyIDE3LjAwMiA3Ljg2IDcuODYgMCAwIDEgNi43NSAxNSIsY2xhc3NOYW1lOiIyYzQ0ZTc1MHN0cm9rZSJ9KSkpfTtmdW5jdGlvbiBubigpe3JldHVybiBubj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LG5uLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgcm4sb24sYW4sdW49ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixubih7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoyNCxoZWlnaHQ6MjQsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDI0IDI0IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksWGV8fChYZT1vLmNyZWF0ZUVsZW1lbnQoIm1hc2siLHtpZDoiY2FkZWEiLGZpbGw6Im5vbmUifSxvLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTIyIDVhMyAzIDAgMCAwLTMtM0g1YTMgMyAwIDAgMC0zIDN2MTBhMyAzIDAgMCAwIDMgM2gxMC41NThsMy44ODMgMy44N2MuOTQ2Ljk0MiAyLjU1OS4yNzIgMi41NTktMS4wNjN6bS00LjE1IDIuODVBLjg1Ljg1IDAgMCAwIDE3IDdIN2EuODUuODUgMCAwIDAgMCAxLjdoMTBjLjQ3IDAgLjg1LS4zOC44NS0uODVtLTUgNEEuODUuODUgMCAwIDAgMTIgMTFIN2EuODUuODUgMCAwIDAgMCAxLjdoNWMuNDcgMCAuODUtLjM4Ljg1LS44NSIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpKSwkZXx8KCRlPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0yMiA1YTMgMyAwIDAgMC0zLTNINWEzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTAuNTU4bDMuODgzIDMuODdjLjk0Ni45NDIgMi41NTkuMjcyIDIuNTU5LTEuMDYzem0tNC4xNSAyLjg1QS44NS44NSAwIDAgMCAxNyA3SDdhLjg1Ljg1IDAgMCAwIDAgMS43aDEwYy40NyAwIC44NS0uMzguODUtLjg1bS01IDRBLjg1Ljg1IDAgMCAwIDEyIDExSDdhLjg1Ljg1IDAgMCAwIDAgMS43aDVjLjQ3IDAgLjg1LS4zOC44NS0uODUiLGNsaXBSdWxlOiJldmVub2RkIn0pKSx0bnx8KHRuPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZDoiTTE1LjU1OCAxOHYtMS43aC43MDJsLjQ5OC40OTZ6bTMuODgzIDMuODcgMS4yLTEuMjA1ek0xOSAuM0E0LjcgNC43IDAgMCAxIDIzLjcgNWgtMy40QTEuMyAxLjMgMCAwIDAgMTkgMy43ek01IC4zaDE0djMuNEg1ek0uMyA1QTQuNyA0LjcgMCAwIDEgNSAuM3YzLjRBMS4zIDEuMyAwIDAgMCAzLjcgNXptMCAxMFY1aDMuNHYxMHpNNSAxOS43QTQuNyA0LjcgMCAwIDEgLjMgMTVoMy40QTEuMyAxLjMgMCAwIDAgNSAxNi4zem0xMC41NTggMEg1di0zLjRoMTAuNTU4em0yLjY4MyAzLjM3NC0zLjg4My0zLjg3IDIuNC0yLjQwOCAzLjg4MyAzLjg3em01LjQ1OS0yLjI2N2MwIDIuODQ4LTMuNDQxIDQuMjc3LTUuNDU5IDIuMjY3bDIuNC0yLjQwOWEuMjMuMjMgMCAwIDAtLjIxOC0uMDQzLjIzLjIzIDAgMCAwLS4xMjMuMTg1em0wLTQuMzA3djQuMzA3aC0zLjRWMTYuNXptMC0yLjU0M1YxNi41aC0zLjR2LTIuNTQzek0yMy43IDV2OC45NTdoLTMuNFY1em0tNi43LjNhMi41NSAyLjU1IDAgMCAxIDIuNTUgMi41NWgtMy40YzAgLjQ3LjM4Ljg1Ljg1Ljg1em0tMTAgMGgxMHYzLjRIN3pNNC40NSA3Ljg1QTIuNTUgMi41NSAwIDAgMSA3IDUuM3YzLjRjLjQ3IDAgLjg1LS4zOC44NS0uODV6TTcgMTAuNGEyLjU1IDIuNTUgMCAwIDEtMi41NS0yLjU1aDMuNEEuODUuODUgMCAwIDAgNyA3em0xMCAwSDdWN2gxMHptMi41NS0yLjU1QTIuNTUgMi41NSAwIDAgMSAxNyAxMC40VjdhLjg1Ljg1IDAgMCAwLS44NS44NXpNMTIgOS4zYTIuNTUgMi41NSAwIDAgMSAyLjU1IDIuNTVoLTMuNGMwIC40Ny4zOC44NS44NS44NXptLTUgMGg1djMuNEg3em0tMi41NSAyLjU1QTIuNTUgMi41NSAwIDAgMSA3IDkuM3YzLjRjLjQ3IDAgLjg1LS4zOC44NS0uODV6TTcgMTQuNGEyLjU1IDIuNTUgMCAwIDEtMi41NS0yLjU1aDMuNEEuODUuODUgMCAwIDAgNyAxMXptNSAwSDdWMTFoNXptMi41NS0yLjU1QTIuNTUgMi41NSAwIDAgMSAxMiAxNC40VjExYS44NS44NSAwIDAgMC0uODUuODV6IixtYXNrOiJ1cmwoI2NhZGVhKSJ9KSkpfTtmdW5jdGlvbiBzbigpe3JldHVybiBzbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LHNuLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgY24sbG49ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixzbih7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoyNCxoZWlnaHQ6MjQsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDI0IDI0IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCkscm58fChybj1vLmNyZWF0ZUVsZW1lbnQoIm1hc2siLHtpZDoiYWYxZGEiLGZpbGw6IiNmZmYifSxvLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTE5IDJhMyAzIDAgMCAxIDMgM3YxNS44MDZjMCAxLjMzNS0xLjYxMyAyLjAwNS0yLjU1OSAxLjA2MkwxNS41NiAxOEg1YTMgMyAwIDAgMS0zLTNWNWEzIDMgMCAwIDEgMy0zeiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpKSxvbnx8KG9uPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZDoibTE5LjQ0MSAyMS44NjggMS4yLTEuMjA0ek0xNS41NiAxOHYtMS43aC43MDJsLjQ5OC40OTZ6TTIwLjMgNUExLjMgMS4zIDAgMCAwIDE5IDMuN1YuM0E0LjcgNC43IDAgMCAxIDIzLjcgNXptMCA4Ljk1NlY1aDMuNHY4Ljk1NnptMCAyLjU0NHYtMi41NDRoMy40VjE2LjV6bTAgNC4zMDZWMTYuNWgzLjR2NC4zMDZ6bS4zNDEtLjE0MmEuMjMuMjMgMCAwIDAtLjIxOC0uMDQzLjIzLjIzIDAgMCAwLS4xMjMuMTg1aDMuNGMwIDIuODQ4LTMuNDQxIDQuMjc3LTUuNDU5IDIuMjY3em0tMy44ODItMy44NjggMy44ODIgMy44NjgtMi40IDIuNDA5LTMuODgyLTMuODY5ek01IDE2LjNoMTAuNTU5djMuNEg1ek0zLjcgMTVBMS4zIDEuMyAwIDAgMCA1IDE2LjN2My40QTQuNyA0LjcgMCAwIDEgLjMgMTV6bTAtMTB2MTBILjNWNXpNNSAzLjdBMS4zIDEuMyAwIDAgMCAzLjcgNUguM0E0LjcgNC43IDAgMCAxIDUgLjN6bTE0IDBINVYuM2gxNHoiLGNsYXNzTmFtZToiNjA0YWQyN2NmaWxsIixtYXNrOiJ1cmwoI2FmMWRhKSJ9KSksYW58fChhbj1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNMTcgN2EuODUuODUgMCAwIDEgMCAxLjdIN0EuODUuODUgMCAxIDEgNyA3em0tNSA0YS44NS44NSAwIDAgMSAwIDEuN0g3QS44NS44NSAwIDAgMSA3IDExeiIsY2xhc3NOYW1lOiI2MDRhZDI3Y2ZpbGwiLGNsaXBSdWxlOiJldmVub2RkIn0pKSl9O2Z1bmN0aW9uIGZuKCl7cmV0dXJuIGZuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sZm4uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBkbixwbixobix2bj1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLGZuKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjI0LGhlaWdodDoyNCxmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMjQgMjQiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxjbnx8KGNuPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0xMC4yMTggMTRIOS41djYuMjMyYTIuMjY4IDIuMjY4IDAgMCAxLTQuNDU2LjU5N2wtMS45NjctNy4yMTJBNS4wMDEgNS4wMDEgMCAwIDEgNSA0aDUuOTM4bDQuNTExLTIuOTc3QTEgMSAwIDAgMSAxNyAxLjg1OHYxNC43NmExIDEgMCAwIDEtMS41NS44MzR6TTIwLjU5NSAzLjM5M2EuODUuODUgMCAxIDAtMS4xOSAxLjIxNEE2LjEzIDYuMTMgMCAwIDEgMjEuMjUxIDlhNi4xMyA2LjEzIDAgMCAxLTEuODQ2IDQuMzkzLjg1Ljg1IDAgMSAwIDEuMTkgMS4yMTRBNy44MyA3LjgzIDAgMCAwIDIyLjk1IDlhNy44MyA3LjgzIDAgMCAwLTIuMzU2LTUuNjA3IixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpfTtmdW5jdGlvbiB5bigpe3JldHVybiB5bj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LHluLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgZ24sbW49ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIix5bih7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoyNCxoZWlnaHQ6MjQsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDI0IDI0IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksZG58fChkbj1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZVdpZHRoOjEuNyxkOiJNMjAgNGE2Ljk4IDYuOTggMCAwIDEgMi4xMDEgNWMwIDEuOTU5LS44MDQgMy43My0yLjEwMSA1IixjbGFzc05hbWU6IjNhYzE3MWE3c3Ryb2tlIn0pKSxwbnx8KHBuPW8uY3JlYXRlRWxlbWVudCgibWFzayIse2lkOiIzNDUwYSIsZmlsbDoiI2ZmZiJ9LG8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGxSdWxlOiJldmVub2RkIixkOiJNOS41IDE0aC43MThsNS4yMzEgMy40NTJBMSAxIDAgMCAwIDE3IDE2LjYxN1YxLjg1OGExIDEgMCAwIDAtMS41NS0uODM1TDEwLjkzNyA0SDVhNSA1IDAgMCAwLTEuOTIzIDkuNjE3bDEuOTY3IDcuMjEyYTIuMjY4IDIuMjY4IDAgMCAwIDQuNDU2LS41OTd6IixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpLGhufHwoaG49by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJtMTAuMjE4IDE0IC45MzYtMS40MTktLjQyNi0uMjhoLS41MXpNOS41IDE0di0xLjdINy44VjE0em01Ljk1IDMuNDUyLS45MzcgMS40MnptMC0xNi40MjktLjkzNy0xLjQxOXpNMTAuOTM3IDR2MS43aC41MWwuNDI2LS4yOHptLTcuODYgOS42MTcgMS42NC0uNDQ3LS4yMi0uODAyLS43NjYtLjMyem0xLjk2NiA3LjIxMiAxLjY0LS40NDd6bTUuMTc0LTguNTI5SDkuNXYzLjRoLjcxOHptNi4xNjggMy43MzMtNS4yMzItMy40NTJMOS4yOCAxNS40Mmw1LjIzMiAzLjQ1MnptLTEuMDg2LjU4NGEuNy43IDAgMCAxIDEuMDg1LS41ODRsLTEuODcyIDIuODM4YzEuNzk1IDEuMTg1IDQuMTg3LS4xMDMgNC4xODctMi4yNTN6bTAtMTQuNzU5djE0Ljc2aDMuNFYxLjg1OHptMS4wODUuNTg0YS43LjcgMCAwIDEtMS4wODUtLjU4NGgzLjRjMC0yLjE1LTIuMzkyLTMuNDM4LTQuMTg3LTIuMjU0em0tNC41MSAyLjk3NyA0LjUxLTIuOTc3LTEuODcyLTIuODM4LTQuNTExIDIuOTc3ek01IDUuN2g1LjkzOFYyLjNINXpNMS43IDlBMy4zIDMuMyAwIDAgMSA1IDUuN1YyLjNjLTMuNyAwLTYuNyAzLTYuNyA2Ljd6bTIuMDMyIDMuMDQ4QTMuMyAzLjMgMCAwIDEgMS43IDloLTMuNGE2LjcgNi43IDAgMCAwIDQuMTIzIDYuMTg2em0yLjk1MiA4LjMzNEw0LjcxOCAxMy4xN2wtMy4yOC44OTUgMS45NjYgNy4yMTF6bS41NDguNDE4YS41Ny41NyAwIDAgMS0uNTQ4LS40MThsLTMuMjguODk0QTMuOTcgMy45NyAwIDAgMCA3LjIzMiAyNC4yem0uNTY4LS41NjhhLjU3LjU3IDAgMCAxLS41NjguNTY4djMuNGEzLjk3IDMuOTcgMCAwIDAgMy45NjgtMy45Njh6TTcuOCAxNHY2LjIzMmgzLjRWMTR6IixjbGFzc05hbWU6IjM2MWQ5YzgwZmlsbCIsbWFzazoidXJsKCMzNDUwYSkifSkpKX07ZnVuY3Rpb24gYm4oKXtyZXR1cm4gYm49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxibi5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIHduLF9uLFNuLHhuPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsYm4oe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MjQsaGVpZ2h0OjI0LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAyNCAyNCIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLGdufHwoZ249by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTMuNzUgNC41QTIuMjUgMi4yNSAwIDAgMCAxLjUgNi43NXYxLjg3NWMwIC40MTQuMzQzLjc0Ljc0Ljg1NmEyLjYyNiAyLjYyNiAwIDAgMSAwIDUuMDM4Yy0uMzk3LjExNy0uNzQuNDQyLS43NC44NTZ2MS44NzVhMi4yNSAyLjI1IDAgMCAwIDIuMjUgMi4yNWgxNi41YTIuMjUgMi4yNSAwIDAgMCAyLjI1LTIuMjV2LTEuODc1YzAtLjQxNC0uMzQzLS43NC0uNzQtLjg1NmEyLjYyNiAyLjYyNiAwIDAgMSAwLTUuMDM4Yy4zOTctLjExNy43NC0uNDQyLjc0LS44NTZWNi43NWEyLjI1IDIuMjUgMCAwIDAtMi4yNS0yLjI1ek0xNi41IDkuNzVoLTlhMS4xMjUgMS4xMjUgMCAwIDEgMC0yLjI1aDlhMS4xMjUgMS4xMjUgMCAwIDEgMCAyLjI1IixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpfTtmdW5jdGlvbiBFbigpe3JldHVybiBFbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LEVuLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgQ24sT249ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixFbih7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoyNCxoZWlnaHQ6MjQsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDI0IDI0IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksd258fCh3bj1vLmNyZWF0ZUVsZW1lbnQoIm1hc2siLHtpZDoiOTA5YmEiLGZpbGw6IiNmZmYifSxvLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTMgNC41QTEuNSAxLjUgMCAwIDAgMS41IDZ2Mi44NzVjMCAuMjc2LjIyNi40OTUuNDk3LjU0N2EyLjYyNiAyLjYyNiAwIDAgMSAwIDUuMTU2Yy0uMjcxLjA1Mi0uNDk3LjI3LS40OTcuNTQ3VjE4QTEuNSAxLjUgMCAwIDAgMyAxOS41aDE4YTEuNSAxLjUgMCAwIDAgMS41LTEuNXYtMi44NzVjMC0uMjc2LS4yMjYtLjQ5NS0uNDk3LS41NDdhMi42MjYgMi42MjYgMCAwIDEgMC01LjE1NmMuMjcxLS4wNTIuNDk3LS4yNy40OTctLjU0N1Y2QTEuNSAxLjUgMCAwIDAgMjEgNC41eiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpKSxfbnx8KF9uPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZDoibTEuOTk3IDkuNDIyLS4zMiAxLjY3em0wIDUuMTU2LS4zMi0xLjY3em0yMC4wMDYgMC0uMzIgMS42N3ptMC01LjE1Ni0uMzItMS42N3pNMy4yIDZhLjIuMiAwIDAgMS0uMi4yVjIuOEEzLjIgMy4yIDAgMCAwLS4yIDZ6bTAgMS41VjZILS4ydjEuNXptMCAxLjM3NVY3LjVILS4ydjEuMzc1em0tLjg4My0xLjEyM2MuMzMyLjA2NC44ODMuMzk3Ljg4MyAxLjEyM0gtLjJjMCAxLjI3OCAxLjAwMyAyLjA1IDEuODc3IDIuMjE3ek01LjgyNSAxMmMwLTIuMTEtMS41MS0zLjg2NS0zLjUwOC00LjI0OGwtLjY0IDMuMzRhLjkyNS45MjUgMCAwIDEgLjc0OC45MDh6bS0zLjUwOCA0LjI0OEE0LjMyNiA0LjMyNiAwIDAgMCA1LjgyNSAxMmgtMy40YzAgLjQ1LS4zMjIuODI3LS43NDguOTA4em0uODgzLTEuMTIzYTEuMTIgMS4xMiAwIDAgMS0uODgzIDEuMTIzbC0uNjQtMy4zNGMtLjg3NC4xNjgtMS44NzcuOTQtMS44NzcgMi4yMTd6bTAgMS4zNzV2LTEuMzc1SC0uMlYxNi41em0wIDEuNXYtMS41SC0uMlYxOHptLS4yLS4yYy4xMSAwIC4yLjA5LjIuMkgtLjJBMy4yIDMuMiAwIDAgMCAzIDIxLjJ6bTE4IDBIM3YzLjRoMTh6bS0uMi4yYzAtLjExLjA5LS4yLjItLjJ2My40YTMuMiAzLjIgMCAwIDAgMy4yLTMuMnptMC0xLjVWMThoMy40di0xLjV6bTMuNCAwdi0xLjM3NWgtMy40VjE2LjV6bTAtMS4zNzVjMC0xLjI3OC0xLjAwMy0yLjA1LTEuODc3LTIuMjE3bC0uNjQgMy4zNGExLjEyIDEuMTIgMCAwIDEtLjg4My0xLjEyM3ptLTEuODc3LTIuMjE3YS45MjYuOTI2IDAgMCAxLS43NDgtLjkwOGgtMy40YzAgMi4xMSAxLjUxIDMuODY1IDMuNTA4IDQuMjQ4ek0yMS41NzUgMTJjMC0uNDUuMzIyLS44MjcuNzQ4LS45MDhsLS42NC0zLjM0QTQuMzI2IDQuMzI2IDAgMCAwIDE4LjE3NSAxMnptLjc0OC0uOTA4Yy44NzQtLjE2OCAxLjg3Ny0uOTQgMS44NzctMi4yMTdoLTMuNGMwLS43MjYuNTUxLTEuMDU5Ljg4My0xLjEyM3pNMjQuMiA4Ljg3NVY3LjVoLTMuNHYxLjM3NXpNMjAuOCA2djEuNWgzLjRWNnptLjIuMmEuMi4yIDAgMCAxLS4yLS4yaDMuNEEzLjIgMy4yIDAgMCAwIDIxIDIuOHptLTE4IDBoMThWMi44SDN6IixjbGFzc05hbWU6Ijk1MzYxODc1ZmlsbCIsbWFzazoidXJsKCM5MDliYSkifSkpLFNufHwoU249by5jcmVhdGVFbGVtZW50KCJwYXRoIix7c3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLHN0cm9rZVdpZHRoOjEuNyxkOiJNNy41IDguNjI1aDkiLGNsYXNzTmFtZToiOTgzZGVlM2ZzdHJva2UifSkpKX07ZnVuY3Rpb24gQW4oKXtyZXR1cm4gQW49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxBbi5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIEluLGtuPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsQW4oe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MjQsaGVpZ2h0OjI0LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAyNCAyNCIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLENufHwoQ249by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJNOS4xOSA2LjM1Yy0yLjA0IDIuMjktMy40NCA1LjU4LTMuNTcgNS44OWwtMi4yNi0uOTdjLS42NS0uMjgtLjgxLTEuMTMtLjMxLTEuNjNsMy4wMS0zLjAxYy40Ny0uNDcgMS4xNS0uNjggMS44MS0uNTV6bTEuNDkgMTAuMTZjLjMuMy43NC4zOCAxLjEyLjIgMS4xNi0uNTQgMy42NS0xLjgxIDUuMjYtMy40MiA0LjU5LTQuNTkgNC42My04LjMzIDQuMzYtOS45M2EuOTguOTggMCAwIDAtLjc5LS43OWMtMS42LS4yNy01LjM0LS4yMy05LjkzIDQuMzYtMS42MSAxLjYxLTIuODcgNC4xLTMuNDIgNS4yNi0uMTguMzgtLjA5LjgzLjIgMS4xMnptNi45Ny0xLjdjLTIuMjkgMi4wNC01LjU4IDMuNDQtNS44OSAzLjU3bC45NyAyLjI2Yy4yOC42NSAxLjEzLjgxIDEuNjMuMzFsMy4wMS0zLjAxYy40Ny0uNDcuNjgtMS4xNS41NS0xLjgxem0tOC43MSAyLjZhMyAzIDAgMCAxLS44MiAyLjcxYy0uNzcuNzctMy4xNiAxLjM0LTQuNzEgMS42NC0uNjkuMTMtMS4zLS40OC0xLjE3LTEuMTcuMy0xLjU1Ljg2LTMuOTQgMS42NC00LjcxYTMgMyAwIDAgMSAyLjcxLS44MmMxLjE3LjIyIDIuMTMgMS4xOCAyLjM1IDIuMzVNMTMgOWMwLTEuMS45LTIgMi0yczIgLjkgMiAyLS45IDItMiAyLTItLjktMi0yIn0pKSl9O2Z1bmN0aW9uIExuKCl7cmV0dXJuIExuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sTG4uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBUbixqbj1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLExuKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjI0LGhlaWdodDoyNCxmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMjQgMjQiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxJbnx8KEluPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse3N0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoxLjcsZDoiTTUuNSAzLjM1QTIuMTUgMi4xNSAwIDAgMCAzLjM1IDUuNXYxMGEyLjE1IDIuMTUgMCAwIDAgMi4xNSAyLjE1aDEwYTIuMTUgMi4xNSAwIDAgMCAyLjE1LTIuMTV2LTEwYTIuMTUgMi4xNSAwIDAgMC0yLjE1LTIuMTV6TTEuNjUgNS41QTMuODUgMy44NSAwIDAgMSA1LjUgMS42NWgxMGEzLjg1IDMuODUgMCAwIDEgMy44NSAzLjg1djEwYTMuODUgMy44NSAwIDAgMS0zLjg1IDMuODVoLTEwYTMuODUgMy44NSAwIDAgMS0zLjg1LTMuODV6TTE0LjEgNy44OTlhLjg1Ljg1IDAgMCAxIDAgMS4yMDJsLTQgNGEuODUuODUgMCAwIDEtMS4yMDEgMGwtMi0yQS44NS44NSAwIDEgMSA4LjEgOS44OTlsMS40IDEuMzk5IDMuMzk5LTMuNGEuODUuODUgMCAwIDEgMS4yMDIgMFptNi41NSAxLjZhLjg1Ljg1IDAgMSAxIDEuNyAwdjYuODUxYTUuODUgNS44NSAwIDAgMS01Ljg1IDUuODVoLTdhLjg1Ljg1IDAgMCAxIDAtMS43aDdhNC4xNSA0LjE1IDAgMCAwIDQuMTUtNC4xNXoiLGNsYXNzTmFtZToiYWU1ZTUwNDFmaWxsIn0pKSl9O2Z1bmN0aW9uIFBuKCl7cmV0dXJuIFBuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sUG4uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBObixNbj1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLFBuKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjI0LGhlaWdodDoyNCxmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMjQgMjQiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxUbnx8KFRuPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0xOS4zNSAxNi4zNVY0LjY1YTMgMyAwIDAgMC0zLTNINC42NWEzIDMgMCAwIDAtMyAzdjExLjdhMyAzIDAgMCAwIDMgM2gxMS43YTMgMyAwIDAgMCAzLTNNMTQuMSA3Ljg5OWEuODUuODUgMCAwIDEgMCAxLjIwMmwtNCA0YS44NS44NSAwIDAgMS0xLjIwMSAwbC0yLTJBLjg1Ljg1IDAgMSAxIDguMSA5Ljg5OWwxLjQgMS4zOTkgMy4zOTktMy40YS44NS44NSAwIDAgMSAxLjIwMiAwWm02LjU1IDEuNmEuODUuODUgMCAxIDEgMS43IDB2Ni44NTFhNS44NSA1Ljg1IDAgMCAxLTUuODUgNS44NWgtN2EuODUuODUgMCAwIDEgMC0xLjdoN2E0LjE1IDQuMTUgMCAwIDAgNC4xNS00LjE1eiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpKX07ZnVuY3Rpb24gUm4oKXtyZXR1cm4gUm49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxSbi5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFVuLHpuPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsUm4oe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLE5ufHwoTm49by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTIuNSAzQTEuNSAxLjUgMCAwIDAgMSA0LjV2MS4yNWMwIC4yNzYuMjI4LjQ5My40OTMuNTdhMS43NSAxLjc1IDAgMCAxIDAgMy4zNmMtLjI2NS4wNzctLjQ5My4yOTQtLjQ5My41N3YxLjI1QTEuNSAxLjUgMCAwIDAgMi41IDEzaDExYTEuNSAxLjUgMCAwIDAgMS41LTEuNXYtMS4yNWMwLS4yNzYtLjIyOC0uNDkzLS40OTMtLjU3YTEuNzUgMS43NSAwIDAgMSAwLTMuMzZjLjI2NS0uMDc3LjQ5My0uMjk0LjQ5My0uNTdWNC41QTEuNSAxLjUgMCAwIDAgMTMuNSAzek0xMSA2LjVINUEuNzUuNzUgMCAwIDEgNSA1aDZhLjc1Ljc1IDAgMCAxIDAgMS41IixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpfTtmdW5jdGlvbiBIbigpe3JldHVybiBIbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LEhuLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgRm4sRG49ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixIbih7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksVW58fChVbj1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNMS41IDJBMS41IDEuNSAwIDAgMCAwIDMuNXYxLjkzN2MuMDIuMjU4LjIzOC40Ni40OTMuNTI4QzEuMzYgNi4xOTUgMiA3LjAxOSAyIDhjMCAuOTgtLjY0IDEuODA0LTEuNTA2IDIuMDM1LS4yNTUuMDY4LS40NzQuMjctLjQ5My41MjhWMTIuNUExLjUgMS41IDAgMCAwIDEuNSAxNGgxM2ExLjUgMS41IDAgMCAwIDEuNS0xLjV2LTEuOWMwLS4yNzYtLjIyOC0uNDkzLS40OTUtLjU2NS0uODY1LS4yMy0xLjUwNi0xLjA1NC0xLjUwNi0yLjAzNSAwLS45OC42NC0xLjgwNCAxLjUwNi0yLjAzNS4yNjctLjA3Mi40OTQtLjI4OS40OTQtLjU2NXYtMUgxNnYtLjlBMS41IDEuNSAwIDAgMCAxNC41IDJ6bTkuOTI5IDQuMDVINC41N2EuNzUuNzUgMCAxIDEgMC0xLjVoNi44NThhLjc1Ljc1IDAgMCAxIDAgMS41IixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpfTtmdW5jdGlvbiBCbigpe3JldHVybiBCbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LEJuLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgVm4sR249ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixCbih7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksRm58fChGbj1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNMCAzLjVBMS41IDEuNSAwIDAgMSAxLjUgMmgxM0ExLjUgMS41IDAgMCAxIDE2IDMuNXYuOWgtLjAwMnYxYzAgLjI3Ni0uMjI3LjQ5My0uNDk0LjU2NS0uODY2LjIzLTEuNTA2IDEuMDU0LTEuNTA2IDIuMDM1IDAgLjk4LjY0IDEuODA0IDEuNTA2IDIuMDM1LjI2Ny4wNzIuNDk0LjI4OS40OTQuNTY1djFIMTZ2LjlhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0xM0ExLjUgMS41IDAgMCAxIDAgMTIuNXYtMS45NGMuMDItLjI1Ny4yNC0uNDU3LjQ5My0uNTI1Ljg2NS0uMjMgMS41MDUtMS4wNTQgMS41MDUtMi4wMzUgMC0uOTgtLjY0LTEuODA0LTEuNTA1LTIuMDM1Qy4yMzkgNS44OTcuMDIgNS42OTcgMCA1LjQ0ek03LjUgOWEuNS41IDAgMCAxLS41LS41di00YS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2NGEuNS41IDAgMCAxLS41LjV6bS41IDNjLS41NyAwLTEtLjQyOS0xLTFzLjQzLTEgMS0xIDEgLjQyOSAxIDEtLjQyOSAxLTEgMSIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpKX07ZnVuY3Rpb24gcW4oKXtyZXR1cm4gcW49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxxbi5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFduLEtuPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIscW4oe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLFZufHwoVm49by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTEuNSAyQTEuNSAxLjUgMCAwIDAgMCAzLjV2MS45MzdjLjAyLjI1OC4yMzkuNDYuNDk0LjUyOC44NjUuMjMgMS41MDUgMS4wNTQgMS41MDUgMi4wMzUgMCAuOTgtLjY0IDEuODA0LTEuNTA1IDIuMDM1LS4yNTUuMDY4LS40NzQuMjctLjQ5NC41MjhWMTIuNUExLjUgMS41IDAgMCAwIDEuNSAxNGgxM2ExLjUgMS41IDAgMCAwIDEuNS0xLjV2LTEuOWMwLS4yNzYtLjIyOC0uNDkzLS40OTUtLjU2NUMxNC42NCA5LjgwNSAxNCA4Ljk4MSAxNCA4YzAtLjk4LjY0LTEuODA0IDEuNTA1LTIuMDM1LjI2Ny0uMDcyLjQ5NS0uMjg5LjQ5NS0uNTY1VjMuNUExLjUgMS41IDAgMCAwIDE0LjUgMnptMTAuMDU0IDMuMzk3YS44NS44NSAwIDAgMSAuMDA0IDEuMjAybC0zLjk3NiA0YS44NS44NSAwIDAgMS0xLjIwNSAwbC0xLjc0LTEuNzVhLjg1Ljg1IDAgMSAxIDEuMjA2LTEuMTk4TDYuOTggOC43OTRsMy4zNzItMy4zOTNhLjg1Ljg1IDAgMCAxIDEuMjAyLS4wMDQiLGNsaXBSdWxlOiJldmVub2RkIn0pKSl9O2Z1bmN0aW9uIFpuKCl7cmV0dXJuIFpuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sWm4uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBKbixZbixRbj1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLFpuKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxXbnx8KFduPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse3N0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlV2lkdGg6MS43LGQ6Ik0xMS44OSAxMS44ODkgOCA3Ljk5OW0wIDBMNC4xMTEgNC4xMTJNOC4wMDEgOGwzLjg4OS0zLjg5TTggOGwtMy44ODkgMy44ODkifSkpKX07ZnVuY3Rpb24gWG4oKXtyZXR1cm4gWG49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxYbi5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyICRuLHRyLGVyLG5yPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsWG4oe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTcsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNyAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLEpufHwoSm49by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTQuMjIzIDMuM0gxNGEuNy43IDAgMCAxIC43Ljd2OGEuNy43IDAgMCAxLS43LjdINC4yMjNhLjcuNyAwIDAgMS0uNy0uN2gtMS4zYTIgMiAwIDAgMCAyIDJIMTRhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJINC4yMjNhMiAyIDAgMCAwLTIgMmgxLjNhLjcuNyAwIDAgMSAuNy0uNyIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpLFlufHwoWW49by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJNNS42NTggNy4xYTEuOSAxLjkgMCAwIDAtLjE3Mi0uNjcxIDEuNyAxLjcgMCAwIDAtLjQxOC0uNTcgMS45NSAxLjk1IDAgMCAwLS42NzItLjM5OSAyLjcgMi43IDAgMCAwLS45MjItLjE0NHEtLjc2IDAtMS4yODkuMzA4LS41MjcuMzA5LS44Ljg1Ni0uMjc0LjU0My0uMjc0IDEuMjU4di42NHEwIC41MjQuMTM3Ljk3My4xNC40NDUuNDMuNzgxLjI4OC4zMzIuNzM0LjUyLjQ0Ni4xODcgMS4wNTkuMTg3LjU3NCAwIC45ODgtLjE2LjQxOC0uMTY1LjY4My0uNDQxLjI3LS4yODIuMzk5LS42MzcuMTI5LS4zNi4xMjktLjc1VjcuODFIMy41M3YuOTAzaC45Mjl2LjIzNGEuODQuODQgMCAwIDEtLjEwNi40MTUuOC44IDAgMCAxLS4zMi4zMDggMS4xIDEuMSAwIDAgMS0uNTM5LjExN3EtLjM5NCAwLS42MzctLjE4M2ExLjA3IDEuMDcgMCAwIDEtLjM0Ny0uNTA4IDIuMyAyLjMgMCAwIDEtLjEwNi0uNzIzVjcuNzVxMC0uNjYuMjc0LTEuMDIuMjczLS4zNjIuNzg1LS4zNjMuMjAyIDAgLjM2My4wNTVhLjg2Ljg2IDAgMCAxIC40OC4zOS45LjkgMCAwIDEgLjEwMi4yOXptMi4zMjggMy42NDJWNS40MDlINi43MDF2NS4zMzN6bTIuNTI0IDBWOC43M2gyLjA1OHYtMUgxMC41MVY2LjQ0aDIuMjY1VjUuNDFoLTMuNTV2NS4zMzJ6In0pKSl9O2Z1bmN0aW9uIHJyKCl7cmV0dXJuIHJyPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0scnIuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBvcixpcj1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLHJyKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSwkbnx8KCRuPW8uY3JlYXRlRWxlbWVudCgiY2lyY2xlIix7Y3g6OCxjeTo4LHI6Ni43MjUsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOjEuM30pKSx0cnx8KHRyPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik01LjgxOCA3LjUzNGExLjEgMS4xIDAgMSAwIDAtMi4yIDEuMSAxLjEgMCAwIDAgMCAyLjJtNC4zNjQgMGExLjEgMS4xIDAgMSAwIDAtMi4yIDEuMSAxLjEgMCAwIDAgMCAyLjIiLGNsaXBSdWxlOiJldmVub2RkIn0pKSxlcnx8KGVyPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse3N0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlV2lkdGg6MS4zLGQ6Ik0xMCAxMGMtLjQ0LjYwNC0xLjE3MiAxLTIgMXMtMS41Ni0uMzk2LTItMSJ9KSkpfTtmdW5jdGlvbiBhcigpe3JldHVybiBhcj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGFyLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgdXIsc3I9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixhcih7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksb3J8fChvcj1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZU1pdGVybGltaXQ6MTAsc3Ryb2tlV2lkdGg6MS4zLGQ6Im01LjI3IDkuNTEyIDUuODgyLTUuODgyYTEuNjg1IDEuNjg1IDAgMCAxIDIuMzgzIDIuMzg0bC01LjkyOCA1LjkyOUEzLjMxNCAzLjMxNCAwIDAgMSAyLjkyIDcuMjU3bDQuMTQ5LTQuMTUifSkpKX07ZnVuY3Rpb24gY3IoKXtyZXR1cm4gY3I9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxjci5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIGxyLGZyLGRyLHByPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsY3Ioe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLHVyfHwodXI9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTIgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMnptNC40ODEgNC4zMjNxLjE1LjMyMS4xNzIuNjcyaC0xLjI1YS45LjkgMCAwIDAtLjEwMS0uMjg5Ljg0Ljg0IDAgMCAwLS40OC0uMzkgMS4xIDEuMSAwIDAgMC0uMzY0LS4wNTVxLS41MTIgMC0uNzg1LjM2My0uMjc0LjM2LS4yNzQgMS4wMnYuNjI1cTAgLjQwMi4xMDYuNzIyLjExLjMyLjM0Ny41MDguMjQzLjE4My42MzcuMTg0LjMyNCAwIC41NC0uMTE4YS44LjggMCAwIDAgLjMyLS4zMDguODQuODQgMCAwIDAgLjEwNS0uNDE0di0uMjM1aC0uOTN2LS45MDJoMi4xNHYxLjA0cTAgLjM5LS4xMjguNzUtLjEzLjM1NC0uMzk4LjYzNmExLjkgMS45IDAgMCAxLS42ODQuNDQxcS0uNDE0LjE2LS45ODguMTYtLjYxNCAwLTEuMDU5LS4xODdhMiAyIDAgMCAxLS43MzQtLjUyIDIuMiAyLjIgMCAwIDEtLjQzLS43OCAzLjMgMy4zIDAgMCAxLS4xMzctLjk3NHYtLjY0cTAtLjcxNS4yNzQtMS4yNTguMjczLS41NDguOC0uODU1LjUyOC0uMzA5IDEuMjktLjMwOS41MjQgMCAuOTIxLjE0NC4zOTkuMTQ2LjY3Mi4zOTkuMjc0LjI1LjQxOC41N20yLjUtMS4wMnY1LjMzM0g3LjY5NlY1LjMwNHptMi41MjQgMy4zMjF2Mi4wMTJIMTAuMjJWNS4zMDRoMy41NXYxLjAzMWgtMi4yNjV2MS4yODloMi4wNTh2MXoiLGNsaXBSdWxlOiJldmVub2RkIn0pKSl9O2Z1bmN0aW9uIGhyKCl7cmV0dXJuIGhyPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0saHIuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciB2cix5cj1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLGhyKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxscnx8KGxyPW8uY3JlYXRlRWxlbWVudCgiY2lyY2xlIix7Y3g6OCxjeTo4LHI6Ni43MjUsZmlsbDoiY3VycmVudENvbG9yIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6MS4zfSkpLGZyfHwoZnI9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTUuODE4IDcuNTM0YTEuMSAxLjEgMCAxIDAgMC0yLjIgMS4xIDEuMSAwIDAgMCAwIDIuMm00LjM2NCAwYTEuMSAxLjEgMCAxIDAgMC0yLjIgMS4xIDEuMSAwIDAgMCAwIDIuMiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpLGRyfHwoZHI9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7c3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VXaWR0aDoxLjMsZDoiTTEwIDEwYy0uNDQuNjA0LTEuMTcyIDEtMiAxcy0xLjU2LS4zOTYtMi0xIn0pKSl9O2Z1bmN0aW9uIGdyKCl7cmV0dXJuIGdyPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sZ3IuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBtcixicj1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLGdyKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSx2cnx8KHZyPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Im00LjM5NCAxNC43IDkuMzU2LTUuNGMxLS41NzcgMS0yLjAyIDAtMi41OThMNC4zOTQgMS4yOTlhMS41IDEuNSAwIDAgMC0yLjI1IDEuM3YzLjQzOGw0LjA1OSAxLjA4OGMuNDk0LjEzMi40OTQuODMzIDAgLjk2NmwtNC4wNiAxLjA4N3Y0LjIyNGExLjUgMS41IDAgMCAwIDIuMjUgMS4yOTkiLGNsaXBSdWxlOiJldmVub2RkIn0pKSl9O2Z1bmN0aW9uIHdyKCl7cmV0dXJuIHdyPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sd3IuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBfcixTcj1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLHdyKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjI0LGhlaWdodDoyNCxmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMjQgMjQiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxtcnx8KG1yPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse3N0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixzdHJva2VXaWR0aDoxLjcsZDoibTE0IDE4LTYtNiA2LTYifSkpKX07ZnVuY3Rpb24geHIoKXtyZXR1cm4geHI9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSx4ci5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIEVyLENyPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIseHIoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MjQsaGVpZ2h0OjI0LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAyNCAyNCIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLF9yfHwoX3I9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTUuODQ5IDguNDczYTEuMjc1IDEuMjc1IDAgMCAxIDEuODAzIDBMMTIgMTIuODJsNC4zNDktNC4zNDhhMS4yNzUgMS4yNzUgMCAxIDEgMS44MDMgMS44MDNsLTUuMjUgNS4yNWExLjI3NSAxLjI3NSAwIDAgMS0xLjgwMyAwbC01LjI1LTUuMjVhMS4yNzUgMS4yNzUgMCAwIDEgMC0xLjgwM1oiLGNsaXBSdWxlOiJldmVub2RkIn0pKSl9O2Z1bmN0aW9uIE9yKCl7cmV0dXJuKDAsUy5qc3gpKCJzdmciLHt3aWR0aDoiMjQiLGhlaWdodDoiMjQiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjooMCxTLmpzeCkoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgzLjUsIDguNSkgc2NhbGUoMS4zLCAxLjQpIixjaGlsZHJlbjooMCxTLmpzeCkoInBhdGgiLHtkOiJNNi4wNjgzNiA2LjgwNjY0TDEuMTkzMzYgMS45MzE2NEMwLjkzOTQ1MyAxLjcwMzEyIDAuOTM5NDUzIDEuMzIyMjcgMS4xOTMzNiAxLjA2ODM2QzEuNDIxODggMC44Mzk4NDQgMS44MDI3MyAwLjgzOTg0NCAyLjA1NjY0IDEuMDY4MzZMNi41IDUuNTM3MTFMMTAuOTQzNCAxLjA5Mzc1QzExLjE3MTkgMC44Mzk4NDQgMTEuNTUyNyAwLjgzOTg0NCAxMS44MDY2IDEuMDkzNzVDMTIuMDM1MiAxLjMyMjI3IDEyLjAzNTIgMS43MDMxMiAxMS44MDY2IDEuOTMxNjRMNi45MDYyNSA2LjgwNjY0QzYuNjc3NzMgNy4wNjA1NSA2LjI5Njg4IDcuMDYwNTUgNi4wNjgzNiA2LjgwNjY0WiIsZmlsbDoiY3VycmVudENvbG9yIn0pfSl9KX1mdW5jdGlvbiBBcigpe3JldHVybiBBcj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LEFyLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgSXIsa3I9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixBcih7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksRXJ8fChFcj1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNMy41IDUuNWE0LjUgNC41IDAgMCAxIDkgMFY4bDIuMjkzIDIuMjkzYy42My42My4xODQgMS43MDctLjcwNyAxLjcwN0gxLjkxNGMtLjg5IDAtMS4zMzctMS4wNzctLjcwNy0xLjcwN0wzLjUgOHptNi41IDguMDhhMiAyIDAgMSAxLTQtLjA4aDMuOTk3eiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpKX07ZnVuY3Rpb24gTHIoKXtyZXR1cm4gTHI9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxMci5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFRyLGpyPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsTHIoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLElyfHwoSXI9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTEzIDMuN0gzYS4zLjMgMCAwIDAtLjMuM3Y0LjYzMmwxLjkwNC0xLjA3YTIuODUgMi44NSAwIDAgMSAyLjc5MiAwbDIuMDQgMS4xNDZjLjM1LjE5Ny43NzguMTk3IDEuMTI3IDBMMTMuMyA3LjE3MVY0YS4zLjMgMCAwIDAtLjMtLjNNMi43IDEydi0xLjQxOGwyLjczNy0xLjUzOGExLjE1IDEuMTUgMCAwIDEgMS4xMjYgMGwyLjA0MSAxLjE0NmEyLjg1IDIuODUgMCAwIDAgMi43OTIgMEwxMy4zIDkuMTJWMTJhLjMuMyAwIDAgMS0uMy4zSDNhLjMuMyAwIDAgMS0uMy0uM00zIDJhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJ6bTcuMSA1LjJhMS4xIDEuMSAwIDEgMCAwLTIuMiAxLjEgMS4xIDAgMCAwIDAgMi4yIixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpfTtmdW5jdGlvbiBQcigpe3JldHVybiBQcj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LFByLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgTnIsTXI9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixQcih7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksVHJ8fChUcj1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNMyAyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDEwYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0yem0zLjU1IDMuMTA2IDMuOTYyIDIuMjg4YS43LjcgMCAwIDEgMCAxLjIxMkw2LjU1IDEwLjg5NGEuNy43IDAgMCAxLTEuMDUtLjYwNlY1LjcxMmEuNy43IDAgMCAxIDEuMDUtLjYwNiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpKX07ZnVuY3Rpb24gUnIoKXtyZXR1cm4gUnI9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxSci5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFVyPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsUnIoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLE5yfHwoTnI9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTcuNjcgMi41MDdhLjg1Ljg1IDAgMCAxIDAgMS4yMDJMMy41MjQgNy44NTVhMi40NjQgMi40NjQgMCAwIDAgMy40ODUgMy40ODRsNS45MjUtNS45MjZhLjgzNi44MzYgMCAwIDAtMS4xODEtMS4xODJMNS44NyAxMC4xMTNhLjg1Ljg1IDAgMCAxLTEuMi0xLjIwM2w1Ljg4Mi01Ljg4MmEyLjUzNiAyLjUzNiAwIDAgMSAzLjU4NSAzLjU4Nkw4LjIwMiAxMi41NWE0LjE2NCA0LjE2NCAwIDAgMS01Ljg4OS01Ljg4OGwuMDA2LS4wMDYgNC4xNDktNC4xNDlhLjg1Ljg1IDAgMCAxIDEuMjAyIDAiLGNsaXBSdWxlOiJldmVub2RkIn0pKSl9LHpyPWZ1bmN0aW9uKHQpe3ZhciBlPXQuY29sb3Isbj0oMCxKLkEpKCkscj1TdHJpbmcobiYmZSYmbltlXXx8bi5pY29uRGVmYXVsdCk7cmV0dXJuKDAsUy5qc3gpKCJzdmciLHt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjooMCxTLmpzeCkoInBhdGgiLHtkOiJNMTIuMzQ3NyA0LjUwNjk2SDguMDkyMTRDNS4zMzI2NCA0LjUwNjk2IDMuMDk1NjIgNi43NDM5OCAzLjA5NTYyIDkuNTAzNDhDMy4wOTU2MiAxMi4yNjMgNS4zMzI2NCAxNC41IDguMDkyMTQgMTQuNUMxMC4zODQgMTQuNSAxMi4zMTU1IDEyLjk1NjkgMTIuOTA0MyAxMC44NTNNMTIuMzQ3NyA0LjUwNjk2TDkuMzQwNTEgMS41TTEyLjM0NzcgNC41MDY5Nkw5LjM0MDUxIDcuNTE0MTIiLHN0cm9rZTpyLHN0cm9rZVdpZHRoOiIxLjciLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLHN0eWxlOntmaWxsOiJub25lIn19KX0pfTtmdW5jdGlvbiBIcih0KXt2YXIgZT10LmNvbG9yLG49KDAsSi5BKSgpLHI9U3RyaW5nKG4mJmUmJm5bZV18fChudWxsPT1uP3ZvaWQgMDpuLmFscGhhV2hpdGUxMDApKTtyZXR1cm4oMCxTLmpzeCkoInN2ZyIse2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjIwIixoZWlnaHQ6IjIwIix2aWV3Qm94OiIwIDAgMjAgMjAiLGZpbGw6Im5vbmUiLGNoaWxkcmVuOigwLFMuanN4KSgicGF0aCIse2ZpbGxSdWxlOiJldmVub2RkIixjbGlwUnVsZToiZXZlbm9kZCIsZDoiTTEwLjkyNCAxLjEyNGExLjA2MiAxLjA2MiAwIDAgMCAwIDEuNTAybDEuOTQ1IDEuOTQ1aC0yLjc1NGE3LjMwOCA3LjMwOCAwIDEgMCA3LjAzOSA5LjI4MSAxLjA2MyAxLjA2MyAwIDAgMC0yLjA0Ny0uNTcyIDUuMTgzIDUuMTgzIDAgMSAxLTQuOTkyLTYuNTg0aDIuNzU1bC0xLjk0NiAxLjk0NWExLjA2MiAxLjA2MiAwIDEgMCAxLjUwMyAxLjUwM2wzLjc1OS0zLjc1OWExLjA2MiAxLjA2MiAwIDAgMCAwLTEuNTAzbC0zLjc1OS0zLjc1OGExLjA2MyAxLjA2MyAwIDAgMC0xLjUwMyAwWiIsZmlsbDpyfSl9KX1mdW5jdGlvbiBGcigpe3JldHVybigwLFMuanN4cykoInN2ZyIse2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjIwIixoZWlnaHQ6IjIwIix2aWV3Qm94OiIwIDAgMjAgMjAiLGZpbGw6Im5vbmUiLGNoaWxkcmVuOlsoMCxTLmpzeCkoInBhdGgiLHtjbGFzc05hbWU6ImJhY2tncm91bmQiLGQ6Ik0xMCAxLjI1QzE0LjgzMjUgMS4yNSAxOC43NSA1LjE2NzUxIDE4Ljc1IDEwQzE4Ljc1IDE0LjgzMjUgMTQuODMyNSAxOC43NSAxMCAxOC43NUM1LjE2NzUxIDE4Ljc1IDEuMjUgMTQuODMyNSAxLjI1IDEwQzEuMjUgNS4xNjc1MSA1LjE2NzUxIDEuMjUgMTAgMS4yNVoifSksKDAsUy5qc3gpKCJwYXRoIix7Y2xhc3NOYW1lOiJpY29uIixkOiJNMTAgMTIuNUMxMC44OTIyIDEyLjUgMTEuNTYyNSAxMy4xNzAzIDExLjU2MjUgMTQuMDYyNUMxMS41NjI1IDE0Ljk1NDcgMTAuODkyMiAxNS42MjUgMTAgMTUuNjI1QzkuMTA3ODEgMTUuNjI1IDguNDM3NSAxNC45NTQ3IDguNDM3NSAxNC4wNjI1QzguNDM3NSAxMy4xNzAzIDkuMTA3ODEgMTIuNSAxMCAxMi41Wk0xMC4xNjAyIDQuMzc1QzEwLjkwNzIgNC4zNzUxIDExLjQ4NyA1LjAyNjQxIDExLjQwMTQgNS43Njg1NUwxMC44NzExIDEwLjM3MDFDMTAuODE5OSAxMC44MTIzIDEwLjQ0NTEgMTEuMTQ1NSAxMCAxMS4xNDU1QzkuNTU0ODcgMTEuMTQ1NSA5LjE4MDEgMTAuODEyMyA5LjEyODkxIDEwLjM3MDFMOC41OTg2MyA1Ljc2ODU1QzguNTEzIDUuMDI2NDEgOS4wOTI4MSA0LjM3NTEgOS44Mzk4NCA0LjM3NUgxMC4xNjAyWiJ9KV19KX12YXIgRHI9WyJ3aWR0aCIsImhlaWdodCIsImNvbG9yIl07ZnVuY3Rpb24gQnIoKXtyZXR1cm4gQnI9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxCci5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gVnIodCl7dmFyIGU9dC53aWR0aCxuPXZvaWQgMD09PWU/MjA6ZSxyPXQuaGVpZ2h0LG89dm9pZCAwPT09cj8yMDpyLGk9dC5jb2xvcixhPXZvaWQgMD09PWk/ImN1cnJlbnRDb2xvciI6aSx1PWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dClyZXR1cm57fTt2YXIgbj17fTtmb3IodmFyIHIgaW4gdClpZih7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikpe2lmKC0xIT09ZS5pbmRleE9mKHIpKWNvbnRpbnVlO25bcl09dFtyXX1yZXR1cm4gbn0odCxEcik7cmV0dXJuKDAsUy5qc3hzKSgic3ZnIixCcih7Zm9jdXNhYmxlOiJmYWxzZSIsImFyaWEtaGlkZGVuIjoidHJ1ZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDpuLGhlaWdodDpvLHZpZXdCb3g6IjAgMCAyMCAyMCIsZmlsbDoibm9uZSJ9LHUse2NoaWxkcmVuOlsoMCxTLmpzeCkoInBhdGgiLHtkOiJNMTAuMDM3IDEuMzJ2Ni43ODhoNi45MTN2OS40NjNIMy4yVjEuMzJoNi44MzdaIixmaWxsOmF9KSwoMCxTLmpzeCkoInBhdGgiLHtkOiJtMTMuMTYyIDEuMzIgMy43ODggMy43MjV2MS4xODhoLTUuMDM4VjEuMzJoMS4yNVoiLGZpbGw6YX0pXX0pKX12YXIgR3I9WyJ3aWR0aCIsImhlaWdodCIsImNvbG9yIl07ZnVuY3Rpb24gcXIoKXtyZXR1cm4gcXI9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxxci5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gV3IodCl7dmFyIGU9dC53aWR0aCxuPXZvaWQgMD09PWU/MjA6ZSxyPXQuaGVpZ2h0LG89dm9pZCAwPT09cj8yMDpyLGk9dC5jb2xvcixhPXZvaWQgMD09PWk/ImN1cnJlbnRDb2xvciI6aSx1PWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dClyZXR1cm57fTt2YXIgbj17fTtmb3IodmFyIHIgaW4gdClpZih7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikpe2lmKC0xIT09ZS5pbmRleE9mKHIpKWNvbnRpbnVlO25bcl09dFtyXX1yZXR1cm4gbn0odCxHcik7cmV0dXJuKDAsUy5qc3gpKCJzdmciLHFyKHtmb2N1c2FibGU6ImZhbHNlIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOm4saGVpZ2h0Om8sdmlld0JveDoiMCAwIDIwIDIwIixmaWxsOiJub25lIn0sdSx7Y2hpbGRyZW46KDAsUy5qc3gpKCJwYXRoIix7ZDoiTTE4LjQ3NSAxMS4yNUg2LjA4N2MtLjM3NCAwLS43MTIuMi0uOS41MjVsLTIuMDYyIDMuNTYzVjQuMzc1aDMuMTg4bDEuNDM3IDIuNWg2LjYyNXYyLjIzN2gxLjg3NVY1LjYyNUEuNjE5LjYxOSAwIDAgMCAxNS42MjUgNUg4LjgzOEw3LjY1IDIuOTM4YS44ODEuODgxIDAgMCAwLS43NjMtLjQzOEgxLjg3NmEuNjE5LjYxOSAwIDAgMC0uNjI1LjYyNVYxNy41aDEzLjkxMmMuMzc1IDAgLjcxMy0uMi45LS41MjVsMi44NjMtNC45NWEuNTE2LjUxNiAwIDAgMC0uNDUtLjc3NVoiLGZpbGw6YX0pfSkpfXZhciBLcj1bIndpZHRoIiwiaGVpZ2h0IiwiY29sb3IiXTtmdW5jdGlvbiBacigpe3JldHVybiBacj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LFpyLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBKcih0KXt2YXIgZT10LndpZHRoLG49dm9pZCAwPT09ZT8yMDplLHI9dC5oZWlnaHQsbz12b2lkIDA9PT1yPzIwOnIsaT10LmNvbG9yLGE9dm9pZCAwPT09aT8iY3VycmVudENvbG9yIjppLHU9ZnVuY3Rpb24odCxlKXtpZihudWxsPT10KXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiB0KWlmKHt9Lmhhc093blByb3BlcnR5LmNhbGwodCxyKSl7aWYoLTEhPT1lLmluZGV4T2YocikpY29udGludWU7bltyXT10W3JdfXJldHVybiBufSh0LEtyKTtyZXR1cm4oMCxTLmpzeCkoInN2ZyIsWnIoe2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6bixoZWlnaHQ6byx2aWV3Qm94OiIwIDAgMjAgMjAiLGZpbGw6Im5vbmUifSx1LHtjaGlsZHJlbjooMCxTLmpzeCkoInBhdGgiLHtkOiJNMTcuNSAyLjVoLTE1Yy0uNjg4IDAtMS4yNS41NjMtMS4yNSAxLjI1djEyLjVjMCAuNjg4LjU2MyAxLjI1IDEuMjUgMS4yNWgxNWMuNjg4IDAgMS4yNS0uNTYzIDEuMjUtMS4yNVYzLjc1YzAtLjY4OC0uNTYzLTEuMjUtMS4yNS0xLjI1Wm0tMTQuMzc1IDVoMy4yODd2My4xMjVIMy4xMjVWNy41Wm01LjE2MiAwSDExLjd2My4xMjVIOC4yODhWNy41Wm01LjMgMGgzLjI4OHYzLjEyNWgtMy4yODdWNy41Wk0zLjEyNiAxNS42MjVWMTIuNWgzLjI4N3YzLjEyNUgzLjEyNVptNS4xNjIgMFYxMi41SDExLjd2My4xMjVIOC4yODhabTUuMyAwVjEyLjVoMy4yODh2My4xMjVoLTMuMjg3WiIsZmlsbDphfSl9KSl9dmFyIFlyPVsid2lkdGgiLCJoZWlnaHQiLCJjb2xvciJdO2Z1bmN0aW9uIFFyKCl7cmV0dXJuIFFyPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sUXIuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIFhyKHQpe3ZhciBlPXQud2lkdGgsbj12b2lkIDA9PT1lPzIwOmUscj10LmhlaWdodCxvPXZvaWQgMD09PXI/MjA6cixpPXQuY29sb3IsYT12b2lkIDA9PT1pPyJjdXJyZW50Q29sb3IiOmksdT1mdW5jdGlvbih0LGUpe2lmKG51bGw9PXQpcmV0dXJue307dmFyIG49e307Zm9yKHZhciByIGluIHQpaWYoe30uaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpKXtpZigtMSE9PWUuaW5kZXhPZihyKSljb250aW51ZTtuW3JdPXRbcl19cmV0dXJuIG59KHQsWXIpO3JldHVybigwLFMuanN4KSgic3ZnIixRcih7Zm9jdXNhYmxlOiJmYWxzZSIsImFyaWEtaGlkZGVuIjoidHJ1ZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDpuLGhlaWdodDpvLHZpZXdCb3g6IjAgMCAyMCAyMCIsZmlsbDoibm9uZSJ9LHUse2NoaWxkcmVuOigwLFMuanN4KSgicGF0aCIse2ZpbGw6YSxkOiJNNS43MTMgNS43NzUgMi41IDE0Ljk4OGgxLjhsLjc1LTIuMjg4SDguNWwuNzc1IDIuMjg4aDEuODEzTDcuOCA1Ljc3NUg1LjdoLjAxM1ptLS4yMTMgNS42LjM4OC0xLjE3NWMuMTUtLjQ3NS4zLTEuMDM3LjQ3NC0xLjY2Mi4xMTMtLjQ1LjI1LS45NS4zODgtMS40ODguMTM4LjUyNS4yNzUgMS4wMjUuNCAxLjQ3NS4xNzUuNjI1LjMzNyAxLjE4OC41IDEuNjc1bC40IDEuMTc1SDUuNVptMTEuNzUtMi4xNWMtLjE3NS0uMy0uMzg3LS41NS0uNjYzLS43MjVhMi41ODQgMi41ODQgMCAwIDAtLjkxMi0uMzg3QTQuNTE3IDQuNTE3IDAgMCAwIDE0LjY4NyA4Yy0uNDYyIDAtLjg4Ny4wNjMtMS4yODcuMi0uMzg4LjEzOC0uNzM4LjMyNS0xLjAxMy42LS4yNzQuMjc1LS41LjYtLjYyNSAxLjAxMmwxLjQ4OC4zYy4wNjMtLjE1LjE1LS4zLjI3NS0uNDI1LjEyNS0uMTM3LjI4Ny0uMjM3LjQ3NS0uMzI0LjItLjA4OC40MjUtLjEyNS43LS4xMjUuMjc1IDAgLjQ4OC4wMzcuNjYzLjEyNWEuODcuODcgMCAwIDEgLjQuMzYyYy4wODcuMTYyLjEzNy4zNS4xMzcuNTc1di4wMjVhLjM5MS4zOTEgMCAwIDEtLjE3NS4zNWMtLjExMi4wNzUtLjMuMTI1LS41NS4xNjItLjI1LjAzOC0uNTc1LjA3NS0uOTc1LjExM2E3LjkzIDcuOTMgMCAwIDAtLjk3NS4xNjNjLS4zMTMuMDc1LS42LjE4Ny0uODUuMzUtLjI1LjE1LS40NS4zNjItLjU4OC42MTItLjE1LjI1LS4yMjUuNTc1LS4yMjUuOTc1IDAgLjQ1LjEuODM3LjMgMS4xNS4yLjMxMy40NzYuNTM4LjgyNS43LjM1LjE2Mi43NS4yMzcgMS4xNzYuMjM3LjM2MiAwIC42NzUtLjA1LjkzNy0uMTVhMi4wMzcgMi4wMzcgMCAwIDAgMS4wODctLjkzN2guMDYzVjE1aDEuNTM4di00LjYxM2MwLS40NjItLjA4OC0uODUtLjI1LTEuMTVsLjAxMi0uMDEyWm0tMS4zMzggMy4yODdjMCAuMjUtLjA2Mi40ODgtLjIuNzEzYTEuNjI2IDEuNjI2IDAgMCAxLS41NjIuNTI1Yy0uMjM4LjEzNy0uNTI1LjItLjg2My4yLS4yMjUgMC0uNDI1LS4wMzctLjYtLjFhMS4wNCAxLjA0IDAgMCAxLS40MTItLjMuODE4LjgxOCAwIDAgMS0uMTUtLjVjMC0uMjEzLjA1LS4zODguMTYyLS41MjVhMS4wOCAxLjA4IDAgMCAxIC40NS0uMzEzYy4xODgtLjA3NS40MTMtLjEyNC42NS0uMTYyLjEgMCAuMjI2LS4wMjUuMzc1LS4wNS4xNS0uMDI1LjMtLjA1LjQ2My0uMDc1LjE2Mi0uMDI1LjMtLjA2My40MjUtLjEuMTI1LS4wMzcuMjEzLS4wNzUuMjc1LS4xMTJ2LjgxMmwtLjAxMy0uMDEzWiJ9KX0pKX12YXIgJHIsdG8sZW89WyJ3aWR0aCIsImhlaWdodCIsImNvbG9yIl07ZnVuY3Rpb24gbm8oKXtyZXR1cm4gbm89T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxuby5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcm8odCl7dmFyIGU9dC53aWR0aCxuPXZvaWQgMD09PWU/MjA6ZSxyPXQuaGVpZ2h0LG89dm9pZCAwPT09cj8yMDpyLGk9dC5jb2xvcixhPXZvaWQgMD09PWk/ImN1cnJlbnRDb2xvciI6aSx1PWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dClyZXR1cm57fTt2YXIgbj17fTtmb3IodmFyIHIgaW4gdClpZih7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikpe2lmKC0xIT09ZS5pbmRleE9mKHIpKWNvbnRpbnVlO25bcl09dFtyXX1yZXR1cm4gbn0odCxlbyk7cmV0dXJuKDAsUy5qc3gpKCJzdmciLG5vKHtmb2N1c2FibGU6ImZhbHNlIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOm4saGVpZ2h0Om8sdmlld0JveDoiMCAwIDIwIDIwIixmaWxsOiJub25lIn0sdSx7Y2hpbGRyZW46KDAsUy5qc3gpKCJwYXRoIix7ZmlsbDphLGQ6Ik01LjczIDE4Ljc1Yy0xLjcxNSAwLTIuNjA1LS45MDUtMi42MDUtMi42NTFWMy45YzAtMS43MzguODktMi42NTEgMi42MDYtMi42NTFoMy42NjR2Ni4xMWMwIDEuMDExLjQ4IDEuNTA0IDEuNDgzIDEuNTA0aDUuOTk3VjE2LjFjMCAxLjczOC0uODkgMi42NTEtMi42MDYgMi42NTFINS43MzFabTUuMjkyLTExLjA2NmMtLjMwNCAwLS40NjUtLjE1My0uNDY1LS40NlYxLjMzYy4zNjkuMDQ4LjczLjMyMyAxLjEyMy43MjdsNC4zODUgNC40ODZjLjQxLjQyOS42NzQuNzc2LjcyMiAxLjE0aC01Ljc2NVoifSl9KSl9ZnVuY3Rpb24gb28odCl7dmFyIGU9dC5jb2xvcixuPSgwLEouQSkoKSxyPVN0cmluZyhuJiZlJiZuW2VdfHxuLmljb25PbkludmVyc2UpO3JldHVybigwLFMuanN4cykoInN2ZyIse3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2IixmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOlsoMCxTLmpzeCkoInBhdGgiLHtkOiJNNy45OTk5NCAxMlY3IixzdHJva2U6cixzdHJva2VXaWR0aDoiMS43In0pLCgwLFMuanN4KSgiY2lyY2xlIix7Y3g6IjEuMSIsY3k6IjEuMSIscjoiMS4xIix0cmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAtMSA2Ljg5OTkzIDYuMjAwMikiLGZpbGw6cixzdHJva2VXaWR0aDoiMCIsc3Ryb2tlOiJub25lIn0pLCgwLFMuanN4KSgiY2lyY2xlIix7Y3g6IjgiLGN5OiI4IixyOiI2LjUiLHN0cm9rZTpyLHN0cm9rZVdpZHRoOiIxLjc1In0pXX0pfWZ1bmN0aW9uIGlvKCl7cmV0dXJuIGlvPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0saW8uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBhbyx1bz1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLGlvKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSwkcnx8KCRyPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse3N0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoxLjcsZDoibTEuOTk5IDIgNSA1In0pKSx0b3x8KHRvPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse3N0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoxLjc1LGQ6Ik02LjQ5OSAxLjVoLTV2NW03LjUgMi41IDUgNW0uNS00LjV2NWgtNSJ9KSkpfTtmdW5jdGlvbiBzbygpe3JldHVybigwLFMuanN4KSgic3ZnIix7d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsdHJhbnNmb3JtOiJtYXRyaXgoLTEsMCwwLDEsMCwwKSIsY2hpbGRyZW46KDAsUy5qc3gpKCJwYXRoIix7ZDoiTTEzLjU5IDUuMzFoLTEuN2wzLjMtMy4zLTEuMi0xLjItMy4zIDMuM3YtMS43YS44NS44NSAwIDEgMC0xLjcgMHY0LjZoNC42YS44NS44NSAwIDEgMCAwLTEuN00xLjU3IDkuODRjMCAuNDcuMzguODUuODUuODVoMS43bC0zLjMgMy4zIDEuMiAxLjIgMy4zLTMuM3YxLjdhLjg1Ljg1IDAgMSAwIDEuNyAwdi00LjZoLTQuNmEuODUuODUgMCAwIDAtLjg1Ljg1IixmaWxsOiJjdXJyZW50Q29sb3IifSl9KX1mdW5jdGlvbiBjbygpe3JldHVybiBjbz1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGNvLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgbG8sZm89ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixjbyh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksYW98fChhbz1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsc3Ryb2tlV2lkdGg6MS41LGQ6Im05IDcgNC41LTQuNW0tNCAwaDR2NE03IDlsLTQuNSA0LjVtNCAwaC00di00In0pKSl9O2Z1bmN0aW9uIHBvKCl7cmV0dXJuKDAsUy5qc3gpKCJzdmciLHt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjooMCxTLmpzeCkoInBhdGgiLHtkOiJNMyA2LjVDMi4xNyA2LjUgMS41IDcuMTcgMS41IDhDMS41IDguODMgMi4xNyA5LjUgMyA5LjVDMy44MyA5LjUgNC41IDguODMgNC41IDhDNC41IDcuMTcgMy44MyA2LjUgMyA2LjVaTTggNi41QzcuMTcgNi41IDYuNSA3LjE3IDYuNSA4QzYuNSA4LjgzIDcuMTcgOS41IDggOS41QzguODMgOS41IDkuNSA4LjgzIDkuNSA4QzkuNSA3LjE3IDguODMgNi41IDggNi41Wk0xMyA2LjVDMTIuMTcgNi41IDExLjUgNy4xNyAxMS41IDhDMTEuNSA4LjgzIDEyLjE3IDkuNSAxMyA5LjVDMTMuODMgOS41IDE0LjUgOC44MyAxNC41IDhDMTQuNSA3LjE3IDEzLjgzIDYuNSAxMyA2LjVaIixmaWxsOiJjdXJyZW50Q29sb3IifSl9KX1mdW5jdGlvbiBobygpe3JldHVybigwLFMuanN4KSgic3ZnIix7d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46KDAsUy5qc3gpKCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoNiwgMikiLGNoaWxkcmVuOigwLFMuanN4KSgicGF0aCIse2Q6Ik0yIDguOTY4NzVDMi40MzE2NCA4Ljk2ODc1IDIuODEyNSA5LjIyMjY2IDMuMDQxMDIgOS41NzgxMkMzLjI2OTUzIDkuOTU4OTggMy4yNjk1MyAxMC40NDE0IDMuMDQxMDIgMTAuNzk2OUMyLjgxMjUgMTEuMTc3NyAyLjQzMTY0IDExLjQwNjIgMiAxMS40MDYyQzEuNTQyOTcgMTEuNDA2MiAxLjE2MjExIDExLjE3NzcgMC45MzM1OTQgMTAuNzk2OUMwLjcwNTA3OCAxMC40NDE0IDAuNzA1MDc4IDkuOTU4OTggMC45MzM1OTQgOS41NzgxMkMxLjE2MjExIDkuMjIyNjYgMS41NDI5NyA4Ljk2ODc1IDIgOC45Njg3NVpNMiA0LjkwNjI1QzIuNDMxNjQgNC45MDYyNSAyLjgxMjUgNS4xNjAxNiAzLjA0MTAyIDUuNTE1NjJDMy4yNjk1MyA1Ljg5NjQ4IDMuMjY5NTMgNi4zNzg5MSAzLjA0MTAyIDYuNzM0MzhDMi44MTI1IDcuMTE1MjMgMi40MzE2NCA3LjM0Mzc1IDIgNy4zNDM3NUMxLjU0Mjk3IDcuMzQzNzUgMS4xNjIxMSA3LjExNTIzIDAuOTMzNTk0IDYuNzM0MzhDMC43MDUwNzggNi4zNzg5MSAwLjcwNTA3OCA1Ljg5NjQ4IDAuOTMzNTk0IDUuNTE1NjJDMS4xNjIxMSA1LjE2MDE2IDEuNTQyOTcgNC45MDYyNSAyIDQuOTA2MjVaTTMuMjE4NzUgMi4wNjI1QzMuMjE4NzUgMi41MTk1MyAyLjk2NDg0IDIuOTAwMzkgMi42MDkzOCAzLjEyODkxQzIuMjI4NTIgMy4zNTc0MiAxLjc0NjA5IDMuMzU3NDIgMS4zOTA2MiAzLjEyODkxQzEuMDA5NzcgMi45MDAzOSAwLjc4MTI1IDIuNTE5NTMgMC43ODEyNSAyLjA2MjVDMC43ODEyNSAxLjYzMDg2IDEuMDA5NzcgMS4yNSAxLjM5MDYyIDEuMDIxNDhDMS43NDYwOSAwLjc5Mjk2OSAyLjIyODUyIDAuNzkyOTY5IDIuNjA5MzggMS4wMjE0OEMyLjk2NDg0IDEuMjUgMy4yMTg3NSAxLjYzMDg2IDMuMjE4NzUgMi4wNjI1WiIsZmlsbDoiY3VycmVudENvbG9yIn0pfSl9KX1mdW5jdGlvbiB2bygpe3JldHVybigwLFMuanN4KSgic3ZnIix7d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46KDAsUy5qc3gpKCJwYXRoIix7ZDoiTTEwLjg1IDMuOTk5ODRDMTAuODUgNC4yMTk4NCAxMC43NyA0LjQzOTg0IDEwLjYgNC41OTk4NEw3LjIwMDA1IDcuOTk5ODRMMTAuNiAxMS4zOTk4QzEwLjkzIDExLjcyOTggMTAuOTMgMTIuMjY5OCAxMC42IDEyLjU5OThDMTAuMjcgMTIuOTI5OCA5LjczMDA1IDEyLjkyOTggOS40MDAwNSAxMi41OTk4TDQuODAwMDUgNy45OTk4NEw5LjQwMDA1IDMuMzk5ODRDOS43MzAwNSAzLjA2OTg0IDEwLjI3IDMuMDY5ODQgMTAuNiAzLjM5OTg0QzEwLjc3IDMuNTY5ODQgMTAuODUgMy43Nzk4NCAxMC44NSAzLjk5OTg0WiIsZmlsbDoiY3VycmVudENvbG9yIn0pfSl9ZnVuY3Rpb24geW8oKXtyZXR1cm4oMCxTLmpzeCkoInN2ZyIse3dpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2IixmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOigwLFMuanN4KSgicGF0aCIse2Q6Ik01LjE1IDMuOTk5ODRDNS4xNSA0LjIxOTg0IDUuMjMgNC40Mzk4NCA1LjQgNC41OTk4NEw4Ljc5OTk1IDcuOTk5ODRMNS40IDExLjM5OThDNS4wNyAxMS43Mjk4IDUuMDcgMTIuMjY5OCA1LjQgMTIuNTk5OEM1LjczIDEyLjkyOTggNi4yNjk5NSAxMi45Mjk4IDYuNTk5OTUgMTIuNTk5OEwxMS4yIDcuOTk5ODRMNi41OTk5NSAzLjM5OTg0QzYuMjY5OTUgMy4wNjk4NCA1LjczIDMuMDY5ODQgNS40IDMuMzk5ODRDNS4yMyAzLjU2OTg0IDUuMTUgMy43Nzk4NCA1LjE1IDMuOTk5ODRaIixmaWxsOiJjdXJyZW50Q29sb3IifSl9KX1mdW5jdGlvbiBnbygpe3JldHVybigwLFMuanN4KSgic3ZnIix7d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46KDAsUy5qc3gpKCJwYXRoIix7ZDoiTTQuMDAwMDkgNS4xNDk5QzQuMjIwMDkgNS4xNDk5IDQuNDQwMDkgNS4yMjk5IDQuNjAwMDkgNS4zOTk5TDguMDAwMDkgOC43OTk5TDExLjQwMDEgNS4zOTk5QzExLjczMDEgNS4wNjk5IDEyLjI3MDEgNS4wNjk5IDEyLjYwMDEgNS4zOTk5QzEyLjkzMDEgNS43Mjk5IDEyLjkzMDEgNi4yNjk5IDEyLjYwMDEgNi41OTk5TDguMDAwMDkgMTEuMTk5OUwzLjQwMDA5IDYuNTk5OUMzLjA3MDA5IDYuMjY5OSAzLjA3MDA5IDUuNzI5OSAzLjQwMDA5IDUuMzk5OUMzLjU3MDA5IDUuMjI5OSAzLjc4MDA5IDUuMTQ5OSA0LjAwMDA5IDUuMTQ5OVoiLGZpbGw6ImN1cnJlbnRDb2xvciJ9KX0pfWZ1bmN0aW9uIG1vKCl7cmV0dXJuKDAsUy5qc3gpKCJzdmciLHt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjooMCxTLmpzeCkoInBhdGgiLHtkOiJNMTMuMjUgMy45NUwxMi4wNSAyLjc1TDggNi44TDMuOTUgMi43NUwyLjc1IDMuOTVMNi44IDhMMi43NSAxMi4wNUwzLjk1IDEzLjI1TDggOS4yTDEyLjA1IDEzLjI1TDEzLjI1IDEyLjA1TDkuMiA4TDEzLjI1IDMuOTVaIixmaWxsOiJjdXJyZW50Q29sb3IifSl9KX1mdW5jdGlvbiBibygpe3JldHVybigwLFMuanN4KSgic3ZnIix7d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46KDAsUy5qc3gpKCJwYXRoIix7ZDoiTTEzLjU5IDUuMzFoLTEuN2wzLjMtMy4zLTEuMi0xLjItMy4zIDMuM3YtMS43YS44NS44NSAwIDEgMC0xLjcgMHY0LjZoNC42YS44NS44NSAwIDEgMCAwLTEuN00xLjU3IDkuODRjMCAuNDcuMzguODUuODUuODVoMS43bC0zLjMgMy4zIDEuMiAxLjIgMy4zLTMuM3YxLjdhLjg1Ljg1IDAgMSAwIDEuNyAwdi00LjZoLTQuNmEuODUuODUgMCAwIDAtLjg1Ljg1IixmaWxsOiJjdXJyZW50Q29sb3IifSl9KX1mdW5jdGlvbiB3bygpe3JldHVybiB3bz1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LHdvLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgX28sU289ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIix3byh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxOCxoZWlnaHQ6MTQsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE4IDE0IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksbG98fChsbz1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik0yIDBoMTRzMiAwIDIgMnYxMHMwIDItMiAySDJzLTIgMC0yLTJWMnMwLTIgMi0ybTQuODUyIDExSDlMNi44MDMgMy4yNUg0LjM5MkwyLjIgMTFoMS45NTVsLjM3LTEuNzAzaDEuOTY3em0tMS4zOC02LjAwNWguMTAxbC42MTMgMi44ODRINC44Mzd6TTE1LjAxNSAxMVY5LjQxNmgtMS42MzNWNC44MzRoMS42MzNWMy4yNUg5Ljc4NHYxLjU4NGgxLjYzM3Y0LjU4Mkg5Ljc4NFYxMXoifSkpKX0seG89bigxOTQ5MCk7ZnVuY3Rpb24gRW8oKXtyZXR1cm4gRW89T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxFby5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIENvLE9vLEFvLElvPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsRW8oe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLF9vfHwoX289by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTE1IDRhMiAyIDAgMCAwLTItMkgzYTIgMiAwIDAgMC0yIDJ2N2EyIDIgMCAwIDAgMiAyaDhsMi4yOTMgMi4yOTNjLjYzLjYzIDEuNzA3LjE4NCAxLjcwNy0uNzA3em0tMyAxLjc1YS43NS43NSAwIDAgMC0uNzUtLjc1aC02LjVhLjc1Ljc1IDAgMCAwIDAgMS41aDYuNWEuNzUuNzUgMCAwIDAgLjc1LS43NW0tMyAzLjVhLjc1Ljc1IDAgMCAwLS43NS0uNzVoLTMuNWEuNzUuNzUgMCAwIDAgMCAxLjVoMy41QS43NS43NSAwIDAgMCA5IDkuMjUiLGNsaXBSdWxlOiJldmVub2RkIn0pKSl9O2Z1bmN0aW9uIGtvKCl7cmV0dXJuIGtvPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sa28uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBMbyxUbz1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLGtvKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxDb3x8KENvPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZDoiTTguNzUgMWEuNzUuNzUgMCAwIDAtMS41IDB2M2EuNzUuNzUgMCAwIDAgMS41IDB6bS00Ljc0LjAzMWEuNzUuNzUgMCAwIDEgLjk1LjQ3NWwuNzUyIDIuMjU3YS43NS43NSAwIDEgMS0xLjQyNC40NzRMMy41MzYgMS45OGEuNzUuNzUgMCAwIDEgLjQ3NC0uOTQ5In0pKSxPb3x8KE9vPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0xLjczNiAzLjU3NWEuODUuODUgMCAwIDAtMS40NzIuODVMMS44NjYgNy4yQTEgMSAwIDAgMSAyIDcuN1YxNGExIDEgMCAwIDAgMSAxaDEwYTEgMSAwIDAgMCAxLTFWNy43YTEgMSAwIDAgMSAuMTM0LS41bDEuNjAyLTIuNzc1YS44NS44NSAwIDAgMC0xLjQ3Mi0uODVMMTIuNTc1IDYuNWExIDEgMCAwIDEtLjg2Ni41SDQuMjkxYTEgMSAwIDAgMS0uODY2LS41ek02Ljc1IDlhLjc1Ljc1IDAgMCAwIDAgMS41aDIuNWEuNzUuNzUgMCAwIDAgMC0xLjV6IixjbGlwUnVsZToiZXZlbm9kZCJ9KSksQW98fChBbz1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik0xMS45OSAxLjAzMWEuNzUuNzUgMCAwIDAtLjk1LjQ3NWwtLjc1MSAyLjI1N2EuNzUuNzUgMCAxIDAgMS40MjMuNDc0bC43NTItMi4yNTdhLjc1Ljc1IDAgMCAwLS40NzQtLjk0OSJ9KSkpfTtmdW5jdGlvbiBqbygpe3JldHVybiBqbz1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGpvLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgUG8sTm89ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixqbyh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksTG98fChMbz1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNMy41IDUuNWE0LjUgNC41IDAgMCAxIDkgMFY4bDIuMjkzIDIuMjkzYy42My42My4xODQgMS43MDctLjcwNyAxLjcwN0gxLjkxNGMtLjg5IDAtMS4zMzctMS4wNzctLjcwNy0xLjcwN0wzLjUgOHptNi41IDguMDhhMiAyIDAgMSAxLTMuOTk4LS4wOGgzLjk5NnoiLGNsaXBSdWxlOiJldmVub2RkIn0pKSl9O2Z1bmN0aW9uIE1vKCl7cmV0dXJuIE1vPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sTW8uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBSbyxVbyx6bz1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLE1vKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxQb3x8KFBvPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik05LjczNiAxLjI4OWMtLjc2Ny0xLjM0NC0yLjcwNS0xLjM0NC0zLjQ3MyAwTC43MSAxMS4wMDhDLS4wNTIgMTIuMzQuOTEgMTQgMi40NDYgMTRoMTEuMTA4YzEuNTM1IDAgMi40OTgtMS42NTkgMS43MzYtMi45OTJ6TTcuMjUgNHY1aDEuNVY0ek04IDEyLjJBMS4xIDEuMSAwIDEgMCA4IDEwYTEuMSAxLjEgMCAwIDAgMCAyLjIiLGNsaXBSdWxlOiJldmVub2RkIn0pKSl9O2Z1bmN0aW9uIEhvKCl7cmV0dXJuIEhvPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sSG8uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBGbyxEbz1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLEhvKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxSb3x8KFJvPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZDoiTTEgM2EyIDIgMCAwIDEgMi0yaDEwYTIgMiAwIDAgMSAyIDJ2MmEyIDIgMCAwIDEtMiAyaC0uODZMOS4xMTEgNC40NThjLTEuNDMxLTEuMi0zLjYxNC0uMTgzLTMuNjE0IDEuNjg2VjdIM2EyIDIgMCAwIDEtMi0yeiJ9KSksVW98fChVbz1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Im0xMy4yNzEgOS45MDctNS4xMjQtNC4zYS43LjcgMCAwIDAtMS4xNS41Mzd2Ni42ODhhLjcuNyAwIDAgMCAuOTk2LjYzNWwxLjc5MS0uODM1IDEuMjU1IDIuNjlhLjg1Ljg1IDAgMSAwIDEuNTQtLjcxOGwtMS4yNTQtMi42OSAxLjc5Mi0uODM2YS43LjcgMCAwIDAgLjE1NC0xLjE3MSJ9KSkpfTtmdW5jdGlvbiBCbygpe3JldHVybiBCbz1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LEJvLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgVm8sR289ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixCbyh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksRm98fChGbz1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik05LjIwNSAxLjY2M2EuODUuODUgMCAxIDAtMS43IDB2MS42OWEuODUuODUgMCAxIDAgMS43IDB6TTQuNDc2IDIuOTE4QS44NS44NSAwIDAgMCAzLjI3NCA0LjEybDEuMTk1IDEuMTk1QS44NS44NSAwIDAgMCA1LjY3IDQuMTEzem04Ljk2MSAxLjIwMmEuODUuODUgMCAwIDAtMS4yMDItMS4yMDJMMTEuMDQgNC4xMTNhLjg1Ljg1IDAgMSAwIDEuMjAyIDEuMjAyek0yLjAxOSA3LjE1YS44NS44NSAwIDAgMCAwIDEuN2gxLjY5YS44NS44NSAwIDAgMCAwLTEuN3ptMTAuOTgzIDBhLjg1Ljg1IDAgMSAwIDAgMS43aDEuNjlhLjg1Ljg1IDAgMCAwIDAtMS43ek01LjY3IDExLjg4N2EuODUuODUgMCAxIDAtMS4yMDEtMS4yMDJsLTEuMTk1IDEuMTk0YS44NS44NSAwIDAgMCAxLjIwMiAxLjIwM3ptNi40ODItMi4wODVMOC4xNTYgNi40NDlhLjcuNyAwIDAgMC0xLjE1LjUzNnY1LjIxNmEuNy43IDAgMCAwIC45OTUuNjM1bDEuMjI4LS41NzMgMS4zNzcgMi45NTNhLjg1Ljg1IDAgMSAwIDEuNTQtLjcxOWwtMS4zNzYtMi45NTIgMS4yMjgtLjU3MmEuNy43IDAgMCAwIC4xNTQtMS4xNzEifSkpKX07ZnVuY3Rpb24gcW8oKXtyZXR1cm4gcW89T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxxby5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFdvLEtvPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIscW8oe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLFZvfHwoVm89by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTIgMmExIDEgMCAwIDEgMS0xaDhhMSAxIDAgMCAxIDEgMXY1aDFhMSAxIDAgMCAxIDEgMXY2SDJ6bTQgMUg0djNoMnpNNCA4aDJ2M0g0em00IDBoMnYzSDh6bTAtNWgydjNIOHoiLGNsaXBSdWxlOiJldmVub2RkIn0pKSl9O2Z1bmN0aW9uIFpvKCl7cmV0dXJuIFpvPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sWm8uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBKbyxZbz1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLFpvKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxXb3x8KFdvPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0xNSA0YTMgMyAwIDAgMC0zLTNINGExIDEgMCAwIDAtMSAxdjFoLS41YTEgMSAwIDAgMCAwIDJIM3YyaC0uNWExIDEgMCAwIDAgMCAySDN2MmgtLjVhMSAxIDAgMSAwIDAgMkgzdjFhMSAxIDAgMCAwIDEgMWg4YTMgMyAwIDAgMCAzLTN6TTkgNy4yM2ExLjU5IDEuNTkgMCAxIDAgMC0zLjE4IDEuNTkgMS41OSAwIDAgMCAwIDMuMThtLTIuOCA0LjM1OGMtLjM4NyAwLS43MDItLjMxNi0uNjEzLS42OTNBMy4xNSAzLjE1IDAgMCAxIDYuNzE0IDkuMTFjLjMtLjI1IDEuMTc3LS43MDQgMi4yODYtLjcwNHMxLjk4Ni40NTQgMi4yODYuNzA0Yy42OTcuNTQ0IDEgMS4yNDYgMS4xMjcgMS43ODUuMDg5LjM3Ny0uMjI2LjY5My0uNjEzLjY5M3oiLGNsaXBSdWxlOiJldmVub2RkIn0pKSl9O2Z1bmN0aW9uIFFvKCl7cmV0dXJuIFFvPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sUW8uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBYbywkbyx0aT1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLFFvKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxKb3x8KEpvPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0uOTc0IDQuMzAzQy40NjUgNC41MiAwIDQuOTQ4IDAgNS41djVjMCAuNTUyLjQ2NS45ODEuOTc0IDEuMTk3YTIuNSAyLjUgMCAwIDEgMS4zMyAxLjMzYy4yMTUuNTA4LjY0NC45NzMgMS4xOTYuOTczaDljLjU1MiAwIC45ODEtLjQ2NSAxLjE5Ny0uOTc0YTIuNSAyLjUgMCAwIDEgMS4zMy0xLjMzYy41MDgtLjIxNS45NzMtLjY0NC45NzMtMS4xOTZ2LTVjMC0uNTUyLS40NjUtLjk4MS0uOTc0LTEuMTk3YTIuNSAyLjUgMCAwIDEtMS4zMy0xLjMzQzEzLjQ4MiAyLjQ2NiAxMy4wNTMgMiAxMi41IDJoLTljLS41NTIgMC0uOTgxLjQ2NS0xLjE5Ny45NzRhMi41IDIuNSAwIDAgMS0xLjMzIDEuMzNNMyA2LjI1YS43NS43NSAwIDAgMSAuNzUtLjc1aDhhLjc1Ljc1IDAgMCAxIDAgMS41aC04QS43NS43NSAwIDAgMSAzIDYuMjVtMS41IDMuNUEuNzUuNzUgMCAwIDEgNS4yNSA5aDVhLjc1Ljc1IDAgMCAxIDAgMS41aC01YS43NS43NSAwIDAgMS0uNzUtLjc1IixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpfTtmdW5jdGlvbiBlaSgpe3JldHVybiBlaT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGVpLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgbmkscmk9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixlaSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksWG98fChYbz1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik0yLjUgM0ExLjUgMS41IDAgMCAwIDEgNC41VjVoMTR2LS41QTEuNSAxLjUgMCAwIDAgMTMuNSAzeiJ9KSksJG98fCgkbz1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNMTUgNi41SDF2NkExLjUgMS41IDAgMCAwIDIuNSAxNGgxMWExLjUgMS41IDAgMCAwIDEuNS0xLjV6bS01IDNhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgLjUuNXYyYS41LjUgMCAwIDEtLjUuNWgtMmEuNS41IDAgMCAxLS41LS41eiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpKX07ZnVuY3Rpb24gb2koKXtyZXR1cm4gb2k9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxvaS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIGlpLGFpPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsb2koe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLG5pfHwobmk9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTMgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMGEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMnptLjM3NSAyLjEwMmEuNzUuNzUgMCAxIDAtLjc1IDEuM2w0IDIuMzA5Yy44NS40OTEgMS45LjQ5MSAyLjc1IDBsNC0yLjMxYS43NS43NSAwIDAgMC0uNzUtMS4yOTlsLTQgMi4zMWExLjI1IDEuMjUgMCAwIDEtMS4yNSAweiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpKX07ZnVuY3Rpb24gdWkoKXtyZXR1cm4gdWk9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSx1aS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIHNpLGNpPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsdWkoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLGlpfHwoaWk9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJNMy41NzUgMTMuOTdxLTEuMDI1IDAtMS41NS0uNTEyLS41MjUtLjUxMS0uNTI1LTEuNTM2VjQuMDU0cTAtMS4wMjMuNTI1LTEuNTM1UTIuNTUgMiAzLjU3NSAyaDguODVxMS4wMzggMCAxLjU1Ni41MTkuNTE5LjUxOC41MTkgMS41MzV2Ny44NjhxMCAxLjAxNy0uNTE5IDEuNTI5LS41MTguNTE5LTEuNTU2LjUxOXptLS4wNTUtMS4xNTRoOC45NTNxLjQxNyAwIC42NDItLjIxOC4yMzItLjIxOC4yMzItLjY2MlY1LjkyNHEwLS40MzctLjIzMi0uNjU1LS4yMjUtLjIxOS0uNjQyLS4yMTlIMy41MnEtLjQxNyAwLS42MzUuMjE5LS4yMTguMjE4LS4yMTguNjU1djYuMDEycTAgLjQ0NC4yMTguNjYyLjIxOS4yMTguNjM1LjIxOG0zLjIzNS01LjQ5M3EtLjE3MSAwLS4yNDYtLjA2Mi0uMDY5LS4wNi0uMDY4LS4yMzJ2LS4zNzVxMC0uMTcuMDY4LS4yMzIuMDc1LS4wNjguMjQ2LS4wNjhoLjM3NXEuMTcgMCAuMjMyLjA2OC4wNjguMDYxLjA2OC4yMzJ2LjM3NXEwIC4xNy0uMDY4LjIzMi0uMDYxLjA2Mi0uMjMyLjA2MnptMi4xMjIgMHEtLjE3IDAtLjIzOS0uMDYyLS4wNi0uMDYtLjA2MS0uMjMydi0uMzc1cTAtLjE3LjA2MS0uMjMyLjA2OS0uMDY4LjIzOS0uMDY4aC4zODJxLjE3IDAgLjIzOS4wNjguMDY4LjA2MS4wNjguMjMydi4zNzVxMCAuMTctLjA2OC4yMzItLjA2OS4wNjItLjIzOS4wNjJ6bTIuMTI5IDBxLS4xNzcgMC0uMjQ2LS4wNjItLjA2LS4wNi0uMDYxLS4yMzJ2LS4zNzVxMC0uMTcuMDYxLS4yMzIuMDY5LS4wNjguMjQ2LS4wNjhoLjM4MnEuMTcgMCAuMjMyLjA2OC4wNjkuMDYxLjA2OS4yMzJ2LjM3NXEwIC4xNy0uMDY5LjIzMi0uMDYuMDYyLS4yMzIuMDYyem0tNi4zOCAyLjEwMnEtLjE3OCAwLS4yNDYtLjA2Mi0uMDYyLS4wNjgtLjA2Mi0uMjM5di0uMzgycTAtLjE3LjA2Mi0uMjMyLjA2OC0uMDYuMjQ1LS4wNjFoLjM3NnEuMTc3IDAgLjIzOS4wNjEuMDY4LjA2Mi4wNjguMjMydi4zODJxMCAuMTcxLS4wNjguMjQtLjA2LjA2LS4yNC4wNnptMi4xMjkgMHEtLjE3MSAwLS4yNDYtLjA2Mi0uMDY5LS4wNjgtLjA2OC0uMjM5di0uMzgycTAtLjE3LjA2OC0uMjMyLjA3NS0uMDYuMjQ2LS4wNjFoLjM3NXEuMTcgMCAuMjMyLjA2MS4wNjguMDYyLjA2OC4yMzJ2LjM4MnEwIC4xNzEtLjA2OC4yNC0uMDYxLjA2LS4yMzIuMDZ6bTIuMTIyIDBxLS4xNyAwLS4yMzktLjA2Mi0uMDYtLjA2OC0uMDYxLS4yMzl2LS4zODJxMC0uMTcuMDYxLS4yMzIuMDY5LS4wNi4yMzktLjA2MWguMzgycS4xNyAwIC4yMzkuMDYxLjA2OC4wNjIuMDY4LjIzMnYuMzgycTAgLjE3MS0uMDY4LjI0LS4wNjkuMDYtLjIzOS4wNnptMi4xMjkgMHEtLjE3NyAwLS4yNDYtLjA2Mi0uMDYtLjA2OC0uMDYxLS4yMzl2LS4zODJxMC0uMTcuMDYxLS4yMzIuMDY5LS4wNi4yNDYtLjA2MWguMzgycS4xNyAwIC4yMzIuMDYxLjA2OS4wNjIuMDY5LjIzMnYuMzgycTAgLjE3MS0uMDY5LjI0LS4wNi4wNi0uMjMyLjA2em0tNi4zOCAyLjA4OHEtLjE3OCAwLS4yNDYtLjA2Mi0uMDYyLS4wNi0uMDYyLS4yMzJ2LS4zNzVxMC0uMTc3LjA2Mi0uMjM5LjA2OC0uMDYuMjQ1LS4wNjFoLjM3NnEuMTc3IDAgLjIzOS4wNjEuMDY4LjA2LjA2OC4yNHYuMzc0cTAgLjE3Mi0uMDY4LjIzMi0uMDYuMDYyLS4yNC4wNjJ6bTIuMTI5IDBxLS4xNzEgMC0uMjQ2LS4wNjItLjA2OS0uMDYtLjA2OC0uMjMydi0uMzc1cTAtLjE3Ny4wNjgtLjIzOS4wNzUtLjA2LjI0Ni0uMDYxaC4zNzVxLjE3IDAgLjIzMi4wNjEuMDY4LjA2LjA2OC4yNHYuMzc0cTAgLjE3Mi0uMDY4LjIzMi0uMDYxLjA2Mi0uMjMyLjA2MnptMi4xMjIgMHEtLjE3IDAtLjIzOS0uMDYyLS4wNi0uMDYtLjA2MS0uMjMydi0uMzc1cTAtLjE3Ny4wNjEtLjIzOS4wNjktLjA2LjIzOS0uMDYxaC4zODJxLjE3IDAgLjIzOS4wNjEuMDY4LjA2LjA2OC4yNHYuMzc0cTAgLjE3Mi0uMDY4LjIzMi0uMDY5LjA2Mi0uMjM5LjA2MnoifSkpKX07ZnVuY3Rpb24gbGkoKXtyZXR1cm4gbGk9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxsaS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIGZpLGRpPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsbGkoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLHNpfHwoc2k9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTUuNjQ5IDEyLjEwMWEuODUuODUgMCAwIDEgMC0xLjIwMmwyLjg5OS0yLjktMi45LTIuODk4YS44NS44NSAwIDAgMSAxLjIwMy0xLjIwMmwzLjUgMy41YS44NS44NSAwIDAgMSAwIDEuMjAybC0zLjUgMy41YS44NS44NSAwIDAgMS0xLjIwMiAwIixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpfTtmdW5jdGlvbiBwaSgpe3JldHVybiBwaT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LHBpLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgaGksdmk9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixwaSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksZml8fChmaT1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik0xMS44MDYgOS40N2E1LjUgNS41IDAgMSAwLTcuNjEzIDBxLjExLjExMi4yMDguMjM0SDcuMjVWNi44MUw1LjczMiA1LjI5MmEuNzUuNzUgMCAxIDEgMS4wNi0xLjA2TDggNS40MzhsMS4yMDctMS4yMDdhLjc1Ljc1IDAgMSAxIDEuMDYgMS4wNkw4Ljc1IDYuODF2Mi44OTRoMi44NXEuMDk3LS4xMjIuMjA5LS4yMzR6bS0uNzk3IDEuNzM0SDQuOTkxcS4wMDguMTA4LjAwOC4yMTZ2MS4xM2MwIC4zOTkuMTU4Ljc4LjQ0IDEuMDYxbC45NS45NWExLjUgMS41IDAgMCAwIDEuMDYuNDRoMS4xYTEuNSAxLjUgMCAwIDAgMS4wNi0uNDRsLjk1LS45NWExLjUgMS41IDAgMCAwIC40NC0xLjA2di0xLjEzcTAtLjExLjAwOC0uMjE3In0pKSl9O2Z1bmN0aW9uIHlpKCl7cmV0dXJuIHlpPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0seWkuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBnaSxtaT1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLHlpKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjE2LGhlaWdodDoxNixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTYgMTYiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxoaXx8KGhpPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik00LjUgNUg0YTIgMiAwIDAgMC0yIDJ2NmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY3YTIgMiAwIDAgMC0yLTJoLS41di0uNWEzLjUgMy41IDAgMSAwLTcgMHptMS43IDBoMy42di0uNWExLjggMS44IDAgMCAwLTMuNiAwek04IDcuNzVhLjc1Ljc1IDAgMCAxIC43NS43NXYzYS43NS43NSAwIDAgMS0xLjUgMHYtM0EuNzUuNzUgMCAwIDEgOCA3Ljc1IixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpfTtmdW5jdGlvbiBiaSgpe3JldHVybiBiaT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGJpLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgd2ksX2k9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixiaSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksZ2l8fChnaT1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNNS42MzUgMS41OTJhMS4wMjUgMS4wMjUgMCAwIDAtMS4zNzUtLjQ5bC0xLjc5NS44NjhhMi41OTMgMi41OTMgMCAwIDAtMS4yOTcgMy4yNTFsLjAwMS4wMDJ2LjAwNWExNy44IDE3LjggMCAwIDAgMy44NTQgNS43NDcgMTcuOCAxNy44IDAgMCAwIDUuNzQ2IDMuODUzaC4wMDVsLjAwMy4wMDMuMDAzLjAwMmEyLjU5MyAyLjU5MyAwIDAgMCAzLjI1LTEuMjk4bC44NjgtMS43OTVhMS4wMjUgMS4wMjUgMCAwIDAtLjQ5LTEuMzc1bC0yLjU0OC0xLjE5YTEuMDIgMS4wMiAwIDAgMC0xLjA4OS4xNDFsLS44ODEuNzMyYS45OC45OCAwIDAgMS0xLjIyMy4wNCAxNSAxNSAwIDAgMS0yLjc1NS0yLjc1NC45OC45OCAwIDAgMSAuMDQtMS4yMjRsLjczMi0uODgxYy4yNTMtLjMwNi4zMDgtLjczLjE0LTEuMDl6IixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpfTtmdW5jdGlvbiBTaSgpe3JldHVybiBTaT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LFNpLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgeGksRWk9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixTaSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMjQgMjQiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSx3aXx8KHdpPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6ImN1cnJlbnRDb2xvciIsZDoibTEuNDUgMTUuNTkyLTIuMTIxLTIuMTIxYTIgMiAwIDAgMSAuMTI3LTIuOTU2IDE5LjggMTkuOCAwIDAgMSA4LjI3My0zLjkzMSAxOS41IDE5LjUgMCAwIDEgOC40ODUgMCAxOS44IDE5LjggMCAwIDEgOC4zMDIgMy45NiAyIDIgMCAwIDEgLjEzNCAyLjk0OGwtMi4xMjEgMi4xMjFhMiAyIDAgMCAxLTIuNjMuMTk4IDEyLjggMTIuOCAwIDAgMC0yLjQ4My0xLjQ5MiAyIDIgMCAwIDEtMS4xNzMtMS44MXYtMS43OTZhMTYgMTYgMCAwIDAtOC40ODYgMHYxLjc5NmEyIDIgMCAwIDEtMS4xNzMgMS44MSAxMi44IDEyLjggMCAwIDAtMi40ODIgMS40OTIgMiAyIDAgMCAxLTIuNjUyLS4yMTkifSkpKX07ZnVuY3Rpb24gQ2koKXtyZXR1cm4gQ2k9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxDaS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIE9pLEFpLElpPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsQ2koe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCkseGl8fCh4aT1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik04IDEwYzEuNjYgMCAzLTEuMzQgMy0zVjRjMC0xLjY2LTEuMzQtMy0zLTNTNSAyLjM0IDUgNHYzYzAgMS42NiAxLjM0IDMgMyAzbTQuNS00djFjMCAyLjQ4LTIuMDIgNC41LTQuNSA0LjVTMy41IDkuNDggMy41IDdWNkgydjFjMCAzLjA2IDIuMjkgNS41OCA1LjI1IDUuOTVWMTVoMS41di0yLjA1QTYgNiAwIDAgMCAxNCA3VjZ6In0pKSl9O2Z1bmN0aW9uIGtpKCl7cmV0dXJuIGtpPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sa2kuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBMaSxUaT1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLGtpKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLE9pfHwoT2k9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJNOCAxMGMxLjY2IDAgMy0xLjM0IDMtM1Y0YzAtMS42Ni0xLjM0LTMtMy0zUzUgMi4zNCA1IDR2M2MwIDEuNjYgMS4zNCAzIDMgM200LjUtNHYxYzAgMi40OC0yLjAyIDQuNS00LjUgNC41UzMuNSA5LjQ4IDMuNSA3VjZIMnYxYzAgMy4wNiAyLjI5IDUuNTggNS4yNSA1Ljk1VjE1aDEuNXYtMi4wNUE2IDYgMCAwIDAgMTQgN1Y2eiJ9KSksQWl8fChBaT1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZVdpZHRoOjEuNixkOiJtMi4yIDEuMiAxMi42IDEyLjYifSkpKX07ZnVuY3Rpb24gamkoKXtyZXR1cm4gamk9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxqaS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFBpLE5pLE1pPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsamkoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLExpfHwoTGk9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTggNi45MUEyLjk1NSAyLjk1NSAwIDEgMCA4IDFhMi45NTUgMi45NTUgMCAwIDAgMCA1LjkxbTYuMjEgNS4zMzhhLjg1Ljg1IDAgMCAxLS4yOTQuOTNDMTMuMTQgMTMuODI2IDEwLjg3IDE1IDggMTVzLTUuMTQtMS4xNzQtNS45MTYtMS44MjJhLjg1Ljg1IDAgMCAxLS4yOTQtLjkzIDUuOCA1LjggMCAwIDEgMS45NjUtMi44NUM0LjMxMiA4LjkzMyA1Ljk0MSA4LjA5IDggOC4wOXMzLjY4OC44NDIgNC4yNDUgMS4zMDdhNS44IDUuOCAwIDAgMSAxLjk2NSAyLjg1IixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpfTtmdW5jdGlvbiBSaSgpe3JldHVybiBSaT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LFJpLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgVWksemksSGk9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixSaSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksUGl8fChQaT1vLmNyZWF0ZUVsZW1lbnQoImciLHtjbGlwUGF0aDoidXJsKCMyNjEzYSkifSxvLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNMTAuNDYuNTVjLjcwOC4wOTQuODkuOTQyLjM4NSAxLjQ0N2wtMi4xMSAyLjExYTEgMSAwIDAgMC0uMjU4Ljk2NWwuMzY4IDEuMzc2YTEgMSAwIDAgMCAuNzA3LjcwN2wxLjM3Ni4zNjhhMSAxIDAgMCAwIC45NjUtLjI1OGwyLjExLTIuMTFjLjUwNS0uNTA1IDEuMzUzLS4zMjMgMS40NDYuMzg0YTUuODA2IDUuODA2IDAgMCAxLTcuNTA0IDYuMzA1bC0zLjM2MyAzLjM2M2ExIDEgMCAwIDEtMS40MTMgMEwuNzkzIDEyLjgzMWExIDEgMCAwIDEgMC0xLjQxM2wzLjM2My0zLjM2NEE1LjgwNiA1LjgwNiAwIDAgMSAxMC40NjEuNTUxIixjbGlwUnVsZToiZXZlbm9kZCJ9KSkpLE5pfHwoTmk9by5jcmVhdGVFbGVtZW50KCJkZWZzIixudWxsLG8uY3JlYXRlRWxlbWVudCgiY2xpcFBhdGgiLHtpZDoiMjYxM2EifSxvLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMCAwaDE2djE2SDB6In0pKSkpKX07ZnVuY3Rpb24gRmkoKXtyZXR1cm4gRmk9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxGaS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIERpLEJpLFZpPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsRmkoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLFVpfHwoVWk9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJNMS41IDE0LjVBMS41IDEuNSAwIDAgMSAzIDEzaDEwYTEuNSAxLjUgMCAwIDEgMS41IDEuNXYuNWgtMTN6TTguOS45YS45LjkgMCAxIDEtMS44IDAgLjkuOSAwIDAgMSAxLjggMG00LjY5MyAxLjMwOWEuOS45IDAgMSAxLTEuOCAwIC45LjkgMCAwIDEgMS44IDBNMTYgNi4zMzJhLjkuOSAwIDEgMS0xLjggMCAuOS45IDAgMCAxIDEuOCAwTTIuNDA3IDIuMjA5YS45LjkgMCAxIDAgMS44IDAgLjkuOSAwIDAgMC0xLjggME0wIDYuMzMyYS45LjkgMCAxIDAgMS44IDAgLjkuOSAwIDAgMC0xLjggMCJ9KSkseml8fCh6aT1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGZpbGxSdWxlOiJldmVub2RkIixkOiJNMyA4YTUgNSAwIDAgMSAxMCAwdjMuNTE4SDN6bTEuMzkzLjA4MWEzLjY0MiAzLjY0MiAwIDAgMSA2LjI5NC0yLjQ5OC43NS43NSAwIDAgMS0xLjA5MiAxLjAyOSAyLjE0MiAyLjE0MiAwIDAgMC0zLjcwMiAxLjQ2OS43NS43NSAwIDEgMS0xLjUgMCIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpKX07ZnVuY3Rpb24gR2koKXtyZXR1cm4gR2k9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxHaS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIHFpLFdpPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsR2koe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLERpfHwoRGk9by5jcmVhdGVFbGVtZW50KCJnIix7ZmlsbDoiY3VycmVudENvbG9yIixjbGlwUGF0aDoidXJsKCNmZmUxYSkifSxvLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtkOiJNMTMuMjM0IDQuODAyYTMgMyAwIDAgMS0xLjk3My0xLjk3MkwxMC41NTUuNTU3Yy0uMjA0LS42NTYtMS4xMzItLjY1Ni0xLjMzNyAwTDguNTEgMi44M2EzIDMgMCAwIDEtMS45NzMgMS45NzJsLTIuMjcyLjcwOGMtLjY1Ni4yMDQtLjY1NiAxLjEzMiAwIDEuMzM3bDIuMjcyLjcwN0EzIDMgMCAwIDEgOC41MSA5LjUyN2wuNzA3IDIuMjcyYy4yMDUuNjU2IDEuMTMzLjY1NiAxLjMzNyAwbC43MDctMi4yNzJhMyAzIDAgMCAxIDEuOTczLTEuOTczbDIuMjczLS43MDdjLjY1Ni0uMjA1LjY1Ni0xLjEzMyAwLTEuMzM3ek02LjE0NSAxMS41N0EyLjU4IDIuNTggMCAwIDEgNC40NSA5Ljg3NWwtLjIyMy0uNzE2Yy0uMTc1LS41NjMtLjk3MS0uNTYzLTEuMTQ2IDBsLS4yMjMuNzE2YTIuNTggMi41OCAwIDAgMS0xLjY5NyAxLjY5N2wtLjcxNi4yMjNjLS41NjIuMTc1LS41NjIuOTcgMCAxLjE0NWwuNzE2LjIyM2EyLjU4IDIuNTggMCAwIDEgMS42OTcgMS42OTdsLjIyMy43MTZjLjE3NS41NjMuOTcuNTYzIDEuMTQ2IDBsLjIyMy0uNzE2YTIuNTggMi41OCAwIDAgMSAxLjY5Ni0xLjY5N2wuNzE3LS4yMjNjLjU2Mi0uMTc1LjU2Mi0uOTcgMC0xLjE0NXoifSkpKSxCaXx8KEJpPW8uY3JlYXRlRWxlbWVudCgiZGVmcyIsbnVsbCxvLmNyZWF0ZUVsZW1lbnQoImNsaXBQYXRoIix7aWQ6ImZmZTFhIn0sby5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZDoiTTAgMGgxNnYxNkgweiJ9KSkpKSl9LEtpPW4oNjk3MjUpO2Z1bmN0aW9uIFppKCl7cmV0dXJuIFppPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sWmkuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBKaSxZaT1mdW5jdGlvbih0KXtyZXR1cm4gby5jcmVhdGVFbGVtZW50KCJzdmciLFppKHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjEyLGhlaWdodDoxMixmaWxsOiJub25lIix2aWV3Qm94OiIwIDAgMTIgMTIiLCJhcmlhLWhpZGRlbiI6InRydWUifSx0KSxxaXx8KHFpPW8uY3JlYXRlRWxlbWVudCgicGF0aCIse2ZpbGw6IiNGQUZBRkEiLGQ6Ik02LjE0NyA3LjU5MnEtLjQ0NCAwLS42NzgtLjI1LS4yMy0uMjQ4LS4yNDQtLjcwN2wtLjEwOC00LjEzMS0uMDEtLjE0MmEyIDIgMCAwIDEtLjAwNC0uMTI3cTAtLjQ4OC4yNzgtLjc2MS4yODQtLjI3NC43NzEtLjI3NC40ODQgMCAuNzU3LjI3NC4yNzQuMjczLjI3NC43NjF2LjEyN3EwIC4wNjktLjAwNS4xNDJsLS4xMDggNC4xM3EtLjAxLjQ2LS4yNDQuNzA5dC0uNjc5LjI0OW0wIDIuOTc4YTEuMTUgMS4xNSAwIDAgMS0uOTktLjU0MkExIDEgMCAwIDEgNSA5LjQ3N3EwLS4yOTkuMTU2LS41NDIuMTU3LS4yNS40MTUtLjM5MS4yNi0uMTQ3LjU3Ni0uMTQ3YTEuMTUgMS4xNSAwIDAgMSAuOTgyLjUzNyAxIDEgMCAwIDEgLjE1Ni41NDMgMSAxIDAgMCAxLS4xNTYuNTUxIDEuMTQgMS4xNCAwIDAgMS0uOTgxLjU0MloifSkpKX07ZnVuY3Rpb24gUWkoKXtyZXR1cm4gUWk9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxRaS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFhpLCRpPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsUWkoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLEppfHwoSmk9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJNNC43OCAxMy41cS0uNjA2IDAtLjk0Ny0uMzQ2LS4zMzMtLjM0Ni0uMzMzLS45NzdWMy44M3EwLS42MzkuMzMzLS45ODUuMzQxLS4zNDYuOTQ2LS4zNDZoMy44MzhxMS4wNTIgMCAxLjgwOS4zMzguNzU3LjMzMiAxLjE2Ni45NTQuNDE2LjYyNC40MTYgMS40NzcgMCAuNjA3LS4yNjUgMS4xMTYtLjI2NS41LS43NDIuODNhMi42IDIuNiAwIDAgMS0xLjEwNS40MTZ2LjA2MWEyLjg0IDIuODQgMCAwIDEgMS4zNTUuMzkzcS41OS4zNTQuOTE2LjkzOC4zMzMuNTg1LjMzMyAxLjMzOCAwIC45NTQtLjQ2MiAxLjY2Mi0uNDYyLjctMS4zMSAxLjA5Mi0uODQ3LjM4NS0yLjAwNS4zODVINC43NzlabTEuMjE4LTEuNzc3SDcuOTVxLjk3NiAwIDEuNDkxLS4zOTIuNTIyLS40LjUyMi0xLjE1NCAwLS43MzgtLjUzNy0xLjEyMy0uNTMtLjM4NS0xLjUzLS4zODVoLTEuOXYzLjA1NFptMC00LjY1NEg3LjY3cS44ODYgMCAxLjM3Ny0uMzc3LjUtLjM3Ny41LTEuMDQ2IDAtLjYzLS40NDctLjk4NC0uNDQ2LS4zNTQtMS4yNDEtLjM1NEg1Ljk5OHoifSkpKX07ZnVuY3Rpb24gdGEoKXtyZXR1cm4gdGE9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSx0YS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIGVhLG5hPWZ1bmN0aW9uKHQpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoInN2ZyIsdGEoe3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MTYsaGVpZ2h0OjE2LGZpbGw6Im5vbmUiLHZpZXdCb3g6IjAgMCAxNiAxNiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LHQpLFhpfHwoWGk9by5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbDoiY3VycmVudENvbG9yIixkOiJNNC42MTggMTMuNWEuNjYuNjYgMCAwIDEtLjQ0OC0uMTU0LjU3LjU3IDAgMCAxLS4xNy0uNDNxMC0uMjYyLjE3LS40MTZhLjYzLjYzIDAgMCAxIC40NC0uMTU0aDEuNzM3bDEuODc3LTguNjkyaC0xLjczYS42Ni42NiAwIDAgMS0uNDQ4LS4xNTQuNTcuNTcgMCAwIDEtLjE3LS40M3EwLS4yNjMuMTctLjQxNmEuNjMuNjMgMCAwIDEgLjQ0LS4xNTRoNC45MDRhLjYzLjYzIDAgMCAxIC40NC4xNTRxLjE3LjE1My4xNy40MTUgMCAuMjctLjE3OC40MzFhLjYzLjYzIDAgMCAxLS40NC4xNTRoLTEuNzNsLTEuODc2IDguNjkyaDEuNzNxLjI3NyAwIC40NDguMTU0dC4xNy40MTVxMCAuMjctLjE3OC40MzFhLjY0LjY0IDAgMCAxLS40NDguMTU0eiJ9KSkpfTtmdW5jdGlvbiByYSgpe3JldHVybiByYT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LHJhLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgb2EsaWE9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixyYSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksZWF8fChlYT1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik04LjI4NyA1LjI2cS41NjcuMTA0Ljk2NC4zMTIuNDA0LjIwOC42OS41LjgwNy44IDEuMDc0IDEuNzY5YTMuNiAzLjYgMCAwIDEgMCAxLjkzN3EtLjI2Ny45NjItMS4wNjggMS43NjJsLTIuMjY1IDIuMjYycS0uNzk1Ljc5My0xLjc2NCAxLjA2YTMuNTMgMy41MyAwIDAgMS0xLjkzMy4wMDZxLS45Ny0uMjY2LTEuNzc4LTEuMDc5LS44MDctLjgtMS4wNzQtMS43NjhhMy41NiAzLjU2IDAgMCAxIDAtMS45M3EuMjY3LS45NyAxLjA2OC0xLjc3bDEuODY4LTEuODU4YTIuNSAyLjUgMCAwIDAtLjAzOS44cS4wNDYuNDA4LjIwMi43NmwtMS4xMiAxLjExMWEyLjcgMi43IDAgMCAwLS43MjkgMS4yMSAyLjQ2IDIuNDYgMCAwIDAgMCAxLjMyNnEuMTgzLjY2My43MzYgMS4yMTYuNTQ3LjU1MSAxLjIxLjcyOC42NjUuMTgyIDEuMzI4IDBhMi43IDIuNyAwIDAgMCAxLjIxMS0uNzI5bDIuMTY4LTIuMTU4YTIuNyAyLjcgMCAwIDAgLjcyOS0xLjIwOSAyLjQgMi40IDAgMCAwLS4wMDctMS4zMjZxLS4xODItLjY2My0uNzM1LTEuMjE2LS4yOTMtLjMtLjcxNi0uNDgxYTMuMyAzLjMgMCAwIDAtMS4wMS0uMjM0em0tLjU4IDUuNDhxLS41NjYtLjEwNC0uOTY5LS4zMTJhMi43IDIuNyAwIDAgMS0uNjc3LS40OTRxLS44MTQtLjgwNi0xLjA4LTEuNzc1YTMuNTYgMy41NiAwIDAgMSAwLTEuOTNxLjI3My0uOTcgMS4wNzQtMS43NjlsMi4yNTgtMi4yNTZxLjgwMS0uOCAxLjc2NC0xLjA2NmEzLjUzIDMuNTMgMCAwIDEgMS45MzQtLjAwNnEuOTY5LjI2NiAxLjc4MyAxLjA3OS44MDcuOCAxLjA3NCAxLjc2OGEzLjU0IDMuNTQgMCAwIDEtLjAwNiAxLjkzN3EtLjI2Ny45NjktMS4wNjEgMS43NjJsLTEuODY5IDEuODZhMi40IDIuNCAwIDAgMCAuMDQtLjc4NyAyLjYgMi42IDAgMCAwLS4yMDItLjc3NGwxLjExMy0xLjExMXEuNTUzLS41NDYuNzM1LTEuMjAzYTIuNCAyLjQgMCAwIDAtLjAwNi0xLjMyNiAyLjcgMi43IDAgMCAwLS43My0xLjIxNnEtLjU1OC0uNTYtMS4yMjMtLjczNWEyLjQ0IDIuNDQgMCAwIDAtMS4zMjEgMHEtLjY1OC4xODMtMS4yMTguNzM1TDYuOTY2IDUuMjczYTIuNyAyLjcgMCAwIDAtLjczNiAxLjIwOSAyLjQ2IDIuNDYgMCAwIDAgMCAxLjMyNnEuMTg5LjY2My43NDIgMS4yMjIuMy4yOTMuNzIzLjQ3NWEzLjQgMy40IDAgMCAwIDEuMDAyLjI0eiJ9KSkpfTtmdW5jdGlvbiBhYSgpe3JldHVybiBhYT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGFhLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgdWEsc2E9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixhYSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksb2F8fChvYT1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik0xLjg4IDQuNzZhLjg2Ljg2IDAgMCAxLS42MjItLjI1MkEuODYuODYgMCAwIDEgMSAzLjg4cTAtLjM2NC4yNTgtLjYyMkEuODUuODUgMCAwIDEgMS44OCAzcS4zNjQgMCAuNjIxLjI1OC4yNi4yNi4yNTkuNjIyYS44Ni44NiAwIDAgMS0uMjU5LjYyOC44Ni44NiAwIDAgMS0uNjIxLjI1MVptMy4wODYtLjMxNWEuNTYuNTYgMCAwIDEtLjQwNS0uMTYuNTYuNTYgMCAwIDEtLjE2LS40MDUuNTQuNTQgMCAwIDEgLjE2LS4zOTguNTYuNTYgMCAwIDEgLjQwNS0uMTZoOS41MzFhLjU2NC41NjQgMCAwIDEgLjU3My41NTguNTY0LjU2NCAwIDAgMS0uNTczLjU2NmgtOS41M1pNMS44OCA4Ljk4NGEuODUuODUgMCAwIDEtLjYyMi0uMjU4QS44NS44NSAwIDAgMSAxIDguMTA0cTAtLjM2NC4yNTgtLjYyMWEuODUuODUgMCAwIDEgLjYyMi0uMjU5cS4zNjQgMCAuNjIxLjI1OS4yNi4yNTguMjU5LjYyMWMtLjAwMS4zNjMtLjA4Ni40NS0uMjU5LjYyMmEuODUuODUgMCAwIDEtLjYyMS4yNThtMy4wODYtLjMyMWEuNTYuNTYgMCAwIDEtLjQwNS0uMTYuNTQuNTQgMCAwIDEtLjE2LS4zOTkuNTQuNTQgMCAwIDEgLjE2LS4zOTguNTUuNTUgMCAwIDEgLjQwNS0uMTY4aDkuNTMxcS4yMzcgMCAuNDA1LjE2OGEuNTMuNTMgMCAwIDEgLjE2OC4zOTguNTY0LjU2NCAwIDAgMS0uNTczLjU1OXpNMS44OCAxMy4yYS44Ni44NiAwIDAgMS0uNjIyLS4yNTEuODYuODYgMCAwIDEtLjI1OC0uNjI4cTAtLjM2NC4yNTgtLjYxNWEuODUuODUgMCAwIDEgLjYyMi0uMjU4cS4zNjQgMCAuNjIxLjI1OGEuODMuODMgMCAwIDEgLjI1OS42MTQuODYuODYgMCAwIDEtLjI1OS42MjkuODYuODYgMCAwIDEtLjYyMS4yNTFtMy4wODYtLjMxNGEuNTYuNTYgMCAwIDEtLjQwNS0uMTYuNTYuNTYgMCAwIDEtLjE2LS40MDUuNTQuNTQgMCAwIDEgLjE2LS4zOTguNTYuNTYgMCAwIDEgLjQwNS0uMTYxaDkuNTMxYS41NjQuNTY0IDAgMCAxIC40MDUuOTYzLjU2LjU2IDAgMCAxLS40MDUuMTYxaC05LjUzWiJ9KSkpfTtmdW5jdGlvbiBjYSgpe3JldHVybiBjYT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGNhLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgbGE9ZnVuY3Rpb24odCl7cmV0dXJuIG8uY3JlYXRlRWxlbWVudCgic3ZnIixjYSh7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoxNixoZWlnaHQ6MTYsZmlsbDoibm9uZSIsdmlld0JveDoiMCAwIDE2IDE2IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sdCksdWF8fCh1YT1vLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik0yLjMyMyA1LjIwNWEuNS41IDAgMCAxLS4zMzYtLjExMnEtLjEyNS0uMTE5LS4xMjUtLjM1NlYyLjg3M2gtLjAxNGwtLjMyMS4yMTZhLjcuNyAwIDAgMS0uMTMzLjA4NC40LjQgMCAwIDEtLjExOS4wMTQuMy4zIDAgMCAxLS4zLS4zMDdxMC0uMTkuMjE2LS4zMzVsLjQ5Ni0uMzQzcS4xMzMtLjA5LjI1OS0uMTQ2QS44LjggMCAwIDEgMi4yNiAycS4yMyAwIC4zNy4xMzMuMTQ2LjEyNS4xNDYuMzQ5djIuMjU1cTAgLjIzNy0uMTI1LjM1NmEuNDguNDggMCAwIDEtLjMyOC4xMTJtMi45NTMtLjg0NWEuNTYuNTYgMCAwIDEtLjQwNS0uMTYuNTQuNTQgMCAwIDEtLjE2LS4zOTkuNTQuNTQgMCAwIDEgLjE2LS4zOTguNTUuNTUgMCAwIDEgLjQwNS0uMTY3aDkuMDIxcS4yMzkgMCAuNDA1LjE2N2EuNTMuNTMgMCAwIDEgLjE2OC4zOTguNTY0LjU2NCAwIDAgMS0uNTczLjU1OXpNMS4xOTggOS40MTVBLjM4LjM4IDAgMCAxIC45MiA5LjMxYS4zNi4zNiAwIDAgMS0uMTA1LS4yNjUuNDkuNDkgMCAwIDEgLjE5Ni0uMzlsLjkxNS0uNzU1cS4yNzItLjIxNi4zNTYtLjM0MmEuNDYuNDYgMCAwIDAgLjA5LS4yNTguMy4zIDAgMCAwLS4wOTctLjIzOC4zNi4zNiAwIDAgMC0uMjUyLS4wOXEtLjI3MSAwLS40MTkuMjU4YS40LjQgMCAwIDEtLjM2My4yMXEtLjM4NCAwLS4zODQtLjM0MyAwLS4zMzUuMzIxLS41NjYuMzMtLjIzLjgzMS0uMjMuNTY1IDAgLjg5NC4yNThhLjgyLjgyIDAgMCAxIC4zMjguNjc4cTAgLjMwOC0uMTUzLjUyMy0uMTU1LjIxLS41MS41MDNsLS41NzMuNDYxdi4wMmguOTk5YS4zMi4zMiAwIDAgMSAuMzM1LjM0My4zMi4zMiAwIDAgMS0uMzM1LjMyOHptNC4wNzgtLjgzYS41Ni41NiAwIDAgMS0uNDA1LS4xNjEuNTYuNTYgMCAwIDEtLjE2LS40MDUuNTQuNTQgMCAwIDEgLjE2LS4zOTguNTYuNTYgMCAwIDEgLjQwNS0uMTZoOS4wMjFhLjU2NC41NjQgMCAwIDEgLjU3My41NTguNTY0LjU2NCAwIDAgMS0uNTczLjU2NmgtOS4wMlptLTMuMjU0IDUuMThxLS40MjUgMC0uODI0LS4xOTVRLjggMTMuMzguOCAxMy4wMjVxMC0uMTYuMTA1LS4yNTFhLjQuNCAwIDAgMSAuMjgtLjA5OHEuMDk3IDAgLjE2LjA0MmEuNy43IDAgMCAxIC4xMjYuMDlxLjA5OC4wOTkuMjMuMTkuMTQuMDgzLjMyMS4wODMuMTc1IDAgLjI5NC0uMDlhLjMuMyAwIDAgMCAuMTE4LS4yMzhxMC0uMzIxLS40ODEtLjMyMWgtLjA5MXEtLjMyMSAwLS4zMjEtLjN0LjMyLS4zaC4wNzhhLjcuNyAwIDAgMCAuMzM1LS4wNy4yNS4yNSAwIDAgMCAuMTE4LS4yMjRxMC0uMTYtLjExMS0uMjM4YS40NC40NCAwIDAgMC0uMjY2LS4wNzYuNi42IDAgMCAwLS4yMzcuMDQ5LjcuNyAwIDAgMC0uMjIzLjE4MS43LjcgMCAwIDEtLjE0Ny4xMjYuMy4zIDAgMCAxLS4xNzUuMDQyLjM3LjM3IDAgMCAxLS4yNTgtLjA5MS4zMy4zMyAwIDAgMS0uMDk4LS4yNDVxMC0uMjMuMTY4LS4zOS4xNzQtLjE2Mi40MzMtLjI0NWExLjggMS44IDAgMCAxIC41MzctLjA4NHEuNTE3IDAgLjg2LjIxNy4zNDguMjEuMzQ4LjYwNyAwIC4zMDgtLjE4MS40ODJhLjg1Ljg1IDAgMCAxLS40NDcuMjI0di4wMnEuMzYzLjAyOC41NTIuMjE3LjE5NS4xODkuMTk1LjQ3NWEuODIuODIgMCAwIDEtLjM1LjY5OHEtLjM0LjI1OC0uOTcuMjU4bTMuMjU0LS45NjNhLjU2LjU2IDAgMCAxLS40MDUtLjE2LjU0LjU0IDAgMCAxLS4xNi0uMzk5LjU0LjU0IDAgMCAxIC4xNi0uMzk4LjU1LjU1IDAgMCAxIC40MDUtLjE2OGg5LjAyMXEuMjM5IDAgLjQwNS4xNjhhLjUzLjUzIDAgMCAxIC4xNjguMzk4LjU2NC41NjQgMCAwIDEtLjU3My41NTl6In0pKSl9fSw4MzM3ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNzQ4NDgpO2UuQT1mdW5jdGlvbigpe3JldHVybigwLHIuanN4KSgic3ZnIix7Zm9jdXNhYmxlOiJmYWxzZSIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsdmlld0JveDoiMCAwIDI4IDMyIix3aWR0aDoiMjgiLGhlaWdodDoiMzIiLGNoaWxkcmVuOigwLHIuanN4KSgicGF0aCIse2Q6Ik0yOCwzMiBDMjgsMzIgMjMuMjg2MzI2NiwzMC4xNDUwNjY3IDE5LjQ3Mjc4MTgsMjguNjU5MiBMMy40Mzc0OTEwNywyOC42NTkyIEMxLjUzOTIxOTg5LDI4LjY1OTIgMCwyNy4wMjcyIDAsMjUuMDE0NCBMMCwzLjY0NDggQzAsMS42MzIgMS41MzkyMTk4OSwwIDMuNDM3NDkxMDcsMCBMMjQuNTYxNTA4OCwwIEMyNi40NTk3OCwwIDI3Ljk5ODk5OTksMS42MzIgMjcuOTk4OTk5OSwzLjY0NDggTDI3Ljk5ODk5OTksMjIuMDQ5MDY2NyBMMjgsMjIuMDQ5MDY2NyBMMjgsMzIgWiBNMjMuODYxNDA4OCwyMC4wMTgxMzMzIEMyMy41MzA5MjIzLDE5LjYxMDUyNDIgMjIuOTU0MDgxMiwxOS41NjMzODM2IDIyLjU2OTIyNDIsMTkuOTEyNTMzMyBDMjIuNTM5MjE5OSwxOS45MzkyIDE5LjU1Mzc5MzQsMjIuNTk0MTMzMyAxMy45OTg5OTk5LDIyLjU5NDEzMzMgQzguNTEzMjE2MTcsMjIuNTk0MTMzMyA1LjQ4MTc4MzExLDE5Ljk1ODQgNS40Mjc3NzU0LDE5LjkxMDQgQzUuMDQyOTUxMTksMTkuNTYyOTQyOCA0LjQ2NzYwOTkxLDE5LjYxMDUwOTUgNC4xMzc1OTEwOCwyMC4wMTcwNjY3IEMzLjk3OTEzMDUxLDIwLjIxMjQ5MTYgMy45MDA0NDk0LDIwLjQ2NzMzOTUgMy45MTkwNDM1NywyMC43MjQ5NDE1IEMzLjkzNzYzNzc0LDIwLjk4MjU0MzUgNC4wNTE5NjU3NSwyMS4yMjE1NDQ3IDQuMjM2NjA1MjMsMjEuMzg4OCBDNC4zNzg2MjU1MiwyMS41MTY4IDcuNzc0MTEwNTksMjQuNTM4NjY2NyAxMy45OTg5OTk5LDI0LjUzODY2NjcgQzIwLjIyNDg4OTMsMjQuNTM4NjY2NyAyMy42MjAzNzQzLDIxLjUxNjggMjMuNzYyMzk0NiwyMS4zODg4IEMyMy45NDY3MzQyLDIxLjIyMTU3MjYgMjQuMDYwODY0MiwyMC45ODI3OTA1IDI0LjA3OTQ1MzksMjAuNzI1NDUwNyBDMjQuMDk4MDQzNiwyMC40NjgxMTA5IDI0LjAxOTU1NTEsMjAuMjEzNTAxOSAyMy44NjE0MDg4LDIwLjAxODEzMzMgWiJ9KX0pfX0sMjY1NTU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7QTpmdW5jdGlvbigpe3JldHVybiBvfX0pO3ZhciByPW4oNzQ4NDgpO2Z1bmN0aW9uIG8oKXtyZXR1cm4oMCxyLmpzeCkoInN2ZyIse3dpZHRoOiIyNCIsaGVpZ2h0OiIyNCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOigwLHIuanN4KSgicGF0aCIse2ZpbGxSdWxlOiJldmVub2RkIixjbGlwUnVsZToiZXZlbm9kZCIsZDoiTTE4LjYwMSA4LjM5ODk3QzE4LjI2OSA4LjA2NzAyIDE3LjczMDkgOC4wNjcwMiAxNy4zOTg5IDguMzk4OTdMMTIgMTMuNzk3OUw2LjYwMDk5IDguMzk4OTdDNi4yNjkwNCA4LjA2NzAyIDUuNzMwODYgOC4wNjcwMiA1LjM5ODkxIDguMzk4OTdDNS4wNjY5NiA4LjczMDkxIDUuMDY2OTYgOS4yNjkxIDUuMzk4OTEgOS42MDEwNUwxMS4zOTg5IDE1LjYwMUMxMS43MzA5IDE1LjkzMyAxMi4yNjkgMTUuOTMzIDEyLjYwMSAxNS42MDFMMTguNjAxIDkuNjAxMDVDMTguOTMyOSA5LjI2OTEgMTguOTMyOSA4LjczMDkxIDE4LjYwMSA4LjM5ODk3WiIsZmlsbDoiY3VycmVudENvbG9yIn0pfSl9fSw3OTk4ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtBOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7dmFyIHI9big3NDg0OCk7ZnVuY3Rpb24gbyh0KXtyZXR1cm4oMCxyLmpzeCkoInN2ZyIse2ZvY3VzYWJsZToiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUiLGNsYXNzTmFtZTp0LmNsYXNzTmFtZSx3aWR0aDoiMTZweCIsaGVpZ2h0OiIxMnB4Iix2aWV3Qm94OiIwIDAgMTYgMTIiLGNoaWxkcmVuOigwLHIuanN4KSgiZyIse3N0cm9rZToibm9uZSIsc3Ryb2tlV2lkdGg6IjEiLGZpbGxSdWxlOiJldmVub2RkIixjaGlsZHJlbjooMCxyLmpzeCkoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgtMjU3LjAwMDAwMCwgLTUyOS4wMDAwMDApIixjaGlsZHJlbjooMCxyLmpzeCkoImciLHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgxMDAuMDAwMDAwLCAxODcuMDAwMDAwKSIsY2hpbGRyZW46KDAsci5qc3gpKCJnIix7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoOTQuMDAwMDAwLCAwLjAwMDAwMCkiLGNoaWxkcmVuOigwLHIuanN4KSgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKDE2LjAwMDAwMCwgMTY5LjAwMDAwMCkiLGNoaWxkcmVuOigwLHIuanN4KSgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKDI0LjAwMDAwMCwgMTU5LjAwMDAwMCkiLGNoaWxkcmVuOigwLHIuanN4KSgiZyIse3RyYW5zZm9ybToidHJhbnNsYXRlKDIzLjAwMDAwMCwgMTQuMDAwMDAwKSIsY2hpbGRyZW46KDAsci5qc3gpKCJwYXRoIix7ZDoiTTEwLjg0MDE0ODgsNi4yMjQ5MDcgTDE1LjY4MTc3NjUsMTEuMDY2NTM0NyBDMTUuNTEwMDUsMTEuMzQ5OTUyOCAxNS4yNzIyNTc0LDExLjU3NDg3OTQgMTQuOTc2ODQ1NywxMS43MzI4NjczIEMxNC42NTA5MTk4LDExLjkwNzE3NDQgMTQuMzI3NjMzNSwxMiAxMy40MzYxMTQ4LDEyIEwyLjU2Mzg4NTIsMTIgQzEuNjcyMzY2NDYsMTIgMS4zNDkwODAyMiwxMS45MDcxNzQ0IDEuMDIzMTU0MywxMS43MzI4NjczIEMwLjcyODc3MjU0LDExLjU3NTQzMDIgMC40OTE2MDg4NjksMTEuMzUxNTIwNSAwLjMyMDAyMjE0OCwxMS4wNjk0OTcgTDUuMTYyNzgxMDEsNi4yMjY3MzgxMyBMNy4yNjkzMzE4OCw3LjU0MzMzMjQyIEM3LjU1MzIxMTc5LDcuNzIwNzU3MzcgNy42NjY2NTk4Nyw3Ljc2NjYyMjMyIDcuODAwNTQzNTcsNy43OTY3OTY2MyBDNy45MzQ0MjcyNyw3LjgyNjk3MDk0IDguMDY1NTcyNzMsNy44MjY5NzA5NCA4LjE5OTQ1NjQzLDcuNzk2Nzk2NjMgQzguMzMzMzQwMTMsNy43NjY2MjIzMiA4LjQ0Njc4ODIxLDcuNzIwNzU3MzcgOC43MzA2NjgxMiw3LjU0MzMzMjQyIEwxMC44NDAxNDg4LDYuMjI0OTA3IFogTTExLjcxMDQzNDEsNS42ODA5Nzg3IEwxNS42OTQwMDAyLDMuMTkxMjQ5ODcgQzE1Ljc4NzY2NzUsMy4xMzI3MDc4IDE1LjkxMTA1NzYsMy4xNjExODI0MyAxNS45Njk1OTk3LDMuMjU0ODQ5NzQgQzE1Ljk4OTQ2NjEsMy4yODY2MzYwNiAxNiwzLjMyMzM2NTU4IDE2LDMuMzYwODQ5NTMgTDE2LDkuNDM2MTE0OCBDMTYsOS42MzYwNjg0MyAxNS45OTUzMzA2LDkuODA3NDM4MDEgMTUuOTg2MTE5Niw5Ljk1NjY2NDI4IEwxMS43MTA0MzQxLDUuNjgwOTc4NyBaIE00LjI5MjQ5NTc0LDUuNjgyODA5ODQgTDAuMDE0MTU4ODE0Myw5Ljk2MTE0Njc2IEMwLjAwNDc2MzU2MzYsOS44MTA4NzE5OSAyLjQ3MzI4MDY3ZS0xNyw5LjYzODA3MzQ4IDAsOS40MzYxMTQ4IEwxLjI0NTY3MTcyZS0xNiwzLjM2MDg0OTUzIEMxLjExMDQwMDk3ZS0xNiwzLjI1MDM5MjU4IDAuMDg5NTQzMDUsMy4xNjA4NDk1MyAwLjIsMy4xNjA4NDk1MyBDMC4yMzc0ODM5NDMsMy4xNjA4NDk1MyAwLjI3NDIxMzQ2OCwzLjE3MTM4MzQyIDAuMzA1OTk5Nzg4LDMuMTkxMjQ5ODcgTDQuMjkyNDk1NzQsNS42ODI4MDk4NCBaIE0xLC0yLjQ4Njg5OTU4ZS0xNCBMMTUsLTIuNDg2ODk5NThlLTE0IEMxNS41NTIyODQ3LC0yLjQ5NzA0NDg4ZS0xNCAxNiwwLjQ0NzcxNTI1IDE2LDEgTDE2LDEuODc2MzkzMiBDMTYsMS45NTIxNDc2MSAxNS45NTcxOTk1LDIuMDIxNDAwMjQgMTUuODg5NDQyNywyLjA1NTI3ODY0IEw4LjQ0NzIxMzYsNS43NzYzOTMyIEM4LjE2NTY4NjEsNS45MTcxNTY5NSA3LjgzNDMxMzksNS45MTcxNTY5NSA3LjU1Mjc4NjQsNS43NzYzOTMyIEwwLjExMDU1NzI4MSwyLjA1NTI3ODY0IEMwLjA0MjgwMDQ3NTIsMi4wMjE0MDAyNCAzLjk3ODU1Mjk4ZS0xNiwxLjk1MjE0NzYxIDMuODg1NzgwNTllLTE2LDEuODc2MzkzMiBMMCwxIEMtNi43NjM1Mzc1MWUtMTcsMC40NDc3MTUyNSAwLjQ0NzcxNTI1LC0yLjQ3Njc1NDI3ZS0xNCAxLC0yLjQ4Njg5OTU4ZS0xNCBaIn0pfSl9KX0pfSl9KX0pfSl9KX19LDY2NzQ4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3NDg0OCk7ZS5BPWZ1bmN0aW9uKCl7cmV0dXJuKDAsci5qc3hzKSgic3ZnIix7d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46WygwLHIuanN4KSgicGF0aCIse2NsYXNzTmFtZToiYm94IixkOiJNNy4xODQyMSA0LjVIM0MyLjE3MTU3IDQuNSAxLjUgNS4xNzE1NyAxLjUgNlYxM0MxLjUgMTMuODI4NCAyLjE3MTU3IDE0LjUgMyAxNC41SDEwQzEwLjgyODQgMTQuNSAxMS41IDEzLjgyODQgMTEuNSAxM1Y5LjUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIn0pLCgwLHIuanN4KSgicGF0aCIse2NsYXNzTmFtZToiYXJyb3ciLGZpbGxSdWxlOiJldmVub2RkIixjbGlwUnVsZToiZXZlbm9kZCIsZDoiTTEzLjk2MjEgMi4zMDg2MUMxMy45Mzc3IDIuMjQ5NjQgMTMuOTAxNSAyLjE5NDM5IDEzLjg1MzYgMi4xNDY0NUMxMy44MDU2IDIuMDk4NTEgMTMuNzUwNCAyLjA2MjM0IDEzLjY5MTQgMi4wMzc5NEMxMy42MzI0IDIuMDEzNDkgMTMuNTY3OCAyIDEzLjUgMkgxMy40OTk5SDkuNUM5LjIyMzg2IDIgOSAyLjIyMzg2IDkgMi41QzkgMi43NzYxNCA5LjIyMzg2IDMgOS41IDNIMTIuMjkyOUw1LjE0NjQ1IDEwLjE0NjRDNC45NTExOCAxMC4zNDE3IDQuOTUxMTggMTAuNjU4MyA1LjE0NjQ1IDEwLjg1MzZDNS4zNDE3MSAxMS4wNDg4IDUuNjU4MjkgMTEuMDQ4OCA1Ljg1MzU1IDEwLjg1MzZMMTMgMy43MDcxMVY2LjVDMTMgNi43NzYxNCAxMy4yMjM5IDcgMTMuNSA3QzEzLjc3NjEgNyAxNCA2Ljc3NjE0IDE0IDYuNVYyLjUwMDQ5VjIuNUMxNCAyLjQ5OSAxNCAyLjQ5OCAxNCAyLjQ5N0MxMy45OTk2IDIuNDMwMyAxMy45ODYxIDIuMzY2NjkgMTMuOTYyMSAyLjMwODYxWiIsZmlsbDoiY3VycmVudENvbG9yIn0pXX0pfX0sNTAyODI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDcwODc4KSxvPW4oNzQ4NDgpO2UuQT1mdW5jdGlvbigpe3JldHVybigwLG8uanN4cykoci5XLHtmb2N1c2FibGU6ImZhbHNlIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIix3aWR0aDoiMTYiLGhlaWdodDoiMTMuNTkiLHZpZXdCb3g6IjAgMCAxNiAxMy41OSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZGF0YS10ZXN0aWQiOiJwcm9kdWN0LXRvdXItaWNvbiIsY2hpbGRyZW46WygwLG8uanN4KSgicGF0aCIse2Q6Ik00IDYuMmMwLS4yMi4xOC0uNC40LS40aDcuMmMuMjIgMCAuNC4xOC40LjR2LjZhLjQuNCAwIDAxLS40LjRINC40YS40LjQgMCAwMS0uNC0uNHYtLjZ6bS40IDIuNmEuNC40IDAgMDAtLjQuNHYuNmMwIC4yMjEuMTguNC40LjRoNS4yYS40LjQgMCAwMC40LS40di0uNmEuNC40IDAgMDAtLjQtLjRINC40eiJ9KSwoMCxvLmpzeCkoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGQ6Ik02IDJINC44Yy0xLjY4IDAtMi41MiAwLTMuMTYyLjMyN0EzIDMgMCAwMC4zMjcgMy42MzhDMCA0LjI4IDAgNS4xMiAwIDYuOHYyLjRjMCAxLjY4IDAgMi41Mi4zMjcgMy4xNjJhMyAzIDAgMDAxLjMxMSAxLjMxMUMyLjI4IDE0IDMuMTIgMTQgNC44IDE0aDYuNGMxLjY4IDAgMi41MiAwIDMuMTYyLS4zMjdhMyAzIDAgMDAxLjMxMS0xLjMxMUMxNiAxMS43MiAxNiAxMC44OCAxNiA5LjJWNi44YzAtMS42OCAwLTIuNTItLjMyNy0zLjE2MmEzIDMgMCAwMC0xLjMxMS0xLjMxMUMxMy43MiAyIDEyLjg4IDIgMTEuMiAySDEwbC0uODY5LS44NjlDOC43MzUuNzM1IDguNTM3LjUzNyA4LjMxLjQ2M2ExIDEgMCAwMC0uNjE4IDBjLS4yMjguMDc0LS40MjYuMjcyLS44MjIuNjY4TDYgMnptNC4wODMgMS40Yy0uMjQ1IDAtLjM2NyAwLS40ODItLjAyOGExIDEgMCAwMS0uMjktLjEyYy0uMS0uMDYxLS4xODctLjE0OC0uMzYtLjMybC0uODEtLjgxTDggMS45OGwtLjE0MS4xNDEtLjgxLjgxYy0uMTczLjE3My0uMjYuMjYtLjM2LjMyMmExIDEgMCAwMS0uMjkuMTJjLS4xMTUuMDI3LS4yMzcuMDI3LS40ODIuMDI3SDQuOGMtLjg2MyAwLTEuNDI2LjAwMS0xLjg1Ni4wMzYtLjQxNC4wMzQtLjU4LjA5Mi0uNjcuMTM4YTEuNiAxLjYgMCAwMC0uNy43Yy0uMDQ2LjA5LS4xMDQuMjU2LS4xMzguNjctLjAzNS40My0uMDM2Ljk5My0uMDM2IDEuODU2djIuNGMwIC44NjMuMDAxIDEuNDI2LjAzNiAxLjg1Ni4wMzQuNDE0LjA5Mi41OC4xMzguNjdhMS42IDEuNiAwIDAwLjcuN2MuMDkuMDQ2LjI1Ni4xMDQuNjcuMTM4LjQzLjAzNS45OTMuMDM2IDEuODU2LjAzNmg2LjRjLjg2MyAwIDEuNDI2LS4wMDEgMS44NTYtLjAzNi40MTQtLjAzNC41OC0uMDkyLjY3LS4xMzhhMS42IDEuNiAwIDAwLjctLjdjLjA0Ni0uMDkuMTA0LS4yNTYuMTM4LS42Ny4wMzUtLjQzLjAzNi0uOTkzLjAzNi0xLjg1NlY2LjhjMC0uODYzLS4wMDEtMS40MjYtLjAzNi0xLjg1Ni0uMDM0LS40MTQtLjA5Mi0uNTgtLjEzOC0uNjdhMS42IDEuNiAwIDAwLS43LS43Yy0uMDktLjA0Ni0uMjU2LS4xMDQtLjY3LS4xMzgtLjQzLS4wMzUtLjk5My0uMDM2LTEuODU2LS4wMzZoLTEuMTE3eiJ9KV19KX19LDU0NzI2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3NDg0OCk7ZS5BPWZ1bmN0aW9uKCl7cmV0dXJuKDAsci5qc3gpKCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOiIxNiIsaGVpZ2h0OiIxNiIsdmlld0JveDoiMCAwIDE2IDE2IixmaWxsOiJub25lIixjaGlsZHJlbjooMCxyLmpzeCkoInBhdGgiLHtkOiJNNS40Mjc3MyA0LjcwODk4QzUuNDYzODcgNC44NTI1NCA1LjUzODA5IDQuOTg4MjggNS42NTAzOSA1LjEwMDU5TDguNTQ5MzIgOEw1LjY0ODkzIDEwLjkwMDRDNS4zMTY4OSAxMS4yMzI0IDUuMzE2ODkgMTEuNzcwNSA1LjY0ODkzIDEyLjEwMjVDNS45ODA5NiAxMi40MzM2IDYuNTE5MDQgMTIuNDMzNiA2Ljg1MTA3IDEyLjEwMjVMMTAuMzUxNiA4LjYwMDU5QzEwLjU1OTEgOC4zOTM1NSAxMC42MzY3IDguMTA0NDkgMTAuNTg1IDcuODM2OTFDMTAuNTUzNyA3LjY3NTc4IDEwLjQ3NjEgNy41MjI0NiAxMC4zNTE2IDcuMzk4NDRMNi44NTI1NCAzLjg5OTQxQzYuNTIwNTEgMy41NjczOCA1Ljk4MjQyIDMuNTY3MzggNS42NTAzOSAzLjg5OTQxQzUuNDMwNjYgNC4xMTgxNiA1LjM1NjQ1IDQuNDI4NzEgNS40Mjc3MyA0LjcwODk4WiIsZmlsbDoiY3VycmVudENvbG9yIn0pfSl9fSwyMjUzMjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNzQ4NDgpO2UuQT1mdW5jdGlvbigpe3JldHVybigwLHIuanN4KSgic3ZnIix7d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIscm9sZToicHJlc2VudGF0aW9uIixjaGlsZHJlbjooMCxyLmpzeCkoInBhdGgiLHtkOiJNNi41IDMuNUwxMSA4TDYuNSAxMi41IixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjEuNzUiLHN0cm9rZUxpbmVjYXA6InNxdWFyZSJ9KX0pfX0sMTM2MDY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDg4NTc2KSxvPW4oNzQ4NDgpO2UuQT1mdW5jdGlvbih0KXt2YXIgZT10LmNvbG9yLG49KDAsci5BKSgpLGk9U3RyaW5nKG4mJmUmJm5bZV18fG4uaWNvbkRlZmF1bHQpO3JldHVybigwLG8uanN4KSgic3ZnIix7d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46KDAsby5qc3gpKCJwYXRoIix7ZDoiTTYuMjUgMTEuNUw5Ljc1IDhMNi4yNSA0LjUiLHN0cm9rZTppLHN0cm9rZVdpZHRoOiIxLjciLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQifSl9KX19LDU2ODY2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0E6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgcj1uKDc0ODQ4KTtmdW5jdGlvbiBvKCl7cmV0dXJuKDAsci5qc3hzKSgic3ZnIix7ImFyaWEtaGlkZGVuIjoidHJ1ZSIsdmlld0JveDoiMSAxIDYwIDYwIixjaGlsZHJlbjpbKDAsci5qc3gpKCJwYXRoIix7ZDoiTTI3Ljc2NSA0Mi4yNDRjLTguNjE0IDAtMTUuNjIyLTcuMDA4LTE1LjYyMi0xNS42MjJTMTkuMTUxIDExIDI3Ljc2NSAxMXMxNS42MjIgNy4wMDggMTUuNjIyIDE1LjYyMi03LjAwNyAxNS42MjItMTUuNjIyIDE1LjYyMnptMC0yOC4zOThjLTcuMDQ1IDAtMTIuNzc1IDUuNzMtMTIuNzc1IDEyLjc3NXM1LjczIDEyLjc3NSAxMi43NzUgMTIuNzc1IDEyLjc3NS01LjczIDEyLjc3NS0xMi43NzUtNS43My0xMi43NzUtMTIuNzc1LTEyLjc3NXoifSksKDAsci5qc3gpKCJwYXRoIix7ZDoiTTM0Ljg2OSAzOS4xNDZsNC4wMTQtMy43MzggOS4yODYgOS4xMTRhMy4xNjQgMy4xNjQgMCAwMS0uMDcgNC41NjJsLS4wNzEuMDY2YTMuMTYzIDMuMTYzIDAgMDEtNC41NjEtLjI1N2wtOC41OTgtOS43NDd6TTI3Ljc3IDM0LjE3M2MtMi44ODIgMC01LjQxMi0uODc2LTcuNjU2LTIuNTI2YTEuMDAyIDEuMDAyIDAgMDEtLjM1LS44MWMuMDA4LS40NjEuNDQ1LS45NjkgMS4wMi0uOTU5LjI4NC4wMDUuNDkzLjE1My43MTMuMzA4IDEuODM3IDEuMzAyIDMuODMyIDEuOTcxIDYuMjc1IDEuOTcxIDEuODc1IDAgNC40OTItLjQ3NiA2LjMxNC0yLjExOGEuOTguOTggMCAwMS42MzgtLjI2MS45Mi45MiAwIDAxLjY4Ni4yNDFjLjIyMi4yMDkuMzMuNTI3LjMzNi43MzVhMS4wMiAxLjAyIDAgMDEtLjMxOC43NzVjLTEuMzMzIDEuMjM3LTQuMjYyIDIuNjQ0LTcuNjU4IDIuNjQ0eiJ9KV19KX19LDY5NzI1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9big4ODU3Niksbz1uKDc0ODQ4KTtlLkE9ZnVuY3Rpb24odCl7dmFyIGU9dC5jb2xvcixuPXZvaWQgMD09PWU/InRleHREZWZhdWx0IjplLGk9dC5pc1BsYXlpbmcsYT12b2lkIDAhPT1pJiZpLHU9KDAsci5BKSgpLHM9U3RyaW5nKHVbbl0pO3JldHVybiBhPygwLG8uanN4KSgic3ZnIix7d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46KDAsby5qc3gpKCJyZWN0Iix7eDoiMyIseToiMyIsd2lkdGg6IjEwIixoZWlnaHQ6IjEwIixyeDoiMSIsZmlsbDpzfSl9KTooMCxvLmpzeHMpKCJzdmciLHt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpbKDAsby5qc3gpKCJwYXRoIix7ZDoiTTMgNS41VjEwLjVINS41TDkgMTRWMkw1LjUgNS41SDNaIixmaWxsOnMsc3Ryb2tlOnMsc3Ryb2tlV2lkdGg6IjEiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCJ9KSwoMCxvLmpzeCkoInBhdGgiLHtkOiJNMTEgNS41QzExLjggNi4zIDEyLjI1IDcuNCAxMi4yNSA4LjVDMTIuMjUgOS42IDExLjggMTAuNyAxMSAxMS41IixzdHJva2U6cyxzdHJva2VXaWR0aDoiMS41IixzdHJva2VMaW5lY2FwOiJyb3VuZCJ9KSwoMCxvLmpzeCkoInBhdGgiLHtkOiJNMTMgMy41QzE0LjMgNC44IDE1IDYuNiAxNSA4LjVDMTUgMTAuNCAxNC4zIDEyLjIgMTMgMTMuNSIsc3Ryb2tlOnMsc3Ryb2tlV2lkdGg6IjEuNSIsc3Ryb2tlTGluZWNhcDoicm91bmQifSldfSl9fSw4MTcyOTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtBOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7dmFyIHI9big3NDg0OCk7ZnVuY3Rpb24gbygpe3JldHVybigwLHIuanN4cykoInN2ZyIse3ZpZXdCb3g6IjAgMCAzMCAzMCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpbKDAsci5qc3gpKCJwYXRoIix7Y2xhc3NOYW1lOiJzdGFyLWJvZHkiLGQ6Ik0xNC4xNTc3IDMuMzQ3NjFDMTQuNDk1OCAyLjYzNDEzIDE1LjUwNDIgMi42MzQxMyAxNS44NDIzIDMuMzQ3NkwxOC44MTM5IDkuNjE4ODhDMTguOTQ5OSA5LjkwNjAyIDE5LjIyMSAxMC4xMDQzIDE5LjUzNDIgMTAuMTQ1OUwyNi4zNzUxIDExLjA1NEMyNy4xNTM0IDExLjE1NzQgMjcuNDY1IDEyLjEyMzIgMjYuODk1NyAxMi42Njc1TDIxLjg5MTMgMTcuNDUxNUMyMS42NjIyIDE3LjY3MDUgMjEuNTU4NyAxNy45OTE0IDIxLjYxNjIgMTguMzA0MkwyMi44NzI1IDI1LjEzNjhDMjMuMDE1NCAyNS45MTQxIDIyLjE5OTYgMjYuNTExIDIxLjUwOTYgMjYuMTMzOUwxNS40NDUyIDIyLjgxOTNDMTUuMTY3NSAyMi42Njc2IDE0LjgzMjUgMjIuNjY3NiAxNC41NTQ4IDIyLjgxOTNMOC40OTAzNyAyNi4xMzM5QzcuODAwNDQgMjYuNTExIDYuOTg0NTYgMjUuOTE0MSA3LjEyNzQ5IDI1LjEzNjhMOC4zODM4MiAxOC4zMDQyQzguNDQxMzQgMTcuOTkxNCA4LjMzNzggMTcuNjcwNSA4LjEwODY4IDE3LjQ1MTVMMy4xMDQzMiAxMi42Njc1QzIuNTM0OTkgMTIuMTIzMiAyLjg0NjYyIDExLjE1NzQgMy42MjQ5IDExLjA1NEwxMC40NjU4IDEwLjE0NTlDMTAuNzc5IDEwLjEwNDMgMTEuMDUwMSA5LjkwNjAyIDExLjE4NjEgOS42MTg4OEwxNC4xNTc3IDMuMzQ3NjFaIixmaWxsOiJjdXJyZW50Q29sb3IifSksKDAsci5qc3gpKCJwYXRoIix7Y2xhc3NOYW1lOiJzdGFyLXN0cm9rZSIsZDoiTTEwLjczNDMgOS40MDQ3OEwxMS4xODYxIDkuNjE4ODhMMTAuNzM0MyA5LjQwNDc4QzEwLjY3MDMgOS41Mzk3MyAxMC41NDQgOS42MzExNiAxMC40IDkuNjUwMjhMMy41NTkxIDEwLjU1ODRDMi4zNTk4MyAxMC43MTc2IDEuODg5OTYgMTIuMTk4MyAyLjc1ODgyIDEzLjAyODlMNy43NjMxNyAxNy44MTI5QzcuODcwMDYgMTcuOTE1MSA3LjkxOTI2IDE4LjA2NTkgNy44OTIwNiAxOC4yMTM4TDYuNjM1NzQgMjUuMDQ2M0M2LjQxODIxIDI2LjIyOTQgNy42NjM0NiAyNy4xNTU3IDguNzMwMTggMjYuNTcyN0wxNC43OTQ2IDIzLjI1ODFDMTQuOTIyOCAyMy4xODggMTUuMDc3MiAyMy4xODggMTUuMjA1NCAyMy4yNTgxTDIxLjI2OTggMjYuNTcyN0MyMi4zMzY1IDI3LjE1NTcgMjMuNTgxOCAyNi4yMjk0IDIzLjM2NDMgMjUuMDQ2M0wyMi4xMDc5IDE4LjIxMzhDMjIuMDgwNyAxOC4wNjU5IDIyLjEyOTkgMTcuOTE1MSAyMi4yMzY4IDE3LjgxMjlMMjcuMjQxMiAxMy4wMjg5QzI4LjExIDEyLjE5ODMgMjcuNjQwMiAxMC43MTc2IDI2LjQ0MDkgMTAuNTU4NEwxOS42IDkuNjUwMjhDMTkuNDU2IDkuNjMxMTYgMTkuMzI5NyA5LjUzOTczIDE5LjI2NTcgOS40MDQ3OEwxNi4yOTQyIDMuMTMzNUMxNS43NzU1IDIuMDM4ODMgMTQuMjI0NSAyLjAzODg0IDEzLjcwNTggMy4xMzM1MUwxMC43MzQzIDkuNDA0NzhaIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlT3BhY2l0eToiMC4yIn0pXX0pfX0sNDUwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3NDg0OCk7ZS5BPWZ1bmN0aW9uKCl7cmV0dXJuKDAsci5qc3gpKCJzdmciLHt3aWR0aDoiMTYiLGhlaWdodDoiMTciLHZpZXdCb3g6IjAgMCAxNiAxNyIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjooMCxyLmpzeCkoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0yLjUgMy41QzEuNjcxNTcgMy41IDEgNC4xNzE1NyAxIDVWNS41VjYuMjVDMSA2LjUyNjE0IDEuMjI4NDIgNi43NDI4IDEuNDkzNCA2LjgyMDUyQzIuMjE5NjYgNy4wMzM1NCAyLjc1IDcuNzA0ODQgMi43NSA4LjVDMi43NSA5LjI5NTE2IDIuMjE5NjYgOS45NjY0NiAxLjQ5MzQgMTAuMTc5NUMxLjIyODQyIDEwLjI1NzIgMSAxMC40NzM5IDEgMTAuNzVWMTEuNVYxMkMxIDEyLjgyODQgMS42NzE1NyAxMy41IDIuNSAxMy41SDEzLjVDMTQuMzI4NCAxMy41IDE1IDEyLjgyODQgMTUgMTJWMTEuNVYxMC43NUMxNSAxMC40NzM5IDE0Ljc3MTYgMTAuMjU3MiAxNC41MDY2IDEwLjE3OTVDMTMuNzgwMyA5Ljk2NjQ2IDEzLjI1IDkuMjk1MTYgMTMuMjUgOC41QzEzLjI1IDcuNzA0ODQgMTMuNzgwMyA3LjAzMzU0IDE0LjUwNjYgNi44MjA1MkMxNC43NzE2IDYuNzQyOCAxNSA2LjUyNjE0IDE1IDYuMjVWNS41VjVDMTUgNC4xNzE1NyAxNC4zMjg0IDMuNSAxMy41IDMuNUgyLjVaTTExIDdMNSA3QzQuNTg1NzkgNyA0LjI1IDYuNjY0MjEgNC4yNSA2LjI1QzQuMjUgNS44MzU3OSA0LjU4NTc5IDUuNSA1IDUuNUgxMUMxMS40MTQyIDUuNSAxMS43NSA1LjgzNTc5IDExLjc1IDYuMjVDMTEuNzUgNi42NjQyMSAxMS40MTQyIDcgMTEgN1oiLGZpbGw6ImN1cnJlbnRDb2xvciJ9KX0pfX0sMzM5MTY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDMyOTgpLG89bigyNjY2NCksaT1uKDc0ODQ4KTtlLkE9ZnVuY3Rpb24odCl7dmFyIGU9dC5vbkNsaWNrO3JldHVybigwLGkuanN4cykoby5BWCx7dmlld0JveDoiMCAwIDI0IDI0IiwiYXJpYS1sYWJlbCI6KDAsci5UbCkoInBhdXNlIiksImFyaWEtaGlkZGVuIjoiZmFsc2UiLG9uQ2xpY2s6ZSxjaGlsZHJlbjpbKDAsaS5qc3gpKCJyZWN0Iix7eDoiNyIseToiNiIsd2lkdGg6IjMiLGhlaWdodDoiMTIiLHJ4OiIxIn0pLCgwLGkuanN4KSgicmVjdCIse3g6IjE0Iix5OiI2Iix3aWR0aDoiMyIsaGVpZ2h0OiIxMiIscng6IjEifSldfSl9fSw4NjMzNDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMzI5OCksbz1uKDI2NjY0KSxpPW4oNzQ4NDgpO2UuQT1mdW5jdGlvbih0KXt2YXIgZT10Lm9uQ2xpY2s7cmV0dXJuKDAsaS5qc3gpKG8uYUcse3ZpZXdCb3g6IjAgMCAyNCAyNCIsImFyaWEtbGFiZWwiOigwLHIuVGwpKCJwbGF5IiksImFyaWEtaGlkZGVuIjoiZmFsc2UiLG9uQ2xpY2s6ZSxjaGlsZHJlbjooMCxpLmpzeCkoInBhdGgiLHtkOiJNNyAxNy42OTQyVjYuMzA1NzhDNyA1LjcyNjkzIDcuNjI3OTEgNS4zNjYyOCA4LjEyNzkgNS42NTc5NEwxNy41MTkyIDExLjEzNjJDMTguMTgwNyAxMS41MjIxIDE4LjE4MDcgMTIuNDc3OSAxNy41MTkyIDEyLjg2MzhMOC4xMjc5IDE4LjM0MjFDNy42Mjc5MSAxOC42MzM3IDcgMTguMjczMSA3IDE3LjY5NDJaIn0pfSl9fSw3MzM1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3NDg0OCk7ZS5BPWZ1bmN0aW9uKCl7cmV0dXJuKDAsci5qc3gpKCJzdmciLHtmb2N1c2FibGU6ImZhbHNlIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIix3aWR0aDoiMzAiLGhlaWdodDoiMzAiLHZpZXdCb3g6IjAgMCAzMCAzMCIsY2hpbGRyZW46KDAsci5qc3gpKCJwYXRoIix7ZDoiTTE1IDh2My43OTNhLjQ5MS40OTEgMCAwIDEtLjI2OC40NDQuNDk2LjQ5NiAwIDAgMS0uNTg1LS4wOUw5LjM1NCA3LjM1M2EuNS41IDAgMCAxIDAtLjcwOGw0Ljc5My00Ljc5MmEuNS41IDAgMCAxIC44NTQuMzUzVjZhOSA5IDAgMSAxLTguOTQ1IDkuOTk4QzUuOTk0IDE1LjQ1IDYuNDQ3IDE1IDcgMTVjLjU1MiAwIC45OTIuNDUgMS4wNy45OTdBNyA3IDAgMSAwIDE1IDh6In0pfSl9fSw3MzgwMDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNTE5MTYpLG89big3NDg0OCk7ZS5BPWZ1bmN0aW9uKCl7cmV0dXJuKDAsby5qc3gpKHIuQyx7Zm9jdXNhYmxlOiJmYWxzZSIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsdmlld0JveDoiMCAwIDE2IDE2IixjaGlsZHJlbjooMCxvLmpzeCkoImciLHtjaGlsZHJlbjooMCxvLmpzeCkoInBhdGgiLHtmaWxsOiJjdXJyZW50Q29sb3IiLGQ6Ik0xMy45IDguOEMxMy45IDkuMSAxMy42IDkuMyAxMy4zIDkuMyAxMyA5LjMgMTIuOCA5LjEgMTIuOCA4LjhMMTIuOCA0QzEyLjggMy43IDEzIDMuNSAxMy4zIDMuNSAxMy42IDMuNSAxMy45IDMuNyAxMy45IDRMMTMuOSA4LjggMTMuOSA4LjhaTTEzLjcgMTIuMUMxMy42IDEyLjIgMTEuNiAxMy45IDggMTMuOSA0LjQgMTMuOSAyLjQgMTIuMiAyLjMgMTIuMSAyLjEgMTEuOSAyLjEgMTEuNiAyLjMgMTEuNCAyLjUgMTEuMiAyLjggMTEuMSAzIDExLjMgMyAxMS40IDQuOCAxMi44IDggMTIuOCAxMS4yIDEyLjggMTMgMTEuMyAxMyAxMS4zIDEzLjIgMTEuMSAxMy41IDExLjIgMTMuNyAxMS40IDEzLjkgMTEuNiAxMy45IDExLjkgMTMuNyAxMi4xTDEzLjcgMTIuMVpNMi4xIDRDMi4xIDMuNyAyLjQgMy41IDIuNyAzLjUgMyAzLjUgMy4yIDMuNyAzLjIgNEwzLjIgOC44QzMuMiA5LjEgMyA5LjMgMi43IDkuMyAyLjQgOS4zIDIuMSA5LjEgMi4xIDguOEwyLjEgNCAyLjEgNFpNNC44IDIuOUM0LjggMi42IDUgMi40IDUuMyAyLjQgNS42IDIuNCA1LjkgMi42IDUuOSAyLjlMNS45IDEwLjFDNS45IDEwLjQgNS42IDEwLjYgNS4zIDEwLjYgNSAxMC42IDQuOCAxMC40IDQuOCAxMC4xTDQuOCAyLjkgNC44IDIuOVpNNy41IDIuN0M3LjUgMi40IDcuNyAyLjEgOCAyLjEgOC4zIDIuMSA4LjUgMi40IDguNSAyLjdMOC41IDEwLjRDOC41IDEwLjcgOC4zIDEwLjkgOCAxMC45IDcuNyAxMC45IDcuNSAxMC43IDcuNSAxMC40TDcuNSAyLjcgNy41IDIuN1pNMTAuMSAyLjlDMTAuMSAyLjYgMTAuNCAyLjQgMTAuNyAyLjQgMTEgMi40IDExLjIgMi42IDExLjIgMi45TDExLjIgMTAuMUMxMS4yIDEwLjQgMTEgMTAuNiAxMC43IDEwLjYgMTAuNCAxMC42IDEwLjEgMTAuNCAxMC4xIDEwLjFMMTAuMSAyLjkgMTAuMSAyLjlaTTE0IDBMMiAwQzAuOSAwIDAgMC45IDAgMkwwIDE0QzAgMTUuMSAwLjkgMTYgMiAxNkwxNCAxNkMxNS4xIDE2IDE2IDE1LjEgMTYgMTRMMTYgMkMxNiAwLjkgMTUuMSAwIDE0IDBMMTQgMFoifSl9KX0pfX0sOTgwNTQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7QUg6ZnVuY3Rpb24oKXtyZXR1cm4gaS5BSH0sWjI6ZnVuY3Rpb24oKXtyZXR1cm4gaS5aMn0saTc6ZnVuY3Rpb24oKXtyZXR1cm4gaS5pN30sbUw6ZnVuY3Rpb24oKXtyZXR1cm4gaS5tTH0scjc6ZnVuY3Rpb24oKXtyZXR1cm4gbX0sdzQ6ZnVuY3Rpb24oKXtyZXR1cm4geX0seGs6ZnVuY3Rpb24oKXtyZXR1cm4gZ319KTt2YXIgcj1uKDkwNjQ0KSxvPW4oOTY1NDApLGk9bigxNzQzNyksYT1uKDMyMzUwKSx1PW4oNzQ4NDgpO2Z1bmN0aW9uIHModCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGModCl9KHQpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KHQpfHxmdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gYyh0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9jKHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYyh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gbD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sbCh0KX1mdW5jdGlvbiBmKCl7cmV0dXJuIGY9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxmLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgZD1bImJ1dHRvbiIsImlucHV0Iiwic2VsZWN0IiwidGV4dGFyZWEiXSxwPVsiaW1nIiwidmlkZW8iXTtmdW5jdGlvbiBoKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4oMCxvLmZvcndhcmRSZWYpKChmdW5jdGlvbihuLHIpe3ZhciBvPWZ1bmN0aW9uKHQpe3ZhciBlPWYoe30sdCk7cmV0dXJuIG51bGwhPWUuc3R5bGUmJiJvYmplY3QiIT09bChlLnN0eWxlKSYmZGVsZXRlIGUuc3R5bGUsZX0obiksaT1mKHt9LG8sdChvKSksYT1mKHt9LGkse3JlZjpyfSkscz1lO3JldHVybigwLHUuanN4KShzLGYoe30sYSkpfSkpfX12YXIgdj1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KG4pLGk9MDtpPG47aSsrKW9baV09YXJndW1lbnRzW2ldO3ZhciB1PSgwLHIuQSkodCxmKHt9LHt0YXJnZXQ6ImVubnA5NzIwIn0sZSkpLmFwcGx5KHZvaWQgMCxmdW5jdGlvbih0LGUsbil7aWYoZSYmIUFycmF5LmlzQXJyYXkoZSkmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ZhciByPWUubGVuZ3RoO3JldHVybiBjKGUsdm9pZCAwIT09biYmbjxyP246cil9cmV0dXJuIHQoZSxuKX0ocyxvKSk7dS5kaXNwbGF5TmFtZT0iRW1vdGlvbiI7dmFyIGw9aChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49e307aWYoInN0cmluZyIhPXR5cGVvZiB0fHwiLTEiPT09ZS50YWJJbmRleHx8IWUub25DbGljaylyZXR1cm4gbjt2YXIgcj0iYSI9PT10JiZlLmhyZWYsbz0tMSE9PWQuaW5kZXhPZih0KSxpPS0xIT09cC5pbmRleE9mKHQpO3JldHVybiExPT09ZS5yb2xlfHxyfHxvfHxpfHwobi5yb2xlPWUucm9sZXx8ImJ1dHRvbiIpLHJ8fG98fChuLm9uS2V5RG93bj1lLm9uS2V5RG93bnx8KDAsYS5oZikoZS5vbkNsaWNrKSksZS5jbGFzc05hbWUmJihuLmNsYXNzTmFtZT1lLmNsYXNzTmFtZSksbi50YWJJbmRleD1lLnRhYkluZGV4fHwiMCIsbn19KHQpKSh1KTtyZXR1cm4gbC5kaXNwbGF5TmFtZT0ic3RyaW5nIj09dHlwZW9mIHQ/IlN0eWxlZC4iK3Q6IlN0eWxlZCgpIixsLmNsYXNzTmFtZT11LGx9fTtmdW5jdGlvbiB5KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS50aGVtZVt0XX19ZnVuY3Rpb24gZyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGVbdF19fWZ1bmN0aW9uIG0oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxlPW5ldyBBcnJheSh0KSxuPTA7bjx0O24rKyllW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPXQueCxuPXZvaWQgMD09PWU/MDplLHI9dC55LG89dm9pZCAwPT09cj8wOnIsaT10LmJsdXIsYT12b2lkIDA9PT1pPzA6aSx1PXQuc3ByZWFkLHM9dm9pZCAwPT09dT8wOnUsYz10LmNvbG9yLGw9dC5pbnNldDtyZXR1cm4odm9pZCAwIT09bCYmbD8iaW5zZXQgIjoiIikrbisicHggIitvKyJweCAiK2ErInB4ICIrcysicHggIitjfSkpLmpvaW4oIiwgIil9ZS5BeT12fSw4ODMzMzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtRMzpmdW5jdGlvbigpe3JldHVybiBzfSxoMzpmdW5jdGlvbigpe3JldHVybiBpfSxtQjpmdW5jdGlvbigpe3JldHVybiByfSx1YjpmdW5jdGlvbigpe3JldHVybiBhfSx5azpmdW5jdGlvbigpe3JldHVybiB1fSx6UjpmdW5jdGlvbigpe3JldHVybiBvfX0pO3ZhciByPWZ1bmN0aW9uKHQpe3JldHVybiB0W3QuaW5wdXQ9MF09ImlucHV0Iix0W3QudGV4dD0xXT0idGV4dCIsdFt0LmRyb3Bkb3duPTJdPSJkcm9wZG93biIsdFt0LnNjYWxlPTNdPSJzY2FsZSIsdFt0Lm11bHRpU2VsZWN0PTRdPSJtdWx0aVNlbGVjdCIsdH0oe30pLG89ZnVuY3Rpb24odCl7cmV0dXJuIHRbdC5iYW5uZXI9MF09ImJhbm5lciIsdFt0LnBvc3Q9MV09InBvc3QiLHR9KHt9KSxpPWZ1bmN0aW9uKHQpe3JldHVybiB0W3QucmVxdWlyZWQ9LTFdPSJyZXF1aXJlZCIsdFt0LnRleHQ9MF09InRleHQiLHRbdC5udW1iZXI9MV09Im51bWJlciIsdFt0LmVtYWlsPTJdPSJlbWFpbCIsdFt0LnBob25lPTNdPSJwaG9uZSIsdH0oe30pLGE9ZnVuY3Rpb24odCl7cmV0dXJuIHRbdC5udW1lcmljPTBdPSJudW1lcmljIix0W3Quc3RhcnM9MV09InN0YXJzIix0W3QuZW1vamk9Ml09ImVtb2ppIix0W3QubnBzPTNdPSJucHMiLHR9KHt9KSx1PWZ1bmN0aW9uKHQpe3JldHVybiB0W3QuY29udGVudD0wXT0iY29udGVudCIsdFt0LnF1ZXN0aW9uPTFdPSJxdWVzdGlvbiIsdFt0LmludHJvPTJdPSJpbnRybyIsdFt0LnRoYW5rWW91PTNdPSJ0aGFua1lvdSIsdH0oe30pLHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRbdC5vcGVuVXJsQ3VycmVudFRhYj0wXT0ib3BlblVybEN1cnJlbnRUYWIiLHRbdC5vcGVuVXJsTmV3VGFiPTFdPSJvcGVuVXJsTmV3VGFiIix0fSh7fSl9LDQwMjM4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse2I1OmZ1bmN0aW9uKCl7cmV0dXJuIGh9LHlKOmZ1bmN0aW9uKCl7cmV0dXJuIHB9LHpqOmZ1bmN0aW9uKCl7cmV0dXJuIGR9fSk7dmFyIHI9bigzODk5KSxvPW4oMjUxMTUpO2Z1bmN0aW9uIGkoKXtyZXR1cm4gaT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGkuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBhPW4oNzgzOTApLHU9T2JqZWN0LmFzc2lnbixzPXZvaWQgMDtmdW5jdGlvbiBjKHQpe2lmKHQpcmV0dXJuLTEhPT10LmluZGV4T2YoImV1LmludGVyY29tLmlvIik/Imh0dHBzOi8vYXBpLWlhbS5ldS5pbnRlcmNvbS5pbyI6LTEhPT10LmluZGV4T2YoImF1LmludGVyY29tLmlvIik/Imh0dHBzOi8vYXBpLWlhbS5hdS5pbnRlcmNvbS5pbyI6Imh0dHBzOi8vYXBpLWlhbS5pbnRlcmNvbS5pbyJ9ZnVuY3Rpb24gbCgpe3ZhciB0PXUoe30sYSksZT1mdW5jdGlvbigpe3ZhciB0LGU9d2luZG93LnBhcmVudHx8d2luZG93O2lmKGUpe3ZhciBuPShudWxsPT1lfHxudWxsPT0odD1lLmludGVyY29tU2V0dGluZ3MpP3ZvaWQgMDp0LmFwaV9iYXNlKXx8ZnVuY3Rpb24odCl7dmFyIGU9dC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJtZXRhW25hbWU9aW50ZXJjb20tanMtYXBpLWJhc2VdIik7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmUuY29udGVudH0oZSk7aWYoIW58fCgwLG8uQTgpKG4pKXJldHVybiBuOygwLHIualApKCJJbnZhbGlkIGFwaV9iYXNlIGNvbmZpZ3VyYXRpb24gZGV0ZWN0ZWQ6ICIrbisiLiBNdXN0IGJlIGEgdmFsaWQgaHR0cDovLyBvciBodHRwczovLyBVUkwuIFVzaW5nIGRlZmF1bHQuIil9fSgpLG49e2FwaV9iYXNlOmUsdGVsZW1ldHJ5X2Jhc2U6YyhlKX07cmV0dXJuIG4uYXBpX2Jhc2U/aSh7fSx0LG4pOnR9dmFyIGY9dm9pZCAwO2Z1bmN0aW9uIGQoKXtyZXR1cm4gc3x8KHM9bCgpKSxmfHwoZj1uZXcgUHJveHkocyx7c2V0OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4iYXBpX2Jhc2UiPT09ZT8oKDAsci5qUCkoIkRpcmVjdCBtdXRhdGlvbiBvZiBhcGlfYmFzZSBpcyBub3QgYWxsb3dlZC4gVXNlIHNldENvbmZpZ1ZhbHVlKCdhcGlfYmFzZScsIHZhbHVlKSBpbnN0ZWFkLiBBdHRlbXB0ZWQgdmFsdWU6ICIrbiksITEpOih0W2VdPW4sITApfX0pKSxmfWZ1bmN0aW9uIHAodCxlKXtpZihkKCkscyl7aWYoImFwaV9iYXNlIj09PXQpe2lmKCEoMCxvLkE4KShlKSlyZXR1cm4gdm9pZCgwLHIualApKCJJbnZhbGlkIGFwaV9iYXNlIGNvbmZpZ3VyYXRpb24gZGV0ZWN0ZWQ6ICIrZSsiLiBNdXN0IGJlIGEgdmFsaWQgaHR0cDovLyBvciBodHRwczovLyBVUkwuIFVzaW5nIGRlZmF1bHQuIik7cy50ZWxlbWV0cnlfYmFzZT1jKGUpfXNbdF09ZX19ZnVuY3Rpb24gaCgpe3JldHVybiExfX0sNzgzOTA6ZnVuY3Rpb24odCl7dC5leHBvcnRzPXtzb3VyY2VfbWFwOiJoaWRkZW4tc291cmNlLW1hcCIsYXBpX2Jhc2U6Imh0dHBzOi8vYXBpLWlhbS5pbnRlcmNvbS5pbyIsdGVsZW1ldHJ5X2Jhc2U6Imh0dHBzOi8vYXBpLWlhbS5pbnRlcmNvbS5pbyIscHVibGljX3BhdGg6Imh0dHBzOi8vanMuaW50ZXJjb21jZG4uY29tLyIseXRfaWZyYW1lX3Byb3h5X3BhdGg6Imh0dHBzOi8vaW50ZXJjb20tc2hlZXRzLmNvbS95b3V0dWJlX2lmcmFtZV9wcm94eSIsc2hlZXRzX3Byb3h5X3BhdGg6Imh0dHBzOi8vaW50ZXJjb20tc2hlZXRzLmNvbS9zaGVldHNfcHJveHkiLHNlbnRyeV9wcm94eV9wYXRoOiJodHRwczovL3d3dy5pbnRlcmNvbS1yZXBvcnRpbmcuY29tL3NlbnRyeS9pbmRleC5odG1sIixpbnN0YWxsX21vZGVfYmFzZToiaHR0cHM6Ly9hcHAuaW50ZXJjb20uY29tIixzZW50cnlfZHNuOiJodHRwczovL2YzMDVkZTY5Y2FjNjRhODRhNDk0NTU2ZDUzMDNkYzJkQGFwcC5nZXRzZW50cnkuY29tLzI0Mjg3IixpbnRlcnNlY3Rpb25fanM6Imh0dHBzOi8vanMuaW50ZXJjb21jZG4uY29tL2ludGVyc2VjdGlvbi9hc3NldHMvYXBwLmpzIixpbnRlcnNlY3Rpb25fc3R5bGVzOiJodHRwczovL2pzLmludGVyY29tY2RuLmNvbS9pbnRlcnNlY3Rpb24vYXNzZXRzL3N0eWxlcy5qcyIsYXJ0aWNsZV9zZWFyY2hfbWVzc2VuZ2VyX2FwcF9pZDoyNyxtb2RlOiJwcm9kdWN0aW9uIn19LDM4OTk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe2NvbnNvbGUmJmNvbnNvbGUuaW5mbyh0KX1mdW5jdGlvbiBvKHQpe2NvbnNvbGUmJmNvbnNvbGUud2Fybih0KX1mdW5jdGlvbiBpKHQpe2NvbnNvbGUmJmNvbnNvbGUuZXJyb3IodCl9bi5kKGUse0RmOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LEZTOmZ1bmN0aW9uKCl7cmV0dXJuIG99LGpQOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSl9LDExNDgxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0NrOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LEY5OmZ1bmN0aW9uKCl7cmV0dXJuIGF9LFRBOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LFZqOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7dmFyIHI9e2NoZWNrbGlzdHM6ImNoZWNrbGlzdHMiLGNoZWNrbGlzdERldGFpbHM6ZnVuY3Rpb24odCl7cmV0dXJuIHIuY2hlY2tsaXN0cysiLyIrdH0sY2hlY2tsaXN0Q29tcGxldGlvblNjcmVlbjpmdW5jdGlvbih0KXtyZXR1cm4gci5jaGVja2xpc3RzKyIvY29tcGxldGUvIit0fX0sbz01LGk9ODY0ZTUsYT1mdW5jdGlvbih0KXt0KHtwYXJ0aWNsZUNvdW50OjEwMCxzcHJlYWQ6NTAsb3JpZ2luOnt5Oi4zfSx0aWNrczo4MDAsZ3Jhdml0eToyLHNjYWxhcjoxLjN9KX19LDY3MTI1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0k6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sbjpmdW5jdGlvbigpe3JldHVybiBvfX0pO3ZhciByPTQ1MCxvPSIobWF4LXdpZHRoOiAiK3IrInB4KSwgKG1heC13aWR0aDogIisyKnIrInB4KSBhbmQgKG1heC1oZWlnaHQ6ICIrcisicHgpIn0sNTYwMzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtqOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSk7dmFyIHI9e3NhbGVzX21lc3Nlbmdlcjoic2FsZXNfbWVzc2VuZ2VyIn19LDE0NDcxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse3c6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KTt2YXIgcj17VE9VUjowLEJBTk5FUl9WSUVXOjExLFNVUlZFWV9QUk9HUkVTUzo4NX19LDM2NTc3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0ZMOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LGEkOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LGdLOmZ1bmN0aW9uKCl7cmV0dXJuIG99LHczOmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSk7dmFyIHI9ImluaXRpYWxpc2luZyIsbz0icGVuZGluZyIsaT0iY29ubmVjdGVkIixhPSJkaXNjb25uZWN0ZWQifSwyNjcwMzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtJajpmdW5jdGlvbigpe3JldHVybiBzfSxORDpmdW5jdGlvbigpe3JldHVybiBsfSxVbDpmdW5jdGlvbigpe3JldHVybiBmfSxaTDpmdW5jdGlvbigpe3JldHVybiBjfSxaaDpmdW5jdGlvbigpe3JldHVybiB1fSxrRzpmdW5jdGlvbigpe3JldHVybiBhfSxtcDpmdW5jdGlvbigpe3JldHVybiBofSxySzpmdW5jdGlvbigpe3JldHVybiBkfX0pO3ZhciByPW4oNTA4MDQpO2Z1bmN0aW9uIG8oKXtyZXR1cm4gbz1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LG8uYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIG8oe3BhdGg6Ii8iK3QuaWR9LHQpfXZhciBhPWkoe2lkOiJsb2FkaW5nIixpY29uQ29tcG9uZW50OnthY3RpdmU6ci5Ib21lQWN0aXZlLGRlZmF1bHQ6ci5Ib21lfX0pLHU9aSh7aWQ6ImhvbWUiLGljb25Db21wb25lbnQ6e2FjdGl2ZTpyLkhvbWVBY3RpdmUsZGVmYXVsdDpyLkhvbWV9fSkscz1pKHtpZDoibWVzc2FnZXMiLGljb25Db21wb25lbnQ6e2FjdGl2ZTpyLk1lc3NhZ2VzQWN0aXZlLGRlZmF1bHQ6ci5NZXNzYWdlc319KSxjPWkoe2lkOiJoZWxwIixpY29uQ29tcG9uZW50OnthY3RpdmU6ci5IZWxwQWN0aXZlLGRlZmF1bHQ6ci5IZWxwfX0pLGw9aSh7aWQ6Im5ld3MiLGljb25Db21wb25lbnQ6e2FjdGl2ZTpyLk5ld3NBY3RpdmUsZGVmYXVsdDpyLk5ld3N9fSksZj1pKHtpZDoidGFza3MiLGljb25Db21wb25lbnQ6e2FjdGl2ZTpyLlRhc2tBY3RpdmUsZGVmYXVsdDpyLlRhc2t9fSksZD1pKHtpZDoidGlja2V0cyIsaWNvbkNvbXBvbmVudDp7YWN0aXZlOnIuVGlja2V0c0FjdGl2ZSxkZWZhdWx0OnIuVGlja2V0c319KSxwPWkoe2lkOiJuZXdfY29udmVyc2F0aW9uIixpY29uQ29tcG9uZW50OnthY3RpdmU6ci5NZXNzYWdlc0FjdGl2ZSxkZWZhdWx0OnIuTWVzc2FnZXN9LHBhdGg6Ii9tZXNzYWdlcy9jb252ZXJzYXRpb24vbmV3In0pLGg9W2EscCx1LHMsYyxsLGYsZF19LDQwMTI3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse2U6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KTt2YXIgcj1mdW5jdGlvbih0KXtyZXR1cm4gdFt0LnNoYXJlYWJsZV91cmw9M109InNoYXJlYWJsZV91cmwiLHRbdC50cmlnZ2VyZWRfZnJvbV9jb2RlPTddPSJ0cmlnZ2VyZWRfZnJvbV9jb2RlIix0W3QudHJpZ2dlcmVkX2Zyb21fZW1haWw9OF09InRyaWdnZXJlZF9mcm9tX2VtYWlsIix0fSh7fSl9LDQ5MjQzOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse2g6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KTt2YXIgcj0iZWR1Y2F0ZS5hcnRpY2xlIn0sMjg4MDI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7Q1M6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sWXA6ZnVuY3Rpb24oKXtyZXR1cm4gY30sbUc6ZnVuY3Rpb24oKXtyZXR1cm4gc319KTt2YXIgcj1uKDk2NTQwKSxvPW4oNzQ4NDgpO2Z1bmN0aW9uIGkoKXtyZXR1cm4gaT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGkuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBhPXtoaWRlQ29tcG9zZXI6ITEsaGlkZUludGVyY29tTGluazohMSxoaWRlQ2xhc3NpY0hlYWRlcjohMSxoaWRlQ2xvc2VCdXR0b246ITEsc2hvd0xhdW5jaGVyOiExLGhpZGVMYXVuY2hlcldoZW5PcGVuOiExLGFsd2F5c1Zpc2libGU6ITEsY29udmVyc2F0aW9uT25seTohMSxwbGFuQXdhcmVSb3V0aW5nOiExLG11dGVTb3VuZDohMSxzcGxpdFRhYmxlQmxvY2tzOiExLGltcHJvdmVkQ29kZUJsb2NrUmVuZGVyaW5nOiEwLGRpc2FibGVWaWRlb0F1dG9wbGF5OiExLG9wZW5BcnRpY2xlU291cmNlc0luTmV3VGFiOiExLHN0cmVhbWluZ1RhYmxlUmV2ZWFsOiExLHN1cHBvcnRzRmluVm9pY2VDYWxsOiExLHNwb3RsaWdodE1ldHJpY3NUYWc6ITEsb3BlbnNEaXJlY3RseUludG9Db252ZXJzYXRpb246ITEsaGlkZUV4cGFuZEJ1dHRvbjohMSxoaWRlVGFibGVFeHBhbmRCdXR0b246ITEsaGlkZUNocm9tZUhlYWRlcjohMSxhdXRvRXhwYW5kQ2Fyb3VzZWxJdGVtczohMSxoaWRlUmVhbHRpbWVTdGF0dXNCYW5uZXI6ITEsY2xvc2VDb21wb3Nlck9uQ29udmVyc2F0aW9uRW5kOiExLGlubGluZUZvb3Rlck5vdGljZTohMSxtYXJrQ29udmVyc2F0aW9uUmVhZE9uVmlzaWJsZTohMSxzcG90bGlnaHROb3RpZmljYXRpb25QYXRoOiExLGhpZGVUZWFtSW50cm86ITEsaGlkZVNwZWNpYWxOb3RpY2U6ITEsc2lkZUJ5U2lkZUNhcmRMYXlvdXQ6ITEsc3BvdGxpZ2h0U2hlZXRIZWFkZXI6ITEsZGVmZXJWaWV3TWV0cmljVW50aWxWaXNpYmxlOiExLHJlc3RyaWN0Q29tcG9zZXJJbnB1dFdoZW5EaXNhYmxlZDohMSxjb21wb3Nlck93bnNNb2JpbGVLZXlib2FyZFNjcm9sbDohMSxzaG93Q29sbGFwc2VkRXhwaXJlZENhbGVuZGFyQ2FyZDohMSxzcG90bGlnaHRQcml2YWN5Tm90aWNlRm9vdGVyOiExLGhhc1Nocmlua2VkQ29tcG9zZXJTdGF0ZTohMSxzdXBwcmVzc0xhdW5jaGVyVW5yZWFkQmFkZ2U6ITEsc3VwcHJlc3NDaHJvbWVHcmFkaWVudDohMSxzdXBwcmVzc0NsYXNzaWNOdWRnZTohMSxzaGVsbFZpc2liaWxpdHlGb2xsb3dzSG9zdFN0YXRlOiExLGxhdW5jaGVyVXNlc05ldXRyYWxTdXJmYWNlOiExLHJlc3RyaWN0VGlja2V0TmF2aWdhdGlvblRvTWVzc2FnZXNSb3V0ZTohMSxjb21wYWN0Tm90aWZpY2F0aW9uQ29tcG9zZXJHYXA6ITF9LHU9KDAsci5jcmVhdGVDb250ZXh0KShhKTtmdW5jdGlvbiBzKCl7cmV0dXJuKDAsci51c2VDb250ZXh0KSh1KX1mdW5jdGlvbiBjKHQpe3ZhciBlPXQuY29uZmlnLG49dC5jaGlsZHJlbixzPSgwLHIudXNlTWVtbykoKGZ1bmN0aW9uKCl7cmV0dXJuIGkoe30sYSxlKX0pLFtlXSk7cmV0dXJuKDAsby5qc3gpKHUuUHJvdmlkZXIse3ZhbHVlOnMsY2hpbGRyZW46bn0pfXUuZGlzcGxheU5hbWU9IkxheW91dENvbmZpZ0NvbnRleHQifSw4Mzg4NjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtJczpmdW5jdGlvbigpe3JldHVybiBzfSxLSDpmdW5jdGlvbigpe3JldHVybiB1fSxvRTpmdW5jdGlvbigpe3JldHVybiBhfX0pO3ZhciByPW4oOTY1NDApLG89big3NDg0OCksaT17fSxhPSgwLHIuY3JlYXRlQ29udGV4dCkoaSk7ZnVuY3Rpb24gdSh0KXt2YXIgZT10LmNoaWxkcmVuLG49dC5jdXN0b21pc2F0aW9uO3JldHVybigwLG8uanN4KShhLlByb3ZpZGVyLHt2YWx1ZTpuLGNoaWxkcmVuOmV9KX1mdW5jdGlvbiBzKCl7cmV0dXJuKDAsci51c2VDb250ZXh0KShhKX1hLmRpc3BsYXlOYW1lPSJTdHlsaW5nQ3VzdG9taXNhdGlvbkNvbnRleHQifSw2Nzk3OTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtJczpmdW5jdGlvbigpe3JldHVybiByLklzfSxLSDpmdW5jdGlvbigpe3JldHVybiByLktIfSxvRTpmdW5jdGlvbigpe3JldHVybiByLm9FfX0pO3ZhciByPW4oODM4ODYpfSw4NDA3NzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtBOmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSk7dmFyIHI9big2Njg1NCksbz1uKDg3MTMzKSxpPXtpc0VwaGVtZXJhbDpmdW5jdGlvbigpe3ZhciB0PSgwLHIuJCkoKTtyZXR1cm4hKG51bGw9PXR8fCF0LmxvY2F0aW9uKSYmInRydWUiPT09KDAsby5DSCkodC5sb2NhdGlvbikuaW50ZXJjb21fZGlzYWJsZV9jb29raWVzfSxyZWFkOmZ1bmN0aW9uKHQsZSl7ZT1lfHwodGhpcy5pc0VwaGVtZXJhbCgpPyIiOnBhcmVudC5kb2N1bWVudC5jb29raWUpO3ZhciBuPSIoPzooPzpefFteXSo7KVxccyoiK2VuY29kZVVSSUNvbXBvbmVudCh0KS5yZXBsYWNlKC9bXC1cLlwrXCpdL2csIlxcJCYiKSsiXFxzKlxcPVxccyooW147XSopLiokKXxeLiokIixyPWUubWF0Y2gobmV3IFJlZ0V4cChuKSk7aWYobnVsbCE9PXImJnZvaWQgMCE9PXJbMV0pcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyWzFdKX0sd3JpdGU6ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PW4mJihuPXt9KTt2YXIgcj1uLG89ci5kb21haW4saT1yLnBhdGgsYT1yLmV4cGlyZXMsdT1yLnNlY3VyZSxzPXIuc2FtZVNpdGUsYz10KyI9IitlO3JldHVybiBvJiYoYys9IjsgZG9tYWluPSIrbyksaSYmKGMrPSI7IHBhdGg9IitpKSxhJiYoYys9IjsgZXhwaXJlcz0iK2EudG9VVENTdHJpbmcoKSkscyYmKGMrPSI7IHNhbWVzaXRlPSIrcyksdSYmKGMrPSI7IHNlY3VyZSIpLHRoaXMuaXNFcGhlbWVyYWwoKXx8ZnVuY3Rpb24odCl7cGFyZW50LmRvY3VtZW50LmNvb2tpZT10fShjKSxjfSxjbGVhcjpmdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPXt9KTt2YXIgbj1lLHI9bi5kb21haW4sbz1uLnBhdGgsaT1uZXcgRGF0ZSgwKTtyZXR1cm4gdGhpcy53cml0ZSh0LCIiLHtkb21haW46cixwYXRoOm8sZXhwaXJlczppfSl9fSxhPWl9LDMzMDQ4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtpZihudWxsIT10KXJldHVybiBuZXcgRGF0ZSgxZTMqdCl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gRGF0ZS5ub3coKS0xZTMqdH1uLmQoZSx7a1U6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sbUc6ZnVuY3Rpb24oKXtyZXR1cm4gb319KSxlLkF5PXt0aW1lc3RhbXBUb0RhdGU6cixub3c6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1EYXRlLm5vdztyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmISgicHJvdG90eXBlImluIHQpfSgpP0RhdGUubm93KCk6KG5ldyBEYXRlKS5nZXRUaW1lKCl9LGNhbGN1bGF0ZUR1cmF0aW9uSW5NczpvfX0sOTA1MDI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDIyOTc5KTtmdW5jdGlvbiBvKHQpe3JldHVybiBvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxvKHQpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIHQ/ImRyYWZ0LSIrdDoiZHJhZnQifWZ1bmN0aW9uIGEodCxlLG4pe3JldHVybiBlJiYiIiE9PWU/ci5zLnNldChpKHQpLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGU/e3Y6Mix0ZXh0OnQsYmxvY2tzOmV9Ont0ZXh0OnR9KX0oZSxuKSk6bCh0KX1mdW5jdGlvbiB1KHQpe3ZhciBlPXIucy5nZXQoaSh0KSk7aWYoZSl0cnl7dmFyIG4sbz1KU09OLnBhcnNlKGUpO3JldHVybiBudWxsIT0obj1udWxsPT1vP3ZvaWQgMDpvLnRleHQpP246bnVsbH1jYXRjaCh0KXtyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBzKHQpe2lmKCJvYmplY3QiIT09byh0KXx8bnVsbD09PXQpcmV0dXJuITE7dmFyIGU9dCxuPWUudHlwZTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUudGV4dCYmKCJwYXJhZ3JhcGgiPT09bnx8ImhlYWRpbmciPT09bnx8InN1YmhlYWRpbmciPT09bnx8ImNvZGUiPT09bil9ZnVuY3Rpb24gYyh0KXt2YXIgZT1yLnMuZ2V0KGkodCkpO2lmKCFlKXJldHVybiBudWxsO3RyeXt2YXIgbj1KU09OLnBhcnNlKGUpO3JldHVybiAyPT09KG51bGw9PW4/dm9pZCAwOm4udikmJkFycmF5LmlzQXJyYXkobi5ibG9ja3MpJiZuLmJsb2Nrcy5ldmVyeShzKT9uLmJsb2NrczpudWxsfWNhdGNoKHQpe3JldHVybiBudWxsfX1mdW5jdGlvbiBsKHQpe3JldHVybiByLnMucmVtb3ZlKGkodCkpfWUuQT17c2F2ZURyYWZ0OmEsbG9hZERyYWZ0OnUsbG9hZERyYWZ0QmxvY2tzOmMscmVtb3ZlRHJhZnQ6bCx0cmFuc2ZlckRyYWZ0OmZ1bmN0aW9uKHQsZSl7dmFyIG4scj11KHQpO3ImJmEoZSxyLG51bGwhPShuPWModCkpP246dm9pZCAwKSxsKHQpfSxORVdfQ09OVkVSU0FUSU9OX0RSQUZUX0lEOiJuZXctY29udmVyc2F0aW9uLWRyYWZ0In19LDgzMTQ3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0xWOmZ1bmN0aW9uKCl7cmV0dXJuIEN9LE1TOmZ1bmN0aW9uKCl7cmV0dXJuIHh9LFpROmZ1bmN0aW9uKCl7cmV0dXJuIE99LGVWOmZ1bmN0aW9uKCl7cmV0dXJuIEF9LGY1OmZ1bmN0aW9uKCl7cmV0dXJuIEV9LGwyOmZ1bmN0aW9uKCl7cmV0dXJuIF99LHdkOmZ1bmN0aW9uKCl7cmV0dXJuIFN9fSk7dmFyIHIsbz1uKDM1MzEpLGk9big5ODYxNiksYT1uKDg4MjkxKTtmdW5jdGlvbiB1KCl7cmV0dXJuIHU9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSx1LmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBzKCl7cz1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLGM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGwodCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7bCh7fSwiIil9Y2F0Y2godCl7bD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gZCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGI/ZTpiLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgaihyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOkkodCxuLHUpfSksYX1mdW5jdGlvbiBwKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWQ7dmFyIGg9InN1c3BlbmRlZFN0YXJ0Iix2PSJzdXNwZW5kZWRZaWVsZCIseT0iZXhlY3V0aW5nIixnPSJjb21wbGV0ZWQiLG09e307ZnVuY3Rpb24gYigpe31mdW5jdGlvbiB3KCl7fWZ1bmN0aW9uIF8oKXt9dmFyIFM9e307bChTLGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIHg9T2JqZWN0LmdldFByb3RvdHlwZU9mLEU9eCYmeCh4KFAoW10pKSk7RSYmRSE9PW4mJnIuY2FsbChFLGEpJiYoUz1FKTt2YXIgQz1fLnByb3RvdHlwZT1iLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFMpO2Z1bmN0aW9uIE8odCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtsKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEEodCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPXAodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGw9Yy52YWx1ZTtyZXR1cm4gbCYmIm9iamVjdCI9PWYobCkmJnIuY2FsbChsLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCxhLHUpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LGEsdSl9KSk6ZS5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxhKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCxhLHUpfSkpfXUocy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIEkoZSxuLHIpe3ZhciBvPWg7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PXkpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09Zyl7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9ayh1LHIpO2lmKHMpe2lmKHM9PT1tKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWgpdGhyb3cgbz1nLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz15O3ZhciBjPXAoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT9nOnYsYy5hcmc9PT1tKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89ZyxyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIGsoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LGsoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksbTt2YXIgaT1wKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwsbTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwsbSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCxtKX1mdW5jdGlvbiBMKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIFQodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIGoodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChMLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW2FdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGk9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBpLm5leHQ9aX19dGhyb3cgbmV3IFR5cGVFcnJvcihmKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIHcucHJvdG90eXBlPV8sbyhDLCJjb25zdHJ1Y3RvciIse3ZhbHVlOl8sY29uZmlndXJhYmxlOiEwfSksbyhfLCJjb25zdHJ1Y3RvciIse3ZhbHVlOncsY29uZmlndXJhYmxlOiEwfSksdy5kaXNwbGF5TmFtZT1sKF8sYywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LF8pOih0Ll9fcHJvdG9fXz1fLGwodCxjLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEMpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LE8oQS5wcm90b3R5cGUpLGwoQS5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QSxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEEoZCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxPKEMpLGwoQyxjLCJHZW5lcmF0b3IiKSxsKEMsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxsKEMsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9UCxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goVCksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLG0pOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksbX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxUKG4pLG19fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7VChuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLG19fSxlfWZ1bmN0aW9uIGModCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBsKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpe2MoaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe2MoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX1mdW5jdGlvbiBmKHQpe3JldHVybiBmPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxmKHQpfXZhciBkLHAsaD0iMSI9PT13aW5kb3cubmF2aWdhdG9yLmRvTm90VHJhY2ssdj1bImFkZHJlc3MiLCJhZGRyZXNzZXMiLCJlbWFpbCIsImVtYWlsQWRkcmVzcyIsImVtYWlsQWRkcmVzc2VzIiwicGhvbmVOdW1iZXIiLCJwaG9uZSIsIm51bWJlciIsIm5hbWUiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsInVzZXJTdXBwbGllZEVtYWlsIiwiYXV0aFRva2VucyIsImF1dGhfdG9rZW5zIiwiaW5pdGlhbCIsInRleHQiLCJtZXNzZW5nZXJDYXJkcyIsInVybCJdLHk9W10sZz1mdW5jdGlvbiB0KGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5yZWR1Y2UoKGZ1bmN0aW9uKG4scil7dmFyIG89ZVtyXTtyZXR1cm4gdi5pbmRleE9mKHIpPj0wP25bcl09InJlbW92ZWRJZGVudGlmeWluZ0luZm8iOiJvYmplY3QiIT09ZihvKXx8bnVsbD09PW98fG8gaW5zdGFuY2VvZiBEYXRlP25bcl09bzpuW3JdPXQoby50b0pTP28udG9KUygpOm8pLG59KSxBcnJheS5pc0FycmF5KGUpP1tdOnt9KX0sbT1mdW5jdGlvbih0KXt2YXIgZT0oMCxvLm0pKHQpO3JldHVybiBnKGUpfSxiPWZ1bmN0aW9uKCl7dmFyIHQ9bChzKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBlLHIsbyxhO3JldHVybiBzKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLCgwLGkuQSkoe3Byb21pc2U6ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5hbGwoW24uZSg3ODcyKSxuLmUoMzMyNildKS50aGVuKG4uYmluZChuLDYwMTc1KSl9fSk7Y2FzZSAyOnJldHVybiBlPXQuc2VudCxyPWUuYWRkVGFnLG89ZS5hZGRFeHRyYSxhPWUuYWRkQnJlYWRjcnVtYixyKCJhcHAuaWQiLGQpLHkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGEodCl9KSkscCYmcC5nZXRTdGF0ZSYmbygic3RhdGUiLCh1PXAuZ2V0U3RhdGUoKSxoPyJyZW1vdmVkSWRlbnRpZnlpbmdJbmZvIjptKHUpKSksdC5hYnJ1cHQoInJldHVybiIsZSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9dmFyIHV9KSx0KX0pKSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSx3PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/bmV3IEVycm9yKGUpOnR9LF89ZnVuY3Rpb24oKXt2YXIgdD1sKHMoKS5tYXJrKChmdW5jdGlvbiB0KGUsbil7dmFyIHIsbyxpLHUsYztyZXR1cm4gcygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKHQucHJldj0wLHI9dyhlLCJDYXVnaHQgbnVsbCBvciB1bmRlZmluZWQgZXJyb3IiKSwhKG89ci5tZXNzYWdlfHwiIikubWF0Y2goL2Fib3V0OlwvXC8vKSl7dC5uZXh0PTU7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDU6aWYoISgwLGEuTikobykpe3QubmV4dD03O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSA3OnJldHVybiB0Lm5leHQ9OSxiKCk7Y2FzZSA5Omk9dC5zZW50LHU9aS5sb2dFcnJvcixjPWkuYWRkRXh0cmEsbiYmT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dm9pZCAwIT09blt0XSYmbnVsbCE9PW5bdF0mJmModCxuW3RdKX0pKSx1KHIpLHQubmV4dD0xODticmVhaztjYXNlIDE2OnQucHJldj0xNix0LnQwPXQuY2F0Y2goMCk7Y2FzZSAxODpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzAsMTZdXSl9KSkpO3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksUz1mdW5jdGlvbigpe3ZhciB0PWwocygpLm1hcmsoKGZ1bmN0aW9uIHQoZSxuLHIpe3ZhciBvLGksYSx1LGM7cmV0dXJuIHMoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdm9pZCAwPT09biYmKG49e30pLHZvaWQgMD09PXImJihyPXt9KSx0LnByZXY9MixsPSJDYXVnaHQgbnVsbCBvciB1bmRlZmluZWQgbWVzc2FnZSIsbz1udWxsPT0ocz1lKT9sOnMsdC5uZXh0PTYsYigpO2Nhc2UgNjppPXQuc2VudCxhPWkubG9nTWVzc2FnZSx1PWkuYWRkVGFnLGM9aS5hZGRFeHRyYSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdSh0LG5bdF0pfSkpLE9iamVjdC5rZXlzKHIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXJbdF0mJm51bGwhPT1yW3RdJiZjKHQsclt0XSl9KSksYShvKSx0Lm5leHQ9MTc7YnJlYWs7Y2FzZSAxNTp0LnByZXY9MTUsdC50MD10LmNhdGNoKDIpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX12YXIgcyxsfSksdCxudWxsLFtbMiwxNV1dKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLHg9ZnVuY3Rpb24odCl7dC5vbmVycm9yPWZ1bmN0aW9uKHQsZSxuLHIsbyl7aWYodCYmL1Jlc2l6ZU9ic2VydmVyLiovLnRlc3QodCkpcmV0dXJuITE7aWYoZSYmZS5tYXRjaCgvXmh0dHBzPzpcL1wvLykmJiFlLm1hdGNoKC9odHRwcz86XC9cLyhqc1wuaW50ZXJjb21jZG5cLmNvbXxpbnRlcmNvbS1zaGVldHNcLmNvbXx3aWRnZXRcLmludGVyY29tXC5pbykvKSlyZXR1cm4hMTt2YXIgaT17ZXJyb3JNZXNzYWdlOnQsZXJyb3JVcmw6ZSxlcnJvckxpbmU6bixlcnJvckNvbHVtbjpyfTtyZXR1cm4gXyh3KG8sIndpbmRvdy5vbmVycm9yIGNhdWdodCBudWxsIG9yIHVuZGVmaW5lZCBlcnJvciIpLGkpfSx0Lm9udW5oYW5kbGVkcmVqZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBfKHcodC5yZWFzb24sIlVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCBudWxsIG9yIHVuZGVmaW5lZCByZWFzb24iKSl9fSxFPWZ1bmN0aW9uKHQpe3QmJihkPXQpfSxDPWZ1bmN0aW9uKHQpe3QmJihwPXQpfSxPPWZ1bmN0aW9uKHQpe3kucHVzaCh1KHt9LHQse3RpbWVzdGFtcDoobmV3IERhdGUpLnRvSVNPU3RyaW5nKCl9KSl9LEE9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB5LnB1c2goe21lc3NhZ2U6ZS50eXBlLGNhdGVnb3J5OiJyZWR1eC1hY3Rpb24iLHRpbWVzdGFtcDoobmV3IERhdGUpLnRvSVNPU3RyaW5nKCl9KSx0KGUpfX19O251bGwhPShyPXdpbmRvdykmJm51bGwhPShyPXIucGFyZW50KSYmci5pbnRlcmNvbVNldHRpbmdzJiZFKHdpbmRvdy5wYXJlbnQuaW50ZXJjb21TZXR0aW5ncy5hcHBfaWQpfSw5NDU2NDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oODM1MTUpLG4oODY0ODkpLG4oNDg2NDIpLG4oMzExMzMpLG4oNzA2NDApLG4oNDExMjgpLG4oOTU3NTUpLG4oMzY4OSksbigyMTgzOCksbig2MjAzNSksbig5NTg0Myksbig3OTQzMiksbig4MjYyNyksbig3NTY3MCksbigxOTMyMiksbig1ODgwKSxuKDQ1NzczKSxuKDgzMzk2KSxuKDg0MjE2KSxuKDE4OTQ0KSxuKDE3ODcwKSxuKDYwMjQzKSxuKDYwODUpLG4oMjg5MjEpLG4oODEzMDgpLG4oNDk3MyksbigzNDkyKSxuKDg0NDY3KSxuKDI2NzM2KSxuKDU0NzU0KSxuKDk5MDc4KSxuKDkxOTU0KSxuKDg1MTgzKSxuKDk2MzgwKSxuKDkxMDU5KSxuKDc0NTIpO3ZhciByPW4oMjI5NzkpLG89bigxNzc3Nyk7aWYodm9pZCAwIT09d2luZG93JiZ2b2lkIDAhPT13aW5kb3cuT2JqZWN0KXt0cnl7dmFyIGksYT0oMCxvLmEpKG51bGw9PShpPXdpbmRvdyl8fG51bGw9PShpPWkucGFyZW50KT92b2lkIDA6aS5sb2NhdGlvbiwiaW50ZXJjb21fc3VydmV5X2lkIik7YSYmci5MLnNldCgic3VydmV5X3BlbmRpbmdfdHJpZ2dlciIsYSl9Y2F0Y2godCl7fW4oMzU1NjgpfX0sNzExMDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHskQjpmdW5jdGlvbigpe3JldHVybiB3fSxCZzpmdW5jdGlvbigpe3JldHVybiBqfSxGVjpmdW5jdGlvbigpe3JldHVybiB2fSxGcDpmdW5jdGlvbigpe3JldHVybiBTfSxJbzpmdW5jdGlvbigpe3JldHVybiBffSxONTpmdW5jdGlvbigpe3JldHVybiB5fSxPTzpmdW5jdGlvbigpe3JldHVybiBifSxhTjpmdW5jdGlvbigpe3JldHVybiBnfSxlRDpmdW5jdGlvbigpe3JldHVybiBPfSxoczpmdW5jdGlvbigpe3JldHVybiBtfSx2aTpmdW5jdGlvbigpe3JldHVybiBDfX0pO3ZhciByPW4oNzczNiksbz1uKDMyOTgpLGk9big2NzA5OCksYT1uLm4oaSksdT1uKDExOTUpLHM9bigzODg4MyksYz1uKDczNTU3KTtmdW5jdGlvbiBsKHQsZSl7dmFyIG49InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG4pcmV0dXJuKG49bi5jYWxsKHQpKS5uZXh0LmJpbmQobik7aWYoQXJyYXkuaXNBcnJheSh0KXx8KG49ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGYodCxlKTt2YXIgbj17fS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/Zih0LGUpOnZvaWQgMH19KHQpKXx8ZSYmdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCl7biYmKHQ9bik7dmFyIHI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcj49dC5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOnRbcisrXX19fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX1mdW5jdGlvbiBmKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgZD1bImltYWdlIiwiYXR0YWNobWVudExpc3QiLCJ2aWRlbyIsInZpZGVvUmVwbHkiLCJ2aWRlb0ZpbGUiLCJtZXNzZW5nZXJDYXJkIl0scD1bImltYWdlIiwidmlkZW8iLCJ2aWRlb1JlcGx5IiwidmlkZW9GaWxlIiwibm90aWZpY2F0aW9uQ2hhbm5lbHNDYXJkIl0saD1be3VzZXI6InNlbnRfYW5faW1hZ2UiLGFkbWluOiJzZW50X3lvdV9hbl9pbWFnZSJ9LHt1c2VyOiJzZW50X2FuX2F0dGFjaG1lbnQiLGFkbWluOiJzZW50X3lvdV9hbl9hdHRhY2htZW50In0se3VzZXI6InNlbnRfYV92aWRlbyIsYWRtaW46InNlbnRfeW91X2FfdmlkZW8ifSx7dXNlcjoic2VudF9hX3ZpZGVvX3JlcGx5IixhZG1pbjoic2VudF95b3VfYV92aWRlb19yZXBseSJ9LHt1c2VyOiJzZW50X2FfdmlkZW8iLGFkbWluOiJzZW50X3lvdV9hX3ZpZGVvIn0se3VzZXI6InNlbnRfYW5fYXBwIixhZG1pbjoic2VudF95b3VfYW5faW50ZXJhY3RpdmVfbWVzc2FnZSJ9XSx2PWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiJwYXJhZ3JhcGgiPT09dC50eXBlJiYhKG51bGwhPShlPXQudGV4dCkmJmUudHJpbSgpKX0seT1mdW5jdGlvbih0KXtyZXR1cm4hKCF0fHwhdC50eXBlfHwidmlkZW9GaWxlIiE9PXQudHlwZSl9LGc9ZnVuY3Rpb24odCl7cmV0dXJuIHAuaW5kZXhPZih0LnR5cGUpPi0xfSxtPWZ1bmN0aW9uKHQpe3JldHVybiB0LnRleHR8fHQuY29udGVudH0sYj1mdW5jdGlvbiB0KGUpe3ZhciBuLGk9KDAscy5IVikoZSk7aWYoaSl7dmFyIGEsdT1pLmJvZHksbD1pLmF1dGhvcixmPSEobnVsbD09KG49aS5ib2R5KXx8IW4uc29tZShnKSk7dSYmQXJyYXkuaXNBcnJheSh1KSYmTCh1WzBdKSYmKGE9QSh1KSk7dmFyIGQscD1FKHUpLGg9ayh1LGwpO2lmKGE9MD09PXAubGVuZ3RoJiZoP2g6cCwoMCxyLmlpKShpKSlyZXR1cm4gdChlLnNsaWNlKDAsZS5sZW5ndGgtMSkpO2lmKCgwLHIuYVQpKGkpJiYoYT0oMCxvLlRsKSgib3BlcmF0b3JfYXNrZWRfZm9yX2F0dHJpYnV0ZSIse2F0dHJpYnV0ZTp4KGkpfSksZj0hMCksKDAsci5rNCkoaSkpYT0oMCxjLkJUKShudWxsPT0oZD1pLmV2ZW50RGF0YSk/dm9pZCAwOmQuc3RhdHVzKTtyZXR1cm4oKDAsci54TSkoaSl8fCgwLHIuQTcpKGkpfHwoMCxyLlA1KShpKSkmJihhPSgwLG8uVGwpKCJzZW50X3lvdV9hbl9pbnRlcmFjdGl2ZV9tZXNzYWdlIiksZj0hMCkse2F1dGhvcjpsLHN1bW1hcnlUZXh0OihhfHwiIikudHJpbSgpLGlzTWV0YWRhdGE6Zn19fSx3PWZ1bmN0aW9uKHQpe3ZhciBlPSgwLHUuaSkodCk7cmV0dXJuIFQoZSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm57dHlwZToicGFyYWdyYXBoIix0ZXh0OnR9fSkpfSxfPWZ1bmN0aW9uKHQpe3ZhciBlPXQubmFtZSxuPXQuY29udGVudFR5cGUscj10LnNpemU7cmV0dXJuW3t0eXBlOiJhdHRhY2htZW50TGlzdCIsYXR0YWNobWVudHM6W3tpZDp0LmlkLHVybDp0LnVybCxuYW1lOmUsY29udGVudFR5cGU6bixzaXplOnJ9XX1dfSxTPWZ1bmN0aW9uKHQsZSxuLHIsbyl7cmV0dXJuW3t0eXBlOiJpbWFnZSIsdXJsOnR8fCIiLHdpZHRoOmUsaGVpZ2h0Om4sYXR0cmlidXRpb246cix0aXRsZTpvfV19LHg9ZnVuY3Rpb24odCl7dmFyIGUsbj1udWxsPT0oZT10LmZvcm0pP3ZvaWQgMDplLmF0dHJpYnV0ZXNbMF07cmV0dXJuIG4/bi5uYW1lfHxuLmlkZW50aWZpZXIudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCIuIiwiICIpOiIifSxFPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiIiO3ZhciBlPXQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4iYnV0dG9uIiE9PXQudHlwZSYmIUwodCl9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gSSh0KX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pKS5qb2luKCIgIik7cmV0dXJuIGEoKShlLnJlcGxhY2UoLzxicj4vZywiICIpKX0sQz01MCxPPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYwIT09dC5sZW5ndGg/YSgpKHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gSSh0KX0pKS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpKToiIn0sQT1mdW5jdGlvbih0KXt2YXIgZT10LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIEwodCl9KSlbMF07aWYoZSYmZS50aXRsZSlyZXR1cm4gYSgpKGUudGl0bGUpfSxJPWZ1bmN0aW9uKHQpe3N3aXRjaCh0LnR5cGUpe2Nhc2UidmlkZW9GaWxlIjpjYXNlIm1lc3NlbmdlckNhcmQiOnJldHVybiIiO2Nhc2Uib3JkZXJlZExpc3QiOnJldHVybiB0Lml0ZW1zP3QuaXRlbXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBlKzErIi4gIit0fSkpLmpvaW4oIiwgIik6IiI7Y2FzZSJ1bm9yZGVyZWRMaXN0IjpyZXR1cm4gdC5pdGVtcz90Lml0ZW1zLmpvaW4oIiwgIik6IiI7ZGVmYXVsdDpyZXR1cm4gdC50ZXh0fHx0LmNvbnRlbnR9fSxrPWZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuIiI7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gZC5pbmRleE9mKHQudHlwZSk+LTF9KSlbMF19KHQpO2lmKCFuKXJldHVybiIiO3ZhciByPWQuaW5kZXhPZihuLnR5cGUpLGk9aFtyXTtyZXR1cm4gbnVsbCE9ZSYmZS5pc0FkbWluPygwLG8uVGwpKGkuYWRtaW4pOigwLG8uVGwpKGkudXNlcil9LEw9ZnVuY3Rpb24odCl7cmV0dXJuISghdHx8IXQudHlwZXx8ImxpbmsiIT09dC50eXBlKX0sVD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5zcGxpdCgiXG5cbiIpLG49MDtuPGUubGVuZ3RoO24rKyllW25dPWVbbl0ucmVwbGFjZSgvXG4vZywiPGJyPiIpO3JldHVybiBlLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSl9O2Z1bmN0aW9uIGoodCxlKXtmb3IodmFyIG4scj1bXSxvPVtdLGk9bCh0LCEwKTshKG49aSgpKS5kb25lOyl7dmFyIGE9bi52YWx1ZTstMSE9PWUuaW5kZXhPZihhLnR5cGUpPyhvLmxlbmd0aD4wJiYoci5wdXNoKHt0eXBlOiJjb250ZW50IixibG9ja3M6b30pLG89W10pLHIucHVzaCh7dHlwZToic2VwYXJhdGVkIixibG9jazphfSkpOm8ucHVzaChhKX1yZXR1cm4gby5sZW5ndGg+MCYmci5wdXNoKHt0eXBlOiJjb250ZW50IixibG9ja3M6b30pLHJ9fSwxMzcwOTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtLOmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSk7dmFyIHI9bigyMTE0MSk7ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgbj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8saSxhLHU9W10scz0hMCxjPSExO3RyeXtpZihpPShuPW4uY2FsbCh0KSkubmV4dCwwPT09ZSl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47cz0hMX1lbHNlIGZvcig7IShzPShyPWkuY2FsbChuKSkuZG9uZSkmJih1LnB1c2goci52YWx1ZSksdS5sZW5ndGghPT1lKTtzPSEwKTt9Y2F0Y2godCl7Yz0hMCxvPXR9ZmluYWxseXt0cnl7aWYoIXMmJm51bGwhPW4ucmV0dXJuJiYoYT1uLnJldHVybigpLE9iamVjdChhKSE9PWEpKXJldHVybn1maW5hbGx5e2lmKGMpdGhyb3cgb319cmV0dXJuIHV9fSh0LGUpfHxmdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gaSh0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9pKHQsZSk6dm9pZCAwfX0odCxlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGkodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfXZhciBhPWZ1bmN0aW9uIHQoZSl7aWYoISgwLHIuUSkoZSkpcmV0dXJuIGU7dmFyIG49e307cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByLGE9ZnVuY3Rpb24odCxlLG4pe2lmKGUmJiFBcnJheS5pc0FycmF5KGUpJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXt2YXIgcj1lLmxlbmd0aDtyZXR1cm4gaShlLHZvaWQgMCE9PW4mJm48cj9uOnIpfXJldHVybiB0KGUsbil9KG8sZSwyKSx1PWFbMF0scz1hWzFdLGM9dChzKTtBcnJheS5pc0FycmF5KGMpJiYoYz1jLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSl9KSkpLG5bKHI9dSxyLnRyaW0oKS5yZXBsYWNlKC8oW0EtWl0rKShbQS1aXVthLXpdKS9nLCIkMSAkMiIpLnJlcGxhY2UoLyhbYS16MC05XSkoW0EtWl0pL2csIiQxICQyIikuc3BsaXQoL1teYS16QS1aMC05XSsvKS5maWx0ZXIoQm9vbGVhbikubWFwKChmdW5jdGlvbih0LGUpe3ZhciBuPXQudG9Mb3dlckNhc2UoKTtyZXR1cm4gMD09PWU/bjpuLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK24uc2xpY2UoMSl9KSkuam9pbigiIikpXT1jfSkpLG59fSw2MDM0NTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtDMjpmdW5jdGlvbigpe3JldHVybiBzfSxHazpmdW5jdGlvbigpe3JldHVybiB5fSxNMjpmdW5jdGlvbigpe3JldHVybiB2fSxPbTpmdW5jdGlvbigpe3JldHVybiBmfSxTZzpmdW5jdGlvbigpe3JldHVybiBkfSxmcDpmdW5jdGlvbigpe3JldHVybiBofSxqSzpmdW5jdGlvbigpe3JldHVybiBjfSxzRTpmdW5jdGlvbigpe3JldHVybiBsfSx6RTpmdW5jdGlvbigpe3JldHVybiBwfX0pO3ZhciByPW4oMTc4MzMpLG89bi5uKHIpLGk9bigxMTQ4MSk7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdSh0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB1KHQsZSk7dmFyIG49e30udG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP3UodCxlKTp2b2lkIDB9fSh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB1KHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgcz1vKCkoImNoZWNrbGlzdHM6ZGVidWciKSxjPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXt2YXIgbj1uZXcgRGF0ZSh0LnB1Ymxpc2hlZEF0KTtyZXR1cm4gbmV3IERhdGUoZS5wdWJsaXNoZWRBdCk8bj9lOnR9KSl9LGw9ZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RoP3QuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIXQuaXNDb21wbGV0ZX0pKTp2b2lkIDB9LGY9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IERhdGU7cmV0dXJuIGUuc2V0RGF0ZShlLmdldERhdGUoKS1pLlZqKSx0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubGF0ZXN0SW50ZXJhY3Rpb25BdH0pKS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4hdHx8dD5lfSkpfSxkPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiB0JiZ0LnRhc2tHcm91cHMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5wdXNoLmFwcGx5KGUsZnVuY3Rpb24odCxlLG4pe2lmKGUmJiFBcnJheS5pc0FycmF5KGUpJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXt2YXIgcj1lLmxlbmd0aDtyZXR1cm4gdShlLHZvaWQgMCE9PW4mJm48cj9uOnIpfXJldHVybiB0KGUsbil9KGEsdC50YXNrcykpfSkpLGV9LHA9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hMD09PXQuaXNDb21wbGV0ZX0pKX0saD1mdW5jdGlvbih0KXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0LmlzQ29tcGxldGV9KSl9LHY9ZnVuY3Rpb24odCl7cmV0dXJuIHQuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5vcmRlci1lLm9yZGVyfSkpWzBdfSx5PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCksbj1wKGUpO3JldHVybiBlLmxlbmd0aC1uLmxlbmd0aD09MH19LDI3MjY5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0dsOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LEoxOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LFNsOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LGE6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sZSQ6ZnVuY3Rpb24oKXtyZXR1cm4gc30sajY6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sdmY6ZnVuY3Rpb24oKXtyZXR1cm4gY319KTt2YXIgcj1uKDk3MTYwKSxvPW4ubihyKSxpPVsicmV0dXJuVG9rZW5OYW1lIiwibGlnaHRDb2xvciIsImRhcmtDb2xvciJdO2Z1bmN0aW9uIGEodCl7cmV0dXJuKDAsci50aW55Y29sb3IpKHQpLmdldEx1bWluYW5jZSgpfXZhciB1PWZ1bmN0aW9uKHQsZSl7cmV0dXJuKDAsci50aW55Y29sb3IpKHQpLmxpZ2h0ZW4oZSkudG9IZXhTdHJpbmcoKX0scz1mdW5jdGlvbih0LGUpe3JldHVybigwLHIudGlueWNvbG9yKSh0KS5kYXJrZW4oZSkudG9IZXhTdHJpbmcoKX0sYz1mdW5jdGlvbih0LGUpe3JldHVybigwLHIudGlueWNvbG9yKSh0KS5zZXRBbHBoYShNYXRoLm1pbihNYXRoLm1heChlLDApLDEpKS50b1JnYlN0cmluZygpfTtmdW5jdGlvbiBsKHQpe3JldHVybi0xIT09WyIjZmZmZmZmIiwiI2ZmZiIsIndoaXRlIl0uaW5kZXhPZih0LnRvTG93ZXJDYXNlKCkpfXZhciBmPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgucm91bmQoMWUzKnIudGlueWNvbG9yLnJlYWRhYmlsaXR5KHQsZSkpLzFlM307ZnVuY3Rpb24gZCh0LGUsbil7dm9pZCAwPT09ZSYmKGU9ImxpZ2h0Iik7dmFyIHI9bnx8e30sYT1yLnJldHVyblRva2VuTmFtZSx1PXZvaWQgMD09PWF8fGEscz1yLmxpZ2h0Q29sb3IsYz12b2lkIDA9PT1zPyIjRkZGRkZGIjpzLGw9ci5kYXJrQ29sb3IsZj12b2lkIDA9PT1sPyIjMjIyMjIyIjpsLGQ9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PWUmJihlPSJsaWdodCIpO3ZhciByPW58fHt9LGk9ci5taW5pbWFsQ29udHJhc3RSYXRpb0xpZ2h0LGE9dm9pZCAwPT09aT8xLjY6aSx1PXIubWluaW1hbENvbnRyYXN0UmF0aW9EYXJrLHM9dm9pZCAwPT09dT80LjU6dSxjPXIuaXNNb2JpbGVQbGF0Zm9ybSxsPXZvaWQgMCE9PWMmJmN8fCJkYXJrIj09PWU/ImNvbnRyYXN0LXJhdGlvLTQuNSI6Imx1bWluYW5jZSIsZj0iZGFyayI9PT1lP3M6YSxkPW8oKSh7cHJpbWFyeUNvbG9yOnQsdGhlbWVNb2RlOmUsY29udHJhc3RDaGVja01ldGhvZDpsfSkucHJpbWFyeV9vbl93aGl0ZV9jb250cmFzdCxwPWQ+ZjtyZXR1cm57aXNSZWFkYWJsZTpwLHRleHRDb2xvcjpwPyJsaWdodCI6ImRhcmsiLGNvbnRyYXN0UmF0aW86ZH19KHQsZSxmdW5jdGlvbih0LGUpe2lmKG51bGw9PXQpcmV0dXJue307dmFyIG49e307Zm9yKHZhciByIGluIHQpaWYoe30uaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpKXtpZigtMSE9PWUuaW5kZXhPZihyKSljb250aW51ZTtuW3JdPXRbcl19cmV0dXJuIG59KHIsaSkpLHA9ZC5pc1JlYWRhYmxlO3JldHVybiB1P3A/InRleHRPbkludmVyc2UiOiJ0ZXh0RGVmYXVsdCI6cD9jOmZ9fSw2Nzc1MTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtGOmZ1bmN0aW9uKCl7cmV0dXJuIG99LHo6ZnVuY3Rpb24oKXtyZXR1cm4gaX19KTt2YXIgcj1uKDQwMjM4KSxvPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0hMCksKDAsci55SikoImNvbnZlcnNhdGlvbkRlbW9Nb2RlRW5hYmxlZCIsdCl9LGk9ZnVuY3Rpb24oKXt0cnl7dmFyIHQ7cmV0dXJuIShudWxsPT0odD0oMCxyLnpqKSgpKXx8IXQuY29udmVyc2F0aW9uRGVtb01vZGVFbmFibGVkKX1jYXRjaCh0KXtyZXR1cm4hMX19fSw0MDE4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0FtOmZ1bmN0aW9uKCl7cmV0dXJuIEl9LEhwOmZ1bmN0aW9uKCl7cmV0dXJuIGp9LEk0OmZ1bmN0aW9uKCl7cmV0dXJuIEF9LEpBOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LE1GOmZ1bmN0aW9uKCl7cmV0dXJuIEx9LFE0OmZ1bmN0aW9uKCl7cmV0dXJuIEN9LFF6OmZ1bmN0aW9uKCl7cmV0dXJuIGJ9LFM5OmZ1bmN0aW9uKCl7cmV0dXJuIGt9LFhOOmZ1bmN0aW9uKCl7cmV0dXJuIFJ9LFhVOmZ1bmN0aW9uKCl7cmV0dXJuIHh9LFhjOmZ1bmN0aW9uKCl7cmV0dXJuIHp9LGNBOmZ1bmN0aW9uKCl7cmV0dXJuIEV9LGNHOmZ1bmN0aW9uKCl7cmV0dXJuIG19LGRGOmZ1bmN0aW9uKCl7cmV0dXJuIHl9LGRUOmZ1bmN0aW9uKCl7cmV0dXJuIE59LGh0OmZ1bmN0aW9uKCl7cmV0dXJuIHZ9LGl1OmZ1bmN0aW9uKCl7cmV0dXJuIFB9LGtnOmZ1bmN0aW9uKCl7cmV0dXJuIFN9LG1uOmZ1bmN0aW9uKCl7cmV0dXJuIEh9LHNpOmZ1bmN0aW9uKCl7cmV0dXJuIF99LHU6ZnVuY3Rpb24oKXtyZXR1cm4gT30sd1g6ZnVuY3Rpb24oKXtyZXR1cm4gRn0sd3k6ZnVuY3Rpb24oKXtyZXR1cm4gd30seGY6ZnVuY3Rpb24oKXtyZXR1cm4gVX0sek46ZnVuY3Rpb24oKXtyZXR1cm4gTX19KTt2YXIgcj1uKDM4ODgzKSxvPW4oNjY4MzgpLGk9big5MjQxNyksYT1uKDY5NzQ0KSx1PW4oODMxNDcpLHM9WyJ0eXBlIl07ZnVuY3Rpb24gYygpe3JldHVybiBjPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sYy5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbCh0LGUsbil7aWYoZSYmIUFycmF5LmlzQXJyYXkoZSkmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ZhciByPWUubGVuZ3RoO3JldHVybiBkKGUsdm9pZCAwIT09biYmbjxyP246cil9cmV0dXJuIHQoZSxuKX1mdW5jdGlvbiBmKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBkKHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGQodCxlKTt2YXIgbj17fS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/ZCh0LGUpOnZvaWQgMH19KHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGQodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfXZhciBwPU9iamVjdC5hc3NpZ247ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4hIXQmJihudWxsPT10fHxudWxsPT0oZT10LmNvbXBvc2VyU3RhdGUpP3ZvaWQgMDplLndvcmtmbG93QWN0aXZlKX0oZSl8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIWUmJnR8fHQmJiJib3QiPT09KG51bGw9PWU/dm9pZCAwOmUudXhTdHlsZSl8fHQmJiEobnVsbCE9ZSYmZS51eFN0eWxlKX0odCxlKX12YXIgdj1mdW5jdGlvbih0KXtyZXR1cm4gdC5wYXJ0cy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBudWxsPT0oZT10LmF1dGhvcik/dm9pZCAwOmUuaXNBZG1pbn0pKVswXX0seT1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMCksZyh0LnBhcnRzLGUpfSxnPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9ITApO3ZhciBuPSgobnVsbD09dD92b2lkIDA6dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBuLHI7cmV0dXJuKG51bGw9PShuPXQuYXV0aG9yKT92b2lkIDA6bi5pc0FkbWluKSYmKGV8fCEobnVsbCE9KHI9dC5hdXRob3IpJiZyLmlzQm90KSl9KSkpfHxbXSkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jcmVhdGVkQXQuZ2V0VGltZSgpLWUuY3JlYXRlZEF0LmdldFRpbWUoKX0pKTtyZXR1cm4oMCxyLkhWKShuKX0sbT1mdW5jdGlvbih0KXtyZXR1cm4gdC5wYXJ0cy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7dmFyIG47cmV0dXJuIHQrKG51bGwhPShuPWUuYXV0aG9yKSYmbi5pc0FkbWluPzE6MCl9KSwwKX0sYj1mdW5jdGlvbih0KXt2YXIgZSxuO3JldHVybihudWxsPT0oZT10LnBhcnRzKT92b2lkIDA6ZS5sZW5ndGgpPjEmJiEwPT09KG51bGw9PShuPSgwLHIuSFYpKHQucGFydHMpKXx8bnVsbD09KG49bi5hdXRob3IpP3ZvaWQgMDpuLmlzQWRtaW4pfSx3PWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBudWxsPT0oZT10LmF1dGhvcik/dm9pZCAwOmUuaXNCb3R9LF89ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbCE9dC5pZCYmdC5pZD09PWUuaWR8fG51bGwhPXQuY2xpZW50SWQmJnQuY2xpZW50SWQ9PT1lLmNsaWVudElkfSxTPWZ1bmN0aW9uKHQsZSl7aWYoKDAsby5JKShlKSlyZXR1cm4gdC5wYXJ0czt2YXIgbj15KHQpOygwLHUuWlEpKHtjYXRlZ29yeToiZ2V0LWNvbnZlcnNhdGlvbiIsbWVzc2FnZToiTWVyZ2luZyBjb252ZXJzYXRpb24gcGFydHMiLGRhdGE6e2NvbnZlcnNhdGlvbklkOnQuaWQsbGFzdEluY29taW5nQWRtaW5QYXJ0SWQ6bnVsbD09bj92b2lkIDA6bi5pZH0sbGV2ZWw6ImluZm8ifSk7dmFyIHI9ZS5wYXJ0c3x8W10sYT1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xpZW50SWR9KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0W2UuY2xpZW50SWRdPWUsdH0pLHt9KSxzPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbZS5pZF09ZSx0fSkse30pLGQ9dC5wYXJ0cy5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZCYmIXNbdC5pZF19KSkscD1bXS5jb25jYXQobChmLHQucGFydHMpLGwoZixyKSkuZmlsdGVyKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIG4uZmluZEluZGV4KChmdW5jdGlvbihlKXtyZXR1cm4gXyhlLHQpfSkpPT09ZX0pKSxoPXA7ZCYmKGg9cC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiEoKHZvaWQgMCE9PXQudG9rZW5TZXF1ZW5jZUluZGV4fHx0LnN0cmVhbUVuZGVkKSYmIXQuaWQpfSkpKSxoLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlLG4scixvLGk9YVt0LmNsaWVudElkXTtpJiZudWxsIT0oZT1pLmF1dGhvcikmJmUuaXNBZG1pbiYmbnVsbCE9KG49aS5hdXRob3IpJiZuLmlzQm90JiYodC5jcmVhdGVkQXQ9aS5jcmVhdGVkQXR8fHQuY3JlYXRlZEF0KTt2YXIgdT10LmlkP251bGw9PShyPXNbdC5pZF0pfHxudWxsPT0ocj1yLmhhbmRvdmVyQ3RhKT92b2lkIDA6ci5zcGF3bmVkX2NvbnZlcnNhdGlvbl9pZDp2b2lkIDA7IXV8fG51bGwhPShvPXQuaGFuZG92ZXJDdGEpJiZvLnNwYXduZWRfY29udmVyc2F0aW9uX2lkfHwodC5oYW5kb3ZlckN0YT1jKHt9LHQuaGFuZG92ZXJDdGEse3N0YXR1czoic3Bhd25lZCIsc3Bhd25lZF9jb252ZXJzYXRpb25faWQ6dX0pKX0pKTt2YXIgdj1nKGgpO3JldHVybigwLHUuWlEpKHtjYXRlZ29yeToiZ2V0LWNvbnZlcnNhdGlvbiIsbWVzc2FnZToiTWVyZ2VkIHBhcnRzIGNvbXBsZXRlIixkYXRhOntjb252ZXJzYXRpb25JZDp0LmlkLGxhc3RNZXJnZWRBZG1pblBhcnRJZDpudWxsPT12P3ZvaWQgMDp2LmlkfSxsZXZlbDoiaW5mbyJ9KSwoMCxpLk0pKGgsWyJjcmVhdGVkQXQiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzTWVzc2FnZT8wOjF9XSxbImFzYyIsImFzYyJdKX0seD1mdW5jdGlvbih0LGUpe2lmKHQuY29tcG9zZXJTdGF0ZSYmISgwLG8uSSkoZSkmJm51bGwhPWUmJmUuY29tcG9zZXJTdGF0ZSl7aWYoZS5jb21wb3NlclN0YXRlLnZlcnNpb24mJnQuY29tcG9zZXJTdGF0ZS52ZXJzaW9uJiZlLmNvbXBvc2VyU3RhdGUudmVyc2lvbj50LmNvbXBvc2VyU3RhdGUudmVyc2lvbiYmZS5jb21wb3NlclN0YXRlLndvcmtmbG93QWN0aXZlPT09dC5jb21wb3NlclN0YXRlLndvcmtmbG93QWN0aXZlKXJldHVybiBlLmNvbXBvc2VyU3RhdGU7ZS5jb21wb3NlclN0YXRlLnZlcnNpb249PT10LmNvbXBvc2VyU3RhdGUudmVyc2lvbiYmZS5jb21wb3NlclN0YXRlLnZpc2libGUhPT10LmNvbXBvc2VyU3RhdGUudmlzaWJsZSYmKDAsYS51bykoIkRpZmZlcmVudCBjb21wb3NlclN0YXRlIHZpc2liaWxpdHkgd2l0aCBzYW1lIHZlcnNpb24gbnVtYmVyIGZvciBjb252ZXJzYXRpb24gd2l0aCBpZD0iK3QuaWQpfXJldHVybiB0LmNvbXBvc2VyU3RhdGV9LEU9ZnVuY3Rpb24odCl7dmFyIGU7aWYodCYmdC5wYXJ0cyYmMCE9PXQucGFydHMubGVuZ3RoKXJldHVybiB0LmlkKyItIisobnVsbD09KGU9KDAsci5IVikodC5wYXJ0cykpP3ZvaWQgMDplLmlkKX0sQz1mdW5jdGlvbih0KXtyZXR1cm4icGFydGlhbCI9PT10LmZldGNoU3RhdGV9LE89ZnVuY3Rpb24odCl7dmFyIGU9eSh0KTtyZXR1cm4gMT09PXQucGFydHMubGVuZ3RoP0EodCk6cCh7fSxlLHttZXNzYWdlVHlwZTplP0koZSk6dm9pZCAwfSl9LEE9ZnVuY3Rpb24odCl7dmFyIGU9dC5sYXN0UGFydGljaXBhdGluZ0FkbWluLG49ZT9lLmxhc3RBY3RpdmVBdDp2b2lkIDAscj1lP2UuaXNBY3RpdmU6dm9pZCAwO3JldHVybiBwKHt9LHQucGFydHNbMF0se2xhc3RBY3RpdmVBdDpuLGlzQWN0aXZlOnJ9KX0sST1mdW5jdGlvbih0KXtyZXR1cm4gdC5tZXNzYWdlVHlwZXx8ImFkbWluUmVwbHkifSxrPWZ1bmN0aW9uKHQpe3JldHVybiEoIXQuaWRlbnRpZmllci5zdGFydHNXaXRoKCJjdXN0b21fZGF0YS4iKSYmIXQuaWRlbnRpZmllci5zdGFydHNXaXRoKCJjb21wYW55LmN1c3RvbV9kYXRhLiIpKX0sTD1mdW5jdGlvbih0LGUpe3ZhciBuPXQuYXR0cmlidXRlcy5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZGVudGlmaWVyPT09ZX0pKTtpZihuKXJldHVybiJzdHJpbmciPT09bi50eXBlJiZBcnJheS5pc0FycmF5KG4ub3B0aW9ucyk/Imxpc3QiOiJlbWFpbCI9PT1uLmlkZW50aWZpZXI/ImVtYWlsIjoicGhvbmUiPT09bi5pZGVudGlmaWVyPyJwaG9uZSI6bi50eXBlfSxUPWZ1bmN0aW9uKHQpe3JldHVybih0LnBhcnRzfHxbXSkuZmxhdE1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYm9keX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiJtZXNzZW5nZXJDYXJkIj09PXQudHlwZX0pKX0saj1mdW5jdGlvbih0KXtyZXR1cm4gVCh0KS5tYXAoKGZ1bmN0aW9uKHQpe3QudHlwZTtyZXR1cm4gZnVuY3Rpb24odCxlKXtpZihudWxsPT10KXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiB0KWlmKHt9Lmhhc093blByb3BlcnR5LmNhbGwodCxyKSl7aWYoLTEhPT1lLmluZGV4T2YocikpY29udGludWU7bltyXT10W3JdfXJldHVybiBufSh0LHMpfSkpfSxQPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFQodCkuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQudXJpPT09ZX0pKX0sTj1mdW5jdGlvbih0KXtyZXR1cm4gdC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBlLmxhc3RQYXJ0Q3JlYXRlZEF0LmdldFRpbWUoKS10Lmxhc3RQYXJ0Q3JlYXRlZEF0LmdldFRpbWUoKX0pKX0sTT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIShudWxsPT0oZT10LmNvbXBvc2VyU3RhdGUpfHwhZS52aXNpYmxlfHx0LmluYm91bmRDb252ZXJzYXRpb25zRGlzYWJsZWR8fHQucHJldmVudEVuZFVzZXJSZXBsaWVzKX0odCkmJiFmdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0LnBhcnRzKSYmdC5wYXJ0c1swXSYmImF0dHJpYnV0ZV9jb2xsZWN0b3IiPT09dC5wYXJ0c1swXS5yZXBseVR5cGV9KHQpfSxSPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiB0LnBhcnRzJiYicG9pbnRlciI9PT0obnVsbD09KGU9KDAsci5IVikodC5wYXJ0cykpP3ZvaWQgMDplLm1lc3NhZ2VUeXBlKX0sVT1mdW5jdGlvbih0LGUsbil7aWYoIShuPDEpKXt2YXIgcj10LnNsaWNlKC1NYXRoLmFicyhuKSksbz1lLnNsaWNlKC1NYXRoLmFicyhuKSk7cmV0dXJuIHIuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiBvLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBfKHQsZSl9KSl9KSl9fSx6PWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiExO3RyeXt2YXIgZSxuPUpTT04ucGFyc2UodCk7cmV0dXJuInJlcGxpZXNfcHJldmVudGVkIj09PShudWxsPT1ufHxudWxsPT0oZT1uLmVycm9yc1swXSk/dm9pZCAwOmUuY29kZSl9Y2F0Y2godCl7cmV0dXJuITF9fSxIPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiExO3RyeXt2YXIgZSxuPUpTT04ucGFyc2UodCk7cmV0dXJuImludmFsaWRfdXBsb2FkX2V4dGVuc2lvbiI9PT0obnVsbD09bnx8bnVsbD09KGU9bi5lcnJvcnNbMF0pP3ZvaWQgMDplLmNvZGUpfWNhdGNoKHQpe3JldHVybiExfX0sRj1mdW5jdGlvbih0KXtyZXR1cm4obnVsbD09dD92b2lkIDA6dC5pc0ZldGNoaW5nKSYmIShudWxsIT10JiZ0LmlzVXBkYXRpbmcpfX0sMzgwNDI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7S0s6ZnVuY3Rpb24oKXtyZXR1cm4gb30sTEE6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sbnU6ZnVuY3Rpb24oKXtyZXR1cm4gcn0scjQ6ZnVuY3Rpb24oKXtyZXR1cm4gYX19KTt2YXIgcj1mdW5jdGlvbigpe3JldHVybiJpbnRlcmNvbS1pZCJ9LG89ZnVuY3Rpb24odCl7cmV0dXJuImludGVyY29tLWlkLSIrdH0saT1mdW5jdGlvbih0KXtyZXR1cm4iaW50ZXJjb20tc2Vzc2lvbi0iK3R9LGE9ZnVuY3Rpb24odCl7cmV0dXJuImludGVyY29tLWRldmljZS1pZC0iK3R9fSwyMDIxNTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCl7cmV0dXJuIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHIodCl9ZnVuY3Rpb24gbyh0LGUpe2lmKHQ9PT1lKXJldHVybiEwO2lmKG51bGw9PXR8fG51bGw9PWUpcmV0dXJuITE7aWYocih0KSE9PXIoZSkpcmV0dXJuITE7aWYodCBpbnN0YW5jZW9mIERhdGUmJmUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiB0LmdldFRpbWUoKT09PWUuZ2V0VGltZSgpO2lmKHQgaW5zdGFuY2VvZiBSZWdFeHAmJmUgaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuIHQudG9TdHJpbmcoKT09PWUudG9TdHJpbmcoKTtpZihBcnJheS5pc0FycmF5KHQpJiZBcnJheS5pc0FycmF5KGUpKXJldHVybiB0Lmxlbmd0aD09PWUubGVuZ3RoJiZ0LmV2ZXJ5KChmdW5jdGlvbih0LG4pe3JldHVybiBvKHQsZVtuXSl9KSk7aWYoIm9iamVjdCI9PT1yKHQpJiYib2JqZWN0Ij09PXIoZSkpe3ZhciBuPXQsaT1lLGE9T2JqZWN0LmtleXMobiksdT1PYmplY3Qua2V5cyhpKTtyZXR1cm4gYS5sZW5ndGg9PT11Lmxlbmd0aCYmYS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuISFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSx0KSYmbyhuW3RdLGlbdF0pfSkpfXJldHVybiExfW4uZChlLHtiOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSl9LDcyMzYxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse2Y6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgcj1uKDM1MjA2KSxvPWZ1bmN0aW9uKHQsZSxuKXtpZih2b2lkIDA9PT1uJiYobj0iZW4iKSx0LmNvbnRlbnREb2N1bWVudCl7aWYoci5BeS5pc0ZpcmVmb3goKSl7dmFyIG89dC5jb250ZW50RG9jdW1lbnQub3BlbigpO28ud3JpdGUoIjwhRE9DVFlQRSBodG1sPiIpLG8uY2xvc2UoKX0hZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PW4mJihuPSJlbiIpLHQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTD1lLHQuZG9jdW1lbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgibGFuZyIsbil9KHQuY29udGVudERvY3VtZW50LGUsbil9fX0sNDkwMTQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7QWg6ZnVuY3Rpb24oKXtyZXR1cm4gc30sQ1o6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sVnI6ZnVuY3Rpb24oKXtyZXR1cm4gY30sWjI6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sbUo6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sdFc6ZnVuY3Rpb24oKXtyZXR1cm4gcH0seDpmdW5jdGlvbigpe3JldHVybiB1fSx4MzpmdW5jdGlvbigpe3JldHVybiBsfX0pO3ZhciByPW4oMzIzNTApLG89bigzNjI2NiksaT1mdW5jdGlvbih0KXt2YXIgZTtpZihudWxsIT0oZT13aW5kb3cpJiZudWxsIT0oZT1lLnBhcmVudCkmJmUuZG9jdW1lbnQpcmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KX0sYT1mdW5jdGlvbigpe3ZhciB0O3JldHVybihudWxsPT0odD0oMCxvLm1DKSgpKT92b2lkIDA6dC5pbm5lckhlaWdodCl8fDB9LHU9ZnVuY3Rpb24oKXtyZXR1cm4gaSgnW25hbWU9ImludGVyY29tLW1vZGFsLWZyYW1lIl0nKX0scz1mdW5jdGlvbigpe3JldHVybiBpKCdbbmFtZT0iaW50ZXJjb20tbm90ZS1mcmFtZSJdJyl9LGM9ZnVuY3Rpb24oKXtyZXR1cm4gaSgnW25hbWU9ImludGVyY29tLW1lc3Nlbmdlci1mcmFtZSJdJyl9LGw9ZnVuY3Rpb24oKXt2YXIgdD1jKCk7aWYodClyZXR1cm4gdC5jb250ZW50RG9jdW1lbnR9LGY9ZnVuY3Rpb24odCl7cmV0dXJuIShudWxsPT10fHwhdC5wb3N0TWVzc2FnZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHQucG9zdE1lc3NhZ2UpfSxkPWZ1bmN0aW9uKCl7dmFyIHQ9aSgnW25hbWU9ImludGVyY29tLWxhdW5jaGVyLWZyYW1lIl0nKTtpZih0KXJldHVybiB0LmNvbnRlbnREb2N1bWVudH0scD1mdW5jdGlvbigpe3JldHVybiBkKCkmJigwLHIucmUpKGQoKSlbMF19LGg9ZnVuY3Rpb24oKXtyZXR1cm4gbCgpJiYoMCxyLnJlKShsKCkpWzBdfX0sMzIzNTA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7Q186ZnVuY3Rpb24oKXtyZXR1cm4gRX0sRnA6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sS3g6ZnVuY3Rpb24oKXtyZXR1cm4gX30sTTc6ZnVuY3Rpb24oKXtyZXR1cm4gU30sUk06ZnVuY3Rpb24oKXtyZXR1cm4gan0sUms6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sVDU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sVFY6ZnVuY3Rpb24oKXtyZXR1cm4gc30sVno6ZnVuY3Rpb24oKXtyZXR1cm4gVH0sWUc6ZnVuY3Rpb24oKXtyZXR1cm4geH0sX1Q6ZnVuY3Rpb24oKXtyZXR1cm4gTH0sYTg6ZnVuY3Rpb24oKXtyZXR1cm4gd30sYiQ6ZnVuY3Rpb24oKXtyZXR1cm4gbX0sYmY6ZnVuY3Rpb24oKXtyZXR1cm4gUH0sY3M6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sZGk6ZnVuY3Rpb24oKXtyZXR1cm4gT30sZjpmdW5jdGlvbigpe3JldHVybiBnfSxmJDpmdW5jdGlvbigpe3JldHVybiBifSxmbzpmdW5jdGlvbigpe3JldHVybiBsfSxoZjpmdW5jdGlvbigpe3JldHVybiBDfSxpUTpmdW5jdGlvbigpe3JldHVybiBofSxuQjpmdW5jdGlvbigpe3JldHVybiBOfSxuZjpmdW5jdGlvbigpe3JldHVybiBBfSxueDpmdW5jdGlvbigpe3JldHVybiBJfSxvMjpmdW5jdGlvbigpe3JldHVybiBwfSxxMjpmdW5jdGlvbigpe3JldHVybiB5fSxyZTpmdW5jdGlvbigpe3JldHVybiBrfSx2eTpmdW5jdGlvbigpe3JldHVybiB2fX0pO3ZhciByPW4oMzI5OCksbz1uKDM1MjA2KSxpPW4oMTc4MzMpLGE9bi5uKGkpKCkoImRvbSIpLHU9e1RBQjo5LEVOVEVSOjEzLEVTQzoyNyxTUEFDRTozMixCQUNLU1BBQ0U6OCxERUxFVEU6NDZ9LHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2Nyb2xsSGVpZ2h0LXQuY2xpZW50SGVpZ2h0LXQuc2Nyb2xsVG9wfSxjPWZ1bmN0aW9uKHQpe3JldHVybiB0LnNjcm9sbFRvcC8odC5zY3JvbGxIZWlnaHQtdC5jbGllbnRIZWlnaHQpfSxsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dDt0cnl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmUuc3BsaXQoIiA+IDpzaGFkb3ctcm9vdCA+ICIpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXt2YXIgcjtpZihuKXt2YXIgbz1uLnF1ZXJ5U2VsZWN0b3IoZSk7cmV0dXJuIG49bnVsbCE9KHI9bnVsbD09bz92b2lkIDA6by5zaGFkb3dSb290KT9yOm51bGwsb319KSx2b2lkIDApfWNhdGNoKHQpe3JldHVybiBhKCdmaW5kRWxlbWVudEZyb21TZWxlY3Rvcjogc2VsZWN0b3IgIiVzIiB0aHJldywgcmV0dXJuaW5nIG51bGwnLGUsdCksbnVsbH19LGY9ZnVuY3Rpb24odCl7aWYodCl7dmFyIGU9dC5zY3JvbGxIZWlnaHQsbj10LmNsaWVudEhlaWdodDt0LnNjcm9sbFRvcD1lLW59fSxkPWZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPXQuc2Nyb2xsSGVpZ2h0LG49dC5jbGllbnRIZWlnaHQ7aWYoIXQuc2Nyb2xsQnkpcmV0dXJuIGYodCk7dC5zY3JvbGxCeSh7dG9wOmUtbixsZWZ0OjAsYmVoYXZpb3I6InNtb290aCJ9KX19LHA9ZnVuY3Rpb24odCxlKXtpZihlKXt2YXIgbj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9bi5ib3R0b20sbz1uLnRvcCxpPW4uaGVpZ2h0LGE9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx1PWEuYm90dG9tLHM9YS50b3AsYz1hLmhlaWdodDtpZihvPHN8fHI+dSl7Zm9yKHZhciBsPXQub2Zmc2V0VG9wLGY9dDtmOyl7InJlbGF0aXZlIj09PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGYpLnBvc2l0aW9uJiYobCs9Zi5vZmZzZXRUb3AtZi5zY3JvbGxUb3ArZi5jbGllbnRUb3ApLGY9Zi5vZmZzZXRQYXJlbnR9ZS5zY3JvbGxUb3A9bC1NYXRoLnRydW5jKGMvMikrTWF0aC50cnVuYyhpLzIpfX19LGg9ZnVuY3Rpb24odCxlKXtpZih0KXt2YXIgbj10LmNsYXNzTmFtZS5zcGxpdCgiICIpO24uc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1lfSkpfHwobi5wdXNoKGUpLHQuY2xhc3NOYW1lPW4uam9pbigiICIpLnRyaW0oKSl9fSx2PWZ1bmN0aW9uKHQsZSl7dCYmKHQuY2xhc3NOYW1lPXQuY2xhc3NOYW1lLnNwbGl0KCIgIikuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdCE9PWV9KSkuam9pbigiICIpKX0seT1mdW5jdGlvbih0LGUsbixyKXt2b2lkIDA9PT1yJiYocj0hMSksbnVsbCE9dCYmKHQuYWRkRXZlbnRMaXN0ZW5lcj90LmFkZEV2ZW50TGlzdGVuZXIoZSxuLHIpOnQuYXR0YWNoRXZlbnQmJnQuYXR0YWNoRXZlbnQoIm9uIitlLG4pKX0sZz1mdW5jdGlvbih0LGUsbil7bnVsbCE9dCYmKHQucmVtb3ZlRXZlbnRMaXN0ZW5lcj90LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxuKTp0LmRldGFjaEV2ZW50JiZ0LmRldGFjaEV2ZW50KCJvbiIrZSxuKSl9LG09ZnVuY3Rpb24odCl7dmFyIGU9dC5jdXJyZW50VGFyZ2V0LG49ZS5zY3JvbGxUb3Ascj1lLnNjcm9sbEhlaWdodCxvPWUuY2xpZW50SGVpZ2h0LGk9dC5kZWx0YVksYT1pPjA7YSYmaT5yLW8tbj9lLnNjcm9sbFRvcD1yOiFhJiYtaT5uP2Uuc2Nyb2xsVG9wPTA6dC5zdG9wUHJvcGFnYXRpb24oKX0sYj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQuc2xpY2UoMCxuKStlK3Quc2xpY2Uobil9LHc9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT0tMSksdCYmKHQuZm9jdXMoKSwic2V0U2VsZWN0aW9uUmFuZ2UiaW4gdCYmdC5zZXRTZWxlY3Rpb25SYW5nZSYmZT49MCYmdC5zZXRTZWxlY3Rpb25SYW5nZShlLGUpKX07ZnVuY3Rpb24gXyh0LGUsbil7dmFyIHI9dC5kb2N1bWVudHx8dC5vd25lckRvY3VtZW50O3JldHVybiBmdW5jdGlvbih0KXtpZihyKWZvcih2YXIgbz1BcnJheS5mcm9tKHIucXVlcnlTZWxlY3RvckFsbChlKSksaT10LnRhcmdldDtpOyl7aWYoby5pbmRleE9mKGkpPi0xKXtuLmNhbGwoaSx0KTticmVha31pPWkucGFyZW50Tm9kZX19fXZhciBTPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10LmhpZGRlbj8hdC5oaWRkZW46dm9pZCAwIT09dC5tb3pIaWRkZW4/IXQubW96SGlkZGVuOnZvaWQgMCE9PXQubXNIaWRkZW4/IXQubXNIaWRkZW46dm9pZCAwPT09dC53ZWJraXRIaWRkZW58fCF0LndlYmtpdEhpZGRlbn0seD1mdW5jdGlvbigpe3ZhciB0LGU9ZG9jdW1lbnQ7cmV0dXJuIHZvaWQgMCE9PWUuaGlkZGVuP3Q9InZpc2liaWxpdHljaGFuZ2UiOnZvaWQgMCE9PWUubW96SGlkZGVuP3Q9Im1venZpc2liaWxpdHljaGFuZ2UiOnZvaWQgMCE9PWUubXNIaWRkZW4/dD0ibXN2aXNpYmlsaXR5Y2hhbmdlIjp2b2lkIDAhPT1lLndlYmtpdEhpZGRlbiYmKHQ9IndlYmtpdHZpc2liaWxpdHljaGFuZ2UiKSx0fSxFPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKTtuLnNldEF0dHJpYnV0ZSgidGFyZ2V0IiwiX2JsYW5rIiksbi5zZXRBdHRyaWJ1dGUoIm1ldGhvZCIsInBvc3QiKSxuLnNldEF0dHJpYnV0ZSgiYWN0aW9uIix0KSxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3IudHlwZT0iaGlkZGVuIixyLm5hbWU9dCxyLnZhbHVlPVN0cmluZyhlW3RdKSxuLmFwcGVuZENoaWxkKHIpfSkpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobiksbi5zdWJtaXQoKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG4pfSxDPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtlLmtleUNvZGUhPT11LkVOVEVSJiZlLmtleUNvZGUhPT11LlNQQUNFfHx0KGUpfX0sTz1mdW5jdGlvbih0KXt2YXIgZSxuPXQudGFyZ2V0O3JldHVybiB0LmtleUNvZGU9PT11LlRBQiYmISgtMSE9PVsiSU5QVVQiLCJCVVRUT04iXS5pbmRleE9mKG51bGwhPShlPW51bGw9PW4/dm9pZCAwOm4udGFnTmFtZSk/ZToiIikpfSxBPWZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPXQ7cmV0dXJuISEoZS5vZmZzZXRXaWR0aHx8ZS5vZmZzZXRIZWlnaHR8fHQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfX0sST1mdW5jdGlvbih0KXtyZXR1cm4iRXNjYXBlIj09PXQua2V5fSxrPWZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5mcm9tKHQucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uLCBbaHJlZl0sIGlucHV0Om5vdChbdHlwZT0iZmlsZSJdKTpub3QoW3R5cGU9ImhpZGRlbiJdKSwgc2VsZWN0LCB0ZXh0YXJlYSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PSItMSJdKScpKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0LmNsb3Nlc3QoJ1thcmlhLWhpZGRlbj0idHJ1ZSJdJyl9KSl9LEw9ZnVuY3Rpb24odCl7cmV0dXJuKDAsci5WZikodCk/InJ0bCI6Imx0ciJ9LFQ9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIHJ8fGoodCxlLG4pfSxqPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10LmRvY3VtZW50LG89ci5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gby5pZD1lLG4mJm8uY2xhc3NMaXN0LmFkZChuKSxyLmJvZHkuYXBwZW5kQ2hpbGQobyksb30sUD1mdW5jdGlvbih0KXt2YXIgZTtudWxsPT10fHxudWxsPT0oZT10LnBhcmVudE5vZGUpfHxlLnJlbW92ZUNoaWxkKHQpfSxOPWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9NTAwKSwhby51bilyZXR1cm4gc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LmZvY3VzKCl9KSxlKTt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3JldHVybiBuLnNldEF0dHJpYnV0ZSgidHlwZSIsInRleHQiKSxuLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsbi5zdHlsZS5vcGFjaXR5PSIwIixuLnN0eWxlLmhlaWdodD0iMCIsbi5zdHlsZS5mb250U2l6ZT0iMTZweCIsZG9jdW1lbnQuYm9keS5wcmVwZW5kKG4pLG4uZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3QuZm9jdXMoKSxuLnJlbW92ZSgpfSksZSl9fSw5NzQ0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse2tyOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LHROOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LHVZOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LHlmOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIHI9big3MjM2MSksbz1udWxsLGk9ZnVuY3Rpb24odCxlLG4pe2lmKCFlfHxvKXJldHVybiBvO3RyeXt2YXIgaT10LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSk7aWYoMD09PWkubGVuZ3RoKXJldHVybiBjb25zb2xlLmVycm9yKCdbSW50ZXJjb21dIGVtYmVkX21lc3NlbmdlcjogVGFyZ2V0IGVsZW1lbnQgIicrZSsnIiBub3QgZm91bmQnKSxudWxsO2kubGVuZ3RoPjEmJmNvbnNvbGUud2FybignW0ludGVyY29tXSBlbWJlZF9tZXNzZW5nZXI6IE11bHRpcGxlIGVsZW1lbnRzIG1hdGNoIHNlbGVjdG9yICInK2UrJyIgKCcraS5sZW5ndGgrIiBmb3VuZCkuIFVzaW5nIHRoZSBmaXJzdCBvbmUuIik7dmFyIGE9aVswXSx1PXQuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7dS5pZD0iaW50ZXJjb20tZW1iZWRkZWQtbWVzc2VuZ2VyIix1LnNldEF0dHJpYnV0ZSgidGl0bGUiLCJJbnRlcmNvbSBFbWJlZGRlZCBNZXNzZW5nZXIiKSx1LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJmYWxzZSIpO3ZhciBzPW51bGwhPW4mJm4uZnVsbFBhZ2U/ImJvcmRlcjogbm9uZTsgZGlzcGxheTogYmxvY2s7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB6LWluZGV4OiAxOyI6IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJvcmRlcjogbm9uZTsgZGlzcGxheTogYmxvY2s7IHBvc2l0aW9uOiByZWxhdGl2ZTsiO3Uuc2V0QXR0cmlidXRlKCJzdHlsZSIscyksYS5hcHBlbmRDaGlsZCh1KTt2YXIgYz10LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT0icmVmZXJyZXIiXScpLGw9Yz8nPG1ldGEgbmFtZT0icmVmZXJyZXIiIGNvbnRlbnQ9IicrYy5jb250ZW50KyciPic6IiI7KDAsci5mKSh1LCc8IURPQ1RZUEUgaHRtbD5cbiAgICAgIDxodG1sIGxhbmc9ImVuIj5cbiAgICAgICAgPGhlYWQ+XG4gICAgICAgICAgJytsKydcbiAgICAgICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLCB3aWR0aD1kZXZpY2Utd2lkdGgiIC8+XG4gICAgICAgICAgPHN0eWxlPlxuICAgICAgICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3N0eWxlPlxuICAgICAgICA8L2hlYWQ+XG4gICAgICAgIDxib2R5PlxuICAgICAgICA8L2JvZHk+XG4gICAgICA8L2h0bWw+Jyk7dmFyIGY9dS5jb250ZW50V2luZG93O3JldHVybiBmP289e2lmcmFtZTp1LHdpbmRvdzpmLGNsZWFudXA6ZnVuY3Rpb24oKXt1LnBhcmVudE5vZGUmJnUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh1KSxvPW51bGx9fTooY29uc29sZS5lcnJvcigiW0ludGVyY29tXSBGYWlsZWQgdG8gZ2V0IGVtYmVkZGVkIGlmcmFtZSB3aW5kb3ciKSxudWxsKX1jYXRjaCh0KXtyZXR1cm4gY29uc29sZS5lcnJvcigiW0ludGVyY29tXSBGYWlsZWQgdG8gY3JlYXRlIGVtYmVkZGVkIGNvbnRhaW5lcjoiLHQpLG51bGx9fSxhPWZ1bmN0aW9uKCl7cmV0dXJuIG99LHU9ZnVuY3Rpb24oKXt2YXIgdD1vO3JldHVybiBvPW51bGwsdH0scz1mdW5jdGlvbih0KXtyZXR1cm4hISh0JiZ0LmVtYmVkX21lc3NlbmdlciYmdC5lbWJlZF9tZXNzZW5nZXIudHJpbSgpKX19LDU3NDcxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse3U6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgcj1uKDY2ODU0KTtmdW5jdGlvbiBvKCl7dHJ5e3ZhciB0LGUsbixvPSgwLHIuJCkoKTtpZihudWxsIT1vJiZudWxsIT0odD1vLmludGVyY29tU2V0dGluZ3MpJiZ0Lm1lc3Nlbmdlcl9lbnZpcm9ubWVudClyZXR1cm4gby5pbnRlcmNvbVNldHRpbmdzLm1lc3Nlbmdlcl9lbnZpcm9ubWVudDtpZihudWxsPT1vfHwhby5sb2NhdGlvbnx8InN0cmluZyIhPXR5cGVvZihudWxsPT1vfHxudWxsPT0oZT1vLmxvY2F0aW9uKT92b2lkIDA6ZS5zZWFyY2gpKXJldHVybjt2YXIgaT1uZXcgVVJMU2VhcmNoUGFyYW1zKG51bGw9PW98fG51bGw9PShuPW8ubG9jYXRpb24pP3ZvaWQgMDpuLnNlYXJjaCk7cmV0dXJuKG51bGw9PWk/dm9pZCAwOmkuZ2V0KCJtZXNzZW5nZXJfZW52aXJvbm1lbnQiKSl8fHZvaWQgMH1jYXRjaCh0KXtyZXR1cm59fX0sMTE5NTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtpOmZ1bmN0aW9uKCl7cmV0dXJuIG99LHg6ZnVuY3Rpb24oKXtyZXR1cm4gaX19KTt2YXIgcj1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0sbj0iKD86IitPYmplY3Qua2V5cyh0KS5qb2luKCJ8IikrIikiLHI9UmVnRXhwKG4pLG89UmVnRXhwKG4sImciKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD8iIjoiIit0LHIudGVzdCh0KT90LnJlcGxhY2UobyxlKTp0fX0sbz1yKHsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiN4Mjc7IiwiYCI6IiYjeDYwOyJ9KSxpPXIoeyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIicsIiYjeDI3OyI6IiciLCImI3g2MDsiOiJgIiwiJiMzOTsiOiInIn0pfSw5MTk2NDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtkczpmdW5jdGlvbigpe3JldHVybiBpfSxyTjpmdW5jdGlvbigpe3JldHVybiBhfX0pO3ZhciByPW4oNDAyMzgpLG89ImludGVyY29tLXNuaXBwZXRfX2Zpbi1leHBlcmltZW50YWwtZGVtb19fa2V5IjtmdW5jdGlvbiBpKHQpe3ZvaWQgMD09PXQmJih0PXt9KSwoMCxyLnlKKShvLHQpfWZ1bmN0aW9uIGEoKXtyZXR1cm4oMCxyLnpqKSgpW29dfX0sNDQ4MzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtJRTpmdW5jdGlvbigpe3JldHVybiBhfSxVQTpmdW5jdGlvbigpe3JldHVybiBpfX0pO3ZhciByPW4oNDAyMzgpLG89ImludGVyY29tLXNuaXBwZXRfX3ByZXZpZXctcGVyc29uYWxpdHktc2V0dGluZ3NfX2luc3RhbmNlLWlkIjtmdW5jdGlvbiBpKHQpeygwLHIueUopKG8sdCl9ZnVuY3Rpb24gYSgpe3JldHVybigwLHIuemopKClbb119fSw4MzE1ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHskUjpmdW5jdGlvbigpe3JldHVybiBhfSx4RTpmdW5jdGlvbigpe3JldHVybiB1fX0pO3ZhciByPW4oNDAyMzgpO2Z1bmN0aW9uIG8oKXtyZXR1cm4gbz1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LG8uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBpPSJpbnRlcmNvbS1zbmlwcGV0X19maW4tcHJldmlldy1zZXR0aW5nc19faW5zdGFuY2UtaWQiO2Z1bmN0aW9uIGEodCl7dmFyIGU9byh7fSx1KCksdCk7KDAsci55SikoaSxlKX1mdW5jdGlvbiB1KCl7cmV0dXJuKDAsci56aikoKVtpXX19LDg4MjkxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtpZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuITE7aWYoMD09PXQubGVuZ3RoKXJldHVybiExO3ZhciBlPXQudHJpbSgpLnRvTG93ZXJDYXNlKCk7cmV0dXJuWy9ePCFkb2N0eXBlXHMraHRtbC9pLC9ePGh0bWxbXHM+XS9pLC9ePFw/eG1sW1xzXFNdKjxodG1sL2ksLzxoZWFkW1xzPl0vaSwvPGJvZHlbXHM+XS9pLC88bWV0YVtccz5dL2ldLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRlc3QoZSl9KSl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4iQnJvd3NlciBleHRlbnNpb24gaW50ZXJjZXB0ZWQgQVBJIHJlcXVlc3QgYW5kIHJldHVybmVkIEhUTUwgaW5zdGVhZCBvZiBKU09OLiBTbmlwcGV0OiAiK3Quc3Vic3RyaW5nKDAsMTAwKSsiLi4uIn1uLmQoZSx7TjpmdW5jdGlvbigpe3JldHVybiByfSxjOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSl9LDgxODM5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0ZmOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LFNEOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LGtuOmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSk7dmFyIHI9bigzNTIwNiksbz1bImltYWdlL2dpZiIsImltYWdlL2pwZWciLCJpbWFnZS9wbmciLCJpbWFnZS9ibXAiLCJpbWFnZS94LWljb24iXSxpPWZ1bmN0aW9uKHQpe3QmJmEodCkuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpfSxhPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxuKXt2YXIgcj1uZXcgSW1hZ2U7ci5vbmxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZShyKX0sci5vbmVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIG4obmV3IEVycm9yKCJGYWlsZWQgdG8gbG9hZCBpbWFnZSBmcm9tIFVSTDogIisodHx8InVua25vd24iKSkpfSxyLnNyYz10fSkpfSx1PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxuKXtpZihzKHQpJiYoMCxyLkkxKSgpKXt2YXIgbz1uZXcgRmlsZVJlYWRlcjtvLm9ubG9hZD1mdW5jdGlvbihyKXt2YXIgbyxpPW5ldyBJbWFnZTtpLm9ubG9hZD1mdW5jdGlvbigpe3JldHVybiBlKGkpfSxpLm9uZXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gbihuZXcgRXJyb3IoIkZhaWxlZCB0byBsb2FkIGltYWdlIHByZXZpZXcgZm9yIGZpbGU6ICIrKChudWxsPT10P3ZvaWQgMDp0Lm5hbWUpfHwidW5rbm93biIpKSl9LGkuc3JjPW51bGw9PShvPXIudGFyZ2V0KT92b2lkIDA6by5yZXN1bHR9LG8ub25lcnJvcj1mdW5jdGlvbigpe3JldHVybiBuKG5ldyBFcnJvcigiRmFpbGVkIHRvIHJlYWQgZmlsZSBhcyBkYXRhIFVSTDogIisoKG51bGw9PXQ/dm9pZCAwOnQubmFtZSl8fCJ1bmtub3duIikpKX0sby5yZWFkQXNEYXRhVVJMKHQpfWVsc2UgZSh2b2lkIDApfSkpfSxzPWZ1bmN0aW9uKHQpe3JldHVybiEhdCYmLTEhPT1vLmluZGV4T2YodC50eXBlLnRvTG93ZXJDYXNlKCkpfX0sNzg2NTM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7YjpmdW5jdGlvbigpe3JldHVybiBvfSxsOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIHI9ImpzLXNuaXBwZXQiLG89ZnVuY3Rpb24odCl7cmV0dXJuIHI9dH0saT1mdW5jdGlvbigpe3JldHVybiByfX0sMzE0MDE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7SDpmdW5jdGlvbigpe3JldHVybiBvfSxKOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIHI9IiIsbz1mdW5jdGlvbih0KXtyZXR1cm4gcj10fSxpPWZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSw2MTM2NzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtqOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4hKCF3aW5kb3cucGFyZW50fHwhd2luZG93LnBhcmVudC5pbnRlcmNvbVNldHRpbmdzfHwidHgycDEzMGMiIT09KG51bGw9PSh0PXdpbmRvdy5wYXJlbnQuaW50ZXJjb21TZXR0aW5ncyk/dm9pZCAwOnQuYXBwX2lkKSl9fSw5NTU2NTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtIOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LHQ6ZnVuY3Rpb24oKXtyZXR1cm4gaX19KTt2YXIgcj1uKDIyOTc5KSxvPSJpbnRlcmNvbS1zbmlwcGV0X19pbnRlcnNlY3Rpb24tbW9kZSIsaT1mdW5jdGlvbigpe3JldHVybiEhci5zLmdldChvKX0sYT1mdW5jdGlvbigpe3JldHVybiJzdXJ2ZXktcHJldmlldyI9PT1yLnMuZ2V0KG8pfHwic3VydmV5LWxvY2FsLXByZXZpZXciPT09ci5zLmdldChvKX19LDIxMTQxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0scih0KX1uLmQoZSx7UTpmdW5jdGlvbigpe3JldHVybiBvfX0pO3ZhciBvPWZ1bmN0aW9uKHQpe2lmKCJvYmplY3QiIT09cih0KXx8bnVsbD09PXQpcmV0dXJuITE7aWYoIltvYmplY3QgT2JqZWN0XSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkpcmV0dXJuITE7dmFyIGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO2lmKG51bGw9PT1lKXJldHVybiEwO3ZhciBuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJjb25zdHJ1Y3RvciIpJiZlLmNvbnN0cnVjdG9yO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXJldHVybiExO3ZhciBvPW4ucHJvdG90eXBlO2lmKCJvYmplY3QiIT09cihvKXx8bnVsbD09PW8pcmV0dXJuITE7aWYoIShuIGluc3RhbmNlb2YgbikpcmV0dXJuITE7dmFyIGk9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLGE9aS5jYWxsKE9iamVjdCk7cmV0dXJuIGkuY2FsbChuKT09PWF9fSw4NzY4MTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtqOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LHE6ZnVuY3Rpb24oKXtyZXR1cm4gYX19KTt2YXIgcj1uKDMyOTgpLG89ZnVuY3Rpb24odCxlKXtpZihlPjApe3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiAxPT09dD8oMCxyLlRsKSgibGF1bmNoZXJfbmV3X21lc3NhZ2Vfc2luZ3VsYXIiLHtjb3VudDp0LnRvU3RyaW5nKCl9KTooMCxyLlRsKSgibGF1bmNoZXJfbmV3X21lc3NhZ2VzX3BsdXJhbCIse2NvdW50OnQudG9TdHJpbmcoKX0pfShlKTtyZXR1cm4gdCsiLCAiK259cmV0dXJuIHR9LGk9ZnVuY3Rpb24odCxlKXt2YXIgbj10PygwLHIuVGwpKCJjbG9zZV9pbnRlcmNvbV9tZXNzZW5nZXIiKTooMCxyLlRsKSgib3Blbl9pbnRlcmNvbV9tZXNzZW5nZXIiKTtyZXR1cm4gdD9uOm8obixlKX0sYT1mdW5jdGlvbih0LGUpe3JldHVybiBvKHQsZSl9fSwzNTMxOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0scih0KX1mdW5jdGlvbiBvKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygc3RydWN0dXJlZENsb25lKXJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUodCk7aWYobnVsbD09PXR8fCJvYmplY3QiIT09cih0KSlyZXR1cm4gdDtpZih0IGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUodC5nZXRUaW1lKCkpO2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbyh0KX0pKTt2YXIgZT17fTtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09byh0W25dKSk7cmV0dXJuIGV9bi5kKGUse206ZnVuY3Rpb24oKXtyZXR1cm4gb319KX0sNDExNzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlLG4pe3ZhciByLG87dm9pZCAwPT09biYmKG49e30pO3ZhciBpLGEsdSxzPTAsYz1uLGw9Yy5sZWFkaW5nLGY9dm9pZCAwIT09bCYmbCxkPWMudHJhaWxpbmcscD12b2lkIDA9PT1kfHxkLGg9Yy5tYXhXYWl0O2Z1bmN0aW9uIHYoZSl7dmFyIG49aSxyPWE7cmV0dXJuIHM9ZSx1PXQuYXBwbHkocixuKX1mdW5jdGlvbiB5KHQpe3ZhciBuPXQtcyxyPWUtKHQtKG98fDApKTtyZXR1cm4gdm9pZCAwIT09aD9NYXRoLm1pbihyLGgtbik6cn1mdW5jdGlvbiBnKHQpe3ZhciBuPXQtKG98fDApO3JldHVybiB2b2lkIDA9PT1vfHxuPj1lfHxuPDB8fHZvaWQgMCE9PWgmJnQtcz49aH1mdW5jdGlvbiBtKCl7dmFyIHQ9RGF0ZS5ub3coKTtnKHQpP2IodCk6cj1zZXRUaW1lb3V0KG0seSh0KSl9ZnVuY3Rpb24gYih0KXtpZihyPXZvaWQgMCxwJiZpKXt2YXIgZT12KHQpO3JldHVybiBpPWE9dm9pZCAwLGV9cmV0dXJuIGk9YT12b2lkIDAsdX1mdW5jdGlvbiB3KCl7Zm9yKHZhciB0PURhdGUubm93KCksbj1nKHQpLGM9YXJndW1lbnRzLmxlbmd0aCxsPW5ldyBBcnJheShjKSxkPTA7ZDxjO2QrKylsW2RdPWFyZ3VtZW50c1tkXTtpZihpPWwsYT10aGlzLG4pe2lmKG89dCx2b2lkIDA9PT1yKXJldHVybiBmdW5jdGlvbih0KXtzPXQscj1zZXRUaW1lb3V0KG0sZSk7dmFyIG49Zj92KHQpOnU7cmV0dXJuIGYmJnZvaWQgMCE9PWgmJihpPWE9dm9pZCAwKSxufShvKTtpZih2b2lkIDAhPT1oKXJldHVybiBjbGVhclRpbWVvdXQocikscj1zZXRUaW1lb3V0KG0sZSksdihvKX1yZXR1cm4gdm9pZCAwPT09cj8obz10LHI9c2V0VGltZW91dChtLGUpKTp2b2lkIDA9PT1oJiZmJiYwIT09c3x8KG89dCxjbGVhclRpbWVvdXQocikscj1zZXRUaW1lb3V0KG0seSh0KSkpLHV9cmV0dXJuIHcuY2FuY2VsPWZ1bmN0aW9uKCl7dm9pZCAwIT09ciYmY2xlYXJUaW1lb3V0KHIpLHM9MCxpPW89YT1yPXZvaWQgMH0sdy5mbHVzaD1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1yP3U6YihEYXRlLm5vdygpKX0sdy5wZW5kaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXJ9LHd9bi5kKGUse3M6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KX0sNjY4Mzg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxyKHQpfW4uZChlLHtJOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7dmFyIG89ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fCgic3RyaW5nIj09dHlwZW9mIHR8fEFycmF5LmlzQXJyYXkodCk/MD09PXQubGVuZ3RoOnQgaW5zdGFuY2VvZiBNYXB8fHQgaW5zdGFuY2VvZiBTZXQ/MD09PXQuc2l6ZToib2JqZWN0IiE9PXIodCl8fDA9PT1PYmplY3Qua2V5cyh0KS5sZW5ndGgpfX0sOTI0MTc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSxuKXtpZihlJiYhQXJyYXkuaXNBcnJheShlKSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIGkoZSx2b2lkIDAhPT1uJiZuPHI/bjpyKX1yZXR1cm4gdChlLG4pfWZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGkodCl9KHQpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KHQpfHxmdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gaSh0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9pKHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gaSh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gYSh0LGUsbil7aWYodm9pZCAwPT09biYmKG49ImFzYyIpLCF0fHwwPT09dC5sZW5ndGgpcmV0dXJuW107Zm9yKHZhciBpPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV0sYT1BcnJheS5pc0FycmF5KG4pP3IobyxuKTppLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKTthLmxlbmd0aDxpLmxlbmd0aDspYS5wdXNoKCJhc2MiKTtyZXR1cm4gcihvLHQpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjxpLmxlbmd0aDtuKyspe3ZhciByPWlbbl0sbz1hW25dLHU9dm9pZCAwLHM9dm9pZCAwO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiByPyh1PXIodCkscz1yKGUpKToodT10W3JdLHM9ZVtyXSksbnVsbCE9dXx8bnVsbCE9cyl7aWYobnVsbD09dSlyZXR1cm4gMTtpZihudWxsPT1zKXJldHVybi0xO3ZhciBjPTA7aWYodTxzP2M9LTE6dT5zJiYoYz0xKSwwIT09YylyZXR1cm4iZGVzYyI9PT1vPy1jOmN9fXJldHVybiAwfSkpfW4uZChlLHtNOmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSl9LDUxMDA2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse246ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgcj1uKDQxMTcpO2Z1bmN0aW9uIG8odCxlLG4pe3ZvaWQgMD09PW4mJihuPXt9KTt2YXIgbz1uLGk9by5sZWFkaW5nLGE9dm9pZCAwPT09aXx8aSx1PW8udHJhaWxpbmcscz12b2lkIDA9PT11fHx1O3JldHVybigwLHIucykodCxlLHtsZWFkaW5nOmEsdHJhaWxpbmc6cyxtYXhXYWl0OmV9KX19LDg0OTkwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0LGUpe3ZhciBuPW5ldyBNYXA7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lKHQpOnRbZV07cmV0dXJuIW4uaGFzKHIpJiYobi5zZXQociwhMCksITApfSkpfW4uZChlLHtoOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSl9LDQ1NDk2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse1BKOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LEt6OmZ1bmN0aW9uKCl7cmV0dXJuIG19LGt4OmZ1bmN0aW9uKCl7cmV0dXJuIHZ9LFlJOmZ1bmN0aW9uKCl7cmV0dXJuIGJ9LFN2OmZ1bmN0aW9uKCl7cmV0dXJuIHl9fSk7dmFyIHI9bigxMzcwOSk7ZnVuY3Rpb24gbygpe3JldHVybiBvPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sby5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIGk9e2J1dHRvbjpmdW5jdGlvbih0KXtyZXR1cm4gdC5hY3Rpb24uaWQ/KHQuaWQ9dC5hY3Rpb24uaWQsZGVsZXRlIHQuYWN0aW9uLmlkLHQpOnR9LGlucHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmFjdGlvbiYmdC5hY3Rpb24uaWQ/KHQuaWQ9dC5hY3Rpb24uaWQsZGVsZXRlIHQuYWN0aW9uLmlkLHQpOnR9LGxpc3Q6ZnVuY3Rpb24odCl7dmFyIGU9dC5pdGVtcy5tYXAoKGZ1bmN0aW9uKHQpe2lmKHQuYWN0aW9uKXtpZighdC5hY3Rpb24uaWQpcmV0dXJuIHQ7dC5pZD10LmFjdGlvbi5pZCxkZWxldGUgdC5hY3Rpb24uaWR9cmV0dXJuIHR9KSk7cmV0dXJuIHQuaXRlbXM9ZSx0fX07ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdC5jb21wb25lbnRzP3QuY29tcG9uZW50cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1vKHt9LHQpO3JldHVybihpW3QudHlwZV18fGZ1bmN0aW9uKCl7fSkoZSksZX0odCl9KSk6W119dmFyIHU9big1Nzg4MCkscz1uKDM1MzEpO2Z1bmN0aW9uIGModCl7cmV0dXJuIGM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGModCl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gZih0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBmKHQsZSk7dmFyIG49e30udG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP2YodCxlKTp2b2lkIDB9fSh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBmKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn1mdW5jdGlvbiBkKCl7cmV0dXJuIGQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxkLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgcD1mdW5jdGlvbih0KXtyZXR1cm4gdD8oMCx1LkEpKHQudG9TdHJpbmcoKSk6IiJ9LGg9ZnVuY3Rpb24odCxlKXtzd2l0Y2godC50eXBlKXtjYXNlImJ1dHRvbiI6cmV0dXJuImJ1dHRvbi0iK3AodC5pZCk7Y2FzZSJ0ZXh0IjpyZXR1cm4idGV4dC0iK2UrIi0iK3AodC50ZXh0KTtjYXNlImlucHV0IjpyZXR1cm4iaW5wdXQtIitwKHQuaWQpO2Nhc2Uic3BhY2VyIjpyZXR1cm4ic3BhY2VyLSIrZTtjYXNlImRpdmlkZXIiOnJldHVybiJkaXZpZGVyLSIrZTtjYXNlImltYWdlIjpyZXR1cm4iaW1hZ2UtIitlKyItIitwKHQudXJsKTtjYXNlImxpc3QiOnJldHVybiJsaXN0LSIrdC5pdGVtcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBwKHQuaWQpfSkpLmpvaW4oIi0iKTtjYXNlImRyb3Bkb3duIjpyZXR1cm4iZHJvcGRvd24tIitwKHQuaWQpO2Nhc2Uic2luZ2xlLXNlbGVjdCI6cmV0dXJuInNpbmdsZS1zZWxlY3QtIitwKHQuaWQpO2RlZmF1bHQ6cmV0dXJuInVua25vd24tIitlfX0sdj1mdW5jdGlvbih0KXtyZXR1cm4gdC5zdGF0ZT97dXJpOnQudXJpLGNhbnZhczp7aWQ6IiIsY29udGVudDp0LnN0YXRlfX06dH0seT1mdW5jdGlvbih0KXt2YXIgZSxuLG89ZCh7fSx0KTtyZXR1cm4gby5jYW52YXMuY29udGVudCYmKG8uY2FudmFzLmNvbnRlbnQ9IjAuMSI9PT0obj0oMCxzLm0pKG8uY2FudmFzLmNvbnRlbnQpKS52ZXJzaW9uP246bi5jb21wb25lbnRzP3t2ZXJzaW9uOiIwLjEiLGNvbXBvbmVudHM6YShuKX06biksbnVsbCE9KGU9by5jYW52YXMuY29udGVudCkmJmUuY29tcG9uZW50cyYmKG8uY2FudmFzLmNvbnRlbnQuY29tcG9uZW50cz1vLmNhbnZhcy5jb250ZW50LmNvbXBvbmVudHMubWFwKHIuSykpLG99LGc9ZnVuY3Rpb24odCxlLG4pe3ZhciByPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpeyJsaXN0Ij09PXQudHlwZT9yLnB1c2guYXBwbHkocixmdW5jdGlvbih0LGUsbil7aWYoZSYmIUFycmF5LmlzQXJyYXkoZSkmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ZhciByPWUubGVuZ3RoO3JldHVybiBmKGUsdm9pZCAwIT09biYmbjxyP246cil9cmV0dXJuIHQoZSxuKX0obCx0Lml0ZW1zKSk6ci5wdXNoKHQpfSkpLHIuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHRbZV0mJighbnx8dFtlXT09PW4pfSkpfSxtPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4hIWcodCxlLG4pfSxiPWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1uJiYobj0hMCk7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZyh0LCJpZCIsZSl9KGUsdCksbz13KHIsZSk7aWYoIW8pcmV0dXJuIGU7aWYoIXJ8fCFyLnR5cGUpcmV0dXJuIGU7dmFyIGk9KDAscy5tKShlKSxhPW8ubWF0Y2goL1xbKFxkKylcXS9nKTtpZighYXx8MD09PWEubGVuZ3RoKXJldHVybiBlO2Zvcih2YXIgdT1pLGM9MDtjPGEubGVuZ3RoLTE7YysrKXt1PXVbcGFyc2VJbnQoYVtjXS5zbGljZSgxLC0xKSldLC0xIT09by5pbmRleE9mKCIuaXRlbXMiKSYmMD09PWMmJih1PXUuaXRlbXMpfXZhciBsPXVbcGFyc2VJbnQoYVthLmxlbmd0aC0xXS5zbGljZSgxLC0xKSldO3JldHVybiBsPygiYnV0dG9uIj09PXIudHlwZXx8Iml0ZW0iPT09ci50eXBlP2wubG9hZGluZz1uOiJpbnB1dCIhPT1yLnR5cGUmJiJkcm9wZG93biIhPT1yLnR5cGUmJiJzaW5nbGUtc2VsZWN0IiE9PXIudHlwZXx8KGwuc2F2ZVN0YXRlPW4/InNhdmluZyI6InVuc2F2ZWQiKSxpKTplfSx3PWZ1bmN0aW9uIHQoZSxuKXtmb3IodmFyIHIgaW4gbilpZihuLmhhc093blByb3BlcnR5KHIpKXtpZihlPT09bltyXSlyZXR1cm4iWyIrcisiXSI7aWYobltyXSYmIm9iamVjdCI9PT1jKG5bcl0pKXt2YXIgbz10KGUsbltyXSk7aWYobylyZXR1cm4iWyIrcisiXSIrb319fX0sMzQ2MTk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7Q0Q6ZnVuY3Rpb24oKXtyZXR1cm4gbX0sSks6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sT1Y6ZnVuY3Rpb24oKXtyZXR1cm4ga30sUUI6ZnVuY3Rpb24oKXtyZXR1cm4gSX0sVVc6ZnVuY3Rpb24oKXtyZXR1cm4gdn0sV2w6ZnVuY3Rpb24oKXtyZXR1cm4gU30sWHo6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sWkU6ZnVuY3Rpb24oKXtyZXR1cm4gQ30sX2s6ZnVuY3Rpb24oKXtyZXR1cm4gX30saDY6ZnVuY3Rpb24oKXtyZXR1cm4geX0saG46ZnVuY3Rpb24oKXtyZXR1cm4gd30saTA6ZnVuY3Rpb24oKXtyZXR1cm4gQX0scFU6ZnVuY3Rpb24oKXtyZXR1cm4gT30sczU6ZnVuY3Rpb24oKXtyZXR1cm4gcH0sdlE6ZnVuY3Rpb24oKXtyZXR1cm4gYn19KTt2YXIgcj1uKDM1MjA2KSxvPW4oNjY4MzgpLGk9bigzODk5KSxhPW4oNjk3NDQpLHU9ITEscz0hMSxjPSExLGw9bnVsbCxmPSExLGQ9ITEscD1mdW5jdGlvbih0KXtyZXR1cm4hIXQmJiEhdFswXSYmImF0dGFjaG1lbnRMaXN0Ij09PXRbMF0udHlwZX0saD1mdW5jdGlvbih0KXtpZih0KXJldHVybiB0LmlzQWN0aXZlPyJhY3RpdmUiOiJhd2F5In0sdj1mdW5jdGlvbih0KXtpZih0JiZ0Lmxhc3RBY3RpdmVBdCl7dmFyIGU9bmV3IERhdGU7cmV0dXJuIE1hdGgucm91bmQoKGUuZ2V0VGltZSgpLXQubGFzdEFjdGl2ZUF0LmdldFRpbWUoKSkvNmU0KX19LHk9ZnVuY3Rpb24odCl7cmV0dXJuKDAsby5JKSh0KX0sZz1mdW5jdGlvbih0KXt1PXR9LG09ZnVuY3Rpb24oKXtyZXR1cm4gdX0sYj1mdW5jdGlvbih0KXtzPXR9LHc9ZnVuY3Rpb24oKXtyZXR1cm4gc307ZnVuY3Rpb24gXyh0LGUpe3RyeXt2YXIgbixyPUUoKSxvPXQucGFydHNbdC5wYXJ0cy5sZW5ndGgtMV0sdT1udWxsPT1vfHxudWxsPT0obj1vLmF1dGhvcik/dm9pZCAwOm4uaXNCb3Q7aWYocnx8IXV8fCFlKXJldHVybjsoMCxhLnNxKSgidGltZVRvRmlyc3RCb3RSZXNwb25zZSIse2R1cmF0aW9uX21zOkRhdGUubm93KCktTnVtYmVyKGUpfSkseCghMCl9Y2F0Y2godCl7KDAsaS5qUCkoIkZhaWx1cmUgd2hpbGUgcmVjb3JkaW5nIHRyaWdnZXIgdHJhbnNpdGlvbiBkdXJhdGlvbiAiK3QpfX1mdW5jdGlvbiBTKHQsZSxuKXt0cnl7dmFyIHIsbz1kLHU9dC5wYXJ0c1t0LnBhcnRzLmxlbmd0aC0xXSxzPW51bGw9PXV8fG51bGw9PShyPXUuYXV0aG9yKT92b2lkIDA6ci5pc0JvdCxjPU51bWJlcihlKSxsPU51bWJlcihuKTtpZihvfHwhc3x8IWV8fE1hdGguYWJzKGwtYyk+NTApcmV0dXJuIHZvaWQoZD0hMCk7KDAsYS5zcSkoImR1cmF0aW9uRnJvbUNyZWF0ZUNvbnZlcnNhdGlvblRvT3BlcmF0b3JSZXBseSIse2R1cmF0aW9uX21zOkRhdGUubm93KCktY30pLGQ9ITB9Y2F0Y2godCl7KDAsaS5qUCkoIkZhaWx1cmUgd2hpbGUgcmVjb3JkaW5nIHRyaWdnZXIgdHJhbnNpdGlvbiBkdXJhdGlvbiAiK3QpfX12YXIgeD1mdW5jdGlvbih0KXtmPXR9LEU9ZnVuY3Rpb24oKXtyZXR1cm4gZn0sQz1mdW5jdGlvbih0KXtjPXR9LE89ZnVuY3Rpb24oKXtyZXR1cm4gY30sQT1mdW5jdGlvbih0KXtsPXR9LEk9ZnVuY3Rpb24oKXtyZXR1cm4gbH0saz1mdW5jdGlvbih0KXtyZXR1cm4hIXQmJnIuQXkubWVzc2VuZ2VySXNWaXNpYmxlKCl9fSwyMTQ5ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtCVzpmdW5jdGlvbigpe3JldHVybiB1fSxJUzpmdW5jdGlvbigpe3JldHVybiBpfSxyeDpmdW5jdGlvbigpe3JldHVybiBhfX0pO3ZhciByPW4oNjcxMjUpLG89bigzNjI2NiksaT1mdW5jdGlvbigpe3ZhciB0PSgwLG8ubUMpKCk7cmV0dXJuIHQuaW5uZXJXaWR0aDw9ci5JfHx0LmlubmVyV2lkdGg8PTIqci5JJiZ0LmlubmVySGVpZ2h0PD1yLkl9LGE9ZnVuY3Rpb24oKXt2YXIgdD0oMCxvLm1DKSgpO3JldHVybiBpKCkmJnQuaW5uZXJXaWR0aD50LmlubmVySGVpZ2h0fSx1PWZ1bmN0aW9uKCl7dHJ5e2koKSYmIXdpbmRvdy5wYXJlbnQubmF2aWdhdG9yLnN0YW5kYWxvbmUmJndpbmRvdy5wYXJlbnQuc2Nyb2xsVG8oMCwwKX1jYXRjaCh0KXt9fX0sNzczNjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtBNzpmdW5jdGlvbigpe3JldHVybiBsfSxQNTpmdW5jdGlvbigpe3JldHVybiBmfSxhVDpmdW5jdGlvbigpe3JldHVybiB1fSxoSzpmdW5jdGlvbigpe3JldHVybiBhfSxpaTpmdW5jdGlvbigpe3JldHVybiBvfSxrNDpmdW5jdGlvbigpe3JldHVybiBzfSx4TTpmdW5jdGlvbigpe3JldHVybiBjfX0pO3ZhciByPW4oMzg4ODMpO2Z1bmN0aW9uIG8odCl7cmV0dXJuInF1aWNrX3JlcGx5Ij09PXQucGFydFR5cGV9dmFyIGk9bmV3IFNldChbInBvc3QiLCJub3RlIiwibGluayIsImZpblRob3VnaHQiLCJnZW5lcmF0ZWRQbGFuIiwiY2Fyb3VzZWwiLCJjb21wb3NpdGUiLCJjb21wb3NhYmxlU2VhcmNoIiwiY2FsZW5kYXJDYXJkIiwiY29udmVyc2F0aW9uUmF0aW5nIiwiaGFuZG92ZXJDdGEiLCJoYW5kb3ZlckNvbnRleHQiLCJub3RpZmljYXRpb25DaGFubmVscyIsImF0dHJpYnV0ZUNvbGxlY3RvciIsInBvaW50ZXIiLCJ0aWNrZXRDYXJkIiwidGlja2V0U3RhdHVzVXBkYXRlIiwibWVyZ2VkUHJpbWFyeUNvbnZlcnNhdGlvbiIsImdlbmVyaWNIYW5kb2ZmIl0pLGE9ZnVuY3Rpb24odCl7cmV0dXJuISgwLHIueEgpKHQucGFydFR5cGUpJiYoIXQubWVzc2FnZVR5cGV8fCFpLmhhcyh0Lm1lc3NhZ2VUeXBlKSl9O2Z1bmN0aW9uIHUodCl7cmV0dXJuImF0dHJpYnV0ZV9jb2xsZWN0b3IiPT09dC5wYXJ0VHlwZX12YXIgcz1mdW5jdGlvbih0KXtyZXR1cm4idGlja2V0U3RhdHVzVXBkYXRlIj09PXQubWVzc2FnZVR5cGV9LGM9ZnVuY3Rpb24odCl7cmV0dXJuImNhbGVuZGFyQ2FyZCI9PT10Lm1lc3NhZ2VUeXBlfSxsPWZ1bmN0aW9uKHQpe3JldHVybiJoYW5kb3ZlckN0YSI9PT10Lm1lc3NhZ2VUeXBlfSxmPWZ1bmN0aW9uKHQpe3JldHVybiJoYW5kb3ZlckNvbnRleHQiPT09dC5tZXNzYWdlVHlwZX19LDgwMjc4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0UyOmZ1bmN0aW9uKCl7cmV0dXJuIHB9LEozOmZ1bmN0aW9uKCl7cmV0dXJuIHZ9LGZuOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LHhJOmZ1bmN0aW9uKCl7cmV0dXJuIGh9fSk7dmFyIHI9L1xzKy9nLG89L14oMDApfChcKykvaSxpPS9bXihcZHxcc3xcK3xcLnxcKHxcKXxcLSldL2csYT0vXEQvZyx1PSJ0aGF0X251bWJlcl9uZWVkc19hX3ByZWZpeCIscz0idGhhdF9udW1iZXJfZG9lc250X2xvb2tfcXVpdGVfcmlnaHQiLGM9InRoYXRfY291bnRyeV9jb2RlX2RvZXNudF9sb29rX3F1aXRlX3JpZ2h0IixsPSJ0aGF0X251bWJlcl9pc19taXNzaW5nX2FfZmV3X2RpZ2l0cyIsZj0idGhhdF9udW1iZXJfaGFzX3Rvb19tYW55X2RpZ2l0cyIsZD1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09cCh0KX0scD1mdW5jdGlvbih0KXtpZigheSh0KSlyZXR1cm4gdTt2YXIgZT10LnJlcGxhY2UobywiIik7aWYoZS5tYXRjaChpKSlyZXR1cm4gcztpZigoZT1lLnJlcGxhY2UoYSwiIikpLmxlbmd0aD4xNSlyZXR1cm4gZjt2YXIgbj12KGUpO3JldHVybiBuJiYoZT1lLnN1YnN0cmluZyhuLmRpYWxDb2RlLmxlbmd0aCkpLGUubGVuZ3RoPDY/bDpuP3ZvaWQgMDpjfSxoPWZ1bmN0aW9uKHQpe3ZhciBlPVNbdF07cmV0dXJuIGU/IisiK2UuZGlhbENvZGU6IisxIn0sdj1mdW5jdGlvbih0KXt2YXIgZT1nKHQpO2lmKCEoZS5sZW5ndGg8NCkpe3ZhciBuPW0oZSk7cmV0dXJuIF8obil9fSx5PWZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hdGNoKG8pfSxnPWZ1bmN0aW9uKHQpe3ZhciBlPXQucmVwbGFjZShyLCIiKTtyZXR1cm4oZT0oZT1lLnJlcGxhY2UobywiIikpLnJlcGxhY2UoaSwiIikpLnNsaWNlKDAsNCl9LG09ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49T2JqZWN0LmtleXMoUykscj0wO3I8PW4ubGVuZ3RoLTE7cisrKXt2YXIgbz1iKG5bcl0pLGk9dyhvKTtpZihpLmluZGV4T2YodCk+LTEpe2UucHVzaChvKTticmVha31pLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiB0LnN0YXJ0c1dpdGgoZSl9KSkmJmUucHVzaChvKX1yZXR1cm4gZX0sYj1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihTW3RdLHtjb2RlOnR9KX0sdz1mdW5jdGlvbih0KXt2YXIgZT10LmRpYWxDb2RlLG49dC5hcmVhQ29kZXM7cmV0dXJuIG4/bi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiIiK2UrdH0pKTpbZV19LF89ZnVuY3Rpb24odCl7aWYoMT09PXQubGVuZ3RoKXJldHVybiB0WzBdO2lmKHQubGVuZ3RoPjEmJjE9PT1uZXcgU2V0KHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kaWFsQ29kZX0pKSkuc2l6ZSlyZXR1cm4gdC5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gMD09PXQucHJpb3JpdHl9KSl9LFM9e2FmOntkaWFsQ29kZToiOTMiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGFsOntkaWFsQ29kZToiMzU1IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxkejp7ZGlhbENvZGU6IjIxMyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sYXM6e2RpYWxDb2RlOiIxNjg0IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxhZDp7ZGlhbENvZGU6IjM3NiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sYW86e2RpYWxDb2RlOiIyNDQiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGFpOntkaWFsQ29kZToiMTI2NCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sYWc6e2RpYWxDb2RlOiIxMjY4IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxhcjp7ZGlhbENvZGU6IjU0IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxhbTp7ZGlhbENvZGU6IjM3NCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sYXc6e2RpYWxDb2RlOiIyOTciLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGF1OntkaWFsQ29kZToiNjEiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGF0OntkaWFsQ29kZToiNDMiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGF6OntkaWFsQ29kZToiOTk0IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxiczp7ZGlhbENvZGU6IjEyNDIiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGJoOntkaWFsQ29kZToiOTczIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxiZDp7ZGlhbENvZGU6Ijg4MCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sYmI6e2RpYWxDb2RlOiIxMjQ2IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxieTp7ZGlhbENvZGU6IjM3NSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sYmU6e2RpYWxDb2RlOiIzMiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sYno6e2RpYWxDb2RlOiI1MDEiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGJqOntkaWFsQ29kZToiMjI5IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxibTp7ZGlhbENvZGU6IjE0NDEiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGJ0OntkaWFsQ29kZToiOTc1IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxibzp7ZGlhbENvZGU6IjU5MSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sYmE6e2RpYWxDb2RlOiIzODciLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGJ3OntkaWFsQ29kZToiMjY3IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxicjp7ZGlhbENvZGU6IjU1IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxpbzp7ZGlhbENvZGU6IjI0NiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sdmc6e2RpYWxDb2RlOiIxMjg0IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxibjp7ZGlhbENvZGU6IjY3MyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sYmc6e2RpYWxDb2RlOiIzNTkiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGJmOntkaWFsQ29kZToiMjI2IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxiaTp7ZGlhbENvZGU6IjI1NyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sa2g6e2RpYWxDb2RlOiI4NTUiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGNtOntkaWFsQ29kZToiMjM3IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxjYTp7ZGlhbENvZGU6IjEiLGFyZWFDb2RlczpbIjIwNCIsIjIyNiIsIjIzNiIsIjI0OSIsIjI1MCIsIjI4OSIsIjMwNiIsIjM0MyIsIjM2NSIsIjM4NyIsIjQwMyIsIjQxNiIsIjQxOCIsIjQzMSIsIjQzNyIsIjQzOCIsIjQ1MCIsIjUwNiIsIjUxNCIsIjUxOSIsIjU0OCIsIjU3OSIsIjU4MSIsIjU4NyIsIjYwNCIsIjYxMyIsIjYzOSIsIjY0NyIsIjY3MiIsIjcwNSIsIjcwOSIsIjc0MiIsIjc3OCIsIjc4MCIsIjc4MiIsIjgwNyIsIjgxOSIsIjgyNSIsIjg2NyIsIjg3MyIsIjkwMiIsIjkwNSJdLHByaW9yaXR5OjF9LGN2OntkaWFsQ29kZToiMjM4IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxicTp7ZGlhbENvZGU6IjU5OSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MX0sa3k6e2RpYWxDb2RlOiIxMzQ1IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxjZjp7ZGlhbENvZGU6IjIzNiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sdGQ6e2RpYWxDb2RlOiIyMzUiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGNsOntkaWFsQ29kZToiNTYiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGNuOntkaWFsQ29kZToiODYiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGN4OntkaWFsQ29kZToiNjEiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjJ9LGNjOntkaWFsQ29kZToiNjEiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjF9LGNvOntkaWFsQ29kZToiNTciLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGttOntkaWFsQ29kZToiMjY5IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxjZDp7ZGlhbENvZGU6IjI0MyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sY2c6e2RpYWxDb2RlOiIyNDIiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGNrOntkaWFsQ29kZToiNjgyIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxjcjp7ZGlhbENvZGU6IjUwNiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sY2k6e2RpYWxDb2RlOiIyMjUiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGhyOntkaWFsQ29kZToiMzg1IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxjdTp7ZGlhbENvZGU6IjUzIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxjdzp7ZGlhbENvZGU6IjU5OSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sY3k6e2RpYWxDb2RlOiIzNTciLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGN6OntkaWFsQ29kZToiNDIwIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxkazp7ZGlhbENvZGU6IjQ1IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxkajp7ZGlhbENvZGU6IjI1MyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sZG06e2RpYWxDb2RlOiIxNzY3IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxkbzp7ZGlhbENvZGU6IjEiLGFyZWFDb2RlczpbIjgwOSIsIjgyOSIsIjg0OSJdLHByaW9yaXR5OjJ9LGVjOntkaWFsQ29kZToiNTkzIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxlZzp7ZGlhbENvZGU6IjIwIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxzdjp7ZGlhbENvZGU6IjUwMyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sZ3E6e2RpYWxDb2RlOiIyNDAiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGVyOntkaWFsQ29kZToiMjkxIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxlZTp7ZGlhbENvZGU6IjM3MiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sZXQ6e2RpYWxDb2RlOiIyNTEiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGZrOntkaWFsQ29kZToiNTAwIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxmbzp7ZGlhbENvZGU6IjI5OCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sZmo6e2RpYWxDb2RlOiI2NzkiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGZpOntkaWFsQ29kZToiMzU4IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxmcjp7ZGlhbENvZGU6IjMzIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxnZjp7ZGlhbENvZGU6IjU5NCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0scGY6e2RpYWxDb2RlOiI2ODkiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGdhOntkaWFsQ29kZToiMjQxIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxnbTp7ZGlhbENvZGU6IjIyMCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sZ2U6e2RpYWxDb2RlOiI5OTUiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGRlOntkaWFsQ29kZToiNDkiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGdoOntkaWFsQ29kZToiMjMzIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxnaTp7ZGlhbENvZGU6IjM1MCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sZ3I6e2RpYWxDb2RlOiIzMCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sZ2w6e2RpYWxDb2RlOiIyOTkiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGdkOntkaWFsQ29kZToiMTQ3MyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sZ3A6e2RpYWxDb2RlOiI1OTAiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGd1OntkaWFsQ29kZToiMTY3MSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sZ3Q6e2RpYWxDb2RlOiI1MDIiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGdnOntkaWFsQ29kZToiNDQiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjF9LGduOntkaWFsQ29kZToiMjI0IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxndzp7ZGlhbENvZGU6IjI0NSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sZ3k6e2RpYWxDb2RlOiI1OTIiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGh0OntkaWFsQ29kZToiNTA5IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxobjp7ZGlhbENvZGU6IjUwNCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0saGs6e2RpYWxDb2RlOiI4NTIiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGh1OntkaWFsQ29kZToiMzYiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGlzOntkaWFsQ29kZToiMzU0IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxpbjp7ZGlhbENvZGU6IjkxIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxpZDp7ZGlhbENvZGU6IjYyIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxpcjp7ZGlhbENvZGU6Ijk4IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxpcTp7ZGlhbENvZGU6Ijk2NCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0saWU6e2RpYWxDb2RlOiIzNTMiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGltOntkaWFsQ29kZToiNDQiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjJ9LGlsOntkaWFsQ29kZToiOTcyIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxpdDp7ZGlhbENvZGU6IjM5IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxqbTp7ZGlhbENvZGU6IjE4NzYiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGpwOntkaWFsQ29kZToiODEiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGplOntkaWFsQ29kZToiNDQiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjN9LGpvOntkaWFsQ29kZToiOTYyIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxrejp7ZGlhbENvZGU6IjciLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjF9LGtlOntkaWFsQ29kZToiMjU0IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxraTp7ZGlhbENvZGU6IjY4NiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0seGs6e2RpYWxDb2RlOiIzODMiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGt3OntkaWFsQ29kZToiOTY1IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxrZzp7ZGlhbENvZGU6Ijk5NiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbGE6e2RpYWxDb2RlOiI4NTYiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGx2OntkaWFsQ29kZToiMzcxIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxsYjp7ZGlhbENvZGU6Ijk2MSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbHM6e2RpYWxDb2RlOiIyNjYiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGxyOntkaWFsQ29kZToiMjMxIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxseTp7ZGlhbENvZGU6IjIxOCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbGk6e2RpYWxDb2RlOiI0MjMiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGx0OntkaWFsQ29kZToiMzcwIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxsdTp7ZGlhbENvZGU6IjM1MiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbW86e2RpYWxDb2RlOiI4NTMiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LG1rOntkaWFsQ29kZToiMzg5IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxtZzp7ZGlhbENvZGU6IjI2MSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbXc6e2RpYWxDb2RlOiIyNjUiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LG15OntkaWFsQ29kZToiNjAiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LG12OntkaWFsQ29kZToiOTYwIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxtbDp7ZGlhbENvZGU6IjIyMyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbXQ6e2RpYWxDb2RlOiIzNTYiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LG1oOntkaWFsQ29kZToiNjkyIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxtcTp7ZGlhbENvZGU6IjU5NiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbXI6e2RpYWxDb2RlOiIyMjIiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LG11OntkaWFsQ29kZToiMjMwIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSx5dDp7ZGlhbENvZGU6IjI2MiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MX0sbXg6e2RpYWxDb2RlOiI1MiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sZm06e2RpYWxDb2RlOiI2OTEiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LG1kOntkaWFsQ29kZToiMzczIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxtYzp7ZGlhbENvZGU6IjM3NyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbW46e2RpYWxDb2RlOiI5NzYiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LG1lOntkaWFsQ29kZToiMzgyIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxtczp7ZGlhbENvZGU6IjE2NjQiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LG1hOntkaWFsQ29kZToiMjEyIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxtejp7ZGlhbENvZGU6IjI1OCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbW06e2RpYWxDb2RlOiI5NSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbmE6e2RpYWxDb2RlOiIyNjQiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LG5yOntkaWFsQ29kZToiNjc0IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxucDp7ZGlhbENvZGU6Ijk3NyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbmw6e2RpYWxDb2RlOiIzMSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbmM6e2RpYWxDb2RlOiI2ODciLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LG56OntkaWFsQ29kZToiNjQiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LG5pOntkaWFsQ29kZToiNTA1IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxuZTp7ZGlhbENvZGU6IjIyNyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbmc6e2RpYWxDb2RlOiIyMzQiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LG51OntkaWFsQ29kZToiNjgzIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxuZjp7ZGlhbENvZGU6IjY3MiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sa3A6e2RpYWxDb2RlOiI4NTAiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LG1wOntkaWFsQ29kZToiMTY3MCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbm86e2RpYWxDb2RlOiI0NyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sb206e2RpYWxDb2RlOiI5NjgiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHBrOntkaWFsQ29kZToiOTIiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHB3OntkaWFsQ29kZToiNjgwIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxwczp7ZGlhbENvZGU6Ijk3MCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0scGE6e2RpYWxDb2RlOiI1MDciLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHBnOntkaWFsQ29kZToiNjc1IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxweTp7ZGlhbENvZGU6IjU5NSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0scGU6e2RpYWxDb2RlOiI1MSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0scGg6e2RpYWxDb2RlOiI2MyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0scGw6e2RpYWxDb2RlOiI0OCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0scHQ6e2RpYWxDb2RlOiIzNTEiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHByOntkaWFsQ29kZToiMSIsYXJlYUNvZGVzOlsiNzg3IiwiOTM5Il0scHJpb3JpdHk6M30scWE6e2RpYWxDb2RlOiI5NzQiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHJlOntkaWFsQ29kZToiMjYyIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxybzp7ZGlhbENvZGU6IjQwIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxydTp7ZGlhbENvZGU6IjciLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHJ3OntkaWFsQ29kZToiMjUwIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxibDp7ZGlhbENvZGU6IjU5MCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MX0sc2g6e2RpYWxDb2RlOiIyOTAiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGtuOntkaWFsQ29kZToiMTg2OSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbGM6e2RpYWxDb2RlOiIxNzU4IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxtZjp7ZGlhbENvZGU6IjU5MCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6Mn0scG06e2RpYWxDb2RlOiI1MDgiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHZjOntkaWFsQ29kZToiMTc4NCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sd3M6e2RpYWxDb2RlOiI2ODUiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHNtOntkaWFsQ29kZToiMzc4IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxzdDp7ZGlhbENvZGU6IjIzOSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sc2E6e2RpYWxDb2RlOiI5NjYiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHNuOntkaWFsQ29kZToiMjIxIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxyczp7ZGlhbENvZGU6IjM4MSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sc2M6e2RpYWxDb2RlOiIyNDgiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHNsOntkaWFsQ29kZToiMjMyIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxzZzp7ZGlhbENvZGU6IjY1IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxzeDp7ZGlhbENvZGU6IjE3MjEiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHNrOntkaWFsQ29kZToiNDIxIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxzaTp7ZGlhbENvZGU6IjM4NiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sc2I6e2RpYWxDb2RlOiI2NzciLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHNvOntkaWFsQ29kZToiMjUyIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSx6YTp7ZGlhbENvZGU6IjI3IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxrcjp7ZGlhbENvZGU6IjgyIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxzczp7ZGlhbENvZGU6IjIxMSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sZXM6e2RpYWxDb2RlOiIzNCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sbGs6e2RpYWxDb2RlOiI5NCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sc2Q6e2RpYWxDb2RlOiIyNDkiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHNyOntkaWFsQ29kZToiNTk3IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxzajp7ZGlhbENvZGU6IjQ3IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eToxfSxzejp7ZGlhbENvZGU6IjI2OCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sc2U6e2RpYWxDb2RlOiI0NiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sY2g6e2RpYWxDb2RlOiI0MSIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sc3k6e2RpYWxDb2RlOiI5NjMiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHR3OntkaWFsQ29kZToiODg2IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSx0ajp7ZGlhbENvZGU6Ijk5MiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sdHo6e2RpYWxDb2RlOiIyNTUiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHRoOntkaWFsQ29kZToiNjYiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHRsOntkaWFsQ29kZToiNjcwIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSx0Zzp7ZGlhbENvZGU6IjIyOCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sdGs6e2RpYWxDb2RlOiI2OTAiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHRvOntkaWFsQ29kZToiNjc2IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSx0dDp7ZGlhbENvZGU6IjE4NjgiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHRuOntkaWFsQ29kZToiMjE2IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSx0cjp7ZGlhbENvZGU6IjkwIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSx0bTp7ZGlhbENvZGU6Ijk5MyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sdGM6e2RpYWxDb2RlOiIxNjQ5IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSx0djp7ZGlhbENvZGU6IjY4OCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sdmk6e2RpYWxDb2RlOiIxMzQwIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSx1Zzp7ZGlhbENvZGU6IjI1NiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sdWE6e2RpYWxDb2RlOiIzODAiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LGFlOntkaWFsQ29kZToiOTcxIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxnYjp7ZGlhbENvZGU6IjQ0IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSx1czp7ZGlhbENvZGU6IjEiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHV5OntkaWFsQ29kZToiNTk4IixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSx1ejp7ZGlhbENvZGU6Ijk5OCIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sdnU6e2RpYWxDb2RlOiI2NzgiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHZhOntkaWFsQ29kZToiMzkiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjF9LHZlOntkaWFsQ29kZToiNTgiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHZuOntkaWFsQ29kZToiODQiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHdmOntkaWFsQ29kZToiNjgxIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSxlaDp7ZGlhbENvZGU6IjIxMiIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MX0seWU6e2RpYWxDb2RlOiI5NjciLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjB9LHptOntkaWFsQ29kZToiMjYwIixhcmVhQ29kZXM6bnVsbCxwcmlvcml0eTowfSx6dzp7ZGlhbENvZGU6IjI2MyIsYXJlYUNvZGVzOm51bGwscHJpb3JpdHk6MH0sYXg6e2RpYWxDb2RlOiIzNTgiLGFyZWFDb2RlczpudWxsLHByaW9yaXR5OjF9fX0sNjI5NDg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7WjpmdW5jdGlvbigpe3JldHVybiBhfSxsOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIHI9big0MDIzOCksbz0iaW50ZXJjb20tc25pcHBldF9fcHJldmlldy1tb2RlLWN1c3RvbWl6YXRpb25fX2luc3RhbmNlLWlkIjtmdW5jdGlvbiBpKHQpeygwLHIueUopKG8sdCl9ZnVuY3Rpb24gYSgpe3JldHVybigwLHIuemopKClbb118fHt9fX0sODQxOTA6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7SVI6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sVUY6ZnVuY3Rpb24oKXtyZXR1cm4gaX19KTt2YXIgcj1uKDQwMjM4KSxvPSJpbnRlcmNvbS1zbmlwcGV0X19wcmV2aWV3LXNldHRpbmdzX19pbnN0YW5jZS1pZCI7ZnVuY3Rpb24gaSh0KXsoMCxyLnlKKShvLHQpfWZ1bmN0aW9uIGEoKXtyZXR1cm4oMCxyLnpqKSgpW29dfX0sMTI0NTU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7JDpmdW5jdGlvbigpe3JldHVybiBzfSxaOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9fSk7dmFyIHI9big2OTc0NCksbz1uKDMzMDQ4KTtmdW5jdGlvbiBpKHQpe3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxpKHQpfWZ1bmN0aW9uIGEoKXthPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciB0LGU9e30sbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLG4pe3RbZV09bi52YWx1ZX0sdT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxzPXUuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixjPXUuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsbD11LnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gZih0LGUsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtmKHt9LCIiKX1jYXRjaCh0KXtmPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1ufX1mdW5jdGlvbiBkKHQsZSxuLHIpe3ZhciBpPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgYj9lOmIsYT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBqKHJ8fFtdKTtyZXR1cm4gbyhhLCJfaW52b2tlIix7dmFsdWU6SSh0LG4sdSl9KSxhfWZ1bmN0aW9uIHAodCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX1lLndyYXA9ZDt2YXIgaD0ic3VzcGVuZGVkU3RhcnQiLHY9InN1c3BlbmRlZFlpZWxkIix5PSJleGVjdXRpbmciLGc9ImNvbXBsZXRlZCIsbT17fTtmdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIHcoKXt9ZnVuY3Rpb24gXygpe312YXIgUz17fTtmKFMscywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgeD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsRT14JiZ4KHgoUChbXSkpKTtFJiZFIT09biYmci5jYWxsKEUscykmJihTPUUpO3ZhciBDPV8ucHJvdG90eXBlPWIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoUyk7ZnVuY3Rpb24gTyh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2YodCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQSh0LGUpe2Z1bmN0aW9uIG4obyxhLHUscyl7dmFyIGM9cCh0W29dLHQsYSk7aWYoInRocm93IiE9PWMudHlwZSl7dmFyIGw9Yy5hcmcsZj1sLnZhbHVlO3JldHVybiBmJiYib2JqZWN0Ij09aShmKSYmci5jYWxsKGYsIl9fYXdhaXQiKT9lLnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LHUscyl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsdSxzKX0pKTplLnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24odCl7bC52YWx1ZT10LHUobCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LHUscyl9KSl9cyhjLmFyZyl9dmFyIGE7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGE9YT9hLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gSShlLG4scil7dmFyIG89aDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09eSl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT1nKXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1rKHUscik7aWYocyl7aWYocz09PW0pY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09aCl0aHJvdyBvPWcsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPXk7dmFyIGM9cChlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP2c6dixjLmFyZz09PW0pY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz1nLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gayhlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsayhlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSxtO3ZhciBpPXAobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCxtO3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCxtKTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLG0pfWZ1bmN0aW9uIEwodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gVCh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gaih0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEwsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbc107aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsYT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGEubmV4dD1hfX10aHJvdyBuZXcgVHlwZUVycm9yKGkoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gdy5wcm90b3R5cGU9XyxvKEMsImNvbnN0cnVjdG9yIix7dmFsdWU6Xyxjb25maWd1cmFibGU6ITB9KSxvKF8sImNvbnN0cnVjdG9yIix7dmFsdWU6dyxjb25maWd1cmFibGU6ITB9KSx3LmRpc3BsYXlOYW1lPWYoXyxsLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09d3x8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsXyk6KHQuX19wcm90b19fPV8sZih0LGwsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQyksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sTyhBLnByb3RvdHlwZSksZihBLnByb3RvdHlwZSxjLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1BLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQShkKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LE8oQyksZihDLGwsIkdlbmVyYXRvciIpLGYoQyxzLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGYoQywidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1QLGoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpqLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChUKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsbSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSxtfSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLFQobiksbX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztUKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpQKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCksbX19LGV9ZnVuY3Rpb24gdSh0LGUsbixyLG8saSxhKXt0cnl7dmFyIHU9dFtpXShhKSxzPXUudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbih0KX11LmRvbmU/ZShzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIHModCxlLG4scil7cmV0dXJuIGMobCh0LGUsbixyKSl9dmFyIGM9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkobiksbz0wO288bjtvKyspcltvXT1hcmd1bWVudHNbb107dmFyIGk9ZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh2b2lkIDAscil9O3JldHVybiBlPVByb21pc2UucmVzb2x2ZShlKS50aGVuKGksaSl9fSxsPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciBhPTAsdT0wO3JldHVybiBmdW5jdGlvbigpe3ZhciBzPW8uQXkubm93KCk7cmV0dXJuIHMtdT49biYmKGE9MCx1PXMpLCsrYTw9ZT90LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpOigoMCxyLm9TKSgicmF0ZV9saW1pdGluZy4iK2kpLCgwLHIuc3EpKCJyYXRlX2xpbWl0X2NoZWNrXyIraSx7cmF0ZV9saW1pdGVkOiEwLHJhdGVfbGltaXRfY291bnQ6bn0sITApLFByb21pc2UucmVqZWN0KCJyYXRlX2xpbWl0ZWRfdXBkYXRlIikpfX07ZnVuY3Rpb24gZih0LGUpe3JldHVybiBkLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBkKCl7dmFyIHQ7cmV0dXJuIHQ9YSgpLm1hcmsoKGZ1bmN0aW9uIHQoZSxuKXt2YXIgcixvLGksdSxzLGMsbCxmLGQscCxoLHYseSxnLG0sYix3O3JldHVybiBhKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dm9pZCAwPT09biYmKG49e30pLG89KHI9bikubWF4UmV0cmllcyxpPXZvaWQgMD09PW8/MzpvLHU9ci5pbml0aWFsRGVsYXlNcyxzPXZvaWQgMD09PXU/NTAwOnUsYz1yLm1heERlbGF5TXMsbD12b2lkIDA9PT1jPzNlNDpjLGY9ci5iYWNrb2ZmTXVsdGlwbGllcixkPXZvaWQgMD09PWY/MjpmLHA9ci5tYXhUaW1lb3V0TXMsaD1yLnNob3VsZE5vdFJldHJ5LHY9RGF0ZS5ub3coKSxnPXMsbT1hKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuO3JldHVybiBhKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIShwJiZEYXRlLm5vdygpLXY+PXApKXt0Lm5leHQ9MjticmVha310aHJvdyBuZXcgRXJyb3IoIlJldHJ5IHRpbWVvdXQgZXhjZWVkZWQgYWZ0ZXIgIitwKyJtcyIpO2Nhc2UgMjpyZXR1cm4gdC5wcmV2PTIsdC5uZXh0PTUsZSgpO2Nhc2UgNTpyZXR1cm4gdC50MD10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIse3Y6dC50MH0pO2Nhc2UgOTppZih0LnByZXY9OSx0LnQxPXQuY2F0Y2goMikseT10LnQxLCFofHwhaCh0LnQxKSl7dC5uZXh0PTE0O2JyZWFrfXRocm93IHQudDE7Y2FzZSAxNDppZighKHc8aSkpe3QubmV4dD0xOTticmVha31yZXR1cm4gbj1NYXRoLm1pbihnLGwpLHQubmV4dD0xOCxuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7cmV0dXJuIHNldFRpbWVvdXQodCxuKX0pKTtjYXNlIDE4OmcqPWQ7Y2FzZSAxOTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzIsOV1dKX0pKSx3PTA7Y2FzZSA2OmlmKCEodzw9aSkpe3QubmV4dD0xNDticmVha31yZXR1cm4gdC5kZWxlZ2F0ZVlpZWxkKG0oKSwidDAiLDgpO2Nhc2UgODppZighKGI9dC50MCkpe3QubmV4dD0xMTticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsYi52KTtjYXNlIDExOncrKyx0Lm5leHQ9NjticmVhaztjYXNlIDE0OnRocm93IHk7Y2FzZSAxNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpLGQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXt1KGkscixvLGEscywibmV4dCIsdCl9ZnVuY3Rpb24gcyh0KXt1KGkscixvLGEscywidGhyb3ciLHQpfWEodm9pZCAwKX0pKX0sZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSwzMjA5NTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtQOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSk7dmFyIHI9ZnVuY3Rpb24odCxlLG4pe3ZhciByO3ZvaWQgMD09PWUmJihlPTZlNCksdm9pZCAwPT09biYmKG49MCk7dmFyIG89ZnVuY3Rpb24oKXtyPVtdfSxpPWZ1bmN0aW9uKCl7dmFyIG89dC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSxpPXIuZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC5rZXk9PT1vfSkpLGE9RGF0ZS5ub3coKTtpZihpPi0xKXtpZighZnVuY3Rpb24odCxuKXtyZXR1cm4gdC1uLmNyZWF0ZWRBdD5lfShhLHJbaV0pKXJldHVybiEwO3Iuc3BsaWNlKGksMSl9cmV0dXJuIG4+MCYmci5sZW5ndGg9PT1uJiZyLnNoaWZ0KCksci5wdXNoKHtrZXk6byxjcmVhdGVkQXQ6YX0pLCExfTtyZXR1cm4gaS5yZXNldD1vLG8oKSxpfX0sMjY5NDc6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7Um86ZnVuY3Rpb24oKXtyZXR1cm4gY30sUnA6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sZVI6ZnVuY3Rpb24oKXtyZXR1cm4gcH0sczM6ZnVuY3Rpb24oKXtyZXR1cm4gZn19KTt2YXIgcj1uKDgzMTQ3KSxvPW4oMzg5OSksaT1uKDg4MjkxKTtmdW5jdGlvbiBhKCl7YT1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30scz1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsYz1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLGw9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGYodCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Zih7fSwiIil9Y2F0Y2godCl7Zj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gZCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGI/ZTpiLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgaihyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOkkodCxuLHUpfSksYX1mdW5jdGlvbiBwKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWQ7dmFyIGg9InN1c3BlbmRlZFN0YXJ0Iix2PSJzdXNwZW5kZWRZaWVsZCIseT0iZXhlY3V0aW5nIixnPSJjb21wbGV0ZWQiLG09e307ZnVuY3Rpb24gYigpe31mdW5jdGlvbiB3KCl7fWZ1bmN0aW9uIF8oKXt9dmFyIFM9e307ZihTLHMsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIHg9T2JqZWN0LmdldFByb3RvdHlwZU9mLEU9eCYmeCh4KFAoW10pKSk7RSYmRSE9PW4mJnIuY2FsbChFLHMpJiYoUz1FKTt2YXIgQz1fLnByb3RvdHlwZT1iLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFMpO2Z1bmN0aW9uIE8odCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtmKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEEodCxlKXtmdW5jdGlvbiBuKG8saSxhLHMpe3ZhciBjPXAodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1jLnR5cGUpe3ZhciBsPWMuYXJnLGY9bC52YWx1ZTtyZXR1cm4gZiYmIm9iamVjdCI9PXUoZikmJnIuY2FsbChmLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGYuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCxhLHMpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LGEscyl9KSk6ZS5yZXNvbHZlKGYpLnRoZW4oKGZ1bmN0aW9uKHQpe2wudmFsdWU9dCxhKGwpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCxhLHMpfSkpfXMoYy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIEkoZSxuLHIpe3ZhciBvPWg7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PXkpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09Zyl7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9ayh1LHIpO2lmKHMpe2lmKHM9PT1tKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWgpdGhyb3cgbz1nLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz15O3ZhciBjPXAoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT9nOnYsYy5hcmc9PT1tKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89ZyxyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIGsoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LGsoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksbTt2YXIgaT1wKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwsbTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwsbSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCxtKX1mdW5jdGlvbiBMKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIFQodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIGoodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChMLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW3NdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGk9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBpLm5leHQ9aX19dGhyb3cgbmV3IFR5cGVFcnJvcih1KGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIHcucHJvdG90eXBlPV8sbyhDLCJjb25zdHJ1Y3RvciIse3ZhbHVlOl8sY29uZmlndXJhYmxlOiEwfSksbyhfLCJjb25zdHJ1Y3RvciIse3ZhbHVlOncsY29uZmlndXJhYmxlOiEwfSksdy5kaXNwbGF5TmFtZT1mKF8sbCwiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LF8pOih0Ll9fcHJvdG9fXz1fLGYodCxsLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEMpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LE8oQS5wcm90b3R5cGUpLGYoQS5wcm90b3R5cGUsYywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QSxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEEoZCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxPKEMpLGYoQyxsLCJHZW5lcmF0b3IiKSxmKEMscywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxmKEMsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9UCxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goVCksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLG0pOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksbX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxUKG4pLG19fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7VChuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLG19fSxlfWZ1bmN0aW9uIHUodCl7cmV0dXJuIHU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHUodCl9ZnVuY3Rpb24gcyh0LGUsbixyLG8saSxhKXt0cnl7dmFyIHU9dFtpXShhKSxzPXUudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbih0KX11LmRvbmU/ZShzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfXZhciBjPSJicm93c2VyX2V4dGVuc2lvbl9odG1sX2luamVjdGlvbiI7ZnVuY3Rpb24gbCgpe3ZhciB0O3JldHVybiB0PWEoKS5tYXJrKChmdW5jdGlvbiB0KGUsbil7dmFyIG87cmV0dXJuIGEoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5wcmV2PTAsbz1lLnN1YnN0cmluZygwLDIwMCksdC5uZXh0PTQsKDAsci53ZCkoIkJyb3dzZXIgZXh0ZW5zaW9uIEhUTUwgaW5qZWN0aW9uIGRldGVjdGVkIix7ImVycm9yLnR5cGUiOiJodG1sX2luamVjdGlvbiIsImVycm9yLmVuZHBvaW50IjpuLCJlcnJvci5hdHRhY2tfdHlwZSI6ImJyb3dzZXJfZXh0ZW5zaW9uX2ludGVyY2VwdCJ9LHtodG1sX3NuaXBwZXQ6byxkZXRlY3Rpb25fdGltZXN0YW1wOihuZXcgRGF0ZSkudG9JU09TdHJpbmcoKX0pO2Nhc2UgNDp0Lm5leHQ9ODticmVhaztjYXNlIDY6dC5wcmV2PTYsdC50MD10LmNhdGNoKDApO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzAsNl1dKX0pKSxsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7cyhpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7cyhpLHIsbyxhLHUsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9LGwuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBmPWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09dClyZXR1cm4gbnVsbDtpZigiaHR0cF9wb3N0X3Nlc3Npb25fZW1wdHkiPT09dClyZXR1cm4gbnVsbDtpZigicmF0ZV9saW1pdGVkX3VwZGF0ZSI9PT10KXJldHVybiBudWxsO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKDAsaS5OKSh0KSl7dmFyIG49KDAsaS5jKSh0KTtyZXR1cm4oMCxvLmpQKShuKSxlJiZmdW5jdGlvbih0LGUpe2wuYXBwbHkodGhpcyxhcmd1bWVudHMpfSh0LGUpLFt7Y29kZTpjfV19dHJ5e3JldHVybiB0LmVycm9yc3x8SlNPTi5wYXJzZSh0KS5lcnJvcnN9Y2F0Y2goZSl7dmFyIGE9ZnVuY3Rpb24odCl7dmFyIGU9bnVsbDtpZigic3RyaW5nIj09dHlwZW9mIHQpdHJ5e2U9SlNPTi5wYXJzZSh0KX1jYXRjaChlKXtyZXR1cm4tMSE9PXQuaW5kZXhPZignInR5cGUiOiJlcnJvci5saXN0IicpfHwtMSE9PXQuaW5kZXhPZignImVycm9ycyI6WycpfWVsc2Uib2JqZWN0Ij09PXUodCkmJm51bGwhPT10JiYoZT10KTtyZXR1cm4hKCFlfHwiZXJyb3IubGlzdCIhPT1lLnR5cGUmJiEoImVycm9ycyJpbiBlKSl9KHQpO2lmKGEpe3ZhciBzPSJzdHJpbmciPT10eXBlb2YgdD90OkpTT04uc3RyaW5naWZ5KHQpOygwLG8ualApKCJBUEkgZXJyb3IgcmVzcG9uc2U6ICIrcyl9ZWxzZSgwLG8ualApKHQpLCgwLHIubDIpKHQpO3JldHVybn19O3ZhciBkPWZ1bmN0aW9uKHQpe3ZhciBlPWYodCk7aWYoZSl7dmFyIG49ZS5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhfSkpO2lmKG4pe3ZhciByPW4uZGF0YTtyZXR1cm57YWN0aXZlU3Vic2NyaXB0aW9uOnIuYWN0aXZlX3N1YnNjcmlwdGlvbix1c2VySGFzaFZlcmlmaWVkOnIudXNlcl9oYXNoX3ZlcmlmaWVkLHNlY3VyZUluc3RhbGxWMjpyLnNlY3VyZV9pbnN0YWxsX3YyLG1lc3NlbmdlckVuYWJsZWRGb3JWaXNpdG9yczpyLm1lc3Nlbmdlcl9lbmFibGVkX2Zvcl92aXNpdG9ycyxtZXNzZW5nZXJFbmFibGVkRm9yVXNlcnM6ci5tZXNzZW5nZXJfZW5hYmxlZF9mb3JfdXNlcnN9fX19LHA9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnRbMF0uY29kZX19LDY4NzYyOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse05xOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LE9tOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LGJ4OmZ1bmN0aW9uKCl7cmV0dXJuIGF9LGM2OmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LGZQOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LHNCOmZ1bmN0aW9uKCl7cmV0dXJuIGN9fSk7dmFyIHI9big3MDQwMCksbz1uKDI2NzAzKSxpPVsiL2xvYWRpbmciLCIvIitvLklqLmlkKyIvY29udmVyc2F0aW9uL3RyaWdnZXItc2NyZWVuIl0sYT1mdW5jdGlvbih0KXtyZXR1cm4hIXQmJi0xIT09aS5pbmRleE9mKHQpfSx1PWZ1bmN0aW9uKHQpe3JldHVybiIvIitvLklqLmlkKyIvY29udmVyc2F0aW9uLyIrdH0scz1mdW5jdGlvbih0KXt2YXIgZSxuPSgwLHIubWF0Y2hQYXRoKSgiLyIrby5Jai5pZCsiL2NvbnZlcnNhdGlvbi86Y29udmVyc2F0aW9uSWQiLHQpLGk9bnVsbD09bnx8bnVsbD09KGU9bi5wYXJhbXMpP3ZvaWQgMDplLmNvbnZlcnNhdGlvbklkO3JldHVybiBudWxsIT1pJiZpLmxlbmd0aD8ibmV3Ij09PWl8fCJ0cmlnZ2VyLXNjcmVlbiI9PT1pP251bGw6aTpudWxsfSxjPWZ1bmN0aW9uKHQpe3JldHVybiEhcyh0KX0sbD1mdW5jdGlvbih0KXtyZXR1cm4hISgwLHIubWF0Y2hQYXRoKSgiLyIrby5Jai5pZCsiL2NvbnZlcnNhdGlvbi9uZXciLHQpfSxmPWZ1bmN0aW9uKHQpe3JldHVybiBsKHQpPyJuZXctY29udmVyc2F0aW9uIjpjKHQpPyJjb252ZXJzYXRpb24iOmZ1bmN0aW9uKHQpe3JldHVybigwLHIubWF0Y2hQYXRoKSgiLyIrby5Jai5pZCx0KX0odCk/ImNvbnZlcnNhdGlvbnMiOiJob21lLXNjcmVlbiJ9fSwxNzc3NzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHthOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7dmFyIHI9big4NzEzMyksbz1mdW5jdGlvbih0LGUpe2lmKHQpe3ZhciBuPSgwLHIuQ0gpKHQpW2VdO2lmKCFuKXt2YXIgbz10LnRvU3RyaW5nKCk7aWYoIW8pcmV0dXJuO3ZhciBpPW5ldyBSZWdFeHAoZSsiPShcXGQrKSIsImkiKSxhPW8ubWF0Y2goaSk7YSYmKG49YVsxXSl9aWYoIW58fG4ubWF0Y2goL15cZCskLykpcmV0dXJuIG59fX0sMTEzODg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7TzpmdW5jdGlvbigpe3JldHVybiBhfX0pO3ZhciByPW4oMjExNDEpO2Z1bmN0aW9uIG8odCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIG49bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1uKXt2YXIgcixvLGksYSx1PVtdLHM9ITAsYz0hMTt0cnl7aWYoaT0obj1uLmNhbGwodCkpLm5leHQsMD09PWUpe2lmKE9iamVjdChuKSE9PW4pcmV0dXJuO3M9ITF9ZWxzZSBmb3IoOyEocz0ocj1pLmNhbGwobikpLmRvbmUpJiYodS5wdXNoKHIudmFsdWUpLHUubGVuZ3RoIT09ZSk7cz0hMCk7fWNhdGNoKHQpe2M9ITAsbz10fWZpbmFsbHl7dHJ5e2lmKCFzJiZudWxsIT1uLnJldHVybiYmKGE9bi5yZXR1cm4oKSxPYmplY3QoYSkhPT1hKSlyZXR1cm59ZmluYWxseXtpZihjKXRocm93IG99fXJldHVybiB1fX0odCxlKXx8ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGkodCxlKTt2YXIgbj17fS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/aSh0LGUpOnZvaWQgMH19KHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBpKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgYT1mdW5jdGlvbiB0KGUpe2lmKCEoMCxyLlEpKGUpKXJldHVybiBlO3ZhciBuPXt9O3JldHVybiBPYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcixhPWZ1bmN0aW9uKHQsZSxuKXtpZihlJiYhQXJyYXkuaXNBcnJheShlKSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIGkoZSx2b2lkIDAhPT1uJiZuPHI/bjpyKX1yZXR1cm4gdChlLG4pfShvLGUsMiksdT1hWzBdLHM9YVsxXSxjPXQocyk7QXJyYXkuaXNBcnJheShjKSYmKGM9Yy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfSkpKSxuWyhyPXUsci5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCIkMV8kMiIpLnJlcGxhY2UoLyhbYS16XSkoWzAtOV0pL2csIiQxXyQyIikucmVwbGFjZSgvKFswLTldKShbYS16QS1aXSkvZywiJDFfJDIiKS5yZXBsYWNlKC8oW0EtWl0rKShbQS1aXVthLXpdKS9nLCIkMV8kMiIpLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywiXyIpLnJlcGxhY2UoL15fK3xfKyQvZywiIikudG9Mb3dlckNhc2UoKSldPWN9KSksbn19LDIyOTc5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0w6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sczpmdW5jdGlvbigpe3JldHVybiB1fX0pO3ZhciByPW4oMzUyMDYpLG89ImludGVyY29tLiIsaT1mdW5jdGlvbih0KXtyZXR1cm57Z2V0OmZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gdC5nZXRJdGVtKCIiK28rZSl9Y2F0Y2godCl7cmV0dXJuIG51bGx9fSxzZXQ6ZnVuY3Rpb24oZSxuKXt0cnl7dC5zZXRJdGVtKCIiK28rZSwobnVsbD09bj92b2lkIDA6bi50b1N0cmluZygpKXx8IiIpfWNhdGNoKHQpe319LHJlbW92ZTpmdW5jdGlvbihlKXt0cnl7dC5yZW1vdmVJdGVtKCIiK28rZSl9Y2F0Y2godCl7fX0sY2xlYXI6ZnVuY3Rpb24oKXt0cnl7dC5jbGVhcigpfWNhdGNoKHQpe319fX0sYT1yLkF5Lmhhc0xvY2FsU3RvcmFnZVN1cHBvcnQoKT9pKGxvY2FsU3RvcmFnZSk6e2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxzZXQ6ZnVuY3Rpb24oKXt9LHJlbW92ZTpmdW5jdGlvbigpe30sY2xlYXI6ZnVuY3Rpb24oKXt9fSx1PXIuQXkuaGFzU2Vzc2lvblN0b3JhZ2VTdXBwb3J0KCk/aShzZXNzaW9uU3RvcmFnZSk6e2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxzZXQ6ZnVuY3Rpb24oKXt9LHJlbW92ZTpmdW5jdGlvbigpe30sY2xlYXI6ZnVuY3Rpb24oKXt9fX0sNzcyMzQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7JDA6ZnVuY3Rpb24oKXtyZXR1cm4geX0sRUo6ZnVuY3Rpb24oKXtyZXR1cm4gd30sU2M6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sYkc6ZnVuY3Rpb24oKXtyZXR1cm4gYn0sZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdn0sanc6ZnVuY3Rpb24oKXtyZXR1cm4gbX0sa206ZnVuY3Rpb24oKXtyZXR1cm4gZ30sclE6ZnVuY3Rpb24oKXtyZXR1cm4gZH0seU86ZnVuY3Rpb24oKXtyZXR1cm4gcH19KTt2YXIgcj1uKDY2ODM4KSxvPW4oMzg4ODMpLGk9bigyNzI2OSksYT1uKDgwMjc4KSx1PW4oODgzMzMpLHM9bigxNzgzMyksYz1uLm4ocyksbD1uKDk3MTYwKSxmPW4ubihsKSxkPWZ1bmN0aW9uKHQpe3ZhciBlPXQuYmFja2dyb3VuZENvbG9yLG49dC5idXR0b25Db2xvcixyPSIjRDIyNjI4IixvPSIjMjIyIixhPSIjRkZGRkZGIjtufHwobj1vKSxlfHwoZT1hKTt2YXIgdT1mKCkoe3ByaW1hcnlDb2xvcjpuLHNlY29uZGFyeUNvbG9yOmUsZGFya2VuQW1vdW50OjIwfSk7cmV0dXJue2JhY2tncm91bmRDb2xvcjplLGJ1dHRvbkNvbG9yOm4sYmFja2dyb3VuZFRleHRDb2xvcjoiZGFyayI9PT11LnNlY29uZGFyeV90eXBlP2E6byxidXR0b25UZXh0Q29sb3I6dS5wcmltYXJ5X29uX3doaXRlX2NvbnRyYXN0PjEuNj9hOm8saXNCYWNrZ3JvdW5kQ29sb3JMaWdodDoibGlnaHQiPT09dS5zZWNvbmRhcnlfdHlwZSxpc0J1dHRvbkNvbG9yTGlnaHQ6ImxpZ2h0Ij09PXUucHJpbWFyeV90eXBlLGJ1dHRvbkNvbG9ySG92ZXI6dS5idXR0b25fYmFja2dyb3VuZF9jb2xvcl9ob3ZlcixidXR0b25Db2xvckFjdGl2ZTp1LmJ1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yX2FjdGl2ZSxiYW5uZXJFcnJvclRleHQ6KDAsaS5TbCkocixlKT4zP3I6YSxwcm9ncmVzc0JhckJhY2tncm91bmQ6KDAsaS52ZikobiwuMjUpLHByb2dyZXNzQmFyT3ZlcmxheToibGlnaHQiPT09dS5wcmltYXJ5X3R5cGU/KDAsaS52ZikoIiMyMjIiLC4yKToiIzAwMDAwMDAwIixncmF5QmFja2dyb3VuZFRleHRDb2xvcjpvLGdyYXlCYWNrZ3JvdW5kOiIjRjFGMUYxIixncmF5QmFja2dyb3VuZEFjdGl2ZToiI0Q3RDdENyIsZ3JheUJhY2tncm91bmRIb3ZlcjoiI0JFQkVCRSJ9fSxwPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1lLnRoZW1lO2lmKG4pcmV0dXJuIG4uc3VydmV5Q29sb3JQYWxldHRlW3RdfX0saD1jKCkoInN1cnZleXM6ZGVidWciKSx2PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYtMSE9PU9iamVjdC52YWx1ZXModS5oMykuaW5kZXhPZih0KX0seT1mdW5jdGlvbih0LGUpe3ZhciBuLGk9bnVsbCxzPWUucmVxdWlyZWQ7aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD10LnRyaW0oKSkscyYmKDAsci5JKSh0KSlpPXUuaDMucmVxdWlyZWQ7ZWxzZSBpZih0JiZlLnZhbGlkYXRpb24mJm51bGwhPWUmJm51bGwhPShuPWUudmFsaWRhdGlvbikmJm4udHlwZSl7dmFyIGM9ZS52YWxpZGF0aW9uLnR5cGUsbD1mdW5jdGlvbih0LGUpe3N3aXRjaChlKXtjYXNlIHUuaDMuZW1haWw6cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYoMCxvLkI5KSh0KTtjYXNlIHUuaDMubnVtYmVyOnJldHVybiFpc05hTih0KTtjYXNlIHUuaDMucGhvbmU6cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYoMCxhLmZuKSh0KTtkZWZhdWx0OnJldHVybiBudWxsfX0odCxjKTtsfHwoaT1jKX1yZXR1cm57ZmFpbGVkVmFsaWRhdGlvbjp2KGkpLHZhbGlkYXRpb25FcnJvcjppfX0sZz1mdW5jdGlvbih0LGUpe3JldHVybiB0P3QucmVkdWNlKChmdW5jdGlvbih0LG4scil7dmFyIG89TWF0aC5mbG9vcihyL2UpO3JldHVybiB0W29dfHwodFtvXT1bXSksdFtvXS5wdXNoKG4pLHR9KSxbXSk6W119LG09e2NvbnRhaW5lcjp7ZGVmYXVsdDoiNjYwcHgiLHdpdGhTZW5kZXI6IjcxNnB4In0sd3JhcHBlcjp7ZGVmYXVsdDoiNDg0cHgiLHdpdGhTZW5kZXI6IjU0MHB4In19LGI9e2xhcmdlOiI2NjFweCIsbWVkaXVtOiI1NTZweCIsc21hbGw6IjQ3N3B4In0sdz1mdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aDw9ZT90OnQuc2xpY2UoMCxlKSsiLi4uIn19LDk1ODc5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtpZigibGlnaHQiPT09dHx8ImRhcmsiPT09dClyZXR1cm4gdDtpZigic3lzdGVtIj09PXQmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cubWF0Y2hNZWRpYSl0cnl7cmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIikubWF0Y2hlcz8iZGFyayI6ImxpZ2h0In1jYXRjaCh0KXtyZXR1cm4ibGlnaHQifXJldHVybiJsaWdodCJ9ZnVuY3Rpb24gbyh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksZXx8ImRhcmsiPT09dD8iY29udHJhc3QtcmF0aW8tNC41IjoibHVtaW5hbmNlIn1uLmQoZSx7bDpmdW5jdGlvbigpe3JldHVybiByfSx5OmZ1bmN0aW9uKCl7cmV0dXJuIG99fSl9LDczNTU3OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0JUOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LEpOOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LGNSOmZ1bmN0aW9uKCl7cmV0dXJuIHB9LGZkOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LHFZOmZ1bmN0aW9uKCl7cmV0dXJuIGR9fSk7dmFyIHIsbyxpPW4oNzI5MCksYT1uKDMyOTgpLHU9KChyPXt9KVtpLlM1LnN1Ym1pdHRlZF09e2tleToidGlja2V0c19zdGF0dXNfc3VibWl0dGVkIn0scltpLlM1LmluUHJvZ3Jlc3NdPXtrZXk6InRpY2tldHNfc3RhdHVzX2luX3Byb2dyZXNzIn0scltpLlM1LndhaXRpbmddPXtrZXk6InRpY2tldHNfc3RhdHVzX3dhaXRpbmdfb25feW91In0scltpLlM1LnJlc29sdmVkXT17a2V5OiJ0aWNrZXRzX3N0YXR1c19yZXNvbHZlZCJ9LHIpLHM9KChvPXt9KVtpLlM1LnN1Ym1pdHRlZF09e2tleToidGlja2V0c19zdGF0dXNfZGVzY3JpcHRpb25fd2VsbF9waWNrX3VwX3Nvb24ifSxvW2kuUzUuaW5Qcm9ncmVzc109e2tleToidGlja2V0c19zdGF0dXNfZGVzY3JpcHRpb25fd29ya2luZ19vbiJ9LG9baS5TNS53YWl0aW5nXT17a2V5OiJ0aWNrZXRzX3N0YXR1c19kZXNjcmlwdGlvbl9tb3JlX2luZm8ifSxvW2kuUzUucmVzb2x2ZWRdPXtrZXk6InRpY2tldHNfc3RhdHVzX2Rlc2NyaXB0aW9uX2NvbXBsZXRlZCJ9LG8pO2Z1bmN0aW9uIGModCl7cmV0dXJuKDAsYS5UbCkodVt0XS5rZXkpfWZ1bmN0aW9uIGwodCl7dmFyIGU9dC5zdGF0dXMsbj10LnN0YXR1c0xhYmVsO3JldHVybiBufHwoLTEhPT1PYmplY3QudmFsdWVzKGkuUzUpLmluZGV4T2YoZSk/YyhlKTplKX1mdW5jdGlvbiBmKHQpe3JldHVybigwLGEuVGwpKHNbdF0ua2V5KX1mdW5jdGlvbiBkKHQpe3N3aXRjaCh0KXtjYXNlIGkuUzUuc3VibWl0dGVkOmNhc2UgaS5TNS5pblByb2dyZXNzOnJldHVybiJpblByb2dyZXNzRmlsbCI7Y2FzZSBpLlM1LndhaXRpbmc6cmV0dXJuIndhaXRpbmdPbllvdUZpbGwiO2Nhc2UgaS5TNS5yZXNvbHZlZDpyZXR1cm4ib25saW5lRmlsbCI7ZGVmYXVsdDpyZXR1cm4icHJpbWFyeUNvbG9yIn19ZnVuY3Rpb24gcCh0KXtzd2l0Y2godCl7Y2FzZSBpLlM1LnN1Ym1pdHRlZDpjYXNlIGkuUzUuaW5Qcm9ncmVzczpyZXR1cm4iVGlja2V0RGVmYXVsdCI7Y2FzZSBpLlM1LndhaXRpbmc6cmV0dXJuIlRpY2tldFdhaXRpbmdPbllvdSI7Y2FzZSBpLlM1LnJlc29sdmVkOnJldHVybiJUaWNrZXRSZXNvbHZlZCI7ZGVmYXVsdDpyZXR1cm4iVGlja2V0RGVmYXVsdCJ9fX0sODc3OTk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7WlE6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sYTI6ZnVuY3Rpb24oKXtyZXR1cm4gc30sc3E6ZnVuY3Rpb24oKXtyZXR1cm4gY30sdm46ZnVuY3Rpb24oKXtyZXR1cm4gZn0sd286ZnVuY3Rpb24oKXtyZXR1cm4gbH19KTt2YXIgcj1uKDMyOTgpLG89bigzMzA0OCksaT1uKDI2NzAzKTtmdW5jdGlvbiBhKHQpe3JldHVybiBhPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxhKHQpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIG51bGw9PT10P251bGw6QXJyYXkuaXNBcnJheSh0KT90OiJvYmplY3QiPT09YSh0KSYmIUFycmF5LmlzQXJyYXkodCkmJiJsYWJlbCJpbiB0P3QubGFiZWwudG9TdHJpbmcoKTp0LnRvU3RyaW5nKCl9ZnVuY3Rpb24gcyh0LGUpe3ZhciBuLGk9KDAsci5KSykoKTtzd2l0Y2goZSl7Y2FzZSJkYXRldGltZSI6cmV0dXJuIG51bGw9PShuPSgwLG8ua1UpKHBhcnNlSW50KHQpKSk/dm9pZCAwOm4udG9Mb2NhbGVTdHJpbmcoaSx7ZGF0ZVN0eWxlOiJsb25nIix0aW1lU3R5bGU6InNob3J0In0pO2Nhc2UiYm9vbGVhbiI6cmV0dXJuInRydWUiPT09dD8oMCxyLlRsKSgiYXR0cmlidXRlX2NvbGxlY3Rvcl9wb3NpdGl2ZSIpOigwLHIuVGwpKCJhdHRyaWJ1dGVfY29sbGVjdG9yX25lZ2F0aXZlIik7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gYyh0LGUpe3ZvaWQgMD09PWUmJihlPSExKTt2YXIgbj0iLyIraS5Jai5pZCsiL3RpY2tldHMvIit0O3JldHVybiBlP24rIj9zdWJtaXR0ZWQ9dHJ1ZSI6bn1mdW5jdGlvbiBsKHQsZSl7dmFyIG49Ii8iK2kuSWouaWQrIi90aWNrZXRzL2NyZWF0ZS8iK3QudG9TdHJpbmcoKTtyZXR1cm4gZSYmKG49bisiP2NvbnZlcnNhdGlvbklkPSIrZSksbn1mdW5jdGlvbiBmKHQpe3JldHVybiF0fHwhdC5zaGFyaW5nfHwhdC5zaGFyaW5nLmNhbkpvaW59fSwxMTA4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse246ZnVuY3Rpb24oKXtyZXR1cm4gaX0sdjpmdW5jdGlvbigpe3JldHVybiBvfX0pO3ZhciByPW4oMTc4MzMpLG89bi5uKHIpKCkoImRlYnVnOnRvb2x0aXBzIiksaT17YmFja2dyb3VuZENvbG9yOiIjRkZGRkZGIixidXR0b25Db2xvcjpudWxsLGZvbnRDb2xvcjoiIzIyMjIyMiJ9fSw1MTQ4MDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtIOmZ1bmN0aW9uKCl7cmV0dXJuIHN9fSk7dmFyIHI9big5OTQzOSksbz1uKDg0MzgyKTtmdW5jdGlvbiBpKHQpe3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxpKHQpfWZ1bmN0aW9uIGEodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHUoci5rZXkpLHIpfX1mdW5jdGlvbiB1KHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPWkodCl8fCF0KXJldHVybiB0O3ZhciBuPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT1pKHIpKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09ZT9TdHJpbmc6TnVtYmVyKSh0KX0odCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PWkoZSk/ZTplKyIifXZhciBzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMud2hlblJlYWR5PXZvaWQgMCx0aGlzLnN0YXRlPXZvaWQgMCx0aGlzLmFjdGl2ZVN0ZXA9dm9pZCAwLHRoaXMubmV4dFN0ZXA9dm9pZCAwLHRoaXMuc3RhdGU9dCx0aGlzLndoZW5SZWFkeT1lLHRoaXMuYWN0aXZlU3RlcD0oMCxyLlFPKSh0KSx0aGlzLm5leHRTdGVwPSgwLHIuc1gpKHQpLHRoaXMuX2NoZWNrKCl9dmFyIGUsbixpLHU9dC5wcm90b3R5cGU7cmV0dXJuIHUuX2NoZWNrPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWN0aXZlU3RlcCYmImNsaWNrIj09PXRoaXMuYWN0aXZlU3RlcC5wcm9ncmVzc2lvbkJlaGF2aW9yPygoMCxvLms3KSgiQ2xpY2sgdG8gcHJvZ3Jlc3MgYmVoYXZpb3IgZGV0ZWN0ZWQuIiksdGhpcy5fZXZhbHVhdGVQcm9ncmVzc2lvbkJ5Q2xpY2soKSk6dGhpcy53aGVuUmVhZHkoKX0sdS5fZXZhbHVhdGVQcm9ncmVzc2lvbkJ5Q2xpY2s9ZnVuY3Rpb24oKXtpZighdGhpcy5hY3RpdmVTdGVwfHwhdGhpcy5uZXh0U3RlcClyZXR1cm4gdGhpcy53aGVuUmVhZHkoKTt2YXIgdD0wLGU9MDt0aGlzLl9wYWdlTmVlZHNSZWRpcmVjdGlvbigpPygoMCxvLms3KSgiU3RlcCB1cmwgZm9yIHRoZSBuZXh0IHN0ZXAgaXMgZGlmZmVyZW50IHNvIHRoZSB0b3VyIHdpbGwgd2FpdCAycyBmb3IgdGhlIHBhZ2UgdG8gcmVsb2FkIiksdD0yZTMpOigwLG8uazcpKCJObyBwYWdlIHJlZGlyZWN0aW9uIGRldGVjdGVkLiIpLHRoaXMuX25leHRTdGVwSXNQb2ludGVyKCkmJigoMCxvLms3KSgiVGhlIHBhZ2UgaXMgZ29pbmcgdG8gd2FpdCB1cHRvIDVzIGZvciB0aGUgbmV4dCBzdGVwJ3Mgc2VsZWN0b3IgdG8gYmVjb21lIHZpc2libGUgaW4gcGFnZSIpLGU9NWUzKSxuZXcgby50VCh0aGlzLm5leHRTdGVwLnNlbGVjdG9yLGUsdCx0aGlzLndoZW5SZWFkeSl9LHUuX3BhZ2VOZWVkc1JlZGlyZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuISghdGhpcy5hY3RpdmVTdGVwfHwhdGhpcy5uZXh0U3RlcCkmJnRoaXMuYWN0aXZlU3RlcC51cmwhPT10aGlzLm5leHRTdGVwLnVybH0sdS5fbmV4dFN0ZXBJc1BvaW50ZXI9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4hKG51bGw9PSh0PXRoaXMubmV4dFN0ZXApfHwhdC5zZWxlY3Rvcil9LGU9dCxuJiZhKGUucHJvdG90eXBlLG4pLGkmJmEoZSxpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpfSw4NDM4MjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHskRjpmdW5jdGlvbigpe3JldHVybiB2fSxDWjpmdW5jdGlvbigpe3JldHVybiBkfSxFSjpmdW5jdGlvbigpe3JldHVybiBtfSxMMjpmdW5jdGlvbigpe3JldHVybiBwfSxrNzpmdW5jdGlvbigpe3JldHVybiB5fSx0VDpmdW5jdGlvbigpe3JldHVybiBnfX0pO3ZhciByPW4oMzIzNTApLG89big1MTAwNiksaT1uKDE3ODMzKSxhPW4ubihpKSx1PW4oMjI5NzkpO2Z1bmN0aW9uIHModCl7cmV0dXJuIHM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHModCl9ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZihyLmtleSkscil9fWZ1bmN0aW9uIGwodCxlLG4pe3JldHVybiBlJiZjKHQucHJvdG90eXBlLGUpLG4mJmModCxuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0fWZ1bmN0aW9uIGYodCl7dmFyIGU9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9cyh0KXx8IXQpcmV0dXJuIHQ7dmFyIG49dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciByPW4uY2FsbCh0LGV8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXMocikpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHQpfSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09cyhlKT9lOmUrIiJ9ZnVuY3Rpb24gZCh0KXt2YXIgZT0idG91cl90cmlnZ2VyZWRfZnJvbV91cmwiLG49dS5zLmdldChlKSxyPW4/SlNPTi5wYXJzZShuKTpudWxsO2lmKHIpe3ZhciBvPXIuaW5kZXhPZih0LnRvU3RyaW5nKCkpOy0xIT09byYmKHIuc3BsaWNlKG8sMSksdS5zLnNldChlLEpTT04uc3RyaW5naWZ5KHIpKSl9fWZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gZS5ob3N0bmFtZT09PXQuaG9zdG5hbWUmJmUucGF0aG5hbWU9PT10LnBhdGhuYW1lJiZlLmhhc2g9PT10Lmhhc2h9dmFyIGg9ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSgvW1x1MjAwQi1cdTIwMERcdUZFRkZdL2csIiIpfSx2PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZhciBuPXRoaXM7dGhpcy5lbGVtZW50cz12b2lkIDAsdGhpcy5jYWxsYmFjaz12b2lkIDAsdGhpcy5kZXN0cm95ZWQ9dm9pZCAwLHRoaXMudmFsaWRhdGVJbnB1dHM9ZnVuY3Rpb24oKXt2YXIgdD0hMDtuLmVsZW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPSJ0eXBlImluIGU/ZS50eXBlOiIiOyJjaGVja2JveCIhPT1yJiYicmFkaW8iIT09ciYmbi5lbGVtZW50SGFzRW1wdHlWYWx1ZShlKSYmKHQ9ITEpfSkpLG4ub25DaGFuZ2UodCl9LHRoaXMuY2FsbGJhY2s9ZSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmVsZW1lbnRzPVtdO3ZhciBvPSgwLHIuZm8pKHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQsdCk7aWYobyl7dmFyIGk9by50YWdOYW1lLnRvTG93ZXJDYXNlKCksYT0iaW5wdXQiPT09aXx8InRleHRhcmVhIj09PWl8fCJzZWxlY3QiPT09aXx8by5pc0NvbnRlbnRFZGl0YWJsZTt0aGlzLmVsZW1lbnRzPWE/W29dOkFycmF5LmZyb20oby5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgZGl2W2NvbnRlbnRlZGl0YWJsZV0iKSl9fXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuZGVzdHJveWVkfHx0aGlzLmNhbGxiYWNrKHQpfSxlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmRlc3Ryb3llZD0hMCx0aGlzLnJlbW92ZUxpc3RlbmVycygpfSxlLmVsZW1lbnRIYXNFbXB0eVZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiJzZWxlY3QiPT09dC50YWdOYW1lLnRvTG93ZXJDYXNlKCk/IWgodC5vcHRpb25zW3Quc2VsZWN0ZWRJbmRleF0udmFsdWUpOnQuaXNDb250ZW50RWRpdGFibGU/IWgodC5pbm5lclRleHR8fCIiKTohaCh0LnZhbHVlKX0sZS5hZGRMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZWxlbWVudHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7InNlbGVjdCI9PT1lLnRhZ05hbWUudG9Mb3dlckNhc2UoKT9lLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdC52YWxpZGF0ZUlucHV0cyk6ZS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsdC52YWxpZGF0ZUlucHV0cyl9KSl9LGUucmVtb3ZlTGlzdGVuZXJzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmVsZW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKGUpeyJzZWxlY3QiPT09KCJ0eXBlImluIGU/ZS50eXBlOiIiKT9lLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdC52YWxpZGF0ZUlucHV0cyk6ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJpbnB1dCIsdC52YWxpZGF0ZUlucHV0cyl9KSl9LGUucnVuPWZ1bmN0aW9uKCl7aWYoIXRoaXMuZWxlbWVudHMubGVuZ3RoKXJldHVybiB0aGlzLmNhbGxiYWNrKCEwKTt0aGlzLnZhbGlkYXRlSW5wdXRzKCksdGhpcy5hZGRMaXN0ZW5lcnMoKX0sbCh0KX0oKSx5PWEoKSgidG91cnM6ZGVidWciKSxnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyLGkpe3ZhciBhPXRoaXM7dm9pZCAwPT09aSYmKGk9ITEpLHRoaXMuc2VsZWN0b3I9dm9pZCAwLHRoaXMudGltZW91dFZhbHVlPXZvaWQgMCx0aGlzLmNhbGxiYWNrPXZvaWQgMCx0aGlzLmZhaWxPbmx5T25UaW1lb3V0PXZvaWQgMCx0aGlzLnJlc29sdmVkPXZvaWQgMCx0aGlzLnRpbWVvdXQ9dm9pZCAwLHRoaXMud2FpdFRpbWVvdXQ9dm9pZCAwLHRoaXMuZG9jdW1lbnQ9dm9pZCAwLHRoaXMub2JzZXJ2ZXI9dm9pZCAwLHRoaXMuc2VsZWN0b3I9dCx0aGlzLnRpbWVvdXRWYWx1ZT1lLHRoaXMuZG9jdW1lbnQ9d2luZG93LnBhcmVudC5kb2N1bWVudCx0aGlzLmNhbGxiYWNrPXIsdGhpcy5mYWlsT25seU9uVGltZW91dD1pLHRoaXMucmVzb2x2ZWQ9ITEsdGhpcy5vYnNlcnZlcj1uZXcgTXV0YXRpb25PYnNlcnZlcigoMCxvLm4pKHRoaXMuX2NoZWNrLmJpbmQodGhpcyksMjAwKSksdGhpcy53YWl0VGltZW91dD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2EuX2luaXRPYnNlcnZlcigpLGEuX3N0YXJ0VGltZXIoKSxhLl9jaGVjaygpfSksbnx8MCl9dmFyIGU9dC5wcm90b3R5cGU7cmV0dXJuIGUuX2luaXRPYnNlcnZlcj1mdW5jdGlvbigpe3RoaXMuZG9jdW1lbnQuYm9keSYmdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMuZG9jdW1lbnQuYm9keSx7YXR0cmlidXRlczohMCxjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pfSxlLl9yZXNvbHZlPWZ1bmN0aW9uKHQpe3RoaXMucmVzb2x2ZWR8fCh0aGlzLnJlc29sdmVkPSEwLHRoaXMuY2FsbGJhY2sodCksdGhpcy5jYW5jZWwoKSl9LGUuX2NoZWNrPWZ1bmN0aW9uKCl7aWYoIXRoaXMucmVzb2x2ZWQpe3ZhciB0PSgwLHIuZm8pKHRoaXMuZG9jdW1lbnQsdGhpcy5zZWxlY3Rvcik7KDAsci5uZikodCk/dGhpcy5fcmVzb2x2ZSghMCk6dGhpcy5mYWlsT25seU9uVGltZW91dHx8dGhpcy5jYWxsYmFjayghMSl9fSxlLl9zdGFydFRpbWVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczsodGhpcy50aW1lb3V0VmFsdWV8fDA9PT10aGlzLnRpbWVvdXRWYWx1ZSkmJih0aGlzLnRpbWVvdXQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtpZih0LmZhaWxPbmx5T25UaW1lb3V0KXt2YXIgZT0oMCxyLmZvKSh0LmRvY3VtZW50LHQuc2VsZWN0b3IpO3QuX3Jlc29sdmUoQm9vbGVhbigoMCxyLm5mKShlKSkpfWVsc2UgdC5fcmVzb2x2ZSghMSl9KSx0aGlzLnRpbWVvdXRWYWx1ZSkpfSxlLmNhbmNlbD1mdW5jdGlvbigpe3RoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMudGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCksdGhpcy53YWl0VGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMud2FpdFRpbWVvdXQpfSxsKHQpfSgpLG09ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg8PWU/dDp0LnNsaWNlKDAsZSkrIi4uLiJ9fSw2MDc3MTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtXJDpmdW5jdGlvbigpe3JldHVybiBzfSxhNDpmdW5jdGlvbigpe3JldHVybiBhfSxwUzpmdW5jdGlvbigpe3JldHVybiBpfSx1QjpmdW5jdGlvbigpe3JldHVybiBvfSx2MDpmdW5jdGlvbigpe3JldHVybiB1fX0pO3ZhciByPW4oMzUyMDYpLG89MTA0ODU3NjAwLGk9MTAwLGE9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIG51bGwhPXQmJm51bGwhPShlPXQuZmVhdHVyZXMpJiZlLmFzYW5hTGltaXRVcGxvYWRzVG81bWI/NTI0Mjg4MDpvfSx1PWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBudWxsIT10JiZudWxsIT0oZT10LmZlYXR1cmVzKSYmZS5hc2FuYUxpbWl0VXBsb2Fkc1RvNW1iPzU6aX0scz1mdW5jdGlvbih0KXt2YXIgZT0odD10fHwiIikubWF0Y2goL1teXHgwMC1ceDdGXS8pO2lmKCF0fHxyLkF5LmlzU2FmYXJpKCkmJmUpe3ZhciBuPXQuc3BsaXQoIi4iKTt0PSJGaWxlIisobmV3IERhdGUpLmdldFRpbWUoKSxuLmxlbmd0aD4xJiYodCs9Ii4iK25bbi5sZW5ndGgtMV0pfXJldHVybiB0fX0sODY5Nzk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7Q1Y6ZnVuY3Rpb24oKXtyZXR1cm4gYn0sRmU6ZnVuY3Rpb24oKXtyZXR1cm4gbX0sWms6ZnVuY3Rpb24oKXtyZXR1cm4gdn0sYkI6ZnVuY3Rpb24oKXtyZXR1cm4gaH0scmU6ZnVuY3Rpb24oKXtyZXR1cm4gcH19KTt2YXIgcj1uKDM1MjA2KSxvPW4oNDkyNDMpLGk9bigzODk5KTtmdW5jdGlvbiBhKCl7YT1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sdT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsYz1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLGw9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGYodCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Zih7fSwiIil9Y2F0Y2godCl7Zj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gZCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGI/ZTpiLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgaihyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOkkodCxuLHUpfSksYX1mdW5jdGlvbiBwKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWQ7dmFyIGg9InN1c3BlbmRlZFN0YXJ0Iix2PSJzdXNwZW5kZWRZaWVsZCIseT0iZXhlY3V0aW5nIixnPSJjb21wbGV0ZWQiLG09e307ZnVuY3Rpb24gYigpe31mdW5jdGlvbiB3KCl7fWZ1bmN0aW9uIF8oKXt9dmFyIFM9e307ZihTLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIHg9T2JqZWN0LmdldFByb3RvdHlwZU9mLEU9eCYmeCh4KFAoW10pKSk7RSYmRSE9PW4mJnIuY2FsbChFLHUpJiYoUz1FKTt2YXIgQz1fLnByb3RvdHlwZT1iLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFMpO2Z1bmN0aW9uIE8odCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtmKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEEodCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBjPXAodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1jLnR5cGUpe3ZhciBsPWMuYXJnLGY9bC52YWx1ZTtyZXR1cm4gZiYmIm9iamVjdCI9PXMoZikmJnIuY2FsbChmLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGYuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCxhLHUpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LGEsdSl9KSk6ZS5yZXNvbHZlKGYpLnRoZW4oKGZ1bmN0aW9uKHQpe2wudmFsdWU9dCxhKGwpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCxhLHUpfSkpfXUoYy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIEkoZSxuLHIpe3ZhciBvPWg7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PXkpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09Zyl7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9ayh1LHIpO2lmKHMpe2lmKHM9PT1tKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWgpdGhyb3cgbz1nLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz15O3ZhciBjPXAoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT9nOnYsYy5hcmc9PT1tKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89ZyxyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIGsoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LGsoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksbTt2YXIgaT1wKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwsbTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwsbSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCxtKX1mdW5jdGlvbiBMKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIFQodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIGoodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChMLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW3VdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGk9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBpLm5leHQ9aX19dGhyb3cgbmV3IFR5cGVFcnJvcihzKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIHcucHJvdG90eXBlPV8sbyhDLCJjb25zdHJ1Y3RvciIse3ZhbHVlOl8sY29uZmlndXJhYmxlOiEwfSksbyhfLCJjb25zdHJ1Y3RvciIse3ZhbHVlOncsY29uZmlndXJhYmxlOiEwfSksdy5kaXNwbGF5TmFtZT1mKF8sbCwiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LF8pOih0Ll9fcHJvdG9fXz1fLGYodCxsLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEMpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LE8oQS5wcm90b3R5cGUpLGYoQS5wcm90b3R5cGUsYywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QSxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEEoZCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxPKEMpLGYoQyxsLCJHZW5lcmF0b3IiKSxmKEMsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxmKEMsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9UCxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goVCksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLG0pOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksbX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxUKG4pLG19fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7VChuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLG19fSxlfWZ1bmN0aW9uIHUodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBzKHQpe3JldHVybiBzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxzKHQpfWZ1bmN0aW9uIGModCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIG49bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1uKXt2YXIgcixvLGksYSx1PVtdLHM9ITAsYz0hMTt0cnl7aWYoaT0obj1uLmNhbGwodCkpLm5leHQsMD09PWUpe2lmKE9iamVjdChuKSE9PW4pcmV0dXJuO3M9ITF9ZWxzZSBmb3IoOyEocz0ocj1pLmNhbGwobikpLmRvbmUpJiYodS5wdXNoKHIudmFsdWUpLHUubGVuZ3RoIT09ZSk7cz0hMCk7fWNhdGNoKHQpe2M9ITAsbz10fWZpbmFsbHl7dHJ5e2lmKCFzJiZudWxsIT1uLnJldHVybiYmKGE9bi5yZXR1cm4oKSxPYmplY3QoYSkhPT1hKSlyZXR1cm59ZmluYWxseXtpZihjKXRocm93IG99fXJldHVybiB1fX0odCxlKXx8ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGwodCxlKTt2YXIgbj17fS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/bCh0LGUpOnZvaWQgMH19KHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBsKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgZj1PYmplY3QuZnJlZXplKHtMSU5LX0NBUkQ6IkxJTktfQ0FSRCIsTUFJTFRPOiJNQUlMVE8iLEFSVElDTEU6IkFSVElDTEUiLElOVEVSQ09NOiJJTlRFUkNPTSIsRVhURVJOQUw6IkVYVEVSTkFMIn0pLGQ9bnVsbCxwPWZ1bmN0aW9uKHQpe3ZhciBlPXBhcmVudC53aW5kb3cub3Blbih0LCJfYmxhbmsiLCJub29wZW5lciIpO2UmJihlLm9wZW5lcj1udWxsKX0saD1mdW5jdGlvbih0KXtfKHQpJiYoeSh0KT9iKHQpOlMoKT93aW5kb3cub3Blbih0KTpwKHQpKX0sdj1mdW5jdGlvbih0KXtfKHQpJiYoeSh0KT9iKHQpOlMoKT9udWxsPT1kfHxkLmNsb3NlZD9kPXdpbmRvdy5vcGVuKHQsInBvcHVwLHdpZHRoPTUxMCxoZWlnaHQ9NTAwIik6ZC5mb2N1cygpOm51bGw9PWR8fGQuY2xvc2VkP2Q9d2luZG93Lm9wZW4odCwiVmlkZW9DYWxsUG9wdXAiLCJ3aWR0aD01MTAsIGhlaWdodD01MDAiKTpkLmZvY3VzKCkpfSx5PWZ1bmN0aW9uKHQpe3ZhciBlO3RyeXtlPW5ldyBVUkwodCl9Y2F0Y2godCl7cmV0dXJuITF9cmV0dXJuImludGVyY29tOiI9PT1lLnByb3RvY29sfSxnPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybi9cYmludGVyY29tLWxpbmstY2FyZFxiLy50ZXN0KHQuY2xhc3NOYW1lKSwhMX0odCk/Zi5MSU5LX0NBUkQ6ZnVuY3Rpb24odCl7cmV0dXJuL15tYWlsdG86Ly50ZXN0KHQpfShlKT9mLk1BSUxUTzpmdW5jdGlvbih0KXtyZXR1cm4hKHQuZ2V0QXR0cmlidXRlKCJkYXRhLWxpbmstdHlwZSIpIT09by5ofHwhdC5nZXRBdHRyaWJ1dGUoImRhdGEtbGluay1pZCIpKX0odCk/Zi5BUlRJQ0xFOnkoZSk/Zi5JTlRFUkNPTTpmLkVYVEVSTkFMfSxtPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0QXR0cmlidXRlKCJocmVmIil8fCIiLG49dC5nZXRBdHRyaWJ1dGUoImRhdGEtdmlhIil8fGUscj13aW5kb3cucGFyZW50LkludGVyY29tO3N3aXRjaChnKHQsZSkpe2Nhc2UgZi5MSU5LX0NBUkQ6Y2FzZSBmLk1BSUxUTzpyZXR1cm4hMTtjYXNlIGYuQVJUSUNMRTpyZXR1cm4gbnVsbD09cnx8cigic2hvd0FydGljbGUiLHQuZ2V0QXR0cmlidXRlKCJkYXRhLWxpbmstaWQiKXx8dm9pZCAwKSwhMDtjYXNlIGYuSU5URVJDT006cmV0dXJuIHQucmVtb3ZlQXR0cmlidXRlKCJ0YXJnZXQiKSxiKGUpLG4hPT1lJiZ3KG4pLCEwO2Nhc2UgZi5FWFRFUk5BTDpyZXR1cm4gbiE9PWUmJncobiksdC5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLHQuc2V0QXR0cmlidXRlKCJ0YXJnZXQiLCJfYmxhbmsiKSwhMX19LGI9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IFJlZ0V4cCgvdjFcLyguKikrXC8oWzAtOV0rKS0/KFswLTldKyk/L2kpLmV4ZWModCk7aWYoZSl7dmFyIG4scj1mdW5jdGlvbih0LGUsbil7aWYoZSYmIUFycmF5LmlzQXJyYXkoZSkmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ZhciByPWUubGVuZ3RoO3JldHVybiBsKGUsdm9pZCAwIT09biYmbjxyP246cil9cmV0dXJuIHQoZSxuKX0oYyxlLDQpLG89clsxXSxhPXJbMl0sdT1yWzNdO3N3aXRjaChvKXtjYXNlInN1cnZleSI6bj0ic3RhcnRTdXJ2ZXkiO2JyZWFrO2Nhc2UiY2hlY2tsaXN0IjpuPSJzdGFydENoZWNrbGlzdCI7YnJlYWs7Y2FzZSJ0b3VyIjpuPSJzdGFydFRvdXIiO2JyZWFrO2Nhc2UiYXJ0aWNsZSI6bj0ic2hvd0FydGljbGUiO2JyZWFrO2Nhc2UibmV3cyI6bj0ic2hvd05ld3MiO2JyZWFrO2Nhc2UiY29udmVyc2F0aW9uIjpuPSJzaG93Q29udmVyc2F0aW9uIjticmVhaztkZWZhdWx0OnJldHVybn12YXIgZj13aW5kb3cucGFyZW50LkludGVyY29tO2lmKGYmJiJmdW5jdGlvbiI9PXR5cGVvZiBmKSJjaGVja2xpc3QiIT09byYmImNvbnZlcnNhdGlvbiIhPT1vJiZmKCJoaWRlIiksImFydGljbGUiPT09bz9mKG4sYSx1KTpmKG4sYSk7ZWxzZXt2YXIgZD12b2lkIDA9PT13aW5kb3cucGFyZW50LkludGVyY29tPyJ3aW5kb3cucGFyZW50LkludGVyY29tIGlzIHVuZGVmaW5lZCI6IndpbmRvdy5wYXJlbnQuSW50ZXJjb20gaXMgIitzKHdpbmRvdy5wYXJlbnQuSW50ZXJjb20pKyIsIGV4cGVjdGVkIGZ1bmN0aW9uIjsoMCxpLmpQKSgiSW50ZXJjb20gcHJvdG9jb2wgaGFuZGxlcjogSW50ZXJjb20gQVBJIG5vdCBhdmFpbGFibGUgb24gcGFyZW50IHdpbmRvdy4gVVJMOiAiK3QrIiwgVHlwZTogIitvKyIsIElEOiAiK2ErIiwgUmVhc29uOiAiK2QpfX1lbHNlKDAsaS5qUCkoIkludGVyY29tIHByb3RvY29sIGhhbmRsZXI6IEludmFsaWQgVVJMIGZvcm1hdC4gRXhwZWN0ZWQ6IGludGVyY29tOi8vc2hvdy92MS97dHlwZX0ve2lkfSBvciBpbnRlcmNvbTovL3N0YXJ0L3YxL3t0eXBlfS97aWR9LCBnb3Q6ICIrdCl9LHc9ZnVuY3Rpb24oKXt2YXIgdCxlPSh0PWEoKS5tYXJrKChmdW5jdGlvbiB0KGUpe3JldHVybiBhKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoImZldGNoImluIHdpbmRvdyl7dC5uZXh0PTI7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDI6cmV0dXJuIHQubmV4dD00LGZldGNoKGUse21vZGU6Im5vLWNvcnMifSkuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpLGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7dShpLHIsbyxhLHMsIm5leHQiLHQpfWZ1bmN0aW9uIHModCl7dShpLHIsbyxhLHMsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxfPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYiIiE9PXR9LFM9ZnVuY3Rpb24oKXtyZXR1cm4gci5BeS5pc0VsZWN0cm9uKCl8fHIuQXkuaXNOYXRpdmVNb2JpbGUoKXx8ci5BeS5pc0lPU0ZpcmVmb3goKX19LDI1MTE1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0E4OmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LFBWOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LFQ3OmZ1bmN0aW9uKCl7cmV0dXJuIHB9LFU4OmZ1bmN0aW9uKCl7cmV0dXJuIGR9LFVtOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LGVGOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LHZKOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHg4OmZ1bmN0aW9uKCl7cmV0dXJuIGl9LHhIOmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSk7dmFyIHI9bigzNjI2Niksbz1bInBhc3N3b3JkIiwicGFzc3dkIiwic2VjcmV0IiwiYXBpX2tleSIsImFwaWtleSIsImFjY2Vzc190b2tlbiIsImF1dGhfdG9rZW4iLCJjcmVkZW50aWFscyIsIm15c3FsX3B3ZCIsInN0cmlwZXRva2VuIiwidG9rZW4iXSxpPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIG51bGw9PSh0PSgwLHIuS1EpKCkpP3ZvaWQgMDp0LmhyZWZ9LGE9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gbnVsbD09KHQ9KDAsci5LUSkoKSk/dm9pZCAwOnQuaG9zdH0sdT1mdW5jdGlvbih0KXtpZighdClyZXR1cm4gdDt2YXIgZT10O3JldHVybiBvLmZvckVhY2goKGZ1bmN0aW9uKHQpe2U9cyhlLHQsIioqKiIpfSkpLGV9LHM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPW5ldyBSZWdFeHAoIihbPyZdKSIrZSsiPS4qPygmfCQpIiwiaSIpO3JldHVybiB0Lm1hdGNoKHIpP3QucmVwbGFjZShyLCIkMSIrZSsiPSIrbisiJDIiKTp0fSxjPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPS9eaHR0cHM/OlwvXC8vaSksZS50ZXN0KHQudHJpbSgpKX0sbD1mdW5jdGlvbih0KXt2YXIgZT10LnRyaW0oKTtpZighL15odHRwcz86XC9cL1xTKyQvaS50ZXN0KGUpKXJldHVybiExO3RyeXtyZXR1cm4iIiE9PW5ldyBVUkwoZSkuaG9zdG5hbWV9Y2F0Y2godCl7cmV0dXJuITF9fSxmPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiExO3RyeXt2YXIgZT1uZXcgVVJMKHQpO3JldHVybiJodHRwOiI9PT1lLnByb3RvY29sfHwiaHR0cHM6Ij09PWUucHJvdG9jb2x9Y2F0Y2godCl7cmV0dXJuITF9fSxkPWZ1bmN0aW9uKHQpe2lmKCF0fHwic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuITA7dHJ5e3JldHVybiBuZXcgVVJMKHQpLGYodCl9Y2F0Y2godCl7cmV0dXJuITB9fSxwPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRXJyb3IoIkludmFsaWQgVVJMIHByb3RvY29sLiBPbmx5IGh0dHA6Ly8gYW5kIGh0dHBzOi8vIGFyZSBzdXBwb3J0ZWQgZm9yIFhNTEh0dHBSZXF1ZXN0LiBVUkw6ICIrdCl9LGg9ZnVuY3Rpb24odCl7aWYoIXR8fCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gdDt0cnl7dmFyIGU9bmV3IFVSTCh0KTtyZXR1cm4iIitlLm9yaWdpbitlLnBhdGhuYW1lfWNhdGNoKGUpe3JldHVybiB0LnNwbGl0KCI/IilbMF0uc3BsaXQoIiMiKVswXX19fSwzODg4MzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtCOTpmdW5jdGlvbigpe3JldHVybiBhfSxIVjpmdW5jdGlvbigpe3JldHVybiBvfSxxRTpmdW5jdGlvbigpe3JldHVybiByfSx4SDpmdW5jdGlvbigpe3JldHVybiB1fSx6dTpmdW5jdGlvbigpe3JldHVybiBpfX0pO3ZhciByPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gTWF0aC5taW4obixNYXRoLm1heCh0LGUpKX0sbz1mdW5jdGlvbih0KXtpZih0KXJldHVybiB0W3QubGVuZ3RoLTFdfSxpPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpfSxhPWZ1bmN0aW9uKHQpe3JldHVybi9eKChbXjw+KClbXF1cXC4sOzpcc0BcIl0rKFwuW148PigpW1xdXFwuLDs6XHNAXCJdKykqKXwoXCIuK1wiKSlAKChcW1swLTldezEsM31cLlswLTldezEsM31cLlswLTldezEsM31cLlswLTldezEsM31cXSl8KChbYS16QS1aXC0wLTldK1wuKStbYS16QS1aXXsyLH0pKSQvLnRlc3QodCl9LHU9ZnVuY3Rpb24odCl7cmV0dXJuInBhcnRpY2lwYW50X2FkZGVkIj09PXR8fCJwYXJ0aWNpcGFudF9yZW1vdmVkIj09PXR8fCJhcnRpY2xlX2ZlZWRiYWNrX3JlcXVlc3RlZCI9PT10fHwidGVtcG9yYXJ5X2V4cGVjdGF0aW9ucyI9PT10fHwibWVyZ2VkX3ByaW1hcnlfY29udmVyc2F0aW9uIj09PXR8fCJ0ZWFtbWF0ZV9qb2luZWQiPT09dH19LDcxNDQ0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse056OmZ1bmN0aW9uKCl7cmV0dXJuIHN9LFpIOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHU1OmZ1bmN0aW9uKCl7cmV0dXJuIGF9LHV0OmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSk7dmFyIHI9big0MDIzOCksbz0iaW50ZXJjb20tc25pcHBldF9fd29ya2Zsb3ctcHJldmlld19faW5zdGFuY2UtaWQiLGk9ImludGVyY29tLXNuaXBwZXRfX3dvcmtmbG93LXByZXZpZXdfX3Byb2ZpbGUtdmVyc2lvbi1pZCI7ZnVuY3Rpb24gYSh0KXsoMCxyLnlKKShvLG51bGwhPXQ/dDpudWxsKX1mdW5jdGlvbiB1KCl7cmV0dXJuKDAsci56aikoKVtvXX1mdW5jdGlvbiBzKHQpeygwLHIueUopKGksbnVsbCE9dD90Om51bGwpfWZ1bmN0aW9uIGMoKXtyZXR1cm4oMCxyLnpqKSgpW2ldfX0sNDE2MDk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7R1Y6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sUzQ6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sakw6ZnVuY3Rpb24oKXtyZXR1cm4gaX19KTt2YXIgcj1uKDcxNDY4KSxvPW4oMTU0NTIpLGk9ci53QSxhPXIuZDQsdT1vLnpELndpdGhUeXBlcygpfSw4ODU3NjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtBOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIHI9big5NjU0MCksbz1uKDQwMDg1KTtmdW5jdGlvbiBpKCl7cmV0dXJuKDAsci51c2VDb250ZXh0KShvLlQpfX0sMzI5ODpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtKSzpmdW5jdGlvbigpe3JldHVybiBffSxUbDpmdW5jdGlvbigpe3JldHVybiBTfSxWZjpmdW5jdGlvbigpe3JldHVybiBFfSxpZDpmdW5jdGlvbigpe3JldHVybiB4fSx4UzpmdW5jdGlvbigpe3JldHVybiB3fX0pO3ZhciByPW4oOTg2MTYpLG89bigyNjc2NSk7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0saSh0KX1mdW5jdGlvbiBhKCl7cmV0dXJuIGE9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxhLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiB1KCl7dT1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30scz1hLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsYz1hLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLGw9YS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGYodCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Zih7fSwiIil9Y2F0Y2godCl7Zj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gZCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGI/ZTpiLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgaihyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOkkodCxuLHUpfSksYX1mdW5jdGlvbiBwKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWQ7dmFyIGg9InN1c3BlbmRlZFN0YXJ0Iix2PSJzdXNwZW5kZWRZaWVsZCIseT0iZXhlY3V0aW5nIixnPSJjb21wbGV0ZWQiLG09e307ZnVuY3Rpb24gYigpe31mdW5jdGlvbiB3KCl7fWZ1bmN0aW9uIF8oKXt9dmFyIFM9e307ZihTLHMsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIHg9T2JqZWN0LmdldFByb3RvdHlwZU9mLEU9eCYmeCh4KFAoW10pKSk7RSYmRSE9PW4mJnIuY2FsbChFLHMpJiYoUz1FKTt2YXIgQz1fLnByb3RvdHlwZT1iLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFMpO2Z1bmN0aW9uIE8odCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtmKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEEodCxlKXtmdW5jdGlvbiBuKG8sYSx1LHMpe3ZhciBjPXAodFtvXSx0LGEpO2lmKCJ0aHJvdyIhPT1jLnR5cGUpe3ZhciBsPWMuYXJnLGY9bC52YWx1ZTtyZXR1cm4gZiYmIm9iamVjdCI9PWkoZikmJnIuY2FsbChmLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGYuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCx1LHMpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LHUscyl9KSk6ZS5yZXNvbHZlKGYpLnRoZW4oKGZ1bmN0aW9uKHQpe2wudmFsdWU9dCx1KGwpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCx1LHMpfSkpfXMoYy5hcmcpfXZhciBhO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBhPWE/YS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIEkoZSxuLHIpe3ZhciBvPWg7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PXkpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09Zyl7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9ayh1LHIpO2lmKHMpe2lmKHM9PT1tKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWgpdGhyb3cgbz1nLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz15O3ZhciBjPXAoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT9nOnYsYy5hcmc9PT1tKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89ZyxyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIGsoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LGsoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSksbTt2YXIgaT1wKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwsbTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwsbSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCxtKX1mdW5jdGlvbiBMKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIFQodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIGoodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChMLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFAoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW3NdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGE9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBhLm5leHQ9YX19dGhyb3cgbmV3IFR5cGVFcnJvcihpKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIHcucHJvdG90eXBlPV8sbyhDLCJjb25zdHJ1Y3RvciIse3ZhbHVlOl8sY29uZmlndXJhYmxlOiEwfSksbyhfLCJjb25zdHJ1Y3RvciIse3ZhbHVlOncsY29uZmlndXJhYmxlOiEwfSksdy5kaXNwbGF5TmFtZT1mKF8sbCwiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PXd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LF8pOih0Ll9fcHJvdG9fXz1fLGYodCxsLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEMpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LE8oQS5wcm90b3R5cGUpLGYoQS5wcm90b3R5cGUsYywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QSxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEEoZCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxPKEMpLGYoQyxsLCJHZW5lcmF0b3IiKSxmKEMscywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxmKEMsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9UCxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aixyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goVCksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLG0pOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksbX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxUKG4pLG19fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7VChuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6UChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLG19fSxlfWZ1bmN0aW9uIHModCxlLG4pe2lmKGUmJiFBcnJheS5pc0FycmF5KGUpJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXt2YXIgcj1lLmxlbmd0aDtyZXR1cm4gbChlLHZvaWQgMCE9PW4mJm48cj9uOnIpfXJldHVybiB0KGUsbil9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgbj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8saSxhLHU9W10scz0hMCxjPSExO3RyeXtpZihpPShuPW4uY2FsbCh0KSkubmV4dCwwPT09ZSl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47cz0hMX1lbHNlIGZvcig7IShzPShyPWkuY2FsbChuKSkuZG9uZSkmJih1LnB1c2goci52YWx1ZSksdS5sZW5ndGghPT1lKTtzPSEwKTt9Y2F0Y2godCl7Yz0hMCxvPXR9ZmluYWxseXt0cnl7aWYoIXMmJm51bGwhPW4ucmV0dXJuJiYoYT1uLnJldHVybigpLE9iamVjdChhKSE9PWEpKXJldHVybn1maW5hbGx5e2lmKGMpdGhyb3cgb319cmV0dXJuIHV9fSh0LGUpfHxmdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gbCh0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9sKHQsZSk6dm9pZCAwfX0odCxlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGwodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIGYodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBkKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpe2YoaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe2YoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX12YXIgcD1mdW5jdGlvbigpe3ZhciB0PWQodSgpLm1hcmsoKGZ1bmN0aW9uIHQoZSxyKXt2YXIgbyxpLGE7cmV0dXJuIHUoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZigidW5kZWZpbmVkIj09dHlwZW9mIGplc3R8fCJ0cnVlIj09PXByb2Nlc3MuZW52LlRFU1RfU0VOVFJZKXt0Lm5leHQ9MjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMjpyZXR1cm4gdC5wcmV2PTIsdC5uZXh0PTUsUHJvbWlzZS5hbGwoW24uZSg3ODcyKSxuLmUoMzMyNildKS50aGVuKG4uYmluZChuLDYwMTc1KSk7Y2FzZSA1Om89dC5zZW50LGk9by5sb2dNZXNzYWdlLGE9by5hZGRUYWcsciYmT2JqZWN0LmVudHJpZXMocikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9cyhjLHQsMiksbj1lWzBdLHI9ZVsxXTthKG4scil9KSksaShlKSx0Lm5leHQ9MTQ7YnJlYWs7Y2FzZSAxMjp0LnByZXY9MTIsdC50MD10LmNhdGNoKDIpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1syLDEyXV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLGg9WyJhciIsImF6LUFaIiwiYmciLCJibiIsImJzIiwiY2EiLCJjcyIsImRhIiwiZGUiLCJkZS1mb3JtIiwiZWwiLCJlbiIsImVzIiwiZXQiLCJmYS1JUiIsImZpIiwiZnIiLCJmci1DQSIsImhlIiwiaGkiLCJociIsImh1IiwiaHkiLCJpZCIsIml0IiwiamEiLCJrYSIsImtvIiwibHQiLCJsdiIsIm1uIiwibXMiLCJuYiIsIm5sIiwicGwiLCJwdCIsInB0LUJSIiwicm8iLCJydSIsInNpIiwic2siLCJzbCIsInNyIiwic3YiLCJzdyIsInRhIiwidGgiLCJ0bCIsInRyIiwidWsiLCJ1ciIsInV6IiwidmkiLCJ6aC1DTiIsInpoLVRXIl0sdj1bImFyIiwiaGUiLCJmYS1JUiJdLHk9e2VuOm99LGc9eSxtPSJlbiIsYj1mdW5jdGlvbih0LGUpe3JldHVybiB0JiZ0LnJlcGxhY2UoL3soW1xzXFNdKz8pfS9nLChmdW5jdGlvbih0LG4pe3JldHVybiBlW25dfSkpfSx3PWZ1bmN0aW9uKCl7dmFyIHQ9ZCh1KCkubWFyaygoZnVuY3Rpb24gdChlKXt2YXIgaSxzO3JldHVybiB1KCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoLTEhPT1oLmluZGV4T2YoZSkpe3QubmV4dD0yO2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAyOmlmKHlbZV0pe3QubmV4dD0xNzticmVha31yZXR1cm4gdC5wcmV2PTMsdC5uZXh0PTYsKDAsci5BKSh7cHJvbWlzZTpmdW5jdGlvbigpe3JldHVybiBuKDI1MTY5KSgiLi8iK2UrIi5qc29uIikudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVmYXVsdH0pKX19KTtjYXNlIDY6aT10LnNlbnQseVtlXT1pLHQubmV4dD0xNzticmVhaztjYXNlIDEwOnJldHVybiB0LnByZXY9MTAsdC50MD10LmNhdGNoKDMpLHAoIkZhaWxlZCB0byBsb2FkIGxvY2FsZSAnIitlKyInOiAiK3QudDApLHkuZW58fCh5LmVuPW8pLGcuZW58fGchPT15JiYoZz1hKHt9LGcse2VuOnkuZW59KSksbT0iZW4iLHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDE3OmchPT15JiYhZ1tlXSYmeVtlXSYmKGc9YSh7fSxnLCgocz17fSlbZV09eVtlXSxzKSkpLG09ZTtjYXNlIDE5OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCxudWxsLFtbMywxMF1dKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksXz1mdW5jdGlvbigpe3JldHVybiBtfSxTPWZ1bmN0aW9uKHQsZSl7dmFyIG49Z1ttXTtpZighbilyZXR1cm4gcCgiVW5rbm93biBsb2NhbGUgJyIrbSsiJyIpLCIiO3ZhciByPW5bdF07aWYoIXIpe3AoIlVua25vd24ga2V5ICciK3QrIicgaW4gbG9jYWxlICciK20rIiciLHsiaTE4bi5taXNzaW5nIjp0KyJfaW5fIittLCJpMThuLmtleSI6dCwiaTE4bi5sb2NhbGUiOm0sImkxOG4uZXJyb3JfdHlwZSI6Im1pc3Npbmdfa2V5In0pO3ZhciBvPWcuZW58fHt9O3JldHVybiBiKG9bdF0sZSl8fCIifXRyeXtyZXR1cm4gYihyLGUpfWNhdGNoKGUpe3JldHVybiBwKCJJbnRlcnBvbGF0aW9uIGZhaWxlZCBmb3Iga2V5ICciK3QrIicgaW4gbG9jYWxlICciK20rIiciKSwiIn19LHg9ZnVuY3Rpb24odCl7aWYodCl7aWYoLTEhPT1oLmluZGV4T2YodCkpcmV0dXJuIHQ7dmFyIGU9dC5zcGxpdCgiLSIpWzBdO3JldHVybi0xIT09aC5pbmRleE9mKGUpP2U6dm9pZCAwfX0sRT1mdW5jdGlvbih0KXtyZXR1cm4tMSE9PXYuaW5kZXhPZih0KX19LDM1NTY4OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxNTUwMik7dmFyIG89big1MTg4MyksaT1uKDIxNDk4KSxhPW4oODQwNzcpLHU9bigzODk5KSxzPW4oODMxNDcpLGM9bigzODA0Mik7ZnVuY3Rpb24gbCh0KXt2YXIgZT17fSxuPSExO2lmKCIxIj09PW5hdmlnYXRvci5kb05vdFRyYWNrKWUubWFya2V0b190cmFja2luZ19jb29raWU9bnVsbCxlLmh1YnNwb3RfdHJhY2tpbmdfY29va2llPW51bGw7ZWxzZXtpZih0LmZlYXR1cmVzLm1hcmtldG9FbnJpY2htZW50SW5zdGFsbGVkKXtuPSEwO3ZhciByPWEuQS5yZWFkKCJfbWt0b190cmsiKTtyJiYoZS5tYXJrZXRvX3RyYWNraW5nX2Nvb2tpZT1yKX1pZih0LmZlYXR1cmVzLmh1YnNwb3RJbnN0YWxsZWQpe249ITA7dmFyIG89YS5BLnJlYWQoImh1YnNwb3R1dGsiKTtvJiYoZS5odWJzcG90X3RyYWNraW5nX2Nvb2tpZT1vKX19cmV0dXJue2ludGVybmFsOmUsaGFzU2NyYXBlZENvb2tpZXM6bn19dmFyIGY9bigzNTIwNiksZD1uKDM2MjY2KSxwPW4oODcyNjIpLGg9big0NDk4MCksdj1uKDM2MDQ2KSx5PW4oMzQ2MTkpLGc9big1MTY2OSksbT1uKDY5MjY5KSxiPW4oOTUxNjgpLHc9big0MTYwOSksXz1uKDM4MjUzKSxTPW4oODc2MDIpLHg9big5OTMyKSxFPW4oMzIwOTUpLEM9bigyNTExNSksTz1uKDE3ODMzKSxBPW4ubihPKTtmdW5jdGlvbiBJKHQpe3JldHVybiBJPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxJKHQpfWZ1bmN0aW9uIGsoKXtrPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciB0LGU9e30sbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLG4pe3RbZV09bi52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxhPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIix1PWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyh0LGUsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtjKHt9LCIiKX1jYXRjaCh0KXtjPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1ufX1mdW5jdGlvbiBsKHQsZSxuLHIpe3ZhciBpPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgZz9lOmcsYT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBqKHJ8fFtdKTtyZXR1cm4gbyhhLCJfaW52b2tlIix7dmFsdWU6Tyh0LG4sdSl9KSxhfWZ1bmN0aW9uIGYodCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX1lLndyYXA9bDt2YXIgZD0ic3VzcGVuZGVkU3RhcnQiLHA9InN1c3BlbmRlZFlpZWxkIixoPSJleGVjdXRpbmciLHY9ImNvbXBsZXRlZCIseT17fTtmdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIG0oKXt9ZnVuY3Rpb24gYigpe312YXIgdz17fTtjKHcsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgXz1PYmplY3QuZ2V0UHJvdG90eXBlT2YsUz1fJiZfKF8oUChbXSkpKTtTJiZTIT09biYmci5jYWxsKFMsYSkmJih3PVMpO3ZhciB4PWIucHJvdG90eXBlPWcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodyk7ZnVuY3Rpb24gRSh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2ModCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQyh0LGUpe2Z1bmN0aW9uIG4obyxpLGEsdSl7dmFyIHM9Zih0W29dLHQsaSk7aWYoInRocm93IiE9PXMudHlwZSl7dmFyIGM9cy5hcmcsbD1jLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09SShsKSYmci5jYWxsKGwsIl9fYXdhaXQiKT9lLnJlc29sdmUobC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUobCkudGhlbigoZnVuY3Rpb24odCl7Yy52YWx1ZT10LGEoYyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShzLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gTyhlLG4scil7dmFyIG89ZDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09aCl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT12KXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1BKHUscik7aWYocyl7aWYocz09PXkpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09ZCl0aHJvdyBvPXYsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPWg7dmFyIGM9ZihlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP3Y6cCxjLmFyZz09PXkpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz12LHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gQShlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsQShlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSx5O3ZhciBpPWYobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCx5O3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCx5KTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLHkpfWZ1bmN0aW9uIEwodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gVCh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gaih0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEwsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gUChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKEkoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gbS5wcm90b3R5cGU9YixvKHgsImNvbnN0cnVjdG9yIix7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSxvKGIsImNvbnN0cnVjdG9yIix7dmFsdWU6bSxjb25maWd1cmFibGU6ITB9KSxtLmRpc3BsYXlOYW1lPWMoYixzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09bXx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsYik6KHQuX19wcm90b19fPWIsYyh0LHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeCksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sRShDLnByb3RvdHlwZSksYyhDLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1DLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQyhsKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LEUoeCksYyh4LHMsIkdlbmVyYXRvciIpLGMoeCxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMoeCwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1QLGoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpqLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChUKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MseSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSx5fSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLFQobikseX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztUKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpQKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCkseX19LGV9ZnVuY3Rpb24gTCh0LGUsbixyLG8saSxhKXt0cnl7dmFyIHU9dFtpXShhKSxzPXUudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbih0KX11LmRvbmU/ZShzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIFQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7TChpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7TChpLHIsbyxhLHUsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9fXZhciBqPUEoKSgiaW50ZXJjb20uYWN0aW9ucy5sYXVuY2hlci1zZXR0aW5ncyIpLFA9KDAsdy5TNCkoImxhdW5jaGVyLXNldHRpbmdzL2ZldGNoIixUKGsoKS5tYXJrKChmdW5jdGlvbiB0KGUsbil7dmFyIHIsbyxpO3JldHVybiBrKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYobz1uLmRpc3BhdGNoLCFOKG51bGwhPShyPSgwLEMueEgpKCgwLEMueDgpKCkpKT9yOiIiKSl7dC5uZXh0PTQ7YnJlYWt9cmV0dXJuIGooIkR1cGxpY2F0ZSBsYXVuY2hlciBzZXR0aW5ncyByZXF1ZXN0LCBza2lwcGluZy4iKSx0LmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OnJldHVybiBvKCgwLFMudFgpKCkpLHQubmV4dD03LF8uQXkucG9zdEZvckxhdW5jaGVyU2V0dGluZ3Moe3Nlc3Npb246ZX0pO2Nhc2UgNzpyZXR1cm4gaT10LnNlbnQsbygoMCxTLnR6KShpKSksbygoMCx4Lm1wKShpKSksdC5hYnJ1cHQoInJldHVybiIsaSk7Y2FzZSAxMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKSksTj0oMCxFLlApKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pLDNlNSwxKSxNPXtmZXRjaDpQLHJlc2V0RGVkdXA6Ti5yZXNldH0sUj1uKDIyOTA2KSxVPW4oMzg0OSksej1uKDQwOTE1KSxIPW4oMTEzNyksRj1uKDY2Mjc0KTt2YXIgRD1uKDQwMTgpLEI9bigzODg4MyksVj1uKDY5NzQ0KSxHPW4oMjAyMTUpO2Z1bmN0aW9uIHEodCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybigwLEQuUTQpKGUpfHwodFsoMCxELmNBKShlKV09ITApLHR9KSx7fSl9ZnVuY3Rpb24gVyh0LGUpe3ZhciBuPSgwLEguQSkoZSkubGVuZ3RoPjAmJmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5ub3RpZmljYXRpb25UeXBlT3ZlcnJpZGVzLmZvcmNlU25pcHBldDtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe2lmKCgwLEQuUTQpKHQpKXJldHVybiExO3ZhciBlPXQuaWQrIi0iKygwLEIuSFYpKHQucGFydHMpLmlkO3JldHVybiB2b2lkIDA9PT1uW2VdfSkpfSh0LGUpLmxlbmd0aD4wO2lmKGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10LmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybigwLEQuUXopKHQpfSkpfSh0KSlyZXR1cm4hMDt2YXIgcj1uZXcgRGF0ZTtyZXR1cm4gci5zZXREYXRlKHIuZ2V0RGF0ZSgpLTIpLCEoKGUudXNlcj9uZXcgRGF0ZShlLnVzZXIubGFzdENvbnRhY3RlZEF0KTpuZXcgRGF0ZSk8cikmJih0Lmxlbmd0aD4xfHxuKX12YXIgSz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZSxuLHI9dC5nZXRTdGF0ZSgpLG89cSgoMCxILkEpKHIpLnNsaWNlKDAsLTMpKSxpPSgwLHouQSkociksYT1xKFcoaSxyKT9pOltdKTsoT2JqZWN0LmtleXMobykubGVuZ3RoPjB8fE9iamVjdC5rZXlzKGEpLmxlbmd0aD4wKSYmZnVuY3Rpb24odCxlLG4pe3ZhciByO2lmKG51bGwhPShyPXQubWVzc2FnZSkmJnIuY29udmVyc2F0aW9uSWQpcmV0dXJuITE7dmFyIG89ZnVuY3Rpb24odCl7cmV0dXJuIHQubm90aWZpY2F0aW9uVHlwZU92ZXJyaWRlcy5zdXBwcmVzc30odCksaT1mdW5jdGlvbih0KXtyZXR1cm4gdC5ub3RpZmljYXRpb25UeXBlT3ZlcnJpZGVzLmZvcmNlU25pcHBldH0odCk7cmV0dXJuISgwLEcuYikobyxlKXx8ISgwLEcuYikoaSxuKX0ocixvLGEpJiZ0LmRpc3BhdGNoKChlPW8sbj1hLHt0eXBlOkYublAsc3VwcHJlc3M6ZSxmb3JjZVNuaXBwZXQ6bn0pKSxmdW5jdGlvbih0LGUsbil7aWYoT2JqZWN0LmtleXModCkubGVuZ3RoPD0xKXJldHVybjt2YXIgcj1lLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIXQuZGlzbWlzc2VkfSkpO2lmKDEhPT1yLmxlbmd0aHx8ImZ1bGwiIT09clswXS5wYXJ0c1swXS5ub3RpZmljYXRpb25UeXBlKXJldHVybjsoMCxWLnNxKSgiZnVsbE1lc3NhZ2VTdXBwcmVzc2VkIix7bWVzc2FnZVR5cGU6clswXS5wYXJ0c1swXS5tZXNzYWdlVHlwZSxkaXNtaXNzZWRDb3VudDplLmxlbmd0aC1yLmxlbmd0aCxpc0xhdW5jaGVyRW5hYmxlZDpuLmlzTGF1bmNoZXJFbmFibGVkfSl9KGEsaSxyLmxhdW5jaGVyKX19LFo9bigxNTQ1MiksSj1uKDE0NjQ0KSxZPW4oMzQ1OSksUT1uKDE5NzA3KSxYPW4oMjI5NzkpO2Z1bmN0aW9uICQoKXtyZXR1cm4gJD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LCQuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciB0dD0iaW50ZXJjb20tZXhwYW5kZWQtbW9kZSIsZXQ9T2JqZWN0LmFzc2lnbjt2YXIgbnQ9T2JqZWN0LmFzc2lnbixydD17aXNMYXVuY2hlckVuYWJsZWQ6ITEsbGF1bmNoZXJFbmFibGVkT3ZlcnJpZGU6Im5vdC1wcmVzZW50In07dmFyIG90PW4oOTM5ODIpLGl0PU9iamVjdC5hc3NpZ24sYXQ9e2lzUHJlc2VudDohMSxsYXN0UmVxdWVzdEF0OjB9O3ZhciB1dD1mdW5jdGlvbih0LGUpe3ZhciBuO2lmKHZvaWQgMD09PXQmJih0PWF0KSwoMCxvdC5YWCkoZSkpe3ZhciByLG8saSxhPWl0KHt9LHQudGVzdEFzc2lnbm1lbnRzLG51bGw9PWV8fG51bGw9PShyPWUucGF5bG9hZCk/dm9pZCAwOnIudGVzdEFzc2lnbm1lbnRzKTtyZXR1cm4gaXQoe30sdCx7dGVzdEFzc2lnbm1lbnRzOmEscmVzb2x1dGlvbkJvdEJlaGF2aW9yVmVyc2lvbklkOm51bGw9PWV8fG51bGw9PShvPWUucGF5bG9hZCk/dm9pZCAwOm8ucmVzb2x1dGlvbkJvdEJlaGF2aW9yVmVyc2lvbklkLHVzZXJIYXNFbWFpbDpudWxsPT1lfHxudWxsPT0oaT1lLnBheWxvYWQpP3ZvaWQgMDppLnVzZXJIYXNFbWFpbH0pfXN3aXRjaChlLnR5cGUpe2Nhc2UgRi5QMkk6dmFyIHU9ZS51cmwscz1lLmN1c3RvbUF0dHJpYnV0ZXMsYz1lLmFub255bW91c1Nlc3Npb25EdXJhdGlvbixsPWUuYWN0aXZlQ29tcGFueUlkO3JldHVybiBpdCh7fSx0LHt1cmw6dSxjdXN0b21BdHRyaWJ1dGVzOnMsYW5vbnltb3VzU2Vzc2lvbkR1cmF0aW9uOmMsYWN0aXZlQ29tcGFueUlkOmwsbGFzdFJlcXVlc3RBdDpEYXRlLm5vdygpfSk7Y2FzZSBGLlJ3cTp2YXIgZixkPWUudXNlcixwPWQuaWQsaD1kLmxvY2FsZSx2PWQuY291bnRyeUNvZGUseT1kLnJvbGUsZz1kLm5hbWUsbT1kLnVzZXJTdXBwbGllZEVtYWlsLGI9ZC51bnJlYWRDb252ZXJzYXRpb25JZHMsdz1kLnVucmVhZERpc21pc3NlZENvbnZlcnNhdGlvbklkcyxfPWQubm90aWZpY2F0aW9uTGlua0NvbnZlcnNhdGlvbklkLFM9ZC5waG9uZU51bWJlcix4PWQuYXJ0aWNsZUNvbnZlcnNhdGlvbklkLEU9ZC5jZGFzQnJlYWNoaW5nTGltaXQsQz1kLmxhc3RDb250YWN0ZWRBdCxPPWQucmVxdWlyZXNDb29raWVDb25zZW50LEE9ZC5yZXNvbHV0aW9uQm90QmVoYXZpb3JWZXJzaW9uSWQsST1kLnNlYXJjaFJlcXVpcmVkQmVmb3JlQ29udmVyc2F0aW9uLGs9ZC5wcmV2ZW50TXVsdGlwbGVJbmJvdW5kQ29udmVyc2F0aW9uLEw9ZC50ZXN0QXNzaWdubWVudHMsVD1kLm5ld3NmZWVkSWQsaj1kLnVucmVhZE5ld3NJdGVtc0NvdW50LFA9ZC51bnJlYWRUaWNrZXRzQ291bnQsTj1kLmxhc3RVbnJlYWROZXdzSXRlbUlkLE09ZC5uZXdzZmVlZExhc3RWaXNpdCxSPShudWxsPT1lfHxudWxsPT0oZj1lLnVzZXIpP3ZvaWQgMDpmLmhhc0NvbnZlcnNhdGlvbnMpfHwoKG51bGw9PWI/dm9pZCAwOmIubGVuZ3RoKXx8MCk+MHx8KChudWxsPT13P3ZvaWQgMDp3Lmxlbmd0aCl8fDApPjAsVT1pdCh7fSx0LnRlc3RBc3NpZ25tZW50cyxMKTtyZXR1cm4gaXQoe30sdCx7aWQ6cCxsb2NhbGU6aCxjb3VudHJ5Q29kZTp2LHJvbGU6eSxuYW1lOmcsdXNlclN1cHBsaWVkRW1haWw6bSxoYXNDb252ZXJzYXRpb25zOlIscGhvbmVOdW1iZXI6UyxhcnRpY2xlQ29udmVyc2F0aW9uSWQ6eCxub3RpZmljYXRpb25MaW5rQ29udmVyc2F0aW9uSWQ6XyxjZGFzQnJlYWNoaW5nTGltaXQ6RSxsYXN0Q29udGFjdGVkQXQ6QyxyZXF1aXJlc0Nvb2tpZUNvbnNlbnQ6TyxyZXNvbHV0aW9uQm90QmVoYXZpb3JWZXJzaW9uSWQ6QSxzZWFyY2hSZXF1aXJlZEJlZm9yZUNvbnZlcnNhdGlvbjpJLHByZXZlbnRNdWx0aXBsZUluYm91bmRDb252ZXJzYXRpb246ayx0ZXN0QXNzaWdubWVudHM6VSxuZXdzZmVlZElkOlQsdW5yZWFkTmV3c0l0ZW1zQ291bnQ6aix1bnJlYWRUaWNrZXRzQ291bnQ6UCxsYXN0VW5yZWFkTmV3c0l0ZW1JZDpOLG5ld3NmZWVkTGFzdFZpc2l0Ok19KTtjYXNlIEYuWFdvOmNhc2UgRi5JRFA6Y2FzZSBGLmZFQzpjYXNlIEYudXZJOnJldHVybiBpdCh7fSx0LHtoYXNDb252ZXJzYXRpb25zOiEwfSk7Y2FzZSBGLm1HWDp2YXIgej0oZS5jb252ZXJzYXRpb25zfHx7fSkuY29udmVyc2F0aW9ucyxIPXZvaWQgMCE9PXomJnoubGVuZ3RoPjA7cmV0dXJuIGl0KHt9LHQse2hhc0NvbnZlcnNhdGlvbnM6SH0pO2Nhc2UgRi5fYlM6dmFyIEQ9ZS51c2VyU3VwcGxpZWRFbWFpbDtyZXR1cm4gaXQoe30sdCx7dXNlclN1cHBsaWVkRW1haWw6RH0pO2Nhc2UgRi5mbjg6dmFyIEI9ZS5waG9uZU51bWJlcjtyZXR1cm4gaXQoe30sdCx7cGhvbmVOdW1iZXI6Qn0pO2Nhc2UgRi5uaVg6cmV0dXJuIGl0KHt9LHQse2lzUHJlc2VudDohMH0pO2Nhc2UgRi5OVXo6cmV0dXJuIGl0KHt9LHQse2lzUHJlc2VudDohMX0pO2Nhc2UgRi5yMng6cmV0dXJuIGl0KHt9LHQsbnVsbD09ZXx8bnVsbD09KG49ZS5zdGF0ZSk/dm9pZCAwOm4udXNlcik7Y2FzZSBGLlVPQTpyZXR1cm4gaXQoe30sdCx7bmV3c2ZlZWRMYXN0VmlzaXQ6ZS5uZXdzZmVlZExhc3RWaXNpdCx1bnJlYWROZXdzSXRlbXNDb3VudDowfSk7Y2FzZSBGLm4yXzp2YXIgVj10LnVucmVhZFRpY2tldHNDb3VudDtyZXR1cm4gaXQoe30sdCx7dW5yZWFkVGlja2V0c0NvdW50OlY/Vi0xOlZ9KTtjYXNlIEYuY2x1OnZhciBHPXQudW5yZWFkVGlja2V0c0NvdW50O3JldHVybiBpdCh7fSx0LHt1bnJlYWRUaWNrZXRzQ291bnQ6Rz9HKzE6R30pO2RlZmF1bHQ6cmV0dXJuIHR9fSxzdD1PYmplY3QuYXNzaWduO2Z1bmN0aW9uIGN0KCl7cmV0dXJuIGN0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sY3QuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBsdD17aWQ6bnVsbCxwYXJ0czpbXSxvcGVyYXRvcjpudWxsfTt2YXIgZnQ9e307dmFyIGR0PXt9O2Z1bmN0aW9uIHB0KCl7cmV0dXJuIHB0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0scHQuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBodD17fTtmdW5jdGlvbiB2dCh0LGUsbil7aWYoZSYmIUFycmF5LmlzQXJyYXkoZSkmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ZhciByPWUubGVuZ3RoO3JldHVybiBndChlLHZvaWQgMCE9PW4mJm48cj9uOnIpfXJldHVybiB0KGUsbil9ZnVuY3Rpb24geXQodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGd0KHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGd0KHQsZSk7dmFyIG49e30udG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP2d0KHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gZ3QodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIG10KCl7cmV0dXJuIG10PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sbXQuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBidD17YWN0aXZlQXJ0aWNsZUlkOm51bGwsaXNMb2FkZWQ6ITEsdmlld1N0YWNrOltdLHRyYW5zaXRpb25pbmdCYWNrOiExLGluU2VhcmNoQnJvd3NlOiExLGhhc2g6IiIsYXJ0aWNsZUxvY2FsZTpudWxsLGlzU3RhbmRhbG9uZTohMSxmcm9tSG9tZVNjcmVlblN1Z2dlc3Rpb25zOiExfTtmdW5jdGlvbiB3dCh0KXtpZigwPT09dC5jaGlsZHJlbi5sZW5ndGgpcmV0dXJuW107dmFyIGU9W107cmV0dXJuIHQuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24odCl7ZT1lLmNvbmNhdCh0LmFydGljbGVzLmNvbmNhdCh3dCh0KSkpfSkpLGUuZmxhdCgpfXZhciBfdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFydGljbGVzLmNvbmNhdCh3dCh0KSl9KSkuZmxhdCgpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlLmlkXT1lLHR9KSx7fSl9O2Z1bmN0aW9uIFN0KHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBBdCh0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fE90KHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHh0KCl7cmV0dXJuIHh0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0seHQuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIEV0KHQsZSxuKXtpZihlJiYhQXJyYXkuaXNBcnJheShlKSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIEF0KGUsdm9pZCAwIT09biYmbjxyP246cil9cmV0dXJuIHQoZSxuKX1mdW5jdGlvbiBDdCh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgbj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8saSxhLHU9W10scz0hMCxjPSExO3RyeXtpZihpPShuPW4uY2FsbCh0KSkubmV4dCwwPT09ZSl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47cz0hMX1lbHNlIGZvcig7IShzPShyPWkuY2FsbChuKSkuZG9uZSkmJih1LnB1c2goci52YWx1ZSksdS5sZW5ndGghPT1lKTtzPSEwKTt9Y2F0Y2godCl7Yz0hMCxvPXR9ZmluYWxseXt0cnl7aWYoIXMmJm51bGwhPW4ucmV0dXJuJiYoYT1uLnJldHVybigpLE9iamVjdChhKSE9PWEpKXJldHVybn1maW5hbGx5e2lmKGMpdGhyb3cgb319cmV0dXJuIHV9fSh0LGUpfHxPdCh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gT3QodCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIEF0KHQsZSk7dmFyIG49e30udG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP0F0KHQsZSk6dm9pZCAwfX1mdW5jdGlvbiBBdCh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gSXQodCl7cmV0dXJuIEl0PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxJdCh0KX1mdW5jdGlvbiBrdCh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGt0KHQpfSkpOnQmJiJvYmplY3QiPT09SXQodCk/T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHQpLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9RXQoQ3QsdCwyKTtyZXR1cm5bZVswXSxrdChlWzFdKV19KSkpOnR9ZnVuY3Rpb24gTHQodCxlKXt2YXIgbj14dCh7fSx0KSxyPWZ1bmN0aW9uKCl7aWYoIU9iamVjdC5oYXNPd24oZSxvKSlyZXR1cm4gMTt2YXIgdD1lW29dLHI9bltvXTtpZihBcnJheS5pc0FycmF5KHQpJiZBcnJheS5pc0FycmF5KHIpKXt2YXIgaT1FdChTdCxyKTt0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIG49aVtlXTt0JiYib2JqZWN0Ij09PUl0KHQpJiYhQXJyYXkuaXNBcnJheSh0KSYmbiYmIm9iamVjdCI9PT1JdChuKSYmIUFycmF5LmlzQXJyYXkobik/aVtlXT1MdChuLHQpOmlbZV09a3QodCl9KSksbltvXT1pfWVsc2UgdCYmIm9iamVjdCI9PT1JdCh0KSYmIUFycmF5LmlzQXJyYXkodCkmJnImJiJvYmplY3QiPT09SXQocikmJiFBcnJheS5pc0FycmF5KHIpP25bb109THQocix0KTpuW29dPWt0KHQpfTtmb3IodmFyIG8gaW4gZSlyKCk7cmV0dXJuIG59dmFyIFR0PXt9O3ZhciBqdD1bXTt2YXIgUHQ9bigyNjk0Nyk7ZnVuY3Rpb24gTnQodCxlKXtzd2l0Y2godm9pZCAwPT09dCYmKHQ9dW5kZWZpbmVkKSxlLnR5cGUpe2Nhc2UgRi5BZEw6Y2FzZSBGLm9uWDpjYXNlIEYuRHpMOmNhc2UgRi5mRUM6cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sdCx7YXR0cmlidXRlczp0LmF0dHJpYnV0ZXMubWFwKChmdW5jdGlvbihlKXt2YXIgbj1udWxsPT1lLnZhbHVlfHwiIj09PWUudmFsdWU/InVuc2F2ZWQiOiJzYXZlZCI7cmV0dXJuImJvdF93b3JrZmxvdyI9PT10LnR5cGUmJiJzYXZlZCI9PT1uJiYobj10LmF0dHJpYnV0ZV9jb2xsZWN0b3JfbG9ja2VkfHxlLmF0dHJpYnV0ZV9jb2xsZWN0aW9uX2Rpc2FibGVkfHwhZS5hdHRyaWJ1dGVfY29sbGVjdGlvbl9vdmVyd3JpdGFibGU/InNhdmVkIjoidW5zYXZlZCIpLE9iamVjdC5hc3NpZ24oe30sZSx7c2F2ZVN0YXRlOm59KX0pKX0pO2Nhc2UgRi5QV0M6dmFyIG49ZS5pZGVudGlmaWVyLHI9ZS52YWx1ZTtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSx0LHthdHRyaWJ1dGVzOnQuYXR0cmlidXRlcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkZW50aWZpZXI9PT1uP09iamVjdC5hc3NpZ24oe30sdCx7dmFsdWU6cixzYXZlU3RhdGU6InNhdmluZyJ9KTp0fSkpfSk7Y2FzZSBGLlpTOTpyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSx0LHthdHRyaWJ1dGVzOnQuYXR0cmlidXRlcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkZW50aWZpZXI9PT1lLmlkZW50aWZpZXI/T2JqZWN0LmFzc2lnbih7fSx0LHtzYXZlU3RhdGU6InNhdmVkIn0pOnR9KSl9KTtjYXNlIEYuY3g0OnZhciBvPSgwLFB0LnMzKShlLmVycm9yKSxpPW8/KDAsUHQuZVIpKG8pOnZvaWQgMDtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSx0LHthdHRyaWJ1dGVzOnQuYXR0cmlidXRlcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkZW50aWZpZXI9PT1lLmlkZW50aWZpZXI/T2JqZWN0LmFzc2lnbih7fSx0LHtzYXZlU3RhdGU6ImZhaWxlZCIsZXJyb3JDb2RlOml9KTp0fSkpfSk7ZGVmYXVsdDpyZXR1cm4gdH19dmFyIE10PVsiY3JlYXRlZEF0IiwiYm9keSIsImNsaWVudElkIiwiZmlsZSIsImlzTWVzc2FnZSIsInNlbGVjdGVkUmVwbHlPcHRpb24iLCJjb21wb3NlclN1Z2dlc3Rpb25JdGVtIiwiYXV0aG9yIiwicGFydFR5cGUiXTtmdW5jdGlvbiBSdCh0LGUsbil7aWYoZSYmIUFycmF5LmlzQXJyYXkoZSkmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ZhciByPWUubGVuZ3RoO3JldHVybiB6dChlLHZvaWQgMCE9PW4mJm48cj9uOnIpfXJldHVybiB0KGUsbil9ZnVuY3Rpb24gVXQodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHp0KHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHp0KHQsZSk7dmFyIG49e30udG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP3p0KHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24genQodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIEh0KCl7cmV0dXJuIEh0PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sSHQuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBGdD1PYmplY3QuYXNzaWduLER0PVsiY2Fyb3VzZWwiLCJpdGVtX2Nhcm91c2VsIiwidmFyaWFudHNfY2Fyb3VzZWwiXSxCdD1bImZpbl9hbnN3ZXIiLCJjb21wb3NpdGUiXTtmdW5jdGlvbiBWdCh0LGUpe3ZhciBuPSh0LmNyZWF0ZWRBdD90LmNyZWF0ZWRBdC5nZXRUaW1lKCk6MS8wKS0oZS5jcmVhdGVkQXQ/ZS5jcmVhdGVkQXQuZ2V0VGltZSgpOjEvMCk7cmV0dXJuIDAhPT1uP246KHQuaXNNZXNzYWdlPzA6MSktKGUuaXNNZXNzYWdlPzA6MSl9ZnVuY3Rpb24gR3QodCl7dmFyIGU9dC5jcmVhdGVkQXQsbj10LmJvZHkscj10LmNsaWVudElkLG89dC5maWxlLGk9dC5pc01lc3NhZ2UsYT10LnNlbGVjdGVkUmVwbHlPcHRpb24sdT10LmNvbXBvc2VyU3VnZ2VzdGlvbkl0ZW0scz10LmF1dGhvcixjPXQucGFydFR5cGU7cmV0dXJuIEh0KHtib2R5Om4sY3JlYXRlZEF0OmUsY2xpZW50SWQ6cixpc01lc3NhZ2U6aSxmaWxlOm8sc2VsZWN0ZWRSZXBseU9wdGlvbjphLGNvbXBvc2VyU3VnZ2VzdGlvbkl0ZW06dSxwYXJ0VHlwZTp2b2lkIDA9PT1jP2k/Im1lc3NhZ2UiOiJjb21tZW50IjpjLGV2ZW50RGF0YTp7fSxzYXZlU3RhdGU6InNhdmluZyIsc2VlblN0YXRlOiJwZW5kaW5nIixyZXBseU9wdGlvbnM6W10sYXV0aG9yOnN8fHtpc0FkbWluOiExLGlzU2VsZjohMH19LGZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dClyZXR1cm57fTt2YXIgbj17fTtmb3IodmFyIHIgaW4gdClpZih7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikpe2lmKC0xIT09ZS5pbmRleE9mKHIpKWNvbnRpbnVlO25bcl09dFtyXX1yZXR1cm4gbn0odCxNdCkpfWZ1bmN0aW9uIHF0KHQsZSl7c3dpdGNoKHZvaWQgMD09PXQmJih0PVtdKSxlLnR5cGUpe2Nhc2UgRi5YV286dmFyIG49ZS5wYXJ0LHI9bi5ib2R5LG89bi5jcmVhdGVkQXQsaT1uLmZpbGUsYT1uLmNvbXBvc2VyU3VnZ2VzdGlvbkl0ZW0sdT1uLmNsaWVudElkLHM9bi51eFN0eWxlO3JldHVybiBlLmlzUmV0cnk/dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBGdCh7fSx0LHtzYXZlU3RhdGU6InNhdmluZyJ9KX0pKTp0LmNvbmNhdChHdCh7Y3JlYXRlZEF0Om8sYm9keTpyLGZpbGU6aSxpc01lc3NhZ2U6ITAsY29tcG9zZXJTdWdnZXN0aW9uSXRlbTphLGNsaWVudElkOnUsdXhTdHlsZTpzfSkpO2Nhc2UgRi5JdGw6cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4iYm90X2ludHJvIj09PXQucGFydFR5cGU/dDpGdCh7fSx0LHtzYXZlU3RhdGU6ImZhaWxlZCIsc2F2ZUZhaWx1cmVSZWFzb246ZS5yZWFzb259KX0pKTtjYXNlIEYuUHpTOnZhciBjPWUucGFydCxsPWMuYm9keSxmPWMuY3JlYXRlZEF0LGQ9Yy5jbGllbnRJZCxwPWMuZmlsZSxoPWMuc2VsZWN0ZWRSZXBseU9wdGlvbix2PWMudXhTdHlsZTtyZXR1cm4gZS5pc1JldHJ5P3QubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZD09PXQuY2xpZW50SWQ/RnQoe30sdCx7c2F2ZVN0YXRlOiJzYXZpbmcifSk6dH0pKTp0LmNvbmNhdChHdCh7Y3JlYXRlZEF0OmYsYm9keTpsLGNsaWVudElkOmQsZmlsZTpwLGlzTWVzc2FnZTohMSxzZWxlY3RlZFJlcGx5T3B0aW9uOmgsdXhTdHlsZTp2fSkpO2Nhc2UgRi5ITXU6cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtpZihlLnBhcnQuY2xpZW50SWQhPT10LmNsaWVudElkKXJldHVybiB0O3ZhciBuPUZ0KHt9LHQsZS5wYXJ0LHtzYXZlU3RhdGU6InNhdmVkIn0pOygicGVuZGluZyI9PT1uLnNlZW5TdGF0ZSYmKG4uc2VlblN0YXRlPSJub3Qtc2Vlbi15ZXQiKSx0LmJvZHkmJm4uYm9keSYmdC5ib2R5Lmxlbmd0aD09PW4uYm9keS5sZW5ndGgpJiYodC5ib2R5LmV2ZXJ5KChmdW5jdGlvbih0LGUpe3ZhciByPW4uYm9keVtlXTtyZXR1cm4iaW1hZ2UiPT09dC50eXBlJiYiaW1hZ2UiPT09ci50eXBlP3Qud2lkdGg9PT1yLndpZHRoJiZ0LmhlaWdodD09PXIuaGVpZ2h0OnQudHlwZT09PXIudHlwZSYmdC50ZXh0PT09ci50ZXh0fSkpJiYobi5ib2R5PXQuYm9keSkpO3JldHVybiBufSkpO2Nhc2UgRi5VMmQ6cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5wYXJ0LmNsaWVudElkPT09dC5jbGllbnRJZD9GdCh7fSx0LHtzYXZlU3RhdGU6ImZhaWxlZCIsc2F2ZUZhaWx1cmVSZWFzb246ZS5yZWFzb259KTp0fSkpO2Nhc2UgRi5vblg6Y2FzZSBGLmZFQzpjYXNlIEYuRHpMOnJldHVybiBlLmNvbnZlcnNhdGlvbi5wYXJ0cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmZvcm0/RnQoe30sdCx7Zm9ybTpOdCh0LmZvcm0sZSksc2F2ZVN0YXRlOnQuc2F2ZVN0YXRlfHwic2F2ZWQifSk6RnQoe30sdCx7c2F2ZVN0YXRlOnQuc2F2ZVN0YXRlfHwic2F2ZWQifSl9KSkudG9Tb3J0ZWQoVnQpO2Nhc2UgRi5hbE06dmFyIHk9ZS5wYXJ0LGc9dC5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jbGllbnRJZD09PXkuY2xpZW50SWR9KSk7aWYobnVsbCE9ZyYmZy5pZClyZXR1cm4gdDt2YXIgbSxiPXZvaWQgMD09PXkudG9rZW5TZXF1ZW5jZUluZGV4O3JldHVybiBtPWc/dC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIHQuY2xpZW50SWQhPT15LmNsaWVudElkfHx0LnN0cmVhbUVuZGVkP3Q6Yj9GdCh7fSx0LHt0b2tlblNlcXVlbmNlSW5kZXg6dm9pZCAwLHN0cmVhbUVuZGVkOiEwfSk6IXQuaWQmJigiY29tcG9zaXRlIj09PXkucGFydFR5cGU/eS50b2tlblNlcXVlbmNlSW5kZXg+PShudWxsIT0oZT1udWxsPT10P3ZvaWQgMDp0LnRva2VuU2VxdWVuY2VJbmRleCk/ZTotMSk6eS50b2tlblNlcXVlbmNlSW5kZXg+KG51bGwhPShuPW51bGw9PXQ/dm9pZCAwOnQudG9rZW5TZXF1ZW5jZUluZGV4KT9uOi0xKSk/ZnVuY3Rpb24odCxlKXtpZigiY29tcG9zaXRlIiE9PWUucGFydFR5cGV8fCF0LnNlZ21lbnRzfHwhZS5zZWdtZW50cylyZXR1cm4gZTt2YXIgbj1lLnNlZ21lbnRzLm1hcCgoZnVuY3Rpb24oZSxuKXt2YXIgcj10LnNlZ21lbnRzW25dO3JldHVybiBlJiYiYnVmZmVyaW5nIj09PWUudHlwZSYmciYmLTEhPT1EdC5pbmRleE9mKHIudHlwZSk/cjplfSkpO3JldHVybiBIdCh7fSxlLHtzZWdtZW50czpufSl9KHQseSk6dH0pKTpbXS5jb25jYXQoUnQoVXQsdCksW2I/RnQoe30seSx7c3RyZWFtRW5kZWQ6ITB9KTp5XSksbT1tLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuISEoIXR8fCF0LmNsaWVudElkfHx2b2lkIDA9PT10LnRva2VuU2VxdWVuY2VJbmRleCYmIXQuc3RyZWFtRW5kZWR8fHQuaWR8fC0xPT09QnQuaW5kZXhPZih0LnBhcnRUeXBlKXx8dC5jbGllbnRJZD09PXkuY2xpZW50SWR8fHQuc3RyZWFtR3JvdXBJZCYmdC5zdHJlYW1Hcm91cElkPT09eS5zdHJlYW1Hcm91cElkKX0pKSxtO2Nhc2UgRi5BZEw6dmFyIHc9ZS5wYXJ0LF89dy5mb3JtP0Z0KHt9LHcse2Zvcm06TnQody5mb3JtLGUpfSk6dyxTPXQuZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4oMCxELnNpKSh0LF8pfSkpO3JldHVybi0xIT09Uz90Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZT09PVM/Xzp0fSkpOltdLmNvbmNhdChSdChVdCx0KSxbX10pLnRvU29ydGVkKFZ0KTtjYXNlIEYuRm44OnZhciB4PWUuY2xpZW50SWQ7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jbGllbnRJZD09PXgmJnZvaWQgMCE9PXQudG9rZW5TZXF1ZW5jZUluZGV4P0Z0KHt9LHQse3Rva2VuU2VxdWVuY2VJbmRleDp2b2lkIDAsc3RyZWFtRW5kZWQ6ITB9KTp0fSkpO2Nhc2UgRi5mRUw6cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZD09PWUucGFydElkP0Z0KHt9LHQse2hhbmRvdmVyQ3RhOkZ0KHt9LHQuaGFuZG92ZXJDdGEse3N0YXR1czoic3Bhd25lZCIsc3Bhd25lZF9jb252ZXJzYXRpb25faWQ6ZS5zcGF3bmVkQ29udmVyc2F0aW9uSWR9KX0pOnR9KSk7Y2FzZSBGLklEejpjYXNlIEYuVDRrOnJldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhY3Rpb25zUmVwbHk/RnQoe30sdCx7cmVhY3Rpb25zUmVwbHk6e3JlYWN0aW9uSW5kZXg6ZS5yZWFjdGlvbkluZGV4LHJlYWN0aW9uU2V0OnQucmVhY3Rpb25zUmVwbHkucmVhY3Rpb25TZXR9fSk6dH0pKTtjYXNlIEYuYVE1OnJldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuImNvbnZlcnNhdGlvblJhdGluZyI9PT10Lm1lc3NhZ2VUeXBlJiZ0LmNvbnZlcnNhdGlvblJhdGluZy51dWlkPT09ZS5yYXRpbmdVdWlkP0Z0KHt9LHQse2NvbnZlcnNhdGlvblJhdGluZzpGdCh7fSx0LmNvbnZlcnNhdGlvblJhdGluZyx7Y2hvc2VuUmF0aW5nOmUucmF0aW5nSW5kZXh9KX0pOnR9KSk7Y2FzZSBGLnplXzpyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiJjb252ZXJzYXRpb25SYXRpbmciPT09dC5tZXNzYWdlVHlwZSYmdC5jb252ZXJzYXRpb25SYXRpbmcudXVpZD09PWUucmF0aW5nVXVpZD9GdCh7fSx0LHtjb252ZXJzYXRpb25SYXRpbmc6RnQoe30sdC5jb252ZXJzYXRpb25SYXRpbmcse3JlbWFyazplLnJlbWFyayxzdWJtaXR0ZWQ6ITB9KX0pOnR9KSk7Y2FzZSBGLnVmVTpyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLnBhcnQuY2xpZW50SWQ9PT10LmNsaWVudElkP0Z0KHt9LHQse2JvZHk6dC5ib2R5Lm1hcCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gMD09PW4mJiJpbWFnZSI9PT10LnR5cGU/RnQoe30sdCx7cHJvZ3Jlc3M6ZS5wcm9ncmVzc30pOnR9KSl9KTp0fSkpO2Nhc2UgRi5vX0U6Y2FzZSBGLlQkNTppZihlLmFja25vd2xlZGdlbWVudFBhcnQpe3ZhciBFPXQuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xpZW50SWQ9PT1lLmFja25vd2xlZGdlbWVudFBhcnQuY2xpZW50SWR9KSk7cmV0dXJuIEU/dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNsaWVudElkPT09ZS5hY2tub3dsZWRnZW1lbnRQYXJ0LmNsaWVudElkP0Z0KHt9LHQse3NlZW5TdGF0ZToic2VlbiJ9KTp0fSkpOnQuY29uY2F0KGUuYWNrbm93bGVkZ2VtZW50UGFydCl9cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4ibm90LXNlZW4teWV0Ij09PXQuc2VlblN0YXRlfHwicGVuZGluZyI9PT10LnNlZW5TdGF0ZT9GdCh7fSx0LHtzZWVuU3RhdGU6InNlZW4ifSk6dH0pKTtjYXNlIEYuUFdDOmNhc2UgRi5aUzk6Y2FzZSBGLmN4NDpyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkPT09ZS5wYXJ0SWQ/RnQoe30sdCx7Zm9ybTpOdCh0LmZvcm0sZSl9KTp0fSkpO2RlZmF1bHQ6cmV0dXJuIHR9fXZhciBXdD1uKDkxMjgpLEt0PVsidGlja2V0Il07ZnVuY3Rpb24gWnQoKXtyZXR1cm4gWnQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxadC5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIEp0PU9iamVjdC5hc3NpZ24sWXQ9e2ZldGNoU3RhdGU6InBhcnRpYWwiLGlzRmV0Y2hpbmc6ITEsaXNVcGRhdGluZzohMSxyZWFkOiEwLGRpc21pc3NlZDohMSxwcmV2ZW50RW5kVXNlclJlcGxpZXM6ITEscGFydHM6W10scGFydGljaXBhbnRzOltdLGlzRW1haWxBdHRyaWJ1dGVDb2xsZWN0b3JJbnNlcnRlZDohMSxjb21wb3NlclN1Z2dlc3Rpb25zOld0Lm42LHNhbGVzZm9yY2VfZXh0ZXJuYWxfcmVmZXJlbmNlOnZvaWQgMCxjb21wb3NlclN0YXRlOnt9fTtmdW5jdGlvbiBRdCh0LGUpe3JldHVybiB2b2lkIDAhPT10P3Q6ZX1mdW5jdGlvbiBYdCh0LGUpe3N3aXRjaCh2b2lkIDA9PT10JiYodD1ZdCksZS50eXBlKXtjYXNlIEYuTExKOnZhciBuPWUuY29udmVyc2F0aW9uSWQscj1lLmlzVXBkYXRpbmc7cmV0dXJuKDAscy5aUSkoe2NhdGVnb3J5OiJnZXQtY29udmVyc2F0aW9uIixtZXNzYWdlOiJFeGVjdXRpbmcgR0VUX0NPTlZFUlNBVElPTl9SRVFVRVNUIixkYXRhOntjb252ZXJzYXRpb25JZDpufSxsZXZlbDoiaW5mbyJ9KSxKdCh7fSx0LHtpZDpRdCh0LmlkLG4pLGZldGNoU3RhdGU6UXQodC5mZXRjaFN0YXRlLCJwYXJ0aWFsIiksaXNGZXRjaGluZzohMCxpc1VwZGF0aW5nOnIscmVhZDpRdCh0LnJlYWQsITApLGRpc21pc3NlZDpRdCh0LmRpc21pc3NlZCwhMSkscHJldmVudEVuZFVzZXJSZXBsaWVzOlF0KHQucHJldmVudEVuZFVzZXJSZXBsaWVzLCExKSxwYXJ0czpRdCh0LnBhcnRzLFtdKX0pO2Nhc2UgRi5FMDg6cmV0dXJuIEp0KHt9LHQse2lzRmV0Y2hpbmc6ITEsaXNVcGRhdGluZzohMX0pO2Nhc2UgRi5vblg6Y2FzZSBGLmZFQzp2YXIgbz1lLmNvbnZlcnNhdGlvbixpPW8ucGFydHMuc29tZSgoZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIShudWxsIT0oZT10LmF1dGhvcikmJmUuaXNBZG1pbil9KSk7KDAscy5aUSkoe2NhdGVnb3J5OiJnZXQtY29udmVyc2F0aW9uIixtZXNzYWdlOiJFeGVjdXRpbmcgR0VUX0NPTlZFUlNBVElPTl9TVUNDRVNTIixkYXRhOntjb252ZXJzYXRpb25JZDpvLmlkLHVzZXJQYXJ0aWNpcGF0ZWQ6aX0sbGV2ZWw6ImluZm8ifSksby5wYXJ0cz0oMCxELmtnKShvLHQpLG8uY29tcG9zZXJTdGF0ZT0oMCxELlhVKShvLHQpO3ZhciBhPW8udGlja2V0LHU9ZnVuY3Rpb24odCxlKXtpZihudWxsPT10KXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiB0KWlmKHt9Lmhhc093blByb3BlcnR5LmNhbGwodCxyKSl7aWYoLTEhPT1lLmluZGV4T2YocikpY29udGludWU7bltyXT10W3JdfXJldHVybiBufShvLEt0KSxjPXF0KHQucGFydHMsZSksbD1jLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR9KSk7KDAscy5aUSkoe2NhdGVnb3J5OiJnZXQtY29udmVyc2F0aW9uIixtZXNzYWdlOiJSZXR1cm5pbmcgZGF0YSBmcm9tIEdFVF9DT05WRVJTQVRJT05fU1VDQ0VTUyIsZGF0YTp7Y29udmVyc2F0aW9uSWQ6by5pZCxwYXJ0SWRzOmx9LGxldmVsOiJpbmZvIn0pO3ZhciBmPVp0KHt9LHQsdSx7c2FsZXNmb3JjZV9leHRlcm5hbF9yZWZlcmVuY2U6by5zYWxlc2ZvcmNlX2V4dGVybmFsX3JlZmVyZW5jZSxmZXRjaFN0YXRlOiJhbGwiLGlzRmV0Y2hpbmc6ITEsaXNVcGRhdGluZzohMSx1c2VyUGFydGljaXBhdGVkOmkscGFydHM6Y30pO3JldHVybiBhJiYoZi50aWNrZXRJZD1hLmlkKSxmO2Nhc2UgRi5jeDQ6Y2FzZSBGLlpTOTpjYXNlIEYuRHpMOnZhciBkPSJjb252ZXJzYXRpb24iaW4gZT9lLmNvbnZlcnNhdGlvbjp2b2lkIDA7cmV0dXJuIGQmJihkLnBhcnRzPSgwLEQua2cpKGQsdCksZC5jb21wb3NlclN0YXRlPSgwLEQuWFUpKGQsdCkpLEp0KHt9LHQsZCx7ZmV0Y2hTdGF0ZToiYWxsIixpc0ZldGNoaW5nOiExLGlzVXBkYXRpbmc6ITEsdXNlclBhcnRpY2lwYXRlZDohMCxwYXJ0czpxdCh0LnBhcnRzLGUpfSk7Y2FzZSBGLnlNNTpjYXNlIEYuVG1ROnJldHVybiBKdCh7fSx0LHtyZWFkOiEwfSk7Y2FzZSBGLnUwYzpyZXR1cm4gSnQoe30sdCx7cmVhZDohMCxyZWFkQXQ6ZS5yZWFkQXR9KTtjYXNlIEYuc1VTOnJldHVybiBKdCh7fSx0LHtkaXNtaXNzZWQ6ITB9KTtjYXNlIEYuSE11OmNhc2UgRi5QelM6dmFyIHA9ZS5wYXJ0LmNyZWF0ZWRBdDtyZXR1cm4gSnQoe30sdCx7dXNlclBhcnRpY2lwYXRlZDohMCxsYXN0UGFydENyZWF0ZWRBdDpwLHBhcnRzOnF0KHQucGFydHMsZSksZXhjbHVkZUZyb21Db252ZXJzYXRpb25zTGlzdDohdC50aWNrZXRJZCYmdC5leGNsdWRlRnJvbUNvbnZlcnNhdGlvbnNMaXN0LGVsaWdpYmxlRm9yUmVjZW50Q29udmVyc2F0aW9uczohKCF0LnRpY2tldElkfHwhdC5leGNsdWRlRnJvbUNvbnZlcnNhdGlvbnNMaXN0KXx8dC5lbGlnaWJsZUZvclJlY2VudENvbnZlcnNhdGlvbnN9KTtjYXNlIEYuRm44OnJldHVybiBKdCh7fSx0LHtwYXJ0czpxdCh0LnBhcnRzLGUpfSk7Y2FzZSBGLmFsTTpyZXR1cm4gSnQoe30sdCx7cGFydHM6cXQodC5wYXJ0cyxlKSxmb290ZXJOb3RpY2U6dC5mb290ZXJOb3RpY2V9KTtjYXNlIEYudXZJOnZhciBoPU9iamVjdC5hc3NpZ24oe30sZS5jb252ZXJzYXRpb24pO3JldHVybiBoLmNvbXBvc2VyU3RhdGU9KDAsRC5YVSkoaCx0KSxoLnRpY2tldCYmKGgudGlja2V0SWQ9aC50aWNrZXQuaWQpLEp0KHt9LHQsaCx7ZmV0Y2hTdGF0ZToiYWxsIixpc0ZldGNoaW5nOiExLGlzVXBkYXRpbmc6ITF9KTtjYXNlIEYuUDV5OmlmKHQuaWQhPT1lLmNvbnZlcnNhdGlvbklkKXJldHVybiB0O3ZhciB2PSgwLEQuWFUpKHtjb21wb3NlclN0YXRlOmUuY29tcG9zZXJTdGF0ZSxpZDplLmNvbnZlcnNhdGlvbklkfSx0KTtyZXR1cm4gSnQoe30sdCx7Y29tcG9zZXJTdGF0ZTp2fSk7Y2FzZSBGLkFkTDp2YXIgeSxnLG09ZS5wYXJ0LGI9bS5hdXRob3ImJiFtLmF1dGhvci5pc1NlbGYsdz0oInRlYW1tYXRlX2pvaW5lZCI9PT1tLnBhcnRUeXBlfHwiYXNzaWdubWVudCI9PT1tLnBhcnRUeXBlKSYmKG51bGw9PSh5PW0uYXV0aG9yKT92b2lkIDA6eS5pc0FkbWluKSYmIShudWxsIT0oZz1tLmF1dGhvcikmJmcuaXNCb3QpLF89bS5hdXRob3IsUz13JiZfP3t1eFN0eWxlOiJhc3NpZ25lZCIsbGFzdFBhcnRpY2lwYXRpbmdBZG1pbjp7aWQ6Xy5pZCxmaXJzdE5hbWU6Xy5maXJzdE5hbWUsaW5pdGlhbDpfLmluaXRpYWwsaXNCb3Q6Xy5pc0JvdCxpc0FjdGl2ZTohMCxhdmF0YXI6Xy5hdmF0YXJ9fTp7fTtyZXR1cm4gSnQoe30sdCxadCh7cGFydHM6cXQodC5wYXJ0cyxlKSxyZWFkOiFiJiZ0LnJlYWQsbGFzdFBhcnRDcmVhdGVkQXQ6bS5jcmVhdGVkQXR9LFMpKTtjYXNlIEYuUFdDOmNhc2UgRi5UNGs6Y2FzZSBGLnVmVTpjYXNlIEYuYVE1OmNhc2UgRi56ZV86Y2FzZSBGLm9fRTpjYXNlIEYuZkVMOnJldHVybiBKdCh7fSx0LHtwYXJ0czpxdCh0LnBhcnRzLGUpfSk7Y2FzZSBGLlUyZDpyZXR1cm4oMCxELlhjKShlLnJlYXNvbik/SnQoe30sdCx7cGFydHM6cXQodC5wYXJ0cyxlKSxwcmV2ZW50RW5kVXNlclJlcGxpZXM6ITAsc3RhdGU6InN0YXRlX2Nsb3NlZCJ9KTpKdCh7fSx0LHtwYXJ0czpxdCh0LnBhcnRzLGUpfSk7Y2FzZSBGLlQkNTpyZXR1cm4gSnQoe30sdCx7cGFydHM6cXQodC5wYXJ0cyxlKSxmb290ZXJOb3RpY2U6dC5mb290ZXJOb3RpY2V9KTtjYXNlIEYuZmptOnJldHVybiBKdCh7fSx0LHtpc0VtYWlsQXR0cmlidXRlQ29sbGVjdG9ySW5zZXJ0ZWQ6ITB9KTtjYXNlIEYuSUtKOmNhc2UgRi5BOTk6Y2FzZSBGLmlEZDpjYXNlIEYucl8xOnJldHVybiBudWxsPT1lLmNvbnZlcnNhdGlvbklkP3Q6WnQoe30sdCx7Y29tcG9zZXJTdWdnZXN0aW9uczooMCxXdC5BeSkodC5jb21wb3NlclN1Z2dlc3Rpb25zLGUpfSk7ZGVmYXVsdDpyZXR1cm4gdH19dmFyICR0PW4oNzczNiksdGU9WyJ0aWNrZXQiLCJzYWxlc2ZvcmNlX2V4dGVybmFsX3JlZmVyZW5jZSJdO2Z1bmN0aW9uIGVlKCl7cmV0dXJuIGVlPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sZWUuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBuZT1PYmplY3QuYXNzaWduLHJlPXtpc0ZldGNoaW5nOiExLHBhZ2VzRmV0Y2hlZDowLHNjcm9sbFBvc2l0aW9uOjAsYnlJZDp7fSxwYXJ0czpbXSx0aXRsZVVwZGF0ZXM6e319O2Z1bmN0aW9uIG9lKHQsZSxuLHIpe3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgbz10LmZldGNoU3RhdGU7cmV0dXJuIG5lKHt9LHQse2lkOmUsZmV0Y2hTdGF0ZTpvfHwicGFydGlhbCIsZGlzbWlzc2VkOm4scmVhZDpyLHNhbGVzZm9yY2VfZXh0ZXJuYWxfcmVmZXJlbmNlOnQuc2FsZXNmb3JjZV9leHRlcm5hbF9yZWZlcmVuY2V9KX1mdW5jdGlvbiBpZSh0LGUpe3N3aXRjaCh2b2lkIDA9PT10JiYodD17fSksZS50eXBlKXtjYXNlIEYuUndxOmNhc2UgRi5fYlM6dmFyIG49ZS51c2VyfHx7fSxyPW4udW5yZWFkQ29udmVyc2F0aW9uSWRzLG89bi51bnJlYWREaXNtaXNzZWRDb252ZXJzYXRpb25JZHM7aWYobnVsbD09ciYmbnVsbD09bylyZXR1cm4gdDt2YXIgaT17fTtyZXR1cm4gbyYmby5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gaVtlXT1vZSh0W2VdLGUsITAsITEpfSkpLHImJnIuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGlbZV09b2UodFtlXSxlLCExLCExKX0pKSxuZSh7fSx0LGkpO2Nhc2UgRi5hd3A6dmFyIGE9ZS51bnJlYWRDb252ZXJzYXRpb25zfHx7fSx1PWEudW5yZWFkQ29udmVyc2F0aW9uSWRzLHM9YS51bnJlYWREaXNtaXNzZWRDb252ZXJzYXRpb25JZHMsYz17fTtyZXR1cm4gbnVsbD09c3x8cy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gY1tlXT1vZSh0W2VdLGUsITAsITEpfSkpLG51bGw9PXV8fHUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGNbZV09b2UodFtlXSxlLCExLCExKX0pKSxuZSh7fSx0LGMpO2Nhc2UgRi5tR1g6Y2FzZSBGLl9VODp2YXIgbCxmPSgobnVsbD09ZXx8bnVsbD09KGw9ZS5jb252ZXJzYXRpb25zKT92b2lkIDA6bC5jb252ZXJzYXRpb25zKXx8ZS5jb252ZXJzYXRpb25zKS5yZWR1Y2UoKGZ1bmN0aW9uKG4scil7dmFyIG89ci5pZCxpPXIudXBkYXRlZEF0LGE9ci5sYXN0UGFydENyZWF0ZWRBdDtyZXR1cm4gdFtvXSYmImFsbCI9PT10W29dLmZldGNoU3RhdGUmJiFmdW5jdGlvbih0LGUsbil7dmFyIHIsbyxpLGE9bnVsbD09KHI9ZVt0XSl8fG51bGw9PShyPXIucGFydHMpP3ZvaWQgMDpyLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuISgwLCR0Lms0KSh0KX0pKSx1PW4ucGFydHM7cmV0dXJuKG51bGw9PWF8fG51bGw9PShvPWEuYXQoLTEpKT92b2lkIDA6by5pZCkhPT0obnVsbD09KGk9dS5hdCgtMSkpP3ZvaWQgMDppLmlkKX0obyx0LHIpfHx0W29dJiZlLnR5cGU9PT1GLl9VOCYmaTw9dFtvXS51cGRhdGVkQXR8fHRbb10mJmUudHlwZT09PUYubUdYJiZhPD10W29dLmxhc3RQYXJ0Q3JlYXRlZEF0fHwobltvXT1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD17fSk7dmFyIGU9dCxuPWUudGlja2V0LHI9ZS5zYWxlc2ZvcmNlX2V4dGVybmFsX3JlZmVyZW5jZSxvPWVlKHt9LGZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dClyZXR1cm57fTt2YXIgbj17fTtmb3IodmFyIHIgaW4gdClpZih7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikpe2lmKC0xIT09ZS5pbmRleE9mKHIpKWNvbnRpbnVlO25bcl09dFtyXX1yZXR1cm4gbn0oZSx0ZSkse2ZldGNoU3RhdGU6InN1bW1hcnkiLGlzRmV0Y2hpbmc6ITEsaXNVcGRhdGluZzohMSxwYXJ0czp0LnBhcnRzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVlKHt9LHQse3NhdmVTdGF0ZToic2F2ZWQifSl9KSksc2FsZXNmb3JjZV9leHRlcm5hbF9yZWZlcmVuY2U6cn0pO3JldHVybiBuJiYoby50aWNrZXRJZD1uLmlkKSxvfShyKSksbn0pLHt9KTtyZXR1cm4gZWUoe30sdCxmKTtjYXNlIEYudXZJOmNhc2UgRi5aUzk6Y2FzZSBGLkR6TDpjYXNlIEYuZkVDOmNhc2UgRi5vblg6dmFyIGQscD0oZS5jb252ZXJzYXRpb258fHt9KS5pZCxoPSgoZD17fSlbcF09WHQodFtwXSxlKSxkKTtyZXR1cm4gbmUoe30sdCxoKTtjYXNlIEYudnlQOnZhciB2LHk9ZS5jb252ZXJzYXRpb25JZDtpZihudWxsPT15KXJldHVybiB0O3ZhciBnPXRbeV07aWYoIWcpcmV0dXJuIHQ7dmFyIG09KCh2PXt9KVt5XT1uZSh7fSxnLHt0aXRsZTplLnRpdGxlLHRpdGxlT3JpZ2luOmUudGl0bGVPcmlnaW59KSx2KTtyZXR1cm4gbmUoe30sdCxtKTtjYXNlIEYuS0hfOnZhciBiLHcsXz1lLmNvbnZlcnNhdGlvbklkO2lmKG51bGw9PV8pcmV0dXJuIHQ7dmFyIFM9dFtfXTtpZihudWxsPT1TfHxudWxsPT0oYj1TLmhlYWRlcil8fCFiLmNvbGxhcHNlZClyZXR1cm4gdDt2YXIgeD0oKHc9e30pW19dPW5lKHt9LFMse2hlYWRlcjpuZSh7fSxTLmhlYWRlcix7Y29sbGFwc2VkOm5lKHt9LFMuaGVhZGVyLmNvbGxhcHNlZCx7c3VidGl0bGU6ZS5xdWV1ZVBvc2l0aW9uVGV4dCxpY29uOmUucXVldWVQb3NpdGlvblRleHQ/ImNsb2NrIjpudWxsfSl9KX0pLHcpO3JldHVybiBuZSh7fSx0LHgpO2Nhc2UgRi5hbE06Y2FzZSBGLkFkTDpjYXNlIEYuRm44OmNhc2UgRi5QV0M6Y2FzZSBGLlQ0azpjYXNlIEYuSFRFOmNhc2UgRi5MTEo6Y2FzZSBGLlB6UzpjYXNlIEYuSE11OmNhc2UgRi5VMmQ6Y2FzZSBGLnlNNTpjYXNlIEYuVG1ROmNhc2UgRi51MGM6Y2FzZSBGLmFRNTpjYXNlIEYuY3g0OmNhc2UgRi56ZV86Y2FzZSBGLmlEZDpjYXNlIEYuQTk5OmNhc2UgRi5yXzE6Y2FzZSBGLmZFTDpjYXNlIEYuUDV5OnZhciBFLEM9ZS5jb252ZXJzYXRpb25JZDtpZihudWxsPT1DKXJldHVybiB0O3ZhciBPPSgoRT17fSlbQ109WHQodFtDXSxlKSxFKTtyZXR1cm4gbmUoe30sdCxPKTtjYXNlIEYuVCQ1OmNhc2UgRi5vX0U6dmFyIEEsST1lLmNvbnZlcnNhdGlvbklkO2lmKHZvaWQgMD09PXRbSV0pcmV0dXJuIHQ7dmFyIGs9KChBPXt9KVtJXT1YdCh0W0ldLGUpLEEpO3JldHVybiBuZSh7fSx0LGspO2Nhc2UgRi51ZlU6dmFyIEwsVD1lLmNvbnZlcnNhdGlvbklkO2lmKHZvaWQgMD09PVQpcmV0dXJuIHQ7dmFyIGo9KChMPXt9KVtUXT1YdCh0W1RdLGUpLEwpO3JldHVybiBuZSh7fSx0LGopO2Nhc2UgRi5zVVM6dmFyIFAsTj1udWxsPT1lfHxudWxsPT0oUD1lLmNvbnZlcnNhdGlvbklkcyk/dm9pZCAwOlAucmVkdWNlKChmdW5jdGlvbihuLHIpe3JldHVybiBuW3JdPVh0KHRbcl0sZSksbn0pLHt9KTtyZXR1cm4gbmUoe30sdCxOKTtjYXNlIEYuZmptOnZhciBNLFI9ZS5jb252ZXJzYXRpb25JZDtpZih2b2lkIDA9PT10W1JdKXJldHVybiB0O3ZhciBVPSgoTT17fSlbUl09WHQodFtSXSxlKSxNKTtyZXR1cm4gbmUoe30sdCxVKTtkZWZhdWx0OnJldHVybiB0fX1mdW5jdGlvbiBhZSgpe3JldHVybiBhZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGFlLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgdWU9T2JqZWN0LmFzc2lnbixzZT17aXNGZXRjaGluZzohMSxpc1VwZGF0aW5nOiExLGZldGNoU3RhdGU6ImFsbCIscmVhZDohMCxpbnRlcmNvbUxpbmtTb2x1dGlvbjoibGl2ZS1jaGF0IixwYXJ0czpbXSxpbnRyb1BhcnRzOltdLHBhcnRpY2lwYW50czpbXSxjb21wb3NlclN0YXRlOnt2aXNpYmxlOiEwLHdvcmtmbG93QWN0aXZlOnZvaWQgMH0sY29tcG9zZXJTdWdnZXN0aW9uczpXdC5uNixib3RJbnRyb0lkOm51bGwsYXJ0aWNsZVVybDpudWxsLGZyb21BcnRpY2xlSWQ6bnVsbCxmcm9tU3RhbmRhbG9uZUFydGljbGU6ITEscHJldmlld1dvcmtmbG93SW5zdGFuY2VJZDp2b2lkIDAscHJldmlld1Jlc29sdXRpb25Cb3RCZWhhdmlvclZlcnNpb25JZDp2b2lkIDAsY3VycmVudENoYW5uZWw6Im1lc3NlbmdlciIsbGFzdFBhcnRDcmVhdGVkQXQ6dm9pZCAwfTt2YXIgY2U9KDAsWi52eSkoc2UsKGZ1bmN0aW9uKHQpe3QuYWRkQ2FzZSgibWVzc2VuZ2VyL2ZldGNoTmV3Q29udmVyc2F0aW9uQ29udGVudC9wZW5kaW5nIiwoZnVuY3Rpb24odCl7dC5pc0ZldGNoaW5nPSEwfSkpLmFkZENhc2UoIm1lc3Nlbmdlci9mZXRjaE5ld0NvbnZlcnNhdGlvbkNvbnRlbnQvZnVsZmlsbGVkIiwoZnVuY3Rpb24odCl7dC5pc0ZldGNoaW5nPSExfSkpLmFkZENhc2UoIm1lc3Nlbmdlci9mZXRjaE5ld0NvbnZlcnNhdGlvbkNvbnRlbnQvcmVqZWN0ZWQiLChmdW5jdGlvbih0KXt0LmlzRmV0Y2hpbmc9ITF9KSkuYWRkRGVmYXVsdENhc2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7c3dpdGNoKHZvaWQgMD09PXQmJih0PXNlKSxlLnR5cGUpe2Nhc2UgRi52eG46cmV0dXJuIHVlKHt9LHQse2RlZmF1bHRNZXNzYWdlOmUuZGVmYXVsdE1lc3NhZ2UsYXJ0aWNsZVVybDplLmFydGljbGVVcmx8fG51bGwsZnJvbUFydGljbGVJZDplLmZyb21BcnRpY2xlSWQsZnJvbVN0YW5kYWxvbmVBcnRpY2xlOmUuZnJvbVN0YW5kYWxvbmVBcnRpY2xlLHBhcnRzOmUucGFydHMmJmUucGFydHMubGVuZ3RoPjA/ZS5wYXJ0czp0LnBhcnRzLGJvdEludHJvSWQ6ZS5hcnRpY2xlVXJsP251bGw6dC5ib3RJbnRyb0lkfSk7Y2FzZSBGLnVfOTpyZXR1cm4gdWUoe30sdCx7YXJ0aWNsZVVybDpudWxsfSk7Y2FzZSBGLlhXbzpjYXNlIEYuSXRsOnZhciBuPWUud2VsY29tZVBhcnRzfHxbXTtuLmxlbmd0aD4wJiYobj1uLm1hcCgoZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIGFlKHt9LHQse2NyZWF0ZWRBdDoobnVsbD09ZXx8bnVsbD09KG49ZS5wYXJ0KT92b2lkIDA6bi5jcmVhdGVkQXQpfHxuZXcgRGF0ZX0pfSkpKTt2YXIgcj1uLmxlbmd0aD4wP246dC5wYXJ0cztyZXR1cm4gdWUoe30sdCx7dXNlclBhcnRpY2lwYXRlZDplLnR5cGUhPT1GLkl0bCxwYXJ0czpxdChyLGUpfSk7Y2FzZSBGLnpsNjpyZXR1cm4gdWUoe30sdCx7Y29tcG9zZXJTdGF0ZTphZSh7cGxhY2Vob2xkZXI6dC5jb21wb3NlclN0YXRlLnBsYWNlaG9sZGVyfSxlLmNvbXBvc2VyU3RhdGUpfSk7Y2FzZSBGLksyMDp2YXIgbz1udWxsIT1lJiZlLnBhcnRzP2UucGFydHMubWFwKChmdW5jdGlvbihuLHIpe3ZhciBvO3JldHVybiBhZSh7fSxuLHtwYXJ0VHlwZToiYm90X2ludHJvIixjcmVhdGVkQXQ6KG51bGw9PW4/dm9pZCAwOm4uY3JlYXRlZEF0KXx8ZS5jcmVhdGVkQXR9LG51bGwhPShvPXQucGFydHMpJiZudWxsIT0obz1vW3JdKSYmby5jbGllbnRJZD97Y2xpZW50SWQ6dC5wYXJ0c1tyXS5jbGllbnRJZH06e30pfSkpOltdO3JldHVybiBhZSh7fSx0LHtpbnRyb1BhcnRzOm8scGFydHM6byxib3RJbnRyb0lkOmUuZnJvbUNsaWVudE1hdGNoP251bGw6dC5ib3RJbnRyb0lkfSk7Y2FzZSBGLkR6TDpyZXR1cm4gdWUoe30sc2Use2NvbXBvc2VyU3RhdGU6dC5jb21wb3NlclN0YXRlLHByZXZpZXdXb3JrZmxvd0luc3RhbmNlSWQ6dC5wcmV2aWV3V29ya2Zsb3dJbnN0YW5jZUlkLHByZXZpZXdSZXNvbHV0aW9uQm90QmVoYXZpb3JWZXJzaW9uSWQ6dC5wcmV2aWV3UmVzb2x1dGlvbkJvdEJlaGF2aW9yVmVyc2lvbklkLGludHJvUGFydHM6dC5pbnRyb1BhcnRzfHxbXSxwYXJ0czp0LnBhcnRzfHxbXSx0ZWFtSW50cm86dC50ZWFtSW50cm98fCIiLHNwZWNpYWxOb3RpY2U6dC5zcGVjaWFsTm90aWNlfHwiIn0pO2Nhc2UgRi5KJFM6cmV0dXJuIHVlKHt9LHNlLHtjb21wb3NlclN0YXRlOnQuY29tcG9zZXJTdGF0ZSxwcmV2aWV3V29ya2Zsb3dJbnN0YW5jZUlkOnQucHJldmlld1dvcmtmbG93SW5zdGFuY2VJZCxwcmV2aWV3UmVzb2x1dGlvbkJvdEJlaGF2aW9yVmVyc2lvbklkOnQucHJldmlld1Jlc29sdXRpb25Cb3RCZWhhdmlvclZlcnNpb25JZCxpbnRyb1BhcnRzOnQuaW50cm9QYXJ0c3x8W10scGFydHM6dC5pbnRyb1BhcnRzfHxbXSx0ZWFtSW50cm86dC50ZWFtSW50cm98fCIiLHNwZWNpYWxOb3RpY2U6dC5zcGVjaWFsTm90aWNlfHwiIn0pO2Nhc2UgRi51ZlU6cmV0dXJuIHZvaWQgMCE9PWUuY29udmVyc2F0aW9uSWQ/dDp1ZSh7fSx0LHtwYXJ0czpxdCh0LnBhcnRzLGUpfSk7Y2FzZSBGLklLSjpjYXNlIEYuQTk5OmNhc2UgRi5pRGQ6Y2FzZSBGLnJfMTpyZXR1cm4gYWUoe30sdCx7Y29tcG9zZXJTdWdnZXN0aW9uczooMCxXdC5BeSkodC5jb21wb3NlclN1Z2dlc3Rpb25zLGUpfSk7Y2FzZSBGLmxXTzp2YXIgaSxhLHUscyxjLGw9bnVsbD09KGk9dC5wYXJ0cyk/dm9pZCAwOmkuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuImJvdF9pbnRybyI9PT10LnBhcnRUeXBlfSkpO2lmKGwpcmV0dXJuIGFlKHt9LHQse2JvdEludHJvSWQ6KG51bGw9PWV8fG51bGw9PShjPWUuYm90SW50cm8pP3ZvaWQgMDpjLmlkKXx8bnVsbH0pO3ZhciBmLGQ9bnVsbD09KGE9dC5pbnRyb1BhcnRzKT92b2lkIDA6YS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4iYm90X2ludHJvIj09PXQucGFydFR5cGV9KSk7cmV0dXJuIGFlKHt9LHQsZD97cGFydHM6dC5pbnRyb1BhcnRzLGJvdEludHJvSWQ6KG51bGw9PWV8fG51bGw9PShmPWUuYm90SW50cm8pP3ZvaWQgMDpmLmlkKXx8bnVsbH06e3BhcnRzOm51bGwhPWUmJmUuYm90SW50cm8/bnVsbD09ZXx8bnVsbD09KHU9ZS5ib3RJbnRybyk/dm9pZCAwOnUucGFydHMubWFwKChmdW5jdGlvbih0LG4pe3ZhciByO3JldHVybntpZDoiYm90LWludHJvLSIrbixjbGllbnRJZDoiYm90LWludHJvLSIrbixhdXRob3I6bnVsbD09ZXx8bnVsbD09KHI9ZS5ib3RJbnRybyk/dm9pZCAwOnIub3BlcmF0b3IsY3JlYXRlZEF0OmUuY3JlYXRlZEF0P25ldyBEYXRlKGUuY3JlYXRlZEF0KTpuZXcgRGF0ZSxwYXJ0VHlwZToiYm90X2ludHJvIixib2R5OnQsZXZlbnREYXRhOnt9LHJlcGx5T3B0aW9uczpbXSxpc01lc3NhZ2U6ITEsc2VlblN0YXRlOiJub3Qtc2Vlbi15ZXQifX0pKTpbXSxib3RJbnRyb0lkOihudWxsPT1lfHxudWxsPT0ocz1lLmJvdEludHJvKT92b2lkIDA6cy5pZCl8fG51bGx9KTtjYXNlIEYuJEVlOnZhciBwLGgsdix5PW51bGw9PShwPXQucGFydHMpP3ZvaWQgMDpwLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiJib3RfaW50cm8iPT09dC5wYXJ0VHlwZX0pKTtpZih5JiYobnVsbD09ZXx8IWUuZnJvbUNsaWVudE1hdGNoKSlyZXR1cm4gdDt2YXIgZz1udWxsPT0oaD10LmludHJvUGFydHMpP3ZvaWQgMDpoLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiJib3RfaW50cm8iPT09dC5wYXJ0VHlwZX0pKTtyZXR1cm4hZ3x8bnVsbCE9ZSYmZS5mcm9tQ2xpZW50TWF0Y2g/YWUoe30sdCx7Ym90SW50cm9JZDpudWxsLHBhcnRzOm51bGwhPWUmJmUuc3VnZ2VzdGlvblBhcnRzP251bGw9PWV8fG51bGw9PSh2PWUuc3VnZ2VzdGlvblBhcnRzKT92b2lkIDA6di5wYXJ0cy5tYXAoKGZ1bmN0aW9uKG4scil7dmFyIG8saTtyZXR1cm4gYWUoe2lkOiJzdWdnZXN0aW9uLXBhcnRzLSIrcixhdXRob3I6bnVsbD09ZXx8bnVsbD09KG89ZS5zdWdnZXN0aW9uUGFydHMpP3ZvaWQgMDpvLm9wZXJhdG9yLGNyZWF0ZWRBdDplLmNyZWF0ZWRBdCxwYXJ0VHlwZToiYm90X2ludHJvIixib2R5Om4sc2hvd0NyZWF0ZWRBdDohMH0sbnVsbCE9KGk9dC5wYXJ0cykmJm51bGwhPShpPWlbcl0pJiZpLmNsaWVudElkP3tjbGllbnRJZDp0LnBhcnRzW3JdLmNsaWVudElkfTp7fSl9KSk6W119KTphZSh7fSx0LHtwYXJ0czp0LmludHJvUGFydHN9KTtjYXNlIEYuSFRQOnJldHVybiBhZSh7fSx0LHtwcmV2aWV3V29ya2Zsb3dJbnN0YW5jZUlkOmUud29ya2Zsb3dJbnN0YW5jZUlkLHByZXZpZXdSZXNvbHV0aW9uQm90QmVoYXZpb3JWZXJzaW9uSWQ6ZS5yZXNvbHV0aW9uQm90QmVoYXZpb3JWZXJzaW9uSWR9KTtjYXNlIEYucGlJOnJldHVybiBhZSh7fSx0LHt0ZWFtSW50cm86ZS50ZWFtSW50cm99KTtjYXNlIEYueFUzOnJldHVybiBhZSh7fSx0LHtzcGVjaWFsTm90aWNlOmUuc3BlY2lhbE5vdGljZX0pO2RlZmF1bHQ6cmV0dXJuIHR9fSh0LGUpfSkpfSkpLGxlPXtzdXBwcmVzczp7fSxmb3JjZVNuaXBwZXQ6e319O3ZhciBmZT1PYmplY3QuYXNzaWduLGRlPXtpc1NhdmluZzohMSxzaG93RXJyb3JNZXNzYWdlOiExLGVycm9yTWVzc2FnZTpudWxsfTt2YXIgcGU9T2JqZWN0LmFzc2lnbixoZT17aXNJbnN0YWxsTW9kZU9wZW46ITEsaW5zdGFsbE1vZGVDb25maWc6e2FjdGl2ZVN1YnNjcmlwdGlvbjohMSx1c2VySGFzaFZlcmlmaWVkOiExLHNlY3VyZUluc3RhbGxWMjohMSxtZXNzZW5nZXJFbmFibGVkRm9yVmlzaXRvcnM6ITAsbWVzc2VuZ2VyRW5hYmxlZEZvclVzZXJzOiEwfX07dmFyIHZlPU9iamVjdC5hc3NpZ24seWU9e2lzRmV0Y2hpbmc6ITEsZ2lmczpbXSxmZXRjaGluZ0ZhaWxlZDohMSxzZWFyY2hUZXJtOm51bGx9O3ZhciBnZT1uKDY2ODM4KSxtZT1PYmplY3QuYXNzaWduLGJlPXtpc0xhdW5jaGVyRGlzY292ZXJ5TW9kZUVuYWJsZWQ6ITEsaXNMYXVuY2hlckRpc2NvdmVyeU1vZGVPcGVuaW5nOiExLGlzTGF1bmNoZXJEaXNjb3ZlcnlNb2RlQ2xvc2luZzohMSxoYXNEaXNjb3ZlcmVkTGF1bmNoZXI6ITF9O2Z1bmN0aW9uIHdlKHQpe3ZhciBlPXQuYXBwLG49ZS5mZWF0dXJlcyxyPWUuaW5ib3VuZENvbnZlcnNhdGlvbnNEaXNhYmxlZCxvPWUub2ZmaWNlSG91cnNSZXNwb25zZSxpPXQuY2xpZW50c2lkZVJ1bGVzZXRDb25kaXRpb25zO3JldHVybiJ2aXNpdG9yIj09PXQucm9sZSYmKCEhbi5maW5MYXVuY2hlckRpc2NvdmVyeU1vZGV8fCEhbi5sYXVuY2hlckRpc2NvdmVyeU1vZGUmJighciYmKCEhKDAsZ2UuSSkoaSkmJm51bGw9PW8pKSl9dmFyIF9lPW4oMzUzMSksU2U9big0NTQ5Nik7ZnVuY3Rpb24geGUoKXtyZXR1cm4geGU9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSx4ZS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIEVlPXt9O2Z1bmN0aW9uIENlKHQsZSl7dmFyIG49eGUoe30sdCk7cmV0dXJuIG5bZV18fChuW2VdPXt9KSxufWZ1bmN0aW9uIE9lKHQsZSxuKXt2YXIgcjtpZihudWxsIT0ocj10LmNhcmQpJiZudWxsIT0ocj1yLmNhbnZhcy5jb250ZW50KSYmci5jb21wb25lbnRzKXt2YXIgbz0oMCxTZS5ZSSkoZSx0LmNhcmQuY2FudmFzLmNvbnRlbnQuY29tcG9uZW50cyxuKTtvJiYodC5jYXJkLmNhbnZhcy5jb250ZW50LmNvbXBvbmVudHM9byl9fWZ1bmN0aW9uIEFlKCl7cmV0dXJuIEFlPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sQWUuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBJZT17aXNPcGVuOiExLGlzU2hlZXRzRGF0YUxvYWRpbmc6ITEsaXNTaGVldHNEYXRhTG9hZGVkOiExLGlzUHJveHlMb2FkZWQ6ITEsaXNOYXZpZ2F0aW5nOiExLHNvdXJjZUNhcmQ6bnVsbCxkYXRhOm51bGwsdXJsOm51bGwsc2hlZXRUaXRsZToiIn07ZnVuY3Rpb24ga2UoKXtyZXR1cm4ga2U9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxrZS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIExlPXtjb21wb3Nlckhhc0NvbnRlbnQ6ITEsbGFzdENvbXBvc2VyRXZlbnQ6MCxsYXN0QXJ0aWNsZUNsb3NlZEF0Om51bGwsY29udmVyc2F0aW9uSWRPZkxhc3RWaWV3ZWRBcnRpY2xlOm51bGwsY2xpZW50c2lkZVJ1bGVzZXRDb25kaXRpb25zOm51bGwsbGFzdFRyaWdnZXJUcmFuc2l0aW9uVGltZXN0YW1wOm51bGwsdXNlckNyZWF0ZWRDb252ZXJzYXRpb25BdDpudWxsfTtmdW5jdGlvbiBUZSgpe3JldHVybiBUZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LFRlLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgamU9e2lzU2hvd246ITEsYWxlcnRUeXBlOnZvaWQgMCxhbGVydFBheWxvYWQ6dm9pZCAwfTtmdW5jdGlvbiBQZSgpe3JldHVybiBQZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LFBlLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgTmU9e307ZnVuY3Rpb24gTWUoKXtyZXR1cm4gTWU9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxNZS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFJlPXt0YWJOYXZpZ2F0aW9uOiExLGFjY2Vzc2liaWxpdHlUaGVtZToiZGVmYXVsdCIsc2Vjb25kYXJ5QWNjZXNzaWJpbGl0eVRoZW1lOiJsaWdodCIsaXNNb2RhbE9wZW46ITF9O2Z1bmN0aW9uIFVlKCl7cmV0dXJuIFVlPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sVWUuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciB6ZT17aXNGZXRjaGluZzohMSxpc0ZldGNoZWQ6ITEsaXNQcmV2aWV3aW5nOiExLGZldGNoaW5nRmFpbGVkOiExLGFjdGl2ZVRvdXI6dm9pZCAwLHVwZGF0ZUZhaWxlZDohMSx2aWRlb0F1ZGlvTXV0ZWQ6ITAsdXNlckhhc0ludGVyYWN0ZWRXaXRoVmlkZW86ITEsZW5kVG91ckFuaW1hdGlvbjoiIixpc0F3YWl0aW5nUHJvZ3Jlc3M6ITF9O2Z1bmN0aW9uIEhlKCl7cmV0dXJuIEhlPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sSGUuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBGZT17dHJpZ2dlcnM6e30sYWN0aXZlOm51bGwsZmFpbGVkOiExfTt2YXIgRGU9big4NDk5MCk7ZnVuY3Rpb24gQmUodCxlLG4pe2lmKGUmJiFBcnJheS5pc0FycmF5KGUpJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXt2YXIgcj1lLmxlbmd0aDtyZXR1cm4gR2UoZSx2b2lkIDAhPT1uJiZuPHI/bjpyKX1yZXR1cm4gdChlLG4pfWZ1bmN0aW9uIFZlKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBHZSh0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBHZSh0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9HZSh0LGUpOnZvaWQgMH19KHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIEdlKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn1mdW5jdGlvbiBxZSgpe3JldHVybiBxZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LHFlLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgV2U9e2FsbFN1Z2dlc3Rpb25zOltdLGlzRGlzbWlzc2VkOiExLHNlcnZlclNpZGVTdWdnZXN0aW9uczpudWxsLHByZXZpZXdTdWdnZXN0aW9uczpudWxsfTt2YXIgS2U9KDAsWi5aMCkoe25hbWU6ImJhbm5lcnMiLGluaXRpYWxTdGF0ZTpbXSxyZWR1Y2Vyczp7fSxleHRyYVJlZHVjZXJzOmZ1bmN0aW9uKHQpe3QuYWRkTWF0Y2hlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZT09PUYuQTBGfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuYmFubmVycz9lLmJhbm5lcnM6dH0pKSx0LmFkZE1hdGNoZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnR5cGU9PT1GLmR4en0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmJhbm5lcklkJiZlLnJlYWN0aW9uP3QubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQuYmFubmVyX2lkKT09PVN0cmluZyhlLmJhbm5lcklkKT9PYmplY3QuYXNzaWduKHt9LHQse3NlbGVjdGVkX3JlYWN0aW9uOmUucmVhY3Rpb259KTp0fSkpOnR9KSl9fSkucmVkdWNlcjtmdW5jdGlvbiBaZSgpe3JldHVybiBaZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LFplLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgSmU9e2NvbnRlbnQ6bnVsbH07ZnVuY3Rpb24gWWUoKXtyZXR1cm4gWWU9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxZZS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFFlPXtjb21wb3NlclN1Z2dlc3Rpb25zOm51bGx9LFhlPW4oNDQzNDEpLCRlPW4oMTI5NTIpO2Z1bmN0aW9uIHRuKCl7cmV0dXJuIHRuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sdG4uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBlbj17aXNBY3RpdmU6ITF9LG5uPW4oNTEwMzUpO2Z1bmN0aW9uIHJuKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBvbih0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBvbih0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9vbih0LGUpOnZvaWQgMH19KHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIG9uKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn1mdW5jdGlvbiBhbigpe3JldHVybiBhbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGFuLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgdW49e3R5cGU6bnVsbCxtZXRhZGF0YTp7fSxsYXN0T3BlbkF0VGltZXN0YW1wOjB9O2Z1bmN0aW9uIHNuKCl7cmV0dXJuIHNuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sc24uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBjbj17aXNPcGVuOiExLGlzRmV0Y2hpbmc6ITAsZmV0Y2hlZENvbGxlY3Rpb25zOiExLGZldGNoaW5nRmFpbGVkOiExLHBocmFzZToiIixzZWFyY2hSZXN1bHRzOltdLHNob3dTZWFyY2hSZXN1bHRzOiExLGhhc1NlYXJjaFJlc3VsdHM6ITEscm91dGVkVG9OZXdDb252ZXJzYXRpb246ITEsaW1tZWRpYXRlU2VhcmNoOiExLGhpZGVSZXN1bHRzV2l0aERlbGF5OiExLGNsb3NlVHJhbnNpdGlvbkVuZGVkOiEwLHNlYXJjaGVkUGhyYXNlOiIiLGhhc1ZpZXdlZEFuQXJ0aWNsZTohMSxza2lwT3BlbkFuaW1hdGlvbjohMSxpc1ZpZXdpbmdBcnRpY2xlOiExLGlzU2VhcmNoRm9jdXNlZDohMSxpc0ZldGNoaW5nU2VhcmNoUmVzdWx0czohMX07dmFyIGxuPW4oMTgwMzQpO2Z1bmN0aW9uIGZuKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBkbih0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBkbih0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9kbih0LGUpOnZvaWQgMH19KHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGRuKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgcG49W107ZnVuY3Rpb24gaG4odCxlLG4pe2lmKGUmJiFBcnJheS5pc0FycmF5KGUpJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXt2YXIgcj1lLmxlbmd0aDtyZXR1cm4geW4oZSx2b2lkIDAhPT1uJiZuPHI/bjpyKX1yZXR1cm4gdChlLG4pfWZ1bmN0aW9uIHZuKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB5bih0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB5bih0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT95bih0LGUpOnZvaWQgMH19KHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHluKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn1mdW5jdGlvbiBnbigpe3JldHVybiBnbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGduLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBtbih0LGUsbil7aWYoZSYmIUFycmF5LmlzQXJyYXkoZSkmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ZhciByPWUubGVuZ3RoO3JldHVybiB3bihlLHZvaWQgMCE9PW4mJm48cj9uOnIpfXJldHVybiB0KGUsbil9ZnVuY3Rpb24gYm4odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHduKHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHduKHQsZSk7dmFyIG49e30udG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP3duKHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gd24odCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIF9uKCl7cmV0dXJuIF9uPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sX24uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBTbj1bXTt2YXIgeG49big2NWUzKSxFbj1uKDYzNzk4KTtmdW5jdGlvbiBDbigpe3JldHVybiBDbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LENuLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgT249e307dmFyIEFuPW4oNzI5MCk7ZnVuY3Rpb24gSW4oKXtyZXR1cm4gSW49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxJbi5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24ga24odCxlLG4pe2lmKGUmJiFBcnJheS5pc0FycmF5KGUpJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXt2YXIgcj1lLmxlbmd0aDtyZXR1cm4gVG4oZSx2b2lkIDAhPT1uJiZuPHI/bjpyKX1yZXR1cm4gdChlLG4pfWZ1bmN0aW9uIExuKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBUbih0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBUbih0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9Ubih0LGUpOnZvaWQgMH19KHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFRuKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgam49T2JqZWN0LmFzc2lnbjtmdW5jdGlvbiBQbigpe3JldHVybiBQbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LFBuLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgTm49e2FjdGl2ZU5ld3NJdGVtOm51bGwsZGV0YWlsc0ZldGNoaW5nU3RhdHVzOkFuLm41Lm5vdFN0YXJ0ZWR9O3ZhciBNbj1uKDkxMDYyKSxSbj1uKDg5NTMpO2Z1bmN0aW9uIFVuKCl7cmV0dXJuIFVuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sVW4uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciB6bj17aXNCb290ZWQ6ITEsaXNUb29sdGlwUHJldmlldzohMX07ZnVuY3Rpb24gSG4oKXtyZXR1cm4gSG49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxIbi5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gRm4odCxlLG4pe2lmKGUmJiFBcnJheS5pc0FycmF5KGUpJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXt2YXIgcj1lLmxlbmd0aDtyZXR1cm4gVm4oZSx2b2lkIDAhPT1uJiZuPHI/bjpyKX1yZXR1cm4gdChlLG4pfWZ1bmN0aW9uIERuKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBWbih0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fEJuKHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIEJuKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBWbih0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9Wbih0LGUpOnZvaWQgMH19ZnVuY3Rpb24gVm4odCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfXZhciBHbj1bXTtmdW5jdGlvbiBxbigpe3JldHVybiBxbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LHFuLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgV249e2N1cnJlbnRseVJlc29sdmluZ1Rhc2tJZDpudWxsLG9wZW5DaGVja2xpc3RQcm9ncmVzc0lkOm51bGx9O3ZhciBLbj1uKDY0ODA3KSxabj1uKDI3NjU2KTtmdW5jdGlvbiBKbigpe3JldHVybiBKbj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LEpuLmFwcGx5KG51bGwsYXJndW1lbnRzKX12YXIgWW49e30sUW49ZnVuY3Rpb24odCxlKXtzd2l0Y2godm9pZCAwPT09dCYmKHQ9WW4pLGUudHlwZSl7Y2FzZSBGLlQkNTp2YXIgbixyPWUuY29udmVyc2F0aW9uSWQsbz1Kbih7fSx0LCgobj17fSlbcl09ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9PT10JiYodD17fSksZS50eXBlPT09Ri5UJDUpe3ZhciBuPWUubGFzdEFjdGl2ZUF0LHI9ZS5maXJzdE5hbWUsbz1lLmF2YXRhclVybCxpPWUuYWRtaW5JZCxhPWUuaXNCb3Q7cmV0dXJue2lkOmksbGFzdEFjdGl2ZUF0Om4sZmlyc3ROYW1lOnIsYXZhdGFyOntzcXVhcmUxMjg6byxzaGFwZTphPyJzcXVpcmNsZSI6bnVsbH0saXNCb3Q6YSxoYXNBSTplLmhhc0FJLHNob3dBdmF0YXI6ZS5zaG93QXZhdGFyLGxvYWRpbmdTdGF0dXM6ZS5sb2FkaW5nU3RhdHVzLGNsaWVudElkOmUuY2xpZW50SWR8fHQuY2xpZW50SWR9fXJldHVybiB0fSh0W3JdLGUpLG4pKTtyZXR1cm4gbztjYXNlIEYuYWxNOmNhc2UgRi5BZEw6dmFyIGksYSx1PWUuY29udmVyc2F0aW9uSWQscz10W3VdO3JldHVybiBlLnR5cGU9PT1GLkFkTCYmImJvdF9pbnRybyI9PT0obnVsbD09KGk9ZS5wYXJ0KT92b2lkIDA6aS5wYXJ0VHlwZSk/dDpzP0puKHt9LHQsKChhPXt9KVt1XT12b2lkIDAsYSkpOnQ7ZGVmYXVsdDpyZXR1cm4gdH19O2Z1bmN0aW9uIFhuKCl7cmV0dXJuIFhuPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sWG4uYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciAkbj0oMCxaLlowKSh7bmFtZToib25ib2FyZGluZ1BsYW4iLGluaXRpYWxTdGF0ZTp7cGxhbkRhdGE6bnVsbCxpc0xvYWRpbmc6ITEsaGFzRmV0Y2hlZDohMX0scmVkdWNlcnM6e30sZXh0cmFSZWR1Y2VyczpmdW5jdGlvbih0KXt0LmFkZE1hdGNoZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnR5cGU9PT1GLnljUX0pLChmdW5jdGlvbih0LGUpe3ZhciBuLHI7bnVsbCE9PWUucGxhbkRhdGEmJnQucGxhbkRhdGEmJihuPWUucGxhbkRhdGEudXBkYXRlZF9hdCxyPXQucGxhbkRhdGEudXBkYXRlZF9hdCwhbnx8ciYmIShuPj1yKSl8fCh0LnBsYW5EYXRhPWUucGxhbkRhdGEpLHQuaGFzRmV0Y2hlZD0hMH0pKSx0LmFkZE1hdGNoZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnR5cGU9PT1GLmtZTn0pLChmdW5jdGlvbih0LGUpe3QuaXNMb2FkaW5nPWUuaXNMb2FkaW5nfSkpfX0pLnJlZHVjZXIsdHI9KDAsWi5aMCkoe25hbWU6ImRldk92ZXJyaWRlcyIsaW5pdGlhbFN0YXRlOntmb3JjZVJ0bDohMX0scmVkdWNlcnM6e3NldEZvcmNlUnRsOmZ1bmN0aW9uKHQsZSl7dC5mb3JjZVJ0bD1lLnBheWxvYWR9fX0pLGVyPSh0ci5hY3Rpb25zLnNldEZvcmNlUnRsLHRyLnJlZHVjZXIpLG5yPW4oNDYxNjcpLHJyPW4oODM3NCksb3I9KDAsSi5IWSkoe2FwcDpZLkF5LGV4cGVjdGF0aW9uU2V0dGluZzpRLkF5LGNocm9tZTpmdW5jdGlvbih0LGUpe3ZhciBuO3N3aXRjaCh2b2lkIDA9PT10JiYodD17c2hvdWxkRXhwYW5kOihuPVguTC5nZXQodHQpLCFufHwhIUpTT04ucGFyc2UobikpLGV4cGFuc2lvblRyYW5zaXRpb25Db21wbGV0ZTohMSx3YXNFeHBsaWNpdGx5Q2hhbmdlZDohMSxhdXRvRXhwYW5kZWRCeUNvbnRlbnQ6ITF9KSxlLnR5cGUpe2Nhc2UgRi52JGw6cmV0dXJuIFguTC5zZXQodHQsSlNPTi5zdHJpbmdpZnkoZS5zaG91bGRFeHBhbmQpKSxldCh7fSx0LHtzaG91bGRFeHBhbmQ6ZS5zaG91bGRFeHBhbmQsd2FzRXhwbGljaXRseUNoYW5nZWQ6ITAsYXV0b0V4cGFuZGVkQnlDb250ZW50OiExfSk7Y2FzZSBGLnNrNTp2YXIgcjtyZXR1cm4gJCh7fSx0LHthdXRvRXhwYW5kZWRCeUNvbnRlbnQ6bnVsbCE9KHI9ZS5hdXRvRXhwYW5kKSYmcn0pO2Nhc2UgRi5VQzk6cmV0dXJuICQoe30sdCx7ZXhwYW5zaW9uVHJhbnNpdGlvbkNvbXBsZXRlOiEwfSk7ZGVmYXVsdDpyZXR1cm4gdH19LGxhdW5jaGVyOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHZvaWQgMD09PXQmJih0PXJ0KSxlLnR5cGUpe2Nhc2UgRi5rZmY6dmFyIG49ZS5sYXVuY2hlckVuYWJsZWRPdmVycmlkZSYmIm5vdC1wcmVzZW50IiE9PWUubGF1bmNoZXJFbmFibGVkT3ZlcnJpZGU/ZS5sYXVuY2hlckVuYWJsZWRPdmVycmlkZTp0LmxhdW5jaGVyRW5hYmxlZE92ZXJyaWRlO3JldHVybiBudCh7fSx0LHtsYXVuY2hlckVuYWJsZWRPdmVycmlkZTpufSk7Y2FzZSBGLlJ3cTppZighZS51c2VyLmxhdW5jaGVyU2V0dGluZ3MpcmV0dXJuIHQ7dmFyIHI9ZS51c2VyLmxhdW5jaGVyU2V0dGluZ3Muc2hvd0xhdW5jaGVyO3JldHVybiBudCh7fSx0LHtpc0xhdW5jaGVyRW5hYmxlZDpyfSk7Y2FzZSBGLm9KdTpyZXR1cm4gZS5pc0lkZW50aXR5VmVyaWZpY2F0aW9uRXJyb3I/bnQoe30sdCx7aXNMYXVuY2hlckVuYWJsZWQ6ITF9KTp0O2Nhc2UgUy50ei50eXBlOnZhciBvPWUucGF5bG9hZC5zaG93TGF1bmNoZXI7cmV0dXJuIG50KHt9LHQse2lzTGF1bmNoZXJFbmFibGVkOm99KTtjYXNlIEYucjJ4OnJldHVybiBudCh7fSx0LGUuc3RhdGUubGF1bmNoZXIpO2RlZmF1bHQ6cmV0dXJuIHR9fSxib3RJbnRybzpmdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PXQmJih0PWx0KSxlLnR5cGU9PT1GLmxUbCl7dmFyIG49ZS5ib3RJbnRybztyZXR1cm4gY3Qoe30sdCxuP3tpZDpuLmlkLHBhcnRzOm4ucGFydHMsb3BlcmF0b3I6bi5vcGVyYXRvcn06bHQpfXJldHVybiB0fSx1c2VyOnV0LHNlc3Npb246ZnVuY3Rpb24odCxlKXtzd2l0Y2godm9pZCAwPT09dCYmKHQ9bnVsbCksZS50eXBlKXtjYXNlIEYuUDJJOnZhciBuPWUuc2Vzc2lvbixyPW4uYXBwSWQsbz1uLnVzZXJJZCxpPW4uZW1haWwsYT1uLnVzZXJIYXNoLHU9bi5pbnRlcmNvbVVzZXJKd3Qscz1uLmFub255bW91c0lkLGM9bi5hbm9ueW1vdXNTZXNzaW9uLGw9bi5zZXNzaW9uSWQsZj1uLm1lc3NlbmdlclN0eWxlSWQ7cmV0dXJuIHN0KHt9LHQse2FwcElkOnIsdXNlcklkOm8sZW1haWw6aSx1c2VySGFzaDphLGludGVyY29tVXNlckp3dDp1LGFub255bW91c0lkOnMsYW5vbnltb3VzU2Vzc2lvbjpjLHNlc3Npb25JZDpsLG1lc3NlbmdlclN0eWxlSWQ6Zn0pO2Nhc2UgRi5Sd3E6dmFyIGQscCxoPWUudXNlcix2PWguYW5vbnltb3VzSWQseT1oLmFub255bW91c1Nlc3Npb24sZz1oLmFjdGl2ZUNvbXBhbnlJZCxtPWgubmV3U2Vzc2lvbixiPWguc2Vzc2lvbkV4cGlyeTtyZXR1cm4gc3Qoe30sdCx7YW5vbnltb3VzSWQ6dnx8KG51bGw9PShkPXQpP3ZvaWQgMDpkLmFub255bW91c0lkKSxhbm9ueW1vdXNTZXNzaW9uOnl8fChudWxsPT0ocD10KT92b2lkIDA6cC5hbm9ueW1vdXNTZXNzaW9uKSxhY3RpdmVDb21wYW55SWQ6ZyxuZXdTZXNzaW9uOm0sc2Vzc2lvbkV4cGlyeTpifSk7Y2FzZSBGLnFqUzpyZXR1cm4gbnVsbDtjYXNlIEYuaXhqOnJldHVybiBzdCh7fSx0LHthdXRoVG9rZW5zOmUuYXV0aFRva2Vuc30pO2Nhc2UgRi5vSzM6cmV0dXJuIHN0KHt9LHQse2Fub255bW91c1Nlc3Npb246ZS5hbm9ueW1vdXNTZXNzaW9ufSk7Y2FzZSBGLl9iUzpyZXR1cm4gc3Qoe30sdCx7ZGlkVXNlclN1cHBseUVtYWlsOiEwfSk7Y2FzZSBGLkpfNzpyZXR1cm4gc3Qoe30sdCx7aGVscENlbnRlclNlc3Npb246ZS5oZWxwQ2VudGVyU2Vzc2lvbn0pO2Nhc2UgRi5vUDk6cmV0dXJuIHN0KHt9LHQse2Fub255bW91c1Nlc3Npb246ZS5hbm9ueW1vdXNTZXNzaW9uLHNlc3Npb25FeHBpcnk6ZS5zZXNzaW9uRXhwaXJ5fSk7ZGVmYXVsdDpyZXR1cm4gdH19LG9wZW5PbkJvb3Q6ZnVuY3Rpb24odCxlKXt2YXIgbjtpZih2b2lkIDA9PT10JiYodD11biksby5VYy5tYXRjaChlKSl7dmFyIHIsaSxhLHUscyxjPWFuKHt9LHQpLGw9ZS5wYXlsb2FkLmxvY2F0aW9uLnBhdGhuYW1lLGY9bnVsbD09KHI9L15cL3Rhc2tzXC9jaGVja2xpc3RzXC8oXGQrKS8uZXhlYyhsKSk/dm9pZCAwOnJbMV07Zj8oKDAsbm4uc3YpKCJwdXNoIGNoZWNrbGlzdCBwcm9ncmVzcyAiK2YrIiB0byBvcGVuT25Cb290IiksYy50eXBlPW5uLlpOLGMubWV0YWRhdGE9e2NoZWNrbGlzdFByb2dyZXNzSWQ6Zn0pOihudWxsPT0oaT10KT92b2lkIDA6aS50eXBlKT09PW5uLlpOJiYoKDAsbm4uc3YpKCJjbGVhciBjaGVja2xpc3QgcHJvZ3Jlc3MgZnJvbSBvcGVuT25Cb290IHdpdGggaW5jb21pbmcgcGF0aCAiK2wpLGMudHlwZT1udWxsLGMubWV0YWRhdGE9e30pO3ZhciBkPW51bGw9PShhPS9eXC9tZXNzYWdlc1wvY29udmVyc2F0aW9uXC8oXGQrfG5ldykvLmV4ZWMobCkpP3ZvaWQgMDphWzFdO2lmKCJuZXciPT09ZCkoMCxubi5zdikoInB1c2ggbmV3IGNvbnZlcnNhdGlvbiB0byBvcGVuT25Cb290IiksYy50eXBlPW5uLkJyLGMubWV0YWRhdGE9e307ZWxzZSBpZihkKXsoMCxubi5zdikoInB1c2ggY29udmVyc2F0aW9uICIrZCsiIHRvIG9wZW5PbkJvb3QiKTt2YXIgcD1uZXcgVVJMU2VhcmNoUGFyYW1zKGUucGF5bG9hZC5sb2NhdGlvbi5zZWFyY2gpLmdldCgidmlzaWJpbGl0eSIpO2MudHlwZT1ubi55RSxjLm1ldGFkYXRhPXA/e2NvbnZlcnNhdGlvbklkOmQsdmlzaWJpbGl0eTpwfTp7Y29udmVyc2F0aW9uSWQ6ZH19ZWxzZShudWxsPT0odT10KT92b2lkIDA6dS50eXBlKSE9PW5uLnlFJiYobnVsbD09KHM9dCk/dm9pZCAwOnMudHlwZSkhPT1ubi5Ccnx8KCgwLG5uLnN2KSgiY2xlYXIgY29udmVyc2F0aW9uIGZyb20gb3Blbk9uQm9vdCB3aXRoIGluY29taW5nIHBhdGggIitsKSxjLnR5cGU9bnVsbCxjLm1ldGFkYXRhPXt9KTtyZXR1cm4gYy5sYXN0T3BlbkF0VGltZXN0YW1wPURhdGUubm93KCksY31zd2l0Y2goZS50eXBlKXtjYXNlIEYublEwOnJldHVybiBlLnBlcnNpc3RTdGF0ZXx8dC5tZXRhZGF0YS5pc1ZpZXdpbmdBcnRpY2xlP2FuKHt9LHQse2xhc3RPcGVuQXRUaW1lc3RhbXA6RGF0ZS5ub3coKX0pOigoMCxubi5zdikoImNsZWFyIG9wZW5PbkJvb3Qgc3RhdGUgd2l0aCBhY3Rpb24gIitlLnR5cGUpLHVuKTtjYXNlIG5uLnZuOnJldHVybiBhbih7fSx0LHtsYXN0T3BlbkF0VGltZXN0YW1wOkRhdGUubm93KCl9KTtjYXNlIEYudV85OmNhc2UgRi5oZ3E6Y2FzZSBGLkd2WjpjYXNlIEYucWpTOnJldHVybigwLG5uLnN2KSgiY2xlYXIgb3Blbk9uQm9vdCBzdGF0ZSB3aXRoIGFjdGlvbiAiK2UudHlwZSksdW47Y2FzZSBGLndBczpyZXR1cm4gZS5pZENoYW5nZWQ/KCgwLG5uLnN2KSgiY2xlYXIgb3Blbk9uQm9vdCBzdGF0ZSB3aXRoIGFjdGlvbiAiK2UudHlwZSksdW4pOnQ7Y2FzZSBGLnBTSzppZigiYXJ0aWNsZS1saW5rIj09PWUuY29tcG9uZW50SWQpe3ZhciBoPWFuKHt9LHQpO3JldHVybnt0eXBlOiJhcnRpY2xlIixtZXRhZGF0YTp7dXJsOmUudXJsLGNhcmRVcmk6ZS5jYXJkVXJpLGNvbXBvbmVudElkOmUuY29tcG9uZW50SWQscHJldmlvdXNTdGF0ZTpofSxsYXN0T3BlbkF0VGltZXN0YW1wOkRhdGUubm93KCl9fXJldHVybiB0O2Nhc2UgRi5scGU6cmV0dXJuIG51bGwhPShuPXQubWV0YWRhdGEpJiZuLnByZXZpb3VzU3RhdGU/YW4oe30sdC5tZXRhZGF0YS5wcmV2aW91c1N0YXRlKTp1bjtjYXNlIEYuU2NROnZhciB2LHk9dC5tZXRhZGF0YSxnPXkuYXJ0aWNsZUlkcyxtPXkuYXJ0aWNsZUxhbmd1YWdlcyxiPXZvaWQgMD09PW0/e306bSx3PWc/W10uY29uY2F0KGZ1bmN0aW9uKHQsZSxuKXtpZihlJiYhQXJyYXkuaXNBcnJheShlKSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIG9uKGUsdm9pZCAwIT09biYmbjxyP246cil9cmV0dXJuIHQoZSxuKX0ocm4sZyksW2UuYXJ0aWNsZUlkXSkuZmlsdGVyKEJvb2xlYW4pOltlLmFydGljbGVJZF0uZmlsdGVyKEJvb2xlYW4pLF89ZS5sYW5nP2FuKHt9LGIsKCh2PXt9KVtlLmFydGljbGVJZF09ZS5sYW5nLHYpKTpiO2lmKCFlLmZyb21Ccm93c2VNb2RlKXt2YXIgUz1hbih7fSx0Lm1ldGFkYXRhLHthcnRpY2xlSWRzOncsb3BlbkFydGljbGVTdGFuZGFsb25lOiEwfSk7cmV0dXJuIE9iamVjdC5rZXlzKF8pLmxlbmd0aD4wJiYoUy5hcnRpY2xlTGFuZ3VhZ2VzPV8pLGFuKHt9LHQse21ldGFkYXRhOlMsbGFzdE9wZW5BdFRpbWVzdGFtcDpEYXRlLm5vdygpfSl9dmFyIHg9e2FydGljbGVJZHM6d307cmV0dXJuIE9iamVjdC5rZXlzKF8pLmxlbmd0aD4wJiYoeC5hcnRpY2xlTGFuZ3VhZ2VzPV8pLHt0eXBlOiJzZWFyY2hfYnJvd3NlX2FydGljbGUiLG1ldGFkYXRhOngsbGFzdE9wZW5BdFRpbWVzdGFtcDpEYXRlLm5vdygpfTtjYXNlIEYuT1p5OnZhciBFLEM7aWYoInNlYXJjaF9icm93c2VfYXJ0aWNsZSI9PT10LnR5cGUmJm51bGwhPShFPXQubWV0YWRhdGEpJiZFLmFydGljbGVJZHMmJihudWxsPT0oQz10Lm1ldGFkYXRhKXx8bnVsbD09KEM9Qy5hcnRpY2xlSWRzKT92b2lkIDA6Qy5sZW5ndGgpPjEpe3ZhciBPPXthcnRpY2xlSWRzOnQubWV0YWRhdGEuYXJ0aWNsZUlkcy5zbGljZSgwLHQubWV0YWRhdGEuYXJ0aWNsZUlkcy5sZW5ndGgtMSl9O3JldHVybiB0Lm1ldGFkYXRhLmFydGljbGVMYW5ndWFnZXMmJk9iamVjdC5rZXlzKHQubWV0YWRhdGEuYXJ0aWNsZUxhbmd1YWdlcykubGVuZ3RoPjAmJihPLmFydGljbGVMYW5ndWFnZXM9dC5tZXRhZGF0YS5hcnRpY2xlTGFuZ3VhZ2VzKSx7dHlwZToic2VhcmNoX2Jyb3dzZV9hcnRpY2xlIixtZXRhZGF0YTpPLGxhc3RPcGVuQXRUaW1lc3RhbXA6RGF0ZS5ub3coKX19cmV0dXJuIHVuO2Nhc2Ugbm4uQ0M6cmV0dXJue3R5cGU6bm4uQ0MsbWV0YWRhdGE6e2FydGljbGVJZHM6W2UuYXJ0aWNsZUlkXSxvcGVuQXJ0aWNsZVN0YW5kYWxvbmU6ITB9LGxhc3RPcGVuQXRUaW1lc3RhbXA6RGF0ZS5ub3coKX07Y2FzZSBGLnIyeDpyZXR1cm4gYW4oe30sdCxlLnN0YXRlLm9wZW5PbkJvb3QpO2RlZmF1bHQ6cmV0dXJuIHR9fSxvcGVyYXRvcjpmdW5jdGlvbih0LGUpe3N3aXRjaCh2b2lkIDA9PT10JiYodD1MZSksZS50eXBlKXtjYXNlIEYudnhuOmNhc2UgRi5FbVg6cmV0dXJuIGtlKHt9LHQse2xhc3RBcnRpY2xlQ2xvc2VkQXQ6bnVsbCxjb252ZXJzYXRpb25JZE9mTGFzdFZpZXdlZEFydGljbGU6bnVsbH0pO2Nhc2UgRi5JS0o6cmV0dXJuIGtlKHt9LHQse2xhc3RDb21wb3NlckV2ZW50OmUubGFzdEFjdGl2ZUF0LmdldFRpbWUoKSxjb21wb3Nlckhhc0NvbnRlbnQ6IiIhPT1lLmNvbXBvc2VyQ29udGVudH0pO2Nhc2UgRi5YV286cmV0dXJuIGtlKHt9LHQse3VzZXJDcmVhdGVkQ29udmVyc2F0aW9uQXQ6ZS50aW1lc3RhbXB9KTtjYXNlIEYuU2NROnJldHVybiBrZSh7fSx0LHtsYXN0QXJ0aWNsZUNsb3NlZEF0Om51bGwsY29udmVyc2F0aW9uSWRPZkxhc3RWaWV3ZWRBcnRpY2xlOmUuY29udmVyc2F0aW9uSWR9KTtjYXNlIEYuT1p5OnJldHVybiBrZSh7fSx0LHtsYXN0QXJ0aWNsZUNsb3NlZEF0OmUuY2xvc2VkQXR9KTtjYXNlIEYuUndxOmNhc2UgRi5fYlM6cmV0dXJuIGtlKHt9LHQse2NsaWVudHNpZGVSdWxlc2V0Q29uZGl0aW9uczplLnVzZXIuY2xpZW50c2lkZVJ1bGVzZXRDb25kaXRpb25zfSk7Y2FzZSBGLmU5SDpyZXR1cm4ga2Uoe30sdCx7bGFzdFRyaWdnZXJUcmFuc2l0aW9uVGltZXN0YW1wOmUucGF5bG9hZC50aW1lc3RhbXB9KTtjYXNlIEYucjJ4OnJldHVybiBrZSh7fSx0LGUuc3RhdGUub3BlcmF0b3IpO2RlZmF1bHQ6cmV0dXJuIHR9fSxtZXNzYWdlOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHZvaWQgMD09PXQmJih0PWZ0KSxlLnR5cGUpe2Nhc2UgRi52elA6cmV0dXJue2NvbnZlcnNhdGlvbklkOmUuY29udmVyc2F0aW9uSWQscGFydElkOmUucGFydElkfTtjYXNlIEYubEw6cmV0dXJuIGZ0O2Nhc2UgRi53QXM6cmV0dXJuIGUuaWRDaGFuZ2VkP2Z0OnQ7ZGVmYXVsdDpyZXR1cm4gdH19LHBvaW50ZXJNZXNzYWdlOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHZvaWQgMD09PXQmJih0PWR0KSxlLnR5cGUpe2Nhc2UgRi5GMzY6cmV0dXJue2NvbnZlcnNhdGlvbklkOmUuY29udmVyc2F0aW9uSWQscGFydElkOmUucGFydElkfTtjYXNlIEYuUHo5OnJldHVybiBkdDtkZWZhdWx0OnJldHVybiB0fX0sZGlzbWlzc2VkUG9pbnRlcnM6ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9aHQpLGUudHlwZT09PUYuUHJxP3B0KHt9LHQsKChuPXt9KVtlLmNvbnZlcnNhdGlvbklkXT0hMCxuKSk6dH0sYXJ0aWNsZTpmdW5jdGlvbih0LGUpe3N3aXRjaCh2b2lkIDA9PT10JiYodD1idCksZS50eXBlKXtjYXNlIEYuU2NROnJldHVybiBwYXJzZUludCh0LmFjdGl2ZUFydGljbGVJZHx8IiIpPT09cGFyc2VJbnQoZS5hcnRpY2xlSWR8fCIiKT90Om10KHt9LHQse2FjdGl2ZUFydGljbGVJZDplLmFydGljbGVJZCxpblNlYXJjaEJyb3dzZTplLmZyb21Ccm93c2VNb2RlLGZyb21Ib21lU2NyZWVuU3VnZ2VzdGlvbnM6ZS5mcm9tSG9tZVNjcmVlblN1Z2dlc3Rpb25zLHZpZXdTdGFjazpbXS5jb25jYXQodnQoeXQsdC52aWV3U3RhY2t8fFtdKSxbZS5hcnRpY2xlSWRdKSxpc0xvYWRlZDohMSxoYXNoOmUuaGFzaH0pO2Nhc2UgRi5IT2k6dmFyIG4scjtyZXR1cm4obnVsbD09KG49dCl8fG51bGw9PShuPW4uYXJ0aWNsZUxvY2FsZSk/dm9pZCAwOm4udXJsKT09PShudWxsPT1lfHxudWxsPT0ocj1lLmFydGljbGVMb2NhbGUpP3ZvaWQgMDpyLnVybCk/dDptdCh7fSx0LHthY3RpdmVBcnRpY2xlSWQ6ZS5hcnRpY2xlSWQsaXNMb2FkZWQ6ITEsYXJ0aWNsZUxvY2FsZTplLmFydGljbGVMb2NhbGV9KTtjYXNlIEYuT1p5OnZhciBvPXQudmlld1N0YWNrLGk9dm9pZCAwPT09bz9bXTpvO3JldHVybiBpLnBvcCgpLGkubGVuZ3RoPjA/bXQoe30sdCx7YWN0aXZlQXJ0aWNsZUlkOmlbaS5sZW5ndGgtMV0saXNMb2FkZWQ6ITEsdHJhbnNpdGlvbmluZ0JhY2s6ITF9KTpidDtjYXNlIEYua3RtOmNhc2UgRi5taU86cmV0dXJuIGJ0O2Nhc2UgRi5uUTA6cmV0dXJuIHQuaXNTdGFuZGFsb25lfHx0LmluU2VhcmNoQnJvd3NlP3Q6YnQ7Y2FzZSBGLkJIZTpyZXR1cm4gbXQoe30sdCx7aXNMb2FkZWQ6ITB9KTtjYXNlIEYuZXhaOnJldHVybiBtdCh7fSx0LHt0cmFuc2l0aW9uaW5nQmFjazohMH0pO2Nhc2UgRi5ReVU6cmV0dXJuIG10KHt9LHQse3ZpZXdTdGFjazpbXX0pO2Nhc2UgRi5YRHI6cmV0dXJuIG10KHt9LHQse2lzU3RhbmRhbG9uZTohMCxpc0xvYWRlZDohMX0pO2Nhc2UgRi52eG46cmV0dXJuIGJ0O2RlZmF1bHQ6cmV0dXJuIHR9fSxhcnRpY2xlczpmdW5jdGlvbih0LGUpe3N3aXRjaCh2b2lkIDA9PT10JiYodD1UdCksZS50eXBlKXtjYXNlIEYuJGFQOnZhciBuO3JldHVybiB4dCh7fSx0LCgobj17fSlbZS5hcnRpY2xlLmlkXT14dCh7fSxlLmFydGljbGUpLG4pKTtjYXNlIEYuX2FKOnZhciByLG89ZS5hcnRpY2xlSWQsaT1lLnJlYWN0aW9uSW5kZXg7aWYoIU9iamVjdC5oYXNPd24odCxvKSlyZXR1cm4gdDt2YXIgYT10W29dO3JldHVybiB4dCh7fSx0LCgocj17fSlbb109eHQoe30sYSx7cmVhY3Rpb25zUmVwbHk6eHQoe30sYS5yZWFjdGlvbnNSZXBseSx7cmVhY3Rpb25JbmRleDppfSl9KSxyKSk7Y2FzZSBGLmdMSDp2YXIgdSxzPWUuYXJ0aWNsZUlkLGM9ZS5yZWxhdGVkQ29udmVyc2F0aW9uSWQ7aWYoIU9iamVjdC5oYXNPd24odCxzKSlyZXR1cm4gdDt2YXIgbD10W3NdO3JldHVybiB4dCh7fSx0LCgodT17fSlbc109eHQoe30sbCx7cmVsYXRlZENvbnZlcnNhdGlvbklkOmN9KSx1KSk7Y2FzZSBGLkIyRjp2YXIgZj1lLmFydGljbGVDb2xsZWN0aW9ucztyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgbj14dCh7fSx0KTtmb3IodmFyIHIgaW4gZSlpZihPYmplY3QuaGFzT3duKGUscikpe3ZhciBvPW5bcl0saT1lW3JdO25bcl09THQob3x8e30saSl9cmV0dXJuIG59KHQsX3QoZikpfXJldHVybiB0fSxhcnRpY2xlQ29sbGVjdGlvbnM6ZnVuY3Rpb24odCxlKXtzd2l0Y2godm9pZCAwPT09dCYmKHQ9anQpLGUudHlwZSl7Y2FzZSBGLkVfTjpyZXR1cm4ganQ7Y2FzZSBGLkIyRjppZihlLmFydGljbGVDb2xsZWN0aW9ucy5sZW5ndGg+MClyZXR1cm4gZS5hcnRpY2xlQ29sbGVjdGlvbnN9cmV0dXJuIHR9LGNvbnZlcnNhdGlvbnM6ZnVuY3Rpb24odCxlKXt2YXIgbjtzd2l0Y2godm9pZCAwPT09dCYmKHQ9cmUpLGUudHlwZSl7Y2FzZSBGLlJ3cTpjYXNlIEYuX2JTOmNhc2UgRi5hd3A6cmV0dXJuIG5lKHt9LHQse2J5SWQ6aWUodC5ieUlkLGUpfSk7Y2FzZSBGLk9OSzpyZXR1cm4gbmUoe30sdCx7aXNGZXRjaGluZzohMH0pO2Nhc2UgRi5tR1g6dmFyIHIsbz0obnVsbD09ZXx8bnVsbD09KHI9ZS5jb252ZXJzYXRpb25zKT92b2lkIDA6ci5wYWdlcyl8fHt9LGk9by5wYWdlLGE9by50b3RhbFBhZ2VzO3JldHVybiBuZSh7fSx0LHtpc0ZldGNoaW5nOiExLHBhZ2VzRmV0Y2hlZDppLHRvdGFsUGFnZXM6YSxieUlkOmllKHQuYnlJZCxlKX0pO2Nhc2UgRi54MDY6cmV0dXJuIG5lKHt9LHQse2lzRmV0Y2hpbmc6ITF9KTtjYXNlIEYudXZJOmNhc2UgRi5hbE06Y2FzZSBGLkFkTDpjYXNlIEYuRm44OmNhc2UgRi5QV0M6Y2FzZSBGLlQ0azpjYXNlIEYuSUR6OmNhc2UgRi5MTEo6Y2FzZSBGLmZFQzpjYXNlIEYuUHpTOmNhc2UgRi5ITXU6Y2FzZSBGLlUyZDpjYXNlIEYueU01OmNhc2UgRi5UbVE6Y2FzZSBGLnUwYzpjYXNlIEYuc1VTOmNhc2UgRi5Eekw6Y2FzZSBGLlQkNTpjYXNlIEYudWZVOmNhc2UgRi5hUTU6Y2FzZSBGLnplXzpjYXNlIEYuWlM5OmNhc2UgRi5vX0U6Y2FzZSBGLmN4NDpjYXNlIEYub25YOmNhc2UgRi5fVTg6Y2FzZSBGLmlEZDpjYXNlIEYuSUtKOmNhc2UgRi5BOTk6Y2FzZSBGLnJfMTpjYXNlIEYuZkVMOmNhc2UgRi5QNXk6cmV0dXJuIG5lKHt9LHQse2J5SWQ6aWUodC5ieUlkLGUpfSk7Y2FzZSBGLnZ5UDpyZXR1cm4gbmUoe30sdCx7YnlJZDppZSh0LmJ5SWQsZSksdGl0bGVVcGRhdGVzOm5lKHt9LHQudGl0bGVVcGRhdGVzLChuPXt9LG5bZS5jb252ZXJzYXRpb25JZF09RGF0ZS5ub3coKSxuKSl9KTtjYXNlIEYuS0hfOnJldHVybiBuZSh7fSx0LHtieUlkOmllKHQuYnlJZCxlKX0pO2Nhc2UgRi55cWs6cmV0dXJuIG5lKHt9LHQse3Njcm9sbFBvc2l0aW9uOmUuc2Nyb2xsUG9zaXRpb259KTtjYXNlIEYuZmptOnJldHVybiBuZSh7fSx0LHtieUlkOmllKHQuYnlJZCxlKX0pO2Nhc2UgRi53QXM6cmV0dXJuIGUuaWRDaGFuZ2VkP25lKHt9LHJlKTp0O2RlZmF1bHQ6cmV0dXJuIHR9fSxuZXdDb252ZXJzYXRpb246Y2Usbm90aWZpY2F0aW9uQ2hhbm5lbHM6ZnVuY3Rpb24odCxlKXtzd2l0Y2godm9pZCAwPT09dCYmKHQ9ZGUpLGUudHlwZSl7Y2FzZSBGLmt4OnJldHVybiBmZSh7fSx0LHtpc1NhdmluZzohMH0pO2Nhc2UgRi5Sd3E6Y2FzZSBGLl9iUzpyZXR1cm4gZmUoe30sdCx7aXNTYXZpbmc6ITF9KTtjYXNlIEYueDNzOnJldHVybiBmZSh7fSx0LHtpc1NhdmluZzohMCxlcnJvck1lc3NhZ2U6bnVsbCxzaG93RXJyb3JNZXNzYWdlOiExfSk7Y2FzZSBGLmZuODpyZXR1cm4gZmUoe30sdCx7cGhvbmVOdW1iZXI6ZS5waG9uZU51bWJlcixpc1NhdmluZzohMX0pO2Nhc2UgRi5XRWk6cmV0dXJuIGZlKHt9LHQse2Vycm9yTWVzc2FnZTplLm1lc3NhZ2UsaXNTYXZpbmc6ITEsc2hvd0Vycm9yTWVzc2FnZTohMH0pO2Nhc2UgRi5BZzc6cmV0dXJuIGZlKHt9LHQse2Vycm9yTWVzc2FnZTpudWxsLHNob3dFcnJvck1lc3NhZ2U6ITF9KTtkZWZhdWx0OnJldHVybiB0fX0sbm90aWZpY2F0aW9uVHlwZU92ZXJyaWRlczpmdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT10JiYodD1sZSksZS50eXBlPT09Ri5uUD9PYmplY3QuYXNzaWduKHt9LHQse3N1cHByZXNzOk9iamVjdC5hc3NpZ24oe30sdC5zdXBwcmVzcyxlLnN1cHByZXNzKSxmb3JjZVNuaXBwZXQ6T2JqZWN0LmFzc2lnbih7fSx0LmZvcmNlU25pcHBldCxlLmZvcmNlU25pcHBldCl9KTp0fSxpbnN0YWxsOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHZvaWQgMD09PXQmJih0PWhlKSxlLnR5cGUpe2Nhc2UgRi5CdWI6dmFyIG49ZS5hY3RpdmVTdWJzY3JpcHRpb24scj1lLnVzZXJIYXNoVmVyaWZpZWQsbz1lLnNlY3VyZUluc3RhbGxWMixpPWUubWVzc2VuZ2VyRW5hYmxlZEZvclZpc2l0b3JzLGE9ZS5tZXNzZW5nZXJFbmFibGVkRm9yVXNlcnM7cmV0dXJuIHBlKHt9LHQse2lzSW5zdGFsbE1vZGVPcGVuOiEwLGluc3RhbGxNb2RlQ29uZmlnOnthY3RpdmVTdWJzY3JpcHRpb246bix1c2VySGFzaFZlcmlmaWVkOnIsc2VjdXJlSW5zdGFsbFYyOm8sbWVzc2VuZ2VyRW5hYmxlZEZvclZpc2l0b3JzOmksbWVzc2VuZ2VyRW5hYmxlZEZvclVzZXJzOmF9fSk7Y2FzZSBGLiRvQjpyZXR1cm4gcGUoe30sdCx7aXNJbnN0YWxsTW9kZU9wZW46ITF9KTtkZWZhdWx0OnJldHVybiB0fX0sZ2lmczpmdW5jdGlvbih0LGUpe3N3aXRjaCh2b2lkIDA9PT10JiYodD15ZSksZS50eXBlKXtjYXNlIEYuckdrOnZhciBuPWUuc2VhcmNoVGVybTtyZXR1cm4gdmUoe30sdCx7aXNGZXRjaGluZzohMCxmZXRjaGluZ0ZhaWxlZDohMSxzZWFyY2hUZXJtOm59KTtjYXNlIEYuWmlIOnZhciByPWUuZ2lmcyxvPWUuc2VhcmNoVGVybTtyZXR1cm4gbyE9PXQuc2VhcmNoVGVybT90OnZlKHt9LHQse2lzRmV0Y2hpbmc6ITEsZ2lmczpyLGZldGNoaW5nRmFpbGVkOiExLHNlYXJjaFRlcm06b30pO2Nhc2UgRi5jZGg6dmFyIGk9ZS5zZWFyY2hUZXJtO3JldHVybiBpIT09dC5zZWFyY2hUZXJtP3Q6dmUoe30sdCx7aXNGZXRjaGluZzohMSxmZXRjaGluZ0ZhaWxlZDohMCxzZWFyY2hUZXJtOml9KTtkZWZhdWx0OnJldHVybiB0fX0sbGF1bmNoZXJEaXNjb3ZlcnlNb2RlOmZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09dCYmKHQ9YmUpO3ZhciBuPXQuaXNMYXVuY2hlckRpc2NvdmVyeU1vZGVFbmFibGVkO3N3aXRjaChlLnR5cGUpe2Nhc2UgRi5Sd3E6dmFyIHI9ZS51c2VyO3JldHVybiBtZSh7fSx0LHtpc0xhdW5jaGVyRGlzY292ZXJ5TW9kZUVuYWJsZWQ6d2Uocil9KTtjYXNlIEYuT05LOnJldHVybiBtZSh7fSx0LHtpc0xhdW5jaGVyRGlzY292ZXJ5TW9kZUVuYWJsZWQ6ITEsaGFzRGlzY292ZXJlZExhdW5jaGVyOiEwfSk7Y2FzZSBGLko0QzpyZXR1cm4gbWUoe30sdCx7aGFzRGlzY292ZXJlZExhdW5jaGVyOiEwLGlzTGF1bmNoZXJEaXNjb3ZlcnlNb2RlRW5hYmxlZDohMX0pO2Nhc2UgRi5yRVg6cmV0dXJuIG1lKHt9LHQse2lzTGF1bmNoZXJEaXNjb3ZlcnlNb2RlT3BlbmluZzpuLGhhc0Rpc2NvdmVyZWRMYXVuY2hlcjohMH0pO2Nhc2UgRi5ubms6cmV0dXJuIG1lKHt9LHQse2lzTGF1bmNoZXJEaXNjb3ZlcnlNb2RlT3BlbmluZzohMSxpc0xhdW5jaGVyRGlzY292ZXJ5TW9kZUNsb3Npbmc6bn0pO2Nhc2UgRi52eG46Y2FzZSBGLlVZNTpyZXR1cm4gbWUoe30sdCx7aXNMYXVuY2hlckRpc2NvdmVyeU1vZGVDbG9zaW5nOiExLGlzTGF1bmNoZXJEaXNjb3ZlcnlNb2RlT3BlbmluZzohMX0pO2Nhc2UgRi5UOTI6cmV0dXJuIG1lKHt9LHQse2lzTGF1bmNoZXJEaXNjb3ZlcnlNb2RlRW5hYmxlZDohMSxpc0xhdW5jaGVyRGlzY292ZXJ5TW9kZUNsb3Npbmc6ITF9KTtjYXNlIEYucjJ4OnZhciBvPWUuc3RhdGUubGF1bmNoZXJEaXNjb3ZlcnlNb2RlO3JldHVybiBtZSh7fSx0LG8pO2RlZmF1bHQ6cmV0dXJuIHR9fSxtZXNzZW5nZXJDYXJkczpmdW5jdGlvbih0LGUpe3N3aXRjaCh2b2lkIDA9PT10JiYodD1FZSksZS50eXBlKXtjYXNlIEYua1N5OmlmKCFlLmNhcmRVcmkpcmV0dXJuIHQ7dmFyIG49Q2UodCxlLmNhcmRVcmkpO3JldHVybiBuW2UuY2FyZFVyaV0uaXNGZXRjaGluZz0hMSxPZShuW2UuY2FyZFVyaV0sZS5jb21wb25lbnRJZCwhMSksbjtjYXNlIEYuWkJ6OmlmKCFlLmNhcmQudXJpKXJldHVybiB0O3ZhciByPUNlKHQsZS5jYXJkLnVyaSk7cmV0dXJuIHJbZS5jYXJkLnVyaV0uaXNGZXRjaGluZz0hMSxyW2UuY2FyZC51cmldLmlzRmV0Y2hlZD0hMCxyW2UuY2FyZC51cmldLnBhcnRpYWxDYXJkPWUuY2FyZCxyO2Nhc2UgRi5kSWY6aWYoIWUuY2FyZFVyaSlyZXR1cm4gdDt2YXIgbz1DZSh0LGUuY2FyZFVyaSk7cmV0dXJuIG9bZS5jYXJkVXJpXS5pc0ZldGNoaW5nPSEwLE9lKG9bZS5jYXJkVXJpXSxlLmNvbXBvbmVudElkLCEwKSxvO2Nhc2UgRi5JMFU6aWYoIWUuY2FyZC51cmkpcmV0dXJuIHQ7dmFyIGk9Q2UodCxlLmNhcmQudXJpKTtyZXR1cm4gaVtlLmNhcmQudXJpXS5pc0NvbnRlbnRGZXRjaGluZz0hMCxpO2Nhc2UgRi5VSGQ6aWYoIWUuY2FyZC51cmkpcmV0dXJuIHQ7dmFyIGE9Q2UodCxlLmNhcmQudXJpKSx1PWUuY2FyZC51cmk7YVt1XS5pc0ZldGNoaW5nPSExLGFbdV0uaXNGZXRjaGVkPSEwLGFbdV0uaXNDb250ZW50RmV0Y2hlZD0hMCxhW3VdLmlzQ29udGVudEVycm9yPSExLGFbdV0uaXNDb250ZW50RmV0Y2hpbmc9ITE7dmFyIHM9KDAsX2UubSkoZS5jYXJkKSxjPSgwLF9lLm0pKGUuY29udGVudCk7cmV0dXJuIGFbdV0uY2FyZD1zLGFbdV0uY2FyZC5jYW52YXM/YVt1XS5jYXJkLmNhbnZhcy5jb250ZW50PWM6YVt1XS5jYXJkLmNhbnZhcz17aWQ6IiIsY29udGVudDpjfSxhW3VdLmNhcmQ9KDAsU2UuU3YpKGFbdV0uY2FyZCksYTtjYXNlIEYuJFJjOmlmKCFlLmNhcmQudXJpKXJldHVybiB0O3ZhciBsPUNlKHQsZS5jYXJkLnVyaSk7cmV0dXJuIGxbZS5jYXJkLnVyaV0uaXNDb250ZW50RXJyb3I9ITAsbFtlLmNhcmQudXJpXS5pc0NvbnRlbnRGZXRjaGluZz0hMSxsW2UuY2FyZC51cmldLnBhcnRpYWxDYXJkPWUuY2FyZCxsO2RlZmF1bHQ6cmV0dXJuIHR9fSxtZXNzZW5nZXJTaGVldDpmdW5jdGlvbih0LGUpe3N3aXRjaCh2b2lkIDA9PT10JiYodD1JZSksZS50eXBlKXtjYXNlIEYucnpFOnJldHVybiBBZSh7fSx0LHtpc05hdmlnYXRpbmc6ITB9KTtjYXNlIEYueVN6OnJldHVybiBBZSh7fSx0LHtpc05hdmlnYXRpbmc6ITF9KTtjYXNlIEYudFhROnJldHVybiBBZSh7fSx0LHtpc1Byb3h5TG9hZGVkOmUuaXNMb2FkZWR9KTtjYXNlIEYucFNLOnJldHVybiBBZSh7fSx0LHt1cmw6ZS51cmwsaXNPcGVuOiEwLHNvdXJjZUNhcmQ6e2NhcmRVcmk6ZS5jYXJkVXJpLGNvbXBvbmVudElkOmUuY29tcG9uZW50SWR9fSk7Y2FzZSBGLlViXzpyZXR1cm4gQWUoe30sdCx7dXJsOmUudXJsLGlzT3BlbjohMCxzb3VyY2VDYXJkOnt0b2tlbjplLnRva2VuLGNvbXBvbmVudElkOmUuY29tcG9uZW50SWR9fSk7Y2FzZSBGLmxwZTpyZXR1cm4gSWU7Y2FzZSBGLnd3WjpyZXR1cm4gQWUoe30sdCx7c2hlZXRUaXRsZTplLnNoZWV0VGl0bGV9KTtjYXNlIEYuT1hYOnJldHVybiBBZSh7fSx0LHtpc1NoZWV0c0RhdGFMb2FkaW5nOiEwfSk7Y2FzZSBGLllqcjpyZXR1cm4gQWUoe30sdCx7aXNTaGVldHNEYXRhTG9hZGluZzohMSxpc1NoZWV0c0RhdGFMb2FkZWQ6ITAsZGF0YTplLmRhdGF9KTtjYXNlIEYuSFZIOnJldHVybiBBZSh7fSx0LHtpc1NoZWV0c0RhdGFMb2FkaW5nOiExfSk7ZGVmYXVsdDpyZXR1cm4gdH19LG1lc3NlbmdlckFsZXJ0czpmdW5jdGlvbih0LGUpe3N3aXRjaCh2b2lkIDA9PT10JiYodD1qZSksZS50eXBlKXtjYXNlIEYuQlFUOnJldHVybiBUZSh7fSx0LHtpc1Nob3duOiEwLGFsZXJ0VHlwZTplLnBheWxvYWQuYWxlcnRUeXBlLGFsZXJ0UGF5bG9hZDplLnBheWxvYWQuYWxlcnRQYXlsb2FkfSk7Y2FzZSBGLm9ldzpyZXR1cm4gamU7ZGVmYXVsdDpyZXR1cm4gdH19LGN1c3RvbWl6YXRpb25PdmVycmlkZXM6ZnVuY3Rpb24odCxlKXtzd2l0Y2godm9pZCAwPT09dCYmKHQ9TmUpLGUudHlwZSl7Y2FzZSBGLldFeDpyZXR1cm4gUGUoe30sdCxlLmN1c3RvbWl6YXRpb25BdHRyaWJ1dGVzKTtjYXNlIEYuUFlUOnJldHVybiBQZSh7fSx0LGUuY3VzdG9taXphdGlvbkF0dHJpYnV0ZXMse2lzSGVpZ2h0U2V0QnlCYW5uZXI6ITB9KTtkZWZhdWx0OnJldHVybiB0fX0sYWNjZXNzaWJpbGl0eTpmdW5jdGlvbih0LGUpe3N3aXRjaCh2b2lkIDA9PT10JiYodD1SZSksZS50eXBlKXtjYXNlIEYuTWtJOnJldHVybiBNZSh7fSx0LHt0YWJOYXZpZ2F0aW9uOmUudGFiTmF2aWdhdGlvbn0pO2Nhc2UgRi5BMFU6cmV0dXJuIE1lKHt9LHQse2FjY2Vzc2liaWxpdHlUaGVtZTplLmFjY2Vzc2liaWxpdHlUaGVtZSxzZWNvbmRhcnlBY2Nlc3NpYmlsaXR5VGhlbWU6ZS5zZWNvbmRhcnlBY2Nlc3NpYmlsaXR5VGhlbWV9KTtjYXNlIEYucSR1OnJldHVybiBNZSh7fSx0LHtpc01vZGFsT3BlbjplLmlzTW9kYWxPcGVufSk7ZGVmYXVsdDpyZXR1cm4gdH19LHRvdXI6ZnVuY3Rpb24odCxlKXtzd2l0Y2godm9pZCAwPT09dCYmKHQ9emUpLGUudHlwZSl7Y2FzZSBGLkdfcjpyZXR1cm4gVWUoe30sdCx7aXNGZXRjaGluZzohMCxpc0ZldGNoZWQ6ITEsZmV0Y2hpbmdGYWlsZWQ6ITF9KTtjYXNlIEYuJFNaOnJldHVybiBVZSh7fSx0LHt1cGRhdGVGYWlsZWQ6ITB9KTtjYXNlIEYuX2pyOnJldHVybiBVZSh7fSx0LHtpc0ZldGNoaW5nOiExLGlzRmV0Y2hlZDohMCxmZXRjaGluZ0ZhaWxlZDohMSxpc1ByZXZpZXdpbmc6ZS5pc1ByZXZpZXdpbmdUb3VyLGFjdGl2ZVRvdXI6ZS50b3VyfSk7Y2FzZSBGLlZoRjpyZXR1cm4gVWUoe30sdCx7aXNGZXRjaGluZzohMSxpc0ZldGNoZWQ6ITEsZmV0Y2hpbmdGYWlsZWQ6ITB9KTtjYXNlIEYuUFZnOnJldHVybiB0LmFjdGl2ZVRvdXI/VWUoe30sdCx7YWN0aXZlVG91cjpVZSh7fSx0LmFjdGl2ZVRvdXIse2FjdGl2ZVN0ZXBJZDplLmFjdGl2ZVN0ZXBJZH0pfSk6VWUoe30sdCk7Y2FzZSBGLnpGcTpyZXR1cm4gVWUoe30sdCx7aXNGZXRjaGVkOiEwLGlzUHJldmlld2luZzohMCxhY3RpdmVUb3VyOmUudG91cn0pO2Nhc2UgRi5ueXI6cmV0dXJuIFVlKHt9LHQse2lzRmV0Y2hlZDohMSxpc1ByZXZpZXdpbmc6ITEsYWN0aXZlVG91cjp2b2lkIDB9KTtjYXNlIEYuaDB0OmNhc2UgRi5QOGk6Y2FzZSBGLnl2RTpjYXNlIEYuT0NkOnJldHVybiB6ZTtjYXNlIEYuZHNFOnJldHVybiB0LmFjdGl2ZVRvdXI/VWUoe30sdCx7YWN0aXZlVG91cjpVZSh7fSx0LmFjdGl2ZVRvdXIse2lzQ29tcGxldGVkOiEwfSl9KTpVZSh7fSx0KTtjYXNlIEYuWEJrOnJldHVybiBVZSh7fSx0LHt2aWRlb0F1ZGlvTXV0ZWQ6ZS5tdXRlZCx1c2VySGFzSW50ZXJhY3RlZFdpdGhWaWRlbzohMH0pO2Nhc2UgRi54dTI6cmV0dXJuIFVlKHt9LHQse2lzQXdhaXRpbmdQcm9ncmVzczohMH0pO2Nhc2UgRi5BMGU6cmV0dXJuIFVlKHt9LHQse2lzQXdhaXRpbmdQcm9ncmVzczohMX0pO2RlZmF1bHQ6cmV0dXJuIHR9fSx0cmlnZ2VyczpmdW5jdGlvbih0LGUpe3ZvaWQgMD09PXQmJih0PUZlKTt2YXIgbj1IZSh7fSx0LnRyaWdnZXJzKTtzd2l0Y2goZS50eXBlKXtjYXNlIEYuZEpxOnJldHVybiBuW2UudHJpZ2dlci5pZF09ZS50cmlnZ2VyLEhlKHt9LHQse3RyaWdnZXJzOm59KTtjYXNlIEYuZ1V5OnJldHVybiBkZWxldGUgbltlLnRyaWdnZXJJZF0sSGUoe30sdCx7dHJpZ2dlcnM6bn0pO2Nhc2UgRi5oRms6cmV0dXJuIEhlKHt9LHQse2FjdGl2ZTplLnRyaWdnZXJJZCxmYWlsZWQ6ITF9KTtjYXNlIEYua240OnJldHVybiBIZSh7fSx0LHthY3RpdmU6bnVsbH0pO2Nhc2UgRi5ybGs6cmV0dXJuIEhlKHt9LHQse2ZhaWxlZDohMH0pO2RlZmF1bHQ6cmV0dXJuIHR9fSxpbmJvdW5kU3VnZ2VzdGlvbnM6ZnVuY3Rpb24odCxlKXtzd2l0Y2godm9pZCAwPT09dCYmKHQ9V2UpLGUudHlwZSl7Y2FzZSBGLllkTTpyZXR1cm4gcWUoe30sdCx7YWxsU3VnZ2VzdGlvbnM6W10uY29uY2F0KEJlKFZlLHQuYWxsU3VnZ2VzdGlvbnMpLFtlLmNvbXBvc2VyU3VnZ2VzdGlvbnNdKX0pO2Nhc2UgRi5EM1I6cmV0dXJuIHFlKHt9LHQse2FsbFN1Z2dlc3Rpb25zOnQuYWxsU3VnZ2VzdGlvbnMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ydWxlc2V0SWQhPT1lLnJ1bGVzZXRJZH0pKX0pO2Nhc2UgRi5LVTE6dmFyIG49dC5hbGxTdWdnZXN0aW9ucztyZXR1cm4gdC5zZXJ2ZXJTaWRlU3VnZ2VzdGlvbnMmJihuPW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gdC5zZXJ2ZXJTaWRlU3VnZ2VzdGlvbnMmJmUucnVsZXNldElkIT09dC5zZXJ2ZXJTaWRlU3VnZ2VzdGlvbnMucnVsZXNldElkfSkpKSxlLmNvbXBvc2VyU3VnZ2VzdGlvbnMmJihuPSgwLERlLmgpKFtdLmNvbmNhdChCZShWZSxuKSxbZS5jb21wb3NlclN1Z2dlc3Rpb25zXSksInJ1bGVzZXRJZCIpKSxxZSh7fSx0LHthbGxTdWdnZXN0aW9uczpuLHNlcnZlclNpZGVTdWdnZXN0aW9uczplLmNvbXBvc2VyU3VnZ2VzdGlvbnN9KTtjYXNlIEYuck13OnJldHVybiBxZSh7fSx0LHtwcmV2aWV3U3VnZ2VzdGlvbnM6ZS5jb21wb3NlclN1Z2dlc3Rpb25zfSk7ZGVmYXVsdDpyZXR1cm4gdH19LGJhbm5lcnM6S2UsY29tcG9zZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9SmUpLGUudHlwZT09PUYuSUtKP1plKHt9LHQse2NvbnRlbnQ6ZS5jb21wb3NlckNvbnRlbnR9KTp0fSxwcmVkaWN0aXZlQW5zd2VyczpmdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT10JiYodD1RZSksZS50eXBlPT09Ri5YaHI/WWUoe30sdCx7Y29tcG9zZXJTdWdnZXN0aW9uczplLnByZWRpY3RpdmVBbnN3ZXJzU3VnZ2VzdGlvbnN9KTp0fSxsYXVuY2hlclNldHRpbmdzOlMuQXksY29tcG9zZXJEcmFmdHM6WGUuQXksYWlTdWdnZXN0aW9uczokZS5BeSxsaWdodHdlaWdodEFwcDpmdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT10JiYodD1lbiksZS50eXBlPT09Ri5IR0s/dG4oe30sdCx7aXNBY3RpdmU6ZS5pc0FjdGl2ZX0pOnR9LGJyb3dzZU1vZGU6ZnVuY3Rpb24odCxlKXtzd2l0Y2godm9pZCAwPT09dCYmKHQ9Y24pLGUudHlwZSl7Y2FzZSBGLm1pTzpyZXR1cm4gc24oe30sY24se2lzT3BlbjohMCxjbG9zZVRyYW5zaXRpb25FbmRlZDohMSxpc0ZldGNoaW5nOnQuaXNGZXRjaGluZyxoYXNWaWV3ZWRBbkFydGljbGU6dC5oYXNWaWV3ZWRBbkFydGljbGUsc2tpcE9wZW5BbmltYXRpb246ZS5za2lwT3BlbkFuaW1hdGlvbn0pO2Nhc2UgRi5EWWY6cmV0dXJuIHNuKHt9LHQse2lzT3BlbjohMH0pO2Nhc2UgRi5fUEY6cmV0dXJuIHNuKHt9LHQse2lzT3BlbjohMX0pO2Nhc2UgRi5rdG06cmV0dXJuIHNuKHt9LHQse2Nsb3NlVHJhbnNpdGlvbkVuZGVkOiEwfSk7Y2FzZSBGLnBCbjpyZXR1cm4gc24oe30sdCx7aXNPcGVuOiExLHNlYXJjaGVkUGhyYXNlOiIiLHBocmFzZToiIixoYXNTZWFyY2hSZXN1bHRzOiExLHNob3dTZWFyY2hSZXN1bHRzOiExLHNlYXJjaFJlc3VsdHM6W119KTtjYXNlIEYuZllrOnJldHVybiBzbih7fSx0LHtpc1NlYXJjaEZvY3VzZWQ6ZS52YWx1ZX0pO2Nhc2UgRi52eG46cmV0dXJuIHQuaXNPcGVuP3NuKHt9LHQse2lzT3BlbjohMSxyb3V0ZWRUb05ld0NvbnZlcnNhdGlvbjohMH0pOnNuKHt9LHQse3JvdXRlZFRvTmV3Q29udmVyc2F0aW9uOiExfSk7Y2FzZSBGLnBuaDp2YXIgbj1lLnBocmFzZSxyPWUuaGlkZVJlc3VsdHNXaXRoRGVsYXksbz10Lmhhc1NlYXJjaFJlc3VsdHMmJjA9PT0obnVsbD09bj92b2lkIDA6bi50cmltKCkubGVuZ3RoKTtyZXR1cm4gc24oe30sdCx7cGhyYXNlOm4saGlkZVJlc3VsdHNXaXRoRGVsYXk6cixzaG93U2VhcmNoUmVzdWx0czohbyYmdC5zaG93U2VhcmNoUmVzdWx0cyxoYXNTZWFyY2hSZXN1bHRzOiFvJiZ0Lmhhc1NlYXJjaFJlc3VsdHN9KTtjYXNlIEYuUElZOnJldHVybiBzbih7fSx0LHtpbW1lZGlhdGVTZWFyY2g6dC5pbW1lZGlhdGVTZWFyY2h8fGUuaW1tZWRpYXRlLGlzRmV0Y2hpbmdTZWFyY2hSZXN1bHRzOiEwfSk7Y2FzZSBGLnJQSTp2YXIgaT1lLnNlYXJjaFJlc3VsdHMsYT1lLnBocmFzZSx1PXNuKHt9LHQse2lzRmV0Y2hpbmdTZWFyY2hSZXN1bHRzOiExfSk7cmV0dXJuIGEhPT11LnBocmFzZT91OnNuKHt9LHUse2ZldGNoaW5nRmFpbGVkOiExLGhhc1NlYXJjaFJlc3VsdHM6ITAsc2hvd1NlYXJjaFJlc3VsdHM6dC5pbW1lZGlhdGVTZWFyY2gsc2VhcmNoUmVzdWx0czppLGltbWVkaWF0ZVNlYXJjaDohMSxzZWFyY2hlZFBocmFzZTphfSk7Y2FzZSBGLlNzMzp2YXIgcz1lLnBocmFzZSxjPXNuKHt9LHQse2lzRmV0Y2hpbmdTZWFyY2hSZXN1bHRzOiExfSk7cmV0dXJuIHMhPT1jLnBocmFzZT9jOnNuKHt9LGMse2lzRmV0Y2hpbmc6ITEsZmV0Y2hpbmdGYWlsZWQ6ITAsaW1tZWRpYXRlU2VhcmNoOiExfSk7Y2FzZSBGLkIyRjp2YXIgbDtyZXR1cm4gMT09PShudWxsPT1lfHxudWxsPT0obD1lLmFydGljbGVDb2xsZWN0aW9ucyk/dm9pZCAwOmwubGVuZ3RoKT9zbih7fSx0LHtzdGFja011bHRpbGV2ZWxDb2xsZWN0aW9uczpbZS5hcnRpY2xlQ29sbGVjdGlvbnNbMF0uaWRdLGZldGNoZWRDb2xsZWN0aW9uczohMCxpc0ZldGNoaW5nOiExfSk6c24oe30sdCx7ZmV0Y2hlZENvbGxlY3Rpb25zOiEwLGlzRmV0Y2hpbmc6ITF9KTtjYXNlIEYuQkhlOnJldHVybiBzbih7fSx0LHtpc1ZpZXdpbmdBcnRpY2xlOiEwfSk7Y2FzZSBGLk9aeTpyZXR1cm4gdC5pc09wZW4/c24oe30sdCx7aGFzVmlld2VkQW5BcnRpY2xlOiEwLGlzVmlld2luZ0FydGljbGU6ITF9KTp0O2Nhc2UgRi51Xzk6cmV0dXJuIHNuKHt9LGNuLHtpc0ZldGNoaW5nOnQuaXNGZXRjaGluZyxoYXNWaWV3ZWRBbkFydGljbGU6dC5oYXNWaWV3ZWRBbkFydGljbGV9KTtjYXNlIEYuSjRDOmlmKHQuaXNWaWV3aW5nQXJ0aWNsZSYmdC5pc09wZW4pcmV0dXJuIHNuKHt9LHQse3NraXBPcGVuQW5pbWF0aW9uOiEwfSk7aWYoIXQuc2tpcE9wZW5BbmltYXRpb24pcmV0dXJuIHNuKHt9LGNuLHtpc0ZldGNoaW5nOnQuaXNGZXRjaGluZ30pO2JyZWFrO2Nhc2UgRi5uUTA6cmV0dXJuIHQuaXNPcGVuP3Q6c24oe30sdCx7c2tpcE9wZW5BbmltYXRpb246ITF9KX1yZXR1cm4gdH0sb3BlbkluYm91bmRDb252ZXJzYXRpb25JZHM6ZnVuY3Rpb24odCxlKXtzd2l0Y2godm9pZCAwPT09dCYmKHQ9cG4pLGUudHlwZSl7Y2FzZSBGLldmcDpyZXR1cm4obnVsbD09ZT92b2lkIDA6ZS5vcGVuSW5ib3VuZENvbnZlcnNhdGlvbklkcyl8fFtdO2Nhc2UgbG4uUDAudHlwZTppZighZS5wYXlsb2FkLmNhcmRzKXJldHVybltdO3ZhciBuPWUucGF5bG9hZC5jYXJkcy5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4ibmV3X2NvbnZlcnNhdGlvbiI9PT10LnR5cGV9KSk7cmV0dXJuIG4mJm4ucHJldmVudF9tdWx0aXBsZV9pbmJvdW5kX2NvbnZlcnNhdGlvbnNfZW5hYmxlZCYmKG51bGw9PW4/dm9pZCAwOm4ub3Blbl9pbmJvdW5kX2NvbnZlcnNhdGlvbl9pZHMpfHxbXTtjYXNlIEYudXZJOmNhc2UgRi5Eekw6Y2FzZSBGLmZFQzp2YXIgcj1lLmNvbnZlcnNhdGlvbjtyZXR1cm4gci5zaG91bGRJbmNsdWRlSW5PcGVuSW5ib3VuZElkcz8tMT09PXQuaW5kZXhPZihyLmlkKT9bXS5jb25jYXQoZnVuY3Rpb24odCxlLG4pe2lmKGUmJiFBcnJheS5pc0FycmF5KGUpJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXt2YXIgcj1lLmxlbmd0aDtyZXR1cm4gZG4oZSx2b2lkIDAhPT1uJiZuPHI/bjpyKX1yZXR1cm4gdChlLG4pfShmbix0KSxbci5pZF0pOnQ6dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09ci5pZH0pKTtjYXNlIEYuVTJkOnZhciBvPWUuY29udmVyc2F0aW9uSWQsaT1lLnJlYXNvbjtpZigoMCxELlhjKShpKSlyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09b30pKTtkZWZhdWx0OnJldHVybiB0fX0sc3VydmV5OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHZvaWQgMD09PXQmJih0PW51bGwpLGUudHlwZSl7Y2FzZSBGLkI2ZDpyZXR1cm4gZS5zdXJ2ZXk/Z24oe30sZS5zdXJ2ZXkse2lzU3VibWl0dGluZzohMX0pOnQ7Y2FzZSBGLldrMzp2YXIgbixyLG87cmV0dXJuIGUuc3VydmV5SWQhPT0obnVsbD09KG49dCk/dm9pZCAwOm4uaWQpP3Q6Z24oe30sdCx7c3RlcHM6W10uY29uY2F0KGhuKHZuLChudWxsPT0ocj10KT92b2lkIDA6ci5zdGVwcyl8fFtdKSxbZS5zdXJ2ZXlTdGVwXSksYWN0aXZlU3RlcElkOm51bGw9PWV8fG51bGw9PShvPWUuc3VydmV5U3RlcCk/dm9pZCAwOm8uaWQsY29tcGxldGVkOmUuY29tcGxldGVkfSk7Y2FzZSBGLkZkbzp2YXIgaTtyZXR1cm4gZS5zdXJ2ZXlJZCE9PShudWxsPT0oaT10KT92b2lkIDA6aS5pZCk/dDpnbih7fSx0LHtpc1N1Ym1pdHRpbmc6ITB9KTtjYXNlIEYua0taOnZhciBhO3JldHVybiBlLnN1cnZleUlkIT09KG51bGw9PShhPXQpP3ZvaWQgMDphLmlkKT90OmduKHt9LHQse2lzU3VibWl0dGluZzohMX0pO2Nhc2UgRi5IOEc6dmFyIHU7cmV0dXJuIGduKHt9LHQse3N0ZXBzOm51bGw9PSh1PXQpfHxudWxsPT0odT11LnN0ZXBzKT92b2lkIDA6dS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBnbih7fSx0LHtxdWVzdGlvbnM6dC5xdWVzdGlvbnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZCE9PWUucXVlc3Rpb25JZD9nbih7fSx0KTpnbih7fSx0LHtyZXNwb25zZTplLnJlc3BvbnNlfSl9KSl9KX0pKX0pO2Nhc2UgRi51TXE6dmFyIHM7cmV0dXJuIGduKHt9LHQse3N0ZXBzOm51bGw9PShzPXQpfHxudWxsPT0ocz1zLnN0ZXBzKT92b2lkIDA6cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkIT09ZS5zdGVwSWQ/Z24oe30sdCk6Z24oe30sdCx7cXVlc3Rpb25zOnQucXVlc3Rpb25zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGduKHt9LHQse3ZhbGlkYXRpb25FcnJvcjoobnVsbD09ZT92b2lkIDA6ZS52YWxpZGF0aW9uUmVzdWx0KVt0LmlkXXx8bnVsbH0pfSkpfSl9KSl9KTtjYXNlIEYuYTR6OnJldHVybiBnbih7fSx0LHtmaXJzdEZhaWxlZFZhbGlkYXRpb25RdWVzdGlvbjpudWxsPT1lP3ZvaWQgMDplLnF1ZXN0aW9uSWR9KTtjYXNlIEYuZ1lYOnZhciBjO3JldHVybiBnbih7fSx0LHtzdGVwczpudWxsPT0oYz10KXx8bnVsbD09KGM9Yy5zdGVwcyk/dm9pZCAwOmMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZ24oe30sdCx7cXVlc3Rpb25zOnQucXVlc3Rpb25zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQhPT1lLnF1ZXN0aW9uSWQ/Z24oe30sdCk6Z24oe30sdCx7dmFsaWRhdGlvbkVycm9yOm51bGx9KX0pKX0pfSkpfSk7Y2FzZSBGLldYcDp2YXIgbDtyZXR1cm4gZS5zdXJ2ZXlJZCYmKG51bGw9PShsPXQpP3ZvaWQgMDpsLmlkKT09PWUuc3VydmV5SWQ/Z24oe30sdCx7ZGlzbWlzc2VkOiEwfSk6dDtjYXNlIEYuRWRoOnJldHVybiBnbih7fSx0LHtoaWRkZW46ITB9KTtjYXNlIEYuaHlpOnJldHVybiB0P2duKHt9LHQse2NvbXBsZXRlZDohMH0pOnQ7Y2FzZSBGLmdwSTp2YXIgZjtyZXR1cm4obnVsbD09KGY9dCk/dm9pZCAwOmYuaWQpIT09ZS5zdXJ2ZXlJZD90Om51bGw7Y2FzZSBGLko0QzpyZXR1cm4gdD9nbih7fSx0LHtoaWRkZW46ITB9KTp0O2Nhc2UgRi5uUTA6cmV0dXJuIHQmJnQuaGlkZGVuP2duKHt9LHQse2hpZGRlbjohMX0pOnQ7ZGVmYXVsdDpyZXR1cm4gdH19LG51ZGdlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PXQmJih0PW51bGwpLGUudHlwZT09PUYuX0w3JiZlLm51ZGdlP1huKHt9LGUubnVkZ2UpOnR9LHRvb2x0aXBHcm91cHM6ZnVuY3Rpb24odCxlKXtzd2l0Y2godm9pZCAwPT09dCYmKHQ9U24pLGUudHlwZSl7Y2FzZSBGLlBhdDppZihlLnRvb2x0aXBHcm91cHMpe3ZhciBuPXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pKSxyPVtdO3JldHVybiBlLnRvb2x0aXBHcm91cHMubWFwKChmdW5jdGlvbih0KXstMT09PW4uaW5kZXhPZih0LmlkKSYmci5wdXNoKF9uKHt9LHQse3Rvb2x0aXBzOnQudG9vbHRpcHMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gX24oe30sZSx7ZGlzcGxheUJlaGF2aW9yOnQuZGlzcGxheUJlaGF2aW9yfSl9KSl9KSl9KSksW10uY29uY2F0KG1uKGJuLHQpLHIpfXJldHVybiB0O2Nhc2UgRi5OS1g6cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gX24oe30sdCx7dG9vbHRpcHM6dC50b29sdGlwcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBfbih7fSx0LHtpc09wZW46dC5pZD09PWUudG9vbHRpcElkJiYhdC5pc09wZW59KX0pKX0pfSkpO2Nhc2UgRi5wVTU6cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gX24oe30sdCx7dG9vbHRpcHM6dC50b29sdGlwcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBfbih7fSx0LHtpc1ZpZXdlZDp0LmlzVmlld2VkfHx0LmlkPT09ZS50b29sdGlwSWR9KX0pKX0pfSkpO2Nhc2UgRi5sNW46cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gX24oe30sdCx7dG9vbHRpcHM6dC50b29sdGlwcy5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuLHIsbz10LmlzTWF0Y2hlZDtyZXR1cm4gbnVsbCE9ZSYmbnVsbCE9KG49ZS5tYXRjaGVzKSYmLTEhPT1uLm1hdGNoZWQuaW5kZXhPZih0LmlkKT9vPSEwOm51bGwhPWUmJm51bGwhPShyPWUubWF0Y2hlcykmJi0xIT09ci51bm1hdGNoZWQuaW5kZXhPZih0LmlkKSYmKG89ITEpLF9uKHt9LHQse2lzTWF0Y2hlZDpvfSl9KSl9KX0pKTtjYXNlIEYuVTlpOmlmKGUudG9vbHRpcEdyb3VwKXt2YXIgbz10LmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIE51bWJlcih0LmlkKSE9PU51bWJlcihudWxsPT0obj1lLnRvb2x0aXBHcm91cCk/dm9pZCAwOm4uaWQpfSkpO3JldHVybltdLmNvbmNhdChtbihibixvKSxbZS50b29sdGlwR3JvdXBdKX1yZXR1cm4gdDtkZWZhdWx0OnJldHVybiB0fX0sdGlja2V0czp4bi5BeSx0aWNrZXRUeXBlczpFbi51LHRpY2tldEZvcm06ZnVuY3Rpb24odCxlKXtzd2l0Y2godm9pZCAwPT09dCYmKHQ9T24pLGUudHlwZSl7Y2FzZSBGLlE0eDp2YXIgbjtyZXR1cm4gZS50aWNrZXRGb3JtP0NuKHt9LHQsKChuPXt9KVtlLnRpY2tldEZvcm0udGlja2V0VHlwZUlkXT1lLnRpY2tldEZvcm0sbikpOnQ7Y2FzZSBGLkVfTjpyZXR1cm4gT247Y2FzZSBGLm9PODp2YXIgcjtyZXR1cm4gZS50aWNrZXRGb3JtP0NuKHt9LHQsKChyPXt9KVtlLnRpY2tldEZvcm0udGlja2V0VHlwZUlkXT1udWxsLHIpKTp0O2RlZmF1bHQ6cmV0dXJuIHR9fSxuZXdzSXRlbXM6ZnVuY3Rpb24odCxlKXt2YXIgbixyLG87c3dpdGNoKHZvaWQgMD09PXQmJih0PW51bGwpLGUudHlwZSl7Y2FzZSBGLmtPMDpyZXR1cm4gam4oe30sdCx7ZGF0YTpbXSxuZXh0UGFnZTpudWxsLGZldGNoaW5nU3RhdHVzOkFuLm41LmluUHJvZ3Jlc3N9KTtjYXNlIEYuRWJGOnJldHVybiBqbih7fSx0LHtuZXh0UGFnZTpudWxsLGZldGNoaW5nU3RhdHVzOkFuLm41LmluUHJvZ3Jlc3N9KTtjYXNlIEYuQVZKOnJldHVybiBqbih7fSx0LHtkYXRhOmUubmV3c0l0ZW1zfHxbXSxuZXh0UGFnZTplLm5leHRQYWdlLGZldGNoaW5nU3RhdHVzOkFuLm41LnN1Y2Nlc3MsbmV3c2ZlZWRWaXNpdGVkOiExfSk7Y2FzZSBGLmtpejpyZXR1cm4gam4oe30sdCx7ZGF0YTooMCxEZS5oKShbXS5jb25jYXQoa24oTG4sKG51bGw9PShuPXQpP3ZvaWQgMDpuLmRhdGEpfHxbXSksa24oTG4sZS5uZXdzSXRlbXN8fFtdKSksImlkIiksbmV4dFBhZ2U6ZS5uZXh0UGFnZSxmZXRjaGluZ1N0YXR1czpBbi5uNS5zdWNjZXNzfSk7Y2FzZSBGLlpvVjpyZXR1cm4gam4oe30sdCx7ZGF0YTpudWxsLGZldGNoaW5nU3RhdHVzOkFuLm41LmZhaWx1cmV9KTtjYXNlIEYuVU9BOnJldHVybiBqbih7fSx0LHtuZXdzZmVlZFZpc2l0ZWQ6ITB9KTtjYXNlIEYuY2dzOnJldHVybiBqbih7fSx0LHtkYXRhOm51bGw9PShyPXQpfHxudWxsPT0ocj1yLmRhdGEpP3ZvaWQgMDpyLm1hcCgoZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuKG51bGw9PShuPWUubmV3c0l0ZW0pP3ZvaWQgMDpuLmlkKT09PXQuaWQ/ZS5uZXdzSXRlbTp0fSkpfSk7Y2FzZSBGLmNSbTpyZXR1cm4gam4oe30sdCx7ZGF0YTpudWxsPT0obz10KXx8bnVsbD09KG89by5kYXRhKT92b2lkIDA6by5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLm5ld3NJdGVtSWQ9PT10LmlkP0luKHt9LHQse3JlYWN0aW9uc1JlcGx5OkluKHt9LHQucmVhY3Rpb25zUmVwbHkse3JlYWN0aW9uSW5kZXg6ZS5yZWFjdGlvbkluZGV4fSl9KTp0fSkpfSk7Y2FzZSBGLmtwMzp2YXIgaSxhLHU9ZS5uZXdzZmVlZElkLHM9dSE9PShudWxsPT0oaT10KT92b2lkIDA6aS5uZXdzZmVlZElkKTtyZXR1cm4gam4oe30sdCx7bmV3c2ZlZWRJZDp1LGRhdGE6cz9udWxsOm51bGw9PShhPXQpP3ZvaWQgMDphLmRhdGF9KTtkZWZhdWx0OnJldHVybiB0fX0sbmV3c0l0ZW06ZnVuY3Rpb24odCxlKXt2YXIgbjtzd2l0Y2godm9pZCAwPT09dCYmKHQ9Tm4pLGUudHlwZSl7Y2FzZSBGLlBkNDpyZXR1cm4gUG4oe30sdCx7YWN0aXZlTmV3c0l0ZW06ZS5uZXdzSXRlbX0pO2Nhc2UgRi5HR006cmV0dXJuIFBuKHt9LHQse2RldGFpbHNGZXRjaGluZ1N0YXR1czpBbi5uNS5pblByb2dyZXNzfSk7Y2FzZSBGLmNnczpyZXR1cm4gZS5uZXdzSXRlbT97YWN0aXZlTmV3c0l0ZW06ZS5uZXdzSXRlbSxkZXRhaWxzRmV0Y2hpbmdTdGF0dXM6QW4ubjUuc3VjY2Vzc306e2FjdGl2ZU5ld3NJdGVtOm51bGwsZGV0YWlsc0ZldGNoaW5nU3RhdHVzOkFuLm41LmZhaWx1cmV9O2Nhc2UgRi5jUm06aWYoKG51bGw9PShuPXQuYWN0aXZlTmV3c0l0ZW0pP3ZvaWQgMDpuLmlkKT09PWUubmV3c0l0ZW1JZClyZXR1cm4gUG4oe30sdCx7YWN0aXZlTmV3c0l0ZW06UG4oe30sdC5hY3RpdmVOZXdzSXRlbSx7cmVhY3Rpb25zUmVwbHk6UG4oe30sdC5hY3RpdmVOZXdzSXRlbS5yZWFjdGlvbnNSZXBseSx7cmVhY3Rpb25JbmRleDplLnJlYWN0aW9uSW5kZXh9KX0pfSl9cmV0dXJuIHR9LHNwYWNlczpSbi5BeSxob21lOmxuLkF5LGhlbHA6TW4uQSxpbnRlcnNlY3Rpb246ZnVuY3Rpb24odCxlKXtzd2l0Y2godm9pZCAwPT09dCYmKHQ9em4pLGUudHlwZSl7Y2FzZSBGLmFfRTpyZXR1cm4gVW4oe30sdCx7aXNCb290ZWQ6ITB9KTtjYXNlIEYuVTlpOnJldHVybiBVbih7fSx0LHtpc1Rvb2x0aXBQcmV2aWV3OiEwfSk7Y2FzZSBGLm52OnJldHVybiBVbih7fSx0LHtpc1Rvb2x0aXBQcmV2aWV3OiExfSk7ZGVmYXVsdDpyZXR1cm4gdH19LHJvdXRlcjpvLkNfLHJvdXRlckhpc3Rvcnk6ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10JiYodD17aGlzdG9yeTpbXSxpbmRleDowfSk7dmFyIG49dCxyPW4uaGlzdG9yeSxpPW4uaW5kZXgsYT10O2lmKG8uVWMubWF0Y2goZSkpe3N3aXRjaChlLnBheWxvYWQuYWN0aW9uKXtjYXNlIlBPUCI6LTE9PT0oaT1yLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5PT09ZS5wYXlsb2FkLmxvY2F0aW9uLmtleX0pKSkmJihpPTAscj1bZS5wYXlsb2FkLmxvY2F0aW9uXSksYT17aGlzdG9yeTpyLGluZGV4Oml9O2JyZWFrO2Nhc2UiUkVQTEFDRSI6cltpXT1lLnBheWxvYWQubG9jYXRpb24sYT17aGlzdG9yeTpyLGluZGV4Oml9O2JyZWFrO2Nhc2UiUFVTSCI6ci5sZW5ndGg+MD9pKz0xOmk9MCxyLnNwbGljZShpLHIubGVuZ3RoLWksZS5wYXlsb2FkLmxvY2F0aW9uKSxhPXtoaXN0b3J5OnIsaW5kZXg6aX19MH1yZXR1cm4gYX0sY2hlY2tsaXN0czpmdW5jdGlvbih0LGUpe3N3aXRjaCh2b2lkIDA9PT10JiYodD1HbiksZS50eXBlKXtjYXNlIEYucUhlOmZvcih2YXIgbixyPUZuKERuLHQpLG89ZnVuY3Rpb24oKXt2YXIgdD1uLnZhbHVlLGU9ci5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNoZWNrbGlzdFByb2dyZXNzSWQ9PT10LmNoZWNrbGlzdFByb2dyZXNzSWR9KSk7LTE9PT1lP3IucHVzaCh0KTpyW2VdPXR9LGk9ZnVuY3Rpb24odCxlKXt2YXIgbj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYobilyZXR1cm4obj1uLmNhbGwodCkpLm5leHQuYmluZChuKTtpZihBcnJheS5pc0FycmF5KHQpfHwobj1Cbih0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe24mJih0PW4pO3ZhciByPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHI+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W3IrK119fX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KGUuY2hlY2tsaXN0cywhMCk7IShuPWkoKSkuZG9uZTspbygpO3JldHVybiByO2Nhc2UgRi5zMzA6dmFyIGE9ZS5jaGVja2xpc3RQcm9ncmVzc0lkLHU9dC5maW5kSW5kZXgoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNoZWNrbGlzdFByb2dyZXNzSWQ9PT1hfSkpO3JldHVybiB1Pi0xP1tdLmNvbmNhdChGbihEbix0LnNsaWNlKDAsdSkpLFtIbih7fSx0W3VdLHtkaXNtaXNzZWQ6ITB9KV0sRm4oRG4sdC5zbGljZSh1KzEpKSk6dDtjYXNlIEYuUU9COnZhciBzPWUuY2hlY2tsaXN0UHJvZ3Jlc3NJZCxjPXQuZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGVja2xpc3RQcm9ncmVzc0lkPT09c30pKTtyZXR1cm4gYz4tMT9bXS5jb25jYXQoRm4oRG4sdC5zbGljZSgwLGMpKSxbSG4oe30sdFtjXSx7aGFzVXBkYXRlZE5vdGlmaWNhdGlvbkRldGFpbHM6ITB9KV0sRm4oRG4sdC5zbGljZShjKzEpKSk6dDtjYXNlIEYuQzIkOnZhciBsLGYsZD1lLmNoZWNrbGlzdFByb2dyZXNzSWQscD1lLnRhc2tJZCxoPXQuZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGVja2xpc3RQcm9ncmVzc0lkPT09ZH0pKSx2PW51bGw9PShsPXRbaF0pP3ZvaWQgMDpsLnRhc2tHcm91cHMuZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC50YXNrcy5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZD09PXB9KSl9KSkseT1udWxsPT0oZj10W2hdKT92b2lkIDA6Zi50YXNrR3JvdXBzW3ZdLnRhc2tzLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQ9PT1wfSkpO2lmKChofHx2fHx5KTwwKXJldHVybiB0O3ZhciBnPXRbaF0udGFza0dyb3VwcyxtPUhuKHt9LGdbdl0se3Rhc2tzOltdLmNvbmNhdChGbihEbixnW3ZdLnRhc2tzLnNsaWNlKDAseSkpLFtIbih7fSxnW3ZdLnRhc2tzW3ldLHtpc0NvbXBsZXRlOiEwfSldLEZuKERuLGdbdl0udGFza3Muc2xpY2UoeSsxKSkpfSk7cmV0dXJuW10uY29uY2F0KEZuKERuLHQuc2xpY2UoMCxoKSksW0huKHt9LHRbaF0se3Rhc2tHcm91cHM6W10uY29uY2F0KEZuKERuLGcuc2xpY2UoMCx2KSksW21dLEZuKERuLGcuc2xpY2UodisxKSkpfSldLEZuKERuLHQuc2xpY2UoaCsxKSkpO2Nhc2UgRi5STVE6dmFyIGI9ZS5jaGVja2xpc3RQcm9ncmVzc0lkLHc9ZS50YXNrSWQ7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGVja2xpc3RQcm9ncmVzc0lkPT09Yj90LnF1ZXVlZFRhc2tJZD13OnQucXVldWVkVGFza0lkPXZvaWQgMCx0fSkpO2Nhc2UgRi5JZ3k6cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5xdWV1ZWRUYXNrSWQ9dm9pZCAwLHR9KSk7ZGVmYXVsdDpyZXR1cm4gdH19LGNoZWNrbGlzdDpmdW5jdGlvbih0LGUpe3N3aXRjaCh2b2lkIDA9PT10JiYodD1XbiksZS50eXBlKXtjYXNlIEYuUUtXOnJldHVybiBxbih7fSx0LHtjdXJyZW50bHlSZXNvbHZpbmdUYXNrSWQ6ZS50YXNrSWR9KTtjYXNlIEYucUR5OnJldHVybiBxbih7fSx0LHtjdXJyZW50bHlSZXNvbHZpbmdUYXNrSWQ6bnVsbH0pO2Nhc2UgRi51Ylo6cmV0dXJuIHFuKHt9LHQse29wZW5DaGVja2xpc3RQcm9ncmVzc0lkOmUuY2hlY2tsaXN0UHJvZ3Jlc3NJZH0pO2Nhc2UgRi5lS1g6cmV0dXJuIHFuKHt9LHQse29wZW5DaGVja2xpc3RQcm9ncmVzc0lkOm51bGx9KTtkZWZhdWx0OnJldHVybiB0fX0sdGFza3M6S24uQXkscmVhbHRpbWVDb25uZWN0aW9uOlpuLkF5LHdvcmtmbG93UHJldmlldzpmdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT10JiYodD1udWxsKSxlLnR5cGU9PT1GLlRjMD97d29ya2Zsb3dJbnN0YW5jZUlkOmUud29ya2Zsb3dJbnN0YW5jZUlkLHJlc29sdXRpb25Cb3RCZWhhdmlvclZlcnNpb25JZDplLnJlc29sdXRpb25Cb3RCZWhhdmlvclZlcnNpb25JZCxib3RJbnRybzplLmJvdEludHJvfTp0fSx0eXBpbmdBZG1pbnM6UW4sb25ib2FyZGluZ1BsYW46JG4sZGV2T3ZlcnJpZGVzOmVyLGZpblZvaWNlQ2FsbDpuci5BeSxtZXNzZW5nZXJNb2RlU3dpdGNoZXI6cnIudV99KSxpcj1vcixhcj1uKDY4NzYyKTtmdW5jdGlvbiB1cih0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgbj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8saSxhLHU9W10scz0hMCxjPSExO3RyeXtpZihpPShuPW4uY2FsbCh0KSkubmV4dCwwPT09ZSl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47cz0hMX1lbHNlIGZvcig7IShzPShyPWkuY2FsbChuKSkuZG9uZSkmJih1LnB1c2goci52YWx1ZSksdS5sZW5ndGghPT1lKTtzPSEwKTt9Y2F0Y2godCl7Yz0hMCxvPXR9ZmluYWxseXt0cnl7aWYoIXMmJm51bGwhPW4ucmV0dXJuJiYoYT1uLnJldHVybigpLE9iamVjdChhKSE9PWEpKXJldHVybn1maW5hbGx5e2lmKGMpdGhyb3cgb319cmV0dXJuIHV9fSh0LGUpfHxmdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gc3IodCxlKTt2YXIgbj17fS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/c3IodCxlKTp2b2lkIDB9fSh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gc3IodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIGNyKCl7cmV0dXJuIGNyPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sY3IuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBscj0vXihVQXxZVHxNTyktXGQrLVxkKyQvaSxmcj0vXkctWzAtOUEtWl17MTB9JC8sZHI9W0YuSjRDLEYublEwLEYuRHpMLEYuSE11LEYuX2JTLEYuWkJ6LEYuUjNVLEYuVG1RLEYuWGlBXTtmdW5jdGlvbiBwcih0LGUsbil7c3dpdGNoKHQudHlwZSl7Y2FzZSBGLko0QzpyZXR1cm57bmFtZToiT3BlbmVkIE1lc3NlbmdlciJ9O2Nhc2UgRi5uUTA6cmV0dXJue25hbWU6IkNsb3NlZCBNZXNzZW5nZXIifTtjYXNlIEYuRHpMOnJldHVybntuYW1lOiJTdGFydGVkIE5ldyBDb252ZXJzYXRpb24ifTtjYXNlIEYuSE11OnZhciByPWUuYnlJZFt0LmNvbnZlcnNhdGlvbklkXSxvPXZyKHIpLGk9by5jdXN0b21Cb3RJZCxhPW8ubWVzc2FnZUlkLHU9Y3Ioe30saT97IkN1c3RvbSBCb3QgSUQiOml8fGF9OnsiTWVzc2FnZSBJRCI6YX0pO3JldHVybntuYW1lOiJTZW50IGEgUmVwbHkiLG1ldGFkYXRhOmF8fGk/dTp2b2lkIDAsY29udmVyc2F0aW9uSWQ6dC5jb252ZXJzYXRpb25JZH07Y2FzZSBGLlhpQTpjYXNlIEYuX2JTOnJldHVybntuYW1lOiJQcm92aWRlZCBFbWFpbCBBZGRyZXNzIn07Y2FzZSBGLlpCejpyZXR1cm57bmFtZTp0LmNhcmQuY29tcGxldGVkPyJDb21wbGV0ZWQgQXBwIEZsb3ciOiJJbnRlcmFjdGVkIHdpdGggQXBwIixtZXRhZGF0YTp7IkFwcCBOYW1lIjp0LmNhcmQuYXBwX3BhY2thZ2VfbmFtZSxMb2NhdGlvbjpncihuKX19O2Nhc2UgRi5SM1U6dmFyIHM9ZS5ieUlkW3QuY29udmVyc2F0aW9uSWRdLGM9eXIocyx0LnBhcnRJZCksbD1jLmN1c3RvbUJvdElkLGY9Yy5tZXNzYWdlSWQ7cmV0dXJuIGY/e25hbWU6IlRyaWdnZXJlZCBNZXNzYWdlIixtZXRhZGF0YTpjcih7fSxsP3siQ3VzdG9tIEJvdCBJRCI6bHx8Zn06eyJNZXNzYWdlIElEIjpmfSksY29udmVyc2F0aW9uSWQ6dC5jb252ZXJzYXRpb25JZCxub25JbnRlcmFjdGlvbjohMH06dm9pZCAwO2Nhc2UgRi5UbVE6aWYoZS5ieUlkW3QuY29udmVyc2F0aW9uSWRdLnJlYWQpcmV0dXJuO3ZhciBkPWUuYnlJZFt0LmNvbnZlcnNhdGlvbklkXSxwPXZyKGQpLGg9cC5jdXN0b21Cb3RJZCx2PXAubWVzc2FnZUlkO3JldHVybntuYW1lOiJWaWV3ZWQgTWVzc2FnZSIsbWV0YWRhdGE6Y3Ioe30saD97IkN1c3RvbSBCb3QgSUQiOmh8fHZ9OnsiTWVzc2FnZSBJRCI6dn0pLGNvbnZlcnNhdGlvbklkOnQuY29udmVyc2F0aW9uSWQsbm9uSW50ZXJhY3Rpb246ITB9fX12YXIgaHI9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXt2YXIgbj1mdW5jdGlvbih0LGUsbil7aWYoZSYmIUFycmF5LmlzQXJyYXkoZSkmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ZhciByPWUubGVuZ3RoO3JldHVybiBzcihlLHZvaWQgMCE9PW4mJm48cj9uOnIpfXJldHVybiB0KGUsbil9KHVyLGUsMikscj1uWzBdLG89blsxXTtpZihvKXJldHVybiB0P3QrIiwgIityKyI6ICIrbzpyKyI6ICciK28rIicifSksbnVsbCl9LHZyPWZ1bmN0aW9uKHQpe3ZhciBlLG49dC5wYXJ0c1swXSxyPW4mJm4ucnVsZXNldElkO3JldHVybntjdXN0b21Cb3RJZDpudWxsPT0oZT10LmFuYWx5dGljc01ldGFkYXRhKT92b2lkIDA6ZS5jdXN0b21Cb3RJZCxtZXNzYWdlSWQ6cn19LHlyPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZSYmLTEhPT1lLmluZGV4T2YoIm1lc3NhZ2UtIikscj12cih0KSxvPXIuY3VzdG9tQm90SWQsaT1yLm1lc3NhZ2VJZDtyZXR1cm4gY3Ioe2N1c3RvbUJvdElkOm99LG4/e21lc3NhZ2VJZDppfTp7fSl9LGdyPWZ1bmN0aW9uKHQpe3JldHVybigwLGFyLnNCKSh0KT8iQ29udmVyc2F0aW9uIjoiSG9tZSJ9O3ZhciBtcj1uKDE0MTIwKTtmdW5jdGlvbiBicigpe3JldHVybiBicj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKHRbcl09bltyXSl9cmV0dXJuIHR9LGJyLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiB3cih0KXt2YXIgZT17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7aWYodFtuXSl7dmFyIHI9bi50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyAvZywiXyIpO2Vbcl09dFtuXX19KSksZX1mdW5jdGlvbiBfcih0LGUsbixyLG8pe3ZhciBpPW4/ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9dm9pZCAwPT09bj97fTpuLG89ci5uYW1lLGk9ci5tZXRhZGF0YSxhPXZvaWQgMD09PWk/e306aSxzPXIuY29udmVyc2F0aW9uSWQsYz1yLm5vbkludGVyYWN0aW9uLGw9dm9pZCAwIT09YyYmYzt0cnl7dCgiZXZlbnQiLG8sYnIoe2V2ZW50Q2F0ZWdvcnk6IkludGVyY29tIE1lc3NlbmdlciIsZXZlbnRMYWJlbDpocihhKX0sd3IoYSkscz97Y29udmVyc2F0aW9uX2lkOnN9Ont9LGw/e25vbkludGVyYWN0aW9uOmx9Ont9LGU/e3NlbmRfdG86ZX06e30pKX1jYXRjaCh0KXsoMCx1LkZTKSgiSW50ZXJjb20gLSBTb21ldGhpbmcgd2VudCB3cm9uZyBzZW5kaW5nIHRoZSBHb29nbGUgQW5hbHl0aWNzIGV2ZW50IHZpYSBndGFnIix0KX19fShuLHIpOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPXZvaWQgMD09PW4/e306bixvPXIubmFtZSxpPXIubWV0YWRhdGEsYT12b2lkIDA9PT1pP3t9Omkscz1yLmNvbnZlcnNhdGlvbklkLGM9ci5ub25JbnRlcmFjdGlvbixsPXZvaWQgMCE9PWMmJmM7dHJ5e3QucHVzaChicih7ZXZlbnQ6byxldmVudENhdGVnb3J5OiJJbnRlcmNvbSBNZXNzZW5nZXIiLGV2ZW50TGFiZWw6aHIoYSl9LHdyKGEpLHM/e2NvbnZlcnNhdGlvbl9pZDpzfTp7fSxsP3tub25JbnRlcmFjdGlvbjpsfTp7fSxlP3tzZW5kX3RvOmV9Ont9KSl9Y2F0Y2godCl7KDAsdS5GUykoIkludGVyY29tIC0gU29tZXRoaW5nIHdlbnQgd3JvbmcgcHVzaGluZyB0aGUgR29vZ2xlIEFuYWx5dGljcyBldmVudCB0byBHVE0iLHQpfX19KG8sciksYT0oMCxtci5vUCkoZSkscz1wcih0LGUuY29udmVyc2F0aW9ucyxhKTtzJiZpKHMpfWZ1bmN0aW9uIFNyKCl7cmV0dXJuIFNyPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sU3IuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciB4cj1mdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iPT10eXBlb2Yobj1udWxsPT0oZT13aW5kb3cpfHxudWxsPT0oZT1lLnBhcmVudCk/dm9pZCAwOmUuZ2EpJiYiZnVuY3Rpb24iPT10eXBlb2YobnVsbD09bj92b2lkIDA6bi5nZXRBbGwpJiYobnVsbD09bj92b2lkIDA6bi5sb2FkZWQpKXt2YXIgZSxuLHI9d2luZG93LnBhcmVudC5nYS5nZXRBbGwoKTtpZihBcnJheS5pc0FycmF5KHIpJiZyLmxlbmd0aCl7aWYodCl7dmFyIG89RXIocix0KTtyZXR1cm4gb3x8KHdpbmRvdy5wYXJlbnQuZ2EoImNyZWF0ZSIsdCwiYXV0byIsImludGVyY29tTWVzc2VuZ2VyIiksRXIod2luZG93LnBhcmVudC5nYS5nZXRBbGwoKSx0KSl9cmV0dXJuIHJbMF19fX0sRXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5maW5kKChmdW5jdGlvbih0KXt0cnl7cmV0dXJuIHQuYi5kYXRhLnZhbHVlc1siOnRyYWNraW5nSWQiXT09PWV9Y2F0Y2gobil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0KXJldHVybiBlPT09dC5nZXQoInRyYWNraW5nSWQiKX19KSl9O2Z1bmN0aW9uIENyKHQsZSxuKXt2YXIgcj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49dm9pZCAwPT09ZT97fTplLHI9bi5uYW1lLG89bi5tZXRhZGF0YSxpPXZvaWQgMD09PW8/e306byxhPW4ubm9uSW50ZXJhY3Rpb24scz12b2lkIDAhPT1hJiZhO3RyeXt0LnNlbmQoImV2ZW50IixTcih7ZXZlbnRDYXRlZ29yeToiSW50ZXJjb20gTWVzc2VuZ2VyIixldmVudEFjdGlvbjpyLGV2ZW50TGFiZWw6aHIoaSl9LHM/e25vbkludGVyYWN0aW9uOnN9Ont9KSl9Y2F0Y2godCl7KDAsdS5GUykoIkludGVyY29tIC0gU29tZXRoaW5nIHdlbnQgd3Jvbmcgc2VuZGluZyB0aGUgR29vZ2xlIEFuYWx5dGljcyBldmVudCIsdCl9fX0obiksbz0oMCxtci5vUCkoZSksaT1wcih0LGUuY29udmVyc2F0aW9ucyxvKTtpJiZyKGkpfXZhciBPcj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPXQuZ2V0U3RhdGUoKSxvPWUobik7aWYoLTE9PT1kci5pbmRleE9mKG4udHlwZSl8fCFyLmFwcC5mZWF0dXJlcy5nb29nbGVBbmFseXRpY3MpcmV0dXJuIG87dmFyIGksYSxzPXIuYXBwLmN1c3RvbUdvb2dsZUFuYWx5dGljc1RyYWNrZXJJZCxjPXZvaWQgMCxsPXZvaWQgMCxmPXZvaWQgMDtyZXR1cm4oKGk9cykmJmkubWF0Y2gobHIpfHwhcykmJihjPXhyKHMpKSYmQ3IobixyLGMpLCFmdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5tYXRjaChmcil9KHMpJiZzfHwhci5hcHAuZmVhdHVyZXMuZ29vZ2xlQW5hbHl0aWNzNEludGVncmF0aW9ufHwobD1mdW5jdGlvbigpe3ZhciB0LGU9bnVsbD09KHQ9d2luZG93KXx8bnVsbD09KHQ9dC5wYXJlbnQpP3ZvaWQgMDp0Lmd0YWc7aWYoZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIGV9KCksZj1udWxsPT0oYT13aW5kb3cpfHxudWxsPT0oYT1hLnBhcmVudCk/dm9pZCAwOmEuZGF0YUxheWVyLChsfHxmKSYmX3IobixyLGwscyxmKSksY3x8bHx8Znx8KDAsdS5GUykoIkludGVyY29tIC0gR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgaW5zdGFsbGVkIG9yIGNvbmZpZ3VyZWQsIGhhdmUgeW91IGZvcmdvdHRlbiB0byBpbmNsdWRlIGl0PyIpLG99fX0sQXI9bigzMzA0OCksSXI9big5Nzc3NSksa3I9bigzODI4NSk7ZnVuY3Rpb24gTHIoKXtyZXR1cm4gTHI9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxMci5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFRyPSIvIixqcj1mdW5jdGlvbih0KXtyZXR1cm4gdFt0Lk9ORV9XRUVLPTYwNDhlNV09Ik9ORV9XRUVLIix0W3QuTklORV9NT05USFM9MjMzM2U3XT0iTklORV9NT05USFMiLHR9KGpyfHx7fSksUHI9anIuTklORV9NT05USFMsTnI9anIuT05FX1dFRUssTXI9anIuT05FX1dFRUs7ZnVuY3Rpb24gUnIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZSYmZSE9PXR9ZnVuY3Rpb24gVXIodCxlLG4scixvLGksYSx1KXt0LndyaXRlKGUsbix7ZG9tYWluOm8scGF0aDpUcixleHBpcmVzOnU/bmV3IERhdGUoMWUzKnUpOm5ldyBEYXRlKEFyLkF5Lm5vdygpK3IpLHNhbWVTaXRlOmk/Im5vbmUiOiJsYXgiLHNlY3VyZTppfHxhfSl9ZnVuY3Rpb24genIodCxlKXtyZXR1cm4gbnVsbCE9dD90OmV9ZnVuY3Rpb24gSHIodCl7dmFyIGU9dC5kb21haW5TZXR0aW5nLG49dC5vcmlnaW5Db29raWVEb21haW4scj10Lm1ldGEsbz12b2lkIDA9PT1yP3t9OnI7aWYoIm5vbmUiIT09ZSl7aWYodm9pZCAwIT09ZSYmKDAsdS5GUykoIkludGVyY29tIE1lc3NlbmdlciBlcnJvcjogY29va2llX2RvbWFpbiBhdHRyaWJ1dGUgc3VwcG9ydHMgb25seSBgbm9uZWAgb3B0aW9uIiksbilyZXR1cm4iLiIrbjt2YXIgaT0oMCxDLlVtKSgpLGE9KGl8fCIiKS5zcGxpdCgiOiIpWzBdO3JldHVybigwLFYuc3EpKCJtaXNzaW5nT3JpZ2luRG9tYWluIixMcih7fSxvLHtob3N0OmEscmF3SG9zdDppfSkpLCJsb2NhbGhvc3QiPT09YT8iIjphfX12YXIgRnI9big0MTE3KSxEcj1uKDEzNTYwKSxCcj1uLm4oRHIpLFZyPW4oNzY3MjIpLEdyPW4oOTcxMzIpLHFyPW4oMjU0MTcpLFdyPSgwLEdyLk16KSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYXBwLmhhc1RoZU1lc3NlbmdlckJlZW5PcGVuZWR9KSxxci5BeSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmISFlLmxlbmd0aH0pKSxLcj1uKDcyNjgzKSxacj1uKDY2Nzk5KSxKcj1mdW5jdGlvbih0LGUsbixyLG8pe3JldHVybiBmdW5jdGlvbihpKXtpKGZ1bmN0aW9uKHQsZSxuLHIsbyl7cmV0dXJue3R5cGU6Ri5MdlAsdXNlcjp0LGhvc3RuYW1lOmUsY29udmVyc2F0aW9uSWQ6bixvcmdhbml6YXRpb25JZDpyLHVzZXJWZXJpZmljYXRpb25FbmFibGVkOm99fSh0LGUsbixyLG8pKX19O3ZhciBZcj1uKDk2NzE5KSxRcj1uKDE0NDcxKSxYcj1uKDM2NTc3KSwkcj1uKDcxNDI0KSx0bz1uKDY1MjYxKSxlbz1uKDI5NTQ0KSxubz1uKDExMzg4KSxybz1uKDQ2MDUpLG9vPW4oNTQ3ODgpLGlvPW4oNDc4ODMpLGFvPW4oNDY2MDQpLHVvPW4oNDAyMzgpLHNvPW5ldyBNYXA7ZnVuY3Rpb24gY28odCl7cmV0dXJuIGNvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxjbyh0KX1mdW5jdGlvbiBsbygpe2xvPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciB0LGU9e30sbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLG4pe3RbZV09bi52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxhPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIix1PWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyh0LGUsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtjKHt9LCIiKX1jYXRjaCh0KXtjPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1ufX1mdW5jdGlvbiBsKHQsZSxuLHIpe3ZhciBpPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgZz9lOmcsYT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBMKHJ8fFtdKTtyZXR1cm4gbyhhLCJfaW52b2tlIix7dmFsdWU6Tyh0LG4sdSl9KSxhfWZ1bmN0aW9uIGYodCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX1lLndyYXA9bDt2YXIgZD0ic3VzcGVuZGVkU3RhcnQiLHA9InN1c3BlbmRlZFlpZWxkIixoPSJleGVjdXRpbmciLHY9ImNvbXBsZXRlZCIseT17fTtmdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIG0oKXt9ZnVuY3Rpb24gYigpe312YXIgdz17fTtjKHcsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgXz1PYmplY3QuZ2V0UHJvdG90eXBlT2YsUz1fJiZfKF8oVChbXSkpKTtTJiZTIT09biYmci5jYWxsKFMsYSkmJih3PVMpO3ZhciB4PWIucHJvdG90eXBlPWcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodyk7ZnVuY3Rpb24gRSh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2ModCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQyh0LGUpe2Z1bmN0aW9uIG4obyxpLGEsdSl7dmFyIHM9Zih0W29dLHQsaSk7aWYoInRocm93IiE9PXMudHlwZSl7dmFyIGM9cy5hcmcsbD1jLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09Y28obCkmJnIuY2FsbChsLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCxhLHUpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LGEsdSl9KSk6ZS5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxhKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCxhLHUpfSkpfXUocy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIE8oZSxuLHIpe3ZhciBvPWQ7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PWgpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09dil7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9QSh1LHIpO2lmKHMpe2lmKHM9PT15KWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWQpdGhyb3cgbz12LHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz1oO3ZhciBjPWYoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT92OnAsYy5hcmc9PT15KWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89dixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIEEoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LEEoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSkseTt2YXIgaT1mKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwseTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwseSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCx5KX1mdW5jdGlvbiBJKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIGsodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIEwodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChJLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFQoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW2FdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGk9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBpLm5leHQ9aX19dGhyb3cgbmV3IFR5cGVFcnJvcihjbyhlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiBtLnByb3RvdHlwZT1iLG8oeCwiY29uc3RydWN0b3IiLHt2YWx1ZTpiLGNvbmZpZ3VyYWJsZTohMH0pLG8oYiwiY29uc3RydWN0b3IiLHt2YWx1ZTptLGNvbmZpZ3VyYWJsZTohMH0pLG0uZGlzcGxheU5hbWU9YyhiLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT1tfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxiKToodC5fX3Byb3RvX189YixjKHQscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh4KSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxFKEMucHJvdG90eXBlKSxjKEMucHJvdG90eXBlLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUMsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBDKGwodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sRSh4KSxjKHgscywiR2VuZXJhdG9yIiksYyh4LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyh4LCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVQsTC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkwscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKGspLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyx5KTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLHl9LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksayhuKSx5fX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO2sobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlQoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSx5fX0sZX1mdW5jdGlvbiBmbyh0LGUpe3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihuKXJldHVybihuPW4uY2FsbCh0KSkubmV4dC5iaW5kKG4pO2lmKEFycmF5LmlzQXJyYXkodCl8fChuPWZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBwbyh0LGUpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9wbyh0LGUpOnZvaWQgMH19KHQpKXx8ZSYmdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCl7biYmKHQ9bik7dmFyIHI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcj49dC5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOnRbcisrXX19fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX1mdW5jdGlvbiBwbyh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gaG8odCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiB2byh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXtobyhpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7aG8oaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX1mdW5jdGlvbiB5byh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZ28oci5rZXkpLHIpfX1mdW5jdGlvbiBnbyh0KXt2YXIgZT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT1jbyh0KXx8IXQpcmV0dXJuIHQ7dmFyIG49dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciByPW4uY2FsbCh0LGV8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPWNvKHIpKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09ZT9TdHJpbmc6TnVtYmVyKSh0KX0odCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PWNvKGUpP2U6ZSsiIn12YXIgbW89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlPXQuY2FwdHVyZUVycm9yLG49dC5zYWZlQ29uc29sZUVycm9yLHI9dC5pbnRlcmNvbUNsaWVudCxvPXQuc3RvcmU7dGhpcy5jYXB0dXJlRXJyb3I9dm9pZCAwLHRoaXMuc2FmZUNvbnNvbGVFcnJvcj12b2lkIDAsdGhpcy5pbnRlcmNvbUNsaWVudD12b2lkIDAsdGhpcy5zdG9yZT12b2lkIDAsdGhpcy5jYXB0dXJlRXJyb3I9ZSx0aGlzLnNhZmVDb25zb2xlRXJyb3I9bix0aGlzLmludGVyY29tQ2xpZW50PXIsdGhpcy5zdG9yZT1vfXZhciBlLHIsbyxpPXQucHJvdG90eXBlO3JldHVybiBpLmF0dGVtcHRDb25uZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dm8obG8oKS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciBuLHIsbyxpLGE7cmV0dXJuIGxvKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoMCE9PWUuZW5kcG9pbnRzLmxlbmd0aCl7dC5uZXh0PTM7YnJlYWt9cmV0dXJuIHRoaXMucmVwb3J0RXJyb3IobmV3IEVycm9yKCJObyBlbmRwb2ludHMgY29uZmlndXJlZCIpKSx0LmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDM6bj1mbyhlLmVuZHBvaW50cywhMCk7Y2FzZSA0OmlmKChyPW4oKSkuZG9uZSl7dC5uZXh0PTIwO2JyZWFrfXJldHVybiBvPXIudmFsdWUsdC5uZXh0PTgsdGhpcy5hdHRlbXB0U2luZ2xlQ29ubmVjdGlvbihvKTtjYXNlIDg6aT10LnNlbnQsdC50MD1pLnR5cGUsdC5uZXh0PSJjb25uZWN0ZWQiPT09dC50MD8xMjoiY3NwLXZpb2xhdGlvbiI9PT10LnQwPzEzOiJzZWN1cml0eS1lcnJvciI9PT10LnQwPzE0OiJmYWlsZWQiPT09dC50MD8xNToxODticmVhaztjYXNlIDEyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixpLnJlYWx0aW1lQ2xpZW50KTtjYXNlIDEzOmNhc2UgMTQ6cmV0dXJuIHQuYWJydXB0KCJjb250aW51ZSIsMTgpO2Nhc2UgMTU6cmV0dXJuKDAsVi5vUykoImFibHlfY29ubmVjdGlvbl9mYWlsZWQiLHtlcnJvcl90eXBlOiJ0ZXJtaW5hbCJ9KSx0aGlzLnJlcG9ydEVycm9yKGkuZXJyb3IpLHQuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMTg6dC5uZXh0PTQ7YnJlYWs7Y2FzZSAyMDpyZXR1cm4gYT1uZXcgRXJyb3IoIkFsbCBjb25uZWN0aW9uIGF0dGVtcHRzIGZhaWxlZCBkdWUgdG8gQ1NQIHZpb2xhdGlvbnMiKSx0aGlzLnJlcG9ydEVycm9yKGEpLHQuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgMjM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxpLmF0dGVtcHRTaW5nbGVDb25uZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dm8obG8oKS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciBuLHIsbyxpLGEsdTtyZXR1cm4gbG8oKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbj1udWxsLHI9bnVsbCx0LnByZXY9Mix0Lm5leHQ9NSx0aGlzLmNyZWF0ZVJlYWx0aW1lQ2xpZW50KGUpO2Nhc2UgNTpyZXR1cm4gbz10LnNlbnQsbj10aGlzLndhaXRGb3JDc3BWaW9sYXRpb24oZS5lbmRwb2ludCkscj10aGlzLndhaXRGb3JDb25uZWN0aW9uKG8pLHQubmV4dD0xMCxQcm9taXNlLnJhY2UoW3IucHJvbWlzZSxuLnByb21pc2VdKTtjYXNlIDEwOmlmKCJjc3AtdmlvbGF0aW9uIiE9PXQuc2VudCl7dC5uZXh0PTE2O2JyZWFrfXJldHVybiByLmRpc3Bvc2UoKSxuLmRpc3Bvc2UoKSwoMCxWLm9TKSgiYWJseV9jc3BfdmlvbGF0aW9uIiksdC5hYnJ1cHQoInJldHVybiIse3R5cGU6ImNzcC12aW9sYXRpb24ifSk7Y2FzZSAxNjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIse3R5cGU6ImNvbm5lY3RlZCIscmVhbHRpbWVDbGllbnQ6b30pO2Nhc2UgMTk6aWYodC5wcmV2PTE5LHQudDA9dC5jYXRjaCgyKSxudWxsPT0oaT1yKXx8aS5kaXNwb3NlKCksbnVsbD09KGE9bil8fGEuZGlzcG9zZSgpLCEodC50MCBpbnN0YW5jZW9mIEVycm9yJiYiU2VjdXJpdHlFcnJvciI9PT10LnQwLm5hbWUpKXt0Lm5leHQ9MjU7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHt0eXBlOiJzZWN1cml0eS1lcnJvciJ9KTtjYXNlIDI1OnJldHVybiB0LmFicnVwdCgicmV0dXJuIix7dHlwZToiZmFpbGVkIixlcnJvcjp0LnQwfSk7Y2FzZSAyNjpyZXR1cm4gdC5wcmV2PTI2LG51bGw9PSh1PW4pfHx1LmRpc3Bvc2UoKSx0LmZpbmlzaCgyNik7Y2FzZSAyOTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzIsMTksMjYsMjldXSl9KSkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLGkud2FpdEZvckNzcFZpb2xhdGlvbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybntwcm9taXNlOm5ldyBQcm9taXNlKChmdW5jdGlvbihuKXtlLmFkZENzcFZpb2xhdGlvbk9ic2VydmVyKHQsbil9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4iY3NwLXZpb2xhdGlvbiJ9KSksZGlzcG9zZTpmdW5jdGlvbigpe3JldHVybiBlLnJlbW92ZUNzcFZpb2xhdGlvbk9ic2VydmVyKHQpfX19LGkud2FpdEZvckNvbm5lY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm57cHJvbWlzZTpuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixyKXt0LmNvbm5lY3Rpb24ub25jZSgiY29ubmVjdGVkIiwoZnVuY3Rpb24oKXsoMCxWLm9TKSgiYWJseV9jb25uZWN0ZWQiLHtjb25uZWN0aW9uX3R5cGU6ImluaXRpYWwifSksZS5zdG9yZS5kaXNwYXRjaCgoMCxabi5UcCkoWHIuYSQpKSxuKCl9KSksdC5jb25uZWN0aW9uLm9uY2UoImZhaWxlZCIsKGZ1bmN0aW9uKHQpe3IobmV3IEVycm9yKCJBYmx5IGNvbm5lY3Rpb24gZmFpbGVkOiAiK3QucmVhc29uKSksZS5zdG9yZS5kaXNwYXRjaCgoMCxabi5UcCkoWHIudzMpKX0pKSx0LmNvbm5lY3QoKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiJjb25uZWN0ZWQifSkpLGRpc3Bvc2U6ZnVuY3Rpb24oKXtyZXR1cm4gdC5jbG9zZSgpfX19LGkuY3JlYXRlUmVhbHRpbWVDbGllbnQ9ZnVuY3Rpb24oKXt2YXIgdD12byhsbygpLm1hcmsoKGZ1bmN0aW9uIHQoZSl7dmFyIHIsbyxpLGEsdT10aGlzO3JldHVybiBsbygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixuLmUoODA5NikudGhlbihuLmJpbmQobiw0Njc3KSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCxvPXIuQmFzZVJlYWx0aW1lLGk9ci5XZWJTb2NrZXRUcmFuc3BvcnQsYT1yLkZldGNoUmVxdWVzdCx0LmFicnVwdCgicmV0dXJuIixuZXcgbyh7YXV0aENhbGxiYWNrOmZ1bmN0aW9uKHQsZSl7dS5hdXRob3JpemUoKS50aGVuKChmdW5jdGlvbih0KXt2YXIgbj10LnRva2VuO3JldHVybiBlKG51bGwsbil9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3JldHVybiBlKHQsbnVsbCl9KSl9LGF1dG9Db25uZWN0OiExLGVuZHBvaW50OmUuZW5kcG9pbnQsZmFsbGJhY2tIb3N0czplLmZhbGxiYWNrLGNvbm5lY3Rpdml0eUNoZWNrVXJsOmUuY29ubmVjdGl2aXR5Q2hlY2tVcmwsd3NDb25uZWN0aXZpdHlDaGVja1VybDplLndzQ29ubmVjdGl2aXR5Q2hlY2tVcmwscGx1Z2luczp7V2ViU29ja2V0VHJhbnNwb3J0OmksRmV0Y2hSZXF1ZXN0OmF9fSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxpLnJlcG9ydEVycm9yPWZ1bmN0aW9uKHQpe3ZhciBlPSJzdHJpbmciPT10eXBlb2YgdD9uZXcgRXJyb3IodCk6dDtudWxsPT1lJiYoZT1uZXcgRXJyb3IoIkNvbm5lY3Rpb25NYW5hZ2VyIGNhdWdodCBhIG51bGwgb3IgdW5kZWZpbmVkIGVycm9yIikpLGUgaW5zdGFuY2VvZiBFcnJvcj8odGhpcy5jYXB0dXJlRXJyb3IoZSksdGhpcy5zYWZlQ29uc29sZUVycm9yKGUubWVzc2FnZSkpOih0aGlzLmNhcHR1cmVFcnJvcihuZXcgRXJyb3IoU3RyaW5nKGUpKSksdGhpcy5zYWZlQ29uc29sZUVycm9yKFN0cmluZyhlKSkpfSxpLmF1dGhvcml6ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuc3RvcmUuZ2V0U3RhdGUoKS5zZXNzaW9uO3JldHVybiB0aGlzLmludGVyY29tQ2xpZW50LmF1dGhvcml6ZVJlYWx0aW1lKHtzZXNzaW9uOnR9KX0saS5hZGRDc3BWaW9sYXRpb25PYnNlcnZlcj1mdW5jdGlvbih0LGUpeyFmdW5jdGlvbih0LGUpe2lmKCFzby5oYXMoZS5pZCkpe3ZhciBuPWZ1bmN0aW9uKG4pe2lmKGUubWF0Y2gobikpe2UuaGFuZGxlKG4pO3ZhciByPXQuZ2V0U3RhdGUoKS5zZXNzaW9uOygwLF8uVlkpKHIsImNzcF92aW9sYXRpb24iLHt2aW9sYXRlZERpcmVjdGl2ZTpuLnZpb2xhdGVkRGlyZWN0aXZlLGJsb2NrZWRVUkk6bi5ibG9ja2VkVVJJfSwoMCx1by56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvbWV0cmljcy9yY3YiKX19O3NvLnNldChlLmlkLG4pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlY3VyaXR5cG9saWN5dmlvbGF0aW9uIixuKX19KHRoaXMuc3RvcmUse2lkOnQsaGFuZGxlOmUsbWF0Y2g6ZnVuY3Rpb24oZSl7dmFyIG47cmV0dXJuImVuZm9yY2UiPT09ZS5kaXNwb3NpdGlvbiYmKG51bGw9PShuPWUuYmxvY2tlZFVSSSk/dm9pZCAwOi0xIT09bi5pbmRleE9mKHQpKX19KX0saS5yZW1vdmVDc3BWaW9sYXRpb25PYnNlcnZlcj1mdW5jdGlvbih0KXt2YXIgZSxuO2U9dCwobj1zby5nZXQoZSkpJiYoc28uZGVsZXRlKGUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlY3VyaXR5cG9saWN5dmlvbGF0aW9uIixuKSl9LGU9dCxyJiZ5byhlLnByb3RvdHlwZSxyKSxvJiZ5byhlLG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9KCksYm89big2NjY0KSx3bz1uKDM4NzI5KTtmdW5jdGlvbiBfbyh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgbj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8saSxhLHU9W10scz0hMCxjPSExO3RyeXtpZihpPShuPW4uY2FsbCh0KSkubmV4dCwwPT09ZSl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47cz0hMX1lbHNlIGZvcig7IShzPShyPWkuY2FsbChuKSkuZG9uZSkmJih1LnB1c2goci52YWx1ZSksdS5sZW5ndGghPT1lKTtzPSEwKTt9Y2F0Y2godCl7Yz0hMCxvPXR9ZmluYWxseXt0cnl7aWYoIXMmJm51bGwhPW4ucmV0dXJuJiYoYT1uLnJldHVybigpLE9iamVjdChhKSE9PWEpKXJldHVybn1maW5hbGx5e2lmKGMpdGhyb3cgb319cmV0dXJuIHV9fSh0LGUpfHxmdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gU28odCxlKTt2YXIgbj17fS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/U28odCxlKTp2b2lkIDB9fSh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gU28odCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfXZhciB4bz17c2V0QXR0cmlidXRlczpmdW5jdGlvbigpe3JldHVybiB4b30scmVjb3JkRXhjZXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHhvfSxlbmQ6ZnVuY3Rpb24oKXt9fSxFbz1iby51LmdldFRyYWNlcigiYWJseS1pbnN0cnVtZW50YXRpb24iKTtmdW5jdGlvbiBDbyh0KXt0cnl7dmFyIGU9dC5zcGxpdCgiLSIpO2lmKDQhPT1lLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgbj1mdW5jdGlvbih0LGUsbil7aWYoZSYmIUFycmF5LmlzQXJyYXkoZSkmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ZhciByPWUubGVuZ3RoO3JldHVybiBTbyhlLHZvaWQgMCE9PW4mJm48cj9uOnIpfXJldHVybiB0KGUsbil9KF9vLGUsNCkscj1uWzBdLG89blsxXSxpPW5bMl0sYT1uWzNdO3JldHVybiIwMCIhPT1yfHwzMiE9PW8ubGVuZ3RofHwxNiE9PWkubGVuZ3RoP251bGw6e3RyYWNlSWQ6byxzcGFuSWQ6aSx0cmFjZUZsYWdzOnBhcnNlSW50KGEsMTYpLGlzUmVtb3RlOiEwfX1jYXRjaCh0KXtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gT28odCxlKXt2YXIgbj1wZXJmb3JtYW5jZS5ub3coKSxyPWZ1bmN0aW9uKHQpe3RyeXt2YXIgZTtyZXR1cm4gbnVsbD09KGU9dC5kYXRhKXx8bnVsbD09KGU9ZS5ldmVudERhdGEpP3ZvaWQgMDplLnRyYWNlcGFyZW50fWNhdGNoKHQpe3JldHVybn19KHQpO2lmKHIpe3ZhciBvPUNvKHIpO2lmKG8pdHJ5e3ZhciBpPWJvLnUuc2V0U3BhbkNvbnRleHQod28ubCxvKTtFby5zdGFydEFjdGl2ZVNwYW4oImFibHkubWVzc2FnZS4iK3QubmFtZSx7fSxpLChmdW5jdGlvbih0KXt0cnl7ZSh0KX1jYXRjaChlKXt0aHJvdyBmdW5jdGlvbih0LGUpe3QucmVjb3JkRXhjZXB0aW9uKGUpLHQuc2V0QXR0cmlidXRlcyh7ZXJyb3I6ITAsImVycm9yLnR5cGUiOmUuY29uc3RydWN0b3IubmFtZSwiZXJyb3IubWVzc2FnZSI6ZS5tZXNzYWdlfSl9KHQsZSksZX1maW5hbGx5e3Quc2V0QXR0cmlidXRlcyh7ImFibHkucHJvY2Vzc2luZ19kdXJhdGlvbl9tcyI6TWF0aC5yb3VuZChwZXJmb3JtYW5jZS5ub3coKS1uKX0pLHQuZW5kKCl9fSkpfWNhdGNoKHQpe3Rocm93IGUoeG8pLHR9ZWxzZSBlKHhvKX1lbHNlIGUoeG8pfXZhciBBbz0ic2FsZXNmb3JjZS1tZXNzYWdpbmctY2xpZW50LXN0YXRlIixJbz1mdW5jdGlvbih0KXtyZXR1cm4ic2FsZXNmb3JjZS1tZXNzYWdpbmctY2xpZW50LXN0YXRlLSIrdH0sa289ZnVuY3Rpb24odCxlKXtyZXR1cm4ic2FsZXNmb3JjZS1tZXNzYWdpbmctY2xpZW50LXN0YXRlLSIrdCsiLSIrZX0sTG89ZnVuY3Rpb24odCl7cmV0dXJuInNhbGVzZm9yY2UtbWVzc2FnaW5nLWhlYXJ0YmVhdC0iK3R9LFRvPSJzYWxlc2ZvcmNlLW1lc3NhZ2luZy1hY3RpdmUtdGFiLWlkIixqbz1mdW5jdGlvbih0KXt2YXIgZSxuPXtuYW1lOihudWxsPT10P3ZvaWQgMDp0Lm5hbWUpfHxudWxsLHNhbGVzZm9yY2VfaWRlbnRpdHlfdG9rZW46KG51bGw9PXQ/dm9pZCAwOnQuc2FsZXNmb3JjZV9pZGVudGl0eV90b2tlbil8fHZvaWQgMH07cmV0dXJuIG51bGwhPXQmJm51bGwhPShlPXQuY3VzdG9tQXR0cmlidXRlcykmJmUuc2FsZXNmb3JjZV9pZGVudGl0eV90b2tlbiYmKG4uc2FsZXNmb3JjZV9pZGVudGl0eV90b2tlbj10LmN1c3RvbUF0dHJpYnV0ZXMuc2FsZXNmb3JjZV9pZGVudGl0eV90b2tlbi50b1N0cmluZygpKSxufSxQbz1mdW5jdGlvbih0KXt2YXIgZT1YLkwuZ2V0KEFvKTshWC5MLmdldChJbyh0KSkmJmUmJihYLkwuc2V0KElvKHQpLGUpLFguTC5yZW1vdmUoQW8pKX07dmFyIE5vPW4oNzE4MTYpLE1vPW4oNTc1MjApO2Z1bmN0aW9uIFJvKHQsZSl7dmFyIG49InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG4pcmV0dXJuKG49bi5jYWxsKHQpKS5uZXh0LmJpbmQobik7aWYoQXJyYXkuaXNBcnJheSh0KXx8KG49ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIFVvKHQsZSk7dmFyIG49e30udG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP1VvKHQsZSk6dm9pZCAwfX0odCkpfHxlJiZ0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXtuJiYodD1uKTt2YXIgcj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiByPj10Lmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6dFtyKytdfX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfWZ1bmN0aW9uIFVvKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgem89big2MTUwMyk7dmFyIEhvPW4oNDQyOTcpO2Z1bmN0aW9uIEZvKHQpe3JldHVybiBGbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sRm8odCl9ZnVuY3Rpb24gRG8oKXtEbz1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gbCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGc/ZTpnLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgTChyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOk8odCxuLHUpfSksYX1mdW5jdGlvbiBmKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWw7dmFyIGQ9InN1c3BlbmRlZFN0YXJ0IixwPSJzdXNwZW5kZWRZaWVsZCIsaD0iZXhlY3V0aW5nIix2PSJjb21wbGV0ZWQiLHk9e307ZnVuY3Rpb24gZygpe31mdW5jdGlvbiBtKCl7fWZ1bmN0aW9uIGIoKXt9dmFyIHc9e307Yyh3LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIF89T2JqZWN0LmdldFByb3RvdHlwZU9mLFM9XyYmXyhfKFQoW10pKSk7UyYmUyE9PW4mJnIuY2FsbChTLGEpJiYodz1TKTt2YXIgeD1iLnByb3RvdHlwZT1nLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpO2Z1bmN0aW9uIEUodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEModCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPWYodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGw9Yy52YWx1ZTtyZXR1cm4gbCYmIm9iamVjdCI9PUZvKGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBPKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT1oKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PXYpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPUEodSxyKTtpZihzKXtpZihzPT09eSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89dixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289aDt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/djpwLGMuYXJnPT09eSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPXYsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBBKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxBKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLHk7dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLHk7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLHkpOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwseSl9ZnVuY3Rpb24gSSh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBrKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBMKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goSSx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBUKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IoRm8oZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gbS5wcm90b3R5cGU9YixvKHgsImNvbnN0cnVjdG9yIix7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSxvKGIsImNvbnN0cnVjdG9yIix7dmFsdWU6bSxjb25maWd1cmFibGU6ITB9KSxtLmRpc3BsYXlOYW1lPWMoYixzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09bXx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsYik6KHQuX19wcm90b19fPWIsYyh0LHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeCksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sRShDLnByb3RvdHlwZSksYyhDLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1DLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQyhsKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LEUoeCksYyh4LHMsIkdlbmVyYXRvciIpLGMoeCxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMoeCwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1ULEwucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpMLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChrKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MseSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSx5fSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLGsobikseX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztrKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpUKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCkseX19LGV9ZnVuY3Rpb24gQm8odCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBWbyh0KXtyZXR1cm4gR28uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEdvKCl7dmFyIHQ7cmV0dXJuIHQ9RG8oKS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciBuLHIsbyxpLGEsdSxzO3JldHVybiBEbygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBuPWUuc2Vzc2lvbixyPWUucmVxdWVzdElkLG89ZS5yZXN1bHQsaT1lLmVycm9yLGE9ZS5zdWNjZXNzLHU9ZS5leGVjdXRpb25UaW1lTXMscz0oMCx1by56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvY2xpZW50X3NpZGVfYWN0aW9uX3Jlc3BvbnNlcyIsdC5hYnJ1cHQoInJldHVybiIsSG8uQS5wb3N0KHt1cmw6cyxzZXNzaW9uOm4scGFyYW1zOntyZXF1ZXN0X2lkOnIscmVzdWx0OnZvaWQgMCE9PW8/SlNPTi5zdHJpbmdpZnkobyk6bnVsbCxlcnJvcjppLHN1Y2Nlc3M6YSxleGVjdXRpb25fdGltZV9tczp1fX0pKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSxHbz1mdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpe0JvKGkscixvLGEsdSwibmV4dCIsdCl9ZnVuY3Rpb24gdSh0KXtCbyhpLHIsbyxhLHUsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9LEdvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBxbyh0KXtyZXR1cm4gcW89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHFvKHQpfWZ1bmN0aW9uIFdvKCl7V289ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnP2U6ZyxhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IEwocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpPKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIscD0ic3VzcGVuZGVkWWllbGQiLGg9ImV4ZWN1dGluZyIsdj0iY29tcGxldGVkIix5PXt9O2Z1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gbSgpe31mdW5jdGlvbiBiKCl7fXZhciB3PXt9O2ModyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBfPU9iamVjdC5nZXRQcm90b3R5cGVPZixTPV8mJl8oXyhUKFtdKSkpO1MmJlMhPT1uJiZyLmNhbGwoUyxhKSYmKHc9Uyk7dmFyIHg9Yi5wcm90b3R5cGU9Zy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh3KTtmdW5jdGlvbiBFKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBDKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT1xbyhsKSYmci5jYWxsKGwsIl9fYXdhaXQiKT9lLnJlc29sdmUobC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUobCkudGhlbigoZnVuY3Rpb24odCl7Yy52YWx1ZT10LGEoYyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShzLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gTyhlLG4scil7dmFyIG89ZDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09aCl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT12KXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1BKHUscik7aWYocyl7aWYocz09PXkpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09ZCl0aHJvdyBvPXYsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPWg7dmFyIGM9ZihlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP3Y6cCxjLmFyZz09PXkpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz12LHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gQShlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsQShlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSx5O3ZhciBpPWYobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCx5O3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCx5KTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLHkpfWZ1bmN0aW9uIEkodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gayh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gTCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEksdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gVChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKHFvKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIG0ucHJvdG90eXBlPWIsbyh4LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSksbyhiLCJjb25zdHJ1Y3RvciIse3ZhbHVlOm0sY29uZmlndXJhYmxlOiEwfSksbS5kaXNwbGF5TmFtZT1jKGIscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PW18fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGIpOih0Ll9fcHJvdG9fXz1iLGModCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHgpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LEUoQy5wcm90b3R5cGUpLGMoQy5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QyxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEMobCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxFKHgpLGMoeCxzLCJHZW5lcmF0b3IiKSxjKHgsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHgsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9VCxMLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TCxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goayksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHkpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSkseX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxrKG4pLHl9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7ayhuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6VChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLHl9fSxlfWZ1bmN0aW9uIEtvKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gWm8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7S28oaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe0tvKGkscixvLGEsdSwidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19ZnVuY3Rpb24gSm8odCl7cmV0dXJuIFlvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBZbygpe3JldHVybiBZbz1abyhXbygpLm1hcmsoKGZ1bmN0aW9uIHQoZSl7dmFyIG4scixvLGksYSx1O3JldHVybiBXbygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBuPWUuc2Vzc2lvbixyPWUucmVxdWVzdElkLG89ZS5yZXN1bHQsaT1lLmVycm9yLGE9ZS5zdWNjZXNzLHU9ZS5leGVjdXRpb25UaW1lTXMsdC5wcmV2PTEsdC5uZXh0PTQsVm8oe3Nlc3Npb246bixyZXF1ZXN0SWQ6cixyZXN1bHQ6byxlcnJvcjppLHN1Y2Nlc3M6YSxleGVjdXRpb25UaW1lTXM6dX0pO2Nhc2UgNDp0Lm5leHQ9OTticmVhaztjYXNlIDY6dC5wcmV2PTYsdC50MD10LmNhdGNoKDEpLGNvbnNvbGUuZXJyb3IoIltDbGllbnRTaWRlQWN0aW9uXSBGYWlsZWQgdG8gc2VuZCByZXNwb25zZToiLHQudDApO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzEsNl1dKX0pKSksWW8uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFFvKHQsZSxuKXt2YXIgcixvLGk9bi5nZXRTdGF0ZSgpO2lmKG51bGwhPShyPWkuYXBwLmZlYXR1cmVzKSYmci5jbGllbnRTaWRlQWN0aW9ucyl7dmFyIGE9ZS5kYXRhLmV2ZW50RGF0YSx1PWEudGFyZ2V0U2Vzc2lvbklkO3UmJnUhPT0obnVsbD09KG89aS5zZXNzaW9uKT92b2lkIDA6by5zZXNzaW9uSWQpP2NvbnNvbGUuZGVidWcoIltDbGllbnRTaWRlQWN0aW9uXSBJZ25vcmluZyByZXF1ZXN0IHRhcmdldGVkIGF0IGRpZmZlcmVudCBzZXNzaW9uOiIsdSk6T28oZSwoZnVuY3Rpb24oKXt2YXIgZT1hLmFjdGlvbklkLG49YS5mdW5jdGlvbk5hbWUscj1hLmFyZ3VtZW50cyxvPWEucmVxdWVzdElkLGk9YS50aW1lb3V0TXM7dChmdW5jdGlvbih0KXt2YXIgZT10LmZ1bmN0aW9uTmFtZSxuPXQuYXJndW1lbnRzLHI9dC5yZXF1ZXN0SWQsbz10LnRpbWVvdXRNcztyZXR1cm4gWm8oV28oKS5tYXJrKChmdW5jdGlvbiB0KGksYSl7dmFyIHUscyxjLGwsZixkLHAsaDtyZXR1cm4gV28oKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZih1PWEoKS5zZXNzaW9uLHM9RGF0ZS5ub3coKSxjPXdpbmRvdy5wYXJlbnR8fHdpbmRvdywiZnVuY3Rpb24iPT10eXBlb2YobD1jW2VdKSl7dC5uZXh0PTk7YnJlYWt9cmV0dXJuIGNvbnNvbGUud2FybignW0NsaWVudFNpZGVBY3Rpb25dIEZ1bmN0aW9uICInK2UrJyIgaXMgbm90IGRlZmluZWQgb24gd2luZG93JyksdC5uZXh0PTgsSm8oe3Nlc3Npb246dSxyZXF1ZXN0SWQ6cixyZXN1bHQ6bnVsbCxlcnJvcjonRnVuY3Rpb24gIicrZSsnIiBpcyBub3QgZGVmaW5lZCcsc3VjY2VzczohMSxleGVjdXRpb25UaW1lTXM6RGF0ZS5ub3coKS1zfSk7Y2FzZSA4OnJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSA5OnJldHVybiBmPW5ldyBQcm9taXNlKChmdW5jdGlvbih0LGUpe3RyeXtsKG4sdCxlKX1jYXRjaCh0KXtlKHQpfX0pKSxkPW5ldyBQcm9taXNlKChmdW5jdGlvbih0LGUpe3JldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlKG5ldyBFcnJvcigiRXhlY3V0aW9uIHRpbWVvdXQiKSl9KSxvKX0pKSx0LnByZXY9MTEsdC5uZXh0PTE0LFByb21pc2UucmFjZShbZixkXSk7Y2FzZSAxNDpyZXR1cm4gcD10LnNlbnQsdC5uZXh0PTE3LEpvKHtzZXNzaW9uOnUscmVxdWVzdElkOnIscmVzdWx0OnAsZXJyb3I6bnVsbCxzdWNjZXNzOiEwLGV4ZWN1dGlvblRpbWVNczpEYXRlLm5vdygpLXN9KTtjYXNlIDE3OnQubmV4dD0yNTticmVhaztjYXNlIDE5OnJldHVybiB0LnByZXY9MTksdC50MD10LmNhdGNoKDExKSxoPXQudDAgaW5zdGFuY2VvZiBFcnJvcj90LnQwLm1lc3NhZ2U6U3RyaW5nKHQudDApLGNvbnNvbGUuZXJyb3IoIltDbGllbnRTaWRlQWN0aW9uXSBFeGVjdXRpb24gZmFpbGVkOiIsdC50MCksdC5uZXh0PTI1LEpvKHtzZXNzaW9uOnUscmVxdWVzdElkOnIscmVzdWx0Om51bGwsZXJyb3I6aCxzdWNjZXNzOiExLGV4ZWN1dGlvblRpbWVNczpEYXRlLm5vdygpLXN9KTtjYXNlIDI1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCxudWxsLFtbMTEsMTldXSl9KSkpfSh7YWN0aW9uSWQ6ZSxmdW5jdGlvbk5hbWU6bixhcmd1bWVudHM6cixyZXF1ZXN0SWQ6byx0aW1lb3V0TXM6aX0pKX0pKX1lbHNlIGNvbnNvbGUud2FybigiW0NsaWVudFNpZGVBY3Rpb25dIEZlYXR1cmUgZGlzYWJsZWQsIGlnbm9yaW5nIHJlcXVlc3QiKX12YXIgWG89big2Njg1NCk7ZnVuY3Rpb24gJG8odCl7dmFyIGU7dHJ5e2U9d2luZG93LnBhcmVudC5kb2N1bWVudH1jYXRjaCh0KXtyZXR1cm59dmFyIG49d2luZG93LnBhcmVudDt0cnl7IWZ1bmN0aW9uKHQsZSl7dmFyIG47aWYodC5xdWVyeVNlbGVjdG9yKCJjYXJ0LWRyYXdlciIpKXt2YXIgcj1lLnB1Ymxpc2g7cmV0dXJuIHZvaWQoImZ1bmN0aW9uIj09dHlwZW9mIHI/cigiY2FydC11cGRhdGUiLHtzb3VyY2U6ImludGVyY29tIn0pOnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNhcnQ6dXBkYXRlIix7YnViYmxlczohMCxkZXRhaWw6e2RhdGE6e3NvdXJjZToiaW50ZXJjb20ifX19KSkpfXZhciBvPWUuYWpheENhcnQ7aWYoImZ1bmN0aW9uIj09dHlwZW9mKG51bGw9PW8/dm9pZCAwOm8ubG9hZCkpcmV0dXJuIHZvaWQgby5sb2FkKCk7dmFyIGk9ZS5TaG9waWZ5O2lmKCJmdW5jdGlvbiI9PXR5cGVvZihudWxsPT1pfHxudWxsPT0obj1pLnRoZW1lKXx8bnVsbD09KG49bi5qc0FqYXhDYXJ0KT92b2lkIDA6bi51cGRhdGVWaWV3KSlyZXR1cm4gdm9pZCBpLnRoZW1lLmpzQWpheENhcnQudXBkYXRlVmlldygpO3ZhciBhPXQucXVlcnlTZWxlY3RvcigiZm9ybS5jYXJ0IGlucHV0LmFqYXhjYXJ0X19xdHktbnVtIik7aWYoYSlyZXR1cm4gdm9pZCBhLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJjaGFuZ2UiLHtidWJibGVzOiEwfSkpO3ZhciB1PXQucXVlcnlTZWxlY3RvcigiZm9ybS5jYXJ0X19jb250ZW50cyBpbnB1dC5xdWFudGl0eV9faW5wdXQiKTtpZih1KXJldHVybiB2b2lkIHUuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImNoYW5nZSIse2J1YmJsZXM6ITB9KSk7dC5kb2N1bWVudEVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNhcnQ6cmVmcmVzaCIse2J1YmJsZXM6ITB9KSl9KGUsbil9Y2F0Y2godCl7fWUuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImludGVyY29tOmNhcnRVcGRhdGVkIix7ZGV0YWlsOnR9KSl9ZnVuY3Rpb24gdGkodCl7cmV0dXJuIG51bGwhPXQuZGF0YX1mdW5jdGlvbiBlaSh0LGUsbil7dmFyIHI9bi5kaXNwYXRjaDtzd2l0Y2goZS5uYW1lKXtjYXNlIkNvbnZlcnNhdGlvblN0YXRlQ2hhbmdlZCI6aWYoIXRpKGUpKXRocm93IG5ldyBFcnJvcigiQ29udmVyc2F0aW9uU3RhdGVDaGFuZ2VkIG1lc3NhZ2UgbWlzc2luZyBkYXRhIik7IWZ1bmN0aW9uKHQsZSxuLHIpe09vKGUsKGZ1bmN0aW9uKCl7dmFyIG89ZS5kYXRhLmV2ZW50RGF0YS5jb252ZXJzYXRpb24saT1vLmlkLGE9bi5nZXRTdGF0ZSgpLmNvbnZlcnNhdGlvbnMuYnlJZFtpXSx1PSEhYSYmInBhcnRpYWwiIT09YS5mZXRjaFN0YXRlO3QodT8oMCxyby5fWikoKDAsXy5qMykobykpOigwLHJvLlFMKShyLGkse3JlcXVlc3RPcmlnaW46IkNvbnZlcnNhdGlvblN0YXRlQ2hhbmdlZCIsYmFja2dyb3VuZEZldGNoOiEwfSkpfSkpfShyLGUsbix0KTticmVhaztjYXNlIk5ld0NvbW1lbnQiOmlmKCF0aShlKSl0aHJvdyBuZXcgRXJyb3IoIk5ld0NvbW1lbnQgbWVzc2FnZSBtaXNzaW5nIGRhdGEiKTshZnVuY3Rpb24odCxlLG4pe09vKG4sKGZ1bmN0aW9uKCl7KDAsVi5vUykoImFibHlfbmV3X2NvbW1lbnRfcmVjZWl2ZWQiKSx0KCgwLFpuLmJFKSgiTmV3Q29tbWVudCIpKTt2YXIgcj1TdHJpbmcobi5kYXRhLmV2ZW50RGF0YS5jb252ZXJzYXRpb25JZCksbz0oMCxfLndqKShuLmRhdGEuZXZlbnREYXRhLmNvbnZlcnNhdGlvblBhcnQpO2lmKG4uZGF0YS5ldmVudERhdGEuY29udmVyc2F0aW9uKXt2YXIgaT0oMCxfLmozKShuLmRhdGEuZXZlbnREYXRhLmNvbnZlcnNhdGlvbik7dCgoMCxyby5fWikoaSkpfXQoKDAscm8ubVEpKHtjb252ZXJzYXRpb25JZDpyLHBhcnQ6b30pKTtmb3IodmFyIGEsdT1SbygoMCxELkhwKSh7cGFydHM6W29dfSksITApOyEoYT11KCkpLmRvbmU7KXt2YXIgcz1hLnZhbHVlO3QoKDAsTW8uX0QpKGUscywhMSkpfSgwLE5vLkEpKHtwYXJ0czpbb119LHQpO3ZhciBjPW4uZGF0YS5ldmVudERhdGEudHJhY2VwYXJlbnQ7YyYmYW8uZi5vbk5ld0NvbW1lbnRWaWFSZWFsdGltZSh7cGFydHM6W29dfSxjKX0pKX0ocix0LGUpO2JyZWFrO2Nhc2UiRmluSGFuZG9mZlRvU2FsZXNmb3JjZUluQXBwTWVzc2FnaW5nIjppZighdGkoZSkpdGhyb3cgbmV3IEVycm9yKCJGaW5IYW5kb2ZmVG9TYWxlc2ZvcmNlSW5BcHBNZXNzYWdpbmcgbWVzc2FnZSBtaXNzaW5nIGRhdGEiKTshZnVuY3Rpb24odCxlLG4pe09vKGUsKGZ1bmN0aW9uKCl7dmFyIHI9bi5nZXRTdGF0ZSgpLG89ci51c2VyLGk9ci5zZXNzaW9uO2lmKCFvfHwhaSl0aHJvdyBuZXcgRXJyb3IoIlVzZXIgb3IgU2Vzc2lvbiBpcyBub3QgcHJlc2VudCBpbiBTdG9yZSIpO3ZhciBhPWUuZGF0YS5ldmVudERhdGEsdT1hLmNvbnZlcnNhdGlvbklkLHM9YS5ob3N0bmFtZSxjPWEub3JnYW5pemF0aW9uSWQsbD1hLnVzZXJWZXJpZmljYXRpb25FbmFibGVkLGY9am8obyk7dChKcihmLHMsU3RyaW5nKHUpLGMsbCkpfSkpfShyLGUsbik7YnJlYWs7Y2FzZSJDb21wb3NlclN0YXRlQ2hhbmdlZCI6aWYoIXRpKGUpKXRocm93IG5ldyBFcnJvcigiQ29tcG9zZXJTdGF0ZUNoYW5nZWQgbWVzc2FnZSBtaXNzaW5nIGRhdGEiKTshZnVuY3Rpb24odCxlKXtPbyhlLChmdW5jdGlvbigpe3ZhciBuPWUuZGF0YS5ldmVudERhdGEscj1uLmNvbnZlcnNhdGlvbklkLG89bi5jb21wb3NlclN0YXRlLGk9KDAsem8ua0cpKG8pO2kmJnQoKDAscm8uVDYpKFN0cmluZyhyKSxpKSl9KSl9KHIsZSk7YnJlYWs7Y2FzZSJDbGllbnRTaWRlQWN0aW9uUmVxdWVzdCI6aWYoIXRpKGUpKXRocm93IG5ldyBFcnJvcigiQ2xpZW50U2lkZUFjdGlvblJlcXVlc3QgbWVzc2FnZSBtaXNzaW5nIGRhdGEiKTsiaW50ZXJjb206bmF2aWdhdGVUb1VybCI9PT1lLmRhdGEuZXZlbnREYXRhLmZ1bmN0aW9uTmFtZT9mdW5jdGlvbih0LGUpe3ZhciBuLHIsbz1lLmdldFN0YXRlKCk7aWYobnVsbCE9KG49by5hcHAuZmVhdHVyZXMpJiZuLmNsaWVudFNpZGVBY3Rpb25zKXt2YXIgaT10LmRhdGEuZXZlbnREYXRhLGE9aS50YXJnZXRTZXNzaW9uSWQsdT1pLmFyZ3VtZW50cztpZighYXx8YT09PShudWxsPT0ocj1vLnNlc3Npb24pP3ZvaWQgMDpyLnNlc3Npb25JZCkpe3ZhciBzPW51bGw9PXU/dm9pZCAwOnUudXJsO2lmKCJzdHJpbmciPT10eXBlb2YgcyYmcyl0cnl7dmFyIGM9bmV3IFVSTChzKTtpZigiaHR0cHM6IiE9PWMucHJvdG9jb2wpcmV0dXJuO2lmKGMudXNlcm5hbWV8fGMucGFzc3dvcmQpcmV0dXJuO3ZhciBsPSgwLFhvLiQpKCk7aWYoKG51bGw9PWw/dm9pZCAwOmwubG9jYXRpb24uaHJlZik9PT1jLmhyZWYpcmV0dXJuO251bGwhPWwmJmwuX19pbnRlcmNvbUFzc2lnbkxvY2F0aW9uP2wuX19pbnRlcmNvbUFzc2lnbkxvY2F0aW9uKGMuaHJlZik6bnVsbD09bHx8bC5sb2NhdGlvbi5hc3NpZ24oYy5ocmVmKX1jYXRjaCh0KXt9fX19KGUsbik6UW8ocixlLG4pO2JyZWFrO2Nhc2UiQ29udmVyc2F0aW9uUGFydFRva2VuIjppZighdGkoZSkpdGhyb3cgbmV3IEVycm9yKCJDb252ZXJzYXRpb25QYXJ0VG9rZW4gbWVzc2FnZSBtaXNzaW5nIGRhdGEiKTshZnVuY3Rpb24odCxlLG4pe3ZhciByPSgwLGVvLkxmKShuLmdldFN0YXRlKCkpLG89ci5wYXJ0aWNpcGFudCxpPXIuc3RyZWFtaW5nUGFydDtvJiZPbyhlLChmdW5jdGlvbigpe3ZhciByPWUuZGF0YS5ldmVudERhdGEsYT1yLmNvbnZlcnNhdGlvbklkLHU9ci50b2tlblNlcXVlbmNlSW5kZXgscz1yLmUyZU1ldHJpY0lkLGM9T2JqZWN0LmFzc2lnbih7fSwoMCxfLndqKSgoMCxuby5PKShyKSkse2F1dGhvcjp7aWQ6by5pZCxhdmF0YXI6by5hdmF0YXIsZmlyc3ROYW1lOm8uZmlyc3ROYW1lLGluaXRpYWw6by5pbml0aWFsLHR5cGU6ImFkbWluIixpc0FkbWluOiEwLGlzQm90OiEwLGlzU2VsZjohMX0sdXhTdHlsZTpudWxsPT1pP3ZvaWQgMDppLnV4U3R5bGUsbWV0YWRhdGE6bnVsbD09aT92b2lkIDA6aS5tZXRhZGF0YX0pO3QoKDAscm8uJFopKHtjb252ZXJzYXRpb25JZDphLHBhcnQ6Y30pKTt2YXIgbD0oMCxWci5WTikobi5nZXRTdGF0ZSgpLGEpO3MmJjA9PT11JiZsJiYoMCxWLnNxKSgicmVjZWl2ZWRfZmlyc3Rfc3RyZWFtZWRfdG9rZW4iLHtjbGllbnRfYXNzaWduZWRfdXVpZDpzLHRpbWVzdGFtcDpEYXRlLm5vdygpfSksci50cmFjZXBhcmVudCYmYW8uZi5vblRva2VuUmVjZWl2ZWQoe2V2ZW50RGF0YTpyfSxyLnRyYWNlcGFyZW50KX0pKX0ocixlLG4pO2JyZWFrO2Nhc2UiQWRtaW5Jc1R5cGluZyI6aWYoIXRpKGUpKXRocm93IG5ldyBFcnJvcigiQWRtaW5Jc1R5cGluZyBtZXNzYWdlIG1pc3NpbmcgZGF0YSIpOyFmdW5jdGlvbih0LGUsbil7dmFyIHIsbz1lLmRhdGEuZXZlbnREYXRhLGk9by5jb252ZXJzYXRpb25JZCxhPW8uYWRtaW5JZCx1PW8uYWRtaW5OYW1lLGM9by5hZG1pbkF2YXRhcixsPW8uaGFzRGVmYXVsdEF2YXRhcixmPW8uaXNCb3QsZD1vLmhhc0FJLHA9by5zaG93QXZhdGFyLGg9by5sb2FkaW5nU3RhdHVzLHY9by5jbGllbnRJZCx5PW8uYWNrbm93bGVkZ2VtZW50UGFydCxnPW8ud3JpdGluZ0ZpcnN0TWVzc2FnZSxtPW8udHlwaW5nQXQ7aWYoIWcpaWYodm9pZCAwPT09aHx8LTEhPT1PYmplY3QudmFsdWVzKEFuLnMxKS5pbmRleE9mKGgpKXt2YXIgYj0oMCxlby5MZikobi5nZXRTdGF0ZSgpKSx3PWIucGFydGljaXBhbnQsUz1iLnN0cmVhbWluZ1BhcnQseD12b2lkIDA7eSYmdyYmKHg9T2JqZWN0LmFzc2lnbih7fSwoMCxfLndqKSgoMCxuby5PKSh5KSkse2F1dGhvcjp7aWQ6dy5pZCxhdmF0YXI6dy5hdmF0YXIsZmlyc3ROYW1lOncuZmlyc3ROYW1lLGluaXRpYWw6dy5pbml0aWFsLHR5cGU6ImFkbWluIixpc0FkbWluOiEwLGlzQm90OiEwLGlzU2VsZjohMX0sdXhTdHlsZTpudWxsPT1TP3ZvaWQgMDpTLnV4U3R5bGUsbWV0YWRhdGE6bnVsbD09Uz92b2lkIDA6Uy5tZXRhZGF0YX0pKSx0KCgwLHJvLkJoKShpLHthZG1pbklkOmEsZmlyc3ROYW1lOnUsYXZhdGFyVXJsOkJpKGMsbCksaXNCb3Q6ZixoYXNBSTpkLHNob3dBdmF0YXI6cCxsb2FkaW5nU3RhdHVzOmgsbGFzdEFjdGl2ZUF0Om0/bmV3IERhdGUoMWUzKm0pOm51bGwhPShyPXgpJiZyLmNyZWF0ZWRBdD94LmNyZWF0ZWRBdDpuZXcgRGF0ZSxjbGllbnRJZDp2LGFja25vd2xlZGdlbWVudFBhcnQ6eH0pKX1lbHNle3ZhciBFPW4uZ2V0U3RhdGUoKS5zZXNzaW9uOygwLHMud2QpKCJVbnN1cHBvcnRlZCBsb2FkaW5nU3RhdHVzIHJlY2VpdmVkIGluIGFkbWluSXNUeXBpbmcgZXZlbnQgLSBjb252ZXJzYXRpb25JZDogIitpKyIsIGFwcElkOiAiKyhudWxsPT1FP3ZvaWQgMDpFLmFwcElkKSsiLCBzdGF0dXM6ICIraCl9fShyLGUsbik7YnJlYWs7Y2FzZSJTaG9waWZ5Q2FydFVwZGF0ZWQiOmlmKCF0aShlKSl0aHJvdyBuZXcgRXJyb3IoIlNob3BpZnlDYXJ0VXBkYXRlZCBtZXNzYWdlIG1pc3NpbmcgZGF0YSIpOyFmdW5jdGlvbih0LGUpe3ZhciBuO2lmKG51bGwhPShuPWUuZ2V0U3RhdGUoKS5hcHAuZmVhdHVyZXMpJiZuLmZpbkVjb21tZXJjZVN5bmNDYXJ0KXt2YXIgcj10LmRhdGEuZXZlbnREYXRhLG89ci5jYXJ0VG9rZW4saT1yLmlzTmV3Q2FydDtvJiYoaSYmIWEuQS5yZWFkKCJjYXJ0IikmJmEuQS53cml0ZSgiY2FydCIsbyksJG8oe2NhcnRUb2tlbjpvLGlzTmV3Q2FydDppfSkpfX0oZSxuKTticmVhaztjYXNlIlF1ZXVlUG9zaXRpb25VcGRhdGVkIjppZighdGkoZSkpdGhyb3cgbmV3IEVycm9yKCJRdWV1ZVBvc2l0aW9uVXBkYXRlZCBtZXNzYWdlIG1pc3NpbmcgZGF0YSIpOyFmdW5jdGlvbih0LGUpe3ZhciBuPWUuZGF0YS5ldmVudERhdGE7aWYobil7dmFyIHI9bi5jb252ZXJzYXRpb25JZCxvPW4ucXVldWVQb3NpdGlvblRleHQ7bnVsbCE9ciYmdm9pZCAwIT09byYmIiIhPT1vJiZ0KCgwLG9vLkE5KShTdHJpbmcociksbykpfX0ocixlKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBtZXNzYWdlOiAiK2UubmFtZSl9fWZ1bmN0aW9uIG5pKHQpe3JldHVybiBuaT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sbmkodCl9ZnVuY3Rpb24gcmkoKXtyaT1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gbCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGc/ZTpnLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgTChyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOk8odCxuLHUpfSksYX1mdW5jdGlvbiBmKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWw7dmFyIGQ9InN1c3BlbmRlZFN0YXJ0IixwPSJzdXNwZW5kZWRZaWVsZCIsaD0iZXhlY3V0aW5nIix2PSJjb21wbGV0ZWQiLHk9e307ZnVuY3Rpb24gZygpe31mdW5jdGlvbiBtKCl7fWZ1bmN0aW9uIGIoKXt9dmFyIHc9e307Yyh3LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIF89T2JqZWN0LmdldFByb3RvdHlwZU9mLFM9XyYmXyhfKFQoW10pKSk7UyYmUyE9PW4mJnIuY2FsbChTLGEpJiYodz1TKTt2YXIgeD1iLnByb3RvdHlwZT1nLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpO2Z1bmN0aW9uIEUodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEModCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPWYodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGw9Yy52YWx1ZTtyZXR1cm4gbCYmIm9iamVjdCI9PW5pKGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBPKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT1oKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PXYpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPUEodSxyKTtpZihzKXtpZihzPT09eSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89dixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289aDt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/djpwLGMuYXJnPT09eSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPXYsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBBKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxBKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLHk7dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLHk7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLHkpOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwseSl9ZnVuY3Rpb24gSSh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBrKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBMKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goSSx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBUKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IobmkoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gbS5wcm90b3R5cGU9YixvKHgsImNvbnN0cnVjdG9yIix7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSxvKGIsImNvbnN0cnVjdG9yIix7dmFsdWU6bSxjb25maWd1cmFibGU6ITB9KSxtLmRpc3BsYXlOYW1lPWMoYixzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09bXx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsYik6KHQuX19wcm90b19fPWIsYyh0LHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeCksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sRShDLnByb3RvdHlwZSksYyhDLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1DLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQyhsKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LEUoeCksYyh4LHMsIkdlbmVyYXRvciIpLGMoeCxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMoeCwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1ULEwucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpMLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChrKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MseSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSx5fSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLGsobikseX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztrKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpUKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCkseX19LGV9ZnVuY3Rpb24gb2kodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGlpKHIua2V5KSxyKX19ZnVuY3Rpb24gaWkodCl7dmFyIGU9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9bmkodCl8fCF0KXJldHVybiB0O3ZhciBuPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT1uaShyKSlyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWU/U3RyaW5nOk51bWJlcikodCl9KHQsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT1uaShlKT9lOmUrIiJ9ZnVuY3Rpb24gYWkodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiB1aSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXthaShpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7YWkoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX12YXIgc2k9bnVsbDtmdW5jdGlvbiBjaSgpe3JldHVybiBsaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbGkoKXtyZXR1cm4obGk9dWkocmkoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJpKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoc2kpe3QubmV4dD0yO2JyZWFrfXRocm93IG5ldyBFcnJvcigiQWJseSBjbGllbnQgbXVzdCBiZSBzZXR1cCBiZWZvcmUgY29ubmVjdGluZyIpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsc2kuY29ubmVjdCgpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGZpKCl7dmFyIHQ7bnVsbD09KHQ9c2kpfHx0LmNsb3NlKCl9ZnVuY3Rpb24gZGkoKXt2YXIgdDtyZXR1cm4obnVsbD09KHQ9c2kpP3ZvaWQgMDp0LmlzQ29ubmVjdGVkKXx8ITF9dmFyIHBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgZT10LmNhcHR1cmVFcnJvcixuPXQuc2FmZUNvbnNvbGVFcnJvcixyPXQuaW50ZXJjb21DbGllbnQsbz10LnN0b3JlO3RoaXMucmVhbHRpbWVDbGllbnQ9bnVsbCx0aGlzLmNvbm5lY3Rpb25Qcm9taXNlPXZvaWQgMCx0aGlzLmNvbmZpZz12b2lkIDAsdGhpcy5jaGFubmVsPW51bGwsdGhpcy5jb25uZWN0aW9uTWFuYWdlcj12b2lkIDAsdGhpcy5jYXB0dXJlRXJyb3I9dm9pZCAwLHRoaXMuc2FmZUNvbnNvbGVFcnJvcj12b2lkIDAsdGhpcy5pbnRlcmNvbUNsaWVudD12b2lkIDAsdGhpcy5zdG9yZT12b2lkIDAsdGhpcy5jYXB0dXJlRXJyb3I9ZSx0aGlzLnNhZmVDb25zb2xlRXJyb3I9bix0aGlzLmludGVyY29tQ2xpZW50PXIsdGhpcy5zdG9yZT1vLHRoaXMuY29ubmVjdGlvbk1hbmFnZXI9bmV3IG1vKHtjYXB0dXJlRXJyb3I6ZSxzYWZlQ29uc29sZUVycm9yOm4saW50ZXJjb21DbGllbnQ6cixzdG9yZTpvfSl9dmFyIGUsbixyLG89dC5wcm90b3R5cGU7cmV0dXJuIG8uY29ubmVjdD1mdW5jdGlvbigpe3ZhciB0PXVpKHJpKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByaSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKCF0aGlzLmlzQ29ubmVjdGVkKXt0Lm5leHQ9MjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMjpyZXR1cm4gbnVsbCE9dGhpcy5jb25uZWN0aW9uUHJvbWlzZXx8KHRoaXMuY29ubmVjdGlvblByb21pc2U9dGhpcy5lc3RhYmxpc2hDb25uZWN0aW9uKCkpLHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuY29ubmVjdGlvblByb21pc2UpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksby5jbG9zZT1mdW5jdGlvbigpe3RoaXMucmVhbHRpbWVDbGllbnQmJigoMCxWLm9TKSgiYWJseV9kaXNjb25uZWN0ZWQiLHtkaXNjb25uZWN0X3R5cGU6ImV4cGxpY2l0X2Nsb3NlIn0pLHRoaXMucmVhbHRpbWVDbGllbnQuY2xvc2UoKSx0aGlzLnJlYWx0aW1lQ2xpZW50PW51bGwsdGhpcy5jaGFubmVsPW51bGwsdGhpcy5jb25uZWN0aW9uUHJvbWlzZT12b2lkIDAsdGhpcy5zdG9yZS5kaXNwYXRjaCgoMCxabi5UcCkoWHIuRkwpKSl9LG8uZXN0YWJsaXNoQ29ubmVjdGlvbj1mdW5jdGlvbigpe3ZhciB0PXVpKHJpKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBlLG4scixvO3JldHVybiByaSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnByZXY9MCx0Lm5leHQ9Myx0aGlzLmdldENvbmZpZygpO2Nhc2UgMzp0aGlzLmNvbmZpZz10LnNlbnQsdC5uZXh0PTEwO2JyZWFrO2Nhc2UgNjpyZXR1cm4gdC5wcmV2PTYsdC50MD10LmNhdGNoKDApLHRoaXMucmVwb3J0RXJyb3IodC50MCksdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMTA6cmV0dXJuIHQubmV4dD0xMix0aGlzLmNvbm5lY3Rpb25NYW5hZ2VyLmF0dGVtcHRDb25uZWN0aW9uKHRoaXMuY29uZmlnKTtjYXNlIDEyOmlmKGU9dC5zZW50KXt0Lm5leHQ9MTU7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDE1OmlmKHQucHJldj0xNSxuPWUuY2hhbm5lbHMuZ2V0KHRoaXMuY29uZmlnLmNoYW5uZWwpKXt0Lm5leHQ9MTk7YnJlYWt9dGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gZ2V0IEFibHkgY2hhbm5lbCIpO2Nhc2UgMTk6cmV0dXJuIHI9dGhpcy5jcmVhdGVNZXNzYWdlSGFuZGxlcigpLHQubmV4dD0yMixuLnN1YnNjcmliZShyKTtjYXNlIDIyOmlmKG89dC5zZW50KXt0Lm5leHQ9MjU7YnJlYWt9dGhyb3cgbmV3IEVycm9yKCJBYmx5IHN1YnNjcmlwdGlvbiBmYWlsZWQiKTtjYXNlIDI1OmlmKCFvLnJlYXNvbil7dC5uZXh0PTI3O2JyZWFrfXRocm93IG5ldyBFcnJvcigiQWJseSBzdWJzY3JpcHRpb24gZmFpbGVkOiAiK28ucmVhc29uKTtjYXNlIDI3OnRoaXMuc2V0dXBDb25uZWN0aW9uU3RhdGVMaXN0ZW5lcnMoZSksdGhpcy5zZXR1cENoYW5uZWxTdGF0ZUxpc3RlbmVycyhuKSx0aGlzLnJlYWx0aW1lQ2xpZW50PWUsdGhpcy5jaGFubmVsPW4sdC5uZXh0PTM3O2JyZWFrO2Nhc2UgMzM6dC5wcmV2PTMzLHQudDE9dC5jYXRjaCgxNSksZS5jbG9zZSgpLHRoaXMucmVwb3J0RXJyb3IodC50MSk7Y2FzZSAzNzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzAsNl0sWzE1LDMzXV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLG8uc2V0dXBDb25uZWN0aW9uU3RhdGVMaXN0ZW5lcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LmNvbm5lY3Rpb24ub24oImNvbm5lY3RpbmciLChmdW5jdGlvbigpe2Uuc3RvcmUuZGlzcGF0Y2goKDAsWm4uVHApKFhyLmdLKSl9KSksdC5jb25uZWN0aW9uLm9uKCJjb25uZWN0ZWQiLChmdW5jdGlvbigpeygwLFYub1MpKCJhYmx5X2Nvbm5lY3RlZCIse2Nvbm5lY3Rpb25fdHlwZToicmVjb25uZWN0In0pLGUuc3RvcmUuZGlzcGF0Y2goKDAsWm4uVHApKFhyLmEkKSl9KSksdC5jb25uZWN0aW9uLm9uKCJkaXNjb25uZWN0ZWQiLChmdW5jdGlvbigpeygwLFYub1MpKCJhYmx5X2Rpc2Nvbm5lY3RlZCIse2Rpc2Nvbm5lY3RfdHlwZToibmV0d29yayJ9KSxlLnN0b3JlLmRpc3BhdGNoKCgwLFpuLlRwKShYci53MykpfSkpLHQuY29ubmVjdGlvbi5vbigic3VzcGVuZGVkIiwoZnVuY3Rpb24oKXtlLnN0b3JlLmRpc3BhdGNoKCgwLFpuLlRwKShYci53MykpfSkpLHQuY29ubmVjdGlvbi5vbigiZmFpbGVkIiwoZnVuY3Rpb24oKXtlLnN0b3JlLmRpc3BhdGNoKCgwLFpuLlRwKShYci53MykpfSkpfSxvLnNldHVwQ2hhbm5lbFN0YXRlTGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLnN0b3JlLmRpc3BhdGNoLHI9ZnVuY3Rpb24ocil7dmFyIG89dC5uYW1lLGk9ci5yZXN1bWVkO2Uuc3RvcmUuZGlzcGF0Y2goKDAsWm4ubHgpKHIuY3VycmVudCkpLCgwLHMuWlEpKHtjYXRlZ29yeToiYWJseS1jaGFubmVsIixtZXNzYWdlOiJBYmx5IGNoYW5uZWwgIitvKyIgc3RhdGUgY2hhbmdlZCB0byAiK3IuY3VycmVudCxkYXRhOntyZXN1bWVkOmkscHJldmlvdXM6ci5wcmV2aW91c30sbGV2ZWw6ImluZm8ifSksaXx8V3IoZS5zdG9yZS5nZXRTdGF0ZSgpKSYmKCgwLHMuWlEpKHtjYXRlZ29yeToiYWJseS1jaGFubmVsIixtZXNzYWdlOiJBYmx5IGNoYW5uZWwgcmVjb25uZWN0ZWQgd2l0aG91dCByZXN1bWUgLSBsaWtlbHkgbWlzc2VkIHVwZGF0ZXMgLSBmZXRjaGluZyB1bnJlYWQgY29udmVyc2F0aW9ucyIsZGF0YTp7Y2hhbm5lbE5hbWU6byxyZXN1bWVkOml9LGxldmVsOiJpbmZvIn0pLCgwLFYuc3EpKCJhYmx5UmVjb25uZWN0ZWRHZXR0aW5nQ29udmVyc2F0aW9ucyIpLG4oKDAsJHIuc1gpKF8uQXkpKSl9O3Qub24oImF0dGFjaGVkIixyKSx0Lm9uKCJ1cGRhdGUiLHIpLHQub24oImRldGFjaGVkIiwoZnVuY3Rpb24odCl7ZS5zdG9yZS5kaXNwYXRjaCgoMCxabi5seCkoImRldGFjaGVkIikpLCgwLHMuWlEpKHtjYXRlZ29yeToiYWJseS1jaGFubmVsIixtZXNzYWdlOiJBYmx5IGNoYW5uZWwgZGV0YWNoZWQ6ICIrdC5yZWFzb24sbGV2ZWw6Indhcm5pbmcifSl9KSksdC5vbigic3VzcGVuZGVkIiwoZnVuY3Rpb24odCl7ZS5zdG9yZS5kaXNwYXRjaCgoMCxabi5seCkoInN1c3BlbmRlZCIpKSwoMCxzLlpRKSh7Y2F0ZWdvcnk6ImFibHktY2hhbm5lbCIsbWVzc2FnZToiQWJseSBjaGFubmVsIHN1c3BlbmRlZDogIit0LnJlYXNvbixsZXZlbDoid2FybmluZyJ9KX0pKSx0Lm9uKCJmYWlsZWQiLChmdW5jdGlvbih0KXtlLnN0b3JlLmRpc3BhdGNoKCgwLFpuLmx4KSgiZmFpbGVkIikpLCgwLFYub1MpKCJhYmx5X2NoYW5uZWxfZmFpbGVkIiksKDAscy5aUSkoe2NhdGVnb3J5OiJhYmx5LWNoYW5uZWwiLG1lc3NhZ2U6IkFibHkgY2hhbm5lbCBmYWlsZWQ6ICIrdC5yZWFzb24sbGV2ZWw6ImVycm9yIn0pfSkpfSxvLnJlcG9ydEVycm9yPWZ1bmN0aW9uKHQpe3ZhciBlPSJzdHJpbmciPT10eXBlb2YgdD9uZXcgRXJyb3IodCk6dDtudWxsPT1lJiYoZT1uZXcgRXJyb3IoIkFibHkgY2xpZW50IGNhdWdodCBhIG51bGwgb3IgdW5kZWZpbmVkIGVycm9yIikpLGUgaW5zdGFuY2VvZiBFcnJvcj8odGhpcy5jYXB0dXJlRXJyb3IoZSksdGhpcy5zYWZlQ29uc29sZUVycm9yKGUubWVzc2FnZSkpOih0aGlzLmNhcHR1cmVFcnJvcihuZXcgRXJyb3IoU3RyaW5nKGUpKSksdGhpcy5zYWZlQ29uc29sZUVycm9yKFN0cmluZyhlKSkpfSxvLmdldENvbmZpZz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuc3RvcmUuZ2V0U3RhdGUoKS5zZXNzaW9uO3JldHVybiB0aGlzLmludGVyY29tQ2xpZW50LmdldFJlYWx0aW1lQ29uZmlnKHtzZXNzaW9uOnR9KX0sby5jcmVhdGVNZXNzYWdlSGFuZGxlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIGZ1bmN0aW9uKGUpe3RyeXtlaSh0LmludGVyY29tQ2xpZW50LGUsdC5zdG9yZSl9Y2F0Y2goZSl7dC5yZXBvcnRFcnJvcihlKX19fSxlPXQsKG49W3trZXk6ImlzQ29ubmVjdGVkIixnZXQ6ZnVuY3Rpb24oKXt2YXIgdCxlO3JldHVybiJjb25uZWN0ZWQiPT09KG51bGw9PSh0PXRoaXMucmVhbHRpbWVDbGllbnQpP3ZvaWQgMDp0LmNvbm5lY3Rpb24uc3RhdGUpJiYiYXR0YWNoZWQiPT09KG51bGw9PShlPXRoaXMuY2hhbm5lbCk/dm9pZCAwOmUuc3RhdGUpfX1dKSYmb2koZS5wcm90b3R5cGUsbiksciYmb2koZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpO2Z1bmN0aW9uIGhpKHQpe3JldHVybiBoaT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0saGkodCl9ZnVuY3Rpb24gdmkoKXt2aT1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gbCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGc/ZTpnLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgTChyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOk8odCxuLHUpfSksYX1mdW5jdGlvbiBmKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWw7dmFyIGQ9InN1c3BlbmRlZFN0YXJ0IixwPSJzdXNwZW5kZWRZaWVsZCIsaD0iZXhlY3V0aW5nIix2PSJjb21wbGV0ZWQiLHk9e307ZnVuY3Rpb24gZygpe31mdW5jdGlvbiBtKCl7fWZ1bmN0aW9uIGIoKXt9dmFyIHc9e307Yyh3LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIF89T2JqZWN0LmdldFByb3RvdHlwZU9mLFM9XyYmXyhfKFQoW10pKSk7UyYmUyE9PW4mJnIuY2FsbChTLGEpJiYodz1TKTt2YXIgeD1iLnByb3RvdHlwZT1nLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpO2Z1bmN0aW9uIEUodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEModCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPWYodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGw9Yy52YWx1ZTtyZXR1cm4gbCYmIm9iamVjdCI9PWhpKGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBPKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT1oKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PXYpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPUEodSxyKTtpZihzKXtpZihzPT09eSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89dixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289aDt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/djpwLGMuYXJnPT09eSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPXYsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBBKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxBKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLHk7dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLHk7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLHkpOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwseSl9ZnVuY3Rpb24gSSh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBrKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBMKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goSSx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBUKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IoaGkoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gbS5wcm90b3R5cGU9YixvKHgsImNvbnN0cnVjdG9yIix7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSxvKGIsImNvbnN0cnVjdG9yIix7dmFsdWU6bSxjb25maWd1cmFibGU6ITB9KSxtLmRpc3BsYXlOYW1lPWMoYixzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09bXx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsYik6KHQuX19wcm90b19fPWIsYyh0LHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeCksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sRShDLnByb3RvdHlwZSksYyhDLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1DLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQyhsKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LEUoeCksYyh4LHMsIkdlbmVyYXRvciIpLGMoeCxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMoeCwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1ULEwucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpMLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChrKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MseSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSx5fSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLGsobikseX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztrKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpUKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCkseX19LGV9ZnVuY3Rpb24geWkodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBnaSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXt5aShpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7eWkoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX12YXIgbWk9IkNvbnZlcnNhdGlvblNlZW4iLGJpPSJOZXdDb21tZW50Iix3aT0iQ29udmVyc2F0aW9uUGFydFVwZGF0ZWQiLF9pPSJVc2VyQ29udGVudFNlZW5CeUFkbWluIixTaT0iQWRtaW5Jc1R5cGluZyIseGk9IkNvbnZlcnNhdGlvblBhcnRUb2tlbiIsRWk9Ik1lc3NlbmdlckNhcmRVcGRhdGVkIixDaT0iU3RhcnRUb3VyIixPaT0iTmV3Q29udGVudCIsQWk9IlBpbmdIaW50IixJaT0iQ2hlY2tsaXN0VGFza0NvbXBsZXRlZCIsa2k9IkNoZWNrbGlzdHNSZXNvbHZlSGludCIsTGk9IkZpbkhhbmRvZmZUb1NhbGVzZm9yY2VJbkFwcE1lc3NhZ2luZyIsVGk9IkNvbnZlcnNhdGlvblRpdGxlR2VuZXJhdGVkIixqaT0iT25ib2FyZGluZ1BsYW5VcGRhdGVkIixQaT0iUXVldWVQb3NpdGlvblVwZGF0ZWQiLE5pPXtpbmNyZW1lbnQ6Vi5vUyxjb3VudDpWLnNMLHRpbWluZzpWLlZlfSxNaT17aW5mbzpWLkEyLGVycm9yOlYudW99O2Z1bmN0aW9uIFJpKHQpe2lmKHZvaWQgMCE9PXQpdHJ5e3Quc2h1dGRvd24oKX1jYXRjaCh0KXsoMCxWLnVvKSgic2h1dGRvd25SZWFsdGltZUNsaWVudDogIit0KX19ZnVuY3Rpb24gVWkodCxlKXtpZih2b2lkIDAhPT10KXRyeXtlLmRpc3BhdGNoKCgwLFpuLnVRKShYci5nSykpLHQucmV0cnlDb25uZWN0aW9uKCl9Y2F0Y2godCl7KDAsVi51bykoInJldHJ5UmVhbHRpbWVDbGllbnQ6ICIrdCl9fWZ1bmN0aW9uIHppKHQsZSxuLHIsbyxpLGEsdSxjLGwpe2lmKCFxaShlLG4sYykpcmV0dXJuIHQ7aWYoUmkodCksVmkobikpe3ZhciBmPVhyLkZMO3IuZGlzcGF0Y2goKDAsWm4udVEpKFhyLkZMKSksKDAscy5aUSkoe2NhdGVnb3J5OiJuZXh1cy1jb25uZWN0aW9uIixtZXNzYWdlOiJJbml0aWFsaXNpbmcgbmV3IHJlYWx0aW1lIGNsaWVudCIsZGF0YTp7cmVhbHRpbWVDb25maWc6ZSxuZXdSZWFsdGltZUNvbmZpZzpuLHVzZXJJZENoYW5nZWQ6Y30sbGV2ZWw6ImluZm8ifSk7dmFyIGQ9ZnVuY3Rpb24odCxlLG4scixvLGkpe3ZhciBhO3RyeXthPW5ldyBlKHQuZW5kcG9pbnRzLE1pLE5pLG4scixvLChmdW5jdGlvbigpe30pLHQub3B0aW9ucyxpKX1jYXRjaCh0KXsoMCxWLnVvKSgiY3JlYXRlUmVhbHRpbWVDbGllbnQ6ICIrdCksUmkoYSl9cmV0dXJuIGF9KG4sQnIoKSwoZnVuY3Rpb24oKXtkJiZkLnN1YnNjcmliZVRvQWxsVG9waWNzKCksZj1mdW5jdGlvbih0LGUpeygwLHMuWlEpKHtjYXRlZ29yeToibmV4dXMtY29ubmVjdGlvbiIsbWVzc2FnZToiTmV4dXMgY29ubmVjdGVkIixkYXRhOntwcmV2aW91c0Nvbm5lY3Rpb25TdGF0ZTp0fSxsZXZlbDoiaW5mbyJ9KSx0PT09WHIudzMmJldyKGUuZ2V0U3RhdGUoKSkmJigoMCxzLlpRKSh7Y2F0ZWdvcnk6Im5leHVzLWNvbm5lY3Rpb24iLG1lc3NhZ2U6Ik5leHVzIGNvbm5lY3RlZCAtIGxpa2VseSB0byBoYXZlIG1pc3NlZCB1cGRhdGVzIC0gZmV0Y2hpbmcgdW5yZWFkIGNvbnZlcnNhdGlvbnMiLGRhdGE6e3ByZXZpb3VzQ29ubmVjdGlvblN0YXRlOnR9LGxldmVsOiJpbmZvIn0pLCgwLFYuc3EpKCJuZXh1c1JlY29ubmVjdGVkR2V0dGluZ0NvbnZlcnNhdGlvbnMiKSxIaSgoZnVuY3Rpb24oKXtyZXR1cm4gZS5kaXNwYXRjaCgoMCwkci5zWCkoXy5BeSkpfSkpKTsoMCx5LmhuKSgpfHwoKDAsVi5zcSkoInJlYWxUaW1lQ29ubmVjdGVkIiksKDAseS52USkoITApKTtyZXR1cm4gZS5kaXNwYXRjaCgoMCxabi51USkoWHIuYSQpKSxYci5hJH0oZixyKX0pLChmdW5jdGlvbigpe2Y9ZnVuY3Rpb24odCl7cmV0dXJuKDAscy5aUSkoe2NhdGVnb3J5OiJuZXh1cy1jb25uZWN0aW9uIixtZXNzYWdlOiJOZXh1cyBkaXNjb25uZWN0ZWQiLGxldmVsOiJpbmZvIn0pLHQuZGlzcGF0Y2goKDAsWm4udVEpKFhyLnczKSksWHIudzN9KHIpfSksZ2kodmkoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIGUsbixvLGk7cmV0dXJuIHZpKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoZT1yLmdldFN0YXRlKCksbj1lLnNlc3Npb24pe3QubmV4dD0zO2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixbXSk7Y2FzZSAzOnJldHVybiB0LnByZXY9MywoMCxzLlpRKSh7Y2F0ZWdvcnk6Im5leHVzLWNvbm5lY3Rpb24iLG1lc3NhZ2U6IkZldGNoaW5nIG5leHVzIGNvbmZpZyBmb3IgcmVjb25uZWN0aW9uIixsZXZlbDoiaW5mbyJ9KSx0Lm5leHQ9NyxfLkF5LmdldE5leHVzQ29uZmlnKHtzZXNzaW9uOm59KTtjYXNlIDc6cmV0dXJuIG89dC5zZW50LGk9by5lbmRwb2ludHN8fFtdLCgwLHMuWlEpKHtjYXRlZ29yeToibmV4dXMtY29ubmVjdGlvbiIsbWVzc2FnZToiTmV4dXMgY29uZmlnIGZldGNoZWQgZm9yIHJlY29ubmVjdGlvbiIsZGF0YTp7ZW5kcG9pbnRzOml9LGxldmVsOiJpbmZvIn0pLHQuYWJydXB0KCJyZXR1cm4iLGkpO2Nhc2UgMTM6cmV0dXJuIHQucHJldj0xMyx0LnQwPXQuY2F0Y2goMyksKDAsVi51bykoImdldE5leHVzQ29uZmlnIGZhaWxlZDogIit0LnQwKSx0LmFicnVwdCgicmV0dXJuIixbXSk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzMsMTNdXSl9KSkpLGwpO2lmKGQpe3RyeXshZnVuY3Rpb24odCxlLG4scixvLGksYSx1LGMsbCl7dmFyIGYsZD1lLmdldFN0YXRlKCk7ITAhPT0obnVsbD09ZHx8bnVsbD09KGY9ZC5hcHApfHxudWxsPT0oZj1mLmZlYXR1cmVzKT92b2lkIDA6Zi5uZXh1c0FibHkpP2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj0oMCxGci5zKSgoZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pLDVlMyk7dC5hZGRMaXN0ZW5lcihiaSwoZnVuY3Rpb24odCl7dmFyIG8saT10LGE9aS5ldmVudERhdGEsdT1hLmNvbnZlcnNhdGlvbklkLGM9YS5jcmVhdGVkQnlVc2VySWQsbD1hLmRlbGl2ZXJ5Q2hhbm5lbCxmPWEuY2xpZW50QXNzaWduZWRVdWlkLGQ9YS5jdXN0b21Cb3RTdGF0ZSxwPWEuaXNPcGVyYXRvclBhcnQsaD1pLndlYlNvY2tldEVucXVldWVkQXQ7aWYoIWx8fC0xIT09bC5pbmRleE9mKCJ3ZWIiKSl7dmFyIHYseSxnPWUuZ2V0U3RhdGUoKS51c2VyO2lmKG51bGwhPShvPXQuZXZlbnREYXRhKSYmby5jbXIpKDAsVi5zcSkoIm1pc3NpbmdfcmVwbGllc19uZXdfY29tbWVudF9ldmVudF9yZWNlaXZlZCIse2NsaWVudF9hc3NpZ25lZF91dWlkOm51bGw9PSh2PXQuZXZlbnREYXRhKT92b2lkIDA6di5jbGllbnRBc3NpZ25lZFV1aWQsY29udmVyc2F0aW9uX2lkOm51bGw9PSh5PXQuZXZlbnREYXRhKT92b2lkIDA6eS5jb252ZXJzYXRpb25JZCxkZXN0aW5hdGlvbjp0WyJueC5EZXN0aW5hdGlvbiJdfSk7KDAscy5aUSkoe2NhdGVnb3J5OiJnZXQtY29udmVyc2F0aW9uIixtZXNzYWdlOiJOZXh1cyBOZXcgQ29tbWVudCBldmVudCByZWNlaXZlZCIsZGF0YTp7Y29udmVyc2F0aW9uSWQ6dSxjcmVhdGVkQnlVc2VySWQ6Y30sbGV2ZWw6ImluZm8ifSk7dmFyIG09ZnVuY3Rpb24oKXtyZXR1cm4gZS5kaXNwYXRjaChuKF8uQXksdSx7aXNVcGRhdGluZzohMCxjbGllbnRBc3NpZ25lZFV1aWQ6Zix3ZWJTb2NrZXRFbnF1ZXVlZEF0OmgsY3VzdG9tQm90U3RhdGU6ZCxpc09wZXJhdG9yUGFydDpwLHJlcXVlc3RPcmlnaW46Ik5leHVzIE5ldyBDb21tZW50IixldmVudERhdGE6dC5ldmVudERhdGF9KSl9O2M9PT1nLmlkP3IobSk6bSgpfX0pKX0odCxlLG4pOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj0oMCxGci5zKSgoZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pLDVlMyk7dC5hZGRMaXN0ZW5lcihiaSxnaSh2aSgpLm1hcmsoKGZ1bmN0aW9uIHQobyl7dmFyIGksYSx1LGMsbCxmLGQscCxoLHYseSxnLG0sYix3O3JldHVybiB2aSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKHU9KGE9bykuZXZlbnREYXRhLGM9dS5jb252ZXJzYXRpb25JZCxsPXUuY3JlYXRlZEJ5VXNlcklkLGY9dS5kZWxpdmVyeUNoYW5uZWwsZD11LmNsaWVudEFzc2lnbmVkVXVpZCxwPXUuY3VzdG9tQm90U3RhdGUsaD11LmlzT3BlcmF0b3JQYXJ0LHY9YS53ZWJTb2NrZXRFbnF1ZXVlZEF0LCFmfHwtMSE9PWYuaW5kZXhPZigid2ViIikpe3QubmV4dD01O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSA1OmlmKHk9ZS5nZXRTdGF0ZSgpLGc9eS51c2VyLG51bGwhPShpPW8uZXZlbnREYXRhKSYmaS5jbXImJigwLFYuc3EpKCJtaXNzaW5nX3JlcGxpZXNfbmV3X2NvbW1lbnRfZXZlbnRfcmVjZWl2ZWQiLHtjbGllbnRfYXNzaWduZWRfdXVpZDpudWxsPT0obT1vLmV2ZW50RGF0YSk/dm9pZCAwOm0uY2xpZW50QXNzaWduZWRVdWlkLGNvbnZlcnNhdGlvbl9pZDpudWxsPT0oYj1vLmV2ZW50RGF0YSk/dm9pZCAwOmIuY29udmVyc2F0aW9uSWQsZGVzdGluYXRpb246b1sibnguRGVzdGluYXRpb24iXX0pLCgwLHMuWlEpKHtjYXRlZ29yeToiZ2V0LWNvbnZlcnNhdGlvbiIsbWVzc2FnZToiTmV4dXMgTmV3IENvbW1lbnQgZXZlbnQgcmVjZWl2ZWQgLSBmZXRjaGluZyBjb252ZXJzYXRpb24iLGRhdGE6e2NvbnZlcnNhdGlvbklkOmMsY3JlYXRlZEJ5VXNlcklkOmx9LGxldmVsOiJpbmZvIn0pLHQucHJldj04LCFkaSgpKXt0Lm5leHQ9MTE7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDExOnc9ZnVuY3Rpb24oKXtyZXR1cm4gZS5kaXNwYXRjaChuKF8uQXksYyx7aXNVcGRhdGluZzohMCxjbGllbnRBc3NpZ25lZFV1aWQ6ZCx3ZWJTb2NrZXRFbnF1ZXVlZEF0OnYsY3VzdG9tQm90U3RhdGU6cCxpc09wZXJhdG9yUGFydDpoLHJlcXVlc3RPcmlnaW46Ik5leHVzIE5ldyBDb21tZW50IChBYmx5KSIsZXZlbnREYXRhOm8uZXZlbnREYXRhfSkpfSxsPT09Zy5pZD9yKHcpOncoKSx0Lm5leHQ9MTg7YnJlYWs7Y2FzZSAxNTp0LnByZXY9MTUsdC50MD10LmNhdGNoKDgpLCgwLFYudW8pKCJhZGROZXdDb21tZW50RXZlbnRMaXN0ZW5lcldpdGhBYmx5OiAiK3QudDApO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1s4LDE1XV0pfSkpKSl9KHQsZSxuKTt0LmFkZExpc3RlbmVyKF9pLChmdW5jdGlvbih0KXt2YXIgbj10LmV2ZW50RGF0YS5jb252ZXJzYXRpb25JZDtlLmRpc3BhdGNoKHIobikpfSkpLHQuYWRkTGlzdGVuZXIobWksKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZXZlbnREYXRhLmNvbnZlcnNhdGlvbklkO2UuZGlzcGF0Y2goaShuKSl9KSksdC5hZGRMaXN0ZW5lcihTaSwoZnVuY3Rpb24odCl7dmFyIG4scj10LmV2ZW50RGF0YSxpPXIuY29udmVyc2F0aW9uSWQsYT1yLmFkbWluSWQsdT1yLmFkbWluTmFtZSxjPXIuYWRtaW5BdmF0YXIsbD1yLmhhc0RlZmF1bHRBdmF0YXIsZj1yLmlzQm90LGQ9ci5oYXNBSSxwPXIuc2hvd0F2YXRhcixoPXIubG9hZGluZ1N0YXR1cyx2PXIuY2xpZW50SWQseT1yLmFja25vd2xlZGdlbWVudFBhcnQ7aWYoIXIud3JpdGluZ0ZpcnN0TWVzc2FnZSlpZih2b2lkIDA9PT1ofHwtMSE9PU9iamVjdC52YWx1ZXMoQW4uczEpLmluZGV4T2YoaCkpe3ZhciBnPSgwLGVvLkxmKShlLmdldFN0YXRlKCkpLG09Zy5wYXJ0aWNpcGFudCxiPWcuc3RyZWFtaW5nUGFydCx3PXZvaWQgMDt5JiZtJiYodz1PYmplY3QuYXNzaWduKHt9LCgwLF8ud2opKCgwLG5vLk8pKHkpKSx7YXV0aG9yOntpZDptLmlkLGF2YXRhcjptLmF2YXRhcixmaXJzdE5hbWU6bS5maXJzdE5hbWUsaW5pdGlhbDptLmluaXRpYWwsdHlwZToiYWRtaW4iLGlzQWRtaW46ITAsaXNCb3Q6ITAsaXNTZWxmOiExfSx1eFN0eWxlOm51bGw9PWI/dm9pZCAwOmIudXhTdHlsZSxtZXRhZGF0YTpudWxsPT1iP3ZvaWQgMDpiLm1ldGFkYXRhfSkpLGUuZGlzcGF0Y2gobyhpLHthZG1pbklkOmEsZmlyc3ROYW1lOnUsYXZhdGFyVXJsOkJpKGMsbCksaXNCb3Q6ZixoYXNBSTpkLHNob3dBdmF0YXI6cCxsb2FkaW5nU3RhdHVzOmgsbGFzdEFjdGl2ZUF0Om51bGwhPShuPXcpJiZuLmNyZWF0ZWRBdD93LmNyZWF0ZWRBdDpuZXcgRGF0ZSxjbGllbnRJZDp2LGFja25vd2xlZGdlbWVudFBhcnQ6d30pKX1lbHNle3ZhciBTPWUuZ2V0U3RhdGUoKS5zZXNzaW9uOygwLHMud2QpKCJVbnN1cHBvcnRlZCBsb2FkaW5nU3RhdHVzIHJlY2VpdmVkIGluIGFkbWluSXNUeXBpbmcgZXZlbnQgLSBjb252ZXJzYXRpb25JZDogIitpKyIsIGFwcElkOiAiKyhudWxsPT1TP3ZvaWQgMDpTLmFwcElkKSsiLCBzdGF0dXM6ICIraCl9fSkpLHQuYWRkTGlzdGVuZXIoRWksKGZ1bmN0aW9uKHQpe3ZhciByPXQuZXZlbnREYXRhLmNhcmRVcmksbz0oMCxWci5HbSkoZS5nZXRTdGF0ZSgpKTtvJiYoMCxELml1KShvLHIpJiZlLmRpc3BhdGNoKG4oXy5BeSxvLmlkLHtpc1VwZGF0aW5nOiEwLHJlcXVlc3RPcmlnaW46Ik5leHVzIE1lc3NlbmdlciBjYXJkIHVwZGF0ZSJ9KSl9KSksdC5hZGRMaXN0ZW5lcih3aSwoZnVuY3Rpb24odCl7dmFyIHI9dC5ldmVudERhdGEuY29udmVyc2F0aW9uSWQsbz0oMCxWci5HbSkoZS5nZXRTdGF0ZSgpKTsobnVsbD09bz92b2lkIDA6by5pZCk9PT1TdHJpbmcocikmJmUuZGlzcGF0Y2gobihfLkF5LHIse2lzVXBkYXRpbmc6ITAscmVxdWVzdE9yaWdpbjoiTmV4dXMgQ29udmVyc2F0aW9uIHBhcnQgdXBkYXRlIn0pKX0pKSx0LmFkZExpc3RlbmVyKENpLChmdW5jdGlvbih0KXt2YXIgbj10LmV2ZW50RGF0YS50b3VyLHI9ZS5nZXRTdGF0ZSgpLnVzZXI7KDAsVi5KcikociwicmVjZWl2ZWRfbmV4dXMiLCJ0b3VyIiwibWVzc2VuZ2VyIixudWxsLHt0b3VyX2lkOm4uaWR9KSxyLmlzUHJlc2VudCYmZS5kaXNwYXRjaChhKG4uaWQpKX0pKSx0LmFkZExpc3RlbmVyKE9pLChmdW5jdGlvbih0KXt2YXIgbj10LmV2ZW50RGF0YSxyPW4uZW50aXR5X2lkLG89bi5lbnRpdHlfdHlwZSxpPW4uZXZlbnRfbWV0YWRhdGEsYT1lLmdldFN0YXRlKCkudXNlcjsoMCxWLkpyKShhLCJyZWNlaXZlZF9uZXh1cyIsIm5ld19jb250ZW50IiwibWVzc2VuZ2VyIixudWxsLHtlbnRpdHlfaWQ6cixlbnRpdHlfdHlwZTpvfSksbz09PVFyLncuQkFOTkVSX1ZJRVc/ZS5kaXNwYXRjaCh1KHIsaSkpOm89PT1Rci53LlNVUlZFWV9QUk9HUkVTUyYmZS5kaXNwYXRjaChjKHIsbykpfSkpLHQuYWRkTGlzdGVuZXIoQWksKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5nZXRTdGF0ZSgpLnNlc3Npb247RmkoKGZ1bmN0aW9uKCl7ZS5kaXNwYXRjaChsKF8uQXksdCx3aW5kb3cucGFyZW50LmxvY2F0aW9uLmhyZWYsbnVsbCxudWxsLHt9LCEwLHZvaWQgMCwiYXBpVXBkYXRlIikpfSkpfSkpLHQuYWRkTGlzdGVuZXIoSWksKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZXZlbnREYXRhLHI9bi5jaGVja2xpc3RfaWQsbz1uLmNoZWNrbGlzdF9wcm9ncmVzc19pZCxpPW4udGFza19pZDtlLmRpc3BhdGNoKCgwLFpyLkJkKShyLE51bWJlcihvKSxpKSl9KSksdC5hZGRMaXN0ZW5lcihraSwoZnVuY3Rpb24oKXtGaSgoZnVuY3Rpb24oKXtlLmRpc3BhdGNoKCgwLFpyLm93KSgpKX0pKX0pKSx0LmFkZExpc3RlbmVyKExpLChmdW5jdGlvbih0KXt2YXIgbj1lLmdldFN0YXRlKCkudXNlcixyPXQuZXZlbnREYXRhLG89ci5jb252ZXJzYXRpb25JZCxpPXIuaG9zdG5hbWUsYT1yLm9yZ2FuaXphdGlvbklkLHU9ci51c2VyVmVyaWZpY2F0aW9uRW5hYmxlZDsoMCxWLkpyKShuLCJyZWNlaXZlZF9uZXh1cyIsImhhbmRvdmVyX3RvX3NhbGVzZm9yY2VfaW5fYXBwX21lc3NhZ2luZyIsIm1lc3NlbmdlciIsbnVsbCx7Y29udmVyc2F0aW9uX2lkOm99KTt2YXIgcz1qbyhuKTtlLmRpc3BhdGNoKEpyKHMsaSxvLGEsdSkpfSkpLHQuYWRkTGlzdGVuZXIoVGksKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZXZlbnREYXRhLHI9bi5jb252ZXJzYXRpb25JZCxvPW4udGl0bGU7ZS5kaXNwYXRjaCgoMCxvby54SikocixvKSl9KSksdC5hZGRMaXN0ZW5lcihqaSwoZnVuY3Rpb24odCl7dmFyIG4scj0obnVsbD09KG49dC5ldmVudERhdGEpP3ZvaWQgMDpuLmNvbnZlcnNhdGlvbklkKXx8dm9pZCAwO0ZpKChmdW5jdGlvbigpe3JldHVybiBlLmRpc3BhdGNoKCgwLGlvLlp5KSh7Zm9yY2U6ITAsY29udmVyc2F0aW9uSWQ6cn0pKX0pKX0pKSx0LmFkZExpc3RlbmVyKFBpLChmdW5jdGlvbih0KXt2YXIgbixyLG89bnVsbD09KG49dC5ldmVudERhdGEpP3ZvaWQgMDpuLmNvbnZlcnNhdGlvbklkLGk9bnVsbD09KHI9dC5ldmVudERhdGEpP3ZvaWQgMDpyLnF1ZXVlUG9zaXRpb25UZXh0O251bGwhPW8mJnZvaWQgMCE9PWkmJiIiIT09aSYmZS5kaXNwYXRjaCgoMCxvby5BOSkoU3RyaW5nKG8pLGkpKX0pKTt2YXIgcD1mdW5jdGlvbih0LG4pe2UuZGlzcGF0Y2goKDAscm8uJFopKHtjb252ZXJzYXRpb25JZDp0LHBhcnQ6bn0pKX07dC5hZGRMaXN0ZW5lcih4aSwoZnVuY3Rpb24odCl7dmFyIG49KDAsZW8uTGYpKGUuZ2V0U3RhdGUoKSkscj1uLnBhcnRpY2lwYW50LG89bi5zdHJlYW1pbmdQYXJ0O2lmKHIpe3ZhciBpPXQuZXZlbnREYXRhLGE9aS5jb252ZXJzYXRpb25JZCx1PWkudG9rZW5TZXF1ZW5jZUluZGV4LHM9aS5lMmVNZXRyaWNJZCxjPWkudHJhY2VwYXJlbnQsbD1PYmplY3QuYXNzaWduKHt9LCgwLF8ud2opKCgwLG5vLk8pKHQuZXZlbnREYXRhKSkse2F1dGhvcjp7aWQ6ci5pZCxhdmF0YXI6ci5hdmF0YXIsZmlyc3ROYW1lOnIuZmlyc3ROYW1lLGluaXRpYWw6ci5pbml0aWFsLHR5cGU6ImFkbWluIixpc0FkbWluOiEwLGlzQm90OiEwLGlzU2VsZjohMX0sdXhTdHlsZTpudWxsPT1vP3ZvaWQgMDpvLnV4U3R5bGUsbWV0YWRhdGE6bnVsbD09bz92b2lkIDA6by5tZXRhZGF0YX0pO3AoYSxsKTt2YXIgZj0oMCxWci5WTikoZS5nZXRTdGF0ZSgpLGEpO3MmJjA9PT11JiZmJiYoMCxWLnNxKSgicmVjZWl2ZWRfZmlyc3Rfc3RyZWFtZWRfdG9rZW4iLHtjbGllbnRfYXNzaWduZWRfdXVpZDpzLHRpbWVzdGFtcDpEYXRlLm5vdygpfSksYW8uZi5vblRva2VuUmVjZWl2ZWQodCxjKX19KSksdC5hZGRHbG9iYWxMaXN0ZW5lcigoZnVuY3Rpb24odCl7KDAscy5aUSkoe2NhdGVnb3J5OiJuZXh1cy1jb25uZWN0aW9uIixtZXNzYWdlOiJOZXh1cyBldmVudCByZWNlaXZlZCIsZGF0YTp7ZXZlbnQ6dH0sbGV2ZWw6ImluZm8ifSksZS5kaXNwYXRjaCgoMCxabi5iRSkodC5ldmVudE5hbWUpKX0pKX0oZCxyLG8saSxhLHUsYi5vcyxLci5FMyxZci4kTix0by5vaSl9Y2F0Y2godCl7KDAsVi51bykoImFkZFJlYWx0aW1lTGlzdGVuZXJzOiAiK3QpLFJpKGQpfXJldHVybiBkfX19dmFyIEhpPSgwLEZyLnMpKChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSksNWUzLHtsZWFkaW5nOiEwLHRyYWlsaW5nOiEwfSksRmk9KDAsRnIucykoKGZ1bmN0aW9uKHQpe3JldHVybiB0KCl9KSwxZTMpO2Z1bmN0aW9uIERpKHQpe3ZvaWQgMCE9PXQmJigoMCxzLlpRKSh7Y2F0ZWdvcnk6Im5leHVzLWNvbm5lY3Rpb24iLG1lc3NhZ2U6IlBlcmZvcm1pbmcgbWFudWFsIGhlYWx0aGNoZWNrIixsZXZlbDoiaW5mbyJ9KSx0LnBlcmZvcm1IZWFsdGhDaGVjaygpKX12YXIgQmk9ZnVuY3Rpb24odCxlKXtyZXR1cm4hZSYmdCYmMD09PXQuaW5kZXhPZigiaHR0cCIpP3Q6dm9pZCAwfSxWaT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dCYmQXJyYXkuaXNBcnJheSh0LmVuZHBvaW50cykmJnQuZW5kcG9pbnRzLmxlbmd0aD4wfSxHaT1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gbnVsbD09KGU9KDAsQi5IVikodC5zcGxpdCgiLyIpKSk/dm9pZCAwOmUuc3BsaXQoIi0iKVswXX0scWk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBWaSh0KSYmVmkoZSk/bnx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gR2kodCkhPT1HaShlKX0odC5lbmRwb2ludHNbMF0sZS5lbmRwb2ludHNbMF0pOiFWaSh0KSYmVmkoZSl8fFZpKHQpJiYhVmkoZSl9LFdpPSgwLEdyLk16KSgoZnVuY3Rpb24odCl7cmV0dXJuIHQub3BlcmF0b3J9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQubGFzdENvbXBvc2VyRXZlbnR9KSksS2k9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0LmtleXModCksbj17fTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcj10W2VdLG89ci5kaXNtaXNzZWQsaT1yLnJlYWQ7bltlXT17ZmV0Y2hTdGF0ZToicGFydGlhbCIsZGlzbWlzc2VkOm8scmVhZDppfX0pKSxufSxaaT0hMD09PXBhcmVudC5fX0lOVEVSQ09NX1JFRFVYX0RFVl9UT09MU19fJiZwYXJlbnQuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fQ09NUE9TRV9fP3BhcmVudC5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9DT01QT1NFX18oe3RyYWNlOiExLHRyYWNlTGltaXQ6MjV9KTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdH19LEppPW4oNTk3Nyk7ZnVuY3Rpb24gWWkoKXtyZXR1cm4gWWk9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxZaS5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFFpPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7c2k9bmV3IHBpKHQpfShZaSh7fSx0LHtzdG9yZTplfSkpLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgcixpLGEsdT10KG4pO2lmKGk9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJfREFUQURPR19TWU5USEVUSUNTX0JST1dTRVIiaW4gd2luZG93LGE9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJnZvaWQgMCE9PXdpbmRvdy5sb2NhdGlvbiYmKCJhcHAuaW50ZXJjb20udGVzdCI9PT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWV8fCJpbnRlcmNvbS1qcy50ZXN0Ij09PXdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZXx8LTEhPT13aW5kb3cubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoImxvY2FsX2NsaWVudD10cnVlIikpLGl8fGEpcmV0dXJuIHU7aWYobi50eXBlIT09Ri5KNEMmJm4udHlwZSE9PUYuUndxJiZuLnR5cGUhPT1GLm5RMCYmbi50eXBlIT09by5VYy50eXBlKXJldHVybiB1O3ZhciBzPWUuZ2V0U3RhdGUoKTtpZihuLnR5cGU9PT1GLm5RMClyZXR1cm4gZmkoKSx1O2lmKCEoKG51bGw9PShyPXMuYXBwLmZlYXR1cmVzKT92b2lkIDA6ci5uZXh1c0FibHkpfHwhMSkpcmV0dXJuIHU7aWYobi50eXBlPT09by5VYy50eXBlKXtpZighKDAsaC5EcykocykpcmV0dXJuIHU7dmFyIGM9KDAsSmkuTikocyk7cmV0dXJuIGM9PT1Bbi5jeS5zaHJpbmtlZD8oZmkoKSx1KToocy5hcHAuaXNNZXNzZW5nZXJPcGVuJiZjPT09QW4uY3kudmlzaWJsZSYmY2koKSx1KX1pZihuLnR5cGU9PT1GLko0QylyZXR1cm4oMCxoLkRzKShzKXx8Y2koKSx1O2lmKGZ1bmN0aW9uKHQpe3JldHVybiB0LnR5cGU9PT1GLlJ3cX0obikpe2lmKCFzLmFwcC5pc01lc3Nlbmdlck9wZW4pcmV0dXJuIHU7KDAsaC5Ecykocyk/KDAsSmkuTikocyk9PT1Bbi5jeS52aXNpYmxlJiZjaSgpOmNpKCl9cmV0dXJuIHV9fX19O3ZhciBYaT12b2lkIDAsJGk9dm9pZCAwLHRhPXZvaWQgMDt2YXIgZWE9ZnVuY3Rpb24odCl7dmFyIGU9dC51cGRhdGVSZWFsdGltZUNsaWVudCxuPXQuc2h1dGRvd25SZWFsdGltZUNsaWVudCxyPXQuZ2V0Q29udmVyc2F0aW9uLG89dC51c2VyQ29udGVudFNlZW5CeUFkbWluLGk9dC5hZG1pbklzVHlwaW5nLGE9dC5jb252ZXJzYXRpb25SZWFkRWxzZXdoZXJlLHU9dC5yZXRyeVJlYWx0aW1lQ2xpZW50LHM9dC5wZXJmb3JtSGVhbHRoQ2hlY2s7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24obCl7dmFyIGY9YyhsKSxkPWw7c3dpdGNoKGQudHlwZSl7Y2FzZSBGLlJ3cTp2YXIgcD1kLnVzZXIuYXBwLnJlYWx0aW1lQ29uZmlnLGg9ZC51c2VyLmlkO1hpPWUoWGksJGkscCx0LHIsbyxpLGEsaCE9PXRhLGQudXNlci5yb2xlKSwkaT1wLHRhPWg7YnJlYWs7Y2FzZSBGLnFqUzpuKFhpKSxYaT12b2lkIDAsJGk9dm9pZCAwLHRhPXZvaWQgMDticmVhaztjYXNlIEYub2c4OnUoWGksdCl9aWYoIVhpKXJldHVybiBmO3N3aXRjaChkLnR5cGUpe2Nhc2UgRi5UbVE6WGkuc2VuZEV2ZW50KG1pLHtjb252ZXJzYXRpb25JZDpkLmNvbnZlcnNhdGlvbklkfSk7YnJlYWs7Y2FzZSBGLk5mYjpYaS50aHJvdHRsZVNlbmRFdmVudCgiVXNlcklzVHlwaW5nIix7Y29udmVyc2F0aW9uSWQ6ZC5jb252ZXJzYXRpb25JZH0sITApO2JyZWFrO2Nhc2UgRi5aQno6WGkuc2VuZEV2ZW50KEVpLHtjYXJkVXJpOmQuY2FyZC51cml9KTticmVhaztjYXNlIEYuUmt4OnMoWGkpfXJldHVybiBmfX19fSxuYT13aW5kb3cucGFyZW50LHJhPWZ1bmN0aW9uKHQpe2lmKG5hJiZuYS5pbnRlcmNvbVNldHRpbmdzJiZuYS5pbnRlcmNvbVNldHRpbmdzLmFwcF9pZCl7dmFyIGU9bmEuaW50ZXJjb21TZXR0aW5ncy5hcHBfaWQ7LTE9PT10LmluZGV4T2YoZSkmJih0PXQrIi0iK2UpO3ZhciBuPW5hLmludGVyY29tU2V0dGluZ3MuaGVscF9jZW50ZXJfaWQ7biYmKHQ9dCsiLWhjIituKX1yZXR1cm4gdH0sb2E9ZnVuY3Rpb24odCl7dHJ5e3ZhciBlPVguTC5nZXQodCk7cmV0dXJuIGU/SlNPTi5wYXJzZShlKTpudWxsfWNhdGNoKHQpeygwLFYub1MpKCJoeWRyYXRlX3JlYWRfZXJyb3IiKX19LGlhPWZ1bmN0aW9uKHQsZSl7dHJ5e1guTC5zZXQodCxKU09OLnN0cmluZ2lmeShlKSl9Y2F0Y2godCl7KDAsVi5vUykoImh5ZHJhdGVfd3JpdGVfZXJyb3IiKX19O3ZhciBhYT1mdW5jdGlvbih0KXtyZXR1cm57dHlwZTpGLnIyeCxzdGF0ZTp0fX0sdWE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ImludGVyY29tLXN0YXRlIiksZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksaT0wO2k8cjtpKyspb1tpXT1hcmd1bWVudHNbaV07dmFyIGE9bi5hcHBseSh2b2lkIDAsbyk7aWYoZT1yYShlKSwhKDAsZi5HNSkoKSlyZXR1cm4gYTt2YXIgdT1vYShlKTtpZih1KXt2YXIgcz1hLmdldFN0YXRlKCk7dHJ5e2EuZGlzcGF0Y2goYWEodSkpfWNhdGNoKHQpeygwLFYub1MpKCJoeWRyYXRlX2Vycm9yIiksZnVuY3Rpb24odCl7dHJ5e1guTC5yZW1vdmUodCl9Y2F0Y2godCl7KDAsVi5vUykoImh5ZHJhdGVfcmVtb3ZlX2Vycm9yIil9fShlKSxhLmRpc3BhdGNoKGFhKHMpKX19cmV0dXJuIGEuc3Vic2NyaWJlKChmdW5jdGlvbigpe3ZhciBuPWEuZ2V0U3RhdGUoKTtuLnNlc3Npb24mJmlhKGUsdChuKSl9KSksYX19fSxzYT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49dChlKSxyPWU7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LnR5cGU9PT1GLnFqU30ocikmJigwLGYuRzUpKCkmJnIuY2xlYXJDb29raWVzJiZYLkwucmVtb3ZlKHJhKCJpbnRlcmNvbS1zdGF0ZSIpKSxufX19LGNhPXtwbGF5OmZ1bmN0aW9uKHQpe2lmKHRoaXMuc2hvdWxkUGxheUF1ZGlvKCkpe3ZhciBlPXRoaXMubG9hZCh0KTtpZihlKXt2YXIgbj1lLnBsYXkoKTtuJiZuLmNhdGNoKChmdW5jdGlvbigpe30pKX19fSxwbGF5RmlsZTpmdW5jdGlvbih0KXt0JiZ0aGlzLnNob3VsZFBsYXlBdWRpbygpJiZ0aGlzLnBsYXkobig3MzIzMCkoIi4vIit0KSl9LGxvYWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXVkaW9bdF18fCh0aGlzLmF1ZGlvW3RdPW5ldyBBdWRpbyh0KSksdGhpcy5hdWRpb1t0XX0scGxheU5vdGlmaWNhdGlvbjooMCxGci5zKSgoZnVuY3Rpb24odCl7dGhpcy5wbGF5KG4oNzMyMzApKCIuLyIrdCkpfSksM2UzLHtsZWFkaW5nOiEwLHRyYWlsaW5nOiExfSksc2hvdWxkUGxheUF1ZGlvOmZ1bmN0aW9uKCl7cmV0dXJuIGYuQXkuaGFzQXVkaW9TdXBwb3J0KCkmJiFmLkF5LmlzSU9TKCl9LGF1ZGlvOnt9fSxsYT1uKDYzMzQ5KTtmdW5jdGlvbiBmYSh0KXtyZXR1cm4gZmE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGZhKHQpfXZhciBkYT0icGxheWVkLW5vdGlmaWNhdGlvbnMiLHBhPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBCb29sZWFuKG51bGw9PShlPXQuc2Vzc2lvbik/dm9pZCAwOmUubmV3U2Vzc2lvbil9LGhhPWZ1bmN0aW9uKHQsZSxuKXtpZighZSlyZXR1cm4hMTt2YXIgcj1mdW5jdGlvbih0KXtyZXR1cm4hIXQmJigwLEIueEgpKHQucGFydFR5cGUpfShlKXx8ZnVuY3Rpb24odCxlKXtyZXR1cm4hISh0JiZ0LmF1dGhvciYmdC5hdXRob3IuaXNCb3QpJiZ5YS5oYXMoZSl9KGUsdCl8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuISEodCYmdC5hdXRob3ImJnQuYXV0aG9yLmlzQm90KSYmZ2EuaGFzKGUpfShlLHQpfHxmdW5jdGlvbih0LGUpe3JldHVybiEwPT09KG51bGw9PXQ/dm9pZCAwOnQuaXNGaW5Wb2ljZVBhcnQpfHwoMCxuci5OcCkoZSl9KGUsbik7cmV0dXJuISFyJiYobWEodCxlLmlkKSwhMCl9LHZhPWZ1bmN0aW9uKCl7dmFyIHQ9WC5zLmdldChkYSk7aWYoIXQpcmV0dXJue307dHJ5e3ZhciBlPUpTT04ucGFyc2UodCk7aWYoZSYmIm9iamVjdCI9PT1mYShlKSYmIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9Y2F0Y2godCl7fXJldHVybnt9fSgpLHlhPW5ldyBTZXQsZ2E9bmV3IFNldCxtYT1mdW5jdGlvbih0LGUpe3ZhW1N0cmluZyh0KV09ZSxYLnMuc2V0KGRhLEpTT04uc3RyaW5naWZ5KHZhKSl9LGJhPWZ1bmN0aW9uKHQsZSl7aWYoIXQucGFydHN8fDA9PT10LnBhcnRzLmxlbmd0aClyZXR1cm4hMTt2YXIgbixyLG8saT0oMCxCLkhWKSh0LnBhcnRzKTtyZXR1cm4hIWkmJihuPXQuaWQscj1pLmlkLCEoKG89dmFbU3RyaW5nKG4pXSk9PT1yfHwtMT09PW8pfHxmdW5jdGlvbih0LGUpe3JldHVybiJyZW5vdGlmeWluZyI9PT10Lm5vdGlmaWNhdGlvblN0YXR1cyYmZX0odCxlKSl9LHdhPWZ1bmN0aW9uKHQsZSxuLHIpe3ZvaWQgMD09PXImJihyPSExKTt2YXIgbz0hMTt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXQucGFydHM/KDAsQi5IVikodC5wYXJ0cyk6bnVsbDtiYSh0LGUpJiYobz0hMCksbiYmbWEodC5pZCxuLmlkKX0pKSxvJiYhciYmY2EucGxheU5vdGlmaWNhdGlvbihuKX0sX2E9ZnVuY3Rpb24odCxlKXtzd2l0Y2godCl7Y2FzZSBGLlUyZDpjYXNlIEYuSXRsOnJldHVybiJmYWlsZWQubXAzIjtjYXNlIEYuUHpTOmNhc2UgRi5YV286cmV0dXJuInN1Ym1pdC5tcDMiO2Nhc2UgRi5hbE06cmV0dXJuIm9wZXJhdG9yLm1wMyI7ZGVmYXVsdDpyZXR1cm4gZSYmZS5hdXRob3ImJmUuYXV0aG9yLmlzQm90PyJvcGVyYXRvci5tcDMiOiJub3RpZmljYXRpb24ubXAzIn19LFNhPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9ZShuKSxvPW4saT10LmdldFN0YXRlKCk7aWYoIWkuYXBwLmlzQXVkaW9FbmFibGVkKXJldHVybiByO2lmKCgwLGxhLkFkKShpKS5tdXRlU291bmQpcmV0dXJuIHI7c3dpdGNoKG8udHlwZSl7Y2FzZSBGLlB6UzpjYXNlIEYuWFdvOmNhc2UgRi5VMmQ6Y2FzZSBGLkl0bDpjYS5wbGF5RmlsZShfYShvLnR5cGUpKTticmVhaztjYXNlIEYudnpQOnZhciBhPW8uY29udmVyc2F0aW9uSWQsdT1pLmNvbnZlcnNhdGlvbnMuYnlJZFtTdHJpbmcoYSldO3lhLmRlbGV0ZShhKSx1JiZ3YShbdV0scGEoaSksX2Eoby50eXBlKSk7YnJlYWs7Y2FzZSBGLmZFQzp2YXIgcz1vLGM9cy5jb252ZXJzYXRpb24sbD1zLnNraXBOb3RpZmljYXRpb247aWYoYy5yZWFkKXJldHVybiByO3ZhciBmPSgwLEIuSFYpKGMucGFydHN8fFtdKTtpZighMD09PWwmJmYpcmV0dXJuIG1hKGMuaWQsZi5pZCkscjtpZihoYShjLmlkLGZ8fHZvaWQgMCxpKSlyZXR1cm4gcjt3YShbY10scGEoaSksX2Eoby50eXBlLGZ8fHZvaWQgMCkpO2JyZWFrO2Nhc2UgRi5UJDU6dmFyIGQ9byxwPWQuY29udmVyc2F0aW9uSWQsaD1kLmlzQm90LHY9ZC5oYXNBSTtoJiZ2JiZnYS5hZGQocCk7YnJlYWs7Y2FzZSBGLm1HWDp2YXIgeT0oMCxILkEpKGkpO3dhKHkscGEoaSksX2Eoby50eXBlKSwoMCxuci5OcCkoaSkpO2JyZWFrO2Nhc2UgRi5BZEw6dmFyIGc9byxtPWcuY29udmVyc2F0aW9uSWQsYj1nLnBhcnQsdz1pLmNvbnZlcnNhdGlvbnMuYnlJZFtTdHJpbmcobSldO2lmKCF3fHwhYi5hdXRob3J8fGIuYXV0aG9yLmlzU2VsZilyZXR1cm47aWYoaGEobSxiLGkpKXJldHVybjt3YShbd10scGEoaSksX2Eoby50eXBlLGIpKTticmVhaztjYXNlIEYuYWxNOnZhciBfPW8sUz1fLmNvbnZlcnNhdGlvbklkLHg9Xy5wYXJ0OzA9PT14LnRva2VuU2VxdWVuY2VJbmRleCYmeC5hdXRob3ImJnguYXV0aG9yLmlzQm90JiZnYS5oYXMoUykmJih5YS5hZGQoUyksZ2EuZGVsZXRlKFMpLCgwLG5yLk5wKShpKXx8Y2EucGxheU5vdGlmaWNhdGlvbihfYShvLnR5cGUseCkpKTticmVhaztjYXNlIEYuUndxOnZhciBFPW8udXNlci51bnJlYWREaXNtaXNzZWRDb252ZXJzYXRpb25JZHM7RSYmRS5mb3JFYWNoKChmdW5jdGlvbih0KXttYSh0LC0xKX0pKX1yZXR1cm4gcn19fTtmdW5jdGlvbiB4YSh0KXtyZXR1cm4geGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHhhKHQpfWZ1bmN0aW9uIEVhKCl7RWE9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnP2U6ZyxhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IEwocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpPKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIscD0ic3VzcGVuZGVkWWllbGQiLGg9ImV4ZWN1dGluZyIsdj0iY29tcGxldGVkIix5PXt9O2Z1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gbSgpe31mdW5jdGlvbiBiKCl7fXZhciB3PXt9O2ModyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBfPU9iamVjdC5nZXRQcm90b3R5cGVPZixTPV8mJl8oXyhUKFtdKSkpO1MmJlMhPT1uJiZyLmNhbGwoUyxhKSYmKHc9Uyk7dmFyIHg9Yi5wcm90b3R5cGU9Zy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh3KTtmdW5jdGlvbiBFKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBDKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT14YShsKSYmci5jYWxsKGwsIl9fYXdhaXQiKT9lLnJlc29sdmUobC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUobCkudGhlbigoZnVuY3Rpb24odCl7Yy52YWx1ZT10LGEoYyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShzLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gTyhlLG4scil7dmFyIG89ZDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09aCl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT12KXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1BKHUscik7aWYocyl7aWYocz09PXkpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09ZCl0aHJvdyBvPXYsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPWg7dmFyIGM9ZihlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP3Y6cCxjLmFyZz09PXkpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz12LHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gQShlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsQShlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSx5O3ZhciBpPWYobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCx5O3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCx5KTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLHkpfWZ1bmN0aW9uIEkodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gayh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gTCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEksdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gVChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKHhhKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIG0ucHJvdG90eXBlPWIsbyh4LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSksbyhiLCJjb25zdHJ1Y3RvciIse3ZhbHVlOm0sY29uZmlndXJhYmxlOiEwfSksbS5kaXNwbGF5TmFtZT1jKGIscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PW18fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGIpOih0Ll9fcHJvdG9fXz1iLGModCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHgpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LEUoQy5wcm90b3R5cGUpLGMoQy5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QyxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEMobCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxFKHgpLGMoeCxzLCJHZW5lcmF0b3IiKSxjKHgsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHgsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9VCxMLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TCxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goayksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHkpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSkseX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxrKG4pLHl9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7ayhuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6VChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLHl9fSxlfWZ1bmN0aW9uIENhKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gT2EodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7Q2EoaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe0NhKGkscixvLGEsdSwidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19dmFyIEFhPWZ1bmN0aW9uKHQpe3JldHVybihudWxsPT10P3ZvaWQgMDp0LnR5cGUpPT09Ri5hbE19LElhPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixvO3JldHVybihudWxsIT0ocj1udWxsPT0obz10LmNvbnZlcnNhdGlvbnMuYnlJZFtlXSk/dm9pZCAwOm8ucGFydHMpP3I6W10pLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNsaWVudElkPT09biYmdm9pZCAwIT09dC50b2tlblNlcXVlbmNlSW5kZXh9KSl9LGthPW5ldyBNYXAsTGE9big3NTAxKSxUYT1bXSxqYT1bXTt2YXIgUGE9ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRTdGF0ZTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBuPXQoKSxyPW4udXNlcixvPW4uYXJ0aWNsZSxpPSgwLG1yLlZ5KShuKSxhPSgwLGguRHMpKG4pPyJ0cnVlIjoiZmFsc2UiO3N3aXRjaChlLnR5cGUpe2Nhc2UgRi5yRVg6cmV0dXJuWygwLFYuZm0pKHIsInJlY2VpdmVkIiwibWVzc2FnZSIsIm1lc3NlbmdlciIsImZyb21fbGF1bmNoZXJfZGlzY292ZXJ5X21vZGUiKV07Y2FzZSBGLkhNdTp2YXIgdT17Y29udmVyc2F0aW9uX2lkOmUuY29udmVyc2F0aW9uSWQsY29tbWVudF9pZDplLnBhcnQuaWQsaXNfYXR0YWNobWVudDooMCx5LnM1KShlLnBhcnQuYm9keSksaXNfYW5ub3RhdGVkOmUuaXNBbm5vdGF0ZWRJbWFnZXx8ITEsd2l0aGluX29mZmljZV9ob3VyczooMCx5Lmg2KShlLm9mZmljZUhvdXJzUmVzcG9uc2UpLHRlYW1tYXRlX3N0YXR1czooMCx5Llh6KShlLmxhc3RQYXJ0aWNpcGF0aW5nQWRtaW4pLHRpbWVfc2luY2VfbGFzdF9hY3RpdmVfaW5fbWludXRlczooMCx5LlVXKShlLmxhc3RQYXJ0aWNpcGF0aW5nQWRtaW4pLGZyb21fbWVzc2VuZ2VyX3N1Z2dlc3RlZF9jb250ZW50OmUuZnJvbU1lc3NlbmdlclN1Z2dlc3RlZENvbnRlbnQsZmluX29ubHk6YX07cmV0dXJuWygwLFYuZm0pKHIsInNlbnQiLCJyZXBseSIsIm1lc3NlbmdlciIsImluX2NvbnZlcnNhdGlvbiIsdSldO2Nhc2UgRi5Eekw6dmFyIHM9LTEhPT1bImN1c3RvbV9ib3QiLCJyZXNvbHV0aW9uX2JvdF9hdXRvX3N1Z2dlc3QiXS5pbmRleE9mKGUuY29udmVyc2F0aW9uVHJpZ2dlclR5cGUpLGM9InJlc29sdXRpb25fYm90X2F1dG9fc3VnZ2VzdCI9PT1lLmNvbnZlcnNhdGlvblRyaWdnZXJUeXBlLGw9e2NvbnZlcnNhdGlvbl9pZDplLmNvbnZlcnNhdGlvbi5pZCxpc19hdHRhY2htZW50OigwLHkuczUpKGUuY29udmVyc2F0aW9uLnBhcnRzWzBdLmJvZHkpLGlzX2Fubm90YXRlZDplLmlzQW5ub3RhdGVkSW1hZ2V8fCExLHdpdGhpbl9vZmZpY2VfaG91cnM6KDAseS5oNikoZS5vZmZpY2VIb3Vyc1Jlc3BvbnNlKSxmcm9tX3N1Z2dlc3Rpb246cyxmcm9tX21lc3Nlbmdlcl9zdWdnZXN0ZWRfY29udGVudDpjLHRyaWdnZXJfdHlwZTplLmNvbnZlcnNhdGlvblRyaWdnZXJUeXBlLGZpbl9vbmx5OmEsdmlhOmUudmlhfTtyZXR1cm5bKDAsVi5mbSkociwic2VudCIsIm1lc3NhZ2UiLCJtZXNzZW5nZXIiLCJpbl9uZXdfY29udmVyc2F0aW9uIixsKV07Y2FzZSBGLlBXQzpyZXR1cm5bKDAsVi5mbSkociwic2VudCIsInJlcGx5IiwibWVzc2VuZ2VyIiwiaW5fY29udmVyc2F0aW9uIix7dHlwZToiYXV0b21hdGVkX2xlYWRfcXVhbGlmaWNhdGlvbiIsY29udmVyc2F0aW9uX2lkOmUuY29udmVyc2F0aW9uSWQscGFydF9pZDplLnBhcnRJZCxhdHRyaWJ1dGVfaWRlbnRpZmllcjplLmlkZW50aWZpZXIscmVwbHk6ZS52YWx1ZSxhdHRyaWJ1dGVfdHlwZTplLmlkZW50aWZpZXJUeXBlLGZvcm1fdHlwZTplLmZvcm1UeXBlLGF0dHJpYnV0ZV9pc19jdXN0b21fZGF0YTplLmlzQ3VzdG9tRGF0YX0pXTtjYXNlIEYuVDRrOnJldHVyblsoMCxWLmZtKShyLCJzZW50IiwicmVhY3Rpb24iLGUuaXNGcm9tQ29udmVyc2F0aW9uPyJtZXNzZW5nZXIiOiJpbl9hcHAiLGUuaXNGcm9tQ29udmVyc2F0aW9uPyJpbl9jb252ZXJzYXRpb24iOiJmcm9tX2Z1bGwiLHtjb252ZXJzYXRpb25faWQ6ZS5jb252ZXJzYXRpb25JZH0pXTtjYXNlIEYuU2NROmlmKGUuZnJvbUhvbWVTY3JlZW5TdWdnZXN0aW9ucylyZXR1cm5bXTt2YXIgZj1PYmplY3QuYXNzaWduKHtvd25lcjoiZWR1Y2F0ZSIsYXJ0aWNsZV9pZDplLmFydGljbGVJZCxjb252ZXJzYXRpb25faWQ6ZS5jb252ZXJzYXRpb25JZH0sZS5tZXRyaWNNZXRhZGF0YXx8e30sIWUuZnJvbUJyb3dzZU1vZGUmJnthcnRpY2xlX2NoYW5uZWw6Im1lc3NlbmdlciIsYXJ0aWNsZV9zb3VyY2U6ImNvbnZlcnNhdGlvbiJ9KTtyZXR1cm5bZS5mcm9tQnJvd3NlTW9kZSYmKDAsVi5mbSkociwiY2xpY2tlZCIsTGEucmssTGEucVksIm1lc3NlbmdlciIsZiksISFlLm1ldHJpY01ldGFkYXRhJiYhZS5mcm9tQnJvd3NlTW9kZSYmKDAsVi5xbCkociwidmlld2VkIiwiYXJ0aWNsZSIsImluX2FwcCIsImZyb21fY29udmVyc2F0aW9uIixmKV0uZmlsdGVyKEJvb2xlYW4pO2Nhc2UgRi5fYUo6dmFyIGQ9by5hY3RpdmVBcnRpY2xlLHA9ZCYmZC5yZWFjdGlvbnNSZXBseSYmZC5yZWFjdGlvbnNSZXBseS5yZWFjdGlvblNldFtlLnJlYWN0aW9uSW5kZXhdJiZkLnJlYWN0aW9uc1JlcGx5LnJlYWN0aW9uU2V0W2UucmVhY3Rpb25JbmRleF0uZW1vamk7cmV0dXJuWygwLFYucWwpKHIsInNlbnQiLCJyZWFjdGlvbiIsImluX2FwcCIsIm9uX2FydGljbGUiLHtvd25lcjoiZWR1Y2F0ZSIscmVhY3Rpb246cCxhcnRpY2xlX2lkOmUuYXJ0aWNsZUlkLGNvbnZlcnNhdGlvbl9pZDppfSldO2RlZmF1bHQ6cmV0dXJuW119fShlLG4pLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybigwLFYubm4pKHQpfSkpLCJERVNUUk9ZX1NFU1NJT04iPT09bi50eXBlJiYoVGEuc3BsaWNlKDApLGphLnNwbGljZSgwKSksdChuKX19fSxOYT1uKDcwNDQxKTtmdW5jdGlvbiBNYSh0KXtyZXR1cm4gTWE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LE1hKHQpfWZ1bmN0aW9uIFJhKCl7UmE9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnP2U6ZyxhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IEwocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpPKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIscD0ic3VzcGVuZGVkWWllbGQiLGg9ImV4ZWN1dGluZyIsdj0iY29tcGxldGVkIix5PXt9O2Z1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gbSgpe31mdW5jdGlvbiBiKCl7fXZhciB3PXt9O2ModyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBfPU9iamVjdC5nZXRQcm90b3R5cGVPZixTPV8mJl8oXyhUKFtdKSkpO1MmJlMhPT1uJiZyLmNhbGwoUyxhKSYmKHc9Uyk7dmFyIHg9Yi5wcm90b3R5cGU9Zy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh3KTtmdW5jdGlvbiBFKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBDKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT1NYShsKSYmci5jYWxsKGwsIl9fYXdhaXQiKT9lLnJlc29sdmUobC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUobCkudGhlbigoZnVuY3Rpb24odCl7Yy52YWx1ZT10LGEoYyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShzLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gTyhlLG4scil7dmFyIG89ZDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09aCl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT12KXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1BKHUscik7aWYocyl7aWYocz09PXkpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09ZCl0aHJvdyBvPXYsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPWg7dmFyIGM9ZihlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP3Y6cCxjLmFyZz09PXkpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz12LHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gQShlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsQShlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSx5O3ZhciBpPWYobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCx5O3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCx5KTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLHkpfWZ1bmN0aW9uIEkodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gayh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gTCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEksdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gVChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKE1hKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIG0ucHJvdG90eXBlPWIsbyh4LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSksbyhiLCJjb25zdHJ1Y3RvciIse3ZhbHVlOm0sY29uZmlndXJhYmxlOiEwfSksbS5kaXNwbGF5TmFtZT1jKGIscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PW18fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGIpOih0Ll9fcHJvdG9fXz1iLGModCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHgpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LEUoQy5wcm90b3R5cGUpLGMoQy5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QyxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEMobCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxFKHgpLGMoeCxzLCJHZW5lcmF0b3IiKSxjKHgsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHgsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9VCxMLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TCxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goayksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHkpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSkseX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxrKG4pLHl9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7ayhuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6VChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLHl9fSxlfWZ1bmN0aW9uIFVhKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gemEodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LEhhKHIua2V5KSxyKX19ZnVuY3Rpb24gSGEodCl7dmFyIGU9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9TWEodCl8fCF0KXJldHVybiB0O3ZhciBuPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT1NYShyKSlyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWU/U3RyaW5nOk51bWJlcikodCl9KHQsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT1NYShlKT9lOmUrIiJ9dmFyIEZhPUEoKSgiaW50ZXJjb20uY2xpZW50LW1hdGNoaW5nLmNsaWVudC1tYXRjaC1vYmplY3QuYmFzZSIpLERhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9ydWxlc2V0PXZvaWQgMCx0aGlzLl9wcmVkaWNhdGVDaGFpbj12b2lkIDAsdGhpcy5fcnVsZXNldD10LHRoaXMuX3ByZWRpY2F0ZUNoYWluPW5ldyBOYS5BKHQsKGZ1bmN0aW9uKCl7fSkpfXZhciBlLG4scixvPXQucHJvdG90eXBlO3JldHVybiBvLmdldFJ1bGVzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcnVsZXNldH0sby5nZXRSdWxlc2V0SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcnVsZXNldC5ydWxlc2V0X2lkfSxvLmdldE9iamVjdFR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcnVsZXNldC5ydWxlc2V0X2xpbmtfb2JqZWN0X3R5cGV9LG8uZ2V0U2VyaWFsaXplZE9iamVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ydWxlc2V0LnNlcmlhbGl6ZWRfb2JqZWN0fSxvLmlzTWF0Y2hhYmxlSW5Mb2NhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4hdGhpcy5fcnVsZXNldC5tYXRjaGluZ19sb2NhdGlvbnN8fC0xIT09dGhpcy5fcnVsZXNldC5tYXRjaGluZ19sb2NhdGlvbnMuaW5kZXhPZih0KX0sby5ldmFsdWF0ZVByZWRpY2F0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4hKCF0aGlzLm1hdGNoT25Nb2JpbGVCcm93c2VyKCkmJigwLGYucnIpKCkpJiZ0aGlzLl9wcmVkaWNhdGVDaGFpbi5ldmFsdWF0ZSgpfSxvLmNhblJlbWF0Y2g9ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNpZW50X21hdGNoIj09PXRoaXMuZ2V0UnVsZXNldCgpLnJ1bGVzZXRfbWF0Y2hfYmVoYXZpb3J9LG8ubWF0Y2hPbk1vYmlsZUJyb3dzZXI9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sby5yZWZyZXNoQWN0aXZlTWF0Y2g9ZnVuY3Rpb24odCl7dGhpcy5vblJlZnJlc2hBY3RpdmVNYXRjaCh0aGlzLl9ydWxlc2V0LnNlcmlhbGl6ZWRfb2JqZWN0LHQpfSxvLm1hdGNoPWZ1bmN0aW9uKCl7dmFyIHQsZT0odD1SYSgpLm1hcmsoKGZ1bmN0aW9uIHQoZSl7dmFyIG4scixvLGksYSx1LHM9dGhpcztyZXR1cm4gUmEoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZihGYSgiLm1hdGNoIGNhbGxlZCBbIit0aGlzLmdldE9iamVjdFR5cGUoKSsiXSIsdGhpcy5nZXRSdWxlc2V0KCkpLG49ZS5nZXRTdGF0ZSgpLHI9dGhpcy5nZXRSdWxlc2V0KCksbz10aGlzLm9uUHJlTWF0Y2goZSksdC5wcmV2PTQsYT1fLkF5LnJ1bGVzZXRDb25kaXRpb25TYXRpc2ZpZWQobi5zZXNzaW9uLHIucnVsZXNldF9pZCxyLnJ1bGVzZXRfbGlua19pZCxyLnVzZXJfaWQsci5jb21wYW55X2lkLHIucHJlZGljYXRlcyxyLmNoZWNrcG9pbnRfaWQsci5ub3RpZmljYXRpb25fcmVjb3JkX2lkLHIuZXh0cmFfY29udGV4dCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHMuc2VsZWN0TWF0Y2hPYmplY3QodCl9KSksISh1PXRoaXMuZ2V0U2VyaWFsaXplZE9iamVjdCgpKSl7dC5uZXh0PTEzO2JyZWFrfXJldHVybiB0Lm5leHQ9MTAsUHJvbWlzZS5yZXNvbHZlKHUpO2Nhc2UgMTA6aT10LnNlbnQsdC5uZXh0PTE2O2JyZWFrO2Nhc2UgMTM6cmV0dXJuIHQubmV4dD0xNSxhO2Nhc2UgMTU6aT10LnNlbnQ7Y2FzZSAxNjp0Lm5leHQ9MjE7YnJlYWs7Y2FzZSAxODpyZXR1cm4gdC5wcmV2PTE4LHQudDA9dC5jYXRjaCg0KSx0LmFicnVwdCgicmV0dXJuIiwoMCxWLnVvKSgiQ2FsbCB0byAvbWF0Y2ggZmFpbGVkLCB1bmFibGUgdG8gY29tcGxldGUgY2xpZW50IG1hdGNoIHJ1bGVzZXRJZD0iK3RoaXMuZ2V0UnVsZXNldElkKCkpKTtjYXNlIDIxOnRoaXMub25NYXRjaChpLGUsbyk7Y2FzZSAyMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzQsMThdXSl9KSksZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXtVYShpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7VWEoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksby5zZWxlY3RNYXRjaE9iamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gdH0sby5vblByZU1hdGNoPWZ1bmN0aW9uKHQpe30sby5vbk1hdGNoPWZ1bmN0aW9uKHQsZSxuKXt9LG8ub25SZWZyZXNoQWN0aXZlTWF0Y2g9ZnVuY3Rpb24odCxlKXt9LG8udW5tYXRjaD1mdW5jdGlvbih0KXtGYSgiLnVubWF0Y2ggY2FsbGVkIFsiK3RoaXMuZ2V0T2JqZWN0VHlwZSgpKyJdIix0aGlzLmdldFJ1bGVzZXQoKSksdGhpcy5vblVubWF0Y2godCl9LG8ub25Vbm1hdGNoPWZ1bmN0aW9uKHQpe30sby5zaG91bGRQcm9jZXNzU2VxdWVudGlhbGx5PWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmdldFJ1bGVzZXQoKS5jb250YWluc19sY2FfcHJlZGljYXRlfSxlPXQsbiYmemEoZS5wcm90b3R5cGUsbiksciYmemEoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpO2Z1bmN0aW9uIEJhKHQpe3JldHVybiBCYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sQmEodCl9ZnVuY3Rpb24gVmEodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LEdhKHIua2V5KSxyKX19ZnVuY3Rpb24gR2EodCl7dmFyIGU9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9QmEodCl8fCF0KXJldHVybiB0O3ZhciBuPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT1CYShyKSlyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWU/U3RyaW5nOk51bWJlcikodCl9KHQsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT1CYShlKT9lOmUrIiJ9ZnVuY3Rpb24gcWEodCxlKXtyZXR1cm4gcWE9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSxxYSh0LGUpfXZhciBXYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfSFmdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlJiZxYSh0LGUpfShlLHQpO3ZhciBuLHIsbyxpPWUucHJvdG90eXBlO3JldHVybiBpLnNlbGVjdE1hdGNoT2JqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiB0LmJhbm5lcn0saS5vbk1hdGNoPWZ1bmN0aW9uKHQsZSl7aWYodCl7dmFyIG49Xy5BeS5idWlsZEJhbm5lcih0KSxyPWUuZ2V0U3RhdGUoKS5iYW5uZXJzO3I9ci5jb25jYXQobiksZS5kaXNwYXRjaCgoMCxLci5ISikocikpfX0saS5jYW5SZW1hdGNoPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGkub25Vbm1hdGNoPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10LmdldFN0YXRlKCkuYmFubmVycztuPW4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ydWxlc2V0X2lkIT09ZS5nZXRSdWxlc2V0KCkucnVsZXNldF9pZH0pKSx0LmRpc3BhdGNoKCgwLEtyLkhKKShuKSl9LG49ZSxyJiZWYShuLnByb3RvdHlwZSxyKSxvJiZWYShuLG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLG59KERhKTtmdW5jdGlvbiBLYSh0KXtyZXR1cm4gS2E9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LEthKHQpfWZ1bmN0aW9uIFphKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxKYShyLmtleSkscil9fWZ1bmN0aW9uIEphKHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPUthKHQpfHwhdClyZXR1cm4gdDt2YXIgbj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bil7dmFyIHI9bi5jYWxsKHQsZXx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9S2EocikpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHQpfSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09S2EoZSk/ZTplKyIifWZ1bmN0aW9uIFlhKHQsZSl7cmV0dXJuIFlhPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0sWWEodCxlKX12YXIgUWE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc30hZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZSYmWWEodCxlKX0oZSx0KTt2YXIgbixyLG8saT1lLnByb3RvdHlwZTtyZXR1cm4gaS5zZWxlY3RNYXRjaE9iamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gdC50b3VyfSxpLm1hdGNoT25Nb2JpbGVCcm93c2VyPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGkub25NYXRjaD1mdW5jdGlvbih0LGUpe2UuZGlzcGF0Y2goKDAsYi5UYykoXy5BeS5idWlsZFRvdXIodCkpKX0sbj1lLHImJlphKG4ucHJvdG90eXBlLHIpLG8mJlphKG4sbyksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksbn0oRGEpLFhhPW4oMjU4MzYpLCRhPW4oMjg4MjQpO2Z1bmN0aW9uIHR1KHQpe3JldHVybiB0dT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sdHUodCl9ZnVuY3Rpb24gZXUoKXtldT1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gbCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGc/ZTpnLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgTChyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOk8odCxuLHUpfSksYX1mdW5jdGlvbiBmKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWw7dmFyIGQ9InN1c3BlbmRlZFN0YXJ0IixwPSJzdXNwZW5kZWRZaWVsZCIsaD0iZXhlY3V0aW5nIix2PSJjb21wbGV0ZWQiLHk9e307ZnVuY3Rpb24gZygpe31mdW5jdGlvbiBtKCl7fWZ1bmN0aW9uIGIoKXt9dmFyIHc9e307Yyh3LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIF89T2JqZWN0LmdldFByb3RvdHlwZU9mLFM9XyYmXyhfKFQoW10pKSk7UyYmUyE9PW4mJnIuY2FsbChTLGEpJiYodz1TKTt2YXIgeD1iLnByb3RvdHlwZT1nLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpO2Z1bmN0aW9uIEUodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEModCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPWYodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGw9Yy52YWx1ZTtyZXR1cm4gbCYmIm9iamVjdCI9PXR1KGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBPKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT1oKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PXYpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPUEodSxyKTtpZihzKXtpZihzPT09eSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89dixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289aDt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/djpwLGMuYXJnPT09eSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPXYsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBBKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxBKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLHk7dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLHk7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLHkpOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwseSl9ZnVuY3Rpb24gSSh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBrKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBMKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goSSx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBUKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IodHUoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gbS5wcm90b3R5cGU9YixvKHgsImNvbnN0cnVjdG9yIix7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSxvKGIsImNvbnN0cnVjdG9yIix7dmFsdWU6bSxjb25maWd1cmFibGU6ITB9KSxtLmRpc3BsYXlOYW1lPWMoYixzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09bXx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsYik6KHQuX19wcm90b19fPWIsYyh0LHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeCksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sRShDLnByb3RvdHlwZSksYyhDLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1DLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQyhsKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LEUoeCksYyh4LHMsIkdlbmVyYXRvciIpLGMoeCxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMoeCwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1ULEwucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpMLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChrKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MseSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSx5fSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLGsobikseX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztrKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpUKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCkseX19LGV9ZnVuY3Rpb24gbnUodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBydSh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsb3Uoci5rZXkpLHIpfX1mdW5jdGlvbiBvdSh0KXt2YXIgZT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT10dSh0KXx8IXQpcmV0dXJuIHQ7dmFyIG49dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciByPW4uY2FsbCh0LGV8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR1KHIpKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09ZT9TdHJpbmc6TnVtYmVyKSh0KX0odCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR1KGUpP2U6ZSsiIn1mdW5jdGlvbiBpdSh0LGUpe3JldHVybiBpdT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9LGl1KHQsZSl9dmFyIGF1PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9IWZ1bmN0aW9uKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGUmJml1KHQsZSl9KGUsdCk7dmFyIG4scixvLGk9ZS5wcm90b3R5cGU7cmV0dXJuIGkuc2VsZWN0TWF0Y2hPYmplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29tcG9zZXJTdWdnZXN0aW9uc30saS5vbk1hdGNoPWZ1bmN0aW9uKCl7dmFyIHQsZT0odD1ldSgpLm1hcmsoKGZ1bmN0aW9uIHQoZSxuKXt2YXIgcixvLGksYSx1LHMsYztyZXR1cm4gZXUoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZigocj0oMCwkYS4kKShuLmdldFN0YXRlKCkpKSYmIShyLnByaW9yaXR5PmUucHJpb3JpdHkpKXt0Lm5leHQ9MTI7YnJlYWt9aWYoaT1uLmdldFN0YXRlKCksYT1lLndlbGNvbWVQYXJ0cyx1PWUudXhTdHlsZSxudWxsPT0obz1pLm5ld0NvbnZlcnNhdGlvbil8fG51bGw9PShvPW8uY29tcG9zZXJTdGF0ZSl8fCFvLmRpc2FibGVkfHxudWxsIT1lJiZlLmNvbXBvc2VyRGlzYWJsZWR8fG4uZGlzcGF0Y2goKDAscm8uTiQpKHt2aXNpYmxlOiEwfSkpLG51bGwhPXUmJnUud2VsY29tZVBhcnRzV2l0aFN1Z2dlc3Rpb25zfHxudWxsPT1hfHwhYS5sZW5ndGg/bi5kaXNwYXRjaCgoMCxYYS5BaykoZS5zdWdnZXN0aW9uUGFydHMsITApKTpuLmRpc3BhdGNoKCgwLHJvLnlRKShhLCEwKSksbnVsbD09YXx8IWEubGVuZ3RoKXt0Lm5leHQ9MTI7YnJlYWt9aWYocz1hLmZsYXRNYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJvZHl8fFtdfSkpLCEoKGM9cy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0JiYibWVzc2VuZ2VyQ2FyZCI9PT10LnR5cGV9KSkpLmxlbmd0aD4wKSl7dC5uZXh0PTEyO2JyZWFrfXJldHVybiB0Lm5leHQ9MTIsUHJvbWlzZS5hbGwoYy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuLmRpc3BhdGNoKCgwLE1vLl9EKShfLkF5LHQsITEpKX0pKSk7Y2FzZSAxMjpuLmRpc3BhdGNoKCgwLGcuX0wpKGUpKTtjYXNlIDEzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSksZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXtudShpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7bnUoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfSk7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxpLm9uVW5tYXRjaD1mdW5jdGlvbih0KXt0LmRpc3BhdGNoKCgwLGcuTjcpKHRoaXMuZ2V0UnVsZXNldElkKCkpKX0saS5zaG91bGRQcm9jZXNzU2VxdWVudGlhbGx5PWZ1bmN0aW9uKCl7cmV0dXJuITF9LG49ZSxyJiZydShuLnByb3RvdHlwZSxyKSxvJiZydShuLG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLG59KERhKSx1dT1uKDU0MTAxKTtmdW5jdGlvbiBzdSh0KXtyZXR1cm4gc3U9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHN1KHQpfWZ1bmN0aW9uIGN1KHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxsdShyLmtleSkscil9fWZ1bmN0aW9uIGx1KHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPXN1KHQpfHwhdClyZXR1cm4gdDt2YXIgbj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bil7dmFyIHI9bi5jYWxsKHQsZXx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9c3UocikpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHQpfSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09c3UoZSk/ZTplKyIifWZ1bmN0aW9uIGZ1KHQsZSl7cmV0dXJuIGZ1PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0sZnUodCxlKX12YXIgZHU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc30hZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZSYmZnUodCxlKX0oZSx0KTt2YXIgbixyLG8saT1lLnByb3RvdHlwZTtyZXR1cm4gaS5zZWxlY3RNYXRjaE9iamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5hbnN3ZXJib3RQcmVkaWN0aXZlQ29udGV4dHN9LGkub25NYXRjaD1mdW5jdGlvbih0LGUpe2UuZGlzcGF0Y2goKDAsdXUueSkodCkpfSxpLm9uVW5tYXRjaD1mdW5jdGlvbih0KXt0LmRpc3BhdGNoKCgwLHV1LnkpKG51bGwpKX0saS5zaG91bGRQcm9jZXNzU2VxdWVudGlhbGx5PWZ1bmN0aW9uKCl7cmV0dXJuITF9LG49ZSxyJiZjdShuLnByb3RvdHlwZSxyKSxvJiZjdShuLG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLG59KERhKSxwdT1uKDIzNzEyKTtmdW5jdGlvbiBodSh0KXtyZXR1cm4gaHU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGh1KHQpfWZ1bmN0aW9uIHZ1KHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCx5dShyLmtleSkscil9fWZ1bmN0aW9uIHl1KHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPWh1KHQpfHwhdClyZXR1cm4gdDt2YXIgbj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bil7dmFyIHI9bi5jYWxsKHQsZXx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9aHUocikpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHQpfSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09aHUoZSk/ZTplKyIifWZ1bmN0aW9uIGd1KHQsZSl7cmV0dXJuIGd1PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0sZ3UodCxlKX12YXIgbXU9QSgpKCJpbnRlcmNvbS5jbGllbnQtbWF0Y2gtb2JqZWN0Lm1lc3Nlbmdlci10cmlnZ2VyIiksYnU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe2Zvcih2YXIgZSxuPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkobiksbz0wO288bjtvKyspcltvXT1hcmd1bWVudHNbb107cmV0dXJuKGU9dC5jYWxsLmFwcGx5KHQsW3RoaXNdLmNvbmNhdChyKSl8fHRoaXMpLl9ub2RlPXZvaWQgMCxlfSFmdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlJiZndSh0LGUpfShlLHQpO3ZhciBuLHIsbyxpPWUucHJvdG90eXBlO3JldHVybiBpLnNlbGVjdE1hdGNoT2JqZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGkub25NYXRjaD1mdW5jdGlvbih0LGUpe3ZhciBuO3RoaXMuX25vZGU9bnVsbCE9KG49dGhpcy5fZmluZERPTU5vZGUodCkpP246dm9pZCAwLGUuZGlzcGF0Y2goKDAscHUuRSQpKHQsXy5BeSkpfSxpLm9uVW5tYXRjaD1mdW5jdGlvbih0KXt0LmRpc3BhdGNoKCgwLHB1Lms2KSh0aGlzLm1lc3NlbmdlclRyaWdnZXJJZCgpKSl9LGkub25SZWZyZXNoQWN0aXZlTWF0Y2g9ZnVuY3Rpb24odCxlKXt0aGlzLl9zaG91bGRSZWZyZXNoQWN0aXZlTWF0Y2goKSYmKG11KCJUcmlnZ2VySWQ9Iit0LmlkKyIgKCIrdC5zZWxlY3RvcisiKSBpcyBtaXNzaW5nIGZyb20gdGhlIHBhZ2UsIHJlLWF0dGFjaGluZyBsaXN0ZW5lciIpLHRoaXMub25Vbm1hdGNoKGUpLHRoaXMub25NYXRjaCh0LGUpKX0saS5zaG91bGRQcm9jZXNzU2VxdWVudGlhbGx5PWZ1bmN0aW9uKCl7cmV0dXJuITF9LGkubWVzc2VuZ2VyVHJpZ2dlcklkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0U2VyaWFsaXplZE9iamVjdCgpLmlkfSxpLl9zaG91bGRSZWZyZXNoQWN0aXZlTWF0Y2g9ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbih0aGlzLl9ub2RlJiYhdGhpcy5fZG9jdW1lbnRDb250YWlucyh0aGlzLl9ub2RlKSl9LGkuX2ZpbmRET01Ob2RlPWZ1bmN0aW9uKHQpe3JldHVybiB3aW5kb3cucGFyZW50LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodC5zZWxlY3Rvcil9LGkuX2RvY3VtZW50Q29udGFpbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuY29udGFpbnM/d2luZG93LnBhcmVudC5kb2N1bWVudC5jb250YWlucyh0KTp3aW5kb3cucGFyZW50LmRvY3VtZW50LmJvZHkuY29udGFpbnModCl9LG49ZSxyJiZ2dShuLnByb3RvdHlwZSxyKSxvJiZ2dShuLG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLG59KERhKTtmdW5jdGlvbiB3dSh0KXtyZXR1cm4gd3U9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHd1KHQpfWZ1bmN0aW9uIF91KHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxTdShyLmtleSkscil9fWZ1bmN0aW9uIFN1KHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPXd1KHQpfHwhdClyZXR1cm4gdDt2YXIgbj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bil7dmFyIHI9bi5jYWxsKHQsZXx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9d3UocikpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHQpfSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09d3UoZSk/ZTplKyIifWZ1bmN0aW9uIHh1KHQsZSl7cmV0dXJuIHh1PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0seHUodCxlKX12YXIgRXU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc30hZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZSYmeHUodCxlKX0oZSx0KTt2YXIgbixyLG8saT1lLnByb3RvdHlwZTtyZXR1cm4gaS5zZWxlY3RNYXRjaE9iamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5jaGF0fSxpLm9uTWF0Y2g9ZnVuY3Rpb24odCxlKXt0JiZlLmRpc3BhdGNoKCgwLHJvLkZvKShfLkF5LCgwLF8ueXMpKHQpKSl9LG49ZSxyJiZfdShuLnByb3RvdHlwZSxyKSxvJiZfdShuLG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLG59KERhKTtmdW5jdGlvbiBDdSh0KXtyZXR1cm4gQ3U9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LEN1KHQpfWZ1bmN0aW9uIE91KHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxBdShyLmtleSkscil9fWZ1bmN0aW9uIEF1KHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPUN1KHQpfHwhdClyZXR1cm4gdDt2YXIgbj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bil7dmFyIHI9bi5jYWxsKHQsZXx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9Q3UocikpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHQpfSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09Q3UoZSk/ZTplKyIifWZ1bmN0aW9uIEl1KHQsZSl7cmV0dXJuIEl1PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0sSXUodCxlKX12YXIga3U9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc30hZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZSYmSXUodCxlKX0oZSx0KTt2YXIgbixyLG8saT1lLnByb3RvdHlwZTtyZXR1cm4gaS5zZWxlY3RNYXRjaE9iamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5jdXN0b21Cb3R9LGkub25NYXRjaD1mdW5jdGlvbih0LGUpe3QmJmUuZGlzcGF0Y2goKDAscm8uRm8pKF8uQXksKDAsXy55cykodCkpKX0sbj1lLHImJk91KG4ucHJvdG90eXBlLHIpLG8mJk91KG4sbyksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksbn0oRGEpO2Z1bmN0aW9uIEx1KHQpe3JldHVybiBMdT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sTHUodCl9ZnVuY3Rpb24gVHUodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGp1KHIua2V5KSxyKX19ZnVuY3Rpb24ganUodCl7dmFyIGU9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9THUodCl8fCF0KXJldHVybiB0O3ZhciBuPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT1MdShyKSlyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWU/U3RyaW5nOk51bWJlcikodCl9KHQsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT1MdShlKT9lOmUrIiJ9ZnVuY3Rpb24gUHUodCxlKXtyZXR1cm4gUHU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSxQdSh0LGUpfXZhciBOdT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfSFmdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlJiZQdSh0LGUpfShlLHQpO3ZhciBuLHIsbyxpPWUucHJvdG90eXBlO3JldHVybiBpLnNlbGVjdE1hdGNoT2JqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiB0LnBvc3R9LGkub25NYXRjaD1mdW5jdGlvbih0LGUpe3QmJmUuZGlzcGF0Y2goKDAscm8uRm8pKF8uQXksKDAsXy55cykodCkpKX0sbj1lLHImJlR1KG4ucHJvdG90eXBlLHIpLG8mJlR1KG4sbyksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksbn0oRGEpO2Z1bmN0aW9uIE11KHQpe3JldHVybiBNdT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sTXUodCl9ZnVuY3Rpb24gUnUodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFV1KHIua2V5KSxyKX19ZnVuY3Rpb24gVXUodCl7dmFyIGU9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9TXUodCl8fCF0KXJldHVybiB0O3ZhciBuPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT1NdShyKSlyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWU/U3RyaW5nOk51bWJlcikodCl9KHQsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT1NdShlKT9lOmUrIiJ9ZnVuY3Rpb24genUodCxlKXtyZXR1cm4genU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSx6dSh0LGUpfXZhciBIdT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfSFmdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlJiZ6dSh0LGUpfShlLHQpO3ZhciBuLHIsbyxpPWUucHJvdG90eXBlO3JldHVybiBpLnNlbGVjdE1hdGNoT2JqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiB0LnN1cnZleX0saS5vbk1hdGNoPWZ1bmN0aW9uKHQsZSl7aWYodCl7dmFyIG49KDAsem8uSGQpKHQpO2UuZGlzcGF0Y2goKDAsWXIud2opKG4pKX19LG49ZSxyJiZSdShuLnByb3RvdHlwZSxyKSxvJiZSdShuLG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLG59KERhKTtmdW5jdGlvbiBGdSh0KXtyZXR1cm4gRnU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LEZ1KHQpfWZ1bmN0aW9uIER1KHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxCdShyLmtleSkscil9fWZ1bmN0aW9uIEJ1KHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPUZ1KHQpfHwhdClyZXR1cm4gdDt2YXIgbj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bil7dmFyIHI9bi5jYWxsKHQsZXx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9RnUocikpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHQpfSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09RnUoZSk/ZTplKyIifWZ1bmN0aW9uIFZ1KHQsZSl7cmV0dXJuIFZ1PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0sVnUodCxlKX12YXIgR3U9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc30hZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZSYmVnUodCxlKX0oZSx0KTt2YXIgbixyLG8saT1lLnByb3RvdHlwZTtyZXR1cm4gaS5zZWxlY3RNYXRjaE9iamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5zZXJpZXNDb25kaXRpb259LGkub25NYXRjaD1mdW5jdGlvbih0LGUpe3ZhciBuPWUuZ2V0U3RhdGUoKS5zZXNzaW9uO2UuZGlzcGF0Y2goKDAsdG8ub2kpKF8uQXksbix3aW5kb3cucGFyZW50LmxvY2F0aW9uLmhyZWYsbnVsbCxudWxsLHt9LCEwLHZvaWQgMCwiYXBpVXBkYXRlIikpfSxuPWUsciYmRHUobi5wcm90b3R5cGUsciksbyYmRHUobixvKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxufShEYSk7ZnVuY3Rpb24gcXUodCl7cmV0dXJuIHF1PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxxdSh0KX1mdW5jdGlvbiBXdSh0KXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gS3UodCl9KHQpfHxmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10WyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20odCl9KHQpfHxmdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gS3UodCxlKTt2YXIgbj17fS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/S3UodCxlKTp2b2lkIDB9fSh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBLdSh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gWnUodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LEp1KHIua2V5KSxyKX19ZnVuY3Rpb24gSnUodCl7dmFyIGU9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9cXUodCl8fCF0KXJldHVybiB0O3ZhciBuPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT1xdShyKSlyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWU/U3RyaW5nOk51bWJlcikodCl9KHQsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT1xdShlKT9lOmUrIiJ9ZnVuY3Rpb24gWXUodCxlKXtyZXR1cm4gWXU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSxZdSh0LGUpfXZhciBRdT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfSFmdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlJiZZdSh0LGUpfShlLHQpO3ZhciBuLHIsbyxpPWUucHJvdG90eXBlO3JldHVybiBpLnNlbGVjdE1hdGNoT2JqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiB0LmNoZWNrbGlzdH0saS5vbk1hdGNoPWZ1bmN0aW9uKHQsZSl7aWYodCl7dmFyIG49ZS5nZXRTdGF0ZSgpLmNoZWNrbGlzdHN8fFtdO2UuZGlzcGF0Y2goKDAsWnIuWF8pKF8uQXkuYnVpbGRDaGVja2xpc3RzKFtdLmNvbmNhdChmdW5jdGlvbih0LGUsbil7aWYoZSYmIUFycmF5LmlzQXJyYXkoZSkmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ZhciByPWUubGVuZ3RoO3JldHVybiBLdShlLHZvaWQgMCE9PW4mJm48cj9uOnIpfXJldHVybiB0KGUsbil9KFd1LG4pLFt0XSkpKSl9fSxuPWUsciYmWnUobi5wcm90b3R5cGUsciksbyYmWnUobixvKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxufShEYSk7ZnVuY3Rpb24gWHUodCl7cmV0dXJuIFh1PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxYdSh0KX1mdW5jdGlvbiAkdSh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsdHMoci5rZXkpLHIpfX1mdW5jdGlvbiB0cyh0KXt2YXIgZT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT1YdSh0KXx8IXQpcmV0dXJuIHQ7dmFyIG49dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciByPW4uY2FsbCh0LGV8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPVh1KHIpKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09ZT9TdHJpbmc6TnVtYmVyKSh0KX0odCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PVh1KGUpP2U6ZSsiIn1mdW5jdGlvbiBlcyh0LGUpe3JldHVybiBlcz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9LGVzKHQsZSl9dmFyIG5zPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9IWZ1bmN0aW9uKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGUmJmVzKHQsZSl9KGUsdCk7dmFyIG4scixvLGk9ZS5wcm90b3R5cGU7cmV0dXJuIGkuc2VsZWN0TWF0Y2hPYmplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQubnVkZ2V9LGkub25NYXRjaD1mdW5jdGlvbih0LGUpe2lmKHQmJiFlLmdldFN0YXRlKCkubnVkZ2Upe3RyeXt2YXIgbj1YLnMuZ2V0KCJ2aWV3ZWQtbnVkZ2VzIik7aWYoLTEhPT0obj9KU09OLnBhcnNlKG4pOltdKS5pbmRleE9mKHQuaWQpKXJldHVybn1jYXRjaCh0KXt9dmFyIHI9KDAsem8uX0opKHQpO2UuZGlzcGF0Y2goZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6Ri5fTDcsbnVkZ2U6dH19KHIpKX19LGkuc2hvdWxkUHJvY2Vzc1NlcXVlbnRpYWxseT1mdW5jdGlvbigpe3JldHVybiEwfSxuPWUsciYmJHUobi5wcm90b3R5cGUsciksbyYmJHUobixvKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxufShEYSk7dmFyIHJzPW4oMTA2Nyksb3M9QSgpKCJpbnRlcmNvbS5jbGllbnQtbWF0Y2hpbmcubWF0Y2hlcy1maWx0ZXJzLmZpbHRlci1vdXRib3VuZC1ib3RzIik7ZnVuY3Rpb24gaXModCxlKXt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gdC5wb3NpdGl2ZU1hdGNoZXMuZmlsdGVyKGFzKX0odCk7aWYoMCE9PW4ubGVuZ3RoKWlmKHQucG9zaXRpdmVNYXRjaGVzPXQucG9zaXRpdmVNYXRjaGVzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIWFzKHQpfSkpLGUudXNlci5wcmV2ZW50TXVsdGlwbGVJbmJvdW5kQ29udmVyc2F0aW9uJiYoMCxycy5BKShlKSlvcygiU2tpcHBpbmcgb3V0Ym91bmQgYm90IG1hdGNoIGluIG9yZGVyIHRvIHByZXZlbnQgbXVsdGlwbGUgaW5ib3VuZCBjb252ZXJzYXRpb25zIik7ZWxzZXt2YXIgcj1uWzBdO3QucG9zaXRpdmVNYXRjaGVzLnB1c2gocil9fWZ1bmN0aW9uIGFzKHQpe3JldHVybiJjdXN0b21fYm90Ij09PXQuZ2V0T2JqZWN0VHlwZSgpfWZ1bmN0aW9uIHVzKHQpe3JldHVybiB1cz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sdXModCl9ZnVuY3Rpb24gc3ModCxlKXt2YXIgbj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYobilyZXR1cm4obj1uLmNhbGwodCkpLm5leHQuYmluZChuKTtpZihBcnJheS5pc0FycmF5KHQpfHwobj1mdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gY3ModCxlKTt2YXIgbj17fS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/Y3ModCxlKTp2b2lkIDB9fSh0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe24mJih0PW4pO3ZhciByPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHI+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W3IrK119fX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9ZnVuY3Rpb24gY3ModCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIGxzKCl7bHM9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnP2U6ZyxhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IEwocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpPKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIscD0ic3VzcGVuZGVkWWllbGQiLGg9ImV4ZWN1dGluZyIsdj0iY29tcGxldGVkIix5PXt9O2Z1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gbSgpe31mdW5jdGlvbiBiKCl7fXZhciB3PXt9O2ModyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBfPU9iamVjdC5nZXRQcm90b3R5cGVPZixTPV8mJl8oXyhUKFtdKSkpO1MmJlMhPT1uJiZyLmNhbGwoUyxhKSYmKHc9Uyk7dmFyIHg9Yi5wcm90b3R5cGU9Zy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh3KTtmdW5jdGlvbiBFKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBDKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT11cyhsKSYmci5jYWxsKGwsIl9fYXdhaXQiKT9lLnJlc29sdmUobC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUobCkudGhlbigoZnVuY3Rpb24odCl7Yy52YWx1ZT10LGEoYyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShzLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gTyhlLG4scil7dmFyIG89ZDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09aCl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT12KXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1BKHUscik7aWYocyl7aWYocz09PXkpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09ZCl0aHJvdyBvPXYsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPWg7dmFyIGM9ZihlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP3Y6cCxjLmFyZz09PXkpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz12LHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gQShlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsQShlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSx5O3ZhciBpPWYobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCx5O3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCx5KTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLHkpfWZ1bmN0aW9uIEkodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gayh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gTCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEksdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gVChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKHVzKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIG0ucHJvdG90eXBlPWIsbyh4LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSksbyhiLCJjb25zdHJ1Y3RvciIse3ZhbHVlOm0sY29uZmlndXJhYmxlOiEwfSksbS5kaXNwbGF5TmFtZT1jKGIscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PW18fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGIpOih0Ll9fcHJvdG9fXz1iLGModCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHgpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LEUoQy5wcm90b3R5cGUpLGMoQy5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QyxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEMobCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxFKHgpLGMoeCxzLCJHZW5lcmF0b3IiKSxjKHgsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHgsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9VCxMLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TCxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goayksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHkpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSkseX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxrKG4pLHl9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7ayhuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6VChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLHl9fSxlfWZ1bmN0aW9uIGZzKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gZHModCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHBzKHIua2V5KSxyKX19ZnVuY3Rpb24gcHModCl7dmFyIGU9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9dXModCl8fCF0KXJldHVybiB0O3ZhciBuPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT11cyhyKSlyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWU/U3RyaW5nOk51bWJlcikodCl9KHQsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT11cyhlKT9lOmUrIiJ9dmFyIGhzLHZzPUEoKSgiaW50ZXJjb20uY2xpZW50LW1hdGNoaW5nLmNsaWVudC1tYXRjaC1ydW5uZXIiKSx5cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jbGllbnRNYXRjaGVzPVtdLHRoaXMuYWN0aXZlQ2xpZW50TWF0Y2hJZHM9e30sdGhpcy5ldmFsTG9vcD12b2lkIDAsdGhpcy5zdG9yZT12b2lkIDAsdGhpcy5zdG9yZT10fXZhciBlLG4scixvPXQucHJvdG90eXBlO3JldHVybiBvLnN0YXJ0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt2b2lkIDA9PT10aGlzLmV2YWxMb29wJiYodnMoIlN0YXJ0aW5nIGV2YWx1YXRpb24gbG9vcCIpLHRoaXMuZXZhbExvb3A9c2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7cmV0dXJuIHQucGVyZm9ybUNsaWVudE1hdGNoaW5nKCl9KSw1MDApKX0sby5zdG9wPWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5ldmFsTG9vcCYmKHZzKCJTdG9wcGluZyBldmFsdWF0aW9uIGxvb3AiKSx3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLmV2YWxMb29wKSx0aGlzLmV2YWxMb29wPXZvaWQgMCl9LG8udXBkYXRlQ2xpZW50TWF0Y2hlcz1mdW5jdGlvbih0LGUpe3RoaXMuX3JlbW92ZU1pc3NpbmdNYXRjaGVzKHQsZSksdGhpcy5fYWRkTmV3TWF0Y2hlcyh0KSx0aGlzLnBlcmZvcm1DbGllbnRNYXRjaGluZygpfSxvLnBlcmZvcm1DbGllbnRNYXRjaGluZz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2V2YWx1YXRlQ2xpZW50TWF0Y2hlcygpO2lzKHQsdGhpcy5zdG9yZS5nZXRTdGF0ZSgpKSx0aGlzLl9wcm9jZXNzUmVzdWx0cyh0KX0sby5fZXZhbHVhdGVDbGllbnRNYXRjaGVzPWZ1bmN0aW9uKCl7dmFyIHQ9e3Bvc2l0aXZlTWF0Y2hlczpbXSxuZWdhdGl2ZU1hdGNoZXM6W119O3JldHVybiB0aGlzLmNsaWVudE1hdGNoZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5ldmFsdWF0ZVByZWRpY2F0ZXMoKT90LnBvc2l0aXZlTWF0Y2hlcy5wdXNoKGUpOnQubmVnYXRpdmVNYXRjaGVzLnB1c2goZSl9KSksdH0sby5fcHJvY2Vzc1Jlc3VsdHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0Lm5lZ2F0aXZlTWF0Y2hlcy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj10LmdldFJ1bGVzZXRJZCgpO2UuYWN0aXZlQ2xpZW50TWF0Y2hJZHNbbl0mJih0LnVubWF0Y2goZS5zdG9yZSksZGVsZXRlIGUuYWN0aXZlQ2xpZW50TWF0Y2hJZHNbbl0sdC5jYW5SZW1hdGNoKCl8fGUuX3JlbW92ZUNsaWVudE1hdGNoKHQpKX0pKTt2YXIgbj1bXSxyPXQucG9zaXRpdmVNYXRjaGVzLm1hcCgoZnVuY3Rpb24odCl7dmFyIHI9dC5nZXRSdWxlc2V0SWQoKTtyZXR1cm4gZS5hY3RpdmVDbGllbnRNYXRjaElkc1tyXT90LnJlZnJlc2hBY3RpdmVNYXRjaChlLnN0b3JlKTooZS5hY3RpdmVDbGllbnRNYXRjaElkc1tyXT0hMCx0LnNob3VsZFByb2Nlc3NTZXF1ZW50aWFsbHkoKT9uLnB1c2godCk6dC5tYXRjaChlLnN0b3JlKSl9KSksbz1mdW5jdGlvbigpe3ZhciB0LG89KHQ9bHMoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG8saSxhO3JldHVybiBscygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixQcm9taXNlLmFsbChyKTtjYXNlIDI6bz0wLGk9bjtjYXNlIDM6aWYoIShvPGkubGVuZ3RoKSl7dC5uZXh0PTEwO2JyZWFrfXJldHVybiBhPWlbb10sdC5uZXh0PTcsYS5tYXRjaChlLnN0b3JlKTtjYXNlIDc6bysrLHQubmV4dD0zO2JyZWFrO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSxmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpe2ZzKGkscixvLGEsdSwibmV4dCIsdCl9ZnVuY3Rpb24gdSh0KXtmcyhpLHIsbyxhLHUsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9KTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO28oKX0sby5fYWRkTmV3TWF0Y2hlcz1mdW5jdGlvbih0KXtmb3IodmFyIGUsbj10aGlzLHI9ZnVuY3Rpb24oKXt2YXIgdD1lLnZhbHVlO24uY2xpZW50TWF0Y2hlcy5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRSdWxlc2V0SWQoKT09PXQucnVsZXNldF9pZH0pKXx8bi5jbGllbnRNYXRjaGVzLnB1c2goZnVuY3Rpb24odCl7c3dpdGNoKHQucnVsZXNldF9saW5rX29iamVjdF90eXBlKXtjYXNlImJhbm5lciI6cmV0dXJuIG5ldyBXYSh0KTtjYXNlInRvdXIiOnJldHVybiBuZXcgUWEodCk7Y2FzZSJzdXJ2ZXkiOnJldHVybiBuZXcgSHUodCk7Y2FzZSJpbmJvdW5kX3RyaWdnZXIiOmNhc2UiaW5ib3VuZF9jdXN0b21fYm90IjpyZXR1cm4gbmV3IGF1KHQpO2Nhc2UiY2hhdCI6cmV0dXJuIG5ldyBFdSh0KTtjYXNlImNoZWNrbGlzdCI6cmV0dXJuIG5ldyBRdSh0KTtjYXNlImN1c3RvbV9ib3QiOnJldHVybiBuZXcga3UodCk7Y2FzZSJwb3N0IjpyZXR1cm4gbmV3IE51KHQpO2Nhc2UibWVzc2VuZ2VyX3RyaWdnZXIiOmNhc2UiYnV0dG9uX2N1c3RvbV9ib3QiOmNhc2UidHJpZ2dlcmFibGVfY3VzdG9tX2JvdCI6cmV0dXJuIG5ldyBidSh0KTtjYXNlImFuc3dlcmJvdF9wcmVkaWN0aXZlX2NvbnRleHQiOnJldHVybiBuZXcgZHUodCk7Y2FzZSJzZXJpZXNfY29uZGl0aW9uIjpyZXR1cm4gbmV3IEd1KHQpO2Nhc2UibWVzc2VuZ2VyX251ZGdlIjpyZXR1cm4gbmV3IG5zKHQpO2RlZmF1bHQ6cmV0dXJuIG5ldyBEYSh0KX19KHQpKX0sbz1zcyh0LCEwKTshKGU9bygpKS5kb25lOylyKCk7dGhpcy5fZXZhbHVhdGVDbGllbnRNYXRjaGVzKCl9LG8uX3JlbW92ZU1pc3NpbmdNYXRjaGVzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuLHI9dGhpcyxvPWZ1bmN0aW9uKCl7dmFyIG89bi52YWx1ZTtvLmlzTWF0Y2hhYmxlSW5Mb2NhdGlvbihlKSYmIXQuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucnVsZXNldF9pZD09PW8uZ2V0UnVsZXNldElkKCl9KSkmJihyLmFjdGl2ZUNsaWVudE1hdGNoSWRzW28uZ2V0UnVsZXNldElkKCldJiZvLnVubWF0Y2goci5zdG9yZSksci5fcmVtb3ZlQ2xpZW50TWF0Y2gobykpfSxpPXNzKHRoaXMuY2xpZW50TWF0Y2hlcywhMCk7IShuPWkoKSkuZG9uZTspbygpfSxvLl9yZW1vdmVDbGllbnRNYXRjaD1mdW5jdGlvbih0KXt0aGlzLmNsaWVudE1hdGNoZXMuc3BsaWNlKHRoaXMuY2xpZW50TWF0Y2hlcy5pbmRleE9mKHQpLDEpfSxlPXQsbiYmZHMoZS5wcm90b3R5cGUsbiksciYmZHMoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpLGdzPW4oMzIyMDgpLG1zPTAsYnM9MTIsd3M9MTQsX3M9ZnVuY3Rpb24odCxlLG4pe2hzfHwoaHM9bmV3IHlzKHQpKS5zdGFydCgpLGhzLnVwZGF0ZUNsaWVudE1hdGNoZXMoZSxuKSwoMCxncy5yKShocy5jbGllbnRNYXRjaGVzLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiJpbmJvdW5kX3RyaWdnZXIiPT09dC5nZXRPYmplY3RUeXBlKCl8fCJpbmJvdW5kX2N1c3RvbV9ib3QiPT09dC5nZXRPYmplY3RUeXBlKCl9KSkpfSxTcz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPWUobiksbz1uLGk9dDtzd2l0Y2goby50eXBlKXtjYXNlIEYuUndxOnZhciBhO251bGwhPW8mJm51bGwhPShhPW8udXNlcikmJmEuY2xpZW50c2lkZVJ1bGVzZXRDb25kaXRpb25zJiZfcyhpLG8udXNlci5jbGllbnRzaWRlUnVsZXNldENvbmRpdGlvbnMsbXMpO2JyZWFrO2Nhc2Ugb3QuV0YuZnVsZmlsbGVkLnRvU3RyaW5nKCk6dmFyIHU9bnVsbD09bz92b2lkIDA6by5wYXlsb2FkO251bGwhPXUmJnUuY2xpZW50c2lkZVJ1bGVzZXRDb25kaXRpb25zJiZfcyhpLHUuY2xpZW50c2lkZVJ1bGVzZXRDb25kaXRpb25zLHdzKTticmVhaztjYXNlIEYuY3MyOnZhciBzO2lmKG51bGwhPW8mJm51bGwhPShzPW8ucmVzcG9uc2UpJiZzLmNsaWVudHNpZGVSdWxlc2V0Q29uZGl0aW9ucyl7dmFyIGM9by5yZXNwb25zZS5jbGllbnRzaWRlUnVsZXNldENvbmRpdGlvbnM7YyYmYy5sZW5ndGg+MCYmX3MoaSxjLGJzKX1icmVhaztjYXNlIEYucWpTOnZhciBsO2lmKGhzKW51bGw9PShsPWhzKXx8bC5zdG9wKCksaHM9dm9pZCAwOygwLGdzLnIpKCExKX1yZXR1cm4gcn19fSx4cz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49ZTtyZXR1cm4gbi50eXBlIT09Ri5FbVgmJm4udHlwZSE9PUYudnhufHxhby5mLnNldEludGVyYWN0aW9uTW9kZSgidW5rbm93biIpLHQoZSl9fX0sRXM9big1MTAwNiksQ3M9big4MjUxMyksT3M9ZnVuY3Rpb24odCl7cmV0dXJuIHQuTm90SW5pdGlhbGl6ZWQ9Im5vdC1pbml0aWFsaXplZCIsdC5Jbml0aWFsaXplZD0iaW5pdGlhbGl6ZWQiLHQuR2V0dGluZ1Rva2VuPSJnZXR0aW5nLXRva2VuIix0LkNyZWF0aW5nQ29udmVyc2F0aW9uPSJjcmVhdGluZy1jb252ZXJzYXRpb24iLHQuV2FpdGluZ0ZvckFnZW50PSJ3YWl0aW5nLWZvci1hZ2VudCIsdC5Db25uZWN0ZWRUb0FnZW50PSJjb25uZWN0ZWQtdG8tYWdlbnQiLHQuQ2hlY2tpbmdGb3JNZXNzYWdlcz0iY2hlY2tpbmctZm9yLW1lc3NhZ2VzIix0LkNoYXRUZXJtaW5hdGVkPSJjaGF0LXRlcm1pbmF0ZWQiLHR9KHt9KSxBcz1mdW5jdGlvbih0KXtyZXR1cm4gdC5WZXJpZmllZD0idmVyaWZpZWQiLHQuVW52ZXJpZmllZD0idW52ZXJpZmllZCIsdC5Vbmtub3duPSJ1bmtub3duIix0fSh7fSksSXM9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT02ZTQpO3RyeXt2YXIgbj10LnNwbGl0KCIuIilbMV07aWYoIW4pcmV0dXJuITA7dmFyIHI9KGk9bi5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKSwoYT1pLmxlbmd0aCU0KT4wJiYoaSs9Ij0iLnJlcGVhdCg0LWEpKSxpKSxvPUpTT04ucGFyc2UoYXRvYihyKSk7cmV0dXJuISFvLmV4cCYmMWUzKm8uZXhwLURhdGUubm93KCk8ZX1jYXRjaCh0KXtyZXR1cm4hMH12YXIgaSxhfSxrcz1uKDU3NDcxKTtmdW5jdGlvbiBMcyh0KXtyZXR1cm4gTHM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LExzKHQpfWZ1bmN0aW9uIFRzKCl7cmV0dXJuIFRzPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sVHMuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIGpzKCl7anM9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnP2U6ZyxhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IEwocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpPKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIscD0ic3VzcGVuZGVkWWllbGQiLGg9ImV4ZWN1dGluZyIsdj0iY29tcGxldGVkIix5PXt9O2Z1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gbSgpe31mdW5jdGlvbiBiKCl7fXZhciB3PXt9O2ModyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBfPU9iamVjdC5nZXRQcm90b3R5cGVPZixTPV8mJl8oXyhUKFtdKSkpO1MmJlMhPT1uJiZyLmNhbGwoUyxhKSYmKHc9Uyk7dmFyIHg9Yi5wcm90b3R5cGU9Zy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh3KTtmdW5jdGlvbiBFKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBDKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT1McyhsKSYmci5jYWxsKGwsIl9fYXdhaXQiKT9lLnJlc29sdmUobC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUobCkudGhlbigoZnVuY3Rpb24odCl7Yy52YWx1ZT10LGEoYyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShzLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gTyhlLG4scil7dmFyIG89ZDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09aCl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT12KXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1BKHUscik7aWYocyl7aWYocz09PXkpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09ZCl0aHJvdyBvPXYsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPWg7dmFyIGM9ZihlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP3Y6cCxjLmFyZz09PXkpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz12LHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gQShlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsQShlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSx5O3ZhciBpPWYobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCx5O3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCx5KTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLHkpfWZ1bmN0aW9uIEkodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gayh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gTCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEksdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gVChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKExzKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIG0ucHJvdG90eXBlPWIsbyh4LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSksbyhiLCJjb25zdHJ1Y3RvciIse3ZhbHVlOm0sY29uZmlndXJhYmxlOiEwfSksbS5kaXNwbGF5TmFtZT1jKGIscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PW18fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGIpOih0Ll9fcHJvdG9fXz1iLGModCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHgpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LEUoQy5wcm90b3R5cGUpLGMoQy5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QyxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEMobCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxFKHgpLGMoeCxzLCJHZW5lcmF0b3IiKSxjKHgsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHgsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9VCxMLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TCxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goayksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHkpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSkseX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxrKG4pLHl9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7ayhuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6VChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLHl9fSxlfWZ1bmN0aW9uIFBzKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gTnModCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7UHMoaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe1BzKGkscixvLGEsdSwidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19ZnVuY3Rpb24gTXModCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFJzKHIua2V5KSxyKX19ZnVuY3Rpb24gUnModCl7dmFyIGU9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9THModCl8fCF0KXJldHVybiB0O3ZhciBuPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT1McyhyKSlyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWU/U3RyaW5nOk51bWJlcikodCl9KHQsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT1McyhlKT9lOmUrIiJ9dmFyIFVzPUEoKSgiaW50ZXJjb20uc3RhbmRhbG9uZS5zYWxlc2ZvcmNlLW1lc3NhZ2luZy1jbGllbnQiKSx6cz1bIm1vdXNlbW92ZSIsImNsaWNrIiwia2V5dXAiLCJmb2N1cyIsInZpc2liaWxpdHljaGFuZ2UiXSxIcz1bIkNPTlZFUlNBVElPTl9ST1VUSU5HX1JFU1VMVCIsIkNPTlZFUlNBVElPTl9QQVJUSUNJUEFOVF9DSEFOR0VEIiwiQ09OVkVSU0FUSU9OX01FU1NBR0UiLCJDT05WRVJTQVRJT05fVFlQSU5HX1NUQVJURURfSU5ESUNBVE9SIiwiQ09OVkVSU0FUSU9OX1RZUElOR19TVE9QUEVEX0lORElDQVRPUiIsIkNPTlZFUlNBVElPTl9DTE9TRV9DT05WRVJTQVRJT04iXSxGcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGU9dGhpcyxuPXQuYXBwSWQscj10Lmhvc3RuYW1lLG89dC5vcmdhbml6YXRpb25JZCxpPXQudXNlclZlcmlmaWNhdGlvbkVuYWJsZWQsYT10LmVudmlyb25tZW50SWQsdT10LmRpc3BhdGNoLHM9dC5pbkFwcE1lc3NhZ2luZ0NvbmZpZyxjPXZvaWQgMD09PXM/bnVsbDpzLGw9dC5zdG9yZTt0aGlzLmFwcElkPXZvaWQgMCx0aGlzLmhvc3RuYW1lPXZvaWQgMCx0aGlzLm9yZ2FuaXphdGlvbklkPXZvaWQgMCx0aGlzLnVzZXJWZXJpZmljYXRpb25FbmFibGVkPXZvaWQgMCx0aGlzLmVudmlyb25tZW50SWQ9dm9pZCAwLHRoaXMuY2xpZW50U3RhdGU9T3MuTm90SW5pdGlhbGl6ZWQsdGhpcy5zdWJzY3JpYmVkVG9FdmVudHM9dm9pZCAwLHRoaXMuZXZlbnRTb3VyY2VFcnJvckNvdW50PXZvaWQgMCx0aGlzLmluQXBwTWVzc2FnaW5nQ29uZmlnPXZvaWQgMCx0aGlzLmRpc3BhdGNoPXZvaWQgMCx0aGlzLnN0b3JlPXZvaWQgMCx0aGlzLnRhYklkPXZvaWQgMCx0aGlzLmhhbmRvdmVycz12b2lkIDAsdGhpcy5sYXN0VG9rZW5SZXNldFRpbWU9dm9pZCAwLHRoaXMuaGVhcnRiZWF0VGltZXI9bnVsbCx0aGlzLnJlZnJlc2hUb2tlblRpbWVyPW51bGwsdGhpcy5lcz1udWxsLHRoaXMudG9rZW5GZXRjaFByb21pc2U9bnVsbCx0aGlzLmhhbmRsZUV2ZW50PU5zKGpzKCkubWFyaygoZnVuY3Rpb24gdChuKXt2YXIgcixvO3JldHVybiBqcygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnByZXY9MCxlLmluZm9Mb2coImhhbmRsZUV2ZW50IiwiUmF3IEV2ZW50IiwiZXZlbnQ9IitKU09OLnN0cmluZ2lmeShuKSksZS5ldmVudFNvdXJjZUVycm9yQ291bnQ9MCxvPXtpZDpuLmxhc3RFdmVudElkLHR5cGU6bi50eXBlLGRhdGE6SlNPTi5wYXJzZShuLmRhdGEpfSxlLmluZm9Mb2coImhhbmRsZUV2ZW50IiwiVHJhbnNmb3JtZWQgRXZlbnQiLCJldmVudD0iK0pTT04uc3RyaW5naWZ5KG8pKSx0Lm5leHQ9NyxIby5BLnBvc3Qoe3VybDooMCx1by56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvc3RhbmRhbG9uZS9zYWxlc2ZvcmNlL2V2ZW50cyIsc2Vzc2lvbjplLmdldFNlc3Npb24oKSxwYXJhbXM6e2FwcF9pZDplLmFwcElkLGFjY2Vzc190b2tlbjpudWxsPT0ocj1lLmluQXBwTWVzc2FnaW5nQ29uZmlnKT92b2lkIDA6ci5hY2Nlc3NUb2tlbixldmVudHM6SlNPTi5zdHJpbmdpZnkoW29dKX19KTtjYXNlIDc6ZS5zZXRMYXN0RXZlbnRJZChOdW1iZXIoby5pZCkpLHQubmV4dD0xMzticmVhaztjYXNlIDEwOnQucHJldj0xMCx0LnQwPXQuY2F0Y2goMCksZS5pbmZvTG9nKCJoYW5kbGVFdmVudCIsImZhaWxlZCB0byBoYW5kbGUgZXZlbnQiLCJlcnJvcj0iK3QudDAsImV2ZW50PSIrSlNPTi5zdHJpbmdpZnkobikpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1swLDEwXV0pfSkpKSx0aGlzLmhhbmRsZUFjdGl2ZVRhYkV2ZW50PSgwLEVzLm4pKChmdW5jdGlvbigpe1VzKCJbaGFuZGxlQWN0aXZlVGFiRXZlbnRdIixlLmlzQWN0aXZlVGFiKCksZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlKSxlLmlzQWN0aXZlVGFiKCl8fCJ2aXNpYmxlIiE9PWRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZXx8KGUuaW5mb0xvZygiaGFuZGxlQWN0aXZlVGFiRXZlbnQiLCJTZXR0aW5nIGFjdGl2ZSB0YWIgaWQiKSxlLnNldEFjdGl2ZVRhYklkKCksZS5nZXRPclVwZGF0ZVRva2VuKCkpfSksMWUzKSx0aGlzLmNoZWNrQWN0aXZlVGFiTGVhc2U9KDAsRXMubikoKGZ1bmN0aW9uKHQpe2UuaXNBY3RpdmVUYWIoKXx8c2V0VGltZW91dCgoZnVuY3Rpb24oKXt2YXIgdD1YLkwuZ2V0KExvKGUuYXBwSWQpKTtpZih0KXt2YXIgbj1KU09OLnBhcnNlKHQpO24mJm4udGFiSWQhPT1lLnRhYklkJiZEYXRlLm5vdygpLW4ubGFzdFNlZW5BdD42ZTQmJihlLmluZm9Mb2coImNoZWNrQWN0aXZlVGFiTGVhc2UiLCJhY3RpdmUgdGFiIGxlYXNlIGV4cGlyZWQsIHNldHRpbmcgYWN0aXZlIHRhYiBpZCIpLGUuc2V0QWN0aXZlVGFiSWQoKSl9fSksdCl9KSwxZTMpLHRoaXMuaGFuZGxlU3RvcmFnZUV2ZW50PWZ1bmN0aW9uKHQpe3ZhciBuLHI9ZS5nZXRTdG9yYWdlS2V5KCk7aWYobnVsbCE9KG49dC5rZXkpJiYtMSE9PW4uaW5kZXhPZihyKSl7dmFyIG89WC5MLmdldChyKTtpZihvKXRyeXt2YXIgaSxhLHU9SlNPTi5wYXJzZShvKTtpZihudWxsPT0oaT11LmluQXBwTWVzc2FnaW5nQ29uZmlnKXx8IWkuYWNjZXNzVG9rZW4pcmV0dXJuOyhudWxsPT0oYT1lLmluQXBwTWVzc2FnaW5nQ29uZmlnKXx8IWEuYWNjZXNzVG9rZW58fChudWxsPT11P3ZvaWQgMDp1Lmxhc3RUb2tlblJlc2V0VGltZSk+KG51bGw9PWU/dm9pZCAwOmUubGFzdFRva2VuUmVzZXRUaW1lKSkmJihlLmluZm9Mb2coImhhbmRsZVN0b3JhZ2VFdmVudCIsInRva2VuIHJlc2V0IHRpbWUgbWlzbWF0Y2gsIHVwZGF0aW5nIHRva2VuIiksZS5sYXN0VG9rZW5SZXNldFRpbWU9dS5sYXN0VG9rZW5SZXNldFRpbWUsZS5pbkFwcE1lc3NhZ2luZ0NvbmZpZz11LmluQXBwTWVzc2FnaW5nQ29uZmlnLGUuc3Vic2NyaWJlVG9FdmVudHMoKSl9Y2F0Y2godCl7ZS5pbmZvTG9nKCJoYW5kbGVTdG9yYWdlRXZlbnQiLCJmYWlsZWQgdG8gaGFuZGxlIHN0b3JhZ2UgZXZlbnQiLCJlcnJvcj0iK3QpfX19LHRoaXMuYXBwSWQ9bix0aGlzLmhvc3RuYW1lPXIsdGhpcy5vcmdhbml6YXRpb25JZD1vLHRoaXMudXNlclZlcmlmaWNhdGlvbkVuYWJsZWQ9aSx0aGlzLmVudmlyb25tZW50SWQ9YXx8KDAsa3MudSkoKSx0aGlzLmluQXBwTWVzc2FnaW5nQ29uZmlnPWMsdGhpcy5kaXNwYXRjaD11LHRoaXMudGFiSWQ9KDAsa3IubCkoKSx0aGlzLnN1YnNjcmliZWRUb0V2ZW50cz0hMSx0aGlzLmV2ZW50U291cmNlRXJyb3JDb3VudD0wLHRoaXMuc3RvcmU9bCx0aGlzLmxhc3RUb2tlblJlc2V0VGltZT0wLHRoaXMuc2V0U3RhdGUoT3MuTm90SW5pdGlhbGl6ZWQpLHRoaXMuYWRkQWN0aXZlVGFiRXZlbnRMaXN0ZW5lcnMoKSx0aGlzLmhhbmRvdmVycz1bXSwidmlzaWJsZSI9PT1kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUmJihVcygiW2NvbnN0cnVjdG9yXSBTZXR0aW5nIGFjdGl2ZSB0YWIgaWQiLHRoaXMudGFiSWQpLHRoaXMuc2V0QWN0aXZlVGFiSWQoKSl9dmFyIGUsbixyLG89dC5wcm90b3R5cGU7cmV0dXJuIG8uaGFuZG92ZXJUb1NhbGVzZm9yY2U9ZnVuY3Rpb24oKXt2YXIgdD1OcyhqcygpLm1hcmsoKGZ1bmN0aW9uIHQoZSxuKXt2YXIgcjtyZXR1cm4ganMoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZih0LnByZXY9MCx0aGlzLmlzQWN0aXZlVGFiKCkpe3QubmV4dD00O2JyZWFrfXJldHVybiB0aGlzLmluZm9Mb2coImhhbmRvdmVyVG9TYWxlc2ZvcmNlIiwibm90IGFjdGl2ZSB0YWIsIHNraXBwaW5nIGhhbmRvdmVyIiwiY29udmVyc2F0aW9uVG9IYW5kb3ZlcklkPSIrZSksdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgNDppZigtMT09PXRoaXMuaGFuZG92ZXJzLmluZGV4T2YoZSkpe3QubmV4dD03O2JyZWFrfXJldHVybiB0aGlzLmluZm9Mb2coImhhbmRvdmVyVG9TYWxlc2ZvcmNlIiwiaGFuZG92ZXIgaW4gcHJvZ3Jlc3MiLCJjb252ZXJzYXRpb25Ub0hhbmRvdmVySWQ9IitlKSx0LmFicnVwdCgicmV0dXJuIik7Y2FzZSA3OmlmKHRoaXMuaGFuZG92ZXJzLnB1c2goZSksdGhpcy5pbmZvTG9nKCJoYW5kb3ZlclRvU2FsZXNmb3JjZSIsImhhbmRvdmVyIHRvIHNhbGVzZm9yY2UiLCJjb252ZXJzYXRpb25Ub0hhbmRvdmVySWQ9IitlKSx0aGlzLmluQXBwTWVzc2FnaW5nQ29uZmlnJiYhbil7dC5uZXh0PTE1O2JyZWFrfXJldHVybiB0aGlzLmluZm9Mb2coImhhbmRvdmVyVG9TYWxlc2ZvcmNlIiwiZ2V0dGluZyB0b2tlbiIsImNvbnZlcnNhdGlvblRvSGFuZG92ZXJJZD0iK2UpLHQubmV4dD0xMyx0aGlzLmdldFRva2VuKCk7Y2FzZSAxMzp0Lm5leHQ9MTk7YnJlYWs7Y2FzZSAxNTpyZXR1cm4gdGhpcy5pbmZvTG9nKCJoYW5kb3ZlclRvU2FsZXNmb3JjZSIsInJlZnJlc2hpbmcgdG9rZW4gYmVmb3JlIGhhbmRvZmYiLCJjb252ZXJzYXRpb25Ub0hhbmRvdmVySWQ9IitlKSx0Lm5leHQ9MTgsdGhpcy5nZXRPclVwZGF0ZVRva2VuKCk7Y2FzZSAxODp0aGlzLnNldFN0YXRlKE9zLkluaXRpYWxpemVkKTtjYXNlIDE5OmlmKG51bGwhPShyPXRoaXMuaW5BcHBNZXNzYWdpbmdDb25maWcpJiZyLmFjY2Vzc1Rva2VuKXt0Lm5leHQ9MjI7YnJlYWt9cmV0dXJuIHRoaXMuaW5mb0xvZygiaGFuZG92ZXJUb1NhbGVzZm9yY2UiLCJubyBhY2Nlc3MgdG9rZW4iLCJjb252ZXJzYXRpb25Ub0hhbmRvdmVySWQ9IitlKSx0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAyMjp0aGlzLmluZm9Mb2coImhhbmRvdmVyVG9TYWxlc2ZvcmNlIiwiY3JlYXRpbmcgY29udmVyc2F0aW9uIiwiY29udmVyc2F0aW9uVG9IYW5kb3ZlcklkPSIrZSksdGhpcy5jcmVhdGVDb252ZXJzYXRpb24oZSksdC5uZXh0PTI5O2JyZWFrO2Nhc2UgMjY6dC5wcmV2PTI2LHQudDA9dC5jYXRjaCgwKSx0aGlzLmluZm9Mb2coImhhbmRvdmVyVG9TYWxlc2ZvcmNlIiwiZmFpbGVkIHRvIGhhbmRvdmVyIHRvIHNhbGVzZm9yY2UiLCJlcnJvcj0iK3QudDAsImNvbnZlcnNhdGlvblRvSGFuZG92ZXJJZD0iK2UpO2Nhc2UgMjk6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1swLDI2XV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLG8ucmVmcmVzaFRva2VuSWZFeHBpcmVkPWZ1bmN0aW9uKCl7dmFyIHQ9TnMoanMoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIGU7cmV0dXJuIGpzKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYodGhpcy5pbmZvTG9nKCJyZWZyZXNoVG9rZW5JZkV4cGlyZWQiLCJhdHRlbXB0aW5nIHRvIHJlZnJlc2ggdG9rZW4gaWYgZXhwaXJlZCIpLHRoaXMudXNlclZlcmlmaWNhdGlvbkVuYWJsZWQpe3QubmV4dD0zO2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmlmKG51bGwhPShlPXRoaXMuaW5BcHBNZXNzYWdpbmdDb25maWcpJiZlLmFjY2Vzc1Rva2VuKXt0Lm5leHQ9NTticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgNTppZihJcyh0aGlzLmluQXBwTWVzc2FnaW5nQ29uZmlnLmFjY2Vzc1Rva2VuKSl7dC5uZXh0PTc7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDc6cmV0dXJuIHRoaXMuaW5mb0xvZygicmVmcmVzaFRva2VuSWZFeHBpcmVkIiwidG9rZW4gaXMgZXhwaXJlZCwgcmVmcmVzaGluZyIpLHQubmV4dD0xMCx0aGlzLmdldFRva2VuKCk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksby5nZXRUb2tlbj1mdW5jdGlvbigpe3ZhciB0PU5zKGpzKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBqcygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKHRoaXMuaXNBY3RpdmVUYWIoKSl7dC5uZXh0PTM7YnJlYWt9cmV0dXJuIHRoaXMuaW5mb0xvZygiZ2V0VG9rZW4iLCJub3QgYWN0aXZlIHRhYiIsImNsaWVudFN0YXRlPSIrdGhpcy5jbGllbnRTdGF0ZSksdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzppZih0aGlzLmNsaWVudFN0YXRlIT09T3MuR2V0dGluZ1Rva2VuKXt0Lm5leHQ9ODticmVha31yZXR1cm4gdGhpcy5pbmZvTG9nKCJnZXRUb2tlbiIsImFscmVhZHkgZmV0Y2hpbmcgdG9rZW4sIGF3YWl0aW5nIGluLWZsaWdodCByZXF1ZXN0IiksdC5uZXh0PTcsdGhpcy50b2tlbkZldGNoUHJvbWlzZTtjYXNlIDc6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDg6cmV0dXJuIHRoaXMudG9rZW5GZXRjaFByb21pc2U9dGhpcy5mZXRjaFRva2VuKCksdC5wcmV2PTksdC5uZXh0PTEyLHRoaXMudG9rZW5GZXRjaFByb21pc2U7Y2FzZSAxMjpyZXR1cm4gdC5wcmV2PTEyLHRoaXMudG9rZW5GZXRjaFByb21pc2U9bnVsbCx0LmZpbmlzaCgxMik7Y2FzZSAxNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzksLDEyLDE1XV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLG8uZmV0Y2hUb2tlbj1mdW5jdGlvbigpe3ZhciB0PU5zKGpzKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBlLG47cmV0dXJuIGpzKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQucHJldj0wLHRoaXMuaW5mb0xvZygiZ2V0VG9rZW4iLCJnZXR0aW5nIHRva2VuIiksdGhpcy5zZXRTdGF0ZShPcy5HZXR0aW5nVG9rZW4pLGU9e2FwcF9pZDp0aGlzLmFwcElkLHRhYl9pZDp0aGlzLnRhYklkfSx0aGlzLnVzZXJTYWxlc2ZvcmNlSWRlbnRpdHlUb2tlbigpJiYoZS5zYWxlc2ZvcmNlX2lkZW50aXR5X3Rva2VuPXRoaXMudXNlclNhbGVzZm9yY2VJZGVudGl0eVRva2VuKCkpLHQubmV4dD03LEhvLkEucG9zdCh7dXJsOigwLHVvLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9zdGFuZGFsb25lL3NhbGVzZm9yY2UvZ2V0X3Rva2VuIixzZXNzaW9uOnRoaXMuZ2V0U2Vzc2lvbigpLHBhcmFtczplfSk7Y2FzZSA3Om51bGwhPShuPXQuc2VudCkmJm4ub2smJih0aGlzLmxhc3RUb2tlblJlc2V0VGltZT1EYXRlLm5vdygpLHRoaXMuaW5BcHBNZXNzYWdpbmdDb25maWc9bi5ib2R5LHRoaXMuc2V0U3RhdGUoT3MuSW5pdGlhbGl6ZWQpLHRoaXMuc3RhcnRUb2tlblJlZnJlc2hUaW1lcigpKSx0Lm5leHQ9MTY7YnJlYWs7Y2FzZSAxMTp0LnByZXY9MTEsdC50MD10LmNhdGNoKDApLHRoaXMuaW5mb0xvZygiZ2V0VG9rZW4iLCJmYWlsZWQgdG8gZ2V0IHRva2VuIiwiZXJyb3I9Iit0LnQwKSx0aGlzLnNldFN0YXRlKE9zLk5vdEluaXRpYWxpemVkKSx0aGlzLnN0b3BUb2tlblJlZnJlc2hUaW1lcigpO2Nhc2UgMTY6cmV0dXJuIHQucHJldj0xNix0aGlzLmNsaWVudFN0YXRlPT09T3MuR2V0dGluZ1Rva2VuJiYodGhpcy5zZXRTdGF0ZShPcy5Ob3RJbml0aWFsaXplZCksdGhpcy5zdG9wVG9rZW5SZWZyZXNoVGltZXIoKSksdC5maW5pc2goMTYpO2Nhc2UgMTk6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1swLDExLDE2LDE5XV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLG8udXBkYXRlVG9rZW49ZnVuY3Rpb24oKXt2YXIgdD1OcyhqcygpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgZSxuO3JldHVybiBqcygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKHRoaXMuaXNBY3RpdmVUYWIoKSYmdGhpcy5pbkFwcE1lc3NhZ2luZ0NvbmZpZyl7dC5uZXh0PTM7YnJlYWt9cmV0dXJuIHRoaXMuaW5mb0xvZygidXBkYXRlVG9rZW4iLCJub3QgYWN0aXZlIHRhYiBvciBubyBpbkFwcE1lc3NhZ2luZ0NvbmZpZyIpLHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6cmV0dXJuIHRoaXMuaW5mb0xvZygidXBkYXRlVG9rZW4iLCJ1cGRhdGluZyB0b2tlbiIpLHQucHJldj00LHQubmV4dD03LEhvLkEucG9zdCh7dXJsOigwLHVvLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9zdGFuZGFsb25lL3NhbGVzZm9yY2UvdXBkYXRlX3Rva2VuIixzZXNzaW9uOnRoaXMuZ2V0U2Vzc2lvbigpLHBhcmFtczp7YXBwX2lkOnRoaXMuYXBwSWQsYWNjZXNzX3Rva2VuOm51bGw9PShlPXRoaXMuaW5BcHBNZXNzYWdpbmdDb25maWcpP3ZvaWQgMDplLmFjY2Vzc1Rva2VufX0pO2Nhc2UgNzppZihudWxsPT0obj10LnNlbnQpfHwhbi5vayl7dC5uZXh0PTEzO2JyZWFrfXJldHVybiB0aGlzLmluQXBwTWVzc2FnaW5nQ29uZmlnLmFjY2Vzc1Rva2VuPW4uYm9keS5hY2Nlc3NUb2tlbix0aGlzLnNldFN0YXRlKE9zLkluaXRpYWxpemVkKSx0aGlzLnN0YXJ0VG9rZW5SZWZyZXNoVGltZXIoKSx0LmFicnVwdCgicmV0dXJuIix0aGlzLnN1YnNjcmliZVRvRXZlbnRzKCkpO2Nhc2UgMTM6dC5uZXh0PTE4O2JyZWFrO2Nhc2UgMTU6dC5wcmV2PTE1LHQudDA9dC5jYXRjaCg0KSx0aGlzLmluZm9Mb2coInVwZGF0ZVRva2VuIiwiZmFpbGVkIHRvIHVwZGF0ZSB0b2tlbiIsImVycm9yPSIrdC50MCk7Y2FzZSAxODpyZXR1cm4gdGhpcy5pbkFwcE1lc3NhZ2luZ0NvbmZpZz1udWxsLHRoaXMuc3RvcFRva2VuUmVmcmVzaFRpbWVyKCksdGhpcy5zYXZlU3RhdGVUb1N0b3JhZ2UoKSx0Lm5leHQ9MjMsdGhpcy5nZXRUb2tlbigpO2Nhc2UgMjM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1s0LDE1XV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLG8uZ2V0T3JVcGRhdGVUb2tlbj1mdW5jdGlvbigpe3ZhciB0PU5zKGpzKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBqcygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKCF0aGlzLnNob3VsZEdldFRva2VuKCkpe3QubmV4dD01O2JyZWFrfXJldHVybiB0Lm5leHQ9Myx0aGlzLmdldFRva2VuKCk7Y2FzZSAzOnQubmV4dD04O2JyZWFrO2Nhc2UgNTppZighdGhpcy5pbkFwcE1lc3NhZ2luZ0NvbmZpZyl7dC5uZXh0PTg7YnJlYWt9cmV0dXJuIHQubmV4dD04LHRoaXMudXBkYXRlVG9rZW4oKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLG8uc2hvdWxkR2V0VG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy51c2VyVmVyaWZpY2F0aW9uRW5hYmxlZHx8dGhpcy51c2VyU2FsZXNmb3JjZUlkZW50aXR5VG9rZW4oKSkmJighdGhpcy5pbkFwcE1lc3NhZ2luZ0NvbmZpZ3x8dGhpcy5jb25uZWN0aW9uVHlwZSgpPT09QXMuVW52ZXJpZmllZCl9LG8ucGVyZm9ybUhlYWx0aENoZWNrPWZ1bmN0aW9uKCl7dmFyIHQ9TnMoanMoKS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciBuLHIsbztyZXR1cm4ganMoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZih0aGlzLmluZm9Mb2coInBlcmZvcm1IZWFsdGhDaGVjayIsInBlcmZvcm1pbmcgaGVhbHRoIGNoZWNrIiwiY29udmVyc2F0aW9uSWQ9IitlKSx0aGlzLmlzQWN0aXZlVGFiKCkpe3QubmV4dD00O2JyZWFrfXJldHVybiB0aGlzLmluZm9Mb2coInBlcmZvcm1IZWFsdGhDaGVjayIsIm5vdCBhY3RpdmUgdGFiLCBza2lwcGluZyBoZWFsdGggY2hlY2siKSx0LmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OmlmKHQucHJldj00LG51bGwhPShuPXRoaXMuaW5BcHBNZXNzYWdpbmdDb25maWcpJiZuLmFjY2Vzc1Rva2VuKXt0Lm5leHQ9ODticmVha31yZXR1cm4gdGhpcy5pbmZvTG9nKCJwZXJmb3JtSGVhbHRoQ2hlY2siLCJubyBhY2Nlc3MgdG9rZW4sIHNraXBwaW5nIGhlYWx0aCBjaGVjayIpLHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDg6cmV0dXJuIHQubmV4dD0xMCxIby5BLnBvc3Qoe3VybDooMCx1by56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvc3RhbmRhbG9uZS9zYWxlc2ZvcmNlL2hlYWx0aF9jaGVjayIsc2Vzc2lvbjp0aGlzLmdldFNlc3Npb24oKSxwYXJhbXM6e2FwcF9pZDp0aGlzLmFwcElkLGFjY2Vzc190b2tlbjpudWxsPT0ocj10aGlzLmluQXBwTWVzc2FnaW5nQ29uZmlnKT92b2lkIDA6ci5hY2Nlc3NUb2tlbixjb252ZXJzYXRpb25faWQ6ZSx0YWJfaWQ6dGhpcy50YWJJZCxjb25uZWN0aW9uX3R5cGU6dGhpcy5jb25uZWN0aW9uVHlwZSgpfX0pO2Nhc2UgMTA6bnVsbCE9KG89dC5zZW50KSYmby5va3x8dGhpcy5jb25uZWN0aW9uVHlwZSgpIT09QXMuVmVyaWZpZWR8fCh0aGlzLmluZm9Mb2coInBlcmZvcm1IZWFsdGhDaGVjayIsImhlYWx0aCBjaGVjayBmYWlsZWQsIGdldHRpbmcgbmV3IHRva2VuIiksdGhpcy5nZXRUb2tlbigpKSx0Lm5leHQ9MTc7YnJlYWs7Y2FzZSAxNDp0LnByZXY9MTQsdC50MD10LmNhdGNoKDQpLHRoaXMuaW5mb0xvZygicGVyZm9ybUhlYWx0aENoZWNrIiwiZmFpbGVkIHRvIHBlcmZvcm0gaGVhbHRoIGNoZWNrIiwiZXJyb3I9Iit0LnQwKTtjYXNlIDE3OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbNCwxNF1dKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksby5jcmVhdGVDb252ZXJzYXRpb249ZnVuY3Rpb24oKXt2YXIgdD1OcyhqcygpLm1hcmsoKGZ1bmN0aW9uIHQoZSl7dmFyIG4scixvPXRoaXM7cmV0dXJuIGpzKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYodC5wcmV2PTAsdGhpcy5pc0FjdGl2ZVRhYigpJiZ0aGlzLmNsaWVudFN0YXRlIT09T3MuQ3JlYXRpbmdDb252ZXJzYXRpb24pe3QubmV4dD00O2JyZWFrfXJldHVybiB0aGlzLmluZm9Mb2coImNyZWF0ZUNvbnZlcnNhdGlvbiIsIm5vdCBhY3RpdmUgdGFiIG9yIGFscmVhZHkgZmV0Y2hpbmcgdG9rZW4iLCJjbGllbnRTdGF0ZT0iK3RoaXMuY2xpZW50U3RhdGUpLHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDQ6cmV0dXJuIHRoaXMuc2V0U3RhdGUoT3MuQ3JlYXRpbmdDb252ZXJzYXRpb24pLHRoaXMuaW5mb0xvZygiY3JlYXRlQ29udmVyc2F0aW9uIiwiY3JlYXRpbmcgY29udmVyc2F0aW9uIiwiY29udmVyc2F0aW9uSWQ9IitlKSx0Lm5leHQ9OCxIby5BLnBvc3Qoe3VybDooMCx1by56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvc3RhbmRhbG9uZS9zYWxlc2ZvcmNlL2NyZWF0ZV9jb252ZXJzYXRpb24iLHNlc3Npb246dGhpcy5nZXRTZXNzaW9uKCkscGFyYW1zOnthcHBfaWQ6dGhpcy5hcHBJZCxjb252ZXJzYXRpb25faWQ6ZSxhY2Nlc3NfdG9rZW46bnVsbD09KG49dGhpcy5pbkFwcE1lc3NhZ2luZ0NvbmZpZyk/dm9pZCAwOm4uYWNjZXNzVG9rZW4sdGFiX2lkOnRoaXMudGFiSWR9fSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3ZhciBuPUpTT04ucGFyc2UodCkscj0obnVsbD09bj92b2lkIDA6bi5ib2R5KXx8e30saT1yLnJldHJ5X2FmdGVyO2lmKCEoci5yZXRyeWFibGUmJmkmJmk+MCkpdGhyb3cgdDtzZXRUaW1lb3V0KChmdW5jdGlvbigpe28uY3JlYXRlQ29udmVyc2F0aW9uKGUpfSksaSl9KSk7Y2FzZSA4Om51bGwhPShyPXQuc2VudCkmJnIub2smJih0aGlzLnNldFN0YXRlKE9zLkNoZWNraW5nRm9yTWVzc2FnZXMpLHRoaXMuc3Vic2NyaWJlVG9FdmVudHMoKSksdC5uZXh0PTE2O2JyZWFrO2Nhc2UgMTI6dC5wcmV2PTEyLHQudDA9dC5jYXRjaCgwKSx0aGlzLmluZm9Mb2coImNyZWF0ZUNvbnZlcnNhdGlvbiIsImZhaWxlZCB0byBjcmVhdGUgY29udmVyc2F0aW9uIiwiZXJyb3I9Iit0LnQwKSx0aGlzLnNldFN0YXRlKE9zLk5vdEluaXRpYWxpemVkKTtjYXNlIDE2OnJldHVybiB0LnByZXY9MTYsdGhpcy5jbGllbnRTdGF0ZT09PU9zLkNyZWF0aW5nQ29udmVyc2F0aW9uJiZ0aGlzLnNldFN0YXRlKE9zLk5vdEluaXRpYWxpemVkKSx0LmZpbmlzaCgxNik7Y2FzZSAxOTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzAsMTIsMTYsMTldXSl9KSkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLG8uc2VuZE1lc3NhZ2U9ZnVuY3Rpb24oKXt2YXIgdD1OcyhqcygpLm1hcmsoKGZ1bmN0aW9uIHQoZSxuLHIpe3ZhciBvO3JldHVybiBqcygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKHQucHJldj0wLG4pe3QubmV4dD00O2JyZWFrfXJldHVybiB0aGlzLmVycm9yTG9nKCJzZW5kTWVzc2FnZSIsIm1pc3NpbmcgcGFydElkLCBjYW5ub3Qgc2VuZCIsImNvbnZlcnNhdGlvbklkPSIrZSksdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgNDpyZXR1cm4gdC5uZXh0PTYsdGhpcy5yZWNvdmVyQWNjZXNzVG9rZW4oInNlbmRNZXNzYWdlIik7Y2FzZSA2OmlmKHQuc2VudCl7dC5uZXh0PTk7YnJlYWt9cmV0dXJuIHRoaXMuZXJyb3JMb2coInNlbmRNZXNzYWdlIiwibm8gYWNjZXNzIHRva2VuIGFmdGVyIHJlY292ZXJ5LCBkcm9wcGluZyBtZXNzYWdlIiwiY29udmVyc2F0aW9uSWQ9IitlLCJwYXJ0SWQ9IituKSx0LmFicnVwdCgicmV0dXJuIik7Y2FzZSA5OnJldHVybiB0Lm5leHQ9MTEsSG8uQS5wb3N0KHt1cmw6KDAsdW8uemopKCkuYXBpX2Jhc2UrIi9tZXNzZW5nZXIvd2ViL3N0YW5kYWxvbmUvc2FsZXNmb3JjZS9zZW5kX2luX2FwcF9tZXNzYWdlIixzZXNzaW9uOnRoaXMuZ2V0U2Vzc2lvbigpLHBhcmFtczp7YXBwX2lkOnRoaXMuYXBwSWQsY29udmVyc2F0aW9uX2lkOmUsYWNjZXNzX3Rva2VuOm51bGw9PShvPXRoaXMuaW5BcHBNZXNzYWdpbmdDb25maWcpP3ZvaWQgMDpvLmFjY2Vzc1Rva2VuLHBhcnRfaWQ6bix0ZXh0OnJ9fSk7Y2FzZSAxMTp0Lm5leHQ9MTY7YnJlYWs7Y2FzZSAxMzp0LnByZXY9MTMsdC50MD10LmNhdGNoKDApLHRoaXMuZXJyb3JMb2coInNlbmRNZXNzYWdlIiwiZmFpbGVkIHRvIHNlbmQgbWVzc2FnZSIsImVycm9yPSIrdC50MCwiY29udmVyc2F0aW9uSWQ9IitlLCJwYXJ0SWQ9IituKTtjYXNlIDE2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMCwxM11dKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLG8uc2VuZEZpbGU9ZnVuY3Rpb24oKXt2YXIgdD1OcyhqcygpLm1hcmsoKGZ1bmN0aW9uIHQoZSxuLHIsbyl7dmFyIGksYTtyZXR1cm4ganMoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZih0LnByZXY9MCxuKXt0Lm5leHQ9NDticmVha31yZXR1cm4gdGhpcy5lcnJvckxvZygic2VuZEZpbGUiLCJtaXNzaW5nIHBhcnRJZCwgY2Fubm90IHNlbmQiLCJjb252ZXJzYXRpb25JZD0iK2UpLHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDQ6cmV0dXJuIHQubmV4dD02LHRoaXMucmVjb3ZlckFjY2Vzc1Rva2VuKCJzZW5kRmlsZSIpO2Nhc2UgNjppZih0LnNlbnQpe3QubmV4dD05O2JyZWFrfXJldHVybiB0aGlzLmVycm9yTG9nKCJzZW5kRmlsZSIsIm5vIGFjY2VzcyB0b2tlbiBhZnRlciByZWNvdmVyeSwgZHJvcHBpbmcgZmlsZSIsImNvbnZlcnNhdGlvbklkPSIrZSwicGFydElkPSIrbiksdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgOTpyZXR1cm4gYT17YXBwX2lkOnRoaXMuYXBwSWQsY29udmVyc2F0aW9uX2lkOmUsYWNjZXNzX3Rva2VuOm51bGw9PShpPXRoaXMuaW5BcHBNZXNzYWdpbmdDb25maWcpP3ZvaWQgMDppLmFjY2Vzc1Rva2VuLHBhcnRfaWQ6bix1cmw6cn0sbyYmKGEuYXR0cmlidXRpb249byksdC5uZXh0PTEzLEhvLkEucG9zdCh7dXJsOigwLHVvLnpqKSgpLmFwaV9iYXNlKyIvbWVzc2VuZ2VyL3dlYi9zdGFuZGFsb25lL3NhbGVzZm9yY2Uvc2VuZF9maWxlIixzZXNzaW9uOnRoaXMuZ2V0U2Vzc2lvbigpLHBhcmFtczphfSk7Y2FzZSAxMzp0Lm5leHQ9MTg7YnJlYWs7Y2FzZSAxNTp0LnByZXY9MTUsdC50MD10LmNhdGNoKDApLHRoaXMuZXJyb3JMb2coInNlbmRGaWxlIiwiZmFpbGVkIHRvIHNlbmQgZmlsZSIsImVycm9yPSIrdC50MCwiY29udmVyc2F0aW9uSWQ9IitlLCJwYXJ0SWQ9IituKTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMCwxNV1dKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKGUsbixyLG8pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksby5zdWJzY3JpYmVUb0V2ZW50cz1mdW5jdGlvbigpe3ZhciB0PU5zKGpzKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBlLG4scixvLGksYT10aGlzO3JldHVybiBqcygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnRoaXMuc3Vic2NyaWJlZFRvRXZlbnRzJiYodGhpcy5pbmZvTG9nKCJzdWJzY3JpYmVUb0V2ZW50cyIsImFscmVhZHkgc3Vic2NyaWJlZCIpLHRoaXMuZGlzY29ubmVjdEV2ZW50U291cmNlKCkpLHRoaXMuaW5mb0xvZygic3Vic2NyaWJlVG9FdmVudHMiLCJzdWJzY3JpYmluZyB0byBldmVudHMiKSxvPXRoaXMuaG9zdG5hbWUrIi9ldmVudHJvdXRlci92MS9zc2UiLGk9e0FjY2VwdDoidGV4dC9ldmVudC1zdHJlYW0iLEF1dGhvcml6YXRpb246IkJlYXJlciAiKyhudWxsPT0oZT10aGlzLmluQXBwTWVzc2FnaW5nQ29uZmlnKT92b2lkIDA6ZS5hY2Nlc3NUb2tlbiksIlgtT3JnLUlkIjp0aGlzLm9yZ2FuaXphdGlvbklkLCJMYXN0LUV2ZW50LUlkIjoobnVsbD09KG49dGhpcy5pbkFwcE1lc3NhZ2luZ0NvbmZpZyl8fG51bGw9PShuPW4ubGFzdEV2ZW50SWQpP3ZvaWQgMDpuLnRvU3RyaW5nKCkpfHwiIn0sdGhpcy5lcz1uZXcgQ3MuRyhvLHtmZXRjaDpmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHQudG9TdHJpbmcoKX0sZX0oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZldGNoKHQsVHMoe30sZSx7aGVhZGVyczpUcyh7fSxlLmhlYWRlcnMsaSl9KSl9KSl9KSxIcy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZTtudWxsPT0oZT1hLmVzKXx8ZS5hZGRFdmVudExpc3RlbmVyKHQsYS5oYW5kbGVFdmVudCl9KSksbnVsbD09KHI9dGhpcy5lcyl8fHIuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLChmdW5jdGlvbih0KXtpZihhLmluZm9Mb2coInN1YnNjcmliZVRvRXZlbnRzIiwiRXZlbnRTb3VyY2UgZXJyb3IiLCJjb2RlPSIrdC5jb2RlLCJtZXNzYWdlPSIrdC5tZXNzYWdlKSxhLmV2ZW50U291cmNlRXJyb3JDb3VudCsrLGEuZGlzY29ubmVjdEV2ZW50U291cmNlKCksIShhLmV2ZW50U291cmNlRXJyb3JDb3VudD4zKSl7dmFyIGU9TWF0aC5taW4oMWUzKk1hdGgucG93KDIsYS5ldmVudFNvdXJjZUVycm9yQ291bnQpLDFlNCk7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtVcygiW3N1YnNjcmliZVRvRXZlbnRzXSBFdmVudFNvdXJjZSByZWNvbm5lY3Rpb24iLGUpLGEuc3Vic2NyaWJlVG9FdmVudHMoKX0pLGUpfX0pKSx0aGlzLnNldFN0YXRlKE9zLkNoZWNraW5nRm9yTWVzc2FnZXMpLHRoaXMuc3Vic2NyaWJlZFRvRXZlbnRzPSEwO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksby5zZXRMYXN0RXZlbnRJZD1mdW5jdGlvbih0KXshdGhpcy5pbkFwcE1lc3NhZ2luZ0NvbmZpZ3x8dGhpcy5pbkFwcE1lc3NhZ2luZ0NvbmZpZyYmdGhpcy5pbkFwcE1lc3NhZ2luZ0NvbmZpZy5sYXN0RXZlbnRJZD50fHwoVXMoIltzZXRMYXN0RXZlbnRJZF0gU2V0dGluZyBsYXN0IGV2ZW50IGlkIix0KSx0aGlzLmluQXBwTWVzc2FnaW5nQ29uZmlnLmxhc3RFdmVudElkPXQsdGhpcy5zYXZlU3RhdGVUb1N0b3JhZ2UoKSl9LG8uc3RhcnRIZWFydGJlYXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMud3JpdGVIZWFydGJlYXRSZWNvcmQoKSx0aGlzLmhlYXJ0YmVhdFRpbWVyfHwodGhpcy5oZWFydGJlYXRUaW1lcj1zZXRJbnRlcnZhbCgoZnVuY3Rpb24oKXt0LmlzQWN0aXZlVGFiKCk/dC53cml0ZUhlYXJ0YmVhdFJlY29yZCgpOnQuc3RvcEhlYXJ0YmVhdCgpfSksNWUzKSl9LG8ud3JpdGVIZWFydGJlYXRSZWNvcmQ9ZnVuY3Rpb24oKXt2YXIgdD17dGFiSWQ6dGhpcy50YWJJZCxsYXN0U2VlbkF0OkRhdGUubm93KCl9O1guTC5zZXQoTG8odGhpcy5hcHBJZCksSlNPTi5zdHJpbmdpZnkodCkpfSxvLnN0b3BIZWFydGJlYXQ9ZnVuY3Rpb24oKXt0aGlzLmhlYXJ0YmVhdFRpbWVyJiYoY2xlYXJJbnRlcnZhbCh0aGlzLmhlYXJ0YmVhdFRpbWVyKSx0aGlzLmhlYXJ0YmVhdFRpbWVyPW51bGwpfSxvLnN0YXJ0VG9rZW5SZWZyZXNoVGltZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMudXNlclZlcmlmaWNhdGlvbkVuYWJsZWQmJih0aGlzLnN0b3BUb2tlblJlZnJlc2hUaW1lcigpLHRoaXMucmVmcmVzaFRva2VuVGltZXI9c2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7dC5pc0FjdGl2ZVRhYigpP3QucmVmcmVzaFRva2VuSWZFeHBpcmVkKCk6dC5zdG9wVG9rZW5SZWZyZXNoVGltZXIoKX0pLDZlNCkpfSxvLnN0b3BUb2tlblJlZnJlc2hUaW1lcj1mdW5jdGlvbigpe3RoaXMucmVmcmVzaFRva2VuVGltZXImJihjbGVhckludGVydmFsKHRoaXMucmVmcmVzaFRva2VuVGltZXIpLHRoaXMucmVmcmVzaFRva2VuVGltZXI9bnVsbCl9LG8uc2V0QWN0aXZlVGFiSWQ9ZnVuY3Rpb24oKXt0aGlzLmlzQWN0aXZlVGFiKCl8fCh0aGlzLmluZm9Mb2coInNldEFjdGl2ZVRhYklkIiwic2V0dGluZyBhY3RpdmUgdGFiIGlkIiksWC5MLnNldChUbyx0aGlzLnRhYklkKSx0aGlzLnJlYWRUb2tlbkZyb21TdG9yYWdlKCksdGhpcy5zdGFydEhlYXJ0YmVhdCgpKX0sby5nZXRTdG9yYWdlS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnRJZD9rbyh0aGlzLmFwcElkLHRoaXMuZW52aXJvbm1lbnRJZCk6SW8odGhpcy5hcHBJZCl9LG8uaXNBY3RpdmVUYWI9ZnVuY3Rpb24oKXtVcygiW2lzQWN0aXZlVGFiXSBDaGVja2luZyBpZiB0YWIgaXMgYWN0aXZlIixYLkwuZ2V0KFRvKSx0aGlzLnRhYklkKTt2YXIgdD1YLkwuZ2V0KFRvKT09PXRoaXMudGFiSWQ7cmV0dXJuIHR8fHRoaXMuY2hlY2tBY3RpdmVUYWJMZWFzZSgyMDAqTWF0aC5yYW5kb20oKSksdH0sby5hZGRBY3RpdmVUYWJFdmVudExpc3RlbmVycz1mdW5jdGlvbigpe3ZhciB0LGU9dGhpczt6cy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbjt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcih0LGUuaGFuZGxlQWN0aXZlVGFiRXZlbnQpLG51bGw9PShuPSgwLFhvLiQpKCkpfHxuLmFkZEV2ZW50TGlzdGVuZXIodCxlLmhhbmRsZUFjdGl2ZVRhYkV2ZW50KX0pKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic3RvcmFnZSIsdGhpcy5oYW5kbGVTdG9yYWdlRXZlbnQpLG51bGw9PSh0PSgwLFhvLiQpKCkpfHx0LmFkZEV2ZW50TGlzdGVuZXIoInN0b3JhZ2UiLHRoaXMuaGFuZGxlU3RvcmFnZUV2ZW50KX0sby5yZW1vdmVBY3RpdmVUYWJFdmVudExpc3RlbmVycz1mdW5jdGlvbigpe3ZhciB0LGU9dGhpczt6cy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbjt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUuaGFuZGxlQWN0aXZlVGFiRXZlbnQpLG51bGw9PShuPSgwLFhvLiQpKCkpfHxuLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxlLmhhbmRsZUFjdGl2ZVRhYkV2ZW50KX0pKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigic3RvcmFnZSIsdGhpcy5oYW5kbGVTdG9yYWdlRXZlbnQpLG51bGw9PSh0PSgwLFhvLiQpKCkpfHx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInN0b3JhZ2UiLHRoaXMuaGFuZGxlU3RvcmFnZUV2ZW50KX0sby5nZXRTZXNzaW9uPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIG51bGw9PSh0PXRoaXMuc3RvcmUpP3ZvaWQgMDp0LmdldFN0YXRlKCkuc2Vzc2lvbn0sby5kaXNjb25uZWN0RXZlbnRTb3VyY2U9ZnVuY3Rpb24oKXt2YXIgdDtudWxsPT0odD10aGlzLmVzKXx8dC5jbG9zZSgpLHRoaXMuZXM9bnVsbCx0aGlzLnN1YnNjcmliZWRUb0V2ZW50cz0hMX0sby5zZXRTdGF0ZT1mdW5jdGlvbih0KXt0cnl7dGhpcy5jbGllbnRTdGF0ZT10LHRoaXMuc2F2ZVN0YXRlVG9TdG9yYWdlKCl9Y2F0Y2goZSl7dGhpcy5pbmZvTG9nKCJzZXRTdGF0ZSIsImZhaWxlZCB0byBzZXQgc3RhdGUiLCJlcnJvcj0iK2UsInN0YXRlPSIrdCl9fSxvLnVzZXI9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gbnVsbD09KHQ9dGhpcy5zdG9yZSk/dm9pZCAwOnQuZ2V0U3RhdGUoKS51c2VyfSxvLnVzZXJTYWxlc2ZvcmNlSWRlbnRpdHlUb2tlbj1mdW5jdGlvbigpe3ZhciB0O3JldHVybiBudWxsPT0odD10aGlzLnVzZXIoKSl8fG51bGw9PSh0PXQuY3VzdG9tQXR0cmlidXRlcyk/dm9pZCAwOnQuc2FsZXNmb3JjZV9pZGVudGl0eV90b2tlbn0sby5jb25uZWN0aW9uVHlwZT1mdW5jdGlvbigpe3ZhciB0LGU9KG51bGw9PSh0PXRoaXMuaW5BcHBNZXNzYWdpbmdDb25maWcpfHxudWxsPT0odD10LmNvbnRleHQpfHxudWxsPT0odD10LmVuZFVzZXIpfHxudWxsPT0odD10LnN1YmplY3QpP3ZvaWQgMDp0LnRvTG93ZXJDYXNlKCkpfHwiIjtyZXR1cm4tMSE9PWUuaW5kZXhPZigiL3VuYXV0aC8iKT9Bcy5VbnZlcmlmaWVkOi0xIT09ZS5pbmRleE9mKCIvYXV0aC8iKT9Bcy5WZXJpZmllZDpBcy5Vbmtub3dufSxvLnJlYWRUb2tlbkZyb21TdG9yYWdlPWZ1bmN0aW9uKCl7dmFyIHQ7dGhpcy5pbmZvTG9nKCJyZWFkVG9rZW5Gcm9tU3RvcmFnZSIsInJlYWRpbmcgdG9rZW4gZnJvbSBzdG9yYWdlIik7dmFyIGU9dGhpcy5nZXRTdG9yYWdlS2V5KCksbj1YLkwuZ2V0KGUpO2lmKG4pe3ZhciByPUpTT04ucGFyc2Uobik7bnVsbCE9ciYmbnVsbCE9KHQ9ci5pbkFwcE1lc3NhZ2luZ0NvbmZpZykmJnQuYWNjZXNzVG9rZW4/KHRoaXMuaW5BcHBNZXNzYWdpbmdDb25maWc9ci5pbkFwcE1lc3NhZ2luZ0NvbmZpZyx0aGlzLmxhc3RUb2tlblJlc2V0VGltZT1yLmxhc3RUb2tlblJlc2V0VGltZXx8MCx0aGlzLmluZm9Mb2coInJlYWRUb2tlbkZyb21TdG9yYWdlIiwiZm91bmQgdG9rZW4gaW4gc3RvcmFnZSwgdXBkYXRlZCIpKTp0aGlzLmluZm9Mb2coInJlYWRUb2tlbkZyb21TdG9yYWdlIiwibm8gdG9rZW4gZm91bmQgaW4gc3RvcmFnZSIpfWVsc2UgdGhpcy5pbmZvTG9nKCJyZWFkVG9rZW5Gcm9tU3RvcmFnZSIsIm5vIGNsaWVudCBzdGF0ZSBmb3VuZCIpfSxvLnNhdmVTdGF0ZVRvU3RvcmFnZT1mdW5jdGlvbigpe2lmKHRoaXMuaXNBY3RpdmVUYWIoKSl7dmFyIHQ9dGhpcy5nZXRTdG9yYWdlS2V5KCk7WC5MLnNldCh0LEpTT04uc3RyaW5naWZ5KHthcHBJZDp0aGlzLmFwcElkLGhvc3RuYW1lOnRoaXMuaG9zdG5hbWUsb3JnYW5pemF0aW9uSWQ6dGhpcy5vcmdhbml6YXRpb25JZCxlbnZpcm9ubWVudElkOnRoaXMuZW52aXJvbm1lbnRJZCxjbGllbnRTdGF0ZTp0aGlzLmNsaWVudFN0YXRlLGluQXBwTWVzc2FnaW5nQ29uZmlnOnRoaXMuaW5BcHBNZXNzYWdpbmdDb25maWcsbGFzdFRva2VuUmVzZXRUaW1lOnRoaXMubGFzdFRva2VuUmVzZXRUaW1lLHVzZXJWZXJpZmljYXRpb25FbmFibGVkOnRoaXMudXNlclZlcmlmaWNhdGlvbkVuYWJsZWR9KSl9ZWxzZSBVcygiW3NhdmVTdGF0ZVRvU3RvcmFnZV0gTm90IGFjdGl2ZSB0YWIsIHNraXBwaW5nIHNhdmUiKX0sby5yZWNvdmVyQWNjZXNzVG9rZW49ZnVuY3Rpb24oKXt2YXIgdD1OcyhqcygpLm1hcmsoKGZ1bmN0aW9uIHQoZSl7dmFyIG4scixvLGk7cmV0dXJuIGpzKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYobnVsbD09KG49dGhpcy5pbkFwcE1lc3NhZ2luZ0NvbmZpZyl8fCFuLmFjY2Vzc1Rva2VuKXt0Lm5leHQ9MjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsITApO2Nhc2UgMjppZih0aGlzLnJlYWRUb2tlbkZyb21TdG9yYWdlKCksbnVsbD09KHI9dGhpcy5pbkFwcE1lc3NhZ2luZ0NvbmZpZyl8fCFyLmFjY2Vzc1Rva2VuKXt0Lm5leHQ9NjticmVha31yZXR1cm4gdGhpcy5pbmZvTG9nKGUsInJlY292ZXJlZCBhY2Nlc3MgdG9rZW4gZnJvbSBzdG9yYWdlIiksdC5hYnJ1cHQoInJldHVybiIsITApO2Nhc2UgNjpyZXR1cm4gdC5uZXh0PTgsdGhpcy5nZXRUb2tlbigpO2Nhc2UgODppZihudWxsPT0obz10aGlzLmluQXBwTWVzc2FnaW5nQ29uZmlnKXx8IW8uYWNjZXNzVG9rZW4pe3QubmV4dD0xMTticmVha31yZXR1cm4gdGhpcy5pbmZvTG9nKGUsInJlY292ZXJlZCBhY2Nlc3MgdG9rZW4gdmlhIGZldGNoIiksdC5hYnJ1cHQoInJldHVybiIsITApO2Nhc2UgMTE6aWYodGhpcy5yZWFkVG9rZW5Gcm9tU3RvcmFnZSgpLG51bGw9PShpPXRoaXMuaW5BcHBNZXNzYWdpbmdDb25maWcpfHwhaS5hY2Nlc3NUb2tlbil7dC5uZXh0PTE1O2JyZWFrfXJldHVybiB0aGlzLmluZm9Mb2coZSwicmVjb3ZlcmVkIGFjY2VzcyB0b2tlbiBmcm9tIGNvbmN1cnJlbnQgZmV0Y2giKSx0LmFicnVwdCgicmV0dXJuIiwhMCk7Y2FzZSAxNTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsITEpO2Nhc2UgMTY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxvLmJ1aWxkTG9nZ2luZ1N0cmluZz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbixyLG89KG51bGw9PShuPXRoaXMuaW5BcHBNZXNzYWdpbmdDb25maWcpfHxudWxsPT0obj1uLmFjY2Vzc1Rva2VuKT92b2lkIDA6bi5zbGljZSgtNikpfHwibnVsbCIsaT0iIixhPWFyZ3VtZW50cy5sZW5ndGgsdT1uZXcgQXJyYXkoYT4yP2EtMjowKSxzPTI7czxhO3MrKyl1W3MtMl09YXJndW1lbnRzW3NdO3JldHVybiB1Lmxlbmd0aD4wJiYoaT0iIFsiK3UubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9KSkuam9pbigiXSBbIikrIl0iKSwiW2FwcF9pZD0iK3RoaXMuYXBwSWQrIl0gW3Rva2VuPSIrbysiXSBbdXNlcl9pZD0iKyhudWxsPT0ocj10aGlzLnVzZXIoKSk/dm9pZCAwOnIuaWQpKyJdIFt0YWJJZD0iK3RoaXMudGFiSWQrIl0gW21ldGhvZD0iK3QrIl0gW2lzQWN0aXZlVGFiPSIrdGhpcy5pc0FjdGl2ZVRhYigpKyJdICIrZStpfSxvLmluZm9Mb2c9ZnVuY3Rpb24odCxlKXt0cnl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkobj4yP24tMjowKSxvPTI7bzxuO28rKylyW28tMl09YXJndW1lbnRzW29dO3ZhciBpPXRoaXMuYnVpbGRMb2dnaW5nU3RyaW5nLmFwcGx5KHRoaXMsW3QsZV0uY29uY2F0KHIpKTsoMCxWLkEyKShpKSxVcyhpKX1jYXRjaCh0KXsoMCxWLnVvKSgiW2luZm9Mb2ddIGZhaWxlZCB0byBsb2cgaW5mbyBlcnJvcj0iK3QpfX0sby5lcnJvckxvZz1mdW5jdGlvbih0LGUpe3RyeXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuPjI/bi0yOjApLG89MjtvPG47bysrKXJbby0yXT1hcmd1bWVudHNbb107dmFyIGk9dGhpcy5idWlsZExvZ2dpbmdTdHJpbmcuYXBwbHkodGhpcyxbdCxlXS5jb25jYXQocikpOygwLFYudW8pKGkpLFVzKGkpfWNhdGNoKHQpeygwLFYudW8pKCJbZXJyb3JMb2ddIGZhaWxlZCB0byBsb2cgZXJyb3IgZXJyb3I9Iit0KX19LGU9dCxuJiZNcyhlLnByb3RvdHlwZSxuKSxyJiZNcyhlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9KCk7ZnVuY3Rpb24gRHModCl7cmV0dXJuIERzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxEcyh0KX1mdW5jdGlvbiBCcygpe0JzPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciB0LGU9e30sbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLG4pe3RbZV09bi52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxhPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIix1PWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyh0LGUsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtjKHt9LCIiKX1jYXRjaCh0KXtjPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1ufX1mdW5jdGlvbiBsKHQsZSxuLHIpe3ZhciBpPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgZz9lOmcsYT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBMKHJ8fFtdKTtyZXR1cm4gbyhhLCJfaW52b2tlIix7dmFsdWU6Tyh0LG4sdSl9KSxhfWZ1bmN0aW9uIGYodCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX1lLndyYXA9bDt2YXIgZD0ic3VzcGVuZGVkU3RhcnQiLHA9InN1c3BlbmRlZFlpZWxkIixoPSJleGVjdXRpbmciLHY9ImNvbXBsZXRlZCIseT17fTtmdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIG0oKXt9ZnVuY3Rpb24gYigpe312YXIgdz17fTtjKHcsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgXz1PYmplY3QuZ2V0UHJvdG90eXBlT2YsUz1fJiZfKF8oVChbXSkpKTtTJiZTIT09biYmci5jYWxsKFMsYSkmJih3PVMpO3ZhciB4PWIucHJvdG90eXBlPWcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodyk7ZnVuY3Rpb24gRSh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2ModCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQyh0LGUpe2Z1bmN0aW9uIG4obyxpLGEsdSl7dmFyIHM9Zih0W29dLHQsaSk7aWYoInRocm93IiE9PXMudHlwZSl7dmFyIGM9cy5hcmcsbD1jLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09RHMobCkmJnIuY2FsbChsLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCxhLHUpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LGEsdSl9KSk6ZS5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxhKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCxhLHUpfSkpfXUocy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIE8oZSxuLHIpe3ZhciBvPWQ7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PWgpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09dil7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9QSh1LHIpO2lmKHMpe2lmKHM9PT15KWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWQpdGhyb3cgbz12LHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz1oO3ZhciBjPWYoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT92OnAsYy5hcmc9PT15KWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89dixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIEEoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LEEoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSkseTt2YXIgaT1mKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwseTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwseSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCx5KX1mdW5jdGlvbiBJKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIGsodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIEwodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChJLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFQoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW2FdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGk9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBpLm5leHQ9aX19dGhyb3cgbmV3IFR5cGVFcnJvcihEcyhlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiBtLnByb3RvdHlwZT1iLG8oeCwiY29uc3RydWN0b3IiLHt2YWx1ZTpiLGNvbmZpZ3VyYWJsZTohMH0pLG8oYiwiY29uc3RydWN0b3IiLHt2YWx1ZTptLGNvbmZpZ3VyYWJsZTohMH0pLG0uZGlzcGxheU5hbWU9YyhiLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT1tfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxiKToodC5fX3Byb3RvX189YixjKHQscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh4KSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxFKEMucHJvdG90eXBlKSxjKEMucHJvdG90eXBlLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUMsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBDKGwodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sRSh4KSxjKHgscywiR2VuZXJhdG9yIiksYyh4LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyh4LCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVQsTC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkwscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKGspLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyx5KTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLHl9LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksayhuKSx5fX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO2sobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlQoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSx5fX0sZX1mdW5jdGlvbiBWcyh0LGUsbixyLG8saSxhKXt0cnl7dmFyIHU9dFtpXShhKSxzPXUudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbih0KX11LmRvbmU/ZShzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfXZhciBHcz1mdW5jdGlvbigpe3ZhciB0LGU9KHQ9QnMoKS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciBuO3JldHVybiBCcygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKG49ZS5nZXRTdGF0ZSgpLnNlc3Npb24pe3QubmV4dD0zO2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOnJldHVybiB0Lm5leHQ9NSxIby5BLnBvc3Qoe3VybDooMCx1by56aikoKS5hcGlfYmFzZSsiL21lc3Nlbmdlci93ZWIvc3RhbmRhbG9uZS9zYWxlc2ZvcmNlL2dldF9pbmFwcF9jb25maWciLHNlc3Npb246bixwYXJhbXM6e2FwcF9pZDpuLmFwcElkfX0pO2Nhc2UgNTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSxmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpe1ZzKGkscixvLGEsdSwibmV4dCIsdCl9ZnVuY3Rpb24gdSh0KXtWcyhpLHIsbyxhLHUsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKTtmdW5jdGlvbiBxcyh0KXtyZXR1cm4gcXM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHFzKHQpfWZ1bmN0aW9uIFdzKCl7V3M9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnP2U6ZyxhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IEwocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpPKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIscD0ic3VzcGVuZGVkWWllbGQiLGg9ImV4ZWN1dGluZyIsdj0iY29tcGxldGVkIix5PXt9O2Z1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gbSgpe31mdW5jdGlvbiBiKCl7fXZhciB3PXt9O2ModyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBfPU9iamVjdC5nZXRQcm90b3R5cGVPZixTPV8mJl8oXyhUKFtdKSkpO1MmJlMhPT1uJiZyLmNhbGwoUyxhKSYmKHc9Uyk7dmFyIHg9Yi5wcm90b3R5cGU9Zy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh3KTtmdW5jdGlvbiBFKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBDKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT1xcyhsKSYmci5jYWxsKGwsIl9fYXdhaXQiKT9lLnJlc29sdmUobC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUobCkudGhlbigoZnVuY3Rpb24odCl7Yy52YWx1ZT10LGEoYyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShzLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gTyhlLG4scil7dmFyIG89ZDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09aCl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT12KXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1BKHUscik7aWYocyl7aWYocz09PXkpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09ZCl0aHJvdyBvPXYsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPWg7dmFyIGM9ZihlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP3Y6cCxjLmFyZz09PXkpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz12LHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gQShlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsQShlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSx5O3ZhciBpPWYobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCx5O3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCx5KTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLHkpfWZ1bmN0aW9uIEkodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gayh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gTCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEksdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gVChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKHFzKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIG0ucHJvdG90eXBlPWIsbyh4LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSksbyhiLCJjb25zdHJ1Y3RvciIse3ZhbHVlOm0sY29uZmlndXJhYmxlOiEwfSksbS5kaXNwbGF5TmFtZT1jKGIscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PW18fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGIpOih0Ll9fcHJvdG9fXz1iLGModCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHgpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LEUoQy5wcm90b3R5cGUpLGMoQy5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QyxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEMobCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxFKHgpLGMoeCxzLCJHZW5lcmF0b3IiKSxjKHgsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHgsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9VCxMLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TCxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goayksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHkpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSkseX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxrKG4pLHl9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7ayhuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6VChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLHl9fSxlfWZ1bmN0aW9uIEtzKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gWnModCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7S3MoaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe0tzKGkscixvLGEsdSwidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19ZnVuY3Rpb24gSnMoKXtyZXR1cm4gSnM9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxKcy5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIFlzLFFzPUEoKSgiaW50ZXJjb20uc3RhbmRhbG9uZS5taWRkbGV3YXJlLnNhbGVzZm9yY2UtbWVzc2FnaW5nIiksWHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5hcHBJZCxuPXQuaG9zdG5hbWUscj10Lm9yZ2FuaXphdGlvbklkLG89dC51c2VyVmVyaWZpY2F0aW9uRW5hYmxlZCxpPXQuZW52aXJvbm1lbnRJZCxhPXQuc3RvcmUsdT10LmRpc3BhdGNoLHM9dC5pbkFwcE1lc3NhZ2luZ0NvbmZpZztyZXR1cm4gWXM9bmV3IEZzKHthcHBJZDplLGhvc3RuYW1lOm4sb3JnYW5pemF0aW9uSWQ6cix1c2VyVmVyaWZpY2F0aW9uRW5hYmxlZDpvLGVudmlyb25tZW50SWQ6aSxzdG9yZTphLGRpc3BhdGNoOnUsaW5BcHBNZXNzYWdpbmdDb25maWc6c30pfSwkcz1mdW5jdGlvbih0LGUpe3ZhciBuO2lmKFlzKXJldHVybiBZcy5zdG9yZT10LFlzO3ZhciByPW51bGw9PShuPXQuZ2V0U3RhdGUoKS5zZXNzaW9uKT92b2lkIDA6bi5hcHBJZDtpZihyKXt2YXIgbz1mdW5jdGlvbih0LGUpe3JldHVybiBQbyh0KSxlP1guTC5nZXQoa28odCxlKSk6WC5MLmdldChJbyh0KSl9KHIsKDAsa3MudSkoKSk7aWYobyl7dmFyIGk7dHJ5e2k9SlNPTi5wYXJzZShvKSx0JiYoaS5zdG9yZT10KX1jYXRjaCh0KXtyZXR1cm59cmV0dXJuIFhzKEpzKHt1c2VyVmVyaWZpY2F0aW9uRW5hYmxlZDohMX0saSx7ZGlzcGF0Y2g6ZSxzdG9yZTp0fSkpfX19LHRjPWZ1bmN0aW9uKCl7dmFyIHQ9WnMoV3MoKS5tYXJrKChmdW5jdGlvbiB0KGUsbil7dmFyIHIsbyxpLGEsdSxzLGMsbDtyZXR1cm4gV3MoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZigocj1lLmdldFN0YXRlKCkpLnNlc3Npb24pe3QubmV4dD0zO2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOnJldHVybiB0Lm5leHQ9NSxHcyhlKTtjYXNlIDU6aWYobnVsbCE9KG89dC5zZW50KSYmby5vayl7dC5uZXh0PTg7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDg6cmV0dXJuIGk9by5ib2R5LGE9aS5ob3N0bmFtZSx1PWkub3JnYW5pemF0aW9uSWQscz1pLnVzZXJWZXJpZmljYXRpb25FbmFibGVkLGM9aS5lbnZpcm9ubWVudElkZW50aWZpZXIsbD0oMCxrcy51KSgpfHxjLHQuYWJydXB0KCJyZXR1cm4iLFhzKHthcHBJZDpyLnNlc3Npb24uYXBwSWQsaG9zdG5hbWU6YSxvcmdhbml6YXRpb25JZDp1LHVzZXJWZXJpZmljYXRpb25FbmFibGVkOnMsZW52aXJvbm1lbnRJZDpsLGRpc3BhdGNoOm4sc3RvcmU6ZX0pKTtjYXNlIDExOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpO3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCk7dmFyIGVjLG5jPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gWnMoV3MoKS5tYXJrKChmdW5jdGlvbiBuKHIpe3ZhciBvLGksYSx1LHMsYyxsLGYsZCxwLGgsdix5LGcsbSxiLHcsXyxTLHgsRSxDLE8sQSxJLGssTCxULGosUCxOLE0sUixVLHosSDtyZXR1cm4gV3MoKS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpvPWUociksaT1yLHU9KGE9dCkuZGlzcGF0Y2gsbi50MD1pLnR5cGUsbi5uZXh0PW4udDA9PT1GLkx2UD83Om4udDA9PT1GLlJ3cT8xOTpuLnQwPT09Ri51dkl8fG4udDA9PT1GLmZFQ3x8bi50MD09PUYubUdYPzI0Om4udDA9PT1GLkhNdT80MjpuLnQwPT09Ri5OZmI/ODI6ODU7YnJlYWs7Y2FzZSA3OmlmKGM9KHM9aSkuY29udmVyc2F0aW9uSWQsbD1zLmhvc3RuYW1lLGY9cy5vcmdhbml6YXRpb25JZCxkPXMudXNlclZlcmlmaWNhdGlvbkVuYWJsZWQscD0kcyhhLHUpKXtuLm5leHQ9MTU7YnJlYWt9aWYodj1udWxsPT0oaD1hLmdldFN0YXRlKCkuc2Vzc2lvbik/dm9pZCAwOmguYXBwSWQpe24ubmV4dD0xNDticmVha310aHJvdyBuZXcgRXJyb3IoIkFwcCBpZCBub3QgcHJlc2VudCBpbiBTZXNzaW9uIik7Y2FzZSAxNDpwPVhzKHtob3N0bmFtZTpsLG9yZ2FuaXphdGlvbklkOmYsYXBwSWQ6dix1c2VyVmVyaWZpY2F0aW9uRW5hYmxlZDpkLGRpc3BhdGNoOnUsc3RvcmU6YX0pO2Nhc2UgMTU6cmV0dXJuIHk9KDAsZW8udmUpKGEuZ2V0U3RhdGUoKSksZz0hIXkuYWx3YXlzR2V0U2FsZXNmb3JjZVRva2VuLHAuaGFuZG92ZXJUb1NhbGVzZm9yY2UoTnVtYmVyKGMpLGcpLG4uYWJydXB0KCJicmVhayIsODUpO2Nhc2UgMTk6aWYobT0kcyhhLHUpKXtuLm5leHQ9MjI7YnJlYWt9cmV0dXJuIG4uYWJydXB0KCJicmVhayIsODUpO2Nhc2UgMjI6cmV0dXJuIG0uZ2V0T3JVcGRhdGVUb2tlbigpLG4uYWJydXB0KCJicmVhayIsODUpO2Nhc2UgMjQ6aWYodz0oYj1pKS5jb252ZXJzYXRpb25zLF89Yi5jb252ZXJzYXRpb24sUz0obnVsbD09dz92b2lkIDA6dy5jb252ZXJzYXRpb25zKXx8W19dLHg9Uy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlPSJzdGF0ZV9jbG9zZWQiPT09KG51bGw9PXQ/dm9pZCAwOnQuc3RhdGUpfHwobnVsbD09dD92b2lkIDA6dC5wcmV2ZW50RW5kVXNlclJlcGxpZXMpO3JldHVybihudWxsPT10P3ZvaWQgMDp0LmVzY2FsYXRlZFRvU2FsZXNmb3JjZSkmJiFlfSkpLDAhPT14Lmxlbmd0aCl7bi5uZXh0PTI5O2JyZWFrfXJldHVybiBuLmFicnVwdCgiYnJlYWsiLDg1KTtjYXNlIDI5OmlmKEU9JHMoYSx1KSl7bi5uZXh0PTQwO2JyZWFrfXJldHVybiBRcygidW5hYmxlIHRvIGdldCBjbGllbnQgdXNpbmcgc3RvcmFnZSwgZmV0Y2hpbmcgY29uZmlnIiksbi5uZXh0PTM0LHRjKGEsdSk7Y2FzZSAzNDppZihFPW4uc2VudCl7bi5uZXh0PTM4O2JyZWFrfXJldHVybiBRcygiZmFpbGVkIHRvIGdldCBjbGllbnQgdXNpbmcgY29uZmlnIiksbi5hYnJ1cHQoImJyZWFrIiw4NSk7Y2FzZSAzODpyZXR1cm4gbi5uZXh0PTQwLEUuZ2V0T3JVcGRhdGVUb2tlbigpO2Nhc2UgNDA6cmV0dXJuIHguZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYodClpZih0LnNhbGVzZm9yY2VfZXh0ZXJuYWxfcmVmZXJlbmNlKVFzKCJwZXJmb3JtaW5nIGhlYWx0aCBjaGVjayBmb3IgY29udmVyc2F0aW9uICVzIix0LmlkKSxFLnBlcmZvcm1IZWFsdGhDaGVjayhOdW1iZXIodC5pZCkpO2Vsc2V7dmFyIGU9am8oYS5nZXRTdGF0ZSgpLnVzZXIpO1FzKCJoYW5kaW5nIG92ZXIgY29udmVyc2F0aW9uICVzIix0LmlkLGUpLHUoSnIoZSxFLmhvc3RuYW1lLHQuaWQsRS5vcmdhbml6YXRpb25JZCxFLnVzZXJWZXJpZmljYXRpb25FbmFibGVkKSl9fSkpLG4uYWJydXB0KCJicmVhayIsODUpO2Nhc2UgNDI6aWYoQz1pLnBhcnQsQT0oTz1DKS5ib2R5LEk9Ty5pZCxrPU51bWJlcihpLmNvbnZlcnNhdGlvbklkKSxMPSRzKGEsdSkpe24ubmV4dD00ODticmVha31yZXR1cm4gbi5hYnJ1cHQoImJyZWFrIiw4NSk7Y2FzZSA0ODppZihUPWEuZ2V0U3RhdGUoKSxudWxsIT0oaj0oMCxWci5WTikoVCxpLmNvbnZlcnNhdGlvbklkKSkmJmouZXNjYWxhdGVkVG9TYWxlc2ZvcmNlKXtuLm5leHQ9NTI7YnJlYWt9cmV0dXJuIG4uYWJydXB0KCJicmVhayIsODUpO2Nhc2UgNTI6UD0wO2Nhc2UgNTM6aWYoIShQPChBfHxbXSkubGVuZ3RoKSl7bi5uZXh0PTgxO2JyZWFrfU49QVtQXSxNPUkrIl8iK1Asbi50MT1OLnR5cGUsbi5uZXh0PSJwYXJhZ3JhcGgiPT09bi50MT81OToiaW1hZ2UiPT09bi50MT82MzoiYXR0YWNobWVudExpc3QiPT09bi50MT82Nzo3ODticmVhaztjYXNlIDU5OmlmKCFOLnRleHR8fCFMLnNlbmRNZXNzYWdlKXtuLm5leHQ9NjI7YnJlYWt9cmV0dXJuIG4ubmV4dD02MixMLnNlbmRNZXNzYWdlKGssTSxOLnRleHQpO2Nhc2UgNjI6cmV0dXJuIG4uYWJydXB0KCJicmVhayIsNzgpO2Nhc2UgNjM6aWYoISgidXJsImluIE4mJk4udXJsJiZMLnNlbmRGaWxlKSl7bi5uZXh0PTY2O2JyZWFrfXJldHVybiBuLm5leHQ9NjYsTC5zZW5kRmlsZShrLE0sTi51cmwsImF0dHJpYnV0aW9uImluIE4/Ti5hdHRyaWJ1dGlvbjp2b2lkIDApO2Nhc2UgNjY6cmV0dXJuIG4uYWJydXB0KCJicmVhayIsNzgpO2Nhc2UgNjc6aWYoISgiYXR0YWNobWVudHMiaW4gTiYmQXJyYXkuaXNBcnJheShOLmF0dGFjaG1lbnRzKSYmTC5zZW5kRmlsZSkpe24ubmV4dD03NzticmVha31SPTA7Y2FzZSA2OTppZighKFI8Ti5hdHRhY2htZW50cy5sZW5ndGgpKXtuLm5leHQ9Nzc7YnJlYWt9aWYoISgidXJsImluKFU9Ti5hdHRhY2htZW50c1tSXSkpfHwhVS51cmwpe24ubmV4dD03NDticmVha31yZXR1cm4gbi5uZXh0PTc0LEwuc2VuZEZpbGUoayxNKyJfIitSLFUudXJsLHZvaWQgMCk7Y2FzZSA3NDpSKyssbi5uZXh0PTY5O2JyZWFrO2Nhc2UgNzc6cmV0dXJuIG4uYWJydXB0KCJicmVhayIsNzgpO2Nhc2UgNzg6UCsrLG4ubmV4dD01MzticmVhaztjYXNlIDgxOnJldHVybiBuLmFicnVwdCgiYnJlYWsiLDg1KTtjYXNlIDgyOnJldHVybihIPSRzKGEsdSkpJiYidmlzaWJsZSI9PT0obnVsbD09KHo9d2luZG93LnBhcmVudCk/dm9pZCAwOnouZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlKSYmSC5zZXRBY3RpdmVUYWJJZCgpLG4uYWJydXB0KCJicmVhayIsODUpO2Nhc2UgODU6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLG8pO2Nhc2UgODY6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuKX0pKSl9fSxyYz1uKDk0MjE0KSxvYz1uKDU0MjQ4KSxpYz1uKDQ2NDk1KSxhYz1BKCkoImludGVyY29tLm1pZGRsZXdhcmUubWVzc2VuZ2VyLWZvcm0tY2hhbmdlIiksdWM9ZnVuY3Rpb24odCl7cmV0dXJuKDAsaWMubUIpKHQpPyJmaW5fb25seSI6ImNsYXNzaWMifSxzYz1bRi5Sd3EsUy50ei50eXBlXSxjYz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPXQuZ2V0U3RhdGUoKSxpPXVjKHIpLGE9ZShuKTtpZigoMCxKLnZlKShuKSYmZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1zYy5pbmRleE9mKHQudHlwZSl9KG4pKXt2YXIgdT10LmdldFN0YXRlKCkscz11Yyh1KTtpZihpPT09cylyZXR1cm4gYTtpZigiZmluX29ubHkiPT09cyYmKDAscC5ZKSh1KSl7YWMoIkF1dG8tb3BlbmluZyBtZXNzZW5nZXI6IGZvcm1DaGFuZ2VkPSIrcysiLCBpc1Nwb3RsaWdodFNoZWxsVmlzaWJsZT0iKygwLHAuWSkodSkrIiwgYWN0aW9uVHlwZT0iK24udHlwZSk7dmFyIGM9KDAsb2MuQlUpKHUpLGw9ci5hcHAuaXNNZXNzZW5nZXJPcGVuP0FuLmN5LnZpc2libGU6QW4uY3kuc2hyaW5rZWQsZj1uZXcgVVJMKGMsImh0dHA6Ly9wbGFjZWhvbGRlciIpO2Yuc2VhcmNoUGFyYW1zLnNldCgidmlzaWJpbGl0eSIsbCksdC5kaXNwYXRjaCgoMCxvLkhDKShmLnBhdGhuYW1lKyI/IitmLnNlYXJjaFBhcmFtcy50b1N0cmluZygpKSksdC5kaXNwYXRjaCgoMCxyYy5xeSkoKSl9fXJldHVybiBhfX19LGxjPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHIsbz1lKG4pO2lmKCEoMCxKLnZlKShuKXx8bi50eXBlIT09Ri5KNEMpcmV0dXJuIG87dmFyIGk9dC5nZXRTdGF0ZSgpLGE9KDAsbXIuVnkpKGkpO2lmKCFhKXJldHVybiBvO3ZhciB1PW51bGw9PShyPWkuY29udmVyc2F0aW9ucyk/dm9pZCAwOnIuYnlJZFthXTtyZXR1cm4obnVsbD09dT92b2lkIDA6dS5pc0ZldGNoaW5nKXx8dC5kaXNwYXRjaCgoMCxyby5RTCkoXy5BeSxhLHtpc1VwZGF0aW5nOiEwLHJlcXVlc3RPcmlnaW46Ik1lc3NlbmdlciBvcGVuIG9uIGNvbnZlcnNhdGlvbiByb3V0ZSJ9KSksb319fSxmYz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPWUobik7aWYoISgwLEoudmUpKG4pKXJldHVybiByO2lmKCgwLGVvLm1uKSh0LmdldFN0YXRlKCkpKXJldHVybiByO2lmKG4udHlwZT09PUYuSjRDKXt2YXIgbz10LmdldFN0YXRlKCk7by5hcHAuaXNCb290ZWQmJigwLG9jLkFlKShvKSYmKCgwLFYub1MpKCJtZXNzZW5nZXJfb3Blbl9zYWZldHlfbmV0X2Rpc3BhdGNoIix7dHJpZ2dlcjoiT1BFTl9NRVNTRU5HRVIifSksdC5kaXNwYXRjaCgoMCxvdC5XRikoKSkpfWlmKG4udHlwZT09PUYuUndxKXt2YXIgaT10LmdldFN0YXRlKCksYT0oMCxtci5vUCkoaSksdT0hYXx8Ii9sb2FkaW5nIj09PWEscz1pLmFwcC5vcGVuUmVxdWVzdEluRmxpZ2h0U2luY2UsYz0hIXMmJkRhdGUubm93KCktczw9b3QubzAsbD1pLmFwcC5pc01lc3Nlbmdlck9wZW4mJmkuYXBwLm9wZW5Db250ZW50TG9hZGluZ0ZhaWxlZCYmIWM7KGkuYXBwLmlzTWVzc2VuZ2VyT3BlbiYmdSYmKDAsb2MuQWUpKGkpfHxsKSYmKCgwLFYub1MpKCJtZXNzZW5nZXJfb3Blbl9zYWZldHlfbmV0X2Rpc3BhdGNoIix7dHJpZ2dlcjoiQ1JFQVRFX09SX1VQREFURV9VU0VSX1NVQ0NFU1MifSksdC5kaXNwYXRjaCgoMCxvdC5XRikoKSkpfXJldHVybiByfX19LGRjPW4oNzUxMjEpLHBjPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9ZShuKSxvPW47aWYoby50eXBlPT09Ri5XRXgpe3ZhciBpLGE9bnVsbD09KGk9by5jdXN0b21pemF0aW9uQXR0cmlidXRlcyk/dm9pZCAwOmkudGhlbWVNb2RlO2EmJnQuZGlzcGF0Y2goKDAsZGMuSCkoYSkpfXJldHVybiByfX19LGhjPWZ1bmN0aW9uKHQpe3ZhciBlLG4scj1mdW5jdGlvbih0KXt2YXIgcj10LnVzZXIsbz10LmNvb2tpZSxpPXQuYXBwSWQsYT10LmRvbWFpbix1PXQuYW5vbnltb3VzSWQscz10LmFub255bW91c1Nlc3Npb24sbD10LmFub255bW91c1Nlc3Npb25EdXJhdGlvbixmPXQuY3Jvc3NTaXRlQ29va2llcyxkPXQuY29va2llU2VjdXJlRmxhZyxwPXQuc2Vzc2lvbkV4cGlyeTtpZihScihlLHUpKXt2YXIgaD16cihsLCgwLElyLlBDKShyKT9OcjpQcik7VXIobywoMCxjLktLKShpKSx1LGgsYSxmLGQpLGU9dX1pZihScihuLHMpKXt2YXIgdj16cihsLE1yKSx5PXA7VXIobywoMCxjLkxBKShpKSxzLHYsYSxmLGQseSksbj1zfXZhciBnPW8ucmVhZCgoMCxjLnI0KShpKSl8fGtyLkEuZ2VuZXJhdGVVVUlEKCk7VXIobywoMCxjLnI0KShpKSxnLFByLGEsZixkKX07cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24obyl7dmFyIGk9byxhPWUuZ2V0U3RhdGUoKTtpZihmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlPT09Ri5Sd3F9KGkpKXtpZighYS5zZXNzaW9uKXJldHVybjt2YXIgdT1hLnNlc3Npb24uYXBwSWQscz1hLnVzZXIuYW5vbnltb3VzU2Vzc2lvbkR1cmF0aW9uLGw9aS51c2VyLGY9bC5hbm9ueW1vdXNJZCxkPWwuYW5vbnltb3VzU2Vzc2lvbixwPWwuc2Vzc2lvbkV4cGlyeSxoPWkudXNlci5hcHAub3JpZ2luQ29va2llRG9tYWluLHY9aS51c2VyLmFwcC5mZWF0dXJlcyx5PXYuY3Jvc3NTaXRlQ29va2llcyxnPXYuY29va2llU2VjdXJlRmxhZyxtPUhyKHtkb21haW5TZXR0aW5nOmEuYXBwLmNvb2tpZURvbWFpbixvcmlnaW5Db29raWVEb21haW46aCxtZXRhOnthY3Rpb246aS50eXBlLHJvbGU6aS51c2VyJiZpLnVzZXIucm9sZX19KTtyKHt1c2VyOmkudXNlcixjb29raWU6dCxhcHBJZDp1LGRvbWFpbjptLGFub255bW91c0lkOmYsYW5vbnltb3VzU2Vzc2lvbjpkLGFub255bW91c1Nlc3Npb25EdXJhdGlvbjpzLGNyb3NzU2l0ZUNvb2tpZXM6bnVsbCE9eSYmeSxjb29raWVTZWN1cmVGbGFnOm51bGwhPWcmJmcsc2Vzc2lvbkV4cGlyeTpwfSl9ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlPT09Ri5xalN9KGkpKXt2YXIgYj1hLnNlc3Npb24sdz1hLmFwcC5vcmlnaW5Db29raWVEb21haW4sXz1Icih7ZG9tYWluU2V0dGluZzphLmFwcC5jb29raWVEb21haW4sb3JpZ2luQ29va2llRG9tYWluOncsbWV0YTp7YWN0aW9uOmkudHlwZSxyb2xlOmEudXNlciYmYS51c2VyLnJvbGV9fSk7aWYoYiYmaS5jbGVhckNvb2tpZXMpe3ZhciBTPWIuYXBwSWQ7dC5jbGVhcigoMCxjLkxBKShTKSx7ZG9tYWluOl8scGF0aDpUcn0pLHQuY2xlYXIoKDAsYy5LSykoUykse2RvbWFpbjpfLHBhdGg6VHJ9KSx0LmNsZWFyKCgwLGMubnUpKCkse2RvbWFpbjpfLHBhdGg6VHJ9KX19ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlPT09Ri5vUDl9KGkpKXtpZighYS5zZXNzaW9uKXJldHVybiBuKG8pO3ZhciB4PWEuc2Vzc2lvbi5hcHBJZCxFPWEuYXBwLmZlYXR1cmVzLEM9RS5jcm9zc1NpdGVDb29raWVzLE89RS5jb29raWVTZWN1cmVGbGFnLEE9SHIoe2RvbWFpblNldHRpbmc6YS5hcHAuY29va2llRG9tYWluLG9yaWdpbkNvb2tpZURvbWFpbjphLmFwcC5vcmlnaW5Db29raWVEb21haW4sbWV0YTp7YWN0aW9uOmkudHlwZX19KTtyKHt1c2VyOmEudXNlcixjb29raWU6dCxhcHBJZDp4LGRvbWFpbjpBLGFub255bW91c1Nlc3Npb246aS5hbm9ueW1vdXNTZXNzaW9uLGFub255bW91c1Nlc3Npb25EdXJhdGlvbjpudWxsLGNyb3NzU2l0ZUNvb2tpZXM6bnVsbCE9QyYmQyxjb29raWVTZWN1cmVGbGFnOm51bGwhPU8mJk8sc2Vzc2lvbkV4cGlyeTppLnNlc3Npb25FeHBpcnl9KX1yZXR1cm4gbihvKX19fX0oYS5BKSx2Yz11YSgoZnVuY3Rpb24odCl7dmFyIGUsbj10LmFwcCxyPW4uc2VsZlNlcnZlU3VnZ2VzdGlvbnNNYXRjaCxvPW4ub3BlbkNvbmZpZyxpPW4ubmFtZSxhPW4uZmVhdHVyZXMsdT1hLmFub255bW91c0luYm91bmRNZXNzYWdlcyxzPWEuZ29vZ2xlQW5hbHl0aWNzLGM9YS5odWJzcG90SW5zdGFsbGVkLGw9YS5pbmJvdW5kTWVzc2FnZXMsZj1hLm1hcmtldG9FbnJpY2htZW50SW5zdGFsbGVkLGQ9YS5nb29nbGVBbmFseXRpY3M0SW50ZWdyYXRpb24scD1hLmltcHJvdmVPcGVuQmVoYXZpb3IsaD1uLmhlbHBDZW50ZXJTaXRlVXJsLHY9bi5pbmJvdW5kQ29udmVyc2F0aW9uc0Rpc2FibGVkLHk9bi5pc0RldmVsb3BlcldvcmtzcGFjZSxnPW4uY3VzdG9tR29vZ2xlQW5hbHl0aWNzVHJhY2tlcklkLG09dC5sYXVuY2hlci5pc0xhdW5jaGVyRW5hYmxlZCxiPXQubGF1bmNoZXJTZXR0aW5ncyx3PXQubWVzc2FnZS5jb252ZXJzYXRpb25JZCxfPXQub3Blbk9uQm9vdCxTPV8udHlwZSx4PV8ubWV0YWRhdGEsRT10LnVzZXIsQz1FLmlkLE89RS5yb2xlLEE9RS5sb2NhbGUsST1FLmhhc0NvbnZlcnNhdGlvbnMsaz10LnJvdXRlcixMPXQuY29udmVyc2F0aW9ucyxUPXQubGF1bmNoZXJEaXNjb3ZlcnlNb2RlLGo9TD9MLmJ5SWQ6e307cmV0dXJue2FwcDp7b3BlbkNvbmZpZzpvLHNlbGZTZXJ2ZVN1Z2dlc3Rpb25zTWF0Y2g6cixuYW1lOmksZmVhdHVyZXM6e2Fub255bW91c0luYm91bmRNZXNzYWdlczp1LGdvb2dsZUFuYWx5dGljczpzLGh1YnNwb3RJbnN0YWxsZWQ6YyxpbmJvdW5kTWVzc2FnZXM6bCxtYXJrZXRvRW5yaWNobWVudEluc3RhbGxlZDpmLGdvb2dsZUFuYWx5dGljczRJbnRlZ3JhdGlvbjpkLGltcHJvdmVPcGVuQmVoYXZpb3I6cH0saGVscENlbnRlclNpdGVVcmw6aCxpbmJvdW5kQ29udmVyc2F0aW9uc0Rpc2FibGVkOnYsaXNEZXZlbG9wZXJXb3Jrc3BhY2U6eSxjdXN0b21Hb29nbGVBbmFseXRpY3NUcmFja2VySWQ6Z30sbGF1bmNoZXI6e2lzTGF1bmNoZXJFbmFibGVkOm19LGxhdW5jaGVyRGlzY292ZXJ5TW9kZTp7aGFzRGlzY292ZXJlZExhdW5jaGVyOm51bGwhPShlPW51bGw9PVQ/dm9pZCAwOlQuaGFzRGlzY292ZXJlZExhdW5jaGVyKSYmZX0sbGF1bmNoZXJTZXR0aW5nczpiLHVzZXI6e2lkOkMscm9sZTpPLGxvY2FsZTpBLGhhc0NvbnZlcnNhdGlvbnM6SX0sbWVzc2FnZTp7Y29udmVyc2F0aW9uSWQ6d30sY29udmVyc2F0aW9uczp7YnlJZDpLaShqKX0sb3Blbk9uQm9vdDp7dHlwZTpTLG1ldGFkYXRhOngsbGFzdE9wZW5BdFRpbWVzdGFtcDpEYXRlLm5vdygpfSxvcGVyYXRvcjp7bGFzdENvbXBvc2VyRXZlbnQ6V2kodCl9LHJvdXRlcjprfX0pKSx5Yz0oMCxaLk5jKSgpOygwLHljLnN0YXJ0TGlzdGVuaW5nKSh7cHJlZGljYXRlOkFhLGVmZmVjdDooZWM9T2EoRWEoKS5tYXJrKChmdW5jdGlvbiB0KGUsbil7dmFyIHIsbyxpLGEsdSxzO3JldHVybiBFYSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKG89ZS5jb252ZXJzYXRpb25JZCxpPWUucGFydCxhPWkuY2xpZW50SWQpe3QubmV4dD00O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OnJldHVybiB1PW8rIjo6IithLG51bGw9PShyPWthLmdldCh1KSl8fHIuY2FuY2VsKCkscz1uLmZvcmsoT2EoRWEoKS5tYXJrKChmdW5jdGlvbiB0KGUpe3JldHVybiBFYSgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixlLmRlbGF5KDFlNCk7Y2FzZSAyOmlmKElhKG4uZ2V0U3RhdGUoKSxvLGEpKXt0Lm5leHQ9NDticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgNDooMCxWLm9TKSgiY29udmVyc2F0aW9uX3BhcnRfc3RyZWFtaW5nX3RpbWVvdXQiKSxuLmRpc3BhdGNoKCgwLHJvLktNKSh7Y29udmVyc2F0aW9uSWQ6byxjbGllbnRJZDphfSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKSksa2Euc2V0KHUscyksdC5uZXh0PTEwLHMucmVzdWx0O2Nhc2UgMTA6a2EuZ2V0KHUpPT09cyYma2EuZGVsZXRlKHUpO2Nhc2UgMTE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSksZnVuY3Rpb24odCxlKXtyZXR1cm4gZWMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9KTt2YXIgZ2M9ZnVuY3Rpb24odCl7dmFyIGU9ZWEoe3VwZGF0ZVJlYWx0aW1lQ2xpZW50OnppLHNodXRkb3duUmVhbHRpbWVDbGllbnQ6UmksZ2V0Q29udmVyc2F0aW9uOnJvLlFMLHVzZXJDb250ZW50U2VlbkJ5QWRtaW46cm8uZTgsYWRtaW5Jc1R5cGluZzpyby5CaCxjb252ZXJzYXRpb25SZWFkRWxzZXdoZXJlOnJvLnNfLHJldHJ5UmVhbHRpbWVDbGllbnQ6VWkscGVyZm9ybUhlYWx0aENoZWNrOkRpfSksbj1RaSh7Y2FwdHVyZUVycm9yOnMubDIsc2FmZUNvbnNvbGVFcnJvcjp1LmpQLGludGVyY29tQ2xpZW50Ol8uQXl9KTtyZXR1cm4oMCxaLlUxKSh7cmVkdWNlcjppcixwcmVsb2FkZWRTdGF0ZTp0LGRldlRvb2xzOiExLG1pZGRsZXdhcmU6ZnVuY3Rpb24odCl7cmV0dXJuIHQoe3RodW5rOiEwLGltbXV0YWJsZUNoZWNrOiExLHNlcmlhbGl6YWJsZUNoZWNrOiExfSkucHJlcGVuZCh5Yy5taWRkbGV3YXJlKS5jb25jYXQoW1BhLFNhLE9yLGUsbixoYyxzYSxzLmVWLFNzLHhzLG5jLGNjLGxjLGZjLHBjXSl9LGVuaGFuY2VyczpmdW5jdGlvbih0KXtyZXR1cm4gdCgpLmNvbmNhdChbdmMsWmkoKV0pfX0pfTtmdW5jdGlvbiBtYyh0KXtyZXR1cm4gbWM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LG1jKHQpfWZ1bmN0aW9uIGJjKCl7YmM9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dmFyIHQsZT17fSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89T2JqZWN0LmRlZmluZVByb3BlcnR5fHxmdW5jdGlvbih0LGUsbil7dFtlXT1uLnZhbHVlfSxpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGE9aS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLHU9aS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixzPWkudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBjKHQsZSxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pLHRbZV19dHJ5e2Moe30sIiIpfWNhdGNoKHQpe2M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW59fWZ1bmN0aW9uIGwodCxlLG4scil7dmFyIGk9ZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnP2U6ZyxhPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLHU9bmV3IEwocnx8W10pO3JldHVybiBvKGEsIl9pbnZva2UiLHt2YWx1ZTpPKHQsbix1KX0pLGF9ZnVuY3Rpb24gZih0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6InRocm93Iixhcmc6dH19fWUud3JhcD1sO3ZhciBkPSJzdXNwZW5kZWRTdGFydCIscD0ic3VzcGVuZGVkWWllbGQiLGg9ImV4ZWN1dGluZyIsdj0iY29tcGxldGVkIix5PXt9O2Z1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gbSgpe31mdW5jdGlvbiBiKCl7fXZhciB3PXt9O2ModyxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBfPU9iamVjdC5nZXRQcm90b3R5cGVPZixTPV8mJl8oXyhUKFtdKSkpO1MmJlMhPT1uJiZyLmNhbGwoUyxhKSYmKHc9Uyk7dmFyIHg9Yi5wcm90b3R5cGU9Zy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh3KTtmdW5jdGlvbiBFKHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX0pKX0pKX1mdW5jdGlvbiBDKHQsZSl7ZnVuY3Rpb24gbihvLGksYSx1KXt2YXIgcz1mKHRbb10sdCxpKTtpZigidGhyb3ciIT09cy50eXBlKXt2YXIgYz1zLmFyZyxsPWMudmFsdWU7cmV0dXJuIGwmJiJvYmplY3QiPT1tYyhsKSYmci5jYWxsKGwsIl9fYXdhaXQiKT9lLnJlc29sdmUobC5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtuKCJuZXh0Iix0LGEsdSl9KSwoZnVuY3Rpb24odCl7bigidGhyb3ciLHQsYSx1KX0pKTplLnJlc29sdmUobCkudGhlbigoZnVuY3Rpb24odCl7Yy52YWx1ZT10LGEoYyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG4oInRocm93Iix0LGEsdSl9KSl9dShzLmFyZyl9dmFyIGk7byh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBlKChmdW5jdGlvbihlLG8pe24odCxyLGUsbyl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gTyhlLG4scil7dmFyIG89ZDtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZihvPT09aCl0aHJvdyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKG89PT12KXtpZigidGhyb3ciPT09aSl0aHJvdyBhO3JldHVybnt2YWx1ZTp0LGRvbmU6ITB9fWZvcihyLm1ldGhvZD1pLHIuYXJnPWE7Oyl7dmFyIHU9ci5kZWxlZ2F0ZTtpZih1KXt2YXIgcz1BKHUscik7aWYocyl7aWYocz09PXkpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihvPT09ZCl0aHJvdyBvPXYsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtvPWg7dmFyIGM9ZihlLG4scik7aWYoIm5vcm1hbCI9PT1jLnR5cGUpe2lmKG89ci5kb25lP3Y6cCxjLmFyZz09PXkpY29udGludWU7cmV0dXJue3ZhbHVlOmMuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09Yy50eXBlJiYobz12LHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9Yy5hcmcpfX19ZnVuY3Rpb24gQShlLG4pe3ZhciByPW4ubWV0aG9kLG89ZS5pdGVyYXRvcltyXTtpZihvPT09dClyZXR1cm4gbi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yJiZlLml0ZXJhdG9yLnJldHVybiYmKG4ubWV0aG9kPSJyZXR1cm4iLG4uYXJnPXQsQShlLG4pLCJ0aHJvdyI9PT1uLm1ldGhvZCl8fCJyZXR1cm4iIT09ciYmKG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIityKyInIG1ldGhvZCIpKSx5O3ZhciBpPWYobyxlLml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCx5O3ZhciBhPWkuYXJnO3JldHVybiBhP2EuZG9uZT8obltlLnJlc3VsdE5hbWVdPWEudmFsdWUsbi5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLG4uZGVsZWdhdGU9bnVsbCx5KTphOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLHkpfWZ1bmN0aW9uIEkodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gayh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gTCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEksdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gVChlKXtpZihlfHwiIj09PWUpe3ZhciBuPWVbYV07aWYobilyZXR1cm4gbi5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiBuKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKHIuY2FsbChlLG8pKXJldHVybiBuLnZhbHVlPWVbb10sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9dCxuLmRvbmU9ITAsbn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKG1jKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIG0ucHJvdG90eXBlPWIsbyh4LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSksbyhiLCJjb25zdHJ1Y3RvciIse3ZhbHVlOm0sY29uZmlndXJhYmxlOiEwfSksbS5kaXNwbGF5TmFtZT1jKGIscywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PW18fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGIpOih0Ll9fcHJvdG9fXz1iLGModCxzLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHgpLHR9LGUuYXdyYXA9ZnVuY3Rpb24odCl7cmV0dXJue19fYXdhaXQ6dH19LEUoQy5wcm90b3R5cGUpLGMoQy5wcm90b3R5cGUsdSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9QyxlLmFzeW5jPWZ1bmN0aW9uKHQsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEMobCh0LG4scixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmEubmV4dCgpfSkpfSxFKHgpLGMoeCxzLCJHZW5lcmF0b3IiKSxjKHgsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKHgsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0KHQpLG49W107Zm9yKHZhciByIGluIGUpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiB0KCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiBlKXJldHVybiB0LnZhbHVlPXIsdC5kb25lPSExLHR9cmV0dXJuIHQuZG9uZT0hMCx0fX0sZS52YWx1ZXM9VCxMLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TCxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goayksIWUpZm9yKHZhciBuIGluIHRoaXMpInQiPT09bi5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLG4pJiYhaXNOYU4oK24uc2xpY2UoMSkpJiYodGhpc1tuXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciBuPXRoaXM7ZnVuY3Rpb24gbyhyLG8pe3JldHVybiB1LnR5cGU9InRocm93Iix1LmFyZz1lLG4ubmV4dD1yLG8mJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSx1PWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9ci5jYWxsKGEsImNhdGNoTG9jIiksYz1yLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHkpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSkseX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxrKG4pLHl9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7ayhuKX1yZXR1cm4gb319dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6VChlKSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLHl9fSxlfWZ1bmN0aW9uIHdjKHQsZSxuLHIsbyxpLGEpe3RyeXt2YXIgdT10W2ldKGEpLHM9dS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuKHQpfXUuZG9uZT9lKHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gX2ModCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGEodCl7d2MoaSxyLG8sYSx1LCJuZXh0Iix0KX1mdW5jdGlvbiB1KHQpe3djKGkscixvLGEsdSwidGhyb3ciLHQpfWEodm9pZCAwKX0pKX19dmFyIFNjPUEoKSgiaW50ZXJjb20uYWN0aW9ucy5wYWdlLXZpZXctZXZlbnQiKSx4Yz0oMCx3LlM0KSgicGFnZS12aWV3LWV2ZW50L2NyZWF0ZSIsX2MoYmMoKS5tYXJrKChmdW5jdGlvbiB0KGUsbil7dmFyIHIsbyxpO3JldHVybiBiYygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKHI9bi5nZXRTdGF0ZSgpLChvPSgwLEMueEgpKCgwLEMueDgpKCkpKSYmIUVjKHIudXNlcixvKSl7dC5uZXh0PTU7YnJlYWt9cmV0dXJuIFNjKCJEdXBsaWNhdGUgcGFnZSB2aWV3IGV2ZW50LCBza2lwcGluZyIpLHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDU6cmV0dXJuIGk9ci5zZXNzaW9uLHQubmV4dD04LF8uQXkuY3JlYXRlUGFnZVZpZXdFdmVudCh7Y3VycmVudFVybDpvLHNlc3Npb246aX0pO2Nhc2UgODpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSkpLEVjPSgwLEUuUCkoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHt1cmw6ZSx1c2VyX2lkOnQuaWR9KX0pLDNlNSwyNSksQ2M9e2NyZWF0ZTp4YyxyZXNldERlZHVwOkVjLnJlc2V0fSxPYz1uKDMzNDcyKSxBYz1uKDc4NjUzKSxJYz1uKDMxNDAxKTtmdW5jdGlvbiBrYyh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgbj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPW4pe3ZhciByLG8saSxhLHU9W10scz0hMCxjPSExO3RyeXtpZihpPShuPW4uY2FsbCh0KSkubmV4dCwwPT09ZSl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47cz0hMX1lbHNlIGZvcig7IShzPShyPWkuY2FsbChuKSkuZG9uZSkmJih1LnB1c2goci52YWx1ZSksdS5sZW5ndGghPT1lKTtzPSEwKTt9Y2F0Y2godCl7Yz0hMCxvPXR9ZmluYWxseXt0cnl7aWYoIXMmJm51bGwhPW4ucmV0dXJuJiYoYT1uLnJldHVybigpLE9iamVjdChhKSE9PWEpKXJldHVybn1maW5hbGx5e2lmKGMpdGhyb3cgb319cmV0dXJuIHV9fSh0LGUpfHxmdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gTGModCxlKTt2YXIgbj17fS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/TGModCxlKTp2b2lkIDB9fSh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gTGModCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfXZhciBUYz0iI0ludGVyY29tRGVmYXVsdFdpZGdldCIsamM9WyJhcHBfaWQiLCJ1c2VyX2lkIiwiZW1haWwiLCJ1c2VyX2hhc2giLCJzZXNzaW9uX2R1cmF0aW9uIiwiY3VzdG9tX2RhdGEiLCJ1c2VyX2RhdGEiLCJ3aWRnZXQiLCJjdXN0b21fbGF1bmNoZXJfc2VsZWN0b3IiLCJoaWRlX2RlZmF1bHRfbGF1bmNoZXIiLCJlbWJlZF9tZXNzZW5nZXIiLCJhbGlnbm1lbnQiLCJhdXRvX29wZW4iLCJleHBhbmRfbWVzc2VuZ2VyIiwiaG9yaXpvbnRhbF9wYWRkaW5nIiwidmVydGljYWxfcGFkZGluZyIsImNvb2tpZV9kb21haW4iLCJiYWNrZ3JvdW5kX2NvbG9yIiwiYWN0aW9uX2NvbG9yIiwiYXBpX2Jhc2UiLCJwYWdlX3RpdGxlIiwiaW5zdGFsbGF0aW9uX3R5cGUiLCJpbnN0YWxsYXRpb25fdmVyc2lvbiIsInpfaW5kZXgiLCJwcm9kdWN0X3RvdXJzX3pfaW5kZXgiLCJkaXNhYmxlZCIsImhhbmRvZmZfd2l0aF9qYXZhc2NyaXB0IiwiYXV0aF90b2tlbnMiLCJoaWRlX2NvbnZlcnNhdGlvbl9oZWFkZXIiLCJoaWRlX25vdGlmaWNhdGlvbnMiLCJoaWRlX2Nsb3NlX2J1dHRvbiIsImhpZGVfZ3JhZGllbnQiLCJ0aGVtZV9tb2RlIiwibWVzc2VuZ2VyX3dpZHRoIiwibWVzc2VuZ2VyX2hlaWdodCIsIm1lc3Nlbmdlcl9lbnZpcm9ubWVudCIsIm1lc3Nlbmdlcl9zdHlsZV9pZCIsInN1Z2dlc3Rpb25zIiwiZG9fbm90X3NocmluayIsIm1lc3Nlbmdlcl9sYXlvdXQiLCJkZW1vX21vZGUiLCJsaW5rX2NvbG9yIiwiY29tcG9zZXJfc3Ryb2tlIl07ZnVuY3Rpb24gUGModCl7cmV0dXJuISgwLGdlLkkpKHQpfWZ1bmN0aW9uIE5jKHQpe3JldHVybiBqYy5pbmRleE9mKHQpPDB9ZnVuY3Rpb24gTWModCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZpbHRlcihOYykuZmlsdGVyKFBjKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHZvaWQgMCE9PXRbbl0mJihlW25dPXRbbl0pLGV9KSx7fSl9ZnVuY3Rpb24gUmModCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZpbHRlcihQYykucmVkdWNlKChmdW5jdGlvbihlLG4pe3ZhciByPXRbbl07cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10fShyKSYmKGVbbl09ciksZX0pLHt9KX1mdW5jdGlvbiBVYyh0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihmdW5jdGlvbih0KXtyZXR1cm4gdC5jdXN0b21fZGF0YT9NYyh0LmN1c3RvbV9kYXRhKTp7fX0odCksTWModCkpfWZ1bmN0aW9uIHpjKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZih0LnVzZXJfZGF0YSlyZXR1cm4gUmMoe2FwcElkOnQuYXBwX2lkLGVtYWlsOnQudXNlcl9kYXRhLmVtYWlsLHVzZXJJZDp0LnVzZXJfZGF0YS51c2VyX2lkLHVzZXJIYXNoOnQudXNlcl9kYXRhLnVzZXJfaGFzaCxpbnRlcmNvbVVzZXJKd3Q6dC51c2VyX2RhdGEuaW50ZXJjb21fdXNlcl9qd3QsbWVzc2VuZ2VyU3R5bGVJZDp0Lm1lc3Nlbmdlcl9zdHlsZV9pZH0pfSh0KXx8ZnVuY3Rpb24odCl7cmV0dXJuIFJjKHthcHBJZDp0LmFwcF9pZCxlbWFpbDp0LmVtYWlsLHVzZXJJZDp0LnVzZXJfaWQsdXNlckhhc2g6dC51c2VyX2hhc2gsaW50ZXJjb21Vc2VySnd0OnQuaW50ZXJjb21fdXNlcl9qd3QsbWVzc2VuZ2VyU3R5bGVJZDp0Lm1lc3Nlbmdlcl9zdHlsZV9pZH0pfSh0KX1mdW5jdGlvbiBIYyh0KXtyZXR1cm4gdCYmdC53aWRnZXQmJiEoMCxnZS5JKSh0LndpZGdldC5hY3RpdmF0b3IpJiZ0LndpZGdldC5hY3RpdmF0b3IhPT1UYz90LndpZGdldC5hY3RpdmF0b3I6bnVsbH1mdW5jdGlvbiBGYyh0KXtyZXR1cm4oMCxnZS5JKSh0LmN1c3RvbV9sYXVuY2hlcl9zZWxlY3Rvcik/SGModCk6dC5jdXN0b21fbGF1bmNoZXJfc2VsZWN0b3J9ZnVuY3Rpb24gRGModCl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdC5oaWRlX2RlZmF1bHRfbGF1bmNoZXI/dC5oaWRlX2RlZmF1bHRfbGF1bmNoZXI/ImhpZGUiOiJzaG93IjpmdW5jdGlvbih0KXtyZXR1cm4gdC53aWRnZXQmJnQud2lkZ2V0LmFjdGl2YXRvcj09PVRjPyJzaG93Ijoibm90LXByZXNlbnQifSh0KX1mdW5jdGlvbiBCYyh0KXt2YXIgZT17YWxpZ25tZW50OnQuYWxpZ25tZW50LGF1dG9PcGVuOnQuYXV0b19vcGVuLGhvcml6b250YWxQYWRkaW5nOnQuaG9yaXpvbnRhbF9wYWRkaW5nLHZlcnRpY2FsUGFkZGluZzp0LnZlcnRpY2FsX3BhZGRpbmcsY29va2llRG9tYWluOnQuY29va2llX2RvbWFpbixlbWJlZE1lc3Nlbmdlcjp0LmVtYmVkX21lc3NlbmdlcixleHBhbmRNZXNzZW5nZXI6dC5leHBhbmRfbWVzc2VuZ2VyLGNvbG9yOnQuYWN0aW9uX2NvbG9yLHNlY29uZGFyeUNvbG9yOnQuYmFja2dyb3VuZF9jb2xvcix6SW5kZXg6dC56X2luZGV4LHByb2R1Y3RUb3Vyc1pJbmRleDp0LnByb2R1Y3RfdG91cnNfel9pbmRleCxoaWRlQ29udmVyc2F0aW9uSGVhZGVyOnQuaGlkZV9jb252ZXJzYXRpb25faGVhZGVyLGhpZGVOb3RpZmljYXRpb25zOnQuaGlkZV9ub3RpZmljYXRpb25zLGhpZGVDbG9zZUJ1dHRvbjp0LmhpZGVfY2xvc2VfYnV0dG9uLGhpZGVHcmFkaWVudDp0LmhpZGVfZ3JhZGllbnQsdGhlbWVNb2RlOnQudGhlbWVfbW9kZSxsYXVuY2hlclRleHQ6dC5sYXVuY2hlcl90ZXh0LG1lc3NlbmdlckxheW91dDp0Lm1lc3Nlbmdlcl9sYXlvdXQsbWVzc2VuZ2VyV2lkdGg6dC5tZXNzZW5nZXJfd2lkdGgsbWVzc2VuZ2VySGVpZ2h0OnQubWVzc2VuZ2VyX2hlaWdodCxjb3JuZXJTdHlsZTp0LmNvcm5lcl9zdHlsZSxnbG93Q29sb3I6dC5nbG93X2NvbG9yLGNvbXBvc2VyU3Ryb2tlOnQuY29tcG9zZXJfc3Ryb2tlLHNob3dCb29rTWVldGluZ0J1dHRvbjp0LnNob3dfYm9va19tZWV0aW5nX2J1dHRvbixzdWdnZXN0aW9uczp0LnN1Z2dlc3Rpb25zLGRvTm90U2hyaW5rOnQuZG9fbm90X3NocmluayxsaW5rQ29sb3I6dC5saW5rX2NvbG9yfTtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PWZ1bmN0aW9uKHQsZSxuKXtpZihlJiYhQXJyYXkuaXNBcnJheShlKSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIExjKGUsdm9pZCAwIT09biYmbjxyP246cil9cmV0dXJuIHQoZSxuKX0oa2MsdCwyKVsxXX0pKSl9dmFyIFZjPW4oMzIzNTApLEdjPW4oOTU1NjUpLHFjPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdC5zZWxmIT09dC50b3B9Y2F0Y2godCl7cmV0dXJuITF9fSxXYz1mdW5jdGlvbih0KXt0cnl7dmFyIGUsbjtyZXR1cm4obnVsbCE9KGU9bnVsbD09KG49dC5kb2N1bWVudC5ib2R5KXx8bnVsbD09KG49bi50ZXh0KT92b2lkIDA6bi5sZW5ndGgpP2U6MCk+MH1jYXRjaCh0KXtyZXR1cm4hMX19O2Z1bmN0aW9uIEtjKHQsZSl7dmFyIG49InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG4pcmV0dXJuKG49bi5jYWxsKHQpKS5uZXh0LmJpbmQobik7aWYoQXJyYXkuaXNBcnJheSh0KXx8KG49ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIFpjKHQsZSk7dmFyIG49e30udG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP1pjKHQsZSk6dm9pZCAwfX0odCkpfHxlJiZ0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXtuJiYodD1uKTt2YXIgcj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiByPj10Lmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6dFtyKytdfX19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfWZ1bmN0aW9uIFpjKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn12YXIgSmM9ZnVuY3Rpb24odCl7dmFyIGU9dC5zcGxpdCgvWz8jXS8pWzBdLG49ZS5zbGljZShlLmxhc3RJbmRleE9mKCIvIikrMSk7cmV0dXJuIi5qcyIhPT1uLnNsaWNlKC0zKT9udWxsOjA9PT1uLmluZGV4T2YoImZyYW1lIik/ImZyYW1lIjowPT09bi5pbmRleE9mKCJ2ZW5kb3IiKT8idmVuZG9yIjpudWxsfSxZYz0hMSxRYz1uKDkwOTM2KSxYYz1uKDQwMTI3KTt2YXIgJGM9bigyNjcwMyksdGw9big3MDQwMCksZWw9bigyMTEyOSksbmw9big4Nzc5OSkscmw9big0NTM4Nyksb2w9bnVsbDtmdW5jdGlvbiBpbCh0KXtvbD8oMCx1by5iNSkoKSYmY29uc29sZS5lcnJvcigiQmVmb3JlIHVubG9hZCBzdWJzY3JpcHRpb24gYWxyZWFkeSBleGlzdHMsIG5vdCBhZGRpbmcgY3VycmVudCBjYWxsYmFjayEiKToob2w9ZnVuY3Rpb24oKXt0KCl9LHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLG9sKSl9dmFyIGFsPW4oMTc3NzcpLHVsPW4oMzQ5NDYpLHNsPW4oODgxMTQpLGNsPW4oNzE2MjApLGxsPW4oOTA1MDIpO2Z1bmN0aW9uIGZsKHQpe3JldHVybiBmbD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sZmwodCl9ZnVuY3Rpb24gZGwoKXtyZXR1cm4gZGw9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxkbC5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcGwoKXtwbD1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gbCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGc/ZTpnLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgTChyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOk8odCxuLHUpfSksYX1mdW5jdGlvbiBmKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWw7dmFyIGQ9InN1c3BlbmRlZFN0YXJ0IixwPSJzdXNwZW5kZWRZaWVsZCIsaD0iZXhlY3V0aW5nIix2PSJjb21wbGV0ZWQiLHk9e307ZnVuY3Rpb24gZygpe31mdW5jdGlvbiBtKCl7fWZ1bmN0aW9uIGIoKXt9dmFyIHc9e307Yyh3LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIF89T2JqZWN0LmdldFByb3RvdHlwZU9mLFM9XyYmXyhfKFQoW10pKSk7UyYmUyE9PW4mJnIuY2FsbChTLGEpJiYodz1TKTt2YXIgeD1iLnByb3RvdHlwZT1nLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpO2Z1bmN0aW9uIEUodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEModCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPWYodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGw9Yy52YWx1ZTtyZXR1cm4gbCYmIm9iamVjdCI9PWZsKGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBPKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT1oKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PXYpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPUEodSxyKTtpZihzKXtpZihzPT09eSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89dixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289aDt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/djpwLGMuYXJnPT09eSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPXYsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBBKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxBKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLHk7dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLHk7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLHkpOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwseSl9ZnVuY3Rpb24gSSh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBrKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBMKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goSSx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBUKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IoZmwoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gbS5wcm90b3R5cGU9YixvKHgsImNvbnN0cnVjdG9yIix7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSxvKGIsImNvbnN0cnVjdG9yIix7dmFsdWU6bSxjb25maWd1cmFibGU6ITB9KSxtLmRpc3BsYXlOYW1lPWMoYixzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09bXx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsYik6KHQuX19wcm90b19fPWIsYyh0LHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeCksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sRShDLnByb3RvdHlwZSksYyhDLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1DLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQyhsKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LEUoeCksYyh4LHMsIkdlbmVyYXRvciIpLGMoeCxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMoeCwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1ULEwucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpMLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChrKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MseSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSx5fSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLGsobikseX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztrKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpUKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCkseX19LGV9ZnVuY3Rpb24gaGwodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiB2bCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXtobChpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7aGwoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX1mdW5jdGlvbiB5bCh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZ2woci5rZXkpLHIpfX1mdW5jdGlvbiBnbCh0KXt2YXIgZT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT1mbCh0KXx8IXQpcmV0dXJuIHQ7dmFyIG49dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciByPW4uY2FsbCh0LGV8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPWZsKHIpKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09ZT9TdHJpbmc6TnVtYmVyKSh0KX0odCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PWZsKGUpP2U6ZSsiIn12YXIgbWw9T2JqZWN0LmFzc2lnbixibD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3ZhciByPXRoaXM7dGhpcy53aW5kb3c9dm9pZCAwLHRoaXMuc3RvcmU9dm9pZCAwLHRoaXMuZGVzdHJveUFwcD12b2lkIDAsdGhpcy5pc1JlYWR5PXZvaWQgMCx0aGlzLmlzRGVzdHJveWVkPXZvaWQgMCx0aGlzLmhhc1NjcmFwZWRDb29raWVzPXZvaWQgMCx0aGlzLnJlYWR5Q2FsbGJhY2tzPXZvaWQgMCx0aGlzLm1lc3Nlbmdlck9wZW5DYWxsYmFja3M9dm9pZCAwLHRoaXMubWVzc2VuZ2VyQ2xvc2VDYWxsYmFja3M9dm9pZCAwLHRoaXMudXNlckVtYWlsU3VwcGxpZWRDYWxsYmFja3M9dm9pZCAwLHRoaXMudW5yZWFkQ29udmVyc2F0aW9uQ291bnRDaGFuZ2VDYWxsYmFja3M9dm9pZCAwLHRoaXMuc3RvcmVTdWJzY3JpYmVycz12b2lkIDAsdGhpcy5zdG9wTWV0cmljc1BvbGxpbmc9dm9pZCAwLHRoaXMuY3VzdG9tTGF1bmNoZXJDbGlja0hhbmRsZXI9dm9pZCAwLHRoaXMuY2xlYW51cFRoZW1lTGlzdGVuZXI9bnVsbCx0aGlzLmNsZWFudXBVcmxDaGFuZ2VMaXN0ZW5lcj1udWxsLHRoaXMuaGFuZGxlQ3VzdG9tTGF1bmNoZXJDbGljaz1mdW5jdGlvbih0KXtyZXR1cm4gdC5wcmV2ZW50RGVmYXVsdCgpLHIudG9nZ2xlTWVzc2VuZ2VyKCksci5hZGRMYXVuY2hlckNsaWNrZWRNZXRyaWMoKSxIYyhfbChyLndpbmRvdykpJiYoVi5BeS5hZGRJbmNyZW1lbnRPcE1ldHJpYygibGVnYWN5Q3VzdG9tTGF1bmNoZXJDbGljayIpLFYuQXkuYnVpbGRBbmRBZGRIY01ldHJpYygibGVnYWN5Q3VzdG9tTGF1bmNoZXJDbGljayIpKSwhMX0sdGhpcy5oYW5kbGVNZXNzZW5nZXJDaGFuZ2U9ZnVuY3Rpb24odCl7dmFyIGU9ci5zdG9yZS5nZXRTdGF0ZSgpOygwLGguRHMpKGUpP3R8fHIubWVzc2VuZ2VyQ2xvc2VDYWxsYmFja3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pKToodD9yLm1lc3Nlbmdlck9wZW5DYWxsYmFja3M6ci5tZXNzZW5nZXJDbG9zZUNhbGxiYWNrcykuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pKTt0JiZyLnNlbmRNZXNzZW5nZXJPcGVuKCl9LHRoaXMuaGFuZGxlVmlzaWJpbGl0eVN0YXRlQ2hhbmdlPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZnJvbSxuPXQudG87aWYodC5pc1Nwb3RsaWdodE1lc3Nlbmdlcil7dmFyIG89bj09PUFuLmN5LmNvbGxhcHNlZHx8bj09PUFuLmN5LnZpc2libGU7ZT09PUFuLmN5LnNocmlua2VkJiZvJiZyLm1lc3Nlbmdlck9wZW5DYWxsYmFja3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pKSwoZT09PUFuLmN5LmNvbGxhcHNlZHx8ZT09PUFuLmN5LnZpc2libGUpJiZuPT09QW4uY3kuc2hyaW5rZWQmJnIubWVzc2VuZ2VyQ2xvc2VDYWxsYmFja3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pKX19LHRoaXMuaGFuZGxlVW5yZWFkQ29udmVyc2F0aW9uQ291bnRDaGFuZ2U9ZnVuY3Rpb24odCl7ci51bnJlYWRDb252ZXJzYXRpb25Db3VudENoYW5nZUNhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0pKX0sdGhpcy5oYW5kbGVVc2VyRW1haWxTdXBwbGllZD1mdW5jdGlvbih0KXt0JiZyLnVzZXJFbWFpbFN1cHBsaWVkQ2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0KCl9KSl9LHRoaXMud2luZG93PXQsdGhpcy5zdG9yZT1lfHxmdW5jdGlvbih0KXt2YXIgZT1nYyh0KTtyZXR1cm4gZS5zdWJzY3JpYmUoSyhlKSksZX0oe30pLHRoaXMuZGVzdHJveUFwcD1uLHRoaXMuaXNSZWFkeT0hMSx0aGlzLmlzRGVzdHJveWVkPSExLHRoaXMuaGFzU2NyYXBlZENvb2tpZXM9ITEsdGhpcy5yZWFkeUNhbGxiYWNrcz1bXSx0aGlzLm1lc3Nlbmdlck9wZW5DYWxsYmFja3M9W10sdGhpcy5tZXNzZW5nZXJDbG9zZUNhbGxiYWNrcz1bXSx0aGlzLnVzZXJFbWFpbFN1cHBsaWVkQ2FsbGJhY2tzPVtdLHRoaXMudW5yZWFkQ29udmVyc2F0aW9uQ291bnRDaGFuZ2VDYWxsYmFja3M9W10sdGhpcy5zdG9yZVN1YnNjcmliZXJzPVtdLHRoaXMuc3RvcE1ldHJpY3NQb2xsaW5nPWZ1bmN0aW9uKCl7fSx0aGlzLmN1c3RvbUxhdW5jaGVyQ2xpY2tIYW5kbGVyPW51bGwsdGhpcy5jcmVhdGVNZXNzZW5nZXJDaGFuZ2VTdWJzY3JpYmVyKCksdGhpcy5jcmVhdGVWaXNpYmlsaXR5U3RhdGVTdWJzY3JpYmVyKCksdGhpcy5jcmVhdGVVc2VyRW1haWxTdXBwbGllZFN1YnNjcmliZXIoKSx0aGlzLmNyZWF0ZVVucmVhZENvbnZlcnNhdGlvbkNvdW50Q2hhbmdlU3Vic2NyaWJlcigpLHRoaXMuc2V0dXBUaGVtZUxpc3RlbmVyKCksaWwoKGZ1bmN0aW9uKCl7ci5jaGVja09wZW5BbmRTZW5kTGFzdE9wZW5BY3Rpb24oKX0pKX12YXIgZSxuLHIsdz10LnByb3RvdHlwZTtyZXR1cm4gdy5zZXR1cFRoZW1lTGlzdGVuZXI9ZnVuY3Rpb24oKXt0aGlzLmNsZWFudXBUaGVtZUxpc3RlbmVyJiYodGhpcy5jbGVhbnVwVGhlbWVMaXN0ZW5lcigpLHRoaXMuY2xlYW51cFRoZW1lTGlzdGVuZXI9bnVsbCksdGhpcy5jbGVhbnVwVGhlbWVMaXN0ZW5lcj0oMCxTLl82KSh0aGlzLnN0b3JlLmRpc3BhdGNoKX0sdy5zZXR1cFVybENoYW5nZUxpc3RlbmVySWZFbmFibGVkPWZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLG49dGhpcy5zdG9yZS5nZXRTdGF0ZSgpLHI9KDAsaC5Ecykobik7KG51bGwhPSh0PW4uYXBwLmZlYXR1cmVzKSYmdC51cmxCYXNlZENsaWVudE1hdGNoaW5nfHxyKSYmKHRoaXMuY2xlYW51cFVybENoYW5nZUxpc3RlbmVyfHwodGhpcy5jbGVhbnVwVXJsQ2hhbmdlTGlzdGVuZXI9ZnVuY3Rpb24odCl7dmFyIGU9KDAsWG8uJCkoKTtpZighZSlyZXR1cm4gbnVsbDt2YXIgbj1lLmxvY2F0aW9uLmhyZWYscj1mdW5jdGlvbigpe3ZhciByPWUubG9jYXRpb24uaHJlZjtyIT09biYmKG49cix0KCkpfSxvPWUuaGlzdG9yeS5wdXNoU3RhdGUsaT1lLmhpc3RvcnkucmVwbGFjZVN0YXRlO3JldHVybiBlLmhpc3RvcnkucHVzaFN0YXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkodCksbj0wO248dDtuKyspZVtuXT1hcmd1bWVudHNbbl07by5hcHBseSh0aGlzLGUpLHIoKX0sZS5oaXN0b3J5LnJlcGxhY2VTdGF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9bmV3IEFycmF5KHQpLG49MDtuPHQ7bisrKWVbbl09YXJndW1lbnRzW25dO2kuYXBwbHkodGhpcyxlKSxyKCl9LGUuYWRkRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLHIpLGUuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsciksZnVuY3Rpb24oKXtlLmhpc3RvcnkucHVzaFN0YXRlPW8sZS5oaXN0b3J5LnJlcGxhY2VTdGF0ZT1pLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLHIpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIscil9fSgoZnVuY3Rpb24oKXtlLmZldGNoTGF1bmNoZXJTZXR0aW5nc0lmTmVjZXNzYXJ5KHt9LHtmb3JjZTohMH0pfSkpKSl9LHcuY2hlY2tPcGVuQW5kU2VuZExhc3RPcGVuQWN0aW9uPWZ1bmN0aW9uKCl7dGhpcy5zdG9yZS5nZXRTdGF0ZSgpLmFwcC5pc01lc3Nlbmdlck9wZW4mJnRoaXMuc3RvcmUuZGlzcGF0Y2goKDAsbm4uVUUpKCkpfSx3LmNyZWF0ZU9yVXBkYXRlVXNlcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpczt2b2lkIDA9PT10JiYodD17fSksdm9pZCAwPT09biYmKG49ITEpO3ZhciBvPXRoaXMuZ2V0U2V0dGluZ3ModCksaT10aGlzLmdldFNlc3Npb24oe3NldHRpbmdzOm8sZ2VuZXJhdGVTZXNzaW9uSWRJZk5lY2Vzc2FyeTohMX0pO2lmKCFpKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTshZnVuY3Rpb24odCl7dmFyIGU9dC5hcHBXaW5kb3csbj10LmFwcElkO2lmKHFjKGUpKXt2YXIgcj0hIWUucGFyZW50JiZxYyhlLnBhcmVudCksbz1XYyhlKSxpPWUuZG9jdW1lbnQucmVmZXJyZXI7KDAsVi5BMikoIm1lc3Nlbmdlcl9zYW5kYm94ZWQgLSByZWZlcnJlcj0iK2kpLCgwLFYub1MpKCJtZXNzZW5nZXJfc2FuZGJveGVkIix7YXBwSWQ6bixhcHBTYW5kYm94ZWQ6cixoYXNCb2R5VGV4dDpvfSl9fSh7YXBwV2luZG93OnRoaXMud2luZG93LGFwcElkOmkuYXBwSWR9KSxmdW5jdGlvbih0KXtpZighWWMpdHJ5e3ZhciBlPW51bGw9PXQ/dm9pZCAwOnQucGVyZm9ybWFuY2U7aWYoImZ1bmN0aW9uIiE9dHlwZW9mKG51bGw9PWU/dm9pZCAwOmUuZ2V0RW50cmllc0J5VHlwZSkpcmV0dXJuO3ZhciBuPWUuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKTtpZighbnx8MD09PW4ubGVuZ3RoKXJldHVybjtmb3IodmFyIHIsbz0hMSxpPUtjKG4sITApOyEocj1pKCkpLmRvbmU7KXt2YXIgYT1yLnZhbHVlLHU9SmMoYS5uYW1lKTtpZih1KXtvPSEwO3ZhciBzPU1hdGgucm91bmQoYS5kdXJhdGlvbik7cz4wJiYoMCxWLlZlKSgiYnVuZGxlX2xvYWRfZHVyYXRpb24iLHMse2J1bmRsZTp1fSk7dmFyIGM9YS50cmFuc2ZlclNpemU7Im51bWJlciI9PXR5cGVvZiBjJiZjPjAmJigwLFYuc0wpKCJidW5kbGVfdHJhbnNmZXJfc2l6ZV9ieXRlcyIsYyx7YnVuZGxlOnV9KX19byYmKFljPSEwKX1jYXRjaCh0KXt9fSh3aW5kb3cpO3ZhciBhPWwodGhpcy5zdG9yZS5nZXRTdGF0ZSgpLmFwcCksdT1hLmludGVybmFsLHM9YS5oYXNTY3JhcGVkQ29va2llczt0aGlzLmhhc1NjcmFwZWRDb29raWVzfHwodGhpcy5oYXNTY3JhcGVkQ29va2llcz1zKTt2YXIgYz1GYyhvKTtyZXR1cm4gYyYmdGhpcy5lbmFibGVDdXN0b21MYXVuY2hlcihjKSx0aGlzLnN0b3BNZXRyaWNzUG9sbGluZz1WLkF5LnN0YXJ0TWV0cmljc1BvbGxpbmcoaSx0aGlzLndpbmRvdyksKDAsdGhpcy5zdG9yZS5kaXNwYXRjaCkodG8uQXkuY3JlYXRlT3JVcGRhdGVVc2VyKF8uQXksaSx0aGlzLndpbmRvdy5kb2N1bWVudC5VUkwsVWMobyksZnVuY3Rpb24odCl7cmV0dXJuIHQuc2Vzc2lvbl9kdXJhdGlvbnx8bnVsbH0obyksQmMobyksbixmdW5jdGlvbih0KXtyZXR1cm4gdC5pbnRlcmNvbUVuY3J5cHRlZFBheWxvYWR9KHRoaXMud2luZG93KSxlLHUsKDAsR2MudCkoKSx0aGlzLmRlc3Ryb3lBcHApKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdCYmImlkImluIHQmJnIuaGFuZGxlVXNlckNyZWF0ZU9yVXBkYXRlKHQsbyl9KSl9LHcuc2VuZE1lc3Nlbmdlck9wZW49ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuaXNEZW1vTW9kZSgpfHx0aGlzLndoZW5SZWFkeSgoZnVuY3Rpb24oKXtyZXR1cm4oMCx0LnN0b3JlLmRpc3BhdGNoKSgoMCxvdC5XRikoKSl9KSl9LHcuY3JlYXRlQ3VzdG9taXphdGlvbk92ZXJyaWRlPWZ1bmN0aW9uKHQpe3ZhciBlPUJjKHRoaXMuZ2V0U2V0dGluZ3ModCkpO3JldHVybiB0aGlzLnN0b3JlLmRpc3BhdGNoKCgwLG0uRSkoZSkpfSx3LnNldExhdW5jaGVyRW5hYmxlZE92ZXJyaWRlPWZ1bmN0aW9uKHQpe3ZhciBlPURjKHRoaXMuZ2V0U2V0dGluZ3ModCkpO3JldHVybiB0aGlzLnN0b3JlLmRpc3BhdGNoKCgwLHNsLm0pKGUpKX0sdy5kZXN0cm95PWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PSEwKSx0aGlzLmlzRGVzdHJveWVkPSEwLHRoaXMucmVhZHlDYWxsYmFja3M9W10sdGhpcy5zdG9yZS5kaXNwYXRjaCh0by5BeS5kZXN0cm95U2Vzc2lvbih0KSksdGhpcy5zdG9wTWV0cmljc1BvbGxpbmcmJnRoaXMuc3RvcE1ldHJpY3NQb2xsaW5nKCksdGhpcy5jbGVhbnVwVGhlbWVMaXN0ZW5lciYmKHRoaXMuY2xlYW51cFRoZW1lTGlzdGVuZXIoKSx0aGlzLmNsZWFudXBUaGVtZUxpc3RlbmVyPW51bGwpLHRoaXMuY2xlYW51cFVybENoYW5nZUxpc3RlbmVyJiYodGhpcy5jbGVhbnVwVXJsQ2hhbmdlTGlzdGVuZXIoKSx0aGlzLmNsZWFudXBVcmxDaGFuZ2VMaXN0ZW5lcj1udWxsKSx0aGlzLmRpc2FibGVDdXN0b21MYXVuY2hlcigpLHRoaXMucmVtb3ZlU3RvcmVTdWJzY3JpYmVycygpLCgwLHVsLlhRKSgpLHRvLkF5LmlzRHVwbGljYXRlQ3JlYXRlT3JVcGRhdGVVc2VyUmVxdWVzdC5yZXNldCgpLE0ucmVzZXREZWR1cCgpLENjLnJlc2V0RGVkdXAoKSxvbCYmKHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLG9sKSxvbD1udWxsKX0sdy5vcGVuTWVzc2VuZ2VyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLndoZW5SZWFkeSgoZnVuY3Rpb24oKXt2YXIgZSxuLHI9dC5zdG9yZS5nZXRTdGF0ZSgpLG89ci5hcHAsaT10LnN0b3JlLmRpc3BhdGNoO2lmKCEoKG51bGw9PShlPW8uZmVhdHVyZXMpP3ZvaWQgMDplLmltcHJvdmVPcGVuQmVoYXZpb3IpJiYobnVsbD09KG49ci5vcGVuT25Cb290KT92b2lkIDA6bi50eXBlKSkpe3ZhciBhPSgwLG9jLkFlKShyKTsoIWF8fGEmJm8uaGFzVGhlTWVzc2VuZ2VyQmVlbk9wZW5lZCkmJmkocmMuQXkuc2hvd0luaXRpYWxTY3JlZW4oKSl9aShyYy5BeS5vcGVuTWVzc2VuZ2VyKCkpfSkpfSx3Lm9wZW5PbkF1dG9PcGVuPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zdG9yZS5nZXRTdGF0ZSgpO2lmKCEoMCxpLklTKSgpfHwoMCxoLkRzKSh0KSl7dmFyIGU9dGhpcy5zdG9yZS5kaXNwYXRjaCxuPSgwLGguQXkpKHQpOyEwPT09KG51bGw9PW4/dm9pZCAwOm4uYXV0b09wZW4pJiYoZSgoMCxjbC5iKSghMCkpLGUocmMuQXkub3Blbk1lc3NlbmdlcigpKSl9fSx3Lm9wZW5PbkJvb3Q9ZnVuY3Rpb24oKXt2YXIgdCxlLG49dGhpcy5zdG9yZS5kaXNwYXRjaCxyPXRoaXMuc3RvcmUuZ2V0U3RhdGUoKSxvPXIub3Blbk9uQm9vdCxhPSgwLGguQXkpKHIpO2lmKG51bGw9PSh0PXIuYXBwLmZlYXR1cmVzKXx8IXQuaW1wcm92ZU9wZW5CZWhhdmlvcilpZihEYXRlLm5vdygpLW8ubGFzdE9wZW5BdFRpbWVzdGFtcD4zNmU1KSgwLGkuSVMpKCl8fCEwIT09KG51bGw9PWE/dm9pZCAwOmEuYXV0b09wZW4pfHwobigoMCxjbC5iKSghMCkpLG4ocmMuQXkub3Blbk1lc3NlbmdlcigpKSk7ZWxzZSBpZih2b2lkIDA9PT0oMCxhbC5hKShudWxsPT0oZT13aW5kb3cpfHxudWxsPT0oZT1lLnBhcmVudCk/dm9pZCAwOmUubG9jYXRpb24sImludGVyY29tX3N1cnZleV9pZCIpJiYhWC5MLmdldCgic3VydmV5X3BlbmRpbmdfdHJpZ2dlciIpKXtpZighKDAsaS5JUykoKSYmbylzd2l0Y2goby50eXBlKXtjYXNlIG5uLnlFOnZhciB1PW8ubWV0YWRhdGEuY29udmVyc2F0aW9uSWQ7aWYodSl7dmFyIHM7KDAsbm4uc3YpKCJvcGVuIGNvbnZlcnNhdGlvbiAiK3UpO3ZhciBjPW51bGwhPShzPW8ubWV0YWRhdGEudmlzaWJpbGl0eSk/czpudWxsO24ocmMuQXkub3BlbkNvbnZlcnNhdGlvbkluTWVzc2VuZ2VyKHUsYykpfWJyZWFrO2Nhc2Ugbm4uQnI6KDAsbm4uc3YpKCJvcGVuIG5ldyBjb252ZXJzYXRpb24iKTt2YXIgbD0oMCxoLkRzKShyKSxmPSEhbGwuQS5sb2FkRHJhZnQobGwuQS5ORVdfQ09OVkVSU0FUSU9OX0RSQUZUX0lEKTtsPyhuKHJjLkF5Lm9wZW5NZXNzZW5nZXIoKSksbihyYy5BeS5zaG93TmV3Q29udmVyc2F0aW9uKHt2aXNpYmlsaXR5OkFuLmN5LnNocmlua2VkfSkpKTpmPyhuKHJjLkF5Lm9wZW5NZXNzZW5nZXIoKSksbihyYy5BeS5zaG93TmV3Q29udmVyc2F0aW9uKCkpKTpuKHJjLkF5LnNob3dOZXdDb252ZXJzYXRpb24oKSk7YnJlYWs7Y2FzZSJhcnRpY2xlIjppZigiYXJ0aWNsZS1saW5rIj09PW8ubWV0YWRhdGEuY29tcG9uZW50SWQmJm8ubWV0YWRhdGEudXJsKXt2YXIgZCxwPW51bGw9PShkPW8ubWV0YWRhdGEpfHxudWxsPT0oZD1kLnByZXZpb3VzU3RhdGUpP3ZvaWQgMDpkLm1ldGFkYXRhO2lmKHApe3ZhciB2PXAuY29udmVyc2F0aW9uSWQ7diYmKCgwLG5uLnN2KSgib3BlbiBjb252ZXJzYXRpb24gIit2KyIgZnJvbSBhcnRpY2xlIiksbihyYy5BeS5vcGVuQ29udmVyc2F0aW9uSW5NZXNzZW5nZXIodikpKX0oMCxubi5zdikoIm9wZW4gc2hlZXQgZnJvbSBhcnRpY2xlICIrby5tZXRhZGF0YS5jYXJkVXJpKyIsICIrby5tZXRhZGF0YS5jb21wb25lbnRJZCsiLCAiK28ubWV0YWRhdGEudXJsKSxuKCgwLFUubFUpKF8uQXksby5tZXRhZGF0YS5jYXJkVXJpLG8ubWV0YWRhdGEuY29tcG9uZW50SWQsby5tZXRhZGF0YS51cmwse30pKX1icmVhaztjYXNlIG5uLlpOOnZhciB5PW8ubWV0YWRhdGEuY2hlY2tsaXN0UHJvZ3Jlc3NJZDsoMCxubi5zdikoIm9wZW4gY2hlY2tsaXN0ICIreSksbihyYy5BeS5vcGVuTWVzc2VuZ2VyKCkpLG4oKDAsWnIudEIpKHkpKX1pZih0aGlzLmFydGljbGVPcGVuV2l0aE5vQ2hlY2tsaXN0KG8pKXt2YXIgZz1vLm1ldGFkYXRhLmFydGljbGVJZHMsbT1vLm1ldGFkYXRhLmFydGljbGVMYW5ndWFnZXM7aWYobnVsbCE9ZyYmZy5sZW5ndGgpe3ZhciBiPWdbZy5sZW5ndGgtMV0sdz0obnVsbD09bT92b2lkIDA6bVtiXSl8fG51bGw7dGhpcy5zaG93QXJ0aWNsZShiLHZvaWQgMCx2b2lkIDAsdyl9fSgwLGkuSVMpKCl8fCEwIT09KG51bGw9PWE/dm9pZCAwOmEuYXV0b09wZW4pfHxvLnR5cGV8fChuKCgwLGNsLmIpKCEwKSksbihyYy5BeS5vcGVuTWVzc2VuZ2VyKCkpKX19LHcuYXJ0aWNsZU9wZW5XaXRoTm9DaGVja2xpc3Q9ZnVuY3Rpb24odCl7dmFyIGUsbj12b2lkIDA9PT0oMCxhbC5hKShudWxsPT0oZT13aW5kb3cpfHxudWxsPT0oZT1lLnBhcmVudCk/dm9pZCAwOmUubG9jYXRpb24sImludGVyY29tX2NoZWNrbGlzdF9pZCIpLHI9dC5tZXRhZGF0YSxvPXIub3BlbkFydGljbGVTdGFuZGFsb25lLGk9ci5hcnRpY2xlSWRzO3JldHVybiBCb29sZWFuKG8mJmkmJm4pfSx3Lm9wZW5PbkJvb3RBZnRlclVzZXJMb2FkZWQ9ZnVuY3Rpb24oKXt2YXIgdD0oMCx0aGlzLnN0b3JlLmdldFN0YXRlKSgpLm9wZW5PbkJvb3Q7aWYoISgwLGkuSVMpKCkmJnQmJiJzZWFyY2hfYnJvd3NlX2FydGljbGUiPT09dC50eXBlKXJldHVybiB0aGlzLm9wZW5JbnRvU2VhcmNoQnJvd3NlQXJ0aWNsZSh0KX0sdy5vcGVuSW50b1NlYXJjaEJyb3dzZUFydGljbGU9ZnVuY3Rpb24oKXt2YXIgdD12bChwbCgpLm1hcmsoKGZ1bmN0aW9uIHQoZSl7dmFyIG4scixpLGEsdSxzO3JldHVybiBwbCgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKG49dGhpcy5zdG9yZS5kaXNwYXRjaCxyPWUubWV0YWRhdGEsaT1yLmFydGljbGVJZHMsYT1yLmFydGljbGVMYW5ndWFnZXMsbnVsbCE9aSYmaS5sZW5ndGgpe3QubmV4dD00O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OmlmKHU9aS5wb3AoKSl7dC5uZXh0PTc7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDc6cz0obnVsbD09YT92b2lkIDA6YVt1XSl8fG51bGwsbigoMCxvLlZDKSgiL2hlbHAiKSksbigoMCxRYy5MNykodSxudWxsLCEwLCEwLG51bGwsIiIsITEscykpLG4ocmMuQXkub3Blbk1lc3NlbmdlcighMCkpLG4oKDAsUWMueFopKHUsbnVsbCwhMCx2b2lkIDAscykpO2Nhc2UgMTI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSx3LnNob3dDb252ZXJzYXRpb249ZnVuY3Rpb24oKXt2YXIgdD12bChwbCgpLm1hcmsoKGZ1bmN0aW9uIHQoZSl7dmFyIG49dGhpcztyZXR1cm4gcGwoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDp0aGlzLndoZW5SZWFkeSh2bChwbCgpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcGwoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDooMCxuLnN0b3JlLmRpc3BhdGNoKShyYy5BeS5nZXRBbmRPcGVuQ29udmVyc2F0aW9uKGUpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLHcuY2xvc2VNZXNzZW5nZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMud2hlblJlYWR5KChmdW5jdGlvbigpeygwLHQuc3RvcmUuZGlzcGF0Y2gpKHJjLkF5LmNsb3NlTWVzc2VuZ2VyKCkpfSkpfSx3LnRvZ2dsZU1lc3Nlbmdlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy53aGVuUmVhZHkoKGZ1bmN0aW9uKCl7KDAsdC5zdG9yZS5kaXNwYXRjaCkocmMuQXkudG9nZ2xlTWVzc2VuZ2VyKCkpfSkpfSx3LnNob3dDb252ZXJzYXRpb25zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLndoZW5SZWFkeSgoZnVuY3Rpb24oKXsoMCx0LnN0b3JlLmRpc3BhdGNoKShyYy5BeS5vcGVuQ29udmVyc2F0aW9ucygpKX0pKX0sdy5zaG93TmV3Q29udmVyc2F0aW9uPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt0aGlzLndoZW5SZWFkeSgoZnVuY3Rpb24oKXsoMCxuLnN0b3JlLmRpc3BhdGNoKShyYy5BeS5vcGVuTmV3Q29udmVyc2F0aW9uKHQsITEsbnVsbCE9ZT9lOm51bGwpKX0pKX0sdy5zdGFydENvbnZlcnNhdGlvbj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dGhpcy53aGVuUmVhZHkoKGZ1bmN0aW9uKCl7dmFyIHI9bi5zdG9yZS5kaXNwYXRjaCxvPW4uc3RvcmUuZ2V0U3RhdGUoKTtpZigoMCxlby5MTykobyl8fCgwLGVvLkVpKShvKSl7cihyYy5BeS5vcGVuTmV3Q29udmVyc2F0aW9uKCkpO3ZhciBpPWRsKHtib2R5Olt7dHlwZToicGFyYWdyYXBoIix0ZXh0OnR9XSxjbGllbnRJZDooMCxrci5sKSgpLGNyZWF0ZWRBdDpuZXcgRGF0ZX0sKG51bGw9PWU/dm9pZCAwOmUudmlhKSYme3ZpYTplLnZpYX0pO3IoKDAscm8ueWspKF8uQXksdm9pZCAwLGkpKX19KSl9LHcuc2VuZE1lc3NhZ2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLndoZW5SZWFkeSgoZnVuY3Rpb24oKXt2YXIgbj1lLnN0b3JlLmRpc3BhdGNoLHI9ZS5zdG9yZS5nZXRTdGF0ZSgpLG89KDAsbXIub1ApKHIpLGk9KDAsdGwubWF0Y2hQYXRoKSgiLyIrJGMuSWouaWQrIi9jb252ZXJzYXRpb24vOmNvbnZlcnNhdGlvbklkIixvKSxhPShudWxsPT1pP3ZvaWQgMDppLnBhcmFtcy5jb252ZXJzYXRpb25JZCl8fCIiOyJuZXciPT09YSYmKGE9dm9pZCAwKTt2YXIgdT0oMCxWci5WTikocixhKTsic3RhdGVfY2xvc2VkIj09PShudWxsPT11P3ZvaWQgMDp1LnN0YXRlKSYmKG4ocmMuQXkuc2hvd05ld0NvbnZlcnNhdGlvbigpKSxhPXZvaWQgMCk7dmFyIHM9e2JvZHk6W3t0eXBlOiJwYXJhZ3JhcGgiLHRleHQ6dH1dLGNsaWVudElkOigwLGtyLmwpKCksY3JlYXRlZEF0Om5ldyBEYXRlfTtuKCgwLHJvLnlrKShfLkF5LGEscykpfSkpfSx3LnN0YXJ0U3VydmV5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy53aGVuUmVhZHkoKGZ1bmN0aW9uKCl7dmFyIG49ZS5zdG9yZS5kaXNwYXRjaDsoMCx0by5yZSkodCwiQVBJX3N0YXJ0U3VydmV5IiksbigoMCxZci5BeSkodCxYYy5lLnRyaWdnZXJlZF9mcm9tX2NvZGUpKSxuKCgwLHJsLlk2KSgpKX0pKX0sdy5zdGFydENoZWNrbGlzdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMud2hlblJlYWR5KChmdW5jdGlvbigpeygwLGUuc3RvcmUuZGlzcGF0Y2gpKCgwLFpyLllIKSh0LFhjLmUudHJpZ2dlcmVkX2Zyb21fY29kZSwhMCkpfSkpfSx3LnN0YXJ0VG91cj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMud2hlblJlYWR5KChmdW5jdGlvbigpeygwLGUuc3RvcmUuZGlzcGF0Y2gpKCgwLGIubTcpKHQpKX0pKX0sdy5jcmVhdGVFdmVudD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dGhpcy5pc0RlbW9Nb2RlKCl8fHRoaXMud2hlblJlYWR5KChmdW5jdGlvbigpeygwLG4uc3RvcmUuZGlzcGF0Y2gpKHRvLkF5LmNyZWF0ZUV2ZW50KF8uQXksdCxlKSl9KSl9LHcuY3JlYXRlUGFnZVZpZXdFdmVudD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5pc0RlbW9Nb2RlKCl8fHRoaXMud2hlblJlYWR5KChmdW5jdGlvbigpeygwLHQuc3RvcmUuZGlzcGF0Y2gpKENjLmNyZWF0ZSgpKX0pKX0sdy5jcmVhdGVBcnRpY2xlUmVhY3Rpb249ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpczt0aGlzLndoZW5SZWFkeSgoZnVuY3Rpb24oKXt2YXIgaT1vLnN0b3JlLmdldFN0YXRlKCksYT1pLnNlc3Npb24sdT1pLmFwcC5pc01lc3Nlbmdlck9wZW4scz0hKCgwLG1yLktTKShpKSYmdSk7Xy5BeS5jcmVhdGVBcnRpY2xlUmVhY3Rpb24oYSx0LGUscyxuLHIpfSkpfSx3LnByZXZpZXdJbmJvdW5kQ3VzdG9tQm90PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy53aGVuUmVhZHkoKGZ1bmN0aW9uKCl7dmFyIG49Xy5BeS5idWlsZENvbXBvc2VyU3VnZ2VzdGlvbnModCk7ZS5zdG9yZS5kaXNwYXRjaCgoMCxnLk1HKShuKSl9KSl9LHcucHJldmlld091dGJvdW5kQ3VzdG9tQm90PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy53aGVuUmVhZHkoKGZ1bmN0aW9uKCl7KDAsZS5zdG9yZS5kaXNwYXRjaCkoKDAscHUuRkQpKF8uQXksdCkpfSkpfSx3LnByZXZpZXdXb3JrZmxvdz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMud2hlblJlYWR5KChmdW5jdGlvbigpeygwLGUuc3RvcmUuZGlzcGF0Y2gpKCgwLHB1LkZiKShfLkF5LHQpKX0pKX0sdy5jcmVhdGVNZXRyaWM9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3RoaXMuaXNEZW1vTW9kZSgpfHx0aGlzLndoZW5SZWFkeSgoZnVuY3Rpb24oKXt2YXIgcj1uLnN0b3JlLmdldFN0YXRlKCksbz1yLnNlc3Npb24saT1yLnVzZXI7ZT1tbCh7YW5vbnltb3VzX2lkOm8uYW5vbnltb3VzSWQsZW5kX3VzZXJfaWQ6aS5pZCx1c2VyX2lkOmkuaWQsdXNlcl9yb2xlOmkucm9sZX0sZSk7dmFyIGE9by5hcHBJZCx1PVt7bmFtZTp0LnRvU3RyaW5nKCksaWQ6a3IuQS5nZW5lcmF0ZVVVSUQoKSxhcHBfaWRfY29kZTphLGNyZWF0ZWRfYXQ6TWF0aC5yb3VuZChEYXRlLm5vdygpLzFlMyksbWV0YWRhdGE6ZX1dOygwLElyLkkxKShpKSYmXy5BeS5jcmVhdGVNZXRyaWNzKG8sdSkuY2F0Y2goKGZ1bmN0aW9uKHQpe01hdGgucmFuZG9tKCk8PS4wMSYmKDAscy5sMikodCx7Y29udGV4dDoibWV0cmljc19jb2xsZWN0aW9uIixlcnJvcl90eXBlOiJtZXRyaWNzX2ZldGNoX2ZhaWxlZCJ9KX0pKX0pKX0sdy50cmlnZ2VyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuKDAsdGhpcy5zdG9yZS5kaXNwYXRjaCkoKDAscHUuaGcpKHQsXy5BeSxlKSl9LHcudHJpZ2dlckJvdD1mdW5jdGlvbih0LGUsbil7dmFyIHIsbz10aGlzLnN0b3JlLmdldFN0YXRlKCkub3BlcmF0b3IuY2xpZW50c2lkZVJ1bGVzZXRDb25kaXRpb25zLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJ1bGVzZXRfaWQ9PT10fSkpO2lmKG8mJiJidXR0b25fY3VzdG9tX2JvdCI9PT1vLnJ1bGVzZXRfbGlua19vYmplY3RfdHlwZSl7dmFyIGk9bnVsbD09b3x8bnVsbD09KHI9by5zZXJpYWxpemVkX29iamVjdCk/dm9pZCAwOnIuaWQ7aWYoaSlyZXR1cm4gbiYmdGhpcy5zdG9yZS5kaXNwYXRjaCgoMCxwdS5jcikoby5zZXJpYWxpemVkX29iamVjdCkpLHRoaXMudHJpZ2dlcihpLGUpfX0sdy5nZXRTZXR0aW5ncz1mdW5jdGlvbih0KXtyZXR1cm4gbWwoe30sX2wodGhpcy53aW5kb3cpLHQpfSx3LnNldFNldHRpbmc9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLndpbmRvdztuLmludGVyY29tU2V0dGluZ3N8fChuLmludGVyY29tU2V0dGluZ3M9e30pLG4uaW50ZXJjb21TZXR0aW5nc1t0XT1lfSx3LnNldEhpZGVOb3RpZmljYXRpb25zPWZ1bmN0aW9uKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goKDAsY2wuYikodCkpfSx3Lm1hcmtIb21lRGF0YUFzU3RhbGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMud2hlblJlYWR5KChmdW5jdGlvbigpe3Quc3RvcmUuZGlzcGF0Y2goKDAsbG4uUk0pKCEwKSl9KSl9LHcuZ2V0QXJ0aWNsZVJlYWN0aW9uPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzO3RoaXMud2hlblJlYWR5KChmdW5jdGlvbigpe3ZhciBvPXIuc3RvcmUuZ2V0U3RhdGUoKS5zZXNzaW9uO18uQXkuZ2V0QXJ0aWNsZVJlYWN0aW9uKG8sdCxlLG4pfSkpfSx3LmVudGVyVG91clByZXZpZXdNb2RlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy53aGVuUmVhZHkoKGZ1bmN0aW9uKCl7KDAsZS5zdG9yZS5kaXNwYXRjaCkoKDAsYi5mUykoXy5BeS5idWlsZFRvdXIodCkpKX0pKX0sdy5leGl0VG91clByZXZpZXdNb2RlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLndoZW5SZWFkeSgoZnVuY3Rpb24oKXsoMCx0LnN0b3JlLmRpc3BhdGNoKSgoMCxiLnJLKSgpKX0pKX0sdy5wcmV2aWV3U3VydmV5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy53aGVuUmVhZHkoKGZ1bmN0aW9uKCl7dmFyIG49ZS5zdG9yZS5kaXNwYXRjaDsoMCx0by5yZSkodCwiQVBJX3ByZXZpZXdTdXJ2ZXkiKSxuKCgwLFlyLlR1KSh0KSl9KSl9LHcucHJldmlld0Jhbm5lcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMud2hlblJlYWR5KChmdW5jdGlvbigpeygwLGUuc3RvcmUuZGlzcGF0Y2gpKCgwLEtyLlhtKSh0KSl9KSl9LHcucHJldmlld1Bvc3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLndoZW5SZWFkeSgoZnVuY3Rpb24oKXsoMCxlLnN0b3JlLmRpc3BhdGNoKSgoMCxybC5kVCkodCkpfSkpfSx3LmdldFNlc3Npb249ZnVuY3Rpb24odCl7dmFyIGU9dC5zZXR0aW5ncyxuPXQuZ2VuZXJhdGVTZXNzaW9uSWRJZk5lY2Vzc2FyeSxyPXRoaXMuc3RvcmUuZ2V0U3RhdGUoKS5zZXNzaW9uLG89emModGhpcy5nZXRTZXR0aW5ncyhlKSk7aWYoZnVuY3Rpb24odCl7cmV0dXJuIEJvb2xlYW4odCYmdC5hcHBJZCl9KHI9bWwoe30scixvKSkpcmV0dXJuIHI9bWwoe30scixmdW5jdGlvbih0KXt2YXIgZT17fSxuPWEuQS5yZWFkKCgwLGMuS0spKHQpKXx8YS5BLnJlYWQoKDAsYy5udSkoKSkscj1hLkEucmVhZCgoMCxjLkxBKSh0KSk7biYmbWwoZSx7YW5vbnltb3VzSWQ6bn0pO3ImJm1sKGUse2Fub255bW91c1Nlc3Npb246cn0pO3JldHVybiBlfShyLmFwcElkKSksbiYmIXIuc2Vzc2lvbklkJiYoci5zZXNzaW9uSWQ9a3IuQS5nZW5lcmF0ZVVVSUQoKSkscn0sdy5mZXRjaExhdW5jaGVyU2V0dGluZ3NJZk5lY2Vzc2FyeT1mdW5jdGlvbih0LGUpe3ZhciBuLHI9KHZvaWQgMD09PWU/e306ZSkuZm9yY2Usbz12b2lkIDAhPT1yJiZyLGk9dGhpcy5zdG9yZS5nZXRTdGF0ZSgpO2lmKG98fG51bGw9PShuPWkubGF1bmNoZXJTZXR0aW5ncyl8fCFuLmluc3RhbnRCb290RW5hYmxlZCl7dmFyIGE9dGhpcy5nZXRTZXNzaW9uKHtzZXR0aW5nczp0LGdlbmVyYXRlU2Vzc2lvbklkSWZOZWNlc3Nhcnk6ITB9KTtpZihhKSgwLHRoaXMuc3RvcmUuZGlzcGF0Y2gpKE0uZmV0Y2goYSkpfX0sdy5mZXRjaFRvb2x0aXBzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0U2Vzc2lvbih7c2V0dGluZ3M6dCxnZW5lcmF0ZVNlc3Npb25JZElmTmVjZXNzYXJ5OiEwfSk7aWYoZSl7dmFyIG49VWModGhpcy5nZXRTZXR0aW5ncyh0KSk7KDAsdGhpcy5zdG9yZS5kaXNwYXRjaCkoKDAsUi5kSCkoe3Nlc3Npb246ZSxjdXN0b21BdHRyaWJ1dGVzOm59KSl9fSx3LnByZXZpZXdUb29sdGlwR3JvdXA9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLndoZW5SZWFkeSgoZnVuY3Rpb24oKXtlLnN0b3JlLmRpc3BhdGNoKCgwLFIuWmUpKF8uQXkuYnVpbGRUb29sdGlwR3JvdXAodCkpKX0pKX0sdy5leGl0UHJldmlld1Rvb2x0aXBHcm91cD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy53aGVuUmVhZHkoKGZ1bmN0aW9uKCl7dC5zdG9yZS5kaXNwYXRjaCgoMCxSLm45KSgpKX0pKX0sdy5nZXRWaXNpdG9ySWQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnN0b3JlLmdldFN0YXRlKCkuc2Vzc2lvbjtpZih0KXt2YXIgZT10LmFwcElkO3JldHVybiBhLkEucmVhZCgoMCxjLktLKShlKSl8fGEuQS5yZWFkKCgwLGMubnUpKCkpfX0sdy5kZWNvZGVkSW50ZXJjb21Vc2VySnd0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zdG9yZS5nZXRTdGF0ZSgpLnNlc3Npb247aWYobnVsbCE9dCYmdC5pbnRlcmNvbVVzZXJKd3Qpe3ZhciBlPXQuaW50ZXJjb21Vc2VySnd0LnNwbGl0KCIuIik7aWYoMz09PWUubGVuZ3RoKXRyeXtyZXR1cm4gSlNPTi5wYXJzZShhdG9iKGVbMV0ucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIikpKX1jYXRjaCh0KXtyZXR1cm59fX0sdy5nZXRVc2VySW5mbz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnN0b3JlLmdldFN0YXRlKCksbj1lLnVzZXIscj1lLnNlc3Npb247aWYobnVsbCE9biYmbi5pZCl7dmFyIG89e2ludGVyY29tX3VzZXJfaWQ6bnVsbD09bj92b2lkIDA6bi5pZCxyb2xlOm51bGw9PW4/dm9pZCAwOm4ucm9sZSxhcHBfaWQ6bnVsbD09cj92b2lkIDA6ci5hcHBJZCx1c2VyX2lkOm51bGw9PXI/dm9pZCAwOnIudXNlcklkLGVtYWlsOm51bGw9PXI/dm9pZCAwOnIuZW1haWx9LGk9dGhpcy5kZWNvZGVkSW50ZXJjb21Vc2VySnd0KCk7cmV0dXJuIGkmJihpLnVzZXJfaWQmJihvLnVzZXJfaWQ9aS51c2VyX2lkKSxpLmVtYWlsJiYoby5lbWFpbD1pLmVtYWlsKSksb31udWxsIT10JiZ0LndpdGhMb2dnaW5nJiYoMCx1LmpQKSgiTm8gdXNlciBpZCBmb3VuZCB3aGVuIGxvb2tpbmcgdXAgdGhlIHVzZXIgaW5mby4iKX0sdy5vbk1lc3Nlbmdlck9wZW49ZnVuY3Rpb24odCl7dGhpcy5tZXNzZW5nZXJPcGVuQ2FsbGJhY2tzLnB1c2godCl9LHcub25NZXNzZW5nZXJDbG9zZT1mdW5jdGlvbih0KXt0aGlzLm1lc3NlbmdlckNsb3NlQ2FsbGJhY2tzLnB1c2godCl9LHcub25VbnJlYWRDb252ZXJzYXRpb25Db3VudENoYW5nZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnN0b3JlLmdldFN0YXRlKCksbj0oMCxPYy5qKShlKTt0aGlzLnVucmVhZENvbnZlcnNhdGlvbkNvdW50Q2hhbmdlQ2FsbGJhY2tzLnB1c2godCksdChuKX0sdy5vblVzZXJFbWFpbFN1cHBsaWVkPWZ1bmN0aW9uKHQpe3QmJiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0aGlzLnVzZXJFbWFpbFN1cHBsaWVkQ2FsbGJhY2tzLnB1c2godCl9LHcub25SZWFkeT1mdW5jdGlvbih0KXt0JiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmdGhpcy53aGVuUmVhZHkodCl9LHcuZW5hYmxlQ3VzdG9tTGF1bmNoZXI9ZnVuY3Rpb24odCl7dGhpcy5kaXNhYmxlQ3VzdG9tTGF1bmNoZXIoKTt2YXIgZT10aGlzLndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdO3RoaXMuY3VzdG9tTGF1bmNoZXJDbGlja0hhbmRsZXI9KDAsVmMuS3gpKGUsdCx0aGlzLmhhbmRsZUN1c3RvbUxhdW5jaGVyQ2xpY2spLCgwLFZjLnEyKShlLCJjbGljayIsdGhpcy5jdXN0b21MYXVuY2hlckNsaWNrSGFuZGxlcil9LHcuZGlzYWJsZUN1c3RvbUxhdW5jaGVyPWZ1bmN0aW9uKCl7aWYodGhpcy5jdXN0b21MYXVuY2hlckNsaWNrSGFuZGxlcil7dmFyIHQ9dGhpcy53aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTsoMCxWYy5mKSh0LCJjbGljayIsdGhpcy5jdXN0b21MYXVuY2hlckNsaWNrSGFuZGxlciksdGhpcy5jdXN0b21MYXVuY2hlckNsaWNrSGFuZGxlcj1udWxsfX0sdy53aGVuUmVhZHk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZighdGhpcy5pc0Rlc3Ryb3llZClyZXR1cm4gdGhpcy5pc1JlYWR5P3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5pc0Rlc3Ryb3llZHx8dCgpfSksMSk6dm9pZCB0aGlzLnJlYWR5Q2FsbGJhY2tzLnB1c2godCl9LHcuZXhlY3V0ZVJlYWR5Q2FsbGJhY2tzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT10aGlzLnJlYWR5Q2FsbGJhY2tzLG49ZnVuY3Rpb24oKXt2YXIgbj1lLnNoaWZ0KCk7biYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LmlzRGVzdHJveWVkfHxuKCl9KSwxKX07ZS5sZW5ndGg7KW4oKTt0aGlzLnJlYWR5Q2FsbGJhY2tzPVtdfSx3LmFkZExhdW5jaGVyQ2xpY2tlZE1ldHJpYz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy53aGVuUmVhZHkoKGZ1bmN0aW9uKCl7dmFyIGU9dC5zdG9yZS5nZXRTdGF0ZSgpLG49ZS51c2VyLHI9e2lzX21lc3Nlbmdlcl9vcGVuOmUuYXBwLmlzTWVzc2VuZ2VyT3Blbixpc19jdXN0b21fbGF1bmNoZXI6ITB9O1YuQXkuYnVpbGRBbmRBZGRNZXRyaWMobiwiY2xpY2tlZCIsImxhdW5jaGVyIiwiaW5fYXBwIiwiIixyKX0pKX0sdy5oYW5kbGVVc2VyQ3JlYXRlT3JVcGRhdGU9ZnVuY3Rpb24odCxlKXt2YXIgbjsoMCx5LkNEKSgpfHwoVi5BeS5idWlsZEFuZEFkZEhjTWV0cmljKCJhcGlCb290IiksKDAseS5KSykoITApKSx0aGlzLnNob3VsZFNlbmRUcmFja2luZ0Nvb2tpZXMoKSYmdGhpcy5jcmVhdGVPclVwZGF0ZVVzZXIoZSwiYXBpVXBkYXRlIik7dmFyIHI9dGhpcy5zdG9yZS5nZXRTdGF0ZSgpLnNlc3Npb24sbz1udWxsIT0obj1udWxsPT1lP3ZvaWQgMDplLmF1dGhfdG9rZW5zKT9uOm51bGw9PXI/dm9pZCAwOnIuYXV0aFRva2VucztyZXR1cm4gbyYmdGhpcy5zZXRVc2VyQXV0aFRva2VucyhvKSx0aGlzLmlzUmVhZHl8fCh0aGlzLmV4ZWN1dGVSZWFkeUNhbGxiYWNrcygpLHRoaXMuaXNSZWFkeT0hMCx0aGlzLnNldHVwVXJsQ2hhbmdlTGlzdGVuZXJJZkVuYWJsZWQoKSwoMCxHYy50KSgpJiZ0aGlzLndpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoIm1lc3Nlbmdlcl9zZXNzaW9uX3JlYWR5IiwiKiIpLHRoaXMuZmlyZVBpbmdNZXRyaWNzKCksdGhpcy5vcGVuT25Cb290KCksdGhpcy5vcGVuT25BdXRvT3BlbigpLHRoaXMub3Blbk9uQm9vdEFmdGVyVXNlckxvYWRlZCgpLHRoaXMuY3JlYXRlTGF5b3V0Q2hhbmdlU3Vic2NyaWJlcigpKSx0fSx3LmZpcmVQaW5nTWV0cmljcz1mdW5jdGlvbigpe2lmKCEoMCx5LnBVKSgpKXt2YXIgdCxlPXRoaXMuc3RvcmUuZ2V0U3RhdGUoKSxuPSgwLHAuQSkoZSkscj0oMCxmLkFyKSgpO1YuQXkuYnVpbGRBbmRBZGRIY01ldHJpYygiY3JlYXRlT3JVcGRhdGVVc2VyIix7bWVzc2VuZ2VySXNWaXNpYmxlOigwLHkuT1YpKG4pLGlzTGF1bmNoZXJFbmFibGVkOm4saGFzRGlzcGxheU5vbmVTZXQ6cn0pO3ZhciBvPSgwLHYuYykoZSkubWV0YSxpPW51bGw9PSh0PSgwLGQuS1EpKCkpP3ZvaWQgMDp0LmhyZWYsYT0oMCxoLkRzKShlKSx1PWRsKHt9LG8se2RldmljZV90eXBlOigwLGYucnIpKCk/Im1vYmlsZSI6ImRlc2t0b3AifSxpP3twYWdlX3VybDppfTp7fSxhP3tmaW5fb25seToidHJ1ZSJ9Ont9KTtWLkF5LmJ1aWxkQW5kQWRkTWV0cmljKGUudXNlciwibG9hZGVkIiwibWVzc2VuZ2VyX3dpZGdldCIsIm1lc3NlbmdlciIsIiIsdSksKDAseS5pMCkoKDAsaC5sZCkodGhpcy5zdG9yZS5nZXRTdGF0ZSgpKSksKDAseS5aRSkoITApfX0sdy5jcmVhdGVMYXlvdXRDaGFuZ2VTdWJzY3JpYmVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmFkZFN0b3JlU3Vic2NyaWJlcih3bCh0aGlzLnN0b3JlLGgubGQsKGZ1bmN0aW9uKCl7dHJ5e251bGwhPT0oMCx5LlFCKSgpJiYoKDAseS5aRSkoITEpLHQuZmlyZVBpbmdNZXRyaWNzKCkpfWNhdGNoKHQpeygwLHMubDIpKHQpfX0pKSl9LHcuc2hvd0FydGljbGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcyxpPXRoaXMuc3RvcmUuZ2V0U3RhdGUsYT10aGlzLnN0b3JlLmRpc3BhdGNoLHU9IWkoKS5hcHAuaXNNZXNzZW5nZXJPcGVuO3RoaXMud2hlblJlYWR5KHZsKHBsKCkubWFyaygoZnVuY3Rpb24gcygpe3JldHVybiBwbCgpLndyYXAoKGZ1bmN0aW9uKHMpe2Zvcig7Oylzd2l0Y2gocy5wcmV2PXMubmV4dCl7Y2FzZSAwOnJldHVybiB1JiZhKCgwLG5uLmUkKSh0KSkscy5uZXh0PTMsbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpeyFmdW5jdGlvbiBlKCl7dmFyIG49aSgpO24uYXBwLmlzTWVzc2VuZ2VyT3Blbnx8by5vcGVuTWVzc2VuZ2VyKCksbi5hcHAuaXNNZXNzZW5nZXJPcGVuJiZuLmFwcC5pc01vdW50ZWQmJiFuLmhvbWUuaXNGZXRjaGluZz90KCk6c2V0VGltZW91dChlLDEwMCl9KCl9KSk7Y2FzZSAzOmEoKDAsUWMubiQpKHQse30sITEsITEsbixlLHUscikpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHMuc3RvcCgpfX0pLHMpfSkpKSl9LHcuc2hvd05ld3M9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0KXt2YXIgbj10aGlzLnN0b3JlLHI9bi5kaXNwYXRjaCxpPW4uZ2V0U3RhdGU7dGhpcy53aGVuUmVhZHkodmwocGwoKS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGE7cmV0dXJuIHBsKCkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6YT1pKCksYS5hcHAuaXNNZXNzZW5nZXJPcGVufHxyKHJjLkF5Lm9wZW5NZXNzZW5nZXIoKSksZS53aGVuUmVhZHkoKGZ1bmN0aW9uKCl7cigoMCxvLlZDKSgiL25ld3MvZGV0YWlscy8iK3QpKX0pKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuKX0pKSkpfWVsc2UgdGhpcy5zaG93U3BhY2UoIm5ld3MiKX0sdy5zaG93VGlja2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc3RvcmUuZ2V0U3RhdGUsbj10aGlzLnN0b3JlLmRpc3BhdGNoLHI9bigoMCx4bi5ycykodCkpO3RoaXMud2hlblJlYWR5KHZsKHBsKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBpO3JldHVybiBwbCgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmk9ZSgpLGkuYXBwLmlzTWVzc2VuZ2VyT3Blbnx8bihyYy5BeS5vcGVuTWVzc2VuZ2VyKCkpLHIudGhlbigoZnVuY3Rpb24odCl7dmFyIGU9bnVsbD09dD92b2lkIDA6dC5wYXlsb2FkO251bGwhPWUmJmUuaWQmJm4oKDAsby5WQykoIi90aWNrZXRzL2RldGFpbHMvIitlLmlkLHtzdGF0ZTp7bmF2aWdhdGluZ0Zyb206TGEud1V9fSkpfSkpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKSl9LHcuc2hvd1RpY2tldEZvcm09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zdG9yZS5nZXRTdGF0ZSxuPXRoaXMuc3RvcmUuZGlzcGF0Y2gscj1uKCgwLGVsLm9uKShfLkF5KSk7dGhpcy53aGVuUmVhZHkodmwocGwoKS5tYXJrKChmdW5jdGlvbiBpKCl7dmFyIGE7cmV0dXJuIHBsKCkud3JhcCgoZnVuY3Rpb24oaSl7Zm9yKDs7KXN3aXRjaChpLnByZXY9aS5uZXh0KXtjYXNlIDA6YT1lKCksYS5hcHAuaXNNZXNzZW5nZXJPcGVufHxuKHJjLkF5Lm9wZW5NZXNzZW5nZXIoKSksci50aGVuKChmdW5jdGlvbihlKXsobnVsbD09ZT92b2lkIDA6ZS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gTnVtYmVyKGUuaWQpPT09TnVtYmVyKHQpfSkpKSYmbigoMCxvLlZDKSgoMCxubC53bykodCkpKX0pKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBpLnN0b3AoKX19KSxpKX0pKSkpfSx3LnNob3dTcGFjZT1mdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMscj10aGlzLnN0b3JlLmRpc3BhdGNoLGk9dGhpcy5zdG9yZS5nZXRTdGF0ZSgpLGE9bnVsbD09KGU9KDAsb2MuJEIpKGkpLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dH0pKSk/dm9pZCAwOmUucGF0aDthJiZ0aGlzLndoZW5SZWFkeSh2bChwbCgpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgZSx1O3JldHVybiBwbCgpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmU9aS5hcHAuaXNNZXNzZW5nZXJPcGVuLHU9aS5hcnRpY2xlLmlzTG9hZGVkLGV8fHIocmMuQXkub3Blbk1lc3NlbmdlcigpKSx1JiZyKCgwLFFjLm5YKSgpKSxuLndoZW5SZWFkeSgoZnVuY3Rpb24oKXtyKCgwLG8uVkMpKGEpKX0pKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSkpfSx3LnNob3VsZFNlbmRUcmFja2luZ0Nvb2tpZXM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnN0b3JlLmdldFN0YXRlKCkuYXBwO3JldHVybiF0aGlzLmhhc1NjcmFwZWRDb29raWVzJiYodC5mZWF0dXJlcy5odWJzcG90SW5zdGFsbGVkfHx0LmZlYXR1cmVzLm1hcmtldG9FbnJpY2htZW50SW5zdGFsbGVkKX0sdy5jcmVhdGVNZXNzZW5nZXJDaGFuZ2VTdWJzY3JpYmVyPWZ1bmN0aW9uKCl7dGhpcy5hZGRTdG9yZVN1YnNjcmliZXIod2wodGhpcy5zdG9yZSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuYXBwLmlzTWVzc2VuZ2VyT3Blbn0pLHRoaXMuaGFuZGxlTWVzc2VuZ2VyQ2hhbmdlKSl9LHcuY3JlYXRlVmlzaWJpbGl0eVN0YXRlU3Vic2NyaWJlcj1mdW5jdGlvbigpe3ZhciB0LGUsbixyLG8saTt0aGlzLmFkZFN0b3JlU3Vic2NyaWJlcigodD10aGlzLnN0b3JlLGU9SmkuTixuPWguRHMscj10aGlzLmhhbmRsZVZpc2liaWxpdHlTdGF0ZUNoYW5nZSxvPWUodC5nZXRTdGF0ZSgpKSxpPSEwLGZ1bmN0aW9uKCl7dmFyIGE9dC5nZXRTdGF0ZSgpLHU9ZShhKSxzPW4oYSk7aWYobyE9PXUpe2lmKGkpcmV0dXJuIGk9ITEsdm9pZChvPXUpO3Ioe2Zyb206byx0bzp1LGlzU3BvdGxpZ2h0TWVzc2VuZ2VyOnN9KSxvPXV9fSkpfSx3LmNyZWF0ZVVucmVhZENvbnZlcnNhdGlvbkNvdW50Q2hhbmdlU3Vic2NyaWJlcj1mdW5jdGlvbigpe3RoaXMuYWRkU3RvcmVTdWJzY3JpYmVyKHdsKHRoaXMuc3RvcmUsT2Muaix0aGlzLmhhbmRsZVVucmVhZENvbnZlcnNhdGlvbkNvdW50Q2hhbmdlKSl9LHcuY3JlYXRlVXNlckVtYWlsU3VwcGxpZWRTdWJzY3JpYmVyPWZ1bmN0aW9uKCl7dGhpcy5hZGRTdG9yZVN1YnNjcmliZXIod2wodGhpcy5zdG9yZSwoZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIG51bGw9PShlPXQuc2Vzc2lvbik/dm9pZCAwOmUuZGlkVXNlclN1cHBseUVtYWlsfSksdGhpcy5oYW5kbGVVc2VyRW1haWxTdXBwbGllZCkpfSx3LmFkZFN0b3JlU3Vic2NyaWJlcj1mdW5jdGlvbih0KXt0aGlzLnN0b3JlU3Vic2NyaWJlcnMucHVzaCh0aGlzLnN0b3JlLnN1YnNjcmliZSh0KSl9LHcucmVtb3ZlU3RvcmVTdWJzY3JpYmVycz1mdW5jdGlvbigpe3RoaXMuc3RvcmVTdWJzY3JpYmVycy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4hIXQmJnQoKX0pKX0sdy5oYW5kbGVJbnRlcnNlY3Rpb25Cb290PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLndoZW5SZWFkeSgoZnVuY3Rpb24oKXt0LnN0b3JlLmRpc3BhdGNoKHt0eXBlOkYuYV9FfSl9KSl9LHcuc2V0SW5zdGFsbGF0aW9uVHlwZT1mdW5jdGlvbih0KXsoMCxBYy5iKSh0KX0sdy5zZXRJbnN0YWxsYXRpb25WZXJzaW9uPWZ1bmN0aW9uKHQpeygwLEljLkgpKHQpfSx3LnNldFVzZXJBdXRoVG9rZW5zPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc3RvcmUuZ2V0U3RhdGUoKS5zZXNzaW9uOyhudWxsPT1lP3ZvaWQgMDplLmF1dGhUb2tlbnMpIT09dCYmdGhpcy5zdG9yZS5kaXNwYXRjaCgoMCx0by5UaCkodCkpLG51bGwhPWUmJmUuYXBwSWQmJl8uQXkuc2V0VXNlckF1dGhUb2tlbnMoZSx0KX0sdy5pc0RlbW9Nb2RlPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIShudWxsPT0odD10aGlzLmdldFNldHRpbmdzKCkpfHwhdC5kZW1vX21vZGUpfSx3LnZhbGlkYXRlU2V0dGluZ3M9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldFNldHRpbmdzKCk7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsInVzZXJfaWQiKSYmdm9pZCAwPT09dC51c2VyX2lkJiYoMCx1LkZTKSgid2luZG93LmludGVyY29tU2V0dGluZ3MudXNlcl9pZCBpcyBzZXQgdG8gdW5kZWZpbmVkLiBUaGlzIHZhbHVlIHNob3VsZCBlaXRoZXIgYmUgYSBzdHJpbmcgb3Igbm90IHNldCBhdCBhbGwuIil9LGU9dCxuJiZ5bChlLnByb3RvdHlwZSxuKSxyJiZ5bChlLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9KCk7ZnVuY3Rpb24gd2wodCxlLG4pe3ZhciByPWUodC5nZXRTdGF0ZSgpKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1lKHQuZ2V0U3RhdGUoKSk7ciE9PW8mJihyPW8sbihvKSl9fWZ1bmN0aW9uIF9sKHQpe3JldHVybiB0LmludGVyY29tU2V0dGluZ3N9dmFyIFNsPWJsLHhsPW4oMTczMzYpLEVsPW4ubih4bCksQ2w9big0MDI5NSksT2w9big5NDc5MiksQWw9KDAsR3IuTXopKFtmdW5jdGlvbih0KXtyZXR1cm4gdC5hY2Nlc3NpYmlsaXR5fV0sKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLElsPW4oOTcxNjApLGtsPW4ubihJbCksTGw9big5NTg3OSksVGw9KDAsR3IuTXopKGguQXksKGZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBudWxsPT0oZT10LmxhdW5jaGVyU2V0dGluZ3MpP3ZvaWQgMDplLnRoZW1lTW9kZX0pLChmdW5jdGlvbih0LGUpe3ZhciBuPXQuY29sb3Iscj10LnNlY29uZGFyeUNvbG9yLG89dC50aGVtZU1vZGU7aWYoIW58fCFyKXJldHVybnt9O3ZhciBpPWV8fG8sYT0oMCxMbC5sKShpKSx1PSgwLExsLnkpKGEpLHM9a2woKSh7cHJpbWFyeUNvbG9yOm4sc2Vjb25kYXJ5Q29sb3I6cixkYXJrZW5BbW91bnQ6MjAscHVyZUJsYWNrQWN0aW9uQ29sb3JzOiEwLGNvbnRyYXN0Q2hlY2tNZXRob2Q6dSx0aGVtZU1vZGU6YX0pO3JldHVybntwcmltYXJ5Q29sb3I6bixzZWNvbmRhcnlDb2xvcjpyLGdyYWRpZW50U3RhcnRDb2xvcjpzLmdyYWRpZW50X3N0YXJ0X2NvbG9yLGdyYWRpZW50RW5kQ29sb3I6cy5ncmFkaWVudF9lbmRfY29sb3IsbGF1bmNoZXJJY29uQ29sb3I6cy5sYXVuY2hlcl9pY29uX2NvbG9yLGlzUHJpbWFyeUNvbG9yTGlnaHQ6ImxpZ2h0Ij09PXMucHJpbWFyeV90eXBlLHRoZW1lTW9kZTphfX0pKSxqbD1uKDY0Nzg1KSxQbD1uKDcwMzQyKSxObD1uKDcyNDkzKSxNbD1uKDg3NDkzKSxSbD1mdW5jdGlvbigpe3JldHVybiBQbC5KWH0sVWw9ZnVuY3Rpb24oKXtyZXR1cm4gUGwuUHZ9LHpsPWZ1bmN0aW9uKCl7cmV0dXJuIFBsLmhQfSxIbD1mdW5jdGlvbigpe3JldHVybiBQbC5uOX0sRmw9ZnVuY3Rpb24odCl7dmFyIGU9dC5pc01vYmlsZSxuPXQuY3VzdG9taXphdGlvbjtyZXR1cm4gZXx8aXNOYU4obi56SW5kZXgpPzIxNDc0ODMwMDE6bi56SW5kZXh9LERsPWZ1bmN0aW9uKHQpe3ZhciBlPXQuaXNMYXVuY2hlckVuYWJsZWQsbj10LmN1c3RvbWl6YXRpb24udmVydGljYWxQYWRkaW5nLHI9dC5sYXVuY2hlclRleHQ7cmV0dXJuIGU/ISghcnx8IXIudHJpbSgpKT9uOm4rUmwoKStVbCgpOm59LEJsPWZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIG51bGwhPShlPW51bGw9PShuPXQuY3VzdG9taXphdGlvbik/dm9pZCAwOm4ubWVzc2VuZ2VyV2lkdGgpP2U6NDAwfSxWbD1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4iZGFyayI9PT0obnVsbD09KGU9dC5jb2xvcnMpP3ZvaWQgMDplLnRoZW1lTW9kZSk/TmwuZS5jb250YWluZXJCYXNlTmV1dHJhbDpNbC5tLmNvbnRhaW5lckJhc2VOZXV0cmFsfSxHbD1mdW5jdGlvbih0KXtyZXR1cm4gdC5pc1Nwb3RsaWdodFNoZWxsP2Z1bmN0aW9uKHQpe3ZhciBlO3JldHVybiJkYXJrIj09PShudWxsPT0oZT10LmNvbG9ycyk/dm9pZCAwOmUudGhlbWVNb2RlKT9ObC5lLnRleHREZWZhdWx0Ok1sLm0udGV4dERlZmF1bHR9KHQpOnQuY29sb3JzLmxhdW5jaGVySWNvbkNvbG9yfSxxbD1mdW5jdGlvbih0KXtyZXR1cm4iXG4gIEBrZXlmcmFtZXMgaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLWxhdW5jaGVyIHtcbiAgICBmcm9tIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIH1cbiAgfVxuXG4gIEBrZXlmcmFtZXMgaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLWdyYWRpZW50IHtcbiAgICBmcm9tIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgQGtleWZyYW1lcyBpbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbWVzc2VuZ2VyIHtcbiAgICAwJSB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICB9XG4gICAgNDAlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICB9XG4gIH1cblxuICAuaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogIitGbCh0KSsnO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBmb250LWZhbWlseTogc3lzdGVtLXVpLCAiU2Vnb2UgVUkiLCBSb2JvdG8sIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiO1xuICB9XG5cbiAgLmludGVyY29tLWxpZ2h0d2VpZ2h0LWFwcC1ncmFkaWVudCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6ICcrKEZsKHQpKzEpKyI7XG4gICAgd2lkdGg6IDUwMHB4O1xuICAgIGhlaWdodDogNTAwcHg7XG4gICAgYm90dG9tOiAwO1xuICAgICIrKCJjZW50ZXIiPT09dC5jdXN0b21pemF0aW9uLmFsaWdubWVudD8ibGVmdDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7Ijp0LmN1c3RvbWl6YXRpb24uYWxpZ25tZW50KyI6IDA7IikrIlxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChcbiAgICAgIGVsbGlwc2UgYXQgYm90dG9tICIrdC5jdXN0b21pemF0aW9uLmFsaWdubWVudCsiLFxuICAgICAgcmdiYSgyOSwgMzksIDU0LCAwLjE2KSAwJSxcbiAgICAgIHJnYmEoMjksIDM5LCA1NCwgMCkgNzIlKTtcbiAgICBhbmltYXRpb246IGludGVyY29tLWxpZ2h0d2VpZ2h0LWFwcC1ncmFkaWVudCAyMDBtcyBlYXNlLW91dDtcbiAgfVxuXG4gIC5pbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAiKyhGbCh0KSsyKSsiO1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm90dG9tOiAiKyhmdW5jdGlvbih0KXt2YXIgZT10LmlzTW9iaWxlLG49dC5jdXN0b21pemF0aW9uO3JldHVybiBlP3psKCk6TWF0aC5tYXgobi52ZXJ0aWNhbFBhZGRpbmd8fFBsLmhQLFBsLmhQKX0odCkrKHQuaXNTcG90bGlnaHRTaGVsbD84OjApKSsicHg7XG4gICAgIisoImNlbnRlciI9PT10LmN1c3RvbWl6YXRpb24uYWxpZ25tZW50PyJsZWZ0OiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsiOnQuY3VzdG9taXphdGlvbi5hbGlnbm1lbnQrIjogIisobj0oZT10KS5pc01vYmlsZSxyPWUuY3VzdG9taXphdGlvbiwobj9QbC5YJDpyLmhvcml6b250YWxQYWRkaW5nKSsicHg7IikpKyJcbiAgICBtYXgtd2lkdGg6ICIrUmwoKSsicHg7XG4gICAgd2lkdGg6ICIrUmwoKSsicHg7XG4gICAgbWF4LWhlaWdodDogIitSbCgpKyJweDtcbiAgICBoZWlnaHQ6ICIrUmwoKSsicHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6ICIrKHQuaXNTcG90bGlnaHRTaGVsbD9WbCh0KTp0LmNvbG9ycy5wcmltYXJ5Q29sb3IpKyI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDZweCAwIHJnYmEoMCwgMCwgMCwgMC4wNiksIDAgMnB4IDMycHggMCByZ2JhKDAsIDAsIDAsIDAuMTYpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxNjdtcyBjdWJpYy1iZXppZXIoMC4zMywgMC4wMCwgMC4wMCwgMS4wMCk7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIH1cblxuXG4gIC5pbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXI6aG92ZXIge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyBjdWJpYy1iZXppZXIoMC4zMywgMC4wMCwgMC4wMCwgMS4wMCk7XG4gICAgdHJhbnNmb3JtOiAiKygiY2VudGVyIj09PXQuY3VzdG9taXphdGlvbi5hbGlnbm1lbnQ/InRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMS4xKSI6InNjYWxlKDEuMSkiKSsiXG4gIH1cblxuICAuaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLWxhdW5jaGVyOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiAiKygiY2VudGVyIj09PXQuY3VzdG9taXphdGlvbi5hbGlnbm1lbnQ/InRyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMC44NSkiOiJzY2FsZSgwLjg1KSIpKyI7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDEzNG1zIGN1YmljLWJlemllcigwLjQ1LCAwLCAwLjIsIDEpO1xuICB9XG5cblxuICAuaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLWxhdW5jaGVyOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgIisodC5hY2Nlc3NpYmlsaXR5LnRhYk5hdmlnYXRpb24/ImJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDVweCAiK2Z1bmN0aW9uKHQpe3ZhciBlPXQuYWNjZXNzaWJpbGl0eTtyZXR1cm4gamwuTVtlLmFjY2Vzc2liaWxpdHlUaGVtZV19KHQpKyI7IjoiIikrIlxuICB9XG5cbiAgLmludGVyY29tLWxpZ2h0d2VpZ2h0LWFwcC1sYXVuY2hlci1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAiK1JsKCkrInB4O1xuICAgIGhlaWdodDogIitSbCgpKyJweDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTAwbXMgbGluZWFyLCBvcGFjaXR5IDgwbXMgbGluZWFyO1xuICB9XG5cbiAgLmludGVyY29tLWxpZ2h0d2VpZ2h0LWFwcC1sYXVuY2hlci1pY29uLW9wZW4ge1xuICAgICIrKHQuaXNNZXNzZW5nZXJPcGVuJiYhdC5oaWRlTGlnaHR3ZWlnaHRBcHBNZXNzZW5nZXI/IlxuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzMGRlZykgc2NhbGUoMCk7XG4gICAgICAiOiJcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykgc2NhbGUoMSk7XG4gICAgICAiKSsiXG4gIH1cblxuICAuaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLWxhdW5jaGVyLWljb24tb3BlbiBzdmcge1xuICAgIHdpZHRoOiAiK0hsKCkrInB4O1xuICAgIGhlaWdodDogIitIbCgpKyJweDtcbiAgfVxuXG4gIC5pbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXItaWNvbi1vcGVuIHN2ZyBwYXRoIHtcbiAgICBmaWxsOiAiK0dsKHQpKyI7XG4gIH1cblxuICAuaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLWxhdW5jaGVyLWljb24tc2VsZi1zZXJ2ZSB7XG4gICAgIisodC5pc01lc3Nlbmdlck9wZW4mJiF0LmhpZGVMaWdodHdlaWdodEFwcE1lc3Nlbmdlcj8iXG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDMwZGVnKSBzY2FsZSgwKTtcbiAgICAgICI6IlxuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSBzY2FsZSgxKTtcbiAgICAgICIpKyJcbiAgfVxuXG4gIC5pbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXItaWNvbi1zZWxmLXNlcnZlIHN2ZyB7XG4gICAgaGVpZ2h0OiAiKyhSbCgpLTQpKyJweDtcbiAgfVxuXG4gIC5pbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXItaWNvbi1zZWxmLXNlcnZlIHN2ZyBwYXRoIHtcbiAgICBmaWxsOiAiK0dsKHQpKyI7XG4gIH1cblxuICAuaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLWxhdW5jaGVyLWN1c3RvbS1pY29uLW9wZW4ge1xuICAgIG1heC1oZWlnaHQ6ICIrSGwoKSsicHg7XG4gICAgbWF4LXdpZHRoOiAiK0hsKCkrInB4O1xuXG4gICAgIisodC5pc01lc3Nlbmdlck9wZW4mJiF0LmhpZGVMaWdodHdlaWdodEFwcE1lc3Nlbmdlcj8iXG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDMwZGVnKSBzY2FsZSgwKTtcbiAgICAgICI6IlxuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSBzY2FsZSgxKTtcbiAgICAgICIpKyJcbiAgfVxuXG4gIC5pbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXItaWNvbi1taW5pbWl6ZSB7XG4gICAgIisodC5pc01lc3Nlbmdlck9wZW4mJiF0LmhpZGVMaWdodHdlaWdodEFwcE1lc3Nlbmdlcj8iXG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHNjYWxlKDEpO1xuICAgICAgIjoiXG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC02MGRlZykgc2NhbGUoMCk7XG4gICAgICAiKSsiXG4gIH1cblxuICAuaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLWxhdW5jaGVyLWljb24tbWluaW1pemUgc3ZnIHBhdGgge1xuICAgIGZpbGw6ICIrR2wodCkrIjtcbiAgfVxuXG4gIC8qIEV4dGVuZGVkIGxhdW5jaGVyIHN0eWxlcyAqL1xuICAuaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLWxhdW5jaGVyLmludGVyY29tLWxhdW5jaGVyLWV4dGVuZGVkIHtcbiAgICB3aWR0aDogY2FsYygiK1BsLndyKyJweCAtIDMwcHgpO1xuICAgIG1heC13aWR0aDogY2FsYygiK1BsLndyKyJweCAtIDMwcHgpO1xuICAgIGhlaWdodDogY2FsYygiK1BsLm5rKyJweCAtIDI2cHgpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoIitQbC5uaysicHggLSAyNnB4KTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgcGFkZGluZzogMTJweCAxNnB4IDEycHggMTJweCAhaW1wb3J0YW50O1xuICAgIGdhcDogNnB4O1xuICAgIC8qIFVzZSB0aGVtZSBiYWNrZ3JvdW5kIGluc3RlYWQgb2YgaGFyZGNvZGVkIGdyYWRpZW50ICovXG4gICAgYmFja2dyb3VuZDogIisodC5pc1Nwb3RsaWdodFNoZWxsP1ZsKHQpOnQuY29sb3JzLnByaW1hcnlDb2xvcikrIjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xuICAgIGJveC1zaGFkb3c6IDBweCAtMnB4IDUwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgICIrKHQuaXNNZXNzZW5nZXJPcGVuJiYhdC5oaWRlTGlnaHR3ZWlnaHRBcHBNZXNzZW5nZXI/ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiOiIiKSsiXG4gIH1cblxuICAuaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLWxhdW5jaGVyLmludGVyY29tLWxhdW5jaGVyLWV4dGVuZGVkIC5pbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXItaWNvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAiK0hsKCkrInB4O1xuICAgIGhlaWdodDogIitIbCgpKyJweDtcbiAgfVxuXG4gIC5pbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXItdGV4dCB7XG4gICAgLyogTWF0Y2ggdGV4dCBjb2xvciB3aXRoIGxhdW5jaGVyIGljb24gKi9cbiAgICBjb2xvcjogIitHbCh0KSsiO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG1heC13aWR0aDogMTQwcHg7XG4gICAgb3BhY2l0eTogIisodC5pc01lc3Nlbmdlck9wZW4mJiF0LmhpZGVMaWdodHdlaWdodEFwcE1lc3Nlbmdlcj8wOjEpKyI7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSA4MG1zIGxpbmVhcjtcbiAgfVxuXG4gIC5pbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbWVzc2VuZ2VyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogIisoRmwodCkrMikrIjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICIrVmwodCkrIjtcbiAgICBhbmltYXRpb246IGludGVyY29tLWxpZ2h0d2VpZ2h0LWFwcC1tZXNzZW5nZXIgMjUwbXMgY3ViaWMtYmV6aWVyKDAsIDEsIDEsIDEpO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSAiKygiY2VudGVyIj09PXQuY3VzdG9taXphdGlvbi5hbGlnbm1lbnQ/ImNlbnRlciI6dC5jdXN0b21pemF0aW9uLmFsaWdubWVudCkrIjtcblxuICAgICIrKHQuaXNNb2JpbGU/IlxuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAiOnQuY3VzdG9taXphdGlvbi5lbWJlZE1lc3Nlbmdlcj8iXG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6ICIrKHQuaXNMYXVuY2hlckVuYWJsZWQ/ImNhbGMoMTAwJSAtICIrKFJsKCkrVWwoKSt6bCgpKSsicHgpIjoiMTAwJSIpKyI7XG4gICAgICAgIG1heC1oZWlnaHQ6ICIrKHQuaXNMYXVuY2hlckVuYWJsZWQ/ImNhbGMoMTAwJSAtICIrKFJsKCkrVWwoKSt6bCgpKSsicHgpIjoiMTAwJSIpKyI7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDgwcHg7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBib3R0b206ICIrKHQuaXNMYXVuY2hlckVuYWJsZWQ/UmwoKStVbCgpK3psKCkrInB4IjoiMCIpKyI7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAiOiJcbiAgICAgICAgd2lkdGg6ICIrQmwodCkrInB4O1xuICAgICAgICBoZWlnaHQ6ICIrZnVuY3Rpb24odCl7cmV0dXJuImNhbGMoMTAwJSAtICIrKHpsKCkrRGwodCkpKyJweCkifSh0KSsiO1xuICAgICAgICBtYXgtaGVpZ2h0OiAiK2Z1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIG51bGwhPShlPW51bGw9PShuPXQuY3VzdG9taXphdGlvbik/dm9pZCAwOm4ubWVzc2VuZ2VySGVpZ2h0KT9lOjcwNH0odCkrInB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAyNTBweDtcbiAgICAgICAgIisoImNlbnRlciI9PT10LmN1c3RvbWl6YXRpb24uYWxpZ25tZW50PyJsZWZ0OiBjYWxjKDUwJSAtICIrQmwodCkvMisicHgpOyI6dC5jdXN0b21pemF0aW9uLmFsaWdubWVudCsiOiAiK3QuY3VzdG9taXphdGlvbi5ob3Jpem9udGFsUGFkZGluZysicHg7IikrIlxuICAgICAgICBib3R0b206ICIrRGwodCkrInB4O1xuICAgICAgICBib3gtc2hhZG93OiAwIDVweCA0MHB4IHJnYmEoMCwwLDAsMC4xNik7XG4gICAgICAiKSsiXG5cbiAgICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICB9XG5cbiAgLmludGVyY29tLWxpZ2h0d2VpZ2h0LWFwcC1tZXNzZW5nZXItaGVhZGVyIHtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiAiK1ZsKHQpKyI7XG4gIH1cblxuICAuaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLW1lc3Nlbmdlci1mb290ZXJ7XG4gICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgYm90dG9tOjA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA4MHB4O1xuICAgIGJhY2tncm91bmQ6ICIrVmwodCkrIjtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAyNXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gIH1cblxuICBAbWVkaWEgcHJpbnQge1xuICAgIC5pbnRlcmNvbS1saWdodHdlaWdodC1hcHAge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbiI7dmFyIGUsbixyfSxXbD1uKDMyOTgpLEtsPW4oODc2ODEpLFpsPWZ1bmN0aW9uKHQpe3JldHVybiJzaWRlX3BhbmVsIj09PXR8fCJmdWxsX3BhZ2UiPT09dH0sSmw9ZnVuY3Rpb24odCl7cmV0dXJuISghdC5pc01lc3Nlbmdlck9wZW58fHQuaGlkZUxpZ2h0d2VpZ2h0QXBwTWVzc2VuZ2VyKX0sWWw9ZnVuY3Rpb24odCxlKXt2YXIgbj1lLm9uTGF1bmNoZXJDbGljayxyPWUub25MYXVuY2hlckhvdmVyLG89ZS5sYXVuY2hlckxvZ29VcmwsaT1lLmFsbG93U2VsZlNlcnZlSWNvbixhPWUubGF1bmNoZXJUZXh0LHU9ZS5hY3RpdmVOb3RpZmljYXRpb25Db3VudCxzPXZvaWQgMD09PXU/MDp1LGM9dGYoZSksbD0hKCFhfHwhYS50cmltKCkpLGY9dC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtmLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixuLCEwKSxmLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsciwhMCksZi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixjLCEwKSxmLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJpbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXIgaW50ZXJjb20tbGF1bmNoZXIiKyhsPyIgaW50ZXJjb20tbGF1bmNoZXItZXh0ZW5kZWQiOiIiKSksZi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJidXR0b24iKSxmLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIiksZi5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCgwLEtsLmopKCExLHMpKSxmLnNldEF0dHJpYnV0ZSgiYXJpYS1saXZlIiwicG9saXRlIiksZi5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLEpsKGUpPyJ0cnVlIjoiZmFsc2UiKTt2YXIgZD10LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKGQuc2V0QXR0cmlidXRlKCJjbGFzcyIsImludGVyY29tLWxpZ2h0d2VpZ2h0LWFwcC1sYXVuY2hlci1pY29uIGludGVyY29tLWxpZ2h0d2VpZ2h0LWFwcC1sYXVuY2hlci1pY29uLW9wZW4iKSxvKXt2YXIgcD10LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpO3Auc2V0QXR0cmlidXRlKCJzcmMiLG8pLHAuc2V0QXR0cmlidXRlKCJhbHQiLCIiKSxwLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJpbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXItY3VzdG9tLWljb24tb3BlbiIpLGQuYXBwZW5kQ2hpbGQocCl9ZWxzZSBpPyhkLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJpbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXItaWNvbiBpbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXItaWNvbi1zZWxmLXNlcnZlIiksZC5pbm5lckhUTUw9JzxzdmcgYXJpYS1oaWRkZW49InRydWUiIHZpZXdCb3g9IjEgMSA2MCA2MCI+PHBhdGggZD0iTTI3Ljc2NSA0Mi4yNDRjLTguNjE0IDAtMTUuNjIyLTcuMDA4LTE1LjYyMi0xNS42MjJTMTkuMTUxIDExIDI3Ljc2NSAxMXMxNS42MjIgNy4wMDggMTUuNjIyIDE1LjYyMi03LjAwNyAxNS42MjItMTUuNjIyIDE1LjYyMnptMC0yOC4zOThjLTcuMDQ1IDAtMTIuNzc1IDUuNzMtMTIuNzc1IDEyLjc3NXM1LjczIDEyLjc3NSAxMi43NzUgMTIuNzc1IDEyLjc3NS01LjczIDEyLjc3NS0xMi43NzUtNS43My0xMi43NzUtMTIuNzc1LTEyLjc3NXoiLz48cGF0aCBkPSJNMzQuODY5IDM5LjE0Nmw0LjAxNC0zLjczOCA5LjI4NiA5LjExNGEzLjE2NCAzLjE2NCAwIDAxLS4wNyA0LjU2MmwtLjA3MS4wNjZhMy4xNjMgMy4xNjMgMCAwMS00LjU2MS0uMjU3bC04LjU5OC05Ljc0N3pNMjcuNzcgMzQuMTczYy0yLjg4MiAwLTUuNDEyLS44NzYtNy42NTYtMi41MjZhMS4wMDIgMS4wMDIgMCAwMS0uMzUtLjgxYy4wMDgtLjQ2MS40NDUtLjk2OSAxLjAyLS45NTkuMjg0LjAwNS40OTMuMTUzLjcxMy4zMDggMS44MzcgMS4zMDIgMy44MzIgMS45NzEgNi4yNzUgMS45NzEgMS44NzUgMCA0LjQ5Mi0uNDc2IDYuMzE0LTIuMTE4YS45OC45OCAwIDAxLjYzOC0uMjYxLjkyLjkyIDAgMDEuNjg2LjI0MWMuMjIyLjIwOS4zMy41MjcuMzM2LjczNWExLjAyIDEuMDIgMCAwMS0uMzE4Ljc3NWMtMS4zMzMgMS4yMzctNC4yNjIgMi42NDQtNy42NTggMi42NDR6Ii8+PC9zdmc+XG4nKTpkLmlubmVySFRNTD0nPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyOCAzMiI+PHBhdGggZD0iTTI4IDMycy00LjcxNC0xLjg1NS04LjUyNy0zLjM0SDMuNDM3QzEuNTQgMjguNjYgMCAyNy4wMjYgMCAyNS4wMTNWMy42NDRDMCAxLjYzMyAxLjU0IDAgMy40MzcgMGgyMS4xMjVjMS44OTggMCAzLjQzNyAxLjYzMiAzLjQzNyAzLjY0NXYxOC40MDRIMjhWMzJ6bS00LjEzOS0xMS45ODJhLjg4Ljg4IDAgMDAtMS4yOTItLjEwNWMtLjAzLjAyNi0zLjAxNSAyLjY4MS04LjU3IDIuNjgxLTUuNDg2IDAtOC41MTctMi42MzYtOC41NzEtMi42ODRhLjg4Ljg4IDAgMDAtMS4yOS4xMDcgMS4wMSAxLjAxIDAgMDAtLjIxOS43MDguOTkyLjk5MiAwIDAwLjMxOC42NjRjLjE0Mi4xMjggMy41MzcgMy4xNSA5Ljc2MiAzLjE1IDYuMjI2IDAgOS42MjEtMy4wMjIgOS43NjMtMy4xNWEuOTkyLjk5MiAwIDAwLjMxNy0uNjY0IDEuMDEgMS4wMSAwIDAwLS4yMTgtLjcwN3oiLz48L3N2Zz4nO2lmKGYuYXBwZW5kQ2hpbGQoZCksbCYmYSl7dmFyIGg9dC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7aC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLWxhdW5jaGVyLXRleHQiKSxoLnRleHRDb250ZW50PWEsZi5hcHBlbmRDaGlsZChoKX1pZighbCl7dmFyIHY9dC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt2LnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJpbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXItaWNvbiBpbnRlcmNvbS1saWdodHdlaWdodC1hcHAtbGF1bmNoZXItaWNvbi1taW5pbWl6ZSIpLHYuaW5uZXJIVE1MPSc8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPlxuICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE4LjYwMSA4LjM5ODk3QzE4LjI2OSA4LjA2NzAyIDE3LjczMDkgOC4wNjcwMiAxNy4zOTg5IDguMzk4OTdMMTIgMTMuNzk3OUw2LjYwMDk5IDguMzk4OTdDNi4yNjkwNCA4LjA2NzAyIDUuNzMwODYgOC4wNjcwMiA1LjM5ODkxIDguMzk4OTdDNS4wNjY5NiA4LjczMDkxIDUuMDY2OTYgOS4yNjkxIDUuMzk4OTEgOS42MDEwNUwxMS4zOTg5IDE1LjYwMUMxMS43MzA5IDE1LjkzMyAxMi4yNjkgMTUuOTMzIDEyLjYwMSAxNS42MDFMMTguNjAxIDkuNjAxMDVDMTguOTMyOSA5LjI2OTEgMTguOTMyOSA4LjczMDkxIDE4LjYwMSA4LjM5ODk3WiIgZmlsbD0iY3VycmVudENvbG9yIi8+XG48L3N2Zz5cbicsZi5hcHBlbmRDaGlsZCh2KX1yZXR1cm4gZn0sUWw9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmludGVyY29tLWxpZ2h0d2VpZ2h0LWFwcC1sYXVuY2hlciIpfSxYbD1mdW5jdGlvbih0LGUsbixyLG8saSl7cmV0dXJuIGZ1bmN0aW9uKGEpe2lmKGkudGV4dENvbnRlbnQ9cWwoYSksZS5sb2NhbGUhPT1hLmxvY2FsZSYmKDAsV2wueFMpKGEubG9jYWxlKSwhZS5pc0FwcEFjdGl2ZSYmYS5pc0FwcEFjdGl2ZT90LmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobik6ZS5pc0FwcEFjdGl2ZSYmIWEuaXNBcHBBY3RpdmUmJnQuZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChuKSwhZS5pc0xhdW5jaGVyRW5hYmxlZCYmYS5pc0xhdW5jaGVyRW5hYmxlZCl7dmFyIHU9WWwodCxhKTtuLmFwcGVuZENoaWxkKHUpfWVsc2UgaWYoIWEuaXNMYXVuY2hlckVuYWJsZWQpe3ZhciBzPVFsKHQpO3MmJm4uY29udGFpbnMocykmJm4ucmVtb3ZlQ2hpbGQocyl9dmFyIGM9UWwodCk7YyYmYy5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLEpsKGEpPyJ0cnVlIjoiZmFsc2UiKSxlLmlzTWVzc2VuZ2VyT3Blbnx8IWEuaXNNZXNzZW5nZXJPcGVufHxhLmhpZGVMaWdodHdlaWdodEFwcE1lc3Nlbmdlcnx8YS5pc1Nwb3RsaWdodFNoZWxsfHxabChhLm1lc3NlbmdlckxheW91dCk/KGUuaXNNZXNzZW5nZXJPcGVuJiYhYS5pc01lc3Nlbmdlck9wZW58fCFlLmlzU3BvdGxpZ2h0U2hlbGwmJmEuaXNTcG90bGlnaHRTaGVsbCYmYS5pc01lc3Nlbmdlck9wZW4pJiZuLmNvbnRhaW5zKHIpJiYobi5yZW1vdmVDaGlsZChyKSxuLnJlbW92ZUNoaWxkKG8pKToobi5hcHBlbmRDaGlsZChyKSxuLmFwcGVuZENoaWxkKG8pKSxlPWF9fSwkbD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXQuZG9jdW1lbnQuYm9keTtlJiZuLmNvbnRhaW5zKGUpJiZuLnJlbW92ZUNoaWxkKGUpfX0sdGY9ZnVuY3Rpb24odCl7dmFyIGU9dC5vbkxhdW5jaGVyS2V5cHJlc3M7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXQua2V5Q29kZTtuIT09VmMuUmsuRU5URVImJm4hPT1WYy5Say5TUEFDRXx8ZSgpfX0sZWY9ZnVuY3Rpb24odCl7dmFyIGU9dC5vblRhYktleURvd247cmV0dXJuIGZ1bmN0aW9uKHQpe3Qua2V5Q29kZT09PVZjLlJrLlRBQiYmZSgpfX0sbmY9ZnVuY3Rpb24odCl7dmFyIGU9dC5vbkNsaWNrO3JldHVybiBmdW5jdGlvbigpe2UoKX19LHJmPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5pc0FwcEFjdGl2ZSxyPWUuaXNMYXVuY2hlckVuYWJsZWQsbz1lLmlzTGF1bmNoZXJTZXR0aW5nc0xvYWRpbmcsaT1lLmxvY2FsZSxhPWUuaXNTcG90bGlnaHRTaGVsbDt2b2lkIDAhPT1pJiYoMCxXbC54UykoaSk7dmFyIHM9ZWYoZSksYz1uZihlKTt0LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHMsITApLHQuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGMsITEpO3ZhciBsPXQuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYobC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwIiksbiYmdC5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGwpLHIpe3ZhciBmPVlsKHQsZSk7bC5hcHBlbmRDaGlsZChmKX1lbHNlIG98fCgwLHUuRGYpKCJbSW50ZXJjb21dIExhdW5jaGVyIGlzIGRpc2FibGVkIGluIHNldHRpbmdzIG9yIGN1cnJlbnQgcGFnZSBkb2VzIG5vdCBtYXRjaCBkaXNwbGF5IGNvbmRpdGlvbnMiKTt2YXIgZD10LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Quc2V0QXR0cmlidXRlKCJjbGFzcyIsImludGVyY29tLWxpZ2h0d2VpZ2h0LWFwcC1tZXNzZW5nZXIgaW50ZXJjb20tbWVzc2VuZ2VyIiksZC5zZXRBdHRyaWJ1dGUoImFyaWEtbGl2ZSIsInBvbGl0ZSIpO3ZhciBwPXQuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLW1lc3Nlbmdlci1oZWFkZXIiKSxkLmFwcGVuZENoaWxkKHApO3ZhciBoPXQuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLW1lc3Nlbmdlci1mb290ZXIiKSxkLmFwcGVuZENoaWxkKGgpO3ZhciB2PXQuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7di5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiaW50ZXJjb20tbGlnaHR3ZWlnaHQtYXBwLWdyYWRpZW50IiksIUpsKGUpfHxhfHxabChlLm1lc3NlbmdlckxheW91dCl8fChsLmFwcGVuZENoaWxkKGQpLGwuYXBwZW5kQ2hpbGQodikpO3ZhciB5PXQuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTt5LnNldEF0dHJpYnV0ZSgiaWQiLCJpbnRlcmNvbS1saWdodHdlaWdodC1hcHAtc3R5bGUiKSx5LnNldEF0dHJpYnV0ZSgidHlwZSIsInRleHQvY3NzIik7dmFyIGc9dC5kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShxbChlKSk7cmV0dXJuIHkuYXBwZW5kQ2hpbGQoZyksbC5hcHBlbmRDaGlsZCh5KSx7dXBkYXRlTGlnaHR3ZWlnaHRBcHA6WGwodCxlLGwsZCx2LGcpLHJlbW92ZUxpZ2h0d2VpZ2h0QXBwOiRsKHQsbCl9fSxvZj0oMCxHci5NeikoW2Z1bmN0aW9uKHQpe3JldHVybiB0LmFwcH0sZnVuY3Rpb24odCl7cmV0dXJuIHQubGF1bmNoZXJTZXR0aW5nc31dLChmdW5jdGlvbih0LGUpe3JldHVybiB0LmlzQm9vdGVkfHx0LmJvb3RGYWlsZWR8fHQuaXNCb290aW5nJiYobnVsbD09ZT92b2lkIDA6ZS5pbnN0YW50Qm9vdEVuYWJsZWQpfHx0LmlzQm9vdGluZyYmIShudWxsIT1lJiZlLmlzTG9hZGluZykmJihudWxsPT1lP3ZvaWQgMDplLnNob3dMYXVuY2hlcil9KSksYWY9big0NjY0OSksdWY9ZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6Ri5IR0ssaXNBY3RpdmU6dH19O2Z1bmN0aW9uIHNmKCl7cmV0dXJuIHNmPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sc2YuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciBjZj0oMCxHci5qOCkoe2lzQXBwQWN0aXZlOm9mLGlzTGF1bmNoZXJFbmFibGVkOnAuQSxpc0xhdW5jaGVyU2V0dGluZ3NMb2FkaW5nOkNsLnJYLGlzTWVzc2VuZ2VyT3BlbjpPbC5BLGN1c3RvbWl6YXRpb246aC5BeSxhY2Nlc3NpYmlsaXR5OkFsLGNvbG9yczpUbCxsYXVuY2hlckxvZ29Vcmw6Q2wuWEssbGF1bmNoZXJUZXh0OkNsLm5DLGFsbG93U2VsZlNlcnZlSWNvbjplby5OcCxsb2NhbGU6YWYuQSxoaWRlTGlnaHR3ZWlnaHRBcHBNZXNzZW5nZXI6ZW8uQ08saXNVbmlmaWVkU3R5bGluZzpvYy5TSSxpc1Nwb3RsaWdodFNoZWxsOmVvLm1CLG1lc3NlbmdlckxheW91dDpoLmxkfSksbGY9ZnVuY3Rpb24odCl7dmFyIGU9KDAsb2MuQlUpKHQuZ2V0U3RhdGUoKSk7KDAsVi5BNSkoImNsaWNrZWQiLCJsYXVuY2hlciIsImluX2FwcCIsIiIse2lzX21lc3Nlbmdlcl9vcGVuOiExLGlzX2N1c3RvbV9sYXVuY2hlcjohMSxzcGFjZV9vcGVuZWQ6ZX0pLHQuZGlzcGF0Y2goKDAscmMua0IpKCkpfSxmZj1mdW5jdGlvbih0LGUpe3ZhciBuPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2lzTW9iaWxlOigwLGkuSVMpKCksb25MYXVuY2hlckNsaWNrOmZ1bmN0aW9uKCl7ZS5nZXRTdGF0ZSgpLmFjY2Vzc2liaWxpdHkudGFiTmF2aWdhdGlvbiYmZS5kaXNwYXRjaCgoMCx4Lnk4KSghMSkpLGxmKGUpfSxvbkxhdW5jaGVySG92ZXI6ZnVuY3Rpb24oKXtlLmRpc3BhdGNoKCgwLFJuLkxWKSgpKSxlLmRpc3BhdGNoKCgwLFJuLnBSKSgpKX0sb25MYXVuY2hlcktleXByZXNzOmZ1bmN0aW9uKCl7bGYoZSl9LG9uQ2xpY2s6ZnVuY3Rpb24oKXtlLmdldFN0YXRlKCkuYWNjZXNzaWJpbGl0eS50YWJOYXZpZ2F0aW9uJiZlLmRpc3BhdGNoKCgwLHgueTgpKCExKSl9LG9uVGFiS2V5RG93bjpmdW5jdGlvbigpe2UuZ2V0U3RhdGUoKS5hY2Nlc3NpYmlsaXR5LnRhYk5hdmlnYXRpb258fGUuZGlzcGF0Y2goKDAseC55OCkoITApKX19fSgwLGUpLHI9Y2YoZS5nZXRTdGF0ZSgpKSxvPXNmKHt9LHIsbiksYT1yZih0LG8pLHU9YS51cGRhdGVMaWdodHdlaWdodEFwcCxzPWEucmVtb3ZlTGlnaHR3ZWlnaHRBcHA7ZS5kaXNwYXRjaCh1ZighMCkpO3ZhciBjPWUuc3Vic2NyaWJlKChmdW5jdGlvbigpe3ZhciB0PWNmKGUuZ2V0U3RhdGUoKSk7aWYodCE9PXIpe3ZhciBvPXNmKHt9LHQsbik7dShvKX19KSk7cmV0dXJuIGZ1bmN0aW9uKCl7YygpLHModCksZS5kaXNwYXRjaCh1ZighMSkpfX0sZGY9big3NTc2NSkscGY9bigxMzUwNSksaGY9KDAsR3IuTXopKFtmdW5jdGlvbih0KXtyZXR1cm4gdC5hcHAuaXNNZXNzZW5nZXJPcGVufV0sKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLHZmPSgwLEdyLk16KShbei5BXSwoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RoPjB9KSkseWY9KDAsR3IuTXopKFtILkFdLChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGg+MH0pKSxnZj0oMCxHci5NeikoW2RmLkFdLChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGg+MH0pKSxtZj0oMCxHci5NeikoW2Z1bmN0aW9uKHQpe3JldHVybiB0Lmluc3RhbGwuaXNJbnN0YWxsTW9kZU9wZW59XSwoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSksYmY9KDAsR3IuTXopKFtmdW5jdGlvbih0KXtyZXR1cm4gdC5iYW5uZXJzfV0sKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aD4wfSkpLHdmPSgwLEdyLk16KShbcGYuY1ZdLChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSxfZj0oMCxHci5NeikoW2Z1bmN0aW9uKHQpe3JldHVybiB0LmxhdW5jaGVyRGlzY292ZXJ5TW9kZS5pc0xhdW5jaGVyRGlzY292ZXJ5TW9kZU9wZW5pbmd9XSwoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSksU2Y9KDAsR3IuTXopKFtmdW5jdGlvbih0KXtyZXR1cm4gdC50b3VyLmFjdGl2ZVRvdXJ9XSwoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXR9KSkseGY9KDAsR3IuTXopKFtmdW5jdGlvbih0KXtyZXR1cm4gdC5zdXJ2ZXl9XSwoZnVuY3Rpb24odCl7cmV0dXJuISF0fSkpLEVmPSgwLEdyLk16KShbZnVuY3Rpb24odCl7cmV0dXJuIHQubnVkZ2V9XSwoZnVuY3Rpb24odCl7cmV0dXJuISF0fSkpLENmPSgwLEdyLk16KShbaGYsdmYseWYsZ2YsbWYsYmYsd2YsX2YsU2YseGYsRWZdLChmdW5jdGlvbih0LGUsbixyLG8saSxhLHUscyxjLGwpe3JldHVybiBCb29sZWFuKHR8fGV8fG58fHJ8fG98fGl8fGF8fHV8fHN8fGN8fGwpfSkpLE9mPW4oNTYxMDkpLEFmPW4oOTc0NCk7ZnVuY3Rpb24gSWYodCl7cmV0dXJuIElmPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxJZih0KX1mdW5jdGlvbiBrZigpe2tmPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3ZhciB0LGU9e30sbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24odCxlLG4pe3RbZV09bi52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxhPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIix1PWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIscz1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gYyh0LGUsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXtjKHt9LCIiKX1jYXRjaCh0KXtjPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1ufX1mdW5jdGlvbiBsKHQsZSxuLHIpe3ZhciBpPWUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgZz9lOmcsYT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBMKHJ8fFtdKTtyZXR1cm4gbyhhLCJfaW52b2tlIix7dmFsdWU6Tyh0LG4sdSl9KSxhfWZ1bmN0aW9uIGYodCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHQpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnR9fX1lLndyYXA9bDt2YXIgZD0ic3VzcGVuZGVkU3RhcnQiLHA9InN1c3BlbmRlZFlpZWxkIixoPSJleGVjdXRpbmciLHY9ImNvbXBsZXRlZCIseT17fTtmdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIG0oKXt9ZnVuY3Rpb24gYigpe312YXIgdz17fTtjKHcsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgXz1PYmplY3QuZ2V0UHJvdG90eXBlT2YsUz1fJiZfKF8oVChbXSkpKTtTJiZTIT09biYmci5jYWxsKFMsYSkmJih3PVMpO3ZhciB4PWIucHJvdG90eXBlPWcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodyk7ZnVuY3Rpb24gRSh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2ModCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24gQyh0LGUpe2Z1bmN0aW9uIG4obyxpLGEsdSl7dmFyIHM9Zih0W29dLHQsaSk7aWYoInRocm93IiE9PXMudHlwZSl7dmFyIGM9cy5hcmcsbD1jLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09SWYobCkmJnIuY2FsbChsLCJfX2F3YWl0Iik/ZS5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bigibmV4dCIsdCxhLHUpfSksKGZ1bmN0aW9uKHQpe24oInRocm93Iix0LGEsdSl9KSk6ZS5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxhKGMpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKCJ0aHJvdyIsdCxhLHUpfSkpfXUocy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgZSgoZnVuY3Rpb24oZSxvKXtuKHQscixlLG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIE8oZSxuLHIpe3ZhciBvPWQ7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PWgpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihvPT09dil7aWYoInRocm93Ij09PWkpdGhyb3cgYTtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1hOzspe3ZhciB1PXIuZGVsZWdhdGU7aWYodSl7dmFyIHM9QSh1LHIpO2lmKHMpe2lmKHM9PT15KWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobz09PWQpdGhyb3cgbz12LHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bz1oO3ZhciBjPWYoZSxuLHIpO2lmKCJub3JtYWwiPT09Yy50eXBlKXtpZihvPXIuZG9uZT92OnAsYy5hcmc9PT15KWNvbnRpbnVlO3JldHVybnt2YWx1ZTpjLmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PWMudHlwZSYmKG89dixyLm1ldGhvZD0idGhyb3ciLHIuYXJnPWMuYXJnKX19fWZ1bmN0aW9uIEEoZSxuKXt2YXIgcj1uLm1ldGhvZCxvPWUuaXRlcmF0b3Jbcl07aWYobz09PXQpcmV0dXJuIG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09ciYmZS5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz10LEEoZSxuKSwidGhyb3ciPT09bi5tZXRob2QpfHwicmV0dXJuIiE9PXImJihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJyIrcisiJyBtZXRob2QiKSkseTt2YXIgaT1mKG8sZS5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1pLmFyZyxuLmRlbGVnYXRlPW51bGwseTt2YXIgYT1pLmFyZztyZXR1cm4gYT9hLmRvbmU/KG5bZS5yZXN1bHROYW1lXT1hLnZhbHVlLG4ubmV4dD1lLm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSxuLmRlbGVnYXRlPW51bGwseSk6YToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCx5KX1mdW5jdGlvbiBJKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIGsodCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIEwodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChJLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFQoZSl7aWYoZXx8IiI9PT1lKXt2YXIgbj1lW2FdO2lmKG4pcmV0dXJuIG4uY2FsbChlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5uZXh0KXJldHVybiBlO2lmKCFpc05hTihlLmxlbmd0aCkpe3ZhciBvPS0xLGk9ZnVuY3Rpb24gbigpe2Zvcig7KytvPGUubGVuZ3RoOylpZihyLmNhbGwoZSxvKSlyZXR1cm4gbi52YWx1ZT1lW29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPXQsbi5kb25lPSEwLG59O3JldHVybiBpLm5leHQ9aX19dGhyb3cgbmV3IFR5cGVFcnJvcihJZihlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfXJldHVybiBtLnByb3RvdHlwZT1iLG8oeCwiY29uc3RydWN0b3IiLHt2YWx1ZTpiLGNvbmZpZ3VyYWJsZTohMH0pLG8oYiwiY29uc3RydWN0b3IiLHt2YWx1ZTptLGNvbmZpZ3VyYWJsZTohMH0pLG0uZGlzcGxheU5hbWU9YyhiLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT1tfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxiKToodC5fX3Byb3RvX189YixjKHQscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh4KSx0fSxlLmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSxFKEMucHJvdG90eXBlKSxjKEMucHJvdG90eXBlLHUsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPUMsZS5hc3luYz1mdW5jdGlvbih0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBhPW5ldyBDKGwodCxuLHIsbyksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihuKT9hOmEubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTphLm5leHQoKX0pKX0sRSh4KSxjKHgscywiR2VuZXJhdG9yIiksYyh4LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksYyh4LCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdCh0KSxuPVtdO2Zvcih2YXIgciBpbiBlKW4ucHVzaChyKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gdCgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gZSlyZXR1cm4gdC52YWx1ZT1yLHQuZG9uZT0hMSx0fXJldHVybiB0LmRvbmU9ITAsdH19LGUudmFsdWVzPVQsTC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkwscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKGspLCFlKWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5hcmc9ZSxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPXQpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sdT1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBzPXIuY2FsbChhLCJjYXRjaExvYyIpLGM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZihzJiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZihzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyx5KTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbih0LGUpe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz10LmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZlJiYodGhpcy5uZXh0PWUpLHl9LGZpbmlzaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi5maW5hbGx5TG9jPT09dClyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksayhuKSx5fX0sY2F0Y2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4udHJ5TG9jPT09dCl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1yLnR5cGUpe3ZhciBvPXIuYXJnO2sobil9cmV0dXJuIG99fXRocm93IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihlLG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlQoZSkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz10KSx5fX0sZX1mdW5jdGlvbiBMZih0LGUsbixyLG8saSxhKXt0cnl7dmFyIHU9dFtpXShhKSxzPXUudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbih0KX11LmRvbmU/ZShzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIFRmKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBhKHQpe0xmKGkscixvLGEsdSwibmV4dCIsdCl9ZnVuY3Rpb24gdSh0KXtMZihpLHIsbyxhLHUsInRocm93Iix0KX1hKHZvaWQgMCl9KSl9fXZhciBqZj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2lmKCgwLGVvLkxPKSh0LmdldFN0YXRlKCkpfHxDZih0LmdldFN0YXRlKCkpKWUoKTtlbHNlIHZhciBuPXQuc3Vic2NyaWJlKChmdW5jdGlvbigpe0NmKHQuZ2V0U3RhdGUoKSkmJihuKCksZSgpKX0pKX0pKX0sUGY9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlKXt2YXIgbj10LnN1YnNjcmliZSgoZnVuY3Rpb24oKXsoMCxPZi5PaykodC5nZXRTdGF0ZSgpKSYmKG4oKSxlKCkpfSkpfSkpfSxOZj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsbil7dmFyIHI9bmV3IEltYWdlO3IuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGUocil9KSksci5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIG4ocil9KSksci5zcmM9dH0pKX0sTWY9ZnVuY3Rpb24oKXt2YXIgdD1UZihrZigpLm1hcmsoKGZ1bmN0aW9uIHQoZSxuLHIpe3ZhciBvLGksYSx1LHMsYyxsLGYsZDtyZXR1cm4ga2YoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsemYobik7Y2FzZSAyOnJldHVybiBvPSgwLEFmLmtyKSgpLGk9bz9vLndpbmRvdzplLGE9KDAsbGEuQWQpKG4uZ2V0U3RhdGUoKSksdT0hKDAsZW8uTE8pKG4uZ2V0U3RhdGUoKSkmJiFhLmFsd2F5c1Zpc2libGUscz11P2ZmKGksbik6ZnVuY3Rpb24oKXt9LGY9ITAsZD1mdW5jdGlvbigpe2YmJihsP2woKTpzKCksYyYmYygpLGY9ITEpfSxyJiZyKGQpLFBmKG4pLnRoZW4oVGYoa2YoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIGU7cmV0dXJuIGtmKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLFVmKCk7Y2FzZSAyOmU9dC5zZW50LGYmJihjPWUoaSxuKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpKSxqZihuKS50aGVuKFRmKGtmKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBlLHIsbztyZXR1cm4ga2YoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZihmKXt0Lm5leHQ9MjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsUmYoKTtjYXNlIDQ6cmV0dXJuIGU9dC5zZW50LHQubmV4dD03LGUoaSxuKTtjYXNlIDc6bD10LnNlbnQscj0hMSxvPW4uc3Vic2NyaWJlKChmdW5jdGlvbigpe3ZhciB0PW4uZ2V0U3RhdGUoKTshciYmdC5hcHAuaXNNb3VudGVkJiYocj0hMCxzKCksbygpKX0pKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpKSx0LmFicnVwdCgicmV0dXJuIixkKTtjYXNlIDEzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpO3JldHVybiBmdW5jdGlvbihlLG4scil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxSZj1mdW5jdGlvbigpe3ZhciB0PVRmKGtmKCkubWFyaygoZnVuY3Rpb24gdChlKXt2YXIgcixvLGk7cmV0dXJuIGtmKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHZvaWQgMD09PWUmJihlPTMpLHQucHJldj0xLHI9RGF0ZS5ub3coKSx0Lm5leHQ9NSxFbCgpKFRmKGtmKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBrZigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixQcm9taXNlLmFsbChbbi5lKDU1NjMpLG4uZSg3ODcyKSxuLmUoNDMxNSksbi5lKDg0NjIpLG4uZSgzNTI0KV0pLnRoZW4obi5iaW5kKG4sNjI4OTYpKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpLHtyZXRyaWVzOmV9KTtjYXNlIDU6cmV0dXJuIG89dC5zZW50LGk9RGF0ZS5ub3coKSwoMCxWLlZlKSgibG9hZF9hcHBfYnVuZGxlX2R1cmF0aW9uIixpLXIpLHQuYWJydXB0KCJyZXR1cm4iLG8uZGVmYXVsdCk7Y2FzZSAxMTp0aHJvdyB0LnByZXY9MTEsdC50MD10LmNhdGNoKDEpLCgwLFYub1MpKCJsb2FkX2FwcF9idW5kbGVfZmFpbGVkIiksdC50MDtjYXNlIDE1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCxudWxsLFtbMSwxMV1dKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksVWY9ZnVuY3Rpb24oKXt2YXIgdD1UZihrZigpLm1hcmsoKGZ1bmN0aW9uIHQoZSl7dmFyIHI7cmV0dXJuIGtmKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHZvaWQgMD09PWUmJihlPTMpLHQucHJldj0xLHQubmV4dD00LEVsKCkoVGYoa2YoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGtmKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLFByb21pc2UuYWxsKFtuLmUoNTU2Myksbi5lKDg0NjIpLG4uZSg4NjM1KV0pLnRoZW4obi5iaW5kKG4sODUzNjQpKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpLHtyZXRyaWVzOmV9KTtjYXNlIDQ6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHIuZGVmYXVsdCk7Y2FzZSA4OnRocm93IHQucHJldj04LHQudDA9dC5jYXRjaCgxKSx0LnQwO2Nhc2UgMTE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1sxLDhdXSl9KSkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLHpmPWZ1bmN0aW9uKCl7dmFyIHQ9VGYoa2YoKS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciBuLHI7cmV0dXJuIGtmKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYodC5wcmV2PTAsbj1lLmdldFN0YXRlKCkscj1uLmFwcC5sYXVuY2hlckxvZ29Vcmwpe3QubmV4dD01O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSA1OnJldHVybiB0Lm5leHQ9NyxOZihyKTtjYXNlIDc6dC5uZXh0PTExO2JyZWFrO2Nhc2UgOTp0LnByZXY9OSx0LnQwPXQuY2F0Y2goMCk7Y2FzZSAxMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzAsOV1dKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksSGY9TWYsRmY9QSgpKCJpbnRlcmNvbS5hcHAuYWN0aW9ucy51c2VyLnNraXAtcGluZyIpO2Z1bmN0aW9uIERmKHQsZSxuKXt2YXIgcj1EYXRlLm5vdygpLWUubGFzdFJlcXVlc3RBdDtpZihGZigiVGltZSBzaW5jZSBsYXN0IHBpbmcgKGluIG1pbGxpc2Vjb25kcyk6IixyKSxyPjM2ZTUpcmV0dXJuITE7aWYoIXR8fCgwLGdlLkkpKHQpKXJldHVybiEwO3ZhciBvPSEhdC5lbWFpbCYmdC5lbWFpbCE9PShudWxsPT1uP3ZvaWQgMDpuLmVtYWlsKSxpPSEhdC51c2VyX2lkJiZ0LnVzZXJfaWQhPT0obnVsbD09bj92b2lkIDA6bi51c2VySWQpLGE9ISF0LmFwcF9pZCYmdC5hcHBfaWQhPT0obnVsbD09bj92b2lkIDA6bi5hcHBJZCk7aWYob3x8aXx8YSlyZXR1cm4hMTt2YXIgdT1VYyh0KTtpZigoMCxnZS5JKSh1KSlyZXR1cm4hMDt2YXIgcz1lLmN1c3RvbUF0dHJpYnV0ZXM7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHUpPT09SlNPTi5zdHJpbmdpZnkocyl9dmFyIEJmPW4oODcxMzMpO2Z1bmN0aW9uIFZmKHQpe3JldHVybiBWZj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sVmYodCl9ZnVuY3Rpb24gR2YoKXtyZXR1cm4gR2Y9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxHZi5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcWYoKXtxZj1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgdCxlPXt9LG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHksbz1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKHQsZSxuKXt0W2VdPW4udmFsdWV9LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsdT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksdFtlXX10cnl7Yyh7fSwiIil9Y2F0Y2godCl7Yz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRbZV09bn19ZnVuY3Rpb24gbCh0LGUsbixyKXt2YXIgaT1lJiZlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGc/ZTpnLGE9T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgTChyfHxbXSk7cmV0dXJuIG8oYSwiX2ludm9rZSIse3ZhbHVlOk8odCxuLHUpfSksYX1mdW5jdGlvbiBmKHQsZSxuKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChlLG4pfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZS53cmFwPWw7dmFyIGQ9InN1c3BlbmRlZFN0YXJ0IixwPSJzdXNwZW5kZWRZaWVsZCIsaD0iZXhlY3V0aW5nIix2PSJjb21wbGV0ZWQiLHk9e307ZnVuY3Rpb24gZygpe31mdW5jdGlvbiBtKCl7fWZ1bmN0aW9uIGIoKXt9dmFyIHc9e307Yyh3LGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIF89T2JqZWN0LmdldFByb3RvdHlwZU9mLFM9XyYmXyhfKFQoW10pKSk7UyYmUyE9PW4mJnIuY2FsbChTLGEpJiYodz1TKTt2YXIgeD1iLnByb3RvdHlwZT1nLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpO2Z1bmN0aW9uIEUodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXtjKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludm9rZShlLHQpfSkpfSkpfWZ1bmN0aW9uIEModCxlKXtmdW5jdGlvbiBuKG8saSxhLHUpe3ZhciBzPWYodFtvXSx0LGkpO2lmKCJ0aHJvdyIhPT1zLnR5cGUpe3ZhciBjPXMuYXJnLGw9Yy52YWx1ZTtyZXR1cm4gbCYmIm9iamVjdCI9PVZmKGwpJiZyLmNhbGwobCwiX19hd2FpdCIpP2UucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe24oIm5leHQiLHQsYSx1KX0pLChmdW5jdGlvbih0KXtuKCJ0aHJvdyIsdCxhLHUpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtjLnZhbHVlPXQsYShjKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbigidGhyb3ciLHQsYSx1KX0pKX11KHMuYXJnKX12YXIgaTtvKHRoaXMsIl9pbnZva2UiLHt2YWx1ZTpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKGUsbyl7bih0LHIsZSxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19KX1mdW5jdGlvbiBPKGUsbixyKXt2YXIgbz1kO3JldHVybiBmdW5jdGlvbihpLGEpe2lmKG89PT1oKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PXYpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKHIubWV0aG9kPWksci5hcmc9YTs7KXt2YXIgdT1yLmRlbGVnYXRlO2lmKHUpe3ZhciBzPUEodSxyKTtpZihzKXtpZihzPT09eSljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89dixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlInJldHVybiI9PT1yLm1ldGhvZCYmci5hYnJ1cHQoInJldHVybiIsci5hcmcpO289aDt2YXIgYz1mKGUsbixyKTtpZigibm9ybWFsIj09PWMudHlwZSl7aWYobz1yLmRvbmU/djpwLGMuYXJnPT09eSljb250aW51ZTtyZXR1cm57dmFsdWU6Yy5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT1jLnR5cGUmJihvPXYsci5tZXRob2Q9InRocm93IixyLmFyZz1jLmFyZyl9fX1mdW5jdGlvbiBBKGUsbil7dmFyIHI9bi5tZXRob2Qsbz1lLml0ZXJhdG9yW3JdO2lmKG89PT10KXJldHVybiBuLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXImJmUuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9dCxBKGUsbiksInRocm93Ij09PW4ubWV0aG9kKXx8InJldHVybiIhPT1yJiYobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK3IrIicgbWV0aG9kIikpLHk7dmFyIGk9ZihvLGUuaXRlcmF0b3Isbi5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9aS5hcmcsbi5kZWxlZ2F0ZT1udWxsLHk7dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhuW2UucmVzdWx0TmFtZV09YS52YWx1ZSxuLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09bi5tZXRob2QmJihuLm1ldGhvZD0ibmV4dCIsbi5hcmc9dCksbi5kZWxlZ2F0ZT1udWxsLHkpOmE6KG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxuLmRlbGVnYXRlPW51bGwseSl9ZnVuY3Rpb24gSSh0KXt2YXIgZT17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKGUuY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYoZS5maW5hbGx5TG9jPXRbMl0sZS5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChlKX1mdW5jdGlvbiBrKHQpe3ZhciBlPXQuY29tcGxldGlvbnx8e307ZS50eXBlPSJub3JtYWwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBMKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2goSSx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBUKGUpe2lmKGV8fCIiPT09ZSl7dmFyIG49ZVthXTtpZihuKXJldHVybiBuLmNhbGwoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgbz0tMSxpPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzxlLmxlbmd0aDspaWYoci5jYWxsKGUsbykpcmV0dXJuIG4udmFsdWU9ZVtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT10LG4uZG9uZT0hMCxufTtyZXR1cm4gaS5uZXh0PWl9fXRocm93IG5ldyBUeXBlRXJyb3IoVmYoZSkrIiBpcyBub3QgaXRlcmFibGUiKX1yZXR1cm4gbS5wcm90b3R5cGU9YixvKHgsImNvbnN0cnVjdG9yIix7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSxvKGIsImNvbnN0cnVjdG9yIix7dmFsdWU6bSxjb25maWd1cmFibGU6ITB9KSxtLmRpc3BsYXlOYW1lPWMoYixzLCJHZW5lcmF0b3JGdW5jdGlvbiIpLGUuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09bXx8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sZS5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsYik6KHQuX19wcm90b19fPWIsYyh0LHMsIkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeCksdH0sZS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sRShDLnByb3RvdHlwZSksYyhDLnByb3RvdHlwZSx1LChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuQXN5bmNJdGVyYXRvcj1DLGUuYXN5bmM9ZnVuY3Rpb24odCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgQyhsKHQsbixyLG8pLGkpO3JldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LEUoeCksYyh4LHMsIkdlbmVyYXRvciIpLGMoeCxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGMoeCwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEdlbmVyYXRvcl0ifSkpLGUua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCksbj1bXTtmb3IodmFyIHIgaW4gZSluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIGUpcmV0dXJuIHQudmFsdWU9cix0LmRvbmU9ITEsdH1yZXR1cm4gdC5kb25lPSEwLHR9fSxlLnZhbHVlcz1ULEwucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpMLHJlc2V0OmZ1bmN0aW9uKGUpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXQsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChrKSwhZSlmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXQpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZSl7aWYodGhpcy5kb25lKXRocm93IGU7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuYXJnPWUsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz10KSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLHU9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxjPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYocyYmYyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYocyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighYyl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MseSk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSx5fSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLGsobikseX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztrKG4pfXJldHVybiBvfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpUKGUpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCkseX19LGV9ZnVuY3Rpb24gV2YodCxlLG4scixvLGksYSl7dHJ5e3ZhciB1PXRbaV0oYSkscz11LnZhbHVlfWNhdGNoKHQpe3JldHVybiB2b2lkIG4odCl9dS5kb25lP2Uocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBLZih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYSh0KXtXZihpLHIsbyxhLHUsIm5leHQiLHQpfWZ1bmN0aW9uIHUodCl7V2YoaSxyLG8sYSx1LCJ0aHJvdyIsdCl9YSh2b2lkIDApfSkpfX1mdW5jdGlvbiBaZih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsSmYoci5rZXkpLHIpfX1mdW5jdGlvbiBKZih0KXt2YXIgZT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT1WZih0KXx8IXQpcmV0dXJuIHQ7dmFyIG49dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciByPW4uY2FsbCh0LGV8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPVZmKHIpKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09ZT9TdHJpbmc6TnVtYmVyKSh0KX0odCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PVZmKGUpP2U6ZSsiIn12YXIgWWY9QSgpKCJpbnRlcmNvbS5hcHAiKSxRZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGU9dGhpczt0aGlzLnJlbmRlckFwcD12b2lkIDAsdGhpcy51bm1vdW50Q3VycmVudEFwcD12b2lkIDAsdGhpcy5zZXNzaW9uPXZvaWQgMCx0aGlzLndpbmRvdz12b2lkIDAsdGhpcy5ib290Q2FsbGVkPXZvaWQgMCx0aGlzLmRlc3Ryb3lTZXNzaW9uPWZ1bmN0aW9uKHQpe2Uuc2Vzc2lvbi5kZXN0cm95KHQpLGUuc2Vzc2lvbj1uZXcgU2woZS53aW5kb3cpO3ZhciBuPSgwLEFmLnROKSgpO2UucmVuZGVyQXBwP2UucmVuZGVyQXBwLnRoZW4oKGZ1bmN0aW9uKHQpe3QoKSxuJiZuLmNsZWFudXAoKX0pKTpuJiZuLmNsZWFudXAoKSxlLnJlbmRlckFwcD12b2lkIDB9LHRoaXMud2luZG93PXQsdGhpcy5zZXNzaW9uPW5ldyBTbCh0aGlzLndpbmRvdyxudWxsLHRoaXMuZGVzdHJveVNlc3Npb24pLHRoaXMuYm9vdENhbGxlZD0hMX12YXIgZSxyLGksYT10LnByb3RvdHlwZTtyZXR1cm4gYS5ib290PWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5ib290Q2FsbGVkKXJldHVybiB0aGlzLnVwZGF0ZSh0KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBlKCl9KSk7dGhpcy5ib290Q2FsbGVkPSEwLHRoaXMuc2Vzc2lvbi52YWxpZGF0ZVNldHRpbmdzKCk7dmFyIG49dGhpcy5zZXNzaW9uLmdldFNldHRpbmdzKHQpO3JldHVybiBuLmRlbW9fbW9kZT90aGlzLmJvb3REZW1vTW9kZShuLGUpOih0aGlzLmZldGNoVG9vbHRpcHModCksdGhpcy5zZXNzaW9uLmZldGNoTGF1bmNoZXJTZXR0aW5nc0lmTmVjZXNzYXJ5KHQpLHRoaXMuc2Vzc2lvbi5jcmVhdGVDdXN0b21pemF0aW9uT3ZlcnJpZGUodCksdGhpcy5zZXNzaW9uLnNldExhdW5jaGVyRW5hYmxlZE92ZXJyaWRlKHQpLHJyLnppKHRoaXMuc2Vzc2lvbi5zdG9yZSxuLmFwcF9pZCksdGhpcy5jcmVhdGVPclVwZGF0ZVVzZXIodCwiYXBpQm9vdCIpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGUoKX0pKSl9LGEuYm9vdERlbW9Nb2RlPWZ1bmN0aW9uKCl7dmFyIHQ9S2YocWYoKS5tYXJrKChmdW5jdGlvbiB0KGUscil7dmFyIG87cmV0dXJuIHFmKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLG4uZSgxNDM0KS50aGVuKG4uYmluZChuLDkyNDAwKSk7Y2FzZSAyOm89dC5zZW50LCgwLG8uZXhlY3V0ZURlbW9Cb290KSh0aGlzLnNlc3Npb24sZSksdGhpcy5yZW5kZXJBcHB8fCh0aGlzLnJlbmRlckFwcD1IZih0aGlzLndpbmRvdyx0aGlzLnNlc3Npb24uc3RvcmUpKSxyKCk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxhLnNldERlbW9WaXNpYmlsaXR5PWZ1bmN0aW9uKCl7dmFyIHQ9S2YocWYoKS5tYXJrKChmdW5jdGlvbiB0KGUpe3ZhciByO3JldHVybiBxZigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixuLmUoMTQzNCkudGhlbihuLmJpbmQobiw5MjQwMCkpO2Nhc2UgMjpyPXQuc2VudCwoMCxyLnNldFZpc2liaWxpdHkpKHRoaXMuc2Vzc2lvbi5zdG9yZSxlKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxhLnNldERlbW9GZWF0dXJlcz1mdW5jdGlvbigpe3ZhciB0PUtmKHFmKCkubWFyaygoZnVuY3Rpb24gdChlKXt2YXIgcjtyZXR1cm4gcWYoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsbi5lKDE0MzQpLnRoZW4obi5iaW5kKG4sOTI0MDApKTtjYXNlIDI6cj10LnNlbnQsKDAsci5zZXRGZWF0dXJlcykodGhpcy5zZXNzaW9uLnN0b3JlLGUpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLGEuY3JlYXRlT3JVcGRhdGVVc2VyPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxyPUdmKHt9LHRoaXMuc2Vzc2lvbi5nZXRTZXR0aW5ncygpLHQpOygwLEFmLnVZKShyKSYmKDAsQWYueWYpKHRoaXMud2luZG93LHIuZW1iZWRfbWVzc2VuZ2VyLHtmdWxsUGFnZToiZnVsbF9wYWdlIj09PXIubWVzc2VuZ2VyX2xheW91dH0pO3ZhciBvPXRoaXMuc2Vzc2lvbi5jcmVhdGVPclVwZGF0ZVVzZXIodCxlKTtyZXR1cm4gdGhpcy5yZW5kZXJBcHB8fCh0aGlzLnJlbmRlckFwcD1IZih0aGlzLndpbmRvdyx0aGlzLnNlc3Npb24uc3RvcmUsKGZ1bmN0aW9uKHQpe24udW5tb3VudEN1cnJlbnRBcHA9dH0pKSksb30sYS5vcGVuTWVzc2VuZ2VyPWZ1bmN0aW9uKCl7dGhpcy5zZXNzaW9uLm9wZW5NZXNzZW5nZXIoKX0sYS5vcGVuTWVzc2VuZ2VyRnJvbUFQST1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnNlc3Npb24uc3RvcmUuZ2V0U3RhdGUoKSxuPWUudXNlcjtpZighKDAsbGEuQWQpKGUpLmFsd2F5c1Zpc2libGUpe2lmKCgwLGguRHMpKGUpKXt2YXIgcj0obnVsbD09dD92b2lkIDA6dC52aXNpYmlsaXR5KXx8QW4uY3kuc2hyaW5rZWQ7aWYocj09PUFuLmN5LmNvbGxhcHNlZCl0aGlzLnNlc3Npb24uc2hvd05ld0NvbnZlcnNhdGlvbigiIixBbi5jeS5jb2xsYXBzZWQpO2Vsc2V7dmFyIGk9KDAsbXIub1ApKGUpO3RoaXMuc2Vzc2lvbi5zdG9yZS5kaXNwYXRjaCgoMCxvLkhDKSgiIitpKygwLEJmLldDKSh7dmlzaWJpbGl0eTpyfSkpKSx0aGlzLnNlc3Npb24ub3Blbk1lc3NlbmdlcigpfX1lbHNlIHRoaXMuc2Vzc2lvbi5vcGVuTWVzc2VuZ2VyKCk7KDAsVi5Kcikobiwib3BlbmVkIiwibWVzc2VuZ2VyIiwiaW5fYXBwIiwiZnJvbV9hcGkiKX19LGEuc2hvd0FydGljbGU9ZnVuY3Rpb24odCxlLG4scil7dGhpcy5zZXNzaW9uLnNob3dBcnRpY2xlKHQsZSxuLHIpfSxhLnNob3dOZXdzPWZ1bmN0aW9uKHQpe3RoaXMuc2Vzc2lvbi5zaG93TmV3cyh0KX0sYS5zaG93VGlja2V0PWZ1bmN0aW9uKHQpe3RoaXMuc2Vzc2lvbi5zaG93VGlja2V0KHQpfSxhLnNob3dUaWNrZXRGb3JtPWZ1bmN0aW9uKHQpe3RoaXMuc2Vzc2lvbi5zaG93VGlja2V0Rm9ybSh0KX0sYS5zaG93U3BhY2U9ZnVuY3Rpb24odCl7dGhpcy5zZXNzaW9uLnNob3dTcGFjZSh0KX0sYS5jbG9zZU1lc3Nlbmdlcj1mdW5jdGlvbigpe3RoaXMuc2Vzc2lvbi5jbG9zZU1lc3NlbmdlcigpfSxhLnNldEhpZGVOb3RpZmljYXRpb25zPWZ1bmN0aW9uKHQpe3RoaXMuc2Vzc2lvbi5zZXRIaWRlTm90aWZpY2F0aW9ucyh0KX0sYS5jbG9zZU1lc3NlbmdlckZyb21BUEk9ZnVuY3Rpb24oKXt0aGlzLnNlc3Npb24uY2xvc2VNZXNzZW5nZXIoKTt2YXIgdD10aGlzLnNlc3Npb24uc3RvcmUuZ2V0U3RhdGUoKS51c2VyOygwLFYuSnIpKHQsImNsb3NlZCIsIm1lc3NlbmdlciIsIm1lc3NlbmdlciIsImZyb21fYXBpIil9LGEuc2hvd0NvbnZlcnNhdGlvbnM9ZnVuY3Rpb24oKXt0aGlzLnNlc3Npb24uc2hvd0NvbnZlcnNhdGlvbnMoKX0sYS5zaG93TmV3Q29udmVyc2F0aW9uPWZ1bmN0aW9uKHQpe3RoaXMuc2Vzc2lvbi5zaG93TmV3Q29udmVyc2F0aW9uKHQpfSxhLnN0YXJ0Q29udmVyc2F0aW9uPWZ1bmN0aW9uKHQsZSl7dGhpcy5zZXNzaW9uLnN0YXJ0Q29udmVyc2F0aW9uKHQsZSl9LGEuc2VuZE1lc3NhZ2U9ZnVuY3Rpb24odCl7dGhpcy5zZXNzaW9uLnNlbmRNZXNzYWdlKHQpfSxhLnNob3dDb252ZXJzYXRpb249ZnVuY3Rpb24odCl7dGhpcy5zZXNzaW9uLnNob3dDb252ZXJzYXRpb24odCl9LGEuc3RhcnRTdXJ2ZXk9ZnVuY3Rpb24odCl7dmFyIGU9cGFyc2VJbnQodCwxMCk7aWYoaXNOYU4oZSkpKDAsdS5qUCkoIkludmFsaWQgc3VydmV5SWQgcGFzc2VkIHRvIHN0YXJ0U3VydmV5LiBzdXJ2ZXlJZCBtdXN0IGJlIGEgbnVtYmVyIik7ZWxzZXt0aGlzLnNlc3Npb24uc3RhcnRTdXJ2ZXkoZSk7dmFyIG49dGhpcy5zZXNzaW9uLnN0b3JlLmdldFN0YXRlKCkudXNlcjsoMCxWLkpyKShuLCJyZXF1ZXN0ZWQiLCJtZXNzZW5nZXIiLCJzdXJ2ZXkiLCJmcm9tX2FwaSIse3J1bGVzZXRfaWQ6ZX0pfX0sYS5zdGFydENoZWNrbGlzdD1mdW5jdGlvbih0KXt2YXIgZT1wYXJzZUludCh0LDEwKTtpc05hTihlKT8oMCx1LmpQKSgiSW52YWxpZCBjaGVja2xpc3RJZCBwYXNzZWQgdG8gc3RhcnRDaGVja2xpc3QuIENoZWNrbGlzdElkIG11c3QgYmUgYSBudW1iZXIiKTp0aGlzLnNlc3Npb24uc3RhcnRDaGVja2xpc3QoZSl9LGEuc3RhcnRUb3VyPWZ1bmN0aW9uKHQpe3ZhciBlPXBhcnNlSW50KHQsMTApO2lmKGlzTmFOKGUpKSgwLHUualApKCJJbnZhbGlkIHRvdXJJZCBwYXNzZWQgdG8gc3RhcnRUb3VyLiB0b3VySWQgbXVzdCBiZSBhIG51bWJlciIpO2Vsc2V7dGhpcy5zZXNzaW9uLnN0YXJ0VG91cihlKTt2YXIgbj10aGlzLnNlc3Npb24uc3RvcmUuZ2V0U3RhdGUoKS51c2VyOygwLFYuSnIpKG4sInJlcXVlc3RlZCIsIm1lc3NlbmdlciIsInRvdXIiLCJmcm9tX2FwaSIse3RvdXJfaWQ6ZX0pfX0sYS5jcmVhdGVFdmVudD1mdW5jdGlvbih0LGUpe3RoaXMuc2Vzc2lvbi5jcmVhdGVFdmVudCh0LGUpfSxhLm9uTWVzc2VuZ2VyT3Blbj1mdW5jdGlvbih0KXt0aGlzLnNlc3Npb24ub25NZXNzZW5nZXJPcGVuKHQpfSxhLm9uTWVzc2VuZ2VyQ2xvc2U9ZnVuY3Rpb24odCl7dGhpcy5zZXNzaW9uLm9uTWVzc2VuZ2VyQ2xvc2UodCl9LGEub25Vc2VyRW1haWxTdXBwbGllZD1mdW5jdGlvbih0KXt0aGlzLnNlc3Npb24ub25Vc2VyRW1haWxTdXBwbGllZCh0KX0sYS5vblJlYWR5PWZ1bmN0aW9uKHQpe3RoaXMuc2Vzc2lvbi5vblJlYWR5KHQpfSxhLm9uVW5yZWFkQ29udmVyc2F0aW9uQ291bnRDaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5zZXNzaW9uLm9uVW5yZWFkQ29udmVyc2F0aW9uQ291bnRDaGFuZ2UodCl9LGEuZ2V0QXJ0aWNsZVJlYWN0aW9uPWZ1bmN0aW9uKHQsZSxuKXt0aGlzLnNlc3Npb24uZ2V0QXJ0aWNsZVJlYWN0aW9uKHQsZSxuKX0sYS5jcmVhdGVBcnRpY2xlUmVhY3Rpb249ZnVuY3Rpb24odCxlLG4scil7dGhpcy5zZXNzaW9uLmNyZWF0ZUFydGljbGVSZWFjdGlvbih0LGUsbixyKX0sYS5wcmV2aWV3SW5ib3VuZEN1c3RvbUJvdD1mdW5jdGlvbih0KXt0aGlzLnNlc3Npb24ucHJldmlld0luYm91bmRDdXN0b21Cb3QodCl9LGEucHJldmlld091dGJvdW5kQ3VzdG9tQm90PWZ1bmN0aW9uKHQpe3RoaXMuc2Vzc2lvbi5wcmV2aWV3T3V0Ym91bmRDdXN0b21Cb3QodCl9LGEucHJldmlld1dvcmtmbG93PWZ1bmN0aW9uKHQpe3RoaXMuc2Vzc2lvbi5wcmV2aWV3V29ya2Zsb3codCl9LGEuY3JlYXRlTWV0cmljPWZ1bmN0aW9uKHQsZSl7dGhpcy5zZXNzaW9uLmNyZWF0ZU1ldHJpYyh0LGUpfSxhLmdldFZpc2l0b3JJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb24uZ2V0VmlzaXRvcklkKCl9LGEuZ2V0VXNlckluZm89ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRVc2VySW5mbyh0KX0sYS5nZXRTbWFydFN1Z2dlc3Rpb25zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zZXNzaW9uLnN0b3JlLmdldFN0YXRlKCk7cmV0dXJuKDAsJGUuemcpKHQpfSxhLmVudGVyVG91clByZXZpZXdNb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlc3Npb24uZW50ZXJUb3VyUHJldmlld01vZGUodCl9LGEuZXhpdFRvdXJQcmV2aWV3TW9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb24uZXhpdFRvdXJQcmV2aWV3TW9kZSgpfSxhLnByZXZpZXdTdXJ2ZXk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2Vzc2lvbi5wcmV2aWV3U3VydmV5KHQpfSxhLnByZXZpZXdCYW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2Vzc2lvbi5wcmV2aWV3QmFubmVyKHQpfSxhLnByZXZpZXdQb3N0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlc3Npb24ucHJldmlld1Bvc3QodCl9LGEuZmV0Y2hUb29sdGlwcz1mdW5jdGlvbih0KXt0cnl7dmFyIGU9WC5MLmdldCgibGFzdFRvb2x0aXBzUmVjZWl2ZWRBdCIpLG49ZT9wYXJzZUludChlKTowO2lmKCFufHxuPChuZXcgRGF0ZSkuZ2V0VGltZSgpLTg2NGU1KXJldHVybjtyZXR1cm4gdGhpcy5zZXNzaW9uLmZldGNoVG9vbHRpcHModCl9Y2F0Y2godCl7cmV0dXJufX0sYS5wcmV2aWV3VG9vbHRpcEdyb3VwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlc3Npb24ucHJldmlld1Rvb2x0aXBHcm91cCh0KX0sYS5leGl0UHJldmlld1Rvb2x0aXBHcm91cD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb24uZXhpdFByZXZpZXdUb29sdGlwR3JvdXAoKX0sYS5oYW5kbGVJbnRlcnNlY3Rpb25Cb290PWZ1bmN0aW9uKCl7dGhpcy5zZXNzaW9uLmhhbmRsZUludGVyc2VjdGlvbkJvb3QoKX0sYS50cmlnZ2VyPWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5zZXNzaW9uLmlzUmVhZHkpcmV0dXJuIHRoaXMuc2Vzc2lvbi50cmlnZ2VyKHQsZSk7KDAsdS5qUCkoIkludGVyY29tIGlzIG5vdCByZWFkeS4gQWJvcnRpbmcgTWVzc2VuZ2VyVHJpZ2dlciByZXF1ZXN0Iil9LGEudHJpZ2dlckJvdD1mdW5jdGlvbih0LGUsbil7aWYodGhpcy5zZXNzaW9uLmlzUmVhZHkpcmV0dXJuIHRoaXMuc2Vzc2lvbi50cmlnZ2VyQm90KHQsZSxuKX0sYS5zZXRJbnN0YWxsYXRpb25UeXBlPWZ1bmN0aW9uKHQpe3RoaXMuc2Vzc2lvbi5zZXRJbnN0YWxsYXRpb25UeXBlKHQpfSxhLnNldEluc3RhbGxhdGlvblZlcnNpb249ZnVuY3Rpb24odCl7dGhpcy5zZXNzaW9uLnNldEluc3RhbGxhdGlvblZlcnNpb24odCl9LGEuc2V0VXNlckF1dGhUb2tlbnM9ZnVuY3Rpb24odCl7dGhpcy5zZXNzaW9uLnNldFVzZXJBdXRoVG9rZW5zKHQpfSxhLnVwZGF0ZT1mdW5jdGlvbigpe3ZhciB0PUtmKHFmKCkubWFyaygoZnVuY3Rpb24gdChlKXt2YXIgbixyLG8saSxhLHUscyxjLGwsZixkLHAsdix5PXRoaXM7cmV0dXJuIHFmKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYodGhpcy5zZXNzaW9uLnZhbGlkYXRlU2V0dGluZ3MoKSxuPXRoaXMuc2Vzc2lvbi5nZXRTZXR0aW5ncyhlKSxyPW4ubWVzc2VuZ2VyX2xheW91dCxvPSExLGk9ITEsciYmKHM9dGhpcy5zZXNzaW9uLnN0b3JlLmdldFN0YXRlKCksYz0oMCxoLmxkKShzKSxsPW4uZW1iZWRfbWVzc2VuZ2VyLGY9bCYmbCE9PShudWxsPT0oYT1zLmN1c3RvbWl6YXRpb25PdmVycmlkZXMpP3ZvaWQgMDphLmVtYmVkTWVzc2VuZ2VyKSxkPSExPT09KG51bGw9PSh1PSgwLEFmLmtyKSgpKT92b2lkIDA6dS5pZnJhbWUuaXNDb25uZWN0ZWQpLCJmdWxsX3BhZ2UiPT09ciYmKCJmdWxsX3BhZ2UiIT09Y3x8Znx8ZCk/KHRoaXMudHJhbnNpdGlvblRvRnVsbFBhZ2UobHx8IiIsbiksbz0hMCk6ImZ1bGxfcGFnZSI9PT1jJiYiZnVsbF9wYWdlIiE9PXImJih0aGlzLnRyYW5zaXRpb25Gcm9tRnVsbFBhZ2Uobiksbz0hMCxpPSEwKSksb3x8dGhpcy5zZXNzaW9uLmNyZWF0ZUN1c3RvbWl6YXRpb25PdmVycmlkZShlKSx0aGlzLnNlc3Npb24uc2V0TGF1bmNoZXJFbmFibGVkT3ZlcnJpZGUoZSksIXRoaXMuc2Vzc2lvbi5pc0RlbW9Nb2RlKCkpe3QubmV4dD0xMDticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMTA6aWYobnVsbCE9ZSYmZS5ndG1fY29va2llX2lkZW50aWZpZXImJnRoaXMuc2Vzc2lvbi53aGVuUmVhZHkoKGZ1bmN0aW9uKCl7dmFyIHQ9eS5zZXNzaW9uLnN0b3JlLmdldFN0YXRlKCkudXNlcjsoMCxWLkpyKSh0LCJndG1fY29va2llX2lkZW50aWZpZXIiLGUuZ3RtX2Nvb2tpZV9pZGVudGlmaWVyLCJtZXNzZW5nZXIiLCJmcm9tX2FwaSIpfSkpLHA9aT9HZih7fSxlLHtlbWJlZF9tZXNzZW5nZXI6IiJ9KTplLHY9dGhpcy5zZXNzaW9uLnN0b3JlLmdldFN0YXRlKCksIURmKHAsdi51c2VyLHYuc2Vzc2lvbikpe3QubmV4dD0yMDticmVha31ZZigiTGFzdCBwaW5nIHdhcyBsZXNzIHRoYW4gYW4gaG91ciBhZ28uIFNraXBwaW5nIHBpbmcuIiksdGhpcy5zZXNzaW9uLmZldGNoTGF1bmNoZXJTZXR0aW5nc0lmTmVjZXNzYXJ5KHt9KSx0aGlzLnNlc3Npb24uY3JlYXRlUGFnZVZpZXdFdmVudCgpLG51bGwhPXAmJnAuYXV0aF90b2tlbnMmJnRoaXMuc2V0VXNlckF1dGhUb2tlbnMocC5hdXRoX3Rva2VucyksdC5uZXh0PTI2O2JyZWFrO2Nhc2UgMjA6cmV0dXJuIHQucHJldj0yMCx0Lm5leHQ9MjMsdGhpcy5jcmVhdGVPclVwZGF0ZVVzZXIocCwiYXBpVXBkYXRlIik7Y2FzZSAyMzpyZXR1cm4gdC5wcmV2PTIzLHRoaXMuc2Vzc2lvbi5tYXJrSG9tZURhdGFBc1N0YWxlKCksdC5maW5pc2goMjMpO2Nhc2UgMjY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1syMCwsMjMsMjZdXSl9KSkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLGEuc3RhcnRGdWxsUGFnZU1lc3Nlbmdlcj1mdW5jdGlvbih0KXt0aGlzLnRyYW5zaXRpb25Ub0Z1bGxQYWdlKHQpfSxhLnN0b3BGdWxsUGFnZU1lc3Nlbmdlcj1mdW5jdGlvbigpe3ZhciB0LGU9bnVsbD09KHQ9dGhpcy5zZXNzaW9uLnN0b3JlLmdldFN0YXRlKCkubGF1bmNoZXJTZXR0aW5ncyk/dm9pZCAwOnQubWVzc2VuZ2VyTGF5b3V0LG49ZSYmImZ1bGxfcGFnZSIhPT1lP2U6IndpZGdldCI7dGhpcy50cmFuc2l0aW9uRnJvbUZ1bGxQYWdlKHttZXNzZW5nZXJfbGF5b3V0Om59KX0sYS50cmFuc2l0aW9uVG9GdWxsUGFnZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dGhpcy51bm1vdW50Q3VycmVudEFwcCYmKHRoaXMudW5tb3VudEN1cnJlbnRBcHAoKSx0aGlzLnVubW91bnRDdXJyZW50QXBwPXZvaWQgMCx0aGlzLnJlbmRlckFwcD12b2lkIDApO3ZhciByPSgwLEFmLnROKSgpO3ImJnIuY2xlYW51cCgpLHRoaXMuc2Vzc2lvbi5jcmVhdGVDdXN0b21pemF0aW9uT3ZlcnJpZGUoR2Yoe30sZSx7bWVzc2VuZ2VyX2xheW91dDoiZnVsbF9wYWdlIixlbWJlZF9tZXNzZW5nZXI6dH0pKSx0aGlzLnNlc3Npb24uc3RvcmUuZGlzcGF0Y2goKDAsby5GVikoKSksdGhpcy5vcGVuTWVzc2VuZ2VyKCksKDAsQWYueWYpKHRoaXMud2luZG93LHQse2Z1bGxQYWdlOiEwfSksdGhpcy5yZW5kZXJBcHA9SGYodGhpcy53aW5kb3csdGhpcy5zZXNzaW9uLnN0b3JlLChmdW5jdGlvbih0KXtuLnVubW91bnRDdXJyZW50QXBwPXR9KSl9LGEudHJhbnNpdGlvbkZyb21GdWxsUGFnZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49KDAsQWYua3IpKCk7bnVsbCE9biYmbi5pZnJhbWUmJihuLmlmcmFtZS5zdHlsZS5kaXNwbGF5PSJub25lIiksdGhpcy5jbG9zZU1lc3NlbmdlcigpLHRoaXMudW5tb3VudEN1cnJlbnRBcHAmJih0aGlzLnVubW91bnRDdXJyZW50QXBwKCksdGhpcy51bm1vdW50Q3VycmVudEFwcD12b2lkIDApO3ZhciByPSgwLEFmLnROKSgpO3ImJnIuY2xlYW51cCgpO3ZhciBvPShudWxsPT10P3ZvaWQgMDp0Lm1lc3Nlbmdlcl9sYXlvdXQpfHwid2lkZ2V0Ijt0aGlzLnNlc3Npb24uY3JlYXRlQ3VzdG9taXphdGlvbk92ZXJyaWRlKEdmKHtoaWRlX2Nsb3NlX2J1dHRvbjohMSxhdXRvX29wZW46ITF9LHQse21lc3Nlbmdlcl9sYXlvdXQ6byxlbWJlZF9tZXNzZW5nZXI6IiJ9KSksdGhpcy5zZXNzaW9uLnNldFNldHRpbmcoImVtYmVkX21lc3NlbmdlciIsIiIpLHRoaXMuc2Vzc2lvbi5zZXRTZXR0aW5nKCJtZXNzZW5nZXJfbGF5b3V0IixvKSx0aGlzLnJlbmRlckFwcD12b2lkIDAsdGhpcy53aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe2UucmVuZGVyQXBwfHwoZS5yZW5kZXJBcHA9SGYoZS53aW5kb3csZS5zZXNzaW9uLnN0b3JlLChmdW5jdGlvbih0KXtlLnVubW91bnRDdXJyZW50QXBwPXR9KSkpfSkpfSxlPXQsciYmWmYoZS5wcm90b3R5cGUsciksaSYmWmYoZSxpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpLFhmPVFmLCRmPW4oMTEwOCksdGQ9big3MTQ0NCksZWQ9big5MTk2NCksbmQ9big2Nzc1MSkscmQ9big2Mjk0OCksb2Q9big0NDgzKSxpZD1uKDgzMTU4KSxhZD1uKDg0MTkwKSx1ZD1uKDE3MTU0KTtmdW5jdGlvbiBzZCh0LGUsbil7aWYoZSYmIUFycmF5LmlzQXJyYXkoZSkmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ZhciByPWUubGVuZ3RoO3JldHVybiBsZChlLHZvaWQgMCE9PW4mJm48cj9uOnIpfXJldHVybiB0KGUsbil9ZnVuY3Rpb24gY2QodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGxkKHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8ZnVuY3Rpb24odCxlKXtpZih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGxkKHQsZSk7dmFyIG49e30udG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP2xkKHQsZSk6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gbGQodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIGZkKHQpe3JldHVybiBmZD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sZmQodCl9ZnVuY3Rpb24gZGQoKXtyZXR1cm4gZGQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJih0W3JdPW5bcl0pfXJldHVybiB0fSxkZC5hcHBseShudWxsLGFyZ3VtZW50cyl9dmFyIHBkPSJJbnRlcmNvbSI7ZnVuY3Rpb24gaGQodCl7dmFyIGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRbcGRdfSh0KTtyZXR1cm4gZSYmZS5xfHxbXX1mdW5jdGlvbiB2ZCh0LGUpe3QuY3VzdG9tX2RhdGE9ZGQoe30sdC5jdXN0b21fZGF0YSx7cHJldmlld19tb2RlOmV9KX12YXIgeWQ9big0OTAxNCksZ2Q9ImludGVyY29tLWVsZW1lbnQtcGlja2VyIjtmdW5jdGlvbiBtZCh0KXtQcm9taXNlLmFsbChbbi5lKDc4NzIpLG4uZSgzMzI2KV0pLnRoZW4obi5iaW5kKG4sNjAxNzUpKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4oMCxlLmxvZ0Vycm9yKSh0KX0pKX1mdW5jdGlvbiBiZCh0LGUsbil7dC5waWNrZXJJZnJhbWVXaW5kb3cmJnQud2luZG93LnBvc3RNZXNzYWdlKHtfX21lc3NhZ2VUeXBlOiJpbnRlcnNlY3Rpb24tc2VydmljZS1yZXNwb25zZSIsX19yZXF1ZXN0SWQ6ZSxyZXN1bHQ6bn0sdC53aW5kb3cubG9jYXRpb24ub3JpZ2luKX1mdW5jdGlvbiB3ZCh0KXt2YXIgZT10LndpbmRvdztpZihudWxsIT1lJiZlLmxvY2F0aW9uKXt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4oMCxCZi5DSCkodC5sb2NhdGlvbilbZ2RdfHx2b2lkIDB9KGUpO2lmKG4pe3ZhciByPWZ1bmN0aW9uKHQpe3ZhciBlLG49dC5nZXRTZXR0aW5ncygpLHI9bnVsbD09bj92b2lkIDA6bi5sYW5ndWFnZV9vdmVycmlkZTtyZXR1cm57YXBwSWQ6bnVsbD09KGU9dC5zdG9yZS5nZXRTdGF0ZSgpLnNlc3Npb24pP3ZvaWQgMDplLmFwcElkLGxvY2FsZToic3RyaW5nIj09dHlwZW9mIHI/cjp2b2lkIDB9fSh0LnNlc3Npb24pLG89ci5hcHBJZCxpPXIubG9jYWxlO298fG1kKG5ldyBFcnJvcigiSW50ZXJzZWN0aW9uIHBpY2tlciBib290ZWQgd2l0aG91dCBhbiBhcHAgaWQgZnJvbSB0aGUgc2Vzc2lvbiIpKSxlLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbihyKXt2YXIgaSxhLHUscztpZihyLnNvdXJjZT09PXQucGlja2VySWZyYW1lV2luZG93JiZyLm9yaWdpbj09PWUubG9jYXRpb24ub3JpZ2luKXt2YXIgYz1udWxsPT0oaT1yLmRhdGEpP3ZvaWQgMDppLl9fcmVxdWVzdERhdGE7aWYoInNlbGVjdG9yLWNob3NlbiI9PT0obnVsbD09Yz92b2lkIDA6Yy5ldmVudE5hbWUpKXt2YXIgbD1udWxsPT0oYT1jLmV2ZW50RGF0YSk/dm9pZCAwOmEuc2VsZWN0b3IsZj1udWxsPT0odT1jLmV2ZW50RGF0YSk/dm9pZCAwOnUudXJsO2lmKGwmJmYpe3ZhciBkPW51bGw9PShzPXIuZGF0YSk/dm9pZCAwOnMuX19yZXF1ZXN0SWQ7KDAsXy5JRykoe3Nlc3Npb246bz97YXBwSWQ6b306bnVsbCx0b2tlbjpuLHNlbGVjdG9yOmwsdXJsOmZ9KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBiZCh0LGQsInN1Y2Nlc3MiKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7bWQoZSksYmQodCxkLCJlcnJvciIpfSkpfX19fSkpLHQuaW5qZWN0SW50ZXJzZWN0aW9uKCJwcm9jZWR1cmUtZWxlbWVudC1zZWxlY3RvciIsbnVsbCE9bz9vOiIiLG51bGwhPWk/aToiIiwnXG4gICAgICAgIDxtZXRhIG5hbWU9ImludGVyc2VjdGlvbi1waWNrZXItcmVsYXkiIGNvbnRlbnQ9InRydWUiPlxuICAgICAgICA8bWV0YSBuYW1lPSJpbnRlcnNlY3Rpb24taG9zdC1vcmlnaW4iIGNvbnRlbnQ9IicrZS5sb2NhdGlvbi5vcmlnaW4rJyI+Jyl9fX12YXIgX2Q9big2NzA5OCksU2Q9bi5uKF9kKTtmdW5jdGlvbiB4ZCh0KXtyZXR1cm4geGQ9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHhkKHQpfWZ1bmN0aW9uIEVkKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxDZChyLmtleSkscil9fWZ1bmN0aW9uIENkKHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPXhkKHQpfHwhdClyZXR1cm4gdDt2YXIgbj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bil7dmFyIHI9bi5jYWxsKHQsZXx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9eGQocikpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHQpfSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09eGQoZSk/ZTplKyIifXZhciBPZD1uKDc4MzkwKSxBZD0iaW50ZXJjb20tc25pcHBldF9faW50ZXJzZWN0aW9uLW1vZGUiLElkPSJpbnRlcnNlY3Rpb24tZnJhbWUiLGtkPSJpbnRlcnNlY3Rpb24tY29udGFpbmVyIixMZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt2b2lkIDA9PT1lJiYoZT1udWxsKSx0aGlzLmludGVyY29tRG9tYWlucz1bImh0dHA6Ly9pbnRlcmNvbS50ZXN0IiwiaHR0cDovL2FwcC5pbnRlcmNvbS50ZXN0IiwiaHR0cHM6Ly9hcHAuaW50ZXJjb20uY29tIiwiaHR0cHM6Ly9hcHAuaW50ZXJjb20uaW8iLCJodHRwczovL2FwcC5maW4uYWkiLCJodHRwczovL2FwcC5ldS5pbnRlcmNvbS5jb20iLCJodHRwczovL2FwcC5ldS5maW4uYWkiLCJodHRwczovL2FwcC5hdS5pbnRlcmNvbS5jb20iLCJodHRwczovL2FwcC5hdS5maW4uYWkiLCJodHRwczovL2ludGVyY29tcmFkZXMuaW50ZXJjb20uaW8iLCJodHRwczovL2ludGVyY29tcmFkZXMuaW50ZXJjb20uY29tIiwiaHR0cHM6Ly9pbnRlcmNvbXJhZGVzLmV1LmludGVyY29tLmNvbSIsImh0dHBzOi8vaW50ZXJjb21yYWRlcy5hdS5pbnRlcmNvbS5jb20iLCJodHRwOi8vaW50ZXJjb21yYWRlcy5pbnRlcmNvbS50ZXN0Il0sdGhpcy53aW5kb3c9dCx0aGlzLm9wZW5lcj10aGlzLndpbmRvdy5vcGVuZXIsdGhpcy5zZXNzaW9uPWUsdGhpcy53aW5kb3c9PT10aGlzLndpbmRvdy5wYXJlbnR8fHRoaXMud2luZG93Lm9wZW5lcnx8KHRoaXMub3BlbmVyPXRoaXMud2luZG93LnBhcmVudCksdGhpcy5zZXR1cEludGVyc2VjdGlvbigpfXZhciBlLHIsbyxpPXQucHJvdG90eXBlO3JldHVybiBpLnNldHVwSW50ZXJzZWN0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy5oYXNQaWNrZXJUb2tlbigpKXRyeXt3ZCh0aGlzKX1jYXRjaCh0KXtQcm9taXNlLmFsbChbbi5lKDc4NzIpLG4uZSgzMzI2KV0pLnRoZW4obi5iaW5kKG4sNjAxNzUpKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4oMCxlLmxvZ0Vycm9yKSh0KX0pKX1lbHNlIHRoaXMub3BlbmVyRXhpc3RzKCkmJih0aGlzLm1vZGVFeGlzdHMoKT90aGlzLmluamVjdEludGVyc2VjdGlvbigpOih0aGlzLnNldHVwTWVzc2FnZUxpc3RlbmVyKCksdGhpcy5zZW5kTWVzc2FnZVRvT3BlbmVyKHt0eXBlOiJpbnRlcmNvbS1zbmlwcGV0X19yZWFkeSJ9KSkpfSxpLnNlbmRNZXNzYWdlVG9PcGVuZXI9ZnVuY3Rpb24odCl7KDAseWQuWjIpKHRoaXMub3BlbmVyKSYmdGhpcy5vcGVuZXIucG9zdE1lc3NhZ2UuY2FsbCh0aGlzLm9wZW5lcix0LCIqIil9LGkuaGFzUGlja2VyVG9rZW49ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGdkIGluKDAsQmYuQ0gpKHRoaXMud2luZG93LmxvY2F0aW9uKX1jYXRjaCh0KXtyZXR1cm4hMX19LGkub3BlbmVyRXhpc3RzPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLm9wZW5lcn0saS5tb2RlRXhpc3RzPWZ1bmN0aW9uKCl7cmV0dXJuISFYLnMuZ2V0KEFkKX0saS5zZXR1cE1lc3NhZ2VMaXN0ZW5lcj1mdW5jdGlvbigpe3RoaXMud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuYm9vdEludGVyc2VjdGlvbi5iaW5kKHRoaXMpKX0saS5nZXRNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIFgucy5nZXQoQWQpfSxpLmdldEFwcElkPWZ1bmN0aW9uKCl7cmV0dXJuIFgucy5nZXQoImludGVyY29tLXNuaXBwZXRfX2ludGVyc2VjdGlvbi1hcHAtaWQiKX0saS5nZXRMb2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gWC5zLmdldCgiaW50ZXJjb20tc25pcHBldF9faW50ZXJzZWN0aW9uLWxvY2FsZSIpfSxpLmJvb3RJbnRlcnNlY3Rpb249ZnVuY3Rpb24odCl7LTEhPT10aGlzLmludGVyY29tRG9tYWlucy5pbmRleE9mKHQub3JpZ2luKSYmImludGVyY29tLXNuaXBwZXRfX2Jvb3QtaW50ZXJzZWN0aW9uIj09PXQuZGF0YS50eXBlJiYodGhpcy5yZW1vdmVNZXNzYWdlTGlzdGVuZXIoKSx0aGlzLnNhdmVPcGVuZXJPcmlnaW4odC5vcmlnaW4pLHRoaXMuaW5qZWN0SW50ZXJzZWN0aW9uKHQuZGF0YS5tb2RlLHQuZGF0YS5hcHBJZCx0LmRhdGEubG9jYWxlKSl9LGkucmVtb3ZlTWVzc2FnZUxpc3RlbmVyPWZ1bmN0aW9uKCl7dGhpcy53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5ib290SW50ZXJzZWN0aW9uLmJpbmQodGhpcykpfSxpLnNhdmVPcGVuZXJPcmlnaW49ZnVuY3Rpb24odCl7WC5zLnNldCgiaW50ZXJjb20tc25pcHBldF9faW50ZXJzZWN0aW9uLW9wZW5lci1vcmlnaW4iLHQpfSxpLmluamVjdEludGVyc2VjdGlvbj1mdW5jdGlvbih0LGUsbixyKXt0aGlzLndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChrZCl8fCh0aGlzLmluamVjdEludGVyc2VjdGlvbkZyYW1lKCksdGhpcy5pbmplY3RFbWJlckFwcCh0LGUsbixyKSl9LGkuaW5qZWN0SW50ZXJzZWN0aW9uRnJhbWU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPXRoaXMud2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO3QuaWQ9a2QsZS5pZD1JZCxlLmZyYW1lQm9yZGVyPTAsZS5zdHlsZS5jb2xvclNjaGVtZT0ibGlnaHQiLHQuYXBwZW5kQ2hpbGQoZSksdGhpcy53aW5kb3cuZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoImJlZm9yZWVuZCIsdCl9LGkuY3JlYXRlU2NyaXB0VGFnPWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3JldHVybiBlLnR5cGU9InRleHQvamF2YXNjcmlwdCIsZS5jaGFyc2V0PSJ1dGYtOCIsZS5zcmM9dCxlfSxpLmluamVjdEZyYW1lVGVtcGxhdGU9ZnVuY3Rpb24odCxlLG4scixvKXt2b2lkIDA9PT1lJiYoZT10aGlzLmdldE1vZGUoKSksdm9pZCAwPT09biYmKG49dGhpcy5nZXRBcHBJZCgpKSx2b2lkIDA9PT1yJiYocj10aGlzLmdldExvY2FsZSgpKSx2b2lkIDA9PT1vJiYobz0iIik7dmFyIGk9U2QoKShlfHwiIiksYT1TZCgpKG58fCIiKSx1PVNkKCkocnx8IiIpO3Qub3BlbigpLHQud3JpdGUoJ1xuICAgIDwhRE9DVFlQRSBodG1sPlxuICAgICAgPGhlYWQ+XG4gICAgICAgIDx0aXRsZT5JbnRlcnNlY3Rpb24gPC90aXRsZT5cbiAgICAgICAgPG1ldGEgbmFtZT0iaW50ZXJzZWN0aW9uLW1vZGUiIGNvbnRlbnQ9JytpKyc+XG4gICAgICAgIDxtZXRhIG5hbWU9ImludGVyc2VjdGlvbi1hcHBJZCIgY29udGVudD0nK2ErJz5cbiAgICAgICAgPG1ldGEgbmFtZT0iaW50ZXJzZWN0aW9uLWxvY2FsZSIgY29udGVudD0nK3UrIj4iK28rIlxuICAgICAgICA8c3R5bGU+XG4gICAgICAgICAgaHRtbCB7XG4gICAgICAgICAgICBjb2xvci1zY2hlbWU6IGxpZ2h0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgfVxuICAgICAgICA8L3N0eWxlPlxuICAgICAgPC9oZWFkPlxuICAgICAgPGJvZHk+PC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgICAiKSx0LmNsb3NlKCl9LGkuaW5qZWN0SW50ZXJzZWN0aW9uU2NyaXB0cz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmNyZWF0ZVNjcmlwdFRhZyhPZC5pbnRlcnNlY3Rpb25fanMpLG49dGhpcy5jcmVhdGVTY3JpcHRUYWcoT2QuaW50ZXJzZWN0aW9uX3N0eWxlcyk7dC5jb250ZW50V2luZG93LmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZSksdC5jb250ZW50V2luZG93LmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobil9LGkuaW5qZWN0RW1iZXJBcHA9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcy53aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoSWQpO3RoaXMucGlja2VySWZyYW1lV2luZG93PW8uY29udGVudFdpbmRvdyx0aGlzLmluamVjdEZyYW1lVGVtcGxhdGUoby5jb250ZW50RG9jdW1lbnQsdCxlLG4sciksdGhpcy5pbmplY3RJbnRlcnNlY3Rpb25TY3JpcHRzKG8pfSxlPXQsciYmRWQoZS5wcm90b3R5cGUsciksbyYmRWQoZSxvKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpOygwLGQuVXIpKCgwLFhvLiQpKCl8fHdpbmRvdyksKDAsci5BKSh3aW5kb3cpLGZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpdHJ5e3ZhciBlPW5ldyB0LkN1c3RvbUV2ZW50KCJ0ZXN0Iix7Y2FuY2VsYWJsZTohMH0pO2lmKGUucHJldmVudERlZmF1bHQoKSwhMCE9PWUuZGVmYXVsdFByZXZlbnRlZCl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBwcmV2ZW50IGRlZmF1bHQiKX1jYXRjaChlKXt2YXIgbj1mdW5jdGlvbih0LGUpeyhlPWV8fHt9KS5idWJibGVzPSEhZS5idWJibGVzLGUuY2FuY2VsYWJsZT0hIWUuY2FuY2VsYWJsZTt2YXIgbj1kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKTtuLmluaXRDdXN0b21FdmVudCh0LGUuYnViYmxlcyxlLmNhbmNlbGFibGUsZS5kZXRhaWwpO3ZhciByPW4ucHJldmVudERlZmF1bHQ7cmV0dXJuIG4ucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXtyLmNhbGwodGhpcyk7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkZWZhdWx0UHJldmVudGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSl9Y2F0Y2godCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwfX0sbn07bi5wcm90b3R5cGU9dC5FdmVudC5wcm90b3R5cGUsdC5DdXN0b21FdmVudD1ufX0od2luZG93KSx3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPXdpbmRvdy5wYXJlbnQucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lO3ZhciBUZD1wYXJlbnQ7KDAscy5NUykod2luZG93KTt2YXIgamQ9bmV3IFhmKFRkKTsoMCxzLkxWKShqZC5zZXNzaW9uLnN0b3JlKTt2YXIgUGQ9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlLG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuKSxpPTA7aTxuO2krKylyW2ldPWFyZ3VtZW50c1tpXTt2YXIgYT1mdW5jdGlvbihlLG4pe3ZvaWQgMD09PWUmJihlPXt9KSx2b2lkIDA9PT1uJiYobj1mdW5jdGlvbigpe30pLGUuYXBpX2Jhc2UmJigwLHVvLnlKKSgiYXBpX2Jhc2UiLGUuYXBpX2Jhc2UpO3ZhciByPXQuc2Vzc2lvbi5nZXRTZXR0aW5ncygpLG89ZGQoe30scixlKTtpZihvLmRpc2FibGVkKXJldHVybigwLFYuc3EpKCJtZXNzZW5nZXJfZGlzYWJsZWQiLHt9LCEwKSwoMCxWLm9TKSgibWVzc2VuZ2VyX2Rpc2FibGVkIix7YXBwX2lkOnIuYXBwX2lkfSksdm9pZCgwLFYuV0EpKHIuYXBwX2lkP3thcHBJZDpyLmFwcF9pZH06bnVsbCk7by5hcHBfaWQmJiJBUFBfSUQiIT09by5hcHBfaWR8fCgwLHUuRlMpKCJbSW50ZXJjb21dIFRoZSBBcHAgSUQgaW4geW91ciBjb2RlIHNuaXBwZXQgaGFzIG5vdCBiZWVuIHNldC4gU2V0IGl0IHRvIHlvdXIgQXBwIElEIGZvdW5kIGluIHNldHRpbmdzIHRvIGNvbXBsZXRlIGluc3RhbGxhdGlvbjogaHR0cHM6Ly9hcHAuaW50ZXJjb20uY29tL2EvYXBwcy9fL3NldHRpbmdzL3dlYiIpLHVkLm0uc2V0KHthcHBfaWQ6by5hcHBfaWR9KSwhKDAsdW8uYjUpKCkmJm8uYXBpX2Jhc2UmJiJodHRwczovL2FwaS1pYW0uaW50ZXJjb20uaW8iIT09by5hcGlfYmFzZSYmImh0dHBzOi8vYXBpLWlhbS5ldS5pbnRlcmNvbS5pbyIhPT1vLmFwaV9iYXNlJiYiaHR0cHM6Ly9hcGktaWFtLmF1LmludGVyY29tLmlvIiE9PW8uYXBpX2Jhc2UmJi0xPT09by5hcGlfYmFzZS5pbmRleE9mKCIuaW50ZXJjb20tbWVzc2VuZ2VyLmNvbSIpJiYoMCx1LkZTKSgiW0ludGVyY29tXSBUaGUgYXBpX2Jhc2UgdmFsdWUgaW4geW91ciBjb2RlIHNuaXBwZXQgaXMgaW52YWxpZC4gU2V0IGl0IHRvIHRoZSBVUkwgbWF0Y2hpbmcgeW91ciB3b3Jrc3BhY2UgcmVnaW9uIGF0IGh0dHBzOi8vZGV2ZWxvcGVycy5pbnRlcmNvbS5jb20vaW5zdGFsbGluZy1pbnRlcmNvbS93ZWIvaW5zdGFsbGF0aW9uLyNpbnN0YWxsaW5nLXRoZS1tZXNzZW5nZXItZm9yLXJlZ2lvbmFsLWRhdGEtaG9zdGVkLWN1c3RvbWVycyIpLG8uaW5zdGFsbGF0aW9uX3R5cGUmJnQuc2V0SW5zdGFsbGF0aW9uVHlwZShvLmluc3RhbGxhdGlvbl90eXBlKSxvLmluc3RhbGxhdGlvbl92ZXJzaW9uJiZ0LnNldEluc3RhbGxhdGlvblZlcnNpb24oby5pbnN0YWxsYXRpb25fdmVyc2lvbiksci5kaXNhYmxlZCYmdC5zZXNzaW9uLnNldFNldHRpbmcoImRpc2FibGVkIiwhMSksby5oYW5kb2ZmX3dpdGhfamF2YXNjcmlwdCYmKDAsTm8uVSkoby5oYW5kb2ZmX3dpdGhfamF2YXNjcmlwdCksZS5tZXNzZW5nZXJfZW52aXJvbm1lbnQmJnQuc2Vzc2lvbi5zZXRTZXR0aW5nKCJtZXNzZW5nZXJfZW52aXJvbm1lbnQiLGUubWVzc2VuZ2VyX2Vudmlyb25tZW50KSx0LmJvb3QoZSxuKX0sYz17fTtjPXtib290OmZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PXt9KSxhKHQpfSx1cGRhdGU6ZnVuY3Rpb24oZSl7dC51cGRhdGUoZSkuY2F0Y2goKGZ1bmN0aW9uKHQpeygwLHMubDIpKHR8fG5ldyBFcnJvcigiQVBJIHVwZGF0ZSBmYWlsZWQgd2l0aCBubyBlcnJvciBkZXRhaWxzIikse2NvbnRleHQ6ImFwaS51cGRhdGUiLGhhc1NldHRpbmdzOiEhZSxzZXR0aW5nc0tleXM6ZT9PYmplY3Qua2V5cyhlKTpbXX0pfSkpfSxzdGFydEZ1bGxQYWdlTWVzc2VuZ2VyOmZ1bmN0aW9uKGUpe3Quc3RhcnRGdWxsUGFnZU1lc3NlbmdlcihlKX0sc3RvcEZ1bGxQYWdlTWVzc2VuZ2VyOmZ1bmN0aW9uKCl7dC5zdG9wRnVsbFBhZ2VNZXNzZW5nZXIoKX0sc2h1dGRvd246ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9ITApLHQuZGVzdHJveVNlc3Npb24oZSl9LHNob3c6ZnVuY3Rpb24oZSl7dC5vcGVuTWVzc2VuZ2VyRnJvbUFQSShlKX0sc2hvd1NwYWNlOmZ1bmN0aW9uKGUpe3Quc2hvd1NwYWNlKGUpfSxzaG93QXJ0aWNsZTpmdW5jdGlvbihlLG4scixvKXt0LnNob3dBcnRpY2xlKGUsbixyLG8pfSxzaG93Q29sbGVjdGlvbjpmdW5jdGlvbih0KXtjWyJwcml2YXRlOm5hdmlnYXRlIl0oJGMuWkwucGF0aCsiL2NvbGxlY3Rpb24vIit0KX0sc2hvd05ld3M6ZnVuY3Rpb24oZSl7dC5zaG93TmV3cyhlKX0sc2hvd1RpY2tldDpmdW5jdGlvbihlKXt0LnNob3dUaWNrZXQoZSl9LHNob3dUaWNrZXRGb3JtOmZ1bmN0aW9uKGUpe3Quc2hvd1RpY2tldEZvcm0oZSl9LHNob3dNZXNzYWdlczpmdW5jdGlvbigpe3Quc2hvd0NvbnZlcnNhdGlvbnMoKX0sc2hvd05ld01lc3NhZ2U6ZnVuY3Rpb24oZSl7dC5zaG93TmV3Q29udmVyc2F0aW9uKGUpfSxzdGFydENvbnZlcnNhdGlvbjpmdW5jdGlvbihlLG4pe3Quc3RhcnRDb252ZXJzYXRpb24oZSxuKX0sc2hvd0NvbnZlcnNhdGlvbjpmdW5jdGlvbihlKXt0LnNob3dDb252ZXJzYXRpb24oZSl9LHN0YXJ0U3VydmV5OmZ1bmN0aW9uKGUpe3Quc3RhcnRTdXJ2ZXkoZSl9LHN0YXJ0Q2hlY2tsaXN0OmZ1bmN0aW9uKGUpe3Quc3RhcnRDaGVja2xpc3QoZSl9LHN0YXJ0VG91cjpmdW5jdGlvbihlKXt0LnN0YXJ0VG91cihlKX0saGlkZTpmdW5jdGlvbigpe3QuY2xvc2VNZXNzZW5nZXJGcm9tQVBJKCl9LGhpZGVOb3RpZmljYXRpb25zOmZ1bmN0aW9uKGUpe3Quc2V0SGlkZU5vdGlmaWNhdGlvbnMoZSl9LHRyYWNrRXZlbnQ6ZnVuY3Rpb24oZSxuKXt0LmNyZWF0ZUV2ZW50KGUsbil9LG9uU2hvdzpmdW5jdGlvbihlKXt0Lm9uTWVzc2VuZ2VyT3BlbihlKX0sb25IaWRlOmZ1bmN0aW9uKGUpe3Qub25NZXNzZW5nZXJDbG9zZShlKX0sb25VbnJlYWRDb3VudENoYW5nZTpmdW5jdGlvbihlKXt0Lm9uVW5yZWFkQ29udmVyc2F0aW9uQ291bnRDaGFuZ2UoZSl9LG9uVXNlckVtYWlsU3VwcGxpZWQ6ZnVuY3Rpb24oZSl7dC5vblVzZXJFbWFpbFN1cHBsaWVkKGUpfSxyZWFkeTpmdW5jdGlvbihlKXt0Lm9uUmVhZHkoZSl9LHRyaWdnZXI6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC50cmlnZ2VyKGUsbil9LHRyaWdnZXJCb3Q6ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0LnRyaWdnZXJCb3QoZSxuLHIpfSxnZXRWaXNpdG9ySWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5nZXRWaXNpdG9ySWQoKX0sZ2V0U21hcnRTdWdnZXN0aW9uczpmdW5jdGlvbigpe3JldHVybiB0LmdldFNtYXJ0U3VnZ2VzdGlvbnMoKX0sZ2V0U2V0dGluZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gdC5zZXNzaW9uLmdldFNldHRpbmdzKCl9LHdob2FtaTpmdW5jdGlvbihlKXtyZXR1cm4gdC5nZXRVc2VySW5mbyhlKX0sc2V0QXV0aFRva2VuczpmdW5jdGlvbihlKXt0LnNldFVzZXJBdXRoVG9rZW5zKGUpfSx2ZXJzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIjY2YmI4MWEwNGI2NTg2ZDYxMGQzMDZiMzFmNTUzNWExNzUyNTNjMGMifSwicHJpdmF0ZTpnZXRBcnRpY2xlUmVhY3Rpb24iOmZ1bmN0aW9uKGUsbixyKXt0LmdldEFydGljbGVSZWFjdGlvbihlLG4scil9LCJwcml2YXRlOmNyZWF0ZU1ldHJpYyI6ZnVuY3Rpb24oZSxuKXt0LmNyZWF0ZU1ldHJpYyhlLG4pfSwicHJpdmF0ZTpjcmVhdGVBcnRpY2xlUmVhY3Rpb24iOmZ1bmN0aW9uKGUsbixyLG8pe3QuY3JlYXRlQXJ0aWNsZVJlYWN0aW9uKGUsbixyLG8pfSwicHJpdmF0ZTplbnRlclRvdXJQcmV2aWV3TW9kZSI6ZnVuY3Rpb24oZSl7dC5lbnRlclRvdXJQcmV2aWV3TW9kZShlKX0sInByaXZhdGU6ZXhpdFRvdXJQcmV2aWV3TW9kZSI6ZnVuY3Rpb24oKXt0LmV4aXRUb3VyUHJldmlld01vZGUoKX0sInByaXZhdGU6Ym9vdFByZXZpZXdPdXRib3VuZEN1c3RvbUJvdCI6ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10JiYodD17fSksdm9pZCAwPT09ZSYmKGU9ZnVuY3Rpb24oKXt9KSxhKHQsZSl9LCJwcml2YXRlOmJvb3RXaXRoQ2FsbGJhY2siOmZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09dCYmKHQ9e30pLHZvaWQgMD09PWUmJihlPWZ1bmN0aW9uKCl7fSksYSh0LGUpfSwicHJpdmF0ZTpwcmV2aWV3SW5ib3VuZEN1c3RvbUJvdCI6ZnVuY3Rpb24oZSl7dC5wcmV2aWV3SW5ib3VuZEN1c3RvbUJvdChlKX0sInByaXZhdGU6cHJldmlld091dGJvdW5kQ3VzdG9tQm90IjpmdW5jdGlvbihlKXt0LnByZXZpZXdPdXRib3VuZEN1c3RvbUJvdChlKX0sInByaXZhdGU6cHJldmlld1dvcmtmbG93IjpmdW5jdGlvbihlKXt0LnByZXZpZXdXb3JrZmxvdyhlKX0sInByaXZhdGU6c2hvd0NvbnZlcnNhdGlvbiI6ZnVuY3Rpb24oZSl7dC5zaG93Q29udmVyc2F0aW9uKGUpfSwicHJpdmF0ZTpwcmV2aWV3U3VydmV5IjpmdW5jdGlvbihlKXt0LnByZXZpZXdTdXJ2ZXkoZSl9LCJwcml2YXRlOnByZXZpZXdCYW5uZXIiOmZ1bmN0aW9uKGUpe3QucHJldmlld0Jhbm5lcihlKX0sInByaXZhdGU6cHJldmlld1Bvc3QiOmZ1bmN0aW9uKGUpe3QucHJldmlld1Bvc3QoZSl9LCJwcml2YXRlOmhhbmRsZUludGVyc2VjdGlvbkJvb3RlZCI6ZnVuY3Rpb24oKXt0LmhhbmRsZUludGVyc2VjdGlvbkJvb3QoKX0sInByaXZhdGU6cHJldmlld1Rvb2x0aXBHcm91cCI6ZnVuY3Rpb24oZSl7KDAsJGYudikoIlByZXZpZXdpbmcgdG9vbHRpcCBncm91cCIsZSksdC5wcmV2aWV3VG9vbHRpcEdyb3VwKGUpfSwicHJpdmF0ZTpleGl0UHJldmlld1Rvb2x0aXBHcm91cCI6ZnVuY3Rpb24oKXt0LmV4aXRQcmV2aWV3VG9vbHRpcEdyb3VwKCl9LCJwcml2YXRlOmJvb3RDb252ZXJzYXRpb25EZW1vTW9kZSI6ZnVuY3Rpb24oZSxuKXt2b2lkIDA9PT1lJiYoZT17fSksdm9pZCAwPT09biYmKG49ZnVuY3Rpb24oKXt9KSwoMCxuZC5GKSgpLHZkKGUsITApLGEoZSxuKSx0LnNob3dOZXdDb252ZXJzYXRpb24oKX0sInByaXZhdGU6c2VuZE1lc3NhZ2UiOmZ1bmN0aW9uKGUpe3Quc2VuZE1lc3NhZ2UoZSl9LCJwcml2YXRlOmNvbnZlcnNhdGlvbmFsOmJvb3RNZXNzZW5nZXJQcmV2aWV3IjpmdW5jdGlvbihlLG4pe3ZvaWQgMD09PWUmJihlPXt9KSx2b2lkIDA9PT1uJiYobj1mdW5jdGlvbigpe30pLCgwLG5kLkYpKCksYShlLG4pLHQuc2hvd05ld0NvbnZlcnNhdGlvbigpfSwicHJpdmF0ZTpzZXRQcmV2aWV3UGVyc29uYWxpdHlTZXR0aW5ncyI6ZnVuY3Rpb24oZSl7ZS5wcmV2aWV3UGVyc29uYWxpdHlTZXR0aW5ncyYmKCgwLG9kLlVBKShlLnByZXZpZXdQZXJzb25hbGl0eVNldHRpbmdzKSx0LnNob3dOZXdDb252ZXJzYXRpb24oKSl9LCJwcml2YXRlOnNldEZpblByZXZpZXdTZXR0aW5ncyI6ZnVuY3Rpb24oZSl7KDAsaWQuJFIpKGUpLHQuc2hvd05ld0NvbnZlcnNhdGlvbigpfSwicHJpdmF0ZTp3b3JrZmxvdzpib290TWVzc2VuZ2VyUHJldmlldyI6ZnVuY3Rpb24oZSxuKXt2YXIgcjt2b2lkIDA9PT1lJiYoZT17fSksdm9pZCAwPT09biYmKG49ZnVuY3Rpb24oKXt9KSwoMCxuZC5GKSgpLCgwLHRkLnU1KShlLndvcmtmbG93SW5zdGFuY2VJZCksKDAsdGQuTnopKGUucHJvZmlsZVZlcnNpb25JZCksKDAsYWQuVUYpKGUucHJldmlld1NldHRpbmdzKSxlLmZpblByZXZpZXdTZXR0aW5ncyYmKDAsaWQuJFIpKGUuZmluUHJldmlld1NldHRpbmdzKSxkZWxldGUgZS53b3JrZmxvd0luc3RhbmNlSWQsZGVsZXRlIGUucHJvZmlsZVZlcnNpb25JZCxkZWxldGUgZS5wcmV2aWV3U2V0dGluZ3MsZGVsZXRlIGUuZmluUHJldmlld1NldHRpbmdzLGUuZmluRXhwZXJpbWVudGFsRGVtbyYmKCgwLGVkLmRzKShlLmZpbkV4cGVyaW1lbnRhbERlbW8pLGRlbGV0ZSBlLmZpbkV4cGVyaW1lbnRhbERlbW8pLG51bGwhPShyPXQuc2Vzc2lvbi5nZXRTZXR0aW5ncygpKSYmbnVsbCE9KHI9ci5lbWFpbCkmJnIuc3RhcnRzV2l0aCgicHJldmlldy11c2VyIikmJmUucHJldmlld01vZGVDdXN0b21pemF0aW9uJiYoKDAscmQubCkoZS5wcmV2aWV3TW9kZUN1c3RvbWl6YXRpb24pLGRlbGV0ZSBlLnByZXZpZXdNb2RlQ3VzdG9taXphdGlvbiksdmQoZSwhMCksYShlLG4pLHQuc2hvd05ld0NvbnZlcnNhdGlvbigpfSwicHJpdmF0ZTpzZXREZW1vVmlzaWJpbGl0eSI6ZnVuY3Rpb24oZSl7dC5zZXREZW1vVmlzaWJpbGl0eShlKX0sInByaXZhdGU6c2V0RGVtb0ZlYXR1cmVzIjpmdW5jdGlvbihlKXtlJiYib2JqZWN0Ij09PWZkKGUpJiYhQXJyYXkuaXNBcnJheShlKSYmdC5zZXREZW1vRmVhdHVyZXMoZSl9LCJwcml2YXRlOnNldEluc3RhbGxhdGlvblR5cGUiOmZ1bmN0aW9uKGUpe3Quc2V0SW5zdGFsbGF0aW9uVHlwZShlKX0sInByaXZhdGU6bmF2aWdhdGUiOmZ1bmN0aW9uKGUsbil7dmFyIHI9KHZvaWQgMD09PW4/e306bikubWV0aG9kLGk9dm9pZCAwPT09cj8icHVzaCI6cjstMT09PWU/dC5zZXNzaW9uLnN0b3JlLmRpc3BhdGNoKCgwLG8uT0UpKCkpOnQuc2Vzc2lvbi5zdG9yZS5kaXNwYXRjaCgicHVzaCI9PT1pPygwLG8uVkMpKGUpOigwLG8uSEMpKGUpKX19O3ZhciBsPXJbMF07aWYobCYmY1tsXSYmKCF0LnNlc3Npb24uZ2V0U2V0dGluZ3MoKS5kaXNhYmxlZHx8ImJvb3QiPT09bCkpcmV0dXJuKGU9YylbbF0uYXBwbHkoZSxzZChjZCxyLnNsaWNlKDEpKSl9fShqZCksTmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGhkKHQpLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiJib290Ij09PShudWxsPT10P3ZvaWQgMDp0WzBdKXx8InNodXRkb3duIj09PShudWxsPT10P3ZvaWQgMDp0WzBdKXx8InByaXZhdGU6d29ya2Zsb3c6Ym9vdE1lc3NlbmdlclByZXZpZXciPT09KG51bGw9PXQ/dm9pZCAwOnRbMF0pfHwicHJpdmF0ZTpjb252ZXJzYXRpb25hbDpib290TWVzc2VuZ2VyUHJldmlldyI9PT0obnVsbD09dD92b2lkIDA6dFswXSl9KSl9KFRkKTshZnVuY3Rpb24odCxlKXtmb3IodmFyIG49aGQoZSk7bi5sZW5ndGg7KXt2YXIgcj1uLnNoaWZ0KCk7bnVsbCE9ciYmclswXSYmdC5hcHBseSh2b2lkIDAsc2QoY2QscikpfX0oUGQsVGQpLGZ1bmN0aW9uKHQsZSl7ZVtwZF09dCx0LmJvb3RlZD0hMH0oUGQsVGQpLE5kfHxQZCgiYm9vdCIpLG5ldyBMZChUZCxqZC5zZXNzaW9uKX0sMjM3NTY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7ZDpmdW5jdGlvbigpe3JldHVybiByfX0pO3ZhciByPXtoaWRlQ29tcG9zZXI6ITEsaGlkZUludGVyY29tTGluazohMSxoaWRlQ2xhc3NpY0hlYWRlcjohMSxoaWRlQ2xvc2VCdXR0b246ITEsc2hvd0xhdW5jaGVyOiExLGhpZGVMYXVuY2hlcldoZW5PcGVuOiExLGFsd2F5c1Zpc2libGU6ITEsY29udmVyc2F0aW9uT25seTohMSxwbGFuQXdhcmVSb3V0aW5nOiExLG11dGVTb3VuZDohMSxzcGxpdFRhYmxlQmxvY2tzOiEwLGltcHJvdmVkQ29kZUJsb2NrUmVuZGVyaW5nOiEwLGRpc2FibGVWaWRlb0F1dG9wbGF5OiExLG9wZW5BcnRpY2xlU291cmNlc0luTmV3VGFiOiExLHN0cmVhbWluZ1RhYmxlUmV2ZWFsOiExLHN1cHBvcnRzRmluVm9pY2VDYWxsOiEwLHNwb3RsaWdodE1ldHJpY3NUYWc6ITEsb3BlbnNEaXJlY3RseUludG9Db252ZXJzYXRpb246ITEsaGlkZUV4cGFuZEJ1dHRvbjohMSxoaWRlVGFibGVFeHBhbmRCdXR0b246ITEsaGlkZUNocm9tZUhlYWRlcjohMSxhdXRvRXhwYW5kQ2Fyb3VzZWxJdGVtczohMSxoaWRlUmVhbHRpbWVTdGF0dXNCYW5uZXI6ITEsY2xvc2VDb21wb3Nlck9uQ29udmVyc2F0aW9uRW5kOiExLGlubGluZUZvb3Rlck5vdGljZTohMSxtYXJrQ29udmVyc2F0aW9uUmVhZE9uVmlzaWJsZTohMSxzcG90bGlnaHROb3RpZmljYXRpb25QYXRoOiExLGhpZGVUZWFtSW50cm86ITEsaGlkZVNwZWNpYWxOb3RpY2U6ITEsc2lkZUJ5U2lkZUNhcmRMYXlvdXQ6ITEsc3BvdGxpZ2h0U2hlZXRIZWFkZXI6ITEsZGVmZXJWaWV3TWV0cmljVW50aWxWaXNpYmxlOiExLHJlc3RyaWN0Q29tcG9zZXJJbnB1dFdoZW5EaXNhYmxlZDohMSxjb21wb3Nlck93bnNNb2JpbGVLZXlib2FyZFNjcm9sbDohMSxzaG93Q29sbGFwc2VkRXhwaXJlZENhbGVuZGFyQ2FyZDohMSxzcG90bGlnaHRQcml2YWN5Tm90aWNlRm9vdGVyOiExLGhhc1Nocmlua2VkQ29tcG9zZXJTdGF0ZTohMSxzdXBwcmVzc0xhdW5jaGVyVW5yZWFkQmFkZ2U6ITEsc3VwcHJlc3NDaHJvbWVHcmFkaWVudDohMSxzdXBwcmVzc0NsYXNzaWNOdWRnZTohMSxzaGVsbFZpc2liaWxpdHlGb2xsb3dzSG9zdFN0YXRlOiExLGxhdW5jaGVyVXNlc05ldXRyYWxTdXJmYWNlOiExLHJlc3RyaWN0VGlja2V0TmF2aWdhdGlvblRvTWVzc2FnZXNSb3V0ZTohMSxjb21wYWN0Tm90aWZpY2F0aW9uQ29tcG9zZXJHYXA6ITF9fSw0NDQ0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3JldHVybiByPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49YXJndW1lbnRzW2VdO2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKX1yZXR1cm4gdH0sci5hcHBseShudWxsLGFyZ3VtZW50cyl9bi5kKGUse1Y6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sZTpmdW5jdGlvbigpe3JldHVybiBvfX0pO3ZhciBvPXtoaWRlQ29tcG9zZXI6ITEsaGlkZUludGVyY29tTGluazohMCxoaWRlQ2xhc3NpY0hlYWRlcjohMCxoaWRlQ2xvc2VCdXR0b246ITAsc2hvd0xhdW5jaGVyOiExLGhpZGVMYXVuY2hlcldoZW5PcGVuOiExLGFsd2F5c1Zpc2libGU6ITAsY29udmVyc2F0aW9uT25seTohMCxwbGFuQXdhcmVSb3V0aW5nOiEwLG11dGVTb3VuZDohMCxzcGxpdFRhYmxlQmxvY2tzOiExLGltcHJvdmVkQ29kZUJsb2NrUmVuZGVyaW5nOiEwLGRpc2FibGVWaWRlb0F1dG9wbGF5OiEwLG9wZW5BcnRpY2xlU291cmNlc0luTmV3VGFiOiExLHN0cmVhbWluZ1RhYmxlUmV2ZWFsOiEwLHN1cHBvcnRzRmluVm9pY2VDYWxsOiExLHNwb3RsaWdodE1ldHJpY3NUYWc6ITEsb3BlbnNEaXJlY3RseUludG9Db252ZXJzYXRpb246ITEsaGlkZUV4cGFuZEJ1dHRvbjohMSxoaWRlVGFibGVFeHBhbmRCdXR0b246ITEsaGlkZUNocm9tZUhlYWRlcjohMSxhdXRvRXhwYW5kQ2Fyb3VzZWxJdGVtczohMSxoaWRlUmVhbHRpbWVTdGF0dXNCYW5uZXI6ITEsY2xvc2VDb21wb3Nlck9uQ29udmVyc2F0aW9uRW5kOiExLGlubGluZUZvb3Rlck5vdGljZTohMSxtYXJrQ29udmVyc2F0aW9uUmVhZE9uVmlzaWJsZTohMSxzcG90bGlnaHROb3RpZmljYXRpb25QYXRoOiExLGhpZGVUZWFtSW50cm86ITEsaGlkZVNwZWNpYWxOb3RpY2U6ITEsc2lkZUJ5U2lkZUNhcmRMYXlvdXQ6ITEsc3BvdGxpZ2h0U2hlZXRIZWFkZXI6ITEsZGVmZXJWaWV3TWV0cmljVW50aWxWaXNpYmxlOiExLHJlc3RyaWN0Q29tcG9zZXJJbnB1dFdoZW5EaXNhYmxlZDohMSxjb21wb3Nlck93bnNNb2JpbGVLZXlib2FyZFNjcm9sbDohMSxzaG93Q29sbGFwc2VkRXhwaXJlZENhbGVuZGFyQ2FyZDohMSxzcG90bGlnaHRQcml2YWN5Tm90aWNlRm9vdGVyOiExLGhhc1Nocmlua2VkQ29tcG9zZXJTdGF0ZTohMSxzdXBwcmVzc0xhdW5jaGVyVW5yZWFkQmFkZ2U6ITEsc3VwcHJlc3NDaHJvbWVHcmFkaWVudDohMSxzdXBwcmVzc0NsYXNzaWNOdWRnZTohMSxzaGVsbFZpc2liaWxpdHlGb2xsb3dzSG9zdFN0YXRlOiExLGxhdW5jaGVyVXNlc05ldXRyYWxTdXJmYWNlOiExLHJlc3RyaWN0VGlja2V0TmF2aWdhdGlvblRvTWVzc2FnZXNSb3V0ZTohMSxjb21wYWN0Tm90aWZpY2F0aW9uQ29tcG9zZXJHYXA6ITF9LGk9cih7fSxvLHtoaWRlQ2xhc3NpY0hlYWRlcjohMX0pfSw5NTE4NzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24uZChlLHtIOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSk7dmFyIHI9e2hpZGVDb21wb3NlcjohMSxoaWRlSW50ZXJjb21MaW5rOiExLGhpZGVDbGFzc2ljSGVhZGVyOiExLGhpZGVDbG9zZUJ1dHRvbjohMSxzaG93TGF1bmNoZXI6ITAsaGlkZUxhdW5jaGVyV2hlbk9wZW46ITAsYWx3YXlzVmlzaWJsZTohMSxjb252ZXJzYXRpb25Pbmx5OiEwLHBsYW5Bd2FyZVJvdXRpbmc6ITEsbXV0ZVNvdW5kOiExLHNwbGl0VGFibGVCbG9ja3M6ITEsaW1wcm92ZWRDb2RlQmxvY2tSZW5kZXJpbmc6ITAsZGlzYWJsZVZpZGVvQXV0b3BsYXk6ITAsb3BlbkFydGljbGVTb3VyY2VzSW5OZXdUYWI6ITEsc3RyZWFtaW5nVGFibGVSZXZlYWw6ITAsc3VwcG9ydHNGaW5Wb2ljZUNhbGw6ITAsc3BvdGxpZ2h0TWV0cmljc1RhZzohMSxvcGVuc0RpcmVjdGx5SW50b0NvbnZlcnNhdGlvbjohMSxoaWRlRXhwYW5kQnV0dG9uOiExLGhpZGVUYWJsZUV4cGFuZEJ1dHRvbjohMSxoaWRlQ2hyb21lSGVhZGVyOiExLGF1dG9FeHBhbmRDYXJvdXNlbEl0ZW1zOiExLGhpZGVSZWFsdGltZVN0YXR1c0Jhbm5lcjohMCxjbG9zZUNvbXBvc2VyT25Db252ZXJzYXRpb25FbmQ6ITEsaW5saW5lRm9vdGVyTm90aWNlOiExLG1hcmtDb252ZXJzYXRpb25SZWFkT25WaXNpYmxlOiExLHNwb3RsaWdodE5vdGlmaWNhdGlvblBhdGg6ITEsaGlkZVRlYW1JbnRybzohMSxoaWRlU3BlY2lhbE5vdGljZTohMSxzaWRlQnlTaWRlQ2FyZExheW91dDohMSxzcG90bGlnaHRTaGVldEhlYWRlcjohMSxkZWZlclZpZXdNZXRyaWNVbnRpbFZpc2libGU6ITEscmVzdHJpY3RDb21wb3NlcklucHV0V2hlbkRpc2FibGVkOiExLGNvbXBvc2VyT3duc01vYmlsZUtleWJvYXJkU2Nyb2xsOiExLHNob3dDb2xsYXBzZWRFeHBpcmVkQ2FsZW5kYXJDYXJkOiExLHNwb3RsaWdodFByaXZhY3lOb3RpY2VGb290ZXI6ITEsaGFzU2hyaW5rZWRDb21wb3NlclN0YXRlOiExLHN1cHByZXNzTGF1bmNoZXJVbnJlYWRCYWRnZTohMSxzdXBwcmVzc0Nocm9tZUdyYWRpZW50OiExLHN1cHByZXNzQ2xhc3NpY051ZGdlOiExLHNoZWxsVmlzaWJpbGl0eUZvbGxvd3NIb3N0U3RhdGU6ITEsbGF1bmNoZXJVc2VzTmV1dHJhbFN1cmZhY2U6ITEscmVzdHJpY3RUaWNrZXROYXZpZ2F0aW9uVG9NZXNzYWdlc1JvdXRlOiExLGNvbXBhY3ROb3RpZmljYXRpb25Db21wb3NlckdhcDohMX19LDM1MTE2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse2Y6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KTt2YXIgcj17aGlkZUNvbXBvc2VyOiEwLGhpZGVJbnRlcmNvbUxpbms6ITAsaGlkZUNsYXNzaWNIZWFkZXI6ITEsaGlkZUNsb3NlQnV0dG9uOiExLHNob3dMYXVuY2hlcjohMSxoaWRlTGF1bmNoZXJXaGVuT3BlbjohMSxhbHdheXNWaXNpYmxlOiExLGNvbnZlcnNhdGlvbk9ubHk6ITEscGxhbkF3YXJlUm91dGluZzohMSxtdXRlU291bmQ6ITEsc3BsaXRUYWJsZUJsb2NrczohMSxpbXByb3ZlZENvZGVCbG9ja1JlbmRlcmluZzohMSxkaXNhYmxlVmlkZW9BdXRvcGxheTohMSxvcGVuQXJ0aWNsZVNvdXJjZXNJbk5ld1RhYjohMCxzdHJlYW1pbmdUYWJsZVJldmVhbDohMCxzdXBwb3J0c0ZpblZvaWNlQ2FsbDohMSxzcG90bGlnaHRNZXRyaWNzVGFnOiEwLG9wZW5zRGlyZWN0bHlJbnRvQ29udmVyc2F0aW9uOiEwLGhpZGVFeHBhbmRCdXR0b246ITAsaGlkZVRhYmxlRXhwYW5kQnV0dG9uOiEwLGhpZGVDaHJvbWVIZWFkZXI6ITAsYXV0b0V4cGFuZENhcm91c2VsSXRlbXM6ITAsaGlkZVJlYWx0aW1lU3RhdHVzQmFubmVyOiEwLGNsb3NlQ29tcG9zZXJPbkNvbnZlcnNhdGlvbkVuZDohMCxpbmxpbmVGb290ZXJOb3RpY2U6ITAsbWFya0NvbnZlcnNhdGlvblJlYWRPblZpc2libGU6ITAsc3BvdGxpZ2h0Tm90aWZpY2F0aW9uUGF0aDohMCxoaWRlVGVhbUludHJvOiEwLGhpZGVTcGVjaWFsTm90aWNlOiEwLHNpZGVCeVNpZGVDYXJkTGF5b3V0OiEwLHNwb3RsaWdodFNoZWV0SGVhZGVyOiEwLGRlZmVyVmlld01ldHJpY1VudGlsVmlzaWJsZTohMCxyZXN0cmljdENvbXBvc2VySW5wdXRXaGVuRGlzYWJsZWQ6ITAsY29tcG9zZXJPd25zTW9iaWxlS2V5Ym9hcmRTY3JvbGw6ITAsc2hvd0NvbGxhcHNlZEV4cGlyZWRDYWxlbmRhckNhcmQ6ITAsc3BvdGxpZ2h0UHJpdmFjeU5vdGljZUZvb3RlcjohMCxoYXNTaHJpbmtlZENvbXBvc2VyU3RhdGU6ITAsc3VwcHJlc3NMYXVuY2hlclVucmVhZEJhZGdlOiEwLHN1cHByZXNzQ2hyb21lR3JhZGllbnQ6ITAsc3VwcHJlc3NDbGFzc2ljTnVkZ2U6ITAsc2hlbGxWaXNpYmlsaXR5Rm9sbG93c0hvc3RTdGF0ZTohMCxsYXVuY2hlclVzZXNOZXV0cmFsU3VyZmFjZTohMCxyZXN0cmljdFRpY2tldE5hdmlnYXRpb25Ub01lc3NhZ2VzUm91dGU6ITAsY29tcGFjdE5vdGlmaWNhdGlvbkNvbXBvc2VyR2FwOiEwLGRlZmF1bHRDdXN0b21pemF0aW9uOnthbGlnbm1lbnQ6ImNlbnRlciIsbWVzc2VuZ2VyV2lkdGg6NTkyLG1lc3NlbmdlckhlaWdodDo1NzEsY29ybmVyU3R5bGU6InJvdW5kZWQiLGF1dG9PcGVuOiEwfX19LDU3ODgwOmZ1bmN0aW9uKHQsZSl7InVzZSBzdHJpY3QiO3ZhciBuPXdpbmRvdy5idG9hO2UuQT1mdW5jdGlvbih0KXtpZighbilyZXR1cm4gU3RyaW5nKHQpO3RyeXt2YXIgZT1lbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHQpKSxyPWUucmVwbGFjZSgvJXVbMC05QS1GXXs0fS9naSwoZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQodC5zbGljZSgyKSwxNikpfSkpLnJlcGxhY2UoLyVbMC05QS1GXXsyfS9naSwoZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQodC5zbGljZSgxKSwxNikpfSkpO3JldHVybiBuKHIpfWNhdGNoKGUpe3JldHVybiBTdHJpbmcodCl9fX0sMzIyMDg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLmQoZSx7aDpmdW5jdGlvbigpe3JldHVybiBpfSxyOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7dmFyIHI9ITEsbz1mdW5jdGlvbih0KXtyPXR9LGk9ZnVuY3Rpb24oKXtyZXR1cm4gcn19LDIzOTEwOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse3U6ZnVuY3Rpb24oKXtyZXR1cm4gZn19KTt2YXIgcj0uMjEyNixvPS43MTUyLGk9LjA3MjIsYT0xLzEyLjkyO2Z1bmN0aW9uIHUodCl7cmV0dXJuIE1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gcyh0KXt2YXIgZT10WzBdLzI1NSxuPXRbMV0vMjU1LHM9dFsyXS8yNTUsYz1lPD0uMDM5Mjg/ZSphOnUoZSksbD1uPD0uMDM5Mjg/biphOnUobiksZj1zPD0uMDM5Mjg/cyphOnUocyk7cmV0dXJuIGMqcitsKm8rZippfWZ1bmN0aW9uIGModCl7dmFyIGU9MjU1Ozg9PT0odD10LnJlcGxhY2UoL14jLywiIikpLmxlbmd0aCYmKGU9cGFyc2VJbnQodC5zbGljZSg2LDgpLDE2KSx0PXQuc3Vic3RyaW5nKDAsNikpLDQ9PT10Lmxlbmd0aCYmKGU9cGFyc2VJbnQodC5zbGljZSgzLDQpLnJlcGVhdCgyKSwxNiksdD10LnN1YnN0cmluZygwLDMpKSwzPT09dC5sZW5ndGgmJih0PXRbMF0rdFswXSt0WzFdK3RbMV0rdFsyXSt0WzJdKTt2YXIgbj1wYXJzZUludCh0LDE2KTtyZXR1cm5bbj4+MTYsbj4+OCYyNTUsMjU1Jm4sZV19ZnVuY3Rpb24gbCh0LGUpe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybihNYXRoLm1heCh0LGUpKy4wNSkvKE1hdGgubWluKHQsZSkrLjA1KX0ocyh0KSxzKGUpKX1mdW5jdGlvbiBmKHQsZSl7cmV0dXJuIGwoYyh0KSxjKGUpKX19LDk3Nzc1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5kKGUse0kxOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LFBDOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIHI9big4NDA3Nyksbz0iZ3RtX2Nvb2tpZV9jb25zZW50IjtmdW5jdGlvbiBpKHQpe3JldHVybihudWxsPT10P3ZvaWQgMDp0LnJlcXVpcmVzQ29va2llQ29uc2VudCl8fCExfWZ1bmN0aW9uIGEodCl7aWYoIXQpcmV0dXJuITA7aWYoISh0LnJlcXVpcmVzQ29va2llQ29uc2VudHx8ITEpKXJldHVybiEwO3ZhciBlPXIuQS5yZWFkKG8pO2lmKCFlKXJldHVybiExO3ZhciBuPWZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdC5mcm9tRW50cmllcyh0LnNwbGl0KCIrIikubWFwKChmdW5jdGlvbih0KXtyZXR1cm5bdCwhMF19KSkpLG49ZS5hZHZlcnRpc2luZyxyPWUubWFya2V0aW5nLG89ZS5hbmFseXRpY3MsaT1lLnBlcmZvcm1hbmNlO3JldHVybnthZHZlcnRpc2luZzohIW4sYW5hbHl0aWNzOiEhbyxtYXJrZXRpbmc6ISFyLHBlcmZvcm1hbmNlOiEhaX19KGUpO3JldHVybiBuLmFuYWx5dGljc319LDY2ODU0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93KXJldHVybiBudWxsO3RyeXtyZXR1cm4gd2luZG93LnBhcmVudH1jYXRjaCh0KXtyZXR1cm4gbnVsbH19bi5kKGUseyQ6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KX0sOTg2MTY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDY5NzQ0KSxvPW4oNjY4NTQpO2UuQT1mdW5jdGlvbih0KXt2YXIgZSxuPXQucHJvbWlzZSxpPXQubWF4UmV0cmllcyxhPXZvaWQgMD09PWk/MzppLHU9MCxzPW51bGw9PShlPSgwLG8uJCkoKSk/dm9pZCAwOmUucmVxdWVzdEFuaW1hdGlvbkZyYW1lLGM9ZnVuY3Rpb24gdChlLG8pe24oKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gZSh0KX0pLChmdW5jdGlvbihuKXt1PGEmJnM/KHUrPTEsd2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIHMoKGZ1bmN0aW9uKCl7cmV0dXJuIHQoZSxvKX0pKX0pLDFlMyp1KSk6KCgwLHIuc3EpKCJkeW5hbWljSW1wb3J0Q2RuRXJyb3IiLHttZXNzYWdlOm4mJm4ubWVzc2FnZX0pLG8obikpfSkpfTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGModCxlKX0pKX19LDgwNDk2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbztuLmQoZSx7VVM6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sWm46ZnVuY3Rpb24oKXtyZXR1cm4gZn0sZng6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sbVM6ZnVuY3Rpb24oKXtyZXR1cm4gY30sdkg6ZnVuY3Rpb24oKXtyZXR1cm4gc30seDY6ZnVuY3Rpb24oKXtyZXR1cm4gdX19KTt2YXIgaT0hMSxhPWZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHU9ZnVuY3Rpb24odCl7cmV0dXJuIHI9dH0scz1mdW5jdGlvbih0KXtyZXR1cm4gbz10fSxjPWZ1bmN0aW9uKCl7cmV0dXJuIG99LGw9ZnVuY3Rpb24oKXtyZXR1cm4haX0sZj1mdW5jdGlvbih0KXtyZXR1cm4gaT10fX0sNzA0NDE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbg=="}},"time_used":63,"timings":{"blocked":-1,"dns":3,"connect":8,"send":0,"wait":11,"receive":26,"ssl":15},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/fonts/RedHatDisplay-Black.woff2","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:15.772Z","timestamp":1785145635772,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /fonts/RedHatDisplay-Black.woff2 HTTP/1.1\r\nHost: bit-core.top\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://bit-core.top/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\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\ndate: Mon, 27 Jul 2026 09:47:15 GMT\r\ncontent-type: font/woff2\r\ncontent-length: 18704\r\ncache-control: public, max-age=604800\r\nexpires: Sun, 02 Aug 2026 11:51:17 GMT\r\nlast-modified: Sun, 16 Nov 2025 06:36:48 GMT\r\netag: \"4910-69197100-2d958bc59fe1c48f;;;\"\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 21057\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 022a1fc2526a91e210b1e9a007d42f60-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":18704,"size_decoded":19228,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 18704, version 1.0","md5":"4fe5814060db42d25a4a22cc222b2d5a","sha1":"37b3b6c72366f79547db56e2ebf1f04563821695","sha256":"221f8c9253e16004a0fc662867a8c9ca2f8626ee34643314be21511b500fd35d","sha512":"a0c2ea74bd741fa8a66a0aa4fdab6e7ced354fc9aa48d478fb873bc01276929f84beea45ca7d2da20deb9b4a3290c38b891cb507c937ab3d797ba6554494d151","ssdeep":"384:CdkU4m5ox5dysjNcuqpqvN4/MoMfRICij6M9l1OMYEwQhcEEdcrc:Gx46Wy6dfqljTlITE8E0cY","tlshash":"a882d18b136378a3f8c95378c27a2a490b1cc3e5af520fc79dad72595d0573ca95bb40","first_seen":"2023-10-28T00:17:16Z","last_seen":"2026-07-29T06:16:17.90919Z","times_seen":12,"resource_available":false,"data":"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"}},"time_used":64,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":64,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/css/main.css?v=1684946825","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:15.782Z","timestamp":1785145635782,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /css/main.css?v=1684946825 HTTP/1.1\r\nHost: bit-core.top\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\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://bit-core.top/\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\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\ndate: Mon, 27 Jul 2026 09:47:15 GMT\r\ncontent-type: text/css\r\ncontent-length: 20776\r\ncache-control: public, max-age=604800\r\nexpires: Sun, 02 Aug 2026 11:51:17 GMT\r\nlast-modified: Sun, 16 Nov 2025 06:36:48 GMT\r\netag: \"1ade4-69197100-be759e9615ddade;br\"\r\ncontent-encoding: br\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 21057\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: df310cb23ff2d1d30552032e141301fd-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":110052,"size_decoded":21320,"mime_type":"text/css","magic":"ASCII text, with very long lines (65536), with no line terminators","md5":"d8d6714df51241403cb5a6947a086cbb","sha1":"174918b375c75a5c19756ebbf0f07601da0ba4c5","sha256":"dde13008d4b1e94304aff6fa2ef8b6b9b583db510c8ed5bfedc910c5941a3b79","sha512":"df511e419052943bcad7f372a442b14763e1e3ad1f7fd0d7c08a858f1cc920a47bb878dc061da5154bf320372f40adf4a17ee0704178e3d924cbd7872499e41e","ssdeep":"3072:EwZGvXLfwTvPTCjeB4pDzA7uo4CHsL3VGc0Agdnso0QJH57WA/aQdNs4kVna2SIq:EwZGvXLfwTvPTCjeB4pDzA7uo4CHsL3Q","tlshash":"c2b3e655b300203fa927993ac7e6d51df138e442df130befba11a629c6d73e212b7658","first_seen":"2026-07-27T02:49:41.015922Z","last_seen":"2026-07-29T06:16:17.912808Z","times_seen":7,"resource_available":false,"data":"LyohIHRhaWx3aW5kY3NzIHYzLjIuNCB8IE1JVCBMaWNlbnNlIHwgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20qLyosOmFmdGVyLDpiZWZvcmV7Ym9yZGVyOjAgc29saWQ7Ym94LXNpemluZzpib3JkZXItYm94fTphZnRlciw6YmVmb3Jley0tdHctY29udGVudDoiIn1odG1se2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC1mYW1pbHk6dWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSBOZXVlLEFyaWFsLE5vdG8gU2FucyxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppO2xpbmUtaGVpZ2h0OjEuNTstbW96LXRhYi1zaXplOjQ7LW8tdGFiLXNpemU6NDt0YWItc2l6ZTo0fWJvZHl7bGluZS1oZWlnaHQ6aW5oZXJpdDttYXJnaW46MH1ocntib3JkZXItdG9wLXdpZHRoOjFweDtjb2xvcjppbmhlcml0O2hlaWdodDowfWFiYnI6d2hlcmUoW3RpdGxlXSl7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIGRvdHRlZDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIGRvdHRlZH1oMSxoMixoMyxoNCxoNSxoNntmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0fWF7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHByZSxzYW1we2ZvbnQtZmFtaWx5OnVpLW1vbm9zcGFjZSxTRk1vbm8tUmVndWxhcixNZW5sbyxNb25hY28sQ29uc29sYXMsTGliZXJhdGlvbiBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZTtmb250LXNpemU6MWVtfXNtYWxse2ZvbnQtc2l6ZTo4MCV9c3ViLHN1cHtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3Vie2JvdHRvbTotLjI1ZW19c3Vwe3RvcDotLjVlbX10YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7dGV4dC1pbmRlbnQ6MH1idXR0b24saW5wdXQsb3B0Z3JvdXAsc2VsZWN0LHRleHRhcmVhe2NvbG9yOmluaGVyaXQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTAwJTtmb250LXdlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOjA7cGFkZGluZzowfWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1bdHlwZT1idXR0b25dLFt0eXBlPXJlc2V0XSxbdHlwZT1zdWJtaXRdLGJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lfTotbW96LWZvY3VzcmluZ3tvdXRsaW5lOmF1dG99Oi1tb3otdWktaW52YWxpZHtib3gtc2hhZG93Om5vbmV9cHJvZ3Jlc3N7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31bdHlwZT1zZWFyY2hdey13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7b3V0bGluZS1vZmZzZXQ6LTJweH06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Ojotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2ZvbnQ6aW5oZXJpdH1zdW1tYXJ5e2Rpc3BsYXk6bGlzdC1pdGVtfWJsb2NrcXVvdGUsZGQsZGwsZmlndXJlLGgxLGgyLGgzLGg0LGg1LGg2LGhyLHAscHJle21hcmdpbjowfWZpZWxkc2V0e21hcmdpbjowfWZpZWxkc2V0LGxlZ2VuZHtwYWRkaW5nOjB9bWVudSxvbCx1bHtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH1pbnB1dDo6LW1vei1wbGFjZWhvbGRlcix0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjojOWNhM2FmO29wYWNpdHk6MX1pbnB1dDo6cGxhY2Vob2xkZXIsdGV4dGFyZWE6OnBsYWNlaG9sZGVye2NvbG9yOiM5Y2EzYWY7b3BhY2l0eToxfVtyb2xlPWJ1dHRvbl0sYnV0dG9ue2N1cnNvcjpwb2ludGVyfTpkaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH1hdWRpbyxjYW52YXMsZW1iZWQsaWZyYW1lLGltZyxvYmplY3Qsc3ZnLHZpZGVve3ZlcnRpY2FsLWFsaWduOm1pZGRsZX1baGlkZGVuXXtkaXNwbGF5Om5vbmV9Kiw6YWZ0ZXIsOmJlZm9yZXstLXR3LWJvcmRlci1zcGFjaW5nLXg6MDstLXR3LWJvcmRlci1zcGFjaW5nLXk6MDstLXR3LXRyYW5zbGF0ZS14OjA7LS10dy10cmFuc2xhdGUteTowOy0tdHctcm90YXRlOjA7LS10dy1za2V3LXg6MDstLXR3LXNrZXcteTowOy0tdHctc2NhbGUteDoxOy0tdHctc2NhbGUteToxOy0tdHctcGFuLXg6IDstLXR3LXBhbi15OiA7LS10dy1waW5jaC16b29tOiA7LS10dy1zY3JvbGwtc25hcC1zdHJpY3RuZXNzOnByb3hpbWl0eTstLXR3LW9yZGluYWw6IDstLXR3LXNsYXNoZWQtemVybzogOy0tdHctbnVtZXJpYy1maWd1cmU6IDstLXR3LW51bWVyaWMtc3BhY2luZzogOy0tdHctbnVtZXJpYy1mcmFjdGlvbjogOy0tdHctcmluZy1pbnNldDogOy0tdHctcmluZy1vZmZzZXQtd2lkdGg6MHB4Oy0tdHctcmluZy1vZmZzZXQtY29sb3I6I2ZmZjstLXR3LXJpbmctY29sb3I6cmdiYSg1OSwxMzAsMjQ2LC41KTstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzowIDAgIzAwMDA7LS10dy1yaW5nLXNoYWRvdzowIDAgIzAwMDA7LS10dy1zaGFkb3c6MCAwICMwMDAwOy0tdHctc2hhZG93LWNvbG9yZWQ6MCAwICMwMDAwOy0tdHctYmx1cjogOy0tdHctYnJpZ2h0bmVzczogOy0tdHctY29udHJhc3Q6IDstLXR3LWdyYXlzY2FsZTogOy0tdHctaHVlLXJvdGF0ZTogOy0tdHctaW52ZXJ0OiA7LS10dy1zYXR1cmF0ZTogOy0tdHctc2VwaWE6IDstLXR3LWRyb3Atc2hhZG93OiA7LS10dy1iYWNrZHJvcC1ibHVyOiA7LS10dy1iYWNrZHJvcC1icmlnaHRuZXNzOiA7LS10dy1iYWNrZHJvcC1jb250cmFzdDogOy0tdHctYmFja2Ryb3AtZ3JheXNjYWxlOiA7LS10dy1iYWNrZHJvcC1odWUtcm90YXRlOiA7LS10dy1iYWNrZHJvcC1pbnZlcnQ6IDstLXR3LWJhY2tkcm9wLW9wYWNpdHk6IDstLXR3LWJhY2tkcm9wLXNhdHVyYXRlOiA7LS10dy1iYWNrZHJvcC1zZXBpYTogfTo6YmFja2Ryb3B7LS10dy1ib3JkZXItc3BhY2luZy14OjA7LS10dy1ib3JkZXItc3BhY2luZy15OjA7LS10dy10cmFuc2xhdGUteDowOy0tdHctdHJhbnNsYXRlLXk6MDstLXR3LXJvdGF0ZTowOy0tdHctc2tldy14OjA7LS10dy1za2V3LXk6MDstLXR3LXNjYWxlLXg6MTstLXR3LXNjYWxlLXk6MTstLXR3LXBhbi14OiA7LS10dy1wYW4teTogOy0tdHctcGluY2gtem9vbTogOy0tdHctc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczpwcm94aW1pdHk7LS10dy1vcmRpbmFsOiA7LS10dy1zbGFzaGVkLXplcm86IDstLXR3LW51bWVyaWMtZmlndXJlOiA7LS10dy1udW1lcmljLXNwYWNpbmc6IDstLXR3LW51bWVyaWMtZnJhY3Rpb246IDstLXR3LXJpbmctaW5zZXQ6IDstLXR3LXJpbmctb2Zmc2V0LXdpZHRoOjBweDstLXR3LXJpbmctb2Zmc2V0LWNvbG9yOiNmZmY7LS10dy1yaW5nLWNvbG9yOnJnYmEoNTksMTMwLDI0NiwuNSk7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6MCAwICMwMDAwOy0tdHctcmluZy1zaGFkb3c6MCAwICMwMDAwOy0tdHctc2hhZG93OjAgMCAjMDAwMDstLXR3LXNoYWRvdy1jb2xvcmVkOjAgMCAjMDAwMDstLXR3LWJsdXI6IDstLXR3LWJyaWdodG5lc3M6IDstLXR3LWNvbnRyYXN0OiA7LS10dy1ncmF5c2NhbGU6IDstLXR3LWh1ZS1yb3RhdGU6IDstLXR3LWludmVydDogOy0tdHctc2F0dXJhdGU6IDstLXR3LXNlcGlhOiA7LS10dy1kcm9wLXNoYWRvdzogOy0tdHctYmFja2Ryb3AtYmx1cjogOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczogOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6IDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTogOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTogOy0tdHctYmFja2Ryb3AtaW52ZXJ0OiA7LS10dy1iYWNrZHJvcC1vcGFjaXR5OiA7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTogOy0tdHctYmFja2Ryb3Atc2VwaWE6IH06cm9vdHstLWNvbG9yLXByaW1hcnk6NDcgNiAxODc7LS1jb2xvci1wcmltYXJ5LXNvZnQ6NjggMzEgMTkzOy0tY29sb3ItcHJpbWFyeS1oYXJkOjQ1IDggMTcxOy0tY29sb3Itc2Vjb25kYXJ5OjkgMTkwIDEzOTstLWNvbG9yLXNlY29uZGFyeS1zb2Z0OjM0IDE5NiAxNTA7LS1jb2xvci1zZWNvbmRhcnktaGFyZDoxMSAxNzMgMTI4Oy0tY29sb3Itd2hpdGU6MjU1IDI1NSAyNTU7LS1jb2xvci1kYXJrOjI2IDI3IDM4Oy0tY29sb3ItZGFyay1zb2Z0OjQ5IDUwIDYwOy0tY29sb3ItZ3JheS1kYXJrOjE0MCAxNDUgMTY0Oy0tY29sb3ItZ3JheS1kYXJrLXNvZnQ6MTUxIDE1NiAxNzM7LS1jb2xvci1ncmF5LWRhcmstaGFyZDoxMjggMTMzIDE1MTstLWNvbG9yLWdyYXk6MjI5IDIyOSAyMjk7LS1jb2xvci1ncmF5LWhhcmQ6MjA4IDIwOCAyMDk7LS1jb2xvci1saWdodDoyMzkgMjQxIDI0ODstLWNvbG9yLWxpZ2h0LWhhcmQ6MjE3IDIxOSAyMjY7LS1jb2xvci1kYW5nZXI6MjUxIDc4IDc4Oy0tY29sb3ItZGFuZ2VyLXNvZnQ6MjUxIDk2IDk2Oy0tY29sb3ItZGFuZ2VyLWhhcmQ6MjI4IDczIDc0Oy0tY29sb3Itd2FybmluZzoyNTUgMjEwIDA7LS1jb2xvci12aXA6MjUwIDE4MiA1Oy0tZm9udC1wcmltYXJ5OiJSZWQgSGF0IERpc3BsYXkiLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLFJvYm90byxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjstLWZvbnQtYm9keToiT3V0Zml0IiwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxTZWdvZSBVSSxSb2JvdG8sSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7LS1mb250LXdlaWdodC1ub3JtYWw6NDAwOy0tZm9udC13ZWlnaHQtYm9sZDo3MDA7LS1mb250LXdlaWdodC1ibGFjazo5MDA7LS1mb250LXNpemUtaGVybzpjYWxjKDIxLjMzMzMzcHggKyA3LjQwNzQxdncpOy0tZm9udC1zaXplLWgxOmNhbGMoMTYuNjY2NjdweCArIDQuMzk4MTV2dyk7LS1mb250LXNpemUtaDI6Y2FsYygyNi42NjY2N3B4ICsgMC45MjU5M3Z3KTstLWZvbnQtc2l6ZS1oMzpjYWxjKDE4LjY2NjY3cHggKyAwLjkyNTkzdncpOy0tZm9udC1zaXplLWg0OmNhbGMoMTRweCArIDAuNjk0NDR2dyk7LS1mb250LXNpemUtaDU6Y2FsYygxNC42NjY2N3B4ICsgMC4yMzE0OHZ3KTstLWZvbnQtc2l6ZS1oNjoxNnB4Oy0tZm9udC1zaXplLXNtYWxsOjE0cHg7LS1mb250LXNpemUtdGlueToxMnB4Oy0tbGVhZGluZy1wcmltYXJ5LWhlcm86MS4zMjgxMjU7LS1sZWFkaW5nLXByaW1hcnktaDE6MS4yNTstLWxlYWRpbmctcHJpbWFyeS1oMjoxLjQ7LS1sZWFkaW5nLXByaW1hcnktaDM6MS4yNTstLWxlYWRpbmctcHJpbWFyeS1oNDoxLjMzMzM7LS1sZWFkaW5nLXByaW1hcnktaDU6MS4zMzMzOy0tbGVhZGluZy1wcmltYXJ5LWg2OjEuMjU7LS1sZWFkaW5nLXByaW1hcnktc21hbGw6MS4xNDI4NTstLWxlYWRpbmctcHJpbWFyeS10aW55OjEuMzMzMzstLWxlYWRpbmctYm9keS1oNDoxLjU7LS1sZWFkaW5nLWJvZHktaDU6MS41NTU1Oy0tbGVhZGluZy1ib2R5LWg2OjEuNTstLWxlYWRpbmctYm9keS1zbWFsbDoxLjU3MTQyOy0tbGVhZGluZy1ib2R5LXRpbnk6MS42NjY3Oy0tdHJhY2tpbmctcHJpbWFyeS1oZXJvOi0wLjAzOTA2MjVlbTstLXRyYWNraW5nLXByaW1hcnktaDE6LTAuMDM3NWVtOy0tc2hhZG93LXNtOjAgNHB4IDhweCAwIHJnYmEoMTQwLDE0NSwxNjQsLjA4KTstLXNoYWRvdy1tZDowIDE0cHggMjhweCAwIHJnYmEoMTQwLDE0NSwxNjQsLjE2KTstLXNoYWRvdy1sZzowIDI0cHggNDhweCAwIHJnYmEoMTQwLDE0NSwxNjQsLjI0KTstLWdsb3ctcHJpbWFyeS1sb3c6MCAxNnB4IDMycHggMCByZ2JhKDQ3LDYsMTg3LC4zMiksMCA4cHggMjRweCAwIHJnYmEoNDcsNiwxODcsLjI0KSwwIDNweCA4cHggMCByZ2JhKDQ3LDYsMTg3LC4xNiksMCAwIDFweCAwIHJnYmEoNDcsNiwxODcsLjA4KTstLWdsb3ctcHJpbWFyeS1oaWdoOjAgMzJweCA0OHB4IDAgcmdiYSg0Nyw2LDE4NywuNDgpLDAgMjRweCAzMnB4IDAgcmdiYSg0Nyw2LDE4NywuNCksMCAzcHggOHB4IDAgcmdiYSg0Nyw2LDE4NywuMzIpLDAgMCAxcHggMCByZ2JhKDQ3LDYsMTg3LC4yNCk7LS1nbG93LXNlY29uZGFyeS1sb3c6MCAxNnB4IDMycHggMCByZ2JhKDksMTkwLDEzOSwuMzIpLDAgOHB4IDI0cHggMCByZ2JhKDksMTkwLDEzOSwuMjQpLDAgM3B4IDhweCAwIHJnYmEoOSwxOTAsMTM5LC4xNiksMCAwIDFweCAwIHJnYmEoOSwxOTAsMTM5LC4wOCk7LS1nbG93LXNlY29uZGFyeS1oaWdoOjAgMzJweCA0OHB4IDAgcmdiYSg5LDE5MCwxMzksLjQ4KSwwIDI0cHggMzJweCAwIHJnYmEoOSwxOTAsMTM5LC40KSwwIDNweCA4cHggMCByZ2JhKDksMTkwLDEzOSwuMzIpLDAgMCAxcHggMCByZ2JhKDksMTkwLDEzOSwuMjQpOy0tZ2xvdy1kYW5nZXItbG93OjAgMTZweCAzMnB4IDAgcmdiYSgyNTEsNzgsNzgsLjMyKSwwIDhweCAyNHB4IDAgcmdiYSgyNTEsNzgsNzgsLjI0KSwwIDNweCA4cHggMCByZ2JhKDI1MSw3OCw3OCwuMTYpLDAgMCAxcHggMCByZ2JhKDI1MSw3OCw3OCwuMDgpOy0tZ2xvdy1kYW5nZXItaGlnaDowIDMycHggNDhweCAwIHJnYmEoMjUxLDc4LDc4LC40OCksMCAyNHB4IDMycHggMCByZ2JhKDI1MSw3OCw3OCwuNCksMCAzcHggOHB4IDAgcmdiYSgyNTEsNzgsNzgsLjMyKSwwIDAgMXB4IDAgcmdiYSgyNTEsNzgsNzgsLjI0KTstLXJhZGl1cy1tZDo4cHg7LS16LW5lZ2F0aXZlOi0xOy0tei1wYWdlOjE7LS16LXBvcG92ZXI6MTA7LS16LWhlYWRlcjoyMDstLXotb3ZlcmxheTozMDstLXotbm90aWZpY2F0aW9uOjQwOy0tY29udGFpbmVyLW1heC13aWR0aDoxNDQwcHg7LS1jb250YWluZXItcGFkZGluZzoyMHB4Oy0taGVhZGVyLWhlaWdodDo3MnB4Oy0tZmFuY3lib3gtYWNjZW50LWNvbG9yOnJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnkpLzEpOy0tZmFuY3lib3gtY29udGVudC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItZ3JheS1kYXJrKS8xKTstLWZhbmN5Ym94LWJnOnJnYmEoMCwwLDAsLjUpfUBtZWRpYSAobWluLXdpZHRoOjEyNDBweCl7OnJvb3R7LS1oZWFkZXItaGVpZ2h0OjgwcHh9fTpyb290W2xhbmc9cnVdLDpyb290W2xhbmc9dWtdey0tZm9udC1wcmltYXJ5OiJJbnRlciIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOy0tZm9udC1ib2R5OiJSdWJpayIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmfWh0bWx7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7dGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5fWJvZHl7LW1zLW92ZXJmbG93LXN0eWxlOnNjcm9sbGJhcjstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZ3JheS1kYXJrKS8xKTtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OnNjcm9sbH1bcm9sZT1idXR0b25dLGEsYXJlYSxidXR0b24saW5wdXQ6bm90KFt0eXBlPXJhbmdlXSksbGFiZWwsc2VsZWN0LHN1bW1hcnksdGV4dGFyZWF7dG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbn1hdWRpbyxjYW52YXMsZW1iZWQsaWZyYW1lLGltZyxvYmplY3Qsc3ZnLHZpZGVve2Rpc3BsYXk6YmxvY2t9aW1nLHZpZGVve2hlaWdodDphdXRvO21heC13aWR0aDoxMDAlfWltZ3tjb2xvcjp0cmFuc3BhcmVudH1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyO2ZvbnQ6aW5oZXJpdDtwYWRkaW5nOjA7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3doaXRlLXNwYWNlOm5vd3JhcH1idXR0b246Zm9jdXN7b3V0bGluZTpub25lIWltcG9ydGFudH1pbnB1dCx0ZXh0YXJlYXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6bm9ybWFsO21hcmdpbjowO3BhZGRpbmc6MDt3aWR0aDoxMDAlfWlucHV0OmZvY3VzLHRleHRhcmVhOmZvY3Vze291dGxpbmU6bm9uZSFpbXBvcnRhbnR9Y29kZSxrYmQscHJlLHNhbXB7Zm9udC1mYW1pbHk6Q29uc29sYXMsTW9uYWNvLG1vbm9zcGFjZX1jb2RlLHByZXt3b3JkLXdyYXA6bm9ybWFsOy13ZWJraXQtaHlwaGVuczpub25lO2h5cGhlbnM6bm9uZTt3aGl0ZS1zcGFjZTpwcmU7d29yZC1icmVhazpub3JtYWw7d29yZC1zcGFjaW5nOm5vcm1hbH06Oi1tb3otc2VsZWN0aW9ue2JhY2tncm91bmQtY29sb3I6I2IzZDRmYztjb2xvcjojMDAwO3RleHQtc2hhZG93Om5vbmV9OjpzZWxlY3Rpb257YmFja2dyb3VuZC1jb2xvcjojYjNkNGZjO2NvbG9yOiMwMDA7dGV4dC1zaGFkb3c6bm9uZX06Zm9jdXN7b3V0bGluZTpub25lIWltcG9ydGFudH1AZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5Ok91dGZpdDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOnVybCguLi9mb250cy9PdXRmaXQtUmVndWxhci53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpfUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6UmVkIEhhdCBEaXNwbGF5O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjcwMDtzcmM6dXJsKC4uL2ZvbnRzL1JlZEhhdERpc3BsYXktQm9sZC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpfUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6UmVkIEhhdCBEaXNwbGF5O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjkwMDtzcmM6dXJsKC4uL2ZvbnRzL1JlZEhhdERpc3BsYXktQmxhY2sud29mZjIpIGZvcm1hdCgid29mZjIiKX1AZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OkludGVyO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjYwMDtzcmM6dXJsKC4uL2ZvbnRzL0ludGVyLVNlbWlCb2xkLndvZmYyKSBmb3JtYXQoIndvZmYyIil9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTpJbnRlcjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo3MDA7c3JjOnVybCguLi9mb250cy9JbnRlci1FeHRyYUJvbGQud29mZjIpIGZvcm1hdCgid29mZjIiKX1AZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OlJ1YmlrO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKC4uL2ZvbnRzL1J1YmlrLVJlZ3VsYXIud29mZjIpIGZvcm1hdCgid29mZjIiKX1oMSxoMixoMyxoNCxoNSxoNntjb2xvcjp2YXIoLS10ZXh0LWNvbG9yLHJnYih2YXIoLS1jb2xvci1kYXJrKS8xKSl9LnRleHQtcHJpbWFyeS1oZXJve2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtcHJpbWFyeSk7Zm9udC1zaXplOnZhcigtLWZvbnQtc2l6ZS1oZXJvKTtsZXR0ZXItc3BhY2luZzp2YXIoLS10cmFja2luZy1wcmltYXJ5LWhlcm8pO2xpbmUtaGVpZ2h0OnZhcigtLWxlYWRpbmctcHJpbWFyeS1oZXJvKX0udGV4dC1wcmltYXJ5LWgxLGgxe2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtcHJpbWFyeSk7Zm9udC1zaXplOnZhcigtLWZvbnQtc2l6ZS1oMSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tdHJhY2tpbmctcHJpbWFyeS1oMSk7bGluZS1oZWlnaHQ6dmFyKC0tbGVhZGluZy1wcmltYXJ5LWgxKX0uYmxvZy1hcnRpY2xlX190aXRsZSwuc3RhdF9fdmFsdWUsLnRleHQtcHJpbWFyeS1oMiwudmlkZW9zX19pdGVtLXRpdGxlLGgye2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtcHJpbWFyeSk7Zm9udC1zaXplOnZhcigtLWZvbnQtc2l6ZS1oMik7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OnZhcigtLWxlYWRpbmctcHJpbWFyeS1oMil9Lm5lb3MtdmFsdWVzX19wYW5lbHMsLnRleHQtcHJpbWFyeS1oMyxoM3tmb250LWZhbWlseTp2YXIoLS1mb250LXByaW1hcnkpO2ZvbnQtc2l6ZTp2YXIoLS1mb250LXNpemUtaDMpO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXByaW1hcnktaDMpfS5iZnJpZGF5LC5ibG9nLWFydGljbGVfX2NvbW1lbnRzLXRpdGxlLC5ibG9nLWFydGljbGVfX3NoYXJlLXRpdGxlLC5ibG9nLWNhcmRfX3RpdGxlLC5ibG9nLWNhdHNfX2xpbmssLmNhcmRfX3RpdGxlLC5mb290ZXItbWVudV9fY2F0ZWdvcnksLm5hdi1tb2JpbGVfX21lbnUtbGluaywubmVvcy12YWx1ZXNfX3RhYiwudGV4dC1wcmltYXJ5LWg0LGg0e2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtcHJpbWFyeSk7Zm9udC1zaXplOnZhcigtLWZvbnQtc2l6ZS1oNCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OnZhcigtLWxlYWRpbmctcHJpbWFyeS1oNCl9LmFjY29yZGlvbl9fdGl0bGUsLmJsb2ctY2FyZF9fcmVhZG1vcmUsLmJ0bi0tbWQsLmNhcmRfX2V4dCwuY29tbWVudF9fbmFtZSwubGluaywubmF2X19zdWJtZW51LWxpbmstdGl0bGUsLnJldmlld19fbmFtZSwucmV3YXJkX190aXRsZSwudGV4dC1wcmltYXJ5LWg1LC50b2tlbi1jb3VudGVyX19sYWJlbCwudHJ1c3RwaWxvdC1leHRfX3RleHQsaDV7Zm9udC1mYW1pbHk6dmFyKC0tZm9udC1wcmltYXJ5KTtmb250LXNpemU6dmFyKC0tZm9udC1zaXplLWg1KTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6dmFyKC0tbGVhZGluZy1wcmltYXJ5LWg1KX0uYnRuLS1zbSwuYnV5LW9yZGVyX192YWx1ZSwuZHJvcGRvd24tbWVudV9fYnV0dG9uLC5naWZ0X190ZXh0LC5pbnB1dF9fZmllbGQsLmlucHV0X190ZXh0YXJlYSwub3Atb3JkZXJfX3ZhbHVlLC5vcC1yYXRlX192YWx1ZSwuc2VsbC1vcmRlcl9fdmFsdWUsLnNzLWNvbnRlbnQgLnNzLWxpc3QgLnNzLW9wdGlvbiwuc3MtbWFpbiAuc3Mtc2luZ2xlLXNlbGVjdGVkIC5wbGFjZWhvbGRlciwudGV4dC1wcmltYXJ5LWg2LGg2e2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtcHJpbWFyeSk7Zm9udC1zaXplOnZhcigtLWZvbnQtc2l6ZS1oNik7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OnZhcigtLWxlYWRpbmctcHJpbWFyeS1oNil9Lm9wLXJhdGVfX3RpdGxlLC5yZXdhcmRfX3ZhbHVlLXRleHQsLnNvYy1wcm9vZl9fdHlwZW5hbWUsLnRleHQtcHJpbWFyeS1zbWFsbHtmb250LWZhbWlseTp2YXIoLS1mb250LXByaW1hcnkpO2ZvbnQtc2l6ZTp2YXIoLS1mb250LXNpemUtc21hbGwpO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXByaW1hcnktc21hbGwpfS5idXktb3JkZXJfX2xhYmVsLC5vcC1vcmRlcl9fbGFiZWwsLm9wLXJhdGVfX25hbWUsLnNlbGwtb3JkZXJfX2xhYmVsLC50ZXh0LXByaW1hcnktdGlueXtmb250LWZhbWlseTp2YXIoLS1mb250LXByaW1hcnkpO2ZvbnQtc2l6ZTp2YXIoLS1mb250LXNpemUtdGlueSk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OnZhcigtLWxlYWRpbmctcHJpbWFyeS10aW55KX0ubmF2LW1vYmlsZV9fc3VibWVudS1saW5rLC50ZXh0LWJvZHktaDQsYm9keXtmb250LWZhbWlseTp2YXIoLS1mb250LWJvZHkpO2ZvbnQtc2l6ZTp2YXIoLS1mb250LXNpemUtaDQpO2xpbmUtaGVpZ2h0OnZhcigtLWxlYWRpbmctYm9keS1oNCl9LmJsb2ctYXJ0aWNsZV9fY29udGVudCBwLC5ibG9nLWFydGljbGVfX3Nob3J0LC5ibG9nLWNhcmRfX3ByZXZpZXcsLmNhcmRfX2Rlc2MsLmNvbW1lbnRfX2xhYmVsLC5jb21tZW50X19saWtlLWNvdW50LC5yZXZpZXdfX3Jldmlld2VkLC50ZXh0LWJvZHktaDV7Zm9udC1mYW1pbHk6dmFyKC0tZm9udC1ib2R5KTtmb250LXNpemU6dmFyKC0tZm9udC1zaXplLWg1KTtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLWJvZHktaDUpfS5ibG9nLWFydGljbGVfX2RhdGUsLmNvbW1lbnRfX2JvZHksLmZvb3Rlcl9fY29weSwubmF2LW1vYmlsZV9fZG9jcy1saW5rLC5ub3R5Zl9fbWVzc2FnZSwucmV2aWV3X190ZXh0LC5zdGF0X19kZXNjLC50ZXh0LWJvZHktaDZ7Zm9udC1mYW1pbHk6dmFyKC0tZm9udC1ib2R5KTtmb250LXNpemU6dmFyKC0tZm9udC1zaXplLWg2KTtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLWJvZHktaDYpfS5hY2NvcmRpb25fX2JvZHktaW5uZXIgcCwuYmFkZ2UsLmJsb2ctY2FyZF9fbWV0YSwuZm9vdGVyX19kb21haW5zIGEsLmlucHV0X19lcnJvciwubmF2LW1vYmlsZV9fc3VibWVudS1iYWRnZSwubmF2X19zdWJtZW51LWxpbmstZGVzYywudGV4dC1ib2R5LXNtYWxse2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtYm9keSk7Zm9udC1zaXplOnZhcigtLWZvbnQtc2l6ZS1zbWFsbCk7bGluZS1oZWlnaHQ6dmFyKC0tbGVhZGluZy1ib2R5LXNtYWxsKX0uc29jLXByb29mX191c2VybmFtZSwudGV4dC1ib2R5LXRpbnl7Zm9udC1mYW1pbHk6dmFyKC0tZm9udC1ib2R5KTtmb250LXNpemU6dmFyKC0tZm9udC1zaXplLXRpbnkpO2xpbmUtaGVpZ2h0OnZhcigtLWxlYWRpbmctYm9keS10aW55KX1he2NvbG9yOmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3Isb3BhY2l0eSxiYWNrZ3JvdW5kLWNvbG9yO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpfW9se2NvdW50ZXItcmVzZXQ6bGlzdDF9b2w+bGk6YmVmb3Jle2NvbnRlbnQ6Y291bnRlcihsaXN0MSkgIi4gIjtjb3VudGVyLWluY3JlbWVudDpsaXN0MX1vbD5saTpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH1vbCBvbHtjb3VudGVyLXJlc2V0Omxpc3QyfW9sIG9sPmxpOmJlZm9yZXtjb250ZW50OmNvdW50ZXIobGlzdDEpICIuIiBjb3VudGVyKGxpc3QyKSAiLiAiO2NvdW50ZXItaW5jcmVtZW50Omxpc3QyfW9sIG9sIG9se2NvdW50ZXItcmVzZXQ6bGlzdDN9b2wgb2wgb2w+bGk6YmVmb3Jle2NvbnRlbnQ6Y291bnRlcihsaXN0MSkgIi4iIGNvdW50ZXIobGlzdDIpICIuIiBjb3VudGVyKGxpc3QzKSAiLiAiO2NvdW50ZXItaW5jcmVtZW50Omxpc3QzfW1hcmt7YmFja2dyb3VuZDpub25lO2NvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xKTtmb250LXNpemU6aW5oZXJpdDtmb250LXN0eWxlOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH0ubWFyay0tZGFuZ2Vye2NvbG9yOnJnYih2YXIoLS1jb2xvci1kYW5nZXIpLzEpfS5jb250YWluZXJ7d2lkdGg6MTAwJX1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNvbnRhaW5lcnttYXgtd2lkdGg6NTc2cHh9fUBtZWRpYSAobWluLXdpZHRoOjc2MHB4KXsuY29udGFpbmVye21heC13aWR0aDo3NjBweH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjk5MnB4fX1AbWVkaWEgKG1pbi13aWR0aDoxMjQwcHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjEyNDBweH19QG1lZGlhIChtaW4td2lkdGg6MTQ0MHB4KXsuY29udGFpbmVye21heC13aWR0aDoxNDQwcHh9fUBmb250LWZhY2V7Zm9udC1mYW1pbHk6c3dpcGVyLWljb25zO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKCJkYXRhOmFwcGxpY2F0aW9uL2ZvbnQtd29mZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwgZDA5R1JnQUJBQUFBQUFaZ0FCQUFBQUFBREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJHUmxSTkFBQUdSQUFBQUJvQUFBQWNpNnFIa1VkRVJVWUFBQVdnQUFBQUl3QUFBQ1FBWUFCWFIxQlBVd0FBQmhRQUFBQXVBQUFBTnVBWTcreEhVMVZDQUFBRnhBQUFBRkFBQUFCbTJmUGN6VTlUTHpJQUFBSGNBQUFBU2dBQUFHQlA5VjVSWTIxaGNBQUFBa1FBQUFDSUFBQUJZdDZGMGNCamRuUWdBQUFDekFBQUFBUUFBQUFFQUJFQlJHZGhjM0FBQUFXWUFBQUFDQUFBQUFqLy93QURaMng1WmdBQUF5d0FBQURNQUFBRDJNSHRyeVZvWldGa0FBQUJiQUFBQURBQUFBQTJFMitlb1dob1pXRUFBQUdjQUFBQUh3QUFBQ1FDOWdEemFHMTBlQUFBQWlnQUFBQVpBQUFBcmdKa0FCRnNiMk5oQUFBQzBBQUFBRm9BQUFCYUZRQVVHRzFoZUhBQUFBRzhBQUFBSHdBQUFDQUFjQUJBYm1GdFpRQUFBL2dBQUFFNUFBQUNYdkZkQndsd2IzTjBBQUFGTkFBQUFHSUFBQUNFNXM3NGhYamFZMkJrWUdBQVlwZjVIdS9qK1cyK01uQXpNWURBemFYNlFqRDYvNC8vQnhqNUdBOEF1UndNWUdrQVB5d0wxM2phWTJCa1lHQTg4UDhBZ3g0aisvOGZRRFlmQTFBRUJXZ0RBSUIyQk9vQWVOcGpZR1JnWU5CaDRHZGdZZ0FCRU1uSUFCSnpZTkFEQ1FBQUNXZ0FzUUI0Mm1OZ1lmekNPSUdCbFlHQjBZY3hqWUdCd1IxS2YyV1FaR2hoWUdCaVlHVm1nQUZHQmlRUWtPYWF3dERBb01CUXhYamcvd0VHUGNZRERBNHdOVUEyQ0Nnd3NBQUFPNEVMNmdBQWVOcGoyTTBneUFBQ3F4Z0dOV0JrWjJENC93TUEreGtEZGdBQUFIamFZMkJnWUdhQVlCa0dSZ1lRaUFIeUdNRjhGZ1lISU0zRHdNSEFCR1FyTU9neVdETEVNMVQ5L3c4VUJmRU1nTHpFLy8vL1AvNS8vZi9WL3h2K3I0ZWFBQWVNYkF4d0lVWW1JTUhFZ0tZQVlqVWNzREF3c0xLeGMzQnljZlB3OGpFUUEvZ1pCQVNGaEVWRXhjUWxKS1drWldUbDVCVVVsWlJWVk5YVU5UUVpCZ01BQU1SK0UrZ0FFUUZFQUFBQUtnQXFBQ29BTkFBK0FFZ0FVZ0JjQUdZQWNBQjZBSVFBamdDWUFLSUFyQUMyQU1BQXlnRFVBTjRBNkFEeUFQd0JCZ0VRQVJvQkpBRXVBVGdCUWdGTUFWWUJZQUZxQVhRQmZnR0lBWklCbkFHbUFiSUJ6Z0hzQUFCNDJ1Mk5NUTZDVUF5R1c1Njh4OUFuZVlZZ200TUpiaEtGYUV4SU9BVlg4QXBld1N0NEJpYzRBZmVBaWQzVk9CaXhEeGZQWUV6YTVPK1hmaTA0WUFEZ2dpVUlVTEN1RUpLOFZoTzRiU3ZwZG5rdEhJNVFDWXRkaTJzbDhablhhSGxxVXJOS3pkS2NUOGNqbHErcndaU3ZJVmN6TmllenNmblAvdXpubWZQRkJOT0RNMks3TVRRNDVZRUFacUdQODFBbUdHY0YzaVBxT29wMHIxU1BUYVRiVmtmVWU0SFhqOTd3WUUreU53V1l4d1d1NHYxdWdXSGdvM1MxWGRaRVZxV003RVQwY2ZuTEd4V2ZrZ1I0Mm8yUHZXckRNQlNGai9JSExhRjB6S2pSZ2RpVk13U2NOUkFvV1VvSDc4WTJpY0IveUlZMDlBbjZBSDJCZHUvVUIreXhvcFlzaFFpRXZudnUwZFVSZ0R0OFFlQzhQRHc3RnBqaTNmRUE0ei9QRUo2WU9CNWhLaDRkajNFdlhoeFBxSC9TS1VZM3JKN3NyWjRGWm5oMVBNQXRQaHdQNmZsMlBNSk1QRGdlUTRyWThZVDZHemFvMGVBRUE0MDlEdWdnbVRuRm5PY1NDaUVpTE1neENpVEk2Q3E1RFpVZDNRbXAxMHZPMExhTFRkMmNqTjRmT3VtbGM3bFVZYlNRY1pGa3V0Ukc3ZzZKS1pLeTBSbWRMWTY4MENEbkVKK1VNa3BGRmUxUk43bnhkVnBYckM0YVR0bmF1ck9uWWVyY1pnMllWbUxOL2QvZ2N6ZkVpbXJFL2ZzL2JPdXEyOVptbjh0bG9PUmFYZ1pnR2E3OHlPOS9jblhtMkJwYUd2cTI1RHY5UzRFOSs1U0ljOVBxdXBKS2hZRlNTbDQ3K1FjcjFtWU5BQUFBZU5wdHcwY0t3a0FBQU1EWkpBOFE3T1VKdmtMc1BmWjZ6RlZFUlB5OHFIaDJZRVIrM2kvQlA4M3ZJQkxMeVNzb0tpbXJxS3FwYTJocDYranE2UnNZR2htYm1KcVpTeTBzcmF4dGJPM3NIUnlkbkVNVTR1UjZ5eDdKSlh2ZVA3V3JEeWNBQUFBQUFBSC8vd0FDZU5wallHUmdZT0FCWWhrZ1pnSkNaZ1pOQmtZR0xRWnRJSnNGTE1ZQUFBdzNBTGdBZU5vbGl6RUtnREFRQkNjaFJiQzJzRkVSMFlENnFWUWlCQ3YvSDllekdJNlo1WEJBdzhDQksvbTVpUVFWYXVWYlhMbk9yTVp2Mm9MZEtGYThQanVydTJoSnpHYWJtT1NMek5NenZ1dHBCM040Mm1OZ1pHQmc0R0tRWXpCaFlNeEpMTWxqNEdCZ0FZb3cvUC9QQUpKaExNNnNTb1dLZldDQUF3REFqZ2JSQUFCNDJtTmdZR0JrQUlJYkNabzVJUHJtVW4waEdBMEFPOEVGVFFBQSIpfTpyb290ey0tc3dpcGVyLXRoZW1lLWNvbG9yOiMwMDdhZmZ9LnN3aXBlcntsaXN0LXN0eWxlOm5vbmU7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bztvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MX0uc3dpcGVyLXZlcnRpY2FsPi5zd2lwZXItd3JhcHBlcntmbGV4LWRpcmVjdGlvbjpjb2x1bW59LnN3aXBlci13cmFwcGVye2JveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtO3dpZHRoOjEwMCU7ei1pbmRleDoxfS5zd2lwZXItYW5kcm9pZCAuc3dpcGVyLXNsaWRlLC5zd2lwZXItd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0uc3dpcGVyLXBvaW50ZXItZXZlbnRze3RvdWNoLWFjdGlvbjpwYW4teX0uc3dpcGVyLXBvaW50ZXItZXZlbnRzLnN3aXBlci12ZXJ0aWNhbHt0b3VjaC1hY3Rpb246cGFuLXh9LnN3aXBlci1zbGlkZXtmbGV4LXNocmluazowO2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtO3dpZHRoOjEwMCV9LnN3aXBlci1zbGlkZS1pbnZpc2libGUtYmxhbmt7dmlzaWJpbGl0eTpoaWRkZW59LnN3aXBlci1hdXRvaGVpZ2h0LC5zd2lwZXItYXV0b2hlaWdodCAuc3dpcGVyLXNsaWRle2hlaWdodDphdXRvfS5zd2lwZXItYXV0b2hlaWdodCAuc3dpcGVyLXdyYXBwZXJ7YWxpZ24taXRlbXM6ZmxleC1zdGFydDt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybSxoZWlnaHR9LnN3aXBlci1iYWNrZmFjZS1oaWRkZW4gLnN3aXBlci1zbGlkZXstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5zd2lwZXItM2QsLnN3aXBlci0zZC5zd2lwZXItY3NzLW1vZGUgLnN3aXBlci13cmFwcGVye3BlcnNwZWN0aXZlOjEyMDBweH0uc3dpcGVyLTNkIC5zd2lwZXItY3ViZS1zaGFkb3csLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLC5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3csLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LC5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AsLnN3aXBlci0zZCAuc3dpcGVyLXdyYXBwZXJ7dHJhbnNmb3JtLXN0eWxlOnByZXNlcnZlLTNkfS5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3csLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LC5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3B7aGVpZ2h0OjEwMCU7bGVmdDowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJTt6LWluZGV4OjEwfS5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3d7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xNSl9LnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0e2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDI3MGRlZyxyZ2JhKDAsMCwwLC41KSx0cmFuc3BhcmVudCl9LnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodHtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZyxyZ2JhKDAsMCwwLC41KSx0cmFuc3BhcmVudCl9LnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3B7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMGRlZyxyZ2JhKDAsMCwwLC41KSx0cmFuc3BhcmVudCl9LnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b217YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLHJnYmEoMCwwLDAsLjUpLHRyYW5zcGFyZW50KX0uc3dpcGVyLWNzcy1tb2RlPi5zd2lwZXItd3JhcHBlcnstbXMtb3ZlcmZsb3ctc3R5bGU6bm9uZTtvdmVyZmxvdzphdXRvO3Njcm9sbGJhci13aWR0aDpub25lfS5zd2lwZXItY3NzLW1vZGU+LnN3aXBlci13cmFwcGVyOjotd2Via2l0LXNjcm9sbGJhcntkaXNwbGF5Om5vbmV9LnN3aXBlci1jc3MtbW9kZT4uc3dpcGVyLXdyYXBwZXI+LnN3aXBlci1zbGlkZXtzY3JvbGwtc25hcC1hbGlnbjpzdGFydCBzdGFydH0uc3dpcGVyLWhvcml6b250YWwuc3dpcGVyLWNzcy1tb2RlPi5zd2lwZXItd3JhcHBlcntzY3JvbGwtc25hcC10eXBlOnggbWFuZGF0b3J5fS5zd2lwZXItdmVydGljYWwuc3dpcGVyLWNzcy1tb2RlPi5zd2lwZXItd3JhcHBlcntzY3JvbGwtc25hcC10eXBlOnkgbWFuZGF0b3J5fS5zd2lwZXItY2VudGVyZWQ+LnN3aXBlci13cmFwcGVyOmJlZm9yZXtjb250ZW50OiIiO2ZsZXgtc2hyaW5rOjA7b3JkZXI6OTk5OX0uc3dpcGVyLWNlbnRlcmVkLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItd3JhcHBlcj4uc3dpcGVyLXNsaWRlOmZpcnN0LWNoaWxkey13ZWJraXQtbWFyZ2luLXN0YXJ0OnZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYmVmb3JlKTttYXJnaW4taW5saW5lLXN0YXJ0OnZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYmVmb3JlKX0uc3dpcGVyLWNlbnRlcmVkLnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItd3JhcHBlcjpiZWZvcmV7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDoxcHg7d2lkdGg6dmFyKC0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1hZnRlcil9LnN3aXBlci1jZW50ZXJlZC5zd2lwZXItdmVydGljYWw+LnN3aXBlci13cmFwcGVyPi5zd2lwZXItc2xpZGU6Zmlyc3QtY2hpbGR7LXdlYmtpdC1tYXJnaW4tYmVmb3JlOnZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYmVmb3JlKTttYXJnaW4tYmxvY2stc3RhcnQ6dmFyKC0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1iZWZvcmUpfS5zd2lwZXItY2VudGVyZWQuc3dpcGVyLXZlcnRpY2FsPi5zd2lwZXItd3JhcHBlcjpiZWZvcmV7aGVpZ2h0OnZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYWZ0ZXIpO21pbi13aWR0aDoxcHg7d2lkdGg6MTAwJX0uc3dpcGVyLWNlbnRlcmVkPi5zd2lwZXItd3JhcHBlcj4uc3dpcGVyLXNsaWRle3Njcm9sbC1zbmFwLWFsaWduOmNlbnRlciBjZW50ZXI7c2Nyb2xsLXNuYXAtc3RvcDphbHdheXN9LnN3aXBlci12aXJ0dWFsIC5zd2lwZXItc2xpZGV7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0uc3dpcGVyLXZpcnR1YWwuc3dpcGVyLWNzcy1tb2RlIC5zd2lwZXItd3JhcHBlcjphZnRlcntjb250ZW50OiIiO2xlZnQ6MDtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfS5zd2lwZXItdmlydHVhbC5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWhvcml6b250YWwgLnN3aXBlci13cmFwcGVyOmFmdGVye2hlaWdodDoxcHg7d2lkdGg6dmFyKC0tc3dpcGVyLXZpcnR1YWwtc2l6ZSl9LnN3aXBlci12aXJ0dWFsLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItdmVydGljYWwgLnN3aXBlci13cmFwcGVyOmFmdGVye2hlaWdodDp2YXIoLS1zd2lwZXItdmlydHVhbC1zaXplKTt3aWR0aDoxcHh9OnJvb3R7LS1zd2lwZXItbmF2aWdhdGlvbi1zaXplOjQ0cHh9LnN3aXBlci1idXR0b24tbmV4dCwuc3dpcGVyLWJ1dHRvbi1wcmV2e2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjp2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1jb2xvcix2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7aGVpZ2h0OnZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemUpO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDpjYWxjKDBweCAtIHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemUpLzIpO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7d2lkdGg6Y2FsYyh2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1zaXplKS80NCoyNyk7ei1pbmRleDoxMH0uc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24tZGlzYWJsZWQsLnN3aXBlci1idXR0b24tcHJldi5zd2lwZXItYnV0dG9uLWRpc2FibGVke2N1cnNvcjphdXRvO29wYWNpdHk6LjM1O3BvaW50ZXItZXZlbnRzOm5vbmV9LnN3aXBlci1idXR0b24tbmV4dC5zd2lwZXItYnV0dG9uLWhpZGRlbiwuc3dpcGVyLWJ1dHRvbi1wcmV2LnN3aXBlci1idXR0b24taGlkZGVue2N1cnNvcjphdXRvO29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lfS5zd2lwZXItbmF2aWdhdGlvbi1kaXNhYmxlZCAuc3dpcGVyLWJ1dHRvbi1uZXh0LC5zd2lwZXItbmF2aWdhdGlvbi1kaXNhYmxlZCAuc3dpcGVyLWJ1dHRvbi1wcmV2e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LnN3aXBlci1idXR0b24tbmV4dDphZnRlciwuc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVye2ZvbnQtZmFtaWx5OnN3aXBlci1pY29ucztmb250LXNpemU6dmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2l6ZSk7Zm9udC12YXJpYW50Om5vcm1hbDtsZXR0ZXItc3BhY2luZzowO2xpbmUtaGVpZ2h0OjE7dGV4dC10cmFuc2Zvcm06bm9uZSFpbXBvcnRhbnR9LnN3aXBlci1idXR0b24tcHJldiwuc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0e2xlZnQ6MTBweDtyaWdodDphdXRvfS5zd2lwZXItYnV0dG9uLXByZXY6YWZ0ZXIsLnN3aXBlci1ydGwgLnN3aXBlci1idXR0b24tbmV4dDphZnRlcntjb250ZW50OiJwcmV2In0uc3dpcGVyLWJ1dHRvbi1uZXh0LC5zd2lwZXItcnRsIC5zd2lwZXItYnV0dG9uLXByZXZ7bGVmdDphdXRvO3JpZ2h0OjEwcHh9LnN3aXBlci1idXR0b24tbmV4dDphZnRlciwuc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVye2NvbnRlbnQ6Im5leHQifS5zd2lwZXItYnV0dG9uLWxvY2t7ZGlzcGxheTpub25lfS5zd2lwZXItcGFnaW5hdGlvbntwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzO3otaW5kZXg6MTB9LnN3aXBlci1wYWdpbmF0aW9uLnN3aXBlci1wYWdpbmF0aW9uLWhpZGRlbntvcGFjaXR5OjB9LnN3aXBlci1wYWdpbmF0aW9uLWRpc2FibGVkPi5zd2lwZXItcGFnaW5hdGlvbiwuc3dpcGVyLXBhZ2luYXRpb24uc3dpcGVyLXBhZ2luYXRpb24tZGlzYWJsZWR7ZGlzcGxheTpub25lIWltcG9ydGFudH0uc3dpcGVyLWhvcml6b250YWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbCwuc3dpcGVyLXBhZ2luYXRpb24tY3VzdG9tLC5zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbntib3R0b206MTBweDtsZWZ0OjA7d2lkdGg6MTAwJX0uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWlje2ZvbnQtc2l6ZTowO292ZXJmbG93OmhpZGRlbn0uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNmb3JtOnNjYWxlKC4zMyl9LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZSwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLW1haW57dHJhbnNmb3JtOnNjYWxlKDEpfS5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUtcHJldnt0cmFuc2Zvcm06c2NhbGUoLjY2KX0uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLXByZXYtcHJldnt0cmFuc2Zvcm06c2NhbGUoLjMzKX0uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLW5leHR7dHJhbnNmb3JtOnNjYWxlKC42Nil9LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1uZXh0LW5leHR7dHJhbnNmb3JtOnNjYWxlKC4zMyl9LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHtiYWNrZ3JvdW5kOnZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1pbmFjdGl2ZS1jb2xvciwjMDAwKTtib3JkZXItcmFkaXVzOjUwJTtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6dmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWhlaWdodCx2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtc2l6ZSw4cHgpKTtvcGFjaXR5OnZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1pbmFjdGl2ZS1vcGFjaXR5LC4yKTt3aWR0aDp2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtd2lkdGgsdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXNpemUsOHB4KSl9YnV0dG9uLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOm5vbmU7Ym94LXNoYWRvdzpub25lO21hcmdpbjowO3BhZGRpbmc6MH0uc3dpcGVyLXBhZ2luYXRpb24tY2xpY2thYmxlIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7Y3Vyc29yOnBvaW50ZXJ9LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldDpvbmx5LWNoaWxke2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmV7YmFja2dyb3VuZDp2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1jb2xvcix2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKTtvcGFjaXR5OnZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1vcGFjaXR5LDEpfS5zd2lwZXItcGFnaW5hdGlvbi12ZXJ0aWNhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLC5zd2lwZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHN7cmlnaHQ6MTBweDt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC01MCUsMCl9LnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCwuc3dpcGVyLXZlcnRpY2FsPi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7ZGlzcGxheTpibG9jazttYXJnaW46dmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXZlcnRpY2FsLWdhcCw2cHgpIDB9LnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljLC5zd2lwZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWlje3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7d2lkdGg6OHB4fS5zd2lwZXItcGFnaW5hdGlvbi12ZXJ0aWNhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LC5zd2lwZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7ZGlzcGxheTppbmxpbmUtYmxvY2s7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzLHRvcCAuMnN9LnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQsLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0e21hcmdpbjowIHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1ob3Jpem9udGFsLWdhcCw0cHgpfS5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMsLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWN7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7d2hpdGUtc3BhY2U6bm93cmFwfS5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCwuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0e3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyxsZWZ0IC4yc30uc3dpcGVyLWhvcml6b250YWwuc3dpcGVyLXJ0bD4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXR7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzLHJpZ2h0IC4yc30uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4yNSk7cG9zaXRpb246YWJzb2x1dGV9LnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1maWxse2JhY2tncm91bmQ6dmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tY29sb3IsdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSk7aGVpZ2h0OjEwMCU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3RyYW5zZm9ybTpzY2FsZSgwKTt0cmFuc2Zvcm0tb3JpZ2luOmxlZnQgdG9wO3dpZHRoOjEwMCV9LnN3aXBlci1ydGwgLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1maWxse3RyYW5zZm9ybS1vcmlnaW46cmlnaHQgdG9wfS5zd2lwZXItaG9yaXpvbnRhbD4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIsLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwsLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlLC5zd2lwZXItdmVydGljYWw+LnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRle2hlaWdodDo0cHg7bGVmdDowO3RvcDowO3dpZHRoOjEwMCV9LnN3aXBlci1ob3Jpem9udGFsPi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1vcHBvc2l0ZSwuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1vcHBvc2l0ZSwuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwsLnN3aXBlci12ZXJ0aWNhbD4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXJ7aGVpZ2h0OjEwMCU7bGVmdDowO3RvcDowO3dpZHRoOjRweH0uc3dpcGVyLXBhZ2luYXRpb24tbG9ja3tkaXNwbGF5Om5vbmV9LnN3aXBlci1zY3JvbGxiYXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xKTtib3JkZXItcmFkaXVzOjEwcHg7cG9zaXRpb246cmVsYXRpdmU7LW1zLXRvdWNoLWFjdGlvbjpub25lfS5zd2lwZXItc2Nyb2xsYmFyLWRpc2FibGVkPi5zd2lwZXItc2Nyb2xsYmFyLC5zd2lwZXItc2Nyb2xsYmFyLnN3aXBlci1zY3JvbGxiYXItZGlzYWJsZWR7ZGlzcGxheTpub25lIWltcG9ydGFudH0uc3dpcGVyLWhvcml6b250YWw+LnN3aXBlci1zY3JvbGxiYXIsLnN3aXBlci1zY3JvbGxiYXIuc3dpcGVyLXNjcm9sbGJhci1ob3Jpem9udGFse2JvdHRvbTozcHg7aGVpZ2h0OjVweDtsZWZ0OjElO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjk4JTt6LWluZGV4OjUwfS5zd2lwZXItc2Nyb2xsYmFyLnN3aXBlci1zY3JvbGxiYXItdmVydGljYWwsLnN3aXBlci12ZXJ0aWNhbD4uc3dpcGVyLXNjcm9sbGJhcntoZWlnaHQ6OTglO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjNweDt0b3A6MSU7d2lkdGg6NXB4O3otaW5kZXg6NTB9LnN3aXBlci1zY3JvbGxiYXItZHJhZ3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjUpO2JvcmRlci1yYWRpdXM6MTBweDtoZWlnaHQ6MTAwJTtsZWZ0OjA7cG9zaXRpb246cmVsYXRpdmU7dG9wOjA7d2lkdGg6MTAwJX0uc3dpcGVyLXNjcm9sbGJhci1jdXJzb3ItZHJhZ3tjdXJzb3I6bW92ZX0uc3dpcGVyLXNjcm9sbGJhci1sb2Nre2Rpc3BsYXk6bm9uZX0uc3dpcGVyLXpvb20tY29udGFpbmVye2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlfS5zd2lwZXItem9vbS1jb250YWluZXI+Y2FudmFzLC5zd2lwZXItem9vbS1jb250YWluZXI+aW1nLC5zd2lwZXItem9vbS1jb250YWluZXI+c3Zne21heC1oZWlnaHQ6MTAwJTttYXgtd2lkdGg6MTAwJTstby1vYmplY3QtZml0OmNvbnRhaW47b2JqZWN0LWZpdDpjb250YWlufS5zd2lwZXItc2xpZGUtem9vbWVke2N1cnNvcjptb3ZlfS5zd2lwZXItbGF6eS1wcmVsb2FkZXJ7Ym9yZGVyOjRweCBzb2xpZCB2YXIoLS1zd2lwZXItcHJlbG9hZGVyLWNvbG9yLHZhcigtLXN3aXBlci10aGVtZS1jb2xvcikpO2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlci10b3A6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6NDJweDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotMjFweDttYXJnaW4tdG9wOi0yMXB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7dHJhbnNmb3JtLW9yaWdpbjo1MCU7d2lkdGg6NDJweDt6LWluZGV4OjEwfS5zd2lwZXItd2F0Y2gtcHJvZ3Jlc3MgLnN3aXBlci1zbGlkZS12aXNpYmxlIC5zd2lwZXItbGF6eS1wcmVsb2FkZXIsLnN3aXBlcjpub3QoLnN3aXBlci13YXRjaC1wcm9ncmVzcykgLnN3aXBlci1sYXp5LXByZWxvYWRlcnthbmltYXRpb246c3dpcGVyLXByZWxvYWRlci1zcGluIDFzIGxpbmVhciBpbmZpbml0ZX0uc3dpcGVyLWxhenktcHJlbG9hZGVyLXdoaXRley0tc3dpcGVyLXByZWxvYWRlci1jb2xvcjojZmZmfS5zd2lwZXItbGF6eS1wcmVsb2FkZXItYmxhY2t7LS1zd2lwZXItcHJlbG9hZGVyLWNvbG9yOiMwMDB9QGtleWZyYW1lcyBzd2lwZXItcHJlbG9hZGVyLXNwaW57MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3t0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19LnN3aXBlciAuc3dpcGVyLW5vdGlmaWNhdGlvbntsZWZ0OjA7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7ei1pbmRleDotMTAwMH0uc3dpcGVyLWZyZWUtbW9kZT4uc3dpcGVyLXdyYXBwZXJ7bWFyZ2luOjAgYXV0bzt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLW91dH0uc3dpcGVyLWdyaWQ+LnN3aXBlci13cmFwcGVye2ZsZXgtd3JhcDp3cmFwfS5zd2lwZXItZ3JpZC1jb2x1bW4+LnN3aXBlci13cmFwcGVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LXdyYXA6d3JhcH0uc3dpcGVyLWZhZGUuc3dpcGVyLWZyZWUtbW9kZSAuc3dpcGVyLXNsaWRle3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0fS5zd2lwZXItZmFkZSAuc3dpcGVyLXNsaWRle3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5fS5zd2lwZXItZmFkZSAuc3dpcGVyLXNsaWRlIC5zd2lwZXItc2xpZGV7cG9pbnRlci1ldmVudHM6bm9uZX0uc3dpcGVyLWZhZGUgLnN3aXBlci1zbGlkZS1hY3RpdmUsLnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUtYWN0aXZlIC5zd2lwZXItc2xpZGUtYWN0aXZle3BvaW50ZXItZXZlbnRzOmF1dG99LnN3aXBlci1jdWJle292ZXJmbG93OnZpc2libGV9LnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGV7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtoZWlnaHQ6MTAwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zZm9ybS1vcmlnaW46MCAwO3Zpc2liaWxpdHk6aGlkZGVuO3dpZHRoOjEwMCU7ei1pbmRleDoxfS5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlIC5zd2lwZXItc2xpZGV7cG9pbnRlci1ldmVudHM6bm9uZX0uc3dpcGVyLWN1YmUuc3dpcGVyLXJ0bCAuc3dpcGVyLXNsaWRle3RyYW5zZm9ybS1vcmlnaW46MTAwJSAwfS5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSwuc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1hY3RpdmUgLnN3aXBlci1zbGlkZS1hY3RpdmV7cG9pbnRlci1ldmVudHM6YXV0b30uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1hY3RpdmUsLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtbmV4dCwuc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1uZXh0Ky5zd2lwZXItc2xpZGUsLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtcHJldntwb2ludGVyLWV2ZW50czphdXRvO3Zpc2liaWxpdHk6dmlzaWJsZX0uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLC5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LC5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCwuc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wey13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47ei1pbmRleDowfS5zd2lwZXItY3ViZSAuc3dpcGVyLWN1YmUtc2hhZG93e2JvdHRvbTowO2hlaWdodDoxMDAlO2xlZnQ6MDtvcGFjaXR5Oi42O3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7ei1pbmRleDowfS5zd2lwZXItY3ViZSAuc3dpcGVyLWN1YmUtc2hhZG93OmJlZm9yZXtiYWNrZ3JvdW5kOiMwMDA7Ym90dG9tOjA7Y29udGVudDoiIjtmaWx0ZXI6Ymx1cig1MHB4KTtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MH0uc3dpcGVyLWZsaXB7b3ZlcmZsb3c6dmlzaWJsZX0uc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZXstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO3BvaW50ZXItZXZlbnRzOm5vbmU7ei1pbmRleDoxfS5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlIC5zd2lwZXItc2xpZGV7cG9pbnRlci1ldmVudHM6bm9uZX0uc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1hY3RpdmUsLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUtYWN0aXZlIC5zd2lwZXItc2xpZGUtYWN0aXZle3BvaW50ZXItZXZlbnRzOmF1dG99LnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwuc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCwuc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcHstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO3otaW5kZXg6MH0uc3dpcGVyLWNyZWF0aXZlIC5zd2lwZXItc2xpZGV7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtvdmVyZmxvdzpoaWRkZW47dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm0sb3BhY2l0eSxoZWlnaHR9LnN3aXBlci1jYXJkc3tvdmVyZmxvdzp2aXNpYmxlfS5zd2lwZXItY2FyZHMgLnN3aXBlci1zbGlkZXstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO292ZXJmbG93OmhpZGRlbjt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlciBib3R0b219LmNhcm91c2Vse2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZX0uY2Fyb3VzZWwgKiwuY2Fyb3VzZWwgOmFmdGVyLC5jYXJvdXNlbCA6YmVmb3Jle2JveC1zaXppbmc6aW5oZXJpdH0uY2Fyb3VzZWwuaXMtZHJhZ2dhYmxle2N1cnNvcjptb3ZlO2N1cnNvcjpncmFifS5jYXJvdXNlbC5pcy1kcmFnZ2luZ3tjdXJzb3I6bW92ZTtjdXJzb3I6Z3JhYmJpbmd9LmNhcm91c2VsX192aWV3cG9ydHttYXgtaGVpZ2h0OjEwMCU7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5jYXJvdXNlbF9fdHJhY2t7ZGlzcGxheTpmbGV4fS5jYXJvdXNlbF9fc2xpZGV7ZmxleDowIDAgYXV0bzttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87b3ZlcnNjcm9sbC1iZWhhdmlvcjpjb250YWluO3BhZGRpbmc6MXJlbTtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDp2YXIoLS1jYXJvdXNlbC1zbGlkZS13aWR0aCw2MCUpfS5oYXMtZG90c3ttYXJnaW4tYm90dG9tOmNhbGMoLjVyZW0gKyAyMnB4KX0uY2Fyb3VzZWxfX2RvdHN7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bGVmdDowO2xpc3Qtc3R5bGU6bm9uZTttYXJnaW46MCBhdXRvO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDpjYWxjKDEwMCUgKyAuNXJlbSk7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5jYXJvdXNlbF9fZG90cyAuY2Fyb3VzZWxfX2RvdHtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO2hlaWdodDoyMnB4O21hcmdpbjowO3BhZGRpbmc6MDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoyMnB4fS5jYXJvdXNlbF9fZG90cyAuY2Fyb3VzZWxfX2RvdDphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcjtib3JkZXItcmFkaXVzOjUwJTtjb250ZW50OiIiO2hlaWdodDo4cHg7bGVmdDo1MCU7b3BhY2l0eTouMjU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgZWFzZS1pbi1vdXQ7d2lkdGg6OHB4fS5jYXJvdXNlbF9fZG90cyAuY2Fyb3VzZWxfX2RvdC5pcy1zZWxlY3RlZDphZnRlcntvcGFjaXR5OjF9LmNhcm91c2VsX19idXR0b257YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tY2Fyb3VzZWwtYnV0dG9uLWJnLHRyYW5zcGFyZW50KTtib3JkZXI6MDtib3JkZXItcmFkaXVzOnZhcigtLWNhcm91c2VsLWJ1dHRvbi1ib3JkZXItcmFkaXVzLDUwJSk7Ym94LXNoYWRvdzp2YXIoLS1jYXJvdXNlbC1idXR0b24tc2hhZG93LG5vbmUpO2NvbG9yOnZhcigtLWNhcm91c2VsLWJ1dHRvbi1jb2xvcixjdXJyZW50Q29sb3IpO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6dmFyKC0tY2Fyb3VzZWwtYnV0dG9uLWhlaWdodCw0OHB4KTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmc6MDtwb2ludGVyLWV2ZW50czphbGw7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgZWFzZTt3aWR0aDp2YXIoLS1jYXJvdXNlbC1idXR0b24td2lkdGgsNDhweCl9LmNhcm91c2VsX19idXR0b24uaXMtbmV4dCwuY2Fyb3VzZWxfX2J1dHRvbi5pcy1wcmV2e3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmNhcm91c2VsX19idXR0b24uaXMtcHJldntsZWZ0OjEwcHh9LmNhcm91c2VsX19idXR0b24uaXMtbmV4dHtyaWdodDoxMHB4fS5jYXJvdXNlbF9fYnV0dG9uW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdDtvcGFjaXR5Oi4zfS5jYXJvdXNlbF9fYnV0dG9uIHN2Z3tmaWxsOm5vbmU7c3Ryb2tlOmN1cnJlbnRDb2xvcjtzdHJva2Utd2lkdGg6dmFyKC0tY2Fyb3VzZWwtYnV0dG9uLXN2Zy1zdHJva2Utd2lkdGgsMS41KTtzdHJva2UtbGluZWpvaW46YmV2ZWw7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7ZmlsdGVyOnZhcigtLWNhcm91c2VsLWJ1dHRvbi1zdmctZmlsdGVyLG5vbmUpO2hlaWdodDp2YXIoLS1jYXJvdXNlbC1idXR0b24tc3ZnLWhlaWdodCw1MCUpO3BvaW50ZXItZXZlbnRzOm5vbmU7d2lkdGg6dmFyKC0tY2Fyb3VzZWwtYnV0dG9uLXN2Zy13aWR0aCw1MCUpfWh0bWwud2l0aC1mYW5jeWJveHtzY3JvbGwtYmVoYXZpb3I6YXV0b31ib2R5LmNvbXBlbnNhdGUtZm9yLXNjcm9sbGJhcntvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O3RvdWNoLWFjdGlvbjpub25lfS5mYW5jeWJveF9fY29udGFpbmVyey13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApOy0tY2Fyb3VzZWwtYnV0dG9uLXdpZHRoOjQ4cHg7LS1jYXJvdXNlbC1idXR0b24taGVpZ2h0OjQ4cHg7LS1jYXJvdXNlbC1idXR0b24tc3ZnLXdpZHRoOjI0cHg7LS1jYXJvdXNlbC1idXR0b24tc3ZnLWhlaWdodDoyNHB4Oy0tY2Fyb3VzZWwtYnV0dG9uLXN2Zy1zdHJva2Utd2lkdGg6Mi41Oy0tY2Fyb3VzZWwtYnV0dG9uLXN2Zy1maWx0ZXI6ZHJvcC1zaGFkb3coMXB4IDFweCAxcHggcmdiYSgwLDAsMCwuNCkpO2JvdHRvbTowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjp2YXIoLS1mYW5jeWJveC1jb2xvciwjZmZmKTtkaXJlY3Rpb246bHRyO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bGVmdDowO21hcmdpbjowO291dGxpbmU6bm9uZTtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzplbnYoc2FmZS1hcmVhLWluc2V0LXRvcCwwKSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0LDApIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLDApIGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCwwKTtwb3NpdGlvbjpmaXhlZDtyaWdodDowO3RvcDowO3RyYW5zZm9ybS1vcmlnaW46dG9wIGxlZnQ7ei1pbmRleDoxMDUwfS5mYW5jeWJveF9fY29udGFpbmVyICosLmZhbmN5Ym94X19jb250YWluZXIgOmFmdGVyLC5mYW5jeWJveF9fY29udGFpbmVyIDpiZWZvcmV7Ym94LXNpemluZzppbmhlcml0fS5mYW5jeWJveF9fY29udGFpbmVyIDpmb2N1c3tvdXRsaW5lOm5vbmV9Ym9keTpub3QoLmlzLXVzaW5nLW1vdXNlKSAuZmFuY3lib3hfX2NvbnRhaW5lciA6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAxcHggI2ZmZiwwIDAgMCAycHggdmFyKC0tZmFuY3lib3gtYWNjZW50LWNvbG9yLHJnYmEoMSwyMTAsMjMyLC45NCkpfUBtZWRpYSAobWluLXdpZHRoOjEwMjRweCl7LmZhbmN5Ym94X19jb250YWluZXJ7LS1jYXJvdXNlbC1idXR0b24td2lkdGg6NDhweDstLWNhcm91c2VsLWJ1dHRvbi1oZWlnaHQ6NDhweDstLWNhcm91c2VsLWJ1dHRvbi1zdmctd2lkdGg6MjdweDstLWNhcm91c2VsLWJ1dHRvbi1zdmctaGVpZ2h0OjI3cHh9fS5mYW5jeWJveF9fYmFja2Ryb3B7YmFja2dyb3VuZDp2YXIoLS1mYW5jeWJveC1iZyxyZ2JhKDI0LDI0LDI3LC45MikpO2JvdHRvbTowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3otaW5kZXg6LTF9LmZhbmN5Ym94X19jYXJvdXNlbHtmbGV4OjEgMSBhdXRvO2hlaWdodDoxMDAlO21pbi1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjEwfS5mYW5jeWJveF9fY2Fyb3VzZWwuaGFzLWRvdHN7bWFyZ2luLWJvdHRvbTpjYWxjKC41cmVtICsgMjJweCl9LmZhbmN5Ym94X192aWV3cG9ydHtjdXJzb3I6ZGVmYXVsdDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzp2aXNpYmxlO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LmZhbmN5Ym94X190cmFja3tkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCV9LmZhbmN5Ym94X19zbGlkZXstLWNhcm91c2VsLWJ1dHRvbi13aWR0aDozNnB4Oy0tY2Fyb3VzZWwtYnV0dG9uLWhlaWdodDozNnB4Oy0tY2Fyb3VzZWwtYnV0dG9uLXN2Zy13aWR0aDoyMnB4Oy0tY2Fyb3VzZWwtYnV0dG9uLXN2Zy1oZWlnaHQ6MjJweDtkaXNwbGF5OmZsZXg7ZmxleDowIDAgYXV0bztmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWFyZ2luOjA7bWF4LXdpZHRoOjEwMCU7b3V0bGluZTowO292ZXJmbG93OmF1dG87b3ZlcnNjcm9sbC1iZWhhdmlvcjpjb250YWluO3BhZGRpbmc6NDhweCA4cHggOHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LmZhbmN5Ym94X19zbGlkZTphZnRlciwuZmFuY3lib3hfX3NsaWRlOmJlZm9yZXtjb250ZW50OiIiO2ZsZXg6MCAwIDA7bWFyZ2luOmF1dG99QG1lZGlhIChtaW4td2lkdGg6MTAyNHB4KXsuZmFuY3lib3hfX3NsaWRle3BhZGRpbmc6NjRweCAxMDBweH19LmZhbmN5Ym94X19jb250ZW50e2FsaWduLXNlbGY6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tZmFuY3lib3gtY29udGVudC1iZywjZmZmKTtjb2xvcjp2YXIoLS1mYW5jeWJveC1jb250ZW50LWNvbG9yLCMzNzQxNTEpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWFyZ2luOjAgZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCwwKSAwIGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCwwKTtwYWRkaW5nOjM2cHg7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyMH0uZmFuY3lib3hfX2NvbnRlbnQgOmZvY3VzOm5vdCguY2Fyb3VzZWxfX2J1dHRvbi5pcy1jbG9zZSl7Ym94LXNoYWRvdzpub25lO291dGxpbmU6dGhpbiBkb3R0ZWR9LmZhbmN5Ym94X19jYXB0aW9ue2FsaWduLXNlbGY6Y2VudGVyO2NvbG9yOnZhcigtLWZhbmN5Ym94LWNvbG9yLGN1cnJlbnRDb2xvcik7Y3Vyc29yOmF1dG87ZmxleC1zaHJpbms6MDtsaW5lLWhlaWdodDoxLjM3NTttYXJnaW46MDttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdy13cmFwOmFueXdoZXJlO3BhZGRpbmc6MXJlbSAwIDA7dmlzaWJpbGl0eTp2aXNpYmxlfS5pcy1sb2FkaW5nIC5mYW5jeWJveF9fY2FwdGlvbnt2aXNpYmlsaXR5OmhpZGRlbn0uZmFuY3lib3hfX2NvbnRhaW5lcj4uY2Fyb3VzZWxfX2RvdHN7Y29sb3I6dmFyKC0tZmFuY3lib3gtY29sb3IsI2ZmZik7dG9wOjEwMCV9LmZhbmN5Ym94X19uYXYgLmNhcm91c2VsX19idXR0b257ei1pbmRleDo0MH0uZmFuY3lib3hfX25hdiAuY2Fyb3VzZWxfX2J1dHRvbi5pcy1uZXh0e3JpZ2h0OjhweH1AbWVkaWEgKG1pbi13aWR0aDoxMDI0cHgpey5mYW5jeWJveF9fbmF2IC5jYXJvdXNlbF9fYnV0dG9uLmlzLW5leHR7cmlnaHQ6NDBweH19LmZhbmN5Ym94X19uYXYgLmNhcm91c2VsX19idXR0b24uaXMtcHJldntsZWZ0OjhweH1AbWVkaWEgKG1pbi13aWR0aDoxMDI0cHgpey5mYW5jeWJveF9fbmF2IC5jYXJvdXNlbF9fYnV0dG9uLmlzLXByZXZ7bGVmdDo0MHB4fX0uY2Fyb3VzZWxfX2J1dHRvbi5pcy1jbG9zZXtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDo4cHg7cmlnaHQ6Y2FsYyhlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0LCAwcHgpICsgOHB4KTt0b3A6OHB4O3RvcDpjYWxjKGVudihzYWZlLWFyZWEtaW5zZXQtdG9wLCAwcHgpICsgOHB4KTt6LWluZGV4OjQwfUBtZWRpYSAobWluLXdpZHRoOjEwMjRweCl7LmNhcm91c2VsX19idXR0b24uaXMtY2xvc2V7cmlnaHQ6NDBweH19LmZhbmN5Ym94X19jb250ZW50Pi5jYXJvdXNlbF9fYnV0dG9uLmlzLWNsb3Nle2NvbG9yOnZhcigtLWZhbmN5Ym94LWNvbG9yLCNmZmYpO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOi00MHB4fS5mYW5jeWJveF9fbm8tY2xpY2ssLmZhbmN5Ym94X19uby1jbGljayBidXR0b257cG9pbnRlci1ldmVudHM6bm9uZX0uZmFuY3lib3hfX3NwaW5uZXJ7Y29sb3I6dmFyKC0tZmFuY3lib3gtY29sb3IsY3VycmVudENvbG9yKTtoZWlnaHQ6NTBweDtsZWZ0OjUwJTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt3aWR0aDo1MHB4fS5mYW5jeWJveF9fc2xpZGUgLmZhbmN5Ym94X19zcGlubmVye2N1cnNvcjpwb2ludGVyO3otaW5kZXg6MTA1M30uZmFuY3lib3hfX3NwaW5uZXIgc3Zne2FuaW1hdGlvbjpmYW5jeWJveC1yb3RhdGUgMnMgbGluZWFyIGluZmluaXRlO2JvdHRvbTowO2hlaWdodDoxMDAlO2xlZnQ6MDttYXJnaW46YXV0bztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyIGNlbnRlcjt3aWR0aDoxMDAlfS5mYW5jeWJveF9fc3Bpbm5lciBzdmcgY2lyY2xle2ZpbGw6bm9uZTtzdHJva2Utd2lkdGg6Mi43NTtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5OjEsMjAwO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlOmN1cnJlbnRDb2xvcjthbmltYXRpb246ZmFuY3lib3gtZGFzaCAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlfUBrZXlmcmFtZXMgZmFuY3lib3gtcm90YXRle3Rve3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1Aa2V5ZnJhbWVzIGZhbmN5Ym94LWRhc2h7MCV7c3Ryb2tlLWRhc2hhcnJheToxLDIwMDtzdHJva2UtZGFzaG9mZnNldDowfTUwJXtzdHJva2UtZGFzaGFycmF5Ojg5LDIwMDtzdHJva2UtZGFzaG9mZnNldDotMzVweH10b3tzdHJva2UtZGFzaGFycmF5Ojg5LDIwMDtzdHJva2UtZGFzaG9mZnNldDotMTI0cHh9fS5jYXJvdXNlbF9fYnV0dG9uLmlzLWNsb3NlLC5jYXJvdXNlbF9fZG90cywuZmFuY3lib3hfX2JhY2tkcm9wLC5mYW5jeWJveF9fY2FwdGlvbiwuZmFuY3lib3hfX25hdntvcGFjaXR5OnZhcigtLWZhbmN5Ym94LW9wYWNpdHksMSl9LmZhbmN5Ym94X19jb250YWluZXIuaXMtYW5pbWF0ZWRbYXJpYS1oaWRkZW49ZmFsc2VdIC5jYXJvdXNlbF9fYnV0dG9uLmlzLWNsb3NlLC5mYW5jeWJveF9fY29udGFpbmVyLmlzLWFuaW1hdGVkW2FyaWEtaGlkZGVuPWZhbHNlXSAuY2Fyb3VzZWxfX2RvdHMsLmZhbmN5Ym94X19jb250YWluZXIuaXMtYW5pbWF0ZWRbYXJpYS1oaWRkZW49ZmFsc2VdIC5mYW5jeWJveF9fYmFja2Ryb3AsLmZhbmN5Ym94X19jb250YWluZXIuaXMtYW5pbWF0ZWRbYXJpYS1oaWRkZW49ZmFsc2VdIC5mYW5jeWJveF9fY2FwdGlvbiwuZmFuY3lib3hfX2NvbnRhaW5lci5pcy1hbmltYXRlZFthcmlhLWhpZGRlbj1mYWxzZV0gLmZhbmN5Ym94X19uYXZ7YW5pbWF0aW9uOmZhbmN5Ym94LWZhZGVJbiAuMTVzIGVhc2UgYmFja3dhcmRzfS5mYW5jeWJveF9fY29udGFpbmVyLmlzLWFuaW1hdGVkLmlzLWNsb3NpbmcgLmNhcm91c2VsX19idXR0b24uaXMtY2xvc2UsLmZhbmN5Ym94X19jb250YWluZXIuaXMtYW5pbWF0ZWQuaXMtY2xvc2luZyAuY2Fyb3VzZWxfX2RvdHMsLmZhbmN5Ym94X19jb250YWluZXIuaXMtYW5pbWF0ZWQuaXMtY2xvc2luZyAuZmFuY3lib3hfX2JhY2tkcm9wLC5mYW5jeWJveF9fY29udGFpbmVyLmlzLWFuaW1hdGVkLmlzLWNsb3NpbmcgLmZhbmN5Ym94X19jYXB0aW9uLC5mYW5jeWJveF9fY29udGFpbmVyLmlzLWFuaW1hdGVkLmlzLWNsb3NpbmcgLmZhbmN5Ym94X19uYXZ7YW5pbWF0aW9uOmZhbmN5Ym94LWZhZGVPdXQgLjE1cyBlYXNlIGJvdGh9LmZhbmN5Ym94LWZhZGVJbnthbmltYXRpb246ZmFuY3lib3gtZmFkZUluIC4xNXMgZWFzZSBib3RofS5mYW5jeWJveC1mYWRlT3V0e2FuaW1hdGlvbjpmYW5jeWJveC1mYWRlT3V0IC4xcyBlYXNlIGJvdGh9LmZhbmN5Ym94LXpvb21JblVwe2FuaW1hdGlvbjpmYW5jeWJveC16b29tSW5VcCAuMnMgZWFzZSBib3RofS5mYW5jeWJveC16b29tT3V0RG93bnthbmltYXRpb246ZmFuY3lib3gtem9vbU91dERvd24gLjE1cyBlYXNlIGJvdGh9LmZhbmN5Ym94LXRocm93T3V0VXB7YW5pbWF0aW9uOmZhbmN5Ym94LXRocm93T3V0VXAgLjE1cyBlYXNlIGJvdGh9LmZhbmN5Ym94LXRocm93T3V0RG93bnthbmltYXRpb246ZmFuY3lib3gtdGhyb3dPdXREb3duIC4xNXMgZWFzZSBib3RofUBrZXlmcmFtZXMgZmFuY3lib3gtZmFkZUluezAle29wYWNpdHk6MH10b3tvcGFjaXR5OjF9fUBrZXlmcmFtZXMgZmFuY3lib3gtZmFkZU91dHt0b3tvcGFjaXR5OjB9fUBrZXlmcmFtZXMgZmFuY3lib3gtem9vbUluVXB7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZSguOTcpIHRyYW5zbGF0ZTNkKDAsMTZweCwwKX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVooMCl9fUBrZXlmcmFtZXMgZmFuY3lib3gtem9vbU91dERvd257dG97b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZSguOTcpIHRyYW5zbGF0ZTNkKDAsMTZweCwwKX19QGtleWZyYW1lcyBmYW5jeWJveC10aHJvd091dFVwe3Rve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMzAlLDApfX1Aa2V5ZnJhbWVzIGZhbmN5Ym94LXRocm93T3V0RG93bnt0b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMzAlLDApfX0uZmFuY3lib3hfX2Nhcm91c2VsIC5jYXJvdXNlbF9fc2xpZGV7c2Nyb2xsYmFyLWNvbG9yOiNjY2MgaHNsYSgwLDAlLDEwMCUsLjEpO3Njcm9sbGJhci13aWR0aDp0aGlufS5mYW5jeWJveF9fY2Fyb3VzZWwgLmNhcm91c2VsX19zbGlkZTo6LXdlYmtpdC1zY3JvbGxiYXJ7aGVpZ2h0OjhweDt3aWR0aDo4cHh9LmZhbmN5Ym94X19jYXJvdXNlbCAuY2Fyb3VzZWxfX3NsaWRlOjotd2Via2l0LXNjcm9sbGJhci10cmFja3tiYWNrZ3JvdW5kLWNvbG9yOmhzbGEoMCwwJSwxMDAlLC4xKX0uZmFuY3lib3hfX2Nhcm91c2VsIC5jYXJvdXNlbF9fc2xpZGU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2NjYztib3JkZXItcmFkaXVzOjJweDtib3gtc2hhZG93Omluc2V0IDAgMCA0cHggcmdiYSgwLDAsMCwuMil9LmZhbmN5Ym94X19jYXJvdXNlbC5pcy1kcmFnZ2FibGUgLmZhbmN5Ym94X19zbGlkZSwuZmFuY3lib3hfX2Nhcm91c2VsLmlzLWRyYWdnYWJsZSAuZmFuY3lib3hfX3NsaWRlIC5mYW5jeWJveF9fY29udGVudHtjdXJzb3I6bW92ZTtjdXJzb3I6Z3JhYn0uZmFuY3lib3hfX2Nhcm91c2VsLmlzLWRyYWdnaW5nIC5mYW5jeWJveF9fc2xpZGUsLmZhbmN5Ym94X19jYXJvdXNlbC5pcy1kcmFnZ2luZyAuZmFuY3lib3hfX3NsaWRlIC5mYW5jeWJveF9fY29udGVudHtjdXJzb3I6bW92ZTtjdXJzb3I6Z3JhYmJpbmd9LmZhbmN5Ym94X19jYXJvdXNlbCAuZmFuY3lib3hfX3NsaWRlIC5mYW5jeWJveF9fY29udGVudHtjdXJzb3I6YXV0b30uZmFuY3lib3hfX2Nhcm91c2VsIC5mYW5jeWJveF9fc2xpZGUuY2FuLXpvb21faW4gLmZhbmN5Ym94X19jb250ZW50e2N1cnNvcjp6b29tLWlufS5mYW5jeWJveF9fY2Fyb3VzZWwgLmZhbmN5Ym94X19zbGlkZS5jYW4tem9vbV9vdXQgLmZhbmN5Ym94X19jb250ZW50e2N1cnNvcjp6b29tLW91dH0uZmFuY3lib3hfX2Nhcm91c2VsIC5mYW5jeWJveF9fc2xpZGUuaXMtZHJhZ2dhYmxlIC5mYW5jeWJveF9fY29udGVudHtjdXJzb3I6bW92ZTtjdXJzb3I6Z3JhYn0uZmFuY3lib3hfX2Nhcm91c2VsIC5mYW5jeWJveF9fc2xpZGUuaXMtZHJhZ2dpbmcgLmZhbmN5Ym94X19jb250ZW50e2N1cnNvcjptb3ZlO2N1cnNvcjpncmFiYmluZ30uZmFuY3lib3hfX2ltYWdle3RyYW5zZm9ybS1vcmlnaW46MCAwO3RyYW5zaXRpb246bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9Lmhhcy1pbWFnZSAuZmFuY3lib3hfX2NvbnRlbnR7YmFja2dyb3VuZDp0cmFuc3BhcmVudDttaW4taGVpZ2h0OjFweDtwYWRkaW5nOjB9LmlzLWNsb3NpbmcgLmhhcy1pbWFnZSAuZmFuY3lib3hfX2NvbnRlbnR7b3ZlcmZsb3c6dmlzaWJsZX0uaGFzLWltYWdlW2RhdGEtaW1hZ2UtZml0PWNvbnRhaW5de292ZXJmbG93OnZpc2libGU7dG91Y2gtYWN0aW9uOm5vbmV9Lmhhcy1pbWFnZVtkYXRhLWltYWdlLWZpdD1jb250YWluXSAuZmFuY3lib3hfX2NvbnRlbnR7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwfS5oYXMtaW1hZ2VbZGF0YS1pbWFnZS1maXQ9Y29udGFpbl0gLmZhbmN5Ym94X19pbWFnZXttYXgtaGVpZ2h0OjEwMCU7bWF4LXdpZHRoOjEwMCU7LW8tb2JqZWN0LWZpdDpjb250YWluO29iamVjdC1maXQ6Y29udGFpbn0uaGFzLWltYWdlW2RhdGEtaW1hZ2UtZml0PWNvbnRhaW4td117b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvfS5oYXMtaW1hZ2VbZGF0YS1pbWFnZS1maXQ9Y29udGFpbi13XSAuZmFuY3lib3hfX2NvbnRlbnR7bWluLWhlaWdodDphdXRvfS5oYXMtaW1hZ2VbZGF0YS1pbWFnZS1maXQ9Y29udGFpbi13XSAuZmFuY3lib3hfX2ltYWdle2hlaWdodDphdXRvO21heC13aWR0aDoxMDAlfS5oYXMtaW1hZ2VbZGF0YS1pbWFnZS1maXQ9Y292ZXJde292ZXJmbG93OnZpc2libGU7dG91Y2gtYWN0aW9uOm5vbmV9Lmhhcy1pbWFnZVtkYXRhLWltYWdlLWZpdD1jb3Zlcl0gLmZhbmN5Ym94X19jb250ZW50e2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9Lmhhcy1pbWFnZVtkYXRhLWltYWdlLWZpdD1jb3Zlcl0gLmZhbmN5Ym94X19pbWFnZXtoZWlnaHQ6MTAwJTstby1vYmplY3QtZml0OmNvdmVyO29iamVjdC1maXQ6Y292ZXI7d2lkdGg6MTAwJX0uZmFuY3lib3hfX2Nhcm91c2VsIC5mYW5jeWJveF9fc2xpZGUuaGFzLWh0bWw1dmlkZW8gLmZhbmN5Ym94X19jb250ZW50LC5mYW5jeWJveF9fY2Fyb3VzZWwgLmZhbmN5Ym94X19zbGlkZS5oYXMtaWZyYW1lIC5mYW5jeWJveF9fY29udGVudCwuZmFuY3lib3hfX2Nhcm91c2VsIC5mYW5jeWJveF9fc2xpZGUuaGFzLW1hcCAuZmFuY3lib3hfX2NvbnRlbnQsLmZhbmN5Ym94X19jYXJvdXNlbCAuZmFuY3lib3hfX3NsaWRlLmhhcy1wZGYgLmZhbmN5Ym94X19jb250ZW50LC5mYW5jeWJveF9fY2Fyb3VzZWwgLmZhbmN5Ym94X19zbGlkZS5oYXMtdmlkZW8gLmZhbmN5Ym94X19jb250ZW50e2ZsZXgtc2hyaW5rOjE7bWF4LXdpZHRoOjEwMCU7bWluLWhlaWdodDoxcHg7b3ZlcmZsb3c6dmlzaWJsZX0uZmFuY3lib3hfX2Nhcm91c2VsIC5mYW5jeWJveF9fc2xpZGUuaGFzLWlmcmFtZSAuZmFuY3lib3hfX2NvbnRlbnQsLmZhbmN5Ym94X19jYXJvdXNlbCAuZmFuY3lib3hfX3NsaWRlLmhhcy1tYXAgLmZhbmN5Ym94X19jb250ZW50LC5mYW5jeWJveF9fY2Fyb3VzZWwgLmZhbmN5Ym94X19zbGlkZS5oYXMtcGRmIC5mYW5jeWJveF9fY29udGVudHtoZWlnaHQ6ODAlO3dpZHRoOjEwMCV9LmZhbmN5Ym94X19jYXJvdXNlbCAuZmFuY3lib3hfX3NsaWRlLmhhcy1odG1sNXZpZGVvIC5mYW5jeWJveF9fY29udGVudCwuZmFuY3lib3hfX2Nhcm91c2VsIC5mYW5jeWJveF9fc2xpZGUuaGFzLXZpZGVvIC5mYW5jeWJveF9fY29udGVudHtoZWlnaHQ6NTQwcHg7bWF4LWhlaWdodDoxMDAlO21heC13aWR0aDoxMDAlO3dpZHRoOjk2MHB4fS5mYW5jeWJveF9fY2Fyb3VzZWwgLmZhbmN5Ym94X19zbGlkZS5oYXMtaHRtbDV2aWRlbyAuZmFuY3lib3hfX2NvbnRlbnQsLmZhbmN5Ym94X19jYXJvdXNlbCAuZmFuY3lib3hfX3NsaWRlLmhhcy1tYXAgLmZhbmN5Ym94X19jb250ZW50LC5mYW5jeWJveF9fY2Fyb3VzZWwgLmZhbmN5Ym94X19zbGlkZS5oYXMtcGRmIC5mYW5jeWJveF9fY29udGVudCwuZmFuY3lib3hfX2Nhcm91c2VsIC5mYW5jeWJveF9fc2xpZGUuaGFzLXZpZGVvIC5mYW5jeWJveF9fY29udGVudHtiYWNrZ3JvdW5kOnJnYmEoMjQsMjQsMjcsLjkpO2NvbG9yOiNmZmY7cGFkZGluZzowfS5mYW5jeWJveF9fY2Fyb3VzZWwgLmZhbmN5Ym94X19zbGlkZS5oYXMtbWFwIC5mYW5jeWJveF9fY29udGVudHtiYWNrZ3JvdW5kOiNlNWUzZGZ9LmZhbmN5Ym94X19odG1sNXZpZGVvLC5mYW5jeWJveF9faWZyYW1le2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5mYW5jeWJveC1wbGFjZWhvbGRlcntjbGlwOnJlY3QoMCwwLDAsMCk7Ym9yZGVyLXdpZHRoOjA7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxcHh9LmZhbmN5Ym94X190aHVtYnN7ZmxleDowIDAgYXV0bztvcGFjaXR5OnZhcigtLWZhbmN5Ym94LW9wYWNpdHksMSk7cGFkZGluZzowIDNweDtwb3NpdGlvbjpyZWxhdGl2ZX0uZmFuY3lib3hfX2NvbnRhaW5lci5pcy1hbmltYXRlZFthcmlhLWhpZGRlbj1mYWxzZV0gLmZhbmN5Ym94X190aHVtYnN7YW5pbWF0aW9uOmZhbmN5Ym94LWZhZGVJbiAuMTVzIGVhc2UtaW4gYmFja3dhcmRzfS5mYW5jeWJveF9fY29udGFpbmVyLmlzLWFuaW1hdGVkLmlzLWNsb3NpbmcgLmZhbmN5Ym94X190aHVtYnN7b3BhY2l0eTowfS5mYW5jeWJveF9fdGh1bWJzIC5jYXJvdXNlbF9fc2xpZGV7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Y29udGVudC1ib3g7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG87anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46MDtvdmVyZmxvdzp2aXNpYmxlO3BhZGRpbmc6OHB4IDNweDt3aWR0aDp2YXIoLS1mYW5jeWJveC10aHVtYnMtd2lkdGgsOTZweCl9LmZhbmN5Ym94X190aHVtYnMgLmNhcm91c2VsX19zbGlkZSAuZmFuY3lib3hfX3RodW1iOmFmdGVye2JvcmRlci1jb2xvcjp2YXIoLS1mYW5jeWJveC1hY2NlbnQtY29sb3IscmdiYSgzNCwyMTMsMjMzLC45NikpO2JvcmRlci1yYWRpdXM6dmFyKC0tZmFuY3lib3gtdGh1bWJzLWJvcmRlci1yYWRpdXMsNHB4KTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjVweDtib3R0b206MDtjb250ZW50OiIiO2xlZnQ6MDtvcGFjaXR5OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyBlYXNlfS5mYW5jeWJveF9fdGh1bWJzIC5jYXJvdXNlbF9fc2xpZGUuaXMtbmF2LXNlbGVjdGVkIC5mYW5jeWJveF9fdGh1bWI6YWZ0ZXJ7b3BhY2l0eTouOTJ9LmZhbmN5Ym94X190aHVtYnMgLmNhcm91c2VsX19zbGlkZT4qe3BvaW50ZXItZXZlbnRzOm5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5mYW5jeWJveF9fdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjpoc2xhKDAsMCUsMTAwJSwuMSk7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb3Zlcjtib3JkZXItcmFkaXVzOnZhcigtLWZhbmN5Ym94LXRodW1icy1ib3JkZXItcmFkaXVzLDRweCk7cGFkZGluZy10b3A6Y2FsYygxMDAlLyh2YXIoLS1mYW5jeWJveC10aHVtYnMtcmF0aW8sIDEuNSkpKTtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5mYW5jeWJveF9fdG9vbGJhcnstLWNhcm91c2VsLWJ1dHRvbi1zdmctd2lkdGg6MjBweDstLWNhcm91c2VsLWJ1dHRvbi1zdmctaGVpZ2h0OjIwcHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMGRlZyx0cmFuc3BhcmVudCAwLHJnYmEoMCwwLDAsLjAwNikgOC4xJSxyZ2JhKDAsMCwwLC4wMjEpIDE1LjUlLHJnYmEoMCwwLDAsLjA0NikgMjIuNSUscmdiYSgwLDAsMCwuMDc3KSAyOSUscmdiYSgwLDAsMCwuMTE0KSAzNS4zJSxyZ2JhKDAsMCwwLC4xNTUpIDQxLjIlLHJnYmEoMCwwLDAsLjE5OCkgNDcuMSUscmdiYSgwLDAsMCwuMjQyKSA1Mi45JSxyZ2JhKDAsMCwwLC4yODUpIDU4LjglLHJnYmEoMCwwLDAsLjMyNikgNjQuNyUscmdiYSgwLDAsMCwuMzYzKSA3MSUscmdiYSgwLDAsMCwuMzk0KSA3Ny41JSxyZ2JhKDAsMCwwLC40MTkpIDg0LjUlLHJnYmEoMCwwLDAsLjQzNCkgOTEuOSUscmdiYSgwLDAsMCwuNDQpKTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bGVmdDowO29wYWNpdHk6dmFyKC0tZmFuY3lib3gtb3BhY2l0eSwxKTtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0ZXh0LXNoYWRvdzp2YXIoLS1mYW5jeWJveC10b29sYmFyLXRleHQtc2hhZG93LDFweCAxcHggMXB4IHJnYmEoMCwwLDAsLjQpKTt0b3A6MDt0b3VjaC1hY3Rpb246bm9uZTt6LWluZGV4OjIwfUBtZWRpYSAobWluLXdpZHRoOjEwMjRweCl7LmZhbmN5Ym94X190b29sYmFye3BhZGRpbmc6OHB4fX0uZmFuY3lib3hfX2NvbnRhaW5lci5pcy1hbmltYXRlZFthcmlhLWhpZGRlbj1mYWxzZV0gLmZhbmN5Ym94X190b29sYmFye2FuaW1hdGlvbjpmYW5jeWJveC1mYWRlSW4gLjE1cyBlYXNlLWluIGJhY2t3YXJkc30uZmFuY3lib3hfX2NvbnRhaW5lci5pcy1hbmltYXRlZC5pcy1jbG9zaW5nIC5mYW5jeWJveF9fdG9vbGJhcntvcGFjaXR5OjB9LmZhbmN5Ym94X190b29sYmFyX19pdGVtc3tkaXNwbGF5OmZsZXh9LmZhbmN5Ym94X190b29sYmFyX19pdGVtcy0tbGVmdHttYXJnaW4tcmlnaHQ6YXV0b30uZmFuY3lib3hfX3Rvb2xiYXJfX2l0ZW1zLS1jZW50ZXJ7bGVmdDo1MCU7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSl9LmZhbmN5Ym94X190b29sYmFyX19pdGVtcy0tcmlnaHR7bWFyZ2luLWxlZnQ6YXV0b31AbWVkaWEgKG1heC13aWR0aDo2NDBweCl7LmZhbmN5Ym94X190b29sYmFyX19pdGVtcy0tY2VudGVyOm5vdCg6bGFzdC1jaGlsZCl7ZGlzcGxheTpub25lfX0uZmFuY3lib3hfX2NvdW50ZXJ7LXdlYmtpdC1mb250LXNtb290aGluZzpzdWJwaXhlbC1hbnRpYWxpYXNlZDtmb250LXNpemU6MTdweDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7bGluZS1oZWlnaHQ6dmFyKC0tY2Fyb3VzZWwtYnV0dG9uLWhlaWdodCw0OHB4KTttaW4td2lkdGg6NzJweDtwYWRkaW5nOjAgMTBweDt0ZXh0LWFsaWduOmNlbnRlcn0uZmFuY3lib3hfX3Byb2dyZXNze2JhY2tncm91bmQ6dmFyKC0tZmFuY3lib3gtYWNjZW50LWNvbG9yLHJnYmEoMzQsMjEzLDIzMywuOTYpKTtoZWlnaHQ6M3B4O2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3RyYW5zZm9ybTpzY2FsZVgoMCk7dHJhbnNmb3JtLW9yaWdpbjowO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7ei1pbmRleDozMH0uZmFuY3lib3hfX2NvbnRhaW5lcjotd2Via2l0LWZ1bGwtc2NyZWVuOjpiYWNrZHJvcHtvcGFjaXR5OjB9LmZhbmN5Ym94X19jb250YWluZXI6ZnVsbHNjcmVlbjo6YmFja2Ryb3B7b3BhY2l0eTowfS5mYW5jeWJveF9fYnV0dG9uLS1mdWxsc2NyZWVuIGc6bnRoLWNoaWxkKDIpe2Rpc3BsYXk6bm9uZX0uZmFuY3lib3hfX2NvbnRhaW5lcjotd2Via2l0LWZ1bGwtc2NyZWVuIC5mYW5jeWJveF9fYnV0dG9uLS1mdWxsc2NyZWVuIGc6Zmlyc3QtY2hpbGR7ZGlzcGxheTpub25lfS5mYW5jeWJveF9fY29udGFpbmVyOmZ1bGxzY3JlZW4gLmZhbmN5Ym94X19idXR0b24tLWZ1bGxzY3JlZW4gZzpmaXJzdC1jaGlsZHtkaXNwbGF5Om5vbmV9LmZhbmN5Ym94X19jb250YWluZXI6LXdlYmtpdC1mdWxsLXNjcmVlbiAuZmFuY3lib3hfX2J1dHRvbi0tZnVsbHNjcmVlbiBnOm50aC1jaGlsZCgyKXtkaXNwbGF5OmJsb2NrfS5mYW5jeWJveF9fY29udGFpbmVyOmZ1bGxzY3JlZW4gLmZhbmN5Ym94X19idXR0b24tLWZ1bGxzY3JlZW4gZzpudGgtY2hpbGQoMil7ZGlzcGxheTpibG9ja30uZmFuY3lib3hfX2J1dHRvbi0tc2xpZGVzaG93IGc6bnRoLWNoaWxkKDIpLC5mYW5jeWJveF9fY29udGFpbmVyLmhhcy1zbGlkZXNob3cgLmZhbmN5Ym94X19idXR0b24tLXNsaWRlc2hvdyBnOmZpcnN0LWNoaWxke2Rpc3BsYXk6bm9uZX0uZmFuY3lib3hfX2NvbnRhaW5lci5oYXMtc2xpZGVzaG93IC5mYW5jeWJveF9fYnV0dG9uLS1zbGlkZXNob3cgZzpudGgtY2hpbGQoMil7ZGlzcGxheTpibG9ja31Aa2V5ZnJhbWVzIG5vdHlmLWZhZGVpbnVwezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgyNSUpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX19QGtleWZyYW1lcyBub3R5Zi1mYWRlaW5sZWZ0ezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgyNSUpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QGtleWZyYW1lcyBub3R5Zi1mYWRlb3V0cmlnaHR7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgyNSUpfX1Aa2V5ZnJhbWVzIG5vdHlmLWZhZGVvdXRkb3duezAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMjUlKX19QGtleWZyYW1lcyByaXBwbGV7MCV7dHJhbnNmb3JtOnNjYWxlKDApIHRyYW5zbGF0ZVkoLTQ1JSkgdHJhbnNsYXRlWCgxMyUpfXRve3RyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKC00NSUpIHRyYW5zbGF0ZVgoMTMlKX19Lm5vdHlme2FsaWduLWl0ZW1zOmZsZXgtZW5kO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZmZmO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCU7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO2xlZnQ6MDtwYWRkaW5nOjIwcHg7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjpmaXhlZDt0b3A6MDt3aWR0aDoxMDAlO3otaW5kZXg6OTk5OX0ubm90eWZfX2ljb24tLWVycm9yLC5ub3R5Zl9faWNvbi0tc3VjY2Vzc3tiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo1MCU7ZGlzcGxheTpibG9jaztoZWlnaHQ6MjFweDttYXJnaW46MCBhdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjIxcHh9Lm5vdHlmX19pY29uLS1lcnJvcjphZnRlciwubm90eWZfX2ljb24tLWVycm9yOmJlZm9yZXtiYWNrZ3JvdW5kOmN1cnJlbnRDb2xvcjtib3JkZXItcmFkaXVzOjNweDtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEycHg7bGVmdDo5cHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjVweDt3aWR0aDozcHh9Lm5vdHlmX19pY29uLS1lcnJvcjphZnRlcnt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9Lm5vdHlmX19pY29uLS1lcnJvcjpiZWZvcmV7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9Lm5vdHlmX19pY29uLS1zdWNjZXNzOmFmdGVyLC5ub3R5Zl9faWNvbi0tc3VjY2VzczpiZWZvcmV7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7Ym9yZGVyLXJhZGl1czozcHg7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjNweH0ubm90eWZfX2ljb24tLXN1Y2Nlc3M6YWZ0ZXJ7aGVpZ2h0OjZweDtsZWZ0OjZweDt0b3A6OXB4O3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0ubm90eWZfX2ljb24tLXN1Y2Nlc3M6YmVmb3Jle2hlaWdodDoxMXB4O2xlZnQ6MTBweDt0b3A6NXB4O3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5ub3R5Zl9fdG9hc3R7YW5pbWF0aW9uOm5vdHlmLWZhZGVpbnVwIC4zcyBlYXNlLWluIGZvcndhcmRzO2JvcmRlci1yYWRpdXM6MnB4O2JveC1zaGFkb3c6MCAzcHggN3B4IDAgcmdiYSgwLDAsMCwuMjUpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO2ZsZXgtc2hyaW5rOjA7bWF4LXdpZHRoOjMwMHB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjAgMTVweDtwb2ludGVyLWV2ZW50czphdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDI1JSl9Lm5vdHlmX190b2FzdC0tZGlzYXBwZWFye2FuaW1hdGlvbjpub3R5Zi1mYWRlb3V0ZG93biAuM3MgZm9yd2FyZHM7YW5pbWF0aW9uLWRlbGF5Oi4yNXM7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9Lm5vdHlmX190b2FzdC0tZGlzYXBwZWFyIC5ub3R5Zl9faWNvbiwubm90eWZfX3RvYXN0LS1kaXNhcHBlYXIgLm5vdHlmX19tZXNzYWdle2FuaW1hdGlvbjpub3R5Zi1mYWRlb3V0ZG93biAuM3MgZm9yd2FyZHM7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfS5ub3R5Zl9fdG9hc3QtLWRpc2FwcGVhciAubm90eWZfX2Rpc21pc3N7YW5pbWF0aW9uOm5vdHlmLWZhZGVvdXRyaWdodCAuM3MgZm9yd2FyZHM7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfS5ub3R5Zl9fdG9hc3QtLWRpc2FwcGVhciAubm90eWZfX21lc3NhZ2V7YW5pbWF0aW9uLWRlbGF5Oi4wNXN9Lm5vdHlmX190b2FzdC0tdXBwZXJ7bWFyZ2luLWJvdHRvbToyMHB4fS5ub3R5Zl9fdG9hc3QtLWxvd2Vye21hcmdpbi10b3A6MjBweH0ubm90eWZfX3RvYXN0LS1kaXNtaXNzaWJsZSAubm90eWZfX3dyYXBwZXJ7cGFkZGluZy1yaWdodDozMHB4fS5ub3R5Zl9fcmlwcGxle2FuaW1hdGlvbjpyaXBwbGUgLjRzIGVhc2Utb3V0IGZvcndhcmRzO2JvcmRlci1yYWRpdXM6NTAlO2hlaWdodDo0MDBweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3RyYW5zZm9ybTpzY2FsZSgwKSB0cmFuc2xhdGVZKC01MSUpIHRyYW5zbGF0ZVgoMTMlKTt0cmFuc2Zvcm0tb3JpZ2luOmJvdHRvbSByaWdodDt3aWR0aDo0MDBweDt6LWluZGV4OjV9Lm5vdHlmX193cmFwcGVye2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXItcmFkaXVzOjNweDtkaXNwbGF5OmZsZXg7cGFkZGluZy1ib3R0b206MTdweDtwYWRkaW5nLXJpZ2h0OjE1cHg7cGFkZGluZy10b3A6MTdweDtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjEwfS5ub3R5Zl9faWNvbnthbmltYXRpb246bm90eWYtZmFkZWludXAgLjNzIGZvcndhcmRzO2FuaW1hdGlvbi1kZWxheTouM3M7Zm9udC1zaXplOjEuM2VtO21hcmdpbi1yaWdodDoxM3B4O29wYWNpdHk6MDt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoyMnB4fS5ub3R5Zl9fZGlzbWlzc3thbmltYXRpb246bm90eWYtZmFkZWlubGVmdCAuM3MgZm9yd2FyZHM7YW5pbWF0aW9uLWRlbGF5Oi4zNXM7aGVpZ2h0OjEwMCU7bWFyZ2luLXJpZ2h0Oi0xNXB4O29wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3dpZHRoOjI2cHh9Lm5vdHlmX19kaXNtaXNzLWJ0bntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI1KTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MTAwJTtvcGFjaXR5Oi4zNTtvdXRsaW5lOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlLGJhY2tncm91bmQtY29sb3IgLjJzIGVhc2U7d2lkdGg6MTAwJX0ubm90eWZfX2Rpc21pc3MtYnRuOmFmdGVyLC5ub3R5Zl9fZGlzbWlzcy1idG46YmVmb3Jle2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjNweDtjb250ZW50OiIiO2hlaWdodDoxMnB4O2xlZnQ6Y2FsYyg1MCUgLSAxcHgpO3Bvc2l0aW9uOmFic29sdXRlO3RvcDpjYWxjKDUwJSAtIDVweCk7d2lkdGg6MnB4fS5ub3R5Zl9fZGlzbWlzcy1idG46YWZ0ZXJ7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfS5ub3R5Zl9fZGlzbWlzcy1idG46YmVmb3Jle3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5ub3R5Zl9fZGlzbWlzcy1idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xNSk7b3BhY2l0eTouN30ubm90eWZfX2Rpc21pc3MtYnRuOmFjdGl2ZXtvcGFjaXR5Oi44fS5ub3R5Zl9fbWVzc2FnZXthbmltYXRpb246bm90eWYtZmFkZWludXAgLjNzIGZvcndhcmRzO2FuaW1hdGlvbi1kZWxheTouMjVzO2xpbmUtaGVpZ2h0OjEuNWVtO29wYWNpdHk6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsubm90eWZ7cGFkZGluZzowfS5ub3R5Zl9fcmlwcGxle2FuaW1hdGlvbi1kdXJhdGlvbjouNXM7aGVpZ2h0OjYwMHB4O3dpZHRoOjYwMHB4fS5ub3R5Zl9fdG9hc3R7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6MCAtMnB4IDdweCAwIHJnYmEoMCwwLDAsLjEzKTttYXgtd2lkdGg6bm9uZTt3aWR0aDoxMDAlfS5ub3R5Zl9fZGlzbWlzc3t3aWR0aDo1NnB4fX0ucGFnZS0tNDA0IC5oZWFkZXJfX2xvZ28sLnBhZ2UtLWVjb3N5c3RlbSAuaGVhZGVyX19sb2dvLC5wYWdlLS1sZXZlbHMgLmhlYWRlcl9fbG9nbywucGFnZS0tbmZ0IC5oZWFkZXJfX2xvZ28sLnBhZ2UtLXJld2FyZHMgLmhlYWRlcl9fbG9nbywucGFnZS0tdG9rZW4gLmhlYWRlcl9fbG9nb3tmaWx0ZXI6YnJpZ2h0bmVzcygwKSBpbnZlcnQoMSl9LnBhZ2UtLTQwNCAuaGVhZGVyX19pbm5lciwucGFnZS0tZWNvc3lzdGVtIC5oZWFkZXJfX2lubmVyLC5wYWdlLS1sZXZlbHMgLmhlYWRlcl9faW5uZXIsLnBhZ2UtLW5mdCAuaGVhZGVyX19pbm5lciwucGFnZS0tcmV3YXJkcyAuaGVhZGVyX19pbm5lciwucGFnZS0tdG9rZW4gLmhlYWRlcl9faW5uZXJ7LS1oZWFkZXItaG92ZXItY29sb3I6cmdiKHZhcigtLWNvbG9yLWxpZ2h0LWhhcmQpLzEpO2NvbG9yOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvMSl9LnBhZ2UtLXRva2Vue2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLWRhcmspLzEpfS5wYWdlLS1ibG9ne2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE3NGRlZyxyZ2JhKDYzLDU5LDI1NSwuMjUpIDQlLHJnYmEoOSwxOTAsMTM5LC4yNSkgOTYlKX0ucGFnZS0tNDA0IC5tYWlue2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE2M2RlZywjM2YzYmZmIDE5JSwjMDliZThiIDgxJSl9LndyYXBwZXJ7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7Z3JpZC10ZW1wbGF0ZS1yb3dzOmF1dG8gMWZyIGF1dG87bWluLWhlaWdodDoxMDB2aH0ud3JhcHBlci5oYXMtdG9wLWJucntncmlkLXRlbXBsYXRlLXJvd3M6YXV0byBhdXRvIDFmciBhdXRvfS53cmFwcGVyPi5oZWFkZXJ7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLWhlYWRlci1oZWlnaHQpKi0xKX0ubWFpbnttaW4td2lkdGg6MDtvdmVyZmxvdzpoaWRkZW59Lm1haW4+c2VjdGlvbjpmaXJzdC1vZi10eXBlOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OnZhcigtLWhlYWRlci1oZWlnaHQpO3BvaW50ZXItZXZlbnRzOm5vbmU7d2lkdGg6MTAwJX0uY29udGFpbmVye21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87bWF4LXdpZHRoOnZhcigtLWNvbnRhaW5lci1tYXgtd2lkdGgpO3BhZGRpbmctbGVmdDp2YXIoLS1jb250YWluZXItcGFkZGluZyk7cGFkZGluZy1yaWdodDp2YXIoLS1jb250YWluZXItcGFkZGluZyl9QG1lZGlhIChtYXgtd2lkdGg6NzU5cHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjU3NnB4fX0uc2VjdGlvbntwb3NpdGlvbjpyZWxhdGl2ZX0uc2VjdGlvbi0teHN7cGFkZGluZzpjYWxjKDEzLjMzMzMzcHggKyA0LjYyOTYzdncpIDB9LnNlY3Rpb24tLXNte3BhZGRpbmc6Y2FsYygxNnB4ICsgNS41NTU1NnZ3KSAwfS5zZWN0aW9uLS1tZHtwYWRkaW5nOmNhbGMoMjYuNjY2NjdweCArIDYuNDgxNDh2dykgMH0uc2VjdGlvbi0tbGd7cGFkZGluZzpjYWxjKDI2LjY2NjY3cHggKyAzLjI1OTI2dncpIDB9LnNlY3Rpb24tLW11dGVke2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLWxpZ2h0KS8xKX0uc2VjdGlvbi0tZGFya3stLXRleHQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS8xKTtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1kYXJrKS8xKTtjb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzEpfS5pY29ue2ZpbGw6Y3VycmVudENvbG9yO2Rpc3BsYXk6YmxvY2s7ZmxleC1zaHJpbms6MDtoZWlnaHQ6MWVtO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNmb3JtOnNjYWxlKDEpO3dpZHRoOjFlbX0uaWNvbi1yYWlzZWR7YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtkaXNwbGF5OmlubGluZS1mbGV4O2ZsZXgtc2hyaW5rOjA7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uaWNvbi1yYWlzZWQgLmljb257ZmlsdGVyOmRyb3Atc2hhZG93KDAgMnB4IDFweCByZ2JhKDAsMCwwLC4xNikpfS5pY29uLXJhaXNlZC0tcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xKTtib3gtc2hhZG93OnZhcigtLWdsb3ctcHJpbWFyeS1sb3cpfS5pY29uLXJhaXNlZC0tcHJpbWFyeSAuaWNvbntmaWxsOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvMSl9Lmljb24tcmFpc2VkLS1zZWNvbmRhcnl7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KS8xKTtib3gtc2hhZG93OnZhcigtLWdsb3ctc2Vjb25kYXJ5LWxvdyl9Lmljb24tcmFpc2VkLS1zZWNvbmRhcnkgLmljb257ZmlsbDpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzEpfS5pY29uLXJhaXNlZC0td2hpdGV7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzEpO2JveC1zaGFkb3c6MCAxNHB4IDI4cHggMCByZ2JhKDE0MCwxNDUsMTY0LC4xNil9Lmljb24tcmFpc2VkLS13aGl0ZSAuaWNvbntmaWxsOnJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnkpLzEpfS5pY29uLXJhaXNlZC0tZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLWRhbmdlcikvMSk7Ym94LXNoYWRvdzowIDE0cHggMjhweCAwIHJnYmEoMTQwLDE0NSwxNjQsLjE2KX0uaWNvbi1yYWlzZWQtLWRhbmdlciAuaWNvbntmaWxsOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvMSl9Lmljb24tcmFpc2VkLS1saWdodHtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1saWdodCkvMSk7Ym94LXNoYWRvdzowIDE0cHggMjhweCAwIHJnYmEoMTQwLDE0NSwxNjQsLjE2KX0uaWNvbi1yYWlzZWQtLWxpZ2h0IC5pY29ue2ZpbGw6cmdiKHZhcigtLWNvbG9yLXByaW1hcnkpLzEpfS5pY29uLXJhaXNlZC0tZ3JheS1kYXJre2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLWdyYXktZGFyaykvMSk7Ym94LXNoYWRvdzowIDE0cHggMjhweCAwIHJnYmEoMTQwLDE0NSwxNjQsLjE2KX0uaWNvbi1yYWlzZWQtLWdyYXktZGFyayAuaWNvbntmaWxsOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvMSl9Lmljb24tcmFpc2VkLS14c3tib3JkZXItYm90dG9tOjNweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItZGFyaykvMjAlKTtib3JkZXItcmFkaXVzOjZweDtoZWlnaHQ6MzJweDt3aWR0aDozMnB4fS5pY29uLXJhaXNlZC0teHMgLmljb257aGVpZ2h0OjE2cHg7d2lkdGg6MTZweH0uaWNvbi1yYWlzZWQtLXNte2JvcmRlci1ib3R0b206M3B4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1kYXJrKS8yMCUpO2hlaWdodDo0MHB4O3dpZHRoOjQwcHh9Lmljb24tcmFpc2VkLS1zbSAuaWNvbntoZWlnaHQ6MjBweDt3aWR0aDoyMHB4fS5pY29uLXJhaXNlZC0tbWR7Ym9yZGVyLWJvdHRvbTo0cHggc29saWQgcmdiKHZhcigtLWNvbG9yLWRhcmspLzIwJSk7aGVpZ2h0OjQ4cHg7d2lkdGg6NDhweH0uaWNvbi1yYWlzZWQtLW1kIC5pY29ue2hlaWdodDoyNHB4O3dpZHRoOjI0cHh9Lmxpbmt7Y29sb3I6cmdiKHZhcigtLWNvbG9yLWdyYXktZGFyaykvMSk7ZGlzcGxheTppbmxpbmUtZmxleH1AbWVkaWEgKGhvdmVyOmhvdmVyKXsubGluazpob3Zlcntjb2xvcjpyZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkvMSl9fS5saW5rIC5pY29ue2hlaWdodDoyNHB4O21hcmdpbi1yaWdodDoxNnB4O3dpZHRoOjI0cHh9LmJ0bnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtmb250LXdlaWdodDo5MDA7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bWF4LXdpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tcHJvcGVydHk6YmFja2dyb3VuZC1jb2xvcixib3gtc2hhZG93LGNvbG9yO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpO3doaXRlLXNwYWNlOm5vd3JhcH0uYnRuLS1wcmltYXJ5Om5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xKTtib3gtc2hhZG93OnZhcigtLWdsb3ctcHJpbWFyeS1sb3cpO2NvbG9yOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvMSl9QG1lZGlhIChob3Zlcjpob3Zlcil7LmJ0bi0tcHJpbWFyeTpub3QoW2Rpc2FibGVkXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItcHJpbWFyeS1zb2Z0KS8xKTtib3gtc2hhZG93OnZhcigtLWdsb3ctcHJpbWFyeS1oaWdoKX19LmJ0bi0tcHJpbWFyeTpub3QoW2Rpc2FibGVkXSk6YWN0aXZle2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXByaW1hcnktaGFyZCkvMSk7Ym94LXNoYWRvdzpub25lfS5idG4tLXNlY29uZGFyeTpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KS8xKTtib3gtc2hhZG93OnZhcigtLWdsb3ctc2Vjb25kYXJ5LWxvdyk7Y29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS8xKX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuYnRuLS1zZWNvbmRhcnk6bm90KFtkaXNhYmxlZF0pOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeS1zb2Z0KS8xKTtib3gtc2hhZG93OnZhcigtLWdsb3ctc2Vjb25kYXJ5LWhpZ2gpfX0uYnRuLS1zZWNvbmRhcnk6bm90KFtkaXNhYmxlZF0pOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnktaGFyZCkvMSk7Ym94LXNoYWRvdzpub25lfS5idG4tLWRhbmdlcjpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFuZ2VyKS8xKTtjb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzEpfUBtZWRpYSAoaG92ZXI6aG92ZXIpey5idG4tLWRhbmdlcjpub3QoW2Rpc2FibGVkXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFuZ2VyLXNvZnQpLzEpfX0uYnRuLS1kYW5nZXI6bm90KFtkaXNhYmxlZF0pOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1kYW5nZXItaGFyZCkvMSl9LmJ0bi0tcmFpc2Vke2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzowIWltcG9ydGFudH0uYnRuLS1yYWlzZWQgLmljb257ZmlsdGVyOmRyb3Atc2hhZG93KDAgMnB4IDFweCByZ2JhKDAsMCwwLC4xNikpO21hcmdpbjowIWltcG9ydGFudH0uYnRuLS1yYWlzZWQuYnRuLS1wcmltYXJ5Om5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xKTtib3gtc2hhZG93OnZhcigtLWdsb3ctcHJpbWFyeS1sb3cpO2NvbG9yOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvMSl9QG1lZGlhIChob3Zlcjpob3Zlcil7LmJ0bi0tcmFpc2VkLmJ0bi0tcHJpbWFyeTpub3QoW2Rpc2FibGVkXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItcHJpbWFyeS1zb2Z0KS8xKTtib3gtc2hhZG93OnZhcigtLWdsb3ctcHJpbWFyeS1oaWdoKX19LmJ0bi0tcmFpc2VkLmJ0bi0tcHJpbWFyeTpub3QoW2Rpc2FibGVkXSk6YWN0aXZle2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXByaW1hcnktaGFyZCkvMSk7Ym94LXNoYWRvdzpub25lfS5idG4tLXJhaXNlZC5idG4tLXNlY29uZGFyeTpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KS8xKTtib3gtc2hhZG93OnZhcigtLWdsb3ctc2Vjb25kYXJ5LWxvdyk7Y29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS8xKX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuYnRuLS1yYWlzZWQuYnRuLS1zZWNvbmRhcnk6bm90KFtkaXNhYmxlZF0pOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeS1zb2Z0KS8xKTtib3gtc2hhZG93OnZhcigtLWdsb3ctc2Vjb25kYXJ5LWhpZ2gpfX0uYnRuLS1yYWlzZWQuYnRuLS1zZWNvbmRhcnk6bm90KFtkaXNhYmxlZF0pOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnktaGFyZCkvMSk7Ym94LXNoYWRvdzpub25lfS5idG4tLXJhaXNlZC5idG4tLWRhbmdlcjpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFuZ2VyKS8xKTtib3gtc2hhZG93OnZhcigtLWdsb3ctZGFuZ2VyLWxvdyk7Y29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS8xKX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuYnRuLS1yYWlzZWQuYnRuLS1kYW5nZXI6bm90KFtkaXNhYmxlZF0pOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLWRhbmdlci1zb2Z0KS8xKTtib3gtc2hhZG93OnZhcigtLWdsb3ctZGFuZ2VyLWhpZ2gpfX0uYnRuLS1yYWlzZWQuYnRuLS1kYW5nZXI6bm90KFtkaXNhYmxlZF0pOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1kYW5nZXItaGFyZCkvMSk7Ym94LXNoYWRvdzpub25lfS5idG4tLXJhaXNlZC5idG4tLW1ke2JvcmRlci1ib3R0b206NHB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1kYXJrKS8yMCUpO2hlaWdodDo0OHB4O3dpZHRoOjQ4cHh9LmJ0bi0tcmFpc2VkLmJ0bi0tbWQgLmljb257aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0uYnRuLS1yYWlzZWQuYnRuLS1zbXtib3JkZXItYm90dG9tOjNweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItZGFyaykvMjAlKTtoZWlnaHQ6NDBweDt3aWR0aDo0MHB4fS5idG4tLXJhaXNlZC5idG4tLXNtIC5pY29ue2hlaWdodDoyMHB4O3dpZHRoOjIwcHh9LmJ0bi0tbWR7aGVpZ2h0OjQ4cHh9LmJ0bi0tbWQsLmJ0bi0tc217Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO3BhZGRpbmc6MCAyNHB4fS5idG4tLXNte2hlaWdodDo0MHB4fS5idG5bZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLWdyYXkpLzEpO2NvbG9yOnJnYih2YXIoLS1jb2xvci1ncmF5LWRhcmspLzEpO2N1cnNvcjpub3QtYWxsb3dlZH0uYnRuX19sYWJlbHttYXgtd2lkdGg6MTAwJTttaW4td2lkdGg6MDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9LmJ0biAuaWNvbntmbGV4LXNocmluazowO2hlaWdodDoyMHB4O21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0Oi04cHg7d2lkdGg6MjBweH0uaW5wdXR7bWF4LXdpZHRoOjEwMCV9LmlucHV0LC5pbnB1dF9faW5uZXJ7cG9zaXRpb246cmVsYXRpdmV9LmlucHV0X19maWVsZCwuaW5wdXRfX3RleHRhcmVhe2NvbG9yOnJnYih2YXIoLS1jb2xvci1kYXJrKS8xKTtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5pbnB1dF9fZmllbGQ6Oi1tb3otcGxhY2Vob2xkZXIsLmlucHV0X190ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2IodmFyKC0tY29sb3ItZ3JheS1kYXJrKS8xKTtvcGFjaXR5OjF9LmlucHV0X19maWVsZDo6cGxhY2Vob2xkZXIsLmlucHV0X190ZXh0YXJlYTo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiKHZhcigtLWNvbG9yLWdyYXktZGFyaykvMSk7b3BhY2l0eToxfS5pbnB1dF9fdGV4dGFyZWF7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cmVzaXplOm5vbmV9LmlucHV0IC5pY29ue3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNpdGlvbjpmaWxsIDgwbXMgZWFzZS1pbjt6LWluZGV4OjF9LmlucHV0X19lcnJvcntjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFuZ2VyKS8xKTtkaXNwbGF5Om5vbmU7bWFyZ2luLXRvcDoycHh9LmlucHV0LS1kZWZhdWx0IC5pbnB1dF9fZmllbGQsLmlucHV0LS1kZWZhdWx0IC5pbnB1dF9fdGV4dGFyZWF7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItbGlnaHQpLzEpfS5pbnB1dC0tZGVmYXVsdCAuaWNvbntmaWxsOnJnYih2YXIoLS1jb2xvci1ncmF5LWRhcmspLzEpfS5pbnB1dC0tbWQgLmlucHV0X19maWVsZHtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCk7aGVpZ2h0OjQwcHg7cGFkZGluZzoxMHB4IDE2cHh9LmlucHV0LS1tZCAuaW5wdXRfX3RleHRhcmVhe2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtoZWlnaHQ6ODBweDttaW4taGVpZ2h0OjgwcHg7cGFkZGluZzoxMHB4IDE2cHh9LmlucHV0LS1tZCAuaWNvbntoZWlnaHQ6MjBweDtsZWZ0OjE2cHg7dG9wOjEwcHg7d2lkdGg6MjBweH0uaW5wdXQtLWhhcy1wcmVmaXgtaWNvbiAuaW5wdXRfX2ZpZWxkLC5pbnB1dC0taGFzLXByZWZpeC1pY29uIC5pbnB1dF9fdGV4dGFyZWF7cGFkZGluZy1sZWZ0OjQ4cHh9LmRyb3Bkb3duey13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzEpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtib3gtc2hhZG93OnZhcigtLXNoYWRvdy1tZCk7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDp2YXIoLS16LXBvcG92ZXIpfS5kcm9wZG93bl9fYXJyb3d7YmFja2dyb3VuZDpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzEpO2hlaWdodDoxMnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNnB4O3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO3dpZHRoOjEycHh9LmRyb3Bkb3duLWVudGVyLC5kcm9wZG93bi1sZWF2ZXtvcGFjaXR5OjE7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIgdG9wO3RyYW5zaXRpb246b3BhY2l0eSAuMnMgZWFzZSx0cmFuc2Zvcm0gLjJzIGVhc2V9LmRyb3Bkb3duLWVudGVyLXN0YXJ0LC5kcm9wZG93bi1sZWF2ZS1lbmR7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZVkoMCl9LmRyb3Bkb3duLW1lbnV7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvO3Njcm9sbGJhci13aWR0aDp0aGlufS5kcm9wZG93bi1tZW51X19saXN0e21hcmdpbjo4cHggMH0uZHJvcGRvd24tbWVudV9fYnV0dG9ue2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZ3JheS1kYXJrKS8xKTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7cGFkZGluZzo4cHggMjRweDt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi1wcm9wZXJ0eTphbGw7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjEwMCV9QG1lZGlhIChob3Zlcjpob3Zlcil7LmRyb3Bkb3duLW1lbnVfX2J1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xMCUpO2NvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xKX19LmRyb3Bkb3duLW1lbnVfX2J1dHRvbiAuaWNvbiwuZHJvcGRvd24tbWVudV9fYnV0dG9uIGltZ3tmbGV4LXNocmluazowO2hlaWdodDoxZW07bWFyZ2luLXJpZ2h0OjEycHg7d2lkdGg6MWVtfXNlbGVjdHtoZWlnaHQ6NDBweDt2aXNpYmlsaXR5OmhpZGRlbjt3aWR0aDoxMDAlfS5zcy1tYWlue2NvbG9yOnJnYih2YXIoLS1jb2xvci1kYXJrKS8xKTtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7d2lkdGg6MTAwJTt6LWluZGV4OnZhcigtLXotcG9wb3Zlcil9LnNzLW1haW4gLnNzLXNpbmdsZS1zZWxlY3RlZHthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItbGlnaHQpLzEpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjQwcHg7b3V0bGluZTowO3BhZGRpbmc6MCAxNnB4O3dpZHRoOjEwMCV9LnNzLW1haW4gLnNzLXNpbmdsZS1zZWxlY3RlZC5zcy1vcGVuLWFib3ZlKy5zcy1jb250ZW50e2JvdHRvbTowO3BhZGRpbmctYm90dG9tOjQwcHg7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIgYm90dG9tfS5zcy1tYWluIC5zcy1zaW5nbGUtc2VsZWN0ZWQuc3Mtb3Blbi1iZWxvdysuc3MtY29udGVudHtwYWRkaW5nLXRvcDo0MHB4O3RvcDowO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyIHRvcH0uc3MtbWFpbiAuc3Mtc2luZ2xlLXNlbGVjdGVkIC5wbGFjZWhvbGRlcntmbGV4OjEgMSAxMDAlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uc3MtbWFpbiAuc3Mtc2luZ2xlLXNlbGVjdGVkIC5wbGFjZWhvbGRlciwuc3MtbWFpbiAuc3Mtc2luZ2xlLXNlbGVjdGVkIC5wbGFjZWhvbGRlciAqe2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5zcy1tYWluIC5zcy1zaW5nbGUtc2VsZWN0ZWQgLnBsYWNlaG9sZGVyICp7d2lkdGg6YXV0b30uc3MtbWFpbiAuc3Mtc2luZ2xlLXNlbGVjdGVkIC5zcy1kZXNlbGVjdHthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXg6MCAxIGF1dG87Zm9udC13ZWlnaHQ6NzAwO2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uc3MtbWFpbiAuc3Mtc2luZ2xlLXNlbGVjdGVkIC5zcy1kZXNlbGVjdC5zcy1oaWRle2Rpc3BsYXk6bm9uZX0uc3MtbWFpbiAuc3Mtc2luZ2xlLXNlbGVjdGVkIC5zcy1hcnJvd3tiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScxMCcgaGVpZ2h0PScxMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTkuNzU0IDQuNDA4YS44MzIuODMyIDAgMCAwLTEuMTgzIDBsLTIuNzQgMi43NVYuODMzYS44MzMuODMzIDAgMSAwLTEuNjY0IDB2Ni4zMjVsLTIuNzQtMi43NUEuODM2LjgzNiAwIDEgMCAuMjQ1IDUuNTkybDQuMTYzIDQuMTY2Yy4wOC4wNzYuMTczLjEzNS4yNzUuMTc1LjIwMS4wOS40MzEuMDkuNjMzIDBhLjgzMy44MzMgMCAwIDAgLjI3NC0uMTc1bDQuMTY0LTQuMTY2YS44MzQuODM0IDAgMCAwIDAtMS4xODR6JyBmaWxsPSclMjM4YzkxYTQnIGZpbGwtcnVsZT0nZXZlbm9kZCcvJTNFJTNDL3N2ZyUzRSIpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6MTAwJTtmbGV4LXNocmluazowO2hlaWdodDoxNnB4O21hcmdpbi1sZWZ0OjE0cHg7d2lkdGg6MTZweH0uc3MtY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1saWdodCkvMSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93LW1kKTtvcGFjaXR5OjA7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybTpzY2FsZVkoMCk7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIgdG9wO3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyxvcGFjaXR5IC4yczt3aWR0aDoxMDAlO3otaW5kZXg6dmFyKC0tei1uZWdhdGl2ZSl9LnNzLWNvbnRlbnQuc3Mtb3BlbntkaXNwbGF5OmJsb2NrO29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGVZKDEpfS5zcy1jb250ZW50IC5zcy1zZWFyY2h7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztwYWRkaW5nOjhweCA4cHggNnB4fS5zcy1jb250ZW50IC5zcy1zZWFyY2guc3MtaGlkZSwuc3MtY29udGVudCAuc3Mtc2VhcmNoLnNzLWhpZGUgaW5wdXR7aGVpZ2h0OjA7bWFyZ2luOjA7b3BhY2l0eTowO3BhZGRpbmc6MH0uc3MtY29udGVudCAuc3Mtc2VhcmNoIGlucHV0ey13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RjZGVlMjtib3JkZXItcmFkaXVzOjRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtZmxleDtmbGV4OjEgMSBhdXRvO2ZvbnQtc2l6ZTppbmhlcml0O2hlaWdodDozMHB4O2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOjA7bWluLXdpZHRoOjA7b3V0bGluZTowO3BhZGRpbmc6NnB4IDhweDt0ZXh0LWFsaWduOmxlZnQ7d2lkdGg6MTAwJX0uc3MtY29udGVudCAuc3Mtc2VhcmNoIGlucHV0OjotbW96LXBsYWNlaG9sZGVye2NvbG9yOiM4YThhOGE7dmVydGljYWwtYWxpZ246bWlkZGxlfS5zcy1jb250ZW50IC5zcy1zZWFyY2ggaW5wdXQ6OnBsYWNlaG9sZGVye2NvbG9yOiM4YThhOGE7dmVydGljYWwtYWxpZ246bWlkZGxlfS5zcy1jb250ZW50IC5zcy1zZWFyY2ggaW5wdXQ6Zm9jdXN7Ym94LXNoYWRvdzowIDAgNXB4ICM1ODk3ZmJ9LnNzLWNvbnRlbnQgLnNzLXNlYXJjaCAuc3MtYWRkYWJsZXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyOjFweCBzb2xpZCAjZGNkZWUyO2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2ZsZXg6MCAwIDMwcHg7Zm9udC1zaXplOjIycHg7Zm9udC13ZWlnaHQ6NzAwO2hlaWdodDozMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOjAgMCAwIDhweH0uc3MtY29udGVudCAuc3MtYWRkYWJsZXtwYWRkaW5nLXRvcDowfS5zcy1jb250ZW50IC5zcy1saXN0e21heC1oZWlnaHQ6MjMycHg7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvO3RleHQtYWxpZ246bGVmdH0uc3MtY29udGVudCAuc3MtbGlzdCAuc3Mtb3B0aW9ue2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZ3JheS1kYXJrKS8xKTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7cGFkZGluZzo4cHggMTZweDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9QG1lZGlhIChob3Zlcjpob3Zlcil7LnNzLWNvbnRlbnQgLnNzLWxpc3QgLnNzLW9wdGlvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xMCUpO2NvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xKX19LnNzLWNvbnRlbnQgLnNzLWxpc3QgLnNzLW9wdGlvbi5zcy1oaWdobGlnaHRlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xMCUpO2NvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xKX0uc3MtY29udGVudCAuc3MtbGlzdCAuc3Mtb3B0aW9uOm5vdCguc3MtZGlzYWJsZWQpLnNzLW9wdGlvbi1zZWxlY3RlZHtjb2xvcjp2YXIoLS1jb2xvci1kYXJrKX0uc3MtY29udGVudCAuc3MtbGlzdCAuc3Mtb3B0aW9uLnNzLWhpZGV7ZGlzcGxheTpub25lfS5zcy1vcHRpb24taWNvbntmbGV4LXNocmluazowO2hlaWdodDoyMHB4O21hcmdpbi1yaWdodDoxMnB4O3dpZHRoOjIwcHh9LmFjY29yZGlvbntiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvNzAlKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCl9LmFjY29yZGlvbi5pcy1vcGVuIC5hY2NvcmRpb25fX2Fycm93e3RyYW5zZm9ybTpzY2FsZVkoLTEpfS5hY2NvcmRpb25fX2hlYWRlcnthbGlnbi1pdGVtczpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O3BhZGRpbmc6MTZweDt0ZXh0LWFsaWduOmxlZnQ7d2hpdGUtc3BhY2U6bm9ybWFsO3dpZHRoOjEwMCV9QG1lZGlhIChtaW4td2lkdGg6NzYwcHgpey5hY2NvcmRpb25fX2hlYWRlcntwYWRkaW5nOjE2cHggMjRweH19LmFjY29yZGlvbl9fcXVlc3Rpb257ZmlsbDpyZ2IodmFyKC0tY29sb3ItZ3JheSkvMSk7ZmxleC1zaHJpbms6MDtoZWlnaHQ6MzJweDt3aWR0aDozMnB4fS5hY2NvcmRpb25fX3RpdGxle2NvbG9yOnJnYih2YXIoLS1jb2xvci1kYXJrKS8xKTtwYWRkaW5nOjAgMTZweH0uYWNjb3JkaW9uX19hcnJvd3tmaWxsOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xKTtmbGV4LXNocmluazowO2hlaWdodDoyNHB4O21hcmdpbi1sZWZ0OmF1dG87dHJhbnNpdGlvbi1kdXJhdGlvbjouM3M7dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm07dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7d2lkdGg6MjRweH0uYWNjb3JkaW9uX19ib2R5e2Rpc3BsYXk6bm9uZX0uYWNjb3JkaW9uX19ib2R5LWlubmVye3BhZGRpbmc6MCAxNnB4IDE2cHggNjRweH1AbWVkaWEgKG1pbi13aWR0aDo3NjBweCl7LmFjY29yZGlvbl9fYm9keS1pbm5lcntwYWRkaW5nLWxlZnQ6NzJweH19LmFjY29yZGlvbl9fYm9keS1pbm5lciBwe2NvbG9yOnJnYih2YXIoLS1jb2xvci1ncmF5LWRhcmspLzEpfS5iYWRnZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvMjAlKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCk7Y29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS8xKTtkaXNwbGF5OmlubGluZS1mbGV4O3BhZGRpbmc6MXB4IDhweH0uYmFkZ2UtLWRhbmdlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1kYW5nZXIpLzEpfS5mb2xsb3d7LS1mb2xsb3ctaXRlbS1tYXJnaW46MjRweDstLWZvbGxvdy1pdGVtLXNpemU6MzJweDtkaXNwbGF5OmZsZXh9QG1lZGlhIChtYXgtd2lkdGg6MTQzOXB4KXsuZm9sbG93ey0tZm9sbG93LWl0ZW0tbWFyZ2luOjE2cHg7LS1mb2xsb3ctaXRlbS1zaXplOjI0cHh9fS5mb2xsb3ctLXNtYWxsey0tZm9sbG93LWl0ZW0tbWFyZ2luOjE2cHg7LS1mb2xsb3ctaXRlbS1zaXplOjI0cHh9LmZvbGxvd19faXRlbXtmbGV4LXNocmluazowfS5mb2xsb3dfX2l0ZW06bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6dmFyKC0tZm9sbG93LWl0ZW0tbWFyZ2luKX0uZm9sbG93X19saW5re2NvbG9yOnJnYih2YXIoLS1jb2xvci1ncmF5LWRhcmspLzEpO2Rpc3BsYXk6YmxvY2s7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3I7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9QG1lZGlhIChob3Zlcjpob3Zlcil7LmZvbGxvd19fbGluazpob3Zlcntjb2xvcjp2YXIoLS1mb2xsb3ctaG92ZXItY29sb3IscmdiKHZhcigtLWNvbG9yLXByaW1hcnkpLzEpKX19LmZvbGxvd19fbGluayAuaWNvbntoZWlnaHQ6dmFyKC0tZm9sbG93LWl0ZW0tc2l6ZSk7d2lkdGg6dmFyKC0tZm9sbG93LWl0ZW0tc2l6ZSl9LmFwcHN7ZGlzcGxheTpncmlkO2dhcDo4cHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpdCwxMjdweCl9LmFwcHMtLWdob3N0IC5hcHBzX19saW5re29wYWNpdHk6LjV9LmFwcHNfX2JhZGdle2hlaWdodDozN3B4O3dpZHRoOjEyN3B4fS50cnVzdHBpbG90LWNvbXBhY3R7ZGlzcGxheTpibG9ja30udHJ1c3RwaWxvdC1jb21wYWN0X19sb2dve2hlaWdodDoyOXB4O21hcmdpbi1ib3R0b206OHB4O3dpZHRoOjEyN3B4fS50cnVzdHBpbG90LWNvbXBhY3RfX3N0YXJze2hlaWdodDoyNHB4O3dpZHRoOjEyN3B4fS50cnVzdHBpbG90LWV4dHtkaXNwbGF5OmJsb2NrO3dpZHRoOi1tb3otZml0LWNvbnRlbnQ7d2lkdGg6Zml0LWNvbnRlbnR9LnRydXN0cGlsb3QtZXh0X19zdGFyc3ttYXJnaW4tYm90dG9tOjE2cHh9LnRydXN0cGlsb3QtZXh0X190ZXh0e2NvbG9yOnJnYih2YXIoLS1jb2xvci1kYXJrKS8xKTtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXB9LnRydXN0cGlsb3QtZXh0X19yZXZpZXdze21hcmdpbi1yaWdodDoxMHB4fUBrZXlmcmFtZXMgc3dpcGVyLXByZWxvYWRlcnt0b3t0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19LnN3aXBlci1jb250YWluZXItaG9yaXpvbnRhbD4uc3dpcGVyLXNjcm9sbGJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvMSk7Ym9yZGVyLXJhZGl1czo5OTllbTtib3R0b206MDtoZWlnaHQ6NHB4O2xlZnQ6MDttYXJnaW46NDhweCBhdXRvIDhweDttYXgtd2lkdGg6Y2FsYygxMDAlIC0gMzJweCk7cG9zaXRpb246cmVsYXRpdmU7cmlnaHQ6MDt3aWR0aDozNDBweH0uc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsPi5zd2lwZXItc2Nyb2xsYmFyLS1naG9zdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvMjAlKX0uc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsPi5zd2lwZXItc2Nyb2xsYmFyIC5zd2lwZXItc2Nyb2xsYmFyLWRyYWd7YmFja2dyb3VuZDpyZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkvMSk7Ym9yZGVyLXJhZGl1czo5OTllbTtoZWlnaHQ6OHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMnB4fWltZy5zd2lwZXItbGF6eXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC42cyBlYXNlfWltZy5zd2lwZXItbGF6eS5zd2lwZXItbGF6eS1sb2FkZWR7b3BhY2l0eToxfS5zd2lwZXItbGF6eS1wcmVsb2FkZXJ7YW5pbWF0aW9uOnN3aXBlci1wcmVsb2FkZXIgLjZzIGxpbmVhciBpbmZpbml0ZTtib3JkZXItd2lkdGg6MnB4O2hlaWdodDozMnB4O3dpZHRoOjMycHh9LnN3aXBlci1sYXp5LXByZWxvYWRlci13aGl0ZXtvcGFjaXR5Oi41fS5yYW5nZXstLXJhbmdlOmNhbGModmFyKC0tbWF4KSAtIHZhcigtLW1pbikpOy0tcmF0aW86Y2FsYygodmFyKC0tdmFsdWUpIC0gdmFyKC0tbWluKSkvdmFyKC0tcmFuZ2UpKTstLXN4OmNhbGMoMTZweCArIHZhcigtLXJhdGlvKSooMTAwJSAtIDMycHgpKTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7aGVpZ2h0OjMycHg7d2lkdGg6MTAwJX0ucmFuZ2U6Zm9jdXN7b3V0bGluZTpub25lfS5yYW5nZTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2t7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodmFyKC0tbWFpbi1jb2xvciksdmFyKC0tbWFpbi1jb2xvcikpIDAvdmFyKC0tc3gpIDEwMCUgbm8tcmVwZWF0LHJnYih2YXIoLS1jb2xvci1saWdodCkvMSk7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo5OTllbTtib3gtc2hhZG93Om5vbmU7aGVpZ2h0OjRweDt3aWR0aDoxMDAlfS5yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0tbWFpbi1jb2xvcik7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxNicgaGVpZ2h0PScxMiclM0UlM0NwYXRoIGQ9J00xLjUgMS41NTZoMTNtLTEzIDguODg4aDEzJyBmaWxsPSdub25lJyBmaWxsLXJ1bGU9J2V2ZW5vZGQnIHN0cm9rZT0nJTIzRkZGJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS13aWR0aD0nMycgb3BhY2l0eT0nLjUnLyUzRSUzQy9zdmclM0UiKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJSA1MCU7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtib3gtc2hhZG93OnZhcigtLXRodW1iLXNoYWRvdyk7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjMycHg7bWFyZ2luLXRvcDotMTRweDt3aWR0aDozMnB4fS5yYW5nZTo6LW1vei1yYW5nZS10cmFja3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh2YXIoLS1tYWluLWNvbG9yKSx2YXIoLS1tYWluLWNvbG9yKSkgMC92YXIoLS1zeCkgMTAwJSBuby1yZXBlYXQscmdiKHZhcigtLWNvbG9yLWxpZ2h0KS8xKTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjk5OWVtO2JveC1zaGFkb3c6bm9uZTtoZWlnaHQ6NHB4O3dpZHRoOjEwMCV9LnJhbmdlOjotbW96LXJhbmdlLXRodW1iey1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1haW4tY29sb3IpO2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTYnIGhlaWdodD0nMTInJTNFJTNDcGF0aCBkPSdNMS41IDEuNTU2aDEzbS0xMyA4Ljg4OGgxMycgZmlsbD0nbm9uZScgZmlsbC1ydWxlPSdldmVub2RkJyBzdHJva2U9JyUyM0ZGRicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2Utd2lkdGg9JzMnIG9wYWNpdHk9Jy41Jy8lM0UlM0Mvc3ZnJTNFIik7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCUgNTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtib3JkZXI6MDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCk7Ym94LXNoYWRvdzp2YXIoLS10aHVtYi1zaGFkb3cpO2N1cnNvcjpwb2ludGVyO2hlaWdodDozMnB4O21hcmdpbi10b3A6LTEycHg7d2lkdGg6MzJweH0ucmFuZ2UtLXByaW1hcnl7LS1tYWluLWNvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xKTstLXRodW1iLXNoYWRvdzp2YXIoLS1nbG93LXByaW1hcnktbG93KX0ucmFuZ2UtLXNlY29uZGFyeXstLW1haW4tY29sb3I6cmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkvMSk7LS10aHVtYi1zaGFkb3c6dmFyKC0tZ2xvdy1zZWNvbmRhcnktbG93KX0uZ2lmdHtkaXNwbGF5OmZsZXh9LmdpZnRfX2ljb257bWFyZ2luLXJpZ2h0OjE2cHh9LmdpZnRfX3RleHR7Y29sb3I6dmFyKC0tdGV4dC1jb2xvcixyZ2IodmFyKC0tY29sb3ItZGFyaykvMSkpO3RleHQtYWxpZ246bGVmdH0uZ2lmdF9fdmFsdWV7Y29sb3I6cmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkvMSl9LmNhcmR7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItbGlnaHQpLzEpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtoZWlnaHQ6MTAwJTtwYWRkaW5nOjI0cHg7dGV4dC1hbGlnbjpsZWZ0fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY2FyZHtwYWRkaW5nOjMycHh9fS5jYXJkX190b3B7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjttYXJnaW4tYm90dG9tOjI0cHh9LmNhcmRfX2V4dHttYXJnaW4tbGVmdDoxNnB4fS5jYXJkX190aXRsZXtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFyaykvMSk7bWFyZ2luLWJvdHRvbToxNnB4fS5uYXZfX2xpc3R7LS1nYXA6MzJweDthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O21hcmdpbjowIGNhbGModmFyKC0tZ2FwKS8tMil9QG1lZGlhIChtaW4td2lkdGg6MTI0MHB4KXsubmF2X19saXN0ey0tZ2FwOjQwcHh9fS5uYXZfX2l0ZW0uaGFzLXN1Ym1lbnV7cG9zaXRpb246cmVsYXRpdmV9Lm5hdl9faXRlbS5oYXMtc3VibWVudTpob3ZlciAubmF2X19zdWJtZW51e29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDApO3RyYW5zaXRpb24tZHVyYXRpb246LjRzO3Zpc2liaWxpdHk6dmlzaWJsZX0ubmF2X19saW5re2NvbG9yOmluaGVyaXQ7ZGlzcGxheTpibG9jaztmb250LWZhbWlseTp2YXIoLS1mb250LXByaW1hcnkpO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjkwMDtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXByaW1hcnktaDYpO3BhZGRpbmc6MjhweCBjYWxjKHZhcigtLWdhcCkvMik7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3I7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9QG1lZGlhIChob3Zlcjpob3Zlcil7Lm5hdl9fbGluazpob3Zlcntjb2xvcjp2YXIoLS1oZWFkZXItaG92ZXItY29sb3IscmdiKHZhcigtLWNvbG9yLXByaW1hcnkpLzEpKX19QG1lZGlhIChtaW4td2lkdGg6MTI0MHB4KXsubmF2X19saW5re2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OnZhcigtLWxlYWRpbmctcHJpbWFyeS1oNSl9fS5uYXYgYnV0dG9uLm5hdl9fbGlua3tjdXJzb3I6ZGVmYXVsdH0ubmF2X19zdWJtZW51ey13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzEpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtib3gtc2hhZG93OnZhcigtLXNoYWRvdy1tZCk7bGVmdDo1MCU7bWFyZ2luLXRvcDotOHB4O29wYWNpdHk6MDtwYWRkaW5nOjI0cHg7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSg4cHgpO3RyYW5zaXRpb24tZHVyYXRpb246LjJzO3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eSx2aXNpYmlsaXR5LHRyYW5zZm9ybTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTt2aXNpYmlsaXR5OmhpZGRlbjt6LWluZGV4OnZhcigtLXotb3ZlcmxheSl9Lm5hdl9fc3VibWVudS1saXN0e2Rpc3BsYXk6Z3JpZDtnYXA6MjRweCAzMnB4O2dyaWQtdGVtcGxhdGUtY29sdW1uczptYXgtY29udGVudH1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7Lm5hdl9fc3VibWVudS1saXN0e2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtYXgtY29udGVudCl9fS5uYXZfX3N1Ym1lbnUtaXRlbXttYXgtd2lkdGg6MjQwcHh9Lm5hdl9fc3VibWVudS1saW5re2NvbG9yOnJnYih2YXIoLS1jb2xvci1kYXJrKS8xKTtkaXNwbGF5OmZsZXg7dGV4dC1hbGlnbjpsZWZ0fS5uYXZfX3N1Ym1lbnUtbGluay5pcy1pbmFjdGl2ZXtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZ3JheS1kYXJrKS8xKX0ubmF2X19zdWJtZW51LWxpbmsuaXMtaW5hY3RpdmUgLmljb257ZmlsbDpyZ2IodmFyKC0tY29sb3ItZ3JheS1kYXJrKS8xKX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsubmF2X19zdWJtZW51LWxpbms6bm90KC5pcy1pbmFjdGl2ZSk6aG92ZXJ7Y29sb3I6cmdiKHZhcigtLWNvbG9yLXByaW1hcnkpLzEpfX0ubmF2X19zdWJtZW51LWxpbmsgLmljb257ZmlsbDpyZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkvMSk7ZmxleC1zaHJpbms6MDtoZWlnaHQ6MjRweDttYXJnaW4tcmlnaHQ6MTZweDt3aWR0aDoyNHB4fS5uYXZfX3N1Ym1lbnUtbGluay10aXRsZXtjb2xvcjppbmhlcml0fS5uYXZfX3N1Ym1lbnUtbGluay1kZXNje2NvbG9yOnJnYih2YXIoLS1jb2xvci1ncmF5LWRhcmspLzEpfS5uYXYtbW9iaWxle2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS8xKTtib3R0b206MDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2xlZnQ6MDtwb3NpdGlvbjpmaXhlZDtyaWdodDowO3RvcDowO3otaW5kZXg6dmFyKC0tei1vdmVybGF5KX1AbWVkaWEgKG1pbi13aWR0aDo3NjBweCl7Lm5hdi1tb2JpbGV7ZGlzcGxheTpub25lIWltcG9ydGFudH19Lm5hdi1tb2JpbGVfX2hlYWRlcnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzEpO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6dmFyKC0taGVhZGVyLWhlaWdodCk7bWluLWhlaWdodDp2YXIoLS1oZWFkZXItaGVpZ2h0KTtwYWRkaW5nOjIwcHg7cG9zaXRpb246cmVsYXRpdmV9Lm5hdi1tb2JpbGVfX2xvZ28td3JhcHBlcnttYXJnaW4tbGVmdDo0NHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5uYXYtbW9iaWxlX19sb2dve3dpZHRoOjExNnB4fS5uYXYtbW9iaWxlX19jbG9zZXtsZWZ0OjIwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjI0cHh9Lm5hdi1tb2JpbGVfX2Nsb3NlIC5pY29ue2ZpbGw6cmdiKHZhcigtLWNvbG9yLWdyYXktZGFyaykvMSk7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0ubmF2LW1vYmlsZV9fYm9keS13cmFwcGVyey13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO292ZXJmbG93OmF1dG99Lm5hdi1tb2JpbGVfX2JvZHksLm5hdi1tb2JpbGVfX2JvZHktd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZ3JvdzoxfS5uYXYtbW9iaWxlX19ib2R5e2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO21hcmdpbjoyNHB4IDAgNDBweDtwYWRkaW5nOjAgNDBweH0ubmF2LW1vYmlsZV9fbWVudXttYXJnaW46MCBhdXRvO21heC13aWR0aDozNjBweDt3aWR0aDoxMDAlfS5uYXYtbW9iaWxlX19tZW51LWl0ZW0rLm5hdi1tb2JpbGVfX21lbnUtaXRlbXttYXJnaW4tdG9wOjQwcHh9Lm5hdi1tb2JpbGVfX21lbnUtbGlua3tjb2xvcjpyZ2IodmFyKC0tY29sb3ItZ3JheS1kYXJrKS8xKTtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6OTAwO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpO3dpZHRoOjEwMCV9LmlzLW9wZW4gLm5hdi1tb2JpbGVfX21lbnUtbGlua3tjb2xvcjpyZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkvMSl9Lm5hdi1tb2JpbGVfX21lbnUtbGluayAuaWNvbntmbGV4LXNocmluazowO21hcmdpbi1sZWZ0OjI0cHg7bWFyZ2luLXRvcDo1cHh9Lm5hdi1tb2JpbGVfX3N1Ym1lbnV7ZGlzcGxheTpub25lO3BhZGRpbmctbGVmdDoyNHB4fS5uYXYtbW9iaWxlX19zdWJtZW51LWl0ZW17cGFkZGluZy10b3A6MjRweH0ubmF2LW1vYmlsZV9fc3VibWVudS1saW5re2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Y29sb3I6cmdiKHZhcigtLWNvbG9yLWdyYXktZGFyaykvMSk7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2ZvbnQtc2l6ZToyNHB4O2dhcDo4cHggMTZweH0ubmF2LW1vYmlsZV9fc3VibWVudS1saW5rLmlzLWluYWN0aXZle29wYWNpdHk6LjV9Lm5hdi1tb2JpbGVfX3N1Ym1lbnUtYmFkZ2V7YmFja2dyb3VuZDpyZ2JhKDI2LDI3LDM4LC40KTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCk7Y29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS8xKTttYXJnaW4tdG9wOjRweDtwYWRkaW5nOjRweCA4cHh9Lm5hdi1tb2JpbGVfX3N1Ym1lbnUtYmFkZ2UtLWRhbmdlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1kYW5nZXIpLzEpfS5uYXYtbW9iaWxlX19mb290ZXJ7cGFkZGluZzowIDQwcHggMzJweH0ubmF2LW1vYmlsZV9fYWN0aW9uc3thbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2dhcDoxNnB4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lm5hdi1tb2JpbGVfX2hlbHB7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjI0MHB4O21pbi13aWR0aDowfS5uYXYtbW9iaWxlX19zb2NpYWx7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDozMnB4fS5uYXYtbW9iaWxlX19zb2NpYWwgLmZvbGxvd3tmb250LXNpemU6MjRweH0ubmF2LW1vYmlsZV9fZG9jc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweCAxNnB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDoyNHB4fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsubmF2LW1vYmlsZV9fZG9jc3ttYXJnaW4tdG9wOjE2cHh9fS5uYXYtbW9iaWxlX19kb2NzLWxpbmt7Y29sb3I6cmdiKHZhcigtLWNvbG9yLWdyYXktZGFyaykvMSl9Lm5hdi1tb2JpbGUtZW50ZXIsLm5hdi1tb2JpbGUtbGVhdmV7dHJhbnNpdGlvbjpvcGFjaXR5IC4yNXMgZWFzZX0ubmF2LW1vYmlsZS1lbnRlci1zdGFydCwubmF2LW1vYmlsZS1sZWF2ZS1lbmR7b3BhY2l0eTowfS5oZWFkZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzEwJSk7ei1pbmRleDp2YXIoLS16LWhlYWRlcil9LmhlYWRlciwuaGVhZGVyX19pbm5lcntoZWlnaHQ6dmFyKC0taGVhZGVyLWhlaWdodCl9LmhlYWRlcl9faW5uZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2NvbG9yOnJnYih2YXIoLS1jb2xvci1kYXJrKS8xKTtkaXNwbGF5OmZsZXg7cG9zaXRpb246cmVsYXRpdmV9LmhlYWRlcl9fYnVyZ2Vye21hcmdpbi1yaWdodDoyMHB4fUBtZWRpYSAobWluLXdpZHRoOjc2MHB4KXsuaGVhZGVyX19idXJnZXJ7ZGlzcGxheTpub25lfX0uaGVhZGVyX19idXJnZXIgLmljb257ZmlsbDpyZ2IodmFyKC0tY29sb3ItZ3JheS1kYXJrKS8xKTtoZWlnaHQ6MjRweDt3aWR0aDoyNHB4fS5oZWFkZXJfX2xvZ28td3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZX0uaGVhZGVyX19sb2dvLXdyYXBwZXIgaW1ne3dpZHRoOjExNnB4fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuaGVhZGVyX19sb2dvLXdyYXBwZXIgaW1ne3dpZHRoOjE3MnB4fX0uaGVhZGVyX19uYXZ7bWFyZ2luLWxlZnQ6YXV0b31AbWVkaWEgKG1heC13aWR0aDo3NTlweCl7LmhlYWRlcl9fbmF2e2Rpc3BsYXk6bm9uZX19LmhlYWRlcl9fYWN0aW9uc3stLWdhcDoyMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7Z2FwOnZhcigtLWdhcCk7cGFkZGluZy1sZWZ0OnZhcigtLWdhcCl9QG1lZGlhIChtYXgtd2lkdGg6NzU5cHgpey5oZWFkZXJfX2FjdGlvbnN7bWFyZ2luLWxlZnQ6YXV0b319QG1lZGlhIChtaW4td2lkdGg6NzYwcHgpey5oZWFkZXJfX2FjdGlvbnN7LS1nYXA6MzJweH19QG1lZGlhIChtaW4td2lkdGg6MTI0MHB4KXsuaGVhZGVyX19hY3Rpb25zey0tZ2FwOjQwcHh9fS5oZWFkZXJfX2xhbmcsLmhlYWRlcl9fdGhlbWV7ZGlzcGxheTpibG9jazt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcjt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaGVhZGVyX19sYW5nOmhvdmVyLC5oZWFkZXJfX3RoZW1lOmhvdmVye2NvbG9yOnZhcigtLWhlYWRlci1ob3Zlci1jb2xvcixyZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkvMSkpfX0uaGVhZGVyX19sYW5nIHN2ZywuaGVhZGVyX190aGVtZSBzdmd7ZmlsbDpjdXJyZW50Q29sb3I7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0uaGVhZGVyX19sYW5nLWNvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZX0uaGVhZGVyX19sYW5nLWRyb3Bkb3due2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi0xMTBweDttYXJnaW4tdG9wOjI4cHg7dG9wOjEwMCU7d2lkdGg6MjIwcHh9LmhlYWRlcl9fbGFuZy1kcm9wZG93biAuZHJvcGRvd24tbWVudXttYXgtaGVpZ2h0OjMxMHB4fS5oZWFkZXJfX2xhbmctZHJvcGRvd24gLmRyb3Bkb3duX19hcnJvd3tsZWZ0OjUwJTttYXJnaW4tbGVmdDotNnB4fS5oZWFkZXJfX2xhbmctZHJvcGRvd24gaW1ne2hlaWdodDoyNHB4O2ltYWdlLXJlbmRlcmluZzpvcHRpbWl6ZVF1YWxpdHk7d2lkdGg6MjRweH0uaGVhZGVyX19sb2dpbntmb250LWZhbWlseTp2YXIoLS1mb250LXByaW1hcnkpO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjkwMDtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXByaW1hcnktaDYpO21heC13aWR0aDoxMDAlO21heC13aWR0aDo4MHB4O292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaGVhZGVyX19sb2dpbjpob3Zlcntjb2xvcjp2YXIoLS1oZWFkZXItaG92ZXItY29sb3IscmdiKHZhcigtLWNvbG9yLXByaW1hcnkpLzEpKX19QG1lZGlhIChtYXgtd2lkdGg6OTkxcHgpey5oZWFkZXJfX2xvZ2lue2Rpc3BsYXk6bm9uZX19QG1lZGlhIChtaW4td2lkdGg6MTI0MHB4KXsuaGVhZGVyX19sb2dpbntmb250LXNpemU6MThweDtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXByaW1hcnktaDUpfX1AbWVkaWEgKG1heC13aWR0aDo5OTFweCl7LmhlYWRlcl9fY29ubmVjdHtkaXNwbGF5Om5vbmV9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuaGVhZGVyX19jb25uZWN0LWljb257ZGlzcGxheTpub25lfX0uaGVhZGVyX191c2VyLWNvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZX0uaGVhZGVyX191c2Vye2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbn0uaGVhZGVyX191c2VyLWRyb3Bkb3due21hcmdpbi10b3A6MTZweDtyaWdodDotOHB4O3RvcDoxMDAlfS5oZWFkZXJfX3VzZXItZHJvcGRvd24gLmRyb3Bkb3duX19hcnJvd3tyaWdodDoyMnB4fUBtZWRpYSAobWluLXdpZHRoOjEyNDBweCl7LmhlYWRlcl9fdXNlci1kcm9wZG93biAuZHJvcGRvd25fX2Fycm93e3JpZ2h0OjI2cHh9fS5oZWFkZXJfX3VzZXItYXZhdGFye2hlaWdodDo0MHB4O3dpZHRoOjQwcHh9QG1lZGlhIChtaW4td2lkdGg6MTI0MHB4KXsuaGVhZGVyX191c2VyLWF2YXRhcntoZWlnaHQ6NDhweDt3aWR0aDo0OHB4fX0uZm9vdGVyLW1lbnVfX2NhdGVnb3J5e2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOjI0cHh9QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5mb290ZXItbWVudV9fY2F0ZWdvcnl7bWFyZ2luLWJvdHRvbTo0MHB4fX0uZm9vdGVyLW1lbnVfX2xpc3R7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxNnB4IDI0cHh9QG1lZGlhIChtaW4td2lkdGg6NzYwcHgpey5mb290ZXItbWVudV9fbGlzdHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjI0cHh9fS5mb290ZXItbWVudV9faXRlbS0tbmV3LC5mb290ZXItbWVudV9faXRlbS0tc29vbnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHggMTZweH0uZm9vdGVyLW1lbnVfX2l0ZW0tLXNvb24gLmZvb3Rlci1tZW51X19saW5re29wYWNpdHk6LjIhaW1wb3J0YW50fS5mb290ZXItbWVudV9fbGlua3tvcGFjaXR5Oi41O3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHk7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9QG1lZGlhIChob3Zlcjpob3Zlcil7LmZvb3Rlci1tZW51X19saW5rOmhvdmVye29wYWNpdHk6Ljc1fX0uZm9vdGVye2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLWRhcmspLzEpO2NvbG9yOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvMSk7cGFkZGluZzpjYWxjKDE2cHggKyA1LjU1NTU2dncpIDB9LmZvb3Rlcl9faW5uZXJ7YWxpZ24taXRlbXM6c3RhcnQ7ZGlzcGxheTpncmlkO2dhcDo2NHB4O3Bvc2l0aW9uOnJlbGF0aXZlfUBtZWRpYSAobWluLXdpZHRoOjEyNDBweCl7LmZvb3Rlcl9faW5uZXJ7Z2FwOjQwcHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgxOCxtaW5tYXgoMCwxZnIpKX19LmZvb3Rlcl9fbWlzY3tkaXNwbGF5OmdyaWQ7Z2FwOjQwcHh9QG1lZGlhIChtaW4td2lkdGg6MTI0MHB4KXsuZm9vdGVyX19taXNje2dyaWQtY29sdW1uOjEvNjtncmlkLXJvdzoxO3BhZGRpbmctdG9wOjk2cHh9fS5mb290ZXJfX2xvZ28tbGlua3tkaXNwbGF5OmJsb2NrO2hlaWdodDo1NnB4O3dpZHRoOjI0MHB4fUBtZWRpYSAobWluLXdpZHRoOjEyNDBweCl7LmZvb3Rlcl9fbG9nby1saW5re2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH19LmZvb3Rlcl9fbG9nb3tmaWx0ZXI6YnJpZ2h0bmVzcygwKSBpbnZlcnQoMSl9LmZvb3Rlcl9fZm9sbG93ey0tZm9sbG93LWhvdmVyLWNvbG9yOnJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnkpLzEpfS5mb290ZXJfX3RydXN0e2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXh9LmZvb3Rlcl9fZG9tYWluc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjRweCAxNnB4O21hcmdpbi10b3A6MjRweDt3aWR0aDoyODBweH0uZm9vdGVyX19kb21haW5zIGF7b3BhY2l0eTouNTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5O3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpfUBtZWRpYSAoaG92ZXI6aG92ZXIpey5mb290ZXJfX2RvbWFpbnMgYTpob3ZlcntvcGFjaXR5Oi43NX19LmZvb3Rlcl9fY29weXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O21hcmdpbi1sZWZ0OjM2cHh9LmZvb3Rlcl9fY29weSBhe2ZsZXgtc2hyaW5rOjA7bWFyZ2luLXJpZ2h0OjE2cHh9LmZvb3Rlcl9fY29weSBzcGFue29wYWNpdHk6LjV9LmZvb3Rlcl9fbWVudXN7ZGlzcGxheTpncmlkO2dhcDo2MHB4IDQwcHh9QG1lZGlhIChtaW4td2lkdGg6NzYwcHgpey5mb290ZXJfX21lbnVze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtaW5tYXgoMCwxZnIpKX19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5mb290ZXJfX21lbnVze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCxtaW5tYXgoMCwxZnIpKX19QG1lZGlhIChtaW4td2lkdGg6MTI0MHB4KXsuZm9vdGVyX19tZW51c3tncmlkLWNvbHVtbjo2LzE5O2dyaWQtcm93OjF9fS50b2tlbi1jb3VudGVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RleHQtYWxpZ246Y2VudGVyfS50b2tlbi1jb3VudGVyX19pdGVte3BhZGRpbmc6MCBjYWxjKC03LjMzMzMzcHggKyAzLjAwOTI2dncpIDAgY2FsYygtMy4zMzMzM3B4ICsgMy4wMDkyNnZ3KX0udG9rZW4tY291bnRlcl9faXRlbTpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1yaWdodDoycHggc29saWQgcmdiKHZhcigtLWNvbG9yLXdoaXRlKS8yMCUpfS50b2tlbi1jb3VudGVyX19kaWdpdHtmb250LXNpemU6Y2FsYygtMi42NjY2N3B4ICsgNy40MDc0MXZ3KTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7bGluZS1oZWlnaHQ6MS4yNjkyMzA3Njl9LnRva2VuLWNvdW50ZXJfX2xhYmVse2xldHRlci1zcGFjaW5nOi40NDQ0NGVtO29wYWNpdHk6Ljc7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDRweCl9LnRva2VuLWFubm91bmNlbWVudHtiYWNrZ3JvdW5kOnVybCguLi9pbWcvYmctdG9rZW4uanBnKSBuby1yZXBlYXQgNTAlIDUwJS9jb3ZlcjtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1kYXJrKS8xKTtwYWRkaW5nLWJvdHRvbTpjYWxjKDQyLjY2NjY3cHggKyAzLjcwMzd2dyk7cGFkZGluZy10b3A6Y2FsYygxOS4zMzMzM3B4ICsgMTIuMjY4NTJ2dyk7dGV4dC1hbGlnbjpjZW50ZXJ9LnJld2FyZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvMSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0ucmV3YXJkX19pbWFnZS1ib3h7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItbGlnaHQtaGFyZCkvMSk7bWF4LXdpZHRoOjEwMCU7cGFkZGluZy1ib3R0b206MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5yZXdhcmRfX2ltYWdle2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS5yZXdhcmRfX2JvZHl7cGFkZGluZzoxNnB4IDE2cHggMjRweH0ucmV3YXJkX190aXRsZXtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFyaykvMSk7bWFyZ2luLWJvdHRvbTo0cHh9LnJld2FyZF9fdmFsdWV7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0ucmV3YXJkX192YWx1ZS1pY29ue2ZsZXgtc2hyaW5rOjA7aGVpZ2h0OjE2cHg7bWFyZ2luLXJpZ2h0OjhweDt3aWR0aDoxNnB4fS5yZXdhcmRfX3ZhbHVlLXRleHR7Y29sb3I6cmdiKHZhcigtLWNvbG9yLWdyYXktZGFyaykvMSl9LnN0YXR7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOi0zNnB4fS5zdGF0Pip7bWFyZ2luOjM2cHh9QG1lZGlhIChtaW4td2lkdGg6NzYwcHgpey5zdGF0e2ZsZXgtd3JhcDpub3dyYXB9fS5zdGF0X19pdGVte3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEwMCV9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5zdGF0X19pdGVte3dpZHRoOjIyMHB4fX1AbWVkaWEgKG1pbi13aWR0aDo3NjBweCl7LnN0YXRfX2l0ZW17d2lkdGg6YXV0b319QG1lZGlhIChtaW4td2lkdGg6MTI0MHB4KXsuc3RhdF9faXRlbXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O3RleHQtYWxpZ246bGVmdH19LnN0YXRfX3ZhbHVle2NvbG9yOnJnYih2YXIoLS1jb2xvci1kYXJrKS8xKX1AbWVkaWEgKG1pbi13aWR0aDoxMjQwcHgpey5zdGF0X192YWx1ZXttYXJnaW4tcmlnaHQ6MTZweH19LnJldmlld3tiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvMSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93LXNtKTtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFyaykvMSk7cGFkZGluZzoyNHB4O3dpZHRoOjM2NHB4fS5yZXZpZXdfX2hlYWRlcnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO21hcmdpbi1ib3R0b206MTZweH0ucmV2aWV3X19hdmF0YXJ7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO2hlaWdodDo0OHB4O3dpZHRoOjQ4cHh9LnJldmlld19fdXNlcnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O21hcmdpbi1ib3R0b206OHB4O3doaXRlLXNwYWNlOm5vd3JhcH0ucmV2aWV3X19uYW1le21hcmdpbi1yaWdodDo4cHg7bWF4LXdpZHRoOjEwMCU7bWluLXdpZHRoOjA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5yZXZpZXdfX3Jldmlld2Vke2NvbG9yOnJnYih2YXIoLS1jb2xvci1ncmF5LWRhcmspLzEpfS5yZXZpZXdfX25lb3N7ZmxleC1zaHJpbms6MDtoZWlnaHQ6MjBweDttYXJnaW4tbGVmdDoxNnB4O3dpZHRoOjg2cHh9LnJldmlld19fdGV4dHstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1saW5lLWNsYW1wOjQ7ZGlzcGxheTotd2Via2l0LWJveDtvdmVyZmxvdzpoaWRkZW59QG1lZGlhIChtaW4td2lkdGg6MTI0MHB4KXsub3BpbmlvbnN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtaW5tYXgoMCwxZnIpKX19Lm9waW5pb25zX19yZXZpZXdzLWNvbnRhaW5lcntwYWRkaW5nOjY0cHggMjBweH0ub3BpbmlvbnNfX3N0b3JpZXMtY29udGFpbmVye292ZXJmbG93OmhpZGRlbn1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7Lm9waW5pb25zX19zdG9yaWVzLWNvbnRhaW5lcntoZWlnaHQ6Y2FsYyg0NTMuMzMzMzNweCArIDMyLjQwNzQxdncpfX0ub3BpbmlvbnNfX3Jldmlld3MtY29udGFpbmVye2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1saWdodCkvMSk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO292ZXJmbG93OmhpZGRlbn0ub3BpbmlvbnNfX3Jldmlld3N7bWF4LXdpZHRoOjEwMCV9LnZpZGVvc3stLXRleHQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS8xKTtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1kYXJrKS8xKTtjb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzEpO2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9QG1lZGlhIChtYXgtd2lkdGg6OTkxcHgpey52aWRlb3N7aGVpZ2h0OjEwMCV9fS52aWRlb3NfX2l0ZW17aGVpZ2h0OjEwMCU7cG9zaXRpb246cmVsYXRpdmV9LnZpZGVvc19faXRlbS1pbWFnZXtoZWlnaHQ6MTAwJTstby1vYmplY3QtZml0OmNvdmVyO29iamVjdC1maXQ6Y292ZXI7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJX0udmlkZW9zX19pdGVtLWNvbnRlbnR7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE4MGRlZyx0cmFuc3BhcmVudCAyMCUscmdiYSgwLDAsMCwuOSkpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCU7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3BhZGRpbmctYm90dG9tOjEwNHB4O3BhZGRpbmctbGVmdDoyMHB4O3BhZGRpbmctcmlnaHQ6MjBweDtwb3NpdGlvbjpyZWxhdGl2ZX0udmlkZW9zX19pdGVtLXRpdGxle2ZvbnQtd2VpZ2h0OjkwMDttYXJnaW4tYm90dG9tOjI0cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LnZpZGVvcyAuc3dpcGVyLXNjcm9sbGJhcntib3R0b206NDhweCFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudDttYXJnaW4tdG9wOjAhaW1wb3J0YW50O3Bvc2l0aW9uOmFic29sdXRlfUBtZWRpYSAobWluLXdpZHRoOjc2MHB4KXsudmlkZW9zIC5zd2lwZXItc2Nyb2xsYmFye2JvdHRvbTo1NnB4IWltcG9ydGFudH19Lm5lb3MtdmFsdWVze2Rpc3BsYXk6Z3JpZDttYXJnaW46MCBhdXRvIDQ4cHg7bWF4LXdpZHRoOjEyNDBweH1AbWVkaWEgKG1pbi13aWR0aDo3NjBweCl7Lm5lb3MtdmFsdWVze2dhcDo2NHB4O2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCw3ZnIpIG1pbm1heCgwLDlmcil9fUBtZWRpYSAobWF4LXdpZHRoOjc1OXB4KXsubmVvcy12YWx1ZXNfX3RhYnN7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7ZGlzcGxheTpmbGV4O21hcmdpbi1ib3R0b206MjBweDtvdmVyZmxvdzphdXRvO3BhZGRpbmctYm90dG9tOjIwcHh9fUBtZWRpYSAobWluLXdpZHRoOjc2MHB4KXsubmVvcy12YWx1ZXNfX3RhYnN7bWF4LXdpZHRoOjkwJTt3aWR0aDozNTBweH19Lm5lb3MtdmFsdWVzX190YWJ7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0O3doaXRlLXNwYWNlOm5vcm1hbH1AbWVkaWEgKG1heC13aWR0aDo3NTlweCl7Lm5lb3MtdmFsdWVzX190YWJ7d2hpdGUtc3BhY2U6bm93cmFwfS5uZW9zLXZhbHVlc19fdGFiOm5vdCg6bGFzdC1jaGlsZCl7bWFyZ2luLXJpZ2h0OjMycHh9Lm5lb3MtdmFsdWVzX190YWIgLmljb257ZGlzcGxheTpub25lfX1AbWVkaWEgKG1pbi13aWR0aDo3NjBweCl7Lm5lb3MtdmFsdWVzX190YWJ7Zm9udC1mYW1pbHk6dmFyKC0tZm9udC1wcmltYXJ5KTtmb250LXNpemU6dmFyKC0tZm9udC1zaXplLWgyKTtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXByaW1hcnktaDIpfS5uZW9zLXZhbHVlc19fdGFiOm5vdCg6bGFzdC1jaGlsZCl7bWFyZ2luLWJvdHRvbTo0OHB4fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7Lm5lb3MtdmFsdWVzX190YWI6bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tYm90dG9tOjY0cHh9fS5uZW9zLXZhbHVlc19fdGFiLmlzLWFjdGl2ZXtjb2xvcjpyZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkvMSl9Lm5lb3MtdmFsdWVzX190YWIuaXMtYWN0aXZlIC5pY29ue29wYWNpdHk6MX0ubmVvcy12YWx1ZXNfX3RhYiBzcGFue3Bvc2l0aW9uOnJlbGF0aXZlfS5uZW9zLXZhbHVlc19fdGFiIC5pY29ue2JvdHRvbTouMjVlbTtoZWlnaHQ6LjhlbTtsZWZ0OjEwMCU7bWFyZ2luLWxlZnQ6MTZweDtvcGFjaXR5OjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6LjhlbX0ubmVvcy12YWx1ZXNfX3BhbmVsc3tjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFyaykvMSl9Lm5lb3MtdmFsdWVzX19wYW5lbHMgcHtsaW5lLWhlaWdodDoxLjV9LmNvbW1lbnQtZm9ybXtkaXNwbGF5OmZsZXh9LmNvbW1lbnQtZm9ybV9fZmllbGR7ZmxleC1ncm93OjF9LmNvbW1lbnQtZm9ybV9fc3VibWl0e2ZsZXgtc2hyaW5rOjA7bWFyZ2luLWxlZnQ6MTZweH0uY29tbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1saWdodCkvMSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO3BhZGRpbmc6MjRweH0uY29tbWVudF9faGVhZGVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjttYXJnaW4tYm90dG9tOjE2cHh9LmNvbW1lbnRfX3VzZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDttYXJnaW4tcmlnaHQ6MjRweDttaW4td2lkdGg6MH0uY29tbWVudF9fYXZhdGFyLWNvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZX0uY29tbWVudF9fYXZhdGFyLXZpcHtib3JkZXI6MnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci12aXApLzEpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwMCU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LmNvbW1lbnRfX2F2YXRhci1jcm93bnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItdmlwKS8xKTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtib3R0b206LTJweDtjb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzEpO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmc6M3B4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi0ycHh9LmNvbW1lbnRfX2F2YXRhci1jcm93bi1pY29ue2hlaWdodDoxMnB4O3dpZHRoOjEycHh9LmNvbW1lbnRfX2F2YXRhcntib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCk7ZmxleC1zaHJpbms6MH0uY29tbWVudF9fbmFtZXttYXJnaW4tbGVmdDoxNnB4O21heC13aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0uY29tbWVudF9fbGFiZWx7Y29sb3I6cmdiKHZhcigtLWNvbG9yLWdyYXktZGFyaykvMSk7bWFyZ2luLWxlZnQ6OHB4fUBtZWRpYSAobWF4LXdpZHRoOjc1OXB4KXsuY29tbWVudF9fbGFiZWx7ZGlzcGxheTpub25lfX0uY29tbWVudF9fbGlrZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uY29tbWVudF9fbGlrZS5pcy1saWtlZCAuY29tbWVudF9fbGlrZS1jb3VudHtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFuZ2VyKS8xKX0uY29tbWVudF9fbGlrZSAuaWNvbntmaWxsOnJnYih2YXIoLS1jb2xvci1kYW5nZXIpLzEpO2hlaWdodDoyNHB4O21hcmdpbi1yaWdodDo4cHg7d2lkdGg6MjRweH0uY29tbWVudF9fbGlrZS1jb3VudHtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZ3JheS1kYXJrKS8xKX0uYmxvZy1jYXJke2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS8xKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCk7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3ctc20pO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47b3ZlcmZsb3c6aGlkZGVuO3RyYW5zaXRpb24tZHVyYXRpb246LjNzO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtLGJveC1zaGFkb3c7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9QG1lZGlhIChob3Zlcjpob3Zlcil7LmJsb2ctY2FyZDpob3Zlcntib3gtc2hhZG93OnZhcigtLXNoYWRvdy1sZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLThweCl9LmJsb2ctY2FyZDpob3ZlciAuYmxvZy1jYXJkX190aXRsZXtjb2xvcjpyZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkvMSl9fUBtZWRpYSAobWF4LXdpZHRoOjk5MXB4KXsuYmxvZy1jYXJkLS13aWRlIC5ibG9nLWNhcmRfX3ByZXZpZXcsLmJsb2ctY2FyZC0td2lkZSAuYmxvZy1jYXJkX19yZWFkbW9yZXtkaXNwbGF5Om5vbmV9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuYmxvZy1jYXJkLS13aWRle2ZsZXgtZGlyZWN0aW9uOnJvd30uYmxvZy1jYXJkLS13aWRlIC5ibG9nLWNhcmRfX2ltYWdlLW91dGVye2ZsZXg6MSAwIGF1dG87d2lkdGg6NDguMjc1ODYyMDY5JX0uYmxvZy1jYXJkLS13aWRlIC5ibG9nLWNhcmRfX2JvZHl7cGFkZGluZzpjYWxjKDE4LjY2NjY3cHggKyAuOTI1OTN2dykgY2FsYygxMy4zMzMzM3B4ICsgMS44NTE4NXZ3KX19LmJsb2ctY2FyZF9faW1hZ2Utb3V0ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItbGlnaHQpLzEpfS5ibG9nLWNhcmRfX2ltYWdlLWJveHtoZWlnaHQ6MTAwJTtwYWRkaW5nLWJvdHRvbTo1Ni4yNSU7cG9zaXRpb246cmVsYXRpdmV9LmJsb2ctY2FyZF9faW1hZ2V7aGVpZ2h0OjEwMCU7bGVmdDowOy1vLW9iamVjdC1maXQ6Y292ZXI7b2JqZWN0LWZpdDpjb3Zlcjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS5ibG9nLWNhcmRfX2JvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MTtoZWlnaHQ6MTAwJTtwYWRkaW5nOjI0cHh9LmJsb2ctY2FyZF9fdGl0bGV7Y29sb3I6cmdiKHZhcigtLWNvbG9yLWRhcmspLzEpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpfS5ibG9nLWNhcmRfX3ByZXZpZXcsLmJsb2ctY2FyZF9fdGl0bGV7bWFyZ2luLWJvdHRvbToxNnB4fS5ibG9nLWNhcmRfX3JlYWRtb3Jle2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjpyZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkvMSk7ZGlzcGxheTpmbGV4O21hcmdpbi1ib3R0b206MjRweH0uYmxvZy1jYXJkX19yZWFkbW9yZSAuaWNvbntoZWlnaHQ6MTZweDttYXJnaW4tbGVmdDo4cHg7d2lkdGg6MTZweH0uYmxvZy1jYXJkX19tZXRhe2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7bWFyZ2luLXRvcDphdXRvfS5ibG9nLWNhcmRfX2NvbW1lbnRze2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7bWFyZ2luLXJpZ2h0OjE2cHh9LmJsb2ctY2FyZF9fY29tbWVudHMgLmljb257aGVpZ2h0OjE2cHg7bWFyZ2luLXJpZ2h0OjhweDt3aWR0aDoxNnB4fS5ibG9nLWNhcmRfX2NhdGVnb3J5e2NvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xKTttYXJnaW4tcmlnaHQ6YXV0bztwYWRkaW5nLXJpZ2h0OjI0cHh9LmJsb2ctY2F0c3thbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4fS5ibG9nLWNhdHNfX2l0ZW06bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6NDBweH1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuYmxvZy1jYXRzX19saW5rOmhvdmVye2NvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xKX19LmJsb2ctY2F0c19fbGluay5pcy1hY3RpdmV7Y29sb3I6cmdiKHZhcigtLWNvbG9yLWRhcmspLzEpfS5ibG9nLWFydGljbGV7bWFyZ2luOjAgYXV0bzttYXgtd2lkdGg6OTIwcHh9LmJsb2ctYXJ0aWNsZV9faGVhZGVye21hcmdpbi1ib3R0b206NDBweDt0ZXh0LWFsaWduOmNlbnRlcn0uYmxvZy1hcnRpY2xlX190aXRsZXtmb250LXdlaWdodDo5MDA7bWFyZ2luOjAgYXV0byAyNHB4O21heC13aWR0aDo4MDBweH0uYmxvZy1hcnRpY2xlX19zaG9ydHtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFyaykvMSk7bWFyZ2luOjAgYXV0byAyNHB4O21heC13aWR0aDo2MDBweH0uYmxvZy1hcnRpY2xlX19wb3N0ZXJ7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjQwcHh9LmJsb2ctYXJ0aWNsZV9fYm9keXtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFyaykvMSk7bWFyZ2luOjAgYXV0bzttYXgtd2lkdGg6ODAwcHh9LmJsb2ctYXJ0aWNsZV9fY29udGVudCBwOm5vdCg6bGFzdC1jaGlsZCl7bWFyZ2luLWJvdHRvbTozMnB4fS5ibG9nLWFydGljbGVfX2NvbnRlbnQgaDIsLmJsb2ctYXJ0aWNsZV9fY29udGVudCBoMywuYmxvZy1hcnRpY2xlX19jb250ZW50IGg0LC5ibG9nLWFydGljbGVfX2NvbnRlbnQgaDUsLmJsb2ctYXJ0aWNsZV9fY29udGVudCBoNnttYXJnaW4tYm90dG9tOjE2cHh9LmJsb2ctYXJ0aWNsZV9fY29udGVudCBpbWd7ZGlzcGxheTpibG9jazttYXJnaW46MzJweCBhdXRvfS5ibG9nLWFydGljbGVfX3NoYXJle2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bWFyZ2luLWJvdHRvbToxNnB4O21hcmdpbi10b3A6NDBweH0uYmxvZy1hcnRpY2xlX19zaGFyZS10aXRsZXttYXJnaW4tYm90dG9tOjI0cHg7bWFyZ2luLXJpZ2h0OjMycHh9LmJsb2ctYXJ0aWNsZV9fY29tbWVudHMtZm9ybSwuYmxvZy1hcnRpY2xlX19jb21tZW50cy1oZWFkZXIsLmJsb2ctYXJ0aWNsZV9fc2hhcmUtbmV0d29ya3N7bWFyZ2luLWJvdHRvbToyNHB4fS5ibG9nLWFydGljbGVfX2NvbW1lbnRzLWl0ZW06bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tYm90dG9tOjE2cHh9LmJsdXJ7YmFja2dyb3VuZC1wb3NpdGlvbjowIDA7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb3ZlcjtoZWlnaHQ6MTE1MHB4O29wYWNpdHk6LjM7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTE1MHB4O3otaW5kZXg6dmFyKC0tei1uZWdhdGl2ZSl9LmJsdXItLWJsdWV7YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL2JsdWUtb3ZhbC5wbmcpfS5ibHVyLS1ncmVlbntiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvZ3JlZW4tb3ZhbC5wbmcpfS5ibHVyLS1yZWR7YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL3JlZC1vdmFsLnBuZyl9LmJsdXItLXZpcHtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvdmlwLW92YWwucG5nKX0ubWFzcy1tZWRpYXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbjotMjBweH0ubWFzcy1tZWRpYV9faXRlbXttYXJnaW46MjBweH0ubWFzcy1tZWRpYV9fbGlua3tmaWx0ZXI6Z3JheXNjYWxlKDEpIGJyaWdodG5lc3MoMCkgaW52ZXJ0KC41NSk7dHJhbnNpdGlvbjphbGwgLjE1c31AbWVkaWEgKGhvdmVyOmhvdmVyKXsubWFzcy1tZWRpYV9fbGluazpob3ZlcntmaWx0ZXI6bm9uZTtvcGFjaXR5OjF9fS5idXktb3JkZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS83MCUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtkaXNwbGF5OmZsZXg7Z2FwOjE2cHg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzoxNnB4fUBtZWRpYSAobWluLXdpZHRoOjc2MHB4KXsuYnV5LW9yZGVye2dhcDoyNHB4O3BhZGRpbmc6MTZweCAyNHB4fX0uYnV5LW9yZGVyX19pdGVte2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleDoxIDAgMCU7bWF4LXdpZHRoOjE5NXB4O21pbi13aWR0aDowO3doaXRlLXNwYWNlOm5vd3JhcH0uYnV5LW9yZGVyX19ib2R5e21pbi13aWR0aDowfS5idXktb3JkZXJfX2N1cnJlbmN5e2ZsZXgtc2hyaW5rOjA7aGVpZ2h0OjI0cHg7bWFyZ2luLXJpZ2h0OjhweDt3aWR0aDoyNHB4fUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuYnV5LW9yZGVyX19jdXJyZW5jeXttYXJnaW4tcmlnaHQ6MTZweH19QG1lZGlhIChtaW4td2lkdGg6MTA4MHB4KXsuYnV5LW9yZGVyX19jdXJyZW5jeXtoZWlnaHQ6MzJweDt3aWR0aDozMnB4fX0uYnV5LW9yZGVyX192YWx1ZXtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFyaykvMSl9QG1lZGlhIChtYXgtd2lkdGg6MTA3OXB4KXsuYnV5LW9yZGVyX192YWx1ZXtmb250LXNpemU6MTRweH19LmJ1eS1vcmRlcl9fbGFiZWx7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5idXktb3JkZXJfX2Fycntjb2xvcjpyZ2IodmFyKC0tY29sb3ItZ3JheSkvMSk7ZmxleC1zaHJpbms6MH1AbWVkaWEgKG1heC13aWR0aDo3NTlweCl7LmJ1eS1vcmRlcl9fYXJye2Rpc3BsYXk6bm9uZX19LnNlbGwtb3JkZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS83MCUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtkaXNwbGF5OmZsZXg7Z2FwOjE2cHg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzoxNnB4fUBtZWRpYSAobWluLXdpZHRoOjc2MHB4KXsuc2VsbC1vcmRlcntnYXA6MjRweDtwYWRkaW5nOjE2cHggMjRweH19LnNlbGwtb3JkZXJfX2l0ZW17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4OjEgMCAwJTttYXgtd2lkdGg6MTYwcHg7bWluLXdpZHRoOjA7d2hpdGUtc3BhY2U6bm93cmFwfS5zZWxsLW9yZGVyX19ib2R5e21pbi13aWR0aDowfS5zZWxsLW9yZGVyX19jdXJyZW5jeXtmbGV4LXNocmluazowO2hlaWdodDoyNHB4O21hcmdpbi1yaWdodDo4cHg7d2lkdGg6MjRweH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LnNlbGwtb3JkZXJfX2N1cnJlbmN5e21hcmdpbi1yaWdodDoxNnB4fX1AbWVkaWEgKG1pbi13aWR0aDoxMDgwcHgpey5zZWxsLW9yZGVyX19jdXJyZW5jeXtoZWlnaHQ6MzJweDt3aWR0aDozMnB4fX0uc2VsbC1vcmRlcl9fdmFsdWV7Y29sb3I6cmdiKHZhcigtLWNvbG9yLWRhcmspLzEpfUBtZWRpYSAobWF4LXdpZHRoOjEwNzlweCl7LnNlbGwtb3JkZXJfX3ZhbHVle2ZvbnQtc2l6ZToxNHB4fX0uc2VsbC1vcmRlcl9fbGFiZWx7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5zZWxsLW9yZGVyX19hcnJ7Y29sb3I6cmdiKHZhcigtLWNvbG9yLWdyYXkpLzEpO2ZsZXgtc2hyaW5rOjB9QG1lZGlhIChtYXgtd2lkdGg6NzU5cHgpey5zZWxsLW9yZGVyX19hcnJ7ZGlzcGxheTpub25lfX0ub3Atb3JkZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS83MCUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzoxNnB4fUBtZWRpYSAobWluLXdpZHRoOjc2MHB4KXsub3Atb3JkZXJ7cGFkZGluZzoxNnB4IDI0cHh9fS5vcC1vcmRlcl9faXRlbXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXg6MSAwIDAlO21heC13aWR0aDoyMTBweDttaW4td2lkdGg6MDt3aGl0ZS1zcGFjZTpub3dyYXB9Lm9wLW9yZGVyX19jdXJyZW5jeXtmbGV4LXNocmluazowO2hlaWdodDoyNHB4O21hcmdpbi1yaWdodDoxNnB4O3dpZHRoOjI0cHh9QG1lZGlhIChtYXgtd2lkdGg6NTc1cHgpey5vcC1vcmRlcl9fY3VycmVuY3l7ZGlzcGxheTpub25lfX1AbWVkaWEgKG1pbi13aWR0aDoxMDgwcHgpey5vcC1vcmRlcl9fY3VycmVuY3l7aGVpZ2h0OjMycHg7d2lkdGg6MzJweH19Lm9wLW9yZGVyX192YWx1ZXtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFyaykvMSl9QG1lZGlhIChtYXgtd2lkdGg6MTA3OXB4KXsub3Atb3JkZXJfX3ZhbHVle2ZvbnQtc2l6ZToxNHB4fX0ub3Atb3JkZXJfX2Fycntjb2xvcjpyZ2IodmFyKC0tY29sb3ItZ3JheSkvMSk7ZmxleC1zaHJpbms6MDttYXJnaW46MCAxNnB4fUBtZWRpYSAobWluLXdpZHRoOjc2MHB4KXsub3Atb3JkZXJfX2FycnttYXJnaW46MCAyNHB4fX0ub3AtcmF0ZV9fdGFicy1saXN0e2Rpc3BsYXk6Z3JpZDtnYXA6MTZweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSk7bWFyZ2luLWJvdHRvbToxNnB4fS5vcC1yYXRlX190YWJ7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS82MCUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtkaXNwbGF5OmZsZXg7cGFkZGluZzoxNnB4O3RleHQtYWxpZ246bGVmdDt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi1wcm9wZXJ0eTpiYWNrZ3JvdW5kLWNvbG9yO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpfS5vcC1yYXRlX190YWIuaXMtYWN0aXZle2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS8xKX0ub3AtcmF0ZV9faXRlbXthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzYwJSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjE2cHh9Lm9wLXJhdGVfX2l0ZW0rLm9wLXJhdGVfX2l0ZW17bWFyZ2luLXRvcDoxNnB4fS5vcC1yYXRlX19jdXJyZW5jeXtmbGV4LXNocmluazowO2hlaWdodDozMnB4O21hcmdpbi1yaWdodDoxNnB4O3dpZHRoOjMycHh9Lm9wLXJhdGVfX3RpdGxle2NvbG9yOnJnYih2YXIoLS1jb2xvci1kYXJrKS8xKX0ub3AtcmF0ZV9fdmFsdWV7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDttYXJnaW4tbGVmdDphdXRvO3BhZGRpbmctbGVmdDoxNnB4fS5vcC1yYXRlX192YWx1ZS5pcy11cHtjb2xvcjpyZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KS8xKX0ub3AtcmF0ZV9fdmFsdWUuaXMtZG93bntjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFuZ2VyKS8xKX0ub3AtcmF0ZV9fdmFsdWUtaWNvbntmbGV4LXNocmluazowO2hlaWdodDoxMnB4O21hcmdpbi1sZWZ0OjhweDt3aWR0aDoxMnB4fS5pcy11cCAub3AtcmF0ZV9fdmFsdWUtaWNvbnt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9LmZhbmN5Ym94X19zbGlkZXtwYWRkaW5nOjQ4cHggOHB4fS5mYW5jeWJveF9fc2xpZGUuaGFzLWNsb25lIC5mYW5jeWJveF9fY29udGVudCwuZmFuY3lib3hfX3NsaWRlLmhhcy1pbmxpbmUgLmZhbmN5Ym94X19jb250ZW50e2JvcmRlci1yYWRpdXM6NDBweH0uZmFuY3lib3hfX3NsaWRlLmhhcy1jbG9uZSAuZmFuY3lib3hfX2NvbnRlbnQ+LmNhcm91c2VsX19idXR0b24uaXMtY2xvc2UsLmZhbmN5Ym94X19zbGlkZS5oYXMtaW5saW5lIC5mYW5jeWJveF9fY29udGVudD4uY2Fyb3VzZWxfX2J1dHRvbi5pcy1jbG9zZXtyaWdodDoyNHB4O3RvcDoyNHB4fUBtZWRpYSAobWluLXdpZHRoOjc2MHB4KXsuZmFuY3lib3hfX3NsaWRlLmhhcy1jbG9uZSAuZmFuY3lib3hfX2NvbnRlbnQ+LmNhcm91c2VsX19idXR0b24uaXMtY2xvc2UsLmZhbmN5Ym94X19zbGlkZS5oYXMtaW5saW5lIC5mYW5jeWJveF9fY29udGVudD4uY2Fyb3VzZWxfX2J1dHRvbi5pcy1jbG9zZXtyaWdodDozMnB4O3RvcDozMnB4fX0uZmFuY3lib3hfX3NsaWRlLmhhcy12aWRlbyAuZmFuY3lib3hfX2NvbnRlbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFyaykvMSkhaW1wb3J0YW50fS5mYW5jeWJveF9fc2xpZGUuaGFzLXZpZGVvIC5mYW5jeWJveF9fY29udGVudD4uY2Fyb3VzZWxfX2J1dHRvbi5pcy1jbG9zZXtjb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLy43NSl9LmZhbmN5Ym94X19jb250ZW50e3BhZGRpbmc6MzJweCAyNHB4fS5mYW5jeWJveF9fY29udGVudD4uY2Fyb3VzZWxfX2J1dHRvbi5pcy1jbG9zZXtib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50O2NvbG9yOnJnYih2YXIoLS1jb2xvci1ncmF5LWRhcmspLzEpO2hlaWdodDoyNHB4O3dpZHRoOjI0cHh9LmZhbmN5Ym94X19jb250ZW50Pi5jYXJvdXNlbF9fYnV0dG9uLmlzLWNsb3NlIHN2Z3tmaWx0ZXI6bm9uZTtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5ub3R5Zl9fdG9hc3R7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93LW1kKX0ubm90eWZfX3RvYXN0LS1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1kYW5nZXIpLzEpIWltcG9ydGFudH0ubm90eWZfX3RvYXN0LS1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkvMSkhaW1wb3J0YW50fS5ub3R5Zl9faWNvbntmbGV4LXNocmluazowfS5ub3R5Zl9faWNvbi0tZXJyb3J7Y29sb3I6cmdiKHZhcigtLWNvbG9yLWRhbmdlcikvMSkhaW1wb3J0YW50fS5ub3R5Zl9faWNvbi0tc3VjY2Vzc3tjb2xvcjpyZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KS8xKSFpbXBvcnRhbnR9LmNvbW11bml0eV9fc29je2dyaWQtcm93LWdhcDo4MHB4O2dyaWQtY29sdW1uLWdhcDozMnB4O2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKTttYXJnaW4tYm90dG9tOjgwcHh9QG1lZGlhIChtaW4td2lkdGg6NzYwcHgpey5jb21tdW5pdHlfX3NvY3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSl9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY29tbXVuaXR5X19zb2N7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLG1pbm1heCgwLDFmcikpfX1AbWVkaWEgKG1pbi13aWR0aDoxMjQwcHgpey5jb21tdW5pdHlfX3NvY3tncmlkLWNvbHVtbi1nYXA6NjRweH19QG1lZGlhIChtaW4td2lkdGg6NzYwcHgpIGFuZCAobWF4LXdpZHRoOjk5MXB4KXsuY29tbXVuaXR5X190d3tncmlkLWNvbHVtbi1lbmQ6LTE7Z3JpZC1jb2x1bW4tc3RhcnQ6MX19LmNvbW11bml0eV9feXQtdmlkZW9ze2Rpc3BsYXk6Z3JpZDtnYXA6MzJweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKX1AbWVkaWEgKG1pbi13aWR0aDo3NjBweCl7LmNvbW11bml0eV9feXQtdmlkZW9ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtaW5tYXgoMCwxZnIpKX19QG1lZGlhIChtaW4td2lkdGg6MTI0MHB4KXsuY29tbXVuaXR5X195dC12aWRlb3N7Z2FwOjY0cHh9fS5jb21tdW5pdHlfX3l0LXZpZGVvcyBpZnJhbWV7YXNwZWN0LXJhdGlvOjE2Lzl9LmNvbW11bml0eV9faWNvbntmaWxsOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xKTtoZWlnaHQ6NDhweDttYXJnaW4tYm90dG9tOjMycHg7d2lkdGg6NDhweH0uY29tbXVuaXR5IGlmcmFtZXt3aWR0aDoxMDAlfUBrZXlmcmFtZXMgc29jLXByb29mLWFuaW1hdGlvbnswJXtvcGFjaXR5OjB9dG97b3BhY2l0eToxfX0uc29jLXByb29mLWNvbnRhaW5lcntib3R0b206MDtsZWZ0OjA7cGFkZGluZzoxNHB4O3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDp2YXIoLS16LW5vdGlmaWNhdGlvbil9QG1lZGlhIChtaW4td2lkdGg6NzYwcHgpey5zb2MtcHJvb2YtY29udGFpbmVye3BhZGRpbmc6MzJweH19LnNvYy1wcm9vZnthbGlnbi1pdGVtczpjZW50ZXI7YW5pbWF0aW9uOnNvYy1wcm9vZi1hbmltYXRpb24gLjVzIGVhc2U7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzEpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtib3gtc2hhZG93OnZhcigtLXNoYWRvdy1tZCk7ZGlzcGxheTpmbGV4O2dhcDo4cHg7cGFkZGluZzoxNnB4O3BvaW50ZXItZXZlbnRzOmFsbDt3aWR0aDoyNjBweH0uc29jLXByb29mLmVhcm5lZF9uZW9zX3Jld2FyZCBtYXJrLC5zb2MtcHJvb2YubGVmdF9hX2NvbW1lbnQgbWFyaywuc29jLXByb29mLmxpa2VkX2FfY29tbWVudCBtYXJrLC5zb2MtcHJvb2YubWFkZV9hX3ZpZGVvX3JldmlldyBtYXJre2NvbG9yOnJnYih2YXIoLS1jb2xvci1wcmltYXJ5KS8xKX0uc29jLXByb29mLmpvaW5lZF9yZWRfcGlsbF9wcm8gbWFya3tjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFuZ2VyKS8xKX0uc29jLXByb29mLnN0YWtlZF9uZW9zIG1hcmt7Y29sb3I6cmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkvMSl9LnNvYy1wcm9vZi5zdGFrZWRfYml0Y29pbiBtYXJre2NvbG9yOiNmNzkzMWF9LnNvYy1wcm9vZi5zdGFrZWRfbGl0ZWNvaW4gbWFya3tjb2xvcjojMzQ1ZDlkfS5zb2MtcHJvb2ZfX2F2YXRhci1jb250YWluZXJ7ZmxleC1zaHJpbms6MDtwb3NpdGlvbjpyZWxhdGl2ZX0uc29jLXByb29mX19hdmF0YXItY29udGFpbmVyOmFmdGVye2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkvMSk7Ym9yZGVyLXJhZGl1czoxMDAlO2JvdHRvbTotMnB4O2NvbnRlbnQ6IiI7aGVpZ2h0OjhweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMnB4O3dpZHRoOjhweH0uc29jLXByb29mX19hdmF0YXJ7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO2hlaWdodDozMnB4O3dpZHRoOjMycHh9LnNvYy1wcm9vZl9fYnV0dG9ue2ZsZXgtc2hyaW5rOjA7cG9pbnRlci1ldmVudHM6bm9uZX0uc29jLXByb29mX19ib2R5e21pbi13aWR0aDowO3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMnB4fS5zb2MtcHJvb2ZfX3R5cGVuYW1lLC5zb2MtcHJvb2ZfX3VzZXJuYW1le21heC13aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0uc29jLXByb29mX190eXBlbmFtZXtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFyaykvMSl9LmJmcmlkYXl7YmFja2dyb3VuZDp1cmwoLi4vaW1nL2JnLW1hdHJpeC1ibnIucG5nKSBuby1yZXBlYXQgNTAlIDA7YmFja2dyb3VuZC1jb2xvcjojMWExYTFhO2JhY2tncm91bmQtc2l6ZTpjb3Zlcjtjb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzEpfS5iZnJpZGF5X19jb250ZW50LC5iZnJpZGF5X190ZXh0e2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uYmZyaWRheV9fdGV4dHtmbGV4LWdyb3c6MTttaW4taGVpZ2h0OjYwcHh9QG1lZGlhIChtYXgtd2lkdGg6NzU5cHgpey5iZnJpZGF5X190ZXh0e3BhZGRpbmc6MTZweCAwfX1AbWVkaWEgKG1pbi13aWR0aDo3NjBweCl7LmJmcmlkYXlfX3RleHR7dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfX0uYmZyaWRheV9fdGV4dCBpbWd7ZGlzcGxheTppbmxpbmU7ZmxleC1zaHJpbms6MTttaW4td2lkdGg6MH1AbWVkaWEgKG1heC13aWR0aDo3NTlweCl7LmJmcmlkYXlfX3RleHQgaW1ne2Rpc3BsYXk6bm9uZX19LmJmcmlkYXlfX2Nsb3Nle2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tbGVmdDphdXRvO3BhZGRpbmctbGVmdDoxNnB4fS5wb2ludGVyLWV2ZW50cy1ub25le3BvaW50ZXItZXZlbnRzOm5vbmV9LnZpc2libGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5zdGF0aWN7cG9zaXRpb246c3RhdGljfS5hYnNvbHV0ZXtwb3NpdGlvbjphYnNvbHV0ZX0ucmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmV9LnRvcC1cWzBcLjE1ZW1cXXt0b3A6LjE1ZW19LnJpZ2h0LTB7cmlnaHQ6MH0uYm90dG9tLTB7Ym90dG9tOjB9LmxlZnQtMVwvMntsZWZ0OjUwJX0ubGVmdC0we2xlZnQ6MH0udG9wLTB7dG9wOjB9LnRvcC0zMnt0b3A6MzJweH0uYm90dG9tLTMye2JvdHRvbTozMnB4fS56LXBhZ2V7ei1pbmRleDp2YXIoLS16LXBhZ2UpfS5teS00MHttYXJnaW4tYm90dG9tOjQwcHg7bWFyZ2luLXRvcDo0MHB4fS5teC1hdXRve21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99Lm14LTI0e21hcmdpbi1sZWZ0OjI0cHg7bWFyZ2luLXJpZ2h0OjI0cHh9Lm15LTI0e21hcmdpbi1ib3R0b206MjRweDttYXJnaW4tdG9wOjI0cHh9Lm15LTMye21hcmdpbi1ib3R0b206MzJweDttYXJnaW4tdG9wOjMycHh9Lm15LTE2e21hcmdpbi1ib3R0b206MTZweDttYXJnaW4tdG9wOjE2cHh9Lm15LWF1dG97bWFyZ2luLWJvdHRvbTphdXRvO21hcmdpbi10b3A6YXV0b30ubXktNTZ7bWFyZ2luLWJvdHRvbTo1NnB4O21hcmdpbi10b3A6NTZweH0ubWItMjR7bWFyZ2luLWJvdHRvbToyNHB4fS5tci0yNHttYXJnaW4tcmlnaHQ6MjRweH0ubWItMTJ7bWFyZ2luLWJvdHRvbToxMnB4fS5tci0xNnttYXJnaW4tcmlnaHQ6MTZweH0ubWItMTZ7bWFyZ2luLWJvdHRvbToxNnB4fS5tYi0zMnttYXJnaW4tYm90dG9tOjMycHh9Lm1iLTQ4e21hcmdpbi1ib3R0b206NDhweH0ubXQtOHttYXJnaW4tdG9wOjhweH0ubWItNDB7bWFyZ2luLWJvdHRvbTo0MHB4fS5tYi02NHttYXJnaW4tYm90dG9tOjY0cHh9Lm10LTMye21hcmdpbi10b3A6MzJweH0ubXQtNDB7bWFyZ2luLXRvcDo0MHB4fS4tbWwtXFsyM1wlXF17bWFyZ2luLWxlZnQ6LTIzJX0ubWItOHttYXJnaW4tYm90dG9tOjhweH0ubXQtNDh7bWFyZ2luLXRvcDo0OHB4fS5tYi04MHttYXJnaW4tYm90dG9tOjgwcHh9Lm1iLTU2e21hcmdpbi1ib3R0b206NTZweH0ubWItXFsxMHB4XF17bWFyZ2luLWJvdHRvbToxMHB4fS5tYi00e21hcmdpbi1ib3R0b206NHB4fS5tdC0yNHttYXJnaW4tdG9wOjI0cHh9Li1tYi0zMnttYXJnaW4tYm90dG9tOi0zMnB4fS5tdC0xNnttYXJnaW4tdG9wOjE2cHh9Lm1sLTMye21hcmdpbi1sZWZ0OjMycHh9Lm1iLTExMnttYXJnaW4tYm90dG9tOjExMnB4fS5tbC1hdXRve21hcmdpbi1sZWZ0OmF1dG99Lm10LTY0e21hcmdpbi10b3A6NjRweH0ubWwtOHttYXJnaW4tbGVmdDo4cHh9LmJsb2Nre2Rpc3BsYXk6YmxvY2t9LmlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9ja30uZmxleHtkaXNwbGF5OmZsZXh9LmdyaWR7ZGlzcGxheTpncmlkfS5pbmxpbmUtZ3JpZHtkaXNwbGF5OmlubGluZS1ncmlkfS5oaWRkZW57ZGlzcGxheTpub25lfS5oLVxbMjg4cHhcXXtoZWlnaHQ6Mjg4cHh9LmgtOTZ7aGVpZ2h0Ojk2cHh9LmgtZnVsbHtoZWlnaHQ6MTAwJX0uaC1cWzQwMHB4XF17aGVpZ2h0OjQwMHB4fS5cIWgtXFsxMjhweFxde2hlaWdodDoxMjhweCFpbXBvcnRhbnR9LnctXFsyMDBweFxde3dpZHRoOjIwMHB4fS53LW1heHt3aWR0aDotbW96LW1heC1jb250ZW50O3dpZHRoOm1heC1jb250ZW50fS53LVxbMTE0MHB4XF17d2lkdGg6MTE0MHB4fS53LWZ1bGx7d2lkdGg6MTAwJX0udy05Nnt3aWR0aDo5NnB4fS53LVxbMjEwcHhcXXt3aWR0aDoyMTBweH0udy1maXR7d2lkdGg6LW1vei1maXQtY29udGVudDt3aWR0aDpmaXQtY29udGVudH0udy1cWzI4MHB4XF17d2lkdGg6MjgwcHh9LnctXFs3MzZweFxde3dpZHRoOjczNnB4fS5taW4tdy1cWzIyMHB4XF17bWluLXdpZHRoOjIyMHB4fS5taW4tdy1cWzI2MHB4XF17bWluLXdpZHRoOjI2MHB4fS5taW4tdy1cWzI0MHB4XF17bWluLXdpZHRoOjI0MHB4fS5taW4tdy1cWzI4MHB4XF17bWluLXdpZHRoOjI4MHB4fS5taW4tdy1cWzIwMHB4XF17bWluLXdpZHRoOjIwMHB4fS5taW4tdy1cWzMyMHB4XF17bWluLXdpZHRoOjMyMHB4fS5taW4tdy1cWzMwNHB4XF17bWluLXdpZHRoOjMwNHB4fS5taW4tdy1cWzI5NnB4XF17bWluLXdpZHRoOjI5NnB4fS5tYXgtdy1cWzExNjBweFxde21heC13aWR0aDoxMTYwcHh9Lm1heC13LVxbNTgwcHhcXXttYXgtd2lkdGg6NTgwcHh9Lm1heC13LVxbOTAwcHhcXXttYXgtd2lkdGg6OTAwcHh9Lm1heC13LVxbMTAwMHB4XF17bWF4LXdpZHRoOjEwMDBweH0ubWF4LXctXFsxMjgwcHhcXXttYXgtd2lkdGg6MTI4MHB4fS5tYXgtdy1cWzUxMnB4XF17bWF4LXdpZHRoOjUxMnB4fS5tYXgtdy1cWzYwXCVcXXttYXgtd2lkdGg6NjAlfS5tYXgtdy1cWzcwXCVcXXttYXgtd2lkdGg6NzAlfS5tYXgtdy1cWzEyMDBweFxde21heC13aWR0aDoxMjAwcHh9Lm1heC13LVxbNTUwcHhcXXttYXgtd2lkdGg6NTUwcHh9Lm1heC13LVxbMzJjaFxde21heC13aWR0aDozMmNofS5tYXgtdy1cWzExODBweFxde21heC13aWR0aDoxMTgwcHh9Lm1heC13LVxbMTA4MHB4XF17bWF4LXdpZHRoOjEwODBweH0ubWF4LXctXFsxMTAwcHhcXXttYXgtd2lkdGg6MTEwMHB4fS5tYXgtdy1cWzI4Y2hcXXttYXgtd2lkdGg6MjhjaH0ubWF4LXctXFs4ODBweFxde21heC13aWR0aDo4ODBweH0ubWF4LXctXFs0ODBweFxde21heC13aWR0aDo0ODBweH0ubWF4LXctXFs3NzBweFxde21heC13aWR0aDo3NzBweH0ubWF4LXctXFs2MDBweFxde21heC13aWR0aDo2MDBweH0ubWF4LXctXFs4NDBweFxde21heC13aWR0aDo4NDBweH0ubWF4LXctXFs5ODBweFxde21heC13aWR0aDo5ODBweH0ubWF4LXctXFs0MDBweFxde21heC13aWR0aDo0MDBweH0ubWF4LXctXFs2NDBweFxde21heC13aWR0aDo2NDBweH0ubWF4LXctXFs5MjBweFxde21heC13aWR0aDo5MjBweH0ubWF4LXctXFs4NjBweFxde21heC13aWR0aDo4NjBweH0ubWF4LXctXFsxMTQwcHhcXXttYXgtd2lkdGg6MTE0MHB4fS5tYXgtdy1cWzEyNDBweFxde21heC13aWR0aDoxMjQwcHh9Lm1heC13LVxbMzBjaFxde21heC13aWR0aDozMGNofS5tYXgtdy1cWzEwNjBweFxde21heC13aWR0aDoxMDYwcHh9Lm1heC13LVxbODUycHhcXXttYXgtd2lkdGg6ODUycHh9Lm1heC13LVxbMTA0MHB4XF17bWF4LXdpZHRoOjEwNDBweH0ubWF4LXctZnVsbHttYXgtd2lkdGg6MTAwJX0ubWF4LXctXFs1MjBweFxde21heC13aWR0aDo1MjBweH0uZmxleC0xe2ZsZXg6MSAxIDAlfS5ncm93e2ZsZXgtZ3JvdzoxfS50cmFuc2xhdGUteS04ey0tdHctdHJhbnNsYXRlLXk6OHB4fS50cmFuc2xhdGUteS0xMiwudHJhbnNsYXRlLXktOHt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3WCh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9LnRyYW5zbGF0ZS15LTEyey0tdHctdHJhbnNsYXRlLXk6MTJweH0uZ3JpZC1jb2xzLTF7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgxLG1pbm1heCgwLDFmcikpfS5ncmlkLWNvbHMtMntncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSl9LmZsZXgtY29se2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZmxleC13cmFwe2ZsZXgtd3JhcDp3cmFwfS5pdGVtcy1zdGFydHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5qdXN0aWZ5LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5qdXN0aWZ5LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lmp1c3RpZnktYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9Lmp1c3RpZnktaXRlbXMtY2VudGVye2p1c3RpZnktaXRlbXM6Y2VudGVyfS5nYXAtMjR7Z2FwOjI0cHh9LmdhcC0xNntnYXA6MTZweH0uZ2FwLTQwe2dhcDo0MHB4fS5nYXAtNDh7Z2FwOjQ4cHh9LmdhcC14LTY0ey1tb3otY29sdW1uLWdhcDo2NHB4O2NvbHVtbi1nYXA6NjRweH0uZ2FwLXktMjR7cm93LWdhcDoyNHB4fS5nYXAteC1cWzE4MHB4XF17LW1vei1jb2x1bW4tZ2FwOjE4MHB4O2NvbHVtbi1nYXA6MTgwcHh9LmdhcC15LTY0e3Jvdy1nYXA6NjRweH0uZ2FwLXgtMjR7LW1vei1jb2x1bW4tZ2FwOjI0cHg7Y29sdW1uLWdhcDoyNHB4fS5nYXAteS00e3Jvdy1nYXA6NHB4fS5nYXAteC00MHstbW96LWNvbHVtbi1nYXA6NDBweDtjb2x1bW4tZ2FwOjQwcHh9LmdhcC15LTQ4e3Jvdy1nYXA6NDhweH0uc3BhY2UteS00MD46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi1ib3R0b206Y2FsYyg0MHB4KnZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpO21hcmdpbi10b3A6Y2FsYyg0MHB4KigxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpfS5zcGFjZS15LTE2Pjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJvdHRvbTpjYWxjKDE2cHgqdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSk7bWFyZ2luLXRvcDpjYWxjKDE2cHgqKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSl9Lm92ZXJmbG93LWF1dG97b3ZlcmZsb3c6YXV0b30ub3ZlcmZsb3ctaGlkZGVue292ZXJmbG93OmhpZGRlbn0ud2hpdGVzcGFjZS1ub3dyYXB7d2hpdGUtc3BhY2U6bm93cmFwfS5yb3VuZGVkLW1ke2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKX0ucm91bmRlZC1cWzRweFxde2JvcmRlci1yYWRpdXM6NHB4fS5yb3VuZGVkLWZ1bGx7Ym9yZGVyLXJhZGl1czo5OTk5cHh9LnJvdW5kZWQtdC1tZHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLXJhZGl1cy1tZCk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKX0ucm91bmRlZC1iLW1ke2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tcmFkaXVzLW1kKTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpfS5ib3JkZXItXFsxcHhcXXtib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItZGFzaGVke2JvcmRlci1zdHlsZTpkYXNoZWR9LmJvcmRlci1saWdodHstLXR3LWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYih2YXIoLS1jb2xvci1saWdodCkvdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKX0uYmctbGlnaHR7LS10dy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItbGlnaHQpL3ZhcigtLXR3LWJnLW9wYWNpdHkpKX0uYmctd2hpdGV7LS10dy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3Itd2hpdGUpL3ZhcigtLXR3LWJnLW9wYWNpdHkpKX0uYmctXFtcIzAxMDgwNFxdey0tdHctYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDEgOCA0L3ZhcigtLXR3LWJnLW9wYWNpdHkpKX0uYmctd2hpdGVcLzUwe2JhY2tncm91bmQtY29sb3I6cmdiKHZhcigtLWNvbG9yLXdoaXRlKS8uNSl9LmJnLVxbXCMwMDAxMDNcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigwIDEgMy92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLXNlY29uZGFyeXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnkpL3ZhcigtLXR3LWJnLW9wYWNpdHkpKX0uYmctXFtcIzFkNTA4M1xdey0tdHctYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDI5IDgwIDEzMS92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxbXCMwMzAyMDhcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigzIDIgOC92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLWRhbmdlcnstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYih2YXIoLS1jb2xvci1kYW5nZXIpL3ZhcigtLXR3LWJnLW9wYWNpdHkpKX0uYmctXFt1cmxcKFwnXC9pbWdcL2JnLWFib3V0XC5qcGdcJ1wpXF17YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL2JnLWFib3V0LmpwZyl9LmJnLWdyYWRpZW50LXRvLXR7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gdG9wLHZhcigtLXR3LWdyYWRpZW50LXN0b3BzKSl9LmJnLVxbdXJsXChcJ1wvaW1nXC9iZy1tYXRyaXhcLnBuZ1wnXClcXXtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvYmctbWF0cml4LnBuZyl9LmJnLVxbdXJsXChcL2ltZ1wvcmFuZ2UtYWN0aXZlLXByaW1hcnlcLnN2Z1wpXF17YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL3JhbmdlLWFjdGl2ZS1wcmltYXJ5LnN2Zyl9LmJnLVxbdXJsXChcJ1wvaW1nXC9iZy1uZnRcLmpwZ1wnXClcXXtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvYmctbmZ0LmpwZyl9LmJnLVxbdXJsXChcJ1wvaW1nXC9iZy1uZnQtbWF0cml4XC5qcGdcJ1wpXF17YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL2JnLW5mdC1tYXRyaXguanBnKX0uYmctXFt1cmxcKFwnXC9pbWdcL2JnLXJld2FyZHNcLmpwZ1wnXClcXXtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvYmctcmV3YXJkcy5qcGcpfS5iZy1cW3VybFwoXC9pbWdcL3JhbmdlLWFjdGl2ZVwuc3ZnXClcXXtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvcmFuZ2UtYWN0aXZlLnN2Zyl9LmZyb20td2hpdGV7LS10dy1ncmFkaWVudC1mcm9tOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvMSk7LS10dy1ncmFkaWVudC10bzpyZ2IodmFyKC0tY29sb3Itd2hpdGUpLzApOy0tdHctZ3JhZGllbnQtc3RvcHM6dmFyKC0tdHctZ3JhZGllbnQtZnJvbSksdmFyKC0tdHctZ3JhZGllbnQtdG8pfS5iZy1jb3ZlcntiYWNrZ3JvdW5kLXNpemU6Y292ZXJ9LmJnLWNlbnRlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJX0uYmctbGVmdC10b3B7YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9LmJnLVxbMzJcJV9jZW50ZXJcXXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjMyJX0uYmctbm8tcmVwZWF0e2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0ucC00MHtwYWRkaW5nOjQwcHh9LnB5LTgwe3BhZGRpbmctYm90dG9tOjgwcHg7cGFkZGluZy10b3A6ODBweH0ucHgtNHtwYWRkaW5nLWxlZnQ6NHB4O3BhZGRpbmctcmlnaHQ6NHB4fS5weC0zMntwYWRkaW5nLWxlZnQ6MzJweDtwYWRkaW5nLXJpZ2h0OjMycHh9LnB5LTI0e3BhZGRpbmctYm90dG9tOjI0cHg7cGFkZGluZy10b3A6MjRweH0ucHgtMjR7cGFkZGluZy1sZWZ0OjI0cHg7cGFkZGluZy1yaWdodDoyNHB4fS5wYi0xMntwYWRkaW5nLWJvdHRvbToxMnB4fS5cIXBiLVxbNDAwcHhcXXtwYWRkaW5nLWJvdHRvbTo0MDBweCFpbXBvcnRhbnR9LlwhcGItODB7cGFkZGluZy1ib3R0b206ODBweCFpbXBvcnRhbnR9LlwhcHQtNjR7cGFkZGluZy10b3A6NjRweCFpbXBvcnRhbnR9LlwhcGItNDh7cGFkZGluZy1ib3R0b206NDhweCFpbXBvcnRhbnR9LlwhcHQtMHtwYWRkaW5nLXRvcDowIWltcG9ydGFudH0uXCFwdC00MHtwYWRkaW5nLXRvcDo0MHB4IWltcG9ydGFudH0uXCFwYi0we3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fS5cIXB0LTQ4e3BhZGRpbmctdG9wOjQ4cHghaW1wb3J0YW50fS50ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0fS50ZXh0LWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0uZm9udC1ibGFja3tmb250LXdlaWdodDo5MDB9LnVwcGVyY2FzZXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LnRyYWNraW5nLVxbMFwuODNlbVxde2xldHRlci1zcGFjaW5nOi44M2VtfS50cmFja2luZy1cWzVweFxde2xldHRlci1zcGFjaW5nOjVweH0udGV4dC1zZWNvbmRhcnl7LS10dy10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KS92YXIoLS10dy10ZXh0LW9wYWNpdHkpKX0udGV4dC1cW1wjMDlmZjAwXF17LS10dy10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoOSAyNTUgMC92YXIoLS10dy10ZXh0LW9wYWNpdHkpKX0udGV4dC1wcmltYXJ5ey0tdHctdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKHZhcigtLWNvbG9yLXByaW1hcnkpL3ZhcigtLXR3LXRleHQtb3BhY2l0eSkpfS50ZXh0LWRhcmt7LS10dy10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZGFyaykvdmFyKC0tdHctdGV4dC1vcGFjaXR5KSl9LnRleHQtZGFuZ2Vyey0tdHctdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKHZhcigtLWNvbG9yLWRhbmdlcikvdmFyKC0tdHctdGV4dC1vcGFjaXR5KSl9LnRleHQtZ3JheXstLXR3LXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYih2YXIoLS1jb2xvci1ncmF5KS92YXIoLS10dy10ZXh0LW9wYWNpdHkpKX0udGV4dC1ncmF5LWRhcmt7LS10dy10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IodmFyKC0tY29sb3ItZ3JheS1kYXJrKS92YXIoLS10dy10ZXh0LW9wYWNpdHkpKX0udGV4dC13aGl0ZXstLXR3LXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYih2YXIoLS1jb2xvci13aGl0ZSkvdmFyKC0tdHctdGV4dC1vcGFjaXR5KSl9Lm9wYWNpdHktNTB7b3BhY2l0eTouNX0ub3BhY2l0eS04MHtvcGFjaXR5Oi44fS5zaGFkb3ctZ2xvdy1kYW5nZXItbG93ey0tdHctc2hhZG93OnZhcigtLWdsb3ctZGFuZ2VyLWxvdyk7LS10dy1zaGFkb3ctY29sb3JlZDp2YXIoLS1nbG93LWRhbmdlci1sb3cpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LDAgMCAjMDAwMCksdmFyKC0tdHctcmluZy1zaGFkb3csMCAwICMwMDAwKSx2YXIoLS10dy1zaGFkb3cpfS5ibHVyey0tdHctYmx1cjpibHVyKDhweCl9LmJsdXIsLmZpbHRlcntmaWx0ZXI6dmFyKC0tdHctYmx1cikgdmFyKC0tdHctYnJpZ2h0bmVzcykgdmFyKC0tdHctY29udHJhc3QpIHZhcigtLXR3LWdyYXlzY2FsZSkgdmFyKC0tdHctaHVlLXJvdGF0ZSkgdmFyKC0tdHctaW52ZXJ0KSB2YXIoLS10dy1zYXR1cmF0ZSkgdmFyKC0tdHctc2VwaWEpIHZhcigtLXR3LWRyb3Atc2hhZG93KX1AbWVkaWEgKG1heC13aWR0aDo1NzZweCl7OnJvb3R7LS1mb250LXNpemUtaGVybzo2NHB4Oy0tZm9udC1zaXplLWgxOjQycHg7LS1mb250LXNpemUtaDI6MzJweDstLWZvbnQtc2l6ZS1oMzoyNHB4Oy0tZm9udC1zaXplLWg0OjE4cHg7LS1mb250LXNpemUtaDU6MTZweH0uc2VjdGlvbi0teHN7cGFkZGluZzo0MHB4IDB9LnNlY3Rpb24tLXNte3BhZGRpbmc6NDhweCAwfS5zZWN0aW9uLS1tZHtwYWRkaW5nOjY0cHggMH0uc2VjdGlvbi0tbGd7cGFkZGluZzo4MHB4IDB9LmZvb3RlcntwYWRkaW5nOjQ4cHggMH0udG9rZW4tY291bnRlcl9faXRlbXtwYWRkaW5nOjAgMTBweCAwIDE0cHh9LnRva2VuLWNvdW50ZXJfX2RpZ2l0e2ZvbnQtc2l6ZTo0MHB4fS50b2tlbi1hbm5vdW5jZW1lbnR7cGFkZGluZy1ib3R0b206NjRweDtwYWRkaW5nLXRvcDo5MHB4fS5vcGluaW9uc19fc3Rvcmllcy1jb250YWluZXJ7aGVpZ2h0OjY0MHB4fS5ibG9nLWNhcmQtLXdpZGUgLmJsb2ctY2FyZF9fYm9keXtwYWRkaW5nOjI0cHh9fUBtZWRpYSAobWluLXdpZHRoOjE0NDBweCl7OnJvb3R7LS1mb250LXNpemUtaGVybzoxMjhweDstLWZvbnQtc2l6ZS1oMTo4MHB4Oy0tZm9udC1zaXplLWgyOjQwcHg7LS1mb250LXNpemUtaDM6MzJweDstLWZvbnQtc2l6ZS1oNDoyNHB4Oy0tZm9udC1zaXplLWg1OjE4cHh9LnNlY3Rpb24tLXhze3BhZGRpbmc6ODBweCAwfS5zZWN0aW9uLS1zbXtwYWRkaW5nOjk2cHggMH0uc2VjdGlvbi0tbWR7cGFkZGluZzoxMjBweCAwfS5zZWN0aW9uLS1sZ3twYWRkaW5nOjE2MHB4IDB9LmZvb3RlcntwYWRkaW5nOjk2cHggMH0udG9rZW4tY291bnRlcl9faXRlbXtwYWRkaW5nOjAgMzZweCAwIDQwcHh9LnRva2VuLWNvdW50ZXJfX2RpZ2l0e2ZvbnQtc2l6ZToxMDRweH0udG9rZW4tYW5ub3VuY2VtZW50e3BhZGRpbmctYm90dG9tOjk2cHg7cGFkZGluZy10b3A6MTk2cHh9Lm9waW5pb25zX19zdG9yaWVzLWNvbnRhaW5lcntoZWlnaHQ6OTIwcHh9LmJsb2ctY2FyZC0td2lkZSAuYmxvZy1jYXJkX19ib2R5e3BhZGRpbmc6MzJweCA0MHB4fX1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LnhzXDpjb2wtc3Bhbi0ye2dyaWQtY29sdW1uOnNwYW4gMi9zcGFuIDJ9LnhzXDpncmlkLWNvbHMtMntncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSl9LnhzXDpiZy1cW3VybFwoXCdcL2ltZ1wvYmctZWNvc3lzdGVtXC5qcGdcJ1wpXF17YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL2JnLWVjb3N5c3RlbS5qcGcpfS54c1w6YmctXFt1cmxcKFwnXC9pbWdcL2JnLWxldmVsc1wuanBnXCdcKVxde2JhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2ltZy9iZy1sZXZlbHMuanBnKX0ueHNcOmJnLVxbdXJsXChcJ1wvaW1nXC9iZy1saXF1aWRpdHlcLmpwZ1wnXClcXXtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvYmctbGlxdWlkaXR5LmpwZyl9LnhzXDpiZy1jZW50ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCV9fUBtZWRpYSAobWluLXdpZHRoOjc2MHB4KXsuc21cOm9yZGVyLWxhc3R7b3JkZXI6OTk5OX0uc21cOmNvbC1zcGFuLTJ7Z3JpZC1jb2x1bW46c3BhbiAyL3NwYW4gMn0uc21cOmNvbC1zdGFydC0xe2dyaWQtY29sdW1uLXN0YXJ0OjF9LnNtXDpyb3ctc3RhcnQtMXtncmlkLXJvdy1zdGFydDoxfS5zbVw6bXktNjR7bWFyZ2luLWJvdHRvbTo2NHB4O21hcmdpbi10b3A6NjRweH0uc21cOi1tbC00MHttYXJnaW4tbGVmdDotNDBweH0uc21cOi1tYi1cWzE1XCVcXXttYXJnaW4tYm90dG9tOi0xNSV9LnNtXDptYi05NnttYXJnaW4tYm90dG9tOjk2cHh9LnNtXDptYi0xMjh7bWFyZ2luLWJvdHRvbToxMjhweH0uc21cOm1iLTgwe21hcmdpbi1ib3R0b206ODBweH0uc21cOm10LTgwe21hcmdpbi10b3A6ODBweH0uc21cOm1iLTY0e21hcmdpbi1ib3R0b206NjRweH0uc21cOm1iLTQwe21hcmdpbi1ib3R0b206NDBweH0uc21cOi1tdC0zMnttYXJnaW4tdG9wOi0zMnB4fS5zbVw6aGlkZGVue2Rpc3BsYXk6bm9uZX0uc21cOmgtMTkye2hlaWdodDoxOTJweH0uc21cOnctMTkye3dpZHRoOjE5MnB4fS5zbVw6bWF4LXctXFsyMGNoXF17bWF4LXdpZHRoOjIwY2h9LnNtXDptYXgtdy1cWzEyY2hcXXttYXgtd2lkdGg6MTJjaH0uc21cOm1heC13LVxbMjVjaFxde21heC13aWR0aDoyNWNofS5zbVw6bWF4LXctXFs1MTBweFxde21heC13aWR0aDo1MTBweH0uc21cOm1heC13LVxbMzRjaFxde21heC13aWR0aDozNGNofS5zbVw6bWF4LXctXFsxMGNoXF17bWF4LXdpZHRoOjEwY2h9LnNtXDptYXgtdy1cWzI5Y2hcXXttYXgtd2lkdGg6MjljaH0uc21cOm1heC13LVxbNjgwcHhcXXttYXgtd2lkdGg6NjgwcHh9LnNtXDptYXgtdy1cWzUwMHB4XF17bWF4LXdpZHRoOjUwMHB4fS5zbVw6bWF4LXctXFsyNmNoXF17bWF4LXdpZHRoOjI2Y2h9LnNtXDptYXgtdy1cWzE1Y2hcXXttYXgtd2lkdGg6MTVjaH0uc21cOm1heC13LVxbNTgwcHhcXXttYXgtd2lkdGg6NTgwcHh9LnNtXDptYXgtdy1cWzQ2MHB4XF17bWF4LXdpZHRoOjQ2MHB4fS5zbVw6Z3JpZC1jb2xzLTJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpfS5zbVw6Z3JpZC1jb2xzLVxbcmVwZWF0XCgyXDJjIF9taW4tY29udGVudFwpXF17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbi1jb250ZW50KX0uc21cOmdyaWQtY29scy0ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKX0uc21cOmdyaWQtY29scy1cWzlmclwyYyBfOGZyXF17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjlmciA4ZnJ9LnNtXDpncmlkLWNvbHMtXFszMjBweF9taW5tYXhcKDBcMmMgXzFmclwpXF17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjMyMHB4IG1pbm1heCgwLDFmcil9LnNtXDpncmlkLWNvbHMtXFsxZnJcMmMgXzFmclxde2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyfS5zbVw6Z3JpZC1jb2xzLVxbOGZyXDJjIF8xMGZyXF17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjhmciAxMGZyfS5zbVw6Z3JpZC1jb2xzLTR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LG1pbm1heCgwLDFmcikpfS5zbVw6Z3JpZC1jb2xzLVxbOGZyXDJjIF85ZnJcXXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6OGZyIDlmcn0uc21cOmp1c3RpZnktYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uc21cOmdhcC15LVxbODBweFxde3Jvdy1nYXA6ODBweH0uc21cOnB5LVxbMjFweFxde3BhZGRpbmctYm90dG9tOjIxcHg7cGFkZGluZy10b3A6MjFweH0uc21cOnB4LTE2e3BhZGRpbmctbGVmdDoxNnB4O3BhZGRpbmctcmlnaHQ6MTZweH0uc21cOnRleHQtbGVmdHt0ZXh0LWFsaWduOmxlZnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsubWRcOmNvbC1zcGFuLTN7Z3JpZC1jb2x1bW46c3BhbiAzL3NwYW4gM30ubWRcOm1yLTQwe21hcmdpbi1yaWdodDo0MHB4fS5tZFw6ZmxleHtkaXNwbGF5OmZsZXh9Lm1kXDpncmlkLWNvbHMtM3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDMsbWlubWF4KDAsMWZyKSl9Lm1kXDpncmlkLWNvbHMtMXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDEsbWlubWF4KDAsMWZyKSl9Lm1kXDpncmlkLWNvbHMtXFsxZnJfMzIwcHhcXXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDMyMHB4fS5tZFw6Z3JpZC1jb2xzLTJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpfS5tZFw6aXRlbXMtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlcn0ubWRcOmdhcC00MHtnYXA6NDBweH0ubWRcOmdhcC04MHtnYXA6ODBweH0ubWRcOmdhcC14LTQwey1tb3otY29sdW1uLWdhcDo0MHB4O2NvbHVtbi1nYXA6NDBweH19QG1lZGlhIChtaW4td2lkdGg6MTI0MHB4KXsubGdcOi1tbC0xOTZ7bWFyZ2luLWxlZnQ6LTE5NnB4fS5sZ1w6bWItNDB7bWFyZ2luLWJvdHRvbTo0MHB4fS5sZ1w6Z3JpZC1jb2xzLVxbMlwuODVmclwyYyBfOVwuMTVmclxde2dyaWQtdGVtcGxhdGUtY29sdW1uczoyLjg1ZnIgOS4xNWZyfS5sZ1w6Z2FwLTQwe2dhcDo0MHB4fS5sZ1w6Z2FwLXgtNDB7LW1vei1jb2x1bW4tZ2FwOjQwcHg7Y29sdW1uLWdhcDo0MHB4fS5sZ1w6cGwtODB7cGFkZGluZy1sZWZ0OjgwcHh9fUBtZWRpYSAobWluLXdpZHRoOjE0NDBweCl7LnhsXDptbC0xMjB7bWFyZ2luLWxlZnQ6MTIwcHh9LnhsXDpncmlkLWNvbHMtNHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDQsbWlubWF4KDAsMWZyKSl9LnhsXDpnYXAtNDB7Z2FwOjQwcHh9LnhsXDpwbC04MHtwYWRkaW5nLWxlZnQ6ODBweH19QG1lZGlhIChtYXgtd2lkdGg6NTc1cHgpey51bnRpbC14c1w6XCFoLVxbMTI4cHhcXXtoZWlnaHQ6MTI4cHghaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo3NTlweCl7LnVudGlsLXNtXDpteC1hdXRve21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99LnVudGlsLXNtXDpoaWRkZW57ZGlzcGxheTpub25lfS51bnRpbC1zbVw6bWF4LXctXFs4MFwlXF17bWF4LXdpZHRoOjgwJX0udW50aWwtc21cOm1heC13LVxbNzBcJVxde21heC13aWR0aDo3MCV9LnVudGlsLXNtXDpmbGV4LWNvbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LnVudGlsLXNtXDppdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfX1AbWVkaWEgKG1heC13aWR0aDo5OTFweCl7LnVudGlsLW1kXDptdC0yNHttYXJnaW4tdG9wOjI0cHh9LnVudGlsLW1kXDpmbGV4LWNvbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59fUBtZWRpYSAobWF4LXdpZHRoOjEyMzlweCl7LnVudGlsLWxnXDpoaWRkZW57ZGlzcGxheTpub25lfX1AbWVkaWEgKG1heC13aWR0aDoxNDM5cHgpey51bnRpbC14bFw6bXgtYXV0b3ttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS51bnRpbC14bFw6bWF4LXctXFs2NjRweFxde21heC13aWR0aDo2NjRweH19"}},"time_used":55,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":55,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.tidio.co/k73j8w15xddb6w8hwe6twxuiqv0xw2w9.js","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.029Z","timestamp":1785145636029,"http_version":"HTTP/2","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":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"GET /k73j8w15xddb6w8hwe6twxuiqv0xw2w9.js HTTP/1.1\r\nHost: code.tidio.co\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://bit-core.top/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 302 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: text/html; charset=UTF-8\r\nlocation: https://code.tidio.co/widget-v4/1_447_0/static/js/render.c201a34ef1bfdb786fba.js\r\ncache-control: public, s-maxage=300, max-age=0\r\nserver: cloudflare\r\ncf-cache-status: EXPIRED\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=%2BHTJiJ9JbpM9TNUR5l6TuYmwJ9j%2FzVI2Y4DW0hZIVIJYWZdDK2HLCWuo7Auq%2BJkEMG7EBdaXOsrXrerBFyABXSEzr2BswNbzaTDz1MUxhHakOlhg%2FNp0N5%2BE5hYUsWY%3D\"}]}\r\ncf-ray: a21ab8c15dd1723c-OSL\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"302","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"]}],"data":{"size":0,"size_decoded":0,"mime_type":"application/javascript","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-29T06:56:24.505941Z","times_seen":17593773,"resource_available":true,"data":null}},"time_used":217,"timings":{"blocked":-1,"dns":8,"connect":3,"send":0,"wait":194,"receive":0,"ssl":11},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/img/levels-star-2.png","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.054Z","timestamp":1785145636054,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /img/levels-star-2.png HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: image/webp\r\ncontent-length: 12724\r\ncache-control: public, max-age=604800\r\nage: 6413\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 75260a354e62d1ad403bf4357710a934-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":12724,"size_decoded":13030,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"519157354eb53b0f59d7b51118576b1e","sha1":"1b551fe724965fd065bdb19cd7615709a6964242","sha256":"ef0e83582a0e7b56ac3914433a5417d47a76877d6813f8ae83687f15017d49fa","sha512":"e0c8a87d9540a1724973da783cd607ebdcd17faea32234f814a5c40af5d3db31bb23d4010cbfe2355f80bc8e45c27f1bdbdc3727f93dd0ff69d43dfbbf89c05a","ssdeep":"384:A860Ldw/poQuOztdFkocaZ63G3d0zz3qfo:A86ouIBVag34dj","tlshash":"3342bf4abeb11030e55b45b62e711353adc9b3935f3658dfb88033ee686aea0ed19051","first_seen":"2026-07-27T08:06:16.648316Z","last_seen":"2026-07-27T09:48:29.86019Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":44,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":44,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/webfonts/fa-solid-900.woff2","fqdn":"cdnjs.cloudflare.com","domain":"cloudflare.com","tld":"com"},"ip":{"addr":"104.17.25.14","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.187Z","timestamp":1785145636187,"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":"cdnjs.cloudflare.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Fri, 10 Jul 2026 07:07:58 GMT","end":"Thu, 08 Oct 2026 08:07:45 GMT"},"fingerprint":{"sha1":"DF:66:97:F5:13:A2:C0:81:D3:5B:60:C4:B0:7F:CD:78:F5:91:14:D5","sha256":"3C:F2:95:73:83:BA:4D:D9:CC:85:8F:BC:7D:2C:22:CF:F3:49:9A:3A:E4:1D:FC:AE:CB:07:3D:66:89:74:0E:C5"}}},"request":{"raw":"GET /ajax/libs/font-awesome/6.0.0/webfonts/fa-solid-900.woff2 HTTP/1.1\r\nHost: cdnjs.cloudflare.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://bit-core.top\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\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\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: application/octet-stream; charset=utf-8\r\ncontent-length: 126828\r\ncf-cache-status: BYPASS\r\naccess-control-allow-origin: *\r\ncache-control: no-transform, public, s-maxage=30672000, max-age=30672000, immutable\r\nlast-modified: Mon, 07 Feb 2022 21:01:39 GMT\r\nvary: Accept-Encoding\r\nx-cdnjs-cache: HIT\r\ncross-origin-resource-policy: cross-origin\r\ntiming-allow-origin: *\r\nx-content-type-options: nosniff\r\ncf-cdnjs-via: cfworker/r2\r\nstrict-transport-security: max-age=15780000\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Q3Y%2B2x4IPpoV2aYozskRCZgKT8FknrrGxiL%2FYUoxveID%2B3xMZCqoDe2GWhkVSMv7kjjmuhzaqfWNSGay%2FU8BgNJmnr%2BRDbdSgLzllW4ppzuSh%2FT65Ba0cDPWzeETMojYoSOPiu12\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.01,\"max_age\":604800}\r\npriority: u=5,i=?0\r\nserver: cloudflare\r\ncf-ray: a21ab8c24cbcb503-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":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"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":126828,"size_decoded":127820,"mime_type":"application/octet-stream; charset=utf-8","magic":"Web Open Font Format (Version 2), TrueType, length 126828, version 768.256","md5":"297973a488f688271dd223d542ba2697","sha1":"ed99d812e4c88826335f93acede3fad85c90fb54","sha256":"1b099f88c06ed0869872561c157f0ec9cbe133a0939d9ece4ee1e1f54bd4683d","sha512":"83c802972d9fee9dd7e3c0de42d8636c504e65ff20e43406bb446cc95a16acaa21789a03f0e2006148abfe47100bbd0c66aa4cf98f11e9b0220f1dcdb5204f46","ssdeep":"3072:caEaIjBfXHk79vCMuMZhQqmiutWxJfU52qiAx+SMfd:caEaIf3kxa5aaVMaHAScd","tlshash":"9dc3120ef3299411c6f0af104c63d6d627617389ffd548c767993e768aac9e70c28ea0","first_seen":"2023-04-10T14:50:44Z","last_seen":"2026-07-29T06:55:06.804634Z","times_seen":10731,"resource_available":false,"data":"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"}},"time_used":49,"timings":{"blocked":-1,"dns":0,"connect":12,"send":0,"wait":27,"receive":10,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.tidio.co/widget-v4//notification-sound.mp3","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"media","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.403Z","timestamp":1785145636403,"http_version":"HTTP/2","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":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"GET /widget-v4//notification-sound.mp3 HTTP/1.1\r\nHost: code.tidio.co\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nRange: bytes=0-\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: audio\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nAccept-Encoding: identity\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 206 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: audio/mpeg\r\ncontent-length: 28255\r\nage: 7432\r\naccess-control-allow-origin: *\r\ncache-control: public, max-age=31536000, immutable\r\netag: \"6a670afb-6e5f\"\r\nlast-modified: Mon, 27 Jul 2026 07:38:35 GMT\r\nserver: cloudflare\r\ncontent-range: bytes 0-28254/28255\r\ncf-cache-status: HIT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=ZAZnfIDEwiCGQUX0bwsh0cfCGCtBQgfmIVZMxpvznVx3FZU2DxtbGpO%2FZ7K1j1EO9GOHrkvz9uKXPP%2FxHvVZy5y%2BjyRXAGJdKR2X4mSK14nS9GrAcowpqBLQjmF%2FZR0%3D\"}]}\r\ncf-ray: a21ab8c38ca8723c-OSL\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"206","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"]}],"data":{"size":28255,"size_decoded":28969,"mime_type":"audio/mpeg","magic":"Audio file with ID3 version 2.4.0, contains: MPEG ADTS, layer III, v1, 64 kbps, 44.1 kHz, Stereo","md5":"ed632238ac260d2ff13a5b319163ea80","sha1":"ec3d658a6b985654354abd43c1688d9d020f9eee","sha256":"b43cdddf1836f84ff2873a9716fc541205e42ab4ee6163495fc5d9fa11a475ea","sha512":"951d0ec7b29dad74312dd617d2b715863f417e64e29702535ba6e9fcf231a8dcc2f3de89d5abee1b51fe03f7d3209eae13c17ca04878d7634e3841714e2059d1","ssdeep":"768:N4mLXoawnNyci56NczRzQJhvEgmTKBm9zt1J85voWDmrpNxe:SooaE8B6CzRAhsBmBm9zt1JVlrpNxe","tlshash":"d4c2d0c724248328f92a0db47cb70aabc250bf6804b14be6e34e93015eeffc50f4955a","first_seen":"2025-04-16T11:16:17.238101Z","last_seen":"2026-07-29T05:11:58.488633Z","times_seen":7027,"resource_available":false,"data":"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///7kkT/jOMcFjILpjugXcNGYnMHSAsYVsxN9KNBngrZSb6saP++n6l83X9426NLs2Yo18njBd6HWnWrLitNpKxqhRJ9I8x1IoySHIepYz9Z4xqAAxZJc5DuAwpCQwyFgaDEzxOJxkBuAkKSjDiICy37VEKF+oJ1nMwTreBUj8rDt+vByI6uwsgDi8JAoK4E3gTNxADwhiOfA0NBAHQriOmBoaiGTy+I6YSFI5m5UJh0JC0ln5ULCGT1JLRlQmIZPXExGSDxOT2jBEZmicnwGDp2rOD9owdM1ZweQmFTuNIeQmdj+M4WNmbRg4cLE5+0YOnatOfwHjp2+sWNLHTt9IeNn9TONY42vscPLHG19lkS9xtfAsiXvsL6LKr32HIXOXxsLG37L7rHIV+LHBBimGYBD40GLswUBozJKI3RsYzbKUy3H00mEYyEA1LovQngBQBT7L+IwP+gozlB9zkvF6MjU3gxQeHlhHkYGy96F0S1dhEAWH44AcHkCaCE4/jgFBTBuuEAsDwOhfEdcIBoOY7lMR1wgIiWWy4TFwkKSWWyoTH/+5Jk/Yjh1Qm4UxpBGGCoNlFjpQ4dVbDGDuGLS6Q2GcHWGukolqSWrKhYQye8SEZULCczsYRHZYTmbRhEdn7B/AYRHatIeQmDoOmCBBYXQOmCBB4XQAQBCB4XQAUTCzws4ERB0zAg4EkHTEECyaIOsggWF0QWQQPJ0QUTQPC6IYTTMJlEJJpmEHISTWYQPJ0TWQQLJ0CISExBTUUzLjEwMKqqqqqqqqqqqgAUg5BCGSgAj1MUW4/wMpSbA8DoCCh4NB0SlSw9x48SSVX2EUKXniUstz7U//+u861KFe0SlljJ4kmsY91JVV51hJCluPHmpKrAAjCS663cMKCsSPRJCT1BXkvuPHW9T3ZUstW3+RQq9zPvflV9n/r9nu//zvVVTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//uSRHwP8koGupkvYJAs4LeqCEYBAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ=="}},"time_used":8,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":8,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"js.intercomcdn.com/vendor.f6b64953.js","fqdn":"js.intercomcdn.com","domain":"intercomcdn.com","tld":"com"},"ip":{"addr":"3.164.240.120","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.728Z","timestamp":1785145636728,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.intercomcdn.com","organization":""},"issuer":{"commonName":"Amazon RSA 2048 M04","organization":"Amazon"},"validity":{"start":"Tue, 30 Sep 2025 00:00:00 GMT","end":"Wed, 28 Oct 2026 23:59:59 GMT"},"fingerprint":{"sha1":"64:9F:0E:45:43:8B:97:70:93:C0:3C:A3:8C:86:3C:74:78:46:6C:83","sha256":"E3:A5:51:D3:19:77:B6:1B:44:2E:AB:1F:87:9D:CF:AA:C8:71:56:3F:4E:E4:70:F5:F0:03:7E:70:C2:D9:65:BF"}}},"request":{"raw":"GET /vendor.f6b64953.js HTTP/1.1\r\nHost: js.intercomcdn.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\nOrigin: https://bit-core.top\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://bit-core.top/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ncontent-type: application/javascript; charset=UTF-8\r\ncontent-length: 105309\r\nlast-modified: Fri, 24 Jul 2026 17:54:10 GMT\r\nx-amz-server-side-encryption: AES256\r\ncontent-encoding: br\r\nx-amz-version-id: gSyhOd84n4bH2pNnVosYoCXpdX1s6WKQ\r\naccept-ranges: bytes\r\nserver: AmazonS3\r\ndate: Mon, 27 Jul 2026 08:52:20 GMT\r\ncache-control: max-age=31536000, s-maxage=7200, public\r\netag: \"4538dd75cfb66fce4ef736f330d5e028\"\r\nvary: Accept-Encoding\r\nx-cache: Hit from cloudfront\r\nvia: 1.1 b5ef788d0f05b31973ca8ae989fe9748.cloudfront.net (CloudFront)\r\nx-amz-cf-pop: ARN53-P2\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-amz-cf-id: 2qvHZKUrcDWXQuBg5STK_zkdEiTBHBUmCVGs5UWe_AWMhpszu7vD9g==\r\nage: 3297\r\nx-content-type-options: nosniff\r\nstrict-transport-security: max-age=31536000; includeSubDomains; preload\r\ncross-origin-resource-policy: cross-origin\r\naccess-control-allow-origin: *\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Amazon CloudFront","description":"Amazon CloudFront is a fast content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to customers globally with low latency, high transfer speeds.","website":"https://aws.amazon.com/cloudfront/","common_platform_enumeration":"","icon":"Amazon Cloudfront.svg","categories":["CDN"]},{"name":"Amazon S3","description":"Amazon S3 or Amazon Simple Storage Service is a service offered by Amazon Web Services (AWS) that provides object storage through a web service interface.","website":"https://aws.amazon.com/s3/","common_platform_enumeration":"","icon":"Amazon S3.svg","categories":["CDN"]},{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]}],"data":{"size":397454,"size_decoded":106196,"mime_type":"application/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (65463)","md5":"4d9436d68f9ee1f2389a2de10ddbbdd3","sha1":"a472e4820eef593bcf64720e8c11175598a34036","sha256":"94b057d90fbc8cc546a4d555f636fd8ff6a9013c892081a180e2b9023dba9e49","sha512":"fd612974dcbff1a442af50f95441ee1f520eb30b9d8af4687fa2c1f15e077262bef5072b504e3a0144653a4c7170178ba0c9eb3fbbf431a67d315caf82f444d8","ssdeep":"6144:gO9oPLOHjCCmnwIRTyphvMFWfwuTqhhOA4OpF:gOqPLOHjCrwIRTyplMFWfwT3","tlshash":"88843a9db691f47107a712f6807f140bf3ba1969344c4450faa9c8dd28f998d923bf2e","first_seen":"2026-07-14T15:01:34.133346Z","last_seen":"2026-07-29T07:01:07.111324Z","times_seen":1861,"resource_available":true,"data":"LyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgdmVuZG9yLmY2YjY0OTUzLmpzLkxJQ0VOU0UudHh0ICovCihnbG9iYWxUaGlzLndlYnBhY2tDaHVua2ludGVyY29tX2pzPWdsb2JhbFRoaXMud2VicGFja0NodW5raW50ZXJjb21fanN8fFtdKS5wdXNoKFtbNDEyMV0sezg0MzAwOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5kKHQse0E6ZnVuY3Rpb24oKXtyZXR1cm4gc2V9fSk7dmFyIG49ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0PXRoaXM7dGhpcy5faW5zZXJ0VGFnPWZ1bmN0aW9uKGUpe3ZhciByO3I9MD09PXQudGFncy5sZW5ndGg/dC5pbnNlcnRpb25Qb2ludD90Lmluc2VydGlvblBvaW50Lm5leHRTaWJsaW5nOnQucHJlcGVuZD90LmNvbnRhaW5lci5maXJzdENoaWxkOnQuYmVmb3JlOnQudGFnc1t0LnRhZ3MubGVuZ3RoLTFdLm5leHRTaWJsaW5nLHQuY29udGFpbmVyLmluc2VydEJlZm9yZShlLHIpLHQudGFncy5wdXNoKGUpfSx0aGlzLmlzU3BlZWR5PXZvaWQgMD09PWUuc3BlZWR5fHxlLnNwZWVkeSx0aGlzLnRhZ3M9W10sdGhpcy5jdHI9MCx0aGlzLm5vbmNlPWUubm9uY2UsdGhpcy5rZXk9ZS5rZXksdGhpcy5jb250YWluZXI9ZS5jb250YWluZXIsdGhpcy5wcmVwZW5kPWUucHJlcGVuZCx0aGlzLmluc2VydGlvblBvaW50PWUuaW5zZXJ0aW9uUG9pbnQsdGhpcy5iZWZvcmU9bnVsbH12YXIgdD1lLnByb3RvdHlwZTtyZXR1cm4gdC5oeWRyYXRlPWZ1bmN0aW9uKGUpe2UuZm9yRWFjaCh0aGlzLl9pbnNlcnRUYWcpfSx0Lmluc2VydD1mdW5jdGlvbihlKXt0aGlzLmN0ciUodGhpcy5pc1NwZWVkeT82NWUzOjEpPT0wJiZ0aGlzLl9pbnNlcnRUYWcoZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImRhdGEtZW1vdGlvbiIsZS5rZXkpLHZvaWQgMCE9PWUubm9uY2UmJnQuc2V0QXR0cmlidXRlKCJub25jZSIsZS5ub25jZSksdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikpLHQuc2V0QXR0cmlidXRlKCJkYXRhLXMiLCIiKSx0fSh0aGlzKSk7dmFyIHQ9dGhpcy50YWdzW3RoaXMudGFncy5sZW5ndGgtMV07aWYodGhpcy5pc1NwZWVkeSl7dmFyIHI9ZnVuY3Rpb24oZSl7aWYoZS5zaGVldClyZXR1cm4gZS5zaGVldDtmb3IodmFyIHQ9MDt0PGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDt0KyspaWYoZG9jdW1lbnQuc3R5bGVTaGVldHNbdF0ub3duZXJOb2RlPT09ZSlyZXR1cm4gZG9jdW1lbnQuc3R5bGVTaGVldHNbdF19KHQpO3RyeXtyLmluc2VydFJ1bGUoZSxyLmNzc1J1bGVzLmxlbmd0aCl9Y2F0Y2goZSl7MH19ZWxzZSB0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpKTt0aGlzLmN0cisrfSx0LmZsdXNoPWZ1bmN0aW9uKCl7dGhpcy50YWdzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0pKSx0aGlzLnRhZ3M9W10sdGhpcy5jdHI9MH0sZX0oKSxvPU1hdGguYWJzLGk9U3RyaW5nLmZyb21DaGFyQ29kZSxhPU9iamVjdC5hc3NpZ247ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZS50cmltKCl9ZnVuY3Rpb24gYyhlLHQscil7cmV0dXJuIGUucmVwbGFjZSh0LHIpfWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gZS5pbmRleE9mKHQpfWZ1bmN0aW9uIGwoZSx0KXtyZXR1cm4gMHxlLmNoYXJDb2RlQXQodCl9ZnVuY3Rpb24gZihlLHQscil7cmV0dXJuIGUuc2xpY2UodCxyKX1mdW5jdGlvbiBkKGUpe3JldHVybiBlLmxlbmd0aH1mdW5jdGlvbiBwKGUpe3JldHVybiBlLmxlbmd0aH1mdW5jdGlvbiBfKGUsdCl7cmV0dXJuIHQucHVzaChlKSxlfXZhciBoPTEsbT0xLHk9MCxnPTAsdj0wLGI9IiI7ZnVuY3Rpb24gdyhlLHQscixuLG8saSxhKXtyZXR1cm57dmFsdWU6ZSxyb290OnQscGFyZW50OnIsdHlwZTpuLHByb3BzOm8sY2hpbGRyZW46aSxsaW5lOmgsY29sdW1uOm0sbGVuZ3RoOmEscmV0dXJuOiIifX1mdW5jdGlvbiBTKGUsdCl7cmV0dXJuIGEodygiIixudWxsLG51bGwsIiIsbnVsbCxudWxsLDApLGUse2xlbmd0aDotZS5sZW5ndGh9LHQpfWZ1bmN0aW9uIGsoKXtyZXR1cm4gdj1nPjA/bChiLC0tZyk6MCxtLS0sMTA9PT12JiYobT0xLGgtLSksdn1mdW5jdGlvbiB4KCl7cmV0dXJuIHY9Zzx5P2woYixnKyspOjAsbSsrLDEwPT09diYmKG09MSxoKyspLHZ9ZnVuY3Rpb24gRSgpe3JldHVybiBsKGIsZyl9ZnVuY3Rpb24gQSgpe3JldHVybiBnfWZ1bmN0aW9uIFQoZSx0KXtyZXR1cm4gZihiLGUsdCl9ZnVuY3Rpb24gUihlKXtzd2l0Y2goZSl7Y2FzZSAwOmNhc2UgOTpjYXNlIDEwOmNhc2UgMTM6Y2FzZSAzMjpyZXR1cm4gNTtjYXNlIDMzOmNhc2UgNDM6Y2FzZSA0NDpjYXNlIDQ3OmNhc2UgNjI6Y2FzZSA2NDpjYXNlIDEyNjpjYXNlIDU5OmNhc2UgMTIzOmNhc2UgMTI1OnJldHVybiA0O2Nhc2UgNTg6cmV0dXJuIDM7Y2FzZSAzNDpjYXNlIDM5OmNhc2UgNDA6Y2FzZSA5MTpyZXR1cm4gMjtjYXNlIDQxOmNhc2UgOTM6cmV0dXJuIDF9cmV0dXJuIDB9ZnVuY3Rpb24gUChlKXtyZXR1cm4gaD1tPTEseT1kKGI9ZSksZz0wLFtdfWZ1bmN0aW9uIE8oZSl7cmV0dXJuIGI9IiIsZX1mdW5jdGlvbiBNKGUpe3JldHVybiBzKFQoZy0xLGooOTE9PT1lP2UrMjo0MD09PWU/ZSsxOmUpKSl9ZnVuY3Rpb24gRihlKXtmb3IoOyh2PUUoKSkmJnY8MzM7KXgoKTtyZXR1cm4gUihlKT4yfHxSKHYpPjM/IiI6IiAifWZ1bmN0aW9uIEkoZSx0KXtmb3IoOy0tdCYmeCgpJiYhKHY8NDh8fHY+MTAyfHx2PjU3JiZ2PDY1fHx2PjcwJiZ2PDk3KTspO3JldHVybiBUKGUsQSgpKyh0PDYmJjMyPT1FKCkmJjMyPT14KCkpKX1mdW5jdGlvbiBqKGUpe2Zvcig7eCgpOylzd2l0Y2godil7Y2FzZSBlOnJldHVybiBnO2Nhc2UgMzQ6Y2FzZSAzOTozNCE9PWUmJjM5IT09ZSYmaih2KTticmVhaztjYXNlIDQwOjQxPT09ZSYmaihlKTticmVhaztjYXNlIDkyOngoKX1yZXR1cm4gZ31mdW5jdGlvbiBEKGUsdCl7Zm9yKDt4KCkmJmUrdiE9PTU3JiYoZSt2IT09ODR8fDQ3IT09RSgpKTspO3JldHVybiIvKiIrVCh0LGctMSkrIioiK2koNDc9PT1lP2U6eCgpKX1mdW5jdGlvbiBMKGUpe2Zvcig7IVIoRSgpKTspeCgpO3JldHVybiBUKGUsZyl9dmFyIFU9Ii1tcy0iLHo9Ii1tb3otIixCPSItd2Via2l0LSIsSD0iY29tbSIsVz0icnVsZSIsJD0iZGVjbCIscT0iQGtleWZyYW1lcyI7ZnVuY3Rpb24gRyhlLHQpe2Zvcih2YXIgcj0iIixuPXAoZSksbz0wO288bjtvKyspcis9dChlW29dLG8sZSx0KXx8IiI7cmV0dXJuIHJ9ZnVuY3Rpb24gVihlLHQscixuKXtzd2l0Y2goZS50eXBlKXtjYXNlIkBsYXllciI6aWYoZS5jaGlsZHJlbi5sZW5ndGgpYnJlYWs7Y2FzZSJAaW1wb3J0IjpjYXNlICQ6cmV0dXJuIGUucmV0dXJuPWUucmV0dXJufHxlLnZhbHVlO2Nhc2UgSDpyZXR1cm4iIjtjYXNlIHE6cmV0dXJuIGUucmV0dXJuPWUudmFsdWUrInsiK0coZS5jaGlsZHJlbixuKSsifSI7Y2FzZSBXOmUudmFsdWU9ZS5wcm9wcy5qb2luKCIsIil9cmV0dXJuIGQocj1HKGUuY2hpbGRyZW4sbikpP2UucmV0dXJuPWUudmFsdWUrInsiK3IrIn0iOiIifWZ1bmN0aW9uIFkoZSl7cmV0dXJuIE8oSygiIixudWxsLG51bGwsbnVsbCxbIiJdLGU9UChlKSwwLFswXSxlKSl9ZnVuY3Rpb24gSyhlLHQscixuLG8sYSxzLGYscCl7Zm9yKHZhciBoPTAsbT0wLHk9cyxnPTAsdj0wLGI9MCx3PTEsUz0xLFQ9MSxSPTAsUD0iIixPPW8saj1hLFU9bix6PVA7Uzspc3dpdGNoKGI9UixSPXgoKSl7Y2FzZSA0MDppZigxMDghPWImJjU4PT1sKHoseS0xKSl7LTEhPXUoeis9YyhNKFIpLCImIiwiJlxmIiksIiZcZiIpJiYoVD0tMSk7YnJlYWt9Y2FzZSAzNDpjYXNlIDM5OmNhc2UgOTE6eis9TShSKTticmVhaztjYXNlIDk6Y2FzZSAxMDpjYXNlIDEzOmNhc2UgMzI6eis9RihiKTticmVhaztjYXNlIDkyOnorPUkoQSgpLTEsNyk7Y29udGludWU7Y2FzZSA0Nzpzd2l0Y2goRSgpKXtjYXNlIDQyOmNhc2UgNDc6XyhaKEQoeCgpLEEoKSksdCxyKSxwKTticmVhaztkZWZhdWx0OnorPSIvIn1icmVhaztjYXNlIDEyMyp3OmZbaCsrXT1kKHopKlQ7Y2FzZSAxMjUqdzpjYXNlIDU5OmNhc2UgMDpzd2l0Y2goUil7Y2FzZSAwOmNhc2UgMTI1OlM9MDtjYXNlIDU5K206LTE9PVQmJih6PWMoeiwvXGYvZywiIikpLHY+MCYmZCh6KS15JiZfKHY+MzI/USh6KyI7IixuLHIseS0xKTpRKGMoeiwiICIsIiIpKyI7IixuLHIseS0yKSxwKTticmVhaztjYXNlIDU5OnorPSI7IjtkZWZhdWx0OmlmKF8oVT1YKHosdCxyLGgsbSxvLGYsUCxPPVtdLGo9W10seSksYSksMTIzPT09UilpZigwPT09bSlLKHosdCxVLFUsTyxhLHksZixqKTtlbHNlIHN3aXRjaCg5OT09PWcmJjExMD09PWwoeiwzKT8xMDA6Zyl7Y2FzZSAxMDA6Y2FzZSAxMDg6Y2FzZSAxMDk6Y2FzZSAxMTU6SyhlLFUsVSxuJiZfKFgoZSxVLFUsMCwwLG8sZixQLG8sTz1bXSx5KSxqKSxvLGoseSxmLG4/TzpqKTticmVhaztkZWZhdWx0OksoeixVLFUsVSxbIiJdLGosMCxmLGopfX1oPW09dj0wLHc9VD0xLFA9ej0iIix5PXM7YnJlYWs7Y2FzZSA1ODp5PTErZCh6KSx2PWI7ZGVmYXVsdDppZih3PDEpaWYoMTIzPT1SKS0tdztlbHNlIGlmKDEyNT09UiYmMD09dysrJiYxMjU9PWsoKSljb250aW51ZTtzd2l0Y2goeis9aShSKSxSKncpe2Nhc2UgMzg6VD1tPjA/MTooeis9IlxmIiwtMSk7YnJlYWs7Y2FzZSA0NDpmW2grK109KGQoeiktMSkqVCxUPTE7YnJlYWs7Y2FzZSA2NDo0NT09PUUoKSYmKHorPU0oeCgpKSksZz1FKCksbT15PWQoUD16Kz1MKEEoKSkpLFIrKzticmVhaztjYXNlIDQ1OjQ1PT09YiYmMj09ZCh6KSYmKHc9MCl9fXJldHVybiBhfWZ1bmN0aW9uIFgoZSx0LHIsbixpLGEsdSxsLGQsXyxoKXtmb3IodmFyIG09aS0xLHk9MD09PWk/YTpbIiJdLGc9cCh5KSx2PTAsYj0wLFM9MDt2PG47Kyt2KWZvcih2YXIgaz0wLHg9ZihlLG0rMSxtPW8oYj11W3ZdKSksRT1lO2s8ZzsrK2spKEU9cyhiPjA/eVtrXSsiICIreDpjKHgsLyZcZi9nLHlba10pKSkmJihkW1MrK109RSk7cmV0dXJuIHcoZSx0LHIsMD09PWk/VzpsLGQsXyxoKX1mdW5jdGlvbiBaKGUsdCxyKXtyZXR1cm4gdyhlLHQscixILGkodiksZihlLDIsLTIpLDApfWZ1bmN0aW9uIFEoZSx0LHIsbil7cmV0dXJuIHcoZSx0LHIsJCxmKGUsMCxuKSxmKGUsbisxLC0xKSxuKX12YXIgZWU9ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbj0wLG89MDtuPW8sbz1FKCksMzg9PT1uJiYxMj09PW8mJih0W3JdPTEpLCFSKG8pOyl4KCk7cmV0dXJuIFQoZSxnKX0sdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTyhmdW5jdGlvbihlLHQpe3ZhciByPS0xLG49NDQ7ZG97c3dpdGNoKFIobikpe2Nhc2UgMDozOD09PW4mJjEyPT09RSgpJiYodFtyXT0xKSxlW3JdKz1lZShnLTEsdCxyKTticmVhaztjYXNlIDI6ZVtyXSs9TShuKTticmVhaztjYXNlIDQ6aWYoNDQ9PT1uKXtlWysrcl09NTg9PT1FKCk/IiZcZiI6IiIsdFtyXT1lW3JdLmxlbmd0aDticmVha31kZWZhdWx0OmVbcl0rPWkobil9fXdoaWxlKG49eCgpKTtyZXR1cm4gZX0oUChlKSx0KSl9LHJlPW5ldyBXZWFrTWFwLG5lPWZ1bmN0aW9uKGUpe2lmKCJydWxlIj09PWUudHlwZSYmZS5wYXJlbnQmJiEoZS5sZW5ndGg8MSkpe2Zvcih2YXIgdD1lLnZhbHVlLHI9ZS5wYXJlbnQsbj1lLmNvbHVtbj09PXIuY29sdW1uJiZlLmxpbmU9PT1yLmxpbmU7InJ1bGUiIT09ci50eXBlOylpZighKHI9ci5wYXJlbnQpKXJldHVybjtpZigoMSE9PWUucHJvcHMubGVuZ3RofHw1OD09PXQuY2hhckNvZGVBdCgwKXx8cmUuZ2V0KHIpKSYmIW4pe3JlLnNldChlLCEwKTtmb3IodmFyIG89W10saT10ZSh0LG8pLGE9ci5wcm9wcyxzPTAsYz0wO3M8aS5sZW5ndGg7cysrKWZvcih2YXIgdT0wO3U8YS5sZW5ndGg7dSsrLGMrKyllLnByb3BzW2NdPW9bc10/aVtzXS5yZXBsYWNlKC8mXGYvZyxhW3VdKTphW3VdKyIgIitpW3NdfX19LG9lPWZ1bmN0aW9uKGUpe2lmKCJkZWNsIj09PWUudHlwZSl7dmFyIHQ9ZS52YWx1ZTsxMDg9PT10LmNoYXJDb2RlQXQoMCkmJjk4PT09dC5jaGFyQ29kZUF0KDIpJiYoZS5yZXR1cm49IiIsZS52YWx1ZT0iIil9fTtmdW5jdGlvbiBpZShlLHQpe3N3aXRjaChmdW5jdGlvbihlLHQpe3JldHVybiA0NV5sKGUsMCk/KCgodDw8Ml5sKGUsMCkpPDwyXmwoZSwxKSk8PDJebChlLDIpKTw8Ml5sKGUsMyk6MH0oZSx0KSl7Y2FzZSA1MTAzOnJldHVybiBCKyJwcmludC0iK2UrZTtjYXNlIDU3Mzc6Y2FzZSA0MjAxOmNhc2UgMzE3NzpjYXNlIDM0MzM6Y2FzZSAxNjQxOmNhc2UgNDQ1NzpjYXNlIDI5MjE6Y2FzZSA1NTcyOmNhc2UgNjM1NjpjYXNlIDU4NDQ6Y2FzZSAzMTkxOmNhc2UgNjY0NTpjYXNlIDMwMDU6Y2FzZSA2MzkxOmNhc2UgNTg3OTpjYXNlIDU2MjM6Y2FzZSA2MTM1OmNhc2UgNDU5OTpjYXNlIDQ4NTU6Y2FzZSA0MjE1OmNhc2UgNjM4OTpjYXNlIDUxMDk6Y2FzZSA1MzY1OmNhc2UgNTYyMTpjYXNlIDM4Mjk6cmV0dXJuIEIrZStlO2Nhc2UgNTM0OTpjYXNlIDQyNDY6Y2FzZSA0ODEwOmNhc2UgNjk2ODpjYXNlIDI3NTY6cmV0dXJuIEIrZSt6K2UrVStlK2U7Y2FzZSA2ODI4OmNhc2UgNDI2ODpyZXR1cm4gQitlK1UrZStlO2Nhc2UgNjE2NTpyZXR1cm4gQitlK1UrImZsZXgtIitlK2U7Y2FzZSA1MTg3OnJldHVybiBCK2UrYyhlLC8oXHcrKS4rKDpbXl0rKS8sQisiYm94LSQxJDIiK1UrImZsZXgtJDEkMiIpK2U7Y2FzZSA1NDQzOnJldHVybiBCK2UrVSsiZmxleC1pdGVtLSIrYyhlLC9mbGV4LXwtc2VsZi8sIiIpK2U7Y2FzZSA0Njc1OnJldHVybiBCK2UrVSsiZmxleC1saW5lLXBhY2siK2MoZSwvYWxpZ24tY29udGVudHxmbGV4LXwtc2VsZi8sIiIpK2U7Y2FzZSA1NTQ4OnJldHVybiBCK2UrVStjKGUsInNocmluayIsIm5lZ2F0aXZlIikrZTtjYXNlIDUyOTI6cmV0dXJuIEIrZStVK2MoZSwiYmFzaXMiLCJwcmVmZXJyZWQtc2l6ZSIpK2U7Y2FzZSA2MDYwOnJldHVybiBCKyJib3gtIitjKGUsIi1ncm93IiwiIikrQitlK1UrYyhlLCJncm93IiwicG9zaXRpdmUiKStlO2Nhc2UgNDU1NDpyZXR1cm4gQitjKGUsLyhbXi1dKSh0cmFuc2Zvcm0pL2csIiQxIitCKyIkMiIpK2U7Y2FzZSA2MTg3OnJldHVybiBjKGMoYyhlLC8oem9vbS18Z3JhYikvLEIrIiQxIiksLyhpbWFnZS1zZXQpLyxCKyIkMSIpLGUsIiIpK2U7Y2FzZSA1NDk1OmNhc2UgMzk1OTpyZXR1cm4gYyhlLC8oaW1hZ2Utc2V0XChbXl0qKS8sQisiJDEkYCQxIik7Y2FzZSA0OTY4OnJldHVybiBjKGMoZSwvKC4rOikoZmxleC0pPyguKikvLEIrImJveC1wYWNrOiQzIitVKyJmbGV4LXBhY2s6JDMiKSwvcy4rLWJbXjtdKy8sImp1c3RpZnkiKStCK2UrZTtjYXNlIDQwOTU6Y2FzZSAzNTgzOmNhc2UgNDA2ODpjYXNlIDI1MzI6cmV0dXJuIGMoZSwvKC4rKS1pbmxpbmUoLispLyxCKyIkMSQyIikrZTtjYXNlIDgxMTY6Y2FzZSA3MDU5OmNhc2UgNTc1MzpjYXNlIDU1MzU6Y2FzZSA1NDQ1OmNhc2UgNTcwMTpjYXNlIDQ5MzM6Y2FzZSA0Njc3OmNhc2UgNTUzMzpjYXNlIDU3ODk6Y2FzZSA1MDIxOmNhc2UgNDc2NTppZihkKGUpLTEtdD42KXN3aXRjaChsKGUsdCsxKSl7Y2FzZSAxMDk6aWYoNDUhPT1sKGUsdCs0KSlicmVhaztjYXNlIDEwMjpyZXR1cm4gYyhlLC8oLis6KSguKyktKFteXSspLywiJDEiK0IrIiQyLSQzJDEiK3orKDEwOD09bChlLHQrMyk/IiQzIjoiJDItJDMiKSkrZTtjYXNlIDExNTpyZXR1cm5+dShlLCJzdHJldGNoIik/aWUoYyhlLCJzdHJldGNoIiwiZmlsbC1hdmFpbGFibGUiKSx0KStlOmV9YnJlYWs7Y2FzZSA0OTQ5OmlmKDExNSE9PWwoZSx0KzEpKWJyZWFrO2Nhc2UgNjQ0NDpzd2l0Y2gobChlLGQoZSktMy0ofnUoZSwiIWltcG9ydGFudCIpJiYxMCkpKXtjYXNlIDEwNzpyZXR1cm4gYyhlLCI6IiwiOiIrQikrZTtjYXNlIDEwMTpyZXR1cm4gYyhlLC8oLis6KShbXjshXSspKDt8IS4rKT8vLCIkMSIrQisoNDU9PT1sKGUsMTQpPyJpbmxpbmUtIjoiIikrImJveCQzJDEiK0IrIiQyJDMkMSIrVSsiJDJib3gkMyIpK2V9YnJlYWs7Y2FzZSA1OTM2OnN3aXRjaChsKGUsdCsxMSkpe2Nhc2UgMTE0OnJldHVybiBCK2UrVStjKGUsL1tzdmhdXHcrLVt0YmxyXXsyfS8sInRiIikrZTtjYXNlIDEwODpyZXR1cm4gQitlK1UrYyhlLC9bc3ZoXVx3Ky1bdGJscl17Mn0vLCJ0Yi1ybCIpK2U7Y2FzZSA0NTpyZXR1cm4gQitlK1UrYyhlLC9bc3ZoXVx3Ky1bdGJscl17Mn0vLCJsciIpK2V9cmV0dXJuIEIrZStVK2UrZX1yZXR1cm4gZX12YXIgYWU9W2Z1bmN0aW9uKGUsdCxyLG4pe2lmKGUubGVuZ3RoPi0xJiYhZS5yZXR1cm4pc3dpdGNoKGUudHlwZSl7Y2FzZSAkOmUucmV0dXJuPWllKGUudmFsdWUsZS5sZW5ndGgpO2JyZWFrO2Nhc2UgcTpyZXR1cm4gRyhbUyhlLHt2YWx1ZTpjKGUudmFsdWUsIkAiLCJAIitCKX0pXSxuKTtjYXNlIFc6aWYoZS5sZW5ndGgpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWFwKHQpLmpvaW4oIiIpfShlLnByb3BzLChmdW5jdGlvbih0KXtzd2l0Y2goZnVuY3Rpb24oZSx0KXtyZXR1cm4oZT10LmV4ZWMoZSkpP2VbMF06ZX0odCwvKDo6cGxhY1x3K3w6cmVhZC1cdyspLykpe2Nhc2UiOnJlYWQtb25seSI6Y2FzZSI6cmVhZC13cml0ZSI6cmV0dXJuIEcoW1MoZSx7cHJvcHM6W2ModCwvOihyZWFkLVx3KykvLCI6LW1vei0kMSIpXX0pXSxuKTtjYXNlIjo6cGxhY2Vob2xkZXIiOnJldHVybiBHKFtTKGUse3Byb3BzOltjKHQsLzoocGxhY1x3KykvLCI6IitCKyJpbnB1dC0kMSIpXX0pLFMoZSx7cHJvcHM6W2ModCwvOihwbGFjXHcrKS8sIjotbW96LSQxIildfSksUyhlLHtwcm9wczpbYyh0LC86KHBsYWNcdyspLyxVKyJpbnB1dC0kMSIpXX0pXSxuKX1yZXR1cm4iIn0pKX19XSxzZT1mdW5jdGlvbihlKXt2YXIgdD1lLmtleTtpZigiY3NzIj09PXQpe3ZhciByPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlW2RhdGEtZW1vdGlvbl06bm90KFtkYXRhLXNdKSIpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwociwoZnVuY3Rpb24oZSl7LTEhPT1lLmdldEF0dHJpYnV0ZSgiZGF0YS1lbW90aW9uIikuaW5kZXhPZigiICIpJiYoZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChlKSxlLnNldEF0dHJpYnV0ZSgiZGF0YS1zIiwiIikpfSkpfXZhciBvPWUuc3R5bGlzUGx1Z2luc3x8YWU7dmFyIGksYSxzPXt9LGM9W107aT1lLmNvbnRhaW5lcnx8ZG9jdW1lbnQuaGVhZCxBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlW2RhdGEtZW1vdGlvbl49IicrdCsnICJdJyksKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmdldEF0dHJpYnV0ZSgiZGF0YS1lbW90aW9uIikuc3BsaXQoIiAiKSxyPTE7cjx0Lmxlbmd0aDtyKyspc1t0W3JdXT0hMDtjLnB1c2goZSl9KSk7dmFyIHUsbCxmLGQsXz1bViwoZD1mdW5jdGlvbihlKXt1Lmluc2VydChlKX0sZnVuY3Rpb24oZSl7ZS5yb290fHwoZT1lLnJldHVybikmJmQoZSl9KV0saD0obD1bbmUsb2VdLmNvbmNhdChvLF8pLGY9cChsKSxmdW5jdGlvbihlLHQscixuKXtmb3IodmFyIG89IiIsaT0wO2k8ZjtpKyspbys9bFtpXShlLHQscixuKXx8IiI7cmV0dXJuIG99KTthPWZ1bmN0aW9uKGUsdCxyLG4pe3U9cixHKFkoZT9lKyJ7Iit0LnN0eWxlcysifSI6dC5zdHlsZXMpLGgpLG4mJihtLmluc2VydGVkW3QubmFtZV09ITApfTt2YXIgbT17a2V5OnQsc2hlZXQ6bmV3IG4oe2tleTp0LGNvbnRhaW5lcjppLG5vbmNlOmUubm9uY2Usc3BlZWR5OmUuc3BlZWR5LHByZXBlbmQ6ZS5wcmVwZW5kLGluc2VydGlvblBvaW50OmUuaW5zZXJ0aW9uUG9pbnR9KSxub25jZTplLm5vbmNlLGluc2VydGVkOnMscmVnaXN0ZXJlZDp7fSxpbnNlcnQ6YX07cmV0dXJuIG0uc2hlZXQuaHlkcmF0ZShjKSxtfX0sMzYyODk6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB2b2lkIDA9PT10W3JdJiYodFtyXT1lKHIpKSx0W3JdfX1yLmQodCx7QTpmdW5jdGlvbigpe3JldHVybiBufX0pfSw0MDA4NTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtDOmZ1bmN0aW9uKCl7cmV0dXJuIHB9LEU6ZnVuY3Rpb24oKXtyZXR1cm4gd30sVDpmdW5jdGlvbigpe3JldHVybiBofSxhOmZ1bmN0aW9uKCl7cmV0dXJuIHl9LGM6ZnVuY3Rpb24oKXtyZXR1cm4gdn0saDpmdW5jdGlvbigpe3JldHVybiBmfSxpOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LHc6ZnVuY3Rpb24oKXtyZXR1cm4gX319KTt2YXIgbj1yKDk2NTQwKSxvPXIoODQzMDApLGk9cig1ODE2OCksYT1yKDkyODA5KSxzPXIoMzAwNDEpLGM9cigxMzQ1MSksdT1yKDcxMjg3KSxsPSEwLGY9e30uaGFzT3duUHJvcGVydHksZD1uLmNyZWF0ZUNvbnRleHQoInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MRWxlbWVudD8oMCxvLkEpKHtrZXk6ImNzcyJ9KTpudWxsKTt2YXIgcD1kLlByb3ZpZGVyLF89ZnVuY3Rpb24oZSl7cmV0dXJuKDAsbi5mb3J3YXJkUmVmKSgoZnVuY3Rpb24odCxyKXt2YXIgbz0oMCxuLnVzZUNvbnRleHQpKGQpO3JldHVybiBlKHQsbyxyKX0pKX07bHx8KF89ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPSgwLG4udXNlQ29udGV4dCkoZCk7cmV0dXJuIG51bGw9PT1yPyhyPSgwLG8uQSkoe2tleToiY3NzIn0pLG4uY3JlYXRlRWxlbWVudChkLlByb3ZpZGVyLHt2YWx1ZTpyfSxlKHQscikpKTplKHQscil9fSk7dmFyIGg9bi5jcmVhdGVDb250ZXh0KHt9KTt2YXIgbT0oMCxhLkEpKChmdW5jdGlvbihlKXtyZXR1cm4oMCxhLkEpKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90KGUpOigwLGkuQSkoe30sZSx0KX0oZSx0KX0pKX0pKSx5PWZ1bmN0aW9uKGUpe3ZhciB0PW4udXNlQ29udGV4dChoKTtyZXR1cm4gZS50aGVtZSE9PXQmJih0PW0odCkoZS50aGVtZSkpLG4uY3JlYXRlRWxlbWVudChoLlByb3ZpZGVyLHt2YWx1ZTp0fSxlLmNoaWxkcmVuKX07dmFyIGc9Il9fRU1PVElPTl9UWVBFX1BMRUFTRV9ET19OT1RfVVNFX18iLHY9ZnVuY3Rpb24oZSx0KXt2YXIgcj17fTtmb3IodmFyIG4gaW4gdClmLmNhbGwodCxuKSYmKHJbbl09dFtuXSk7cmV0dXJuIHJbZ109ZSxyfSxiPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2FjaGUscj1lLnNlcmlhbGl6ZWQsbj1lLmlzU3RyaW5nVGFnO3JldHVybigwLHMuU0YpKHQscixuKSwoMCx1LnMpKChmdW5jdGlvbigpe3JldHVybigwLHMuc2spKHQscixuKX0pKSxudWxsfTt2YXIgdz1fKChmdW5jdGlvbihlLHQscil7dmFyIG89ZS5jc3M7InN0cmluZyI9PXR5cGVvZiBvJiZ2b2lkIDAhPT10LnJlZ2lzdGVyZWRbb10mJihvPXQucmVnaXN0ZXJlZFtvXSk7dmFyIGk9ZVtnXSxhPVtvXSx1PSIiOyJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWU/dT0oMCxzLlJrKSh0LnJlZ2lzdGVyZWQsYSxlLmNsYXNzTmFtZSk6bnVsbCE9ZS5jbGFzc05hbWUmJih1PWUuY2xhc3NOYW1lKyIgIik7dmFyIGw9KDAsYy5KKShhLHZvaWQgMCxuLnVzZUNvbnRleHQoaCkpO3UrPXQua2V5KyItIitsLm5hbWU7dmFyIGQ9e307Zm9yKHZhciBwIGluIGUpZi5jYWxsKGUscCkmJiJjc3MiIT09cCYmcCE9PWcmJihkW3BdPWVbcF0pO3JldHVybiBkLnJlZj1yLGQuY2xhc3NOYW1lPXUsbi5jcmVhdGVFbGVtZW50KG4uRnJhZ21lbnQsbnVsbCxuLmNyZWF0ZUVsZW1lbnQoYix7Y2FjaGU6dCxzZXJpYWxpemVkOmwsaXNTdHJpbmdUYWc6InN0cmluZyI9PXR5cGVvZiBpfSksbi5jcmVhdGVFbGVtZW50KGksZCkpfSkpfSwxNzQzNzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtBSDpmdW5jdGlvbigpe3JldHVybiBsfSxZOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LFoyOmZ1bmN0aW9uKCl7cmV0dXJuIF99LGk3OmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LG1MOmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSk7dmFyIG49cig0MDA4NSksbz1yKDk2NTQwKSxpPXIoMzAwNDEpLGE9cig3MTI4Nykscz1yKDEzNDUxKSxjPShyKDg0MzAwKSxyKDQxNDYpLGZ1bmN0aW9uKGUsdCl7dmFyIHI9YXJndW1lbnRzO2lmKG51bGw9PXR8fCFuLmguY2FsbCh0LCJjc3MiKSlyZXR1cm4gby5jcmVhdGVFbGVtZW50LmFwcGx5KHZvaWQgMCxyKTt2YXIgaT1yLmxlbmd0aCxhPW5ldyBBcnJheShpKTthWzBdPW4uRSxhWzFdPSgwLG4uYykoZSx0KTtmb3IodmFyIHM9MjtzPGk7cysrKWFbc109cltzXTtyZXR1cm4gby5jcmVhdGVFbGVtZW50LmFwcGx5KG51bGwsYSl9KSx1PSgwLG4udykoKGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5zdHlsZXMsYz0oMCxzLkopKFtyXSx2b2lkIDAsby51c2VDb250ZXh0KG4uVCkpO2lmKCFuLmkpe2Zvcih2YXIgdSxsPWMubmFtZSxmPWMuc3R5bGVzLGQ9Yy5uZXh0O3ZvaWQgMCE9PWQ7KWwrPSIgIitkLm5hbWUsZis9ZC5zdHlsZXMsZD1kLm5leHQ7dmFyIHA9ITA9PT10LmNvbXBhdCxfPXQuaW5zZXJ0KCIiLHtuYW1lOmwsc3R5bGVzOmZ9LHQuc2hlZXQscCk7cmV0dXJuIHA/bnVsbDpvLmNyZWF0ZUVsZW1lbnQoInN0eWxlIiwoKHU9e30pWyJkYXRhLWVtb3Rpb24iXT10LmtleSsiLWdsb2JhbCAiK2wsdS5kYW5nZXJvdXNseVNldElubmVySFRNTD17X19odG1sOl99LHUubm9uY2U9dC5zaGVldC5ub25jZSx1KSl9dmFyIGg9by51c2VSZWYoKTtyZXR1cm4oMCxhLmkpKChmdW5jdGlvbigpe3ZhciBlPXQua2V5KyItZ2xvYmFsIixyPW5ldyB0LnNoZWV0LmNvbnN0cnVjdG9yKHtrZXk6ZSxub25jZTp0LnNoZWV0Lm5vbmNlLGNvbnRhaW5lcjp0LnNoZWV0LmNvbnRhaW5lcixzcGVlZHk6dC5zaGVldC5pc1NwZWVkeX0pLG49ITEsbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdHlsZVtkYXRhLWVtb3Rpb249IicrZSsiICIrYy5uYW1lKyciXScpO3JldHVybiB0LnNoZWV0LnRhZ3MubGVuZ3RoJiYoci5iZWZvcmU9dC5zaGVldC50YWdzWzBdKSxudWxsIT09byYmKG49ITAsby5zZXRBdHRyaWJ1dGUoImRhdGEtZW1vdGlvbiIsZSksci5oeWRyYXRlKFtvXSkpLGguY3VycmVudD1bcixuXSxmdW5jdGlvbigpe3IuZmx1c2goKX19KSxbdF0pLCgwLGEuaSkoKGZ1bmN0aW9uKCl7dmFyIGU9aC5jdXJyZW50LHI9ZVswXTtpZihlWzFdKWVbMV09ITE7ZWxzZXtpZih2b2lkIDAhPT1jLm5leHQmJigwLGkuc2spKHQsYy5uZXh0LCEwKSxyLnRhZ3MubGVuZ3RoKXt2YXIgbj1yLnRhZ3Nbci50YWdzLmxlbmd0aC0xXS5uZXh0RWxlbWVudFNpYmxpbmc7ci5iZWZvcmU9bixyLmZsdXNoKCl9dC5pbnNlcnQoIiIsYyxyLCExKX19KSxbdCxjLm5hbWVdKSxudWxsfSkpO2Z1bmN0aW9uIGwoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4oMCxzLkopKHQpfXZhciBmPWZ1bmN0aW9uKCl7dmFyIGU9bC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSx0PSJhbmltYXRpb24tIitlLm5hbWU7cmV0dXJue25hbWU6dCxzdHlsZXM6IkBrZXlmcmFtZXMgIit0KyJ7IitlLnN0eWxlcysifSIsYW5pbToxLHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIl9FTU9fIit0aGlzLm5hbWUrIl8iK3RoaXMuc3R5bGVzKyJfRU1PXyJ9fX0sZD1mdW5jdGlvbiBlKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPTAsbz0iIjtuPHI7bisrKXt2YXIgaT10W25dO2lmKG51bGwhPWkpe3ZhciBhPXZvaWQgMDtzd2l0Y2godHlwZW9mIGkpe2Nhc2UiYm9vbGVhbiI6YnJlYWs7Y2FzZSJvYmplY3QiOmlmKEFycmF5LmlzQXJyYXkoaSkpYT1lKGkpO2Vsc2UgZm9yKHZhciBzIGluIGE9IiIsaSlpW3NdJiZzJiYoYSYmKGErPSIgIiksYSs9cyk7YnJlYWs7ZGVmYXVsdDphPWl9YSYmKG8mJihvKz0iICIpLG8rPWEpfX1yZXR1cm4gb307dmFyIHA9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jYWNoZSxyPWUuc2VyaWFsaXplZEFycjtyZXR1cm4oMCxhLnMpKChmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8ci5sZW5ndGg7ZSsrKSgwLGkuc2spKHQscltlXSwhMSl9KSksbnVsbH0sXz0oMCxuLncpKChmdW5jdGlvbihlLHQpe3ZhciByPVtdLGE9ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheShlKSxvPTA7bzxlO28rKyluW29dPWFyZ3VtZW50c1tvXTt2YXIgYT0oMCxzLkopKG4sdC5yZWdpc3RlcmVkKTtyZXR1cm4gci5wdXNoKGEpLCgwLGkuU0YpKHQsYSwhMSksdC5rZXkrIi0iK2EubmFtZX0sYz17Y3NzOmEsY3g6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPTA7bjxlO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtdLG89KDAsaS5SaykoZSxuLHIpO3JldHVybiBuLmxlbmd0aDwyP3I6byt0KG4pfSh0LnJlZ2lzdGVyZWQsYSxkKHIpKX0sdGhlbWU6by51c2VDb250ZXh0KG4uVCl9LHU9ZS5jaGlsZHJlbihjKTtyZXR1cm4gby5jcmVhdGVFbGVtZW50KG8uRnJhZ21lbnQsbnVsbCxvLmNyZWF0ZUVsZW1lbnQocCx7Y2FjaGU6dCxzZXJpYWxpemVkQXJyOnJ9KSx1KX0pKX0sMTM0NTE6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7SjpmdW5jdGlvbigpe3JldHVybiBffX0pO3ZhciBuPXthbmltYXRpb25JdGVyYXRpb25Db3VudDoxLGFzcGVjdFJhdGlvOjEsYm9yZGVySW1hZ2VPdXRzZXQ6MSxib3JkZXJJbWFnZVNsaWNlOjEsYm9yZGVySW1hZ2VXaWR0aDoxLGJveEZsZXg6MSxib3hGbGV4R3JvdXA6MSxib3hPcmRpbmFsR3JvdXA6MSxjb2x1bW5Db3VudDoxLGNvbHVtbnM6MSxmbGV4OjEsZmxleEdyb3c6MSxmbGV4UG9zaXRpdmU6MSxmbGV4U2hyaW5rOjEsZmxleE5lZ2F0aXZlOjEsZmxleE9yZGVyOjEsZ3JpZFJvdzoxLGdyaWRSb3dFbmQ6MSxncmlkUm93U3BhbjoxLGdyaWRSb3dTdGFydDoxLGdyaWRDb2x1bW46MSxncmlkQ29sdW1uRW5kOjEsZ3JpZENvbHVtblNwYW46MSxncmlkQ29sdW1uU3RhcnQ6MSxtc0dyaWRSb3c6MSxtc0dyaWRSb3dTcGFuOjEsbXNHcmlkQ29sdW1uOjEsbXNHcmlkQ29sdW1uU3BhbjoxLGZvbnRXZWlnaHQ6MSxsaW5lSGVpZ2h0OjEsb3BhY2l0eToxLG9yZGVyOjEsb3JwaGFuczoxLHRhYlNpemU6MSx3aWRvd3M6MSx6SW5kZXg6MSx6b29tOjEsV2Via2l0TGluZUNsYW1wOjEsZmlsbE9wYWNpdHk6MSxmbG9vZE9wYWNpdHk6MSxzdG9wT3BhY2l0eToxLHN0cm9rZURhc2hhcnJheToxLHN0cm9rZURhc2hvZmZzZXQ6MSxzdHJva2VNaXRlcmxpbWl0OjEsc3Ryb2tlT3BhY2l0eToxLHN0cm9rZVdpZHRoOjF9LG89cigzNjI4OSksaT0vW0EtWl18Xm1zL2csYT0vX0VNT18oW15fXSs/KV8oW15dKj8pX0VNT18vZyxzPWZ1bmN0aW9uKGUpe3JldHVybiA0NT09PWUuY2hhckNvZGVBdCgxKX0sYz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmImJvb2xlYW4iIT10eXBlb2YgZX0sdT0oMCxvLkEpKChmdW5jdGlvbihlKXtyZXR1cm4gcyhlKT9lOmUucmVwbGFjZShpLCItJCYiKS50b0xvd2VyQ2FzZSgpfSkpLGw9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJhbmltYXRpb24iOmNhc2UiYW5pbWF0aW9uTmFtZSI6aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0LnJlcGxhY2UoYSwoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBkPXtuYW1lOnQsc3R5bGVzOnIsbmV4dDpkfSx0fSkpfXJldHVybiAxPT09bltlXXx8cyhlKXx8Im51bWJlciIhPXR5cGVvZiB0fHwwPT09dD90OnQrInB4In07ZnVuY3Rpb24gZihlLHQscil7aWYobnVsbD09cilyZXR1cm4iIjtpZih2b2lkIDAhPT1yLl9fZW1vdGlvbl9zdHlsZXMpcmV0dXJuIHI7c3dpdGNoKHR5cGVvZiByKXtjYXNlImJvb2xlYW4iOnJldHVybiIiO2Nhc2Uib2JqZWN0IjppZigxPT09ci5hbmltKXJldHVybiBkPXtuYW1lOnIubmFtZSxzdHlsZXM6ci5zdHlsZXMsbmV4dDpkfSxyLm5hbWU7aWYodm9pZCAwIT09ci5zdHlsZXMpe3ZhciBuPXIubmV4dDtpZih2b2lkIDAhPT1uKWZvcig7dm9pZCAwIT09bjspZD17bmFtZTpuLm5hbWUsc3R5bGVzOm4uc3R5bGVzLG5leHQ6ZH0sbj1uLm5leHQ7cmV0dXJuIHIuc3R5bGVzKyI7In1yZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3ZhciBuPSIiO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspbis9ZihlLHQscltvXSkrIjsiO2Vsc2UgZm9yKHZhciBpIGluIHIpe3ZhciBhPXJbaV07aWYoIm9iamVjdCIhPXR5cGVvZiBhKW51bGwhPXQmJnZvaWQgMCE9PXRbYV0/bis9aSsieyIrdFthXSsifSI6YyhhKSYmKG4rPXUoaSkrIjoiK2woaSxhKSsiOyIpO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkoYSl8fCJzdHJpbmciIT10eXBlb2YgYVswXXx8bnVsbCE9dCYmdm9pZCAwIT09dFthWzBdXSl7dmFyIHM9ZihlLHQsYSk7c3dpdGNoKGkpe2Nhc2UiYW5pbWF0aW9uIjpjYXNlImFuaW1hdGlvbk5hbWUiOm4rPXUoaSkrIjoiK3MrIjsiO2JyZWFrO2RlZmF1bHQ6bis9aSsieyIrcysifSJ9fWVsc2UgZm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspYyhhW2RdKSYmKG4rPXUoaSkrIjoiK2woaSxhW2RdKSsiOyIpfXJldHVybiBufShlLHQscik7Y2FzZSJmdW5jdGlvbiI6aWYodm9pZCAwIT09ZSl7dmFyIG89ZCxpPXIoZSk7cmV0dXJuIGQ9byxmKGUsdCxpKX19aWYobnVsbD09dClyZXR1cm4gcjt2YXIgYT10W3JdO3JldHVybiB2b2lkIDAhPT1hP2E6cn12YXIgZCxwPS9sYWJlbDpccyooW15ccztcbntdKylccyooO3wkKS9nO3ZhciBfPWZ1bmN0aW9uKGUsdCxyKXtpZigxPT09ZS5sZW5ndGgmJiJvYmplY3QiPT10eXBlb2YgZVswXSYmbnVsbCE9PWVbMF0mJnZvaWQgMCE9PWVbMF0uc3R5bGVzKXJldHVybiBlWzBdO3ZhciBuPSEwLG89IiI7ZD12b2lkIDA7dmFyIGk9ZVswXTtudWxsPT1pfHx2b2lkIDA9PT1pLnJhdz8obj0hMSxvKz1mKHIsdCxpKSk6bys9aVswXTtmb3IodmFyIGE9MTthPGUubGVuZ3RoO2ErKylvKz1mKHIsdCxlW2FdKSxuJiYobys9aVthXSk7cC5sYXN0SW5kZXg9MDtmb3IodmFyIHMsYz0iIjtudWxsIT09KHM9cC5leGVjKG8pKTspYys9Ii0iK3NbMV07dmFyIHU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MCxuPTAsbz1lLmxlbmd0aDtvPj00OysrbixvLT00KXQ9MTU0MDQ4MzQ3NyooNjU1MzUmKHQ9MjU1JmUuY2hhckNvZGVBdChuKXwoMjU1JmUuY2hhckNvZGVBdCgrK24pKTw8OHwoMjU1JmUuY2hhckNvZGVBdCgrK24pKTw8MTZ8KDI1NSZlLmNoYXJDb2RlQXQoKytuKSk8PDI0KSkrKDU5Nzk3Kih0Pj4+MTYpPDwxNikscj0xNTQwNDgzNDc3Kig2NTUzNSYodF49dD4+PjI0KSkrKDU5Nzk3Kih0Pj4+MTYpPDwxNileMTU0MDQ4MzQ3NyooNjU1MzUmcikrKDU5Nzk3KihyPj4+MTYpPDwxNik7c3dpdGNoKG8pe2Nhc2UgMzpyXj0oMjU1JmUuY2hhckNvZGVBdChuKzIpKTw8MTY7Y2FzZSAyOnJePSgyNTUmZS5jaGFyQ29kZUF0KG4rMSkpPDw4O2Nhc2UgMTpyPTE1NDA0ODM0NzcqKDY1NTM1JihyXj0yNTUmZS5jaGFyQ29kZUF0KG4pKSkrKDU5Nzk3KihyPj4+MTYpPDwxNil9cmV0dXJuKCgocj0xNTQwNDgzNDc3Kig2NTUzNSYocl49cj4+PjEzKSkrKDU5Nzk3KihyPj4+MTYpPDwxNikpXnI+Pj4xNSk+Pj4wKS50b1N0cmluZygzNil9KG8pK2M7cmV0dXJue25hbWU6dSxzdHlsZXM6byxuZXh0OmR9fX0sOTA2NDQ6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7QTpmdW5jdGlvbigpe3JldHVybiB5fX0pO3ZhciBuPXIoNTgxNjgpLG89cig5NjU0MCksaT1yKDM2Mjg5KSxhPS9eKChjaGlsZHJlbnxkYW5nZXJvdXNseVNldElubmVySFRNTHxrZXl8cmVmfGF1dG9Gb2N1c3xkZWZhdWx0VmFsdWV8ZGVmYXVsdENoZWNrZWR8aW5uZXJIVE1MfHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ3xzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8dmFsdWVMaW5rfGFiYnJ8YWNjZXB0fGFjY2VwdENoYXJzZXR8YWNjZXNzS2V5fGFjdGlvbnxhbGxvd3xhbGxvd1VzZXJNZWRpYXxhbGxvd1BheW1lbnRSZXF1ZXN0fGFsbG93RnVsbFNjcmVlbnxhbGxvd1RyYW5zcGFyZW5jeXxhbHR8YXN5bmN8YXV0b0NvbXBsZXRlfGF1dG9QbGF5fGNhcHR1cmV8Y2VsbFBhZGRpbmd8Y2VsbFNwYWNpbmd8Y2hhbGxlbmdlfGNoYXJTZXR8Y2hlY2tlZHxjaXRlfGNsYXNzSUR8Y2xhc3NOYW1lfGNvbHN8Y29sU3Bhbnxjb250ZW50fGNvbnRlbnRFZGl0YWJsZXxjb250ZXh0TWVudXxjb250cm9sc3xjb250cm9sc0xpc3R8Y29vcmRzfGNyb3NzT3JpZ2lufGRhdGF8ZGF0ZVRpbWV8ZGVjb2Rpbmd8ZGVmYXVsdHxkZWZlcnxkaXJ8ZGlzYWJsZWR8ZGlzYWJsZVBpY3R1cmVJblBpY3R1cmV8ZGlzYWJsZVJlbW90ZVBsYXliYWNrfGRvd25sb2FkfGRyYWdnYWJsZXxlbmNUeXBlfGVudGVyS2V5SGludHxmb3JtfGZvcm1BY3Rpb258Zm9ybUVuY1R5cGV8Zm9ybU1ldGhvZHxmb3JtTm9WYWxpZGF0ZXxmb3JtVGFyZ2V0fGZyYW1lQm9yZGVyfGhlYWRlcnN8aGVpZ2h0fGhpZGRlbnxoaWdofGhyZWZ8aHJlZkxhbmd8aHRtbEZvcnxodHRwRXF1aXZ8aWR8aW5wdXRNb2RlfGludGVncml0eXxpc3xrZXlQYXJhbXN8a2V5VHlwZXxraW5kfGxhYmVsfGxhbmd8bGlzdHxsb2FkaW5nfGxvb3B8bG93fG1hcmdpbkhlaWdodHxtYXJnaW5XaWR0aHxtYXh8bWF4TGVuZ3RofG1lZGlhfG1lZGlhR3JvdXB8bWV0aG9kfG1pbnxtaW5MZW5ndGh8bXVsdGlwbGV8bXV0ZWR8bmFtZXxub25jZXxub1ZhbGlkYXRlfG9wZW58b3B0aW11bXxwYXR0ZXJufHBsYWNlaG9sZGVyfHBsYXlzSW5saW5lfHBvc3RlcnxwcmVsb2FkfHByb2ZpbGV8cmFkaW9Hcm91cHxyZWFkT25seXxyZWZlcnJlclBvbGljeXxyZWx8cmVxdWlyZWR8cmV2ZXJzZWR8cm9sZXxyb3dzfHJvd1NwYW58c2FuZGJveHxzY29wZXxzY29wZWR8c2Nyb2xsaW5nfHNlYW1sZXNzfHNlbGVjdGVkfHNoYXBlfHNpemV8c2l6ZXN8c2xvdHxzcGFufHNwZWxsQ2hlY2t8c3JjfHNyY0RvY3xzcmNMYW5nfHNyY1NldHxzdGFydHxzdGVwfHN0eWxlfHN1bW1hcnl8dGFiSW5kZXh8dGFyZ2V0fHRpdGxlfHRyYW5zbGF0ZXx0eXBlfHVzZU1hcHx2YWx1ZXx3aWR0aHx3bW9kZXx3cmFwfGFib3V0fGRhdGF0eXBlfGlubGlzdHxwcmVmaXh8cHJvcGVydHl8cmVzb3VyY2V8dHlwZW9mfHZvY2FifGF1dG9DYXBpdGFsaXplfGF1dG9Db3JyZWN0fGF1dG9TYXZlfGNvbG9yfGluY3JlbWVudGFsfGZhbGxiYWNrfGluZXJ0fGl0ZW1Qcm9wfGl0ZW1TY29wZXxpdGVtVHlwZXxpdGVtSUR8aXRlbVJlZnxvbnxvcHRpb258cmVzdWx0c3xzZWN1cml0eXx1bnNlbGVjdGFibGV8YWNjZW50SGVpZ2h0fGFjY3VtdWxhdGV8YWRkaXRpdmV8YWxpZ25tZW50QmFzZWxpbmV8YWxsb3dSZW9yZGVyfGFscGhhYmV0aWN8YW1wbGl0dWRlfGFyYWJpY0Zvcm18YXNjZW50fGF0dHJpYnV0ZU5hbWV8YXR0cmlidXRlVHlwZXxhdXRvUmV2ZXJzZXxhemltdXRofGJhc2VGcmVxdWVuY3l8YmFzZWxpbmVTaGlmdHxiYXNlUHJvZmlsZXxiYm94fGJlZ2lufGJpYXN8Ynl8Y2FsY01vZGV8Y2FwSGVpZ2h0fGNsaXB8Y2xpcFBhdGhVbml0c3xjbGlwUGF0aHxjbGlwUnVsZXxjb2xvckludGVycG9sYXRpb258Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyc3xjb2xvclByb2ZpbGV8Y29sb3JSZW5kZXJpbmd8Y29udGVudFNjcmlwdFR5cGV8Y29udGVudFN0eWxlVHlwZXxjdXJzb3J8Y3h8Y3l8ZHxkZWNlbGVyYXRlfGRlc2NlbnR8ZGlmZnVzZUNvbnN0YW50fGRpcmVjdGlvbnxkaXNwbGF5fGRpdmlzb3J8ZG9taW5hbnRCYXNlbGluZXxkdXJ8ZHh8ZHl8ZWRnZU1vZGV8ZWxldmF0aW9ufGVuYWJsZUJhY2tncm91bmR8ZW5kfGV4cG9uZW50fGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWR8ZmlsbHxmaWxsT3BhY2l0eXxmaWxsUnVsZXxmaWx0ZXJ8ZmlsdGVyUmVzfGZpbHRlclVuaXRzfGZsb29kQ29sb3J8Zmxvb2RPcGFjaXR5fGZvY3VzYWJsZXxmb250RmFtaWx5fGZvbnRTaXplfGZvbnRTaXplQWRqdXN0fGZvbnRTdHJldGNofGZvbnRTdHlsZXxmb250VmFyaWFudHxmb250V2VpZ2h0fGZvcm1hdHxmcm9tfGZyfGZ4fGZ5fGcxfGcyfGdseXBoTmFtZXxnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbHxnbHlwaE9yaWVudGF0aW9uVmVydGljYWx8Z2x5cGhSZWZ8Z3JhZGllbnRUcmFuc2Zvcm18Z3JhZGllbnRVbml0c3xoYW5naW5nfGhvcml6QWR2WHxob3Jpek9yaWdpblh8aWRlb2dyYXBoaWN8aW1hZ2VSZW5kZXJpbmd8aW58aW4yfGludGVyY2VwdHxrfGsxfGsyfGszfGs0fGtlcm5lbE1hdHJpeHxrZXJuZWxVbml0TGVuZ3RofGtlcm5pbmd8a2V5UG9pbnRzfGtleVNwbGluZXN8a2V5VGltZXN8bGVuZ3RoQWRqdXN0fGxldHRlclNwYWNpbmd8bGlnaHRpbmdDb2xvcnxsaW1pdGluZ0NvbmVBbmdsZXxsb2NhbHxtYXJrZXJFbmR8bWFya2VyTWlkfG1hcmtlclN0YXJ0fG1hcmtlckhlaWdodHxtYXJrZXJVbml0c3xtYXJrZXJXaWR0aHxtYXNrfG1hc2tDb250ZW50VW5pdHN8bWFza1VuaXRzfG1hdGhlbWF0aWNhbHxtb2RlfG51bU9jdGF2ZXN8b2Zmc2V0fG9wYWNpdHl8b3BlcmF0b3J8b3JkZXJ8b3JpZW50fG9yaWVudGF0aW9ufG9yaWdpbnxvdmVyZmxvd3xvdmVybGluZVBvc2l0aW9ufG92ZXJsaW5lVGhpY2tuZXNzfHBhbm9zZTF8cGFpbnRPcmRlcnxwYXRoTGVuZ3RofHBhdHRlcm5Db250ZW50VW5pdHN8cGF0dGVyblRyYW5zZm9ybXxwYXR0ZXJuVW5pdHN8cG9pbnRlckV2ZW50c3xwb2ludHN8cG9pbnRzQXRYfHBvaW50c0F0WXxwb2ludHNBdFp8cHJlc2VydmVBbHBoYXxwcmVzZXJ2ZUFzcGVjdFJhdGlvfHByaW1pdGl2ZVVuaXRzfHJ8cmFkaXVzfHJlZlh8cmVmWXxyZW5kZXJpbmdJbnRlbnR8cmVwZWF0Q291bnR8cmVwZWF0RHVyfHJlcXVpcmVkRXh0ZW5zaW9uc3xyZXF1aXJlZEZlYXR1cmVzfHJlc3RhcnR8cmVzdWx0fHJvdGF0ZXxyeHxyeXxzY2FsZXxzZWVkfHNoYXBlUmVuZGVyaW5nfHNsb3BlfHNwYWNpbmd8c3BlY3VsYXJDb25zdGFudHxzcGVjdWxhckV4cG9uZW50fHNwZWVkfHNwcmVhZE1ldGhvZHxzdGFydE9mZnNldHxzdGREZXZpYXRpb258c3RlbWh8c3RlbXZ8c3RpdGNoVGlsZXN8c3RvcENvbG9yfHN0b3BPcGFjaXR5fHN0cmlrZXRocm91Z2hQb3NpdGlvbnxzdHJpa2V0aHJvdWdoVGhpY2tuZXNzfHN0cmluZ3xzdHJva2V8c3Ryb2tlRGFzaGFycmF5fHN0cm9rZURhc2hvZmZzZXR8c3Ryb2tlTGluZWNhcHxzdHJva2VMaW5lam9pbnxzdHJva2VNaXRlcmxpbWl0fHN0cm9rZU9wYWNpdHl8c3Ryb2tlV2lkdGh8c3VyZmFjZVNjYWxlfHN5c3RlbUxhbmd1YWdlfHRhYmxlVmFsdWVzfHRhcmdldFh8dGFyZ2V0WXx0ZXh0QW5jaG9yfHRleHREZWNvcmF0aW9ufHRleHRSZW5kZXJpbmd8dGV4dExlbmd0aHx0b3x0cmFuc2Zvcm18dTF8dTJ8dW5kZXJsaW5lUG9zaXRpb258dW5kZXJsaW5lVGhpY2tuZXNzfHVuaWNvZGV8dW5pY29kZUJpZGl8dW5pY29kZVJhbmdlfHVuaXRzUGVyRW18dkFscGhhYmV0aWN8dkhhbmdpbmd8dklkZW9ncmFwaGljfHZNYXRoZW1hdGljYWx8dmFsdWVzfHZlY3RvckVmZmVjdHx2ZXJzaW9ufHZlcnRBZHZZfHZlcnRPcmlnaW5YfHZlcnRPcmlnaW5ZfHZpZXdCb3h8dmlld1RhcmdldHx2aXNpYmlsaXR5fHdpZHRoc3x3b3JkU3BhY2luZ3x3cml0aW5nTW9kZXx4fHhIZWlnaHR8eDF8eDJ8eENoYW5uZWxTZWxlY3Rvcnx4bGlua0FjdHVhdGV8eGxpbmtBcmNyb2xlfHhsaW5rSHJlZnx4bGlua1JvbGV8eGxpbmtTaG93fHhsaW5rVGl0bGV8eGxpbmtUeXBlfHhtbEJhc2V8eG1sbnN8eG1sbnNYbGlua3x4bWxMYW5nfHhtbFNwYWNlfHl8eTF8eTJ8eUNoYW5uZWxTZWxlY3Rvcnx6fHpvb21BbmRQYW58Zm9yfGNsYXNzfGF1dG9mb2N1cyl8KChbRGRdW0FhXVtUdF1bQWFdfFtBYV1bUnJdW0lpXVtBYV18eCktLiopKSQvLHM9KDAsaS5BKSgoZnVuY3Rpb24oZSl7cmV0dXJuIGEudGVzdChlKXx8MTExPT09ZS5jaGFyQ29kZUF0KDApJiYxMTA9PT1lLmNoYXJDb2RlQXQoMSkmJmUuY2hhckNvZGVBdCgyKTw5MX0pKSxjPXIoNDAwODUpLHU9cigzMDA0MSksbD1yKDEzNDUxKSxmPXIoNzEyODcpLGQ9cyxwPWZ1bmN0aW9uKGUpe3JldHVybiJ0aGVtZSIhPT1lfSxfPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5jaGFyQ29kZUF0KDApPjk2P2Q6cH0saD1mdW5jdGlvbihlLHQscil7dmFyIG47aWYodCl7dmFyIG89dC5zaG91bGRGb3J3YXJkUHJvcDtuPWUuX19lbW90aW9uX2ZvcndhcmRQcm9wJiZvP2Z1bmN0aW9uKHQpe3JldHVybiBlLl9fZW1vdGlvbl9mb3J3YXJkUHJvcCh0KSYmbyh0KX06b31yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgbiYmciYmKG49ZS5fX2Vtb3Rpb25fZm9yd2FyZFByb3ApLG59LG09ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jYWNoZSxyPWUuc2VyaWFsaXplZCxuPWUuaXNTdHJpbmdUYWc7cmV0dXJuKDAsdS5TRikodCxyLG4pLCgwLGYucykoKGZ1bmN0aW9uKCl7cmV0dXJuKDAsdS5zaykodCxyLG4pfSkpLG51bGx9LHk9ZnVuY3Rpb24gZSh0LHIpe3ZhciBpLGEscz10Ll9fZW1vdGlvbl9yZWFsPT09dCxmPXMmJnQuX19lbW90aW9uX2Jhc2V8fHQ7dm9pZCAwIT09ciYmKGk9ci5sYWJlbCxhPXIudGFyZ2V0KTt2YXIgZD1oKHQscixzKSxwPWR8fF8oZikseT0hcCgiYXMiKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZz1hcmd1bWVudHMsdj1zJiZ2b2lkIDAhPT10Ll9fZW1vdGlvbl9zdHlsZXM/dC5fX2Vtb3Rpb25fc3R5bGVzLnNsaWNlKDApOltdO2lmKHZvaWQgMCE9PWkmJnYucHVzaCgibGFiZWw6IitpKyI7IiksbnVsbD09Z1swXXx8dm9pZCAwPT09Z1swXS5yYXcpdi5wdXNoLmFwcGx5KHYsZyk7ZWxzZXswLHYucHVzaChnWzBdWzBdKTtmb3IodmFyIGI9Zy5sZW5ndGgsdz0xO3c8Yjt3Kyspdi5wdXNoKGdbd10sZ1swXVt3XSl9dmFyIFM9KDAsYy53KSgoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXkmJmUuYXN8fGYsaT0iIixzPVtdLGg9ZTtpZihudWxsPT1lLnRoZW1lKXtmb3IodmFyIGcgaW4gaD17fSxlKWhbZ109ZVtnXTtoLnRoZW1lPW8udXNlQ29udGV4dChjLlQpfSJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWU/aT0oMCx1LlJrKSh0LnJlZ2lzdGVyZWQscyxlLmNsYXNzTmFtZSk6bnVsbCE9ZS5jbGFzc05hbWUmJihpPWUuY2xhc3NOYW1lKyIgIik7dmFyIGI9KDAsbC5KKSh2LmNvbmNhdChzKSx0LnJlZ2lzdGVyZWQsaCk7aSs9dC5rZXkrIi0iK2IubmFtZSx2b2lkIDAhPT1hJiYoaSs9IiAiK2EpO3ZhciB3PXkmJnZvaWQgMD09PWQ/XyhuKTpwLFM9e307Zm9yKHZhciBrIGluIGUpeSYmImFzIj09PWt8fHcoaykmJihTW2tdPWVba10pO3JldHVybiBTLmNsYXNzTmFtZT1pLFMucmVmPXIsby5jcmVhdGVFbGVtZW50KG8uRnJhZ21lbnQsbnVsbCxvLmNyZWF0ZUVsZW1lbnQobSx7Y2FjaGU6dCxzZXJpYWxpemVkOmIsaXNTdHJpbmdUYWc6InN0cmluZyI9PXR5cGVvZiBufSksby5jcmVhdGVFbGVtZW50KG4sUykpfSkpO3JldHVybiBTLmRpc3BsYXlOYW1lPXZvaWQgMCE9PWk/aToiU3R5bGVkKCIrKCJzdHJpbmciPT10eXBlb2YgZj9mOmYuZGlzcGxheU5hbWV8fGYubmFtZXx8IkNvbXBvbmVudCIpKyIpIixTLmRlZmF1bHRQcm9wcz10LmRlZmF1bHRQcm9wcyxTLl9fZW1vdGlvbl9yZWFsPVMsUy5fX2Vtb3Rpb25fYmFzZT1mLFMuX19lbW90aW9uX3N0eWxlcz12LFMuX19lbW90aW9uX2ZvcndhcmRQcm9wPWQsT2JqZWN0LmRlZmluZVByb3BlcnR5KFMsInRvU3RyaW5nIix7dmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4iLiIrYX19KSxTLndpdGhDb21wb25lbnQ9ZnVuY3Rpb24odCxvKXtyZXR1cm4gZSh0LCgwLG4uQSkoe30scixvLHtzaG91bGRGb3J3YXJkUHJvcDpoKFMsbywhMCl9KSkuYXBwbHkodm9pZCAwLHYpfSxTfX19LDcxMjg3OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG47ci5kKHQse2k6ZnVuY3Rpb24oKXtyZXR1cm4gc30sczpmdW5jdGlvbigpe3JldHVybiBhfX0pO3ZhciBvPXIoOTY1NDApLGk9ISEobnx8KG49ci50KG8sMikpKS51c2VJbnNlcnRpb25FZmZlY3QmJihufHwobj1yLnQobywyKSkpLnVzZUluc2VydGlvbkVmZmVjdCxhPWl8fGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9LHM9aXx8by51c2VMYXlvdXRFZmZlY3R9LDMwMDQxOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5kKHQse1JrOmZ1bmN0aW9uKCl7cmV0dXJuIG59LFNGOmZ1bmN0aW9uKCl7cmV0dXJuIG99LHNrOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7ZnVuY3Rpb24gbihlLHQscil7dmFyIG49IiI7cmV0dXJuIHIuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihyKXt2b2lkIDAhPT1lW3JdP3QucHVzaChlW3JdKyI7Iik6bis9cisiICJ9KSksbn12YXIgbz1mdW5jdGlvbihlLHQscil7dmFyIG49ZS5rZXkrIi0iK3QubmFtZTshMT09PXImJnZvaWQgMD09PWUucmVnaXN0ZXJlZFtuXSYmKGUucmVnaXN0ZXJlZFtuXT10LnN0eWxlcyl9LGk9ZnVuY3Rpb24oZSx0LHIpe28oZSx0LHIpO3ZhciBuPWUua2V5KyItIit0Lm5hbWU7aWYodm9pZCAwPT09ZS5pbnNlcnRlZFt0Lm5hbWVdKXt2YXIgaT10O2Rve2UuaW5zZXJ0KHQ9PT1pPyIuIituOiIiLGksZS5zaGVldCwhMCksaT1pLm5leHR9d2hpbGUodm9pZCAwIT09aSl9fX0sOTI4MDk6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7QTpmdW5jdGlvbigpe3JldHVybiBufX0pO3ZhciBuPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBXZWFrTWFwO3JldHVybiBmdW5jdGlvbihyKXtpZih0LmhhcyhyKSlyZXR1cm4gdC5nZXQocik7dmFyIG49ZShyKTtyZXR1cm4gdC5zZXQocixuKSxufX19LDk3MTYwOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1BcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiB0KHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGUodCl9ZnVuY3Rpb24gcihlLHQscil7cmV0dXJuKHQ9dSh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPXIsZX1mdW5jdGlvbiBuKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX1mdW5jdGlvbiBvKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9ZnVuY3Rpb24gaShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gYShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9pKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6aShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBzKGUpe3JldHVybiB0KGUpfHxuKGUpfHxsKGUpfHxvKCl9ZnVuY3Rpb24gYyhlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8IWUpcmV0dXJuIGU7dmFyIHI9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbChlLHQpO2lmKCJvYmplY3QiIT10eXBlb2YgbilyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PXQ/U3RyaW5nOk51bWJlcikoZSl9ZnVuY3Rpb24gdShlKXt2YXIgdD1jKGUsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgdD90OnQrIiJ9ZnVuY3Rpb24gbCh0LHIpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gZSh0LHIpO3ZhciBuPXt9LnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20odCk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9lKHQscik6dm9pZCAwfX1mdW5jdGlvbiBmKGUsdCl7cmV0dXJuIGUodD17ZXhwb3J0czp7fX0sdC5leHBvcnRzKSx0LmV4cG9ydHN9dmFyIGQ9ZigoZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKHQpe3ZhciByPS9eXHMrLyxuPS9ccyskLyxvPTAsaT10LnJvdW5kLGE9dC5taW4scz10Lm1heCxjPXQucmFuZG9tO2Z1bmN0aW9uIHUoZSx0KXtpZih0PXR8fHt9LChlPWV8fCIiKWluc3RhbmNlb2YgdSlyZXR1cm4gZTtpZighKHRoaXMgaW5zdGFuY2VvZiB1KSlyZXR1cm4gbmV3IHUoZSx0KTt2YXIgcj1sKGUpO3RoaXMuX29yaWdpbmFsSW5wdXQ9ZSx0aGlzLl9yPXIucix0aGlzLl9nPXIuZyx0aGlzLl9iPXIuYix0aGlzLl9hPXIuYSx0aGlzLl9yb3VuZEE9aSgxMDAqdGhpcy5fYSkvMTAwLHRoaXMuX2Zvcm1hdD10LmZvcm1hdHx8ci5mb3JtYXQsdGhpcy5fZ3JhZGllbnRUeXBlPXQuZ3JhZGllbnRUeXBlLHRoaXMuX3I8MSYmKHRoaXMuX3I9aSh0aGlzLl9yKSksdGhpcy5fZzwxJiYodGhpcy5fZz1pKHRoaXMuX2cpKSx0aGlzLl9iPDEmJih0aGlzLl9iPWkodGhpcy5fYikpLHRoaXMuX29rPXIub2ssdGhpcy5fdGNfaWQ9bysrfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9e3I6MCxnOjAsYjowfSxyPTEsbj1udWxsLG89bnVsbCxpPW51bGwsYz0hMSx1PSExO3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmKGU9UShlKSksIm9iamVjdCI9PXR5cGVvZiBlJiYoWihlLnIpJiZaKGUuZykmJlooZS5iKT8odD1mKGUucixlLmcsZS5iKSxjPSEwLHU9IiUiPT09U3RyaW5nKGUucikuc3Vic3RyKC0xKT8icHJnYiI6InJnYiIpOlooZS5oKSYmWihlLnMpJiZaKGUudik/KG49JChlLnMpLG89JChlLnYpLHQ9aChlLmgsbixvKSxjPSEwLHU9ImhzdiIpOlooZS5oKSYmWihlLnMpJiZaKGUubCkmJihuPSQoZS5zKSxpPSQoZS5sKSx0PXAoZS5oLG4saSksYz0hMCx1PSJoc2wiKSxlLmhhc093blByb3BlcnR5KCJhIikmJihyPWUuYSkpLHI9RChyKSx7b2s6Yyxmb3JtYXQ6ZS5mb3JtYXR8fHUscjphKDI1NSxzKHQuciwwKSksZzphKDI1NSxzKHQuZywwKSksYjphKDI1NSxzKHQuYiwwKSksYTpyfX1mdW5jdGlvbiBmKGUsdCxyKXtyZXR1cm57cjoyNTUqTChlLDI1NSksZzoyNTUqTCh0LDI1NSksYjoyNTUqTChyLDI1NSl9fWZ1bmN0aW9uIGQoZSx0LHIpe2U9TChlLDI1NSksdD1MKHQsMjU1KSxyPUwociwyNTUpO3ZhciBuLG8saT1zKGUsdCxyKSxjPWEoZSx0LHIpLHU9KGkrYykvMjtpZihpPT1jKW49bz0wO2Vsc2V7dmFyIGw9aS1jO3N3aXRjaChvPXU+LjU/bC8oMi1pLWMpOmwvKGkrYyksaSl7Y2FzZSBlOm49KHQtcikvbCsodDxyPzY6MCk7YnJlYWs7Y2FzZSB0Om49KHItZSkvbCsyO2JyZWFrO2Nhc2UgcjpuPShlLXQpL2wrNH1uLz02fXJldHVybntoOm4sczpvLGw6dX19ZnVuY3Rpb24gcChlLHQscil7dmFyIG4sbyxpO2Z1bmN0aW9uIGEoZSx0LHIpe3JldHVybiByPDAmJihyKz0xKSxyPjEmJihyLT0xKSxyPDEvNj9lKzYqKHQtZSkqcjpyPC41P3Q6cjwyLzM/ZSsodC1lKSooMi8zLXIpKjY6ZX1pZihlPUwoZSwzNjApLHQ9TCh0LDEwMCkscj1MKHIsMTAwKSwwPT09dCluPW89aT1yO2Vsc2V7dmFyIHM9cjwuNT9yKigxK3QpOnIrdC1yKnQsYz0yKnItcztuPWEoYyxzLGUrMS8zKSxvPWEoYyxzLGUpLGk9YShjLHMsZS0xLzMpfXJldHVybntyOjI1NSpuLGc6MjU1Km8sYjoyNTUqaX19ZnVuY3Rpb24gXyhlLHQscil7ZT1MKGUsMjU1KSx0PUwodCwyNTUpLHI9TChyLDI1NSk7dmFyIG4sbyxpPXMoZSx0LHIpLGM9YShlLHQsciksdT1pLGw9aS1jO2lmKG89MD09PWk/MDpsL2ksaT09YyluPTA7ZWxzZXtzd2l0Y2goaSl7Y2FzZSBlOm49KHQtcikvbCsodDxyPzY6MCk7YnJlYWs7Y2FzZSB0Om49KHItZSkvbCsyO2JyZWFrO2Nhc2UgcjpuPShlLXQpL2wrNH1uLz02fXJldHVybntoOm4sczpvLHY6dX19ZnVuY3Rpb24gaChlLHIsbil7ZT02KkwoZSwzNjApLHI9TChyLDEwMCksbj1MKG4sMTAwKTt2YXIgbz10LmZsb29yKGUpLGk9ZS1vLGE9biooMS1yKSxzPW4qKDEtaSpyKSxjPW4qKDEtKDEtaSkqciksdT1vJTY7cmV0dXJue3I6MjU1KltuLHMsYSxhLGMsbl1bdV0sZzoyNTUqW2MsbixuLHMsYSxhXVt1XSxiOjI1NSpbYSxhLGMsbixuLHNdW3VdfX1mdW5jdGlvbiBtKGUsdCxyLG4pe3ZhciBvPVtXKGkoZSkudG9TdHJpbmcoMTYpKSxXKGkodCkudG9TdHJpbmcoMTYpKSxXKGkocikudG9TdHJpbmcoMTYpKV07cmV0dXJuIG4mJm9bMF0uY2hhckF0KDApPT1vWzBdLmNoYXJBdCgxKSYmb1sxXS5jaGFyQXQoMCk9PW9bMV0uY2hhckF0KDEpJiZvWzJdLmNoYXJBdCgwKT09b1syXS5jaGFyQXQoMSk/b1swXS5jaGFyQXQoMCkrb1sxXS5jaGFyQXQoMCkrb1syXS5jaGFyQXQoMCk6by5qb2luKCIiKX1mdW5jdGlvbiB5KGUsdCxyLG4sbyl7dmFyIGE9W1coaShlKS50b1N0cmluZygxNikpLFcoaSh0KS50b1N0cmluZygxNikpLFcoaShyKS50b1N0cmluZygxNikpLFcocShuKSldO3JldHVybiBvJiZhWzBdLmNoYXJBdCgwKT09YVswXS5jaGFyQXQoMSkmJmFbMV0uY2hhckF0KDApPT1hWzFdLmNoYXJBdCgxKSYmYVsyXS5jaGFyQXQoMCk9PWFbMl0uY2hhckF0KDEpJiZhWzNdLmNoYXJBdCgwKT09YVszXS5jaGFyQXQoMSk/YVswXS5jaGFyQXQoMCkrYVsxXS5jaGFyQXQoMCkrYVsyXS5jaGFyQXQoMCkrYVszXS5jaGFyQXQoMCk6YS5qb2luKCIiKX1mdW5jdGlvbiBnKGUsdCxyLG4pe3JldHVybltXKHEobikpLFcoaShlKS50b1N0cmluZygxNikpLFcoaSh0KS50b1N0cmluZygxNikpLFcoaShyKS50b1N0cmluZygxNikpXS5qb2luKCIiKX1mdW5jdGlvbiB2KGUsdCl7dD0wPT09dD8wOnR8fDEwO3ZhciByPXUoZSkudG9Ic2woKTtyZXR1cm4gci5zLT10LzEwMCxyLnM9VShyLnMpLHUocil9ZnVuY3Rpb24gYihlLHQpe3Q9MD09PXQ/MDp0fHwxMDt2YXIgcj11KGUpLnRvSHNsKCk7cmV0dXJuIHIucys9dC8xMDAsci5zPVUoci5zKSx1KHIpfWZ1bmN0aW9uIHcoZSl7cmV0dXJuIHUoZSkuZGVzYXR1cmF0ZSgxMDApfWZ1bmN0aW9uIFMoZSx0KXt0PTA9PT10PzA6dHx8MTA7dmFyIHI9dShlKS50b0hzbCgpO3JldHVybiByLmwrPXQvMTAwLHIubD1VKHIubCksdShyKX1mdW5jdGlvbiBrKGUsdCl7dD0wPT09dD8wOnR8fDEwO3ZhciByPXUoZSkudG9SZ2IoKTtyZXR1cm4gci5yPXMoMCxhKDI1NSxyLnItaSgtdC8xMDAqMjU1KSkpLHIuZz1zKDAsYSgyNTUsci5nLWkoLXQvMTAwKjI1NSkpKSxyLmI9cygwLGEoMjU1LHIuYi1pKC10LzEwMCoyNTUpKSksdShyKX1mdW5jdGlvbiB4KGUsdCl7dD0wPT09dD8wOnR8fDEwO3ZhciByPXUoZSkudG9Ic2woKTtyZXR1cm4gci5sLT10LzEwMCxyLmw9VShyLmwpLHUocil9ZnVuY3Rpb24gRShlLHQpe3ZhciByPXUoZSkudG9Ic2woKSxuPShyLmgrdCklMzYwO3JldHVybiByLmg9bjwwPzM2MCtuOm4sdShyKX1mdW5jdGlvbiBBKGUpe3ZhciB0PXUoZSkudG9Ic2woKTtyZXR1cm4gdC5oPSh0LmgrMTgwKSUzNjAsdSh0KX1mdW5jdGlvbiBUKGUpe3ZhciB0PXUoZSkudG9Ic2woKSxyPXQuaDtyZXR1cm5bdShlKSx1KHtoOihyKzEyMCklMzYwLHM6dC5zLGw6dC5sfSksdSh7aDoocisyNDApJTM2MCxzOnQucyxsOnQubH0pXX1mdW5jdGlvbiBSKGUpe3ZhciB0PXUoZSkudG9Ic2woKSxyPXQuaDtyZXR1cm5bdShlKSx1KHtoOihyKzkwKSUzNjAsczp0LnMsbDp0Lmx9KSx1KHtoOihyKzE4MCklMzYwLHM6dC5zLGw6dC5sfSksdSh7aDoocisyNzApJTM2MCxzOnQucyxsOnQubH0pXX1mdW5jdGlvbiBQKGUpe3ZhciB0PXUoZSkudG9Ic2woKSxyPXQuaDtyZXR1cm5bdShlKSx1KHtoOihyKzcyKSUzNjAsczp0LnMsbDp0Lmx9KSx1KHtoOihyKzIxNiklMzYwLHM6dC5zLGw6dC5sfSldfWZ1bmN0aW9uIE8oZSx0LHIpe3Q9dHx8NixyPXJ8fDMwO3ZhciBuPXUoZSkudG9Ic2woKSxvPTM2MC9yLGk9W3UoZSldO2ZvcihuLmg9KG4uaC0obyp0Pj4xKSs3MjApJTM2MDstLXQ7KW4uaD0obi5oK28pJTM2MCxpLnB1c2godShuKSk7cmV0dXJuIGl9ZnVuY3Rpb24gTShlLHQpe3Q9dHx8Njtmb3IodmFyIHI9dShlKS50b0hzdigpLG49ci5oLG89ci5zLGk9ci52LGE9W10scz0xL3Q7dC0tOylhLnB1c2godSh7aDpuLHM6byx2Oml9KSksaT0oaStzKSUxO3JldHVybiBhfXUucHJvdG90eXBlPXtpc0Rhcms6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCcmlnaHRuZXNzKCk8MTI4fSxpc0xpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNEYXJrKCl9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2t9LGdldE9yaWdpbmFsSW5wdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxJbnB1dH0sZ2V0Rm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Zvcm1hdH0sZ2V0QWxwaGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYX0sZ2V0QnJpZ2h0bmVzczpmdW5jdGlvbigpe3ZhciBlPXRoaXMudG9SZ2IoKTtyZXR1cm4oMjk5KmUucis1ODcqZS5nKzExNCplLmIpLzFlM30sZ2V0THVtaW5hbmNlOmZ1bmN0aW9uKCl7dmFyIGUscixuLG89dGhpcy50b1JnYigpO3JldHVybiBlPW8uci8yNTUscj1vLmcvMjU1LG49by5iLzI1NSwuMjEyNiooZTw9LjAzOTI4P2UvMTIuOTI6dC5wb3coKGUrLjA1NSkvMS4wNTUsMi40KSkrLjcxNTIqKHI8PS4wMzkyOD9yLzEyLjkyOnQucG93KChyKy4wNTUpLzEuMDU1LDIuNCkpKy4wNzIyKihuPD0uMDM5Mjg/bi8xMi45Mjp0LnBvdygobisuMDU1KS8xLjA1NSwyLjQpKX0sc2V0QWxwaGE6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2E9RChlKSx0aGlzLl9yb3VuZEE9aSgxMDAqdGhpcy5fYSkvMTAwLHRoaXN9LHRvSHN2OmZ1bmN0aW9uKCl7dmFyIGU9Xyh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6MzYwKmUuaCxzOmUucyx2OmUudixhOnRoaXMuX2F9fSx0b0hzdlN0cmluZzpmdW5jdGlvbigpe3ZhciBlPV8odGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLHQ9aSgzNjAqZS5oKSxyPWkoMTAwKmUucyksbj1pKDEwMCplLnYpO3JldHVybiAxPT10aGlzLl9hPyJoc3YoIit0KyIsICIrcisiJSwgIituKyIlKSI6ImhzdmEoIit0KyIsICIrcisiJSwgIituKyIlLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvSHNsOmZ1bmN0aW9uKCl7dmFyIGU9ZCh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6MzYwKmUuaCxzOmUucyxsOmUubCxhOnRoaXMuX2F9fSx0b0hzbFN0cmluZzpmdW5jdGlvbigpe3ZhciBlPWQodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLHQ9aSgzNjAqZS5oKSxyPWkoMTAwKmUucyksbj1pKDEwMCplLmwpO3JldHVybiAxPT10aGlzLl9hPyJoc2woIit0KyIsICIrcisiJSwgIituKyIlKSI6ImhzbGEoIit0KyIsICIrcisiJSwgIituKyIlLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvSGV4OmZ1bmN0aW9uKGUpe3JldHVybiBtKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLGUpfSx0b0hleFN0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4iIyIrdGhpcy50b0hleChlKX0sdG9IZXg4OmZ1bmN0aW9uKGUpe3JldHVybiB5KHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLHRoaXMuX2EsZSl9LHRvSGV4OFN0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4iIyIrdGhpcy50b0hleDgoZSl9LHRvUmdiOmZ1bmN0aW9uKCl7cmV0dXJue3I6aSh0aGlzLl9yKSxnOmkodGhpcy5fZyksYjppKHRoaXMuX2IpLGE6dGhpcy5fYX19LHRvUmdiU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDE9PXRoaXMuX2E/InJnYigiK2kodGhpcy5fcikrIiwgIitpKHRoaXMuX2cpKyIsICIraSh0aGlzLl9iKSsiKSI6InJnYmEoIitpKHRoaXMuX3IpKyIsICIraSh0aGlzLl9nKSsiLCAiK2kodGhpcy5fYikrIiwgIit0aGlzLl9yb3VuZEErIikifSx0b1BlcmNlbnRhZ2VSZ2I6ZnVuY3Rpb24oKXtyZXR1cm57cjppKDEwMCpMKHRoaXMuX3IsMjU1KSkrIiUiLGc6aSgxMDAqTCh0aGlzLl9nLDI1NSkpKyIlIixiOmkoMTAwKkwodGhpcy5fYiwyNTUpKSsiJSIsYTp0aGlzLl9hfX0sdG9QZXJjZW50YWdlUmdiU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDE9PXRoaXMuX2E/InJnYigiK2koMTAwKkwodGhpcy5fciwyNTUpKSsiJSwgIitpKDEwMCpMKHRoaXMuX2csMjU1KSkrIiUsICIraSgxMDAqTCh0aGlzLl9iLDI1NSkpKyIlKSI6InJnYmEoIitpKDEwMCpMKHRoaXMuX3IsMjU1KSkrIiUsICIraSgxMDAqTCh0aGlzLl9nLDI1NSkpKyIlLCAiK2koMTAwKkwodGhpcy5fYiwyNTUpKSsiJSwgIit0aGlzLl9yb3VuZEErIikifSx0b05hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuX2E/InRyYW5zcGFyZW50IjohKHRoaXMuX2E8MSkmJihJW20odGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsITApXXx8ITEpfSx0b0ZpbHRlcjpmdW5jdGlvbihlKXt2YXIgdD0iIyIrZyh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYix0aGlzLl9hKSxyPXQsbj10aGlzLl9ncmFkaWVudFR5cGU/IkdyYWRpZW50VHlwZSA9IDEsICI6IiI7aWYoZSl7dmFyIG89dShlKTtyPSIjIitnKG8uX3Isby5fZyxvLl9iLG8uX2EpfXJldHVybiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoIituKyJzdGFydENvbG9yc3RyPSIrdCsiLGVuZENvbG9yc3RyPSIrcisiKSJ9LHRvU3RyaW5nOmZ1bmN0aW9uKGUpe3ZhciB0PSEhZTtlPWV8fHRoaXMuX2Zvcm1hdDt2YXIgcj0hMSxuPXRoaXMuX2E8MSYmdGhpcy5fYT49MDtyZXR1cm4gdHx8IW58fCJoZXgiIT09ZSYmImhleDYiIT09ZSYmImhleDMiIT09ZSYmImhleDQiIT09ZSYmImhleDgiIT09ZSYmIm5hbWUiIT09ZT8oInJnYiI9PT1lJiYocj10aGlzLnRvUmdiU3RyaW5nKCkpLCJwcmdiIj09PWUmJihyPXRoaXMudG9QZXJjZW50YWdlUmdiU3RyaW5nKCkpLCJoZXgiIT09ZSYmImhleDYiIT09ZXx8KHI9dGhpcy50b0hleFN0cmluZygpKSwiaGV4MyI9PT1lJiYocj10aGlzLnRvSGV4U3RyaW5nKCEwKSksImhleDQiPT09ZSYmKHI9dGhpcy50b0hleDhTdHJpbmcoITApKSwiaGV4OCI9PT1lJiYocj10aGlzLnRvSGV4OFN0cmluZygpKSwibmFtZSI9PT1lJiYocj10aGlzLnRvTmFtZSgpKSwiaHNsIj09PWUmJihyPXRoaXMudG9Ic2xTdHJpbmcoKSksImhzdiI9PT1lJiYocj10aGlzLnRvSHN2U3RyaW5nKCkpLHJ8fHRoaXMudG9IZXhTdHJpbmcoKSk6Im5hbWUiPT09ZSYmMD09PXRoaXMuX2E/dGhpcy50b05hbWUoKTp0aGlzLnRvUmdiU3RyaW5nKCl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIHUodGhpcy50b1N0cmluZygpKX0sX2FwcGx5TW9kaWZpY2F0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5hcHBseShudWxsLFt0aGlzXS5jb25jYXQoW10uc2xpY2UuY2FsbCh0KSkpO3JldHVybiB0aGlzLl9yPXIuX3IsdGhpcy5fZz1yLl9nLHRoaXMuX2I9ci5fYix0aGlzLnNldEFscGhhKHIuX2EpLHRoaXN9LGxpZ2h0ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oUyxhcmd1bWVudHMpfSxicmlnaHRlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihrLGFyZ3VtZW50cyl9LGRhcmtlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbih4LGFyZ3VtZW50cyl9LGRlc2F0dXJhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24odixhcmd1bWVudHMpfSxzYXR1cmF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihiLGFyZ3VtZW50cyl9LGdyZXlzY2FsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbih3LGFyZ3VtZW50cyl9LHNwaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oRSxhcmd1bWVudHMpfSxfYXBwbHlDb21iaW5hdGlvbjpmdW5jdGlvbihlLHQpe3JldHVybiBlLmFwcGx5KG51bGwsW3RoaXNdLmNvbmNhdChbXS5zbGljZS5jYWxsKHQpKSl9LGFuYWxvZ291czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKE8sYXJndW1lbnRzKX0sY29tcGxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKEEsYXJndW1lbnRzKX0sbW9ub2Nocm9tYXRpYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKE0sYXJndW1lbnRzKX0sc3BsaXRjb21wbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oUCxhcmd1bWVudHMpfSx0cmlhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKFQsYXJndW1lbnRzKX0sdGV0cmFkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oUixhcmd1bWVudHMpfX0sdS5mcm9tUmF0aW89ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciByPXt9O2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJihyW25dPSJhIj09PW4/ZVtuXTokKGVbbl0pKTtlPXJ9cmV0dXJuIHUoZSx0KX0sdS5lcXVhbHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKCFlfHwhdCkmJnUoZSkudG9SZ2JTdHJpbmcoKT09dSh0KS50b1JnYlN0cmluZygpfSx1LnJhbmRvbT1mdW5jdGlvbigpe3JldHVybiB1LmZyb21SYXRpbyh7cjpjKCksZzpjKCksYjpjKCl9KX0sdS5taXg9ZnVuY3Rpb24oZSx0LHIpe3I9MD09PXI/MDpyfHw1MDt2YXIgbj11KGUpLnRvUmdiKCksbz11KHQpLnRvUmdiKCksaT1yLzEwMDtyZXR1cm4gdSh7cjooby5yLW4ucikqaStuLnIsZzooby5nLW4uZykqaStuLmcsYjooby5iLW4uYikqaStuLmIsYTooby5hLW4uYSkqaStuLmF9KX0sdS5yZWFkYWJpbGl0eT1mdW5jdGlvbihlLHIpe3ZhciBuPXUoZSksbz11KHIpO3JldHVybih0Lm1heChuLmdldEx1bWluYW5jZSgpLG8uZ2V0THVtaW5hbmNlKCkpKy4wNSkvKHQubWluKG4uZ2V0THVtaW5hbmNlKCksby5nZXRMdW1pbmFuY2UoKSkrLjA1KX0sdS5pc1JlYWRhYmxlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbixvLGk9dS5yZWFkYWJpbGl0eShlLHQpO3N3aXRjaChvPSExLChuPWVlKHIpKS5sZXZlbCtuLnNpemUpe2Nhc2UiQUFzbWFsbCI6Y2FzZSJBQUFsYXJnZSI6bz1pPj00LjU7YnJlYWs7Y2FzZSJBQWxhcmdlIjpvPWk+PTM7YnJlYWs7Y2FzZSJBQUFzbWFsbCI6bz1pPj03fXJldHVybiBvfSx1Lm1vc3RSZWFkYWJsZT1mdW5jdGlvbihlLHQscil7dmFyIG4sbyxpLGEscz1udWxsLGM9MDtvPShyPXJ8fHt9KS5pbmNsdWRlRmFsbGJhY2tDb2xvcnMsaT1yLmxldmVsLGE9ci5zaXplO2Zvcih2YXIgbD0wO2w8dC5sZW5ndGg7bCsrKShuPXUucmVhZGFiaWxpdHkoZSx0W2xdKSk+YyYmKGM9bixzPXUodFtsXSkpO3JldHVybiB1LmlzUmVhZGFibGUoZSxzLHtsZXZlbDppLHNpemU6YX0pfHwhbz9zOihyLmluY2x1ZGVGYWxsYmFja0NvbG9ycz0hMSx1Lm1vc3RSZWFkYWJsZShlLFsiI2ZmZiIsIiMwMDAiXSxyKSl9O3ZhciBGPXUubmFtZXM9e2FsaWNlYmx1ZToiZjBmOGZmIixhbnRpcXVld2hpdGU6ImZhZWJkNyIsYXF1YToiMGZmIixhcXVhbWFyaW5lOiI3ZmZmZDQiLGF6dXJlOiJmMGZmZmYiLGJlaWdlOiJmNWY1ZGMiLGJpc3F1ZToiZmZlNGM0IixibGFjazoiMDAwIixibGFuY2hlZGFsbW9uZDoiZmZlYmNkIixibHVlOiIwMGYiLGJsdWV2aW9sZXQ6IjhhMmJlMiIsYnJvd246ImE1MmEyYSIsYnVybHl3b29kOiJkZWI4ODciLGJ1cm50c2llbm5hOiJlYTdlNWQiLGNhZGV0Ymx1ZToiNWY5ZWEwIixjaGFydHJldXNlOiI3ZmZmMDAiLGNob2NvbGF0ZToiZDI2OTFlIixjb3JhbDoiZmY3ZjUwIixjb3JuZmxvd2VyYmx1ZToiNjQ5NWVkIixjb3Juc2lsazoiZmZmOGRjIixjcmltc29uOiJkYzE0M2MiLGN5YW46IjBmZiIsZGFya2JsdWU6IjAwMDA4YiIsZGFya2N5YW46IjAwOGI4YiIsZGFya2dvbGRlbnJvZDoiYjg4NjBiIixkYXJrZ3JheToiYTlhOWE5IixkYXJrZ3JlZW46IjAwNjQwMCIsZGFya2dyZXk6ImE5YTlhOSIsZGFya2toYWtpOiJiZGI3NmIiLGRhcmttYWdlbnRhOiI4YjAwOGIiLGRhcmtvbGl2ZWdyZWVuOiI1NTZiMmYiLGRhcmtvcmFuZ2U6ImZmOGMwMCIsZGFya29yY2hpZDoiOTkzMmNjIixkYXJrcmVkOiI4YjAwMDAiLGRhcmtzYWxtb246ImU5OTY3YSIsZGFya3NlYWdyZWVuOiI4ZmJjOGYiLGRhcmtzbGF0ZWJsdWU6IjQ4M2Q4YiIsZGFya3NsYXRlZ3JheToiMmY0ZjRmIixkYXJrc2xhdGVncmV5OiIyZjRmNGYiLGRhcmt0dXJxdW9pc2U6IjAwY2VkMSIsZGFya3Zpb2xldDoiOTQwMGQzIixkZWVwcGluazoiZmYxNDkzIixkZWVwc2t5Ymx1ZToiMDBiZmZmIixkaW1ncmF5OiI2OTY5NjkiLGRpbWdyZXk6IjY5Njk2OSIsZG9kZ2VyYmx1ZToiMWU5MGZmIixmaXJlYnJpY2s6ImIyMjIyMiIsZmxvcmFsd2hpdGU6ImZmZmFmMCIsZm9yZXN0Z3JlZW46IjIyOGIyMiIsZnVjaHNpYToiZjBmIixnYWluc2Jvcm86ImRjZGNkYyIsZ2hvc3R3aGl0ZToiZjhmOGZmIixnb2xkOiJmZmQ3MDAiLGdvbGRlbnJvZDoiZGFhNTIwIixncmF5OiI4MDgwODAiLGdyZWVuOiIwMDgwMDAiLGdyZWVueWVsbG93OiJhZGZmMmYiLGdyZXk6IjgwODA4MCIsaG9uZXlkZXc6ImYwZmZmMCIsaG90cGluazoiZmY2OWI0IixpbmRpYW5yZWQ6ImNkNWM1YyIsaW5kaWdvOiI0YjAwODIiLGl2b3J5OiJmZmZmZjAiLGtoYWtpOiJmMGU2OGMiLGxhdmVuZGVyOiJlNmU2ZmEiLGxhdmVuZGVyYmx1c2g6ImZmZjBmNSIsbGF3bmdyZWVuOiI3Y2ZjMDAiLGxlbW9uY2hpZmZvbjoiZmZmYWNkIixsaWdodGJsdWU6ImFkZDhlNiIsbGlnaHRjb3JhbDoiZjA4MDgwIixsaWdodGN5YW46ImUwZmZmZiIsbGlnaHRnb2xkZW5yb2R5ZWxsb3c6ImZhZmFkMiIsbGlnaHRncmF5OiJkM2QzZDMiLGxpZ2h0Z3JlZW46IjkwZWU5MCIsbGlnaHRncmV5OiJkM2QzZDMiLGxpZ2h0cGluazoiZmZiNmMxIixsaWdodHNhbG1vbjoiZmZhMDdhIixsaWdodHNlYWdyZWVuOiIyMGIyYWEiLGxpZ2h0c2t5Ymx1ZToiODdjZWZhIixsaWdodHNsYXRlZ3JheToiNzg5IixsaWdodHNsYXRlZ3JleToiNzg5IixsaWdodHN0ZWVsYmx1ZToiYjBjNGRlIixsaWdodHllbGxvdzoiZmZmZmUwIixsaW1lOiIwZjAiLGxpbWVncmVlbjoiMzJjZDMyIixsaW5lbjoiZmFmMGU2IixtYWdlbnRhOiJmMGYiLG1hcm9vbjoiODAwMDAwIixtZWRpdW1hcXVhbWFyaW5lOiI2NmNkYWEiLG1lZGl1bWJsdWU6IjAwMDBjZCIsbWVkaXVtb3JjaGlkOiJiYTU1ZDMiLG1lZGl1bXB1cnBsZToiOTM3MGRiIixtZWRpdW1zZWFncmVlbjoiM2NiMzcxIixtZWRpdW1zbGF0ZWJsdWU6IjdiNjhlZSIsbWVkaXVtc3ByaW5nZ3JlZW46IjAwZmE5YSIsbWVkaXVtdHVycXVvaXNlOiI0OGQxY2MiLG1lZGl1bXZpb2xldHJlZDoiYzcxNTg1IixtaWRuaWdodGJsdWU6IjE5MTk3MCIsbWludGNyZWFtOiJmNWZmZmEiLG1pc3R5cm9zZToiZmZlNGUxIixtb2NjYXNpbjoiZmZlNGI1IixuYXZham93aGl0ZToiZmZkZWFkIixuYXZ5OiIwMDAwODAiLG9sZGxhY2U6ImZkZjVlNiIsb2xpdmU6IjgwODAwMCIsb2xpdmVkcmFiOiI2YjhlMjMiLG9yYW5nZToiZmZhNTAwIixvcmFuZ2VyZWQ6ImZmNDUwMCIsb3JjaGlkOiJkYTcwZDYiLHBhbGVnb2xkZW5yb2Q6ImVlZThhYSIscGFsZWdyZWVuOiI5OGZiOTgiLHBhbGV0dXJxdW9pc2U6ImFmZWVlZSIscGFsZXZpb2xldHJlZDoiZGI3MDkzIixwYXBheWF3aGlwOiJmZmVmZDUiLHBlYWNocHVmZjoiZmZkYWI5IixwZXJ1OiJjZDg1M2YiLHBpbms6ImZmYzBjYiIscGx1bToiZGRhMGRkIixwb3dkZXJibHVlOiJiMGUwZTYiLHB1cnBsZToiODAwMDgwIixyZWJlY2NhcHVycGxlOiI2NjMzOTkiLHJlZDoiZjAwIixyb3N5YnJvd246ImJjOGY4ZiIscm95YWxibHVlOiI0MTY5ZTEiLHNhZGRsZWJyb3duOiI4YjQ1MTMiLHNhbG1vbjoiZmE4MDcyIixzYW5keWJyb3duOiJmNGE0NjAiLHNlYWdyZWVuOiIyZThiNTciLHNlYXNoZWxsOiJmZmY1ZWUiLHNpZW5uYToiYTA1MjJkIixzaWx2ZXI6ImMwYzBjMCIsc2t5Ymx1ZToiODdjZWViIixzbGF0ZWJsdWU6IjZhNWFjZCIsc2xhdGVncmF5OiI3MDgwOTAiLHNsYXRlZ3JleToiNzA4MDkwIixzbm93OiJmZmZhZmEiLHNwcmluZ2dyZWVuOiIwMGZmN2YiLHN0ZWVsYmx1ZToiNDY4MmI0Iix0YW46ImQyYjQ4YyIsdGVhbDoiMDA4MDgwIix0aGlzdGxlOiJkOGJmZDgiLHRvbWF0bzoiZmY2MzQ3Iix0dXJxdW9pc2U6IjQwZTBkMCIsdmlvbGV0OiJlZTgyZWUiLHdoZWF0OiJmNWRlYjMiLHdoaXRlOiJmZmYiLHdoaXRlc21va2U6ImY1ZjVmNSIseWVsbG93OiJmZjAiLHllbGxvd2dyZWVuOiI5YWNkMzIifSxJPXUuaGV4TmFtZXM9aihGKTtmdW5jdGlvbiBqKGUpe3ZhciB0PXt9O2Zvcih2YXIgciBpbiBlKWUuaGFzT3duUHJvcGVydHkocikmJih0W2Vbcl1dPXIpO3JldHVybiB0fWZ1bmN0aW9uIEQoZSl7cmV0dXJuIGU9cGFyc2VGbG9hdChlKSwoaXNOYU4oZSl8fGU8MHx8ZT4xKSYmKGU9MSksZX1mdW5jdGlvbiBMKGUscil7QihlKSYmKGU9IjEwMCUiKTt2YXIgbj1IKGUpO3JldHVybiBlPWEocixzKDAscGFyc2VGbG9hdChlKSkpLG4mJihlPXBhcnNlSW50KGUqciwxMCkvMTAwKSx0LmFicyhlLXIpPDFlLTY/MTplJXIvcGFyc2VGbG9hdChyKX1mdW5jdGlvbiBVKGUpe3JldHVybiBhKDEscygwLGUpKX1mdW5jdGlvbiB6KGUpe3JldHVybiBwYXJzZUludChlLDE2KX1mdW5jdGlvbiBCKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmLTEhPWUuaW5kZXhPZigiLiIpJiYxPT09cGFyc2VGbG9hdChlKX1mdW5jdGlvbiBIKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmLTEhPWUuaW5kZXhPZigiJSIpfWZ1bmN0aW9uIFcoZSl7cmV0dXJuIDE9PWUubGVuZ3RoPyIwIitlOiIiK2V9ZnVuY3Rpb24gJChlKXtyZXR1cm4gZTw9MSYmKGU9MTAwKmUrIiUiKSxlfWZ1bmN0aW9uIHEoZSl7cmV0dXJuIHQucm91bmQoMjU1KnBhcnNlRmxvYXQoZSkpLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBHKGUpe3JldHVybiB6KGUpLzI1NX12YXIgVixZLEssWD0oWT0iW1xcc3xcXChdKygiKyhWPSIoPzpbLVxcK10/XFxkKlxcLlxcZCslPyl8KD86Wy1cXCtdP1xcZCslPykiKSsiKVssfFxcc10rKCIrVisiKVssfFxcc10rKCIrVisiKVxccypcXCk/IixLPSJbXFxzfFxcKF0rKCIrVisiKVssfFxcc10rKCIrVisiKVssfFxcc10rKCIrVisiKVssfFxcc10rKCIrVisiKVxccypcXCk/Iix7Q1NTX1VOSVQ6bmV3IFJlZ0V4cChWKSxyZ2I6bmV3IFJlZ0V4cCgicmdiIitZKSxyZ2JhOm5ldyBSZWdFeHAoInJnYmEiK0spLGhzbDpuZXcgUmVnRXhwKCJoc2wiK1kpLGhzbGE6bmV3IFJlZ0V4cCgiaHNsYSIrSyksaHN2Om5ldyBSZWdFeHAoImhzdiIrWSksaHN2YTpuZXcgUmVnRXhwKCJoc3ZhIitLKSxoZXgzOi9eIz8oWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkkLyxoZXg2Oi9eIz8oWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkkLyxoZXg0Oi9eIz8oWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8saGV4ODovXiM/KFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KSQvfSk7ZnVuY3Rpb24gWihlKXtyZXR1cm4hIVguQ1NTX1VOSVQuZXhlYyhlKX1mdW5jdGlvbiBRKGUpe2U9ZS5yZXBsYWNlKHIsIiIpLnJlcGxhY2UobiwiIikudG9Mb3dlckNhc2UoKTt2YXIgdCxvPSExO2lmKEZbZV0pZT1GW2VdLG89ITA7ZWxzZSBpZigidHJhbnNwYXJlbnQiPT1lKXJldHVybntyOjAsZzowLGI6MCxhOjAsZm9ybWF0OiJuYW1lIn07cmV0dXJuKHQ9WC5yZ2IuZXhlYyhlKSk/e3I6dFsxXSxnOnRbMl0sYjp0WzNdfToodD1YLnJnYmEuZXhlYyhlKSk/e3I6dFsxXSxnOnRbMl0sYjp0WzNdLGE6dFs0XX06KHQ9WC5oc2wuZXhlYyhlKSk/e2g6dFsxXSxzOnRbMl0sbDp0WzNdfToodD1YLmhzbGEuZXhlYyhlKSk/e2g6dFsxXSxzOnRbMl0sbDp0WzNdLGE6dFs0XX06KHQ9WC5oc3YuZXhlYyhlKSk/e2g6dFsxXSxzOnRbMl0sdjp0WzNdfToodD1YLmhzdmEuZXhlYyhlKSk/e2g6dFsxXSxzOnRbMl0sdjp0WzNdLGE6dFs0XX06KHQ9WC5oZXg4LmV4ZWMoZSkpP3tyOnoodFsxXSksZzp6KHRbMl0pLGI6eih0WzNdKSxhOkcodFs0XSksZm9ybWF0Om8/Im5hbWUiOiJoZXg4In06KHQ9WC5oZXg2LmV4ZWMoZSkpP3tyOnoodFsxXSksZzp6KHRbMl0pLGI6eih0WzNdKSxmb3JtYXQ6bz8ibmFtZSI6ImhleCJ9Oih0PVguaGV4NC5leGVjKGUpKT97cjp6KHRbMV0rIiIrdFsxXSksZzp6KHRbMl0rIiIrdFsyXSksYjp6KHRbM10rIiIrdFszXSksYTpHKHRbNF0rIiIrdFs0XSksZm9ybWF0Om8/Im5hbWUiOiJoZXg4In06ISEodD1YLmhleDMuZXhlYyhlKSkmJntyOnoodFsxXSsiIit0WzFdKSxnOnoodFsyXSsiIit0WzJdKSxiOnoodFszXSsiIit0WzNdKSxmb3JtYXQ6bz8ibmFtZSI6ImhleCJ9fWZ1bmN0aW9uIGVlKGUpe3ZhciB0LHI7cmV0dXJuIkFBIiE9PSh0PSgoZT1lfHx7bGV2ZWw6IkFBIixzaXplOiJzbWFsbCJ9KS5sZXZlbHx8IkFBIikudG9VcHBlckNhc2UoKSkmJiJBQUEiIT09dCYmKHQ9IkFBIiksInNtYWxsIiE9PShyPShlLnNpemV8fCJzbWFsbCIpLnRvTG93ZXJDYXNlKCkpJiYibGFyZ2UiIT09ciYmKHI9InNtYWxsIikse2xldmVsOnQsc2l6ZTpyfX1lLmV4cG9ydHM/ZS5leHBvcnRzPXU6d2luZG93LnRpbnljb2xvcj11fShNYXRoKX0pKSxwPWQoIiMxNDE2MWEiKS5zZXRBbHBoYSguNSkudG9SZ2JTdHJpbmcoKSxfPWQoIiMxNDE2MWEiKS50b1JnYlN0cmluZygpLGg9MTAsbT0uNix5PTIxLjUsZz0zLHY9MyxiPTQuNSx3PTIsUz17bGlnaHQ6e2JhY2tncm91bmQ6ZCgiI2ZmZmZmZiIpLnRvUmdiU3RyaW5nKCksZm9yZWdyb3VuZDpkKCIjMTQxNjFhIikudG9SZ2JTdHJpbmcoKSxkZWZhdWx0X2xhcmdlX2NvbnRlbnRfdGV4dDpkKCIjMTQxNjFhIikuc2V0QWxwaGEoLjcpLnRvUmdiU3RyaW5nKCksZmFsbGJhY2tfbGFyZ2VfY29udGVudF90ZXh0OmQoIiNGRkZGRkYiKS5zZXRBbHBoYSguNykudG9SZ2JTdHJpbmcoKSxwcmltYXJ5X2J1dHRvbl90ZXh0OmQoIiMxNDE2MWEiKS5zZXRBbHBoYSguNSkudG9SZ2JTdHJpbmcoKSxiYWNrZ3JvdW5kX2hvdmVyOmQoIiMxYTFhMWEiKS50b1JnYlN0cmluZygpLGJhY2tncm91bmRfYWN0aXZlOmQoIiMzMzMzMzMiKS50b1JnYlN0cmluZygpfSxkYXJrOntiYWNrZ3JvdW5kOmQoIiMxNDE2MWEiKS50b1JnYlN0cmluZygpLGZvcmVncm91bmQ6ZCgiI2Y3ZjdmNyIpLnRvUmdiU3RyaW5nKCksZGVmYXVsdF9sYXJnZV9jb250ZW50X3RleHQ6ZCgiI2Y3ZjdmNyIpLnNldEFscGhhKC40KS50b1JnYlN0cmluZygpLGZhbGxiYWNrX2xhcmdlX2NvbnRlbnRfdGV4dDpkKCIjMTQxNjFhIikuc2V0QWxwaGEoLjQpLnRvUmdiU3RyaW5nKCkscHJpbWFyeV9idXR0b25fdGV4dDpkKCIjZjdmN2Y3IikudG9SZ2JTdHJpbmcoKSxiYWNrZ3JvdW5kX2hvdmVyOmQoIiNmN2Y3ZjciKS50b1JnYlN0cmluZygpLGJhY2tncm91bmRfYWN0aXZlOmQoIiNmN2Y3ZjciKS50b1JnYlN0cmluZygpfX07ZnVuY3Rpb24gayhlLHQscil7cmV0dXJuIGQucmVhZGFiaWxpdHkoZSx0KT49NC41P3Q6cn1mdW5jdGlvbiB4KGUpe3ZhciB0PWQoZSkudG9Ic2woKSxyPVMubGlnaHQuYmFja2dyb3VuZCxuPWQoe2g6dC5oLHM6dC5zLGw6ODV9KS50b1JnYlN0cmluZygpO3JldHVybiBBKG4sZSxnKXx8KG49Uy5saWdodC5iYWNrZ3JvdW5kKSx7Z3JlZXRpbmdfdGV4dF9jb2xvcjpuLGludHJvZHVjdGlvbl90ZXh0X2NvbG9yOnIsc2Vjb25kYXJ5X3R5cGU6ImRhcmsifX1mdW5jdGlvbiBFKGUpe3ZhciB0PWQoZSkudG9Ic2woKSxyPVMubGlnaHQuZm9yZWdyb3VuZCxuPWQoe2g6dC5oLHM6NSxsOjUwfSkudG9SZ2JTdHJpbmcoKTtyZXR1cm4gQShuLGUsZyl8fChuPVMubGlnaHQuZm9yZWdyb3VuZCkse2dyZWV0aW5nX3RleHRfY29sb3I6bixpbnRyb2R1Y3Rpb25fdGV4dF9jb2xvcjpyLHNlY29uZGFyeV90eXBlOiJsaWdodCJ9fWZ1bmN0aW9uIEEoZSx0KXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06djtyZXR1cm4gZC5yZWFkYWJpbGl0eSh0LGUpPj1yfWZ1bmN0aW9uIFQoZSx0KXt2YXIgcj1TW3RdLmJhY2tncm91bmQ7aWYoQShlLHIsdykpcmV0dXJuIG51bGw7Zm9yKHZhciBuPSJsaWdodCI9PT10LG89ZChlKSxpPTU7aTw9NjA7aSs9NSl7dmFyIGE9bj9vLmNsb25lKCkuZGFya2VuKGkpOm8uY2xvbmUoKS5saWdodGVuKGkpO2lmKEEoYS50b1JnYlN0cmluZygpLHIsdykpcmV0dXJuIGF9cmV0dXJuIGQobj9TLmxpZ2h0LmZvcmVncm91bmQ6Uy5saWdodC5iYWNrZ3JvdW5kKX1mdW5jdGlvbiBSKGUsdCl7cmV0dXJuIEEoZSx0LHcpP2U6ZC5yZWFkYWJpbGl0eSh0LCIjZmZmZmZmIik+ZC5yZWFkYWJpbGl0eSh0LCIjMDAwMDAwIik/Uy5saWdodC5iYWNrZ3JvdW5kOlMubGlnaHQuZm9yZWdyb3VuZH1mdW5jdGlvbiBQKGUpe3ZhciB0PWQoZSkudG9Ic2woKS5sLHI9MTAwKiguOTUtdCksbj1kKGUpLmxpZ2h0ZW4ocikudG9SZ2JTdHJpbmcoKSxvPTEwMCoodC0uODUpLGk9ZChlKS5kYXJrZW4obykudG9SZ2JTdHJpbmcoKSxhPTEwMCoodC0uMykscz1kKGUpLmRhcmtlbihhKS50b1JnYlN0cmluZygpLGM9MTAwKih0LS4yNSksdT1kKGUpLmRhcmtlbihjKS50b1JnYlN0cmluZygpO3JldHVybiB0PC4zNT97bGlnaHQ6bixkYXJrOmV9OnQ+Ljk/e2xpZ2h0OmksZGFyazprKGkscyx1KX06e2xpZ2h0Om4sZGFyazprKG4scyx1KX19ZnVuY3Rpb24gTyhlKXt2YXIgdD1kKGUpLnRvSHNsKCkubCxyPTEyMCooLjg1LXQpLG49ZChlKS5saWdodGVuKHIpLnRvUmdiU3RyaW5nKCksbz04MCoodC0uNzUpLGk9ZChlKS5kYXJrZW4obykudG9SZ2JTdHJpbmcoKSxhPTkwKih0LS40KSxzPWQoZSkuZGFya2VuKGEpLnRvUmdiU3RyaW5nKCksYz05NSoodC0uMzUpLHU9ZChlKS5kYXJrZW4oYykudG9SZ2JTdHJpbmcoKTtyZXR1cm4gdDwuMjU/e2xpZ2h0Om4sZGFyazplfTp0Pi44P3tsaWdodDplLGRhcms6ayhuLHMsdSl9OntsaWdodDpuLGRhcms6ayhuLGkscyl9fWZ1bmN0aW9uIE0oZSx0LHIsbixvKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XSYmYXJndW1lbnRzWzVdLHM9YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOiJsaWdodCI7dGhpcy5wcmltYXJ5PWUudG9SZ2JTdHJpbmcoKSx0aGlzLnNlY29uZGFyeT10LnRvUmdiU3RyaW5nKCksdGhpcy5wcmltYXJ5VmFyaWFudD1yLnRvUmdiU3RyaW5nKCksdGhpcy5zZWNvbmRhcnlWYXJpYW50PW4udG9SZ2JTdHJpbmcoKSx0aGlzLmdyYWRpZW50RW5kPW8udG9SZ2JTdHJpbmcoKTt2YXIgYz1lLmdldEx1bWluYW5jZSgpPC4yPyJsaWdodGVuIjoiZGFya2VuIix1PWUuY2xvbmUoKSxsPWUuY2xvbmUoKTt0aGlzLnByaW1hcnlIb3Zlcj11W2NdKDEwKS50b1JnYlN0cmluZygpLHRoaXMucHJpbWFyeUFjdGl2ZT1sW2NdKDIwKS50b1JnYlN0cmluZygpO3ZhciBmPSJsaWdodCI9PT1zLGg9Zj9QKHRoaXMucHJpbWFyeSk6Tyh0aGlzLnByaW1hcnkpLG09VCh0aGlzLnByaW1hcnkscyksZz1tP20udG9SZ2JTdHJpbmcoKTp0aGlzLnByaW1hcnksdj10aGlzLnByaW1hcnlIb3ZlcixiPXRoaXMucHJpbWFyeUFjdGl2ZTtpZihtKXt2YXIgdz1tLmdldEx1bWluYW5jZSgpPC4yPyJsaWdodGVuIjoiZGFya2VuIjt2PW0uY2xvbmUoKVt3XSgxMCkudG9SZ2JTdHJpbmcoKSxiPW0uY2xvbmUoKVt3XSgyMCkudG9SZ2JTdHJpbmcoKX12YXIgaz17Z3JhZGllbnRfc3RhcnRfY29sb3I6dGhpcy5zZWNvbmRhcnksZ3JhZGllbnRfZW5kX2NvbG9yOnRoaXMuZ3JhZGllbnRFbmQsY2FyZF9ib3JkZXJfdG9wX2NvbG9yOnRoaXMucHJpbWFyeVZhcmlhbnQsYnV0dG9uX2JhY2tncm91bmRfY29sb3I6ZyxidXR0b25fYmFja2dyb3VuZF9jb2xvcl9ob3Zlcjp2LGJ1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yX2FjdGl2ZTpiLHByaW1hcnlfb25fd2hpdGVfY29udHJhc3Q6TWF0aC5yb3VuZCgxZTMqZC5yZWFkYWJpbGl0eShTW3NdLmJhY2tncm91bmQsdGhpcy5wcmltYXJ5KSkvMWUzLHNlY29uZGFyeV9vbl93aGl0ZV9jb250cmFzdDpNYXRoLnJvdW5kKDFlMypkLnJlYWRhYmlsaXR5KFNbc10uYmFja2dyb3VuZCx0aGlzLnNlY29uZGFyeSkpLzFlMyxxdWlja19yZXBseV90ZXh0X2NvbG9yOmY/aC5kYXJrOmgubGlnaHQscXVpY2tfcmVwbHlfYmFja2dyb3VuZF9jb2xvcjpmP2gubGlnaHQ6aC5kYXJrLGF2YXRhcl9iYWNrZ3JvdW5kX2NvbG9yOmQodGhpcy5wcmltYXJ5KS5kYXJrZW4oeSkudG9SZ2JTdHJpbmcoKX07dGhpcy5nZW5lcmF0ZUxpZ2h0UHJpbWFyeUxpZ2h0U2Vjb25kYXJ5PWZ1bmN0aW9uKCl7cmV0dXJuIGEoYShhKHt9LGspLEUodGhpcy5zZWNvbmRhcnkpKSx7fSx7aGVhZGVyX3RpdGxlX2NvbG9yOlNbc10uZm9yZWdyb3VuZCxoZWFkZXJfdGV4dF9jb2xvcjpTW3NdLmRlZmF1bHRfbGFyZ2VfY29udGVudF90ZXh0LGxhdW5jaGVyX2ljb25fY29sb3I6aT9fOnAsYnV0dG9uX3RleHRfY29sb3I6UihpP186cCxrLmJ1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yKSxsaW5rX2NvbG9yOmY/U1tzXS5mb3JlZ3JvdW5kOnRoaXMucHJpbWFyeSxsaW5rX2NvbG9yX2hvdmVyOmY/U1tzXS5iYWNrZ3JvdW5kX2hvdmVyOnRoaXMucHJpbWFyeUhvdmVyLGxpbmtfY29sb3JfYWN0aXZlOmY/U1tzXS5iYWNrZ3JvdW5kX2FjdGl2ZTp0aGlzLnByaW1hcnlBY3RpdmUscHJpbWFyeV90eXBlOiJsaWdodCIsc2Vjb25kYXJ5X3R5cGU6ImxpZ2h0In0pfSx0aGlzLmdlbmVyYXRlTGlnaHRQcmltYXJ5RGFya1NlY29uZGFyeT1mdW5jdGlvbigpe3JldHVybiBhKGEoYSh7fSxrKSx4KHRoaXMuc2Vjb25kYXJ5KSkse30se2hlYWRlcl90aXRsZV9jb2xvcjpTW3NdLmJhY2tncm91bmQsaGVhZGVyX3RleHRfY29sb3I6U1tzXS5mYWxsYmFja19sYXJnZV9jb250ZW50X3RleHQsbGF1bmNoZXJfaWNvbl9jb2xvcjppP186U1tzXS5wcmltYXJ5X2J1dHRvbl90ZXh0LGJ1dHRvbl90ZXh0X2NvbG9yOlIoaT9fOlNbc10ucHJpbWFyeV9idXR0b25fdGV4dCxrLmJ1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yKSxsaW5rX2NvbG9yOmY/U1tzXS5mb3JlZ3JvdW5kOnRoaXMucHJpbWFyeSxsaW5rX2NvbG9yX2hvdmVyOmY/U1tzXS5iYWNrZ3JvdW5kX2hvdmVyOnRoaXMucHJpbWFyeUhvdmVyLGxpbmtfY29sb3JfYWN0aXZlOmY/U1tzXS5iYWNrZ3JvdW5kX2FjdGl2ZTp0aGlzLnByaW1hcnlBY3RpdmUscHJpbWFyeV90eXBlOiJsaWdodCIsc2Vjb25kYXJ5X3R5cGU6ImRhcmsifSl9LHRoaXMuZ2VuZXJhdGVEYXJrUHJpbWFyeUxpZ2h0U2Vjb25kYXJ5PWZ1bmN0aW9uKCl7cmV0dXJuIGEoYShhKHt9LGspLEUodGhpcy5zZWNvbmRhcnkpKSx7fSx7aGVhZGVyX3RpdGxlX2NvbG9yOlNbc10uZm9yZWdyb3VuZCxoZWFkZXJfdGV4dF9jb2xvcjpTW3NdLmRlZmF1bHRfbGFyZ2VfY29udGVudF90ZXh0LGxhdW5jaGVyX2ljb25fY29sb3I6Zj9TW3NdLmJhY2tncm91bmQ6U1tzXS5mb3JlZ3JvdW5kLGJ1dHRvbl90ZXh0X2NvbG9yOlIoZj9TW3NdLmJhY2tncm91bmQ6U1tzXS5mb3JlZ3JvdW5kLGsuYnV0dG9uX2JhY2tncm91bmRfY29sb3IpLGxpbmtfY29sb3I6Zj90aGlzLnByaW1hcnk6U1tzXS5mb3JlZ3JvdW5kLGxpbmtfY29sb3JfaG92ZXI6Zj90aGlzLnByaW1hcnlIb3ZlcjpTW3NdLmJhY2tncm91bmRfaG92ZXIsbGlua19jb2xvcl9hY3RpdmU6Zj90aGlzLnByaW1hcnlBY3RpdmU6U1tzXS5iYWNrZ3JvdW5kX2FjdGl2ZSxwcmltYXJ5X3R5cGU6ImRhcmsiLHNlY29uZGFyeV90eXBlOiJsaWdodCJ9KX0sdGhpcy5nZW5lcmF0ZURhcmtQcmltYXJ5RGFya1NlY29uZGFyeT1mdW5jdGlvbigpe3JldHVybiBhKGEoYSh7fSxrKSx4KHRoaXMuc2Vjb25kYXJ5KSkse30se2hlYWRlcl90aXRsZV9jb2xvcjpTW3NdLmJhY2tncm91bmQsaGVhZGVyX3RleHRfY29sb3I6U1tzXS5mYWxsYmFja19sYXJnZV9jb250ZW50X3RleHQsbGF1bmNoZXJfaWNvbl9jb2xvcjpmP1Nbc10uYmFja2dyb3VuZDpTW3NdLmZvcmVncm91bmQsYnV0dG9uX3RleHRfY29sb3I6UihmP1Nbc10uYmFja2dyb3VuZDpTW3NdLmZvcmVncm91bmQsay5idXR0b25fYmFja2dyb3VuZF9jb2xvciksbGlua19jb2xvcjpmP3RoaXMucHJpbWFyeTpTW3NdLmZvcmVncm91bmQsbGlua19jb2xvcl9ob3ZlcjpmP3RoaXMucHJpbWFyeUhvdmVyOlNbc10uYmFja2dyb3VuZF9ob3ZlcixsaW5rX2NvbG9yX2FjdGl2ZTpmP3RoaXMucHJpbWFyeUFjdGl2ZTpTW3NdLmJhY2tncm91bmRfYWN0aXZlLHByaW1hcnlfdHlwZToiZGFyayIsc2Vjb25kYXJ5X3R5cGU6ImRhcmsifSl9fWZ1bmN0aW9uIEYoZSx0LHIpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTptO3N3aXRjaChyKXtjYXNlImNvbnRyYXN0LXJhdGlvLTQuNSI6cmV0dXJuIUEoU1t0XS5iYWNrZ3JvdW5kLGUsYik7Y2FzZSJjb250cmFzdC1yYXRpby0zLjAiOnJldHVybiFBKFNbdF0uYmFja2dyb3VuZCxlLHYpO2RlZmF1bHQ6cmV0dXJuIGUuZ2V0THVtaW5hbmNlKCk+bn19ZnVuY3Rpb24gSShlKXtpZighQm9vbGVhbihlLnByaW1hcnlDb2xvcikpdGhyb3ciQSBwcmltYXJ5IGNvbG9yIHdhcyBub3QgcHJvdmlkZWQgdG8gdGhlIGNvbG9yIGNhbGN1bGF0aW9uIjt2YXIgdD1lLnRoZW1lTW9kZXx8ImxpZ2h0IixyPWQoZS5wcmltYXJ5Q29sb3IpLG49ci5jbG9uZSgpLnNldEFscGhhKC41KSxvPWQoZS5zZWNvbmRhcnlDb2xvcnx8ZS5wcmltYXJ5Q29sb3IpLGk9by50b0hzdigpLGE9ZCh7aDppLmgsczpNYXRoLm1pbihpLnMsLjEyKSx2OjF9KSxzPW8uY2xvbmUoKTtzLmRhcmtlbihlLmRhcmtlbkFtb3VudHx8aCk7dmFyIGM9RihyLCJsaWdodCIsZS5jb250cmFzdENoZWNrTWV0aG9kLGUuYnJpZ2h0bmVzc0N1dG9mZiksdT1GKG8sImxpZ2h0IixlLmNvbnRyYXN0Q2hlY2tNZXRob2QsZS5icmlnaHRuZXNzQ3V0b2ZmKSxsPSJjb250cmFzdC1yYXRpby00LjUiPT09ZS5jb250cmFzdENoZWNrTWV0aG9kfHwiY29udHJhc3QtcmF0aW8tMy4wIj09PWUuY29udHJhc3RDaGVja01ldGhvZCxmPW5ldyBNKHIsbyxuLGEscywicHVyZUJsYWNrQWN0aW9uQ29sb3JzImluIGU/ZS5wdXJlQmxhY2tBY3Rpb25Db2xvcnM6bCx0KTtyZXR1cm4gYyYmdT9mLmdlbmVyYXRlTGlnaHRQcmltYXJ5TGlnaHRTZWNvbmRhcnkoKTpjJiYhdT9mLmdlbmVyYXRlTGlnaHRQcmltYXJ5RGFya1NlY29uZGFyeSgpOiFjJiZ1P2YuZ2VuZXJhdGVEYXJrUHJpbWFyeUxpZ2h0U2Vjb25kYXJ5KCk6Y3x8dT92b2lkIDA6Zi5nZW5lcmF0ZURhcmtQcmltYXJ5RGFya1NlY29uZGFyeSgpfUkudGlueWNvbG9yPWQ7dmFyIGo9ZnVuY3Rpb24oZSx0KXt2YXIgcj1kKHQpO3JldHVybltyLmNsb25lKCkubGlnaHRlbigxMCkuZGVzYXR1cmF0ZShlKSxyLmNsb25lKCkubGlnaHRlbigyMCkuZGVzYXR1cmF0ZShlKSxyLmNsb25lKCkubGlnaHRlbigzMCkuZGVzYXR1cmF0ZShlKSxyLmNsb25lKCkubGlnaHRlbig0MCkuZGVzYXR1cmF0ZShlKSxyLmNsb25lKCkubGlnaHRlbig1MCkuZGVzYXR1cmF0ZShlKSxyLmNsb25lKCkubGlnaHRlbig2MCkuZGVzYXR1cmF0ZShlKSxyLmNsb25lKCkubGlnaHRlbig3MCkuZGVzYXR1cmF0ZShlKSxyLmNsb25lKCkubGlnaHRlbig4MCkuZGVzYXR1cmF0ZShlKSxyLmNsb25lKCkubGlnaHRlbig5MCkuZGVzYXR1cmF0ZShlKSxyLmNsb25lKCkubGlnaHRlbigxMDApLmRlc2F0dXJhdGUoZSldfSxEPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZCh0KTtyZXR1cm5bci5jbG9uZSgpLmRhcmtlbigxMCkuZGVzYXR1cmF0ZShlKSxyLmNsb25lKCkuZGFya2VuKDIwKS5kZXNhdHVyYXRlKGUpLHIuY2xvbmUoKS5kYXJrZW4oMzApLmRlc2F0dXJhdGUoZSksci5jbG9uZSgpLmRhcmtlbig0MCkuZGVzYXR1cmF0ZShlKSxyLmNsb25lKCkuZGFya2VuKDUwKS5kZXNhdHVyYXRlKGUpLHIuY2xvbmUoKS5kYXJrZW4oNjApLmRlc2F0dXJhdGUoZSksci5jbG9uZSgpLmRhcmtlbig3MCkuZGVzYXR1cmF0ZShlKSxyLmNsb25lKCkuZGFya2VuKDgwKS5kZXNhdHVyYXRlKGUpLHIuY2xvbmUoKS5kYXJrZW4oOTApLmRlc2F0dXJhdGUoZSksci5jbG9uZSgpLmRhcmtlbigxMDApLmRlc2F0dXJhdGUoZSldfSxMPS41LFU9LjE1LHo9NTAsQj1mdW5jdGlvbihlKXtyZXR1cm4gZChlKS50b0hzbCgpLmx9LEg9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnoscj1CKGUpLG49cj5MLG89aihyPFU/MS41KnQ6dCxlKSxpPUQodCxlKSxhPShuP1tdLmNvbmNhdChzKGkpLHMobykpOltdLmNvbmNhdChzKG8pLHMoaSkpKS5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gQSh0LGUsYil9KSk7aWYoIWEpcmV0dXJue2ZvcmVncm91bmRDb2xvcjpudWxsLGlzTGlnaHRDb2xvcjohMX07dmFyIGM9QihhKT5yO3JldHVybntmb3JlZ3JvdW5kQ29sb3I6YS50b0hleFN0cmluZygpLGlzTGlnaHRDb2xvcjpjfX07cmV0dXJuIEkuZ2V0QWNjZXNzaWJsZUZvcmVncm91bmRDb2xvckZvckJhY2tncm91bmQ9SCxJfSgpfSwxMzU2MDpmdW5jdGlvbihlKXt2YXIgdDtnbG9iYWxUaGlzLHQ9KCk9PigoKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZT17ZDoodCxyKT0+e2Zvcih2YXIgbiBpbiByKWUubyhyLG4pJiYhZS5vKHQsbikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2VudW1lcmFibGU6ITAsZ2V0OnJbbl19KX0sbzooZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCkscjplPT57InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX19LHQ9e307ZS5yKHQpLGUuZCh0LHtkZWZhdWx0OigpPT5rfSk7dmFyIHI9e05FWFVTX0NMSUVOVF9WRVJTSU9OOiIwLjE4LjgiLElTX1RZUElOR19USFJPVFRMRToxZTMsUFJFU0VOQ0VfSU5URVJWQUw6MTJlNCxQUkVTRU5DRV9FTkFCTEVEOiEwLFBJTkdfVElNRU9VVDo0NWUzLFBPTkdfVElNRU9VVDoxZTQsV0VCU09DS0VUX0NPTk5FQ1RfVElNRU9VVDozZTQsRVZFTlRfQlVGRkVSX1RUTDozZTR9O2NvbnN0IG49bmV3KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe09iamVjdC5hc3NpZ24odGhpcyxyKX1yZXR1cm4gZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtPYmplY3QuYXNzaWduKHRoaXMscil9LGUucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24oZSl7T2JqZWN0LmFzc2lnbih0aGlzLGUpfSxlfSgpKTt2YXIgbz0iTmV4dXNDbGllbnQgLSAiO2NvbnN0IGk9bmV3KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMubG9nZ2VyPWNvbnNvbGV9cmV0dXJuIGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmxvZ2dlcj1udWxsfSxlLnByb3RvdHlwZS5zZXRMb2dnZXI9ZnVuY3Rpb24oZSl7dGhpcy5sb2dnZXI9ZX0sZS5wcm90b3R5cGUuaW5mbz1mdW5jdGlvbihlKXt3aW5kb3cuTkVYVVNfREVCVUdfTE9HR0lORyYmY29uc29sZS5sb2cobytlKSx0aGlzLmxvZ2dlciYmdGhpcy5sb2dnZXIuaW5mbyhvK2UpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbihlKXt3aW5kb3cuTkVYVVNfREVCVUdfTE9HR0lORyYmY29uc29sZS5lcnJvcihvK2UpLHRoaXMubG9nZ2VyJiZ0aGlzLmxvZ2dlci5lcnJvcihvK2UpfSxlfSgpKTt2YXIgYT0ibmV4dXNjbGllbnQtanMuIixzPXtpbmNyZW1lbnQ6ZnVuY3Rpb24oZSl7fSx0aW1pbmc6ZnVuY3Rpb24oZSx0KXt9fTtjb25zdCBjPW5ldyhmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLl9zaW5rPXN9cmV0dXJuIGUucHJvdG90eXBlLnNldFNpbms9ZnVuY3Rpb24oZSl7dGhpcy5fc2luaz1lfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuX3Npbms9c30sZS5wcm90b3R5cGUuaW5jcmVtZW50PWZ1bmN0aW9uKGUpe3RoaXMuX3NpbmsuaW5jcmVtZW50KGErZSl9LGUucHJvdG90eXBlLnRpbWluZz1mdW5jdGlvbihlLHQpe3RoaXMuX3NpbmsudGltaW5nKGErZSx0KX0sZX0oKSksdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LHIsbixvKXt0aGlzLmluaXRpYWxCYXNlRGVsYXk9ZSx0aGlzLm1heEJhc2VEZWxheT10LHRoaXMuYmFja29mZk11bHRpcGxpZXI9cix0aGlzLm1pblJhbmRvbT1uLHRoaXMubWF4UmFuZG9tPW8sdGhpcy5yZXNldCgpfXJldHVybiBlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMubmV4dEluaXRpYWxCYXNlRGVsYXk9dGhpcy5pbml0aWFsQmFzZURlbGF5fSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7aWYodGhpcy5uZXh0SW5pdGlhbEJhc2VEZWxheT50aGlzLm1heEJhc2VEZWxheSlyZXR1cm4gdGhpcy5yZXNldCgpLE1hdGguZmxvb3IodGhpcy5tYXhCYXNlRGVsYXkqdGhpcy5yYW5kb21GbG9hdCh0aGlzLm1pblJhbmRvbSx0aGlzLm1heFJhbmRvbSkpO3ZhciBlPU1hdGguZmxvb3IodGhpcy5uZXh0SW5pdGlhbEJhc2VEZWxheSp0aGlzLnJhbmRvbUZsb2F0KHRoaXMubWluUmFuZG9tLHRoaXMubWF4UmFuZG9tKSk7cmV0dXJuIHRoaXMubmV4dEluaXRpYWxCYXNlRGVsYXk9dGhpcy5uZXh0SW5pdGlhbEJhc2VEZWxheSp0aGlzLmJhY2tvZmZNdWx0aXBsaWVyLGV9LGUucHJvdG90eXBlLnJhbmRvbUZsb2F0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgucmFuZG9tKCkqKHQtZSkrZX0sZX0oKTtmdW5jdGlvbiBsKGUsdCl7Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmdChyLGVbcl0pfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm5bXS5jb25jYXQoZSx0KS5maWx0ZXIoKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gci5pbmRleE9mKGUpPT09dH0pKX1mdW5jdGlvbiBkKGUsdCl7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hdC5pbmNsdWRlcyhlKX0pKX1mdW5jdGlvbiBwKCl7dmFyIGU9ZG9jdW1lbnQ7cmV0dXJuIHZvaWQgMCE9PWUuaGlkZGVufHx2b2lkIDAhPT1lLm1vekhpZGRlbnx8dm9pZCAwIT09ZS5tc0hpZGRlbnx8dm9pZCAwIT09ZS53ZWJraXRIaWRkZW59Y29uc3QgXz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5fbmV4dXNXZWJTb2NrZXQ9ZSx0aGlzLl90b3BpY3M9W119cmV0dXJuIGUucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihlKXt0aGlzLl90b3BpY3M9Zih0aGlzLl90b3BpY3MsZSksdGhpcy5fcHVibGlzaF9ldmVudCgibnguU3Vic2NyaWJlIixlKX0sZS5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7dGhpcy5fdG9waWNzPWQodGhpcy5fdG9waWNzLGUpLHRoaXMuX3B1Ymxpc2hfZXZlbnQoIm54LlVuc3Vic2NyaWJlIixlKX0sZS5wcm90b3R5cGUuaGFzTm9TdWJzY3JpcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl90b3BpY3MubGVuZ3RofSxlLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe3RoaXMuX3RvcGljcy5sZW5ndGg+MCYmdGhpcy5zdWJzY3JpYmUodGhpcy5fdG9waWNzKX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX25leHVzV2ViU29ja2V0PW51bGwsdGhpcy5fdG9waWNzPVtdfSxlLnNldEV2ZW50VG9waWNzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2V2ZW50X3RvcGljcyhlLmV2ZW50TmFtZSxlLmV2ZW50RGF0YSk7cmV0dXJuIHQmJihlWyJueC5Ub3BpY3MiXT10KSxlfSxlLmlzVG9waWNFdmVudD1mdW5jdGlvbihlKXtyZXR1cm5bIm54LlN1YnNjcmliZSIsIm54LlVuc3Vic2NyaWJlIl0uaW5jbHVkZXMoZS5ldmVudE5hbWUpfSxlLl9ldmVudF90b3BpY3M9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJBZG1pbklzVHlwaW5nIjpjYXNlIlVzZXJJc1R5cGluZyI6Y2FzZSJDb252ZXJzYXRpb25TZWVuIjpjYXNlIkFkbWluSXNUeXBpbmdBTm90ZSI6Y2FzZSJVc2VyQ29udGVudFNlZW5CeUFkbWluIjpjYXNlIk5ld0NvbW1lbnQiOnJldHVybiB0LmNvbnZlcnNhdGlvbklkP1siY29udmVyc2F0aW9uLyIuY29uY2F0KHQuY29udmVyc2F0aW9uSWQpXTpbImNvbnZlcnNhdGlvbi9uZXciXTtkZWZhdWx0OnJldHVybiExfX0sZS5wcm90b3R5cGUuX3B1Ymxpc2hfZXZlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLl9uZXh1c1dlYlNvY2tldCYmdGhpcy5fbmV4dXNXZWJTb2NrZXQuaXNXZWJzb2NrZXRUcmFuc3BvcnQoKSYmdGhpcy5fbmV4dXNXZWJTb2NrZXQucHVibGlzaCh7ZXZlbnROYW1lOmUsIm54LlRvcGljcyI6dH0pfSxlfSgpLGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuX3B1Ymxpc2g9ZSx0aGlzLl9ldmVudHM9e30sdGhpcy5fY29udmVyc2F0aW9uRXZlbnRzPXt9fXJldHVybiBlLnByb3RvdHlwZS5nZXRFdmVudHM9ZnVuY3Rpb24oKXtyZXR1cm57ZXZlbnRzOnRoaXMuX2V2ZW50cyxjb252ZXJzYXRpb25FdmVudHM6dGhpcy5fY29udmVyc2F0aW9uRXZlbnRzfX0sZS5wcm90b3R5cGUucHVzaEV2ZW50PWZ1bmN0aW9uKGUpe2lmKCFfLmlzVG9waWNFdmVudChlKSl7dmFyIHQ9ZS5ldmVudERhdGEmJmUuZXZlbnREYXRhLmNvbnZlcnNhdGlvbklkO3Q/dGhpcy5fcHVzaENvbnZlcnNhdGlvbkV2ZW50KHQsZSk6dGhpcy5fcHVzaEV2ZW50KGUpfX0sZS5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXt0aGlzLl9mbHVzaEV2ZW50cyh0aGlzLl9ldmVudHMpLHRoaXMuX2V2ZW50cz17fSx0aGlzLl9mbHVzaENvbnZlcnNhdGlvbkV2ZW50cygpLHRoaXMuX2NvbnZlcnNhdGlvbkV2ZW50cz17fX0sZS5wcm90b3R5cGUuX3B1c2hFdmVudD1mdW5jdGlvbihlKXt2YXIgdD0obmV3IERhdGUpLmdldFRpbWUoKTt0aGlzLl9ldmVudHNbdF09ZX0sZS5wcm90b3R5cGUuX3B1c2hDb252ZXJzYXRpb25FdmVudD1mdW5jdGlvbihlLHQpe3ZhciByPShuZXcgRGF0ZSkuZ2V0VGltZSgpLG49dGhpcy5fY29udmVyc2F0aW9uRXZlbnRzW2VdfHx7fTtuW3JdPXQsdGhpcy5fY29udmVyc2F0aW9uRXZlbnRzW2VdPW59LGUucHJvdG90eXBlLl9mbHVzaEV2ZW50cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCk7bChlLChmdW5jdGlvbihlLG8pe3ItZTxuLkVWRU5UX0JVRkZFUl9UVEwmJnQuX3B1Ymxpc2gobyl9KSl9LGUucHJvdG90eXBlLl9mbHVzaENvbnZlcnNhdGlvbkV2ZW50cz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7bCh0aGlzLl9jb252ZXJzYXRpb25FdmVudHMsKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUuX2ZsdXNoRXZlbnRzKHIpfSkpfSxlfSgpLG09ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPW51bGwsbz0tMSxpPW51bGwsYT1udWxsLHM9ITEhPT0obnVsbD09cj92b2lkIDA6ci50cmFpbGluZyksYz1mdW5jdGlvbigpe2lmKG89RGF0ZS5ub3coKSxuPW51bGwsaSl0cnl7ZS5hcHBseShhLGkpfWZpbmFsbHl7aT1udWxsLGE9bnVsbH19LHU9ZnVuY3Rpb24oKXtmb3IodmFyIHI9W10sdT0wO3U8YXJndW1lbnRzLmxlbmd0aDt1Kyspclt1XT1hcmd1bWVudHNbdV07dmFyIGw9RGF0ZS5ub3coKTtpZihhPXRoaXMsaT1yLG88MHx8bC1vPj10KXtuJiYoY2xlYXJUaW1lb3V0KG4pLG49bnVsbCksbz1sO3RyeXtlLmFwcGx5KGEsaSl9ZmluYWxseXtpPW51bGwsYT1udWxsfX1lbHNlIW4mJnMmJihuPXNldFRpbWVvdXQoYyx0LShsLW8pKSl9O3JldHVybiB1LmNhbmNlbD1mdW5jdGlvbigpe24mJihjbGVhclRpbWVvdXQobiksbj1udWxsKSxvPS0xLGk9bnVsbCxhPW51bGx9LHV9LHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuX3Rocm90dGxlUHJlc2VuY2VFdmVudD10aGlzLl9jcmVhdGVTZW5kUHJlc2VuY2VFdmVudFRocm90dGxlKCksdGhpcy5fbmV4dXNXZWJTb2NrZXQ9ZSx0aGlzLl9pbml0UGFnZVZpc2liaWxpdHlMaXN0ZW5uZXJzKCl9cmV0dXJuIGUucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9wcmVzZW5jZUludGVydmFsfHwodGhpcy5fdGhyb3R0bGVQcmVzZW5jZUV2ZW50KCksdGhpcy5fcHJlc2VuY2VJbnRlcnZhbD1zZXRJbnRlcnZhbCgoZnVuY3Rpb24oKXtlLl90aHJvdHRsZVByZXNlbmNlRXZlbnQoKX0pLG4uUFJFU0VOQ0VfSU5URVJWQUwpKX0sZS5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3RoaXMuX3ByZXNlbmNlSW50ZXJ2YWwmJmNsZWFySW50ZXJ2YWwodGhpcy5fcHJlc2VuY2VJbnRlcnZhbCksdGhpcy5fcHJlc2VuY2VJbnRlcnZhbD1udWxsfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5zdG9wKCksdGhpcy5fdGVhcmRvd25QYWdlVmlzaWJpbGl0eUxpc3RlbmVycygpLHRoaXMuX25leHVzV2ViU29ja2V0PW51bGx9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5zdG9wKCksdGhpcy5fdGhyb3R0bGVQcmVzZW5jZUV2ZW50LmNhbmNlbCgpLHRoaXMuc3RhcnQoKX0sZS5wcm90b3R5cGUuX3NlbmRQcmVzZW5jZUV2ZW50PWZ1bmN0aW9uKCl7aWYobi5QUkVTRU5DRV9FTkFCTEVEJiZ0aGlzLl9uZXh1c1dlYlNvY2tldCl7dmFyIGU9e2V2ZW50TmFtZToibnguVXNlclByZXNlbmNlIixldmVudERhdGE6dm9pZCAwfSx0PWZ1bmN0aW9uKCl7dHJ5e3JldHVybiB3aW5kb3cudG9wLmxvY2F0aW9uLmhyZWZ9Y2F0Y2goZSl7cmV0dXJufX0oKTt0JiYoZS5ldmVudERhdGE9e2N1cnJlbnRfcGFnZTp0fSksdGhpcy5fbmV4dXNXZWJTb2NrZXQucHVibGlzaChlKX19LGUucHJvdG90eXBlLl9jcmVhdGVTZW5kUHJlc2VuY2VFdmVudFRocm90dGxlPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fc2VuZFByZXNlbmNlRXZlbnQuYmluZCh0aGlzKSxuLlBSRVNFTkNFX0lOVEVSVkFMKX0sZS5wcm90b3R5cGUuX2luaXRQYWdlVmlzaWJpbGl0eUxpc3Rlbm5lcnM9ZnVuY3Rpb24oKXt2YXIgZSx0O3AoKSYmKHRoaXMuX3Zpc2liaWxpdHlFdmVudD0odm9pZCAwIT09KHQ9ZG9jdW1lbnQpLmhpZGRlbj9lPSJ2aXNpYmlsaXR5Y2hhbmdlIjp2b2lkIDAhPT10Lm1vekhpZGRlbj9lPSJtb3p2aXNpYmlsaXR5Y2hhbmdlIjp2b2lkIDAhPT10Lm1zSGlkZGVuP2U9Im1zdmlzaWJpbGl0eWNoYW5nZSI6dm9pZCAwIT09dC53ZWJraXRIaWRkZW4mJihlPSJ3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlIiksZSksdGhpcy5fb25QYWdlVmlzaWJsZUJvdW5kPXRoaXMuX29uUGFnZVZpc2liaWxpdHlDaGFuZ2UuYmluZCh0aGlzKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl92aXNpYmlsaXR5RXZlbnQsdGhpcy5fb25QYWdlVmlzaWJsZUJvdW5kKSl9LGUucHJvdG90eXBlLl90ZWFyZG93blBhZ2VWaXNpYmlsaXR5TGlzdGVuZXJzPWZ1bmN0aW9uKCl7cCgpJiZ3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLl92aXNpYmlsaXR5RXZlbnQsdGhpcy5fb25QYWdlVmlzaWJsZUJvdW5kKX0sZS5wcm90b3R5cGUuX29uUGFnZVZpc2liaWxpdHlDaGFuZ2U9ZnVuY3Rpb24oKXt2YXIgZTsodm9pZCAwIT09KGU9ZG9jdW1lbnQpLmhpZGRlbj9lLmhpZGRlbjp2b2lkIDAhPT1lLm1vekhpZGRlbj9lLm1vekhpZGRlbjp2b2lkIDAhPT1lLm1zSGlkZGVuP2UubXNIaWRkZW46dm9pZCAwIT09ZS53ZWJraXRIaWRkZW4mJmUud2Via2l0SGlkZGVuKT90aGlzLnN0b3AoKTp0aGlzLnN0YXJ0KCl9LGV9KCksZz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLm5leHVzV2ViU29ja2V0PWUsdGhpcy5vbkVycm9yPXR9cmV0dXJuIGUucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9waW5nVGVzdFRpbWVyPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5fcGluZygpLGUuX3BvbmdUZXN0VGltZXI9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLm9uRXJyb3IoKX0pLG4uUE9OR19USU1FT1VUKX0pLG4uUElOR19USU1FT1VUKX0sZS5wcm90b3R5cGUuYWNrPWZ1bmN0aW9uKCl7dGhpcy5yZXNldCgpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuX3N0b3BQaW5nUG9uZygpLHRoaXMuc3RhcnQoKX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX3N0b3BQaW5nUG9uZygpLHRoaXMubmV4dXNXZWJTb2NrZXQ9bnVsbCx0aGlzLm9uRXJyb3I9bnVsbH0sZS5wcm90b3R5cGUuaGVhbHRoQ2hlY2s9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX3BvbmdIZWFsdGhDaGVja1RpbWVyfHwodGhpcy5fcGluZygpLHRoaXMuX3BvbmdIZWFsdGhDaGVja1RpbWVyPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5vbkVycm9yKCl9KSxuLlBPTkdfVElNRU9VVCkpfSxlLnByb3RvdHlwZS5fc3RvcFBpbmdQb25nPWZ1bmN0aW9uKCl7dGhpcy5fcGluZ1Rlc3RUaW1lciYmY2xlYXJUaW1lb3V0KHRoaXMuX3BpbmdUZXN0VGltZXIpLHRoaXMuX3BvbmdUZXN0VGltZXImJmNsZWFyVGltZW91dCh0aGlzLl9wb25nVGVzdFRpbWVyKSx0aGlzLl9yZXNldFBvbmdIQ1RpbWVyKCl9LGUucHJvdG90eXBlLl9waW5nPWZ1bmN0aW9uKCl7dmFyIGU9KG5ldyBEYXRlKS5nZXRUaW1lKCksdD17ZXZlbnROYW1lOiJueC5QaW5nIixldmVudEd1aWQ6ZS50b1N0cmluZygpLGV2ZW50RGF0YTp7c2VuZFRpbWU6ZSxlbmRwb2ludDp0aGlzLm5leHVzV2ViU29ja2V0LmVuZHBvaW50fX07dGhpcy5uZXh1c1dlYlNvY2tldC5wdWJsaXNoKHQpfSxlLnByb3RvdHlwZS5fcmVzZXRQb25nSENUaW1lcj1mdW5jdGlvbigpe3RoaXMuX3BvbmdIZWFsdGhDaGVja1RpbWVyJiZjbGVhclRpbWVvdXQodGhpcy5fcG9uZ0hlYWx0aENoZWNrVGltZXIpLHRoaXMuX3BvbmdIZWFsdGhDaGVja1RpbWVyPW51bGx9LGV9KCksdj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5uZXh1c1dlYlNvY2tldD1lLHRoaXMuX2luaXRPbmxpbmVPZmZsaW5lTGlzdGVuZXJzKCl9cmV0dXJuIGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl90ZWFyZG93bk9ubGluZU9mZmxpbmVMaXN0ZW5lcnMoKSx0aGlzLm5leHVzV2ViU29ja2V0PW51bGx9LGUucHJvdG90eXBlLl9pbml0T25saW5lT2ZmbGluZUxpc3RlbmVycz1mdW5jdGlvbigpe3RoaXMuX2NhbWVPbmxpbmVCb3VuZD10aGlzLl9jYW1lT25saW5lLmJpbmQodGhpcyksdGhpcy5fd2VudE9mZmxpbmVCb3VuZD10aGlzLl93ZW50T2ZmbGluZS5iaW5kKHRoaXMpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJvbmxpbmUiLHRoaXMuX2NhbWVPbmxpbmVCb3VuZCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm9mZmxpbmUiLHRoaXMuX3dlbnRPZmZsaW5lQm91bmQpfSxlLnByb3RvdHlwZS5fdGVhcmRvd25PbmxpbmVPZmZsaW5lTGlzdGVuZXJzPWZ1bmN0aW9uKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm9ubGluZSIsdGhpcy5fY2FtZU9ubGluZUJvdW5kKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigib2ZmbGluZSIsdGhpcy5fd2VudE9mZmxpbmVCb3VuZCl9LGUucHJvdG90eXBlLl9jYW1lT25saW5lPWZ1bmN0aW9uKCl7dGhpcy5uZXh1c1dlYlNvY2tldC5yZWNvbm5lY3ROb3coKX0sZS5wcm90b3R5cGUuX3dlbnRPZmZsaW5lPWZ1bmN0aW9uKCl7dGhpcy5uZXh1c1dlYlNvY2tldC5kZXN0cm95V2ViU29ja2V0KCl9LGV9KCksYj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LHIsbixvKXt2b2lkIDA9PT10JiYodD1mdW5jdGlvbigpe30pLHZvaWQgMD09PXImJihyPWZ1bmN0aW9uKCl7fSksdm9pZCAwPT09biYmKG49ZnVuY3Rpb24oZSl7fSksdGhpcy5lbmRwb2ludD1lLHRoaXMub25Db25uZWN0PXQsdGhpcy5vbkRpc2Nvbm5lY3Q9cix0aGlzLm9uRmFpbGVkVG9Fc3RhYmxpc2hOZXdXZWJzb2NrZXRDb25uZWN0aW9uPW4sdGhpcy5fdXNlclJvbGU9byx0aGlzLl9jYWxsZWRPbkNvbm5lY3RTaW5jZUxhc3REaXNjb25uZWN0PSExLHRoaXMubnVtYmVyT2ZDb25zZWN1dGl2ZUZhaWxlZFJldHJpZXNUb0Nvbm5lY3Q9MCx0aGlzLl9saXN0ZW5lcnM9e30sdGhpcy5fZ2xvYmFsTGlzdGVuZXJzPVtdLHRoaXMucmV0cnlDb3VudGVyPW5ldyB1KDJlMywzZTUsMiwuNSwyLjUpLHRoaXMuX2luaXRCdWZmZXIoKSx0aGlzLl9pbml0V2ViU29ja2V0KCk/KHRoaXMuX3JlYWNoYWJpbGl0eT1uZXcgdih0aGlzKSx0aGlzLl9wcmVzZW5jZT1uZXcgeSh0aGlzKSx0aGlzLl90b3BpY01hbmFnZXI9bmV3IF8odGhpcykpOnRoaXMub25GYWlsZWRUb0VzdGFibGlzaE5ld1dlYnNvY2tldENvbm5lY3Rpb24oIndlYnNvY2tldF9ub3Rfc3VwcG9ydGVkIil9cmV0dXJuIGUucHJvdG90eXBlLmFkZExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzW2VdP3RoaXMuX2xpc3RlbmVyc1tlXT1bdF06dGhpcy5fbGlzdGVuZXJzW2VdLnB1c2godCl9LGUucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fbGlzdGVuZXJzW2VdO2lmKHIpe3ZhciBuPXIuaW5kZXhPZih0KTtuPj0wJiZyLnNwbGljZShuLDEpfX0sZS5wcm90b3R5cGUuYWRkR2xvYmFsTGlzdGVuZXI9ZnVuY3Rpb24oZSl7dGhpcy5fZ2xvYmFsTGlzdGVuZXJzLnB1c2goZSl9LGUucHJvdG90eXBlLnB1Ymxpc2g9ZnVuY3Rpb24oZSl7aWYodGhpcy5pc09wZW4oKSl0cnl7dGhpcy53ZWJTb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeShlKSl9Y2F0Y2goZSl7aS5lcnJvcigiRXJyb3Igd2l0aCBwdWJsaXNoaW5nIGEgbWVzc2FnZTogIi5jb25jYXQoSlNPTi5zdHJpbmdpZnkoZSkpKSx0aGlzLndlYlNvY2tldCYmdGhpcy53ZWJTb2NrZXQuY2xvc2UmJnRoaXMud2ViU29ja2V0LmNsb3NlKDFlMyl9ZWxzZSB0aGlzLl9idWZmZXIucHVzaEV2ZW50KGUpfSxlLnByb3RvdHlwZS5zdWJzY3JpYmVUb1RvcGljcz1mdW5jdGlvbihlKXt0aGlzLl90b3BpY01hbmFnZXIuc3Vic2NyaWJlKGUpfSxlLnByb3RvdHlwZS51bnN1YnNjcmliZUZyb21Ub3BpY3M9ZnVuY3Rpb24oZSl7dGhpcy5fdG9waWNNYW5hZ2VyLnVuc3Vic2NyaWJlKGUpfSxlLnByb3RvdHlwZS5zaHV0ZG93bj1mdW5jdGlvbigpe3RoaXMuX2Rlc3Ryb3lQaW5nZXIoKSx0aGlzLl9yZWFjaGFiaWxpdHkuZGVzdHJveSgpLHRoaXMuX3ByZXNlbmNlLmRlc3Ryb3koKSx0aGlzLl90b3BpY01hbmFnZXIuZGVzdHJveSgpLHRoaXMuZGVzdHJveVdlYlNvY2tldCgpLHRoaXMuX2xpc3RlbmVycz17fSx0aGlzLl9nbG9iYWxMaXN0ZW5lcnM9W10sdGhpcy5faW5pdEJ1ZmZlcigpLHRoaXMuX2NsZWFyQ29ubmVjdFRpbWVvdXQoKSx0aGlzLl9jbGVhclNjaGVkdWxlZFJlY29ubmVjdCgpfSxlLnByb3RvdHlwZS5pc09wZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53ZWJTb2NrZXQmJnRoaXMud2ViU29ja2V0LnJlYWR5U3RhdGU9PT10aGlzLndlYlNvY2tldC5PUEVOfSxlLnByb3RvdHlwZS5pc0Nvbm5lY3Rpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53ZWJTb2NrZXQmJnRoaXMud2ViU29ja2V0LnJlYWR5U3RhdGU9PT10aGlzLndlYlNvY2tldC5DT05ORUNUSU5HfSxlLnByb3RvdHlwZS5pc1dlYnNvY2tldFRyYW5zcG9ydD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5zY2hlZHVsZVJlY29ubmVjdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMuX2NsZWFyU2NoZWR1bGVkUmVjb25uZWN0KCksdGhpcy5fc2NoZWR1bGVkUmVjb25uZWN0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5yZWNvbm5lY3ROb3coKX0pLGUpfSxlLnByb3RvdHlwZS5yZWNvbm5lY3ROb3c9ZnVuY3Rpb24oKXt0aGlzLl9jbGVhclNjaGVkdWxlZFJlY29ubmVjdCgpLHRoaXMuZGVzdHJveVdlYlNvY2tldCgpLHRoaXMuX3RvcGljTWFuYWdlci5oYXNOb1N1YnNjcmlwdGlvbnMoKSYmYy5pbmNyZW1lbnQoInJlY29ubmVjdF9ub19zdWJzY3JpcHRpb25zIiksdGhpcy5faW5pdFdlYlNvY2tldCgpfSxlLnByb3RvdHlwZS5lYWdlclJlY29ubmVjdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9dGhpcy53ZWJTb2NrZXQsbj1yP3IucmVhZHlTdGF0ZToibnVsbCI7aS5pbmZvKCJTdGFydGluZyBlYWdlciByZWNvbm5lY3QuIE9sZCBjb25uZWN0aW9uOiAiLmNvbmNhdCh0aGlzLl9nZXRSZWFkeVN0YXRlU3RyaW5nKG4pKSksZSYmKHRoaXMuZW5kcG9pbnQ9ZSk7dmFyIG89dGhpcy5fd2ViU29ja2V0VXJsKHRoaXMuZW5kcG9pbnQpLGE9bmV3IFdlYlNvY2tldChvKTtpLmluZm8oIkNyZWF0ZWQgbmV3IFdlYlNvY2tldCBmb3IgZWFnZXIgcmVjb25uZWN0IiksYS5vbm1lc3NhZ2U9dGhpcy5fb25NZXNzYWdlLmJpbmQodGhpcyksYS5vbmVycm9yPWZ1bmN0aW9uKGUpe2kuZXJyb3IoIk5ldyBjb25uZWN0aW9uIGVycm9yIGR1cmluZyBlYWdlciByZWNvbm5lY3Q6ICIuY29uY2F0KGUpKSx0Ll9vbkVycm9yKGUpfSxhLm9uY2xvc2U9ZnVuY3Rpb24oZSl7aS5pbmZvKCJOZXcgY29ubmVjdGlvbiBjbG9zZWQgZHVyaW5nIGVhZ2VyIHJlY29ubmVjdC4gQ29kZTogIi5jb25jYXQoZS5jb2RlLCIsIFJlYXNvbjogIikuY29uY2F0KGUucmVhc29uKSksdC5fb25DbG9zZShlKX0sYS5vbm9wZW49ZnVuY3Rpb24oZSl7aS5pbmZvKCJOZXcgY29ubmVjdGlvbiBvcGVuZWQuIEFjdGl2ZSBjb25uZWN0aW9ucyAtIE9sZDogIi5jb25jYXQodC5fZ2V0UmVhZHlTdGF0ZVN0cmluZyhudWxsPT1yP3ZvaWQgMDpyLnJlYWR5U3RhdGUpLCIsIE5ldzogIikuY29uY2F0KHQuX2dldFJlYWR5U3RhdGVTdHJpbmcoYS5yZWFkeVN0YXRlKSkpLHQud2ViU29ja2V0PWEsdC5fb25PcGVuKCksciYmKHIub25vcGVuPW51bGwsci5vbm1lc3NhZ2U9bnVsbCxyLm9uZXJyb3I9bnVsbCxyLm9uY2xvc2U9ZnVuY3Rpb24oZSl7aS5pbmZvKCJPbGQgY29ubmVjdGlvbiBjbG9zZWQuIEVhZ2VyIHJlY29ubmVjdCBjb21wbGV0ZSIpfSxyLnJlYWR5U3RhdGUhPT1XZWJTb2NrZXQuT1BFTiYmci5yZWFkeVN0YXRlIT09V2ViU29ja2V0LkNPTk5FQ1RJTkd8fChpLmluZm8oIkNsb3Npbmcgb2xkIGNvbm5lY3Rpb246ICIuY29uY2F0KHQuX2dldFJlYWR5U3RhdGVTdHJpbmcoci5yZWFkeVN0YXRlKSkpLHIuY2xvc2UoMWUzLCJFYWdlciByZWNvbm5lY3QiKSkpfX0sZS5wcm90b3R5cGUuX2dldFJlYWR5U3RhdGVTdHJpbmc9ZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2UgV2ViU29ja2V0LkNPTk5FQ1RJTkc6cmV0dXJuIkNPTk5FQ1RJTkcgKDApIjtjYXNlIFdlYlNvY2tldC5PUEVOOnJldHVybiJPUEVOICgxKSI7Y2FzZSBXZWJTb2NrZXQuQ0xPU0lORzpyZXR1cm4iQ0xPU0lORyAoMikiO2Nhc2UgV2ViU29ja2V0LkNMT1NFRDpyZXR1cm4iQ0xPU0VEICgzKSI7ZGVmYXVsdDpyZXR1cm4iVU5LTk9XTiAoIi5jb25jYXQoZSwiKSIpfX0sZS5wcm90b3R5cGUuZGVzdHJveVdlYlNvY2tldD1mdW5jdGlvbigpe3RoaXMuX2NsZWFyQ29ubmVjdFRpbWVvdXQoKSx0aGlzLl9jYWxsZWRPbkNvbm5lY3RTaW5jZUxhc3REaXNjb25uZWN0JiYodGhpcy5vbkRpc2Nvbm5lY3QoKSx0aGlzLl9jYWxsZWRPbkNvbm5lY3RTaW5jZUxhc3REaXNjb25uZWN0PSExKSx0aGlzLndlYlNvY2tldCYmKHRoaXMud2ViU29ja2V0Lm9ub3Blbj1udWxsLHRoaXMud2ViU29ja2V0Lm9ubWVzc2FnZT1udWxsLHRoaXMud2ViU29ja2V0Lm9uZXJyb3I9bnVsbCx0aGlzLndlYlNvY2tldC5vbmNsb3NlPW51bGwsdGhpcy5pc09wZW4oKT90aGlzLndlYlNvY2tldCYmdGhpcy53ZWJTb2NrZXQuY2xvc2UmJnRoaXMud2ViU29ja2V0LmNsb3NlKDFlMyk6dGhpcy5pc0Nvbm5lY3RpbmcoKSYmaS5pbmZvKCJEZXN0cm95aW5nIGEgd2Vic29ja2V0IHRoYXQgaXMgc3RpbGwgaW4gdGhlIGNvbm5lY3Rpbmcgc3RhdGUiKSx0aGlzLndlYlNvY2tldD1udWxsKSx0aGlzLl9kZXN0cm95UGluZ2VyKCl9LGUucHJvdG90eXBlLnBlcmZvcm1IZWFsdGhDaGVjaz1mdW5jdGlvbigpe3RoaXMuX3BpbmdlciYmdGhpcy5fcGluZ2VyLmhlYWx0aENoZWNrKCksdGhpcy5pc09wZW4oKXx8dGhpcy5yZWNvbm5lY3ROb3coKX0sZS5wcm90b3R5cGUuX29uT3Blbj1mdW5jdGlvbigpe3RoaXMucmV0cnlDb3VudGVyLnJlc2V0KCksdGhpcy5fY2xlYXJDb25uZWN0VGltZW91dCgpLHRoaXMubnVtYmVyT2ZDb25zZWN1dGl2ZUZhaWxlZFJldHJpZXNUb0Nvbm5lY3Q9MCx0aGlzLl9pbml0UGluZ2VyKCksdGhpcy5fY2FsbGVkT25Db25uZWN0U2luY2VMYXN0RGlzY29ubmVjdD0hMCx0aGlzLm9uQ29ubmVjdCgpLHRoaXMuX3ByZXNlbmNlLnN0YXJ0KCksdGhpcy5fYnVmZmVyLmZsdXNoKCksdGhpcy5fdG9waWNNYW5hZ2VyLmZsdXNoKCl9LGUucHJvdG90eXBlLl9vbk1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcGFyc2VNZXNzYWdlKGUpO3QmJih0aGlzLl9jYWxsTGlzdGVuZXJzKHQpLCJBQ0siPT09dC5ldmVudE5hbWUmJnRoaXMuX3Bpbmdlci5hY2soKSl9LGUucHJvdG90eXBlLl9vbkVycm9yPWZ1bmN0aW9uKGUpe2MuaW5jcmVtZW50KCJlcnJvciIpLGkuZXJyb3IoIldlYnNvY2tldCBfb25FcnJvciBjYWxsZWQ6ICIuY29uY2F0KEpTT04uc3RyaW5naWZ5KGUpKSl9LGUucHJvdG90eXBlLl9vbkNsb3NlPWZ1bmN0aW9uKGUpe3RoaXMuZGVzdHJveVdlYlNvY2tldCgpLGkuZXJyb3IoIldlYnNvY2tldCBjbG9zZWQ6IGNvZGU6ICIuY29uY2F0KGUuY29kZSwiLCByZWFzb246ICIpLmNvbmNhdChlLnJlYXNvbiwiLCB3YXNDbGVhbjogIikuY29uY2F0KGUud2FzQ2xlYW4pKSxuYXZpZ2F0b3Iub25MaW5lPyh0aGlzLm51bWJlck9mQ29uc2VjdXRpdmVGYWlsZWRSZXRyaWVzVG9Db25uZWN0KyssdGhpcy5udW1iZXJPZkNvbnNlY3V0aXZlRmFpbGVkUmV0cmllc1RvQ29ubmVjdD49NT90aGlzLm9uRmFpbGVkVG9Fc3RhYmxpc2hOZXdXZWJzb2NrZXRDb25uZWN0aW9uKCJtYXhfcmV0cmllc190b19jb25uZWN0X2ZhaWxlZCIpOnRoaXMuc2NoZWR1bGVSZWNvbm5lY3QodGhpcy5yZXRyeUNvdW50ZXIubmV4dCgpKSk6dGhpcy5zY2hlZHVsZVJlY29ubmVjdCh0aGlzLnJldHJ5Q291bnRlci5uZXh0KCkpfSxlLnByb3RvdHlwZS5fb25QaW5nVGltZW91dD1mdW5jdGlvbigpe2MuaW5jcmVtZW50KCJwaW5nX3RpbWVvdXQiKSx0aGlzLndlYlNvY2tldCYmdGhpcy53ZWJTb2NrZXQuY2xvc2UmJnRoaXMud2ViU29ja2V0LmNsb3NlKDFlMyl9LGUucHJvdG90eXBlLl9jYWxsTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZXZlbnROYW1lO3RoaXMuX2xpc3RlbmVyc1t0XSYmdGhpcy5fbGlzdGVuZXJzW3RdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0KGUpfSkpLHRoaXMuX2dsb2JhbExpc3RlbmVycy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdChlKX0pKX0sZS5wcm90b3R5cGUuX2NsZWFyU2NoZWR1bGVkUmVjb25uZWN0PWZ1bmN0aW9uKCl7dGhpcy5fc2NoZWR1bGVkUmVjb25uZWN0JiYoY2xlYXJUaW1lb3V0KHRoaXMuX3NjaGVkdWxlZFJlY29ubmVjdCksdGhpcy5fc2NoZWR1bGVkUmVjb25uZWN0PW51bGwpfSxlLnByb3RvdHlwZS5faW5pdEJ1ZmZlcj1mdW5jdGlvbigpe3RoaXMuX2J1ZmZlcj1uZXcgaCh0aGlzLnB1Ymxpc2guYmluZCh0aGlzKSl9LGUucHJvdG90eXBlLl9pbml0V2ViU29ja2V0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fd2ViU29ja2V0VXJsKHRoaXMuZW5kcG9pbnQpO3JldHVybiB0aGlzLl9zdGFydENvbm5lY3RUaW1lb3V0KCksd2luZG93LldlYlNvY2tldD8odGhpcy53ZWJTb2NrZXQ9bmV3IFdlYlNvY2tldChlKSx0aGlzLndlYlNvY2tldC5vbm9wZW49dGhpcy5fb25PcGVuLmJpbmQodGhpcyksdGhpcy53ZWJTb2NrZXQub25tZXNzYWdlPXRoaXMuX29uTWVzc2FnZS5iaW5kKHRoaXMpLHRoaXMud2ViU29ja2V0Lm9uZXJyb3I9dGhpcy5fb25FcnJvci5iaW5kKHRoaXMpLHRoaXMud2ViU29ja2V0Lm9uY2xvc2U9dGhpcy5fb25DbG9zZS5iaW5kKHRoaXMpLCEwKToodGhpcy5fY2xlYXJDb25uZWN0VGltZW91dCgpLCExKX0sZS5wcm90b3R5cGUuX2luaXRQaW5nZXI9ZnVuY3Rpb24oKXt0aGlzLl9kZXN0cm95UGluZ2VyKCksdGhpcy5fcGluZ2VyPW5ldyBnKHRoaXMsdGhpcy5fb25QaW5nVGltZW91dC5iaW5kKHRoaXMpKSx0aGlzLl9waW5nZXIuc3RhcnQoKX0sZS5wcm90b3R5cGUuX2Rlc3Ryb3lQaW5nZXI9ZnVuY3Rpb24oKXt0aGlzLl9waW5nZXImJih0aGlzLl9waW5nZXIuZGVzdHJveSgpLHRoaXMuX3Bpbmdlcj1udWxsKX0sZS5wcm90b3R5cGUuX3N0YXJ0Q29ubmVjdFRpbWVvdXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX2NsZWFyQ29ubmVjdFRpbWVvdXQoKSxuLldFQlNPQ0tFVF9DT05ORUNUX1RJTUVPVVQ+MCYmKHRoaXMuX2Nvbm5lY3RUaW1lb3V0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7Yy5pbmNyZW1lbnQoImNvbm5lY3RfdGltZW91dCIpLGUud2ViU29ja2V0JiZlLndlYlNvY2tldC5jbG9zZSYmZS53ZWJTb2NrZXQuY2xvc2UoMWUzKX0pLG4uV0VCU09DS0VUX0NPTk5FQ1RfVElNRU9VVCkpfSxlLnByb3RvdHlwZS5fY2xlYXJDb25uZWN0VGltZW91dD1mdW5jdGlvbigpe3RoaXMuX2Nvbm5lY3RUaW1lb3V0JiYoY2xlYXJUaW1lb3V0KHRoaXMuX2Nvbm5lY3RUaW1lb3V0KSx0aGlzLl9jb25uZWN0VGltZW91dD1udWxsKX0sZS5wcm90b3R5cGUuX2FkZFF1ZXJ5UGFyYW09ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXQrIj0iK3I7cmV0dXJuIGUrKGUuc3BsaXQoIj8iKVsxXT8iJiI6Ij8iKStufSxlLnByb3RvdHlwZS5fd2ViU29ja2V0VXJsPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQ9dGhpcy5fYWRkUXVlcnlQYXJhbSh0LCJYLU5leHVzLU5ldy1DbGllbnQiLCEwKSx0PXRoaXMuX2FkZFF1ZXJ5UGFyYW0odCwiWC1OZXh1cy1WZXJzaW9uIixuLk5FWFVTX0NMSUVOVF9WRVJTSU9OKSwodD10aGlzLl9hZGRRdWVyeVBhcmFtKHQsInVzZXJfcm9sZSIsdGhpcy5fdXNlclJvbGUpKS5yZXBsYWNlKC9eaHR0cC8sIndzIil9LGUucHJvdG90eXBlLl9wYXJzZU1lc3NhZ2U9ZnVuY3Rpb24oZSl7aWYoZS5kYXRhJiYiIiE9PWUuZGF0YS50cmltKCkpdHJ5e3JldHVybiBKU09OLnBhcnNlKGUuZGF0YSl9Y2F0Y2goZSl7cmV0dXJufX0sZX0oKTt2YXIgdz1mdW5jdGlvbigpe30sUz1mdW5jdGlvbigpe3JldHVybltdfTtjb25zdCBrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQscixvLGEscyx1LGwsZil7dm9pZCAwPT09byYmKG89dyksdm9pZCAwPT09YSYmKGE9dyksdm9pZCAwPT09cyYmKHM9Uyksdm9pZCAwPT09dSYmKHU9dyksdm9pZCAwPT09bCYmKGw9e30pLHRoaXMuX2VuZHBvaW50cz1lLHRoaXMuX29uTmV4dXNBdmFpbGFibGU9byx0aGlzLl9vbk5leHVzTm90QXZhaWxhYmxlPWEsdGhpcy5fb25DaGFubmVsRXhwaXJlZD1zLHRoaXMuX29uRmFpbHVyZVRvRXN0YWJsaXNoQ29ubmVjdGlvbj11LHRoaXMuX3VzZXJSb2xlPWYsbi5zZXRPcHRpb25zKGwpLGMuc2V0U2luayhyKSxpLnNldExvZ2dlcih0KSx0aGlzLmFjdGl2ZUNvbm5lY3Rpb25zPTAsdGhpcy5fZmlyc3RDb25uZWN0RG9uZT0hMSx0aGlzLl9yZWdpc3RlcmVkTGlzdGVuZXJzPXt9LHRoaXMuX3JlZ2lzdGVyZWRHbG9iYWxMaXN0ZW5lcnM9W10sdGhpcy5fc3Vic2NyaWJlZFRvcGljcz1bXSx0aGlzLl9idWZmZXI9dGhpcy5fY3JlYXRlQnVmZmVyKCksdGhpcy5jb25uZWN0aW9ucz10aGlzLl9jcmVhdGVDb25uZWN0aW9ucygpLHRoaXMudGhyb3R0bGVTZW5kRXZlbnQ9dGhpcy5fY3JlYXRlU2VuZEV2ZW50VGhyb3R0bGUoKSx0aGlzLnRocm90dGxlU2VuZFVzZXJFdmVudD10aGlzLl9jcmVhdGVTZW5kVXNlckV2ZW50VGhyb3R0bGUoKSx0aGlzLmFkZExpc3RlbmVyKCJFWFAiLHRoaXMuX29uRXhwaXJlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZExpc3RlbmVyKCJueC5lYWdlclJlY29ubmVjdCIsdGhpcy5fb25FYWdlclJlY29ubmVjdC5iaW5kKHRoaXMpKX1yZXR1cm4gZS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLl9yZWdpc3RlcmVkTGlzdGVuZXJzW2VdfHwodGhpcy5fcmVnaXN0ZXJlZExpc3RlbmVyc1tlXT1bXSksdGhpcy5fcmVnaXN0ZXJlZExpc3RlbmVyc1tlXS5wdXNoKHQpLHRoaXMuY29ubmVjdGlvbnMuZm9yRWFjaCgoZnVuY3Rpb24ocil7cmV0dXJuIHIuYWRkTGlzdGVuZXIoZSx0KX0pKX0sZS5wcm90b3R5cGUuYWRkR2xvYmFsTGlzdGVuZXI9ZnVuY3Rpb24oZSl7dGhpcy5fcmVnaXN0ZXJlZEdsb2JhbExpc3RlbmVycy5wdXNoKGUpLHRoaXMuY29ubmVjdGlvbnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYWRkR2xvYmFsTGlzdGVuZXIoZSl9KSl9LGUucHJvdG90eXBlLnNldExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7dGhpcy5hZGRMaXN0ZW5lcihlLHQpfSxlLnByb3RvdHlwZS5zZW5kRXZlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj17ZXZlbnROYW1lOmUsZXZlbnREYXRhOnR9O3I9Xy5zZXRFdmVudFRvcGljcyhyKSx0aGlzLl9wdWJsaXNoKHIpfSxlLnByb3RvdHlwZS5zZW5kVXNlckV2ZW50PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj17Im54LlRvVXNlciI6ZSxldmVudE5hbWU6dCxldmVudERhdGE6cn07bj1fLnNldEV2ZW50VG9waWNzKG4pLHRoaXMuX3B1Ymxpc2gobil9LGUucHJvdG90eXBlLnN1YnNjcmliZVRvcGljcz1mdW5jdGlvbihlKXt0aGlzLl9zdWJzY3JpYmVkVG9waWNzPWYodGhpcy5fc3Vic2NyaWJlZFRvcGljcyxlKSx0aGlzLmNvbm5lY3Rpb25zLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN1YnNjcmliZVRvVG9waWNzKGUpfSkpfSxlLnByb3RvdHlwZS5zdWJzY3JpYmVUb0FsbFRvcGljcz1mdW5jdGlvbigpe3RoaXMuc3Vic2NyaWJlVG9waWNzKFsiKiJdKX0sZS5wcm90b3R5cGUudW5zdWJzY3JpYmVUb3BpY3M9ZnVuY3Rpb24oZSl7dGhpcy5fc3Vic2NyaWJlZFRvcGljcz1kKHRoaXMuX3N1YnNjcmliZWRUb3BpY3MsZSksdGhpcy5jb25uZWN0aW9ucy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC51bnN1YnNjcmliZUZyb21Ub3BpY3MoZSl9KSl9LGUucHJvdG90eXBlLm5ld01lc3NhZ2U9ZnVuY3Rpb24oZSl7dGhpcy5zZW5kRXZlbnQoIk5ld01lc3NhZ2UiLGUpfSxlLnByb3RvdHlwZS5uZXdDb21tZW50PWZ1bmN0aW9uKGUpe3RoaXMuc2VuZEV2ZW50KCJOZXdDb21tZW50IixlKX0sZS5wcm90b3R5cGUuZ2V0RW5kcG9pbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VuZHBvaW50c30sZS5wcm90b3R5cGUuc2h1dGRvd249ZnVuY3Rpb24oKXt0aGlzLmNvbm5lY3Rpb25zLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNodXRkb3duKCl9KSksaS5kZXN0cm95KCksYy5yZXNldCgpLHRoaXMuYWN0aXZlQ29ubmVjdGlvbnM9MH0sZS5wcm90b3R5cGUucmV0cnlDb25uZWN0aW9uPWZ1bmN0aW9uKCl7dGhpcy5jb25uZWN0aW9ucy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWNvbm5lY3ROb3coKX0pKX0sZS5wcm90b3R5cGUuZWFnZXJSZWNvbm5lY3Q9ZnVuY3Rpb24oZSl7ZSYmZS5sZW5ndGg+MCYmKHRoaXMuX2VuZHBvaW50cz1lKSx0aGlzLmNvbm5lY3Rpb25zLmZvckVhY2goKGZ1bmN0aW9uKHQscil7dmFyIG49bnVsbD09ZT92b2lkIDA6ZVtyXTt0LmVhZ2VyUmVjb25uZWN0KG4pfSkpfSxlLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMuc2h1dGRvd24oKX0sZS5wcm90b3R5cGUub25GYWlsZWRUb0VzdGFibGlzaE5ld1dlYnNvY2tldENvbm5lY3Rpb249ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9IiIpLGMuaW5jcmVtZW50KCJ1bmFibGVfdG9fZXN0YWJsaXNoX25ld193ZWJzb2NrZXRfYmVjYXVzZV8iLmNvbmNhdChlKSksdGhpcy5fb25GYWlsdXJlVG9Fc3RhYmxpc2hDb25uZWN0aW9uKGUpLHRoaXMuX3Jlc2V0Q29ubmVjdGlvbnMoKX0sZS5wcm90b3R5cGUucGVyZm9ybUhlYWx0aENoZWNrPWZ1bmN0aW9uKCl7dGhpcy5jb25uZWN0aW9ucy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5wZXJmb3JtSGVhbHRoQ2hlY2soKX0pKX0sZS5wcm90b3R5cGUuX29uQ29ubmVjdD1mdW5jdGlvbigpe3RoaXMuYWN0aXZlQ29ubmVjdGlvbnMrKywxPT09dGhpcy5hY3RpdmVDb25uZWN0aW9ucz8odGhpcy5fb25OZXh1c0F2YWlsYWJsZSgpLHZvaWQgMCE9PXRoaXMuX2xhc3REaXNjb25uZWN0QXQmJihjLnRpbWluZygib2ZmbGluZSIsKG5ldyBEYXRlKS5nZXRUaW1lKCktdGhpcy5fbGFzdERpc2Nvbm5lY3RBdCksdGhpcy5fbGFzdERpc2Nvbm5lY3RBdD12b2lkIDApKTpjLmluY3JlbWVudCgibW9yZS10aGFuLW9uZS1jb25uZWN0aW9uIil9LGUucHJvdG90eXBlLl9vbkRpc2Nvbm5lY3Q9ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZUNvbm5lY3Rpb25zPXRoaXMuYWN0aXZlQ29ubmVjdGlvbnM+MD90aGlzLmFjdGl2ZUNvbm5lY3Rpb25zLTE6MCx0aGlzLmFjdGl2ZUNvbm5lY3Rpb25zPDEmJih0aGlzLl9sYXN0RGlzY29ubmVjdEF0PShuZXcgRGF0ZSkuZ2V0VGltZSgpLHRoaXMuX29uTmV4dXNOb3RBdmFpbGFibGUoKSl9LGUucHJvdG90eXBlLl9vbkZpcnN0Q29ubmVjdD1mdW5jdGlvbigpe3RoaXMuX2ZpcnN0Q29ubmVjdERvbmU9ITAsdGhpcy5fYnVmZmVyLmZsdXNoKCl9LGUucHJvdG90eXBlLl9vbkV4cGlyZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQ9dGhpcyxuPWZ1bmN0aW9uKCl7dmFyIGUsdDtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgcixuLG8saT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfSxhPU9iamVjdC5jcmVhdGUoKCJmdW5jdGlvbiI9PXR5cGVvZiBJdGVyYXRvcj9JdGVyYXRvcjpPYmplY3QpLnByb3RvdHlwZSk7cmV0dXJuIGEubmV4dD1zKDApLGEudGhyb3c9cygxKSxhLnJldHVybj1zKDIpLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihhW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGE7ZnVuY3Rpb24gcyhzKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKHMpe2lmKHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YSYmKGE9MCxzWzBdJiYoaT0wKSksaTspdHJ5e2lmKHI9MSxuJiYobz0yJnNbMF0/bi5yZXR1cm46c1swXT9uLnRocm93fHwoKG89bi5yZXR1cm4pJiZvLmNhbGwobiksMCk6bi5uZXh0KSYmIShvPW8uY2FsbChuLHNbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChuPTAsbyYmKHM9WzImc1swXSxvLnZhbHVlXSksc1swXSl7Y2FzZSAwOmNhc2UgMTpvPXM7YnJlYWs7Y2FzZSA0OnJldHVybiBpLmxhYmVsKysse3ZhbHVlOnNbMV0sZG9uZTohMX07Y2FzZSA1OmkubGFiZWwrKyxuPXNbMV0scz1bMF07Y29udGludWU7Y2FzZSA3OnM9aS5vcHMucG9wKCksaS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgobz0obz1pLnRyeXMpLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKXx8NiE9PXNbMF0mJjIhPT1zWzBdKSl7aT0wO2NvbnRpbnVlfWlmKDM9PT1zWzBdJiYoIW98fHNbMV0+b1swXSYmc1sxXTxvWzNdKSl7aS5sYWJlbD1zWzFdO2JyZWFrfWlmKDY9PT1zWzBdJiZpLmxhYmVsPG9bMV0pe2kubGFiZWw9b1sxXSxvPXM7YnJlYWt9aWYobyYmaS5sYWJlbDxvWzJdKXtpLmxhYmVsPW9bMl0saS5vcHMucHVzaChzKTticmVha31vWzJdJiZpLm9wcy5wb3AoKSxpLnRyeXMucG9wKCk7Y29udGludWV9cz10LmNhbGwoZSxpKX1jYXRjaChlKXtzPVs2LGVdLG49MH1maW5hbGx5e3I9bz0wfWlmKDUmc1swXSl0aHJvdyBzWzFdO3JldHVybnt2YWx1ZTpzWzBdP3NbMV06dm9pZCAwLGRvbmU6ITB9fShbcyxjXSl9fX0odGhpcywoZnVuY3Rpb24ocil7c3dpdGNoKHIubGFiZWwpe2Nhc2UgMDpyZXR1cm4gci50cnlzLnB1c2goWzAsMiwsM10pLGNvbnNvbGUubG9nKCJDaGFubmVsIGV4cGlyZWQsIHJlcXVlc3RpbmcgbmV3IGVuZHBvaW50cyIpLFs0LHRoaXMuX29uQ2hhbm5lbEV4cGlyZWQoKV07Y2FzZSAxOnJldHVybihlPXIuc2VudCgpKSYmQXJyYXkuaXNBcnJheShlKSYmMCE9PWUubGVuZ3RoPyhjb25zb2xlLmxvZygiUmVjZWl2ZWQgIi5jb25jYXQoZS5sZW5ndGgsIiBuZXcgZW5kcG9pbnQocyksIHBlcmZvcm1pbmcgaG90LXN3YXAiKSksdGhpcy5lYWdlclJlY29ubmVjdChlKSxbMywzXSk6KGNvbnNvbGUubG9nKCJObyB2YWxpZCBlbmRwb2ludHMgcmV0dXJuZWQgZnJvbSBvbkNoYW5uZWxFeHBpcmVkIGNhbGxiYWNrLCBjYW5ub3QgcmVjb25uZWN0LCBzaHV0dGluZyBkb3duIiksYy5pbmNyZW1lbnQoIm9uQ2hhbm5lbEV4cGlyZWRfbm9fdmFsaWRfZW5kcG9pbnRzIiksdGhpcy5zaHV0ZG93bigpLFsyXSk7Y2FzZSAyOnJldHVybiB0PXIuc2VudCgpLGNvbnNvbGUuZXJyb3IoIkVycm9yIGluIG9uQ2hhbm5lbEV4cGlyZWQgY2FsbGJhY2ssIGNhbm5vdCByZWNvbm5lY3QsIHNodXR0aW5nIGRvd24iLHQpLGMuaW5jcmVtZW50KCJvbkNoYW5uZWxFeHBpcmVkX2NhbGxiYWNrX2Vycm9yIiksdGhpcy5zaHV0ZG93bigpLFszLDNdO2Nhc2UgMzpyZXR1cm5bMl19fSkpfSxuZXcoKHI9dm9pZCAwKXx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihlLG8pe2Z1bmN0aW9uIGkoZSl7dHJ5e3Mobi5uZXh0KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBhKGUpe3RyeXtzKG4udGhyb3coZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIHModCl7dmFyIG47dC5kb25lP2UodC52YWx1ZSk6KG49dC52YWx1ZSxuIGluc3RhbmNlb2Ygcj9uOm5ldyByKChmdW5jdGlvbihlKXtlKG4pfSkpKS50aGVuKGksYSl9cygobj1uLmFwcGx5KHQsW10pKS5uZXh0KCkpfSkpO3ZhciB0LHIsbn0sZS5wcm90b3R5cGUuX29uRWFnZXJSZWNvbm5lY3Q9ZnVuY3Rpb24oKXt0aGlzLmVhZ2VyUmVjb25uZWN0KCl9LGUucHJvdG90eXBlLl9wdWJsaXNoPWZ1bmN0aW9uKGUpe2UuZXZlbnRHdWlkPSJ4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgiLnJlcGxhY2UoL1t4eV0vZywoZnVuY3Rpb24oZSl7dmFyIHQ9MTYqTWF0aC5yYW5kb20oKXwwO3JldHVybigieCI9PT1lP3Q6MyZ0fDgpLnRvU3RyaW5nKDE2KX0pKSx0aGlzLnVzZU5ld1dlYlNvY2tldHN8fHRoaXMuX2ZpcnN0Q29ubmVjdERvbmV8fHRoaXMuX2J1ZmZlci5wdXNoRXZlbnQoZSksdGhpcy5jb25uZWN0aW9ucy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5wdWJsaXNoKGUpfSkpfSxlLnByb3RvdHlwZS5fY3JlYXRlQnVmZmVyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBoKHRoaXMuX3B1Ymxpc2guYmluZCh0aGlzKSl9LGUucHJvdG90eXBlLl9yZXNldENvbm5lY3Rpb25zPWZ1bmN0aW9uKCl7dGhpcy5jb25uZWN0aW9ucy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zaHV0ZG93bigpfSkpLHRoaXMuY29ubmVjdGlvbnM9dGhpcy5fY3JlYXRlQ29ubmVjdGlvbnMoKSx0aGlzLl9yZWh5ZHJhdGVDb25uZWN0aW9ucygpfSxlLnByb3RvdHlwZS5fcmVoeWRyYXRlQ29ubmVjdGlvbnM9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcyx0PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPWZ1bmN0aW9uKHQpe3IuY29ubmVjdGlvbnMuZm9yRWFjaCgoZnVuY3Rpb24ocil7cmV0dXJuIHIuYWRkTGlzdGVuZXIoZSx0KX0pKX0sbz0wLGk9dDtvPGkubGVuZ3RoO28rKyluKGlbb10pfSxyPXRoaXMsbj0wLG89T2JqZWN0LmVudHJpZXModGhpcy5fcmVnaXN0ZXJlZExpc3RlbmVycyk7bjxvLmxlbmd0aDtuKyspe3ZhciBpPW9bbl07dChpWzBdLGlbMV0pfXRoaXMuX3JlZ2lzdGVyZWRHbG9iYWxMaXN0ZW5lcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5jb25uZWN0aW9ucy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5hZGRHbG9iYWxMaXN0ZW5lcih0KX0pKX0pKSx0aGlzLl9zdWJzY3JpYmVkVG9waWNzLmxlbmd0aD4wJiZ0aGlzLmNvbm5lY3Rpb25zLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN1YnNjcmliZVRvVG9waWNzKGUuX3N1YnNjcmliZWRUb3BpY3MpfSkpfSxlLnByb3RvdHlwZS5fY3JlYXRlQ29ubmVjdGlvbnM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLl9lbmRwb2ludHMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGIodCxlLl9vbkNvbm5lY3QuYmluZChlKSxlLl9vbkRpc2Nvbm5lY3QuYmluZChlKSxlLm9uRmFpbGVkVG9Fc3RhYmxpc2hOZXdXZWJzb2NrZXRDb25uZWN0aW9uLmJpbmQoZSksZS5fdXNlclJvbGUpfSkpLmZpbHRlcihCb29sZWFuKX0sZS5wcm90b3R5cGUuX2NyZWF0ZVNlbmRFdmVudFRocm90dGxlPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5zZW5kRXZlbnQuYmluZCh0aGlzKSxuLklTX1RZUElOR19USFJPVFRMRSl9LGUucHJvdG90eXBlLl9jcmVhdGVTZW5kVXNlckV2ZW50VGhyb3R0bGU9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLnNlbmRVc2VyRXZlbnQuYmluZCh0aGlzKSxuLklTX1RZUElOR19USFJPVFRMRSx7dHJhaWxpbmc6ITF9KX0sZX0oKTtyZXR1cm4gdH0pKCksZS5leHBvcnRzPXQoKX0sNzkxMDA6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7XzpmdW5jdGlvbigpe3JldHVybiBwfX0pO3ZhciBuPXIoMzg3MjkpLG89ZnVuY3Rpb24oZSx0KXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl07aWYoIXIpcmV0dXJuIGU7dmFyIG4sbyxpPXIuY2FsbChlKSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT10fHx0LS0gPjApJiYhKG49aS5uZXh0KCkpLmRvbmU7KWEucHVzaChuLnZhbHVlKX1jYXRjaChlKXtvPXtlcnJvcjplfX1maW5hbGx5e3RyeXtuJiYhbi5kb25lJiYocj1pLnJldHVybikmJnIuY2FsbChpKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIGF9LGk9ZnVuY3Rpb24oZSx0LHIpe2lmKHJ8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgbixvPTAsaT10Lmxlbmd0aDtvPGk7bysrKSFuJiZvIGluIHR8fChufHwobj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAsbykpLG5bb109dFtvXSk7cmV0dXJuIGUuY29uY2F0KG58fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX0sYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9cmV0dXJuIGUucHJvdG90eXBlLmFjdGl2ZT1mdW5jdGlvbigpe3JldHVybiBuLmx9LGUucHJvdG90eXBlLndpdGg9ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbj1bXSxhPTM7YTxhcmd1bWVudHMubGVuZ3RoO2ErKyluW2EtM109YXJndW1lbnRzW2FdO3JldHVybiB0LmNhbGwuYXBwbHkodCxpKFtyXSxvKG4pLCExKSl9LGUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0sZS5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZX0oKSxzPXIoNzUxNTgpLGM9cig0NDg5MiksdT1mdW5jdGlvbihlLHQpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXTtpZighcilyZXR1cm4gZTt2YXIgbixvLGk9ci5jYWxsKGUpLGE9W107dHJ5e2Zvcig7KHZvaWQgMD09PXR8fHQtLSA+MCkmJiEobj1pLm5leHQoKSkuZG9uZTspYS5wdXNoKG4udmFsdWUpfWNhdGNoKGUpe289e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e24mJiFuLmRvbmUmJihyPWkucmV0dXJuKSYmci5jYWxsKGkpfWZpbmFsbHl7aWYobyl0aHJvdyBvLmVycm9yfX1yZXR1cm4gYX0sbD1mdW5jdGlvbihlLHQscil7aWYocnx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciBuLG89MCxpPXQubGVuZ3RoO288aTtvKyspIW4mJm8gaW4gdHx8KG58fChuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMCxvKSksbltvXT10W29dKTtyZXR1cm4gZS5jb25jYXQobnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpfSxmPSJjb250ZXh0IixkPW5ldyBhLHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLmdldEluc3RhbmNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2luc3RhbmNlfHwodGhpcy5faW5zdGFuY2U9bmV3IGUpLHRoaXMuX2luc3RhbmNlfSxlLnByb3RvdHlwZS5zZXRHbG9iYWxDb250ZXh0TWFuYWdlcj1mdW5jdGlvbihlKXtyZXR1cm4oMCxzLiRHKShmLGUsYy5LLmluc3RhbmNlKCkpfSxlLnByb3RvdHlwZS5hY3RpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2V0Q29udGV4dE1hbmFnZXIoKS5hY3RpdmUoKX0sZS5wcm90b3R5cGUud2l0aD1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBuLG89W10saT0zO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspb1tpLTNdPWFyZ3VtZW50c1tpXTtyZXR1cm4obj10aGlzLl9nZXRDb250ZXh0TWFuYWdlcigpKS53aXRoLmFwcGx5KG4sbChbZSx0LHJdLHUobyksITEpKX0sZS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9nZXRDb250ZXh0TWFuYWdlcigpLmJpbmQoZSx0KX0sZS5wcm90b3R5cGUuX2dldENvbnRleHRNYW5hZ2VyPWZ1bmN0aW9uKCl7cmV0dXJuKDAscy5tUykoZil8fGR9LGUucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLl9nZXRDb250ZXh0TWFuYWdlcigpLmRpc2FibGUoKSwoMCxzLmt2KShmLGMuSy5pbnN0YW5jZSgpKX0sZX0oKX0sNDQ4OTI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7SzpmdW5jdGlvbigpe3JldHVybiBmfX0pO3ZhciBuPXIoNzUxNTgpLG89ZnVuY3Rpb24oZSx0KXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl07aWYoIXIpcmV0dXJuIGU7dmFyIG4sbyxpPXIuY2FsbChlKSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT10fHx0LS0gPjApJiYhKG49aS5uZXh0KCkpLmRvbmU7KWEucHVzaChuLnZhbHVlKX1jYXRjaChlKXtvPXtlcnJvcjplfX1maW5hbGx5e3RyeXtuJiYhbi5kb25lJiYocj1pLnJldHVybikmJnIuY2FsbChpKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIGF9LGk9ZnVuY3Rpb24oZSx0LHIpe2lmKHJ8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgbixvPTAsaT10Lmxlbmd0aDtvPGk7bysrKSFuJiZvIGluIHR8fChufHwobj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAsbykpLG5bb109dFtvXSk7cmV0dXJuIGUuY29uY2F0KG58fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX0sYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5fbmFtZXNwYWNlPWUubmFtZXNwYWNlfHwiRGlhZ0NvbXBvbmVudExvZ2dlciJ9cmV0dXJuIGUucHJvdG90eXBlLmRlYnVnPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3JldHVybiBzKCJkZWJ1ZyIsdGhpcy5fbmFtZXNwYWNlLGUpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gcygiZXJyb3IiLHRoaXMuX25hbWVzcGFjZSxlKX0sZS5wcm90b3R5cGUuaW5mbz1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gcygiaW5mbyIsdGhpcy5fbmFtZXNwYWNlLGUpfSxlLnByb3RvdHlwZS53YXJuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3JldHVybiBzKCJ3YXJuIix0aGlzLl9uYW1lc3BhY2UsZSl9LGUucHJvdG90eXBlLnZlcmJvc2U9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07cmV0dXJuIHMoInZlcmJvc2UiLHRoaXMuX25hbWVzcGFjZSxlKX0sZX0oKTtmdW5jdGlvbiBzKGUsdCxyKXt2YXIgYT0oMCxuLm1TKSgiZGlhZyIpO2lmKGEpcmV0dXJuIHIudW5zaGlmdCh0KSxhW2VdLmFwcGx5KGEsaShbXSxvKHIpLCExKSl9dmFyIGM9cig3NjczMyk7dmFyIHU9ZnVuY3Rpb24oZSx0KXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl07aWYoIXIpcmV0dXJuIGU7dmFyIG4sbyxpPXIuY2FsbChlKSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT10fHx0LS0gPjApJiYhKG49aS5uZXh0KCkpLmRvbmU7KWEucHVzaChuLnZhbHVlKX1jYXRjaChlKXtvPXtlcnJvcjplfX1maW5hbGx5e3RyeXtuJiYhbi5kb25lJiYocj1pLnJldHVybikmJnIuY2FsbChpKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIGF9LGw9ZnVuY3Rpb24oZSx0LHIpe2lmKHJ8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgbixvPTAsaT10Lmxlbmd0aDtvPGk7bysrKSFuJiZvIGluIHR8fChufHwobj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAsbykpLG5bb109dFtvXSk7cmV0dXJuIGUuY29uY2F0KG58fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX0sZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtmdW5jdGlvbiBlKGUpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxyPTA7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbz0oMCxuLm1TKSgiZGlhZyIpO2lmKG8pcmV0dXJuIG9bZV0uYXBwbHkobyxsKFtdLHUodCksITEpKX19dmFyIHQ9dGhpczt0LnNldExvZ2dlcj1mdW5jdGlvbihlLHIpe3ZhciBvLGksYTtpZih2b2lkIDA9PT1yJiYocj17bG9nTGV2ZWw6Yy51LklORk99KSxlPT09dCl7dmFyIHM9bmV3IEVycm9yKCJDYW5ub3QgdXNlIGRpYWcgYXMgdGhlIGxvZ2dlciBmb3IgaXRzZWxmLiBQbGVhc2UgdXNlIGEgRGlhZ0xvZ2dlciBpbXBsZW1lbnRhdGlvbiBsaWtlIENvbnNvbGVEaWFnTG9nZ2VyIG9yIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uIik7cmV0dXJuIHQuZXJyb3IobnVsbCE9PShvPXMuc3RhY2spJiZ2b2lkIDAhPT1vP286cy5tZXNzYWdlKSwhMX0ibnVtYmVyIj09dHlwZW9mIHImJihyPXtsb2dMZXZlbDpyfSk7dmFyIHU9KDAsbi5tUykoImRpYWciKSxsPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcihyLG4pe3ZhciBvPXRbcl07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG8mJmU+PW4/by5iaW5kKHQpOmZ1bmN0aW9uKCl7fX1yZXR1cm4gZTxjLnUuTk9ORT9lPWMudS5OT05FOmU+Yy51LkFMTCYmKGU9Yy51LkFMTCksdD10fHx7fSx7ZXJyb3I6cigiZXJyb3IiLGMudS5FUlJPUiksd2FybjpyKCJ3YXJuIixjLnUuV0FSTiksaW5mbzpyKCJpbmZvIixjLnUuSU5GTyksZGVidWc6cigiZGVidWciLGMudS5ERUJVRyksdmVyYm9zZTpyKCJ2ZXJib3NlIixjLnUuVkVSQk9TRSl9fShudWxsIT09KGk9ci5sb2dMZXZlbCkmJnZvaWQgMCE9PWk/aTpjLnUuSU5GTyxlKTtpZih1JiYhci5zdXBwcmVzc092ZXJyaWRlTWVzc2FnZSl7dmFyIGY9bnVsbCE9PShhPShuZXcgRXJyb3IpLnN0YWNrKSYmdm9pZCAwIT09YT9hOiI8ZmFpbGVkIHRvIGdlbmVyYXRlIHN0YWNrdHJhY2U+Ijt1Lndhcm4oIkN1cnJlbnQgbG9nZ2VyIHdpbGwgYmUgb3ZlcndyaXR0ZW4gZnJvbSAiK2YpLGwud2FybigiQ3VycmVudCBsb2dnZXIgd2lsbCBvdmVyd3JpdGUgb25lIGFscmVhZHkgcmVnaXN0ZXJlZCBmcm9tICIrZil9cmV0dXJuKDAsbi4kRykoImRpYWciLGwsdCwhMCl9LHQuZGlzYWJsZT1mdW5jdGlvbigpeygwLG4ua3YpKCJkaWFnIix0KX0sdC5jcmVhdGVDb21wb25lbnRMb2dnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBhKGUpfSx0LnZlcmJvc2U9ZSgidmVyYm9zZSIpLHQuZGVidWc9ZSgiZGVidWciKSx0LmluZm89ZSgiaW5mbyIpLHQud2Fybj1lKCJ3YXJuIiksdC5lcnJvcj1lKCJlcnJvciIpfXJldHVybiBlLmluc3RhbmNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2luc3RhbmNlfHwodGhpcy5faW5zdGFuY2U9bmV3IGUpLHRoaXMuX2luc3RhbmNlfSxlfSgpfSw0MTg0NDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtfOmZ1bmN0aW9uKCl7cmV0dXJuIG59fSk7dmFyIG49cig3OTEwMCkuXy5nZXRJbnN0YW5jZSgpfSwzODcyOTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIFN5bWJvbC5mb3IoZSl9ci5kKHQse2w6ZnVuY3Rpb24oKXtyZXR1cm4gb30sbjpmdW5jdGlvbigpe3JldHVybiBufX0pO3ZhciBvPW5ldyBmdW5jdGlvbiBlKHQpe3ZhciByPXRoaXM7ci5fY3VycmVudENvbnRleHQ9dD9uZXcgTWFwKHQpOm5ldyBNYXAsci5nZXRWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gci5fY3VycmVudENvbnRleHQuZ2V0KGUpfSxyLnNldFZhbHVlPWZ1bmN0aW9uKHQsbil7dmFyIG89bmV3IGUoci5fY3VycmVudENvbnRleHQpO3JldHVybiBvLl9jdXJyZW50Q29udGV4dC5zZXQodCxuKSxvfSxyLmRlbGV0ZVZhbHVlPWZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBlKHIuX2N1cnJlbnRDb250ZXh0KTtyZXR1cm4gbi5fY3VycmVudENvbnRleHQuZGVsZXRlKHQpLG59fX0sNzY3MzM6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbjtyLmQodCx7dTpmdW5jdGlvbigpe3JldHVybiBufX0pLGZ1bmN0aW9uKGUpe2VbZS5OT05FPTBdPSJOT05FIixlW2UuRVJST1I9MzBdPSJFUlJPUiIsZVtlLldBUk49NTBdPSJXQVJOIixlW2UuSU5GTz02MF09IklORk8iLGVbZS5ERUJVRz03MF09IkRFQlVHIixlW2UuVkVSQk9TRT04MF09IlZFUkJPU0UiLGVbZS5BTEw9OTk5OV09IkFMTCJ9KG58fChuPXt9KSl9LDc1MTU4OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5kKHQse21TOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LCRHOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LGt2OmZ1bmN0aW9uKCl7cmV0dXJuIGR9fSk7dmFyIG49Im9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6Im9iamVjdCI9PXR5cGVvZiBzZWxmP3NlbGY6Im9iamVjdCI9PXR5cGVvZiB3aW5kb3c/d2luZG93OiJvYmplY3QiPT10eXBlb2Ygci5nP3IuZzp7fSxvPSIxLjkuMCIsaT0vXihcZCspXC4oXGQrKVwuKFxkKykoLSguKykpPyQvO3ZhciBhPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBTZXQoW2VdKSxyPW5ldyBTZXQsbj1lLm1hdGNoKGkpO2lmKCFuKXJldHVybiBmdW5jdGlvbigpe3JldHVybiExfTt2YXIgbz0rblsxXSxhPStuWzJdLHM9K25bM107aWYobnVsbCE9bls0XSlyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1lfTtmdW5jdGlvbiBjKGUpe3JldHVybiByLmFkZChlKSwhMX1mdW5jdGlvbiB1KGUpe3JldHVybiB0LmFkZChlKSwhMH1yZXR1cm4gZnVuY3Rpb24oZSl7aWYodC5oYXMoZSkpcmV0dXJuITA7aWYoci5oYXMoZSkpcmV0dXJuITE7dmFyIG49ZS5tYXRjaChpKTtpZighbilyZXR1cm4gYyhlKTt2YXIgbD0rblsxXSxmPStuWzJdLGQ9K25bM107cmV0dXJuIG51bGwhPW5bNF18fG8hPT1sP2MoZSk6MD09PW8/YT09PWYmJnM8PWQ/dShlKTpjKGUpOmE8PWY/dShlKTpjKGUpfX0obykscz1vLnNwbGl0KCIuIilbMF0sYz1TeW1ib2wuZm9yKCJvcGVudGVsZW1ldHJ5LmpzLmFwaS4iK3MpLHU9bjtmdW5jdGlvbiBsKGUsdCxyLG4pe3ZhciBpO3ZvaWQgMD09PW4mJihuPSExKTt2YXIgYT11W2NdPW51bGwhPT0oaT11W2NdKSYmdm9pZCAwIT09aT9pOnt2ZXJzaW9uOm99O2lmKCFuJiZhW2VdKXt2YXIgcz1uZXcgRXJyb3IoIkBvcGVudGVsZW1ldHJ5L2FwaTogQXR0ZW1wdGVkIGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gb2YgQVBJOiAiK2UpO3JldHVybiByLmVycm9yKHMuc3RhY2t8fHMubWVzc2FnZSksITF9aWYoYS52ZXJzaW9uIT09byl7cz1uZXcgRXJyb3IoIkBvcGVudGVsZW1ldHJ5L2FwaTogUmVnaXN0cmF0aW9uIG9mIHZlcnNpb24gdiIrYS52ZXJzaW9uKyIgZm9yICIrZSsiIGRvZXMgbm90IG1hdGNoIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBBUEkgdiIrbyk7cmV0dXJuIHIuZXJyb3Iocy5zdGFja3x8cy5tZXNzYWdlKSwhMX1yZXR1cm4gYVtlXT10LHIuZGVidWcoIkBvcGVudGVsZW1ldHJ5L2FwaTogUmVnaXN0ZXJlZCBhIGdsb2JhbCBmb3IgIitlKyIgdiIrbysiLiIpLCEwfWZ1bmN0aW9uIGYoZSl7dmFyIHQscixuPW51bGw9PT0odD11W2NdKXx8dm9pZCAwPT09dD92b2lkIDA6dC52ZXJzaW9uO2lmKG4mJmEobikpcmV0dXJuIG51bGw9PT0ocj11W2NdKXx8dm9pZCAwPT09cj92b2lkIDA6cltlXX1mdW5jdGlvbiBkKGUsdCl7dC5kZWJ1ZygiQG9wZW50ZWxlbWV0cnkvYXBpOiBVbnJlZ2lzdGVyaW5nIGEgZ2xvYmFsIGZvciAiK2UrIiB2IitvKyIuIik7dmFyIHI9dVtjXTtyJiZkZWxldGUgcltlXX19LDY2NjQ6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7dTpmdW5jdGlvbigpe3JldHVybiB1fX0pO3ZhciBuPXIoNzUxNTgpLG89cig3NDk3NSksaT1yKDY3ODIzKSxhPXIoMTMyOTkpLHM9cig0NDg5MiksYz0idHJhY2UiLHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5fcHJveHlUcmFjZXJQcm92aWRlcj1uZXcgby5uLHRoaXMud3JhcFNwYW5Db250ZXh0PWkuSVAsdGhpcy5pc1NwYW5Db250ZXh0VmFsaWQ9aS5ZQSx0aGlzLmRlbGV0ZVNwYW49YS5FVyx0aGlzLmdldFNwYW49YS5mVSx0aGlzLmdldEFjdGl2ZVNwYW49YS5Cayx0aGlzLmdldFNwYW5Db250ZXh0PWEudzgsdGhpcy5zZXRTcGFuPWEuQngsdGhpcy5zZXRTcGFuQ29udGV4dD1hLmdffXJldHVybiBlLmdldEluc3RhbmNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2luc3RhbmNlfHwodGhpcy5faW5zdGFuY2U9bmV3IGUpLHRoaXMuX2luc3RhbmNlfSxlLnByb3RvdHlwZS5zZXRHbG9iYWxUcmFjZXJQcm92aWRlcj1mdW5jdGlvbihlKXt2YXIgdD0oMCxuLiRHKShjLHRoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXIscy5LLmluc3RhbmNlKCkpO3JldHVybiB0JiZ0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyLnNldERlbGVnYXRlKGUpLHR9LGUucHJvdG90eXBlLmdldFRyYWNlclByb3ZpZGVyPWZ1bmN0aW9uKCl7cmV0dXJuKDAsbi5tUykoYyl8fHRoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXJ9LGUucHJvdG90eXBlLmdldFRyYWNlcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmdldFRyYWNlclByb3ZpZGVyKCkuZ2V0VHJhY2VyKGUsdCl9LGUucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXsoMCxuLmt2KShjLHMuSy5pbnN0YW5jZSgpKSx0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyPW5ldyBvLm59LGV9KCkuZ2V0SW5zdGFuY2UoKX0sMzE0NDA6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7ZDpmdW5jdGlvbigpe3JldHVybiBvfX0pO3ZhciBuPXIoOTc4NzIpLG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPW4uZE0pLHRoaXMuX3NwYW5Db250ZXh0PWV9cmV0dXJuIGUucHJvdG90eXBlLnNwYW5Db250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NwYW5Db250ZXh0fSxlLnByb3RvdHlwZS5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuYWRkRXZlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuYWRkTGluaz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuYWRkTGlua3M9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLnNldFN0YXR1cz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUudXBkYXRlTmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKGUpe30sZS5wcm90b3R5cGUuaXNSZWNvcmRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZS5wcm90b3R5cGUucmVjb3JkRXhjZXB0aW9uPWZ1bmN0aW9uKGUsdCl7fSxlfSgpfSw3OTc1NTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtvOmZ1bmN0aW9uKCl7cmV0dXJuIGN9fSk7dmFyIG49cig3OTEwMCksbz1yKDEzMjk5KSxpPXIoMzE0NDApLGE9cig2NzgyMykscz1uLl8uZ2V0SW5zdGFuY2UoKSxjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZS5wcm90b3R5cGUuc3RhcnRTcGFuPWZ1bmN0aW9uKGUsdCxyKXtpZih2b2lkIDA9PT1yJiYocj1zLmFjdGl2ZSgpKSxCb29sZWFuKG51bGw9PXQ/dm9pZCAwOnQucm9vdCkpcmV0dXJuIG5ldyBpLmQ7dmFyIG4sYz1yJiYoMCxvLnc4KShyKTtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mKG49YykmJiJzdHJpbmciPT10eXBlb2Ygbi5zcGFuSWQmJiJzdHJpbmciPT10eXBlb2Ygbi50cmFjZUlkJiYibnVtYmVyIj09dHlwZW9mIG4udHJhY2VGbGFncyYmKDAsYS5ZQSkoYyk/bmV3IGkuZChjKTpuZXcgaS5kfSxlLnByb3RvdHlwZS5zdGFydEFjdGl2ZVNwYW49ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGksYSxjO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Mj09PWFyZ3VtZW50cy5sZW5ndGg/Yz10OjM9PT1hcmd1bWVudHMubGVuZ3RoPyhpPXQsYz1yKTooaT10LGE9cixjPW4pO3ZhciB1PW51bGwhPWE/YTpzLmFjdGl2ZSgpLGw9dGhpcy5zdGFydFNwYW4oZSxpLHUpLGY9KDAsby5CeCkodSxsKTtyZXR1cm4gcy53aXRoKGYsYyx2b2lkIDAsbCl9fSxlfSgpfSwxOTUwNTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHt5OmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7dmFyIG49bmV3KHIoNzk3NTUpLm8pLG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxyLG4pe3RoaXMuX3Byb3ZpZGVyPWUsdGhpcy5uYW1lPXQsdGhpcy52ZXJzaW9uPXIsdGhpcy5vcHRpb25zPW59cmV0dXJuIGUucHJvdG90eXBlLnN0YXJ0U3Bhbj1mdW5jdGlvbihlLHQscil7cmV0dXJuIHRoaXMuX2dldFRyYWNlcigpLnN0YXJ0U3BhbihlLHQscil9LGUucHJvdG90eXBlLnN0YXJ0QWN0aXZlU3Bhbj1mdW5jdGlvbihlLHQscixuKXt2YXIgbz10aGlzLl9nZXRUcmFjZXIoKTtyZXR1cm4gUmVmbGVjdC5hcHBseShvLnN0YXJ0QWN0aXZlU3BhbixvLGFyZ3VtZW50cyl9LGUucHJvdG90eXBlLl9nZXRUcmFjZXI9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZWxlZ2F0ZSlyZXR1cm4gdGhpcy5fZGVsZWdhdGU7dmFyIGU9dGhpcy5fcHJvdmlkZXIuZ2V0RGVsZWdhdGVUcmFjZXIodGhpcy5uYW1lLHRoaXMudmVyc2lvbix0aGlzLm9wdGlvbnMpO3JldHVybiBlPyh0aGlzLl9kZWxlZ2F0ZT1lLHRoaXMuX2RlbGVnYXRlKTpufSxlfSgpfSw3NDk3NTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtuOmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSk7dmFyIG49cigxOTUwNSksbz1yKDc5NzU1KSxpPW5ldyhmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9cmV0dXJuIGUucHJvdG90eXBlLmdldFRyYWNlcj1mdW5jdGlvbihlLHQscil7cmV0dXJuIG5ldyBvLm99LGV9KCkpLGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLnByb3RvdHlwZS5nZXRUcmFjZXI9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvO3JldHVybiBudWxsIT09KG89dGhpcy5nZXREZWxlZ2F0ZVRyYWNlcihlLHQscikpJiZ2b2lkIDAhPT1vP286bmV3IG4ueSh0aGlzLGUsdCxyKX0sZS5wcm90b3R5cGUuZ2V0RGVsZWdhdGU9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gbnVsbCE9PShlPXRoaXMuX2RlbGVnYXRlKSYmdm9pZCAwIT09ZT9lOml9LGUucHJvdG90eXBlLnNldERlbGVnYXRlPWZ1bmN0aW9uKGUpe3RoaXMuX2RlbGVnYXRlPWV9LGUucHJvdG90eXBlLmdldERlbGVnYXRlVHJhY2VyPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbjtyZXR1cm4gbnVsbD09PShuPXRoaXMuX2RlbGVnYXRlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5nZXRUcmFjZXIoZSx0LHIpfSxlfSgpfSwxMzI5OTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtCazpmdW5jdGlvbigpe3JldHVybiBjfSxCeDpmdW5jdGlvbigpe3JldHVybiB1fSxFVzpmdW5jdGlvbigpe3JldHVybiBsfSxmVTpmdW5jdGlvbigpe3JldHVybiBzfSxnXzpmdW5jdGlvbigpe3JldHVybiBmfSx3ODpmdW5jdGlvbigpe3JldHVybiBkfX0pO3ZhciBuPXIoMzg3MjkpLG89cigzMTQ0MCksaT1yKDc5MTAwKSxhPSgwLG4ubikoIk9wZW5UZWxlbWV0cnkgQ29udGV4dCBLZXkgU1BBTiIpO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGUuZ2V0VmFsdWUoYSl8fHZvaWQgMH1mdW5jdGlvbiBjKCl7cmV0dXJuIHMoaS5fLmdldEluc3RhbmNlKCkuYWN0aXZlKCkpfWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gZS5zZXRWYWx1ZShhLHQpfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGUuZGVsZXRlVmFsdWUoYSl9ZnVuY3Rpb24gZihlLHQpe3JldHVybiB1KGUsbmV3IG8uZCh0KSl9ZnVuY3Rpb24gZChlKXt2YXIgdDtyZXR1cm4gbnVsbD09PSh0PXMoZSkpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LnNwYW5Db250ZXh0KCl9fSw5Nzg3MjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtSSDpmdW5jdGlvbigpe3JldHVybiBpfSxkTTpmdW5jdGlvbigpe3JldHVybiBhfSx3OTpmdW5jdGlvbigpe3JldHVybiBvfX0pO3ZhciBuPXIoNDczOTcpLG89IjAwMDAwMDAwMDAwMDAwMDAiLGk9IjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIixhPXt0cmFjZUlkOmksc3BhbklkOm8sdHJhY2VGbGFnczpuLlguTk9ORX19LDY3ODIzOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5kKHQse0lQOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LFlBOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LGhYOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LHdOOmZ1bmN0aW9uKCl7cmV0dXJuIGN9fSk7dmFyIG49cig5Nzg3Miksbz1yKDMxNDQwKSxpPS9eKFswLTlhLWZdezMyfSkkL2ksYT0vXlswLTlhLWZdezE2fSQvaTtmdW5jdGlvbiBzKGUpe3JldHVybiBpLnRlc3QoZSkmJmUhPT1uLlJIfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGEudGVzdChlKSYmZSE9PW4udzl9ZnVuY3Rpb24gdShlKXtyZXR1cm4gcyhlLnRyYWNlSWQpJiZjKGUuc3BhbklkKX1mdW5jdGlvbiBsKGUpe3JldHVybiBuZXcgby5kKGUpfX0sNDczOTc6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbjtyLmQodCx7WDpmdW5jdGlvbigpe3JldHVybiBufX0pLGZ1bmN0aW9uKGUpe2VbZS5OT05FPTBdPSJOT05FIixlW2UuU0FNUExFRD0xXT0iU0FNUExFRCJ9KG58fChuPXt9KSl9LDU5NDA6ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3JldHVybiByPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2Zvcih2YXIgbiBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG4pJiYoZVtuXT1yW25dKX1yZXR1cm4gZX0sci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2xldCBuPWZ1bmN0aW9uKGUpe3JldHVybiBlLlBvcD0iUE9QIixlLlB1c2g9IlBVU0giLGUuUmVwbGFjZT0iUkVQTEFDRSIsZX0oe30pO2NvbnN0IG89InBvcHN0YXRlIjtmdW5jdGlvbiBpKGUsdCl7aWYoITE9PT1lfHxudWxsPT1lKXRocm93IG5ldyBFcnJvcih0KX1mdW5jdGlvbiBhKGUsdCl7aWYoIWUpeyJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuKHQpO3RyeXt0aHJvdyBuZXcgRXJyb3IodCl9Y2F0Y2goZSl7fX19ZnVuY3Rpb24gcyhlLHQpe3JldHVybnt1c3I6ZS5zdGF0ZSxrZXk6ZS5rZXksaWR4OnR9fWZ1bmN0aW9uIGMoZSx0LG4sbyl7cmV0dXJuIHZvaWQgMD09PW4mJihuPW51bGwpLHIoe3BhdGhuYW1lOiJzdHJpbmciPT10eXBlb2YgZT9lOmUucGF0aG5hbWUsc2VhcmNoOiIiLGhhc2g6IiJ9LCJzdHJpbmciPT10eXBlb2YgdD9sKHQpOnQse3N0YXRlOm4sa2V5OnQmJnQua2V5fHxvfHxNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiw4KX0pfWZ1bmN0aW9uIHUoZSl7bGV0e3BhdGhuYW1lOnQ9Ii8iLHNlYXJjaDpyPSIiLGhhc2g6bj0iIn09ZTtyZXR1cm4gciYmIj8iIT09ciYmKHQrPSI/Ij09PXIuY2hhckF0KDApP3I6Ij8iK3IpLG4mJiIjIiE9PW4mJih0Kz0iIyI9PT1uLmNoYXJBdCgwKT9uOiIjIituKSx0fWZ1bmN0aW9uIGwoZSl7bGV0IHQ9e307aWYoZSl7bGV0IHI9ZS5pbmRleE9mKCIjIik7cj49MCYmKHQuaGFzaD1lLnN1YnN0cihyKSxlPWUuc3Vic3RyKDAscikpO2xldCBuPWUuaW5kZXhPZigiPyIpO24+PTAmJih0LnNlYXJjaD1lLnN1YnN0cihuKSxlPWUuc3Vic3RyKDAsbikpLGUmJih0LnBhdGhuYW1lPWUpfXJldHVybiB0fWZ1bmN0aW9uIGYoZSx0LGEsbCl7dm9pZCAwPT09bCYmKGw9e30pO2xldHt3aW5kb3c6Zj1kb2N1bWVudC5kZWZhdWx0Vmlldyx2NUNvbXBhdDpkPSExfT1sLHA9Zi5oaXN0b3J5LF89bi5Qb3AsaD1udWxsLG09eSgpO2Z1bmN0aW9uIHkoKXtyZXR1cm4ocC5zdGF0ZXx8e2lkeDpudWxsfSkuaWR4fWZ1bmN0aW9uIGcoKXtfPW4uUG9wO2xldCBlPXkoKSx0PW51bGw9PWU/bnVsbDplLW07bT1lLGgmJmgoe2FjdGlvbjpfLGxvY2F0aW9uOmIubG9jYXRpb24sZGVsdGE6dH0pfWZ1bmN0aW9uIHYoZSl7bGV0IHQ9Im51bGwiIT09Zi5sb2NhdGlvbi5vcmlnaW4/Zi5sb2NhdGlvbi5vcmlnaW46Zi5sb2NhdGlvbi5ocmVmLHI9InN0cmluZyI9PXR5cGVvZiBlP2U6dShlKTtyZXR1cm4gcj1yLnJlcGxhY2UoLyAkLywiJTIwIiksaSh0LCJObyB3aW5kb3cubG9jYXRpb24uKG9yaWdpbnxocmVmKSBhdmFpbGFibGUgdG8gY3JlYXRlIFVSTCBmb3IgaHJlZjogIityKSxuZXcgVVJMKHIsdCl9bnVsbD09bSYmKG09MCxwLnJlcGxhY2VTdGF0ZShyKHt9LHAuc3RhdGUse2lkeDptfSksIiIpKTtsZXQgYj17Z2V0IGFjdGlvbigpe3JldHVybiBffSxnZXQgbG9jYXRpb24oKXtyZXR1cm4gZShmLHApfSxsaXN0ZW4oZSl7aWYoaCl0aHJvdyBuZXcgRXJyb3IoIkEgaGlzdG9yeSBvbmx5IGFjY2VwdHMgb25lIGFjdGl2ZSBsaXN0ZW5lciIpO3JldHVybiBmLmFkZEV2ZW50TGlzdGVuZXIobyxnKSxoPWUsKCk9PntmLnJlbW92ZUV2ZW50TGlzdGVuZXIobyxnKSxoPW51bGx9fSxjcmVhdGVIcmVmKGUpe3JldHVybiB0KGYsZSl9LGNyZWF0ZVVSTDp2LGVuY29kZUxvY2F0aW9uKGUpe2xldCB0PXYoZSk7cmV0dXJue3BhdGhuYW1lOnQucGF0aG5hbWUsc2VhcmNoOnQuc2VhcmNoLGhhc2g6dC5oYXNofX0scHVzaDpmdW5jdGlvbihlLHQpe189bi5QdXNoO2xldCByPWMoYi5sb2NhdGlvbixlLHQpO2EmJmEocixlKSxtPXkoKSsxO2xldCBvPXMocixtKSxpPWIuY3JlYXRlSHJlZihyKTt0cnl7cC5wdXNoU3RhdGUobywiIixpKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiYiRGF0YUNsb25lRXJyb3IiPT09ZS5uYW1lKXRocm93IGU7Zi5sb2NhdGlvbi5hc3NpZ24oaSl9ZCYmaCYmaCh7YWN0aW9uOl8sbG9jYXRpb246Yi5sb2NhdGlvbixkZWx0YToxfSl9LHJlcGxhY2U6ZnVuY3Rpb24oZSx0KXtfPW4uUmVwbGFjZTtsZXQgcj1jKGIubG9jYXRpb24sZSx0KTthJiZhKHIsZSksbT15KCk7bGV0IG89cyhyLG0pLGk9Yi5jcmVhdGVIcmVmKHIpO3AucmVwbGFjZVN0YXRlKG8sIiIsaSksZCYmaCYmaCh7YWN0aW9uOl8sbG9jYXRpb246Yi5sb2NhdGlvbixkZWx0YTowfSl9LGdvKGUpe3JldHVybiBwLmdvKGUpfX07cmV0dXJuIGJ9bGV0IGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGF0YT0iZGF0YSIsZS5kZWZlcnJlZD0iZGVmZXJyZWQiLGUucmVkaXJlY3Q9InJlZGlyZWN0IixlLmVycm9yPSJlcnJvciIsZX0oe30pO2NvbnN0IHA9bmV3IFNldChbImxhenkiLCJjYXNlU2Vuc2l0aXZlIiwicGF0aCIsImlkIiwiaW5kZXgiLCJjaGlsZHJlbiJdKTtmdW5jdGlvbiBfKGUsdCxuLG8pe3JldHVybiB2b2lkIDA9PT1uJiYobj1bXSksdm9pZCAwPT09byYmKG89e30pLGUubWFwKCgoZSxhKT0+e2xldCBzPVsuLi5uLFN0cmluZyhhKV0sYz0ic3RyaW5nIj09dHlwZW9mIGUuaWQ/ZS5pZDpzLmpvaW4oIi0iKTtpZihpKCEwIT09ZS5pbmRleHx8IWUuY2hpbGRyZW4sIkNhbm5vdCBzcGVjaWZ5IGNoaWxkcmVuIG9uIGFuIGluZGV4IHJvdXRlIiksaSghb1tjXSwnRm91bmQgYSByb3V0ZSBpZCBjb2xsaXNpb24gb24gaWQgIicrYysiXCIuICBSb3V0ZSBpZCdzIG11c3QgYmUgZ2xvYmFsbHkgdW5pcXVlIHdpdGhpbiBEYXRhIFJvdXRlciB1c2FnZXMiKSxmdW5jdGlvbihlKXtyZXR1cm4hMD09PWUuaW5kZXh9KGUpKXtsZXQgbj1yKHt9LGUsdChlKSx7aWQ6Y30pO3JldHVybiBvW2NdPW4sbn17bGV0IG49cih7fSxlLHQoZSkse2lkOmMsY2hpbGRyZW46dm9pZCAwfSk7cmV0dXJuIG9bY109bixlLmNoaWxkcmVuJiYobi5jaGlsZHJlbj1fKGUuY2hpbGRyZW4sdCxzLG8pKSxufX0pKX1mdW5jdGlvbiBoKGUsdCxyKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9Ii8iKSxtKGUsdCxyLCExKX1mdW5jdGlvbiBtKGUsdCxyLG4pe2xldCBvPU0oKCJzdHJpbmciPT10eXBlb2YgdD9sKHQpOnQpLnBhdGhuYW1lfHwiLyIscik7aWYobnVsbD09bylyZXR1cm4gbnVsbDtsZXQgaT1nKGUpOyFmdW5jdGlvbihlKXtlLnNvcnQoKChlLHQpPT5lLnNjb3JlIT09dC5zY29yZT90LnNjb3JlLWUuc2NvcmU6ZnVuY3Rpb24oZSx0KXtsZXQgcj1lLmxlbmd0aD09PXQubGVuZ3RoJiZlLnNsaWNlKDAsLTEpLmV2ZXJ5KCgoZSxyKT0+ZT09PXRbcl0pKTtyZXR1cm4gcj9lW2UubGVuZ3RoLTFdLXRbdC5sZW5ndGgtMV06MH0oZS5yb3V0ZXNNZXRhLm1hcCgoZT0+ZS5jaGlsZHJlbkluZGV4KSksdC5yb3V0ZXNNZXRhLm1hcCgoZT0+ZS5jaGlsZHJlbkluZGV4KSkpKSl9KGkpO2xldCBhPW51bGw7Zm9yKGxldCBlPTA7bnVsbD09YSYmZTxpLmxlbmd0aDsrK2Upe2xldCB0PU8obyk7YT1SKGlbZV0sdCxuKX1yZXR1cm4gYX1mdW5jdGlvbiB5KGUsdCl7bGV0e3JvdXRlOnIscGF0aG5hbWU6bixwYXJhbXM6b309ZTtyZXR1cm57aWQ6ci5pZCxwYXRobmFtZTpuLHBhcmFtczpvLGRhdGE6dFtyLmlkXSxoYW5kbGU6ci5oYW5kbGV9fWZ1bmN0aW9uIGcoZSx0LHIsbil7dm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PXImJihyPVtdKSx2b2lkIDA9PT1uJiYobj0iIik7bGV0IG89KGUsbyxhKT0+e2xldCBzPXtyZWxhdGl2ZVBhdGg6dm9pZCAwPT09YT9lLnBhdGh8fCIiOmEsY2FzZVNlbnNpdGl2ZTohMD09PWUuY2FzZVNlbnNpdGl2ZSxjaGlsZHJlbkluZGV4Om8scm91dGU6ZX07cy5yZWxhdGl2ZVBhdGguc3RhcnRzV2l0aCgiLyIpJiYoaShzLnJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKG4pLCdBYnNvbHV0ZSByb3V0ZSBwYXRoICInK3MucmVsYXRpdmVQYXRoKyciIG5lc3RlZCB1bmRlciBwYXRoICInK24rJyIgaXMgbm90IHZhbGlkLiBBbiBhYnNvbHV0ZSBjaGlsZCByb3V0ZSBwYXRoIG11c3Qgc3RhcnQgd2l0aCB0aGUgY29tYmluZWQgcGF0aCBvZiBhbGwgaXRzIHBhcmVudCByb3V0ZXMuJykscy5yZWxhdGl2ZVBhdGg9cy5yZWxhdGl2ZVBhdGguc2xpY2Uobi5sZW5ndGgpKTtsZXQgYz1VKFtuLHMucmVsYXRpdmVQYXRoXSksdT1yLmNvbmNhdChzKTtlLmNoaWxkcmVuJiZlLmNoaWxkcmVuLmxlbmd0aD4wJiYoaSghMCE9PWUuaW5kZXgsJ0luZGV4IHJvdXRlcyBtdXN0IG5vdCBoYXZlIGNoaWxkIHJvdXRlcy4gUGxlYXNlIHJlbW92ZSBhbGwgY2hpbGQgcm91dGVzIGZyb20gcm91dGUgcGF0aCAiJytjKyciLicpLGcoZS5jaGlsZHJlbix0LHUsYykpLChudWxsIT1lLnBhdGh8fGUuaW5kZXgpJiZ0LnB1c2goe3BhdGg6YyxzY29yZTpUKGMsZS5pbmRleCkscm91dGVzTWV0YTp1fSl9O3JldHVybiBlLmZvckVhY2goKChlLHQpPT57dmFyIHI7aWYoIiIhPT1lLnBhdGgmJm51bGwhPShyPWUucGF0aCkmJnIuaW5jbHVkZXMoIj8iKSlmb3IobGV0IHIgb2YgdihlLnBhdGgpKW8oZSx0LHIpO2Vsc2UgbyhlLHQpfSkpLHR9ZnVuY3Rpb24gdihlKXtsZXQgdD1lLnNwbGl0KCIvIik7aWYoMD09PXQubGVuZ3RoKXJldHVybltdO2xldFtyLC4uLm5dPXQsbz1yLmVuZHNXaXRoKCI/IiksaT1yLnJlcGxhY2UoL1w/JC8sIiIpO2lmKDA9PT1uLmxlbmd0aClyZXR1cm4gbz9baSwiIl06W2ldO2xldCBhPXYobi5qb2luKCIvIikpLHM9W107cmV0dXJuIHMucHVzaCguLi5hLm1hcCgoZT0+IiI9PT1lP2k6W2ksZV0uam9pbigiLyIpKSkpLG8mJnMucHVzaCguLi5hKSxzLm1hcCgodD0+ZS5zdGFydHNXaXRoKCIvIikmJiIiPT09dD8iLyI6dCkpfWNvbnN0IGI9L146W1x3LV0rJC8sdz0zLFM9MixrPTEseD0xMCxFPS0yLEE9ZT0+IioiPT09ZTtmdW5jdGlvbiBUKGUsdCl7bGV0IHI9ZS5zcGxpdCgiLyIpLG49ci5sZW5ndGg7cmV0dXJuIHIuc29tZShBKSYmKG4rPUUpLHQmJihuKz1TKSxyLmZpbHRlcigoZT0+IUEoZSkpKS5yZWR1Y2UoKChlLHQpPT5lKyhiLnRlc3QodCk/dzoiIj09PXQ/azp4KSksbil9ZnVuY3Rpb24gUihlLHQscil7dm9pZCAwPT09ciYmKHI9ITEpO2xldHtyb3V0ZXNNZXRhOm59PWUsbz17fSxpPSIvIixhPVtdO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7KytlKXtsZXQgcz1uW2VdLGM9ZT09PW4ubGVuZ3RoLTEsdT0iLyI9PT1pP3Q6dC5zbGljZShpLmxlbmd0aCl8fCIvIixsPVAoe3BhdGg6cy5yZWxhdGl2ZVBhdGgsY2FzZVNlbnNpdGl2ZTpzLmNhc2VTZW5zaXRpdmUsZW5kOmN9LHUpLGY9cy5yb3V0ZTtpZighbCYmYyYmciYmIW5bbi5sZW5ndGgtMV0ucm91dGUuaW5kZXgmJihsPVAoe3BhdGg6cy5yZWxhdGl2ZVBhdGgsY2FzZVNlbnNpdGl2ZTpzLmNhc2VTZW5zaXRpdmUsZW5kOiExfSx1KSksIWwpcmV0dXJuIG51bGw7T2JqZWN0LmFzc2lnbihvLGwucGFyYW1zKSxhLnB1c2goe3BhcmFtczpvLHBhdGhuYW1lOlUoW2ksbC5wYXRobmFtZV0pLHBhdGhuYW1lQmFzZTp6KFUoW2ksbC5wYXRobmFtZUJhc2VdKSkscm91dGU6Zn0pLCIvIiE9PWwucGF0aG5hbWVCYXNlJiYoaT1VKFtpLGwucGF0aG5hbWVCYXNlXSkpfXJldHVybiBhfWZ1bmN0aW9uIFAoZSx0KXsic3RyaW5nIj09dHlwZW9mIGUmJihlPXtwYXRoOmUsY2FzZVNlbnNpdGl2ZTohMSxlbmQ6ITB9KTtsZXRbcixuXT1mdW5jdGlvbihlLHQscil7dm9pZCAwPT09dCYmKHQ9ITEpO3ZvaWQgMD09PXImJihyPSEwKTthKCIqIj09PWV8fCFlLmVuZHNXaXRoKCIqIil8fGUuZW5kc1dpdGgoIi8qIiksJ1JvdXRlIHBhdGggIicrZSsnIiB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSAiJytlLnJlcGxhY2UoL1wqJC8sIi8qIikrJyIgYmVjYXVzZSB0aGUgYCpgIGNoYXJhY3RlciBtdXN0IGFsd2F5cyBmb2xsb3cgYSBgL2AgaW4gdGhlIHBhdHRlcm4uIFRvIGdldCByaWQgb2YgdGhpcyB3YXJuaW5nLCBwbGVhc2UgY2hhbmdlIHRoZSByb3V0ZSBwYXRoIHRvICInK2UucmVwbGFjZSgvXCokLywiLyoiKSsnIi4nKTtsZXQgbj1bXSxvPSJeIitlLnJlcGxhY2UoL1wvKlwqPyQvLCIiKS5yZXBsYWNlKC9eXC8qLywiLyIpLnJlcGxhY2UoL1tcXC4qK14ke318KClbXF1dL2csIlxcJCYiKS5yZXBsYWNlKC9cLzooW1x3LV0rKShcPyk/L2csKChlLHQscik9PihuLnB1c2goe3BhcmFtTmFtZTp0LGlzT3B0aW9uYWw6bnVsbCE9cn0pLHI/Ii8/KFteXFwvXSspPyI6Ii8oW15cXC9dKykiKSkpO2UuZW5kc1dpdGgoIioiKT8obi5wdXNoKHtwYXJhbU5hbWU6IioifSksbys9IioiPT09ZXx8Ii8qIj09PWU/IiguKikkIjoiKD86XFwvKC4rKXxcXC8qKSQiKTpyP28rPSJcXC8qJCI6IiIhPT1lJiYiLyIhPT1lJiYobys9Iig/Oig/PVxcL3wkKSkiKTtsZXQgaT1uZXcgUmVnRXhwKG8sdD92b2lkIDA6ImkiKTtyZXR1cm5baSxuXX0oZS5wYXRoLGUuY2FzZVNlbnNpdGl2ZSxlLmVuZCksbz10Lm1hdGNoKHIpO2lmKCFvKXJldHVybiBudWxsO2xldCBpPW9bMF0scz1pLnJlcGxhY2UoLyguKVwvKyQvLCIkMSIpLGM9by5zbGljZSgxKTtyZXR1cm57cGFyYW1zOm4ucmVkdWNlKCgoZSx0LHIpPT57bGV0e3BhcmFtTmFtZTpuLGlzT3B0aW9uYWw6b309dDtpZigiKiI9PT1uKXtsZXQgZT1jW3JdfHwiIjtzPWkuc2xpY2UoMCxpLmxlbmd0aC1lLmxlbmd0aCkucmVwbGFjZSgvKC4pXC8rJC8sIiQxIil9Y29uc3QgYT1jW3JdO3JldHVybiBlW25dPW8mJiFhP3ZvaWQgMDooYXx8IiIpLnJlcGxhY2UoLyUyRi9nLCIvIiksZX0pLHt9KSxwYXRobmFtZTppLHBhdGhuYW1lQmFzZTpzLHBhdHRlcm46ZX19ZnVuY3Rpb24gTyhlKXt0cnl7cmV0dXJuIGUuc3BsaXQoIi8iKS5tYXAoKGU9PmRlY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC9cLy9nLCIlMkYiKSkpLmpvaW4oIi8iKX1jYXRjaCh0KXtyZXR1cm4gYSghMSwnVGhlIFVSTCBwYXRoICInK2UrJyIgY291bGQgbm90IGJlIGRlY29kZWQgYmVjYXVzZSBpdCBpcyBpcyBhIG1hbGZvcm1lZCBVUkwgc2VnbWVudC4gVGhpcyBpcyBwcm9iYWJseSBkdWUgdG8gYSBiYWQgcGVyY2VudCBlbmNvZGluZyAoJyt0KyIpLiIpLGV9fWZ1bmN0aW9uIE0oZSx0KXtpZigiLyI9PT10KXJldHVybiBlO2lmKCFlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCh0LnRvTG93ZXJDYXNlKCkpKXJldHVybiBudWxsO2xldCByPXQuZW5kc1dpdGgoIi8iKT90Lmxlbmd0aC0xOnQubGVuZ3RoLG49ZS5jaGFyQXQocik7cmV0dXJuIG4mJiIvIiE9PW4/bnVsbDplLnNsaWNlKHIpfHwiLyJ9ZnVuY3Rpb24gRihlLHQpe3ZvaWQgMD09PXQmJih0PSIvIik7bGV0e3BhdGhuYW1lOnIsc2VhcmNoOm49IiIsaGFzaDpvPSIifT0ic3RyaW5nIj09dHlwZW9mIGU/bChlKTplLGk9cj9yLnN0YXJ0c1dpdGgoIi8iKT9yOmZ1bmN0aW9uKGUsdCl7bGV0IHI9dC5yZXBsYWNlKC9cLyskLywiIikuc3BsaXQoIi8iKTtyZXR1cm4gZS5zcGxpdCgiLyIpLmZvckVhY2goKGU9PnsiLi4iPT09ZT9yLmxlbmd0aD4xJiZyLnBvcCgpOiIuIiE9PWUmJnIucHVzaChlKX0pKSxyLmxlbmd0aD4xP3Iuam9pbigiLyIpOiIvIn0ocix0KTp0O3JldHVybntwYXRobmFtZTppLHNlYXJjaDpCKG4pLGhhc2g6SChvKX19ZnVuY3Rpb24gSShlLHQscixuKXtyZXR1cm4iQ2Fubm90IGluY2x1ZGUgYSAnIitlKyInIGNoYXJhY3RlciBpbiBhIG1hbnVhbGx5IHNwZWNpZmllZCBgdG8uIit0KyJgIGZpZWxkIFsiK0pTT04uc3RyaW5naWZ5KG4pKyJdLiAgUGxlYXNlIHNlcGFyYXRlIGl0IG91dCB0byB0aGUgYHRvLiIrcisnYCBmaWVsZC4gQWx0ZXJuYXRpdmVseSB5b3UgbWF5IHByb3ZpZGUgdGhlIGZ1bGwgcGF0aCBhcyBhIHN0cmluZyBpbiA8TGluayB0bz0iLi4uIj4gYW5kIHRoZSByb3V0ZXIgd2lsbCBwYXJzZSBpdCBmb3IgeW91Lid9ZnVuY3Rpb24gaihlKXtyZXR1cm4gZS5maWx0ZXIoKChlLHQpPT4wPT09dHx8ZS5yb3V0ZS5wYXRoJiZlLnJvdXRlLnBhdGgubGVuZ3RoPjApKX1mdW5jdGlvbiBEKGUsdCl7bGV0IHI9aihlKTtyZXR1cm4gdD9yLm1hcCgoKHQscik9PnI9PT1lLmxlbmd0aC0xP3QucGF0aG5hbWU6dC5wYXRobmFtZUJhc2UpKTpyLm1hcCgoZT0+ZS5wYXRobmFtZUJhc2UpKX1mdW5jdGlvbiBMKGUsdCxuLG8pe2xldCBhO3ZvaWQgMD09PW8mJihvPSExKSwic3RyaW5nIj09dHlwZW9mIGU/YT1sKGUpOihhPXIoe30sZSksaSghYS5wYXRobmFtZXx8IWEucGF0aG5hbWUuaW5jbHVkZXMoIj8iKSxJKCI/IiwicGF0aG5hbWUiLCJzZWFyY2giLGEpKSxpKCFhLnBhdGhuYW1lfHwhYS5wYXRobmFtZS5pbmNsdWRlcygiIyIpLEkoIiMiLCJwYXRobmFtZSIsImhhc2giLGEpKSxpKCFhLnNlYXJjaHx8IWEuc2VhcmNoLmluY2x1ZGVzKCIjIiksSSgiIyIsInNlYXJjaCIsImhhc2giLGEpKSk7bGV0IHMsYz0iIj09PWV8fCIiPT09YS5wYXRobmFtZSx1PWM/Ii8iOmEucGF0aG5hbWU7aWYobnVsbD09dSlzPW47ZWxzZXtsZXQgZT10Lmxlbmd0aC0xO2lmKCFvJiZ1LnN0YXJ0c1dpdGgoIi4uIikpe2xldCB0PXUuc3BsaXQoIi8iKTtmb3IoOyIuLiI9PT10WzBdOyl0LnNoaWZ0KCksZS09MTthLnBhdGhuYW1lPXQuam9pbigiLyIpfXM9ZT49MD90W2VdOiIvIn1sZXQgZj1GKGEscyksZD11JiYiLyIhPT11JiZ1LmVuZHNXaXRoKCIvIikscD0oY3x8Ii4iPT09dSkmJm4uZW5kc1dpdGgoIi8iKTtyZXR1cm4gZi5wYXRobmFtZS5lbmRzV2l0aCgiLyIpfHwhZCYmIXB8fChmLnBhdGhuYW1lKz0iLyIpLGZ9Y29uc3QgVT1lPT5lLmpvaW4oIi8iKS5yZXBsYWNlKC9cL1wvKy9nLCIvIiksej1lPT5lLnJlcGxhY2UoL1wvKyQvLCIiKS5yZXBsYWNlKC9eXC8qLywiLyIpLEI9ZT0+ZSYmIj8iIT09ZT9lLnN0YXJ0c1dpdGgoIj8iKT9lOiI/IitlOiIiLEg9ZT0+ZSYmIiMiIT09ZT9lLnN0YXJ0c1dpdGgoIiMiKT9lOiIjIitlOiIiO2NsYXNzIEFib3J0ZWREZWZlcnJlZEVycm9yIGV4dGVuZHMgRXJyb3J7fWNsYXNzIERlZmVycmVkRGF0YXtjb25zdHJ1Y3RvcihlLHQpe2xldCByO3RoaXMucGVuZGluZ0tleXNTZXQ9bmV3IFNldCx0aGlzLnN1YnNjcmliZXJzPW5ldyBTZXQsdGhpcy5kZWZlcnJlZEtleXM9W10saShlJiYib2JqZWN0Ij09dHlwZW9mIGUmJiFBcnJheS5pc0FycmF5KGUpLCJkZWZlcigpIG9ubHkgYWNjZXB0cyBwbGFpbiBvYmplY3RzIiksdGhpcy5hYm9ydFByb21pc2U9bmV3IFByb21pc2UoKChlLHQpPT5yPXQpKSx0aGlzLmNvbnRyb2xsZXI9bmV3IEFib3J0Q29udHJvbGxlcjtsZXQgbj0oKT0+cihuZXcgQWJvcnRlZERlZmVycmVkRXJyb3IoIkRlZmVycmVkIGRhdGEgYWJvcnRlZCIpKTt0aGlzLnVubGlzdGVuQWJvcnRTaWduYWw9KCk9PnRoaXMuY29udHJvbGxlci5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLG4pLHRoaXMuY29udHJvbGxlci5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLG4pLHRoaXMuZGF0YT1PYmplY3QuZW50cmllcyhlKS5yZWR1Y2UoKChlLHQpPT57bGV0W3Isbl09dDtyZXR1cm4gT2JqZWN0LmFzc2lnbihlLHtbcl06dGhpcy50cmFja1Byb21pc2UocixuKX0pfSkse30pLHRoaXMuZG9uZSYmdGhpcy51bmxpc3RlbkFib3J0U2lnbmFsKCksdGhpcy5pbml0PXR9dHJhY2tQcm9taXNlKGUsdCl7aWYoISh0IGluc3RhbmNlb2YgUHJvbWlzZSkpcmV0dXJuIHQ7dGhpcy5kZWZlcnJlZEtleXMucHVzaChlKSx0aGlzLnBlbmRpbmdLZXlzU2V0LmFkZChlKTtsZXQgcj1Qcm9taXNlLnJhY2UoW3QsdGhpcy5hYm9ydFByb21pc2VdKS50aGVuKCh0PT50aGlzLm9uU2V0dGxlKHIsZSx2b2lkIDAsdCkpLCh0PT50aGlzLm9uU2V0dGxlKHIsZSx0KSkpO3JldHVybiByLmNhdGNoKCgoKT0+e30pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkociwiX3RyYWNrZWQiLHtnZXQ6KCk9PiEwfSkscn1vblNldHRsZShlLHQscixuKXtpZih0aGlzLmNvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQmJnIgaW5zdGFuY2VvZiBBYm9ydGVkRGVmZXJyZWRFcnJvcilyZXR1cm4gdGhpcy51bmxpc3RlbkFib3J0U2lnbmFsKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9lcnJvciIse2dldDooKT0+cn0pLFByb21pc2UucmVqZWN0KHIpO2lmKHRoaXMucGVuZGluZ0tleXNTZXQuZGVsZXRlKHQpLHRoaXMuZG9uZSYmdGhpcy51bmxpc3RlbkFib3J0U2lnbmFsKCksdm9pZCAwPT09ciYmdm9pZCAwPT09bil7bGV0IHI9bmV3IEVycm9yKCdEZWZlcnJlZCBkYXRhIGZvciBrZXkgIicrdCsnIiByZXNvbHZlZC9yZWplY3RlZCB3aXRoIGB1bmRlZmluZWRgLCB5b3UgbXVzdCByZXNvbHZlL3JlamVjdCB3aXRoIGEgdmFsdWUgb3IgYG51bGxgLicpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX2Vycm9yIix7Z2V0OigpPT5yfSksdGhpcy5lbWl0KCExLHQpLFByb21pc2UucmVqZWN0KHIpfXJldHVybiB2b2lkIDA9PT1uPyhPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX2Vycm9yIix7Z2V0OigpPT5yfSksdGhpcy5lbWl0KCExLHQpLFByb21pc2UucmVqZWN0KHIpKTooT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9kYXRhIix7Z2V0OigpPT5ufSksdGhpcy5lbWl0KCExLHQpLG4pfWVtaXQoZSx0KXt0aGlzLnN1YnNjcmliZXJzLmZvckVhY2goKHI9PnIoZSx0KSkpfXN1YnNjcmliZShlKXtyZXR1cm4gdGhpcy5zdWJzY3JpYmVycy5hZGQoZSksKCk9PnRoaXMuc3Vic2NyaWJlcnMuZGVsZXRlKGUpfWNhbmNlbCgpe3RoaXMuY29udHJvbGxlci5hYm9ydCgpLHRoaXMucGVuZGluZ0tleXNTZXQuZm9yRWFjaCgoKGUsdCk9PnRoaXMucGVuZGluZ0tleXNTZXQuZGVsZXRlKHQpKSksdGhpcy5lbWl0KCEwKX1hc3luYyByZXNvbHZlRGF0YShlKXtsZXQgdD0hMTtpZighdGhpcy5kb25lKXtsZXQgcj0oKT0+dGhpcy5jYW5jZWwoKTtlLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixyKSx0PWF3YWl0IG5ldyBQcm9taXNlKCh0PT57dGhpcy5zdWJzY3JpYmUoKG49PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixyKSwobnx8dGhpcy5kb25lKSYmdChuKX0pKX0pKX1yZXR1cm4gdH1nZXQgZG9uZSgpe3JldHVybiAwPT09dGhpcy5wZW5kaW5nS2V5c1NldC5zaXplfWdldCB1bndyYXBwZWREYXRhKCl7cmV0dXJuIGkobnVsbCE9PXRoaXMuZGF0YSYmdGhpcy5kb25lLCJDYW4gb25seSB1bndyYXAgZGF0YSBvbiBpbml0aWFsaXplZCBhbmQgc2V0dGxlZCBkZWZlcnJlZHMiKSxPYmplY3QuZW50cmllcyh0aGlzLmRhdGEpLnJlZHVjZSgoKGUsdCk9PntsZXRbcixuXT10O3JldHVybiBPYmplY3QuYXNzaWduKGUse1tyXTpXKG4pfSl9KSx7fSl9Z2V0IHBlbmRpbmdLZXlzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5wZW5kaW5nS2V5c1NldCl9fWZ1bmN0aW9uIFcoZSl7aWYoIWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZSYmITA9PT1lLl90cmFja2VkfShlKSlyZXR1cm4gZTtpZihlLl9lcnJvcil0aHJvdyBlLl9lcnJvcjtyZXR1cm4gZS5fZGF0YX1jb25zdCAkPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9MzAyKTtsZXQgbj10OyJudW1iZXIiPT10eXBlb2Ygbj9uPXtzdGF0dXM6bn06dm9pZCAwPT09bi5zdGF0dXMmJihuLnN0YXR1cz0zMDIpO2xldCBvPW5ldyBIZWFkZXJzKG4uaGVhZGVycyk7cmV0dXJuIG8uc2V0KCJMb2NhdGlvbiIsZSksbmV3IFJlc3BvbnNlKG51bGwscih7fSxuLHtoZWFkZXJzOm99KSl9O2NsYXNzIEVycm9yUmVzcG9uc2VJbXBse2NvbnN0cnVjdG9yKGUsdCxyLG4pe3ZvaWQgMD09PW4mJihuPSExKSx0aGlzLnN0YXR1cz1lLHRoaXMuc3RhdHVzVGV4dD10fHwiIix0aGlzLmludGVybmFsPW4sciBpbnN0YW5jZW9mIEVycm9yPyh0aGlzLmRhdGE9ci50b1N0cmluZygpLHRoaXMuZXJyb3I9cik6dGhpcy5kYXRhPXJ9fWZ1bmN0aW9uIHEoZSl7cmV0dXJuIG51bGwhPWUmJiJudW1iZXIiPT10eXBlb2YgZS5zdGF0dXMmJiJzdHJpbmciPT10eXBlb2YgZS5zdGF0dXNUZXh0JiYiYm9vbGVhbiI9PXR5cGVvZiBlLmludGVybmFsJiYiZGF0YSJpbiBlfWNvbnN0IEc9WyJwb3N0IiwicHV0IiwicGF0Y2giLCJkZWxldGUiXSxWPW5ldyBTZXQoRyksWT1bImdldCIsLi4uR10sSz1uZXcgU2V0KFkpLFg9bmV3IFNldChbMzAxLDMwMiwzMDMsMzA3LDMwOF0pLFo9bmV3IFNldChbMzA3LDMwOF0pLFE9e3N0YXRlOiJpZGxlIixsb2NhdGlvbjp2b2lkIDAsZm9ybU1ldGhvZDp2b2lkIDAsZm9ybUFjdGlvbjp2b2lkIDAsZm9ybUVuY1R5cGU6dm9pZCAwLGZvcm1EYXRhOnZvaWQgMCxqc29uOnZvaWQgMCx0ZXh0OnZvaWQgMH0sZWU9e3N0YXRlOiJpZGxlIixkYXRhOnZvaWQgMCxmb3JtTWV0aG9kOnZvaWQgMCxmb3JtQWN0aW9uOnZvaWQgMCxmb3JtRW5jVHlwZTp2b2lkIDAsZm9ybURhdGE6dm9pZCAwLGpzb246dm9pZCAwLHRleHQ6dm9pZCAwfSx0ZT17c3RhdGU6InVuYmxvY2tlZCIscHJvY2VlZDp2b2lkIDAscmVzZXQ6dm9pZCAwLGxvY2F0aW9uOnZvaWQgMH0scmU9L14oPzpbYS16XVthLXowLTkrLi1dKjp8XC9cLykvaSxuZT1lPT4oe2hhc0Vycm9yQm91bmRhcnk6Qm9vbGVhbihlLmhhc0Vycm9yQm91bmRhcnkpfSksb2U9InJlbWl4LXJvdXRlci10cmFuc2l0aW9ucyI7Y29uc3QgaWU9U3ltYm9sKCJkZWZlcnJlZCIpO2Z1bmN0aW9uIGFlKGUsdCxyKXtpZihyLnY3X3Rocm93QWJvcnRSZWFzb24mJnZvaWQgMCE9PWUuc2lnbmFsLnJlYXNvbil0aHJvdyBlLnNpZ25hbC5yZWFzb247dGhyb3cgbmV3IEVycm9yKCh0PyJxdWVyeVJvdXRlIjoicXVlcnkiKSsiKCkgY2FsbCBhYm9ydGVkOiAiK2UubWV0aG9kKyIgIitlLnVybCl9ZnVuY3Rpb24gc2UoZSx0LHIsbixvLGksYSxzKXtsZXQgYyxsO2lmKGEpe2M9W107Zm9yKGxldCBlIG9mIHQpaWYoYy5wdXNoKGUpLGUucm91dGUuaWQ9PT1hKXtsPWU7YnJlYWt9fWVsc2UgYz10LGw9dFt0Lmxlbmd0aC0xXTtsZXQgZj1MKG98fCIuIixEKGMsaSksTShlLnBhdGhuYW1lLHIpfHxlLnBhdGhuYW1lLCJwYXRoIj09PXMpO3JldHVybiBudWxsPT1vJiYoZi5zZWFyY2g9ZS5zZWFyY2gsZi5oYXNoPWUuaGFzaCksbnVsbCE9byYmIiIhPT1vJiYiLiIhPT1vfHwhbHx8IWwucm91dGUuaW5kZXh8fFdlKGYuc2VhcmNoKXx8KGYuc2VhcmNoPWYuc2VhcmNoP2Yuc2VhcmNoLnJlcGxhY2UoL15cPy8sIj9pbmRleCYiKToiP2luZGV4IiksbiYmIi8iIT09ciYmKGYucGF0aG5hbWU9Ii8iPT09Zi5wYXRobmFtZT9yOlUoW3IsZi5wYXRobmFtZV0pKSx1KGYpfWZ1bmN0aW9uIGNlKGUsdCxyLG4pe2lmKCFufHwhZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJigiZm9ybURhdGEiaW4gZSYmbnVsbCE9ZS5mb3JtRGF0YXx8ImJvZHkiaW4gZSYmdm9pZCAwIT09ZS5ib2R5KX0obikpcmV0dXJue3BhdGg6cn07aWYobi5mb3JtTWV0aG9kJiYhVWUobi5mb3JtTWV0aG9kKSlyZXR1cm57cGF0aDpyLGVycm9yOlBlKDQwNSx7bWV0aG9kOm4uZm9ybU1ldGhvZH0pfTtsZXQgbyxhLHM9KCk9Pih7cGF0aDpyLGVycm9yOlBlKDQwMCx7dHlwZToiaW52YWxpZC1ib2R5In0pfSksYz1uLmZvcm1NZXRob2R8fCJnZXQiLGY9ZT9jLnRvVXBwZXJDYXNlKCk6Yy50b0xvd2VyQ2FzZSgpLGQ9TmUocik7aWYodm9pZCAwIT09bi5ib2R5KXtpZigidGV4dC9wbGFpbiI9PT1uLmZvcm1FbmNUeXBlKXtpZighemUoZikpcmV0dXJuIHMoKTtsZXQgZT0ic3RyaW5nIj09dHlwZW9mIG4uYm9keT9uLmJvZHk6bi5ib2R5IGluc3RhbmNlb2YgRm9ybURhdGF8fG4uYm9keSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcz9BcnJheS5mcm9tKG4uYm9keS5lbnRyaWVzKCkpLnJlZHVjZSgoKGUsdCk9PntsZXRbcixuXT10O3JldHVybiIiK2UrcisiPSIrbisiXG4ifSksIiIpOlN0cmluZyhuLmJvZHkpO3JldHVybntwYXRoOnIsc3VibWlzc2lvbjp7Zm9ybU1ldGhvZDpmLGZvcm1BY3Rpb246ZCxmb3JtRW5jVHlwZTpuLmZvcm1FbmNUeXBlLGZvcm1EYXRhOnZvaWQgMCxqc29uOnZvaWQgMCx0ZXh0OmV9fX1pZigiYXBwbGljYXRpb24vanNvbiI9PT1uLmZvcm1FbmNUeXBlKXtpZighemUoZikpcmV0dXJuIHMoKTt0cnl7bGV0IGU9InN0cmluZyI9PXR5cGVvZiBuLmJvZHk/SlNPTi5wYXJzZShuLmJvZHkpOm4uYm9keTtyZXR1cm57cGF0aDpyLHN1Ym1pc3Npb246e2Zvcm1NZXRob2Q6Zixmb3JtQWN0aW9uOmQsZm9ybUVuY1R5cGU6bi5mb3JtRW5jVHlwZSxmb3JtRGF0YTp2b2lkIDAsanNvbjplLHRleHQ6dm9pZCAwfX19Y2F0Y2goZSl7cmV0dXJuIHMoKX19fWlmKGkoImZ1bmN0aW9uIj09dHlwZW9mIEZvcm1EYXRhLCJGb3JtRGF0YSBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQiKSxuLmZvcm1EYXRhKW89U2Uobi5mb3JtRGF0YSksYT1uLmZvcm1EYXRhO2Vsc2UgaWYobi5ib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpbz1TZShuLmJvZHkpLGE9bi5ib2R5O2Vsc2UgaWYobi5ib2R5IGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zKW89bi5ib2R5LGE9a2Uobyk7ZWxzZSBpZihudWxsPT1uLmJvZHkpbz1uZXcgVVJMU2VhcmNoUGFyYW1zLGE9bmV3IEZvcm1EYXRhO2Vsc2UgdHJ5e289bmV3IFVSTFNlYXJjaFBhcmFtcyhuLmJvZHkpLGE9a2Uobyl9Y2F0Y2goZSl7cmV0dXJuIHMoKX1sZXQgcD17Zm9ybU1ldGhvZDpmLGZvcm1BY3Rpb246ZCxmb3JtRW5jVHlwZTpuJiZuLmZvcm1FbmNUeXBlfHwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixmb3JtRGF0YTphLGpzb246dm9pZCAwLHRleHQ6dm9pZCAwfTtpZih6ZShwLmZvcm1NZXRob2QpKXJldHVybntwYXRoOnIsc3VibWlzc2lvbjpwfTtsZXQgXz1sKHIpO3JldHVybiB0JiZfLnNlYXJjaCYmV2UoXy5zZWFyY2gpJiZvLmFwcGVuZCgiaW5kZXgiLCIiKSxfLnNlYXJjaD0iPyIrbyx7cGF0aDp1KF8pLHN1Ym1pc3Npb246cH19ZnVuY3Rpb24gdWUoZSx0KXtsZXQgcj1lO2lmKHQpe2xldCBuPWUuZmluZEluZGV4KChlPT5lLnJvdXRlLmlkPT09dCkpO24+PTAmJihyPWUuc2xpY2UoMCxuKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gbGUoZSx0LG4sbyxpLGEscyxjLHUsbCxmLGQscCxfLG0seSl7bGV0IGc9eT9JZSh5WzFdKT95WzFdLmVycm9yOnlbMV0uZGF0YTp2b2lkIDAsdj1lLmNyZWF0ZVVSTCh0LmxvY2F0aW9uKSxiPWUuY3JlYXRlVVJMKGkpLHc9eSYmSWUoeVsxXSk/eVswXTp2b2lkIDAsUz13P3VlKG4sdyk6bixrPXk/eVsxXS5zdGF0dXNDb2RlOnZvaWQgMCx4PXMmJmsmJms+PTQwMCxFPVMuZmlsdGVyKCgoZSxuKT0+e2xldHtyb3V0ZTppfT1lO2lmKGkubGF6eSlyZXR1cm4hMDtpZihudWxsPT1pLmxvYWRlcilyZXR1cm4hMTtpZihhKXJldHVybiEoImZ1bmN0aW9uIj09dHlwZW9mIGkubG9hZGVyJiYhaS5sb2FkZXIuaHlkcmF0ZSl8fHZvaWQgMD09PXQubG9hZGVyRGF0YVtpLmlkXSYmKCF0LmVycm9yc3x8dm9pZCAwPT09dC5lcnJvcnNbaS5pZF0pO2lmKGZ1bmN0aW9uKGUsdCxyKXtsZXQgbj0hdHx8ci5yb3V0ZS5pZCE9PXQucm91dGUuaWQsbz12b2lkIDA9PT1lW3Iucm91dGUuaWRdO3JldHVybiBufHxvfSh0LmxvYWRlckRhdGEsdC5tYXRjaGVzW25dLGUpfHx1LnNvbWUoKHQ9PnQ9PT1lLnJvdXRlLmlkKSkpcmV0dXJuITA7bGV0IHM9dC5tYXRjaGVzW25dLGw9ZTtyZXR1cm4gZGUoZSxyKHtjdXJyZW50VXJsOnYsY3VycmVudFBhcmFtczpzLnBhcmFtcyxuZXh0VXJsOmIsbmV4dFBhcmFtczpsLnBhcmFtc30sbyx7YWN0aW9uUmVzdWx0OmcsdW5zdGFibGVfYWN0aW9uU3RhdHVzOmssZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6IXgmJihjfHx2LnBhdGhuYW1lK3Yuc2VhcmNoPT09Yi5wYXRobmFtZStiLnNlYXJjaHx8di5zZWFyY2ghPT1iLnNlYXJjaHx8ZmUocyxsKSl9KSl9KSksQT1bXTtyZXR1cm4gZC5mb3JFYWNoKCgoZSxpKT0+e2lmKGF8fCFuLnNvbWUoKHQ9PnQucm91dGUuaWQ9PT1lLnJvdXRlSWQpKXx8Zi5oYXMoaSkpcmV0dXJuO2xldCBzPWgoXyxlLnBhdGgsbSk7aWYoIXMpcmV0dXJuIHZvaWQgQS5wdXNoKHtrZXk6aSxyb3V0ZUlkOmUucm91dGVJZCxwYXRoOmUucGF0aCxtYXRjaGVzOm51bGwsbWF0Y2g6bnVsbCxjb250cm9sbGVyOm51bGx9KTtsZXQgdT10LmZldGNoZXJzLmdldChpKSxkPSRlKHMsZS5wYXRoKSx5PSExO3k9IXAuaGFzKGkpJiYoISFsLmluY2x1ZGVzKGkpfHwodSYmImlkbGUiIT09dS5zdGF0ZSYmdm9pZCAwPT09dS5kYXRhP2M6ZGUoZCxyKHtjdXJyZW50VXJsOnYsY3VycmVudFBhcmFtczp0Lm1hdGNoZXNbdC5tYXRjaGVzLmxlbmd0aC0xXS5wYXJhbXMsbmV4dFVybDpiLG5leHRQYXJhbXM6bltuLmxlbmd0aC0xXS5wYXJhbXN9LG8se2FjdGlvblJlc3VsdDpnLHVuc3RhYmxlX2FjdGlvblN0YXR1czprLGRlZmF1bHRTaG91bGRSZXZhbGlkYXRlOiF4JiZjfSkpKSkseSYmQS5wdXNoKHtrZXk6aSxyb3V0ZUlkOmUucm91dGVJZCxwYXRoOmUucGF0aCxtYXRjaGVzOnMsbWF0Y2g6ZCxjb250cm9sbGVyOm5ldyBBYm9ydENvbnRyb2xsZXJ9KX0pKSxbRSxBXX1mdW5jdGlvbiBmZShlLHQpe2xldCByPWUucm91dGUucGF0aDtyZXR1cm4gZS5wYXRobmFtZSE9PXQucGF0aG5hbWV8fG51bGwhPXImJnIuZW5kc1dpdGgoIioiKSYmZS5wYXJhbXNbIioiXSE9PXQucGFyYW1zWyIqIl19ZnVuY3Rpb24gZGUoZSx0KXtpZihlLnJvdXRlLnNob3VsZFJldmFsaWRhdGUpe2xldCByPWUucm91dGUuc2hvdWxkUmV2YWxpZGF0ZSh0KTtpZigiYm9vbGVhbiI9PXR5cGVvZiByKXJldHVybiByfXJldHVybiB0LmRlZmF1bHRTaG91bGRSZXZhbGlkYXRlfWFzeW5jIGZ1bmN0aW9uIHBlKGUsdCxyLG4sbyxpLGEscyl7bGV0IGM9W3QsLi4uci5tYXAoKGU9PmUucm91dGUuaWQpKV0uam9pbigiLSIpO3RyeXtsZXQgbD1hLmdldChjKTtsfHwobD1lKHtwYXRoOnQsbWF0Y2hlczpyLHBhdGNoOihlLHQpPT57cy5hYm9ydGVkfHxfZShlLHQsbixvLGkpfX0pLGEuc2V0KGMsbCkpLGwmJigib2JqZWN0Ij09dHlwZW9mKHU9bCkmJm51bGwhPXUmJiJ0aGVuImluIHUpJiZhd2FpdCBsfWZpbmFsbHl7YS5kZWxldGUoYyl9dmFyIHV9ZnVuY3Rpb24gX2UoZSx0LHIsbixvKXtpZihlKXt2YXIgYTtsZXQgcj1uW2VdO2kociwiTm8gcm91dGUgZm91bmQgdG8gcGF0Y2ggY2hpbGRyZW4gaW50bzogcm91dGVJZCA9ICIrZSk7bGV0IHM9Xyh0LG8sW2UsInBhdGNoIixTdHJpbmcoKG51bGw9PShhPXIuY2hpbGRyZW4pP3ZvaWQgMDphLmxlbmd0aCl8fCIwIildLG4pO3IuY2hpbGRyZW4/ci5jaGlsZHJlbi5wdXNoKC4uLnMpOnIuY2hpbGRyZW49c31lbHNle2xldCBlPV8odCxvLFsicGF0Y2giLFN0cmluZyhyLmxlbmd0aHx8IjAiKV0sbik7ci5wdXNoKC4uLmUpfX1hc3luYyBmdW5jdGlvbiBoZShlLHQsbil7aWYoIWUubGF6eSlyZXR1cm47bGV0IG89YXdhaXQgZS5sYXp5KCk7aWYoIWUubGF6eSlyZXR1cm47bGV0IHM9bltlLmlkXTtpKHMsIk5vIHJvdXRlIGZvdW5kIGluIG1hbmlmZXN0Iik7bGV0IGM9e307Zm9yKGxldCBlIGluIG8pe2xldCB0PXZvaWQgMCE9PXNbZV0mJiJoYXNFcnJvckJvdW5kYXJ5IiE9PWU7YSghdCwnUm91dGUgIicrcy5pZCsnIiBoYXMgYSBzdGF0aWMgcHJvcGVydHkgIicrZSsnIiBkZWZpbmVkIGJ1dCBpdHMgbGF6eSBmdW5jdGlvbiBpcyBhbHNvIHJldHVybmluZyBhIHZhbHVlIGZvciB0aGlzIHByb3BlcnR5LiBUaGUgbGF6eSByb3V0ZSBwcm9wZXJ0eSAiJytlKyciIHdpbGwgYmUgaWdub3JlZC4nKSx0fHxwLmhhcyhlKXx8KGNbZV09b1tlXSl9T2JqZWN0LmFzc2lnbihzLGMpLE9iamVjdC5hc3NpZ24ocyxyKHt9LHQocykse2xhenk6dm9pZCAwfSkpfWZ1bmN0aW9uIG1lKGUpe3JldHVybiBQcm9taXNlLmFsbChlLm1hdGNoZXMubWFwKChlPT5lLnJlc29sdmUoKSkpKX1hc3luYyBmdW5jdGlvbiB5ZShlLHQsbixvLGEscyxjLHUpe2xldCBsPW8ucmVkdWNlKCgoZSx0KT0+ZS5hZGQodC5yb3V0ZS5pZCkpLG5ldyBTZXQpLGY9bmV3IFNldCxwPWF3YWl0IGUoe21hdGNoZXM6YS5tYXAoKGU9PntsZXQgbz1sLmhhcyhlLnJvdXRlLmlkKTtyZXR1cm4gcih7fSxlLHtzaG91bGRMb2FkOm8scmVzb2x2ZTpyPT4oZi5hZGQoZS5yb3V0ZS5pZCksbz9hc3luYyBmdW5jdGlvbihlLHQscixuLG8sYSxzKXtsZXQgYyx1LGw9bj0+e2xldCBvLGk9bmV3IFByb21pc2UoKChlLHQpPT5vPXQpKTt1PSgpPT5vKCksdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHUpO2xldCBjLGw9bz0+ImZ1bmN0aW9uIiE9dHlwZW9mIG4/UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdZb3UgY2Fubm90IGNhbGwgdGhlIGhhbmRsZXIgZm9yIGEgcm91dGUgd2hpY2ggZGVmaW5lcyBhIGJvb2xlYW4gIicrZSsnIiBbcm91dGVJZDogJytyLnJvdXRlLmlkKyJdIikpOm4oe3JlcXVlc3Q6dCxwYXJhbXM6ci5wYXJhbXMsY29udGV4dDpzfSwuLi52b2lkIDAhPT1vP1tvXTpbXSk7cmV0dXJuIGM9YT9hKChlPT5sKGUpKSk6KGFzeW5jKCk9Pnt0cnl7cmV0dXJue3R5cGU6ImRhdGEiLHJlc3VsdDphd2FpdCBsKCl9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJlcnJvciIscmVzdWx0OmV9fX0pKCksUHJvbWlzZS5yYWNlKFtjLGldKX07dHJ5e2xldCBhPXIucm91dGVbZV07aWYoci5yb3V0ZS5sYXp5KWlmKGEpe2xldCBlLFt0XT1hd2FpdCBQcm9taXNlLmFsbChbbChhKS5jYXRjaCgodD0+e2U9dH0pKSxoZShyLnJvdXRlLG8sbildKTtpZih2b2lkIDAhPT1lKXRocm93IGU7Yz10fWVsc2V7aWYoYXdhaXQgaGUoci5yb3V0ZSxvLG4pLGE9ci5yb3V0ZVtlXSwhYSl7aWYoImFjdGlvbiI9PT1lKXtsZXQgZT1uZXcgVVJMKHQudXJsKSxuPWUucGF0aG5hbWUrZS5zZWFyY2g7dGhyb3cgUGUoNDA1LHttZXRob2Q6dC5tZXRob2QscGF0aG5hbWU6bixyb3V0ZUlkOnIucm91dGUuaWR9KX1yZXR1cm57dHlwZTpkLmRhdGEscmVzdWx0OnZvaWQgMH19Yz1hd2FpdCBsKGEpfWVsc2V7aWYoIWEpe2xldCBlPW5ldyBVUkwodC51cmwpO3Rocm93IFBlKDQwNCx7cGF0aG5hbWU6ZS5wYXRobmFtZStlLnNlYXJjaH0pfWM9YXdhaXQgbChhKX1pKHZvaWQgMCE9PWMucmVzdWx0LCJZb3UgZGVmaW5lZCAiKygiYWN0aW9uIj09PWU/ImFuIGFjdGlvbiI6ImEgbG9hZGVyIikrJyBmb3Igcm91dGUgIicrci5yb3V0ZS5pZCsiXCIgYnV0IGRpZG4ndCByZXR1cm4gYW55dGhpbmcgZnJvbSB5b3VyIGAiK2UrImAgZnVuY3Rpb24uIFBsZWFzZSByZXR1cm4gYSB2YWx1ZSBvciBgbnVsbGAuIil9Y2F0Y2goZSl7cmV0dXJue3R5cGU6ZC5lcnJvcixyZXN1bHQ6ZX19ZmluYWxseXt1JiZ0LnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsdSl9cmV0dXJuIGN9KHQsbixlLHMsYyxyLHUpOlByb21pc2UucmVzb2x2ZSh7dHlwZTpkLmRhdGEscmVzdWx0OnZvaWQgMH0pKX0pfSkpLHJlcXVlc3Q6bixwYXJhbXM6YVswXS5wYXJhbXMsY29udGV4dDp1fSk7cmV0dXJuIGEuZm9yRWFjaCgoZT0+aShmLmhhcyhlLnJvdXRlLmlkKSwnYG1hdGNoLnJlc29sdmUoKWAgd2FzIG5vdCBjYWxsZWQgZm9yIHJvdXRlIGlkICInK2Uucm91dGUuaWQrJyIuIFlvdSBtdXN0IGNhbGwgYG1hdGNoLnJlc29sdmUoKWAgb24gZXZlcnkgbWF0Y2ggcGFzc2VkIHRvIGBkYXRhU3RyYXRlZ3lgIHRvIGVuc3VyZSBhbGwgcm91dGVzIGFyZSBwcm9wZXJseSBsb2FkZWQuJykpKSxwLmZpbHRlcigoKGUsdCk9PmwuaGFzKGFbdF0ucm91dGUuaWQpKSl9YXN5bmMgZnVuY3Rpb24gZ2UoZSl7bGV0e3Jlc3VsdDp0LHR5cGU6cixzdGF0dXM6bn09ZTtpZihMZSh0KSl7bGV0IGU7dHJ5e2xldCByPXQuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpO2U9ciYmL1xiYXBwbGljYXRpb25cL2pzb25cYi8udGVzdChyKT9udWxsPT10LmJvZHk/bnVsbDphd2FpdCB0Lmpzb24oKTphd2FpdCB0LnRleHQoKX1jYXRjaChlKXtyZXR1cm57dHlwZTpkLmVycm9yLGVycm9yOmV9fXJldHVybiByPT09ZC5lcnJvcj97dHlwZTpkLmVycm9yLGVycm9yOm5ldyBFcnJvclJlc3BvbnNlSW1wbCh0LnN0YXR1cyx0LnN0YXR1c1RleHQsZSksc3RhdHVzQ29kZTp0LnN0YXR1cyxoZWFkZXJzOnQuaGVhZGVyc306e3R5cGU6ZC5kYXRhLGRhdGE6ZSxzdGF0dXNDb2RlOnQuc3RhdHVzLGhlYWRlcnM6dC5oZWFkZXJzfX1yZXR1cm4gcj09PWQuZXJyb3I/e3R5cGU6ZC5lcnJvcixlcnJvcjp0LHN0YXR1c0NvZGU6cSh0KT90LnN0YXR1czpufTpEZSh0KT97dHlwZTpkLmRlZmVycmVkLGRlZmVycmVkRGF0YTp0LHN0YXR1c0NvZGU6bnVsbD09KG89dC5pbml0KT92b2lkIDA6by5zdGF0dXMsaGVhZGVyczoobnVsbD09KGk9dC5pbml0KT92b2lkIDA6aS5oZWFkZXJzKSYmbmV3IEhlYWRlcnModC5pbml0LmhlYWRlcnMpfTp7dHlwZTpkLmRhdGEsZGF0YTp0LHN0YXR1c0NvZGU6bn07dmFyIG8saX1mdW5jdGlvbiB2ZShlLHQscixuLG8sYSl7bGV0IHM9ZS5oZWFkZXJzLmdldCgiTG9jYXRpb24iKTtpZihpKHMsIlJlZGlyZWN0cyByZXR1cm5lZC90aHJvd24gZnJvbSBsb2FkZXJzL2FjdGlvbnMgbXVzdCBoYXZlIGEgTG9jYXRpb24gaGVhZGVyIiksIXJlLnRlc3Qocykpe2xldCBpPW4uc2xpY2UoMCxuLmZpbmRJbmRleCgoZT0+ZS5yb3V0ZS5pZD09PXIpKSsxKTtzPXNlKG5ldyBVUkwodC51cmwpLGksbywhMCxzLGEpLGUuaGVhZGVycy5zZXQoIkxvY2F0aW9uIixzKX1yZXR1cm4gZX1mdW5jdGlvbiBiZShlLHQscil7aWYocmUudGVzdChlKSl7bGV0IG49ZSxvPW4uc3RhcnRzV2l0aCgiLy8iKT9uZXcgVVJMKHQucHJvdG9jb2wrbik6bmV3IFVSTChuKSxpPW51bGwhPU0oby5wYXRobmFtZSxyKTtpZihvLm9yaWdpbj09PXQub3JpZ2luJiZpKXJldHVybiBvLnBhdGhuYW1lK28uc2VhcmNoK28uaGFzaH1yZXR1cm4gZX1mdW5jdGlvbiB3ZShlLHQscixuKXtsZXQgbz1lLmNyZWF0ZVVSTChOZSh0KSkudG9TdHJpbmcoKSxpPXtzaWduYWw6cn07aWYobiYmemUobi5mb3JtTWV0aG9kKSl7bGV0e2Zvcm1NZXRob2Q6ZSxmb3JtRW5jVHlwZTp0fT1uO2kubWV0aG9kPWUudG9VcHBlckNhc2UoKSwiYXBwbGljYXRpb24vanNvbiI9PT10PyhpLmhlYWRlcnM9bmV3IEhlYWRlcnMoeyJDb250ZW50LVR5cGUiOnR9KSxpLmJvZHk9SlNPTi5zdHJpbmdpZnkobi5qc29uKSk6InRleHQvcGxhaW4iPT09dD9pLmJvZHk9bi50ZXh0OiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiPT09dCYmbi5mb3JtRGF0YT9pLmJvZHk9U2Uobi5mb3JtRGF0YSk6aS5ib2R5PW4uZm9ybURhdGF9cmV0dXJuIG5ldyBSZXF1ZXN0KG8saSl9ZnVuY3Rpb24gU2UoZSl7bGV0IHQ9bmV3IFVSTFNlYXJjaFBhcmFtcztmb3IobGV0W3Isbl1vZiBlLmVudHJpZXMoKSl0LmFwcGVuZChyLCJzdHJpbmciPT10eXBlb2Ygbj9uOm4ubmFtZSk7cmV0dXJuIHR9ZnVuY3Rpb24ga2UoZSl7bGV0IHQ9bmV3IEZvcm1EYXRhO2ZvcihsZXRbcixuXW9mIGUuZW50cmllcygpKXQuYXBwZW5kKHIsbik7cmV0dXJuIHR9ZnVuY3Rpb24geGUoZSx0LHIsbixvLGEpe2xldCBzLGM9e30sdT1udWxsLGw9ITEsZj17fSxkPW4mJkllKG5bMV0pP25bMV0uZXJyb3I6dm9pZCAwO3JldHVybiByLmZvckVhY2goKChyLG4pPT57bGV0IHA9dFtuXS5yb3V0ZS5pZDtpZihpKCFqZShyKSwiQ2Fubm90IGhhbmRsZSByZWRpcmVjdCByZXN1bHRzIGluIHByb2Nlc3NMb2FkZXJEYXRhIiksSWUocikpe2xldCB0PXIuZXJyb3I7aWYodm9pZCAwIT09ZCYmKHQ9ZCxkPXZvaWQgMCksdT11fHx7fSxhKXVbcF09dDtlbHNle2xldCByPVRlKGUscCk7bnVsbD09dVtyLnJvdXRlLmlkXSYmKHVbci5yb3V0ZS5pZF09dCl9Y1twXT12b2lkIDAsbHx8KGw9ITAscz1xKHIuZXJyb3IpP3IuZXJyb3Iuc3RhdHVzOjUwMCksci5oZWFkZXJzJiYoZltwXT1yLmhlYWRlcnMpfWVsc2UgRmUocik/KG8uc2V0KHAsci5kZWZlcnJlZERhdGEpLGNbcF09ci5kZWZlcnJlZERhdGEuZGF0YSxudWxsPT1yLnN0YXR1c0NvZGV8fDIwMD09PXIuc3RhdHVzQ29kZXx8bHx8KHM9ci5zdGF0dXNDb2RlKSxyLmhlYWRlcnMmJihmW3BdPXIuaGVhZGVycykpOihjW3BdPXIuZGF0YSxyLnN0YXR1c0NvZGUmJjIwMCE9PXIuc3RhdHVzQ29kZSYmIWwmJihzPXIuc3RhdHVzQ29kZSksci5oZWFkZXJzJiYoZltwXT1yLmhlYWRlcnMpKX0pKSx2b2lkIDAhPT1kJiZuJiYodT17W25bMF1dOmR9LGNbblswXV09dm9pZCAwKSx7bG9hZGVyRGF0YTpjLGVycm9yczp1LHN0YXR1c0NvZGU6c3x8MjAwLGxvYWRlckhlYWRlcnM6Zn19ZnVuY3Rpb24gRWUoZSx0LG4sbyxhLHMsYyx1KXtsZXR7bG9hZGVyRGF0YTpsLGVycm9yczpmfT14ZSh0LG4sbyxhLHUsITEpO2ZvcihsZXQgdD0wO3Q8cy5sZW5ndGg7dCsrKXtsZXR7a2V5Om4sbWF0Y2g6byxjb250cm9sbGVyOmF9PXNbdF07aSh2b2lkIDAhPT1jJiZ2b2lkIDAhPT1jW3RdLCJEaWQgbm90IGZpbmQgY29ycmVzcG9uZGluZyBmZXRjaGVyIHJlc3VsdCIpO2xldCB1PWNbdF07aWYoIWF8fCFhLnNpZ25hbC5hYm9ydGVkKWlmKEllKHUpKXtsZXQgdD1UZShlLm1hdGNoZXMsbnVsbD09bz92b2lkIDA6by5yb3V0ZS5pZCk7ZiYmZlt0LnJvdXRlLmlkXXx8KGY9cih7fSxmLHtbdC5yb3V0ZS5pZF06dS5lcnJvcn0pKSxlLmZldGNoZXJzLmRlbGV0ZShuKX1lbHNlIGlmKGplKHUpKWkoITEsIlVuaGFuZGxlZCBmZXRjaGVyIHJldmFsaWRhdGlvbiByZWRpcmVjdCIpO2Vsc2UgaWYoRmUodSkpaSghMSwiVW5oYW5kbGVkIGZldGNoZXIgZGVmZXJyZWQgZGF0YSIpO2Vsc2V7bGV0IHQ9WWUodS5kYXRhKTtlLmZldGNoZXJzLnNldChuLHQpfX1yZXR1cm57bG9hZGVyRGF0YTpsLGVycm9yczpmfX1mdW5jdGlvbiBDZShlLHQsbixvKXtsZXQgaT1yKHt9LHQpO2ZvcihsZXQgciBvZiBuKXtsZXQgbj1yLnJvdXRlLmlkO2lmKHQuaGFzT3duUHJvcGVydHkobik/dm9pZCAwIT09dFtuXSYmKGlbbl09dFtuXSk6dm9pZCAwIT09ZVtuXSYmci5yb3V0ZS5sb2FkZXImJihpW25dPWVbbl0pLG8mJm8uaGFzT3duUHJvcGVydHkobikpYnJlYWt9cmV0dXJuIGl9ZnVuY3Rpb24gQWUoZSl7cmV0dXJuIGU/SWUoZVsxXSk/e2FjdGlvbkRhdGE6e319OnthY3Rpb25EYXRhOntbZVswXV06ZVsxXS5kYXRhfX06e319ZnVuY3Rpb24gVGUoZSx0KXtyZXR1cm4odD9lLnNsaWNlKDAsZS5maW5kSW5kZXgoKGU9PmUucm91dGUuaWQ9PT10KSkrMSk6Wy4uLmVdKS5yZXZlcnNlKCkuZmluZCgoZT0+ITA9PT1lLnJvdXRlLmhhc0Vycm9yQm91bmRhcnkpKXx8ZVswXX1mdW5jdGlvbiBSZShlKXtsZXQgdD0xPT09ZS5sZW5ndGg/ZVswXTplLmZpbmQoKGU9PmUuaW5kZXh8fCFlLnBhdGh8fCIvIj09PWUucGF0aCkpfHx7aWQ6Il9fc2hpbS1lcnJvci1yb3V0ZV9fIn07cmV0dXJue21hdGNoZXM6W3twYXJhbXM6e30scGF0aG5hbWU6IiIscGF0aG5hbWVCYXNlOiIiLHJvdXRlOnR9XSxyb3V0ZTp0fX1mdW5jdGlvbiBQZShlLHQpe2xldHtwYXRobmFtZTpyLHJvdXRlSWQ6bixtZXRob2Q6byx0eXBlOmksbWVzc2FnZTphfT12b2lkIDA9PT10P3t9OnQscz0iVW5rbm93biBTZXJ2ZXIgRXJyb3IiLGM9IlVua25vd24gQHJlbWl4LXJ1bi9yb3V0ZXIgZXJyb3IiO3JldHVybiA0MDA9PT1lPyhzPSJCYWQgUmVxdWVzdCIsInJvdXRlLWRpc2NvdmVyeSI9PT1pP2M9J1VuYWJsZSB0byBtYXRjaCBVUkwgIicrcisnIiAtIHRoZSBgY2hpbGRyZW4oKWAgZnVuY3Rpb24gZm9yIHJvdXRlIGAnK24rImAgdGhyZXcgdGhlIGZvbGxvd2luZyBlcnJvcjpcbiIrYTpvJiZyJiZuP2M9IllvdSBtYWRlIGEgIitvKycgcmVxdWVzdCB0byAiJytyKyciIGJ1dCBkaWQgbm90IHByb3ZpZGUgYSBgbG9hZGVyYCBmb3Igcm91dGUgIicrbisnIiwgc28gdGhlcmUgaXMgbm8gd2F5IHRvIGhhbmRsZSB0aGUgcmVxdWVzdC4nOiJkZWZlci1hY3Rpb24iPT09aT9jPSJkZWZlcigpIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYWN0aW9ucyI6ImludmFsaWQtYm9keSI9PT1pJiYoYz0iVW5hYmxlIHRvIGVuY29kZSBzdWJtaXNzaW9uIGJvZHkiKSk6NDAzPT09ZT8ocz0iRm9yYmlkZGVuIixjPSdSb3V0ZSAiJytuKyciIGRvZXMgbm90IG1hdGNoIFVSTCAiJytyKyciJyk6NDA0PT09ZT8ocz0iTm90IEZvdW5kIixjPSdObyByb3V0ZSBtYXRjaGVzIFVSTCAiJytyKyciJyk6NDA1PT09ZSYmKHM9Ik1ldGhvZCBOb3QgQWxsb3dlZCIsbyYmciYmbj9jPSJZb3UgbWFkZSBhICIrby50b1VwcGVyQ2FzZSgpKycgcmVxdWVzdCB0byAiJytyKyciIGJ1dCBkaWQgbm90IHByb3ZpZGUgYW4gYGFjdGlvbmAgZm9yIHJvdXRlICInK24rJyIsIHNvIHRoZXJlIGlzIG5vIHdheSB0byBoYW5kbGUgdGhlIHJlcXVlc3QuJzpvJiYoYz0nSW52YWxpZCByZXF1ZXN0IG1ldGhvZCAiJytvLnRvVXBwZXJDYXNlKCkrJyInKSksbmV3IEVycm9yUmVzcG9uc2VJbXBsKGV8fDUwMCxzLG5ldyBFcnJvcihjKSwhMCl9ZnVuY3Rpb24gT2UoZSl7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LS0pe2xldCByPWVbdF07aWYoamUocikpcmV0dXJue3Jlc3VsdDpyLGlkeDp0fX19ZnVuY3Rpb24gTmUoZSl7cmV0dXJuIHUocih7fSwic3RyaW5nIj09dHlwZW9mIGU/bChlKTplLHtoYXNoOiIifSkpfWZ1bmN0aW9uIE1lKGUpe3JldHVybiBMZShlLnJlc3VsdCkmJlguaGFzKGUucmVzdWx0LnN0YXR1cyl9ZnVuY3Rpb24gRmUoZSl7cmV0dXJuIGUudHlwZT09PWQuZGVmZXJyZWR9ZnVuY3Rpb24gSWUoZSl7cmV0dXJuIGUudHlwZT09PWQuZXJyb3J9ZnVuY3Rpb24gamUoZSl7cmV0dXJuKGUmJmUudHlwZSk9PT1kLnJlZGlyZWN0fWZ1bmN0aW9uIERlKGUpe2xldCB0PWU7cmV0dXJuIHQmJiJvYmplY3QiPT10eXBlb2YgdCYmIm9iamVjdCI9PXR5cGVvZiB0LmRhdGEmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnN1YnNjcmliZSYmImZ1bmN0aW9uIj09dHlwZW9mIHQuY2FuY2VsJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5yZXNvbHZlRGF0YX1mdW5jdGlvbiBMZShlKXtyZXR1cm4gbnVsbCE9ZSYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXR1cyYmInN0cmluZyI9PXR5cGVvZiBlLnN0YXR1c1RleHQmJiJvYmplY3QiPT10eXBlb2YgZS5oZWFkZXJzJiZ2b2lkIDAhPT1lLmJvZHl9ZnVuY3Rpb24gVWUoZSl7cmV0dXJuIEsuaGFzKGUudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gemUoZSl7cmV0dXJuIFYuaGFzKGUudG9Mb3dlckNhc2UoKSl9YXN5bmMgZnVuY3Rpb24gQmUoZSx0LHIsbixvLGEpe2ZvcihsZXQgcz0wO3M8ci5sZW5ndGg7cysrKXtsZXQgYz1yW3NdLHU9dFtzXTtpZighdSljb250aW51ZTtsZXQgbD1lLmZpbmQoKGU9PmUucm91dGUuaWQ9PT11LnJvdXRlLmlkKSksZj1udWxsIT1sJiYhZmUobCx1KSYmdm9pZCAwIT09KGEmJmFbdS5yb3V0ZS5pZF0pO2lmKEZlKGMpJiYob3x8Zikpe2xldCBlPW5bc107aShlLCJFeHBlY3RlZCBhbiBBYm9ydFNpZ25hbCBmb3IgcmV2YWxpZGF0aW5nIGZldGNoZXIgZGVmZXJyZWQgcmVzdWx0IiksYXdhaXQgSGUoYyxlLG8pLnRoZW4oKGU9PntlJiYocltzXT1lfHxyW3NdKX0pKX19fWFzeW5jIGZ1bmN0aW9uIEhlKGUsdCxyKXtpZih2b2lkIDA9PT1yJiYocj0hMSksIWF3YWl0IGUuZGVmZXJyZWREYXRhLnJlc29sdmVEYXRhKHQpKXtpZihyKXRyeXtyZXR1cm57dHlwZTpkLmRhdGEsZGF0YTplLmRlZmVycmVkRGF0YS51bndyYXBwZWREYXRhfX1jYXRjaChlKXtyZXR1cm57dHlwZTpkLmVycm9yLGVycm9yOmV9fXJldHVybnt0eXBlOmQuZGF0YSxkYXRhOmUuZGVmZXJyZWREYXRhLmRhdGF9fX1mdW5jdGlvbiBXZShlKXtyZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyhlKS5nZXRBbGwoImluZGV4Iikuc29tZSgoZT0+IiI9PT1lKSl9ZnVuY3Rpb24gJGUoZSx0KXtsZXQgcj0ic3RyaW5nIj09dHlwZW9mIHQ/bCh0KS5zZWFyY2g6dC5zZWFyY2g7aWYoZVtlLmxlbmd0aC0xXS5yb3V0ZS5pbmRleCYmV2Uocnx8IiIpKXJldHVybiBlW2UubGVuZ3RoLTFdO2xldCBuPWooZSk7cmV0dXJuIG5bbi5sZW5ndGgtMV19ZnVuY3Rpb24gcWUoZSl7bGV0e2Zvcm1NZXRob2Q6dCxmb3JtQWN0aW9uOnIsZm9ybUVuY1R5cGU6bix0ZXh0Om8sZm9ybURhdGE6aSxqc29uOmF9PWU7aWYodCYmciYmbilyZXR1cm4gbnVsbCE9bz97Zm9ybU1ldGhvZDp0LGZvcm1BY3Rpb246cixmb3JtRW5jVHlwZTpuLGZvcm1EYXRhOnZvaWQgMCxqc29uOnZvaWQgMCx0ZXh0Om99Om51bGwhPWk/e2Zvcm1NZXRob2Q6dCxmb3JtQWN0aW9uOnIsZm9ybUVuY1R5cGU6bixmb3JtRGF0YTppLGpzb246dm9pZCAwLHRleHQ6dm9pZCAwfTp2b2lkIDAhPT1hP3tmb3JtTWV0aG9kOnQsZm9ybUFjdGlvbjpyLGZvcm1FbmNUeXBlOm4sZm9ybURhdGE6dm9pZCAwLGpzb246YSx0ZXh0OnZvaWQgMH06dm9pZCAwfWZ1bmN0aW9uIEdlKGUsdCl7aWYodCl7cmV0dXJue3N0YXRlOiJsb2FkaW5nIixsb2NhdGlvbjplLGZvcm1NZXRob2Q6dC5mb3JtTWV0aG9kLGZvcm1BY3Rpb246dC5mb3JtQWN0aW9uLGZvcm1FbmNUeXBlOnQuZm9ybUVuY1R5cGUsZm9ybURhdGE6dC5mb3JtRGF0YSxqc29uOnQuanNvbix0ZXh0OnQudGV4dH19cmV0dXJue3N0YXRlOiJsb2FkaW5nIixsb2NhdGlvbjplLGZvcm1NZXRob2Q6dm9pZCAwLGZvcm1BY3Rpb246dm9pZCAwLGZvcm1FbmNUeXBlOnZvaWQgMCxmb3JtRGF0YTp2b2lkIDAsanNvbjp2b2lkIDAsdGV4dDp2b2lkIDB9fWZ1bmN0aW9uIFZlKGUsdCl7aWYoZSl7cmV0dXJue3N0YXRlOiJsb2FkaW5nIixmb3JtTWV0aG9kOmUuZm9ybU1ldGhvZCxmb3JtQWN0aW9uOmUuZm9ybUFjdGlvbixmb3JtRW5jVHlwZTplLmZvcm1FbmNUeXBlLGZvcm1EYXRhOmUuZm9ybURhdGEsanNvbjplLmpzb24sdGV4dDplLnRleHQsZGF0YTp0fX1yZXR1cm57c3RhdGU6ImxvYWRpbmciLGZvcm1NZXRob2Q6dm9pZCAwLGZvcm1BY3Rpb246dm9pZCAwLGZvcm1FbmNUeXBlOnZvaWQgMCxmb3JtRGF0YTp2b2lkIDAsanNvbjp2b2lkIDAsdGV4dDp2b2lkIDAsZGF0YTp0fX1mdW5jdGlvbiBZZShlKXtyZXR1cm57c3RhdGU6ImlkbGUiLGZvcm1NZXRob2Q6dm9pZCAwLGZvcm1BY3Rpb246dm9pZCAwLGZvcm1FbmNUeXBlOnZvaWQgMCxmb3JtRGF0YTp2b2lkIDAsanNvbjp2b2lkIDAsdGV4dDp2b2lkIDAsZGF0YTplfX10LkFib3J0ZWREZWZlcnJlZEVycm9yPUFib3J0ZWREZWZlcnJlZEVycm9yLHQuQWN0aW9uPW4sdC5JRExFX0JMT0NLRVI9dGUsdC5JRExFX0ZFVENIRVI9ZWUsdC5JRExFX05BVklHQVRJT049USx0LlVOU0FGRV9ERUZFUlJFRF9TWU1CT0w9aWUsdC5VTlNBRkVfRGVmZXJyZWREYXRhPURlZmVycmVkRGF0YSx0LlVOU0FGRV9FcnJvclJlc3BvbnNlSW1wbD1FcnJvclJlc3BvbnNlSW1wbCx0LlVOU0FGRV9jb252ZXJ0Um91dGVNYXRjaFRvVWlNYXRjaD15LHQuVU5TQUZFX2NvbnZlcnRSb3V0ZXNUb0RhdGFSb3V0ZXM9Xyx0LlVOU0FGRV9nZXRSZXNvbHZlVG9NYXRjaGVzPUQsdC5VTlNBRkVfaW52YXJpYW50PWksdC5VTlNBRkVfd2FybmluZz1hLHQuY3JlYXRlQnJvd3Nlckhpc3Rvcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSxmKChmdW5jdGlvbihlLHQpe2xldHtwYXRobmFtZTpyLHNlYXJjaDpuLGhhc2g6b309ZS5sb2NhdGlvbjtyZXR1cm4gYygiIix7cGF0aG5hbWU6cixzZWFyY2g6bixoYXNoOm99LHQuc3RhdGUmJnQuc3RhdGUudXNyfHxudWxsLHQuc3RhdGUmJnQuc3RhdGUua2V5fHwiZGVmYXVsdCIpfSksKGZ1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Q6dSh0KX0pLG51bGwsZSl9LHQuY3JlYXRlSGFzaEhpc3Rvcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSxmKChmdW5jdGlvbihlLHQpe2xldHtwYXRobmFtZTpyPSIvIixzZWFyY2g6bj0iIixoYXNoOm89IiJ9PWwoZS5sb2NhdGlvbi5oYXNoLnN1YnN0cigxKSk7cmV0dXJuIHIuc3RhcnRzV2l0aCgiLyIpfHxyLnN0YXJ0c1dpdGgoIi4iKXx8KHI9Ii8iK3IpLGMoIiIse3BhdGhuYW1lOnIsc2VhcmNoOm4saGFzaDpvfSx0LnN0YXRlJiZ0LnN0YXRlLnVzcnx8bnVsbCx0LnN0YXRlJiZ0LnN0YXRlLmtleXx8ImRlZmF1bHQiKX0pLChmdW5jdGlvbihlLHQpe2xldCByPWUuZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYmFzZSIpLG49IiI7aWYociYmci5nZXRBdHRyaWJ1dGUoImhyZWYiKSl7bGV0IHQ9ZS5sb2NhdGlvbi5ocmVmLHI9dC5pbmRleE9mKCIjIik7bj0tMT09PXI/dDp0LnNsaWNlKDAscil9cmV0dXJuIG4rIiMiKygic3RyaW5nIj09dHlwZW9mIHQ/dDp1KHQpKX0pLChmdW5jdGlvbihlLHQpe2EoIi8iPT09ZS5wYXRobmFtZS5jaGFyQXQoMCksInJlbGF0aXZlIHBhdGhuYW1lcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBoYXNoIGhpc3RvcnkucHVzaCgiK0pTT04uc3RyaW5naWZ5KHQpKyIpIil9KSxlKX0sdC5jcmVhdGVNZW1vcnlIaXN0b3J5PWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPXt9KTtsZXQgdCx7aW5pdGlhbEVudHJpZXM6cj1bIi8iXSxpbml0aWFsSW5kZXg6byx2NUNvbXBhdDppPSExfT1lO3Q9ci5tYXAoKChlLHQpPT5oKGUsInN0cmluZyI9PXR5cGVvZiBlP251bGw6ZS5zdGF0ZSwwPT09dD8iZGVmYXVsdCI6dm9pZCAwKSkpO2xldCBzPXAobnVsbD09bz90Lmxlbmd0aC0xOm8pLGY9bi5Qb3AsZD1udWxsO2Z1bmN0aW9uIHAoZSl7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KGUsMCksdC5sZW5ndGgtMSl9ZnVuY3Rpb24gXygpe3JldHVybiB0W3NdfWZ1bmN0aW9uIGgoZSxyLG4pe3ZvaWQgMD09PXImJihyPW51bGwpO2xldCBvPWModD9fKCkucGF0aG5hbWU6Ii8iLGUscixuKTtyZXR1cm4gYSgiLyI9PT1vLnBhdGhuYW1lLmNoYXJBdCgwKSwicmVsYXRpdmUgcGF0aG5hbWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIG1lbW9yeSBoaXN0b3J5OiAiK0pTT04uc3RyaW5naWZ5KGUpKSxvfWZ1bmN0aW9uIG0oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2U6dShlKX1yZXR1cm57Z2V0IGluZGV4KCl7cmV0dXJuIHN9LGdldCBhY3Rpb24oKXtyZXR1cm4gZn0sZ2V0IGxvY2F0aW9uKCl7cmV0dXJuIF8oKX0sY3JlYXRlSHJlZjptLGNyZWF0ZVVSTChlKXtyZXR1cm4gbmV3IFVSTChtKGUpLCJodHRwOi8vbG9jYWxob3N0Iil9LGVuY29kZUxvY2F0aW9uKGUpe2xldCB0PSJzdHJpbmciPT10eXBlb2YgZT9sKGUpOmU7cmV0dXJue3BhdGhuYW1lOnQucGF0aG5hbWV8fCIiLHNlYXJjaDp0LnNlYXJjaHx8IiIsaGFzaDp0Lmhhc2h8fCIifX0scHVzaChlLHIpe2Y9bi5QdXNoO2xldCBvPWgoZSxyKTtzKz0xLHQuc3BsaWNlKHMsdC5sZW5ndGgsbyksaSYmZCYmZCh7YWN0aW9uOmYsbG9jYXRpb246byxkZWx0YToxfSl9LHJlcGxhY2UoZSxyKXtmPW4uUmVwbGFjZTtsZXQgbz1oKGUscik7dFtzXT1vLGkmJmQmJmQoe2FjdGlvbjpmLGxvY2F0aW9uOm8sZGVsdGE6MH0pfSxnbyhlKXtmPW4uUG9wO2xldCByPXAocytlKSxvPXRbcl07cz1yLGQmJmQoe2FjdGlvbjpmLGxvY2F0aW9uOm8sZGVsdGE6ZX0pfSxsaXN0ZW4oZSl7cmV0dXJuIGQ9ZSwoKT0+e2Q9bnVsbH19fX0sdC5jcmVhdGVQYXRoPXUsdC5jcmVhdGVSb3V0ZXI9ZnVuY3Rpb24oZSl7Y29uc3QgdD1lLndpbmRvdz9lLndpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dm9pZCAwLG89dm9pZCAwIT09dCYmdm9pZCAwIT09dC5kb2N1bWVudCYmdm9pZCAwIT09dC5kb2N1bWVudC5jcmVhdGVFbGVtZW50LHM9IW87bGV0IHU7aWYoaShlLnJvdXRlcy5sZW5ndGg+MCwiWW91IG11c3QgcHJvdmlkZSBhIG5vbi1lbXB0eSByb3V0ZXMgYXJyYXkgdG8gY3JlYXRlUm91dGVyIiksZS5tYXBSb3V0ZVByb3BlcnRpZXMpdT1lLm1hcFJvdXRlUHJvcGVydGllcztlbHNlIGlmKGUuZGV0ZWN0RXJyb3JCb3VuZGFyeSl7bGV0IHQ9ZS5kZXRlY3RFcnJvckJvdW5kYXJ5O3U9ZT0+KHtoYXNFcnJvckJvdW5kYXJ5OnQoZSl9KX1lbHNlIHU9bmU7bGV0IGwsZixwLGc9e30sdj1fKGUucm91dGVzLHUsdm9pZCAwLGcpLGI9ZS5iYXNlbmFtZXx8Ii8iLHc9ZS51bnN0YWJsZV9kYXRhU3RyYXRlZ3l8fG1lLFM9ZS51bnN0YWJsZV9wYXRjaFJvdXRlc09uTWlzcyxrPXIoe3Y3X2ZldGNoZXJQZXJzaXN0OiExLHY3X25vcm1hbGl6ZUZvcm1NZXRob2Q6ITEsdjdfcGFydGlhbEh5ZHJhdGlvbjohMSx2N19wcmVwZW5kQmFzZW5hbWU6ITEsdjdfcmVsYXRpdmVTcGxhdFBhdGg6ITEsdW5zdGFibGVfc2tpcEFjdGlvbkVycm9yUmV2YWxpZGF0aW9uOiExfSxlLmZ1dHVyZSkseD1udWxsLEU9bmV3IFNldCxBPW51bGwsVD1udWxsLFI9bnVsbCxQPW51bGwhPWUuaHlkcmF0aW9uRGF0YSxPPWgodixlLmhpc3RvcnkubG9jYXRpb24sYiksRj1udWxsO2lmKG51bGw9PU8mJiFTKXtsZXQgdD1QZSg0MDQse3BhdGhuYW1lOmUuaGlzdG9yeS5sb2NhdGlvbi5wYXRobmFtZX0pLHttYXRjaGVzOnIscm91dGU6bn09UmUodik7Tz1yLEY9e1tuLmlkXTp0fX1pZihPKWlmKE8uc29tZSgoZT0+ZS5yb3V0ZS5sYXp5KSkpZj0hMTtlbHNlIGlmKE8uc29tZSgoZT0+ZS5yb3V0ZS5sb2FkZXIpKSlpZihrLnY3X3BhcnRpYWxIeWRyYXRpb24pe2xldCB0PWUuaHlkcmF0aW9uRGF0YT9lLmh5ZHJhdGlvbkRhdGEubG9hZGVyRGF0YTpudWxsLHI9ZS5oeWRyYXRpb25EYXRhP2UuaHlkcmF0aW9uRGF0YS5lcnJvcnM6bnVsbCxuPWU9PiFlLnJvdXRlLmxvYWRlcnx8KCJmdW5jdGlvbiIhPXR5cGVvZiBlLnJvdXRlLmxvYWRlcnx8ITAhPT1lLnJvdXRlLmxvYWRlci5oeWRyYXRlKSYmKHQmJnZvaWQgMCE9PXRbZS5yb3V0ZS5pZF18fHImJnZvaWQgMCE9PXJbZS5yb3V0ZS5pZF0pO2lmKHIpe2xldCBlPU8uZmluZEluZGV4KChlPT52b2lkIDAhPT1yW2Uucm91dGUuaWRdKSk7Zj1PLnNsaWNlKDAsZSsxKS5ldmVyeShuKX1lbHNlIGY9Ty5ldmVyeShuKX1lbHNlIGY9bnVsbCE9ZS5oeWRyYXRpb25EYXRhO2Vsc2UgZj0hMDtlbHNlIGY9ITEsTz1bXTtsZXQgSSxqPXtoaXN0b3J5QWN0aW9uOmUuaGlzdG9yeS5hY3Rpb24sbG9jYXRpb246ZS5oaXN0b3J5LmxvY2F0aW9uLG1hdGNoZXM6Tyxpbml0aWFsaXplZDpmLG5hdmlnYXRpb246USxyZXN0b3JlU2Nyb2xsUG9zaXRpb246bnVsbD09ZS5oeWRyYXRpb25EYXRhJiZudWxsLHByZXZlbnRTY3JvbGxSZXNldDohMSxyZXZhbGlkYXRpb246ImlkbGUiLGxvYWRlckRhdGE6ZS5oeWRyYXRpb25EYXRhJiZlLmh5ZHJhdGlvbkRhdGEubG9hZGVyRGF0YXx8e30sYWN0aW9uRGF0YTplLmh5ZHJhdGlvbkRhdGEmJmUuaHlkcmF0aW9uRGF0YS5hY3Rpb25EYXRhfHxudWxsLGVycm9yczplLmh5ZHJhdGlvbkRhdGEmJmUuaHlkcmF0aW9uRGF0YS5lcnJvcnN8fEYsZmV0Y2hlcnM6bmV3IE1hcCxibG9ja2VyczpuZXcgTWFwfSxEPW4uUG9wLEw9ITEsVT0hMSx6PW5ldyBNYXAsQj1udWxsLEg9ITEsVz0hMSwkPVtdLEc9W10sVj1uZXcgTWFwLFk9MCxLPS0xLFg9bmV3IE1hcCxpZT1uZXcgU2V0LGFlPW5ldyBNYXAsdWU9bmV3IE1hcCxmZT1uZXcgU2V0LGRlPW5ldyBNYXAsaGU9bmV3IE1hcCxTZT1uZXcgTWFwLGtlPSExO2Z1bmN0aW9uIHhlKGUsdCl7dm9pZCAwPT09dCYmKHQ9e30pLGo9cih7fSxqLGUpO2xldCBuPVtdLG89W107ay52N19mZXRjaGVyUGVyc2lzdCYmai5mZXRjaGVycy5mb3JFYWNoKCgoZSx0KT0+eyJpZGxlIj09PWUuc3RhdGUmJihmZS5oYXModCk/by5wdXNoKHQpOm4ucHVzaCh0KSl9KSksWy4uLkVdLmZvckVhY2goKGU9PmUoaix7ZGVsZXRlZEZldGNoZXJzOm8sdW5zdGFibGVfdmlld1RyYW5zaXRpb25PcHRzOnQudmlld1RyYW5zaXRpb25PcHRzLHVuc3RhYmxlX2ZsdXNoU3luYzohMD09PXQuZmx1c2hTeW5jfSkpKSxrLnY3X2ZldGNoZXJQZXJzaXN0JiYobi5mb3JFYWNoKChlPT5qLmZldGNoZXJzLmRlbGV0ZShlKSkpLG8uZm9yRWFjaCgoZT0+ZXQoZSkpKSl9ZnVuY3Rpb24gTmUodCxvLGkpe3ZhciBhLHM7bGV0IGMse2ZsdXNoU3luYzp1fT12b2lkIDA9PT1pP3t9OmksZj1udWxsIT1qLmFjdGlvbkRhdGEmJm51bGwhPWoubmF2aWdhdGlvbi5mb3JtTWV0aG9kJiZ6ZShqLm5hdmlnYXRpb24uZm9ybU1ldGhvZCkmJiJsb2FkaW5nIj09PWoubmF2aWdhdGlvbi5zdGF0ZSYmITAhPT0obnVsbD09KGE9dC5zdGF0ZSk/dm9pZCAwOmEuX2lzUmVkaXJlY3QpO2M9by5hY3Rpb25EYXRhP09iamVjdC5rZXlzKG8uYWN0aW9uRGF0YSkubGVuZ3RoPjA/by5hY3Rpb25EYXRhOm51bGw6Zj9qLmFjdGlvbkRhdGE6bnVsbDtsZXQgZD1vLmxvYWRlckRhdGE/Q2Uoai5sb2FkZXJEYXRhLG8ubG9hZGVyRGF0YSxvLm1hdGNoZXN8fFtdLG8uZXJyb3JzKTpqLmxvYWRlckRhdGEscD1qLmJsb2NrZXJzO3Auc2l6ZT4wJiYocD1uZXcgTWFwKHApLHAuZm9yRWFjaCgoKGUsdCk9PnAuc2V0KHQsdGUpKSkpO2xldCBfLGg9ITA9PT1MfHxudWxsIT1qLm5hdmlnYXRpb24uZm9ybU1ldGhvZCYmemUoai5uYXZpZ2F0aW9uLmZvcm1NZXRob2QpJiYhMCE9PShudWxsPT0ocz10LnN0YXRlKT92b2lkIDA6cy5faXNSZWRpcmVjdCk7aWYobCYmKHY9bCxsPXZvaWQgMCksSHx8RD09PW4uUG9wfHwoRD09PW4uUHVzaD9lLmhpc3RvcnkucHVzaCh0LHQuc3RhdGUpOkQ9PT1uLlJlcGxhY2UmJmUuaGlzdG9yeS5yZXBsYWNlKHQsdC5zdGF0ZSkpLEQ9PT1uLlBvcCl7bGV0IGU9ei5nZXQoai5sb2NhdGlvbi5wYXRobmFtZSk7ZSYmZS5oYXModC5wYXRobmFtZSk/Xz17Y3VycmVudExvY2F0aW9uOmoubG9jYXRpb24sbmV4dExvY2F0aW9uOnR9OnouaGFzKHQucGF0aG5hbWUpJiYoXz17Y3VycmVudExvY2F0aW9uOnQsbmV4dExvY2F0aW9uOmoubG9jYXRpb259KX1lbHNlIGlmKFUpe2xldCBlPXouZ2V0KGoubG9jYXRpb24ucGF0aG5hbWUpO2U/ZS5hZGQodC5wYXRobmFtZSk6KGU9bmV3IFNldChbdC5wYXRobmFtZV0pLHouc2V0KGoubG9jYXRpb24ucGF0aG5hbWUsZSkpLF89e2N1cnJlbnRMb2NhdGlvbjpqLmxvY2F0aW9uLG5leHRMb2NhdGlvbjp0fX14ZShyKHt9LG8se2FjdGlvbkRhdGE6Yyxsb2FkZXJEYXRhOmQsaGlzdG9yeUFjdGlvbjpELGxvY2F0aW9uOnQsaW5pdGlhbGl6ZWQ6ITAsbmF2aWdhdGlvbjpRLHJldmFsaWRhdGlvbjoiaWRsZSIscmVzdG9yZVNjcm9sbFBvc2l0aW9uOmR0KHQsby5tYXRjaGVzfHxqLm1hdGNoZXMpLHByZXZlbnRTY3JvbGxSZXNldDpoLGJsb2NrZXJzOnB9KSx7dmlld1RyYW5zaXRpb25PcHRzOl8sZmx1c2hTeW5jOiEwPT09dX0pLEQ9bi5Qb3AsTD0hMSxVPSExLEg9ITEsVz0hMSwkPVtdLEc9W119YXN5bmMgZnVuY3Rpb24gRGUodCxvLGkpe0kmJkkuYWJvcnQoKSxJPW51bGwsRD10LEg9ITA9PT0oaSYmaS5zdGFydFVuaW50ZXJydXB0ZWRSZXZhbGlkYXRpb24pLGZ1bmN0aW9uKGUsdCl7aWYoQSYmUil7bGV0IHI9ZnQoZSx0KTtBW3JdPVIoKX19KGoubG9jYXRpb24sai5tYXRjaGVzKSxMPSEwPT09KGkmJmkucHJldmVudFNjcm9sbFJlc2V0KSxVPSEwPT09KGkmJmkuZW5hYmxlVmlld1RyYW5zaXRpb24pO2xldCBhPWx8fHYscz1pJiZpLm92ZXJyaWRlTmF2aWdhdGlvbixjPWgoYSxvLGIpLHU9ITA9PT0oaSYmaS5mbHVzaFN5bmMpLGY9cHQoYyxhLG8ucGF0aG5hbWUpO2lmKGYuYWN0aXZlJiZmLm1hdGNoZXMmJihjPWYubWF0Y2hlcyksIWMpe2xldHtlcnJvcjplLG5vdEZvdW5kTWF0Y2hlczp0LHJvdXRlOnJ9PWN0KG8ucGF0aG5hbWUpO3JldHVybiB2b2lkIE5lKG8se21hdGNoZXM6dCxsb2FkZXJEYXRhOnt9LGVycm9yczp7W3IuaWRdOmV9fSx7Zmx1c2hTeW5jOnV9KX1pZihqLmluaXRpYWxpemVkJiYhVyYmZnVuY3Rpb24oZSx0KXtpZihlLnBhdGhuYW1lIT09dC5wYXRobmFtZXx8ZS5zZWFyY2ghPT10LnNlYXJjaClyZXR1cm4hMTtpZigiIj09PWUuaGFzaClyZXR1cm4iIiE9PXQuaGFzaDtpZihlLmhhc2g9PT10Lmhhc2gpcmV0dXJuITA7aWYoIiIhPT10Lmhhc2gpcmV0dXJuITA7cmV0dXJuITF9KGoubG9jYXRpb24sbykmJiEoaSYmaS5zdWJtaXNzaW9uJiZ6ZShpLnN1Ym1pc3Npb24uZm9ybU1ldGhvZCkpKXJldHVybiB2b2lkIE5lKG8se21hdGNoZXM6Y30se2ZsdXNoU3luYzp1fSk7ST1uZXcgQWJvcnRDb250cm9sbGVyO2xldCBwLF89d2UoZS5oaXN0b3J5LG8sSS5zaWduYWwsaSYmaS5zdWJtaXNzaW9uKTtpZihpJiZpLnBlbmRpbmdFcnJvcilwPVtUZShjKS5yb3V0ZS5pZCx7dHlwZTpkLmVycm9yLGVycm9yOmkucGVuZGluZ0Vycm9yfV07ZWxzZSBpZihpJiZpLnN1Ym1pc3Npb24mJnplKGkuc3VibWlzc2lvbi5mb3JtTWV0aG9kKSl7bGV0IHQ9YXdhaXQgYXN5bmMgZnVuY3Rpb24oZSx0LHIsbyxpLGEpe3ZvaWQgMD09PWEmJihhPXt9KTtKZSgpO2xldCBzLGM9ZnVuY3Rpb24oZSx0KXtsZXQgcj17c3RhdGU6InN1Ym1pdHRpbmciLGxvY2F0aW9uOmUsZm9ybU1ldGhvZDp0LmZvcm1NZXRob2QsZm9ybUFjdGlvbjp0LmZvcm1BY3Rpb24sZm9ybUVuY1R5cGU6dC5mb3JtRW5jVHlwZSxmb3JtRGF0YTp0LmZvcm1EYXRhLGpzb246dC5qc29uLHRleHQ6dC50ZXh0fTtyZXR1cm4gcn0odCxyKTtpZih4ZSh7bmF2aWdhdGlvbjpjfSx7Zmx1c2hTeW5jOiEwPT09YS5mbHVzaFN5bmN9KSxpKXtsZXQgcj1hd2FpdCBfdChvLHQucGF0aG5hbWUsZS5zaWduYWwpO2lmKCJhYm9ydGVkIj09PXIudHlwZSlyZXR1cm57c2hvcnRDaXJjdWl0ZWQ6ITB9O2lmKCJlcnJvciI9PT1yLnR5cGUpe2xldHtlcnJvcjplLG5vdEZvdW5kTWF0Y2hlczpuLHJvdXRlOm99PXV0KHQucGF0aG5hbWUscik7cmV0dXJue21hdGNoZXM6bixwZW5kaW5nQWN0aW9uUmVzdWx0OltvLmlkLHt0eXBlOmQuZXJyb3IsZXJyb3I6ZX1dfX1pZighci5tYXRjaGVzKXtsZXR7bm90Rm91bmRNYXRjaGVzOmUsZXJyb3I6cixyb3V0ZTpufT1jdCh0LnBhdGhuYW1lKTtyZXR1cm57bWF0Y2hlczplLHBlbmRpbmdBY3Rpb25SZXN1bHQ6W24uaWQse3R5cGU6ZC5lcnJvcixlcnJvcjpyfV19fW89ci5tYXRjaGVzfWxldCB1PSRlKG8sdCk7aWYodS5yb3V0ZS5hY3Rpb258fHUucm91dGUubGF6eSl7aWYocz0oYXdhaXQgV2UoImFjdGlvbiIsZSxbdV0sbykpWzBdLGUuc2lnbmFsLmFib3J0ZWQpcmV0dXJue3Nob3J0Q2lyY3VpdGVkOiEwfX1lbHNlIHM9e3R5cGU6ZC5lcnJvcixlcnJvcjpQZSg0MDUse21ldGhvZDplLm1ldGhvZCxwYXRobmFtZTp0LnBhdGhuYW1lLHJvdXRlSWQ6dS5yb3V0ZS5pZH0pfTtpZihqZShzKSl7bGV0IHQ7aWYoYSYmbnVsbCE9YS5yZXBsYWNlKXQ9YS5yZXBsYWNlO2Vsc2V7dD1iZShzLnJlc3BvbnNlLmhlYWRlcnMuZ2V0KCJMb2NhdGlvbiIpLG5ldyBVUkwoZS51cmwpLGIpPT09ai5sb2NhdGlvbi5wYXRobmFtZStqLmxvY2F0aW9uLnNlYXJjaH1yZXR1cm4gYXdhaXQgVWUoZSxzLHtzdWJtaXNzaW9uOnIscmVwbGFjZTp0fSkse3Nob3J0Q2lyY3VpdGVkOiEwfX1pZihGZShzKSl0aHJvdyBQZSg0MDAse3R5cGU6ImRlZmVyLWFjdGlvbiJ9KTtpZihJZShzKSl7bGV0IGU9VGUobyx1LnJvdXRlLmlkKTtyZXR1cm4hMCE9PShhJiZhLnJlcGxhY2UpJiYoRD1uLlB1c2gpLHttYXRjaGVzOm8scGVuZGluZ0FjdGlvblJlc3VsdDpbZS5yb3V0ZS5pZCxzXX19cmV0dXJue21hdGNoZXM6byxwZW5kaW5nQWN0aW9uUmVzdWx0Olt1LnJvdXRlLmlkLHNdfX0oXyxvLGkuc3VibWlzc2lvbixjLGYuYWN0aXZlLHtyZXBsYWNlOmkucmVwbGFjZSxmbHVzaFN5bmM6dX0pO2lmKHQuc2hvcnRDaXJjdWl0ZWQpcmV0dXJuO2lmKHQucGVuZGluZ0FjdGlvblJlc3VsdCl7bGV0W2Uscl09dC5wZW5kaW5nQWN0aW9uUmVzdWx0O2lmKEllKHIpJiZxKHIuZXJyb3IpJiY0MDQ9PT1yLmVycm9yLnN0YXR1cylyZXR1cm4gST1udWxsLHZvaWQgTmUobyx7bWF0Y2hlczp0Lm1hdGNoZXMsbG9hZGVyRGF0YTp7fSxlcnJvcnM6e1tlXTpyLmVycm9yfX0pfWM9dC5tYXRjaGVzfHxjLHA9dC5wZW5kaW5nQWN0aW9uUmVzdWx0LHM9R2UobyxpLnN1Ym1pc3Npb24pLHU9ITEsZi5hY3RpdmU9ITEsXz13ZShlLmhpc3RvcnksXy51cmwsXy5zaWduYWwpfWxldHtzaG9ydENpcmN1aXRlZDptLG1hdGNoZXM6eSxsb2FkZXJEYXRhOmcsZXJyb3JzOnd9PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKHQsbixvLGksYSxzLGMsdSxmLGQscCl7bGV0IF89YXx8R2UobixzKSxoPXN8fGN8fHFlKF8pLG09IShIfHxrLnY3X3BhcnRpYWxIeWRyYXRpb24mJmYpO2lmKGkpe2lmKG0pe2xldCBlPUxlKHApO3hlKHIoe25hdmlnYXRpb246X30sdm9pZCAwIT09ZT97YWN0aW9uRGF0YTplfTp7fSkse2ZsdXNoU3luYzpkfSl9bGV0IGU9YXdhaXQgX3QobyxuLnBhdGhuYW1lLHQuc2lnbmFsKTtpZigiYWJvcnRlZCI9PT1lLnR5cGUpcmV0dXJue3Nob3J0Q2lyY3VpdGVkOiEwfTtpZigiZXJyb3IiPT09ZS50eXBlKXtsZXR7ZXJyb3I6dCxub3RGb3VuZE1hdGNoZXM6cixyb3V0ZTpvfT11dChuLnBhdGhuYW1lLGUpO3JldHVybnttYXRjaGVzOnIsbG9hZGVyRGF0YTp7fSxlcnJvcnM6e1tvLmlkXTp0fX19aWYoIWUubWF0Y2hlcyl7bGV0e2Vycm9yOmUsbm90Rm91bmRNYXRjaGVzOnQscm91dGU6cn09Y3Qobi5wYXRobmFtZSk7cmV0dXJue21hdGNoZXM6dCxsb2FkZXJEYXRhOnt9LGVycm9yczp7W3IuaWRdOmV9fX1vPWUubWF0Y2hlc31sZXQgeT1sfHx2LFtnLHddPWxlKGUuaGlzdG9yeSxqLG8saCxuLGsudjdfcGFydGlhbEh5ZHJhdGlvbiYmITA9PT1mLGsudW5zdGFibGVfc2tpcEFjdGlvbkVycm9yUmV2YWxpZGF0aW9uLFcsJCxHLGZlLGFlLGllLHksYixwKTtpZihsdCgoZT0+IShvJiZvLnNvbWUoKHQ9PnQucm91dGUuaWQ9PT1lKSkpfHxnJiZnLnNvbWUoKHQ9PnQucm91dGUuaWQ9PT1lKSkpKSxLPSsrWSwwPT09Zy5sZW5ndGgmJjA9PT13Lmxlbmd0aCl7bGV0IGU9bnQoKTtyZXR1cm4gTmUobixyKHttYXRjaGVzOm8sbG9hZGVyRGF0YTp7fSxlcnJvcnM6cCYmSWUocFsxXSk/e1twWzBdXTpwWzFdLmVycm9yfTpudWxsfSxBZShwKSxlP3tmZXRjaGVyczpuZXcgTWFwKGouZmV0Y2hlcnMpfTp7fSkse2ZsdXNoU3luYzpkfSkse3Nob3J0Q2lyY3VpdGVkOiEwfX1pZihtKXtsZXQgZT17fTtpZighaSl7ZS5uYXZpZ2F0aW9uPV87bGV0IHQ9TGUocCk7dm9pZCAwIT09dCYmKGUuYWN0aW9uRGF0YT10KX13Lmxlbmd0aD4wJiYoZS5mZXRjaGVycz1mdW5jdGlvbihlKXtyZXR1cm4gZS5mb3JFYWNoKChlPT57bGV0IHQ9ai5mZXRjaGVycy5nZXQoZS5rZXkpLHI9VmUodm9pZCAwLHQ/dC5kYXRhOnZvaWQgMCk7ai5mZXRjaGVycy5zZXQoZS5rZXkscil9KSksbmV3IE1hcChqLmZldGNoZXJzKX0odykpLHhlKGUse2ZsdXNoU3luYzpkfSl9dy5mb3JFYWNoKChlPT57Vi5oYXMoZS5rZXkpJiZ0dChlLmtleSksZS5jb250cm9sbGVyJiZWLnNldChlLmtleSxlLmNvbnRyb2xsZXIpfSkpO2xldCBTPSgpPT53LmZvckVhY2goKGU9PnR0KGUua2V5KSkpO0kmJkkuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixTKTtsZXR7bG9hZGVyUmVzdWx0czp4LGZldGNoZXJSZXN1bHRzOkV9PWF3YWl0IEtlKGoubWF0Y2hlcyxvLGcsdyx0KTtpZih0LnNpZ25hbC5hYm9ydGVkKXJldHVybntzaG9ydENpcmN1aXRlZDohMH07SSYmSS5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLFMpO3cuZm9yRWFjaCgoZT0+Vi5kZWxldGUoZS5rZXkpKSk7bGV0IEE9T2UoWy4uLngsLi4uRV0pO2lmKEEpe2lmKEEuaWR4Pj1nLmxlbmd0aCl7bGV0IGU9d1tBLmlkeC1nLmxlbmd0aF0ua2V5O2llLmFkZChlKX1yZXR1cm4gYXdhaXQgVWUodCxBLnJlc3VsdCx7cmVwbGFjZTp1fSkse3Nob3J0Q2lyY3VpdGVkOiEwfX1sZXR7bG9hZGVyRGF0YTpULGVycm9yczpSfT1FZShqLG8sZyx4LHAsdyxFLGRlKTtkZS5mb3JFYWNoKCgoZSx0KT0+e2Uuc3Vic2NyaWJlKChyPT57KHJ8fGUuZG9uZSkmJmRlLmRlbGV0ZSh0KX0pKX0pKSxrLnY3X3BhcnRpYWxIeWRyYXRpb24mJmYmJmouZXJyb3JzJiZPYmplY3QuZW50cmllcyhqLmVycm9ycykuZmlsdGVyKChlPT57bGV0W3RdPWU7cmV0dXJuIWcuc29tZSgoZT0+ZS5yb3V0ZS5pZD09PXQpKX0pKS5mb3JFYWNoKChlPT57bGV0W3Qscl09ZTtSPU9iamVjdC5hc3NpZ24oUnx8e30se1t0XTpyfSl9KSk7bGV0IFA9bnQoKSxPPW90KEspLE09UHx8T3x8dy5sZW5ndGg+MDtyZXR1cm4gcih7bWF0Y2hlczpvLGxvYWRlckRhdGE6VCxlcnJvcnM6Un0sTT97ZmV0Y2hlcnM6bmV3IE1hcChqLmZldGNoZXJzKX06e30pfShfLG8sYyxmLmFjdGl2ZSxzLGkmJmkuc3VibWlzc2lvbixpJiZpLmZldGNoZXJTdWJtaXNzaW9uLGkmJmkucmVwbGFjZSxpJiYhMD09PWkuaW5pdGlhbEh5ZHJhdGlvbix1LHApO218fChJPW51bGwsTmUobyxyKHttYXRjaGVzOnl8fGN9LEFlKHApLHtsb2FkZXJEYXRhOmcsZXJyb3JzOnd9KSkpfWZ1bmN0aW9uIExlKGUpe3JldHVybiBlJiYhSWUoZVsxXSk/e1tlWzBdXTplWzFdLmRhdGF9OmouYWN0aW9uRGF0YT8wPT09T2JqZWN0LmtleXMoai5hY3Rpb25EYXRhKS5sZW5ndGg/bnVsbDpqLmFjdGlvbkRhdGE6dm9pZCAwfWFzeW5jIGZ1bmN0aW9uIFVlKGEscyx1KXtsZXR7c3VibWlzc2lvbjpsLGZldGNoZXJTdWJtaXNzaW9uOmYscmVwbGFjZTpkfT12b2lkIDA9PT11P3t9OnU7cy5yZXNwb25zZS5oZWFkZXJzLmhhcygiWC1SZW1peC1SZXZhbGlkYXRlIikmJihXPSEwKTtsZXQgcD1zLnJlc3BvbnNlLmhlYWRlcnMuZ2V0KCJMb2NhdGlvbiIpO2kocCwiRXhwZWN0ZWQgYSBMb2NhdGlvbiBoZWFkZXIgb24gdGhlIHJlZGlyZWN0IFJlc3BvbnNlIikscD1iZShwLG5ldyBVUkwoYS51cmwpLGIpO2xldCBfPWMoai5sb2NhdGlvbixwLHtfaXNSZWRpcmVjdDohMH0pO2lmKG8pe2xldCByPSExO2lmKHMucmVzcG9uc2UuaGVhZGVycy5oYXMoIlgtUmVtaXgtUmVsb2FkLURvY3VtZW50Iikpcj0hMDtlbHNlIGlmKHJlLnRlc3QocCkpe2NvbnN0IG49ZS5oaXN0b3J5LmNyZWF0ZVVSTChwKTtyPW4ub3JpZ2luIT09dC5sb2NhdGlvbi5vcmlnaW58fG51bGw9PU0obi5wYXRobmFtZSxiKX1pZihyKXJldHVybiB2b2lkKGQ/dC5sb2NhdGlvbi5yZXBsYWNlKHApOnQubG9jYXRpb24uYXNzaWduKHApKX1JPW51bGw7bGV0IGg9ITA9PT1kP24uUmVwbGFjZTpuLlB1c2gse2Zvcm1NZXRob2Q6bSxmb3JtQWN0aW9uOnksZm9ybUVuY1R5cGU6Z309ai5uYXZpZ2F0aW9uOyFsJiYhZiYmbSYmeSYmZyYmKGw9cWUoai5uYXZpZ2F0aW9uKSk7bGV0IHY9bHx8ZjtpZihaLmhhcyhzLnJlc3BvbnNlLnN0YXR1cykmJnYmJnplKHYuZm9ybU1ldGhvZCkpYXdhaXQgRGUoaCxfLHtzdWJtaXNzaW9uOnIoe30sdix7Zm9ybUFjdGlvbjpwfSkscHJldmVudFNjcm9sbFJlc2V0Okx9KTtlbHNle2xldCBlPUdlKF8sbCk7YXdhaXQgRGUoaCxfLHtvdmVycmlkZU5hdmlnYXRpb246ZSxmZXRjaGVyU3VibWlzc2lvbjpmLHByZXZlbnRTY3JvbGxSZXNldDpMfSl9fWFzeW5jIGZ1bmN0aW9uIFdlKGUsdCxyLG4pe3RyeXtsZXQgbz1hd2FpdCB5ZSh3LGUsdCxyLG4sZyx1KTtyZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoby5tYXAoKChlLG8pPT57aWYoTWUoZSkpe2xldCBpPWUucmVzdWx0O3JldHVybnt0eXBlOmQucmVkaXJlY3QscmVzcG9uc2U6dmUoaSx0LHJbb10ucm91dGUuaWQsbixiLGsudjdfcmVsYXRpdmVTcGxhdFBhdGgpfX1yZXR1cm4gZ2UoZSl9KSkpfWNhdGNoKGUpe3JldHVybiByLm1hcCgoKCk9Pih7dHlwZTpkLmVycm9yLGVycm9yOmV9KSkpfX1hc3luYyBmdW5jdGlvbiBLZSh0LHIsbixvLGkpe2xldFthLC4uLnNdPWF3YWl0IFByb21pc2UuYWxsKFtuLmxlbmd0aD9XZSgibG9hZGVyIixpLG4scik6W10sLi4uby5tYXAoKHQ9PntpZih0Lm1hdGNoZXMmJnQubWF0Y2gmJnQuY29udHJvbGxlcil7cmV0dXJuIFdlKCJsb2FkZXIiLHdlKGUuaGlzdG9yeSx0LnBhdGgsdC5jb250cm9sbGVyLnNpZ25hbCksW3QubWF0Y2hdLHQubWF0Y2hlcykudGhlbigoZT0+ZVswXSkpfXJldHVybiBQcm9taXNlLnJlc29sdmUoe3R5cGU6ZC5lcnJvcixlcnJvcjpQZSg0MDQse3BhdGhuYW1lOnQucGF0aH0pfSl9KSldKTtyZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoW0JlKHQsbixhLGEubWFwKCgoKT0+aS5zaWduYWwpKSwhMSxqLmxvYWRlckRhdGEpLEJlKHQsby5tYXAoKGU9PmUubWF0Y2gpKSxzLG8ubWFwKChlPT5lLmNvbnRyb2xsZXI/ZS5jb250cm9sbGVyLnNpZ25hbDpudWxsKSksITApXSkse2xvYWRlclJlc3VsdHM6YSxmZXRjaGVyUmVzdWx0czpzfX1mdW5jdGlvbiBKZSgpe1c9ITAsJC5wdXNoKC4uLmx0KCkpLGFlLmZvckVhY2goKChlLHQpPT57Vi5oYXModCkmJihHLnB1c2godCksdHQodCkpfSkpfWZ1bmN0aW9uIFhlKGUsdCxyKXt2b2lkIDA9PT1yJiYocj17fSksai5mZXRjaGVycy5zZXQoZSx0KSx4ZSh7ZmV0Y2hlcnM6bmV3IE1hcChqLmZldGNoZXJzKX0se2ZsdXNoU3luYzohMD09PShyJiZyLmZsdXNoU3luYyl9KX1mdW5jdGlvbiBaZShlLHQscixuKXt2b2lkIDA9PT1uJiYobj17fSk7bGV0IG89VGUoai5tYXRjaGVzLHQpO2V0KGUpLHhlKHtlcnJvcnM6e1tvLnJvdXRlLmlkXTpyfSxmZXRjaGVyczpuZXcgTWFwKGouZmV0Y2hlcnMpfSx7Zmx1c2hTeW5jOiEwPT09KG4mJm4uZmx1c2hTeW5jKX0pfWZ1bmN0aW9uIFFlKGUpe3JldHVybiBrLnY3X2ZldGNoZXJQZXJzaXN0JiYodWUuc2V0KGUsKHVlLmdldChlKXx8MCkrMSksZmUuaGFzKGUpJiZmZS5kZWxldGUoZSkpLGouZmV0Y2hlcnMuZ2V0KGUpfHxlZX1mdW5jdGlvbiBldChlKXtsZXQgdD1qLmZldGNoZXJzLmdldChlKTshVi5oYXMoZSl8fHQmJiJsb2FkaW5nIj09PXQuc3RhdGUmJlguaGFzKGUpfHx0dChlKSxhZS5kZWxldGUoZSksWC5kZWxldGUoZSksaWUuZGVsZXRlKGUpLGZlLmRlbGV0ZShlKSxqLmZldGNoZXJzLmRlbGV0ZShlKX1mdW5jdGlvbiB0dChlKXtsZXQgdD1WLmdldChlKTtpKHQsIkV4cGVjdGVkIGZldGNoIGNvbnRyb2xsZXI6ICIrZSksdC5hYm9ydCgpLFYuZGVsZXRlKGUpfWZ1bmN0aW9uIHJ0KGUpe2ZvcihsZXQgdCBvZiBlKXtsZXQgZT1ZZShRZSh0KS5kYXRhKTtqLmZldGNoZXJzLnNldCh0LGUpfX1mdW5jdGlvbiBudCgpe2xldCBlPVtdLHQ9ITE7Zm9yKGxldCByIG9mIGllKXtsZXQgbj1qLmZldGNoZXJzLmdldChyKTtpKG4sIkV4cGVjdGVkIGZldGNoZXI6ICIrciksImxvYWRpbmciPT09bi5zdGF0ZSYmKGllLmRlbGV0ZShyKSxlLnB1c2gociksdD0hMCl9cmV0dXJuIHJ0KGUpLHR9ZnVuY3Rpb24gb3QoZSl7bGV0IHQ9W107Zm9yKGxldFtyLG5db2YgWClpZihuPGUpe2xldCBlPWouZmV0Y2hlcnMuZ2V0KHIpO2koZSwiRXhwZWN0ZWQgZmV0Y2hlcjogIityKSwibG9hZGluZyI9PT1lLnN0YXRlJiYodHQociksWC5kZWxldGUociksdC5wdXNoKHIpKX1yZXR1cm4gcnQodCksdC5sZW5ndGg+MH1mdW5jdGlvbiBpdChlKXtqLmJsb2NrZXJzLmRlbGV0ZShlKSxoZS5kZWxldGUoZSl9ZnVuY3Rpb24gYXQoZSx0KXtsZXQgcj1qLmJsb2NrZXJzLmdldChlKXx8dGU7aSgidW5ibG9ja2VkIj09PXIuc3RhdGUmJiJibG9ja2VkIj09PXQuc3RhdGV8fCJibG9ja2VkIj09PXIuc3RhdGUmJiJibG9ja2VkIj09PXQuc3RhdGV8fCJibG9ja2VkIj09PXIuc3RhdGUmJiJwcm9jZWVkaW5nIj09PXQuc3RhdGV8fCJibG9ja2VkIj09PXIuc3RhdGUmJiJ1bmJsb2NrZWQiPT09dC5zdGF0ZXx8InByb2NlZWRpbmciPT09ci5zdGF0ZSYmInVuYmxvY2tlZCI9PT10LnN0YXRlLCJJbnZhbGlkIGJsb2NrZXIgc3RhdGUgdHJhbnNpdGlvbjogIityLnN0YXRlKyIgLT4gIit0LnN0YXRlKTtsZXQgbj1uZXcgTWFwKGouYmxvY2tlcnMpO24uc2V0KGUsdCkseGUoe2Jsb2NrZXJzOm59KX1mdW5jdGlvbiBzdChlKXtsZXR7Y3VycmVudExvY2F0aW9uOnQsbmV4dExvY2F0aW9uOnIsaGlzdG9yeUFjdGlvbjpufT1lO2lmKDA9PT1oZS5zaXplKXJldHVybjtoZS5zaXplPjEmJmEoITEsIkEgcm91dGVyIG9ubHkgc3VwcG9ydHMgb25lIGJsb2NrZXIgYXQgYSB0aW1lIik7bGV0IG89QXJyYXkuZnJvbShoZS5lbnRyaWVzKCkpLFtpLHNdPW9bby5sZW5ndGgtMV0sYz1qLmJsb2NrZXJzLmdldChpKTtyZXR1cm4gYyYmInByb2NlZWRpbmciPT09Yy5zdGF0ZT92b2lkIDA6cyh7Y3VycmVudExvY2F0aW9uOnQsbmV4dExvY2F0aW9uOnIsaGlzdG9yeUFjdGlvbjpufSk/aTp2b2lkIDB9ZnVuY3Rpb24gY3QoZSl7bGV0IHQ9UGUoNDA0LHtwYXRobmFtZTplfSkscj1sfHx2LHttYXRjaGVzOm4scm91dGU6b309UmUocik7cmV0dXJuIGx0KCkse25vdEZvdW5kTWF0Y2hlczpuLHJvdXRlOm8sZXJyb3I6dH19ZnVuY3Rpb24gdXQoZSx0KXtsZXQgcj10LnBhcnRpYWxNYXRjaGVzLG49cltyLmxlbmd0aC0xXS5yb3V0ZTtyZXR1cm57bm90Rm91bmRNYXRjaGVzOnIscm91dGU6bixlcnJvcjpQZSg0MDAse3R5cGU6InJvdXRlLWRpc2NvdmVyeSIscm91dGVJZDpuLmlkLHBhdGhuYW1lOmUsbWVzc2FnZTpudWxsIT10LmVycm9yJiYibWVzc2FnZSJpbiB0LmVycm9yP3QuZXJyb3I6U3RyaW5nKHQuZXJyb3IpfSl9fWZ1bmN0aW9uIGx0KGUpe2xldCB0PVtdO3JldHVybiBkZS5mb3JFYWNoKCgocixuKT0+e2UmJiFlKG4pfHwoci5jYW5jZWwoKSx0LnB1c2gobiksZGUuZGVsZXRlKG4pKX0pKSx0fWZ1bmN0aW9uIGZ0KGUsdCl7aWYoVCl7cmV0dXJuIFQoZSx0Lm1hcCgoZT0+eShlLGoubG9hZGVyRGF0YSkpKSl8fGUua2V5fXJldHVybiBlLmtleX1mdW5jdGlvbiBkdChlLHQpe2lmKEEpe2xldCByPWZ0KGUsdCksbj1BW3JdO2lmKCJudW1iZXIiPT10eXBlb2YgbilyZXR1cm4gbn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBwdChlLHQscil7aWYoUyl7aWYoIWUpe3JldHVybnthY3RpdmU6ITAsbWF0Y2hlczptKHQscixiLCEwKXx8W119fWlmKCIqIj09PWVbZS5sZW5ndGgtMV0ucm91dGUucGF0aCl7cmV0dXJue2FjdGl2ZTohMCxtYXRjaGVzOm0odCxyLGIsITApfX19cmV0dXJue2FjdGl2ZTohMSxtYXRjaGVzOm51bGx9fWFzeW5jIGZ1bmN0aW9uIF90KGUsdCxyKXtsZXQgbj1lLG89bi5sZW5ndGg+MD9uW24ubGVuZ3RoLTFdLnJvdXRlOm51bGw7Zm9yKDs7KXt0cnl7YXdhaXQgcGUoUyx0LG4sdnx8bCxnLHUsU2Uscil9Y2F0Y2goZSl7cmV0dXJue3R5cGU6ImVycm9yIixlcnJvcjplLHBhcnRpYWxNYXRjaGVzOm59fWlmKHIuYWJvcnRlZClyZXR1cm57dHlwZToiYWJvcnRlZCJ9O2xldCBlPWx8fHYsaT1oKGUsdCxiKSxhPSExO2lmKGkpe2xldCBlPWlbaS5sZW5ndGgtMV0ucm91dGU7aWYoZS5pbmRleClyZXR1cm57dHlwZToic3VjY2VzcyIsbWF0Y2hlczppfTtpZihlLnBhdGgmJmUucGF0aC5sZW5ndGg+MCl7aWYoIioiIT09ZS5wYXRoKXJldHVybnt0eXBlOiJzdWNjZXNzIixtYXRjaGVzOml9O2E9ITB9fWxldCBzPW0oZSx0LGIsITApO2lmKCFzfHxuLm1hcCgoZT0+ZS5yb3V0ZS5pZCkpLmpvaW4oIi0iKT09PXMubWFwKChlPT5lLnJvdXRlLmlkKSkuam9pbigiLSIpKXJldHVybnt0eXBlOiJzdWNjZXNzIixtYXRjaGVzOmE/aTpudWxsfTtpZihuPXMsbz1uW24ubGVuZ3RoLTFdLnJvdXRlLCIqIj09PW8ucGF0aClyZXR1cm57dHlwZToic3VjY2VzcyIsbWF0Y2hlczpufX19cmV0dXJuIHA9e2dldCBiYXNlbmFtZSgpe3JldHVybiBifSxnZXQgZnV0dXJlKCl7cmV0dXJuIGt9LGdldCBzdGF0ZSgpe3JldHVybiBqfSxnZXQgcm91dGVzKCl7cmV0dXJuIHZ9LGdldCB3aW5kb3coKXtyZXR1cm4gdH0saW5pdGlhbGl6ZTpmdW5jdGlvbigpe2lmKHg9ZS5oaXN0b3J5Lmxpc3RlbigodD0+e2xldHthY3Rpb246cixsb2NhdGlvbjpuLGRlbHRhOm99PXQ7aWYoa2UpcmV0dXJuIHZvaWQoa2U9ITEpO2EoMD09PWhlLnNpemV8fG51bGwhPW8sIllvdSBhcmUgdHJ5aW5nIHRvIHVzZSBhIGJsb2NrZXIgb24gYSBQT1AgbmF2aWdhdGlvbiB0byBhIGxvY2F0aW9uIHRoYXQgd2FzIG5vdCBjcmVhdGVkIGJ5IEByZW1peC1ydW4vcm91dGVyLiBUaGlzIHdpbGwgZmFpbCBzaWxlbnRseSBpbiBwcm9kdWN0aW9uLiBUaGlzIGNhbiBoYXBwZW4gaWYgeW91IGFyZSBuYXZpZ2F0aW5nIG91dHNpZGUgdGhlIHJvdXRlciB2aWEgYHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZWAvYHdpbmRvdy5sb2NhdGlvbi5oYXNoYCBpbnN0ZWFkIG9mIHVzaW5nIHJvdXRlciBuYXZpZ2F0aW9uIEFQSXMuICBUaGlzIGNhbiBhbHNvIGhhcHBlbiBpZiB5b3UgYXJlIHVzaW5nIGNyZWF0ZUhhc2hSb3V0ZXIgYW5kIHRoZSB1c2VyIG1hbnVhbGx5IGNoYW5nZXMgdGhlIFVSTC4iKTtsZXQgaT1zdCh7Y3VycmVudExvY2F0aW9uOmoubG9jYXRpb24sbmV4dExvY2F0aW9uOm4saGlzdG9yeUFjdGlvbjpyfSk7cmV0dXJuIGkmJm51bGwhPW8/KGtlPSEwLGUuaGlzdG9yeS5nbygtMSpvKSx2b2lkIGF0KGkse3N0YXRlOiJibG9ja2VkIixsb2NhdGlvbjpuLHByb2NlZWQoKXthdChpLHtzdGF0ZToicHJvY2VlZGluZyIscHJvY2VlZDp2b2lkIDAscmVzZXQ6dm9pZCAwLGxvY2F0aW9uOm59KSxlLmhpc3RvcnkuZ28obyl9LHJlc2V0KCl7bGV0IGU9bmV3IE1hcChqLmJsb2NrZXJzKTtlLnNldChpLHRlKSx4ZSh7YmxvY2tlcnM6ZX0pfX0pKTpEZShyLG4pfSkpLG8peyFmdW5jdGlvbihlLHQpe3RyeXtsZXQgcj1lLnNlc3Npb25TdG9yYWdlLmdldEl0ZW0ob2UpO2lmKHIpe2xldCBlPUpTT04ucGFyc2Uocik7Zm9yKGxldFtyLG5db2YgT2JqZWN0LmVudHJpZXMoZXx8e30pKW4mJkFycmF5LmlzQXJyYXkobikmJnQuc2V0KHIsbmV3IFNldChufHxbXSkpfX1jYXRjaChlKXt9fSh0LHopO2xldCBlPSgpPT5mdW5jdGlvbihlLHQpe2lmKHQuc2l6ZT4wKXtsZXQgcj17fTtmb3IobGV0W2Usbl1vZiB0KXJbZV09Wy4uLm5dO3RyeXtlLnNlc3Npb25TdG9yYWdlLnNldEl0ZW0ob2UsSlNPTi5zdHJpbmdpZnkocikpfWNhdGNoKGUpe2EoITEsIkZhaWxlZCB0byBzYXZlIGFwcGxpZWQgdmlldyB0cmFuc2l0aW9ucyBpbiBzZXNzaW9uU3RvcmFnZSAoIitlKyIpLiIpfX19KHQseik7dC5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsZSksQj0oKT0+dC5yZW1vdmVFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsZSl9cmV0dXJuIGouaW5pdGlhbGl6ZWR8fERlKG4uUG9wLGoubG9jYXRpb24se2luaXRpYWxIeWRyYXRpb246ITB9KSxwfSxzdWJzY3JpYmU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUuYWRkKGUpLCgpPT5FLmRlbGV0ZShlKX0sZW5hYmxlU2Nyb2xsUmVzdG9yYXRpb246ZnVuY3Rpb24oZSx0LHIpe2lmKEE9ZSxSPXQsVD1yfHxudWxsLCFQJiZqLm5hdmlnYXRpb249PT1RKXtQPSEwO2xldCBlPWR0KGoubG9jYXRpb24sai5tYXRjaGVzKTtudWxsIT1lJiZ4ZSh7cmVzdG9yZVNjcm9sbFBvc2l0aW9uOmV9KX1yZXR1cm4oKT0+e0E9bnVsbCxSPW51bGwsVD1udWxsfX0sbmF2aWdhdGU6YXN5bmMgZnVuY3Rpb24gdChvLGkpe2lmKCJudW1iZXIiPT10eXBlb2YgbylyZXR1cm4gdm9pZCBlLmhpc3RvcnkuZ28obyk7bGV0IGE9c2Uoai5sb2NhdGlvbixqLm1hdGNoZXMsYixrLnY3X3ByZXBlbmRCYXNlbmFtZSxvLGsudjdfcmVsYXRpdmVTcGxhdFBhdGgsbnVsbD09aT92b2lkIDA6aS5mcm9tUm91dGVJZCxudWxsPT1pP3ZvaWQgMDppLnJlbGF0aXZlKSx7cGF0aDpzLHN1Ym1pc3Npb246dSxlcnJvcjpsfT1jZShrLnY3X25vcm1hbGl6ZUZvcm1NZXRob2QsITEsYSxpKSxmPWoubG9jYXRpb24sZD1jKGoubG9jYXRpb24scyxpJiZpLnN0YXRlKTtkPXIoe30sZCxlLmhpc3RvcnkuZW5jb2RlTG9jYXRpb24oZCkpO2xldCBwPWkmJm51bGwhPWkucmVwbGFjZT9pLnJlcGxhY2U6dm9pZCAwLF89bi5QdXNoOyEwPT09cD9fPW4uUmVwbGFjZTohMT09PXB8fG51bGwhPXUmJnplKHUuZm9ybU1ldGhvZCkmJnUuZm9ybUFjdGlvbj09PWoubG9jYXRpb24ucGF0aG5hbWUrai5sb2NhdGlvbi5zZWFyY2gmJihfPW4uUmVwbGFjZSk7bGV0IGg9aSYmInByZXZlbnRTY3JvbGxSZXNldCJpbiBpPyEwPT09aS5wcmV2ZW50U2Nyb2xsUmVzZXQ6dm9pZCAwLG09ITA9PT0oaSYmaS51bnN0YWJsZV9mbHVzaFN5bmMpLHk9c3Qoe2N1cnJlbnRMb2NhdGlvbjpmLG5leHRMb2NhdGlvbjpkLGhpc3RvcnlBY3Rpb246X30pO2lmKCF5KXJldHVybiBhd2FpdCBEZShfLGQse3N1Ym1pc3Npb246dSxwZW5kaW5nRXJyb3I6bCxwcmV2ZW50U2Nyb2xsUmVzZXQ6aCxyZXBsYWNlOmkmJmkucmVwbGFjZSxlbmFibGVWaWV3VHJhbnNpdGlvbjppJiZpLnVuc3RhYmxlX3ZpZXdUcmFuc2l0aW9uLGZsdXNoU3luYzptfSk7YXQoeSx7c3RhdGU6ImJsb2NrZWQiLGxvY2F0aW9uOmQscHJvY2VlZCgpe2F0KHkse3N0YXRlOiJwcm9jZWVkaW5nIixwcm9jZWVkOnZvaWQgMCxyZXNldDp2b2lkIDAsbG9jYXRpb246ZH0pLHQobyxpKX0scmVzZXQoKXtsZXQgZT1uZXcgTWFwKGouYmxvY2tlcnMpO2Uuc2V0KHksdGUpLHhlKHtibG9ja2VyczplfSl9fSl9LGZldGNoOmZ1bmN0aW9uKHQscixuLG8pe2lmKHMpdGhyb3cgbmV3IEVycm9yKCJyb3V0ZXIuZmV0Y2goKSB3YXMgY2FsbGVkIGR1cmluZyB0aGUgc2VydmVyIHJlbmRlciwgYnV0IGl0IHNob3VsZG4ndCBiZS4gWW91IGFyZSBsaWtlbHkgY2FsbGluZyBhIHVzZUZldGNoZXIoKSBtZXRob2QgaW4gdGhlIGJvZHkgb2YgeW91ciBjb21wb25lbnQuIFRyeSBtb3ZpbmcgaXQgdG8gYSB1c2VFZmZlY3Qgb3IgYSBjYWxsYmFjay4iKTtWLmhhcyh0KSYmdHQodCk7bGV0IGE9ITA9PT0obyYmby51bnN0YWJsZV9mbHVzaFN5bmMpLGM9bHx8dix1PXNlKGoubG9jYXRpb24sai5tYXRjaGVzLGIsay52N19wcmVwZW5kQmFzZW5hbWUsbixrLnY3X3JlbGF0aXZlU3BsYXRQYXRoLHIsbnVsbD09bz92b2lkIDA6by5yZWxhdGl2ZSksZj1oKGMsdSxiKSxkPXB0KGYsYyx1KTtpZihkLmFjdGl2ZSYmZC5tYXRjaGVzJiYoZj1kLm1hdGNoZXMpLCFmKXJldHVybiB2b2lkIFplKHQscixQZSg0MDQse3BhdGhuYW1lOnV9KSx7Zmx1c2hTeW5jOmF9KTtsZXR7cGF0aDpwLHN1Ym1pc3Npb246XyxlcnJvcjptfT1jZShrLnY3X25vcm1hbGl6ZUZvcm1NZXRob2QsITAsdSxvKTtpZihtKXJldHVybiB2b2lkIFplKHQscixtLHtmbHVzaFN5bmM6YX0pO2xldCB5PSRlKGYscCk7TD0hMD09PShvJiZvLnByZXZlbnRTY3JvbGxSZXNldCksXyYmemUoXy5mb3JtTWV0aG9kKT9hc3luYyBmdW5jdGlvbih0LHIsbixvLGEscyxjLHUpe2Z1bmN0aW9uIGYoZSl7aWYoIWUucm91dGUuYWN0aW9uJiYhZS5yb3V0ZS5sYXp5KXtsZXQgZT1QZSg0MDUse21ldGhvZDp1LmZvcm1NZXRob2QscGF0aG5hbWU6bixyb3V0ZUlkOnJ9KTtyZXR1cm4gWmUodCxyLGUse2ZsdXNoU3luYzpjfSksITB9cmV0dXJuITF9aWYoSmUoKSxhZS5kZWxldGUodCksIXMmJmYobykpcmV0dXJuO2xldCBkPWouZmV0Y2hlcnMuZ2V0KHQpO1hlKHQsZnVuY3Rpb24oZSx0KXtsZXQgcj17c3RhdGU6InN1Ym1pdHRpbmciLGZvcm1NZXRob2Q6ZS5mb3JtTWV0aG9kLGZvcm1BY3Rpb246ZS5mb3JtQWN0aW9uLGZvcm1FbmNUeXBlOmUuZm9ybUVuY1R5cGUsZm9ybURhdGE6ZS5mb3JtRGF0YSxqc29uOmUuanNvbix0ZXh0OmUudGV4dCxkYXRhOnQ/dC5kYXRhOnZvaWQgMH07cmV0dXJuIHJ9KHUsZCkse2ZsdXNoU3luYzpjfSk7bGV0IHA9bmV3IEFib3J0Q29udHJvbGxlcixfPXdlKGUuaGlzdG9yeSxuLHAuc2lnbmFsLHUpO2lmKHMpe2xldCBlPWF3YWl0IF90KGEsbixfLnNpZ25hbCk7aWYoImFib3J0ZWQiPT09ZS50eXBlKXJldHVybjtpZigiZXJyb3IiPT09ZS50eXBlKXtsZXR7ZXJyb3I6b309dXQobixlKTtyZXR1cm4gdm9pZCBaZSh0LHIsbyx7Zmx1c2hTeW5jOmN9KX1pZighZS5tYXRjaGVzKXJldHVybiB2b2lkIFplKHQscixQZSg0MDQse3BhdGhuYW1lOm59KSx7Zmx1c2hTeW5jOmN9KTtpZihmKG89JGUoYT1lLm1hdGNoZXMsbikpKXJldHVybn1WLnNldCh0LHApO2xldCBtPVkseT1hd2FpdCBXZSgiYWN0aW9uIixfLFtvXSxhKSxnPXlbMF07aWYoXy5zaWduYWwuYWJvcnRlZClyZXR1cm4gdm9pZChWLmdldCh0KT09PXAmJlYuZGVsZXRlKHQpKTtpZihrLnY3X2ZldGNoZXJQZXJzaXN0JiZmZS5oYXModCkpe2lmKGplKGcpfHxJZShnKSlyZXR1cm4gdm9pZCBYZSh0LFllKHZvaWQgMCkpfWVsc2V7aWYoamUoZykpcmV0dXJuIFYuZGVsZXRlKHQpLEs+bT92b2lkIFhlKHQsWWUodm9pZCAwKSk6KGllLmFkZCh0KSxYZSh0LFZlKHUpKSxVZShfLGcse2ZldGNoZXJTdWJtaXNzaW9uOnV9KSk7aWYoSWUoZykpcmV0dXJuIHZvaWQgWmUodCxyLGcuZXJyb3IpfWlmKEZlKGcpKXRocm93IFBlKDQwMCx7dHlwZToiZGVmZXItYWN0aW9uIn0pO2xldCB3PWoubmF2aWdhdGlvbi5sb2NhdGlvbnx8ai5sb2NhdGlvbixTPXdlKGUuaGlzdG9yeSx3LHAuc2lnbmFsKSx4PWx8fHYsRT0iaWRsZSIhPT1qLm5hdmlnYXRpb24uc3RhdGU/aCh4LGoubmF2aWdhdGlvbi5sb2NhdGlvbixiKTpqLm1hdGNoZXM7aShFLCJEaWRuJ3QgZmluZCBhbnkgbWF0Y2hlcyBhZnRlciBmZXRjaGVyIGFjdGlvbiIpO2xldCBBPSsrWTtYLnNldCh0LEEpO2xldCBUPVZlKHUsZy5kYXRhKTtqLmZldGNoZXJzLnNldCh0LFQpO2xldFtSLFBdPWxlKGUuaGlzdG9yeSxqLEUsdSx3LCExLGsudW5zdGFibGVfc2tpcEFjdGlvbkVycm9yUmV2YWxpZGF0aW9uLFcsJCxHLGZlLGFlLGllLHgsYixbby5yb3V0ZS5pZCxnXSk7UC5maWx0ZXIoKGU9PmUua2V5IT09dCkpLmZvckVhY2goKGU9PntsZXQgdD1lLmtleSxyPWouZmV0Y2hlcnMuZ2V0KHQpLG49VmUodm9pZCAwLHI/ci5kYXRhOnZvaWQgMCk7ai5mZXRjaGVycy5zZXQodCxuKSxWLmhhcyh0KSYmdHQodCksZS5jb250cm9sbGVyJiZWLnNldCh0LGUuY29udHJvbGxlcil9KSkseGUoe2ZldGNoZXJzOm5ldyBNYXAoai5mZXRjaGVycyl9KTtsZXQgTz0oKT0+UC5mb3JFYWNoKChlPT50dChlLmtleSkpKTtwLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsTyk7bGV0e2xvYWRlclJlc3VsdHM6TSxmZXRjaGVyUmVzdWx0czpGfT1hd2FpdCBLZShqLm1hdGNoZXMsRSxSLFAsUyk7aWYocC5zaWduYWwuYWJvcnRlZClyZXR1cm47cC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLE8pLFguZGVsZXRlKHQpLFYuZGVsZXRlKHQpLFAuZm9yRWFjaCgoZT0+Vi5kZWxldGUoZS5rZXkpKSk7bGV0IEw9T2UoWy4uLk0sLi4uRl0pO2lmKEwpe2lmKEwuaWR4Pj1SLmxlbmd0aCl7bGV0IGU9UFtMLmlkeC1SLmxlbmd0aF0ua2V5O2llLmFkZChlKX1yZXR1cm4gVWUoUyxMLnJlc3VsdCl9bGV0e2xvYWRlckRhdGE6VSxlcnJvcnM6en09RWUoaixqLm1hdGNoZXMsUixNLHZvaWQgMCxQLEYsZGUpO2lmKGouZmV0Y2hlcnMuaGFzKHQpKXtsZXQgZT1ZZShnLmRhdGEpO2ouZmV0Y2hlcnMuc2V0KHQsZSl9b3QoQSksImxvYWRpbmciPT09ai5uYXZpZ2F0aW9uLnN0YXRlJiZBPks/KGkoRCwiRXhwZWN0ZWQgcGVuZGluZyBhY3Rpb24iKSxJJiZJLmFib3J0KCksTmUoai5uYXZpZ2F0aW9uLmxvY2F0aW9uLHttYXRjaGVzOkUsbG9hZGVyRGF0YTpVLGVycm9yczp6LGZldGNoZXJzOm5ldyBNYXAoai5mZXRjaGVycyl9KSk6KHhlKHtlcnJvcnM6eixsb2FkZXJEYXRhOkNlKGoubG9hZGVyRGF0YSxVLEUseiksZmV0Y2hlcnM6bmV3IE1hcChqLmZldGNoZXJzKX0pLFc9ITEpfSh0LHIscCx5LGYsZC5hY3RpdmUsYSxfKTooYWUuc2V0KHQse3JvdXRlSWQ6cixwYXRoOnB9KSxhc3luYyBmdW5jdGlvbih0LHIsbixvLGEscyxjLHUpe2xldCBsPWouZmV0Y2hlcnMuZ2V0KHQpO1hlKHQsVmUodSxsP2wuZGF0YTp2b2lkIDApLHtmbHVzaFN5bmM6Y30pO2xldCBmPW5ldyBBYm9ydENvbnRyb2xsZXIsZD13ZShlLmhpc3RvcnksbixmLnNpZ25hbCk7aWYocyl7bGV0IGU9YXdhaXQgX3QoYSxuLGQuc2lnbmFsKTtpZigiYWJvcnRlZCI9PT1lLnR5cGUpcmV0dXJuO2lmKCJlcnJvciI9PT1lLnR5cGUpe2xldHtlcnJvcjpvfT11dChuLGUpO3JldHVybiB2b2lkIFplKHQscixvLHtmbHVzaFN5bmM6Y30pfWlmKCFlLm1hdGNoZXMpcmV0dXJuIHZvaWQgWmUodCxyLFBlKDQwNCx7cGF0aG5hbWU6bn0pLHtmbHVzaFN5bmM6Y30pO289JGUoYT1lLm1hdGNoZXMsbil9Vi5zZXQodCxmKTtsZXQgcD1ZLF89YXdhaXQgV2UoImxvYWRlciIsZCxbb10sYSksaD1fWzBdO0ZlKGgpJiYoaD1hd2FpdCBIZShoLGQuc2lnbmFsLCEwKXx8aCk7Vi5nZXQodCk9PT1mJiZWLmRlbGV0ZSh0KTtpZihkLnNpZ25hbC5hYm9ydGVkKXJldHVybjtpZihmZS5oYXModCkpcmV0dXJuIHZvaWQgWGUodCxZZSh2b2lkIDApKTtpZihqZShoKSlyZXR1cm4gSz5wP3ZvaWQgWGUodCxZZSh2b2lkIDApKTooaWUuYWRkKHQpLHZvaWQgYXdhaXQgVWUoZCxoKSk7aWYoSWUoaCkpcmV0dXJuIHZvaWQgWmUodCxyLGguZXJyb3IpO2koIUZlKGgpLCJVbmhhbmRsZWQgZmV0Y2hlciBkZWZlcnJlZCBkYXRhIiksWGUodCxZZShoLmRhdGEpKX0odCxyLHAseSxmLGQuYWN0aXZlLGEsXykpfSxyZXZhbGlkYXRlOmZ1bmN0aW9uKCl7SmUoKSx4ZSh7cmV2YWxpZGF0aW9uOiJsb2FkaW5nIn0pLCJzdWJtaXR0aW5nIiE9PWoubmF2aWdhdGlvbi5zdGF0ZSYmKCJpZGxlIiE9PWoubmF2aWdhdGlvbi5zdGF0ZT9EZShEfHxqLmhpc3RvcnlBY3Rpb24sai5uYXZpZ2F0aW9uLmxvY2F0aW9uLHtvdmVycmlkZU5hdmlnYXRpb246ai5uYXZpZ2F0aW9ufSk6RGUoai5oaXN0b3J5QWN0aW9uLGoubG9jYXRpb24se3N0YXJ0VW5pbnRlcnJ1cHRlZFJldmFsaWRhdGlvbjohMH0pKX0sY3JlYXRlSHJlZjp0PT5lLmhpc3RvcnkuY3JlYXRlSHJlZih0KSxlbmNvZGVMb2NhdGlvbjp0PT5lLmhpc3RvcnkuZW5jb2RlTG9jYXRpb24odCksZ2V0RmV0Y2hlcjpRZSxkZWxldGVGZXRjaGVyOmZ1bmN0aW9uKGUpe2lmKGsudjdfZmV0Y2hlclBlcnNpc3Qpe2xldCB0PSh1ZS5nZXQoZSl8fDApLTE7dDw9MD8odWUuZGVsZXRlKGUpLGZlLmFkZChlKSk6dWUuc2V0KGUsdCl9ZWxzZSBldChlKTt4ZSh7ZmV0Y2hlcnM6bmV3IE1hcChqLmZldGNoZXJzKX0pfSxkaXNwb3NlOmZ1bmN0aW9uKCl7eCYmeCgpLEImJkIoKSxFLmNsZWFyKCksSSYmSS5hYm9ydCgpLGouZmV0Y2hlcnMuZm9yRWFjaCgoKGUsdCk9PmV0KHQpKSksai5ibG9ja2Vycy5mb3JFYWNoKCgoZSx0KT0+aXQodCkpKX0sZ2V0QmxvY2tlcjpmdW5jdGlvbihlLHQpe2xldCByPWouYmxvY2tlcnMuZ2V0KGUpfHx0ZTtyZXR1cm4gaGUuZ2V0KGUpIT09dCYmaGUuc2V0KGUsdCkscn0sZGVsZXRlQmxvY2tlcjppdCxwYXRjaFJvdXRlcyhlLHQpe3JldHVybiBfZShlLHQsdnx8bCxnLHUpfSxfaW50ZXJuYWxGZXRjaENvbnRyb2xsZXJzOlYsX2ludGVybmFsQWN0aXZlRGVmZXJyZWRzOmRlLF9pbnRlcm5hbFNldFJvdXRlczpmdW5jdGlvbihlKXtnPXt9LGw9XyhlLHUsdm9pZCAwLGcpfX0scH0sdC5jcmVhdGVTdGF0aWNIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7aShlLmxlbmd0aD4wLCJZb3UgbXVzdCBwcm92aWRlIGEgbm9uLWVtcHR5IHJvdXRlcyBhcnJheSB0byBjcmVhdGVTdGF0aWNIYW5kbGVyIik7bGV0IG4sbz17fSxhPSh0P3QuYmFzZW5hbWU6bnVsbCl8fCIvIjtpZihudWxsIT10JiZ0Lm1hcFJvdXRlUHJvcGVydGllcyluPXQubWFwUm91dGVQcm9wZXJ0aWVzO2Vsc2UgaWYobnVsbCE9dCYmdC5kZXRlY3RFcnJvckJvdW5kYXJ5KXtsZXQgZT10LmRldGVjdEVycm9yQm91bmRhcnk7bj10PT4oe2hhc0Vycm9yQm91bmRhcnk6ZSh0KX0pfWVsc2Ugbj1uZTtsZXQgcz1yKHt2N19yZWxhdGl2ZVNwbGF0UGF0aDohMSx2N190aHJvd0Fib3J0UmVhc29uOiExfSx0P3QuZnV0dXJlOm51bGwpLGw9XyhlLG4sdm9pZCAwLG8pO2FzeW5jIGZ1bmN0aW9uIGYoZSx0LG4sbyxhLGMsdSl7aShlLnNpZ25hbCwicXVlcnkoKS9xdWVyeVJvdXRlKCkgcmVxdWVzdHMgbXVzdCBjb250YWluIGFuIEFib3J0Q29udHJvbGxlciBzaWduYWwiKTt0cnl7aWYoemUoZS5tZXRob2QudG9Mb3dlckNhc2UoKSkpe2xldCBpPWF3YWl0IGFzeW5jIGZ1bmN0aW9uKGUsdCxuLG8saSxhLGMpe2xldCB1O2lmKG4ucm91dGUuYWN0aW9ufHxuLnJvdXRlLmxhenkpe3U9KGF3YWl0IG0oImFjdGlvbiIsZSxbbl0sdCxjLG8saSkpWzBdLGUuc2lnbmFsLmFib3J0ZWQmJmFlKGUsYyxzKX1lbHNle2xldCB0PVBlKDQwNSx7bWV0aG9kOmUubWV0aG9kLHBhdGhuYW1lOm5ldyBVUkwoZS51cmwpLnBhdGhuYW1lLHJvdXRlSWQ6bi5yb3V0ZS5pZH0pO2lmKGMpdGhyb3cgdDt1PXt0eXBlOmQuZXJyb3IsZXJyb3I6dH19aWYoamUodSkpdGhyb3cgbmV3IFJlc3BvbnNlKG51bGwse3N0YXR1czp1LnJlc3BvbnNlLnN0YXR1cyxoZWFkZXJzOntMb2NhdGlvbjp1LnJlc3BvbnNlLmhlYWRlcnMuZ2V0KCJMb2NhdGlvbiIpfX0pO2lmKEZlKHUpKXtsZXQgZT1QZSg0MDAse3R5cGU6ImRlZmVyLWFjdGlvbiJ9KTtpZihjKXRocm93IGU7dT17dHlwZTpkLmVycm9yLGVycm9yOmV9fWlmKGMpe2lmKEllKHUpKXRocm93IHUuZXJyb3I7cmV0dXJue21hdGNoZXM6W25dLGxvYWRlckRhdGE6e30sYWN0aW9uRGF0YTp7W24ucm91dGUuaWRdOnUuZGF0YX0sZXJyb3JzOm51bGwsc3RhdHVzQ29kZToyMDAsbG9hZGVySGVhZGVyczp7fSxhY3Rpb25IZWFkZXJzOnt9LGFjdGl2ZURlZmVycmVkczpudWxsfX1sZXQgbD1uZXcgUmVxdWVzdChlLnVybCx7aGVhZGVyczplLmhlYWRlcnMscmVkaXJlY3Q6ZS5yZWRpcmVjdCxzaWduYWw6ZS5zaWduYWx9KTtpZihJZSh1KSl7bGV0IGU9YT9uOlRlKHQsbi5yb3V0ZS5pZCk7cmV0dXJuIHIoe30sYXdhaXQgcChsLHQsbyxpLGEsbnVsbCxbZS5yb3V0ZS5pZCx1XSkse3N0YXR1c0NvZGU6cSh1LmVycm9yKT91LmVycm9yLnN0YXR1czpudWxsIT11LnN0YXR1c0NvZGU/dS5zdGF0dXNDb2RlOjUwMCxhY3Rpb25EYXRhOm51bGwsYWN0aW9uSGVhZGVyczpyKHt9LHUuaGVhZGVycz97W24ucm91dGUuaWRdOnUuaGVhZGVyc306e30pfSl9bGV0IGY9YXdhaXQgcChsLHQsbyxpLGEsbnVsbCk7cmV0dXJuIHIoe30sZix7YWN0aW9uRGF0YTp7W24ucm91dGUuaWRdOnUuZGF0YX19LHUuc3RhdHVzQ29kZT97c3RhdHVzQ29kZTp1LnN0YXR1c0NvZGV9Ont9LHthY3Rpb25IZWFkZXJzOnUuaGVhZGVycz97W24ucm91dGUuaWRdOnUuaGVhZGVyc306e319KX0oZSxuLHV8fCRlKG4sdCksbyxhLGMsbnVsbCE9dSk7cmV0dXJuIGl9bGV0IGk9YXdhaXQgcChlLG4sbyxhLGMsdSk7cmV0dXJuIExlKGkpP2k6cih7fSxpLHthY3Rpb25EYXRhOm51bGwsYWN0aW9uSGVhZGVyczp7fX0pfWNhdGNoKGUpe2lmKG51bGwhPShsPWUpJiYib2JqZWN0Ij09dHlwZW9mIGwmJiJ0eXBlImluIGwmJiJyZXN1bHQiaW4gbCYmKGwudHlwZT09PWQuZGF0YXx8bC50eXBlPT09ZC5lcnJvcikmJkxlKGUucmVzdWx0KSl7aWYoZS50eXBlPT09ZC5lcnJvcil0aHJvdyBlLnJlc3VsdDtyZXR1cm4gZS5yZXN1bHR9aWYoZnVuY3Rpb24oZSl7aWYoIUxlKGUpKXJldHVybiExO2xldCB0PWUuc3RhdHVzLHI9ZS5oZWFkZXJzLmdldCgiTG9jYXRpb24iKTtyZXR1cm4gdD49MzAwJiZ0PD0zOTkmJm51bGwhPXJ9KGUpKXJldHVybiBlO3Rocm93IGV9dmFyIGx9YXN5bmMgZnVuY3Rpb24gcChlLHQsbixvLGksYSxjKXtsZXQgdT1udWxsIT1hO2lmKHUmJihudWxsPT1hfHwhYS5yb3V0ZS5sb2FkZXIpJiYobnVsbD09YXx8IWEucm91dGUubGF6eSkpdGhyb3cgUGUoNDAwLHttZXRob2Q6ZS5tZXRob2QscGF0aG5hbWU6bmV3IFVSTChlLnVybCkucGF0aG5hbWUscm91dGVJZDpudWxsPT1hP3ZvaWQgMDphLnJvdXRlLmlkfSk7bGV0IGw9KGE/W2FdOmMmJkllKGNbMV0pP3VlKHQsY1swXSk6dCkuZmlsdGVyKChlPT5lLnJvdXRlLmxvYWRlcnx8ZS5yb3V0ZS5sYXp5KSk7aWYoMD09PWwubGVuZ3RoKXJldHVybnttYXRjaGVzOnQsbG9hZGVyRGF0YTp0LnJlZHVjZSgoKGUsdCk9Pk9iamVjdC5hc3NpZ24oZSx7W3Qucm91dGUuaWRdOm51bGx9KSkse30pLGVycm9yczpjJiZJZShjWzFdKT97W2NbMF1dOmNbMV0uZXJyb3J9Om51bGwsc3RhdHVzQ29kZToyMDAsbG9hZGVySGVhZGVyczp7fSxhY3RpdmVEZWZlcnJlZHM6bnVsbH07bGV0IGY9YXdhaXQgbSgibG9hZGVyIixlLGwsdCx1LG4sbyk7ZS5zaWduYWwuYWJvcnRlZCYmYWUoZSx1LHMpO2xldCBkPW5ldyBNYXAscD14ZSh0LGwsZixjLGQsaSksXz1uZXcgU2V0KGwubWFwKChlPT5lLnJvdXRlLmlkKSkpO3JldHVybiB0LmZvckVhY2goKGU9PntfLmhhcyhlLnJvdXRlLmlkKXx8KHAubG9hZGVyRGF0YVtlLnJvdXRlLmlkXT1udWxsKX0pKSxyKHt9LHAse21hdGNoZXM6dCxhY3RpdmVEZWZlcnJlZHM6ZC5zaXplPjA/T2JqZWN0LmZyb21FbnRyaWVzKGQuZW50cmllcygpKTpudWxsfSl9YXN5bmMgZnVuY3Rpb24gbShlLHQscixpLGMsdSxsKXtsZXQgZj1hd2FpdCB5ZShsfHxtZSxlLHQscixpLG8sbix1KTtyZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoZi5tYXAoKChlLG4pPT57aWYoTWUoZSkpe3Rocm93IHZlKGUucmVzdWx0LHQscltuXS5yb3V0ZS5pZCxpLGEscy52N19yZWxhdGl2ZVNwbGF0UGF0aCl9aWYoTGUoZS5yZXN1bHQpJiZjKXRocm93IGU7cmV0dXJuIGdlKGUpfSkpKX1yZXR1cm57ZGF0YVJvdXRlczpsLHF1ZXJ5OmFzeW5jIGZ1bmN0aW9uKGUsdCl7bGV0e3JlcXVlc3RDb250ZXh0Om4sc2tpcExvYWRlckVycm9yQnViYmxpbmc6byx1bnN0YWJsZV9kYXRhU3RyYXRlZ3k6aX09dm9pZCAwPT09dD97fTp0LHM9bmV3IFVSTChlLnVybCksZD1lLm1ldGhvZCxwPWMoIiIsdShzKSxudWxsLCJkZWZhdWx0IiksXz1oKGwscCxhKTtpZighVWUoZCkmJiJIRUFEIiE9PWQpe2xldCBlPVBlKDQwNSx7bWV0aG9kOmR9KSx7bWF0Y2hlczp0LHJvdXRlOnJ9PVJlKGwpO3JldHVybntiYXNlbmFtZTphLGxvY2F0aW9uOnAsbWF0Y2hlczp0LGxvYWRlckRhdGE6e30sYWN0aW9uRGF0YTpudWxsLGVycm9yczp7W3IuaWRdOmV9LHN0YXR1c0NvZGU6ZS5zdGF0dXMsbG9hZGVySGVhZGVyczp7fSxhY3Rpb25IZWFkZXJzOnt9LGFjdGl2ZURlZmVycmVkczpudWxsfX1pZighXyl7bGV0IGU9UGUoNDA0LHtwYXRobmFtZTpwLnBhdGhuYW1lfSkse21hdGNoZXM6dCxyb3V0ZTpyfT1SZShsKTtyZXR1cm57YmFzZW5hbWU6YSxsb2NhdGlvbjpwLG1hdGNoZXM6dCxsb2FkZXJEYXRhOnt9LGFjdGlvbkRhdGE6bnVsbCxlcnJvcnM6e1tyLmlkXTplfSxzdGF0dXNDb2RlOmUuc3RhdHVzLGxvYWRlckhlYWRlcnM6e30sYWN0aW9uSGVhZGVyczp7fSxhY3RpdmVEZWZlcnJlZHM6bnVsbH19bGV0IG09YXdhaXQgZihlLHAsXyxuLGl8fG51bGwsITA9PT1vLG51bGwpO3JldHVybiBMZShtKT9tOnIoe2xvY2F0aW9uOnAsYmFzZW5hbWU6YX0sbSl9LHF1ZXJ5Um91dGU6YXN5bmMgZnVuY3Rpb24oZSx0KXtsZXR7cm91dGVJZDpyLHJlcXVlc3RDb250ZXh0Om4sdW5zdGFibGVfZGF0YVN0cmF0ZWd5Om99PXZvaWQgMD09PXQ/e306dCxpPW5ldyBVUkwoZS51cmwpLHM9ZS5tZXRob2QsZD1jKCIiLHUoaSksbnVsbCwiZGVmYXVsdCIpLHA9aChsLGQsYSk7aWYoIVVlKHMpJiYiSEVBRCIhPT1zJiYiT1BUSU9OUyIhPT1zKXRocm93IFBlKDQwNSx7bWV0aG9kOnN9KTtpZighcCl0aHJvdyBQZSg0MDQse3BhdGhuYW1lOmQucGF0aG5hbWV9KTtsZXQgXz1yP3AuZmluZCgoZT0+ZS5yb3V0ZS5pZD09PXIpKTokZShwLGQpO2lmKHImJiFfKXRocm93IFBlKDQwMyx7cGF0aG5hbWU6ZC5wYXRobmFtZSxyb3V0ZUlkOnJ9KTtpZighXyl0aHJvdyBQZSg0MDQse3BhdGhuYW1lOmQucGF0aG5hbWV9KTtsZXQgbT1hd2FpdCBmKGUsZCxwLG4sb3x8bnVsbCwhMSxfKTtpZihMZShtKSlyZXR1cm4gbTtsZXQgeT1tLmVycm9ycz9PYmplY3QudmFsdWVzKG0uZXJyb3JzKVswXTp2b2lkIDA7aWYodm9pZCAwIT09eSl0aHJvdyB5O2lmKG0uYWN0aW9uRGF0YSlyZXR1cm4gT2JqZWN0LnZhbHVlcyhtLmFjdGlvbkRhdGEpWzBdO2lmKG0ubG9hZGVyRGF0YSl7dmFyIGc7bGV0IGU9T2JqZWN0LnZhbHVlcyhtLmxvYWRlckRhdGEpWzBdO3JldHVybiBudWxsIT0oZz1tLmFjdGl2ZURlZmVycmVkcykmJmdbXy5yb3V0ZS5pZF0mJihlW2llXT1tLmFjdGl2ZURlZmVycmVkc1tfLnJvdXRlLmlkXSksZX19fX0sdC5kZWZlcj1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD17fSksbmV3IERlZmVycmVkRGF0YShlLCJudW1iZXIiPT10eXBlb2YgdD97c3RhdHVzOnR9OnQpfSx0LmdlbmVyYXRlUGF0aD1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PXt9KTtsZXQgcj1lO3IuZW5kc1dpdGgoIioiKSYmIioiIT09ciYmIXIuZW5kc1dpdGgoIi8qIikmJihhKCExLCdSb3V0ZSBwYXRoICInK3IrJyIgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIGl0IHdlcmUgIicrci5yZXBsYWNlKC9cKiQvLCIvKiIpKyciIGJlY2F1c2UgdGhlIGAqYCBjaGFyYWN0ZXIgbXVzdCBhbHdheXMgZm9sbG93IGEgYC9gIGluIHRoZSBwYXR0ZXJuLiBUbyBnZXQgcmlkIG9mIHRoaXMgd2FybmluZywgcGxlYXNlIGNoYW5nZSB0aGUgcm91dGUgcGF0aCB0byAiJytyLnJlcGxhY2UoL1wqJC8sIi8qIikrJyIuJykscj1yLnJlcGxhY2UoL1wqJC8sIi8qIikpO2NvbnN0IG49ci5zdGFydHNXaXRoKCIvIik/Ii8iOiIiLG89ZT0+bnVsbD09ZT8iIjoic3RyaW5nIj09dHlwZW9mIGU/ZTpTdHJpbmcoZSk7cmV0dXJuIG4rci5zcGxpdCgvXC8rLykubWFwKCgoZSxyLG4pPT57aWYocj09PW4ubGVuZ3RoLTEmJiIqIj09PWUpe3JldHVybiBvKHRbIioiXSl9Y29uc3QgYT1lLm1hdGNoKC9eOihbXHctXSspKFw/PykkLyk7aWYoYSl7Y29uc3RbLGUscl09YTtsZXQgbj10W2VdO3JldHVybiBpKCI/Ij09PXJ8fG51bGwhPW4sJ01pc3NpbmcgIjonK2UrJyIgcGFyYW0nKSxvKG4pfXJldHVybiBlLnJlcGxhY2UoL1w/JC9nLCIiKX0pKS5maWx0ZXIoKGU9PiEhZSkpLmpvaW4oIi8iKX0sdC5nZXRTdGF0aWNDb250ZXh0RnJvbUVycm9yPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcih7fSx0LHtzdGF0dXNDb2RlOnEobik/bi5zdGF0dXM6NTAwLGVycm9yczp7W3QuX2RlZXBlc3RSZW5kZXJlZEJvdW5kYXJ5SWR8fGVbMF0uaWRdOm59fSl9LHQuZ2V0VG9QYXRobmFtZT1mdW5jdGlvbihlKXtyZXR1cm4iIj09PWV8fCIiPT09ZS5wYXRobmFtZT8iLyI6InN0cmluZyI9PXR5cGVvZiBlP2woZSkucGF0aG5hbWU6ZS5wYXRobmFtZX0sdC5pc0RlZmVycmVkRGF0YT1EZSx0LmlzUm91dGVFcnJvclJlc3BvbnNlPXEsdC5qb2luUGF0aHM9VSx0Lmpzb249ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD17fSk7bGV0IG49Im51bWJlciI9PXR5cGVvZiB0P3tzdGF0dXM6dH06dCxvPW5ldyBIZWFkZXJzKG4uaGVhZGVycyk7cmV0dXJuIG8uaGFzKCJDb250ZW50LVR5cGUiKXx8by5zZXQoIkNvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgiKSxuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkoZSkscih7fSxuLHtoZWFkZXJzOm99KSl9LHQubWF0Y2hQYXRoPVAsdC5tYXRjaFJvdXRlcz1oLHQubm9ybWFsaXplUGF0aG5hbWU9eix0LnBhcnNlUGF0aD1sLHQucmVkaXJlY3Q9JCx0LnJlZGlyZWN0RG9jdW1lbnQ9KGUsdCk9PntsZXQgcj0kKGUsdCk7cmV0dXJuIHIuaGVhZGVycy5zZXQoIlgtUmVtaXgtUmVsb2FkLURvY3VtZW50IiwidHJ1ZSIpLHJ9LHQucmVzb2x2ZVBhdGg9Rix0LnJlc29sdmVUbz1MLHQuc3RyaXBCYXNlbmFtZT1NfSwxNzMzNjpmdW5jdGlvbihlLHQscil7dmFyIG49cig3NTYxNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpLGE9dHx8e307ZnVuY3Rpb24gcyhlKXtvKGV8fG5ldyBFcnJvcigiQWJvcnRlZCIpKX1mdW5jdGlvbiBjKGUsdCl7ZS5iYWlsP3MoZSk6aS5yZXRyeShlKT9hLm9uUmV0cnkmJmEub25SZXRyeShlLHQpOm8oaS5tYWluRXJyb3IoKSl9InJhbmRvbWl6ZSJpbiBhfHwoYS5yYW5kb21pemU9ITApLChpPW4ub3BlcmF0aW9uKGEpKS5hdHRlbXB0KChmdW5jdGlvbih0KXt2YXIgbjt0cnl7bj1lKHMsdCl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgYyhlLHQpfVByb21pc2UucmVzb2x2ZShuKS50aGVuKHIpLmNhdGNoKChmdW5jdGlvbihlKXtjKGUsdCl9KSl9KSl9KSl9fSwyNDYwMTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNzg0MjApLG89cigxMzgzOCksaT1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKG4oZSkpcmV0dXJuIGU7dGhyb3cgaShvKGUpKyIgaXMgbm90IGEgZnVuY3Rpb24iKX19LDU3ODQ5OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxNDY2KSxvPXIoMTM4MzgpLGk9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihuKGUpKXJldHVybiBlO3Rocm93IGkobyhlKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIil9fSw3NDczOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig3ODQyMCksbz1TdHJpbmcsaT1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZXx8bihlKSlyZXR1cm4gZTt0aHJvdyBpKCJDYW4ndCBzZXQgIitvKGUpKyIgYXMgYSBwcm90b3R5cGUiKX19LDQwMjk4OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMTYwMiksbz1yKDUzMTA1KSxpPXIoNDM2MTApLmYsYT1uKCJ1bnNjb3BhYmxlcyIpLHM9QXJyYXkucHJvdG90eXBlO3ZvaWQgMD09PXNbYV0mJmkocyxhLHtjb25maWd1cmFibGU6ITAsdmFsdWU6byhudWxsKX0pLGUuZXhwb3J0cz1mdW5jdGlvbihlKXtzW2FdW2VdPSEwfX0sNjcyMzQ6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDc3ODA0KS5jaGFyQXQ7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdCsocj9uKGUsdCkubGVuZ3RoOjEpfX0sNjUxOTA6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDQ3NjU4KSxvPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihuKHQsZSkpcmV0dXJuIGU7dGhyb3cgbygiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LDczOTM4OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig2NTMzNSksbz1TdHJpbmcsaT1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKG4oZSkpcmV0dXJuIGU7dGhyb3cgaShvKGUpKyIgaXMgbm90IGFuIG9iamVjdCIpfX0sNjYwMDQ6ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYidW5kZWZpbmVkIiE9dHlwZW9mIERhdGFWaWV3fSw4NTM0MzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuLG8saSxhPXIoNjYwMDQpLHM9cig2NTA3NyksYz1yKDMwMjAwKSx1PXIoNzg0MjApLGw9cig2NTMzNSksZj1yKDM2NDkwKSxkPXIoODMwNjIpLHA9cigxMzgzOCksXz1yKDk3NzEyKSxoPXIoNzQ4NSksbT1yKDc2NDc3KSx5PXIoNDc2NTgpLGc9cig5Nzk3MCksdj1yKDM5Njg2KSxiPXIoMzE2MDIpLHc9cig1MDY2NSksUz1yKDk5MjA2KSxrPVMuZW5mb3JjZSx4PVMuZ2V0LEU9Yy5JbnQ4QXJyYXksQT1FJiZFLnByb3RvdHlwZSxUPWMuVWludDhDbGFtcGVkQXJyYXksUj1UJiZULnByb3RvdHlwZSxQPUUmJmcoRSksTz1BJiZnKEEpLE09T2JqZWN0LnByb3RvdHlwZSxGPWMuVHlwZUVycm9yLEk9YigidG9TdHJpbmdUYWciKSxqPXcoIlRZUEVEX0FSUkFZX1RBRyIpLEQ9IlR5cGVkQXJyYXlDb25zdHJ1Y3RvciIsTD1hJiYhIXYmJiJPcGVyYSIhPT1kKGMub3BlcmEpLFU9ITEsej17SW50OEFycmF5OjEsVWludDhBcnJheToxLFVpbnQ4Q2xhbXBlZEFycmF5OjEsSW50MTZBcnJheToyLFVpbnQxNkFycmF5OjIsSW50MzJBcnJheTo0LFVpbnQzMkFycmF5OjQsRmxvYXQzMkFycmF5OjQsRmxvYXQ2NEFycmF5Ojh9LEI9e0JpZ0ludDY0QXJyYXk6OCxCaWdVaW50NjRBcnJheTo4fSxIPWZ1bmN0aW9uKGUpe3ZhciB0PWcoZSk7aWYobCh0KSl7dmFyIHI9eCh0KTtyZXR1cm4gciYmZihyLEQpP3JbRF06SCh0KX19LFc9ZnVuY3Rpb24oZSl7aWYoIWwoZSkpcmV0dXJuITE7dmFyIHQ9ZChlKTtyZXR1cm4gZih6LHQpfHxmKEIsdCl9O2ZvcihuIGluIHopKGk9KG89Y1tuXSkmJm8ucHJvdG90eXBlKT9rKGkpW0RdPW86TD0hMTtmb3IobiBpbiBCKShpPShvPWNbbl0pJiZvLnByb3RvdHlwZSkmJihrKGkpW0RdPW8pO2lmKCghTHx8IXUoUCl8fFA9PT1GdW5jdGlvbi5wcm90b3R5cGUpJiYoUD1mdW5jdGlvbigpe3Rocm93IEYoIkluY29ycmVjdCBpbnZvY2F0aW9uIil9LEwpKWZvcihuIGluIHopY1tuXSYmdihjW25dLFApO2lmKCghTHx8IU98fE89PT1NKSYmKE89UC5wcm90b3R5cGUsTCkpZm9yKG4gaW4geiljW25dJiZ2KGNbbl0ucHJvdG90eXBlLE8pO2lmKEwmJmcoUikhPT1PJiZ2KFIsTykscyYmIWYoTyxJKSlmb3IobiBpbiBVPSEwLG0oTyxJLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcyk/dGhpc1tqXTp2b2lkIDB9fSkseiljW25dJiZfKGNbbl0saixuKTtlLmV4cG9ydHM9e05BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M6TCxUWVBFRF9BUlJBWV9UQUc6VSYmaixhVHlwZWRBcnJheTpmdW5jdGlvbihlKXtpZihXKGUpKXJldHVybiBlO3Rocm93IEYoIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSIpfSxhVHlwZWRBcnJheUNvbnN0cnVjdG9yOmZ1bmN0aW9uKGUpe2lmKHUoZSkmJighdnx8eShQLGUpKSlyZXR1cm4gZTt0aHJvdyBGKHAoZSkrIiBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciIpfSxleHBvcnRUeXBlZEFycmF5TWV0aG9kOmZ1bmN0aW9uKGUsdCxyLG4pe2lmKHMpe2lmKHIpZm9yKHZhciBvIGluIHope3ZhciBpPWNbb107aWYoaSYmZihpLnByb3RvdHlwZSxlKSl0cnl7ZGVsZXRlIGkucHJvdG90eXBlW2VdfWNhdGNoKHIpe3RyeXtpLnByb3RvdHlwZVtlXT10fWNhdGNoKGUpe319fU9bZV0mJiFyfHxoKE8sZSxyP3Q6TCYmQVtlXXx8dCxuKX19LGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLG87aWYocyl7aWYodil7aWYocilmb3IobiBpbiB6KWlmKChvPWNbbl0pJiZmKG8sZSkpdHJ5e2RlbGV0ZSBvW2VdfWNhdGNoKGUpe31pZihQW2VdJiYhcilyZXR1cm47dHJ5e3JldHVybiBoKFAsZSxyP3Q6TCYmUFtlXXx8dCl9Y2F0Y2goZSl7fX1mb3IobiBpbiB6KSEobz1jW25dKXx8b1tlXSYmIXJ8fGgobyxlLHQpfX0sZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yOkgsaXNWaWV3OmZ1bmN0aW9uKGUpe2lmKCFsKGUpKXJldHVybiExO3ZhciB0PWQoZSk7cmV0dXJuIkRhdGFWaWV3Ij09PXR8fGYoeix0KXx8ZihCLHQpfSxpc1R5cGVkQXJyYXk6VyxUeXBlZEFycmF5OlAsVHlwZWRBcnJheVByb3RvdHlwZTpPfX0sNDA0NDc6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIzNDkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MCxvPW4odCksaT1uZXcgZShvKTtvPnI7KWlbcl09dFtyKytdO3JldHVybiBpfX0sNTgxODY6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDU0NzYpLG89cig2NTM5KSxpPXIoMjM0OTMpLGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXt2YXIgcyxjPW4odCksdT1pKGMpLGw9byhhLHUpO2lmKGUmJnIhPXIpe2Zvcig7dT5sOylpZigocz1jW2wrK10pIT1zKXJldHVybiEwfWVsc2UgZm9yKDt1Pmw7bCsrKWlmKChlfHxsIGluIGMpJiZjW2xdPT09cilyZXR1cm4gZXx8bHx8MDtyZXR1cm4hZSYmLTF9fTtlLmV4cG9ydHM9e2luY2x1ZGVzOmEoITApLGluZGV4T2Y6YSghMSl9fSw0NTU4MjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDY4ODUpLG89cig0ODY2NCksaT1yKDkyNjEyKSxhPXIoMjM0OTMpLHM9ZnVuY3Rpb24oZSl7dmFyIHQ9MT09PWU7cmV0dXJuIGZ1bmN0aW9uKHIscyxjKXtmb3IodmFyIHUsbD1pKHIpLGY9byhsKSxkPW4ocyxjKSxwPWEoZik7cC0tID4wOylpZihkKHU9ZltwXSxwLGwpKXN3aXRjaChlKXtjYXNlIDA6cmV0dXJuIHU7Y2FzZSAxOnJldHVybiBwfXJldHVybiB0Py0xOnZvaWQgMH19O2UuZXhwb3J0cz17ZmluZExhc3Q6cygwKSxmaW5kTGFzdEluZGV4OnMoMSl9fSwyOTYwOTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMzAyODEpO2UuZXhwb3J0cz1uKFtdLnNsaWNlKX0sOTM4OTI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE4Njc5KSxvPXIoMTQ2NiksaT1yKDY1MzM1KSxhPXIoMzE2MDIpKCJzcGVjaWVzIikscz1BcnJheTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIG4oZSkmJih0PWUuY29uc3RydWN0b3IsKG8odCkmJih0PT09c3x8bih0LnByb3RvdHlwZSkpfHxpKHQpJiZudWxsPT09KHQ9dFthXSkpJiYodD12b2lkIDApKSx2b2lkIDA9PT10P3M6dH19LDYyOTk4OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig5Mzg5Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyhuKGUpKSgwPT09dD8wOnQpfX0sOTQwMzM6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIzNDkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9bihlKSxvPW5ldyB0KHIpLGk9MDtpPHI7aSsrKW9baV09ZVtyLWktMV07cmV0dXJuIG99fSw1MTg2NzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjM0OTMpLG89cig3OTMyOCksaT1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixhKXt2YXIgcz1uKGUpLGM9byhyKSx1PWM8MD9zK2M6YztpZih1Pj1zfHx1PDApdGhyb3cgaSgiSW5jb3JyZWN0IGluZGV4Iik7Zm9yKHZhciBsPW5ldyB0KHMpLGY9MDtmPHM7ZisrKWxbZl09Zj09PXU/YTplW2ZdO3JldHVybiBsfX0sOTc0OTk6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDMxNjAyKSgiaXRlcmF0b3IiKSxvPSExO3RyeXt2YXIgaT0wLGE9e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTohIWkrK319LHJldHVybjpmdW5jdGlvbigpe289ITB9fTthW25dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LEFycmF5LmZyb20oYSwoZnVuY3Rpb24oKXt0aHJvdyAyfSkpfWNhdGNoKGUpe31lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighdCYmIW8pcmV0dXJuITE7dmFyIHI9ITE7dHJ5e3ZhciBpPXt9O2lbbl09ZnVuY3Rpb24oKXtyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOnI9ITB9fX19LGUoaSl9Y2F0Y2goZSl7fXJldHVybiByfX0sMTg1Njk6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDMwMjgxKSxvPW4oe30udG9TdHJpbmcpLGk9bigiIi5zbGljZSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBpKG8oZSksOCwtMSl9fSw4MzA2MjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDMxMjkpLG89cig3ODQyMCksaT1yKDE4NTY5KSxhPXIoMzE2MDIpKCJ0b1N0cmluZ1RhZyIpLHM9T2JqZWN0LGM9IkFyZ3VtZW50cyI9PT1pKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk7ZS5leHBvcnRzPW4/aTpmdW5jdGlvbihlKXt2YXIgdCxyLG47cmV0dXJuIHZvaWQgMD09PWU/IlVuZGVmaW5lZCI6bnVsbD09PWU/Ik51bGwiOiJzdHJpbmciPT10eXBlb2Yocj1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gZVt0XX1jYXRjaChlKXt9fSh0PXMoZSksYSkpP3I6Yz9pKHQpOiJPYmplY3QiPT09KG49aSh0KSkmJm8odC5jYWxsZWUpPyJBcmd1bWVudHMiOm59fSw4NDM2MTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMzY0OTApLG89cigxNTgxNiksaT1yKDk3NjMyKSxhPXIoNDM2MTApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBzPW8odCksYz1hLmYsdT1pLmYsbD0wO2w8cy5sZW5ndGg7bCsrKXt2YXIgZj1zW2xdO24oZSxmKXx8ciYmbihyLGYpfHxjKGUsZix1KHQsZikpfX19LDcxNjg6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDkyMDc0KTtlLmV4cG9ydHM9IW4oKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZS5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbCxPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IGUpIT09ZS5wcm90b3R5cGV9KSl9LDQ4Mjk2OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dmFsdWU6ZSxkb25lOnR9fX0sOTc3MTI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDY1MDc3KSxvPXIoNDM2MTApLGk9cig2Njg0Myk7ZS5leHBvcnRzPW4/ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBvLmYoZSx0LGkoMSxyKSl9OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yLGV9fSw2Njg0MzpmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2VudW1lcmFibGU6ISgxJmUpLGNvbmZpZ3VyYWJsZTohKDImZSksd3JpdGFibGU6ISg0JmUpLHZhbHVlOnR9fX0sNTIwNTc6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDg2MDMyKSxvPXIoNDM2MTApLGk9cig2Njg0Myk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgYT1uKHQpO2EgaW4gZT9vLmYoZSxhLGkoMCxyKSk6ZVthXT1yfX0sNzY0Nzc6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDQ4MjE4KSxvPXIoNDM2MTApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7cmV0dXJuIHIuZ2V0JiZuKHIuZ2V0LHQse2dldHRlcjohMH0pLHIuc2V0JiZuKHIuc2V0LHQse3NldHRlcjohMH0pLG8uZihlLHQscil9fSw3NDg1OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig3ODQyMCksbz1yKDQzNjEwKSxpPXIoNDgyMTgpLGE9cig1OTQzMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLHMpe3N8fChzPXt9KTt2YXIgYz1zLmVudW1lcmFibGUsdT12b2lkIDAhPT1zLm5hbWU/cy5uYW1lOnQ7aWYobihyKSYmaShyLHUscykscy5nbG9iYWwpYz9lW3RdPXI6YSh0LHIpO2Vsc2V7dHJ5e3MudW5zYWZlP2VbdF0mJihjPSEwKTpkZWxldGUgZVt0XX1jYXRjaChlKXt9Yz9lW3RdPXI6by5mKGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohcy5ub25Db25maWd1cmFibGUsd3JpdGFibGU6IXMubm9uV3JpdGFibGV9KX1yZXR1cm4gZX19LDU5NDMwOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDIwMCksbz1PYmplY3QuZGVmaW5lUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dHJ5e28obixlLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfWNhdGNoKHIpe25bZV09dH1yZXR1cm4gdH19LDY1MDc3OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig5MjA3NCk7ZS5leHBvcnRzPSFuKChmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSkpfSw5NjU2ODpmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7dmFyIHQ9Im9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuYWxsLHI9dm9pZCAwPT09dCYmdm9pZCAwIT09dDtlLmV4cG9ydHM9e2FsbDp0LElTX0hUTUxEREE6cn19LDIzMjYyOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDIwMCksbz1yKDY1MzM1KSxpPW4uZG9jdW1lbnQsYT1vKGkpJiZvKGkuY3JlYXRlRWxlbWVudCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhP2kuY3JlYXRlRWxlbWVudChlKTp7fX19LDU3MjQyOmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGU+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyB0KCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtyZXR1cm4gZX19LDI2NTY3OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e0luZGV4U2l6ZUVycm9yOntzOiJJTkRFWF9TSVpFX0VSUiIsYzoxLG06MX0sRE9NU3RyaW5nU2l6ZUVycm9yOntzOiJET01TVFJJTkdfU0laRV9FUlIiLGM6MixtOjB9LEhpZXJhcmNoeVJlcXVlc3RFcnJvcjp7czoiSElFUkFSQ0hZX1JFUVVFU1RfRVJSIixjOjMsbToxfSxXcm9uZ0RvY3VtZW50RXJyb3I6e3M6IldST05HX0RPQ1VNRU5UX0VSUiIsYzo0LG06MX0sSW52YWxpZENoYXJhY3RlckVycm9yOntzOiJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiLGM6NSxtOjF9LE5vRGF0YUFsbG93ZWRFcnJvcjp7czoiTk9fREFUQV9BTExPV0VEX0VSUiIsYzo2LG06MH0sTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3I6e3M6Ik5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiIsYzo3LG06MX0sTm90Rm91bmRFcnJvcjp7czoiTk9UX0ZPVU5EX0VSUiIsYzo4LG06MX0sTm90U3VwcG9ydGVkRXJyb3I6e3M6Ik5PVF9TVVBQT1JURURfRVJSIixjOjksbToxfSxJblVzZUF0dHJpYnV0ZUVycm9yOntzOiJJTlVTRV9BVFRSSUJVVEVfRVJSIixjOjEwLG06MX0sSW52YWxpZFN0YXRlRXJyb3I6e3M6IklOVkFMSURfU1RBVEVfRVJSIixjOjExLG06MX0sU3ludGF4RXJyb3I6e3M6IlNZTlRBWF9FUlIiLGM6MTIsbToxfSxJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3I6e3M6IklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiIsYzoxMyxtOjF9LE5hbWVzcGFjZUVycm9yOntzOiJOQU1FU1BBQ0VfRVJSIixjOjE0LG06MX0sSW52YWxpZEFjY2Vzc0Vycm9yOntzOiJJTlZBTElEX0FDQ0VTU19FUlIiLGM6MTUsbToxfSxWYWxpZGF0aW9uRXJyb3I6e3M6IlZBTElEQVRJT05fRVJSIixjOjE2LG06MH0sVHlwZU1pc21hdGNoRXJyb3I6e3M6IlRZUEVfTUlTTUFUQ0hfRVJSIixjOjE3LG06MX0sU2VjdXJpdHlFcnJvcjp7czoiU0VDVVJJVFlfRVJSIixjOjE4LG06MX0sTmV0d29ya0Vycm9yOntzOiJORVRXT1JLX0VSUiIsYzoxOSxtOjF9LEFib3J0RXJyb3I6e3M6IkFCT1JUX0VSUiIsYzoyMCxtOjF9LFVSTE1pc21hdGNoRXJyb3I6e3M6IlVSTF9NSVNNQVRDSF9FUlIiLGM6MjEsbToxfSxRdW90YUV4Y2VlZGVkRXJyb3I6e3M6IlFVT1RBX0VYQ0VFREVEX0VSUiIsYzoyMixtOjF9LFRpbWVvdXRFcnJvcjp7czoiVElNRU9VVF9FUlIiLGM6MjMsbToxfSxJbnZhbGlkTm9kZVR5cGVFcnJvcjp7czoiSU5WQUxJRF9OT0RFX1RZUEVfRVJSIixjOjI0LG06MX0sRGF0YUNsb25lRXJyb3I6e3M6IkRBVEFfQ0xPTkVfRVJSIixjOjI1LG06MX19fSwzODUyMzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjA0MTkpLG89cig3NTIyMyk7ZS5leHBvcnRzPSFuJiYhbyYmIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJiJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnR9LDIwNDE5OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBEZW5vJiZEZW5vJiYib2JqZWN0Ij09dHlwZW9mIERlbm8udmVyc2lvbn0sMTI2NzE6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDQ3MDYxKTtlLmV4cG9ydHM9L2lwYWR8aXBob25lfGlwb2QvaS50ZXN0KG4pJiYidW5kZWZpbmVkIiE9dHlwZW9mIFBlYmJsZX0sNjIwNTA6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDQ3MDYxKTtlLmV4cG9ydHM9Lyg/OmlwYWR8aXBob25lfGlwb2QpLiphcHBsZXdlYmtpdC9pLnRlc3Qobil9LDc1MjIzOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDIwMCksbz1yKDE4NTY5KTtlLmV4cG9ydHM9InByb2Nlc3MiPT09byhuLnByb2Nlc3MpfSw5NDMxODpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDcwNjEpO2UuZXhwb3J0cz0vd2ViMHMoPyEuKmNocm9tZSkvaS50ZXN0KG4pfSw0NzA2MTpmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPSJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiZTdHJpbmcobmF2aWdhdG9yLnVzZXJBZ2VudCl8fCIifSw2ODQ1OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4sbyxpPXIoMzAyMDApLGE9cig0NzA2MSkscz1pLnByb2Nlc3MsYz1pLkRlbm8sdT1zJiZzLnZlcnNpb25zfHxjJiZjLnZlcnNpb24sbD11JiZ1LnY4O2wmJihvPShuPWwuc3BsaXQoIi4iKSlbMF0+MCYmblswXTw0PzE6KyhuWzBdK25bMV0pKSwhbyYmYSYmKCEobj1hLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8blsxXT49NzQpJiYobj1hLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYobz0rblsxXSksZS5leHBvcnRzPW99LDQyNzAxOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDIwMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuW2VdLnByb3RvdHlwZX19LDMwMjkwOmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sNDY0NTI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDMwMjgxKSxvPUVycm9yLGk9bigiIi5yZXBsYWNlKSxhPVN0cmluZyhvKCJ6eGNhc2QiKS5zdGFjaykscz0vXG5ccyphdCBbXjpdKjpbXlxuXSovLGM9cy50ZXN0KGEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGMmJiJzdHJpbmciPT10eXBlb2YgZSYmIW8ucHJlcGFyZVN0YWNrVHJhY2UpZm9yKDt0LS07KWU9aShlLHMsIiIpO3JldHVybiBlfX0sMTcxMDI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDk3NzEyKSxvPXIoNDY0NTIpLGk9cig3MDQ2MiksYT1FcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIscyl7aSYmKGE/YShlLHQpOm4oZSwic3RhY2siLG8ocixzKSkpfX0sNzA0NjI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDkyMDc0KSxvPXIoNjY4NDMpO2UuZXhwb3J0cz0hbigoZnVuY3Rpb24oKXt2YXIgZT1FcnJvcigiYSIpO3JldHVybiEoInN0YWNrImluIGUpfHwoT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInN0YWNrIixvKDEsNykpLDchPT1lLnN0YWNrKX0pKX0sNzMzNTM6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDY1MDc3KSxvPXIoOTIwNzQpLGk9cig3MzkzOCksYT1yKDUzMTA1KSxzPXIoMjA2MTApLGM9RXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLHU9bygoZnVuY3Rpb24oKXtpZihuKXt2YXIgZT1hKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwibmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzPT09ZX19KSk7aWYoInRydWUiIT09Yy5jYWxsKGUpKXJldHVybiEwfXJldHVybiIyOiAxIiE9PWMuY2FsbCh7bWVzc2FnZToxLG5hbWU6Mn0pfHwiRXJyb3IiIT09Yy5jYWxsKHt9KX0pKTtlLmV4cG9ydHM9dT9mdW5jdGlvbigpe3ZhciBlPWkodGhpcyksdD1zKGUubmFtZSwiRXJyb3IiKSxyPXMoZS5tZXNzYWdlKTtyZXR1cm4gdD9yP3QrIjogIityOnQ6cn06Y30sNTE2MDU6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDMwMjAwKSxvPXIoOTc2MzIpLmYsaT1yKDk3NzEyKSxhPXIoNzQ4NSkscz1yKDU5NDMwKSxjPXIoODQzNjEpLHU9cig4NDk3Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbCxmLGQscCxfPWUudGFyZ2V0LGg9ZS5nbG9iYWwsbT1lLnN0YXQ7aWYocj1oP246bT9uW19dfHxzKF8se30pOihuW19dfHx7fSkucHJvdG90eXBlKWZvcihsIGluIHQpe2lmKGQ9dFtsXSxmPWUuZG9udENhbGxHZXRTZXQ/KHA9byhyLGwpKSYmcC52YWx1ZTpyW2xdLCF1KGg/bDpfKyhtPyIuIjoiIyIpK2wsZS5mb3JjZWQpJiZ2b2lkIDAhPT1mKXtpZih0eXBlb2YgZD09dHlwZW9mIGYpY29udGludWU7YyhkLGYpfShlLnNoYW18fGYmJmYuc2hhbSkmJmkoZCwic2hhbSIsITApLGEocixsLGQsZSl9fX0sOTIwNzQ6ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuISFlKCl9Y2F0Y2goZSl7cmV0dXJuITB9fX0sODk2MDg6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE4Njc5KSxvPXIoMjM0OTMpLGk9cig1NzI0MiksYT1yKDQ2ODg1KSxzPWZ1bmN0aW9uKGUsdCxyLGMsdSxsLGYsZCl7Zm9yKHZhciBwLF8saD11LG09MCx5PSEhZiYmYShmLGQpO208YzspbSBpbiByJiYocD15P3koclttXSxtLHQpOnJbbV0sbD4wJiZuKHApPyhfPW8ocCksaD1zKGUsdCxwLF8saCxsLTEpLTEpOihpKGgrMSksZVtoXT1wKSxoKyspLG0rKztyZXR1cm4gaH07ZS5leHBvcnRzPXN9LDk5MDcwOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzODgyMyksbz1GdW5jdGlvbi5wcm90b3R5cGUsaT1vLmFwcGx5LGE9by5jYWxsO2UuZXhwb3J0cz0ib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuYXBwbHl8fChuP2EuYmluZChpKTpmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGksYXJndW1lbnRzKX0pfSw0Njg4NTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDMwOTEpLG89cigyNDYwMSksaT1yKDM4ODIzKSxhPW4obi5iaW5kKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbyhlKSx2b2lkIDA9PT10P2U6aT9hKGUsdCk6ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fX0sMzg4MjM6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDkyMDc0KTtlLmV4cG9ydHM9IW4oKGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgZXx8ZS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KSl9LDcyMzY4OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzODgyMyksbz1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtlLmV4cG9ydHM9bj9vLmJpbmQobyk6ZnVuY3Rpb24oKXtyZXR1cm4gby5hcHBseShvLGFyZ3VtZW50cyl9fSwxMjA3MTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNjUwNzcpLG89cigzNjQ5MCksaT1GdW5jdGlvbi5wcm90b3R5cGUsYT1uJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHM9byhpLCJuYW1lIiksYz1zJiYic29tZXRoaW5nIj09PWZ1bmN0aW9uKCl7fS5uYW1lLHU9cyYmKCFufHxuJiZhKGksIm5hbWUiKS5jb25maWd1cmFibGUpO2UuZXhwb3J0cz17RVhJU1RTOnMsUFJPUEVSOmMsQ09ORklHVVJBQkxFOnV9fSwxMTM4NTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMzAyODEpLG89cigyNDYwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt0cnl7cmV0dXJuIG4obyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdClbcl0pKX1jYXRjaChlKXt9fX0sNDMwOTE6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE4NTY5KSxvPXIoMzAyODEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiRnVuY3Rpb24iPT09bihlKSlyZXR1cm4gbyhlKX19LDMwMjgxOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzODgyMyksbz1GdW5jdGlvbi5wcm90b3R5cGUsaT1vLmNhbGwsYT1uJiZvLmJpbmQuYmluZChpLGkpO2UuZXhwb3J0cz1uP2E6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGkuYXBwbHkoZSxhcmd1bWVudHMpfX19LDU2NDkyOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDIwMCksbz1yKDc4NDIwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyPyhyPW5bZV0sbyhyKT9yOnZvaWQgMCk6bltlXSYmbltlXVt0XTt2YXIgcn19LDUxODk4OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig4MzA2Miksbz1yKDQ2NDU3KSxpPXIoODg0MDYpLGE9cig1MjIyOCkscz1yKDMxNjAyKSgiaXRlcmF0b3IiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIWkoZSkpcmV0dXJuIG8oZSxzKXx8byhlLCJAQGl0ZXJhdG9yIil8fGFbbihlKV19fSw3OTUyNjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNzIzNjgpLG89cigyNDYwMSksaT1yKDczOTM4KSxhPXIoMTM4MzgpLHM9cig1MTg5OCksYz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDwyP3MoZSk6dDtpZihvKHIpKXJldHVybiBpKG4ocixlKSk7dGhyb3cgYyhhKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9fSw0NjQ1NzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjQ2MDEpLG89cig4ODQwNik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZVt0XTtyZXR1cm4gbyhyKT92b2lkIDA6bihyKX19LDk0NDMzOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDI4MSksbz1yKDkyNjEyKSxpPU1hdGguZmxvb3IsYT1uKCIiLmNoYXJBdCkscz1uKCIiLnJlcGxhY2UpLGM9bigiIi5zbGljZSksdT0vXCQoWyQmJ2BdfFxkezEsMn18PFtePl0qPikvZyxsPS9cJChbJCYnYF18XGR7MSwyfSkvZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbixmLGQpe3ZhciBwPXIrZS5sZW5ndGgsXz1uLmxlbmd0aCxoPWw7cmV0dXJuIHZvaWQgMCE9PWYmJihmPW8oZiksaD11KSxzKGQsaCwoZnVuY3Rpb24obyxzKXt2YXIgdTtzd2l0Y2goYShzLDApKXtjYXNlIiQiOnJldHVybiIkIjtjYXNlIiYiOnJldHVybiBlO2Nhc2UiYCI6cmV0dXJuIGModCwwLHIpO2Nhc2UiJyI6cmV0dXJuIGModCxwKTtjYXNlIjwiOnU9ZltjKHMsMSwtMSldO2JyZWFrO2RlZmF1bHQ6dmFyIGw9K3M7aWYoMD09PWwpcmV0dXJuIG87aWYobD5fKXt2YXIgZD1pKGwvMTApO3JldHVybiAwPT09ZD9vOmQ8PV8/dm9pZCAwPT09bltkLTFdP2EocywxKTpuW2QtMV0rYShzLDEpOm99dT1uW2wtMV19cmV0dXJuIHZvaWQgMD09PXU/IiI6dX0pKX19LDMwMjAwOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuTWF0aD09PU1hdGgmJmV9O2UuZXhwb3J0cz1uKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyl8fG4oIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyl8fG4oIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmKXx8bigib2JqZWN0Ij09dHlwZW9mIHIuZyYmci5nKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8dGhpc3x8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0sMzY0OTA6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDMwMjgxKSxvPXIoOTI2MTIpLGk9bih7fS5oYXNPd25Qcm9wZXJ0eSk7ZS5leHBvcnRzPU9iamVjdC5oYXNPd258fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkobyhlKSx0KX19LDY3NzA4OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e319LDI4ODkwOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig1NjQ5Mik7ZS5leHBvcnRzPW4oImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LDg3Njk0OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig2NTA3Nyksbz1yKDkyMDc0KSxpPXIoMjMyNjIpO2UuZXhwb3J0cz0hbiYmIW8oKGZ1bmN0aW9uKCl7cmV0dXJuIDchPT1PYmplY3QuZGVmaW5lUHJvcGVydHkoaSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpfSw0ODY2NDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMzAyODEpLG89cig5MjA3NCksaT1yKDE4NTY5KSxhPU9iamVjdCxzPW4oIiIuc3BsaXQpO2UuZXhwb3J0cz1vKChmdW5jdGlvbigpe3JldHVybiFhKCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCl9KSk/ZnVuY3Rpb24oZSl7cmV0dXJuIlN0cmluZyI9PT1pKGUpP3MoZSwiIik6YShlKX06YX0sOTMwNTQ6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDc4NDIwKSxvPXIoNjUzMzUpLGk9cigzOTY4Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgYSxzO3JldHVybiBpJiZuKGE9dC5jb25zdHJ1Y3RvcikmJmEhPT1yJiZvKHM9YS5wcm90b3R5cGUpJiZzIT09ci5wcm90b3R5cGUmJmkoZSxzKSxlfX0sNjk5NjU6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDMwMjgxKSxvPXIoNzg0MjApLGk9cig0OTMxMCksYT1uKEZ1bmN0aW9uLnRvU3RyaW5nKTtvKGkuaW5zcGVjdFNvdXJjZSl8fChpLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSl9KSxlLmV4cG9ydHM9aS5pbnNwZWN0U291cmNlfSw1NTgzMzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNjUzMzUpLG89cig5NzcxMik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7bih0KSYmImNhdXNlImluIHQmJm8oZSwiY2F1c2UiLHQuY2F1c2UpfX0sOTkyMDY6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixvLGksYT1yKDgzNjkpLHM9cigzMDIwMCksYz1yKDY1MzM1KSx1PXIoOTc3MTIpLGw9cigzNjQ5MCksZj1yKDQ5MzEwKSxkPXIoMjU5MDQpLHA9cig2NzcwOCksXz0iT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQiLGg9cy5UeXBlRXJyb3IsbT1zLldlYWtNYXA7aWYoYXx8Zi5zdGF0ZSl7dmFyIHk9Zi5zdGF0ZXx8KGYuc3RhdGU9bmV3IG0pO3kuZ2V0PXkuZ2V0LHkuaGFzPXkuaGFzLHkuc2V0PXkuc2V0LG49ZnVuY3Rpb24oZSx0KXtpZih5LmhhcyhlKSl0aHJvdyBoKF8pO3JldHVybiB0LmZhY2FkZT1lLHkuc2V0KGUsdCksdH0sbz1mdW5jdGlvbihlKXtyZXR1cm4geS5nZXQoZSl8fHt9fSxpPWZ1bmN0aW9uKGUpe3JldHVybiB5LmhhcyhlKX19ZWxzZXt2YXIgZz1kKCJzdGF0ZSIpO3BbZ109ITAsbj1mdW5jdGlvbihlLHQpe2lmKGwoZSxnKSl0aHJvdyBoKF8pO3JldHVybiB0LmZhY2FkZT1lLHUoZSxnLHQpLHR9LG89ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSxnKT9lW2ddOnt9fSxpPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUsZyl9fWUuZXhwb3J0cz17c2V0Om4sZ2V0Om8saGFzOmksZW5mb3JjZTpmdW5jdGlvbihlKXtyZXR1cm4gaShlKT9vKGUpOm4oZSx7fSl9LGdldHRlckZvcjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI7aWYoIWModCl8fChyPW8odCkpLnR5cGUhPT1lKXRocm93IGgoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIitlKyIgcmVxdWlyZWQiKTtyZXR1cm4gcn19fX0sOTkwMzQ6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDMxNjAyKSxvPXIoNTIyMjgpLGk9bigiaXRlcmF0b3IiKSxhPUFycmF5LnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJihvLkFycmF5PT09ZXx8YVtpXT09PWUpfX0sMTg2Nzk6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE4NTY5KTtlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuIkFycmF5Ij09PW4oZSl9fSw1NzQ3MjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoODMwNjIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUpO3JldHVybiJCaWdJbnQ2NEFycmF5Ij09PXR8fCJCaWdVaW50NjRBcnJheSI9PT10fX0sNzg0MjA6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDk2NTY4KSxvPW4uYWxsO2UuZXhwb3J0cz1uLklTX0hUTUxEREE/ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV8fGU9PT1vfTpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX19LDE0NjY6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDMwMjgxKSxvPXIoOTIwNzQpLGk9cig3ODQyMCksYT1yKDgzMDYyKSxzPXIoNTY0OTIpLGM9cig2OTk2NSksdT1mdW5jdGlvbigpe30sbD1bXSxmPXMoIlJlZmxlY3QiLCJjb25zdHJ1Y3QiKSxkPS9eXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXGIvLHA9bihkLmV4ZWMpLF89IWQuZXhlYyh1KSxoPWZ1bmN0aW9uKGUpe2lmKCFpKGUpKXJldHVybiExO3RyeXtyZXR1cm4gZih1LGwsZSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSxtPWZ1bmN0aW9uKGUpe2lmKCFpKGUpKXJldHVybiExO3N3aXRjaChhKGUpKXtjYXNlIkFzeW5jRnVuY3Rpb24iOmNhc2UiR2VuZXJhdG9yRnVuY3Rpb24iOmNhc2UiQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiI6cmV0dXJuITF9dHJ5e3JldHVybiBffHwhIXAoZCxjKGUpKX1jYXRjaChlKXtyZXR1cm4hMH19O20uc2hhbT0hMCxlLmV4cG9ydHM9IWZ8fG8oKGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIGgoaC5jYWxsKXx8IWgoT2JqZWN0KXx8IWgoKGZ1bmN0aW9uKCl7ZT0hMH0pKXx8ZX0pKT9tOmh9LDg0OTc3OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig5MjA3NCksbz1yKDc4NDIwKSxpPS8jfFwucHJvdG90eXBlXC4vLGE9ZnVuY3Rpb24oZSx0KXt2YXIgcj1jW3MoZSldO3JldHVybiByPT09bHx8ciE9PXUmJihvKHQpP24odCk6ISF0KX0scz1hLm5vcm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoaSwiLiIpLnRvTG93ZXJDYXNlKCl9LGM9YS5kYXRhPXt9LHU9YS5OQVRJVkU9Ik4iLGw9YS5QT0xZRklMTD0iUCI7ZS5leHBvcnRzPWF9LDg4NDA2OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9fSw2NTMzNTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNzg0MjApLG89cig5NjU2OCksaT1vLmFsbDtlLmV4cG9ydHM9by5JU19IVE1MRERBP2Z1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZT9udWxsIT09ZTpuKGUpfHxlPT09aX06ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlP251bGwhPT1lOm4oZSl9fSw2OTI2OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ITF9LDYyNDQ5OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig2NTMzNSksbz1yKDE4NTY5KSxpPXIoMzE2MDIpKCJtYXRjaCIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gbihlKSYmKHZvaWQgMCE9PSh0PWVbaV0pPyEhdDoiUmVnRXhwIj09PW8oZSkpfX0sMzIzMjg6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDU2NDkyKSxvPXIoNzg0MjApLGk9cig0NzY1OCksYT1yKDUyMjUpLHM9T2JqZWN0O2UuZXhwb3J0cz1hP2Z1bmN0aW9uKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZX06ZnVuY3Rpb24oZSl7dmFyIHQ9bigiU3ltYm9sIik7cmV0dXJuIG8odCkmJmkodC5wcm90b3R5cGUscyhlKSl9fSw1MjkyOTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDY4ODUpLG89cig3MjM2OCksaT1yKDczOTM4KSxhPXIoMTM4MzgpLHM9cig5OTAzNCksYz1yKDIzNDkzKSx1PXIoNDc2NTgpLGw9cig3OTUyNiksZj1yKDUxODk4KSxkPXIoNjk4NjgpLHA9VHlwZUVycm9yLF89ZnVuY3Rpb24oZSx0KXt0aGlzLnN0b3BwZWQ9ZSx0aGlzLnJlc3VsdD10fSxoPV8ucHJvdG90eXBlO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIG0seSxnLHYsYix3LFMsaz1yJiZyLnRoYXQseD0hKCFyfHwhci5BU19FTlRSSUVTKSxFPSEoIXJ8fCFyLklTX1JFQ09SRCksQT0hKCFyfHwhci5JU19JVEVSQVRPUiksVD0hKCFyfHwhci5JTlRFUlJVUFRFRCksUj1uKHQsayksUD1mdW5jdGlvbihlKXtyZXR1cm4gbSYmZChtLCJub3JtYWwiLGUpLG5ldyBfKCEwLGUpfSxPPWZ1bmN0aW9uKGUpe3JldHVybiB4PyhpKGUpLFQ/UihlWzBdLGVbMV0sUCk6UihlWzBdLGVbMV0pKTpUP1IoZSxQKTpSKGUpfTtpZihFKW09ZS5pdGVyYXRvcjtlbHNlIGlmKEEpbT1lO2Vsc2V7aWYoISh5PWYoZSkpKXRocm93IHAoYShlKSsiIGlzIG5vdCBpdGVyYWJsZSIpO2lmKHMoeSkpe2ZvcihnPTAsdj1jKGUpO3Y+ZztnKyspaWYoKGI9TyhlW2ddKSkmJnUoaCxiKSlyZXR1cm4gYjtyZXR1cm4gbmV3IF8oITEpfW09bChlLHkpfWZvcih3PUU/ZS5uZXh0Om0ubmV4dDshKFM9byh3LG0pKS5kb25lOyl7dHJ5e2I9TyhTLnZhbHVlKX1jYXRjaChlKXtkKG0sInRocm93IixlKX1pZigib2JqZWN0Ij09dHlwZW9mIGImJmImJnUoaCxiKSlyZXR1cm4gYn1yZXR1cm4gbmV3IF8oITEpfX0sNjk4Njg6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDcyMzY4KSxvPXIoNzM5MzgpLGk9cig0NjQ1Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgYSxzO28oZSk7dHJ5e2lmKCEoYT1pKGUsInJldHVybiIpKSl7aWYoInRocm93Ij09PXQpdGhyb3cgcjtyZXR1cm4gcn1hPW4oYSxlKX1jYXRjaChlKXtzPSEwLGE9ZX1pZigidGhyb3ciPT09dCl0aHJvdyByO2lmKHMpdGhyb3cgYTtyZXR1cm4gbyhhKSxyfX0sMTgyODc6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDQ5MzA2KS5JdGVyYXRvclByb3RvdHlwZSxvPXIoNTMxMDUpLGk9cig2Njg0MyksYT1yKDc1MjgyKSxzPXIoNTIyMjgpLGM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLHUpe3ZhciBsPXQrIiBJdGVyYXRvciI7cmV0dXJuIGUucHJvdG90eXBlPW8obix7bmV4dDppKCshdSxyKX0pLGEoZSxsLCExLCEwKSxzW2xdPWMsZX19LDQ5MzA2OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4sbyxpLGE9cig5MjA3NCkscz1yKDc4NDIwKSxjPXIoNjUzMzUpLHU9cig1MzEwNSksbD1yKDk3OTcwKSxmPXIoNzQ4NSksZD1yKDMxNjAyKSxwPXIoNjkyNiksXz1kKCJpdGVyYXRvciIpLGg9ITE7W10ua2V5cyYmKCJuZXh0ImluKGk9W10ua2V5cygpKT8obz1sKGwoaSkpKSE9PU9iamVjdC5wcm90b3R5cGUmJihuPW8pOmg9ITApLCFjKG4pfHxhKChmdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiBuW19dLmNhbGwoZSkhPT1lfSkpP249e306cCYmKG49dShuKSkscyhuW19dKXx8ZihuLF8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5leHBvcnRzPXtJdGVyYXRvclByb3RvdHlwZTpuLEJVR0dZX1NBRkFSSV9JVEVSQVRPUlM6aH19LDUyMjI4OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e319LDIzNDkzOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMzc0Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKGUubGVuZ3RoKX19LDQ4MjE4OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDI4MSksbz1yKDkyMDc0KSxpPXIoNzg0MjApLGE9cigzNjQ5MCkscz1yKDY1MDc3KSxjPXIoMTIwNzEpLkNPTkZJR1VSQUJMRSx1PXIoNjk5NjUpLGw9cig5OTIwNiksZj1sLmVuZm9yY2UsZD1sLmdldCxwPVN0cmluZyxfPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxoPW4oIiIuc2xpY2UpLG09bigiIi5yZXBsYWNlKSx5PW4oW10uam9pbiksZz1zJiYhbygoZnVuY3Rpb24oKXtyZXR1cm4gOCE9PV8oKGZ1bmN0aW9uKCl7fSksImxlbmd0aCIse3ZhbHVlOjh9KS5sZW5ndGh9KSksdj1TdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIiksYj1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpeyJTeW1ib2woIj09PWgocCh0KSwwLDcpJiYodD0iWyIrbShwKHQpLC9eU3ltYm9sXCgoW14pXSopXCkvLCIkMSIpKyJdIiksciYmci5nZXR0ZXImJih0PSJnZXQgIit0KSxyJiZyLnNldHRlciYmKHQ9InNldCAiK3QpLCghYShlLCJuYW1lIil8fGMmJmUubmFtZSE9PXQpJiYocz9fKGUsIm5hbWUiLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMH0pOmUubmFtZT10KSxnJiZyJiZhKHIsImFyaXR5IikmJmUubGVuZ3RoIT09ci5hcml0eSYmXyhlLCJsZW5ndGgiLHt2YWx1ZTpyLmFyaXR5fSk7dHJ5e3ImJmEociwiY29uc3RydWN0b3IiKSYmci5jb25zdHJ1Y3Rvcj9zJiZfKGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSk6ZS5wcm90b3R5cGUmJihlLnByb3RvdHlwZT12b2lkIDApfWNhdGNoKGUpe312YXIgbj1mKGUpO3JldHVybiBhKG4sInNvdXJjZSIpfHwobi5zb3VyY2U9eSh2LCJzdHJpbmciPT10eXBlb2YgdD90OiIiKSksZX07RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nPWIoKGZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcykmJmQodGhpcykuc291cmNlfHx1KHRoaXMpfSksInRvU3RyaW5nIil9LDE5ODMwOmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1NYXRoLmNlaWwscj1NYXRoLmZsb29yO2UuZXhwb3J0cz1NYXRoLnRydW5jfHxmdW5jdGlvbihlKXt2YXIgbj0rZTtyZXR1cm4obj4wP3I6dCkobil9fSw0NzQ2MjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuLG8saSxhLHMsYz1yKDMwMjAwKSx1PXIoNDY4ODUpLGw9cig5NzYzMikuZixmPXIoNzQ5MjIpLnNldCxkPXIoOTc2MDApLHA9cig2MjA1MCksXz1yKDEyNjcxKSxoPXIoOTQzMTgpLG09cig3NTIyMykseT1jLk11dGF0aW9uT2JzZXJ2ZXJ8fGMuV2ViS2l0TXV0YXRpb25PYnNlcnZlcixnPWMuZG9jdW1lbnQsdj1jLnByb2Nlc3MsYj1jLlByb21pc2Usdz1sKGMsInF1ZXVlTWljcm90YXNrIiksUz13JiZ3LnZhbHVlO2lmKCFTKXt2YXIgaz1uZXcgZCx4PWZ1bmN0aW9uKCl7dmFyIGUsdDtmb3IobSYmKGU9di5kb21haW4pJiZlLmV4aXQoKTt0PWsuZ2V0KCk7KXRyeXt0KCl9Y2F0Y2goZSl7dGhyb3cgay5oZWFkJiZuKCksZX1lJiZlLmVudGVyKCl9O3B8fG18fGh8fCF5fHwhZz8hXyYmYiYmYi5yZXNvbHZlPygoYT1iLnJlc29sdmUodm9pZCAwKSkuY29uc3RydWN0b3I9YixzPXUoYS50aGVuLGEpLG49ZnVuY3Rpb24oKXtzKHgpfSk6bT9uPWZ1bmN0aW9uKCl7di5uZXh0VGljayh4KX06KGY9dShmLGMpLG49ZnVuY3Rpb24oKXtmKHgpfSk6KG89ITAsaT1nLmNyZWF0ZVRleHROb2RlKCIiKSxuZXcgeSh4KS5vYnNlcnZlKGkse2NoYXJhY3RlckRhdGE6ITB9KSxuPWZ1bmN0aW9uKCl7aS5kYXRhPW89IW99KSxTPWZ1bmN0aW9uKGUpe2suaGVhZHx8bigpLGsuYWRkKGUpfX1lLmV4cG9ydHM9U30sMzk4MzY6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDI0NjAxKSxvPVR5cGVFcnJvcixpPWZ1bmN0aW9uKGUpe3ZhciB0LHI7dGhpcy5wcm9taXNlPW5ldyBlKChmdW5jdGlvbihlLG4pe2lmKHZvaWQgMCE9PXR8fHZvaWQgMCE9PXIpdGhyb3cgbygiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTt0PWUscj1ufSkpLHRoaXMucmVzb2x2ZT1uKHQpLHRoaXMucmVqZWN0PW4ocil9O2UuZXhwb3J0cy5mPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaShlKX19LDIwNjEwOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig5NTM2Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PWU/YXJndW1lbnRzLmxlbmd0aDwyPyIiOnQ6bihlKX19LDUzMTA1OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4sbz1yKDczOTM4KSxpPXIoNjUzMTgpLGE9cigzMDI5MCkscz1yKDY3NzA4KSxjPXIoMjg4OTApLHU9cigyMzI2MiksbD1yKDI1OTA0KSxmPSJwcm90b3R5cGUiLGQ9InNjcmlwdCIscD1sKCJJRV9QUk9UTyIpLF89ZnVuY3Rpb24oKXt9LGg9ZnVuY3Rpb24oZSl7cmV0dXJuIjwiK2QrIj4iK2UrIjwvIitkKyI+In0sbT1mdW5jdGlvbihlKXtlLndyaXRlKGgoIiIpKSxlLmNsb3NlKCk7dmFyIHQ9ZS5wYXJlbnRXaW5kb3cuT2JqZWN0O3JldHVybiBlPW51bGwsdH0seT1mdW5jdGlvbigpe3RyeXtuPW5ldyBBY3RpdmVYT2JqZWN0KCJodG1sZmlsZSIpfWNhdGNoKGUpe312YXIgZSx0LHI7eT0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50LmRvbWFpbiYmbj9tKG4pOih0PXUoImlmcmFtZSIpLHI9ImphdmEiK2QrIjoiLHQuc3R5bGUuZGlzcGxheT0ibm9uZSIsYy5hcHBlbmRDaGlsZCh0KSx0LnNyYz1TdHJpbmcociksKGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksZS53cml0ZShoKCJkb2N1bWVudC5GPU9iamVjdCIpKSxlLmNsb3NlKCksZS5GKTptKG4pO2Zvcih2YXIgbz1hLmxlbmd0aDtvLS07KWRlbGV0ZSB5W2ZdW2Fbb11dO3JldHVybiB5KCl9O3NbcF09ITAsZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIG51bGwhPT1lPyhfW2ZdPW8oZSkscj1uZXcgXyxfW2ZdPW51bGwscltwXT1lKTpyPXkoKSx2b2lkIDA9PT10P3I6aS5mKHIsdCl9fSw2NTMxODpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNjUwNzcpLG89cig5NDQ5MSksaT1yKDQzNjEwKSxhPXIoNzM5MzgpLHM9cig1NDc2KSxjPXIoOTE2NDEpO3QuZj1uJiYhbz9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbihlLHQpe2EoZSk7Zm9yKHZhciByLG49cyh0KSxvPWModCksdT1vLmxlbmd0aCxsPTA7dT5sOylpLmYoZSxyPW9bbCsrXSxuW3JdKTtyZXR1cm4gZX19LDQzNjEwOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig2NTA3Nyksbz1yKDg3Njk0KSxpPXIoOTQ0OTEpLGE9cig3MzkzOCkscz1yKDg2MDMyKSxjPVR5cGVFcnJvcix1PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsZj0iZW51bWVyYWJsZSIsZD0iY29uZmlndXJhYmxlIixwPSJ3cml0YWJsZSI7dC5mPW4/aT9mdW5jdGlvbihlLHQscil7aWYoYShlKSx0PXModCksYShyKSwiZnVuY3Rpb24iPT10eXBlb2YgZSYmInByb3RvdHlwZSI9PT10JiYidmFsdWUiaW4gciYmcCBpbiByJiYhcltwXSl7dmFyIG49bChlLHQpO24mJm5bcF0mJihlW3RdPXIudmFsdWUscj17Y29uZmlndXJhYmxlOmQgaW4gcj9yW2RdOm5bZF0sZW51bWVyYWJsZTpmIGluIHI/cltmXTpuW2ZdLHdyaXRhYmxlOiExfSl9cmV0dXJuIHUoZSx0LHIpfTp1OmZ1bmN0aW9uKGUsdCxyKXtpZihhKGUpLHQ9cyh0KSxhKHIpLG8pdHJ5e3JldHVybiB1KGUsdCxyKX1jYXRjaChlKXt9aWYoImdldCJpbiByfHwic2V0ImluIHIpdGhyb3cgYygiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4idmFsdWUiaW4gciYmKGVbdF09ci52YWx1ZSksZX19LDk3NjMyOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig2NTA3Nyksbz1yKDcyMzY4KSxpPXIoOTMwNCksYT1yKDY2ODQzKSxzPXIoNTQ3NiksYz1yKDg2MDMyKSx1PXIoMzY0OTApLGw9cig4NzY5NCksZj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3QuZj1uP2Y6ZnVuY3Rpb24oZSx0KXtpZihlPXMoZSksdD1jKHQpLGwpdHJ5e3JldHVybiBmKGUsdCl9Y2F0Y2goZSl7fWlmKHUoZSx0KSlyZXR1cm4gYSghbyhpLmYsZSx0KSxlW3RdKX19LDY0Nzg5OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxNjM0Nyksbz1yKDMwMjkwKS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSxvKX19LDE4OTE2OmZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSw5Nzk3MDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMzY0OTApLG89cig3ODQyMCksaT1yKDkyNjEyKSxhPXIoMjU5MDQpLHM9cig3MTY4KSxjPWEoIklFX1BST1RPIiksdT1PYmplY3QsbD11LnByb3RvdHlwZTtlLmV4cG9ydHM9cz91LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3ZhciB0PWkoZSk7aWYobih0LGMpKXJldHVybiB0W2NdO3ZhciByPXQuY29uc3RydWN0b3I7cmV0dXJuIG8ocikmJnQgaW5zdGFuY2VvZiByP3IucHJvdG90eXBlOnQgaW5zdGFuY2VvZiB1P2w6bnVsbH19LDQ3NjU4OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDI4MSk7ZS5leHBvcnRzPW4oe30uaXNQcm90b3R5cGVPZil9LDE2MzQ3OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDI4MSksbz1yKDM2NDkwKSxpPXIoNTQ3NiksYT1yKDU4MTg2KS5pbmRleE9mLHM9cig2NzcwOCksYz1uKFtdLnB1c2gpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByLG49aShlKSx1PTAsbD1bXTtmb3IociBpbiBuKSFvKHMscikmJm8obixyKSYmYyhsLHIpO2Zvcig7dC5sZW5ndGg+dTspbyhuLHI9dFt1KytdKSYmKH5hKGwscil8fGMobCxyKSk7cmV0dXJuIGx9fSw5MTY0MTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMTYzNDcpLG89cigzMDI5MCk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLG8pfX0sOTMwNDpmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Isbz1uJiYhci5jYWxsKHsxOjJ9LDEpO3QuZj1vP2Z1bmN0aW9uKGUpe3ZhciB0PW4odGhpcyxlKTtyZXR1cm4hIXQmJnQuZW51bWVyYWJsZX06cn0sMzk2ODY6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDExMzg1KSxvPXIoNzM5MzgpLGk9cig3NDczKTtlLmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIGUsdD0hMSxyPXt9O3RyeXsoZT1uKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIsInNldCIpKShyLFtdKSx0PXIgaW5zdGFuY2VvZiBBcnJheX1jYXRjaChlKXt9cmV0dXJuIGZ1bmN0aW9uKHIsbil7cmV0dXJuIG8ociksaShuKSx0P2UocixuKTpyLl9fcHJvdG9fXz1uLHJ9fSgpOnZvaWQgMCl9LDY5NzUxOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig3MjM2OCksbz1yKDc4NDIwKSxpPXIoNjUzMzUpLGE9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByLHM7aWYoInN0cmluZyI9PT10JiZvKHI9ZS50b1N0cmluZykmJiFpKHM9bihyLGUpKSlyZXR1cm4gcztpZihvKHI9ZS52YWx1ZU9mKSYmIWkocz1uKHIsZSkpKXJldHVybiBzO2lmKCJzdHJpbmciIT09dCYmbyhyPWUudG9TdHJpbmcpJiYhaShzPW4ocixlKSkpcmV0dXJuIHM7dGhyb3cgYSgiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSwxNTgxNjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNTY0OTIpLG89cigzMDI4MSksaT1yKDY0Nzg5KSxhPXIoMTg5MTYpLHM9cig3MzkzOCksYz1vKFtdLmNvbmNhdCk7ZS5leHBvcnRzPW4oIlJlZmxlY3QiLCJvd25LZXlzIil8fGZ1bmN0aW9uKGUpe3ZhciB0PWkuZihzKGUpKSxyPWEuZjtyZXR1cm4gcj9jKHQscihlKSk6dH19LDUwMjQyOmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybntlcnJvcjohMSx2YWx1ZTplKCl9fWNhdGNoKGUpe3JldHVybntlcnJvcjohMCx2YWx1ZTplfX19fSwzOTA1MzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMzAyMDApLG89cigyNDEzKSxpPXIoNzg0MjApLGE9cig4NDk3Nykscz1yKDY5OTY1KSxjPXIoMzE2MDIpLHU9cigzODUyMyksbD1yKDIwNDE5KSxmPXIoNjkyNiksZD1yKDY4NDUpLHA9byYmby5wcm90b3R5cGUsXz1jKCJzcGVjaWVzIiksaD0hMSxtPWkobi5Qcm9taXNlUmVqZWN0aW9uRXZlbnQpLHk9YSgiUHJvbWlzZSIsKGZ1bmN0aW9uKCl7dmFyIGU9cyhvKSx0PWUhPT1TdHJpbmcobyk7aWYoIXQmJjY2PT09ZClyZXR1cm4hMDtpZihmJiYoIXAuY2F0Y2h8fCFwLmZpbmFsbHkpKXJldHVybiEwO2lmKCFkfHxkPDUxfHwhL25hdGl2ZSBjb2RlLy50ZXN0KGUpKXt2YXIgcj1uZXcgbygoZnVuY3Rpb24oZSl7ZSgxKX0pKSxuPWZ1bmN0aW9uKGUpe2UoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKCl7fSkpfTtpZigoci5jb25zdHJ1Y3Rvcj17fSlbX109biwhKGg9ci50aGVuKChmdW5jdGlvbigpe30pKWluc3RhbmNlb2YgbikpcmV0dXJuITB9cmV0dXJuIXQmJih1fHxsKSYmIW19KSk7ZS5leHBvcnRzPXtDT05TVFJVQ1RPUjp5LFJFSkVDVElPTl9FVkVOVDptLFNVQkNMQVNTSU5HOmh9fSwyNDEzOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDIwMCk7ZS5leHBvcnRzPW4uUHJvbWlzZX0sOTgwMzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNzM5MzgpLG89cig2NTMzNSksaT1yKDM5ODM2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihuKGUpLG8odCkmJnQuY29uc3RydWN0b3I9PT1lKXJldHVybiB0O3ZhciByPWkuZihlKTtyZXR1cm4oMCxyLnJlc29sdmUpKHQpLHIucHJvbWlzZX19LDM5NzcyOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyNDEzKSxvPXIoOTc0OTkpLGk9cigzOTA1MykuQ09OU1RSVUNUT1I7ZS5leHBvcnRzPWl8fCFvKChmdW5jdGlvbihlKXtuLmFsbChlKS50aGVuKHZvaWQgMCwoZnVuY3Rpb24oKXt9KSl9KSl9LDU2NTI3OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig0MzYxMCkuZjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3IgaW4gZXx8bihlLHIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX0sc2V0OmZ1bmN0aW9uKGUpe3Rbcl09ZX19KX19LDk3NjAwOmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1mdW5jdGlvbigpe3RoaXMuaGVhZD1udWxsLHRoaXMudGFpbD1udWxsfTt0LnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKGUpe3ZhciB0PXtpdGVtOmUsbmV4dDpudWxsfSxyPXRoaXMudGFpbDtyP3IubmV4dD10OnRoaXMuaGVhZD10LHRoaXMudGFpbD10fSxnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmhlYWQ7aWYoZSlyZXR1cm4gbnVsbD09PSh0aGlzLmhlYWQ9ZS5uZXh0KSYmKHRoaXMudGFpbD1udWxsKSxlLml0ZW19fSxlLmV4cG9ydHM9dH0sNjY3OTM6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDcyMzY4KSxvPXIoNzM5MzgpLGk9cig3ODQyMCksYT1yKDE4NTY5KSxzPXIoNzAwNTQpLGM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPWUuZXhlYztpZihpKHIpKXt2YXIgdT1uKHIsZSx0KTtyZXR1cm4gbnVsbCE9PXUmJm8odSksdX1pZigiUmVnRXhwIj09PWEoZSkpcmV0dXJuIG4ocyxlLHQpO3Rocm93IGMoIlJlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXIiKX19LDcwMDU0OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4sbyxpPXIoNzIzNjgpLGE9cigzMDI4MSkscz1yKDk1MzYyKSxjPXIoMTY4NDQpLHU9cigxMjE5MiksbD1yKDUwMDAyKSxmPXIoNTMxMDUpLGQ9cig5OTIwNikuZ2V0LHA9cigzMTAzNiksXz1yKDI4MTIxKSxoPWwoIm5hdGl2ZS1zdHJpbmctcmVwbGFjZSIsU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKSxtPVJlZ0V4cC5wcm90b3R5cGUuZXhlYyx5PW0sZz1hKCIiLmNoYXJBdCksdj1hKCIiLmluZGV4T2YpLGI9YSgiIi5yZXBsYWNlKSx3PWEoIiIuc2xpY2UpLFM9KG89L2IqL2csaShtLG49L2EvLCJhIiksaShtLG8sImEiKSwwIT09bi5sYXN0SW5kZXh8fDAhPT1vLmxhc3RJbmRleCksaz11LkJST0tFTl9DQVJFVCx4PXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXTsoU3x8eHx8a3x8cHx8XykmJih5PWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixvLGEsdSxsLHA9dGhpcyxfPWQocCksRT1zKGUpLEE9Xy5yYXc7aWYoQSlyZXR1cm4gQS5sYXN0SW5kZXg9cC5sYXN0SW5kZXgsdD1pKHksQSxFKSxwLmxhc3RJbmRleD1BLmxhc3RJbmRleCx0O3ZhciBUPV8uZ3JvdXBzLFI9ayYmcC5zdGlja3ksUD1pKGMscCksTz1wLnNvdXJjZSxNPTAsRj1FO2lmKFImJihQPWIoUCwieSIsIiIpLC0xPT09dihQLCJnIikmJihQKz0iZyIpLEY9dyhFLHAubGFzdEluZGV4KSxwLmxhc3RJbmRleD4wJiYoIXAubXVsdGlsaW5lfHxwLm11bHRpbGluZSYmIlxuIiE9PWcoRSxwLmxhc3RJbmRleC0xKSkmJihPPSIoPzogIitPKyIpIixGPSIgIitGLE0rKykscj1uZXcgUmVnRXhwKCJeKD86IitPKyIpIixQKSkseCYmKHI9bmV3IFJlZ0V4cCgiXiIrTysiJCg/IVxccykiLFApKSxTJiYobj1wLmxhc3RJbmRleCksbz1pKG0sUj9yOnAsRiksUj9vPyhvLmlucHV0PXcoby5pbnB1dCxNKSxvWzBdPXcob1swXSxNKSxvLmluZGV4PXAubGFzdEluZGV4LHAubGFzdEluZGV4Kz1vWzBdLmxlbmd0aCk6cC5sYXN0SW5kZXg9MDpTJiZvJiYocC5sYXN0SW5kZXg9cC5nbG9iYWw/by5pbmRleCtvWzBdLmxlbmd0aDpuKSx4JiZvJiZvLmxlbmd0aD4xJiZpKGgsb1swXSxyLChmdW5jdGlvbigpe2ZvcihhPTE7YTxhcmd1bWVudHMubGVuZ3RoLTI7YSsrKXZvaWQgMD09PWFyZ3VtZW50c1thXSYmKG9bYV09dm9pZCAwKX0pKSxvJiZUKWZvcihvLmdyb3Vwcz11PWYobnVsbCksYT0wO2E8VC5sZW5ndGg7YSsrKXVbKGw9VFthXSlbMF1dPW9bbFsxXV07cmV0dXJuIG99KSxlLmV4cG9ydHM9eX0sMTY4NDQ6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDczOTM4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZT1uKHRoaXMpLHQ9IiI7cmV0dXJuIGUuaGFzSW5kaWNlcyYmKHQrPSJkIiksZS5nbG9iYWwmJih0Kz0iZyIpLGUuaWdub3JlQ2FzZSYmKHQrPSJpIiksZS5tdWx0aWxpbmUmJih0Kz0ibSIpLGUuZG90QWxsJiYodCs9InMiKSxlLnVuaWNvZGUmJih0Kz0idSIpLGUudW5pY29kZVNldHMmJih0Kz0idiIpLGUuc3RpY2t5JiYodCs9InkiKSx0fX0sMTAzNTM6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDcyMzY4KSxvPXIoMzY0OTApLGk9cig0NzY1OCksYT1yKDE2ODQ0KSxzPVJlZ0V4cC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZmxhZ3M7cmV0dXJuIHZvaWQgMCE9PXR8fCJmbGFncyJpbiBzfHxvKGUsImZsYWdzIil8fCFpKHMsZSk/dDpuKGEsZSl9fSwxMjE5MjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoOTIwNzQpLG89cigzMDIwMCkuUmVnRXhwLGk9bigoZnVuY3Rpb24oKXt2YXIgZT1vKCJhIiwieSIpO3JldHVybiBlLmxhc3RJbmRleD0yLG51bGwhPT1lLmV4ZWMoImFiY2QiKX0pKSxhPWl8fG4oKGZ1bmN0aW9uKCl7cmV0dXJuIW8oImEiLCJ5Iikuc3RpY2t5fSkpLHM9aXx8bigoZnVuY3Rpb24oKXt2YXIgZT1vKCJeciIsImd5Iik7cmV0dXJuIGUubGFzdEluZGV4PTIsbnVsbCE9PWUuZXhlYygic3RyIil9KSk7ZS5leHBvcnRzPXtCUk9LRU5fQ0FSRVQ6cyxNSVNTRURfU1RJQ0tZOmEsVU5TVVBQT1JURURfWTppfX0sMzEwMzY6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDkyMDc0KSxvPXIoMzAyMDApLlJlZ0V4cDtlLmV4cG9ydHM9bigoZnVuY3Rpb24oKXt2YXIgZT1vKCIuIiwicyIpO3JldHVybiEoZS5kb3RBbGwmJmUuZXhlYygiXG4iKSYmInMiPT09ZS5mbGFncyl9KSl9LDI4MTIxOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig5MjA3NCksbz1yKDMwMjAwKS5SZWdFeHA7ZS5leHBvcnRzPW4oKGZ1bmN0aW9uKCl7dmFyIGU9bygiKD88YT5iKSIsImciKTtyZXR1cm4iYiIhPT1lLmV4ZWMoImIiKS5ncm91cHMuYXx8ImJjIiE9PSJiIi5yZXBsYWNlKGUsIiQ8YT5jIil9KSl9LDcxMjI5OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig4ODQwNiksbz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKG4oZSkpdGhyb3cgbygiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIitlKTtyZXR1cm4gZX19LDc1MjgyOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig0MzYxMCkuZixvPXIoMzY0OTApLGk9cigzMTYwMikoInRvU3RyaW5nVGFnIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtlJiYhciYmKGU9ZS5wcm90b3R5cGUpLGUmJiFvKGUsaSkmJm4oZSxpLHtjb25maWd1cmFibGU6ITAsdmFsdWU6dH0pfX0sMjU5MDQ6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDUwMDAyKSxvPXIoNTA2NjUpLGk9bigia2V5cyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaVtlXXx8KGlbZV09byhlKSl9fSw0OTMxMDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMzAyMDApLG89cig1OTQzMCksaT0iX19jb3JlLWpzX3NoYXJlZF9fIixhPW5baV18fG8oaSx7fSk7ZS5leHBvcnRzPWF9LDUwMDAyOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig2OTI2KSxvPXIoNDkzMTApOyhlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gb1tlXXx8KG9bZV09dm9pZCAwIT09dD90Ont9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246IjMuMzIuMSIsbW9kZTpuPyJwdXJlIjoiZ2xvYmFsIixjb3B5cmlnaHQ6IsKpIDIwMTQtMjAyMyBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSIsbGljZW5zZToiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zMi4xL0xJQ0VOU0UiLHNvdXJjZToiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMifSl9LDIzNDQ0OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig3MzkzOCksbz1yKDU3ODQ5KSxpPXIoODg0MDYpLGE9cigzMTYwMikoInNwZWNpZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixzPW4oZSkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PXN8fGkocj1uKHMpW2FdKT90Om8ocil9fSw3NzgwNDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMzAyODEpLG89cig3OTMyOCksaT1yKDk1MzYyKSxhPXIoNzEyMjkpLHM9bigiIi5jaGFyQXQpLGM9bigiIi5jaGFyQ29kZUF0KSx1PW4oIiIuc2xpY2UpLGw9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7dmFyIG4sbCxmPWkoYSh0KSksZD1vKHIpLHA9Zi5sZW5ndGg7cmV0dXJuIGQ8MHx8ZD49cD9lPyIiOnZvaWQgMDoobj1jKGYsZCkpPDU1Mjk2fHxuPjU2MzE5fHxkKzE9PT1wfHwobD1jKGYsZCsxKSk8NTYzMjB8fGw+NTczNDM/ZT9zKGYsZCk6bjplP3UoZixkLGQrMik6bC01NjMyMCsobi01NTI5Njw8MTApKzY1NTM2fX07ZS5leHBvcnRzPXtjb2RlQXQ6bCghMSksY2hhckF0OmwoITApfX0sODIwNzI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDY4NDUpLG89cig5MjA3NCksaT1yKDMwMjAwKS5TdHJpbmc7ZS5leHBvcnRzPSEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmIW8oKGZ1bmN0aW9uKCl7dmFyIGU9U3ltYm9sKCJzeW1ib2wgZGV0ZWN0aW9uIik7cmV0dXJuIWkoZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJm4mJm48NDF9KSl9LDc0OTIyOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4sbyxpLGEscz1yKDMwMjAwKSxjPXIoOTkwNzApLHU9cig0Njg4NSksbD1yKDc4NDIwKSxmPXIoMzY0OTApLGQ9cig5MjA3NCkscD1yKDI4ODkwKSxfPXIoMjk2MDkpLGg9cigyMzI2MiksbT1yKDU2NTg5KSx5PXIoNjIwNTApLGc9cig3NTIyMyksdj1zLnNldEltbWVkaWF0ZSxiPXMuY2xlYXJJbW1lZGlhdGUsdz1zLnByb2Nlc3MsUz1zLkRpc3BhdGNoLGs9cy5GdW5jdGlvbix4PXMuTWVzc2FnZUNoYW5uZWwsRT1zLlN0cmluZyxBPTAsVD17fSxSPSJvbnJlYWR5c3RhdGVjaGFuZ2UiO2QoKGZ1bmN0aW9uKCl7bj1zLmxvY2F0aW9ufSkpO3ZhciBQPWZ1bmN0aW9uKGUpe2lmKGYoVCxlKSl7dmFyIHQ9VFtlXTtkZWxldGUgVFtlXSx0KCl9fSxPPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe1AoZSl9fSxNPWZ1bmN0aW9uKGUpe1AoZS5kYXRhKX0sRj1mdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEUoZSksbi5wcm90b2NvbCsiLy8iK24uaG9zdCl9O3YmJmJ8fCh2PWZ1bmN0aW9uKGUpe20oYXJndW1lbnRzLmxlbmd0aCwxKTt2YXIgdD1sKGUpP2U6ayhlKSxyPV8oYXJndW1lbnRzLDEpO3JldHVybiBUWysrQV09ZnVuY3Rpb24oKXtjKHQsdm9pZCAwLHIpfSxvKEEpLEF9LGI9ZnVuY3Rpb24oZSl7ZGVsZXRlIFRbZV19LGc/bz1mdW5jdGlvbihlKXt3Lm5leHRUaWNrKE8oZSkpfTpTJiZTLm5vdz9vPWZ1bmN0aW9uKGUpe1Mubm93KE8oZSkpfTp4JiYheT8oYT0oaT1uZXcgeCkucG9ydDIsaS5wb3J0MS5vbm1lc3NhZ2U9TSxvPXUoYS5wb3N0TWVzc2FnZSxhKSk6cy5hZGRFdmVudExpc3RlbmVyJiZsKHMucG9zdE1lc3NhZ2UpJiYhcy5pbXBvcnRTY3JpcHRzJiZuJiYiZmlsZToiIT09bi5wcm90b2NvbCYmIWQoRik/KG89RixzLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLE0sITEpKTpvPVIgaW4gaCgic2NyaXB0Iik/ZnVuY3Rpb24oZSl7cC5hcHBlbmRDaGlsZChoKCJzY3JpcHQiKSlbUl09ZnVuY3Rpb24oKXtwLnJlbW92ZUNoaWxkKHRoaXMpLFAoZSl9fTpmdW5jdGlvbihlKXtzZXRUaW1lb3V0KE8oZSksMCl9KSxlLmV4cG9ydHM9e3NldDp2LGNsZWFyOmJ9fSw2NTM5OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig3OTMyOCksbz1NYXRoLm1heCxpPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPW4oZSk7cmV0dXJuIHI8MD9vKHIrdCwwKTppKHIsdCl9fSwzMDA1OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig1MDg3NCksbz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwibnVtYmVyIik7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG8oIkNhbid0IGNvbnZlcnQgbnVtYmVyIHRvIGJpZ2ludCIpO3JldHVybiBCaWdJbnQodCl9fSw1NDc2OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig0ODY2NCksbz1yKDcxMjI5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4obyhlKSl9fSw3OTMyODpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMTk4MzApO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD0rZTtyZXR1cm4gdCE9dHx8MD09PXQ/MDpuKHQpfX0sMzM3NDc6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDc5MzI4KSxvPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT4wP28obihlKSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sOTI2MTI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDcxMjI5KSxvPU9iamVjdDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8obihlKSl9fSw1MDg3NDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNzIzNjgpLG89cig2NTMzNSksaT1yKDMyMzI4KSxhPXIoNDY0NTcpLHM9cig2OTc1MSksYz1yKDMxNjAyKSx1PVR5cGVFcnJvcixsPWMoInRvUHJpbWl0aXZlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoIW8oZSl8fGkoZSkpcmV0dXJuIGU7dmFyIHIsYz1hKGUsbCk7aWYoYyl7aWYodm9pZCAwPT09dCYmKHQ9ImRlZmF1bHQiKSxyPW4oYyxlLHQpLCFvKHIpfHxpKHIpKXJldHVybiByO3Rocm93IHUoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfXJldHVybiB2b2lkIDA9PT10JiYodD0ibnVtYmVyIikscyhlLHQpfX0sODYwMzI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDUwODc0KSxvPXIoMzIzMjgpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUsInN0cmluZyIpO3JldHVybiBvKHQpP3Q6dCsiIn19LDQzMTI5OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49e307bltyKDMxNjAyKSgidG9TdHJpbmdUYWciKV09InoiLGUuZXhwb3J0cz0iW29iamVjdCB6XSI9PT1TdHJpbmcobil9LDk1MzYyOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig4MzA2Miksbz1TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJTeW1ib2wiPT09bihlKSl0aHJvdyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIik7cmV0dXJuIG8oZSl9fSw5Mjc4NTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNzUyMjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7aWYobilyZXR1cm4gRnVuY3Rpb24oJ3JldHVybiByZXF1aXJlKCInK2UrJyIpJykoKX1jYXRjaChlKXt9fX0sMTM4Mzg6ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciB0PVN0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiB0KGUpfWNhdGNoKGUpe3JldHVybiJPYmplY3QifX19LDUwNjY1OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDI4MSksbz0wLGk9TWF0aC5yYW5kb20oKSxhPW4oMS4udG9TdHJpbmcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4iU3ltYm9sKCIrKHZvaWQgMD09PWU/IiI6ZSkrIilfIithKCsrbytpLDM2KX19LDUyMjU6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDgyMDcyKTtlLmV4cG9ydHM9biYmIVN5bWJvbC5zaGFtJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcn0sOTQ0OTE6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDY1MDc3KSxvPXIoOTIwNzQpO2UuZXhwb3J0cz1uJiZvKChmdW5jdGlvbigpe3JldHVybiA0MiE9PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSgoZnVuY3Rpb24oKXt9KSwicHJvdG90eXBlIix7dmFsdWU6NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGV9KSl9LDU2NTg5OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUscil7aWYoZTxyKXRocm93IHQoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7cmV0dXJuIGV9fSw4MzY5OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDIwMCksbz1yKDc4NDIwKSxpPW4uV2Vha01hcDtlLmV4cG9ydHM9byhpKSYmL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhpKSl9LDMxNjAyOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigzMDIwMCksbz1yKDUwMDAyKSxpPXIoMzY0OTApLGE9cig1MDY2NSkscz1yKDgyMDcyKSxjPXIoNTIyNSksdT1uLlN5bWJvbCxsPW8oIndrcyIpLGY9Yz91LmZvcnx8dTp1JiZ1LndpdGhvdXRTZXR0ZXJ8fGE7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBpKGwsZSl8fChsW2VdPXMmJmkodSxlKT91W2VdOmYoIlN5bWJvbC4iK2UpKSxsW2VdfX0sNzgxMjA6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDU2NDkyKSxvPXIoMzY0OTApLGk9cig5NzcxMiksYT1yKDQ3NjU4KSxzPXIoMzk2ODYpLGM9cig4NDM2MSksdT1yKDU2NTI3KSxsPXIoOTMwNTQpLGY9cigyMDYxMCksZD1yKDU1ODMzKSxwPXIoMTcxMDIpLF89cig2NTA3NyksaD1yKDY5MjYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixtKXt2YXIgeT0ic3RhY2tUcmFjZUxpbWl0IixnPW0/MjoxLHY9ZS5zcGxpdCgiLiIpLGI9dlt2Lmxlbmd0aC0xXSx3PW4uYXBwbHkobnVsbCx2KTtpZih3KXt2YXIgUz13LnByb3RvdHlwZTtpZighaCYmbyhTLCJjYXVzZSIpJiZkZWxldGUgUy5jYXVzZSwhcilyZXR1cm4gdzt2YXIgaz1uKCJFcnJvciIpLHg9dCgoZnVuY3Rpb24oZSx0KXt2YXIgcj1mKG0/dDplLHZvaWQgMCksbj1tP25ldyB3KGUpOm5ldyB3O3JldHVybiB2b2lkIDAhPT1yJiZpKG4sIm1lc3NhZ2UiLHIpLHAobix4LG4uc3RhY2ssMiksdGhpcyYmYShTLHRoaXMpJiZsKG4sdGhpcyx4KSxhcmd1bWVudHMubGVuZ3RoPmcmJmQobixhcmd1bWVudHNbZ10pLG59KSk7aWYoeC5wcm90b3R5cGU9UywiRXJyb3IiIT09Yj9zP3MoeCxrKTpjKHgsayx7bmFtZTohMH0pOl8mJnkgaW4gdyYmKHUoeCx3LHkpLHUoeCx3LCJwcmVwYXJlU3RhY2tUcmFjZSIpKSxjKHgsdyksIWgpdHJ5e1MubmFtZSE9PWImJmkoUywibmFtZSIsYiksUy5jb25zdHJ1Y3Rvcj14fWNhdGNoKGUpe31yZXR1cm4geH19fSw4NjQ4OTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNTE2MDUpLG89cig1NjQ5MiksaT1yKDk5MDcwKSxhPXIoOTIwNzQpLHM9cig3ODEyMCksYz0iQWdncmVnYXRlRXJyb3IiLHU9byhjKSxsPSFhKChmdW5jdGlvbigpe3JldHVybiAxIT09dShbMV0pLmVycm9yc1swXX0pKSYmYSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9PXUoWzFdLGMse2NhdXNlOjd9KS5jYXVzZX0pKTtuKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsYXJpdHk6Mixmb3JjZWQ6bH0se0FnZ3JlZ2F0ZUVycm9yOnMoYywoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSksbCwhMCl9KX0sNDg2NDI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDUxNjA1KSxvPXIoOTI2MTIpLGk9cigyMzQ5MyksYT1yKDc5MzI4KSxzPXIoNDAyOTgpO24oe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwfSx7YXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9byh0aGlzKSxyPWkodCksbj1hKGUpLHM9bj49MD9uOnIrbjtyZXR1cm4gczwwfHxzPj1yP3ZvaWQgMDp0W3NdfX0pLHMoImF0Iil9LDcwNjQwOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig1MTYwNSksbz1yKDQ1NTgyKS5maW5kTGFzdEluZGV4LGk9cig0MDI5OCk7bih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHtmaW5kTGFzdEluZGV4OmZ1bmN0aW9uKGUpe3JldHVybiBvKHRoaXMsZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksaSgiZmluZExhc3RJbmRleCIpfSwzMTEzMzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNTE2MDUpLG89cig0NTU4MikuZmluZExhc3QsaT1yKDQwMjk4KTtuKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMH0se2ZpbmRMYXN0OmZ1bmN0aW9uKGUpe3JldHVybiBvKHRoaXMsZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksaSgiZmluZExhc3QiKX0sOTU3NTU6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDUxNjA1KSxvPXIoODk2MDgpLGk9cigyNDYwMSksYT1yKDkyNjEyKSxzPXIoMjM0OTMpLGM9cig2Mjk5OCk7bih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHtmbGF0TWFwOmZ1bmN0aW9uKGUpe3ZhciB0LHI9YSh0aGlzKSxuPXMocik7cmV0dXJuIGkoZSksKHQ9YyhyLDApKS5sZW5ndGg9byh0LHIscixuLDAsMSxlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSx0fX0pfSw0MTEyODpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNTE2MDUpLG89cig4OTYwOCksaT1yKDkyNjEyKSxhPXIoMjM0OTMpLHM9cig3OTMyOCksYz1yKDYyOTk4KTtuKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMH0se2ZsYXQ6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDAsdD1pKHRoaXMpLHI9YSh0KSxuPWModCwwKTtyZXR1cm4gbi5sZW5ndGg9byhuLHQsdCxyLDAsdm9pZCAwPT09ZT8xOnMoZSkpLG59fSl9LDM2ODk6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDUxNjA1KSxvPXIoOTQwMzMpLGk9cig1NDc2KSxhPXIoNDAyOTgpLHM9QXJyYXk7bih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHt0b1JldmVyc2VkOmZ1bmN0aW9uKCl7cmV0dXJuIG8oaSh0aGlzKSxzKX19KSxhKCJ0b1JldmVyc2VkIil9LDIxODM4OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig1MTYwNSksbz1yKDMwMjgxKSxpPXIoMjQ2MDEpLGE9cig1NDc2KSxzPXIoNDA0NDcpLGM9cig0MjcwMSksdT1yKDQwMjk4KSxsPUFycmF5LGY9byhjKCJBcnJheSIpLnNvcnQpO24oe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwfSx7dG9Tb3J0ZWQ6ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZSYmaShlKTt2YXIgdD1hKHRoaXMpLHI9cyhsLHQpO3JldHVybiBmKHIsZSl9fSksdSgidG9Tb3J0ZWQiKX0sNjIwMzU6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDUxNjA1KSxvPXIoNDAyOTgpLGk9cig1NzI0MiksYT1yKDIzNDkzKSxzPXIoNjUzOSksYz1yKDU0NzYpLHU9cig3OTMyOCksbD1BcnJheSxmPU1hdGgubWF4LGQ9TWF0aC5taW47bih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHt0b1NwbGljZWQ6ZnVuY3Rpb24oZSx0KXt2YXIgcixuLG8scCxfPWModGhpcyksaD1hKF8pLG09cyhlLGgpLHk9YXJndW1lbnRzLmxlbmd0aCxnPTA7Zm9yKDA9PT15P3I9bj0wOjE9PT15PyhyPTAsbj1oLW0pOihyPXktMixuPWQoZih1KHQpLDApLGgtbSkpLG89aShoK3ItbikscD1sKG8pO2c8bTtnKyspcFtnXT1fW2ddO2Zvcig7ZzxtK3I7ZysrKXBbZ109YXJndW1lbnRzW2ctbSsyXTtmb3IoO2c8bztnKyspcFtnXT1fW2crbi1yXTtyZXR1cm4gcH19KSxvKCJ0b1NwbGljZWQiKX0sNzk0MzI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKDQwMjk4KSgiZmxhdE1hcCIpfSw5NTg0MzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IoNDAyOTgpKCJmbGF0Iil9LDgyNjI3OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig1MTYwNSksbz1yKDUxODY3KSxpPXIoNTQ3NiksYT1BcnJheTtuKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMH0se3dpdGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbyhpKHRoaXMpLGEsZSx0KX19KX0sODM1MTU6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDUxNjA1KSxvPXIoMzAyMDApLGk9cig5OTA3MCksYT1yKDc4MTIwKSxzPSJXZWJBc3NlbWJseSIsYz1vW3NdLHU9NyE9PUVycm9yKCJlIix7Y2F1c2U6N30pLmNhdXNlLGw9ZnVuY3Rpb24oZSx0KXt2YXIgcj17fTtyW2VdPWEoZSx0LHUpLG4oe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxhcml0eToxLGZvcmNlZDp1fSxyKX0sZj1mdW5jdGlvbihlLHQpe2lmKGMmJmNbZV0pe3ZhciByPXt9O3JbZV09YShzKyIuIitlLHQsdSksbih7dGFyZ2V0OnMsc3RhdDohMCxjb25zdHJ1Y3RvcjohMCxhcml0eToxLGZvcmNlZDp1fSxyKX19O2woIkVycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpKGUsdGhpcyxhcmd1bWVudHMpfX0pKSxsKCJFdmFsRXJyb3IiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpLGwoIlJhbmdlRXJyb3IiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpLGwoIlJlZmVyZW5jZUVycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpKGUsdGhpcyxhcmd1bWVudHMpfX0pKSxsKCJTeW50YXhFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShlLHRoaXMsYXJndW1lbnRzKX19KSksbCgiVHlwZUVycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpKGUsdGhpcyxhcmd1bWVudHMpfX0pKSxsKCJVUklFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShlLHRoaXMsYXJndW1lbnRzKX19KSksZigiQ29tcGlsZUVycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpKGUsdGhpcyxhcmd1bWVudHMpfX0pKSxmKCJMaW5rRXJyb3IiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpLGYoIlJ1bnRpbWVFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShlLHRoaXMsYXJndW1lbnRzKX19KSl9LDc1NjcwOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig1MTYwNSksbz1yKDUyOTI5KSxpPXIoNTIwNTcpO24oe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwfSx7ZnJvbUVudHJpZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIG8oZSwoZnVuY3Rpb24oZSxyKXtpKHQsZSxyKX0pLHtBU19FTlRSSUVTOiEwfSksdH19KX0sMTkzMjI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKDUxNjA1KSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITB9LHtoYXNPd246cigzNjQ5MCl9KX0sNTg4MDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNTE2MDUpLG89cig3MjM2OCksaT1yKDI0NjAxKSxhPXIoMzk4MzYpLHM9cig1MDI0MiksYz1yKDUyOTI5KTtuKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITAsZm9yY2VkOnIoMzk3NzIpfSx7YWxsU2V0dGxlZDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9YS5mKHQpLG49ci5yZXNvbHZlLHU9ci5yZWplY3QsbD1zKChmdW5jdGlvbigpe3ZhciByPWkodC5yZXNvbHZlKSxhPVtdLHM9MCx1PTE7YyhlLChmdW5jdGlvbihlKXt2YXIgaT1zKyssYz0hMTt1KyssbyhyLHQsZSkudGhlbigoZnVuY3Rpb24oZSl7Y3x8KGM9ITAsYVtpXT17c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOmV9LC0tdXx8bihhKSl9KSwoZnVuY3Rpb24oZSl7Y3x8KGM9ITAsYVtpXT17c3RhdHVzOiJyZWplY3RlZCIscmVhc29uOmV9LC0tdXx8bihhKSl9KSl9KSksLS11fHxuKGEpfSkpO3JldHVybiBsLmVycm9yJiZ1KGwudmFsdWUpLHIucHJvbWlzZX19KX0sNDU3NzM6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDUxNjA1KSxvPXIoNzIzNjgpLGk9cigyNDYwMSksYT1yKDU2NDkyKSxzPXIoMzk4MzYpLGM9cig1MDI0MiksdT1yKDUyOTI5KSxsPXIoMzk3NzIpLGY9Ik5vIG9uZSBwcm9taXNlIHJlc29sdmVkIjtuKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITAsZm9yY2VkOmx9LHthbnk6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPWEoIkFnZ3JlZ2F0ZUVycm9yIiksbj1zLmYodCksbD1uLnJlc29sdmUsZD1uLnJlamVjdCxwPWMoKGZ1bmN0aW9uKCl7dmFyIG49aSh0LnJlc29sdmUpLGE9W10scz0wLGM9MSxwPSExO3UoZSwoZnVuY3Rpb24oZSl7dmFyIGk9cysrLHU9ITE7YysrLG8obix0LGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3V8fHB8fChwPSEwLGwoZSkpfSksKGZ1bmN0aW9uKGUpe3V8fHB8fCh1PSEwLGFbaV09ZSwtLWN8fGQobmV3IHIoYSxmKSkpfSkpfSkpLC0tY3x8ZChuZXcgcihhLGYpKX0pKTtyZXR1cm4gcC5lcnJvciYmZChwLnZhbHVlKSxuLnByb21pc2V9fSl9LDgzMzk2OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig1MTYwNSksbz1yKDY5MjYpLGk9cigyNDEzKSxhPXIoOTIwNzQpLHM9cig1NjQ5MiksYz1yKDc4NDIwKSx1PXIoMjM0NDQpLGw9cig5ODAzKSxmPXIoNzQ4NSksZD1pJiZpLnByb3RvdHlwZTtpZihuKHt0YXJnZXQ6IlByb21pc2UiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiEhaSYmYSgoZnVuY3Rpb24oKXtkLmZpbmFsbHkuY2FsbCh7dGhlbjpmdW5jdGlvbigpe319LChmdW5jdGlvbigpe30pKX0pKX0se2ZpbmFsbHk6ZnVuY3Rpb24oZSl7dmFyIHQ9dSh0aGlzLHMoIlByb21pc2UiKSkscj1jKGUpO3JldHVybiB0aGlzLnRoZW4ocj9mdW5jdGlvbihyKXtyZXR1cm4gbCh0LGUoKSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKX06ZSxyP2Z1bmN0aW9uKHIpe3JldHVybiBsKHQsZSgpKS50aGVuKChmdW5jdGlvbigpe3Rocm93IHJ9KSl9OmUpfX0pLCFvJiZjKGkpKXt2YXIgcD1zKCJQcm9taXNlIikucHJvdG90eXBlLmZpbmFsbHk7ZC5maW5hbGx5IT09cCYmZihkLCJmaW5hbGx5IixwLHt1bnNhZmU6ITB9KX19LDg0MjE2OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig2NTA3Nyksbz1yKDMxMDM2KSxpPXIoMTg1NjkpLGE9cig3NjQ3Nykscz1yKDk5MjA2KS5nZXQsYz1SZWdFeHAucHJvdG90eXBlLHU9VHlwZUVycm9yO24mJm8mJmEoYywiZG90QWxsIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKHRoaXMhPT1jKXtpZigiUmVnRXhwIj09PWkodGhpcykpcmV0dXJuISFzKHRoaXMpLmRvdEFsbDt0aHJvdyB1KCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsIFJlZ0V4cCByZXF1aXJlZCIpfX19KX0sMTg5NDQ6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDUxNjA1KSxvPXIoMzAyODEpLGk9cig3MTIyOSksYT1yKDk1MzYyKSxzPW8oIiIuY2hhckNvZGVBdCk7bih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwfSx7aXNXZWxsRm9ybWVkOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWEoaSh0aGlzKSksdD1lLmxlbmd0aCxyPTA7cjx0O3IrKyl7dmFyIG49cyhlLHIpO2lmKDU1Mjk2PT0oNjM0ODgmbikmJihuPj01NjMyMHx8KytyPj10fHw1NjMyMCE9KDY0NTEyJnMoZSxyKSkpKXJldHVybiExfXJldHVybiEwfX0pfSwxNzg3MDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNTE2MDUpLG89cig3MjM2OCksaT1yKDQzMDkxKSxhPXIoMTgyODcpLHM9cig0ODI5NiksYz1yKDcxMjI5KSx1PXIoMzM3NDcpLGw9cig5NTM2MiksZj1yKDczOTM4KSxkPXIoODg0MDYpLHA9cigxODU2OSksXz1yKDYyNDQ5KSxoPXIoMTAzNTMpLG09cig0NjQ1NykseT1yKDc0ODUpLGc9cig5MjA3NCksdj1yKDMxNjAyKSxiPXIoMjM0NDQpLHc9cig2NzIzNCksUz1yKDY2NzkzKSxrPXIoOTkyMDYpLHg9cig2OTI2KSxFPXYoIm1hdGNoQWxsIiksQT0iUmVnRXhwIFN0cmluZyIsVD1BKyIgSXRlcmF0b3IiLFI9ay5zZXQsUD1rLmdldHRlckZvcihUKSxPPVJlZ0V4cC5wcm90b3R5cGUsTT1UeXBlRXJyb3IsRj1pKCIiLmluZGV4T2YpLEk9aSgiIi5tYXRjaEFsbCksaj0hIUkmJiFnKChmdW5jdGlvbigpe0koImEiLC8uLyl9KSksRD1hKChmdW5jdGlvbihlLHQscixuKXtSKHRoaXMse3R5cGU6VCxyZWdleHA6ZSxzdHJpbmc6dCxnbG9iYWw6cix1bmljb2RlOm4sZG9uZTohMX0pfSksQSwoZnVuY3Rpb24oKXt2YXIgZT1QKHRoaXMpO2lmKGUuZG9uZSlyZXR1cm4gcyh2b2lkIDAsITApO3ZhciB0PWUucmVnZXhwLHI9ZS5zdHJpbmcsbj1TKHQscik7cmV0dXJuIG51bGw9PT1uPyhlLmRvbmU9ITAscyh2b2lkIDAsITApKTplLmdsb2JhbD8oIiI9PT1sKG5bMF0pJiYodC5sYXN0SW5kZXg9dyhyLHUodC5sYXN0SW5kZXgpLGUudW5pY29kZSkpLHMobiwhMSkpOihlLmRvbmU9ITAscyhuLCExKSl9KSksTD1mdW5jdGlvbihlKXt2YXIgdCxyLG4sbz1mKHRoaXMpLGk9bChlKSxhPWIobyxSZWdFeHApLHM9bChoKG8pKTtyZXR1cm4gdD1uZXcgYShhPT09UmVnRXhwP28uc291cmNlOm8scykscj0hIX5GKHMsImciKSxuPSEhfkYocywidSIpLHQubGFzdEluZGV4PXUoby5sYXN0SW5kZXgpLG5ldyBEKHQsaSxyLG4pfTtuKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOmp9LHttYXRjaEFsbDpmdW5jdGlvbihlKXt2YXIgdCxyLG4saSxhPWModGhpcyk7aWYoZChlKSl7aWYoailyZXR1cm4gSShhLGUpfWVsc2V7aWYoXyhlKSYmKHQ9bChjKGgoZSkpKSwhfkYodCwiZyIpKSl0aHJvdyBNKCJgLm1hdGNoQWxsYCBkb2VzIG5vdCBhbGxvdyBub24tZ2xvYmFsIHJlZ2V4ZXMiKTtpZihqKXJldHVybiBJKGEsZSk7aWYodm9pZCAwPT09KG49bShlLEUpKSYmeCYmIlJlZ0V4cCI9PT1wKGUpJiYobj1MKSxuKXJldHVybiBvKG4sZSxhKX1yZXR1cm4gcj1sKGEpLGk9bmV3IFJlZ0V4cChlLCJnIikseD9vKEwsaSxyKTppW0VdKHIpfX0pLHh8fEUgaW4gT3x8eShPLEUsTCl9LDYwMjQzOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig1MTYwNSksbz1yKDcyMzY4KSxpPXIoMzAyODEpLGE9cig3MTIyOSkscz1yKDc4NDIwKSxjPXIoODg0MDYpLHU9cig2MjQ0OSksbD1yKDk1MzYyKSxmPXIoNDY0NTcpLGQ9cigxMDM1MykscD1yKDk0NDMzKSxfPXIoMzE2MDIpLGg9cig2OTI2KSxtPV8oInJlcGxhY2UiKSx5PVR5cGVFcnJvcixnPWkoIiIuaW5kZXhPZiksdj1pKCIiLnJlcGxhY2UpLGI9aSgiIi5zbGljZSksdz1NYXRoLm1heCxTPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gcj5lLmxlbmd0aD8tMToiIj09PXQ/cjpnKGUsdCxyKX07bih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwfSx7cmVwbGFjZUFsbDpmdW5jdGlvbihlLHQpe3ZhciByLG4saSxfLGsseCxFLEEsVCxSPWEodGhpcyksUD0wLE89MCxNPSIiO2lmKCFjKGUpKXtpZigocj11KGUpKSYmKG49bChhKGQoZSkpKSwhfmcobiwiZyIpKSl0aHJvdyB5KCJgLnJlcGxhY2VBbGxgIGRvZXMgbm90IGFsbG93IG5vbi1nbG9iYWwgcmVnZXhlcyIpO2lmKGk9ZihlLG0pKXJldHVybiBvKGksZSxSLHQpO2lmKGgmJnIpcmV0dXJuIHYobChSKSxlLHQpfWZvcihfPWwoUiksaz1sKGUpLCh4PXModCkpfHwodD1sKHQpKSxFPWsubGVuZ3RoLEE9dygxLEUpLFA9UyhfLGssMCk7LTEhPT1QOylUPXg/bCh0KGssUCxfKSk6cChrLF8sUCxbXSx2b2lkIDAsdCksTSs9YihfLE8sUCkrVCxPPVArRSxQPVMoXyxrLFArQSk7cmV0dXJuIE88Xy5sZW5ndGgmJihNKz1iKF8sTykpLE19fSl9LDYwODU6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDUxNjA1KSxvPXIoNzIzNjgpLGk9cigzMDI4MSksYT1yKDcxMjI5KSxzPXIoOTUzNjIpLGM9cig5MjA3NCksdT1BcnJheSxsPWkoIiIuY2hhckF0KSxmPWkoIiIuY2hhckNvZGVBdCksZD1pKFtdLmpvaW4pLHA9IiIudG9XZWxsRm9ybWVkLF89cCYmYygoZnVuY3Rpb24oKXtyZXR1cm4iMSIhPT1vKHAsMSl9KSk7bih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpffSx7dG9XZWxsRm9ybWVkOmZ1bmN0aW9uKCl7dmFyIGU9cyhhKHRoaXMpKTtpZihfKXJldHVybiBvKHAsZSk7Zm9yKHZhciB0PWUubGVuZ3RoLHI9dSh0KSxuPTA7bjx0O24rKyl7dmFyIGk9ZihlLG4pOzU1Mjk2IT0oNjM0ODgmaSk/cltuXT1sKGUsbik6aT49NTYzMjB8fG4rMT49dHx8NTYzMjAhPSg2NDUxMiZmKGUsbisxKSk/cltuXT0i77+9IjoocltuXT1sKGUsbiksclsrK25dPWwoZSxuKSl9cmV0dXJuIGQociwiIil9fSl9LDI4OTIxOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig4NTM0Myksbz1yKDIzNDkzKSxpPXIoNzkzMjgpLGE9bi5hVHlwZWRBcnJheTsoMCxuLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJhdCIsKGZ1bmN0aW9uKGUpe3ZhciB0PWEodGhpcykscj1vKHQpLG49aShlKSxzPW4+PTA/bjpyK247cmV0dXJuIHM8MHx8cz49cj92b2lkIDA6dFtzXX0pKX0sNDk3MzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoODUzNDMpLG89cig0NTU4MikuZmluZExhc3RJbmRleCxpPW4uYVR5cGVkQXJyYXk7KDAsbi5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZmluZExhc3RJbmRleCIsKGZ1bmN0aW9uKGUpe3JldHVybiBvKGkodGhpcyksZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSl9LDgxMzA4OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig4NTM0Myksbz1yKDQ1NTgyKS5maW5kTGFzdCxpPW4uYVR5cGVkQXJyYXk7KDAsbi5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZmluZExhc3QiLChmdW5jdGlvbihlKXtyZXR1cm4gbyhpKHRoaXMpLGUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpfSwzNDkyOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig5NDAzMyksbz1yKDg1MzQzKSxpPW8uYVR5cGVkQXJyYXksYT1vLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Qscz1vLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjthKCJ0b1JldmVyc2VkIiwoZnVuY3Rpb24oKXtyZXR1cm4gbihpKHRoaXMpLHModGhpcykpfSkpfSw4NDQ2NzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoODUzNDMpLG89cigzMDI4MSksaT1yKDI0NjAxKSxhPXIoNDA0NDcpLHM9bi5hVHlwZWRBcnJheSxjPW4uZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLHU9bi5leHBvcnRUeXBlZEFycmF5TWV0aG9kLGw9byhuLlR5cGVkQXJyYXlQcm90b3R5cGUuc29ydCk7dSgidG9Tb3J0ZWQiLChmdW5jdGlvbihlKXt2b2lkIDAhPT1lJiZpKGUpO3ZhciB0PXModGhpcykscj1hKGModCksdCk7cmV0dXJuIGwocixlKX0pKX0sMjY3MzY6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDUxODY3KSxvPXIoODUzNDMpLGk9cig1NzQ3MiksYT1yKDc5MzI4KSxzPXIoMzAwNSksYz1vLmFUeXBlZEFycmF5LHU9by5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsbD1vLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsZj0hIWZ1bmN0aW9uKCl7dHJ5e25ldyBJbnQ4QXJyYXkoMSkud2l0aCgyLHt2YWx1ZU9mOmZ1bmN0aW9uKCl7dGhyb3cgOH19KX1jYXRjaChlKXtyZXR1cm4gOD09PWV9fSgpO2woIndpdGgiLHt3aXRoOmZ1bmN0aW9uKGUsdCl7dmFyIHI9Yyh0aGlzKSxvPWEoZSksbD1pKHIpP3ModCk6K3Q7cmV0dXJuIG4ocix1KHIpLG8sbCl9fS53aXRoLCFmKX0sNTQ3NTQ6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDUxNjA1KSxvPXIoOTI3ODUpLGk9cig1NjQ5MiksYT1yKDkyMDc0KSxzPXIoNTMxMDUpLGM9cig2Njg0MyksdT1yKDQzNjEwKS5mLGw9cig3NDg1KSxmPXIoNzY0NzcpLGQ9cigzNjQ5MCkscD1yKDY1MTkwKSxfPXIoNzM5MzgpLGg9cig3MzM1MyksbT1yKDIwNjEwKSx5PXIoMjY1NjcpLGc9cig0NjQ1Miksdj1yKDk5MjA2KSxiPXIoNjUwNzcpLHc9cig2OTI2KSxTPSJET01FeGNlcHRpb24iLGs9IkRBVEFfQ0xPTkVfRVJSIix4PWkoIkVycm9yIiksRT1pKFMpfHxmdW5jdGlvbigpe3RyeXsobmV3KGkoIk1lc3NhZ2VDaGFubmVsIil8fG8oIndvcmtlcl90aHJlYWRzIikuTWVzc2FnZUNoYW5uZWwpKS5wb3J0MS5wb3N0TWVzc2FnZShuZXcgV2Vha01hcCl9Y2F0Y2goZSl7aWYoZS5uYW1lPT09ayYmMjU9PT1lLmNvZGUpcmV0dXJuIGUuY29uc3RydWN0b3J9fSgpLEE9RSYmRS5wcm90b3R5cGUsVD14LnByb3RvdHlwZSxSPXYuc2V0LFA9di5nZXR0ZXJGb3IoUyksTz0ic3RhY2siaW4geChTKSxNPWZ1bmN0aW9uKGUpe3JldHVybiBkKHksZSkmJnlbZV0ubT95W2VdLmM6MH0sRj1mdW5jdGlvbigpe3AodGhpcyxJKTt2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bShlPDE/dm9pZCAwOmFyZ3VtZW50c1swXSkscj1tKGU8Mj92b2lkIDA6YXJndW1lbnRzWzFdLCJFcnJvciIpLG49TShyKTtpZihSKHRoaXMse3R5cGU6UyxuYW1lOnIsbWVzc2FnZTp0LGNvZGU6bn0pLGJ8fCh0aGlzLm5hbWU9cix0aGlzLm1lc3NhZ2U9dCx0aGlzLmNvZGU9biksTyl7dmFyIG89eCh0KTtvLm5hbWU9Uyx1KHRoaXMsInN0YWNrIixjKDEsZyhvLnN0YWNrLDEpKSl9fSxJPUYucHJvdG90eXBlPXMoVCksaj1mdW5jdGlvbihlKXtyZXR1cm57ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmV9fSxEPWZ1bmN0aW9uKGUpe3JldHVybiBqKChmdW5jdGlvbigpe3JldHVybiBQKHRoaXMpW2VdfSkpfTtiJiYoZihJLCJjb2RlIixEKCJjb2RlIikpLGYoSSwibWVzc2FnZSIsRCgibWVzc2FnZSIpKSxmKEksIm5hbWUiLEQoIm5hbWUiKSkpLHUoSSwiY29uc3RydWN0b3IiLGMoMSxGKSk7dmFyIEw9YSgoZnVuY3Rpb24oKXtyZXR1cm4hKG5ldyBFIGluc3RhbmNlb2YgeCl9KSksVT1MfHxhKChmdW5jdGlvbigpe3JldHVybiBULnRvU3RyaW5nIT09aHx8IjI6IDEiIT09U3RyaW5nKG5ldyBFKDEsMikpfSkpLHo9THx8YSgoZnVuY3Rpb24oKXtyZXR1cm4gMjUhPT1uZXcgRSgxLCJEYXRhQ2xvbmVFcnJvciIpLmNvZGV9KSksQj1MfHwyNSE9PUVba118fDI1IT09QVtrXSxIPXc/VXx8enx8QjpMO24oe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6SH0se0RPTUV4Y2VwdGlvbjpIP0Y6RX0pO3ZhciBXPWkoUyksJD1XLnByb3RvdHlwZTtmb3IodmFyIHEgaW4gVSYmKHd8fEU9PT1XKSYmbCgkLCJ0b1N0cmluZyIsaCkseiYmYiYmRT09PVcmJmYoJCwiY29kZSIsaigoZnVuY3Rpb24oKXtyZXR1cm4gTShfKHRoaXMpLm5hbWUpfSkpKSx5KWlmKGQoeSxxKSl7dmFyIEc9eVtxXSxWPUcucyxZPWMoNixHLmMpO2QoVyxWKXx8dShXLFYsWSksZCgkLFYpfHx1KCQsVixZKX19LDk5MDc4OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig1MTYwNSksbz1yKDMwMjAwKSxpPXIoNTY0OTIpLGE9cig2Njg0Mykscz1yKDQzNjEwKS5mLGM9cigzNjQ5MCksdT1yKDY1MTkwKSxsPXIoOTMwNTQpLGY9cigyMDYxMCksZD1yKDI2NTY3KSxwPXIoNDY0NTIpLF89cig2NTA3NyksaD1yKDY5MjYpLG09IkRPTUV4Y2VwdGlvbiIseT1pKCJFcnJvciIpLGc9aShtKSx2PWZ1bmN0aW9uKCl7dSh0aGlzLGIpO3ZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1mKGU8MT92b2lkIDA6YXJndW1lbnRzWzBdKSxyPWYoZTwyP3ZvaWQgMDphcmd1bWVudHNbMV0sIkVycm9yIiksbj1uZXcgZyh0LHIpLG89eSh0KTtyZXR1cm4gby5uYW1lPW0scyhuLCJzdGFjayIsYSgxLHAoby5zdGFjaywxKSkpLGwobix0aGlzLHYpLG59LGI9di5wcm90b3R5cGU9Zy5wcm90b3R5cGUsdz0ic3RhY2siaW4geShtKSxTPSJzdGFjayJpbiBuZXcgZygxLDIpLGs9ZyYmXyYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLG0pLHg9ISgha3x8ay53cml0YWJsZSYmay5jb25maWd1cmFibGUpLEU9dyYmIXgmJiFTO24oe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6aHx8RX0se0RPTUV4Y2VwdGlvbjpFP3Y6Z30pO3ZhciBBPWkobSksVD1BLnByb3RvdHlwZTtpZihULmNvbnN0cnVjdG9yIT09QSlmb3IodmFyIFIgaW4gaHx8cyhULCJjb25zdHJ1Y3RvciIsYSgxLEEpKSxkKWlmKGMoZCxSKSl7dmFyIFA9ZFtSXSxPPVAucztjKEEsTyl8fHMoQSxPLGEoNixQLmMpKX19LDkxOTU0OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig1NjQ5Miksbz0iRE9NRXhjZXB0aW9uIjtyKDc1MjgyKShuKG8pLG8pfSw4NTE4MzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNTE2MDUpLG89cigzMDIwMCksaT1yKDQ3NDYyKSxhPXIoMjQ2MDEpLHM9cig1NjU4OSksYz1yKDc1MjIzKSx1PW8ucHJvY2VzcztuKHtnbG9iYWw6ITAsZW51bWVyYWJsZTohMCxkb250Q2FsbEdldFNldDohMH0se3F1ZXVlTWljcm90YXNrOmZ1bmN0aW9uKGUpe3MoYXJndW1lbnRzLmxlbmd0aCwxKSxhKGUpO3ZhciB0PWMmJnUuZG9tYWluO2kodD90LmJpbmQoZSk6ZSl9fSl9LDk2MzgwOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig3NDg1KSxvPXIoMzAyODEpLGk9cig5NTM2MiksYT1yKDU2NTg5KSxzPVVSTFNlYXJjaFBhcmFtcyxjPXMucHJvdG90eXBlLHU9byhjLmFwcGVuZCksbD1vKGMuZGVsZXRlKSxmPW8oYy5mb3JFYWNoKSxkPW8oW10ucHVzaCkscD1uZXcgcygiYT0xJmE9MiZiPTMiKTtwLmRlbGV0ZSgiYSIsMSkscC5kZWxldGUoImIiLHZvaWQgMCkscCsiIiE9ImE9MiImJm4oYywiZGVsZXRlIiwoZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxyPXQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdO2lmKHQmJnZvaWQgMD09PXIpcmV0dXJuIGwodGhpcyxlKTt2YXIgbj1bXTtmKHRoaXMsKGZ1bmN0aW9uKGUsdCl7ZChuLHtrZXk6dCx2YWx1ZTplfSl9KSksYSh0LDEpO2Zvcih2YXIgbyxzPWkoZSksYz1pKHIpLHA9MCxfPTAsaD0hMSxtPW4ubGVuZ3RoO3A8bTspbz1uW3ArK10saHx8by5rZXk9PT1zPyhoPSEwLGwodGhpcyxvLmtleSkpOl8rKztmb3IoO188bTspKG89bltfKytdKS5rZXk9PT1zJiZvLnZhbHVlPT09Y3x8dSh0aGlzLG8ua2V5LG8udmFsdWUpfSkse2VudW1lcmFibGU6ITAsdW5zYWZlOiEwfSl9LDkxMDU5OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig3NDg1KSxvPXIoMzAyODEpLGk9cig5NTM2MiksYT1yKDU2NTg5KSxzPVVSTFNlYXJjaFBhcmFtcyxjPXMucHJvdG90eXBlLHU9byhjLmdldEFsbCksbD1vKGMuaGFzKSxmPW5ldyBzKCJhPTEiKTshZi5oYXMoImEiLDIpJiZmLmhhcygiYSIsdm9pZCAwKXx8bihjLCJoYXMiLChmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoLHI9dDwyP3ZvaWQgMDphcmd1bWVudHNbMV07aWYodCYmdm9pZCAwPT09cilyZXR1cm4gbCh0aGlzLGUpO3ZhciBuPXUodGhpcyxlKTthKHQsMSk7Zm9yKHZhciBvPWkocikscz0wO3M8bi5sZW5ndGg7KWlmKG5bcysrXT09PW8pcmV0dXJuITA7cmV0dXJuITF9KSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sMjhlMzpmdW5jdGlvbihlKXt2YXIgdD0xZTMscj02MCp0LG49NjAqcixvPTI0Km4saT03Km8sYT0zNjUuMjUqbztmdW5jdGlvbiBzKGUsdCxyLG4pe3ZhciBvPXQ+PTEuNSpyO3JldHVybiBNYXRoLnJvdW5kKGUvcikrIiAiK24rKG8/InMiOiIiKX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSxjKXtjPWN8fHt9O3ZhciB1PXR5cGVvZiBlO2lmKCJzdHJpbmciPT09dSYmZS5sZW5ndGg+MClyZXR1cm4gZnVuY3Rpb24oZSl7aWYoKGU9U3RyaW5nKGUpKS5sZW5ndGg+MTAwKXJldHVybjt2YXIgcz0vXigtPyg/OlxkKyk/XC4/XGQrKSAqKG1pbGxpc2Vjb25kcz98bXNlY3M/fG1zfHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8d2Vla3M/fHd8eWVhcnM/fHlycz98eSk/JC9pLmV4ZWMoZSk7aWYoIXMpcmV0dXJuO3ZhciBjPXBhcnNlRmxvYXQoc1sxXSk7c3dpdGNoKChzWzJdfHwibXMiKS50b0xvd2VyQ2FzZSgpKXtjYXNlInllYXJzIjpjYXNlInllYXIiOmNhc2UieXJzIjpjYXNlInlyIjpjYXNlInkiOnJldHVybiBjKmE7Y2FzZSJ3ZWVrcyI6Y2FzZSJ3ZWVrIjpjYXNlInciOnJldHVybiBjKmk7Y2FzZSJkYXlzIjpjYXNlImRheSI6Y2FzZSJkIjpyZXR1cm4gYypvO2Nhc2UiaG91cnMiOmNhc2UiaG91ciI6Y2FzZSJocnMiOmNhc2UiaHIiOmNhc2UiaCI6cmV0dXJuIGMqbjtjYXNlIm1pbnV0ZXMiOmNhc2UibWludXRlIjpjYXNlIm1pbnMiOmNhc2UibWluIjpjYXNlIm0iOnJldHVybiBjKnI7Y2FzZSJzZWNvbmRzIjpjYXNlInNlY29uZCI6Y2FzZSJzZWNzIjpjYXNlInNlYyI6Y2FzZSJzIjpyZXR1cm4gYyp0O2Nhc2UibWlsbGlzZWNvbmRzIjpjYXNlIm1pbGxpc2Vjb25kIjpjYXNlIm1zZWNzIjpjYXNlIm1zZWMiOmNhc2UibXMiOnJldHVybiBjO2RlZmF1bHQ6cmV0dXJufX0oZSk7aWYoIm51bWJlciI9PT11JiZpc0Zpbml0ZShlKSlyZXR1cm4gYy5sb25nP2Z1bmN0aW9uKGUpe3ZhciBpPU1hdGguYWJzKGUpO2lmKGk+PW8pcmV0dXJuIHMoZSxpLG8sImRheSIpO2lmKGk+PW4pcmV0dXJuIHMoZSxpLG4sImhvdXIiKTtpZihpPj1yKXJldHVybiBzKGUsaSxyLCJtaW51dGUiKTtpZihpPj10KXJldHVybiBzKGUsaSx0LCJzZWNvbmQiKTtyZXR1cm4gZSsiIG1zIn0oZSk6ZnVuY3Rpb24oZSl7dmFyIGk9TWF0aC5hYnMoZSk7aWYoaT49bylyZXR1cm4gTWF0aC5yb3VuZChlL28pKyJkIjtpZihpPj1uKXJldHVybiBNYXRoLnJvdW5kKGUvbikrImgiO2lmKGk+PXIpcmV0dXJuIE1hdGgucm91bmQoZS9yKSsibSI7aWYoaT49dClyZXR1cm4gTWF0aC5yb3VuZChlL3QpKyJzIjtyZXR1cm4gZSsibXMifShlKTt0aHJvdyBuZXcgRXJyb3IoInZhbCBpcyBub3QgYSBub24tZW1wdHkgc3RyaW5nIG9yIGEgdmFsaWQgbnVtYmVyLiB2YWw9IitKU09OLnN0cmluZ2lmeShlKSl9fSwxNzgzMzpmdW5jdGlvbihlLHQscil7dC5mb3JtYXRBcmdzPWZ1bmN0aW9uKHQpe2lmKHRbMF09KHRoaXMudXNlQ29sb3JzPyIlYyI6IiIpK3RoaXMubmFtZXNwYWNlKyh0aGlzLnVzZUNvbG9ycz8iICVjIjoiICIpK3RbMF0rKHRoaXMudXNlQ29sb3JzPyIlYyAiOiIgIikrIisiK2UuZXhwb3J0cy5odW1hbml6ZSh0aGlzLmRpZmYpLCF0aGlzLnVzZUNvbG9ycylyZXR1cm47Y29uc3Qgcj0iY29sb3I6ICIrdGhpcy5jb2xvcjt0LnNwbGljZSgxLDAsciwiY29sb3I6IGluaGVyaXQiKTtsZXQgbj0wLG89MDt0WzBdLnJlcGxhY2UoLyVbYS16QS1aJV0vZywoZT0+eyIlJSIhPT1lJiYobisrLCIlYyI9PT1lJiYobz1uKSl9KSksdC5zcGxpY2UobywwLHIpfSx0LnNhdmU9ZnVuY3Rpb24oZSl7dHJ5e2U/dC5zdG9yYWdlLnNldEl0ZW0oImRlYnVnIixlKTp0LnN0b3JhZ2UucmVtb3ZlSXRlbSgiZGVidWciKX1jYXRjaChlKXt9fSx0LmxvYWQ9ZnVuY3Rpb24oKXtsZXQgZTt0cnl7ZT10LnN0b3JhZ2UuZ2V0SXRlbSgiZGVidWciKX1jYXRjaChlKXt9IWUmJiJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmImVudiJpbiBwcm9jZXNzJiYoZT1wcm9jZXNzLmVudi5ERUJVRyk7cmV0dXJuIGV9LHQudXNlQ29sb3JzPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5wcm9jZXNzJiYoInJlbmRlcmVyIj09PXdpbmRvdy5wcm9jZXNzLnR5cGV8fHdpbmRvdy5wcm9jZXNzLl9fbndqcykpcmV0dXJuITA7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvci51c2VyQWdlbnQmJm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvKGVkZ2V8dHJpZGVudClcLyhcZCspLykpcmV0dXJuITE7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5XZWJraXRBcHBlYXJhbmNlfHwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LmNvbnNvbGUmJih3aW5kb3cuY29uc29sZS5maXJlYnVnfHx3aW5kb3cuY29uc29sZS5leGNlcHRpb24mJndpbmRvdy5jb25zb2xlLnRhYmxlKXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvci51c2VyQWdlbnQmJm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvZmlyZWZveFwvKFxkKykvKSYmcGFyc2VJbnQoUmVnRXhwLiQxLDEwKT49MzF8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2FwcGxld2Via2l0XC8oXGQrKS8pfSx0LnN0b3JhZ2U9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGxvY2FsU3RvcmFnZX1jYXRjaChlKXt9fSgpLHQuZGVzdHJveT0oKCk9PntsZXQgZT0hMTtyZXR1cm4oKT0+e2V8fChlPSEwLGNvbnNvbGUud2FybigiSW5zdGFuY2UgbWV0aG9kIGBkZWJ1Zy5kZXN0cm95KClgIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBkb2VzIGFueXRoaW5nLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiBvZiBgZGVidWdgLiIpKX19KSgpLHQuY29sb3JzPVsiIzAwMDBDQyIsIiMwMDAwRkYiLCIjMDAzM0NDIiwiIzAwMzNGRiIsIiMwMDY2Q0MiLCIjMDA2NkZGIiwiIzAwOTlDQyIsIiMwMDk5RkYiLCIjMDBDQzAwIiwiIzAwQ0MzMyIsIiMwMENDNjYiLCIjMDBDQzk5IiwiIzAwQ0NDQyIsIiMwMENDRkYiLCIjMzMwMENDIiwiIzMzMDBGRiIsIiMzMzMzQ0MiLCIjMzMzM0ZGIiwiIzMzNjZDQyIsIiMzMzY2RkYiLCIjMzM5OUNDIiwiIzMzOTlGRiIsIiMzM0NDMDAiLCIjMzNDQzMzIiwiIzMzQ0M2NiIsIiMzM0NDOTkiLCIjMzNDQ0NDIiwiIzMzQ0NGRiIsIiM2NjAwQ0MiLCIjNjYwMEZGIiwiIzY2MzNDQyIsIiM2NjMzRkYiLCIjNjZDQzAwIiwiIzY2Q0MzMyIsIiM5OTAwQ0MiLCIjOTkwMEZGIiwiIzk5MzNDQyIsIiM5OTMzRkYiLCIjOTlDQzAwIiwiIzk5Q0MzMyIsIiNDQzAwMDAiLCIjQ0MwMDMzIiwiI0NDMDA2NiIsIiNDQzAwOTkiLCIjQ0MwMENDIiwiI0NDMDBGRiIsIiNDQzMzMDAiLCIjQ0MzMzMzIiwiI0NDMzM2NiIsIiNDQzMzOTkiLCIjQ0MzM0NDIiwiI0NDMzNGRiIsIiNDQzY2MDAiLCIjQ0M2NjMzIiwiI0NDOTkwMCIsIiNDQzk5MzMiLCIjQ0NDQzAwIiwiI0NDQ0MzMyIsIiNGRjAwMDAiLCIjRkYwMDMzIiwiI0ZGMDA2NiIsIiNGRjAwOTkiLCIjRkYwMENDIiwiI0ZGMDBGRiIsIiNGRjMzMDAiLCIjRkYzMzMzIiwiI0ZGMzM2NiIsIiNGRjMzOTkiLCIjRkYzM0NDIiwiI0ZGMzNGRiIsIiNGRjY2MDAiLCIjRkY2NjMzIiwiI0ZGOTkwMCIsIiNGRjk5MzMiLCIjRkZDQzAwIiwiI0ZGQ0MzMyJdLHQubG9nPWNvbnNvbGUuZGVidWd8fGNvbnNvbGUubG9nfHwoKCk9Pnt9KSxlLmV4cG9ydHM9cig0MDczNikodCk7Y29uc3R7Zm9ybWF0dGVyczpufT1lLmV4cG9ydHM7bi5qPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZSl9Y2F0Y2goZSl7cmV0dXJuIltVbmV4cGVjdGVkSlNPTlBhcnNlRXJyb3JdOiAiK2UubWVzc2FnZX19fSw0MDczNjpmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7bGV0IHIsbyxpLGE9bnVsbDtmdW5jdGlvbiBzKC4uLmUpe2lmKCFzLmVuYWJsZWQpcmV0dXJuO2NvbnN0IG49cyxvPU51bWJlcihuZXcgRGF0ZSksaT1vLShyfHxvKTtuLmRpZmY9aSxuLnByZXY9cixuLmN1cnI9byxyPW8sZVswXT10LmNvZXJjZShlWzBdKSwic3RyaW5nIiE9dHlwZW9mIGVbMF0mJmUudW5zaGlmdCgiJU8iKTtsZXQgYT0wO2VbMF09ZVswXS5yZXBsYWNlKC8lKFthLXpBLVolXSkvZywoKHIsbyk9PntpZigiJSUiPT09cilyZXR1cm4iJSI7YSsrO2NvbnN0IGk9dC5mb3JtYXR0ZXJzW29dO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpKXtjb25zdCB0PWVbYV07cj1pLmNhbGwobix0KSxlLnNwbGljZShhLDEpLGEtLX1yZXR1cm4gcn0pKSx0LmZvcm1hdEFyZ3MuY2FsbChuLGUpOyhuLmxvZ3x8dC5sb2cpLmFwcGx5KG4sZSl9cmV0dXJuIHMubmFtZXNwYWNlPWUscy51c2VDb2xvcnM9dC51c2VDb2xvcnMoKSxzLmNvbG9yPXQuc2VsZWN0Q29sb3IoZSkscy5leHRlbmQ9bixzLmRlc3Ryb3k9dC5kZXN0cm95LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJlbmFibGVkIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITEsZ2V0OigpPT5udWxsIT09YT9hOihvIT09dC5uYW1lc3BhY2VzJiYobz10Lm5hbWVzcGFjZXMsaT10LmVuYWJsZWQoZSkpLGkpLHNldDplPT57YT1lfX0pLCJmdW5jdGlvbiI9PXR5cGVvZiB0LmluaXQmJnQuaW5pdChzKSxzfWZ1bmN0aW9uIG4oZSxyKXtjb25zdCBuPXQodGhpcy5uYW1lc3BhY2UrKHZvaWQgMD09PXI/IjoiOnIpK2UpO3JldHVybiBuLmxvZz10aGlzLmxvZyxufWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoMixlLnRvU3RyaW5nKCkubGVuZ3RoLTIpLnJlcGxhY2UoL1wuXCpcPyQvLCIqIil9cmV0dXJuIHQuZGVidWc9dCx0LmRlZmF1bHQ9dCx0LmNvZXJjZT1mdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIGUuc3RhY2t8fGUubWVzc2FnZTtyZXR1cm4gZX0sdC5kaXNhYmxlPWZ1bmN0aW9uKCl7Y29uc3QgZT1bLi4udC5uYW1lcy5tYXAobyksLi4udC5za2lwcy5tYXAobykubWFwKChlPT4iLSIrZSkpXS5qb2luKCIsIik7cmV0dXJuIHQuZW5hYmxlKCIiKSxlfSx0LmVuYWJsZT1mdW5jdGlvbihlKXtsZXQgcjt0LnNhdmUoZSksdC5uYW1lc3BhY2VzPWUsdC5uYW1lcz1bXSx0LnNraXBzPVtdO2NvbnN0IG49KCJzdHJpbmciPT10eXBlb2YgZT9lOiIiKS5zcGxpdCgvW1xzLF0rLyksbz1uLmxlbmd0aDtmb3Iocj0wO3I8bztyKyspbltyXSYmKCItIj09PShlPW5bcl0ucmVwbGFjZSgvXCovZywiLio/IikpWzBdP3Quc2tpcHMucHVzaChuZXcgUmVnRXhwKCJeIitlLnNsaWNlKDEpKyIkIikpOnQubmFtZXMucHVzaChuZXcgUmVnRXhwKCJeIitlKyIkIikpKX0sdC5lbmFibGVkPWZ1bmN0aW9uKGUpe2lmKCIqIj09PWVbZS5sZW5ndGgtMV0pcmV0dXJuITA7bGV0IHIsbjtmb3Iocj0wLG49dC5za2lwcy5sZW5ndGg7cjxuO3IrKylpZih0LnNraXBzW3JdLnRlc3QoZSkpcmV0dXJuITE7Zm9yKHI9MCxuPXQubmFtZXMubGVuZ3RoO3I8bjtyKyspaWYodC5uYW1lc1tyXS50ZXN0KGUpKXJldHVybiEwO3JldHVybiExfSx0Lmh1bWFuaXplPXIoMjhlMyksdC5kZXN0cm95PWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJJbnN0YW5jZSBtZXRob2QgYGRlYnVnLmRlc3Ryb3koKWAgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGRvZXMgYW55dGhpbmcuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIG9mIGBkZWJ1Z2AuIil9LE9iamVjdC5rZXlzKGUpLmZvckVhY2goKHI9Pnt0W3JdPWVbcl19KSksdC5uYW1lcz1bXSx0LnNraXBzPVtdLHQuZm9ybWF0dGVycz17fSx0LnNlbGVjdENvbG9yPWZ1bmN0aW9uKGUpe2xldCByPTA7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspcj0ocjw8NSktcitlLmNoYXJDb2RlQXQodCkscnw9MDtyZXR1cm4gdC5jb2xvcnNbTWF0aC5hYnMocikldC5jb2xvcnMubGVuZ3RoXX0sdC5lbmFibGUodC5sb2FkKCkpLHR9fSw0MTQ2OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig0NDM2Myksbz17Y2hpbGRDb250ZXh0VHlwZXM6ITAsY29udGV4dFR5cGU6ITAsY29udGV4dFR5cGVzOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxnZXREZWZhdWx0UHJvcHM6ITAsZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiEwLGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczohMCxtaXhpbnM6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LGk9e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlwZTohMCxjYWxsZXI6ITAsY2FsbGVlOiEwLGFyZ3VtZW50czohMCxhcml0eTohMH0sYT17JCR0eXBlb2Y6ITAsY29tcGFyZTohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LHM9e307ZnVuY3Rpb24gYyhlKXtyZXR1cm4gbi5pc01lbW8oZSk/YTpzW2UuJCR0eXBlb2ZdfHxvfXNbbi5Gb3J3YXJkUmVmXT17JCR0eXBlb2Y6ITAscmVuZGVyOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxwcm9wVHlwZXM6ITB9LHNbbi5NZW1vXT1hO3ZhciB1PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLGY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IscD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsXz1PYmplY3QucHJvdG90eXBlO2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQscixuKXtpZigic3RyaW5nIiE9dHlwZW9mIHIpe2lmKF8pe3ZhciBvPXAocik7byYmbyE9PV8mJmUodCxvLG4pfXZhciBhPWwocik7ZiYmKGE9YS5jb25jYXQoZihyKSkpO2Zvcih2YXIgcz1jKHQpLGg9YyhyKSxtPTA7bTxhLmxlbmd0aDsrK20pe3ZhciB5PWFbbV07aWYoIShpW3ldfHxuJiZuW3ldfHxoJiZoW3ldfHxzJiZzW3ldKSl7dmFyIGc9ZChyLHkpO3RyeXt1KHQseSxnKX1jYXRjaChlKXt9fX19cmV0dXJuIHR9fSw2MjIxOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig5NjU0MCk7ZnVuY3Rpb24gbyhlKXt2YXIgdD0iaHR0cHM6Ly9yZWFjdC5kZXYvZXJyb3JzLyIrZTtpZigxPGFyZ3VtZW50cy5sZW5ndGgpe3QrPSI/YXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1sxXSk7Zm9yKHZhciByPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0Kz0iJmFyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbcl0pfXJldHVybiJNaW5pZmllZCBSZWFjdCBlcnJvciAjIitlKyI7IHZpc2l0ICIrdCsiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4ifWZ1bmN0aW9uIGkoKXt9dmFyIGE9e2Q6e2Y6aSxyOmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3Iobyg1MjIpKX0sRDppLEM6aSxMOmksbTppLFg6aSxTOmksTTppfSxwOjAsZmluZERPTU5vZGU6bnVsbH0scz1TeW1ib2wuZm9yKCJyZWFjdC5wb3J0YWwiKTt2YXIgYz1uLl9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERTtmdW5jdGlvbiB1KGUsdCl7cmV0dXJuImZvbnQiPT09ZT8iIjoic3RyaW5nIj09dHlwZW9mIHQ/InVzZS1jcmVkZW50aWFscyI9PT10P3Q6IiI6dm9pZCAwfXQuX19ET01fSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFPWEsdC5jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oZSx0KXt2YXIgcj0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZighdHx8MSE9PXQubm9kZVR5cGUmJjkhPT10Lm5vZGVUeXBlJiYxMSE9PXQubm9kZVR5cGUpdGhyb3cgRXJyb3IobygyOTkpKTtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3ZhciBuPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjpzLGtleTpudWxsPT1uP251bGw6IiIrbixjaGlsZHJlbjplLGNvbnRhaW5lckluZm86dCxpbXBsZW1lbnRhdGlvbjpyfX0oZSx0LG51bGwscil9LHQuZmx1c2hTeW5jPWZ1bmN0aW9uKGUpe3ZhciB0PWMuVCxyPWEucDt0cnl7aWYoYy5UPW51bGwsYS5wPTIsZSlyZXR1cm4gZSgpfWZpbmFsbHl7Yy5UPXQsYS5wPXIsYS5kLmYoKX19LHQucHJlY29ubmVjdD1mdW5jdGlvbihlLHQpeyJzdHJpbmciPT10eXBlb2YgZSYmKHQ/dD0ic3RyaW5nIj09dHlwZW9mKHQ9dC5jcm9zc09yaWdpbik/InVzZS1jcmVkZW50aWFscyI9PT10P3Q6IiI6dm9pZCAwOnQ9bnVsbCxhLmQuQyhlLHQpKX0sdC5wcmVmZXRjaEROUz1mdW5jdGlvbihlKXsic3RyaW5nIj09dHlwZW9mIGUmJmEuZC5EKGUpfSx0LnByZWluaXQ9ZnVuY3Rpb24oZSx0KXtpZigic3RyaW5nIj09dHlwZW9mIGUmJnQmJiJzdHJpbmciPT10eXBlb2YgdC5hcyl7dmFyIHI9dC5hcyxuPXUocix0LmNyb3NzT3JpZ2luKSxvPSJzdHJpbmciPT10eXBlb2YgdC5pbnRlZ3JpdHk/dC5pbnRlZ3JpdHk6dm9pZCAwLGk9InN0cmluZyI9PXR5cGVvZiB0LmZldGNoUHJpb3JpdHk/dC5mZXRjaFByaW9yaXR5OnZvaWQgMDsic3R5bGUiPT09cj9hLmQuUyhlLCJzdHJpbmciPT10eXBlb2YgdC5wcmVjZWRlbmNlP3QucHJlY2VkZW5jZTp2b2lkIDAse2Nyb3NzT3JpZ2luOm4saW50ZWdyaXR5Om8sZmV0Y2hQcmlvcml0eTppfSk6InNjcmlwdCI9PT1yJiZhLmQuWChlLHtjcm9zc09yaWdpbjpuLGludGVncml0eTpvLGZldGNoUHJpb3JpdHk6aSxub25jZToic3RyaW5nIj09dHlwZW9mIHQubm9uY2U/dC5ub25jZTp2b2lkIDB9KX19LHQucHJlaW5pdE1vZHVsZT1mdW5jdGlvbihlLHQpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlpZigib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10KXtpZihudWxsPT10LmFzfHwic2NyaXB0Ij09PXQuYXMpe3ZhciByPXUodC5hcyx0LmNyb3NzT3JpZ2luKTthLmQuTShlLHtjcm9zc09yaWdpbjpyLGludGVncml0eToic3RyaW5nIj09dHlwZW9mIHQuaW50ZWdyaXR5P3QuaW50ZWdyaXR5OnZvaWQgMCxub25jZToic3RyaW5nIj09dHlwZW9mIHQubm9uY2U/dC5ub25jZTp2b2lkIDB9KX19ZWxzZSBudWxsPT10JiZhLmQuTShlKX0sdC5wcmVsb2FkPWZ1bmN0aW9uKGUsdCl7aWYoInN0cmluZyI9PXR5cGVvZiBlJiYib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10JiYic3RyaW5nIj09dHlwZW9mIHQuYXMpe3ZhciByPXQuYXMsbj11KHIsdC5jcm9zc09yaWdpbik7YS5kLkwoZSxyLHtjcm9zc09yaWdpbjpuLGludGVncml0eToic3RyaW5nIj09dHlwZW9mIHQuaW50ZWdyaXR5P3QuaW50ZWdyaXR5OnZvaWQgMCxub25jZToic3RyaW5nIj09dHlwZW9mIHQubm9uY2U/dC5ub25jZTp2b2lkIDAsdHlwZToic3RyaW5nIj09dHlwZW9mIHQudHlwZT90LnR5cGU6dm9pZCAwLGZldGNoUHJpb3JpdHk6InN0cmluZyI9PXR5cGVvZiB0LmZldGNoUHJpb3JpdHk/dC5mZXRjaFByaW9yaXR5OnZvaWQgMCxyZWZlcnJlclBvbGljeToic3RyaW5nIj09dHlwZW9mIHQucmVmZXJyZXJQb2xpY3k/dC5yZWZlcnJlclBvbGljeTp2b2lkIDAsaW1hZ2VTcmNTZXQ6InN0cmluZyI9PXR5cGVvZiB0LmltYWdlU3JjU2V0P3QuaW1hZ2VTcmNTZXQ6dm9pZCAwLGltYWdlU2l6ZXM6InN0cmluZyI9PXR5cGVvZiB0LmltYWdlU2l6ZXM/dC5pbWFnZVNpemVzOnZvaWQgMCxtZWRpYToic3RyaW5nIj09dHlwZW9mIHQubWVkaWE/dC5tZWRpYTp2b2lkIDB9KX19LHQucHJlbG9hZE1vZHVsZT1mdW5jdGlvbihlLHQpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlpZih0KXt2YXIgcj11KHQuYXMsdC5jcm9zc09yaWdpbik7YS5kLm0oZSx7YXM6InN0cmluZyI9PXR5cGVvZiB0LmFzJiYic2NyaXB0IiE9PXQuYXM/dC5hczp2b2lkIDAsY3Jvc3NPcmlnaW46cixpbnRlZ3JpdHk6InN0cmluZyI9PXR5cGVvZiB0LmludGVncml0eT90LmludGVncml0eTp2b2lkIDB9KX1lbHNlIGEuZC5tKGUpfSx0LnJlcXVlc3RGb3JtUmVzZXQ9ZnVuY3Rpb24oZSl7YS5kLnIoZSl9LHQudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSh0KX0sdC51c2VGb3JtU3RhdGU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBjLkgudXNlRm9ybVN0YXRlKGUsdCxyKX0sdC51c2VGb3JtU3RhdHVzPWZ1bmN0aW9uKCl7cmV0dXJuIGMuSC51c2VIb3N0VHJhbnNpdGlvblN0YXR1cygpfSx0LnZlcnNpb249IjE5LjIuNyJ9LDQwOTYxOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7IWZ1bmN0aW9uIGUoKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyYmImZ1bmN0aW9uIj09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRSl0cnl7X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGUpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9fSgpLGUuZXhwb3J0cz1yKDYyMjEpfSwyMjc5OTpmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLG49cj9TeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iik6NjAxMDMsbz1yP1N5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpOjYwMTA2LGk9cj9TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpOjYwMTA3LGE9cj9TeW1ib2wuZm9yKCJyZWFjdC5zdHJpY3RfbW9kZSIpOjYwMTA4LHM9cj9TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpOjYwMTE0LGM9cj9TeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpOjYwMTA5LHU9cj9TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0Iik6NjAxMTAsbD1yP1N5bWJvbC5mb3IoInJlYWN0LmFzeW5jX21vZGUiKTo2MDExMSxmPXI/U3ltYm9sLmZvcigicmVhY3QuY29uY3VycmVudF9tb2RlIik6NjAxMTEsZD1yP1N5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIik6NjAxMTIscD1yP1N5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIik6NjAxMTMsXz1yP1N5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlX2xpc3QiKTo2MDEyMCxoPXI/U3ltYm9sLmZvcigicmVhY3QubWVtbyIpOjYwMTE1LG09cj9TeW1ib2wuZm9yKCJyZWFjdC5sYXp5Iik6NjAxMTYseT1yP1N5bWJvbC5mb3IoInJlYWN0LmJsb2NrIik6NjAxMjEsZz1yP1N5bWJvbC5mb3IoInJlYWN0LmZ1bmRhbWVudGFsIik6NjAxMTcsdj1yP1N5bWJvbC5mb3IoInJlYWN0LnJlc3BvbmRlciIpOjYwMTE4LGI9cj9TeW1ib2wuZm9yKCJyZWFjdC5zY29wZSIpOjYwMTE5O2Z1bmN0aW9uIHcoZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSl7dmFyIHQ9ZS4kJHR5cGVvZjtzd2l0Y2godCl7Y2FzZSBuOnN3aXRjaChlPWUudHlwZSl7Y2FzZSBsOmNhc2UgZjpjYXNlIGk6Y2FzZSBzOmNhc2UgYTpjYXNlIHA6cmV0dXJuIGU7ZGVmYXVsdDpzd2l0Y2goZT1lJiZlLiQkdHlwZW9mKXtjYXNlIHU6Y2FzZSBkOmNhc2UgbTpjYXNlIGg6Y2FzZSBjOnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuIHR9fWNhc2UgbzpyZXR1cm4gdH19fWZ1bmN0aW9uIFMoZSl7cmV0dXJuIHcoZSk9PT1mfXQuQXN5bmNNb2RlPWwsdC5Db25jdXJyZW50TW9kZT1mLHQuQ29udGV4dENvbnN1bWVyPXUsdC5Db250ZXh0UHJvdmlkZXI9Yyx0LkVsZW1lbnQ9bix0LkZvcndhcmRSZWY9ZCx0LkZyYWdtZW50PWksdC5MYXp5PW0sdC5NZW1vPWgsdC5Qb3J0YWw9byx0LlByb2ZpbGVyPXMsdC5TdHJpY3RNb2RlPWEsdC5TdXNwZW5zZT1wLHQuaXNBc3luY01vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIFMoZSl8fHcoZSk9PT1sfSx0LmlzQ29uY3VycmVudE1vZGU9Uyx0LmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGUpe3JldHVybiB3KGUpPT09dX0sdC5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdyhlKT09PWN9LHQuaXNFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJmUuJCR0eXBlb2Y9PT1ufSx0LmlzRm9yd2FyZFJlZj1mdW5jdGlvbihlKXtyZXR1cm4gdyhlKT09PWR9LHQuaXNGcmFnbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gdyhlKT09PWl9LHQuaXNMYXp5PWZ1bmN0aW9uKGUpe3JldHVybiB3KGUpPT09bX0sdC5pc01lbW89ZnVuY3Rpb24oZSl7cmV0dXJuIHcoZSk9PT1ofSx0LmlzUG9ydGFsPWZ1bmN0aW9uKGUpe3JldHVybiB3KGUpPT09b30sdC5pc1Byb2ZpbGVyPWZ1bmN0aW9uKGUpe3JldHVybiB3KGUpPT09c30sdC5pc1N0cmljdE1vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHcoZSk9PT1hfSx0LmlzU3VzcGVuc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHcoZSk9PT1wfSx0LmlzVmFsaWRFbGVtZW50VHlwZT1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlfHxlPT09aXx8ZT09PWZ8fGU9PT1zfHxlPT09YXx8ZT09PXB8fGU9PT1ffHwib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiYoZS4kJHR5cGVvZj09PW18fGUuJCR0eXBlb2Y9PT1ofHxlLiQkdHlwZW9mPT09Y3x8ZS4kJHR5cGVvZj09PXV8fGUuJCR0eXBlb2Y9PT1kfHxlLiQkdHlwZW9mPT09Z3x8ZS4kJHR5cGVvZj09PXZ8fGUuJCR0eXBlb2Y9PT1ifHxlLiQkdHlwZW9mPT09eSl9LHQudHlwZU9mPXd9LDQ0MzYzOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXIoMjI3OTkpfSw3MDQwMDpmdW5jdGlvbihlLHQscil7IWZ1bmN0aW9uKGUsdCxyLG4sbyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGUmJk9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHIpe2lmKCJkZWZhdWx0IiE9PXIpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLG4uZ2V0P246e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVbcl19fSl9fSkpLHQuZGVmYXVsdD1lLE9iamVjdC5mcmVlemUodCl9dmFyIGE9aSh0KSxzPWkocik7ZnVuY3Rpb24gYygpe3JldHVybiBjPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2Zvcih2YXIgbiBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG4pJiYoZVtuXT1yW25dKX1yZXR1cm4gZX0sYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gdShlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIHIsbixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKG49MDtuPGkubGVuZ3RoO24rKylyPWlbbl0sdC5pbmRleE9mKHIpPj0wfHwob1tyXT1lW3JdKTtyZXR1cm4gb31jb25zdCBsPSJnZXQiLGY9ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCI7ZnVuY3Rpb24gZChlKXtyZXR1cm4gbnVsbCE9ZSYmInN0cmluZyI9PXR5cGVvZiBlLnRhZ05hbWV9ZnVuY3Rpb24gcChlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9IiIpLG5ldyBVUkxTZWFyY2hQYXJhbXMoInN0cmluZyI9PXR5cGVvZiBlfHxBcnJheS5pc0FycmF5KGUpfHxlIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zP2U6T2JqZWN0LmtleXMoZSkucmVkdWNlKCgodCxyKT0+e2xldCBuPWVbcl07cmV0dXJuIHQuY29uY2F0KEFycmF5LmlzQXJyYXkobik/bi5tYXAoKGU9PltyLGVdKSk6W1tyLG5dXSl9KSxbXSkpfWxldCBfPW51bGw7Y29uc3QgaD1uZXcgU2V0KFsiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwibXVsdGlwYXJ0L2Zvcm0tZGF0YSIsInRleHQvcGxhaW4iXSk7ZnVuY3Rpb24gbShlKXtyZXR1cm4gbnVsbD09ZXx8aC5oYXMoZSk/ZTpudWxsfWZ1bmN0aW9uIHkoZSx0KXtsZXQgcixuLGksYSxzO2lmKGQoYz1lKSYmImZvcm0iPT09Yy50YWdOYW1lLnRvTG93ZXJDYXNlKCkpe2xldCBzPWUuZ2V0QXR0cmlidXRlKCJhY3Rpb24iKTtuPXM/by5zdHJpcEJhc2VuYW1lKHMsdCk6bnVsbCxyPWUuZ2V0QXR0cmlidXRlKCJtZXRob2QiKXx8bCxpPW0oZS5nZXRBdHRyaWJ1dGUoImVuY3R5cGUiKSl8fGYsYT1uZXcgRm9ybURhdGEoZSl9ZWxzZSBpZihmdW5jdGlvbihlKXtyZXR1cm4gZChlKSYmImJ1dHRvbiI9PT1lLnRhZ05hbWUudG9Mb3dlckNhc2UoKX0oZSl8fGZ1bmN0aW9uKGUpe3JldHVybiBkKGUpJiYiaW5wdXQiPT09ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCl9KGUpJiYoInN1Ym1pdCI9PT1lLnR5cGV8fCJpbWFnZSI9PT1lLnR5cGUpKXtsZXQgcz1lLmZvcm07aWYobnVsbD09cyl0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdWJtaXQgYSA8YnV0dG9uPiBvciA8aW5wdXQgdHlwZT0ic3VibWl0Ij4gd2l0aG91dCBhIDxmb3JtPicpO2xldCBjPWUuZ2V0QXR0cmlidXRlKCJmb3JtYWN0aW9uIil8fHMuZ2V0QXR0cmlidXRlKCJhY3Rpb24iKTtpZihuPWM/by5zdHJpcEJhc2VuYW1lKGMsdCk6bnVsbCxyPWUuZ2V0QXR0cmlidXRlKCJmb3JtbWV0aG9kIil8fHMuZ2V0QXR0cmlidXRlKCJtZXRob2QiKXx8bCxpPW0oZS5nZXRBdHRyaWJ1dGUoImZvcm1lbmN0eXBlIikpfHxtKHMuZ2V0QXR0cmlidXRlKCJlbmN0eXBlIikpfHxmLGE9bmV3IEZvcm1EYXRhKHMsZSksIWZ1bmN0aW9uKCl7aWYobnVsbD09PV8pdHJ5e25ldyBGb3JtRGF0YShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmb3JtIiksMCksXz0hMX1jYXRjaChlKXtfPSEwfXJldHVybiBffSgpKXtsZXR7bmFtZTp0LHR5cGU6cix2YWx1ZTpufT1lO2lmKCJpbWFnZSI9PT1yKXtsZXQgZT10P3QrIi4iOiIiO2EuYXBwZW5kKGUrIngiLCIwIiksYS5hcHBlbmQoZSsieSIsIjAiKX1lbHNlIHQmJmEuYXBwZW5kKHQsbil9fWVsc2V7aWYoZChlKSl0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdWJtaXQgZWxlbWVudCB0aGF0IGlzIG5vdCA8Zm9ybT4sIDxidXR0b24+LCBvciA8aW5wdXQgdHlwZT0ic3VibWl0fGltYWdlIj4nKTtyPWwsbj1udWxsLGk9ZixzPWV9dmFyIGM7cmV0dXJuIGEmJiJ0ZXh0L3BsYWluIj09PWkmJihzPWEsYT12b2lkIDApLHthY3Rpb246bixtZXRob2Q6ci50b0xvd2VyQ2FzZSgpLGVuY1R5cGU6aSxmb3JtRGF0YTphLGJvZHk6c319Y29uc3QgZz1bIm9uQ2xpY2siLCJyZWxhdGl2ZSIsInJlbG9hZERvY3VtZW50IiwicmVwbGFjZSIsInN0YXRlIiwidGFyZ2V0IiwidG8iLCJwcmV2ZW50U2Nyb2xsUmVzZXQiLCJ1bnN0YWJsZV92aWV3VHJhbnNpdGlvbiJdLHY9WyJhcmlhLWN1cnJlbnQiLCJjYXNlU2Vuc2l0aXZlIiwiY2xhc3NOYW1lIiwiZW5kIiwic3R5bGUiLCJ0byIsInVuc3RhYmxlX3ZpZXdUcmFuc2l0aW9uIiwiY2hpbGRyZW4iXSxiPVsiZmV0Y2hlcktleSIsIm5hdmlnYXRlIiwicmVsb2FkRG9jdW1lbnQiLCJyZXBsYWNlIiwic3RhdGUiLCJtZXRob2QiLCJhY3Rpb24iLCJvblN1Ym1pdCIsInJlbGF0aXZlIiwicHJldmVudFNjcm9sbFJlc2V0IiwidW5zdGFibGVfdmlld1RyYW5zaXRpb24iXTt0cnl7d2luZG93Ll9fcmVhY3RSb3V0ZXJWZXJzaW9uPSI2In1jYXRjaChlKXt9ZnVuY3Rpb24gdygpe3ZhciBlO2xldCB0PW51bGw9PShlPXdpbmRvdyk/dm9pZCAwOmUuX19zdGF0aWNSb3V0ZXJIeWRyYXRpb25EYXRhO3JldHVybiB0JiZ0LmVycm9ycyYmKHQ9Yyh7fSx0LHtlcnJvcnM6Uyh0LmVycm9ycyl9KSksdH1mdW5jdGlvbiBTKGUpe2lmKCFlKXJldHVybiBudWxsO2xldCB0PU9iamVjdC5lbnRyaWVzKGUpLHI9e307Zm9yKGxldFtuLGldb2YgdClpZihpJiYiUm91dGVFcnJvclJlc3BvbnNlIj09PWkuX190eXBlKXJbbl09bmV3IG8uVU5TQUZFX0Vycm9yUmVzcG9uc2VJbXBsKGkuc3RhdHVzLGkuc3RhdHVzVGV4dCxpLmRhdGEsITA9PT1pLmludGVybmFsKTtlbHNlIGlmKGkmJiJFcnJvciI9PT1pLl9fdHlwZSl7aWYoaS5fX3N1YlR5cGUpe2xldCB0PXdpbmRvd1tpLl9fc3ViVHlwZV07aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpdHJ5e2xldCBlPW5ldyB0KGkubWVzc2FnZSk7ZS5zdGFjaz0iIixyW25dPWV9Y2F0Y2goZSl7fX1pZihudWxsPT1yW25dKXtsZXQgZT1uZXcgRXJyb3IoaS5tZXNzYWdlKTtlLnN0YWNrPSIiLHJbbl09ZX19ZWxzZSByW25dPWk7cmV0dXJuIHJ9Y29uc3Qgaz1hLmNyZWF0ZUNvbnRleHQoe2lzVHJhbnNpdGlvbmluZzohMX0pLHg9YS5jcmVhdGVDb250ZXh0KG5ldyBNYXApLEU9YS5zdGFydFRyYW5zaXRpb24sQT1zLmZsdXNoU3luYyxUPWEudXNlSWQ7ZnVuY3Rpb24gUihlKXtBP0EoZSk6ZSgpfWNsYXNzIE57Y29uc3RydWN0b3IoKXt0aGlzLnN0YXR1cz0icGVuZGluZyIsdGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKCgoZSx0KT0+e3RoaXMucmVzb2x2ZT10PT57InBlbmRpbmciPT09dGhpcy5zdGF0dXMmJih0aGlzLnN0YXR1cz0icmVzb2x2ZWQiLGUodCkpfSx0aGlzLnJlamVjdD1lPT57InBlbmRpbmciPT09dGhpcy5zdGF0dXMmJih0aGlzLnN0YXR1cz0icmVqZWN0ZWQiLHQoZSkpfX0pKX19ZnVuY3Rpb24gUChlKXtsZXR7cm91dGVzOnQsZnV0dXJlOnIsc3RhdGU6b309ZTtyZXR1cm4gbi5VTlNBRkVfdXNlUm91dGVzSW1wbCh0LHZvaWQgMCxvLHIpfWNvbnN0IE89InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJnZvaWQgMCE9PXdpbmRvdy5kb2N1bWVudCYmdm9pZCAwIT09d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQsTT0vXig/OlthLXpdW2EtejAtOSsuLV0qOnxcL1wvKS9pLEY9YS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe2xldCByLHtvbkNsaWNrOmkscmVsYXRpdmU6cyxyZWxvYWREb2N1bWVudDpsLHJlcGxhY2U6ZixzdGF0ZTpkLHRhcmdldDpwLHRvOl8scHJldmVudFNjcm9sbFJlc2V0OmgsdW5zdGFibGVfdmlld1RyYW5zaXRpb246bX09ZSx5PXUoZSxnKSx7YmFzZW5hbWU6dn09YS51c2VDb250ZXh0KG4uVU5TQUZFX05hdmlnYXRpb25Db250ZXh0KSxiPSExO2lmKCJzdHJpbmciPT10eXBlb2YgXyYmTS50ZXN0KF8pJiYocj1fLE8pKXRyeXtsZXQgZT1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSx0PV8uc3RhcnRzV2l0aCgiLy8iKT9uZXcgVVJMKGUucHJvdG9jb2wrXyk6bmV3IFVSTChfKSxyPW8uc3RyaXBCYXNlbmFtZSh0LnBhdGhuYW1lLHYpO3Qub3JpZ2luPT09ZS5vcmlnaW4mJm51bGwhPXI/Xz1yK3Quc2VhcmNoK3QuaGFzaDpiPSEwfWNhdGNoKGUpe31sZXQgdz1uLnVzZUhyZWYoXyx7cmVsYXRpdmU6c30pLFM9QihfLHtyZXBsYWNlOmYsc3RhdGU6ZCx0YXJnZXQ6cCxwcmV2ZW50U2Nyb2xsUmVzZXQ6aCxyZWxhdGl2ZTpzLHVuc3RhYmxlX3ZpZXdUcmFuc2l0aW9uOm19KTtyZXR1cm4gYS5jcmVhdGVFbGVtZW50KCJhIixjKHt9LHkse2hyZWY6cnx8dyxvbkNsaWNrOmJ8fGw/aTpmdW5jdGlvbihlKXtpJiZpKGUpLGUuZGVmYXVsdFByZXZlbnRlZHx8UyhlKX0scmVmOnQsdGFyZ2V0OnB9KSl9KSksST1hLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7bGV0eyJhcmlhLWN1cnJlbnQiOnI9InBhZ2UiLGNhc2VTZW5zaXRpdmU6aT0hMSxjbGFzc05hbWU6cz0iIixlbmQ6bD0hMSxzdHlsZTpmLHRvOmQsdW5zdGFibGVfdmlld1RyYW5zaXRpb246cCxjaGlsZHJlbjpffT1lLGg9dShlLHYpLG09bi51c2VSZXNvbHZlZFBhdGgoZCx7cmVsYXRpdmU6aC5yZWxhdGl2ZX0pLHk9bi51c2VMb2NhdGlvbigpLGc9YS51c2VDb250ZXh0KG4uVU5TQUZFX0RhdGFSb3V0ZXJTdGF0ZUNvbnRleHQpLHtuYXZpZ2F0b3I6YixiYXNlbmFtZTp3fT1hLnVzZUNvbnRleHQobi5VTlNBRkVfTmF2aWdhdGlvbkNvbnRleHQpLFM9bnVsbCE9ZyYmSyhtKSYmITA9PT1wLGs9Yi5lbmNvZGVMb2NhdGlvbj9iLmVuY29kZUxvY2F0aW9uKG0pLnBhdGhuYW1lOm0ucGF0aG5hbWUseD15LnBhdGhuYW1lLEU9ZyYmZy5uYXZpZ2F0aW9uJiZnLm5hdmlnYXRpb24ubG9jYXRpb24/Zy5uYXZpZ2F0aW9uLmxvY2F0aW9uLnBhdGhuYW1lOm51bGw7aXx8KHg9eC50b0xvd2VyQ2FzZSgpLEU9RT9FLnRvTG93ZXJDYXNlKCk6bnVsbCxrPWsudG9Mb3dlckNhc2UoKSksRSYmdyYmKEU9by5zdHJpcEJhc2VuYW1lKEUsdyl8fEUpO2NvbnN0IEE9Ii8iIT09ayYmay5lbmRzV2l0aCgiLyIpP2subGVuZ3RoLTE6ay5sZW5ndGg7bGV0IFQsUj14PT09a3x8IWwmJnguc3RhcnRzV2l0aChrKSYmIi8iPT09eC5jaGFyQXQoQSksUD1udWxsIT1FJiYoRT09PWt8fCFsJiZFLnN0YXJ0c1dpdGgoaykmJiIvIj09PUUuY2hhckF0KGsubGVuZ3RoKSksTz17aXNBY3RpdmU6Uixpc1BlbmRpbmc6UCxpc1RyYW5zaXRpb25pbmc6U30sTT1SP3I6dm9pZCAwO1Q9ImZ1bmN0aW9uIj09dHlwZW9mIHM/cyhPKTpbcyxSPyJhY3RpdmUiOm51bGwsUD8icGVuZGluZyI6bnVsbCxTPyJ0cmFuc2l0aW9uaW5nIjpudWxsXS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpO2xldCBJPSJmdW5jdGlvbiI9PXR5cGVvZiBmP2YoTyk6ZjtyZXR1cm4gYS5jcmVhdGVFbGVtZW50KEYsYyh7fSxoLHsiYXJpYS1jdXJyZW50IjpNLGNsYXNzTmFtZTpULHJlZjp0LHN0eWxlOkksdG86ZCx1bnN0YWJsZV92aWV3VHJhbnNpdGlvbjpwfSksImZ1bmN0aW9uIj09dHlwZW9mIF8/XyhPKTpfKX0pKSxqPWEuZm9yd2FyZFJlZigoKGUsdCk9PntsZXR7ZmV0Y2hlcktleTpyLG5hdmlnYXRlOm4scmVsb2FkRG9jdW1lbnQ6byxyZXBsYWNlOmksc3RhdGU6cyxtZXRob2Q6Zj1sLGFjdGlvbjpkLG9uU3VibWl0OnAscmVsYXRpdmU6XyxwcmV2ZW50U2Nyb2xsUmVzZXQ6aCx1bnN0YWJsZV92aWV3VHJhbnNpdGlvbjptfT1lLHk9dShlLGIpLGc9JCgpLHY9cShkLHtyZWxhdGl2ZTpffSksdz0iZ2V0Ij09PWYudG9Mb3dlckNhc2UoKT8iZ2V0IjoicG9zdCI7cmV0dXJuIGEuY3JlYXRlRWxlbWVudCgiZm9ybSIsYyh7cmVmOnQsbWV0aG9kOncsYWN0aW9uOnYsb25TdWJtaXQ6bz9wOmU9PntpZihwJiZwKGUpLGUuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCB0PWUubmF0aXZlRXZlbnQuc3VibWl0dGVyLG89KG51bGw9PXQ/dm9pZCAwOnQuZ2V0QXR0cmlidXRlKCJmb3JtbWV0aG9kIikpfHxmO2codHx8ZS5jdXJyZW50VGFyZ2V0LHtmZXRjaGVyS2V5OnIsbWV0aG9kOm8sbmF2aWdhdGU6bixyZXBsYWNlOmksc3RhdGU6cyxyZWxhdGl2ZTpfLHByZXZlbnRTY3JvbGxSZXNldDpoLHVuc3RhYmxlX3ZpZXdUcmFuc2l0aW9uOm19KX19LHkpKX0pKTt2YXIgRD1mdW5jdGlvbihlKXtyZXR1cm4gZS5Vc2VTY3JvbGxSZXN0b3JhdGlvbj0idXNlU2Nyb2xsUmVzdG9yYXRpb24iLGUuVXNlU3VibWl0PSJ1c2VTdWJtaXQiLGUuVXNlU3VibWl0RmV0Y2hlcj0idXNlU3VibWl0RmV0Y2hlciIsZS5Vc2VGZXRjaGVyPSJ1c2VGZXRjaGVyIixlLnVzZVZpZXdUcmFuc2l0aW9uU3RhdGU9InVzZVZpZXdUcmFuc2l0aW9uU3RhdGUiLGV9KER8fHt9KSxMPWZ1bmN0aW9uKGUpe3JldHVybiBlLlVzZUZldGNoZXI9InVzZUZldGNoZXIiLGUuVXNlRmV0Y2hlcnM9InVzZUZldGNoZXJzIixlLlVzZVNjcm9sbFJlc3RvcmF0aW9uPSJ1c2VTY3JvbGxSZXN0b3JhdGlvbiIsZX0oTHx8e30pO2Z1bmN0aW9uIFUoZSl7bGV0IHQ9YS51c2VDb250ZXh0KG4uVU5TQUZFX0RhdGFSb3V0ZXJDb250ZXh0KTtyZXR1cm4gdHx8by5VTlNBRkVfaW52YXJpYW50KCExKSx0fWZ1bmN0aW9uIHooZSl7bGV0IHQ9YS51c2VDb250ZXh0KG4uVU5TQUZFX0RhdGFSb3V0ZXJTdGF0ZUNvbnRleHQpO3JldHVybiB0fHxvLlVOU0FGRV9pbnZhcmlhbnQoITEpLHR9ZnVuY3Rpb24gQihlLHQpe2xldHt0YXJnZXQ6cixyZXBsYWNlOm8sc3RhdGU6aSxwcmV2ZW50U2Nyb2xsUmVzZXQ6cyxyZWxhdGl2ZTpjLHVuc3RhYmxlX3ZpZXdUcmFuc2l0aW9uOnV9PXZvaWQgMD09PXQ/e306dCxsPW4udXNlTmF2aWdhdGUoKSxmPW4udXNlTG9jYXRpb24oKSxkPW4udXNlUmVzb2x2ZWRQYXRoKGUse3JlbGF0aXZlOmN9KTtyZXR1cm4gYS51c2VDYWxsYmFjaygodD0+e2lmKGZ1bmN0aW9uKGUsdCl7cmV0dXJuISgwIT09ZS5idXR0b258fHQmJiJfc2VsZiIhPT10fHxmdW5jdGlvbihlKXtyZXR1cm4hIShlLm1ldGFLZXl8fGUuYWx0S2V5fHxlLmN0cmxLZXl8fGUuc2hpZnRLZXkpfShlKSl9KHQscikpe3QucHJldmVudERlZmF1bHQoKTtsZXQgcj12b2lkIDAhPT1vP286bi5jcmVhdGVQYXRoKGYpPT09bi5jcmVhdGVQYXRoKGQpO2woZSx7cmVwbGFjZTpyLHN0YXRlOmkscHJldmVudFNjcm9sbFJlc2V0OnMscmVsYXRpdmU6Yyx1bnN0YWJsZV92aWV3VHJhbnNpdGlvbjp1fSl9fSksW2YsbCxkLG8saSxyLGUscyxjLHVdKX1sZXQgSD0wLFc9KCk9PiJfXyIrU3RyaW5nKCsrSCkrIl9fIjtmdW5jdGlvbiAkKCl7bGV0e3JvdXRlcjplfT1VKEQuVXNlU3VibWl0KSx7YmFzZW5hbWU6dH09YS51c2VDb250ZXh0KG4uVU5TQUZFX05hdmlnYXRpb25Db250ZXh0KSxyPW4uVU5TQUZFX3VzZVJvdXRlSWQoKTtyZXR1cm4gYS51c2VDYWxsYmFjaygoZnVuY3Rpb24obixvKXt2b2lkIDA9PT1vJiYobz17fSksZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGRvY3VtZW50KXRocm93IG5ldyBFcnJvcigiWW91IGFyZSBjYWxsaW5nIHN1Ym1pdCBkdXJpbmcgdGhlIHNlcnZlciByZW5kZXIuIFRyeSBjYWxsaW5nIHN1Ym1pdCB3aXRoaW4gYSBgdXNlRWZmZWN0YCBvciBjYWxsYmFjayBpbnN0ZWFkLiIpfSgpO2xldHthY3Rpb246aSxtZXRob2Q6YSxlbmNUeXBlOnMsZm9ybURhdGE6Yyxib2R5OnV9PXkobix0KTtpZighMT09PW8ubmF2aWdhdGUpe2xldCB0PW8uZmV0Y2hlcktleXx8VygpO2UuZmV0Y2godCxyLG8uYWN0aW9ufHxpLHtwcmV2ZW50U2Nyb2xsUmVzZXQ6by5wcmV2ZW50U2Nyb2xsUmVzZXQsZm9ybURhdGE6Yyxib2R5OnUsZm9ybU1ldGhvZDpvLm1ldGhvZHx8YSxmb3JtRW5jVHlwZTpvLmVuY1R5cGV8fHMsdW5zdGFibGVfZmx1c2hTeW5jOm8udW5zdGFibGVfZmx1c2hTeW5jfSl9ZWxzZSBlLm5hdmlnYXRlKG8uYWN0aW9ufHxpLHtwcmV2ZW50U2Nyb2xsUmVzZXQ6by5wcmV2ZW50U2Nyb2xsUmVzZXQsZm9ybURhdGE6Yyxib2R5OnUsZm9ybU1ldGhvZDpvLm1ldGhvZHx8YSxmb3JtRW5jVHlwZTpvLmVuY1R5cGV8fHMscmVwbGFjZTpvLnJlcGxhY2Usc3RhdGU6by5zdGF0ZSxmcm9tUm91dGVJZDpyLHVuc3RhYmxlX2ZsdXNoU3luYzpvLnVuc3RhYmxlX2ZsdXNoU3luYyx1bnN0YWJsZV92aWV3VHJhbnNpdGlvbjpvLnVuc3RhYmxlX3ZpZXdUcmFuc2l0aW9ufSl9KSxbZSx0LHJdKX1mdW5jdGlvbiBxKGUsdCl7bGV0e3JlbGF0aXZlOnJ9PXZvaWQgMD09PXQ/e306dCx7YmFzZW5hbWU6aX09YS51c2VDb250ZXh0KG4uVU5TQUZFX05hdmlnYXRpb25Db250ZXh0KSxzPWEudXNlQ29udGV4dChuLlVOU0FGRV9Sb3V0ZUNvbnRleHQpO3N8fG8uVU5TQUZFX2ludmFyaWFudCghMSk7bGV0W3VdPXMubWF0Y2hlcy5zbGljZSgtMSksbD1jKHt9LG4udXNlUmVzb2x2ZWRQYXRoKGV8fCIuIix7cmVsYXRpdmU6cn0pKSxmPW4udXNlTG9jYXRpb24oKTtpZihudWxsPT1lKXtsLnNlYXJjaD1mLnNlYXJjaDtsZXQgZT1uZXcgVVJMU2VhcmNoUGFyYW1zKGwuc2VhcmNoKTtlLmhhcygiaW5kZXgiKSYmIiI9PT1lLmdldCgiaW5kZXgiKSYmKGUuZGVsZXRlKCJpbmRleCIpLGwuc2VhcmNoPWUudG9TdHJpbmcoKT8iPyIrZS50b1N0cmluZygpOiIiKX1yZXR1cm4gZSYmIi4iIT09ZXx8IXUucm91dGUuaW5kZXh8fChsLnNlYXJjaD1sLnNlYXJjaD9sLnNlYXJjaC5yZXBsYWNlKC9eXD8vLCI/aW5kZXgmIik6Ij9pbmRleCIpLCIvIiE9PWkmJihsLnBhdGhuYW1lPSIvIj09PWwucGF0aG5hbWU/aTpvLmpvaW5QYXRocyhbaSxsLnBhdGhuYW1lXSkpLG4uY3JlYXRlUGF0aChsKX1jb25zdCBHPSJyZWFjdC1yb3V0ZXItc2Nyb2xsLXBvc2l0aW9ucyI7bGV0IFY9e307ZnVuY3Rpb24gWShlKXtsZXR7Z2V0S2V5OnQsc3RvcmFnZUtleTpyfT12b2lkIDA9PT1lP3t9OmUse3JvdXRlcjppfT1VKEQuVXNlU2Nyb2xsUmVzdG9yYXRpb24pLHtyZXN0b3JlU2Nyb2xsUG9zaXRpb246cyxwcmV2ZW50U2Nyb2xsUmVzZXQ6dX09eihMLlVzZVNjcm9sbFJlc3RvcmF0aW9uKSx7YmFzZW5hbWU6bH09YS51c2VDb250ZXh0KG4uVU5TQUZFX05hdmlnYXRpb25Db250ZXh0KSxmPW4udXNlTG9jYXRpb24oKSxkPW4udXNlTWF0Y2hlcygpLHA9bi51c2VOYXZpZ2F0aW9uKCk7YS51c2VFZmZlY3QoKCgpPT4od2luZG93Lmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb249Im1hbnVhbCIsKCk9Pnt3aW5kb3cuaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbj0iYXV0byJ9KSksW10pLGZ1bmN0aW9uKGUsdCl7bGV0e2NhcHR1cmU6cn09dHx8e307YS51c2VFZmZlY3QoKCgpPT57bGV0IHQ9bnVsbCE9cj97Y2FwdHVyZTpyfTp2b2lkIDA7cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsZSx0KSwoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsZSx0KX19KSxbZSxyXSl9KGEudXNlQ2FsbGJhY2soKCgpPT57aWYoImlkbGUiPT09cC5zdGF0ZSl7bGV0IGU9KHQ/dChmLGQpOm51bGwpfHxmLmtleTtWW2VdPXdpbmRvdy5zY3JvbGxZfXRyeXtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHJ8fEcsSlNPTi5zdHJpbmdpZnkoVikpfWNhdGNoKGUpe313aW5kb3cuaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbj0iYXV0byJ9KSxbcix0LHAuc3RhdGUsZixkXSkpLCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJihhLnVzZUxheW91dEVmZmVjdCgoKCk9Pnt0cnl7bGV0IGU9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShyfHxHKTtlJiYoVj1KU09OLnBhcnNlKGUpKX1jYXRjaChlKXt9fSksW3JdKSxhLnVzZUxheW91dEVmZmVjdCgoKCk9PntsZXQgZT10JiYiLyIhPT1sPyhlLHIpPT50KGMoe30sZSx7cGF0aG5hbWU6by5zdHJpcEJhc2VuYW1lKGUucGF0aG5hbWUsbCl8fGUucGF0aG5hbWV9KSxyKTp0LHI9bnVsbD09aT92b2lkIDA6aS5lbmFibGVTY3JvbGxSZXN0b3JhdGlvbihWLCgoKT0+d2luZG93LnNjcm9sbFkpLGUpO3JldHVybigpPT5yJiZyKCl9KSxbaSxsLHRdKSxhLnVzZUxheW91dEVmZmVjdCgoKCk9PntpZighMSE9PXMpaWYoIm51bWJlciIhPXR5cGVvZiBzKXtpZihmLmhhc2gpe2xldCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRlY29kZVVSSUNvbXBvbmVudChmLmhhc2guc2xpY2UoMSkpKTtpZihlKXJldHVybiB2b2lkIGUuc2Nyb2xsSW50b1ZpZXcoKX0hMCE9PXUmJndpbmRvdy5zY3JvbGxUbygwLDApfWVsc2Ugd2luZG93LnNjcm9sbFRvKDAscyl9KSxbZixzLHVdKSl9ZnVuY3Rpb24gSyhlLHQpe3ZvaWQgMD09PXQmJih0PXt9KTtsZXQgcj1hLnVzZUNvbnRleHQoayk7bnVsbD09ciYmby5VTlNBRkVfaW52YXJpYW50KCExKTtsZXR7YmFzZW5hbWU6aX09VShELnVzZVZpZXdUcmFuc2l0aW9uU3RhdGUpLHM9bi51c2VSZXNvbHZlZFBhdGgoZSx7cmVsYXRpdmU6dC5yZWxhdGl2ZX0pO2lmKCFyLmlzVHJhbnNpdGlvbmluZylyZXR1cm4hMTtsZXQgYz1vLnN0cmlwQmFzZW5hbWUoci5jdXJyZW50TG9jYXRpb24ucGF0aG5hbWUsaSl8fHIuY3VycmVudExvY2F0aW9uLnBhdGhuYW1lLHU9by5zdHJpcEJhc2VuYW1lKHIubmV4dExvY2F0aW9uLnBhdGhuYW1lLGkpfHxyLm5leHRMb2NhdGlvbi5wYXRobmFtZTtyZXR1cm4gbnVsbCE9by5tYXRjaFBhdGgocy5wYXRobmFtZSx1KXx8bnVsbCE9by5tYXRjaFBhdGgocy5wYXRobmFtZSxjKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiQWJvcnRlZERlZmVycmVkRXJyb3IiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLkFib3J0ZWREZWZlcnJlZEVycm9yfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJBd2FpdCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uQXdhaXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIk1lbW9yeVJvdXRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uTWVtb3J5Um91dGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJOYXZpZ2F0ZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uTmF2aWdhdGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIk5hdmlnYXRpb25UeXBlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5OYXZpZ2F0aW9uVHlwZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiT3V0bGV0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5PdXRsZXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIlJvdXRlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5Sb3V0ZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiUm91dGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5Sb3V0ZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIlJvdXRlcyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uUm91dGVzfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJVTlNBRkVfRGF0YVJvdXRlckNvbnRleHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLlVOU0FGRV9EYXRhUm91dGVyQ29udGV4dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiVU5TQUZFX0RhdGFSb3V0ZXJTdGF0ZUNvbnRleHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLlVOU0FGRV9EYXRhUm91dGVyU3RhdGVDb250ZXh0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJVTlNBRkVfTG9jYXRpb25Db250ZXh0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5VTlNBRkVfTG9jYXRpb25Db250ZXh0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJVTlNBRkVfTmF2aWdhdGlvbkNvbnRleHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLlVOU0FGRV9OYXZpZ2F0aW9uQ29udGV4dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiVU5TQUZFX1JvdXRlQ29udGV4dCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uVU5TQUZFX1JvdXRlQ29udGV4dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiVU5TQUZFX3VzZVJvdXRlSWQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLlVOU0FGRV91c2VSb3V0ZUlkfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjcmVhdGVNZW1vcnlSb3V0ZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLmNyZWF0ZU1lbW9yeVJvdXRlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiY3JlYXRlUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uY3JlYXRlUGF0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiY3JlYXRlUm91dGVzRnJvbUNoaWxkcmVuIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5jcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW59fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImNyZWF0ZVJvdXRlc0Zyb21FbGVtZW50cyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uY3JlYXRlUm91dGVzRnJvbUVsZW1lbnRzfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJkZWZlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uZGVmZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImdlbmVyYXRlUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uZ2VuZXJhdGVQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJpc1JvdXRlRXJyb3JSZXNwb25zZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uaXNSb3V0ZUVycm9yUmVzcG9uc2V9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImpzb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLmpzb259fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIm1hdGNoUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4ubWF0Y2hQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJtYXRjaFJvdXRlcyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4ubWF0Y2hSb3V0ZXN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInBhcnNlUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4ucGFyc2VQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJyZWRpcmVjdCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4ucmVkaXJlY3R9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInJlZGlyZWN0RG9jdW1lbnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLnJlZGlyZWN0RG9jdW1lbnR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInJlbmRlck1hdGNoZXMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLnJlbmRlck1hdGNoZXN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInJlc29sdmVQYXRoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5yZXNvbHZlUGF0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwidXNlQWN0aW9uRGF0YSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4udXNlQWN0aW9uRGF0YX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwidXNlQXN5bmNFcnJvciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4udXNlQXN5bmNFcnJvcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwidXNlQXN5bmNWYWx1ZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4udXNlQXN5bmNWYWx1ZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwidXNlQmxvY2tlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4udXNlQmxvY2tlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwidXNlSHJlZiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4udXNlSHJlZn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwidXNlSW5Sb3V0ZXJDb250ZXh0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi51c2VJblJvdXRlckNvbnRleHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInVzZUxvYWRlckRhdGEiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLnVzZUxvYWRlckRhdGF9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInVzZUxvY2F0aW9uIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi51c2VMb2NhdGlvbn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwidXNlTWF0Y2giLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLnVzZU1hdGNofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ1c2VNYXRjaGVzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi51c2VNYXRjaGVzfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ1c2VOYXZpZ2F0ZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4udXNlTmF2aWdhdGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInVzZU5hdmlnYXRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLnVzZU5hdmlnYXRpb259fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInVzZU5hdmlnYXRpb25UeXBlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi51c2VOYXZpZ2F0aW9uVHlwZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwidXNlT3V0bGV0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi51c2VPdXRsZXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInVzZU91dGxldENvbnRleHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLnVzZU91dGxldENvbnRleHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInVzZVBhcmFtcyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4udXNlUGFyYW1zfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ1c2VSZXNvbHZlZFBhdGgiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLnVzZVJlc29sdmVkUGF0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwidXNlUmV2YWxpZGF0b3IiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLnVzZVJldmFsaWRhdG9yfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ1c2VSb3V0ZUVycm9yIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi51c2VSb3V0ZUVycm9yfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ1c2VSb3V0ZUxvYWRlckRhdGEiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLnVzZVJvdXRlTG9hZGVyRGF0YX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwidXNlUm91dGVzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi51c2VSb3V0ZXN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIlVOU0FGRV9FcnJvclJlc3BvbnNlSW1wbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uVU5TQUZFX0Vycm9yUmVzcG9uc2VJbXBsfX0pLGUuQnJvd3NlclJvdXRlcj1mdW5jdGlvbihlKXtsZXR7YmFzZW5hbWU6dCxjaGlsZHJlbjpyLGZ1dHVyZTppLHdpbmRvdzpzfT1lLGM9YS51c2VSZWYoKTtudWxsPT1jLmN1cnJlbnQmJihjLmN1cnJlbnQ9by5jcmVhdGVCcm93c2VySGlzdG9yeSh7d2luZG93OnMsdjVDb21wYXQ6ITB9KSk7bGV0IHU9Yy5jdXJyZW50LFtsLGZdPWEudXNlU3RhdGUoe2FjdGlvbjp1LmFjdGlvbixsb2NhdGlvbjp1LmxvY2F0aW9ufSkse3Y3X3N0YXJ0VHJhbnNpdGlvbjpkfT1pfHx7fSxwPWEudXNlQ2FsbGJhY2soKGU9PntkJiZFP0UoKCgpPT5mKGUpKSk6ZihlKX0pLFtmLGRdKTtyZXR1cm4gYS51c2VMYXlvdXRFZmZlY3QoKCgpPT51Lmxpc3RlbihwKSksW3UscF0pLGEuY3JlYXRlRWxlbWVudChuLlJvdXRlcix7YmFzZW5hbWU6dCxjaGlsZHJlbjpyLGxvY2F0aW9uOmwubG9jYXRpb24sbmF2aWdhdGlvblR5cGU6bC5hY3Rpb24sbmF2aWdhdG9yOnUsZnV0dXJlOml9KX0sZS5Gb3JtPWosZS5IYXNoUm91dGVyPWZ1bmN0aW9uKGUpe2xldHtiYXNlbmFtZTp0LGNoaWxkcmVuOnIsZnV0dXJlOmksd2luZG93OnN9PWUsYz1hLnVzZVJlZigpO251bGw9PWMuY3VycmVudCYmKGMuY3VycmVudD1vLmNyZWF0ZUhhc2hIaXN0b3J5KHt3aW5kb3c6cyx2NUNvbXBhdDohMH0pKTtsZXQgdT1jLmN1cnJlbnQsW2wsZl09YS51c2VTdGF0ZSh7YWN0aW9uOnUuYWN0aW9uLGxvY2F0aW9uOnUubG9jYXRpb259KSx7djdfc3RhcnRUcmFuc2l0aW9uOmR9PWl8fHt9LHA9YS51c2VDYWxsYmFjaygoZT0+e2QmJkU/RSgoKCk9PmYoZSkpKTpmKGUpfSksW2YsZF0pO3JldHVybiBhLnVzZUxheW91dEVmZmVjdCgoKCk9PnUubGlzdGVuKHApKSxbdSxwXSksYS5jcmVhdGVFbGVtZW50KG4uUm91dGVyLHtiYXNlbmFtZTp0LGNoaWxkcmVuOnIsbG9jYXRpb246bC5sb2NhdGlvbixuYXZpZ2F0aW9uVHlwZTpsLmFjdGlvbixuYXZpZ2F0b3I6dSxmdXR1cmU6aX0pfSxlLkxpbms9RixlLk5hdkxpbms9SSxlLlJvdXRlclByb3ZpZGVyPWZ1bmN0aW9uKGUpe2xldHtmYWxsYmFja0VsZW1lbnQ6dCxyb3V0ZXI6cixmdXR1cmU6b309ZSxbaSxzXT1hLnVzZVN0YXRlKHIuc3RhdGUpLFtjLHVdPWEudXNlU3RhdGUoKSxbbCxmXT1hLnVzZVN0YXRlKHtpc1RyYW5zaXRpb25pbmc6ITF9KSxbZCxwXT1hLnVzZVN0YXRlKCksW18saF09YS51c2VTdGF0ZSgpLFttLHldPWEudXNlU3RhdGUoKSxnPWEudXNlUmVmKG5ldyBNYXApLHt2N19zdGFydFRyYW5zaXRpb246dn09b3x8e30sYj1hLnVzZUNhbGxiYWNrKChlPT57dj9mdW5jdGlvbihlKXtFP0UoZSk6ZSgpfShlKTplKCl9KSxbdl0pLHc9YS51c2VDYWxsYmFjaygoKGUsdCk9PntsZXR7ZGVsZXRlZEZldGNoZXJzOm4sdW5zdGFibGVfZmx1c2hTeW5jOm8sdW5zdGFibGVfdmlld1RyYW5zaXRpb25PcHRzOml9PXQ7bi5mb3JFYWNoKChlPT5nLmN1cnJlbnQuZGVsZXRlKGUpKSksZS5mZXRjaGVycy5mb3JFYWNoKCgoZSx0KT0+e3ZvaWQgMCE9PWUuZGF0YSYmZy5jdXJyZW50LnNldCh0LGUuZGF0YSl9KSk7bGV0IGE9bnVsbD09ci53aW5kb3d8fG51bGw9PXIud2luZG93LmRvY3VtZW50fHwiZnVuY3Rpb24iIT10eXBlb2Ygci53aW5kb3cuZG9jdW1lbnQuc3RhcnRWaWV3VHJhbnNpdGlvbjtpZihpJiYhYSl7aWYobyl7UigoKCk9PntfJiYoZCYmZC5yZXNvbHZlKCksXy5za2lwVHJhbnNpdGlvbigpKSxmKHtpc1RyYW5zaXRpb25pbmc6ITAsZmx1c2hTeW5jOiEwLGN1cnJlbnRMb2NhdGlvbjppLmN1cnJlbnRMb2NhdGlvbixuZXh0TG9jYXRpb246aS5uZXh0TG9jYXRpb259KX0pKTtsZXQgdD1yLndpbmRvdy5kb2N1bWVudC5zdGFydFZpZXdUcmFuc2l0aW9uKCgoKT0+e1IoKCgpPT5zKGUpKSl9KSk7cmV0dXJuIHQuZmluaXNoZWQuZmluYWxseSgoKCk9PntSKCgoKT0+e3Aodm9pZCAwKSxoKHZvaWQgMCksdSh2b2lkIDApLGYoe2lzVHJhbnNpdGlvbmluZzohMX0pfSkpfSkpLHZvaWQgUigoKCk9PmgodCkpKX1fPyhkJiZkLnJlc29sdmUoKSxfLnNraXBUcmFuc2l0aW9uKCkseSh7c3RhdGU6ZSxjdXJyZW50TG9jYXRpb246aS5jdXJyZW50TG9jYXRpb24sbmV4dExvY2F0aW9uOmkubmV4dExvY2F0aW9ufSkpOih1KGUpLGYoe2lzVHJhbnNpdGlvbmluZzohMCxmbHVzaFN5bmM6ITEsY3VycmVudExvY2F0aW9uOmkuY3VycmVudExvY2F0aW9uLG5leHRMb2NhdGlvbjppLm5leHRMb2NhdGlvbn0pKX1lbHNlIG8/UigoKCk9PnMoZSkpKTpiKCgoKT0+cyhlKSkpfSksW3Iud2luZG93LF8sZCxnLGJdKTthLnVzZUxheW91dEVmZmVjdCgoKCk9PnIuc3Vic2NyaWJlKHcpKSxbcix3XSksYS51c2VFZmZlY3QoKCgpPT57bC5pc1RyYW5zaXRpb25pbmcmJiFsLmZsdXNoU3luYyYmcChuZXcgTil9KSxbbF0pLGEudXNlRWZmZWN0KCgoKT0+e2lmKGQmJmMmJnIud2luZG93KXtsZXQgZT1jLHQ9ZC5wcm9taXNlLG49ci53aW5kb3cuZG9jdW1lbnQuc3RhcnRWaWV3VHJhbnNpdGlvbigoYXN5bmMoKT0+e2IoKCgpPT5zKGUpKSksYXdhaXQgdH0pKTtuLmZpbmlzaGVkLmZpbmFsbHkoKCgpPT57cCh2b2lkIDApLGgodm9pZCAwKSx1KHZvaWQgMCksZih7aXNUcmFuc2l0aW9uaW5nOiExfSl9KSksaChuKX19KSxbYixjLGQsci53aW5kb3ddKSxhLnVzZUVmZmVjdCgoKCk9PntkJiZjJiZpLmxvY2F0aW9uLmtleT09PWMubG9jYXRpb24ua2V5JiZkLnJlc29sdmUoKX0pLFtkLF8saS5sb2NhdGlvbixjXSksYS51c2VFZmZlY3QoKCgpPT57IWwuaXNUcmFuc2l0aW9uaW5nJiZtJiYodShtLnN0YXRlKSxmKHtpc1RyYW5zaXRpb25pbmc6ITAsZmx1c2hTeW5jOiExLGN1cnJlbnRMb2NhdGlvbjptLmN1cnJlbnRMb2NhdGlvbixuZXh0TG9jYXRpb246bS5uZXh0TG9jYXRpb259KSx5KHZvaWQgMCkpfSksW2wuaXNUcmFuc2l0aW9uaW5nLG1dKSxhLnVzZUVmZmVjdCgoKCk9Pnt9KSxbXSk7bGV0IFM9YS51c2VNZW1vKCgoKT0+KHtjcmVhdGVIcmVmOnIuY3JlYXRlSHJlZixlbmNvZGVMb2NhdGlvbjpyLmVuY29kZUxvY2F0aW9uLGdvOmU9PnIubmF2aWdhdGUoZSkscHVzaDooZSx0LG4pPT5yLm5hdmlnYXRlKGUse3N0YXRlOnQscHJldmVudFNjcm9sbFJlc2V0Om51bGw9PW4/dm9pZCAwOm4ucHJldmVudFNjcm9sbFJlc2V0fSkscmVwbGFjZTooZSx0LG4pPT5yLm5hdmlnYXRlKGUse3JlcGxhY2U6ITAsc3RhdGU6dCxwcmV2ZW50U2Nyb2xsUmVzZXQ6bnVsbD09bj92b2lkIDA6bi5wcmV2ZW50U2Nyb2xsUmVzZXR9KX0pKSxbcl0pLEE9ci5iYXNlbmFtZXx8Ii8iLFQ9YS51c2VNZW1vKCgoKT0+KHtyb3V0ZXI6cixuYXZpZ2F0b3I6UyxzdGF0aWM6ITEsYmFzZW5hbWU6QX0pKSxbcixTLEFdKTtyZXR1cm4gYS5jcmVhdGVFbGVtZW50KGEuRnJhZ21lbnQsbnVsbCxhLmNyZWF0ZUVsZW1lbnQobi5VTlNBRkVfRGF0YVJvdXRlckNvbnRleHQuUHJvdmlkZXIse3ZhbHVlOlR9LGEuY3JlYXRlRWxlbWVudChuLlVOU0FGRV9EYXRhUm91dGVyU3RhdGVDb250ZXh0LlByb3ZpZGVyLHt2YWx1ZTppfSxhLmNyZWF0ZUVsZW1lbnQoeC5Qcm92aWRlcix7dmFsdWU6Zy5jdXJyZW50fSxhLmNyZWF0ZUVsZW1lbnQoay5Qcm92aWRlcix7dmFsdWU6bH0sYS5jcmVhdGVFbGVtZW50KG4uUm91dGVyLHtiYXNlbmFtZTpBLGxvY2F0aW9uOmkubG9jYXRpb24sbmF2aWdhdGlvblR5cGU6aS5oaXN0b3J5QWN0aW9uLG5hdmlnYXRvcjpTLGZ1dHVyZTp7djdfcmVsYXRpdmVTcGxhdFBhdGg6ci5mdXR1cmUudjdfcmVsYXRpdmVTcGxhdFBhdGh9fSxpLmluaXRpYWxpemVkfHxyLmZ1dHVyZS52N19wYXJ0aWFsSHlkcmF0aW9uP2EuY3JlYXRlRWxlbWVudChQLHtyb3V0ZXM6ci5yb3V0ZXMsZnV0dXJlOnIuZnV0dXJlLHN0YXRlOml9KTp0KSkpKSksbnVsbCl9LGUuU2Nyb2xsUmVzdG9yYXRpb249ZnVuY3Rpb24oZSl7bGV0e2dldEtleTp0LHN0b3JhZ2VLZXk6cn09ZTtyZXR1cm4gWSh7Z2V0S2V5OnQsc3RvcmFnZUtleTpyfSksbnVsbH0sZS5VTlNBRkVfRmV0Y2hlcnNDb250ZXh0PXgsZS5VTlNBRkVfVmlld1RyYW5zaXRpb25Db250ZXh0PWssZS5VTlNBRkVfdXNlU2Nyb2xsUmVzdG9yYXRpb249WSxlLmNyZWF0ZUJyb3dzZXJSb3V0ZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gby5jcmVhdGVSb3V0ZXIoe2Jhc2VuYW1lOm51bGw9PXQ/dm9pZCAwOnQuYmFzZW5hbWUsZnV0dXJlOmMoe30sbnVsbD09dD92b2lkIDA6dC5mdXR1cmUse3Y3X3ByZXBlbmRCYXNlbmFtZTohMH0pLGhpc3Rvcnk6by5jcmVhdGVCcm93c2VySGlzdG9yeSh7d2luZG93Om51bGw9PXQ/dm9pZCAwOnQud2luZG93fSksaHlkcmF0aW9uRGF0YToobnVsbD09dD92b2lkIDA6dC5oeWRyYXRpb25EYXRhKXx8dygpLHJvdXRlczplLG1hcFJvdXRlUHJvcGVydGllczpuLlVOU0FGRV9tYXBSb3V0ZVByb3BlcnRpZXMsdW5zdGFibGVfZGF0YVN0cmF0ZWd5Om51bGw9PXQ/dm9pZCAwOnQudW5zdGFibGVfZGF0YVN0cmF0ZWd5LHVuc3RhYmxlX3BhdGNoUm91dGVzT25NaXNzOm51bGw9PXQ/dm9pZCAwOnQudW5zdGFibGVfcGF0Y2hSb3V0ZXNPbk1pc3Msd2luZG93Om51bGw9PXQ/dm9pZCAwOnQud2luZG93fSkuaW5pdGlhbGl6ZSgpfSxlLmNyZWF0ZUhhc2hSb3V0ZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gby5jcmVhdGVSb3V0ZXIoe2Jhc2VuYW1lOm51bGw9PXQ/dm9pZCAwOnQuYmFzZW5hbWUsZnV0dXJlOmMoe30sbnVsbD09dD92b2lkIDA6dC5mdXR1cmUse3Y3X3ByZXBlbmRCYXNlbmFtZTohMH0pLGhpc3Rvcnk6by5jcmVhdGVIYXNoSGlzdG9yeSh7d2luZG93Om51bGw9PXQ/dm9pZCAwOnQud2luZG93fSksaHlkcmF0aW9uRGF0YToobnVsbD09dD92b2lkIDA6dC5oeWRyYXRpb25EYXRhKXx8dygpLHJvdXRlczplLG1hcFJvdXRlUHJvcGVydGllczpuLlVOU0FGRV9tYXBSb3V0ZVByb3BlcnRpZXMsdW5zdGFibGVfZGF0YVN0cmF0ZWd5Om51bGw9PXQ/dm9pZCAwOnQudW5zdGFibGVfZGF0YVN0cmF0ZWd5LHVuc3RhYmxlX3BhdGNoUm91dGVzT25NaXNzOm51bGw9PXQ/dm9pZCAwOnQudW5zdGFibGVfcGF0Y2hSb3V0ZXNPbk1pc3Msd2luZG93Om51bGw9PXQ/dm9pZCAwOnQud2luZG93fSkuaW5pdGlhbGl6ZSgpfSxlLmNyZWF0ZVNlYXJjaFBhcmFtcz1wLGUudW5zdGFibGVfSGlzdG9yeVJvdXRlcj1mdW5jdGlvbihlKXtsZXR7YmFzZW5hbWU6dCxjaGlsZHJlbjpyLGZ1dHVyZTpvLGhpc3Rvcnk6aX09ZSxbcyxjXT1hLnVzZVN0YXRlKHthY3Rpb246aS5hY3Rpb24sbG9jYXRpb246aS5sb2NhdGlvbn0pLHt2N19zdGFydFRyYW5zaXRpb246dX09b3x8e30sbD1hLnVzZUNhbGxiYWNrKChlPT57dSYmRT9FKCgoKT0+YyhlKSkpOmMoZSl9KSxbYyx1XSk7cmV0dXJuIGEudXNlTGF5b3V0RWZmZWN0KCgoKT0+aS5saXN0ZW4obCkpLFtpLGxdKSxhLmNyZWF0ZUVsZW1lbnQobi5Sb3V0ZXIse2Jhc2VuYW1lOnQsY2hpbGRyZW46cixsb2NhdGlvbjpzLmxvY2F0aW9uLG5hdmlnYXRpb25UeXBlOnMuYWN0aW9uLG5hdmlnYXRvcjppLGZ1dHVyZTpvfSl9LGUudW5zdGFibGVfdXNlUHJvbXB0PWZ1bmN0aW9uKGUpe2xldHt3aGVuOnQsbWVzc2FnZTpyfT1lLG89bi51c2VCbG9ja2VyKHQpO2EudXNlRWZmZWN0KCgoKT0+eyJibG9ja2VkIj09PW8uc3RhdGUmJih3aW5kb3cuY29uZmlybShyKT9zZXRUaW1lb3V0KG8ucHJvY2VlZCwwKTpvLnJlc2V0KCkpfSksW28scl0pLGEudXNlRWZmZWN0KCgoKT0+eyJibG9ja2VkIiE9PW8uc3RhdGV8fHR8fG8ucmVzZXQoKX0pLFtvLHRdKX0sZS51bnN0YWJsZV91c2VWaWV3VHJhbnNpdGlvblN0YXRlPUssZS51c2VCZWZvcmVVbmxvYWQ9ZnVuY3Rpb24oZSx0KXtsZXR7Y2FwdHVyZTpyfT10fHx7fTthLnVzZUVmZmVjdCgoKCk9PntsZXQgdD1udWxsIT1yP3tjYXB0dXJlOnJ9OnZvaWQgMDtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZXVubG9hZCIsZSx0KSwoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLGUsdCl9fSksW2Uscl0pfSxlLnVzZUZldGNoZXI9ZnVuY3Rpb24oZSl7dmFyIHQ7bGV0e2tleTpyfT12b2lkIDA9PT1lP3t9OmUse3JvdXRlcjppfT1VKEQuVXNlRmV0Y2hlcikscz16KEwuVXNlRmV0Y2hlciksdT1hLnVzZUNvbnRleHQoeCksbD1hLnVzZUNvbnRleHQobi5VTlNBRkVfUm91dGVDb250ZXh0KSxmPW51bGw9PSh0PWwubWF0Y2hlc1tsLm1hdGNoZXMubGVuZ3RoLTFdKT92b2lkIDA6dC5yb3V0ZS5pZDt1fHxvLlVOU0FGRV9pbnZhcmlhbnQoITEpLGx8fG8uVU5TQUZFX2ludmFyaWFudCghMSksbnVsbD09ZiYmby5VTlNBRkVfaW52YXJpYW50KCExKTtsZXQgZD1UP1QoKToiIixbcCxfXT1hLnVzZVN0YXRlKHJ8fGQpO3ImJnIhPT1wP18ocik6cHx8XyhXKCkpLGEudXNlRWZmZWN0KCgoKT0+KGkuZ2V0RmV0Y2hlcihwKSwoKT0+e2kuZGVsZXRlRmV0Y2hlcihwKX0pKSxbaSxwXSk7bGV0IGg9YS51c2VDYWxsYmFjaygoKGUsdCk9PntmfHxvLlVOU0FGRV9pbnZhcmlhbnQoITEpLGkuZmV0Y2gocCxmLGUsdCl9KSxbcCxmLGldKSxtPSQoKSx5PWEudXNlQ2FsbGJhY2soKChlLHQpPT57bShlLGMoe30sdCx7bmF2aWdhdGU6ITEsZmV0Y2hlcktleTpwfSkpfSksW3AsbV0pLGc9YS51c2VNZW1vKCgoKT0+YS5mb3J3YXJkUmVmKCgoZSx0KT0+YS5jcmVhdGVFbGVtZW50KGosYyh7fSxlLHtuYXZpZ2F0ZTohMSxmZXRjaGVyS2V5OnAscmVmOnR9KSkpKSksW3BdKSx2PXMuZmV0Y2hlcnMuZ2V0KHApfHxvLklETEVfRkVUQ0hFUixiPXUuZ2V0KHApO3JldHVybiBhLnVzZU1lbW8oKCgpPT5jKHtGb3JtOmcsc3VibWl0OnksbG9hZDpofSx2LHtkYXRhOmJ9KSksW2cseSxoLHYsYl0pfSxlLnVzZUZldGNoZXJzPWZ1bmN0aW9uKCl7bGV0IGU9eihMLlVzZUZldGNoZXJzKTtyZXR1cm4gQXJyYXkuZnJvbShlLmZldGNoZXJzLmVudHJpZXMoKSkubWFwKChlPT57bGV0W3Qscl09ZTtyZXR1cm4gYyh7fSxyLHtrZXk6dH0pfSkpfSxlLnVzZUZvcm1BY3Rpb249cSxlLnVzZUxpbmtDbGlja0hhbmRsZXI9QixlLnVzZVNlYXJjaFBhcmFtcz1mdW5jdGlvbihlKXtsZXQgdD1hLnVzZVJlZihwKGUpKSxyPWEudXNlUmVmKCExKSxvPW4udXNlTG9jYXRpb24oKSxpPWEudXNlTWVtbygoKCk9PmZ1bmN0aW9uKGUsdCl7bGV0IHI9cChlKTtyZXR1cm4gdCYmdC5mb3JFYWNoKCgoZSxuKT0+e3IuaGFzKG4pfHx0LmdldEFsbChuKS5mb3JFYWNoKChlPT57ci5hcHBlbmQobixlKX0pKX0pKSxyfShvLnNlYXJjaCxyLmN1cnJlbnQ/bnVsbDp0LmN1cnJlbnQpKSxbby5zZWFyY2hdKSxzPW4udXNlTmF2aWdhdGUoKSxjPWEudXNlQ2FsbGJhY2soKChlLHQpPT57Y29uc3Qgbj1wKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UoaSk6ZSk7ci5jdXJyZW50PSEwLHMoIj8iK24sdCl9KSxbcyxpXSk7cmV0dXJuW2ksY119LGUudXNlU3VibWl0PSQsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSh0LHIoOTY1NDApLHIoNDA5NjEpLHIoNTEwOTApLHIoNTk0MCkpfSw1MTA5MDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1yKDM4NzYwKX0sMzg3NjA6ZnVuY3Rpb24oZSx0LHIpeyFmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGUmJk9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHIpe2lmKCJkZWZhdWx0IiE9PXIpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLG4uZ2V0P246e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVbcl19fSl9fSkpLHQuZGVmYXVsdD1lLE9iamVjdC5mcmVlemUodCl9dmFyIG89bih0KTtmdW5jdGlvbiBpKCl7cmV0dXJuIGk9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF07Zm9yKHZhciBuIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbikmJihlW25dPXJbbl0pfXJldHVybiBlfSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1jb25zdCBhPW8uY3JlYXRlQ29udGV4dChudWxsKSxzPW8uY3JlYXRlQ29udGV4dChudWxsKSxjPW8uY3JlYXRlQ29udGV4dChudWxsKSx1PW8uY3JlYXRlQ29udGV4dChudWxsKSxsPW8uY3JlYXRlQ29udGV4dChudWxsKSxmPW8uY3JlYXRlQ29udGV4dCh7b3V0bGV0Om51bGwsbWF0Y2hlczpbXSxpc0RhdGFSb3V0ZTohMX0pLGQ9by5jcmVhdGVDb250ZXh0KG51bGwpO2Z1bmN0aW9uIHAoKXtyZXR1cm4gbnVsbCE9by51c2VDb250ZXh0KGwpfWZ1bmN0aW9uIF8oKXtyZXR1cm4gcCgpfHxyLlVOU0FGRV9pbnZhcmlhbnQoITEpLG8udXNlQ29udGV4dChsKS5sb2NhdGlvbn1mdW5jdGlvbiBoKGUpe28udXNlQ29udGV4dCh1KS5zdGF0aWN8fG8udXNlTGF5b3V0RWZmZWN0KGUpfWZ1bmN0aW9uIG0oKXtsZXR7aXNEYXRhUm91dGU6ZX09by51c2VDb250ZXh0KGYpO3JldHVybiBlP2Z1bmN0aW9uKCl7bGV0e3JvdXRlcjplfT1SKEEuVXNlTmF2aWdhdGVTdGFibGUpLHQ9TyhULlVzZU5hdmlnYXRlU3RhYmxlKSxyPW8udXNlUmVmKCExKTtyZXR1cm4gaCgoKCk9PntyLmN1cnJlbnQ9ITB9KSksby51c2VDYWxsYmFjaygoZnVuY3Rpb24obixvKXt2b2lkIDA9PT1vJiYobz17fSksci5jdXJyZW50JiYoIm51bWJlciI9PXR5cGVvZiBuP2UubmF2aWdhdGUobik6ZS5uYXZpZ2F0ZShuLGkoe2Zyb21Sb3V0ZUlkOnR9LG8pKSl9KSxbZSx0XSl9KCk6ZnVuY3Rpb24oKXtwKCl8fHIuVU5TQUZFX2ludmFyaWFudCghMSk7bGV0IGU9by51c2VDb250ZXh0KGEpLHtiYXNlbmFtZTp0LGZ1dHVyZTpuLG5hdmlnYXRvcjppfT1vLnVzZUNvbnRleHQodSkse21hdGNoZXM6c309by51c2VDb250ZXh0KGYpLHtwYXRobmFtZTpjfT1fKCksbD1KU09OLnN0cmluZ2lmeShyLlVOU0FGRV9nZXRSZXNvbHZlVG9NYXRjaGVzKHMsbi52N19yZWxhdGl2ZVNwbGF0UGF0aCkpLGQ9by51c2VSZWYoITEpO3JldHVybiBoKCgoKT0+e2QuY3VycmVudD0hMH0pKSxvLnVzZUNhbGxiYWNrKChmdW5jdGlvbihuLG8pe2lmKHZvaWQgMD09PW8mJihvPXt9KSwhZC5jdXJyZW50KXJldHVybjtpZigibnVtYmVyIj09dHlwZW9mIG4pcmV0dXJuIHZvaWQgaS5nbyhuKTtsZXQgYT1yLnJlc29sdmVUbyhuLEpTT04ucGFyc2UobCksYywicGF0aCI9PT1vLnJlbGF0aXZlKTtudWxsPT1lJiYiLyIhPT10JiYoYS5wYXRobmFtZT0iLyI9PT1hLnBhdGhuYW1lP3Q6ci5qb2luUGF0aHMoW3QsYS5wYXRobmFtZV0pKSwoby5yZXBsYWNlP2kucmVwbGFjZTppLnB1c2gpKGEsby5zdGF0ZSxvKX0pLFt0LGksbCxjLGVdKX0oKX1jb25zdCB5PW8uY3JlYXRlQ29udGV4dChudWxsKTtmdW5jdGlvbiBnKGUpe2xldCB0PW8udXNlQ29udGV4dChmKS5vdXRsZXQ7cmV0dXJuIHQ/by5jcmVhdGVFbGVtZW50KHkuUHJvdmlkZXIse3ZhbHVlOmV9LHQpOnR9ZnVuY3Rpb24gdihlLHQpe2xldHtyZWxhdGl2ZTpufT12b2lkIDA9PT10P3t9OnQse2Z1dHVyZTppfT1vLnVzZUNvbnRleHQodSkse21hdGNoZXM6YX09by51c2VDb250ZXh0KGYpLHtwYXRobmFtZTpzfT1fKCksYz1KU09OLnN0cmluZ2lmeShyLlVOU0FGRV9nZXRSZXNvbHZlVG9NYXRjaGVzKGEsaS52N19yZWxhdGl2ZVNwbGF0UGF0aCkpO3JldHVybiBvLnVzZU1lbW8oKCgpPT5yLnJlc29sdmVUbyhlLEpTT04ucGFyc2UoYykscywicGF0aCI9PT1uKSksW2UsYyxzLG5dKX1mdW5jdGlvbiBiKGUsdCl7cmV0dXJuIHcoZSx0KX1mdW5jdGlvbiB3KGUsdCxuLGEpe3AoKXx8ci5VTlNBRkVfaW52YXJpYW50KCExKTtsZXR7bmF2aWdhdG9yOnN9PW8udXNlQ29udGV4dCh1KSx7bWF0Y2hlczpjfT1vLnVzZUNvbnRleHQoZiksZD1jW2MubGVuZ3RoLTFdLGg9ZD9kLnBhcmFtczp7fTshZHx8ZC5wYXRobmFtZTtsZXQgbT1kP2QucGF0aG5hbWVCYXNlOiIvIjtkJiZkLnJvdXRlO2xldCB5LGc9XygpO2lmKHQpe3ZhciB2O2xldCBlPSJzdHJpbmciPT10eXBlb2YgdD9yLnBhcnNlUGF0aCh0KTp0OyIvIj09PW18fChudWxsPT0odj1lLnBhdGhuYW1lKT92b2lkIDA6di5zdGFydHNXaXRoKG0pKXx8ci5VTlNBRkVfaW52YXJpYW50KCExKSx5PWV9ZWxzZSB5PWc7bGV0IGI9eS5wYXRobmFtZXx8Ii8iLHc9YjtpZigiLyIhPT1tKXtsZXQgZT1tLnJlcGxhY2UoL15cLy8sIiIpLnNwbGl0KCIvIik7dz0iLyIrYi5yZXBsYWNlKC9eXC8vLCIiKS5zcGxpdCgiLyIpLnNsaWNlKGUubGVuZ3RoKS5qb2luKCIvIil9bGV0IFM9ci5tYXRjaFJvdXRlcyhlLHtwYXRobmFtZTp3fSksaz1FKFMmJlMubWFwKChlPT5PYmplY3QuYXNzaWduKHt9LGUse3BhcmFtczpPYmplY3QuYXNzaWduKHt9LGgsZS5wYXJhbXMpLHBhdGhuYW1lOnIuam9pblBhdGhzKFttLHMuZW5jb2RlTG9jYXRpb24/cy5lbmNvZGVMb2NhdGlvbihlLnBhdGhuYW1lKS5wYXRobmFtZTplLnBhdGhuYW1lXSkscGF0aG5hbWVCYXNlOiIvIj09PWUucGF0aG5hbWVCYXNlP206ci5qb2luUGF0aHMoW20scy5lbmNvZGVMb2NhdGlvbj9zLmVuY29kZUxvY2F0aW9uKGUucGF0aG5hbWVCYXNlKS5wYXRobmFtZTplLnBhdGhuYW1lQmFzZV0pfSkpKSxjLG4sYSk7cmV0dXJuIHQmJms/by5jcmVhdGVFbGVtZW50KGwuUHJvdmlkZXIse3ZhbHVlOntsb2NhdGlvbjppKHtwYXRobmFtZToiLyIsc2VhcmNoOiIiLGhhc2g6IiIsc3RhdGU6bnVsbCxrZXk6ImRlZmF1bHQifSx5KSxuYXZpZ2F0aW9uVHlwZTpyLkFjdGlvbi5Qb3B9fSxrKTprfWZ1bmN0aW9uIFMoKXtsZXQgZT1NKCksdD1yLmlzUm91dGVFcnJvclJlc3BvbnNlKGUpP2Uuc3RhdHVzKyIgIitlLnN0YXR1c1RleHQ6ZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTpKU09OLnN0cmluZ2lmeShlKSxuPWUgaW5zdGFuY2VvZiBFcnJvcj9lLnN0YWNrOm51bGwsaT17cGFkZGluZzoiMC41cmVtIixiYWNrZ3JvdW5kQ29sb3I6InJnYmEoMjAwLDIwMCwyMDAsIDAuNSkifTtyZXR1cm4gby5jcmVhdGVFbGVtZW50KG8uRnJhZ21lbnQsbnVsbCxvLmNyZWF0ZUVsZW1lbnQoImgyIixudWxsLCJVbmV4cGVjdGVkIEFwcGxpY2F0aW9uIEVycm9yISIpLG8uY3JlYXRlRWxlbWVudCgiaDMiLHtzdHlsZTp7Zm9udFN0eWxlOiJpdGFsaWMifX0sdCksbj9vLmNyZWF0ZUVsZW1lbnQoInByZSIse3N0eWxlOml9LG4pOm51bGwsbnVsbCl9Y29uc3Qgaz1vLmNyZWF0ZUVsZW1lbnQoUyxudWxsKTtjbGFzcyBDIGV4dGVuZHMgby5Db21wb25lbnR7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5zdGF0ZT17bG9jYXRpb246ZS5sb2NhdGlvbixyZXZhbGlkYXRpb246ZS5yZXZhbGlkYXRpb24sZXJyb3I6ZS5lcnJvcn19c3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlKXtyZXR1cm57ZXJyb3I6ZX19c3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhlLHQpe3JldHVybiB0LmxvY2F0aW9uIT09ZS5sb2NhdGlvbnx8ImlkbGUiIT09dC5yZXZhbGlkYXRpb24mJiJpZGxlIj09PWUucmV2YWxpZGF0aW9uP3tlcnJvcjplLmVycm9yLGxvY2F0aW9uOmUubG9jYXRpb24scmV2YWxpZGF0aW9uOmUucmV2YWxpZGF0aW9ufTp7ZXJyb3I6dm9pZCAwIT09ZS5lcnJvcj9lLmVycm9yOnQuZXJyb3IsbG9jYXRpb246dC5sb2NhdGlvbixyZXZhbGlkYXRpb246ZS5yZXZhbGlkYXRpb258fHQucmV2YWxpZGF0aW9ufX1jb21wb25lbnREaWRDYXRjaChlLHQpe2NvbnNvbGUuZXJyb3IoIlJlYWN0IFJvdXRlciBjYXVnaHQgdGhlIGZvbGxvd2luZyBlcnJvciBkdXJpbmcgcmVuZGVyIixlLHQpfXJlbmRlcigpe3JldHVybiB2b2lkIDAhPT10aGlzLnN0YXRlLmVycm9yP28uY3JlYXRlRWxlbWVudChmLlByb3ZpZGVyLHt2YWx1ZTp0aGlzLnByb3BzLnJvdXRlQ29udGV4dH0sby5jcmVhdGVFbGVtZW50KGQuUHJvdmlkZXIse3ZhbHVlOnRoaXMuc3RhdGUuZXJyb3IsY2hpbGRyZW46dGhpcy5wcm9wcy5jb21wb25lbnR9KSk6dGhpcy5wcm9wcy5jaGlsZHJlbn19ZnVuY3Rpb24geChlKXtsZXR7cm91dGVDb250ZXh0OnQsbWF0Y2g6cixjaGlsZHJlbjpufT1lLGk9by51c2VDb250ZXh0KGEpO3JldHVybiBpJiZpLnN0YXRpYyYmaS5zdGF0aWNDb250ZXh0JiYoci5yb3V0ZS5lcnJvckVsZW1lbnR8fHIucm91dGUuRXJyb3JCb3VuZGFyeSkmJihpLnN0YXRpY0NvbnRleHQuX2RlZXBlc3RSZW5kZXJlZEJvdW5kYXJ5SWQ9ci5yb3V0ZS5pZCksby5jcmVhdGVFbGVtZW50KGYuUHJvdmlkZXIse3ZhbHVlOnR9LG4pfWZ1bmN0aW9uIEUoZSx0LG4saSl7dmFyIGE7aWYodm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PW4mJihuPW51bGwpLHZvaWQgMD09PWkmJihpPW51bGwpLG51bGw9PWUpe3ZhciBzO2lmKG51bGw9PShzPW4pfHwhcy5lcnJvcnMpcmV0dXJuIG51bGw7ZT1uLm1hdGNoZXN9bGV0IGM9ZSx1PW51bGw9PShhPW4pP3ZvaWQgMDphLmVycm9ycztpZihudWxsIT11KXtsZXQgZT1jLmZpbmRJbmRleCgoZT0+ZS5yb3V0ZS5pZCYmdm9pZCAwIT09KG51bGw9PXU/dm9pZCAwOnVbZS5yb3V0ZS5pZF0pKSk7ZT49MHx8ci5VTlNBRkVfaW52YXJpYW50KCExKSxjPWMuc2xpY2UoMCxNYXRoLm1pbihjLmxlbmd0aCxlKzEpKX1sZXQgbD0hMSxmPS0xO2lmKG4mJmkmJmkudjdfcGFydGlhbEh5ZHJhdGlvbilmb3IobGV0IGU9MDtlPGMubGVuZ3RoO2UrKyl7bGV0IHQ9Y1tlXTtpZigodC5yb3V0ZS5IeWRyYXRlRmFsbGJhY2t8fHQucm91dGUuaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCkmJihmPWUpLHQucm91dGUuaWQpe2xldHtsb2FkZXJEYXRhOmUsZXJyb3JzOnJ9PW4sbz10LnJvdXRlLmxvYWRlciYmdm9pZCAwPT09ZVt0LnJvdXRlLmlkXSYmKCFyfHx2b2lkIDA9PT1yW3Qucm91dGUuaWRdKTtpZih0LnJvdXRlLmxhenl8fG8pe2w9ITAsYz1mPj0wP2Muc2xpY2UoMCxmKzEpOltjWzBdXTticmVha319fXJldHVybiBjLnJlZHVjZVJpZ2h0KCgoZSxyLGkpPT57bGV0IGEscz0hMSxkPW51bGwscD1udWxsO3ZhciBfO24mJihhPXUmJnIucm91dGUuaWQ/dVtyLnJvdXRlLmlkXTp2b2lkIDAsZD1yLnJvdXRlLmVycm9yRWxlbWVudHx8ayxsJiYoZjwwJiYwPT09aT8oaltfPSJyb3V0ZS1mYWxsYmFjayJdfHwoaltfXT0hMCkscz0hMCxwPW51bGwpOmY9PT1pJiYocz0hMCxwPXIucm91dGUuaHlkcmF0ZUZhbGxiYWNrRWxlbWVudHx8bnVsbCkpKTtsZXQgaD10LmNvbmNhdChjLnNsaWNlKDAsaSsxKSksbT0oKT0+e2xldCB0O3JldHVybiB0PWE/ZDpzP3A6ci5yb3V0ZS5Db21wb25lbnQ/by5jcmVhdGVFbGVtZW50KHIucm91dGUuQ29tcG9uZW50LG51bGwpOnIucm91dGUuZWxlbWVudD9yLnJvdXRlLmVsZW1lbnQ6ZSxvLmNyZWF0ZUVsZW1lbnQoeCx7bWF0Y2g6cixyb3V0ZUNvbnRleHQ6e291dGxldDplLG1hdGNoZXM6aCxpc0RhdGFSb3V0ZTpudWxsIT1ufSxjaGlsZHJlbjp0fSl9O3JldHVybiBuJiYoci5yb3V0ZS5FcnJvckJvdW5kYXJ5fHxyLnJvdXRlLmVycm9yRWxlbWVudHx8MD09PWkpP28uY3JlYXRlRWxlbWVudChDLHtsb2NhdGlvbjpuLmxvY2F0aW9uLHJldmFsaWRhdGlvbjpuLnJldmFsaWRhdGlvbixjb21wb25lbnQ6ZCxlcnJvcjphLGNoaWxkcmVuOm0oKSxyb3V0ZUNvbnRleHQ6e291dGxldDpudWxsLG1hdGNoZXM6aCxpc0RhdGFSb3V0ZTohMH19KTptKCl9KSxudWxsKX12YXIgQT1mdW5jdGlvbihlKXtyZXR1cm4gZS5Vc2VCbG9ja2VyPSJ1c2VCbG9ja2VyIixlLlVzZVJldmFsaWRhdG9yPSJ1c2VSZXZhbGlkYXRvciIsZS5Vc2VOYXZpZ2F0ZVN0YWJsZT0idXNlTmF2aWdhdGUiLGV9KEF8fHt9KSxUPWZ1bmN0aW9uKGUpe3JldHVybiBlLlVzZUJsb2NrZXI9InVzZUJsb2NrZXIiLGUuVXNlTG9hZGVyRGF0YT0idXNlTG9hZGVyRGF0YSIsZS5Vc2VBY3Rpb25EYXRhPSJ1c2VBY3Rpb25EYXRhIixlLlVzZVJvdXRlRXJyb3I9InVzZVJvdXRlRXJyb3IiLGUuVXNlTmF2aWdhdGlvbj0idXNlTmF2aWdhdGlvbiIsZS5Vc2VSb3V0ZUxvYWRlckRhdGE9InVzZVJvdXRlTG9hZGVyRGF0YSIsZS5Vc2VNYXRjaGVzPSJ1c2VNYXRjaGVzIixlLlVzZVJldmFsaWRhdG9yPSJ1c2VSZXZhbGlkYXRvciIsZS5Vc2VOYXZpZ2F0ZVN0YWJsZT0idXNlTmF2aWdhdGUiLGUuVXNlUm91dGVJZD0idXNlUm91dGVJZCIsZX0oVHx8e30pO2Z1bmN0aW9uIFIoZSl7bGV0IHQ9by51c2VDb250ZXh0KGEpO3JldHVybiB0fHxyLlVOU0FGRV9pbnZhcmlhbnQoITEpLHR9ZnVuY3Rpb24gUChlKXtsZXQgdD1vLnVzZUNvbnRleHQocyk7cmV0dXJuIHR8fHIuVU5TQUZFX2ludmFyaWFudCghMSksdH1mdW5jdGlvbiBPKGUpe2xldCB0PWZ1bmN0aW9uKCl7bGV0IGU9by51c2VDb250ZXh0KGYpO3JldHVybiBlfHxyLlVOU0FGRV9pbnZhcmlhbnQoITEpLGV9KCksbj10Lm1hdGNoZXNbdC5tYXRjaGVzLmxlbmd0aC0xXTtyZXR1cm4gbi5yb3V0ZS5pZHx8ci5VTlNBRkVfaW52YXJpYW50KCExKSxuLnJvdXRlLmlkfWZ1bmN0aW9uIE0oKXt2YXIgZTtsZXQgdD1vLnVzZUNvbnRleHQoZCkscj1QKFQuVXNlUm91dGVFcnJvciksbj1PKFQuVXNlUm91dGVFcnJvcik7cmV0dXJuIHZvaWQgMCE9PXQ/dDpudWxsPT0oZT1yLmVycm9ycyk/dm9pZCAwOmVbbl19ZnVuY3Rpb24gRigpe2xldCBlPW8udXNlQ29udGV4dChjKTtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZS5fZGF0YX1sZXQgST0wO2NvbnN0IGo9e30sRD1vLnN0YXJ0VHJhbnNpdGlvbjtmdW5jdGlvbiBMKGUpe2xldHtyb3V0ZXM6dCxmdXR1cmU6cixzdGF0ZTpufT1lO3JldHVybiB3KHQsdm9pZCAwLG4scil9ZnVuY3Rpb24gVShlKXtyLlVOU0FGRV9pbnZhcmlhbnQoITEpfWZ1bmN0aW9uIHooZSl7bGV0e2Jhc2VuYW1lOnQ9Ii8iLGNoaWxkcmVuOm49bnVsbCxsb2NhdGlvbjphLG5hdmlnYXRpb25UeXBlOnM9ci5BY3Rpb24uUG9wLG5hdmlnYXRvcjpjLHN0YXRpYzpmPSExLGZ1dHVyZTpkfT1lO3AoKSYmci5VTlNBRkVfaW52YXJpYW50KCExKTtsZXQgXz10LnJlcGxhY2UoL15cLyovLCIvIiksaD1vLnVzZU1lbW8oKCgpPT4oe2Jhc2VuYW1lOl8sbmF2aWdhdG9yOmMsc3RhdGljOmYsZnV0dXJlOmkoe3Y3X3JlbGF0aXZlU3BsYXRQYXRoOiExfSxkKX0pKSxbXyxkLGMsZl0pOyJzdHJpbmciPT10eXBlb2YgYSYmKGE9ci5wYXJzZVBhdGgoYSkpO2xldHtwYXRobmFtZTptPSIvIixzZWFyY2g6eT0iIixoYXNoOmc9IiIsc3RhdGU6dj1udWxsLGtleTpiPSJkZWZhdWx0In09YSx3PW8udXNlTWVtbygoKCk9PntsZXQgZT1yLnN0cmlwQmFzZW5hbWUobSxfKTtyZXR1cm4gbnVsbD09ZT9udWxsOntsb2NhdGlvbjp7cGF0aG5hbWU6ZSxzZWFyY2g6eSxoYXNoOmcsc3RhdGU6dixrZXk6Yn0sbmF2aWdhdGlvblR5cGU6c319KSxbXyxtLHksZyx2LGIsc10pO3JldHVybiBudWxsPT13P251bGw6by5jcmVhdGVFbGVtZW50KHUuUHJvdmlkZXIse3ZhbHVlOmh9LG8uY3JlYXRlRWxlbWVudChsLlByb3ZpZGVyLHtjaGlsZHJlbjpuLHZhbHVlOnd9KSl9dmFyIEI9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5wZW5kaW5nPTBdPSJwZW5kaW5nIixlW2Uuc3VjY2Vzcz0xXT0ic3VjY2VzcyIsZVtlLmVycm9yPTJdPSJlcnJvciIsZX0oQnx8e30pO2NvbnN0IEg9bmV3IFByb21pc2UoKCgpPT57fSkpO2NsYXNzIEogZXh0ZW5kcyBvLkNvbXBvbmVudHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLnN0YXRlPXtlcnJvcjpudWxsfX1zdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGUpe3JldHVybntlcnJvcjplfX1jb21wb25lbnREaWRDYXRjaChlLHQpe2NvbnNvbGUuZXJyb3IoIjxBd2FpdD4gY2F1Z2h0IHRoZSBmb2xsb3dpbmcgZXJyb3IgZHVyaW5nIHJlbmRlciIsZSx0KX1yZW5kZXIoKXtsZXR7Y2hpbGRyZW46ZSxlcnJvckVsZW1lbnQ6dCxyZXNvbHZlOm59PXRoaXMucHJvcHMsaT1udWxsLGE9Qi5wZW5kaW5nO2lmKG4gaW5zdGFuY2VvZiBQcm9taXNlKWlmKHRoaXMuc3RhdGUuZXJyb3Ipe2E9Qi5lcnJvcjtsZXQgZT10aGlzLnN0YXRlLmVycm9yO2k9UHJvbWlzZS5yZWplY3QoKS5jYXRjaCgoKCk9Pnt9KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGksIl90cmFja2VkIix7Z2V0OigpPT4hMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJfZXJyb3IiLHtnZXQ6KCk9PmV9KX1lbHNlIG4uX3RyYWNrZWQ/KGk9bixhPSJfZXJyb3IiaW4gaT9CLmVycm9yOiJfZGF0YSJpbiBpP0Iuc3VjY2VzczpCLnBlbmRpbmcpOihhPUIucGVuZGluZyxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX3RyYWNrZWQiLHtnZXQ6KCk9PiEwfSksaT1uLnRoZW4oKGU9Pk9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfZGF0YSIse2dldDooKT0+ZX0pKSwoZT0+T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9lcnJvciIse2dldDooKT0+ZX0pKSkpO2Vsc2UgYT1CLnN1Y2Nlc3MsaT1Qcm9taXNlLnJlc29sdmUoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaSwiX3RyYWNrZWQiLHtnZXQ6KCk9PiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGksIl9kYXRhIix7Z2V0OigpPT5ufSk7aWYoYT09PUIuZXJyb3ImJmkuX2Vycm9yIGluc3RhbmNlb2Ygci5BYm9ydGVkRGVmZXJyZWRFcnJvcil0aHJvdyBIO2lmKGE9PT1CLmVycm9yJiYhdCl0aHJvdyBpLl9lcnJvcjtpZihhPT09Qi5lcnJvcilyZXR1cm4gby5jcmVhdGVFbGVtZW50KGMuUHJvdmlkZXIse3ZhbHVlOmksY2hpbGRyZW46dH0pO2lmKGE9PT1CLnN1Y2Nlc3MpcmV0dXJuIG8uY3JlYXRlRWxlbWVudChjLlByb3ZpZGVyLHt2YWx1ZTppLGNoaWxkcmVuOmV9KTt0aHJvdyBpfX1mdW5jdGlvbiBXKGUpe2xldHtjaGlsZHJlbjp0fT1lLHI9RigpLG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChyKTp0O3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoby5GcmFnbWVudCxudWxsLG4pfWZ1bmN0aW9uICQoZSx0KXt2b2lkIDA9PT10JiYodD1bXSk7bGV0IG49W107cmV0dXJuIG8uQ2hpbGRyZW4uZm9yRWFjaChlLCgoZSxpKT0+e2lmKCFvLmlzVmFsaWRFbGVtZW50KGUpKXJldHVybjtsZXQgYT1bLi4udCxpXTtpZihlLnR5cGU9PT1vLkZyYWdtZW50KXJldHVybiB2b2lkIG4ucHVzaC5hcHBseShuLCQoZS5wcm9wcy5jaGlsZHJlbixhKSk7ZS50eXBlIT09VSYmci5VTlNBRkVfaW52YXJpYW50KCExKSxlLnByb3BzLmluZGV4JiZlLnByb3BzLmNoaWxkcmVuJiZyLlVOU0FGRV9pbnZhcmlhbnQoITEpO2xldCBzPXtpZDplLnByb3BzLmlkfHxhLmpvaW4oIi0iKSxjYXNlU2Vuc2l0aXZlOmUucHJvcHMuY2FzZVNlbnNpdGl2ZSxlbGVtZW50OmUucHJvcHMuZWxlbWVudCxDb21wb25lbnQ6ZS5wcm9wcy5Db21wb25lbnQsaW5kZXg6ZS5wcm9wcy5pbmRleCxwYXRoOmUucHJvcHMucGF0aCxsb2FkZXI6ZS5wcm9wcy5sb2FkZXIsYWN0aW9uOmUucHJvcHMuYWN0aW9uLGVycm9yRWxlbWVudDplLnByb3BzLmVycm9yRWxlbWVudCxFcnJvckJvdW5kYXJ5OmUucHJvcHMuRXJyb3JCb3VuZGFyeSxoYXNFcnJvckJvdW5kYXJ5Om51bGwhPWUucHJvcHMuRXJyb3JCb3VuZGFyeXx8bnVsbCE9ZS5wcm9wcy5lcnJvckVsZW1lbnQsc2hvdWxkUmV2YWxpZGF0ZTplLnByb3BzLnNob3VsZFJldmFsaWRhdGUsaGFuZGxlOmUucHJvcHMuaGFuZGxlLGxhenk6ZS5wcm9wcy5sYXp5fTtlLnByb3BzLmNoaWxkcmVuJiYocy5jaGlsZHJlbj0kKGUucHJvcHMuY2hpbGRyZW4sYSkpLG4ucHVzaChzKX0pKSxufWZ1bmN0aW9uIHEoZSl7bGV0IHQ9e2hhc0Vycm9yQm91bmRhcnk6bnVsbCE9ZS5FcnJvckJvdW5kYXJ5fHxudWxsIT1lLmVycm9yRWxlbWVudH07cmV0dXJuIGUuQ29tcG9uZW50JiZPYmplY3QuYXNzaWduKHQse2VsZW1lbnQ6by5jcmVhdGVFbGVtZW50KGUuQ29tcG9uZW50KSxDb21wb25lbnQ6dm9pZCAwfSksZS5IeWRyYXRlRmFsbGJhY2smJk9iamVjdC5hc3NpZ24odCx7aHlkcmF0ZUZhbGxiYWNrRWxlbWVudDpvLmNyZWF0ZUVsZW1lbnQoZS5IeWRyYXRlRmFsbGJhY2spLEh5ZHJhdGVGYWxsYmFjazp2b2lkIDB9KSxlLkVycm9yQm91bmRhcnkmJk9iamVjdC5hc3NpZ24odCx7ZXJyb3JFbGVtZW50Om8uY3JlYXRlRWxlbWVudChlLkVycm9yQm91bmRhcnkpLEVycm9yQm91bmRhcnk6dm9pZCAwfSksdH1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiQWJvcnRlZERlZmVycmVkRXJyb3IiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLkFib3J0ZWREZWZlcnJlZEVycm9yfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJOYXZpZ2F0aW9uVHlwZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuQWN0aW9ufX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjcmVhdGVQYXRoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5jcmVhdGVQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJkZWZlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuZGVmZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImdlbmVyYXRlUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuZ2VuZXJhdGVQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJpc1JvdXRlRXJyb3JSZXNwb25zZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuaXNSb3V0ZUVycm9yUmVzcG9uc2V9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImpzb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLmpzb259fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIm1hdGNoUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIubWF0Y2hQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJtYXRjaFJvdXRlcyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIubWF0Y2hSb3V0ZXN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInBhcnNlUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyc2VQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJyZWRpcmVjdCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIucmVkaXJlY3R9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInJlZGlyZWN0RG9jdW1lbnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLnJlZGlyZWN0RG9jdW1lbnR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInJlc29sdmVQYXRoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5yZXNvbHZlUGF0aH19KSxlLkF3YWl0PWZ1bmN0aW9uKGUpe2xldHtjaGlsZHJlbjp0LGVycm9yRWxlbWVudDpyLHJlc29sdmU6bn09ZTtyZXR1cm4gby5jcmVhdGVFbGVtZW50KEose3Jlc29sdmU6bixlcnJvckVsZW1lbnQ6cn0sby5jcmVhdGVFbGVtZW50KFcsbnVsbCx0KSl9LGUuTWVtb3J5Um91dGVyPWZ1bmN0aW9uKGUpe2xldHtiYXNlbmFtZTp0LGNoaWxkcmVuOm4saW5pdGlhbEVudHJpZXM6aSxpbml0aWFsSW5kZXg6YSxmdXR1cmU6c309ZSxjPW8udXNlUmVmKCk7bnVsbD09Yy5jdXJyZW50JiYoYy5jdXJyZW50PXIuY3JlYXRlTWVtb3J5SGlzdG9yeSh7aW5pdGlhbEVudHJpZXM6aSxpbml0aWFsSW5kZXg6YSx2NUNvbXBhdDohMH0pKTtsZXQgdT1jLmN1cnJlbnQsW2wsZl09by51c2VTdGF0ZSh7YWN0aW9uOnUuYWN0aW9uLGxvY2F0aW9uOnUubG9jYXRpb259KSx7djdfc3RhcnRUcmFuc2l0aW9uOmR9PXN8fHt9LHA9by51c2VDYWxsYmFjaygoZT0+e2QmJkQ/RCgoKCk9PmYoZSkpKTpmKGUpfSksW2YsZF0pO3JldHVybiBvLnVzZUxheW91dEVmZmVjdCgoKCk9PnUubGlzdGVuKHApKSxbdSxwXSksby5jcmVhdGVFbGVtZW50KHose2Jhc2VuYW1lOnQsY2hpbGRyZW46bixsb2NhdGlvbjpsLmxvY2F0aW9uLG5hdmlnYXRpb25UeXBlOmwuYWN0aW9uLG5hdmlnYXRvcjp1LGZ1dHVyZTpzfSl9LGUuTmF2aWdhdGU9ZnVuY3Rpb24oZSl7bGV0e3RvOnQscmVwbGFjZTpuLHN0YXRlOmkscmVsYXRpdmU6YX09ZTtwKCl8fHIuVU5TQUZFX2ludmFyaWFudCghMSk7bGV0e2Z1dHVyZTpzLHN0YXRpYzpjfT1vLnVzZUNvbnRleHQodSkse21hdGNoZXM6bH09by51c2VDb250ZXh0KGYpLHtwYXRobmFtZTpkfT1fKCksaD1tKCkseT1yLnJlc29sdmVUbyh0LHIuVU5TQUZFX2dldFJlc29sdmVUb01hdGNoZXMobCxzLnY3X3JlbGF0aXZlU3BsYXRQYXRoKSxkLCJwYXRoIj09PWEpLGc9SlNPTi5zdHJpbmdpZnkoeSk7cmV0dXJuIG8udXNlRWZmZWN0KCgoKT0+aChKU09OLnBhcnNlKGcpLHtyZXBsYWNlOm4sc3RhdGU6aSxyZWxhdGl2ZTphfSkpLFtoLGcsYSxuLGldKSxudWxsfSxlLk91dGxldD1mdW5jdGlvbihlKXtyZXR1cm4gZyhlLmNvbnRleHQpfSxlLlJvdXRlPVUsZS5Sb3V0ZXI9eixlLlJvdXRlclByb3ZpZGVyPWZ1bmN0aW9uKGUpe2xldHtmYWxsYmFja0VsZW1lbnQ6dCxyb3V0ZXI6cixmdXR1cmU6bn09ZSxbaSxjXT1vLnVzZVN0YXRlKHIuc3RhdGUpLHt2N19zdGFydFRyYW5zaXRpb246dX09bnx8e30sbD1vLnVzZUNhbGxiYWNrKChlPT57dSYmRD9EKCgoKT0+YyhlKSkpOmMoZSl9KSxbYyx1XSk7by51c2VMYXlvdXRFZmZlY3QoKCgpPT5yLnN1YnNjcmliZShsKSksW3IsbF0pLG8udXNlRWZmZWN0KCgoKT0+e30pLFtdKTtsZXQgZj1vLnVzZU1lbW8oKCgpPT4oe2NyZWF0ZUhyZWY6ci5jcmVhdGVIcmVmLGVuY29kZUxvY2F0aW9uOnIuZW5jb2RlTG9jYXRpb24sZ286ZT0+ci5uYXZpZ2F0ZShlKSxwdXNoOihlLHQsbik9PnIubmF2aWdhdGUoZSx7c3RhdGU6dCxwcmV2ZW50U2Nyb2xsUmVzZXQ6bnVsbD09bj92b2lkIDA6bi5wcmV2ZW50U2Nyb2xsUmVzZXR9KSxyZXBsYWNlOihlLHQsbik9PnIubmF2aWdhdGUoZSx7cmVwbGFjZTohMCxzdGF0ZTp0LHByZXZlbnRTY3JvbGxSZXNldDpudWxsPT1uP3ZvaWQgMDpuLnByZXZlbnRTY3JvbGxSZXNldH0pfSkpLFtyXSksZD1yLmJhc2VuYW1lfHwiLyIscD1vLnVzZU1lbW8oKCgpPT4oe3JvdXRlcjpyLG5hdmlnYXRvcjpmLHN0YXRpYzohMSxiYXNlbmFtZTpkfSkpLFtyLGYsZF0pO3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoby5GcmFnbWVudCxudWxsLG8uY3JlYXRlRWxlbWVudChhLlByb3ZpZGVyLHt2YWx1ZTpwfSxvLmNyZWF0ZUVsZW1lbnQocy5Qcm92aWRlcix7dmFsdWU6aX0sby5jcmVhdGVFbGVtZW50KHose2Jhc2VuYW1lOmQsbG9jYXRpb246aS5sb2NhdGlvbixuYXZpZ2F0aW9uVHlwZTppLmhpc3RvcnlBY3Rpb24sbmF2aWdhdG9yOmYsZnV0dXJlOnt2N19yZWxhdGl2ZVNwbGF0UGF0aDpyLmZ1dHVyZS52N19yZWxhdGl2ZVNwbGF0UGF0aH19LGkuaW5pdGlhbGl6ZWR8fHIuZnV0dXJlLnY3X3BhcnRpYWxIeWRyYXRpb24/by5jcmVhdGVFbGVtZW50KEwse3JvdXRlczpyLnJvdXRlcyxmdXR1cmU6ci5mdXR1cmUsc3RhdGU6aX0pOnQpKSksbnVsbCl9LGUuUm91dGVzPWZ1bmN0aW9uKGUpe2xldHtjaGlsZHJlbjp0LGxvY2F0aW9uOnJ9PWU7cmV0dXJuIGIoJCh0KSxyKX0sZS5VTlNBRkVfRGF0YVJvdXRlckNvbnRleHQ9YSxlLlVOU0FGRV9EYXRhUm91dGVyU3RhdGVDb250ZXh0PXMsZS5VTlNBRkVfTG9jYXRpb25Db250ZXh0PWwsZS5VTlNBRkVfTmF2aWdhdGlvbkNvbnRleHQ9dSxlLlVOU0FGRV9Sb3V0ZUNvbnRleHQ9ZixlLlVOU0FGRV9tYXBSb3V0ZVByb3BlcnRpZXM9cSxlLlVOU0FGRV91c2VSb3V0ZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIE8oVC5Vc2VSb3V0ZUlkKX0sZS5VTlNBRkVfdXNlUm91dGVzSW1wbD13LGUuY3JlYXRlTWVtb3J5Um91dGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuY3JlYXRlUm91dGVyKHtiYXNlbmFtZTpudWxsPT10P3ZvaWQgMDp0LmJhc2VuYW1lLGZ1dHVyZTppKHt9LG51bGw9PXQ/dm9pZCAwOnQuZnV0dXJlLHt2N19wcmVwZW5kQmFzZW5hbWU6ITB9KSxoaXN0b3J5OnIuY3JlYXRlTWVtb3J5SGlzdG9yeSh7aW5pdGlhbEVudHJpZXM6bnVsbD09dD92b2lkIDA6dC5pbml0aWFsRW50cmllcyxpbml0aWFsSW5kZXg6bnVsbD09dD92b2lkIDA6dC5pbml0aWFsSW5kZXh9KSxoeWRyYXRpb25EYXRhOm51bGw9PXQ/dm9pZCAwOnQuaHlkcmF0aW9uRGF0YSxyb3V0ZXM6ZSxtYXBSb3V0ZVByb3BlcnRpZXM6cSx1bnN0YWJsZV9kYXRhU3RyYXRlZ3k6bnVsbD09dD92b2lkIDA6dC51bnN0YWJsZV9kYXRhU3RyYXRlZ3ksdW5zdGFibGVfcGF0Y2hSb3V0ZXNPbk1pc3M6bnVsbD09dD92b2lkIDA6dC51bnN0YWJsZV9wYXRjaFJvdXRlc09uTWlzc30pLmluaXRpYWxpemUoKX0sZS5jcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW49JCxlLmNyZWF0ZVJvdXRlc0Zyb21FbGVtZW50cz0kLGUucmVuZGVyTWF0Y2hlcz1mdW5jdGlvbihlKXtyZXR1cm4gRShlKX0sZS51c2VBY3Rpb25EYXRhPWZ1bmN0aW9uKCl7bGV0IGU9UChULlVzZUFjdGlvbkRhdGEpLHQ9TyhULlVzZUxvYWRlckRhdGEpO3JldHVybiBlLmFjdGlvbkRhdGE/ZS5hY3Rpb25EYXRhW3RdOnZvaWQgMH0sZS51c2VBc3luY0Vycm9yPWZ1bmN0aW9uKCl7bGV0IGU9by51c2VDb250ZXh0KGMpO3JldHVybiBudWxsPT1lP3ZvaWQgMDplLl9lcnJvcn0sZS51c2VBc3luY1ZhbHVlPUYsZS51c2VCbG9ja2VyPWZ1bmN0aW9uKGUpe2xldHtyb3V0ZXI6dCxiYXNlbmFtZTpufT1SKEEuVXNlQmxvY2tlciksYT1QKFQuVXNlQmxvY2tlciksW3MsY109by51c2VTdGF0ZSgiIiksdT1vLnVzZUNhbGxiYWNrKCh0PT57aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuISFlO2lmKCIvIj09PW4pcmV0dXJuIGUodCk7bGV0e2N1cnJlbnRMb2NhdGlvbjpvLG5leHRMb2NhdGlvbjphLGhpc3RvcnlBY3Rpb246c309dDtyZXR1cm4gZSh7Y3VycmVudExvY2F0aW9uOmkoe30sbyx7cGF0aG5hbWU6ci5zdHJpcEJhc2VuYW1lKG8ucGF0aG5hbWUsbil8fG8ucGF0aG5hbWV9KSxuZXh0TG9jYXRpb246aSh7fSxhLHtwYXRobmFtZTpyLnN0cmlwQmFzZW5hbWUoYS5wYXRobmFtZSxuKXx8YS5wYXRobmFtZX0pLGhpc3RvcnlBY3Rpb246c30pfSksW24sZV0pO3JldHVybiBvLnVzZUVmZmVjdCgoKCk9PntsZXQgZT1TdHJpbmcoKytJKTtyZXR1cm4gYyhlKSwoKT0+dC5kZWxldGVCbG9ja2VyKGUpfSksW3RdKSxvLnVzZUVmZmVjdCgoKCk9PnsiIiE9PXMmJnQuZ2V0QmxvY2tlcihzLHUpfSksW3Qscyx1XSkscyYmYS5ibG9ja2Vycy5oYXMocyk/YS5ibG9ja2Vycy5nZXQocyk6ci5JRExFX0JMT0NLRVJ9LGUudXNlSHJlZj1mdW5jdGlvbihlLHQpe2xldHtyZWxhdGl2ZTpufT12b2lkIDA9PT10P3t9OnQ7cCgpfHxyLlVOU0FGRV9pbnZhcmlhbnQoITEpO2xldHtiYXNlbmFtZTppLG5hdmlnYXRvcjphfT1vLnVzZUNvbnRleHQodSkse2hhc2g6cyxwYXRobmFtZTpjLHNlYXJjaDpsfT12KGUse3JlbGF0aXZlOm59KSxmPWM7cmV0dXJuIi8iIT09aSYmKGY9Ii8iPT09Yz9pOnIuam9pblBhdGhzKFtpLGNdKSksYS5jcmVhdGVIcmVmKHtwYXRobmFtZTpmLHNlYXJjaDpsLGhhc2g6c30pfSxlLnVzZUluUm91dGVyQ29udGV4dD1wLGUudXNlTG9hZGVyRGF0YT1mdW5jdGlvbigpe2xldCBlPVAoVC5Vc2VMb2FkZXJEYXRhKSx0PU8oVC5Vc2VMb2FkZXJEYXRhKTtpZighZS5lcnJvcnN8fG51bGw9PWUuZXJyb3JzW3RdKXJldHVybiBlLmxvYWRlckRhdGFbdF07Y29uc29sZS5lcnJvcigiWW91IGNhbm5vdCBgdXNlTG9hZGVyRGF0YWAgaW4gYW4gZXJyb3JFbGVtZW50IChyb3V0ZUlkOiAiK3QrIikiKX0sZS51c2VMb2NhdGlvbj1fLGUudXNlTWF0Y2g9ZnVuY3Rpb24oZSl7cCgpfHxyLlVOU0FGRV9pbnZhcmlhbnQoITEpO2xldHtwYXRobmFtZTp0fT1fKCk7cmV0dXJuIG8udXNlTWVtbygoKCk9PnIubWF0Y2hQYXRoKGUsdCkpLFt0LGVdKX0sZS51c2VNYXRjaGVzPWZ1bmN0aW9uKCl7bGV0e21hdGNoZXM6ZSxsb2FkZXJEYXRhOnR9PVAoVC5Vc2VNYXRjaGVzKTtyZXR1cm4gby51c2VNZW1vKCgoKT0+ZS5tYXAoKGU9PnIuVU5TQUZFX2NvbnZlcnRSb3V0ZU1hdGNoVG9VaU1hdGNoKGUsdCkpKSksW2UsdF0pfSxlLnVzZU5hdmlnYXRlPW0sZS51c2VOYXZpZ2F0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIFAoVC5Vc2VOYXZpZ2F0aW9uKS5uYXZpZ2F0aW9ufSxlLnVzZU5hdmlnYXRpb25UeXBlPWZ1bmN0aW9uKCl7cmV0dXJuIG8udXNlQ29udGV4dChsKS5uYXZpZ2F0aW9uVHlwZX0sZS51c2VPdXRsZXQ9ZyxlLnVzZU91dGxldENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gby51c2VDb250ZXh0KHkpfSxlLnVzZVBhcmFtcz1mdW5jdGlvbigpe2xldHttYXRjaGVzOmV9PW8udXNlQ29udGV4dChmKSx0PWVbZS5sZW5ndGgtMV07cmV0dXJuIHQ/dC5wYXJhbXM6e319LGUudXNlUmVzb2x2ZWRQYXRoPXYsZS51c2VSZXZhbGlkYXRvcj1mdW5jdGlvbigpe2xldCBlPVIoQS5Vc2VSZXZhbGlkYXRvciksdD1QKFQuVXNlUmV2YWxpZGF0b3IpO3JldHVybiBvLnVzZU1lbW8oKCgpPT4oe3JldmFsaWRhdGU6ZS5yb3V0ZXIucmV2YWxpZGF0ZSxzdGF0ZTp0LnJldmFsaWRhdGlvbn0pKSxbZS5yb3V0ZXIucmV2YWxpZGF0ZSx0LnJldmFsaWRhdGlvbl0pfSxlLnVzZVJvdXRlRXJyb3I9TSxlLnVzZVJvdXRlTG9hZGVyRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gUChULlVzZVJvdXRlTG9hZGVyRGF0YSkubG9hZGVyRGF0YVtlXX0sZS51c2VSb3V0ZXM9YixPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KHQscig5NjU0MCkscig1OTQwKSl9LDI5Njk4OmZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciByPVN5bWJvbC5mb3IoInJlYWN0LnRyYW5zaXRpb25hbC5lbGVtZW50Iiksbj1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpO2Z1bmN0aW9uIG8oZSx0LG4pe3ZhciBvPW51bGw7aWYodm9pZCAwIT09biYmKG89IiIrbiksdm9pZCAwIT09dC5rZXkmJihvPSIiK3Qua2V5KSwia2V5ImluIHQpZm9yKHZhciBpIGluIG49e30sdCkia2V5IiE9PWkmJihuW2ldPXRbaV0pO2Vsc2Ugbj10O3JldHVybiB0PW4ucmVmLHskJHR5cGVvZjpyLHR5cGU6ZSxrZXk6byxyZWY6dm9pZCAwIT09dD90Om51bGwscHJvcHM6bn19dC5GcmFnbWVudD1uLHQuanN4PW8sdC5qc3hzPW99LDI5ODY5OmZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciByPVN5bWJvbC5mb3IoInJlYWN0LnRyYW5zaXRpb25hbC5lbGVtZW50Iiksbj1TeW1ib2wuZm9yKCJyZWFjdC5wb3J0YWwiKSxvPVN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50IiksaT1TeW1ib2wuZm9yKCJyZWFjdC5zdHJpY3RfbW9kZSIpLGE9U3ltYm9sLmZvcigicmVhY3QucHJvZmlsZXIiKSxzPVN5bWJvbC5mb3IoInJlYWN0LmNvbnN1bWVyIiksYz1TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0IiksdT1TeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpLGw9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKSxmPVN5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKSxkPVN5bWJvbC5mb3IoInJlYWN0LmxhenkiKSxwPVN5bWJvbC5mb3IoInJlYWN0LmFjdGl2aXR5IiksXz1TeW1ib2wuaXRlcmF0b3I7dmFyIGg9e2lzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiExfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbigpe319LG09T2JqZWN0LmFzc2lnbix5PXt9O2Z1bmN0aW9uIGcoZSx0LHIpe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9eSx0aGlzLnVwZGF0ZXI9cnx8aH1mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIGIoZSx0LHIpe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9eSx0aGlzLnVwZGF0ZXI9cnx8aH1nLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LGcucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9ZSl0aHJvdyBFcnJvcigidGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuIik7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUsdCwic2V0U3RhdGUiKX0sZy5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLGUsImZvcmNlVXBkYXRlIil9LHYucHJvdG90eXBlPWcucHJvdG90eXBlO3ZhciB3PWIucHJvdG90eXBlPW5ldyB2O3cuY29uc3RydWN0b3I9YixtKHcsZy5wcm90b3R5cGUpLHcuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIFM9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiBrKCl7fXZhciB4PXtIOm51bGwsQTpudWxsLFQ6bnVsbCxTOm51bGx9LEU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBBKGUsdCxuKXt2YXIgbz1uLnJlZjtyZXR1cm57JCR0eXBlb2Y6cix0eXBlOmUsa2V5OnQscmVmOnZvaWQgMCE9PW8/bzpudWxsLHByb3BzOm59fWZ1bmN0aW9uIFQoZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PXJ9dmFyIFI9L1wvKy9nO2Z1bmN0aW9uIFAoZSx0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZudWxsIT1lLmtleT8ocj0iIitlLmtleSxuPXsiPSI6Ij0wIiwiOiI6Ij0yIn0sIiQiK3IucmVwbGFjZSgvWz06XS9nLChmdW5jdGlvbihlKXtyZXR1cm4gbltlXX0pKSk6dC50b1N0cmluZygzNik7dmFyIHIsbn1mdW5jdGlvbiBPKGUsdCxvLGksYSl7dmFyIHM9dHlwZW9mIGU7InVuZGVmaW5lZCIhPT1zJiYiYm9vbGVhbiIhPT1zfHwoZT1udWxsKTt2YXIgYyx1LGw9ITE7aWYobnVsbD09PWUpbD0hMDtlbHNlIHN3aXRjaChzKXtjYXNlImJpZ2ludCI6Y2FzZSJzdHJpbmciOmNhc2UibnVtYmVyIjpsPSEwO2JyZWFrO2Nhc2Uib2JqZWN0Ijpzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSByOmNhc2UgbjpsPSEwO2JyZWFrO2Nhc2UgZDpyZXR1cm4gTygobD1lLl9pbml0KShlLl9wYXlsb2FkKSx0LG8saSxhKX19aWYobClyZXR1cm4gYT1hKGUpLGw9IiI9PT1pPyIuIitQKGUsMCk6aSxTKGEpPyhvPSIiLG51bGwhPWwmJihvPWwucmVwbGFjZShSLCIkJi8iKSsiLyIpLE8oYSx0LG8sIiIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpKTpudWxsIT1hJiYoVChhKSYmKGM9YSx1PW8rKG51bGw9PWEua2V5fHxlJiZlLmtleT09PWEua2V5PyIiOigiIithLmtleSkucmVwbGFjZShSLCIkJi8iKSsiLyIpK2wsYT1BKGMudHlwZSx1LGMucHJvcHMpKSx0LnB1c2goYSkpLDE7bD0wO3ZhciBmLHA9IiI9PT1pPyIuIjppKyI6IjtpZihTKGUpKWZvcih2YXIgaD0wO2g8ZS5sZW5ndGg7aCsrKWwrPU8oaT1lW2hdLHQsbyxzPXArUChpLGgpLGEpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mKGg9bnVsbD09PShmPWUpfHwib2JqZWN0IiE9dHlwZW9mIGY/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YoZj1fJiZmW19dfHxmWyJAQGl0ZXJhdG9yIl0pP2Y6bnVsbCkpZm9yKGU9aC5jYWxsKGUpLGg9MDshKGk9ZS5uZXh0KCkpLmRvbmU7KWwrPU8oaT1pLnZhbHVlLHQsbyxzPXArUChpLGgrKyksYSk7ZWxzZSBpZigib2JqZWN0Ij09PXMpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnRoZW4pcmV0dXJuIE8oZnVuY3Rpb24oZSl7c3dpdGNoKGUuc3RhdHVzKXtjYXNlImZ1bGZpbGxlZCI6cmV0dXJuIGUudmFsdWU7Y2FzZSJyZWplY3RlZCI6dGhyb3cgZS5yZWFzb247ZGVmYXVsdDpzd2l0Y2goInN0cmluZyI9PXR5cGVvZiBlLnN0YXR1cz9lLnRoZW4oayxrKTooZS5zdGF0dXM9InBlbmRpbmciLGUudGhlbigoZnVuY3Rpb24odCl7InBlbmRpbmciPT09ZS5zdGF0dXMmJihlLnN0YXR1cz0iZnVsZmlsbGVkIixlLnZhbHVlPXQpfSksKGZ1bmN0aW9uKHQpeyJwZW5kaW5nIj09PWUuc3RhdHVzJiYoZS5zdGF0dXM9InJlamVjdGVkIixlLnJlYXNvbj10KX0pKSksZS5zdGF0dXMpe2Nhc2UiZnVsZmlsbGVkIjpyZXR1cm4gZS52YWx1ZTtjYXNlInJlamVjdGVkIjp0aHJvdyBlLnJlYXNvbn19dGhyb3cgZX0oZSksdCxvLGksYSk7dGhyb3cgdD1TdHJpbmcoZSksRXJyb3IoIk9iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogIisoIltvYmplY3QgT2JqZWN0XSI9PT10PyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOnQpKyIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuIil9cmV0dXJuIGx9ZnVuY3Rpb24gTShlLHQscil7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgbj1bXSxvPTA7cmV0dXJuIE8oZSxuLCIiLCIiLChmdW5jdGlvbihlKXtyZXR1cm4gdC5jYWxsKHIsZSxvKyspfSkpLG59ZnVuY3Rpb24gRihlKXtpZigtMT09PWUuX3N0YXR1cyl7dmFyIHQ9ZS5fcmVzdWx0Oyh0PXQoKSkudGhlbigoZnVuY3Rpb24odCl7MCE9PWUuX3N0YXR1cyYmLTEhPT1lLl9zdGF0dXN8fChlLl9zdGF0dXM9MSxlLl9yZXN1bHQ9dCl9KSwoZnVuY3Rpb24odCl7MCE9PWUuX3N0YXR1cyYmLTEhPT1lLl9zdGF0dXN8fChlLl9zdGF0dXM9MixlLl9yZXN1bHQ9dCl9KSksLTE9PT1lLl9zdGF0dXMmJihlLl9zdGF0dXM9MCxlLl9yZXN1bHQ9dCl9aWYoMT09PWUuX3N0YXR1cylyZXR1cm4gZS5fcmVzdWx0LmRlZmF1bHQ7dGhyb3cgZS5fcmVzdWx0fXZhciBJPSJmdW5jdGlvbiI9PXR5cGVvZiByZXBvcnRFcnJvcj9yZXBvcnRFcnJvcjpmdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5FcnJvckV2ZW50KXt2YXIgdD1uZXcgd2luZG93LkVycm9yRXZlbnQoImVycm9yIix7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLG1lc3NhZ2U6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmInN0cmluZyI9PXR5cGVvZiBlLm1lc3NhZ2U/U3RyaW5nKGUubWVzc2FnZSk6U3RyaW5nKGUpLGVycm9yOmV9KTtpZighd2luZG93LmRpc3BhdGNoRXZlbnQodCkpcmV0dXJufWVsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBwcm9jZXNzJiYiZnVuY3Rpb24iPT10eXBlb2YgcHJvY2Vzcy5lbWl0KXJldHVybiB2b2lkIHByb2Nlc3MuZW1pdCgidW5jYXVnaHRFeGNlcHRpb24iLGUpO2NvbnNvbGUuZXJyb3IoZSl9LGo9e21hcDpNLGZvckVhY2g6ZnVuY3Rpb24oZSx0LHIpe00oZSwoZnVuY3Rpb24oKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHIpfSxjb3VudDpmdW5jdGlvbihlKXt2YXIgdD0wO3JldHVybiBNKGUsKGZ1bmN0aW9uKCl7dCsrfSkpLHR9LHRvQXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIE0oZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSl8fFtdfSxvbmx5OmZ1bmN0aW9uKGUpe2lmKCFUKGUpKXRocm93IEVycm9yKCJSZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBjaGlsZC4iKTtyZXR1cm4gZX19O3QuQWN0aXZpdHk9cCx0LkNoaWxkcmVuPWosdC5Db21wb25lbnQ9Zyx0LkZyYWdtZW50PW8sdC5Qcm9maWxlcj1hLHQuUHVyZUNvbXBvbmVudD1iLHQuU3RyaWN0TW9kZT1pLHQuU3VzcGVuc2U9bCx0Ll9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERT14LHQuX19DT01QSUxFUl9SVU5USU1FPXtfX3Byb3RvX186bnVsbCxjOmZ1bmN0aW9uKGUpe3JldHVybiB4LkgudXNlTWVtb0NhY2hlKGUpfX0sdC5jYWNoZT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShudWxsLGFyZ3VtZW50cyl9fSx0LmNhY2hlU2lnbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHQuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUsdCxyKXtpZihudWxsPT1lKXRocm93IEVycm9yKCJUaGUgYXJndW1lbnQgbXVzdCBiZSBhIFJlYWN0IGVsZW1lbnQsIGJ1dCB5b3UgcGFzc2VkICIrZSsiLiIpO3ZhciBuPW0oe30sZS5wcm9wcyksbz1lLmtleTtpZihudWxsIT10KWZvcihpIGluIHZvaWQgMCE9PXQua2V5JiYobz0iIit0LmtleSksdCkhRS5jYWxsKHQsaSl8fCJrZXkiPT09aXx8Il9fc2VsZiI9PT1pfHwiX19zb3VyY2UiPT09aXx8InJlZiI9PT1pJiZ2b2lkIDA9PT10LnJlZnx8KG5baV09dFtpXSk7dmFyIGk9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1pKW4uY2hpbGRyZW49cjtlbHNlIGlmKDE8aSl7Zm9yKHZhciBhPUFycmF5KGkpLHM9MDtzPGk7cysrKWFbc109YXJndW1lbnRzW3MrMl07bi5jaGlsZHJlbj1hfXJldHVybiBBKGUudHlwZSxvLG4pfSx0LmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9eyQkdHlwZW9mOmMsX2N1cnJlbnRWYWx1ZTplLF9jdXJyZW50VmFsdWUyOmUsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsfSkuUHJvdmlkZXI9ZSxlLkNvbnN1bWVyPXskJHR5cGVvZjpzLF9jb250ZXh0OmV9LGV9LHQuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLHQscil7dmFyIG4sbz17fSxpPW51bGw7aWYobnVsbCE9dClmb3IobiBpbiB2b2lkIDAhPT10LmtleSYmKGk9IiIrdC5rZXkpLHQpRS5jYWxsKHQsbikmJiJrZXkiIT09biYmIl9fc2VsZiIhPT1uJiYiX19zb3VyY2UiIT09biYmKG9bbl09dFtuXSk7dmFyIGE9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1hKW8uY2hpbGRyZW49cjtlbHNlIGlmKDE8YSl7Zm9yKHZhciBzPUFycmF5KGEpLGM9MDtjPGE7YysrKXNbY109YXJndW1lbnRzW2MrMl07by5jaGlsZHJlbj1zfWlmKGUmJmUuZGVmYXVsdFByb3BzKWZvcihuIGluIGE9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09b1tuXSYmKG9bbl09YVtuXSk7cmV0dXJuIEEoZSxpLG8pfSx0LmNyZWF0ZVJlZj1mdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fSx0LmZvcndhcmRSZWY9ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOnUscmVuZGVyOmV9fSx0LmlzVmFsaWRFbGVtZW50PVQsdC5sYXp5PWZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpkLF9wYXlsb2FkOntfc3RhdHVzOi0xLF9yZXN1bHQ6ZX0sX2luaXQ6Rn19LHQubWVtbz1mdW5jdGlvbihlLHQpe3JldHVybnskJHR5cGVvZjpmLHR5cGU6ZSxjb21wYXJlOnZvaWQgMD09PXQ/bnVsbDp0fX0sdC5zdGFydFRyYW5zaXRpb249ZnVuY3Rpb24oZSl7dmFyIHQ9eC5ULHI9e307eC5UPXI7dHJ5e3ZhciBuPWUoKSxvPXguUztudWxsIT09byYmbyhyLG4pLCJvYmplY3QiPT10eXBlb2YgbiYmbnVsbCE9PW4mJiJmdW5jdGlvbiI9PXR5cGVvZiBuLnRoZW4mJm4udGhlbihrLEkpfWNhdGNoKGUpe0koZSl9ZmluYWxseXtudWxsIT09dCYmbnVsbCE9PXIudHlwZXMmJih0LnR5cGVzPXIudHlwZXMpLHguVD10fX0sdC51bnN0YWJsZV91c2VDYWNoZVJlZnJlc2g9ZnVuY3Rpb24oKXtyZXR1cm4geC5ILnVzZUNhY2hlUmVmcmVzaCgpfSx0LnVzZT1mdW5jdGlvbihlKXtyZXR1cm4geC5ILnVzZShlKX0sdC51c2VBY3Rpb25TdGF0ZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHguSC51c2VBY3Rpb25TdGF0ZShlLHQscil9LHQudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0KXtyZXR1cm4geC5ILnVzZUNhbGxiYWNrKGUsdCl9LHQudXNlQ29udGV4dD1mdW5jdGlvbihlKXtyZXR1cm4geC5ILnVzZUNvbnRleHQoZSl9LHQudXNlRGVidWdWYWx1ZT1mdW5jdGlvbigpe30sdC51c2VEZWZlcnJlZFZhbHVlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHguSC51c2VEZWZlcnJlZFZhbHVlKGUsdCl9LHQudXNlRWZmZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHguSC51c2VFZmZlY3QoZSx0KX0sdC51c2VFZmZlY3RFdmVudD1mdW5jdGlvbihlKXtyZXR1cm4geC5ILnVzZUVmZmVjdEV2ZW50KGUpfSx0LnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIHguSC51c2VJZCgpfSx0LnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4LkgudXNlSW1wZXJhdGl2ZUhhbmRsZShlLHQscil9LHQudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHguSC51c2VJbnNlcnRpb25FZmZlY3QoZSx0KX0sdC51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4geC5ILnVzZUxheW91dEVmZmVjdChlLHQpfSx0LnVzZU1lbW89ZnVuY3Rpb24oZSx0KXtyZXR1cm4geC5ILnVzZU1lbW8oZSx0KX0sdC51c2VPcHRpbWlzdGljPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHguSC51c2VPcHRpbWlzdGljKGUsdCl9LHQudXNlUmVkdWNlcj1mdW5jdGlvbihlLHQscil7cmV0dXJuIHguSC51c2VSZWR1Y2VyKGUsdCxyKX0sdC51c2VSZWY9ZnVuY3Rpb24oZSl7cmV0dXJuIHguSC51c2VSZWYoZSl9LHQudXNlU3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHguSC51c2VTdGF0ZShlKX0sdC51c2VTeW5jRXh0ZXJuYWxTdG9yZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHguSC51c2VTeW5jRXh0ZXJuYWxTdG9yZShlLHQscil9LHQudXNlVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiB4LkgudXNlVHJhbnNpdGlvbigpfSx0LnZlcnNpb249IjE5LjIuNyJ9LDk2NTQwOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXIoMjk4NjkpfSw3NDg0ODpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1yKDI5Njk4KX0sNzQ1MjpmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXsidXNlIHN0cmljdCI7dmFyIHQscj1PYmplY3QucHJvdG90eXBlLG49ci5oYXNPd25Qcm9wZXJ0eSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24oZSx0LHIpe2VbdF09ci52YWx1ZX0saT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxhPWkuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixzPWkuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsYz1pLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gdShlLHQscil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxlW3RdfXRyeXt1KHt9LCIiKX1jYXRjaChlKXt1PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yfX1mdW5jdGlvbiBsKGUsdCxyLG4pe3ZhciBpPXQmJnQucHJvdG90eXBlIGluc3RhbmNlb2YgeT90OnksYT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxzPW5ldyBPKG58fFtdKTtyZXR1cm4gbyhhLCJfaW52b2tlIix7dmFsdWU6QShlLHIscyl9KSxhfWZ1bmN0aW9uIGYoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9bDt2YXIgZD0ic3VzcGVuZGVkU3RhcnQiLHA9InN1c3BlbmRlZFlpZWxkIixfPSJleGVjdXRpbmciLGg9ImNvbXBsZXRlZCIsbT17fTtmdW5jdGlvbiB5KCl7fWZ1bmN0aW9uIGcoKXt9ZnVuY3Rpb24gdigpe312YXIgYj17fTt1KGIsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgdz1PYmplY3QuZ2V0UHJvdG90eXBlT2YsUz13JiZ3KHcoTShbXSkpKTtTJiZTIT09ciYmbi5jYWxsKFMsYSkmJihiPVMpO3ZhciBrPXYucHJvdG90eXBlPXkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYik7ZnVuY3Rpb24geChlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3UoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gRShlLHQpe2Z1bmN0aW9uIHIobyxpLGEscyl7dmFyIGM9ZihlW29dLGUsaSk7aWYoInRocm93IiE9PWMudHlwZSl7dmFyIHU9Yy5hcmcsbD11LnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09dHlwZW9mIGwmJm4uY2FsbChsLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7cigibmV4dCIsZSxhLHMpfSksKGZ1bmN0aW9uKGUpe3IoInRocm93IixlLGEscyl9KSk6dC5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKGUpe3UudmFsdWU9ZSxhKHUpfSksKGZ1bmN0aW9uKGUpe3JldHVybiByKCJ0aHJvdyIsZSxhLHMpfSkpfXMoYy5hcmcpfXZhciBpO28odGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgdCgoZnVuY3Rpb24odCxvKXtyKGUsbix0LG8pfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX0pfWZ1bmN0aW9uIEEoZSxyLG4pe3ZhciBvPWQ7cmV0dXJuIGZ1bmN0aW9uKGksYSl7aWYobz09PV8pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobz09PWgpe2lmKCJ0aHJvdyI9PT1pKXRocm93IGE7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19Zm9yKG4ubWV0aG9kPWksbi5hcmc9YTs7KXt2YXIgcz1uLmRlbGVnYXRlO2lmKHMpe3ZhciBjPVQocyxuKTtpZihjKXtpZihjPT09bSljb250aW51ZTtyZXR1cm4gY319aWYoIm5leHQiPT09bi5tZXRob2Qpbi5zZW50PW4uX3NlbnQ9bi5hcmc7ZWxzZSBpZigidGhyb3ciPT09bi5tZXRob2Qpe2lmKG89PT1kKXRocm93IG89aCxuLmFyZztuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKX1lbHNlInJldHVybiI9PT1uLm1ldGhvZCYmbi5hYnJ1cHQoInJldHVybiIsbi5hcmcpO289Xzt2YXIgdT1mKGUscixuKTtpZigibm9ybWFsIj09PXUudHlwZSl7aWYobz1uLmRvbmU/aDpwLHUuYXJnPT09bSljb250aW51ZTtyZXR1cm57dmFsdWU6dS5hcmcsZG9uZTpuLmRvbmV9fSJ0aHJvdyI9PT11LnR5cGUmJihvPWgsbi5tZXRob2Q9InRocm93IixuLmFyZz11LmFyZyl9fX1mdW5jdGlvbiBUKGUscil7dmFyIG49ci5tZXRob2Qsbz1lLml0ZXJhdG9yW25dO2lmKG89PT10KXJldHVybiByLmRlbGVnYXRlPW51bGwsInRocm93Ij09PW4mJmUuaXRlcmF0b3IucmV0dXJuJiYoci5tZXRob2Q9InJldHVybiIsci5hcmc9dCxUKGUsciksInRocm93Ij09PXIubWV0aG9kKXx8InJldHVybiIhPT1uJiYoci5tZXRob2Q9InRocm93IixyLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK24rIicgbWV0aG9kIikpLG07dmFyIGk9ZihvLGUuaXRlcmF0b3Isci5hcmcpO2lmKCJ0aHJvdyI9PT1pLnR5cGUpcmV0dXJuIHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9aS5hcmcsci5kZWxlZ2F0ZT1udWxsLG07dmFyIGE9aS5hcmc7cmV0dXJuIGE/YS5kb25lPyhyW2UucmVzdWx0TmFtZV09YS52YWx1ZSxyLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09ci5tZXRob2QmJihyLm1ldGhvZD0ibmV4dCIsci5hcmc9dCksci5kZWxlZ2F0ZT1udWxsLG0pOmE6KHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxyLmRlbGVnYXRlPW51bGwsbSl9ZnVuY3Rpb24gUihlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBQKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPSJub3JtYWwiLGRlbGV0ZSB0LmFyZyxlLmNvbXBsZXRpb249dH1mdW5jdGlvbiBPKGUpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxlLmZvckVhY2goUix0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBNKGUpe2lmKG51bGwhPWUpe3ZhciByPWVbYV07aWYocilyZXR1cm4gci5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG89LTEsaT1mdW5jdGlvbiByKCl7Zm9yKDsrK288ZS5sZW5ndGg7KWlmKG4uY2FsbChlLG8pKXJldHVybiByLnZhbHVlPWVbb10sci5kb25lPSExLHI7cmV0dXJuIHIudmFsdWU9dCxyLmRvbmU9ITAscn07cmV0dXJuIGkubmV4dD1pfX10aHJvdyBuZXcgVHlwZUVycm9yKHR5cGVvZiBlKyIgaXMgbm90IGl0ZXJhYmxlIil9cmV0dXJuIGcucHJvdG90eXBlPXYsbyhrLCJjb25zdHJ1Y3RvciIse3ZhbHVlOnYsY29uZmlndXJhYmxlOiEwfSksbyh2LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmcsY29uZmlndXJhYmxlOiEwfSksZy5kaXNwbGF5TmFtZT11KHYsYywiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3I7cmV0dXJuISF0JiYodD09PWd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0odC5kaXNwbGF5TmFtZXx8dC5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHYpOihlLl9fcHJvdG9fXz12LHUoZSxjLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGspLGV9LGUuYXdyYXA9ZnVuY3Rpb24oZSl7cmV0dXJue19fYXdhaXQ6ZX19LHgoRS5wcm90b3R5cGUpLHUoRS5wcm90b3R5cGUscywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9RSxlLmFzeW5jPWZ1bmN0aW9uKHQscixuLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEUobCh0LHIsbixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZT9lLnZhbHVlOmEubmV4dCgpfSkpfSx4KGspLHUoayxjLCJHZW5lcmF0b3IiKSx1KGssYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSx1KGssInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0KGUpLHI9W107Zm9yKHZhciBuIGluIHQpci5wdXNoKG4pO3JldHVybiByLnJldmVyc2UoKSxmdW5jdGlvbiBlKCl7Zm9yKDtyLmxlbmd0aDspe3ZhciBuPXIucG9wKCk7aWYobiBpbiB0KXJldHVybiBlLnZhbHVlPW4sZS5kb25lPSExLGV9cmV0dXJuIGUuZG9uZT0hMCxlfX0sZS52YWx1ZXM9TSxPLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TyxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goUCksIWUpZm9yKHZhciByIGluIHRoaXMpInQiPT09ci5jaGFyQXQoMCkmJm4uY2FsbCh0aGlzLHIpJiYhaXNOYU4oK3Iuc2xpY2UoMSkpJiYodGhpc1tyXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgZT10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciByPXRoaXM7ZnVuY3Rpb24gbyhuLG8pe3JldHVybiBzLnR5cGU9InRocm93IixzLmFyZz1lLHIubmV4dD1uLG8mJihyLm1ldGhvZD0ibmV4dCIsci5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSxzPWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbygiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIGM9bi5jYWxsKGEsImNhdGNoTG9jIiksdT1uLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKGMmJnUpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX1lbHNlIGlmKGMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBvKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIXUpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG8oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtyPj0wOy0tcil7dmFyIG89dGhpcy50cnlFbnRyaWVzW3JdO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJm4uY2FsbChvLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxvLmZpbmFsbHlMb2Mpe3ZhciBpPW87YnJlYWt9fWkmJigiYnJlYWsiPT09ZXx8ImNvbnRpbnVlIj09PWUpJiZpLnRyeUxvYzw9dCYmdDw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPWUsYS5hcmc9dCxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxtKTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuImJyZWFrIj09PWUudHlwZXx8ImNvbnRpbnVlIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6InJldHVybiI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLG19LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksUChyKSxtfX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIudHJ5TG9jPT09ZSl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBvPW4uYXJnO1Aocil9cmV0dXJuIG99fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpNKGUpLHJlc3VsdE5hbWU6cixuZXh0TG9jOm59LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCksbX19LGV9KGUuZXhwb3J0cyk7dHJ5e3JlZ2VuZXJhdG9yUnVudGltZT10fWNhdGNoKGUpeyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzLnJlZ2VuZXJhdG9yUnVudGltZT10OkZ1bmN0aW9uKCJyIiwicmVnZW5lcmF0b3JSdW50aW1lID0gciIpKHQpfX0sMTA2NjE6ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuY3JlYXRlQ2FjaGVLZXlDb21wYXJhdG9yPW8sdC5kZWZhdWx0RXF1YWxpdHlDaGVjaz12b2lkIDAsdC5kZWZhdWx0TWVtb2l6ZT1mdW5jdGlvbihlLHQpe3ZhciBpPSJvYmplY3QiPT10eXBlb2YgdD90OntlcXVhbGl0eUNoZWNrOnR9LGE9aS5lcXVhbGl0eUNoZWNrLHM9dm9pZCAwPT09YT9uOmEsYz1pLm1heFNpemUsdT12b2lkIDA9PT1jPzE6YyxsPWkucmVzdWx0RXF1YWxpdHlDaGVjayxmPW8ocyksZD0xPT09dT8ocD1mLHtnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIF8mJnAoXy5rZXksZSk/Xy52YWx1ZTpyfSxwdXQ6ZnVuY3Rpb24oZSx0KXtfPXtrZXk6ZSx2YWx1ZTp0fX0sZ2V0RW50cmllczpmdW5jdGlvbigpe3JldHVybiBfP1tfXTpbXX0sY2xlYXI6ZnVuY3Rpb24oKXtfPXZvaWQgMH19KTpmdW5jdGlvbihlLHQpe3ZhciBuPVtdO2Z1bmN0aW9uIG8oZSl7dmFyIG89bi5maW5kSW5kZXgoKGZ1bmN0aW9uKHIpe3JldHVybiB0KGUsci5rZXkpfSkpO2lmKG8+LTEpe3ZhciBpPW5bb107cmV0dXJuIG8+MCYmKG4uc3BsaWNlKG8sMSksbi51bnNoaWZ0KGkpKSxpLnZhbHVlfXJldHVybiByfWZ1bmN0aW9uIGkodCxpKXtvKHQpPT09ciYmKG4udW5zaGlmdCh7a2V5OnQsdmFsdWU6aX0pLG4ubGVuZ3RoPmUmJm4ucG9wKCkpfWZ1bmN0aW9uIGEoKXtyZXR1cm4gbn1mdW5jdGlvbiBzKCl7bj1bXX1yZXR1cm57Z2V0Om8scHV0OmksZ2V0RW50cmllczphLGNsZWFyOnN9fSh1LGYpO3ZhciBwLF87ZnVuY3Rpb24gaCgpe3ZhciB0PWQuZ2V0KGFyZ3VtZW50cyk7aWYodD09PXIpe2lmKHQ9ZS5hcHBseShudWxsLGFyZ3VtZW50cyksbCl7dmFyIG49ZC5nZXRFbnRyaWVzKCkuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGwoZS52YWx1ZSx0KX0pKTtuJiYodD1uLnZhbHVlKX1kLnB1dChhcmd1bWVudHMsdCl9cmV0dXJuIHR9cmV0dXJuIGguY2xlYXJDYWNoZT1mdW5jdGlvbigpe3JldHVybiBkLmNsZWFyKCl9LGh9O3ZhciByPSJOT1RfRk9VTkQiO3ZhciBuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10fTtmdW5jdGlvbiBvKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe2lmKG51bGw9PT10fHxudWxsPT09cnx8dC5sZW5ndGghPT1yLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49dC5sZW5ndGgsbz0wO288bjtvKyspaWYoIWUodFtvXSxyW29dKSlyZXR1cm4hMTtyZXR1cm4hMH19dC5kZWZhdWx0RXF1YWxpdHlDaGVjaz1ufSw5NzEzMjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3QuTXo9dm9pZCAwLHQuajg9dm9pZCAwO3ZhciBuPXIoMTA2NjEpO2Z1bmN0aW9uIG8oZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkodD4xP3QtMTowKSxuPTE7bjx0O24rKylyW24tMV09YXJndW1lbnRzW25dO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQpLG89MDtvPHQ7bysrKW5bb109YXJndW1lbnRzW29dO3ZhciBpLGE9MCxzPXttZW1vaXplT3B0aW9uczp2b2lkIDB9LGM9bi5wb3AoKTtpZigib2JqZWN0Ij09dHlwZW9mIGMmJihzPWMsYz1uLnBvcCgpKSwiZnVuY3Rpb24iIT10eXBlb2YgYyl0aHJvdyBuZXcgRXJyb3IoImNyZWF0ZVNlbGVjdG9yIGV4cGVjdHMgYW4gb3V0cHV0IGZ1bmN0aW9uIGFmdGVyIHRoZSBpbnB1dHMsIGJ1dCByZWNlaXZlZDogWyIrdHlwZW9mIGMrIl0iKTt2YXIgdT1zLm1lbW9pemVPcHRpb25zLGw9dm9pZCAwPT09dT9yOnUsZj1BcnJheS5pc0FycmF5KGwpP2w6W2xdLGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkuaXNBcnJheShlWzBdKT9lWzBdOmU7aWYoIXQuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlfSkpKXt2YXIgcj10Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/ImZ1bmN0aW9uICIrKGUubmFtZXx8InVubmFtZWQiKSsiKCkiOnR5cGVvZiBlfSkpLmpvaW4oIiwgIik7dGhyb3cgbmV3IEVycm9yKCJjcmVhdGVTZWxlY3RvciBleHBlY3RzIGFsbCBpbnB1dC1zZWxlY3RvcnMgdG8gYmUgZnVuY3Rpb25zLCBidXQgcmVjZWl2ZWQgdGhlIGZvbGxvd2luZyB0eXBlczogWyIrcisiXSIpfXJldHVybiB0fShuKSxwPWUuYXBwbHkodm9pZCAwLFtmdW5jdGlvbigpe3JldHVybiBhKyssYy5hcHBseShudWxsLGFyZ3VtZW50cyl9XS5jb25jYXQoZikpLF89ZSgoZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD1kLmxlbmd0aCxyPTA7cjx0O3IrKyllLnB1c2goZFtyXS5hcHBseShudWxsLGFyZ3VtZW50cykpO3JldHVybiBpPXAuYXBwbHkobnVsbCxlKX0pKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihfLHtyZXN1bHRGdW5jOmMsbWVtb2l6ZWRSZXN1bHRGdW5jOnAsZGVwZW5kZW5jaWVzOmQsbGFzdFJlc3VsdDpmdW5jdGlvbigpe3JldHVybiBpfSxyZWNvbXB1dGF0aW9uczpmdW5jdGlvbigpe3JldHVybiBhfSxyZXNldFJlY29tcHV0YXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIGE9MH19KSxffX12YXIgaT1vKG4uZGVmYXVsdE1lbW9pemUpO3QuTXo9aTt0Lmo4PWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dCYmKHQ9aSksIm9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiY3JlYXRlU3RydWN0dXJlZFNlbGVjdG9yIGV4cGVjdHMgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0IHdoZXJlIGVhY2ggcHJvcGVydHkgaXMgYSBzZWxlY3RvciwgaW5zdGVhZCByZWNlaXZlZCBhICIrdHlwZW9mIGUpO3ZhciByPU9iamVjdC5rZXlzKGUpLG49dChyLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KSksKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbihlLHQsbil7cmV0dXJuIGVbcltuXV09dCxlfSkse30pfSkpO3JldHVybiBufX0sNzU2MTc6ZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz1yKDU4MzAzKX0sNTgzMDM6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOTM5NjEpO3Qub3BlcmF0aW9uPWZ1bmN0aW9uKGUpe3ZhciByPXQudGltZW91dHMoZSk7cmV0dXJuIG5ldyBuKHIse2ZvcmV2ZXI6ZSYmKGUuZm9yZXZlcnx8ZS5yZXRyaWVzPT09MS8wKSx1bnJlZjplJiZlLnVucmVmLG1heFJldHJ5VGltZTplJiZlLm1heFJldHJ5VGltZX0pfSx0LnRpbWVvdXRzPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBBcnJheSlyZXR1cm5bXS5jb25jYXQoZSk7dmFyIHQ9e3JldHJpZXM6MTAsZmFjdG9yOjIsbWluVGltZW91dDoxZTMsbWF4VGltZW91dDoxLzAscmFuZG9taXplOiExfTtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl07aWYodC5taW5UaW1lb3V0PnQubWF4VGltZW91dCl0aHJvdyBuZXcgRXJyb3IoIm1pblRpbWVvdXQgaXMgZ3JlYXRlciB0aGFuIG1heFRpbWVvdXQiKTtmb3IodmFyIG49W10sbz0wO288dC5yZXRyaWVzO28rKyluLnB1c2godGhpcy5jcmVhdGVUaW1lb3V0KG8sdCkpO3JldHVybiBlJiZlLmZvcmV2ZXImJiFuLmxlbmd0aCYmbi5wdXNoKHRoaXMuY3JlYXRlVGltZW91dChvLHQpKSxuLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUtdH0pKSxufSx0LmNyZWF0ZVRpbWVvdXQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj10LnJhbmRvbWl6ZT9NYXRoLnJhbmRvbSgpKzE6MSxuPU1hdGgucm91bmQocipNYXRoLm1heCh0Lm1pblRpbWVvdXQsMSkqTWF0aC5wb3codC5mYWN0b3IsZSkpO3JldHVybiBuPU1hdGgubWluKG4sdC5tYXhUaW1lb3V0KX0sdC53cmFwPWZ1bmN0aW9uKGUscixuKXtpZihyIGluc3RhbmNlb2YgQXJyYXkmJihuPXIscj1udWxsKSwhbilmb3IodmFyIG8gaW4gbj1bXSxlKSJmdW5jdGlvbiI9PXR5cGVvZiBlW29dJiZuLnB1c2gobyk7Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciBhPW5baV0scz1lW2FdO2VbYV09ZnVuY3Rpb24obil7dmFyIG89dC5vcGVyYXRpb24ociksaT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksYT1pLnBvcCgpO2kucHVzaCgoZnVuY3Rpb24oZSl7by5yZXRyeShlKXx8KGUmJihhcmd1bWVudHNbMF09by5tYWluRXJyb3IoKSksYS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpLG8uYXR0ZW1wdCgoZnVuY3Rpb24oKXtuLmFwcGx5KGUsaSl9KSl9LmJpbmQoZSxzKSxlW2FdLm9wdGlvbnM9cn19fSw5Mzk2MTpmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7ImJvb2xlYW4iPT10eXBlb2YgdCYmKHQ9e2ZvcmV2ZXI6dH0pLHRoaXMuX29yaWdpbmFsVGltZW91dHM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlKSksdGhpcy5fdGltZW91dHM9ZSx0aGlzLl9vcHRpb25zPXR8fHt9LHRoaXMuX21heFJldHJ5VGltZT10JiZ0Lm1heFJldHJ5VGltZXx8MS8wLHRoaXMuX2ZuPW51bGwsdGhpcy5fZXJyb3JzPVtdLHRoaXMuX2F0dGVtcHRzPTEsdGhpcy5fb3BlcmF0aW9uVGltZW91dD1udWxsLHRoaXMuX29wZXJhdGlvblRpbWVvdXRDYj1udWxsLHRoaXMuX3RpbWVvdXQ9bnVsbCx0aGlzLl9vcGVyYXRpb25TdGFydD1udWxsLHRoaXMuX3RpbWVyPW51bGwsdGhpcy5fb3B0aW9ucy5mb3JldmVyJiYodGhpcy5fY2FjaGVkVGltZW91dHM9dGhpcy5fdGltZW91dHMuc2xpY2UoMCkpfWUuZXhwb3J0cz10LHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5fYXR0ZW1wdHM9MSx0aGlzLl90aW1lb3V0cz10aGlzLl9vcmlnaW5hbFRpbWVvdXRzLnNsaWNlKDApfSx0LnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5fdGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpLHRoaXMuX3RpbWVyJiZjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpLHRoaXMuX3RpbWVvdXRzPVtdLHRoaXMuX2NhY2hlZFRpbWVvdXRzPW51bGx9LHQucHJvdG90eXBlLnJldHJ5PWZ1bmN0aW9uKGUpe2lmKHRoaXMuX3RpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KSwhZSlyZXR1cm4hMTt2YXIgdD0obmV3IERhdGUpLmdldFRpbWUoKTtpZihlJiZ0LXRoaXMuX29wZXJhdGlvblN0YXJ0Pj10aGlzLl9tYXhSZXRyeVRpbWUpcmV0dXJuIHRoaXMuX2Vycm9ycy5wdXNoKGUpLHRoaXMuX2Vycm9ycy51bnNoaWZ0KG5ldyBFcnJvcigiUmV0cnlPcGVyYXRpb24gdGltZW91dCBvY2N1cnJlZCIpKSwhMTt0aGlzLl9lcnJvcnMucHVzaChlKTt2YXIgcj10aGlzLl90aW1lb3V0cy5zaGlmdCgpO2lmKHZvaWQgMD09PXIpe2lmKCF0aGlzLl9jYWNoZWRUaW1lb3V0cylyZXR1cm4hMTt0aGlzLl9lcnJvcnMuc3BsaWNlKDAsdGhpcy5fZXJyb3JzLmxlbmd0aC0xKSxyPXRoaXMuX2NhY2hlZFRpbWVvdXRzLnNsaWNlKC0xKX12YXIgbj10aGlzO3JldHVybiB0aGlzLl90aW1lcj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe24uX2F0dGVtcHRzKyssbi5fb3BlcmF0aW9uVGltZW91dENiJiYobi5fdGltZW91dD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe24uX29wZXJhdGlvblRpbWVvdXRDYihuLl9hdHRlbXB0cyl9KSxuLl9vcGVyYXRpb25UaW1lb3V0KSxuLl9vcHRpb25zLnVucmVmJiZuLl90aW1lb3V0LnVucmVmKCkpLG4uX2ZuKG4uX2F0dGVtcHRzKX0pLHIpLHRoaXMuX29wdGlvbnMudW5yZWYmJnRoaXMuX3RpbWVyLnVucmVmKCksITB9LHQucHJvdG90eXBlLmF0dGVtcHQ9ZnVuY3Rpb24oZSx0KXt0aGlzLl9mbj1lLHQmJih0LnRpbWVvdXQmJih0aGlzLl9vcGVyYXRpb25UaW1lb3V0PXQudGltZW91dCksdC5jYiYmKHRoaXMuX29wZXJhdGlvblRpbWVvdXRDYj10LmNiKSk7dmFyIHI9dGhpczt0aGlzLl9vcGVyYXRpb25UaW1lb3V0Q2ImJih0aGlzLl90aW1lb3V0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ci5fb3BlcmF0aW9uVGltZW91dENiKCl9KSxyLl9vcGVyYXRpb25UaW1lb3V0KSksdGhpcy5fb3BlcmF0aW9uU3RhcnQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksdGhpcy5fZm4odGhpcy5fYXR0ZW1wdHMpfSx0LnByb3RvdHlwZS50cnk9ZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coIlVzaW5nIFJldHJ5T3BlcmF0aW9uLnRyeSgpIGlzIGRlcHJlY2F0ZWQiKSx0aGlzLmF0dGVtcHQoZSl9LHQucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKCJVc2luZyBSZXRyeU9wZXJhdGlvbi5zdGFydCgpIGlzIGRlcHJlY2F0ZWQiKSx0aGlzLmF0dGVtcHQoZSl9LHQucHJvdG90eXBlLnN0YXJ0PXQucHJvdG90eXBlLnRyeSx0LnByb3RvdHlwZS5lcnJvcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXJyb3JzfSx0LnByb3RvdHlwZS5hdHRlbXB0cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdHRlbXB0c30sdC5wcm90b3R5cGUubWFpbkVycm9yPWZ1bmN0aW9uKCl7aWYoMD09PXRoaXMuX2Vycm9ycy5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKHZhciBlPXt9LHQ9bnVsbCxyPTAsbj0wO248dGhpcy5fZXJyb3JzLmxlbmd0aDtuKyspe3ZhciBvPXRoaXMuX2Vycm9yc1tuXSxpPW8ubWVzc2FnZSxhPShlW2ldfHwwKSsxO2VbaV09YSxhPj1yJiYodD1vLHI9YSl9cmV0dXJuIHR9fSw2NzA5ODpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuOyFmdW5jdGlvbigpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBvKXt2YXIgbz1mdW5jdGlvbihlKXtyZXR1cm4gZX07by5ub25OYXRpdmU9ITB9Y29uc3QgaT1vKCJwbGFpbnRleHQiKSxhPW8oImh0bWwiKSxzPW8oImNvbW1lbnQiKSxjPS88KFx3Kik+L2csdT0vPFwvPyhbXlxzXC8+XSspLztmdW5jdGlvbiBsKGUsdCxyKXtyZXR1cm4gZChlPWV8fCIiLGYodD10fHxbXSxyPXJ8fCIiKSl9ZnVuY3Rpb24gZihlLHQpe3JldHVybnthbGxvd2FibGVfdGFnczplPWZ1bmN0aW9uKGUpe2xldCB0PW5ldyBTZXQ7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtsZXQgcjtmb3IoO3I9Yy5leGVjKGUpOyl0LmFkZChyWzFdKX1lbHNlIG8ubm9uTmF0aXZlfHwiZnVuY3Rpb24iIT10eXBlb2YgZVtvLml0ZXJhdG9yXT8iZnVuY3Rpb24iPT10eXBlb2YgZS5mb3JFYWNoJiZlLmZvckVhY2godC5hZGQsdCk6dD1uZXcgU2V0KGUpO3JldHVybiB0fShlKSx0YWdfcmVwbGFjZW1lbnQ6dCxzdGF0ZTppLHRhZ19idWZmZXI6IiIsZGVwdGg6MCxpbl9xdW90ZV9jaGFyOiIifX1mdW5jdGlvbiBkKGUsdCl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIidodG1sJyBwYXJhbWV0ZXIgbXVzdCBiZSBhIHN0cmluZyIpO2xldCByPXQuYWxsb3dhYmxlX3RhZ3Msbj10LnRhZ19yZXBsYWNlbWVudCxvPXQuc3RhdGUsYz10LnRhZ19idWZmZXIsdT10LmRlcHRoLGw9dC5pbl9xdW90ZV9jaGFyLGY9IiI7Zm9yKGxldCB0PTAsZD1lLmxlbmd0aDt0PGQ7dCsrKXtsZXQgZD1lW3RdO2lmKG89PT1pKWlmKCI8Ij09PWQpbz1hLGMrPWQ7ZWxzZSBmKz1kO2Vsc2UgaWYobz09PWEpc3dpdGNoKGQpe2Nhc2UiPCI6aWYobClicmVhazt1Kys7YnJlYWs7Y2FzZSI+IjppZihsKWJyZWFrO2lmKHUpe3UtLTticmVha31sPSIiLG89aSxjKz0iPiIsci5oYXMocChjKSk/Zis9YzpmKz1uLGM9IiI7YnJlYWs7Y2FzZSciJzpjYXNlIiciOmw9ZD09PWw/IiI6bHx8ZCxjKz1kO2JyZWFrO2Nhc2UiLSI6IjwhLSI9PT1jJiYobz1zKSxjKz1kO2JyZWFrO2Nhc2UiICI6Y2FzZSJcbiI6aWYoIjwiPT09Yyl7bz1pLGYrPSI8ICIsYz0iIjticmVha31jKz1kO2JyZWFrO2RlZmF1bHQ6Yys9ZH1lbHNlIGlmKG89PT1zKWlmKCI+Ij09PWQpIi0tIj09Yy5zbGljZSgtMikmJihvPWkpLGM9IiI7ZWxzZSBjKz1kfXJldHVybiB0LnN0YXRlPW8sdC50YWdfYnVmZmVyPWMsdC5kZXB0aD11LHQuaW5fcXVvdGVfY2hhcj1sLGZ9ZnVuY3Rpb24gcChlKXtsZXQgdD11LmV4ZWMoZSk7cmV0dXJuIHQ/dFsxXS50b0xvd2VyQ2FzZSgpOm51bGx9bC5pbml0X3N0cmVhbWluZ19tb2RlPWZ1bmN0aW9uKGUsdCl7bGV0IHI9ZihlPWV8fFtdLHQ9dHx8IiIpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZChlfHwiIixyKX19LHZvaWQgMD09PShuPWZ1bmN0aW9uKCl7cmV0dXJuIGx9LmNhbGwodCxyLHQsZSkpfHwoZS5leHBvcnRzPW4pfSgpfSw4NTE2MDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoOTY1NDApO3ZhciBvPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10JiYoMCE9PWV8fDEvZT09MS90KXx8ZSE9ZSYmdCE9dH0saT1uLnVzZVN5bmNFeHRlcm5hbFN0b3JlLGE9bi51c2VSZWYscz1uLnVzZUVmZmVjdCxjPW4udXNlTWVtbyx1PW4udXNlRGVidWdWYWx1ZTt0LnVzZVN5bmNFeHRlcm5hbFN0b3JlV2l0aFNlbGVjdG9yPWZ1bmN0aW9uKGUsdCxyLG4sbCl7dmFyIGY9YShudWxsKTtpZihudWxsPT09Zi5jdXJyZW50KXt2YXIgZD17aGFzVmFsdWU6ITEsdmFsdWU6bnVsbH07Zi5jdXJyZW50PWR9ZWxzZSBkPWYuY3VycmVudDtmPWMoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtpZighcyl7aWYocz0hMCxpPWUsZT1uKGUpLHZvaWQgMCE9PWwmJmQuaGFzVmFsdWUpe3ZhciB0PWQudmFsdWU7aWYobCh0LGUpKXJldHVybiBhPXR9cmV0dXJuIGE9ZX1pZih0PWEsbyhpLGUpKXJldHVybiB0O3ZhciByPW4oZSk7cmV0dXJuIHZvaWQgMCE9PWwmJmwodCxyKT8oaT1lLHQpOihpPWUsYT1yKX12YXIgaSxhLHM9ITEsYz12b2lkIDA9PT1yP251bGw6cjtyZXR1cm5bZnVuY3Rpb24oKXtyZXR1cm4gZSh0KCkpfSxudWxsPT09Yz92b2lkIDA6ZnVuY3Rpb24oKXtyZXR1cm4gZShjKCkpfV19KSxbdCxyLG4sbF0pO3ZhciBwPWkoZSxmWzBdLGZbMV0pO3JldHVybiBzKChmdW5jdGlvbigpe2QuaGFzVmFsdWU9ITAsZC52YWx1ZT1wfSksW3BdKSx1KHApLHB9fSw3ODQxODpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1yKDg1MTYwKX0sNTgxNjg6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7cmV0dXJuIG49T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF07Zm9yKHZhciBuIGluIHIpKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbikmJihlW25dPXJbbl0pfXJldHVybiBlfSxuLmFwcGx5KG51bGwsYXJndW1lbnRzKX1yLmQodCx7QTpmdW5jdGlvbigpe3JldHVybiBufX0pfSwxNTQ1MjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtjaDpmdW5jdGlvbigpe3JldHVybiBBdH0sVTE6ZnVuY3Rpb24oKXtyZXR1cm4gTWV9LFZQOmZ1bmN0aW9uKCl7cmV0dXJuIHhlfSx6RDpmdW5jdGlvbigpe3JldHVybiBWZX0sTmM6ZnVuY3Rpb24oKXtyZXR1cm4gT3R9LHZ5OmZ1bmN0aW9uKCl7cmV0dXJuIEllfSxaMDpmdW5jdGlvbigpe3JldHVybiBRZX0sc2Y6ZnVuY3Rpb24oKXtyZXR1cm4gemV9fSk7dmFyIG49U3ltYm9sLmZvcigiaW1tZXItbm90aGluZyIpLG89U3ltYm9sLmZvcigiaW1tZXItZHJhZnRhYmxlIiksaT1TeW1ib2wuZm9yKCJpbW1lci1zdGF0ZSIpO2Z1bmN0aW9uIGEoZSwuLi50KXt0aHJvdyBuZXcgRXJyb3IoYFtJbW1lcl0gbWluaWZpZWQgZXJyb3IgbnI6ICR7ZX0uIEZ1bGwgZXJyb3IgYXQ6IGh0dHBzOi8vYml0Lmx5LzNjWEVLV2ZgKX12YXIgcz1PYmplY3QsYz1zLmdldFByb3RvdHlwZU9mLHU9ImNvbnN0cnVjdG9yIixsPSJwcm90b3R5cGUiLGY9ImNvbmZpZ3VyYWJsZSIsZD0iZW51bWVyYWJsZSIscD0id3JpdGFibGUiLF89InZhbHVlIixoPWU9PiEhZSYmISFlW2ldO2Z1bmN0aW9uIG0oZSl7cmV0dXJuISFlJiYodihlKXx8RShlKXx8ISFlW29dfHwhIWVbdV0/LltvXXx8QShlKXx8VChlKSl9dmFyIHk9c1tsXVt1XS50b1N0cmluZygpLGc9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gdihlKXtpZighZXx8IVIoZSkpcmV0dXJuITE7Y29uc3QgdD1jKGUpO2lmKG51bGw9PT10fHx0PT09c1tsXSlyZXR1cm4hMDtjb25zdCByPXMuaGFzT3duUHJvcGVydHkuY2FsbCh0LHUpJiZ0W3VdO2lmKHI9PT1PYmplY3QpcmV0dXJuITA7aWYoIVAocikpcmV0dXJuITE7bGV0IG49Zy5nZXQocik7cmV0dXJuIHZvaWQgMD09PW4mJihuPUZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwociksZy5zZXQocixuKSksbj09PXl9ZnVuY3Rpb24gYihlLHQscj0hMCl7aWYoMD09PXcoZSkpeyhyP1JlZmxlY3Qub3duS2V5cyhlKTpzLmtleXMoZSkpLmZvckVhY2goKHI9Pnt0KHIsZVtyXSxlKX0pKX1lbHNlIGUuZm9yRWFjaCgoKHIsbik9PnQobixyLGUpKSl9ZnVuY3Rpb24gdyhlKXtjb25zdCB0PWVbaV07cmV0dXJuIHQ/dC50eXBlXzpFKGUpPzE6QShlKT8yOlQoZSk/MzowfXZhciBTPShlLHQscj13KGUpKT0+Mj09PXI/ZS5oYXModCk6c1tsXS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCksaz0oZSx0LHI9dyhlKSk9PjI9PT1yP2UuZ2V0KHQpOmVbdF0seD0oZSx0LHIsbj13KGUpKT0+ezI9PT1uP2Uuc2V0KHQscik6Mz09PW4/ZS5hZGQocik6ZVt0XT1yfTt2YXIgRT1BcnJheS5pc0FycmF5LEE9ZT0+ZSBpbnN0YW5jZW9mIE1hcCxUPWU9PmUgaW5zdGFuY2VvZiBTZXQsUj1lPT4ib2JqZWN0Ij09dHlwZW9mIGUsUD1lPT4iZnVuY3Rpb24iPT10eXBlb2YgZSxPPWU9PiJib29sZWFuIj09dHlwZW9mIGU7dmFyIE09ZT0+ZS5jb3B5X3x8ZS5iYXNlXyxGPWU9PmUubW9kaWZpZWRfP2UuY29weV86ZS5iYXNlXztmdW5jdGlvbiBJKGUsdCl7aWYoQShlKSlyZXR1cm4gbmV3IE1hcChlKTtpZihUKGUpKXJldHVybiBuZXcgU2V0KGUpO2lmKEUoZSkpcmV0dXJuIEFycmF5W2xdLnNsaWNlLmNhbGwoZSk7Y29uc3Qgcj12KGUpO2lmKCEwPT09dHx8ImNsYXNzX29ubHkiPT09dCYmIXIpe2NvbnN0IHQ9cy5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGUpO2RlbGV0ZSB0W2ldO2xldCByPVJlZmxlY3Qub3duS2V5cyh0KTtmb3IobGV0IG49MDtuPHIubGVuZ3RoO24rKyl7Y29uc3Qgbz1yW25dLGk9dFtvXTshMT09PWlbcF0mJihpW3BdPSEwLGlbZl09ITApLChpLmdldHx8aS5zZXQpJiYodFtvXT17W2ZdOiEwLFtwXTohMCxbZF06aVtkXSxbX106ZVtvXX0pfXJldHVybiBzLmNyZWF0ZShjKGUpLHQpfXtjb25zdCB0PWMoZSk7aWYobnVsbCE9PXQmJnIpcmV0dXJuey4uLmV9O2NvbnN0IG49cy5jcmVhdGUodCk7cmV0dXJuIHMuYXNzaWduKG4sZSl9fWZ1bmN0aW9uIGooZSx0PSExKXtyZXR1cm4gTChlKXx8aChlKXx8IW0oZSl8fCh3KGUpPjEmJnMuZGVmaW5lUHJvcGVydGllcyhlLHtzZXQ6RCxhZGQ6RCxjbGVhcjpELGRlbGV0ZTpEfSkscy5mcmVlemUoZSksdCYmYihlLCgoZSx0KT0+e2oodCwhMCl9KSwhMSkpLGV9dmFyIEQ9e1tfXTpmdW5jdGlvbigpe2EoMil9fTtmdW5jdGlvbiBMKGUpe3JldHVybiBudWxsPT09ZXx8IVIoZSl8fHMuaXNGcm96ZW4oZSl9dmFyIFU9Ik1hcFNldCIsej0iUGF0Y2hlcyIsQj0iQXJyYXlNZXRob2RzIixIPXt9O2Z1bmN0aW9uIFcoZSl7Y29uc3QgdD1IW2VdO3JldHVybiB0fHxhKDApLHR9dmFyICQscT1lPT4hIUhbZV07dmFyIEc9KCk9PiQ7ZnVuY3Rpb24gVihlLHQpe3QmJihlLnBhdGNoUGx1Z2luXz1XKHopLGUucGF0Y2hlc189W10sZS5pbnZlcnNlUGF0Y2hlc189W10sZS5wYXRjaExpc3RlbmVyXz10KX1mdW5jdGlvbiBZKGUpe0soZSksZS5kcmFmdHNfLmZvckVhY2goWiksZS5kcmFmdHNfPW51bGx9ZnVuY3Rpb24gSyhlKXtlPT09JCYmKCQ9ZS5wYXJlbnRfKX12YXIgWD1lPT4kPXtkcmFmdHNfOltdLHBhcmVudF86JCxpbW1lcl86ZSxjYW5BdXRvRnJlZXplXzohMCx1bmZpbmFsaXplZERyYWZ0c186MCxoYW5kbGVkU2V0XzpuZXcgU2V0LHByb2Nlc3NlZEZvclBhdGNoZXNfOm5ldyBTZXQsbWFwU2V0UGx1Z2luXzpxKFUpP1coVSk6dm9pZCAwLGFycmF5TWV0aG9kc1BsdWdpbl86cShCKT9XKEIpOnZvaWQgMH07ZnVuY3Rpb24gWihlKXtjb25zdCB0PWVbaV07MD09PXQudHlwZV98fDE9PT10LnR5cGVfP3QucmV2b2tlXygpOnQucmV2b2tlZF89ITB9ZnVuY3Rpb24gUShlLHQpe3QudW5maW5hbGl6ZWREcmFmdHNfPXQuZHJhZnRzXy5sZW5ndGg7Y29uc3Qgcj10LmRyYWZ0c19bMF07aWYodm9pZCAwIT09ZSYmZSE9PXIpe3JbaV0ubW9kaWZpZWRfJiYoWSh0KSxhKDQpKSxtKGUpJiYoZT1lZSh0LGUpKTtjb25zdHtwYXRjaFBsdWdpbl86bn09dDtuJiZuLmdlbmVyYXRlUmVwbGFjZW1lbnRQYXRjaGVzXyhyW2ldLmJhc2VfLGUsdCl9ZWxzZSBlPWVlKHQscik7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyPSExKXshZS5wYXJlbnRfJiZlLmltbWVyXy5hdXRvRnJlZXplXyYmZS5jYW5BdXRvRnJlZXplXyYmaih0LHIpfSh0LGUsITApLFkodCksdC5wYXRjaGVzXyYmdC5wYXRjaExpc3RlbmVyXyh0LnBhdGNoZXNfLHQuaW52ZXJzZVBhdGNoZXNfKSxlIT09bj9lOnZvaWQgMH1mdW5jdGlvbiBlZShlLHQpe2lmKEwodCkpcmV0dXJuIHQ7Y29uc3Qgcj10W2ldO2lmKCFyKXtyZXR1cm4gc2UodCxlLmhhbmRsZWRTZXRfLGUpfWlmKCFyZShyLGUpKXJldHVybiB0O2lmKCFyLm1vZGlmaWVkXylyZXR1cm4gci5iYXNlXztpZighci5maW5hbGl6ZWRfKXtjb25zdHtjYWxsYmFja3NfOnR9PXI7aWYodClmb3IoO3QubGVuZ3RoPjA7KXt0LnBvcCgpKGUpfWllKHIsZSl9cmV0dXJuIHIuY29weV99ZnVuY3Rpb24gdGUoZSl7ZS5maW5hbGl6ZWRfPSEwLGUuc2NvcGVfLnVuZmluYWxpemVkRHJhZnRzXy0tfXZhciByZT0oZSx0KT0+ZS5zY29wZV89PT10LG5lPVtdO2Z1bmN0aW9uIG9lKGUsdCxyLG4pe2NvbnN0IG89TShlKSxpPWUudHlwZV87aWYodm9pZCAwIT09bil7aWYoayhvLG4saSk9PT10KXJldHVybiB2b2lkIHgobyxuLHIsaSl9aWYoIWUuZHJhZnRMb2NhdGlvbnNfKXtjb25zdCB0PWUuZHJhZnRMb2NhdGlvbnNfPW5ldyBNYXA7YihvLCgoZSxyKT0+e2lmKGgocikpe2NvbnN0IG49dC5nZXQocil8fFtdO24ucHVzaChlKSx0LnNldChyLG4pfX0pKX1jb25zdCBhPWUuZHJhZnRMb2NhdGlvbnNfLmdldCh0KT8/bmU7Zm9yKGNvbnN0IGUgb2YgYSl4KG8sZSxyLGkpfWZ1bmN0aW9uIGllKGUsdCl7aWYoZS5tb2RpZmllZF8mJiFlLmZpbmFsaXplZF8mJigzPT09ZS50eXBlX3x8MT09PWUudHlwZV8mJmUuYWxsSW5kaWNlc1JlYXNzaWduZWRffHwoZS5hc3NpZ25lZF8/LnNpemU/PzApPjApKXtjb25zdHtwYXRjaFBsdWdpbl86cn09dDtpZihyKXtjb25zdCBuPXIuZ2V0UGF0aChlKTtuJiZyLmdlbmVyYXRlUGF0Y2hlc18oZSxuLHQpfXRlKGUpfX1mdW5jdGlvbiBhZShlLHQscil7Y29uc3R7c2NvcGVfOm59PWU7aWYoaChyKSl7Y29uc3Qgbz1yW2ldO3JlKG8sbikmJm8uY2FsbGJhY2tzXy5wdXNoKChmdW5jdGlvbigpe3BlKGUpO2NvbnN0IG49RihvKTtvZShlLHIsbix0KX0pKX1lbHNlIG0ocikmJmUuY2FsbGJhY2tzXy5wdXNoKChmdW5jdGlvbigpe2NvbnN0IG89TShlKTszPT09ZS50eXBlXz9vLmhhcyhyKSYmc2UocixuLmhhbmRsZWRTZXRfLG4pOmsobyx0LGUudHlwZV8pPT09ciYmbi5kcmFmdHNfLmxlbmd0aD4xJiYhMD09PShlLmFzc2lnbmVkXy5nZXQodCk/PyExKSYmZS5jb3B5XyYmc2UoayhlLmNvcHlfLHQsZS50eXBlXyksbi5oYW5kbGVkU2V0XyxuKX0pKX1mdW5jdGlvbiBzZShlLHQscil7cmV0dXJuIXIuaW1tZXJfLmF1dG9GcmVlemVfJiZyLnVuZmluYWxpemVkRHJhZnRzXzwxfHxoKGUpfHx0LmhhcyhlKXx8IW0oZSl8fEwoZSl8fCh0LmFkZChlKSxiKGUsKChuLG8pPT57aWYoaChvKSl7Y29uc3QgdD1vW2ldO2lmKHJlKHQscikpe2NvbnN0IHI9Rih0KTt4KGUsbixyLGUudHlwZV8pLHRlKHQpfX1lbHNlIG0obykmJnNlKG8sdCxyKX0pKSksZX12YXIgY2U9e2dldChlLHQpe2lmKHQ9PT1pKXJldHVybiBlO2xldCByPWUuc2NvcGVfLmFycmF5TWV0aG9kc1BsdWdpbl87Y29uc3Qgbj0xPT09ZS50eXBlXyYmInN0cmluZyI9PXR5cGVvZiB0O2lmKG4mJnI/LmlzQXJyYXlPcGVyYXRpb25NZXRob2QodCkpcmV0dXJuIHIuY3JlYXRlTWV0aG9kSW50ZXJjZXB0b3IoZSx0KTtjb25zdCBvPU0oZSk7aWYoIVMobyx0LGUudHlwZV8pKXJldHVybiBmdW5jdGlvbihlLHQscil7Y29uc3Qgbj1mZSh0LHIpO3JldHVybiBuP18gaW4gbj9uW19dOm4uZ2V0Py5jYWxsKGUuZHJhZnRfKTp2b2lkIDB9KGUsbyx0KTtjb25zdCBhPW9bdF07aWYoZS5maW5hbGl6ZWRffHwhbShhKSlyZXR1cm4gYTtpZihuJiZlLm9wZXJhdGlvbk1ldGhvZCYmcj8uaXNNdXRhdGluZ0FycmF5TWV0aG9kKGUub3BlcmF0aW9uTWV0aG9kKSYmZnVuY3Rpb24oZSl7Y29uc3QgdD0rZTtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcih0KSYmU3RyaW5nKHQpPT09ZX0odCkpcmV0dXJuIGE7aWYoYT09PWxlKGUuYmFzZV8sdCkpe3BlKGUpO2NvbnN0IHI9MT09PWUudHlwZV8/K3Q6dCxuPV9lKGUuc2NvcGVfLGEsZSxyKTtyZXR1cm4gZS5jb3B5X1tyXT1ufXJldHVybiBhfSxoYXMoZSx0KXtyZXR1cm4gdCBpbiBNKGUpfSxvd25LZXlzKGUpe3JldHVybiBSZWZsZWN0Lm93bktleXMoTShlKSl9LHNldChlLHQscil7Y29uc3Qgbj1mZShNKGUpLHQpO2lmKG4/LnNldClyZXR1cm4gbi5zZXQuY2FsbChlLmRyYWZ0XyxyKSwhMDtpZighZS5tb2RpZmllZF8pe2NvbnN0IG49bGUoTShlKSx0KSxzPW4/LltpXTtpZihzJiZzLmJhc2VfPT09cilyZXR1cm4gZS5jb3B5X1t0XT1yLGUuYXNzaWduZWRfLnNldCh0LCExKSwhMDtpZigoKG89cik9PT0oYT1uKT8wIT09b3x8MS9vPT0xL2E6byE9byYmYSE9YSkmJih2b2lkIDAhPT1yfHxTKGUuYmFzZV8sdCxlLnR5cGVfKSkpcmV0dXJuITA7cGUoZSksZGUoZSl9dmFyIG8sYTtyZXR1cm4gZS5jb3B5X1t0XT09PXImJih2b2lkIDAhPT1yfHx0IGluIGUuY29weV8pfHxOdW1iZXIuaXNOYU4ocikmJk51bWJlci5pc05hTihlLmNvcHlfW3RdKXx8KGUuY29weV9bdF09cixlLmFzc2lnbmVkXy5zZXQodCwhMCksYWUoZSx0LHIpKSwhMH0sZGVsZXRlUHJvcGVydHkoZSx0KXtyZXR1cm4gcGUoZSksdm9pZCAwIT09bGUoZS5iYXNlXyx0KXx8dCBpbiBlLmJhc2VfPyhlLmFzc2lnbmVkXy5zZXQodCwhMSksZGUoZSkpOmUuYXNzaWduZWRfLmRlbGV0ZSh0KSxlLmNvcHlfJiZkZWxldGUgZS5jb3B5X1t0XSwhMH0sZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCl7Y29uc3Qgcj1NKGUpLG49UmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KTtyZXR1cm4gbj97W3BdOiEwLFtmXToxIT09ZS50eXBlX3x8Imxlbmd0aCIhPT10LFtkXTpuW2RdLFtfXTpyW3RdfTpufSxkZWZpbmVQcm9wZXJ0eSgpe2EoMTEpfSxnZXRQcm90b3R5cGVPZihlKXtyZXR1cm4gYyhlLmJhc2VfKX0sc2V0UHJvdG90eXBlT2YoKXthKDEyKX19LHVlPXt9O2ZvcihsZXQgZSBpbiBjZSl7bGV0IHQ9Y2VbZV07dWVbZV09ZnVuY3Rpb24oKXtjb25zdCBlPWFyZ3VtZW50cztyZXR1cm4gZVswXT1lWzBdWzBdLHQuYXBwbHkodGhpcyxlKX19ZnVuY3Rpb24gbGUoZSx0KXtjb25zdCByPWVbaV07cmV0dXJuKHI/TShyKTplKVt0XX1mdW5jdGlvbiBmZShlLHQpe2lmKCEodCBpbiBlKSlyZXR1cm47bGV0IHI9YyhlKTtmb3IoO3I7KXtjb25zdCBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KTtpZihlKXJldHVybiBlO3I9YyhyKX19ZnVuY3Rpb24gZGUoZSl7ZS5tb2RpZmllZF98fChlLm1vZGlmaWVkXz0hMCxlLnBhcmVudF8mJmRlKGUucGFyZW50XykpfWZ1bmN0aW9uIHBlKGUpe2UuY29weV98fChlLmFzc2lnbmVkXz1uZXcgTWFwLGUuY29weV89SShlLmJhc2VfLGUuc2NvcGVfLmltbWVyXy51c2VTdHJpY3RTaGFsbG93Q29weV8pKX11ZS5kZWxldGVQcm9wZXJ0eT1mdW5jdGlvbihlLHQpe3JldHVybiB1ZS5zZXQuY2FsbCh0aGlzLGUsdCx2b2lkIDApfSx1ZS5zZXQ9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBjZS5zZXQuY2FsbCh0aGlzLGVbMF0sdCxyLGVbMF0pfTtmdW5jdGlvbiBfZShlLHQscixuKXtjb25zdFtvLGldPUEodCk/VyhVKS5wcm94eU1hcF8odCxyKTpUKHQpP1coVSkucHJveHlTZXRfKHQscik6ZnVuY3Rpb24oZSx0KXtjb25zdCByPUUoZSksbj17dHlwZV86cj8xOjAsc2NvcGVfOnQ/dC5zY29wZV86RygpLG1vZGlmaWVkXzohMSxmaW5hbGl6ZWRfOiExLGFzc2lnbmVkXzp2b2lkIDAscGFyZW50Xzp0LGJhc2VfOmUsZHJhZnRfOm51bGwsY29weV86bnVsbCxyZXZva2VfOm51bGwsaXNNYW51YWxfOiExLGNhbGxiYWNrc186dm9pZCAwfTtsZXQgbz1uLGk9Y2U7ciYmKG89W25dLGk9dWUpO2NvbnN0e3Jldm9rZTphLHByb3h5OnN9PVByb3h5LnJldm9jYWJsZShvLGkpO3JldHVybiBuLmRyYWZ0Xz1zLG4ucmV2b2tlXz1hLFtzLG5dfSh0LHIpO3JldHVybihyPy5zY29wZV8/P0coKSkuZHJhZnRzXy5wdXNoKG8pLGkuY2FsbGJhY2tzXz1yPy5jYWxsYmFja3NfPz9bXSxpLmtleV89bixyJiZ2b2lkIDAhPT1uP2Z1bmN0aW9uKGUsdCxyKXtlLmNhbGxiYWNrc18ucHVzaCgoZnVuY3Rpb24obil7Y29uc3Qgbz10O2lmKCFvfHwhcmUobyxuKSlyZXR1cm47bi5tYXBTZXRQbHVnaW5fPy5maXhTZXRDb250ZW50cyhvKTtjb25zdCBpPUYobyk7b2UoZSxvLmRyYWZ0Xz8/byxpLHIpLGllKG8sbil9KSl9KHIsaSxuKTppLmNhbGxiYWNrc18ucHVzaCgoZnVuY3Rpb24oZSl7ZS5tYXBTZXRQbHVnaW5fPy5maXhTZXRDb250ZW50cyhpKTtjb25zdHtwYXRjaFBsdWdpbl86dH09ZTtpLm1vZGlmaWVkXyYmdCYmdC5nZW5lcmF0ZVBhdGNoZXNfKGksW10sZSl9KSksb31mdW5jdGlvbiBoZShlKXtpZighbShlKXx8TChlKSlyZXR1cm4gZTtjb25zdCB0PWVbaV07bGV0IHIsbj0hMDtpZih0KXtpZighdC5tb2RpZmllZF8pcmV0dXJuIHQuYmFzZV87dC5maW5hbGl6ZWRfPSEwLHI9SShlLHQuc2NvcGVfLmltbWVyXy51c2VTdHJpY3RTaGFsbG93Q29weV8pLG49dC5zY29wZV8uaW1tZXJfLnNob3VsZFVzZVN0cmljdEl0ZXJhdGlvbigpfWVsc2Ugcj1JKGUsITApO3JldHVybiBiKHIsKChlLHQpPT57eChyLGUsaGUodCkpfSksbiksdCYmKHQuZmluYWxpemVkXz0hMSkscn12YXIgbWU9bmV3IGNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuYXV0b0ZyZWV6ZV89ITAsdGhpcy51c2VTdHJpY3RTaGFsbG93Q29weV89ITEsdGhpcy51c2VTdHJpY3RJdGVyYXRpb25fPSExLHRoaXMucHJvZHVjZT0oZSx0LHIpPT57aWYoUChlKSYmIVAodCkpe2NvbnN0IHI9dDt0PWU7Y29uc3Qgbj10aGlzO3JldHVybiBmdW5jdGlvbihlPXIsLi4ubyl7cmV0dXJuIG4ucHJvZHVjZShlLChlPT50LmNhbGwodGhpcyxlLC4uLm8pKSl9fWxldCBvO2lmKFAodCl8fGEoNiksdm9pZCAwPT09cnx8UChyKXx8YSg3KSxtKGUpKXtjb25zdCBuPVgodGhpcyksaT1fZShuLGUsdm9pZCAwKTtsZXQgYT0hMDt0cnl7bz10KGkpLGE9ITF9ZmluYWxseXthP1kobik6SyhuKX1yZXR1cm4gVihuLHIpLFEobyxuKX1pZighZXx8IVIoZSkpe2lmKG89dChlKSx2b2lkIDA9PT1vJiYobz1lKSxvPT09biYmKG89dm9pZCAwKSx0aGlzLmF1dG9GcmVlemVfJiZqKG8sITApLHIpe2NvbnN0IHQ9W10sbj1bXTtXKHopLmdlbmVyYXRlUmVwbGFjZW1lbnRQYXRjaGVzXyhlLG8se3BhdGNoZXNfOnQsaW52ZXJzZVBhdGNoZXNfOm59KSxyKHQsbil9cmV0dXJuIG99YSgxKX0sdGhpcy5wcm9kdWNlV2l0aFBhdGNoZXM9KGUsdCk9PntpZihQKGUpKXJldHVybih0LC4uLnIpPT50aGlzLnByb2R1Y2VXaXRoUGF0Y2hlcyh0LCh0PT5lKHQsLi4ucikpKTtsZXQgcixuO3JldHVyblt0aGlzLnByb2R1Y2UoZSx0LCgoZSx0KT0+e3I9ZSxuPXR9KSkscixuXX0sTyhlPy5hdXRvRnJlZXplKSYmdGhpcy5zZXRBdXRvRnJlZXplKGUuYXV0b0ZyZWV6ZSksTyhlPy51c2VTdHJpY3RTaGFsbG93Q29weSkmJnRoaXMuc2V0VXNlU3RyaWN0U2hhbGxvd0NvcHkoZS51c2VTdHJpY3RTaGFsbG93Q29weSksTyhlPy51c2VTdHJpY3RJdGVyYXRpb24pJiZ0aGlzLnNldFVzZVN0cmljdEl0ZXJhdGlvbihlLnVzZVN0cmljdEl0ZXJhdGlvbil9Y3JlYXRlRHJhZnQoZSl7bShlKXx8YSg4KSxoKGUpJiYoZT1mdW5jdGlvbihlKXtoKGUpfHxhKDEwKTtyZXR1cm4gaGUoZSl9KGUpKTtjb25zdCB0PVgodGhpcykscj1fZSh0LGUsdm9pZCAwKTtyZXR1cm4gcltpXS5pc01hbnVhbF89ITAsSyh0KSxyfWZpbmlzaERyYWZ0KGUsdCl7Y29uc3Qgcj1lJiZlW2ldO3ImJnIuaXNNYW51YWxffHxhKDkpO2NvbnN0e3Njb3BlXzpufT1yO3JldHVybiBWKG4sdCksUSh2b2lkIDAsbil9c2V0QXV0b0ZyZWV6ZShlKXt0aGlzLmF1dG9GcmVlemVfPWV9c2V0VXNlU3RyaWN0U2hhbGxvd0NvcHkoZSl7dGhpcy51c2VTdHJpY3RTaGFsbG93Q29weV89ZX1zZXRVc2VTdHJpY3RJdGVyYXRpb24oZSl7dGhpcy51c2VTdHJpY3RJdGVyYXRpb25fPWV9c2hvdWxkVXNlU3RyaWN0SXRlcmF0aW9uKCl7cmV0dXJuIHRoaXMudXNlU3RyaWN0SXRlcmF0aW9uX31hcHBseVBhdGNoZXMoZSx0KXtsZXQgcjtmb3Iocj10Lmxlbmd0aC0xO3I+PTA7ci0tKXtjb25zdCBuPXRbcl07aWYoMD09PW4ucGF0aC5sZW5ndGgmJiJyZXBsYWNlIj09PW4ub3Ape2U9bi52YWx1ZTticmVha319cj4tMSYmKHQ9dC5zbGljZShyKzEpKTtjb25zdCBuPVcoeikuYXBwbHlQYXRjaGVzXztyZXR1cm4gaChlKT9uKGUsdCk6dGhpcy5wcm9kdWNlKGUsKGU9Pm4oZSx0KSkpfX0seWU9bWUucHJvZHVjZSxnZT1yKDE0NjQ0KTtmdW5jdGlvbiB2ZShlKXtyZXR1cm4oe2Rpc3BhdGNoOnQsZ2V0U3RhdGU6cn0pPT5uPT5vPT4iZnVuY3Rpb24iPT10eXBlb2Ygbz9vKHQscixlKTpuKG8pfXZhciBiZT12ZSgpLHdlPXZlLFNlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fQ09NUE9TRV9fP3dpbmRvdy5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9DT01QT1NFX186ZnVuY3Rpb24oKXtpZigwIT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGFyZ3VtZW50c1swXT9nZS5aejpnZS5aei5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtlPSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18mJndpbmRvdy5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fLGU9PmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLm1hdGNoKTtmdW5jdGlvbiB4ZShlLHQpe2Z1bmN0aW9uIHIoLi4ucil7aWYodCl7bGV0IG49dCguLi5yKTtpZighbil0aHJvdyBuZXcgRXJyb3IoTnQoMCkpO3JldHVybnt0eXBlOmUscGF5bG9hZDpuLnBheWxvYWQsLi4uIm1ldGEiaW4gbiYme21ldGE6bi5tZXRhfSwuLi4iZXJyb3IiaW4gbiYme2Vycm9yOm4uZXJyb3J9fX1yZXR1cm57dHlwZTplLHBheWxvYWQ6clswXX19cmV0dXJuIHIudG9TdHJpbmc9KCk9PmAke2V9YCxyLnR5cGU9ZSxyLm1hdGNoPXQ9PigwLGdlLnZlKSh0KSYmdC50eXBlPT09ZSxyfXZhciBFZT1jbGFzcyBfVHVwbGUgZXh0ZW5kcyBBcnJheXtjb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxfVHVwbGUucHJvdG90eXBlKX1zdGF0aWMgZ2V0W1N5bWJvbC5zcGVjaWVzXSgpe3JldHVybiBfVHVwbGV9Y29uY2F0KC4uLmUpe3JldHVybiBzdXBlci5jb25jYXQuYXBwbHkodGhpcyxlKX1wcmVwZW5kKC4uLmUpe3JldHVybiAxPT09ZS5sZW5ndGgmJkFycmF5LmlzQXJyYXkoZVswXSk/bmV3IF9UdXBsZSguLi5lWzBdLmNvbmNhdCh0aGlzKSk6bmV3IF9UdXBsZSguLi5lLmNvbmNhdCh0aGlzKSl9fTtmdW5jdGlvbiBDZShlKXtyZXR1cm4gbShlKT95ZShlLCgoKT0+e30pKTplfWZ1bmN0aW9uIEFlKGUsdCxyKXtyZXR1cm4gZS5oYXModCk/ZS5nZXQodCk6ZS5zZXQodCxyKHQpKS5nZXQodCl9dmFyIFRlPSgpPT5mdW5jdGlvbihlKXtjb25zdHt0aHVuazp0PSEwLGltbXV0YWJsZUNoZWNrOnI9ITAsc2VyaWFsaXphYmxlQ2hlY2s6bj0hMCxhY3Rpb25DcmVhdG9yQ2hlY2s6bz0hMH09ZT8/e307bGV0IGk9bmV3IEVlO3JldHVybiB0JiYoImJvb2xlYW4iPT10eXBlb2YgdD9pLnB1c2goYmUpOmkucHVzaCh3ZSh0LmV4dHJhQXJndW1lbnQpKSksaX0sUmU9IlJUS19hdXRvQmF0Y2giLFBlPWU9PnQ9PntzZXRUaW1lb3V0KHQsZSl9LE9lPShlPXt0eXBlOiJyYWYifSk9PnQ9PiguLi5yKT0+e2NvbnN0IG49dCguLi5yKTtsZXQgbz0hMCxpPSExLGE9ITE7Y29uc3Qgcz1uZXcgU2V0LGM9InRpY2siPT09ZS50eXBlP3F1ZXVlTWljcm90YXNrOiJyYWYiPT09ZS50eXBlPyJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPyh1PXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUsbD0xMDAsZT0+e2xldCB0PSExO2NvbnN0IHI9KCk9Pnt0fHwodD0hMCxjYW5jZWxBbmltYXRpb25GcmFtZShuKSxjbGVhclRpbWVvdXQobyksZSgpKX0sbj11KHIpLG89c2V0VGltZW91dChyLGwpfSk6UGUoMTApOiJjYWxsYmFjayI9PT1lLnR5cGU/ZS5xdWV1ZU5vdGlmaWNhdGlvbjpQZShlLnRpbWVvdXQpO3ZhciB1LGw7Y29uc3QgZj0oKT0+e2E9ITEsaSYmKGk9ITEscy5mb3JFYWNoKChlPT5lKCkpKSl9O3JldHVybiBPYmplY3QuYXNzaWduKHt9LG4se3N1YnNjcmliZShlKXtjb25zdCB0PW4uc3Vic2NyaWJlKCgoKT0+byYmZSgpKSk7cmV0dXJuIHMuYWRkKGUpLCgpPT57dCgpLHMuZGVsZXRlKGUpfX0sZGlzcGF0Y2goZSl7dHJ5e3JldHVybiBvPSFlPy5tZXRhPy5bUmVdLGk9IW8saSYmKGF8fChhPSEwLGMoZikpKSxuLmRpc3BhdGNoKGUpfWZpbmFsbHl7bz0hMH19fSl9LE5lPWU9PmZ1bmN0aW9uKHQpe2NvbnN0e2F1dG9CYXRjaDpyPSEwfT10Pz97fTtsZXQgbj1uZXcgRWUoZSk7cmV0dXJuIHImJm4ucHVzaChPZSgib2JqZWN0Ij09dHlwZW9mIHI/cjp2b2lkIDApKSxufTtmdW5jdGlvbiBNZShlKXtjb25zdCB0PVRlKCkse3JlZHVjZXI6cixtaWRkbGV3YXJlOm4sZGV2VG9vbHM6bz0hMCxkdXBsaWNhdGVNaWRkbGV3YXJlQ2hlY2s6aT0hMCxwcmVsb2FkZWRTdGF0ZTphLGVuaGFuY2VyczpzfT1lfHx7fTtsZXQgYyx1O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiByKWM9cjtlbHNle2lmKCEoMCxnZS5RZCkocikpdGhyb3cgbmV3IEVycm9yKE50KDEpKTtjPSgwLGdlLkhZKShyKX11PSJmdW5jdGlvbiI9PXR5cGVvZiBuP24odCk6dCgpO2xldCBsPWdlLlp6O28mJihsPVNlKHt0cmFjZTohMSwuLi4ib2JqZWN0Ij09dHlwZW9mIG8mJm99KSk7Y29uc3QgZj0oMCxnZS5UdykoLi4udSksZD1OZShmKTtjb25zdCBwPWwoLi4uImZ1bmN0aW9uIj09dHlwZW9mIHM/cyhkKTpkKCkpO3JldHVybigwLGdlLnkkKShjLGEscCl9ZnVuY3Rpb24gRmUoZSl7Y29uc3QgdD17fSxyPVtdO2xldCBuO2NvbnN0IG89e2FkZENhc2UoZSxyKXtjb25zdCBuPSJzdHJpbmciPT10eXBlb2YgZT9lOmUudHlwZTtpZighbil0aHJvdyBuZXcgRXJyb3IoTnQoMjgpKTtpZihuIGluIHQpdGhyb3cgbmV3IEVycm9yKE50KDI5KSk7cmV0dXJuIHRbbl09cixvfSxhZGRBc3luY1RodW5rKGUsbil7cmV0dXJuIG4ucGVuZGluZyYmKHRbZS5wZW5kaW5nLnR5cGVdPW4ucGVuZGluZyksbi5yZWplY3RlZCYmKHRbZS5yZWplY3RlZC50eXBlXT1uLnJlamVjdGVkKSxuLmZ1bGZpbGxlZCYmKHRbZS5mdWxmaWxsZWQudHlwZV09bi5mdWxmaWxsZWQpLG4uc2V0dGxlZCYmci5wdXNoKHttYXRjaGVyOmUuc2V0dGxlZCxyZWR1Y2VyOm4uc2V0dGxlZH0pLG99LGFkZE1hdGNoZXIoZSx0KXtyZXR1cm4gci5wdXNoKHttYXRjaGVyOmUscmVkdWNlcjp0fSksb30sYWRkRGVmYXVsdENhc2UoZSl7cmV0dXJuIG49ZSxvfX07cmV0dXJuIGUobyksW3QscixuXX1mdW5jdGlvbiBJZShlLHQpe2xldCByLFtuLG8saV09RmUodCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpcj0oKT0+Q2UoZSgpKTtlbHNle2NvbnN0IHQ9Q2UoZSk7cj0oKT0+dH1mdW5jdGlvbiBhKGU9cigpLHQpe2xldCBhPVtuW3QudHlwZV0sLi4uby5maWx0ZXIoKCh7bWF0Y2hlcjplfSk9PmUodCkpKS5tYXAoKCh7cmVkdWNlcjplfSk9PmUpKV07cmV0dXJuIDA9PT1hLmZpbHRlcigoZT0+ISFlKSkubGVuZ3RoJiYoYT1baV0pLGEucmVkdWNlKCgoZSxyKT0+e2lmKHIpe2lmKGgoZSkpe2NvbnN0IG49cihlLHQpO3JldHVybiB2b2lkIDA9PT1uP2U6bn1pZihtKGUpKXJldHVybiB5ZShlLChlPT5yKGUsdCkpKTt7Y29uc3Qgbj1yKGUsdCk7aWYodm9pZCAwPT09bil7aWYobnVsbD09PWUpcmV0dXJuIGU7dGhyb3cgRXJyb3IoIkEgY2FzZSByZWR1Y2VyIG9uIGEgbm9uLWRyYWZ0YWJsZSB2YWx1ZSBtdXN0IG5vdCByZXR1cm4gdW5kZWZpbmVkIil9cmV0dXJuIG59fXJldHVybiBlfSksZSl9cmV0dXJuIGEuZ2V0SW5pdGlhbFN0YXRlPXIsYX12YXIgamU9KGUsdCk9PmtlKGUpP2UubWF0Y2godCk6ZSh0KTtmdW5jdGlvbiBEZSguLi5lKXtyZXR1cm4gdD0+ZS5zb21lKChlPT5qZShlLHQpKSl9ZnVuY3Rpb24gTGUoZSx0KXtpZighZXx8IWUubWV0YSlyZXR1cm4hMTtjb25zdCByPSJzdHJpbmciPT10eXBlb2YgZS5tZXRhLnJlcXVlc3RJZCxuPXQuaW5kZXhPZihlLm1ldGEucmVxdWVzdFN0YXR1cyk+LTE7cmV0dXJuIHImJm59ZnVuY3Rpb24gVWUoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGVbMF0mJiJwZW5kaW5nImluIGVbMF0mJiJmdWxmaWxsZWQiaW4gZVswXSYmInJlamVjdGVkImluIGVbMF19ZnVuY3Rpb24gemUoLi4uZSl7cmV0dXJuIDA9PT1lLmxlbmd0aD9lPT5MZShlLFsiZnVsZmlsbGVkIl0pOlVlKGUpP0RlKC4uLmUubWFwKChlPT5lLmZ1bGZpbGxlZCkpKTp6ZSgpKGVbMF0pfXZhciBCZT0oZT0yMSk9PntsZXQgdD0iIixyPWU7Zm9yKDtyLS07KXQrPSJNb2R1bGVTeW1iaGFzT3duUHItMDEyMzQ1Njc4OUFCQ0RFRkdITlJWZmdjdGlVdnpfS3FZVEprTHhwWlhJalFXIls2NCpNYXRoLnJhbmRvbSgpfDBdO3JldHVybiB0fSxIZT1bIm5hbWUiLCJtZXNzYWdlIiwic3RhY2siLCJjb2RlIl0sV2U9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnBheWxvYWQ9ZSx0aGlzLm1ldGE9dH1wYXlsb2FkO21ldGE7X3R5cGV9LCRlPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wYXlsb2FkPWUsdGhpcy5tZXRhPXR9cGF5bG9hZDttZXRhO190eXBlfSxxZT1lPT57aWYoIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSl7Y29uc3QgdD17fTtmb3IoY29uc3QgciBvZiBIZSkic3RyaW5nIj09dHlwZW9mIGVbcl0mJih0W3JdPWVbcl0pO3JldHVybiB0fXJldHVybnttZXNzYWdlOlN0cmluZyhlKX19LEdlPSJFeHRlcm5hbCBzaWduYWwgd2FzIGFib3J0ZWQiLFZlPSgoKT0+e2Z1bmN0aW9uIGUoZSx0LHIpe2NvbnN0IG49eGUoZSsiL2Z1bGZpbGxlZCIsKChlLHQscixuKT0+KHtwYXlsb2FkOmUsbWV0YTp7Li4ubnx8e30sYXJnOnIscmVxdWVzdElkOnQscmVxdWVzdFN0YXR1czoiZnVsZmlsbGVkIn19KSkpLG89eGUoZSsiL3BlbmRpbmciLCgoZSx0LHIpPT4oe3BheWxvYWQ6dm9pZCAwLG1ldGE6ey4uLnJ8fHt9LGFyZzp0LHJlcXVlc3RJZDplLHJlcXVlc3RTdGF0dXM6InBlbmRpbmcifX0pKSksaT14ZShlKyIvcmVqZWN0ZWQiLCgoZSx0LG4sbyxpKT0+KHtwYXlsb2FkOm8sZXJyb3I6KHImJnIuc2VyaWFsaXplRXJyb3J8fHFlKShlfHwiUmVqZWN0ZWQiKSxtZXRhOnsuLi5pfHx7fSxhcmc6bixyZXF1ZXN0SWQ6dCxyZWplY3RlZFdpdGhWYWx1ZTohIW8scmVxdWVzdFN0YXR1czoicmVqZWN0ZWQiLGFib3J0ZWQ6IkFib3J0RXJyb3IiPT09ZT8ubmFtZSxjb25kaXRpb246IkNvbmRpdGlvbkVycm9yIj09PWU/Lm5hbWV9fSkpKTtyZXR1cm4gT2JqZWN0LmFzc2lnbigoZnVuY3Rpb24oZSx7c2lnbmFsOmF9PXt9KXtyZXR1cm4ocyxjLHUpPT57Y29uc3QgbD1yPy5pZEdlbmVyYXRvcj9yLmlkR2VuZXJhdG9yKGUpOkJlKCksZj1uZXcgQWJvcnRDb250cm9sbGVyO2xldCBkLHA7ZnVuY3Rpb24gXyhlKXtwPWUsZi5hYm9ydCgpfWEmJihhLmFib3J0ZWQ/XyhHZSk6YS5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCgpPT5fKEdlKSkse29uY2U6ITB9KSk7Y29uc3QgaD1hc3luYyBmdW5jdGlvbigpe2xldCBhO3RyeXtsZXQgaT1yPy5jb25kaXRpb24/LihlLHtnZXRTdGF0ZTpjLGV4dHJhOnV9KTtpZihudWxsIT09KGg9aSkmJiJvYmplY3QiPT10eXBlb2YgaCYmImZ1bmN0aW9uIj09dHlwZW9mIGgudGhlbiYmKGk9YXdhaXQgaSksITE9PT1pfHxmLnNpZ25hbC5hYm9ydGVkKXRocm93e25hbWU6IkNvbmRpdGlvbkVycm9yIixtZXNzYWdlOiJBYm9ydGVkIGR1ZSB0byBjb25kaXRpb24gY2FsbGJhY2sgcmV0dXJuaW5nIGZhbHNlLiJ9O2NvbnN0IG09bmV3IFByb21pc2UoKChlLHQpPT57ZD0oKT0+e3Qoe25hbWU6IkFib3J0RXJyb3IiLG1lc3NhZ2U6cHx8IkFib3J0ZWQifSl9LGYuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixkLHtvbmNlOiEwfSl9KSk7cyhvKGwsZSxyPy5nZXRQZW5kaW5nTWV0YT8uKHtyZXF1ZXN0SWQ6bCxhcmc6ZX0se2dldFN0YXRlOmMsZXh0cmE6dX0pKSksYT1hd2FpdCBQcm9taXNlLnJhY2UoW20sUHJvbWlzZS5yZXNvbHZlKHQoZSx7ZGlzcGF0Y2g6cyxnZXRTdGF0ZTpjLGV4dHJhOnUscmVxdWVzdElkOmwsc2lnbmFsOmYuc2lnbmFsLGFib3J0Ol8scmVqZWN0V2l0aFZhbHVlOihlLHQpPT5uZXcgV2UoZSx0KSxmdWxmaWxsV2l0aFZhbHVlOihlLHQpPT5uZXcgJGUoZSx0KX0pKS50aGVuKCh0PT57aWYodCBpbnN0YW5jZW9mIFdlKXRocm93IHQ7cmV0dXJuIHQgaW5zdGFuY2VvZiAkZT9uKHQucGF5bG9hZCxsLGUsdC5tZXRhKTpuKHQsbCxlKX0pKV0pfWNhdGNoKHQpe2E9dCBpbnN0YW5jZW9mIFdlP2kobnVsbCxsLGUsdC5wYXlsb2FkLHQubWV0YSk6aSh0LGwsZSl9ZmluYWxseXtkJiZmLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsZCl9dmFyIGg7cmV0dXJuIHImJiFyLmRpc3BhdGNoQ29uZGl0aW9uUmVqZWN0aW9uJiZpLm1hdGNoKGEpJiZhLm1ldGEuY29uZGl0aW9ufHxzKGEpLGF9KCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oaCx7YWJvcnQ6XyxyZXF1ZXN0SWQ6bCxhcmc6ZSx1bndyYXAoKXtyZXR1cm4gaC50aGVuKFllKX19KX19KSx7cGVuZGluZzpvLHJlamVjdGVkOmksZnVsZmlsbGVkOm4sc2V0dGxlZDpEZShpLG4pLHR5cGVQcmVmaXg6ZX0pfXJldHVybiBlLndpdGhUeXBlcz0oKT0+ZSxlfSkoKTtmdW5jdGlvbiBZZShlKXtpZihlLm1ldGEmJmUubWV0YS5yZWplY3RlZFdpdGhWYWx1ZSl0aHJvdyBlLnBheWxvYWQ7aWYoZS5lcnJvcil0aHJvdyBlLmVycm9yO3JldHVybiBlLnBheWxvYWR9dmFyIEtlPVN5bWJvbC5mb3IoInJ0ay1zbGljZS1jcmVhdGVhc3luY3RodW5rIik7ZnVuY3Rpb24gSmUoZSx0KXtyZXR1cm5gJHtlfS8ke3R9YH1mdW5jdGlvbiBYZSh7Y3JlYXRvcnM6ZX09e30pe2NvbnN0IHQ9ZT8uYXN5bmNUaHVuaz8uW0tlXTtyZXR1cm4gZnVuY3Rpb24oZSl7Y29uc3R7bmFtZTpyLHJlZHVjZXJQYXRoOm49cn09ZTtpZighcil0aHJvdyBuZXcgRXJyb3IoTnQoMTEpKTtjb25zdCBvPSgiZnVuY3Rpb24iPT10eXBlb2YgZS5yZWR1Y2Vycz9lLnJlZHVjZXJzKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3JldHVybntfcmVkdWNlckRlZmluaXRpb25UeXBlOiJhc3luY1RodW5rIixwYXlsb2FkQ3JlYXRvcjplLC4uLnR9fXJldHVybiBlLndpdGhUeXBlcz0oKT0+ZSx7cmVkdWNlcihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7W2UubmFtZV0oLi4udCl7cmV0dXJuIGUoLi4udCl9fVtlLm5hbWVdLHtfcmVkdWNlckRlZmluaXRpb25UeXBlOiJyZWR1Y2VyIn0pfSxwcmVwYXJlZFJlZHVjZXIoZSx0KXtyZXR1cm57X3JlZHVjZXJEZWZpbml0aW9uVHlwZToicmVkdWNlcldpdGhQcmVwYXJlIixwcmVwYXJlOmUscmVkdWNlcjp0fX0sYXN5bmNUaHVuazplfX0oKSk6ZS5yZWR1Y2Vycyl8fHt9LGk9T2JqZWN0LmtleXMobyksYT17c2xpY2VDYXNlUmVkdWNlcnNCeU5hbWU6e30sc2xpY2VDYXNlUmVkdWNlcnNCeVR5cGU6e30sYWN0aW9uQ3JlYXRvcnM6e30sc2xpY2VNYXRjaGVyczpbXX0scz17YWRkQ2FzZShlLHQpe2NvbnN0IHI9InN0cmluZyI9PXR5cGVvZiBlP2U6ZS50eXBlO2lmKCFyKXRocm93IG5ldyBFcnJvcihOdCgxMikpO2lmKHIgaW4gYS5zbGljZUNhc2VSZWR1Y2Vyc0J5VHlwZSl0aHJvdyBuZXcgRXJyb3IoTnQoMTMpKTtyZXR1cm4gYS5zbGljZUNhc2VSZWR1Y2Vyc0J5VHlwZVtyXT10LHN9LGFkZE1hdGNoZXIoZSx0KXtyZXR1cm4gYS5zbGljZU1hdGNoZXJzLnB1c2goe21hdGNoZXI6ZSxyZWR1Y2VyOnR9KSxzfSxleHBvc2VBY3Rpb24oZSx0KXtyZXR1cm4gYS5hY3Rpb25DcmVhdG9yc1tlXT10LHN9LGV4cG9zZUNhc2VSZWR1Y2VyKGUsdCl7cmV0dXJuIGEuc2xpY2VDYXNlUmVkdWNlcnNCeU5hbWVbZV09dCxzfX07ZnVuY3Rpb24gYygpe2NvbnN0W3Q9e30scj1bXSxuXT0iZnVuY3Rpb24iPT10eXBlb2YgZS5leHRyYVJlZHVjZXJzP0ZlKGUuZXh0cmFSZWR1Y2Vycyk6W2UuZXh0cmFSZWR1Y2Vyc10sbz17Li4udCwuLi5hLnNsaWNlQ2FzZVJlZHVjZXJzQnlUeXBlfTtyZXR1cm4gSWUoZS5pbml0aWFsU3RhdGUsKGU9Pntmb3IobGV0IHQgaW4gbyllLmFkZENhc2UodCxvW3RdKTtmb3IobGV0IHQgb2YgYS5zbGljZU1hdGNoZXJzKWUuYWRkTWF0Y2hlcih0Lm1hdGNoZXIsdC5yZWR1Y2VyKTtmb3IobGV0IHQgb2YgcillLmFkZE1hdGNoZXIodC5tYXRjaGVyLHQucmVkdWNlcik7biYmZS5hZGREZWZhdWx0Q2FzZShuKX0pKX1pLmZvckVhY2goKG49Pntjb25zdCBpPW9bbl0sYT17cmVkdWNlck5hbWU6bix0eXBlOkplKHIsbiksY3JlYXRlTm90YXRpb246ImZ1bmN0aW9uIj09dHlwZW9mIGUucmVkdWNlcnN9OyFmdW5jdGlvbihlKXtyZXR1cm4iYXN5bmNUaHVuayI9PT1lLl9yZWR1Y2VyRGVmaW5pdGlvblR5cGV9KGkpP2Z1bmN0aW9uKHt0eXBlOmUscmVkdWNlck5hbWU6dCxjcmVhdGVOb3RhdGlvbjpyfSxuLG8pe2xldCBpLGE7aWYoInJlZHVjZXIiaW4gbil7aWYociYmIWZ1bmN0aW9uKGUpe3JldHVybiJyZWR1Y2VyV2l0aFByZXBhcmUiPT09ZS5fcmVkdWNlckRlZmluaXRpb25UeXBlfShuKSl0aHJvdyBuZXcgRXJyb3IoTnQoMTcpKTtpPW4ucmVkdWNlcixhPW4ucHJlcGFyZX1lbHNlIGk9bjtvLmFkZENhc2UoZSxpKS5leHBvc2VDYXNlUmVkdWNlcih0LGkpLmV4cG9zZUFjdGlvbih0LGE/eGUoZSxhKTp4ZShlKSl9KGEsaSxzKTpmdW5jdGlvbih7dHlwZTplLHJlZHVjZXJOYW1lOnR9LHIsbixvKXtpZighbyl0aHJvdyBuZXcgRXJyb3IoTnQoMTgpKTtjb25zdHtwYXlsb2FkQ3JlYXRvcjppLGZ1bGZpbGxlZDphLHBlbmRpbmc6cyxyZWplY3RlZDpjLHNldHRsZWQ6dSxvcHRpb25zOmx9PXIsZj1vKGUsaSxsKTtuLmV4cG9zZUFjdGlvbih0LGYpLGEmJm4uYWRkQ2FzZShmLmZ1bGZpbGxlZCxhKTtzJiZuLmFkZENhc2UoZi5wZW5kaW5nLHMpO2MmJm4uYWRkQ2FzZShmLnJlamVjdGVkLGMpO3UmJm4uYWRkTWF0Y2hlcihmLnNldHRsZWQsdSk7bi5leHBvc2VDYXNlUmVkdWNlcih0LHtmdWxmaWxsZWQ6YXx8ZXQscGVuZGluZzpzfHxldCxyZWplY3RlZDpjfHxldCxzZXR0bGVkOnV8fGV0fSl9KGEsaSxzLHQpfSkpO2NvbnN0IHU9ZT0+ZSxsPW5ldyBNYXAsZj1uZXcgV2Vha01hcDtsZXQgZDtmdW5jdGlvbiBwKGUsdCl7cmV0dXJuIGR8fChkPWMoKSksZChlLHQpfWZ1bmN0aW9uIF8oKXtyZXR1cm4gZHx8KGQ9YygpKSxkLmdldEluaXRpYWxTdGF0ZSgpfWZ1bmN0aW9uIGgodCxyPSExKXtmdW5jdGlvbiBuKGUpe2xldCBvPWVbdF07cmV0dXJuIHZvaWQgMD09PW8mJnImJihvPUFlKGYsbixfKSksb31mdW5jdGlvbiBvKHQ9dSl7Y29uc3Qgbj1BZShsLHIsKCgpPT5uZXcgV2Vha01hcCkpO3JldHVybiBBZShuLHQsKCgpPT57Y29uc3Qgbj17fTtmb3IoY29uc3RbbyxpXW9mIE9iamVjdC5lbnRyaWVzKGUuc2VsZWN0b3JzPz97fSkpbltvXT1aZShpLHQsKCgpPT5BZShmLHQsXykpLHIpO3JldHVybiBufSkpfXJldHVybntyZWR1Y2VyUGF0aDp0LGdldFNlbGVjdG9yczpvLGdldCBzZWxlY3RvcnMoKXtyZXR1cm4gbyhuKX0sc2VsZWN0U2xpY2U6bn19Y29uc3QgbT17bmFtZTpyLHJlZHVjZXI6cCxhY3Rpb25zOmEuYWN0aW9uQ3JlYXRvcnMsY2FzZVJlZHVjZXJzOmEuc2xpY2VDYXNlUmVkdWNlcnNCeU5hbWUsZ2V0SW5pdGlhbFN0YXRlOl8sLi4uaChuKSxpbmplY3RJbnRvKGUse3JlZHVjZXJQYXRoOnQsLi4ucn09e30pe2NvbnN0IG89dD8/bjtyZXR1cm4gZS5pbmplY3Qoe3JlZHVjZXJQYXRoOm8scmVkdWNlcjpwfSxyKSx7Li4ubSwuLi5oKG8sITApfX19O3JldHVybiBtfX1mdW5jdGlvbiBaZShlLHQscixuKXtmdW5jdGlvbiBvKG8sLi4uaSl7bGV0IGE9dChvKTtyZXR1cm4gdm9pZCAwPT09YSYmbiYmKGE9cigpKSxlKGEsLi4uaSl9cmV0dXJuIG8udW53cmFwcGVkPWUsb312YXIgUWU9WGUoKTtmdW5jdGlvbiBldCgpe312YXIgdHQ9Imxpc3RlbmVyIixydD0iY29tcGxldGVkIixudD0iY2FuY2VsbGVkIixvdD1gdGFzay0ke250fWAsaXQ9YHRhc2stJHtydH1gLGF0PWAke3R0fS0ke250fWAsc3Q9YCR7dHR9LSR7cnR9YCxjdD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmNvZGU9ZSx0aGlzLm1lc3NhZ2U9YHRhc2sgJHtudH0gKHJlYXNvbjogJHtlfSlgfWNvZGU7bmFtZT0iVGFza0Fib3J0RXJyb3IiO21lc3NhZ2V9LHV0PShlLHQpPT57aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihOdCgzMikpfSxsdD0oKT0+e30sZnQ9KGUsdD1sdCk9PihlLmNhdGNoKHQpLGUpLGR0PShlLHQpPT4oZS5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsdCx7b25jZTohMH0pLCgpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0Iix0KSkscHQ9ZT0+e2lmKGUuYWJvcnRlZCl0aHJvdyBuZXcgY3QoZS5yZWFzb24pfTtmdW5jdGlvbiBfdChlLHQpe2xldCByPWx0O3JldHVybiBuZXcgUHJvbWlzZSgoKG4sbyk9Pntjb25zdCBpPSgpPT5vKG5ldyBjdChlLnJlYXNvbikpO2UuYWJvcnRlZD9pKCk6KHI9ZHQoZSxpKSx0LmZpbmFsbHkoKCgpPT5yKCkpKS50aGVuKG4sbykpfSkpLmZpbmFsbHkoKCgpPT57cj1sdH0pKX12YXIgaHQ9ZT0+dD0+ZnQoX3QoZSx0KS50aGVuKCh0PT4ocHQoZSksdCkpKSksbXQ9ZT0+e2NvbnN0IHQ9aHQoZSk7cmV0dXJuIGU9PnQobmV3IFByb21pc2UoKHQ9PnNldFRpbWVvdXQodCxlKSkpKX0se2Fzc2lnbjp5dH09T2JqZWN0LGd0PXt9LHZ0PSJsaXN0ZW5lck1pZGRsZXdhcmUiLGJ0PShlLHQpPT4ocixuKT0+e3V0KHIpO2NvbnN0IG89bmV3IEFib3J0Q29udHJvbGxlcjt2YXIgaTtpPW8sZHQoZSwoKCk9PmkuYWJvcnQoZS5yZWFzb24pKSk7Y29uc3QgYT0oYXN5bmMoZSx0KT0+e3RyeXtyZXR1cm4gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCkse3N0YXR1czoib2siLHZhbHVlOmF3YWl0IGUoKX19Y2F0Y2goZSl7cmV0dXJue3N0YXR1czplIGluc3RhbmNlb2YgY3Q/ImNhbmNlbGxlZCI6InJlamVjdGVkIixlcnJvcjplfX1maW5hbGx5e3Q/LigpfX0pKChhc3luYygpPT57cHQoZSkscHQoby5zaWduYWwpO2NvbnN0IHQ9YXdhaXQgcih7cGF1c2U6aHQoby5zaWduYWwpLGRlbGF5Om10KG8uc2lnbmFsKSxzaWduYWw6by5zaWduYWx9KTtyZXR1cm4gcHQoby5zaWduYWwpLHR9KSwoKCk9Pm8uYWJvcnQoaXQpKSk7cmV0dXJuIG4/LmF1dG9Kb2luJiZ0LnB1c2goYS5jYXRjaChsdCkpLHtyZXN1bHQ6aHQoZSkoYSksY2FuY2VsKCl7by5hYm9ydChvdCl9fX0sd3Q9KGUsdCk9PihyLG4pPT5mdCgoYXN5bmMocixuKT0+e3B0KHQpO2xldCBvPSgpPT57fTtjb25zdCBpPVtuZXcgUHJvbWlzZSgoKHQsbik9PntsZXQgaT1lKHtwcmVkaWNhdGU6cixlZmZlY3Q6KGUscik9PntyLnVuc3Vic2NyaWJlKCksdChbZSxyLmdldFN0YXRlKCksci5nZXRPcmlnaW5hbFN0YXRlKCldKX19KTtvPSgpPT57aSgpLG4oKX19KSldO251bGwhPW4mJmkucHVzaChuZXcgUHJvbWlzZSgoZT0+c2V0VGltZW91dChlLG4sbnVsbCkpKSk7dHJ5e2NvbnN0IGU9YXdhaXQgX3QodCxQcm9taXNlLnJhY2UoaSkpO3JldHVybiBwdCh0KSxlfWZpbmFsbHl7bygpfX0pKHIsbikpLFN0PWU9PntsZXR7dHlwZTp0LGFjdGlvbkNyZWF0b3I6cixtYXRjaGVyOm4scHJlZGljYXRlOm8sZWZmZWN0Oml9PWU7aWYodClvPXhlKHQpLm1hdGNoO2Vsc2UgaWYocil0PXIudHlwZSxvPXIubWF0Y2g7ZWxzZSBpZihuKW89bjtlbHNlIGlmKCFvKXRocm93IG5ldyBFcnJvcihOdCgyMSkpO3JldHVybiB1dChpKSx7cHJlZGljYXRlOm8sdHlwZTp0LGVmZmVjdDppfX0sa3Q9eXQoKGU9Pntjb25zdHt0eXBlOnQscHJlZGljYXRlOnIsZWZmZWN0Om59PVN0KGUpO3JldHVybntpZDpCZSgpLGVmZmVjdDpuLHR5cGU6dCxwcmVkaWNhdGU6cixwZW5kaW5nOm5ldyBTZXQsdW5zdWJzY3JpYmU6KCk9Pnt0aHJvdyBuZXcgRXJyb3IoTnQoMjIpKX19fSkse3dpdGhUeXBlczooKT0+a3R9KSx4dD0oZSx0KT0+e2NvbnN0e3R5cGU6cixlZmZlY3Q6bixwcmVkaWNhdGU6b309U3QodCk7cmV0dXJuIEFycmF5LmZyb20oZS52YWx1ZXMoKSkuZmluZCgoZT0+KCJzdHJpbmciPT10eXBlb2Ygcj9lLnR5cGU9PT1yOmUucHJlZGljYXRlPT09bykmJmUuZWZmZWN0PT09bikpfSxFdD1lPT57ZS5wZW5kaW5nLmZvckVhY2goKGU9PntlLmFib3J0KGF0KX0pKX0sQ3Q9KGUsdCxyKT0+e3RyeXtlKHQscil9Y2F0Y2goZSl7c2V0VGltZW91dCgoKCk9Pnt0aHJvdyBlfSksMCl9fSxBdD15dCh4ZShgJHt2dH0vYWRkYCkse3dpdGhUeXBlczooKT0+QXR9KSxUdD14ZShgJHt2dH0vcmVtb3ZlQWxsYCksUnQ9eXQoeGUoYCR7dnR9L3JlbW92ZWApLHt3aXRoVHlwZXM6KCk9PlJ0fSksUHQ9KC4uLmUpPT57Y29uc29sZS5lcnJvcihgJHt2dH0vZXJyb3JgLC4uLmUpfSxPdD0oZT17fSk9Pntjb25zdCB0PW5ldyBNYXAscj1uZXcgTWFwLHtleHRyYTpuLG9uRXJyb3I6bz1QdH09ZTt1dChvKTtjb25zdCBpPWU9PihlPT4oZS51bnN1YnNjcmliZT0oKT0+dC5kZWxldGUoZS5pZCksdC5zZXQoZS5pZCxlKSx0PT57ZS51bnN1YnNjcmliZSgpLHQ/LmNhbmNlbEFjdGl2ZSYmRXQoZSl9KSkoeHQodCxlKT8/a3QoZSkpO3l0KGkse3dpdGhUeXBlczooKT0+aX0pO2NvbnN0IGE9ZT0+e2NvbnN0IHI9eHQodCxlKTtyZXR1cm4gciYmKHIudW5zdWJzY3JpYmUoKSxlLmNhbmNlbEFjdGl2ZSYmRXQocikpLCEhcn07eXQoYSx7d2l0aFR5cGVzOigpPT5hfSk7Y29uc3Qgcz1hc3luYyhlLGEscyxjKT0+e2NvbnN0IHU9bmV3IEFib3J0Q29udHJvbGxlcixsPXd0KGksdS5zaWduYWwpLGY9W107dHJ5e2UucGVuZGluZy5hZGQodSksKGU9Pntjb25zdCB0PXIuZ2V0KGUpPz8wO3Iuc2V0KGUsdCsxKX0pKGUpLGF3YWl0IFByb21pc2UucmVzb2x2ZShlLmVmZmVjdChhLHl0KHt9LHMse2dldE9yaWdpbmFsU3RhdGU6Yyxjb25kaXRpb246KGUsdCk9PmwoZSx0KS50aGVuKEJvb2xlYW4pLHRha2U6bCxkZWxheTptdCh1LnNpZ25hbCkscGF1c2U6aHQodS5zaWduYWwpLGV4dHJhOm4sc2lnbmFsOnUuc2lnbmFsLGZvcms6YnQodS5zaWduYWwsZiksdW5zdWJzY3JpYmU6ZS51bnN1YnNjcmliZSxzdWJzY3JpYmU6KCk9Pnt0LnNldChlLmlkLGUpfSxjYW5jZWxBY3RpdmVMaXN0ZW5lcnM6KCk9PntlLnBlbmRpbmcuZm9yRWFjaCgoKGUsdCxyKT0+e2UhPT11JiYoZS5hYm9ydChhdCksci5kZWxldGUoZSkpfSkpfSxjYW5jZWw6KCk9Pnt1LmFib3J0KGF0KSxlLnBlbmRpbmcuZGVsZXRlKHUpfSx0aHJvd0lmQ2FuY2VsbGVkOigpPT57cHQodS5zaWduYWwpfX0pKSl9Y2F0Y2goZSl7ZSBpbnN0YW5jZW9mIGN0fHxDdChvLGUse3JhaXNlZEJ5OiJlZmZlY3QifSl9ZmluYWxseXthd2FpdCBQcm9taXNlLmFsbChmKSx1LmFib3J0KHN0KSwoZT0+e2NvbnN0IHQ9ci5nZXQoZSk/PzE7MT09PXQ/ci5kZWxldGUoZSk6ci5zZXQoZSx0LTEpfSkoZSksZS5wZW5kaW5nLmRlbGV0ZSh1KX19LGM9KChlLHQpPT4oKT0+e2Zvcihjb25zdCBlIG9mIHQua2V5cygpKUV0KGUpO2UuY2xlYXIoKX0pKHQscik7cmV0dXJue21pZGRsZXdhcmU6ZT0+cj0+bj0+e2lmKCEoMCxnZS52ZSkobikpcmV0dXJuIHIobik7aWYoQXQubWF0Y2gobikpcmV0dXJuIGkobi5wYXlsb2FkKTtpZihUdC5tYXRjaChuKSlyZXR1cm4gdm9pZCBjKCk7aWYoUnQubWF0Y2gobikpcmV0dXJuIGEobi5wYXlsb2FkKTtsZXQgdT1lLmdldFN0YXRlKCk7Y29uc3QgbD0oKT0+e2lmKHU9PT1ndCl0aHJvdyBuZXcgRXJyb3IoTnQoMjMpKTtyZXR1cm4gdX07bGV0IGY7dHJ5e2lmKGY9cihuKSx0LnNpemU+MCl7Y29uc3Qgcj1lLmdldFN0YXRlKCksaT1BcnJheS5mcm9tKHQudmFsdWVzKCkpO2Zvcihjb25zdCB0IG9mIGkpe2xldCBpPSExO3RyeXtpPXQucHJlZGljYXRlKG4scix1KX1jYXRjaChlKXtpPSExLEN0KG8sZSx7cmFpc2VkQnk6InByZWRpY2F0ZSJ9KX1pJiZzKHQsbixlLGwpfX19ZmluYWxseXt1PWd0fXJldHVybiBmfSxzdGFydExpc3RlbmluZzppLHN0b3BMaXN0ZW5pbmc6YSxjbGVhckxpc3RlbmVyczpjfX07ZnVuY3Rpb24gTnQoZSl7cmV0dXJuYE1pbmlmaWVkIFJlZHV4IFRvb2xraXQgZXJyb3IgIyR7ZX07IHZpc2l0IGh0dHBzOi8vcmVkdXgtdG9vbGtpdC5qcy5vcmcvRXJyb3JzP2NvZGU9JHtlfSBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzLiBgfX0sODEyMDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IuZCh0LHtNejpmdW5jdGlvbigpe3JldHVybiB1fX0pO2Z1bmN0aW9uIG4oZSx0PSJleHBlY3RlZCBhIGZ1bmN0aW9uLCBpbnN0ZWFkIHJlY2VpdmVkICIrdHlwZW9mIGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IodCl9dmFyIG89ZT0+QXJyYXkuaXNBcnJheShlKT9lOltlXTtmdW5jdGlvbiBpKGUpe2NvbnN0IHQ9QXJyYXkuaXNBcnJheShlWzBdKT9lWzBdOmU7cmV0dXJuIGZ1bmN0aW9uKGUsdD0iZXhwZWN0ZWQgYWxsIGl0ZW1zIHRvIGJlIGZ1bmN0aW9ucywgaW5zdGVhZCByZWNlaXZlZCB0aGUgZm9sbG93aW5nIHR5cGVzOiAiKXtpZighZS5ldmVyeSgoZT0+ImZ1bmN0aW9uIj09dHlwZW9mIGUpKSl7Y29uc3Qgcj1lLm1hcCgoZT0+ImZ1bmN0aW9uIj09dHlwZW9mIGU/YGZ1bmN0aW9uICR7ZS5uYW1lfHwidW5uYW1lZCJ9KClgOnR5cGVvZiBlKSkuam9pbigiLCAiKTt0aHJvdyBuZXcgVHlwZUVycm9yKGAke3R9WyR7cn1dYCl9fSh0LCJjcmVhdGVTZWxlY3RvciBleHBlY3RzIGFsbCBpbnB1dC1zZWxlY3RvcnMgdG8gYmUgZnVuY3Rpb25zLCBidXQgcmVjZWl2ZWQgdGhlIGZvbGxvd2luZyB0eXBlczogIiksdH1TeW1ib2woKSxPYmplY3QuZ2V0UHJvdG90eXBlT2Yoe30pO3ZhciBhPSJ1bmRlZmluZWQiIT10eXBlb2YgV2Vha1JlZj9XZWFrUmVmOmNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMudmFsdWU9ZX1kZXJlZigpe3JldHVybiB0aGlzLnZhbHVlfX07ZnVuY3Rpb24gcyhlLHQ9e30pe2xldCByPXtzOjAsdjp2b2lkIDAsbzpudWxsLHA6bnVsbH07Y29uc3R7cmVzdWx0RXF1YWxpdHlDaGVjazpufT10O2xldCBvLGk9MDtmdW5jdGlvbiBzKCl7bGV0IHQ9cjtjb25zdHtsZW5ndGg6c309YXJndW1lbnRzO2ZvcihsZXQgZT0wLHI9cztlPHI7ZSsrKXtjb25zdCByPWFyZ3VtZW50c1tlXTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygcnx8Im9iamVjdCI9PXR5cGVvZiByJiZudWxsIT09cil7bGV0IGU9dC5vO251bGw9PT1lJiYodC5vPWU9bmV3IFdlYWtNYXApO2NvbnN0IG49ZS5nZXQocik7dm9pZCAwPT09bj8odD17czowLHY6dm9pZCAwLG86bnVsbCxwOm51bGx9LGUuc2V0KHIsdCkpOnQ9bn1lbHNle2xldCBlPXQucDtudWxsPT09ZSYmKHQucD1lPW5ldyBNYXApO2NvbnN0IG49ZS5nZXQocik7dm9pZCAwPT09bj8odD17czowLHY6dm9pZCAwLG86bnVsbCxwOm51bGx9LGUuc2V0KHIsdCkpOnQ9bn19Y29uc3QgYz10O2xldCB1O2lmKDE9PT10LnMpdT10LnY7ZWxzZSBpZih1PWUuYXBwbHkobnVsbCxhcmd1bWVudHMpLGkrKyxuKXtjb25zdCBlPW8/LmRlcmVmPy4oKT8/bztudWxsIT1lJiZuKGUsdSkmJih1PWUsMCE9PWkmJmktLSk7bz0ib2JqZWN0Ij09dHlwZW9mIHUmJm51bGwhPT11fHwiZnVuY3Rpb24iPT10eXBlb2YgdT9uZXcgYSh1KTp1fXJldHVybiBjLnM9MSxjLnY9dSx1fXJldHVybiBzLmNsZWFyQ2FjaGU9KCk9PntyPXtzOjAsdjp2b2lkIDAsbzpudWxsLHA6bnVsbH0scy5yZXNldFJlc3VsdHNDb3VudCgpfSxzLnJlc3VsdHNDb3VudD0oKT0+aSxzLnJlc2V0UmVzdWx0c0NvdW50PSgpPT57aT0wfSxzfWZ1bmN0aW9uIGMoZSwuLi50KXtjb25zdCByPSJmdW5jdGlvbiI9PXR5cGVvZiBlP3ttZW1vaXplOmUsbWVtb2l6ZU9wdGlvbnM6dH06ZSxhPSguLi5lKT0+e2xldCB0LGE9MCxjPTAsdT17fSxsPWUucG9wKCk7Im9iamVjdCI9PXR5cGVvZiBsJiYodT1sLGw9ZS5wb3AoKSksbihsLGBjcmVhdGVTZWxlY3RvciBleHBlY3RzIGFuIG91dHB1dCBmdW5jdGlvbiBhZnRlciB0aGUgaW5wdXRzLCBidXQgcmVjZWl2ZWQ6IFske3R5cGVvZiBsfV1gKTtjb25zdCBmPXsuLi5yLC4uLnV9LHttZW1vaXplOmQsbWVtb2l6ZU9wdGlvbnM6cD1bXSxhcmdzTWVtb2l6ZTpfPXMsYXJnc01lbW9pemVPcHRpb25zOmg9W10sZGV2TW9kZUNoZWNrczptPXt9fT1mLHk9byhwKSxnPW8oaCksdj1pKGUpLGI9ZCgoZnVuY3Rpb24oKXtyZXR1cm4gYSsrLGwuYXBwbHkobnVsbCxhcmd1bWVudHMpfSksLi4ueSk7Y29uc3Qgdz1fKChmdW5jdGlvbigpe2MrKztjb25zdCBlPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgcj1bXSx7bGVuZ3RoOm59PWU7Zm9yKGxldCBvPTA7bzxuO28rKylyLnB1c2goZVtvXS5hcHBseShudWxsLHQpKTtyZXR1cm4gcn0odixhcmd1bWVudHMpO3JldHVybiB0PWIuYXBwbHkobnVsbCxlKSx0fSksLi4uZyk7cmV0dXJuIE9iamVjdC5hc3NpZ24odyx7cmVzdWx0RnVuYzpsLG1lbW9pemVkUmVzdWx0RnVuYzpiLGRlcGVuZGVuY2llczp2LGRlcGVuZGVuY3lSZWNvbXB1dGF0aW9uczooKT0+YyxyZXNldERlcGVuZGVuY3lSZWNvbXB1dGF0aW9uczooKT0+e2M9MH0sbGFzdFJlc3VsdDooKT0+dCxyZWNvbXB1dGF0aW9uczooKT0+YSxyZXNldFJlY29tcHV0YXRpb25zOigpPT57YT0wfSxtZW1vaXplOmQsYXJnc01lbW9pemU6X30pfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihhLHt3aXRoVHlwZXM6KCk9PmF9KSxhfXZhciB1PWMocyksbD1PYmplY3QuYXNzaWduKCgoZSx0PXUpPT57IWZ1bmN0aW9uKGUsdD0iZXhwZWN0ZWQgYW4gb2JqZWN0LCBpbnN0ZWFkIHJlY2VpdmVkICIrdHlwZW9mIGUpe2lmKCJvYmplY3QiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKHQpfShlLCJjcmVhdGVTdHJ1Y3R1cmVkU2VsZWN0b3IgZXhwZWN0cyBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3Qgd2hlcmUgZWFjaCBwcm9wZXJ0eSBpcyBhIHNlbGVjdG9yLCBpbnN0ZWFkIHJlY2VpdmVkIGEgIit0eXBlb2YgZSk7Y29uc3Qgcj1PYmplY3Qua2V5cyhlKTtyZXR1cm4gdChyLm1hcCgodD0+ZVt0XSkpLCgoLi4uZSk9PmUucmVkdWNlKCgoZSx0LG4pPT4oZVtyW25dXT10LGUpKSx7fSkpKX0pLHt3aXRoVHlwZXM6KCk9Pmx9KX0sODI1MTM6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLmQodCx7RzpmdW5jdGlvbigpe3JldHVybiBFdmVudFNvdXJjZX19KTtjbGFzcyBQYXJzZUVycm9yIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlKSx0aGlzLm5hbWU9IlBhcnNlRXJyb3IiLHRoaXMudHlwZT10LnR5cGUsdGhpcy5maWVsZD10LmZpZWxkLHRoaXMudmFsdWU9dC52YWx1ZSx0aGlzLmxpbmU9dC5saW5lfX1mdW5jdGlvbiBuKGUpe31mdW5jdGlvbiBvKGUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoImBjYWxsYmFja3NgIG11c3QgYmUgYW4gb2JqZWN0LCBnb3QgYSBmdW5jdGlvbiBpbnN0ZWFkLiBEaWQgeW91IG1lYW4gYHtvbkV2ZW50OiBmbn1gPyIpO2NvbnN0e29uRXZlbnQ6dD1uLG9uRXJyb3I6cj1uLG9uUmV0cnk6bz1uLG9uQ29tbWVudDppfT1lO2xldCBhLHM9IiIsYz0hMCx1PSIiLGw9IiI7ZnVuY3Rpb24gZihlKXtpZigiIj09PWUpcmV0dXJuIHUubGVuZ3RoPjAmJnQoe2lkOmEsZXZlbnQ6bHx8dm9pZCAwLGRhdGE6dS5lbmRzV2l0aCgiXG4iKT91LnNsaWNlKDAsLTEpOnV9KSxhPXZvaWQgMCx1PSIiLHZvaWQobD0iIik7aWYoZS5zdGFydHNXaXRoKCI6IikpcmV0dXJuIHZvaWQoaSYmaShlLnNsaWNlKGUuc3RhcnRzV2l0aCgiOiAiKT8yOjEpKSk7Y29uc3Qgcj1lLmluZGV4T2YoIjoiKTtpZigtMT09PXIpZChlLCIiLGUpO2Vsc2V7Y29uc3QgdD1lLnNsaWNlKDAsciksbj0iICI9PT1lW3IrMV0/MjoxO2QodCxlLnNsaWNlKHIrbiksZSl9fWZ1bmN0aW9uIGQoZSx0LG4pe3N3aXRjaChlKXtjYXNlImV2ZW50IjpsPXQ7YnJlYWs7Y2FzZSJkYXRhIjp1PWAke3V9JHt0fVxuYDticmVhaztjYXNlImlkIjphPXQuaW5jbHVkZXMoIlwwIik/dm9pZCAwOnQ7YnJlYWs7Y2FzZSJyZXRyeSI6L15cZCskLy50ZXN0KHQpP28ocGFyc2VJbnQodCwxMCkpOnIobmV3IFBhcnNlRXJyb3IoYEludmFsaWQgXGByZXRyeVxgIHZhbHVlOiAiJHt0fSJgLHt0eXBlOiJpbnZhbGlkLXJldHJ5Iix2YWx1ZTp0LGxpbmU6bn0pKTticmVhaztkZWZhdWx0OnIobmV3IFBhcnNlRXJyb3IoYFVua25vd24gZmllbGQgIiR7ZS5sZW5ndGg+MjA/YCR7ZS5zbGljZSgwLDIwKX3igKZgOmV9ImAse3R5cGU6InVua25vd24tZmllbGQiLGZpZWxkOmUsdmFsdWU6dCxsaW5lOm59KSl9fXJldHVybntmZWVkOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9Yz9lLnJlcGxhY2UoL15ceEVGXHhCQlx4QkYvLCIiKTplLFtyLG5dPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9W107bGV0IHI9IiIsbj0wO2Zvcig7bjxlLmxlbmd0aDspe2NvbnN0IG89ZS5pbmRleE9mKCJcciIsbiksaT1lLmluZGV4T2YoIlxuIixuKTtsZXQgYT0tMTtpZigtMSE9PW8mJi0xIT09aT9hPU1hdGgubWluKG8saSk6LTEhPT1vP2E9bz09PWUubGVuZ3RoLTE/LTE6bzotMSE9PWkmJihhPWkpLC0xPT09YSl7cj1lLnNsaWNlKG4pO2JyZWFrfXtjb25zdCByPWUuc2xpY2UobixhKTt0LnB1c2gociksbj1hKzEsIlxyIj09PWVbbi0xXSYmIlxuIj09PWVbbl0mJm4rK319cmV0dXJuW3Qscl19KGAke3N9JHt0fWApO2Zvcihjb25zdCBlIG9mIHIpZihlKTtzPW4sYz0hMX0scmVzZXQ6ZnVuY3Rpb24oZT17fSl7cyYmZS5jb25zdW1lJiZmKHMpLGM9ITAsYT12b2lkIDAsdT0iIixsPSIiLHM9IiJ9fX1jbGFzcyBFcnJvckV2ZW50IGV4dGVuZHMgRXZlbnR7Y29uc3RydWN0b3IoZSx0KXt2YXIgcixuO3N1cGVyKGUpLHRoaXMuY29kZT1udWxsIT0ocj1udWxsPT10P3ZvaWQgMDp0LmNvZGUpP3I6dm9pZCAwLHRoaXMubWVzc2FnZT1udWxsIT0obj1udWxsPT10P3ZvaWQgMDp0Lm1lc3NhZ2UpP246dm9pZCAwfVtTeW1ib2wuZm9yKCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbSIpXShlLHQscil7cmV0dXJuIHIoYSh0aGlzKSx0KX1bU3ltYm9sLmZvcigiRGVuby5jdXN0b21JbnNwZWN0IildKGUsdCl7cmV0dXJuIGUoYSh0aGlzKSx0KX19ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yPyJlcnJvcnMiaW4gZSYmQXJyYXkuaXNBcnJheShlLmVycm9ycyk/ZS5lcnJvcnMubWFwKGkpLmpvaW4oIiwgIik6ImNhdXNlImluIGUmJmUuY2F1c2UgaW5zdGFuY2VvZiBFcnJvcj9gJHtlfTogJHtpKGUuY2F1c2UpfWA6ZS5tZXNzYWdlOmAke2V9YH1mdW5jdGlvbiBhKGUpe3JldHVybnt0eXBlOmUudHlwZSxtZXNzYWdlOmUubWVzc2FnZSxjb2RlOmUuY29kZSxkZWZhdWx0UHJldmVudGVkOmUuZGVmYXVsdFByZXZlbnRlZCxjYW5jZWxhYmxlOmUuY2FuY2VsYWJsZSx0aW1lU3RhbXA6ZS50aW1lU3RhbXB9fXZhciBzLGMsdSxsLGYsZCxwLF8saCxtLHksZyx2LGIsdyxTLGsseCxFLEEsVCxSLFAsTz1lPT57dGhyb3cgVHlwZUVycm9yKGUpfSxNPShlLHQscik9PnQuaGFzKGUpfHxPKCJDYW5ub3QgIityKSxGPShlLHQscik9PihNKGUsdCwicmVhZCBmcm9tIHByaXZhdGUgZmllbGQiKSxyP3IuY2FsbChlKTp0LmdldChlKSksST0oZSx0LHIpPT50LmhhcyhlKT9PKCJDYW5ub3QgYWRkIHRoZSBzYW1lIHByaXZhdGUgbWVtYmVyIG1vcmUgdGhhbiBvbmNlIik6dCBpbnN0YW5jZW9mIFdlYWtTZXQ/dC5hZGQoZSk6dC5zZXQoZSxyKSxqPShlLHQscixuKT0+KE0oZSx0LCJ3cml0ZSB0byBwcml2YXRlIGZpZWxkIiksdC5zZXQoZSxyKSxyKSxEPShlLHQscik9PihNKGUsdCwiYWNjZXNzIHByaXZhdGUgbWV0aG9kIikscik7Y2xhc3MgRXZlbnRTb3VyY2UgZXh0ZW5kcyBFdmVudFRhcmdldHtjb25zdHJ1Y3RvcihlLHQpe3ZhciByLG47c3VwZXIoKSxJKHRoaXMsYiksdGhpcy5DT05ORUNUSU5HPTAsdGhpcy5PUEVOPTEsdGhpcy5DTE9TRUQ9MixJKHRoaXMscyksSSh0aGlzLGMpLEkodGhpcyx1KSxJKHRoaXMsbCksSSh0aGlzLGYpLEkodGhpcyxkKSxJKHRoaXMscCksSSh0aGlzLF8sbnVsbCksSSh0aGlzLGgpLEkodGhpcyxtKSxJKHRoaXMseSxudWxsKSxJKHRoaXMsZyxudWxsKSxJKHRoaXMsdixudWxsKSxJKHRoaXMsUywoYXN5bmMgZT0+e3ZhciB0O0YodGhpcyxtKS5yZXNldCgpO2NvbnN0e2JvZHk6cixyZWRpcmVjdGVkOm4sc3RhdHVzOm8saGVhZGVyczppfT1lO2lmKDIwND09PW8pcmV0dXJuIEQodGhpcyxiLFQpLmNhbGwodGhpcywiU2VydmVyIHNlbnQgSFRUUCAyMDQsIG5vdCByZWNvbm5lY3RpbmciLDIwNCksdm9pZCB0aGlzLmNsb3NlKCk7aWYoaih0aGlzLHUsbj9uZXcgVVJMKGUudXJsKTp2b2lkIDApLDIwMCE9PW8pcmV0dXJuIHZvaWQgRCh0aGlzLGIsVCkuY2FsbCh0aGlzLGBOb24tMjAwIHN0YXR1cyBjb2RlICgke299KWAsbyk7aWYoIShpLmdldCgiY29udGVudC10eXBlIil8fCIiKS5zdGFydHNXaXRoKCJ0ZXh0L2V2ZW50LXN0cmVhbSIpKXJldHVybiB2b2lkIEQodGhpcyxiLFQpLmNhbGwodGhpcywnSW52YWxpZCBjb250ZW50IHR5cGUsIGV4cGVjdGVkICJ0ZXh0L2V2ZW50LXN0cmVhbSInLG8pO2lmKEYodGhpcyxzKT09PXRoaXMuQ0xPU0VEKXJldHVybjtqKHRoaXMscyx0aGlzLk9QRU4pO2NvbnN0IGE9bmV3IEV2ZW50KCJvcGVuIik7aWYobnVsbD09KHQ9Rih0aGlzLHYpKXx8dC5jYWxsKHRoaXMsYSksdGhpcy5kaXNwYXRjaEV2ZW50KGEpLCJvYmplY3QiIT10eXBlb2Ygcnx8IXJ8fCEoImdldFJlYWRlciJpbiByKSlyZXR1cm4gRCh0aGlzLGIsVCkuY2FsbCh0aGlzLCJJbnZhbGlkIHJlc3BvbnNlIGJvZHksIGV4cGVjdGVkIGEgd2ViIFJlYWRhYmxlU3RyZWFtIixvKSx2b2lkIHRoaXMuY2xvc2UoKTtjb25zdCBjPW5ldyBUZXh0RGVjb2RlcixsPXIuZ2V0UmVhZGVyKCk7bGV0IGY9ITA7ZG97Y29uc3R7ZG9uZTplLHZhbHVlOnR9PWF3YWl0IGwucmVhZCgpO3QmJkYodGhpcyxtKS5mZWVkKGMuZGVjb2RlKHQse3N0cmVhbTohZX0pKSxlJiYoZj0hMSxGKHRoaXMsbSkucmVzZXQoKSxEKHRoaXMsYixSKS5jYWxsKHRoaXMpKX13aGlsZShmKX0pKSxJKHRoaXMsaywoZT0+e2oodGhpcyxoLHZvaWQgMCksIkFib3J0RXJyb3IiIT09ZS5uYW1lJiYiYWJvcnRlZCIhPT1lLnR5cGUmJkQodGhpcyxiLFIpLmNhbGwodGhpcyxpKGUpKX0pKSxJKHRoaXMsRSwoZT0+eyJzdHJpbmciPT10eXBlb2YgZS5pZCYmaih0aGlzLF8sZS5pZCk7Y29uc3QgdD1uZXcgTWVzc2FnZUV2ZW50KGUuZXZlbnR8fCJtZXNzYWdlIix7ZGF0YTplLmRhdGEsb3JpZ2luOkYodGhpcyx1KT9GKHRoaXMsdSkub3JpZ2luOkYodGhpcyxjKS5vcmlnaW4sbGFzdEV2ZW50SWQ6ZS5pZHx8IiJ9KTtGKHRoaXMsZykmJighZS5ldmVudHx8Im1lc3NhZ2UiPT09ZS5ldmVudCkmJkYodGhpcyxnKS5jYWxsKHRoaXMsdCksdGhpcy5kaXNwYXRjaEV2ZW50KHQpfSkpLEkodGhpcyxBLChlPT57aih0aGlzLGQsZSl9KSksSSh0aGlzLFAsKCgpPT57aih0aGlzLHAsdm9pZCAwKSxGKHRoaXMscyk9PT10aGlzLkNPTk5FQ1RJTkcmJkQodGhpcyxiLHcpLmNhbGwodGhpcyl9KSk7dHJ5e2lmKGUgaW5zdGFuY2VvZiBVUkwpaih0aGlzLGMsZSk7ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFVSTCIpO2oodGhpcyxjLG5ldyBVUkwoZSxmdW5jdGlvbigpe2NvbnN0IGU9ImRvY3VtZW50ImluIGdsb2JhbFRoaXM/Z2xvYmFsVGhpcy5kb2N1bWVudDp2b2lkIDA7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmImJhc2VVUkkiaW4gZSYmInN0cmluZyI9PXR5cGVvZiBlLmJhc2VVUkk/ZS5iYXNlVVJJOnZvaWQgMH0oKSkpfX1jYXRjaHt0aHJvdyBmdW5jdGlvbihlKXtjb25zdCB0PWdsb2JhbFRoaXMuRE9NRXhjZXB0aW9uO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P25ldyB0KGUsIlN5bnRheEVycm9yIik6bmV3IFN5bnRheEVycm9yKGUpfSgiQW4gaW52YWxpZCBvciBpbGxlZ2FsIHN0cmluZyB3YXMgc3BlY2lmaWVkIil9aih0aGlzLG0sbyh7b25FdmVudDpGKHRoaXMsRSksb25SZXRyeTpGKHRoaXMsQSl9KSksaih0aGlzLHMsdGhpcy5DT05ORUNUSU5HKSxqKHRoaXMsZCwzZTMpLGoodGhpcyxmLG51bGwhPShyPW51bGw9PXQ/dm9pZCAwOnQuZmV0Y2gpP3I6Z2xvYmFsVGhpcy5mZXRjaCksaih0aGlzLGwsbnVsbCE9KG49bnVsbD09dD92b2lkIDA6dC53aXRoQ3JlZGVudGlhbHMpJiZuKSxEKHRoaXMsYix3KS5jYWxsKHRoaXMpfWdldCByZWFkeVN0YXRlKCl7cmV0dXJuIEYodGhpcyxzKX1nZXQgdXJsKCl7cmV0dXJuIEYodGhpcyxjKS5ocmVmfWdldCB3aXRoQ3JlZGVudGlhbHMoKXtyZXR1cm4gRih0aGlzLGwpfWdldCBvbmVycm9yKCl7cmV0dXJuIEYodGhpcyx5KX1zZXQgb25lcnJvcihlKXtqKHRoaXMseSxlKX1nZXQgb25tZXNzYWdlKCl7cmV0dXJuIEYodGhpcyxnKX1zZXQgb25tZXNzYWdlKGUpe2oodGhpcyxnLGUpfWdldCBvbm9wZW4oKXtyZXR1cm4gRih0aGlzLHYpfXNldCBvbm9wZW4oZSl7aih0aGlzLHYsZSl9YWRkRXZlbnRMaXN0ZW5lcihlLHQscil7Y29uc3Qgbj10O3N1cGVyLmFkZEV2ZW50TGlzdGVuZXIoZSxuLHIpfXJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0LHIpe2NvbnN0IG49dDtzdXBlci5yZW1vdmVFdmVudExpc3RlbmVyKGUsbixyKX1jbG9zZSgpe0YodGhpcyxwKSYmY2xlYXJUaW1lb3V0KEYodGhpcyxwKSksRih0aGlzLHMpIT09dGhpcy5DTE9TRUQmJihGKHRoaXMsaCkmJkYodGhpcyxoKS5hYm9ydCgpLGoodGhpcyxzLHRoaXMuQ0xPU0VEKSxqKHRoaXMsaCx2b2lkIDApKX19cz1uZXcgV2Vha01hcCxjPW5ldyBXZWFrTWFwLHU9bmV3IFdlYWtNYXAsbD1uZXcgV2Vha01hcCxmPW5ldyBXZWFrTWFwLGQ9bmV3IFdlYWtNYXAscD1uZXcgV2Vha01hcCxfPW5ldyBXZWFrTWFwLGg9bmV3IFdlYWtNYXAsbT1uZXcgV2Vha01hcCx5PW5ldyBXZWFrTWFwLGc9bmV3IFdlYWtNYXAsdj1uZXcgV2Vha01hcCxiPW5ldyBXZWFrU2V0LHc9ZnVuY3Rpb24oKXtqKHRoaXMscyx0aGlzLkNPTk5FQ1RJTkcpLGoodGhpcyxoLG5ldyBBYm9ydENvbnRyb2xsZXIpLEYodGhpcyxmKShGKHRoaXMsYyksRCh0aGlzLGIseCkuY2FsbCh0aGlzKSkudGhlbihGKHRoaXMsUykpLmNhdGNoKEYodGhpcyxrKSl9LFM9bmV3IFdlYWtNYXAsaz1uZXcgV2Vha01hcCx4PWZ1bmN0aW9uKCl7dmFyIGU7Y29uc3QgdD17bW9kZToiY29ycyIscmVkaXJlY3Q6ImZvbGxvdyIsaGVhZGVyczp7QWNjZXB0OiJ0ZXh0L2V2ZW50LXN0cmVhbSIsLi4uRih0aGlzLF8pP3siTGFzdC1FdmVudC1JRCI6Rih0aGlzLF8pfTp2b2lkIDB9LGNhY2hlOiJuby1zdG9yZSIsc2lnbmFsOm51bGw9PShlPUYodGhpcyxoKSk/dm9pZCAwOmUuc2lnbmFsfTtyZXR1cm4id2luZG93ImluIGdsb2JhbFRoaXMmJih0LmNyZWRlbnRpYWxzPXRoaXMud2l0aENyZWRlbnRpYWxzPyJpbmNsdWRlIjoic2FtZS1vcmlnaW4iKSx0fSxFPW5ldyBXZWFrTWFwLEE9bmV3IFdlYWtNYXAsVD1mdW5jdGlvbihlLHQpe3ZhciByO0YodGhpcyxzKSE9PXRoaXMuQ0xPU0VEJiZqKHRoaXMscyx0aGlzLkNMT1NFRCk7Y29uc3Qgbj1uZXcgRXJyb3JFdmVudCgiZXJyb3IiLHtjb2RlOnQsbWVzc2FnZTplfSk7bnVsbD09KHI9Rih0aGlzLHkpKXx8ci5jYWxsKHRoaXMsbiksdGhpcy5kaXNwYXRjaEV2ZW50KG4pfSxSPWZ1bmN0aW9uKGUsdCl7dmFyIHI7aWYoRih0aGlzLHMpPT09dGhpcy5DTE9TRUQpcmV0dXJuO2oodGhpcyxzLHRoaXMuQ09OTkVDVElORyk7Y29uc3Qgbj1uZXcgRXJyb3JFdmVudCgiZXJyb3IiLHtjb2RlOnQsbWVzc2FnZTplfSk7bnVsbD09KHI9Rih0aGlzLHkpKXx8ci5jYWxsKHRoaXMsbiksdGhpcy5kaXNwYXRjaEV2ZW50KG4pLGoodGhpcyxwLHNldFRpbWVvdXQoRih0aGlzLFApLEYodGhpcyxkKSkpfSxQPW5ldyBXZWFrTWFwLEV2ZW50U291cmNlLkNPTk5FQ1RJTkc9MCxFdmVudFNvdXJjZS5PUEVOPTEsRXZlbnRTb3VyY2UuQ0xPU0VEPTJ9LDcxNDY4OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5kKHQse0txOmZ1bmN0aW9uKCl7cmV0dXJuIG9lfSxOZzpmdW5jdGlvbigpe3JldHVybiBuZX0sZDQ6ZnVuY3Rpb24oKXtyZXR1cm4gcGV9LHdBOmZ1bmN0aW9uKCl7cmV0dXJuIGxlfX0pO3ZhciBuPXIoOTY1NDApLG89cig3ODQxOCksaT1uLnZlcnNpb24uc3RhcnRzV2l0aCgiMTkiKSxhPVN5bWJvbC5mb3IoaT8icmVhY3QudHJhbnNpdGlvbmFsLmVsZW1lbnQiOiJyZWFjdC5lbGVtZW50Iikscz1TeW1ib2wuZm9yKCJyZWFjdC5wb3J0YWwiKSxjPVN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50IiksdT1TeW1ib2wuZm9yKCJyZWFjdC5zdHJpY3RfbW9kZSIpLGw9U3ltYm9sLmZvcigicmVhY3QucHJvZmlsZXIiKSxmPVN5bWJvbC5mb3IoInJlYWN0LmNvbnN1bWVyIiksZD1TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0IikscD1TeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpLF89U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKSxoPVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlX2xpc3QiKSxtPVN5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKSx5PVN5bWJvbC5mb3IoInJlYWN0LmxhenkiKSxnPXAsdj1tO2Z1bmN0aW9uIGIoZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSl7Y29uc3R7JCR0eXBlb2Y6dH09ZTtzd2l0Y2godCl7Y2FzZSBhOnN3aXRjaChlPWUudHlwZSl7Y2FzZSBjOmNhc2UgbDpjYXNlIHU6Y2FzZSBfOmNhc2UgaDpyZXR1cm4gZTtkZWZhdWx0OnN3aXRjaChlPWUmJmUuJCR0eXBlb2Ype2Nhc2UgZDpjYXNlIHA6Y2FzZSB5OmNhc2UgbTpjYXNlIGY6cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm4gdH19Y2FzZSBzOnJldHVybiB0fX19ZnVuY3Rpb24gdyhlLHQscixuLHthcmVTdGF0ZXNFcXVhbDpvLGFyZU93blByb3BzRXF1YWw6aSxhcmVTdGF0ZVByb3BzRXF1YWw6YX0pe2xldCBzLGMsdSxsLGYsZD0hMTtmdW5jdGlvbiBwKGQscCl7Y29uc3QgXz0haShwLGMpLGg9IW8oZCxzLHAsYyk7cmV0dXJuIHM9ZCxjPXAsXyYmaD8odT1lKHMsYyksdC5kZXBlbmRzT25Pd25Qcm9wcyYmKGw9dChuLGMpKSxmPXIodSxsLGMpLGYpOl8/KGUuZGVwZW5kc09uT3duUHJvcHMmJih1PWUocyxjKSksdC5kZXBlbmRzT25Pd25Qcm9wcyYmKGw9dChuLGMpKSxmPXIodSxsLGMpLGYpOmg/ZnVuY3Rpb24oKXtjb25zdCB0PWUocyxjKSxuPSFhKHQsdSk7cmV0dXJuIHU9dCxuJiYoZj1yKHUsbCxjKSksZn0oKTpmfXJldHVybiBmdW5jdGlvbihvLGkpe3JldHVybiBkP3AobyxpKToocz1vLGM9aSx1PWUocyxjKSxsPXQobixjKSxmPXIodSxsLGMpLGQ9ITAsZil9fWZ1bmN0aW9uIFMoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0IHI9ZSh0KTtmdW5jdGlvbiBuKCl7cmV0dXJuIHJ9cmV0dXJuIG4uZGVwZW5kc09uT3duUHJvcHM9ITEsbn19ZnVuY3Rpb24gayhlKXtyZXR1cm4gZS5kZXBlbmRzT25Pd25Qcm9wcz9Cb29sZWFuKGUuZGVwZW5kc09uT3duUHJvcHMpOjEhPT1lLmxlbmd0aH1mdW5jdGlvbiB4KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHQse2Rpc3BsYXlOYW1lOnJ9KXtjb25zdCBuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4uZGVwZW5kc09uT3duUHJvcHM/bi5tYXBUb1Byb3BzKGUsdCk6bi5tYXBUb1Byb3BzKGUsdm9pZCAwKX07cmV0dXJuIG4uZGVwZW5kc09uT3duUHJvcHM9ITAsbi5tYXBUb1Byb3BzPWZ1bmN0aW9uKHQscil7bi5tYXBUb1Byb3BzPWUsbi5kZXBlbmRzT25Pd25Qcm9wcz1rKGUpO2xldCBvPW4odCxyKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbyYmKG4ubWFwVG9Qcm9wcz1vLG4uZGVwZW5kc09uT3duUHJvcHM9ayhvKSxvPW4odCxyKSksb30sbn19ZnVuY3Rpb24gRShlLHQpe3JldHVybihyLG4pPT57dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHZhbHVlIG9mIHR5cGUgJHt0eXBlb2YgZX0gZm9yICR7dH0gYXJndW1lbnQgd2hlbiBjb25uZWN0aW5nIGNvbXBvbmVudCAke24ud3JhcHBlZENvbXBvbmVudE5hbWV9LmApfX1mdW5jdGlvbiBBKGUsdCxyKXtyZXR1cm57Li4uciwuLi5lLC4uLnR9fWZ1bmN0aW9uIFQoZSl7ZSgpfXZhciBSPXtub3RpZnkoKXt9LGdldDooKT0+W119O2Z1bmN0aW9uIFAoZSx0KXtsZXQgcixuPVIsbz0wLGk9ITE7ZnVuY3Rpb24gYSgpe3Uub25TdGF0ZUNoYW5nZSYmdS5vblN0YXRlQ2hhbmdlKCl9ZnVuY3Rpb24gcygpe28rKyxyfHwocj10P3QuYWRkTmVzdGVkU3ViKGEpOmUuc3Vic2NyaWJlKGEpLG49ZnVuY3Rpb24oKXtsZXQgZT1udWxsLHQ9bnVsbDtyZXR1cm57Y2xlYXIoKXtlPW51bGwsdD1udWxsfSxub3RpZnkoKXtUKCgoKT0+e2xldCB0PWU7Zm9yKDt0Oyl0LmNhbGxiYWNrKCksdD10Lm5leHR9KSl9LGdldCgpe2NvbnN0IHQ9W107bGV0IHI9ZTtmb3IoO3I7KXQucHVzaChyKSxyPXIubmV4dDtyZXR1cm4gdH0sc3Vic2NyaWJlKHIpe2xldCBuPSEwO2NvbnN0IG89dD17Y2FsbGJhY2s6cixuZXh0Om51bGwscHJldjp0fTtyZXR1cm4gby5wcmV2P28ucHJldi5uZXh0PW86ZT1vLGZ1bmN0aW9uKCl7biYmbnVsbCE9PWUmJihuPSExLG8ubmV4dD9vLm5leHQucHJldj1vLnByZXY6dD1vLnByZXYsby5wcmV2P28ucHJldi5uZXh0PW8ubmV4dDplPW8ubmV4dCl9fX19KCkpfWZ1bmN0aW9uIGMoKXtvLS0sciYmMD09PW8mJihyKCkscj12b2lkIDAsbi5jbGVhcigpLG49Uil9Y29uc3QgdT17YWRkTmVzdGVkU3ViOmZ1bmN0aW9uKGUpe3MoKTtjb25zdCB0PW4uc3Vic2NyaWJlKGUpO2xldCByPSExO3JldHVybigpPT57cnx8KHI9ITAsdCgpLGMoKSl9fSxub3RpZnlOZXN0ZWRTdWJzOmZ1bmN0aW9uKCl7bi5ub3RpZnkoKX0saGFuZGxlQ2hhbmdlV3JhcHBlcjphLGlzU3Vic2NyaWJlZDpmdW5jdGlvbigpe3JldHVybiBpfSx0cnlTdWJzY3JpYmU6ZnVuY3Rpb24oKXtpfHwoaT0hMCxzKCkpfSx0cnlVbnN1YnNjcmliZTpmdW5jdGlvbigpe2kmJihpPSExLGMoKSl9LGdldExpc3RlbmVyczooKT0+bn07cmV0dXJuIHV9dmFyIE89KCgpPT4hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHx2b2lkIDA9PT13aW5kb3cuZG9jdW1lbnR8fHZvaWQgMD09PXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KSkoKSxNPSgoKT0+InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJiJSZWFjdE5hdGl2ZSI9PT1uYXZpZ2F0b3IucHJvZHVjdCkoKSxGPSgoKT0+T3x8TT9uLnVzZUxheW91dEVmZmVjdDpuLnVzZUVmZmVjdCkoKTtmdW5jdGlvbiBJKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwwIT09dHx8MS9lPT0xL3Q6ZSE9ZSYmdCE9dH1mdW5jdGlvbiBqKGUsdCl7aWYoSShlLHQpKXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7Y29uc3Qgcj1PYmplY3Qua2V5cyhlKSxuPU9iamVjdC5rZXlzKHQpO2lmKHIubGVuZ3RoIT09bi5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTA7bjxyLmxlbmd0aDtuKyspaWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHJbbl0pfHwhSShlW3Jbbl1dLHRbcltuXV0pKXJldHVybiExO3JldHVybiEwfXZhciBEPXtjaGlsZENvbnRleHRUeXBlczohMCxjb250ZXh0VHlwZTohMCxjb250ZXh0VHlwZXM6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLGdldERlZmF1bHRQcm9wczohMCxnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I6ITAsZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOiEwLG1peGluczohMCxwcm9wVHlwZXM6ITAsdHlwZTohMH0sTD17bmFtZTohMCxsZW5ndGg6ITAscHJvdG90eXBlOiEwLGNhbGxlcjohMCxjYWxsZWU6ITAsYXJndW1lbnRzOiEwLGFyaXR5OiEwfSxVPXskJHR5cGVvZjohMCxjb21wYXJlOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxwcm9wVHlwZXM6ITAsdHlwZTohMH0sej17W2ddOnskJHR5cGVvZjohMCxyZW5kZXI6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLHByb3BUeXBlczohMH0sW3ZdOlV9O2Z1bmN0aW9uIEIoZSl7cmV0dXJuIGIoZSk9PT1tP1U6eltlLiQkdHlwZW9mXXx8RH12YXIgSD1PYmplY3QuZGVmaW5lUHJvcGVydHksVz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcywkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMscT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLEc9T2JqZWN0LmdldFByb3RvdHlwZU9mLFY9T2JqZWN0LnByb3RvdHlwZTtmdW5jdGlvbiBZKGUsdCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXtpZihWKXtjb25zdCByPUcodCk7ciYmciE9PVYmJlkoZSxyKX1sZXQgcj1XKHQpOyQmJihyPXIuY29uY2F0KCQodCkpKTtjb25zdCBuPUIoZSksbz1CKHQpO2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7KytpKXtjb25zdCBhPXJbaV07aWYoIShMW2FdfHxvJiZvW2FdfHxuJiZuW2FdKSl7Y29uc3Qgcj1xKHQsYSk7dHJ5e0goZSxhLHIpfWNhdGNoKGUpe319fX1yZXR1cm4gZX12YXIgSz1TeW1ib2wuZm9yKCJyZWFjdC1yZWR1eC1jb250ZXh0IiksWD0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczp7fTtmdW5jdGlvbiBaKCl7aWYoIW4uY3JlYXRlQ29udGV4dClyZXR1cm57fTtjb25zdCBlPVhbS10/Pz1uZXcgTWFwO2xldCB0PWUuZ2V0KG4uY3JlYXRlQ29udGV4dCk7cmV0dXJuIHR8fCh0PW4uY3JlYXRlQ29udGV4dChudWxsKSxlLnNldChuLmNyZWF0ZUNvbnRleHQsdCkpLHR9dmFyIFE9WigpLGVlPVtudWxsLG51bGxdO2Z1bmN0aW9uIHRlKGUsdCxyLG4sbyxpKXtlLmN1cnJlbnQ9bixyLmN1cnJlbnQ9ITEsby5jdXJyZW50JiYoby5jdXJyZW50PW51bGwsaSgpKX1mdW5jdGlvbiByZShlLHQpe3JldHVybiBlPT09dH12YXIgbmU9ZnVuY3Rpb24oZSx0LHIse3B1cmU6byxhcmVTdGF0ZXNFcXVhbDppPXJlLGFyZU93blByb3BzRXF1YWw6YT1qLGFyZVN0YXRlUHJvcHNFcXVhbDpzPWosYXJlTWVyZ2VkUHJvcHNFcXVhbDpjPWosZm9yd2FyZFJlZjp1PSExLGNvbnRleHQ6bD1RfT17fSl7Y29uc3QgZj1sLGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ImZ1bmN0aW9uIj09dHlwZW9mIGU/eChlKTpFKGUsIm1hcFN0YXRlVG9Qcm9wcyIpOlMoKCgpPT4oe30pKSl9KGUpLHA9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZT9TKCh0PT5mdW5jdGlvbihlLHQpe2NvbnN0IHI9e307Zm9yKGNvbnN0IG4gaW4gZSl7Y29uc3Qgbz1lW25dOyJmdW5jdGlvbiI9PXR5cGVvZiBvJiYocltuXT0oLi4uZSk9PnQobyguLi5lKSkpfXJldHVybiByfShlLHQpKSk6ZT8iZnVuY3Rpb24iPT10eXBlb2YgZT94KGUpOkUoZSwibWFwRGlzcGF0Y2hUb1Byb3BzIik6UygoZT0+KHtkaXNwYXRjaDplfSkpKX0odCksXz1mdW5jdGlvbihlKXtyZXR1cm4gZT8iZnVuY3Rpb24iPT10eXBlb2YgZT9mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCx7ZGlzcGxheU5hbWU6cixhcmVNZXJnZWRQcm9wc0VxdWFsOm59KXtsZXQgbyxpPSExO3JldHVybiBmdW5jdGlvbih0LHIsYSl7Y29uc3Qgcz1lKHQscixhKTtyZXR1cm4gaT9uKHMsbyl8fChvPXMpOihpPSEwLG89cyksb319fShlKTpFKGUsIm1lcmdlUHJvcHMiKTooKT0+QX0ociksaD1Cb29sZWFuKGUpO3JldHVybiBlPT57Y29uc3QgdD1lLmRpc3BsYXlOYW1lfHxlLm5hbWV8fCJDb21wb25lbnQiLHI9YENvbm5lY3QoJHt0fSlgLG89e3Nob3VsZEhhbmRsZVN0YXRlQ2hhbmdlczpoLGRpc3BsYXlOYW1lOnIsd3JhcHBlZENvbXBvbmVudE5hbWU6dCxXcmFwcGVkQ29tcG9uZW50OmUsaW5pdE1hcFN0YXRlVG9Qcm9wczpkLGluaXRNYXBEaXNwYXRjaFRvUHJvcHM6cCxpbml0TWVyZ2VQcm9wczpfLGFyZVN0YXRlc0VxdWFsOmksYXJlU3RhdGVQcm9wc0VxdWFsOnMsYXJlT3duUHJvcHNFcXVhbDphLGFyZU1lcmdlZFByb3BzRXF1YWw6Y307ZnVuY3Rpb24gbCh0KXtjb25zdFtyLGksYV09bi51c2VNZW1vKCgoKT0+e2NvbnN0e3JlYWN0UmVkdXhGb3J3YXJkZWRSZWY6ZSwuLi5yfT10O3JldHVyblt0LmNvbnRleHQsZSxyXX0pLFt0XSkscz1uLnVzZU1lbW8oKCgpPT5mKSxbcixmXSksYz1uLnVzZUNvbnRleHQocyksdT1Cb29sZWFuKHQuc3RvcmUpJiZCb29sZWFuKHQuc3RvcmUuZ2V0U3RhdGUpJiZCb29sZWFuKHQuc3RvcmUuZGlzcGF0Y2gpLGw9Qm9vbGVhbihjKSYmQm9vbGVhbihjLnN0b3JlKTtjb25zdCBkPXU/dC5zdG9yZTpjLnN0b3JlLHA9bD9jLmdldFNlcnZlclN0YXRlOmQuZ2V0U3RhdGUsXz1uLnVzZU1lbW8oKCgpPT5mdW5jdGlvbihlLHtpbml0TWFwU3RhdGVUb1Byb3BzOnQsaW5pdE1hcERpc3BhdGNoVG9Qcm9wczpyLGluaXRNZXJnZVByb3BzOm4sLi4ub30pe3JldHVybiB3KHQoZSxvKSxyKGUsbyksbihlLG8pLGUsbyl9KGQuZGlzcGF0Y2gsbykpLFtkXSksW20seV09bi51c2VNZW1vKCgoKT0+e2lmKCFoKXJldHVybiBlZTtjb25zdCBlPVAoZCx1P3ZvaWQgMDpjLnN1YnNjcmlwdGlvbiksdD1lLm5vdGlmeU5lc3RlZFN1YnMuYmluZChlKTtyZXR1cm5bZSx0XX0pLFtkLHUsY10pLGc9bi51c2VNZW1vKCgoKT0+dT9jOnsuLi5jLHN1YnNjcmlwdGlvbjptfSksW3UsYyxtXSksdj1uLnVzZVJlZih2b2lkIDApLGI9bi51c2VSZWYoYSksUz1uLnVzZVJlZih2b2lkIDApLGs9bi51c2VSZWYoITEpLHg9bi51c2VSZWYoITEpLEU9bi51c2VSZWYodm9pZCAwKTtGKCgoKT0+KHguY3VycmVudD0hMCwoKT0+e3guY3VycmVudD0hMX0pKSxbXSk7Y29uc3QgQT1uLnVzZU1lbW8oKCgpPT4oKT0+Uy5jdXJyZW50JiZhPT09Yi5jdXJyZW50P1MuY3VycmVudDpfKGQuZ2V0U3RhdGUoKSxhKSksW2QsYV0pLFQ9bi51c2VNZW1vKCgoKT0+ZT0+bT9mdW5jdGlvbihlLHQscixuLG8saSxhLHMsYyx1LGwpe2lmKCFlKXJldHVybigpPT57fTtsZXQgZj0hMSxkPW51bGw7Y29uc3QgcD0oKT0+e2lmKGZ8fCFzLmN1cnJlbnQpcmV0dXJuO2NvbnN0IGU9dC5nZXRTdGF0ZSgpO2xldCByLHA7dHJ5e3I9bihlLG8uY3VycmVudCl9Y2F0Y2goZSl7cD1lLGQ9ZX1wfHwoZD1udWxsKSxyPT09aS5jdXJyZW50P2EuY3VycmVudHx8dSgpOihpLmN1cnJlbnQ9cixjLmN1cnJlbnQ9cixhLmN1cnJlbnQ9ITAsbCgpKX07cmV0dXJuIHIub25TdGF0ZUNoYW5nZT1wLHIudHJ5U3Vic2NyaWJlKCkscCgpLCgpPT57aWYoZj0hMCxyLnRyeVVuc3Vic2NyaWJlKCksci5vblN0YXRlQ2hhbmdlPW51bGwsZCl0aHJvdyBkfX0oaCxkLG0sXyxiLHYsayx4LFMseSxlKTooKT0+e30pLFttXSk7dmFyIFIsTyxNO2xldCBJO1I9dGUsTz1bYix2LGssYSxTLHldLEYoKCgpPT5SKC4uLk8pKSxNKTt0cnl7ST1uLnVzZVN5bmNFeHRlcm5hbFN0b3JlKFQsQSxwPygpPT5fKHAoKSxhKTpBKX1jYXRjaChlKXt0aHJvdyBFLmN1cnJlbnQmJihlLm1lc3NhZ2UrPWBcblRoZSBlcnJvciBtYXkgYmUgY29ycmVsYXRlZCB3aXRoIHRoaXMgcHJldmlvdXMgZXJyb3I6XG4ke0UuY3VycmVudC5zdGFja31cblxuYCksZX1GKCgoKT0+e0UuY3VycmVudD12b2lkIDAsUy5jdXJyZW50PXZvaWQgMCx2LmN1cnJlbnQ9SX0pKTtjb25zdCBqPW4udXNlTWVtbygoKCk9Pm4uY3JlYXRlRWxlbWVudChlLHsuLi5JLHJlZjppfSkpLFtpLGUsSV0pO3JldHVybiBuLnVzZU1lbW8oKCgpPT5oP24uY3JlYXRlRWxlbWVudChzLlByb3ZpZGVyLHt2YWx1ZTpnfSxqKTpqKSxbcyxqLGddKX1jb25zdCBtPW4ubWVtbyhsKTtpZihtLldyYXBwZWRDb21wb25lbnQ9ZSxtLmRpc3BsYXlOYW1lPWwuZGlzcGxheU5hbWU9cix1KXtjb25zdCB0PW4uZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jcmVhdGVFbGVtZW50KG0sey4uLmUscmVhY3RSZWR1eEZvcndhcmRlZFJlZjp0fSl9KSk7cmV0dXJuIHQuZGlzcGxheU5hbWU9cix0LldyYXBwZWRDb21wb25lbnQ9ZSxZKHQsZSl9cmV0dXJuIFkobSxlKX19O3ZhciBvZT1mdW5jdGlvbihlKXtjb25zdHtjaGlsZHJlbjp0LGNvbnRleHQ6cixzZXJ2ZXJTdGF0ZTpvLHN0b3JlOml9PWUsYT1uLnVzZU1lbW8oKCgpPT57Y29uc3QgZT1QKGkpO3JldHVybntzdG9yZTppLHN1YnNjcmlwdGlvbjplLGdldFNlcnZlclN0YXRlOm8/KCk9Pm86dm9pZCAwfX0pLFtpLG9dKSxzPW4udXNlTWVtbygoKCk9PmkuZ2V0U3RhdGUoKSksW2ldKTtGKCgoKT0+e2NvbnN0e3N1YnNjcmlwdGlvbjplfT1hO3JldHVybiBlLm9uU3RhdGVDaGFuZ2U9ZS5ub3RpZnlOZXN0ZWRTdWJzLGUudHJ5U3Vic2NyaWJlKCkscyE9PWkuZ2V0U3RhdGUoKSYmZS5ub3RpZnlOZXN0ZWRTdWJzKCksKCk9PntlLnRyeVVuc3Vic2NyaWJlKCksZS5vblN0YXRlQ2hhbmdlPXZvaWQgMH19KSxbYSxzXSk7Y29uc3QgYz1yfHxRO3JldHVybiBuLmNyZWF0ZUVsZW1lbnQoYy5Qcm92aWRlcix7dmFsdWU6YX0sdCl9O2Z1bmN0aW9uIGllKGU9USl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4udXNlQ29udGV4dChlKX19dmFyIGFlPWllKCk7ZnVuY3Rpb24gc2UoZT1RKXtjb25zdCB0PWU9PT1RP2FlOmllKGUpLHI9KCk9Pntjb25zdHtzdG9yZTplfT10KCk7cmV0dXJuIGV9O3JldHVybiBPYmplY3QuYXNzaWduKHIse3dpdGhUeXBlczooKT0+cn0pLHJ9dmFyIGNlPXNlKCk7ZnVuY3Rpb24gdWUoZT1RKXtjb25zdCB0PWU9PT1RP2NlOnNlKGUpLHI9KCk9PnQoKS5kaXNwYXRjaDtyZXR1cm4gT2JqZWN0LmFzc2lnbihyLHt3aXRoVHlwZXM6KCk9PnJ9KSxyfXZhciBsZT11ZSgpLGZlPShlLHQpPT5lPT09dDtmdW5jdGlvbiBkZShlPVEpe2NvbnN0IHQ9ZT09PVE/YWU6aWUoZSkscj0oZSxyPXt9KT0+e2NvbnN0e2VxdWFsaXR5Rm46aT1mZX09ImZ1bmN0aW9uIj09dHlwZW9mIHI/e2VxdWFsaXR5Rm46cn06cjtjb25zdCBhPXQoKSx7c3RvcmU6cyxzdWJzY3JpcHRpb246YyxnZXRTZXJ2ZXJTdGF0ZTp1fT1hLGw9KG4udXNlUmVmKCEwKSxuLnVzZUNhbGxiYWNrKHtbZS5uYW1lXSh0KXtyZXR1cm4gZSh0KX19W2UubmFtZV0sW2VdKSksZj0oMCxvLnVzZVN5bmNFeHRlcm5hbFN0b3JlV2l0aFNlbGVjdG9yKShjLmFkZE5lc3RlZFN1YixzLmdldFN0YXRlLHV8fHMuZ2V0U3RhdGUsbCxpKTtyZXR1cm4gbi51c2VEZWJ1Z1ZhbHVlKGYpLGZ9O3JldHVybiBPYmplY3QuYXNzaWduKHIse3dpdGhUeXBlczooKT0+cn0pLHJ9dmFyIHBlPWRlKCl9LDE0NjQ0OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm5gTWluaWZpZWQgUmVkdXggZXJyb3IgIyR7ZX07IHZpc2l0IGh0dHBzOi8vcmVkdXguanMub3JnL0Vycm9ycz9jb2RlPSR7ZX0gZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycy4gYH1yLmQodCx7SFk6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sUWQ6ZnVuY3Rpb24oKXtyZXR1cm4gc30sVHc6ZnVuY3Rpb24oKXtyZXR1cm4gcH0sWno6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sdmU6ZnVuY3Rpb24oKXtyZXR1cm4gX30seSQ6ZnVuY3Rpb24oKXtyZXR1cm4gY30sekg6ZnVuY3Rpb24oKXtyZXR1cm4gZn19KTt2YXIgbz0oKCk9PiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5vYnNlcnZhYmxlfHwiQEBvYnNlcnZhYmxlIikoKSxpPSgpPT5NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNykuc3BsaXQoIiIpLmpvaW4oIi4iKSxhPXtJTklUOmBAQHJlZHV4L0lOSVQke2koKX1gLFJFUExBQ0U6YEBAcmVkdXgvUkVQTEFDRSR7aSgpfWAsUFJPQkVfVU5LTk9XTl9BQ1RJT046KCk9PmBAQHJlZHV4L1BST0JFX1VOS05PV05fQUNUSU9OJHtpKCl9YH07ZnVuY3Rpb24gcyhlKXtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiExO2xldCB0PWU7Zm9yKDtudWxsIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpOyl0PU9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09dHx8bnVsbD09PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKX1mdW5jdGlvbiBjKGUsdCxyKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IobigyKSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiByfHwiZnVuY3Rpb24iPT10eXBlb2YgciYmImZ1bmN0aW9uIj09dHlwZW9mIGFyZ3VtZW50c1szXSl0aHJvdyBuZXcgRXJyb3IobigwKSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQmJnZvaWQgMD09PXImJihyPXQsdD12b2lkIDApLHZvaWQgMCE9PXIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93IG5ldyBFcnJvcihuKDEpKTtyZXR1cm4gcihjKShlLHQpfWxldCBpPWUsdT10LGw9bmV3IE1hcCxmPWwsZD0wLHA9ITE7ZnVuY3Rpb24gXygpe2Y9PT1sJiYoZj1uZXcgTWFwLGwuZm9yRWFjaCgoKGUsdCk9PntmLnNldCh0LGUpfSkpKX1mdW5jdGlvbiBoKCl7aWYocCl0aHJvdyBuZXcgRXJyb3IobigzKSk7cmV0dXJuIHV9ZnVuY3Rpb24gbShlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3Iobig0KSk7aWYocCl0aHJvdyBuZXcgRXJyb3Iobig1KSk7bGV0IHQ9ITA7XygpO2NvbnN0IHI9ZCsrO3JldHVybiBmLnNldChyLGUpLGZ1bmN0aW9uKCl7aWYodCl7aWYocCl0aHJvdyBuZXcgRXJyb3Iobig2KSk7dD0hMSxfKCksZi5kZWxldGUociksbD1udWxsfX19ZnVuY3Rpb24geShlKXtpZighcyhlKSl0aHJvdyBuZXcgRXJyb3Iobig3KSk7aWYodm9pZCAwPT09ZS50eXBlKXRocm93IG5ldyBFcnJvcihuKDgpKTtpZigic3RyaW5nIiE9dHlwZW9mIGUudHlwZSl0aHJvdyBuZXcgRXJyb3IobigxNykpO2lmKHApdGhyb3cgbmV3IEVycm9yKG4oOSkpO3RyeXtwPSEwLHU9aSh1LGUpfWZpbmFsbHl7cD0hMX1yZXR1cm4obD1mKS5mb3JFYWNoKChlPT57ZSgpfSkpLGV9eSh7dHlwZTphLklOSVR9KTtyZXR1cm57ZGlzcGF0Y2g6eSxzdWJzY3JpYmU6bSxnZXRTdGF0ZTpoLHJlcGxhY2VSZWR1Y2VyOmZ1bmN0aW9uKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcihuKDEwKSk7aT1lLHkoe3R5cGU6YS5SRVBMQUNFfSl9LFtvXTpmdW5jdGlvbigpe2NvbnN0IGU9bTtyZXR1cm57c3Vic2NyaWJlKHQpe2lmKCJvYmplY3QiIT10eXBlb2YgdHx8bnVsbD09PXQpdGhyb3cgbmV3IEVycm9yKG4oMTEpKTtmdW5jdGlvbiByKCl7Y29uc3QgZT10O2UubmV4dCYmZS5uZXh0KGgoKSl9cigpO3JldHVybnt1bnN1YnNjcmliZTplKHIpfX0sW29dKCl7cmV0dXJuIHRoaXN9fX19fWZ1bmN0aW9uIHUoZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlKSxyPXt9O2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCBvPXRbbl07MCwiZnVuY3Rpb24iPT10eXBlb2YgZVtvXSYmKHJbb109ZVtvXSl9Y29uc3Qgbz1PYmplY3Qua2V5cyhyKTtsZXQgaTt0cnl7IWZ1bmN0aW9uKGUpe09iamVjdC5rZXlzKGUpLmZvckVhY2goKHQ9Pntjb25zdCByPWVbdF07aWYodm9pZCAwPT09cih2b2lkIDAse3R5cGU6YS5JTklUfSkpdGhyb3cgbmV3IEVycm9yKG4oMTIpKTtpZih2b2lkIDA9PT1yKHZvaWQgMCx7dHlwZTphLlBST0JFX1VOS05PV05fQUNUSU9OKCl9KSl0aHJvdyBuZXcgRXJyb3IobigxMykpfSkpfShyKX1jYXRjaChlKXtpPWV9cmV0dXJuIGZ1bmN0aW9uKGU9e30sdCl7aWYoaSl0aHJvdyBpO2xldCBhPSExO2NvbnN0IHM9e307Zm9yKGxldCBpPTA7aTxvLmxlbmd0aDtpKyspe2NvbnN0IGM9b1tpXSx1PXJbY10sbD1lW2NdLGY9dShsLHQpO2lmKHZvaWQgMD09PWYpe3QmJnQudHlwZTt0aHJvdyBuZXcgRXJyb3IobigxNCkpfXNbY109ZixhPWF8fGYhPT1sfXJldHVybiBhPWF8fG8ubGVuZ3RoIT09T2JqZWN0LmtleXMoZSkubGVuZ3RoLGE/czplfX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKC4uLnIpe3JldHVybiB0KGUuYXBwbHkodGhpcyxyKSl9fWZ1bmN0aW9uIGYoZSx0KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gbChlLHQpO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpdGhyb3cgbmV3IEVycm9yKG4oMTYpKTtjb25zdCByPXt9O2Zvcihjb25zdCBuIGluIGUpe2NvbnN0IG89ZVtuXTsiZnVuY3Rpb24iPT10eXBlb2YgbyYmKHJbbl09bChvLHQpKX1yZXR1cm4gcn1mdW5jdGlvbiBkKC4uLmUpe3JldHVybiAwPT09ZS5sZW5ndGg/ZT0+ZToxPT09ZS5sZW5ndGg/ZVswXTplLnJlZHVjZSgoKGUsdCk9PiguLi5yKT0+ZSh0KC4uLnIpKSkpfWZ1bmN0aW9uIHAoLi4uZSl7cmV0dXJuIHQ9PihyLG8pPT57Y29uc3QgaT10KHIsbyk7bGV0IGE9KCk9Pnt0aHJvdyBuZXcgRXJyb3IobigxNSkpfTtjb25zdCBzPXtnZXRTdGF0ZTppLmdldFN0YXRlLGRpc3BhdGNoOihlLC4uLnQpPT5hKGUsLi4udCl9LGM9ZS5tYXAoKGU9PmUocykpKTtyZXR1cm4gYT1kKC4uLmMpKGkuZGlzcGF0Y2gpLHsuLi5pLGRpc3BhdGNoOmF9fX1mdW5jdGlvbiBfKGUpe3JldHVybiBzKGUpJiYidHlwZSJpbiBlJiYic3RyaW5nIj09dHlwZW9mIGUudHlwZX19LDI2NzY1OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJhX2JfdGVzdGluZ19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiVGVzdCBkaWZmZXJlbnQgbWVzc2FnZSB2YXJpYXRpb25zIGFuZCBjaG9vc2UgdGhlIHdpbm5pbmcgdmFyaWFibGUuIiwiYV9iX3Rlc3RpbmdfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkEvQiB0ZXN0aW5nIiwiYV9iX3Rlc3RpbmdfZmVhdHVyZV90aXRsZSI6IkEvQiB0ZXN0aW5nIiwiYV9kYXkiOiJBIGRheSIsImFfZmV3X2hvdXJzIjoiQSBmZXcgaG91cnMiLCJhX2Zld19taW51dGVzIjoiQSBmZXcgbWludXRlcyIsImFfd2VlayI6IkEgd2VlayIsImFjY291bnRfb3duZXJzaGlwX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJTZXQgYW4gb3duZXIgZm9yIHlvdXIgbGVhZHMgYW5kIHVzZXJzIHNvIHlvdSBjYW4gYXV0by1hc3NpZ24gbWVzc2FnZXMgdG8gb3duZXJzLCBnZXQgYWxlcnRzLCBhbmQgZWFzaWx5IG1vbml0b3IgYW5kIG1lc3NhZ2UgYWNjb3VudHMuIiwiYWNjb3VudF9vd25lcnNoaXBfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkFjY291bnQgb3duZXJzaGlwIiwiYWNjb3VudF9vd25lcnNoaXBfZmVhdHVyZV90aXRsZSI6IkFjY291bnQgb3duZXJzaGlwIiwiYWN0aW9uX3RlbXBsYXRlc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQ29ubmVjdCBGaW4gdG8gdGhlIGRhdGEgc291cmNlcyBhbmQgc3lzdGVtcyB5b3UgdXNlIGRhaWx54oCUbm8gY29kZSByZXF1aXJlZOKAlHdpdGggcmVhZHktbWFkZSB0ZW1wbGF0ZXMgZm9yIFN0cmlwZSwgU2hvcGlmeSBhbmQgbW9yZS4iLCJhY3Rpb25fdGVtcGxhdGVzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJBY3Rpb24gdGVtcGxhdGVzIiwiYWN0aW9uX3RlbXBsYXRlc19mZWF0dXJlX3RpdGxlIjoiQWN0aW9uIHRlbXBsYXRlcyIsImFjdGl2ZV8xNW1fYWdvIjoiQWN0aXZlIGluIHRoZSBsYXN0IHttaW51dGVzfW0iLCJhY3RpdmVfZGF5X2FnbyI6IkFjdGl2ZSB7ZGF5c31kIGFnbyIsImFjdGl2ZV9ob3VyX2FnbyI6IkFjdGl2ZSB7aG91cnN9aCBhZ28iLCJhY3RpdmVfbWludXRlX2FnbyI6IkFjdGl2ZSB7bWludXRlc31tIGFnbyIsImFjdGl2ZV9zdGF0ZSI6IkFjdGl2ZSIsImFjdGl2ZV93ZWVrX2FnbyI6IkFjdGl2ZSBvdmVyIDF3IGFnbyIsImFjdGl2aXRpZXMiOiJBY3Rpdml0aWVzIiwiYWRkX3BhcnRpY2lwYW50IjoiQWRkIHBhcnRpY2lwYW50IiwiYWRkX3BlcnNvbiI6IkFkZCBwZXJzb24iLCJhZHZhbmNlZF9xdWFsaWZpY2F0aW9uX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJDYXRlZ29yaXplIGxlYWRzIGJhc2VkIG9uIGRpZmZlcmVudCBydWxlcyBzbyB5b3UgY2FuIGZvbGxvdyB1cCB3aXRoIGVhY2ggY2F0ZWdvcnkgZGlmZmVyZW50bHkuIiwiYWR2YW5jZWRfcXVhbGlmaWNhdGlvbl9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQWR2YW5jZWQgcXVhbGlmaWNhdGlvbiIsImFkdmFuY2VkX3F1YWxpZmljYXRpb25fZmVhdHVyZV90aXRsZSI6IkFkdmFuY2VkIHF1YWxpZmljYXRpb24iLCJhZ3JlZV90b19wcml2YWN5X3BvbGljeSI6IkJ5IGNoYXR0aW5nIHdpdGggdXMsIHlvdSBhZ3JlZSB0byBvdXIge3ByaXZhY3lfcG9saWN5fS4iLCJhaV9hbnN3ZXIiOiJBSSBBbnN3ZXIiLCJhaV9hbnN3ZXJfaW5mb3JtYXRpb24iOiJBSSBBbnN3ZXIsIGluZm9ybWF0aW9uIiwiYWlfYXV0b2ZpbGxfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkF1dG9tYXRpY2FsbHkgcG9wdWxhdGUga2V5IGluZm9ybWF0aW9uIGZyb20gY29udmVyc2F0aW9ucyBmb3IgdGlja2V0IGF0dHJpYnV0ZXMuIiwiYWlfYXV0b2ZpbGxfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkFJIEF1dG9maWxsIiwiYWlfYXV0b2ZpbGxfZmVhdHVyZV90aXRsZSI6IkFJIEF1dG9maWxsIiwiYWlfYm90IjoiQUkgQm90IiwiYWlfY2F0ZWdvcnlfZGV0ZWN0aW9uX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJGaW4gY2FuIGNhdGVnb3JpemUgY29udmVyc2F0aW9ucyBieSB0b3BpY3MgaW4gb3JkZXIgdG8gb3B0aW1pemUgd29ya2Zsb3dzIGFuZCBzdHJlYW1saW5pbmcgY29udmVyc2F0aW9uIHJvdXRpbmcgdG8geW91ciB0ZWFtLiIsImFpX2NhdGVnb3J5X2RldGVjdGlvbl9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQUkgQ2F0ZWdvcnkgRGV0ZWN0aW9uIiwiYWlfY2F0ZWdvcnlfZGV0ZWN0aW9uX2ZlYXR1cmVfdGl0bGUiOiJBSSBDYXRlZ29yeSBEZXRlY3Rpb24iLCJhaV9jb21wb3NlX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJFeHBhbmQgcmVwbGllcywgcmVwaHJhc2UgYW5zd2Vycywgb3IgY2hhbmdlIHRvbmUgdXNpbmcgQUkuIiwiYWlfY29tcG9zZV9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQUkgQ29tcG9zZSIsImFpX2NvbXBvc2VfZmVhdHVyZV90aXRsZSI6IkFJIENvbXBvc2UiLCJhaV9jb21wb3NlX215X3RvbmVfb2Zfdm9pY2VfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlJld3JpdGVzIHJlcGxpZXMgaW4geW91ciB0b25lIG9mIHZvaWNlIGJhc2VkIG9uIHlvdXIgcHJldmlvdXMgcmVzcG9uc2VzLiIsImFpX2NvbXBvc2VfbXlfdG9uZV9vZl92b2ljZV9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQUkgQ29tcG9zZSAobXkgdG9uZSBvZiB2b2ljZSkiLCJhaV9jb21wb3NlX215X3RvbmVfb2Zfdm9pY2VfZmVhdHVyZV90aXRsZSI6IkFJIENvbXBvc2UgKG15IHRvbmUgb2Ygdm9pY2UpIiwiYWlfZ2VuZXJhdGVkX2NzYXRfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkZGb3IgdGhlIGZpcnN0IHRpbWUgZXZlciwgeW91IGNhbiBnZXQgQ1NBVCBzY29yZXMgYWNyb3NzIDEwMCUgb2YgeW91ciBjdXN0b21lciBjb252ZXJzYXRpb25zIHVzaW5nIEFJLWdlbmVyYXRlZCBhbmFseXNpcy4iLCJhaV9nZW5lcmF0ZWRfY3NhdF9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQ1ggU2NvcmUiLCJhaV9nZW5lcmF0ZWRfY3NhdF9mZWF0dXJlX3RpdGxlIjoiQ1ggU2NvcmUiLCJhaV9zdW1tYXJpemVfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlN1bW1hcml6ZSBjb252ZXJzYXRpb25zIGluIHRoZSBpbmJveCB1c2luZyBBSS4iLCJhaV9zdW1tYXJpemVfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkFJIFN1bW1hcml6ZSIsImFpX3N1bW1hcml6ZV9mZWF0dXJlX3RpdGxlIjoiQUkgU3VtbWFyaXplIiwiYWlfc3VtbWFyaXplX3dvcmtmbG93X2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJBbGxvdyB0ZWFtbWF0ZXMgdG8gdXNlIEFJIFN1bW1hcml6ZSB0byBzdW1tYXJpemUgY29udmVyc2F0aW9ucyBpbiB3b3JrZmxvd3MuIiwiYWlfc3VtbWFyaXplX3dvcmtmbG93X2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJBSSBTdW1tYXJpemUgKFdvcmtmbG93cykiLCJhaV9zdW1tYXJpemVfd29ya2Zsb3dfZmVhdHVyZV90aXRsZSI6IkFJIFN1bW1hcml6ZSAoV29ya2Zsb3dzKSIsImFpX3RvcGljc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQXV0b21hdGljYWxseSBjYXRlZ29yaXplIGFsbCB5b3VyIHN1cHBvcnQgY29udmVyc2F0aW9ucyBpbnRvIHRvcGljcyBhbmQgc3VwdG9waWNzLiIsImFpX3RvcGljc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQUkgVG9waWNzIiwiYWlfdG9waWNzX2ZlYXR1cmVfdGl0bGUiOiJBSSBUb3BpY3MiLCJhbGV4YW5kcmlhX3VuYXV0aG9yaXplZCI6IllvdSBjYW4gdHJ5IHNlbmRpbmcgdXMgYSBtZXNzYWdlIG9yIGxvZ2dpbmcgaW4gYXQge2FwcF9uYW1lfSIsImFsbW9zdF90aGVyZSI6IkFsbW9zdCB0aGVyZS4uLiIsImFsc29faW5fdGhpc19jb252ZXJzYXRpb24iOiJBbHNvIGluIHRoaXMgY29udmVyc2F0aW9uIiwiYW1hemluZyI6IkFtYXppbmciLCJhbmltYWxzX25hdHVyZSI6IkFuaW1hbHMgJiBOYXR1cmUiLCJhbnN3ZXIiOiJBbnN3ZXIiLCJhbnN3ZXJfaW5zcGVjdGlvbl9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiU2VlIHRoZSBzb3VyY2VzIGFuZCBzZXR0aW5ncyB0aGF0IHNoYXBlIEZpblwncyByZXNwb25zZXMuIiwiYW5zd2VyX2luc3BlY3Rpb25fZmVhdHVyZV9zaG9ydF90aXRsZSI6IkFuc3dlciBpbnNwZWN0aW9uIiwiYW5zd2VyX2luc3BlY3Rpb25fZmVhdHVyZV90aXRsZSI6IkFuc3dlciBpbnNwZWN0aW9uIiwiYW5zd2VyX2lzX2dlbmVyYXRlZF93aXRoX2FpIjoiVGhpcyBhbnN3ZXIgaXMgYmFzZWQgb25seSBvbiBjb250ZW50IHNwZWNpZmllZCBieSB7Y29tcGFueV9uYW1lfS4gSXQgaXMgQUkgZ2VuZXJhdGVkIHNvIG1heSBub3QgYmUgZnVsbHkgY29ycmVjdC4iLCJhbnN3ZXJfaXNfZ2VuZXJhdGVkX3dpdGhfYWlfbWF5X2JlX2luY29ycmVjdCI6IlRoaXMgYW5zd2VyIHdhcyBhdXRvIGdlbmVyYXRlZCB1c2luZyBBSS4gVGhlcmXigJlzIGEgY2hhbmNlIGl0IG1heSBub3QgYmUgZnVsbHkgY29ycmVjdC4iLCJhbnN3ZXJfaXNfZ2VuZXJhdGVkX3dpdGhfYWlfc291cmNlcyI6IkFJIGFuc3dlcnMgYXJlIGdlbmVyYXRlZCBiYXNlZCBvbiBib3RoIHB1YmxpYyBhbmQgcHJpdmF0ZSBzb3VyY2VzIHByb3ZpZGVkIGJ5IHtjb21wYW55X25hbWV9LiIsImFuc3dlcl9sZW5ndGhfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IllvdSBjYW4gY2hvb3NlIGhvdyBsb25nIEZpblwncyBhbnN3ZXJzIGFyZSwgZnJvbSBzaG9ydGVyIGFuZCBjb25jaXNlLCB0byBsb25nZXIgYW5kIG1vcmUgdGhvcm91Z2guIiwiYW5zd2VyX2xlbmd0aF9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQW5zd2VyIGxlbmd0aCIsImFuc3dlcl9sZW5ndGhfZmVhdHVyZV90aXRsZSI6IkFuc3dlciBsZW5ndGgiLCJhbnN3ZXJfcmF0aW5nX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJSZXZpZXcgYW5kIHJhdGUgZWFjaCBvZiBGaW5cJ3MgYW5zd2Vycy4iLCJhbnN3ZXJfcmF0aW5nX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJBbnN3ZXIgcmF0aW5nIiwiYW5zd2VyX3JhdGluZ19mZWF0dXJlX3RpdGxlIjoiQW5zd2VyIHJhdGluZyIsImFwcF9wZXJtaXNzaW9uc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiU2V0IHBlcm1pc3Npb25zIGZvciB3aG8gY2FuIGluc3RhbGwsIGNvbmZpZ3VyZSwgYW5kIGRlbGV0ZSBhcHBzLiIsImFwcF9wZXJtaXNzaW9uc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQXBwIHBlcm1pc3Npb25zIiwiYXBwX3Blcm1pc3Npb25zX2ZlYXR1cmVfdGl0bGUiOiJBcHAgcGVybWlzc2lvbnMiLCJhcHJpbF9kYXRlIjoiQXByaWwge2RhdGV9IiwiYXJ0aWNsZSI6ImFydGljbGUiLCJhcnRpY2xlX2RvdWJsZV9hdXRob3IiOiJCeSB7YXV0aG9yX2ZpcnN0X25hbWUxfSBhbmQge2F1dGhvcl9maXJzdF9uYW1lMn0iLCJhcnRpY2xlX211bHRpcGxlX2F1dGhvcnMiOiJCeSB7YXV0aG9yX2ZpcnN0X25hbWUxfSBhbmQge251bWJlcl9vZl9vdGhlcl9hdXRob3JzfSBvdGhlcnMiLCJhcnRpY2xlX3F1ZXN0aW9uIjoiRGlkIHRoaXMgYW5zd2VyIHlvdXIgcXVlc3Rpb24/IiwiYXJ0aWNsZV9zZWFyY2hfaGludF90ZXh0IjoiU2VhcmNoIGFydGljbGVzLi4uIiwiYXJ0aWNsZV9zZWFyY2hfbm9fcmVzdWx0c19mb3JfcXVlcnkiOiJObyByZXN1bHRzIGZvciBcXCJ7cXVlcnl9XFwiIiwiYXJ0aWNsZV9zZWFyY2hfc2VhcmNoX3Jlc3VsdHMiOiJTZWFyY2ggcmVzdWx0cyIsImFydGljbGVfc2VhcmNoX3NlYXJjaF9yZXN1bHRzX2Zvcl9xdWVyeSI6IlNlYXJjaCByZXN1bHRzIGZvciBcXCJ7cXVlcnl9XFwiIiwiYXJ0aWNsZV9zaW5nbGVfYXV0aG9yIjoiQnkge2F1dGhvcl9maXJzdF9uYW1lfSIsImFza19hX3F1ZXN0aW9uIjoiQXNrIGEgcXVlc3Rpb24iLCJhc2tfYV9xdWVzdGlvbl9wbGFjZWhvbGRlciI6IkFzayBhIHF1ZXN0aW9u4oCmIiwiYXNrX2FfcXVlc3Rpb25fd2l0aF9lbGxpcHNpcyI6IkFzayBhIHF1ZXN0aW9uLi4uIiwiYXNrX2Fub3RoZXJfcXVlc3Rpb25fd2l0aF9lbGxpcHNpcyI6IkFzayBhbm90aGVyIHF1ZXN0aW9uLi4uIiwiYXNrX2FueXRoaW5nX3BsYWNlaG9sZGVyIjoiQXNrIGFueXRoaW5n4oCmIiwiYXNrX2Zpbl9zZHJfc29tZXRoaW5nX3RvX3N0YXJ0IjoiQXNrIEZpbiBhIHF1ZXN0aW9uIHlvdXIgY3VzdG9tZXJzIG1pZ2h0IGFzaywgdG8gcHJldmlldyBpdHMgcmVzcG9uc2UuIiwiYXNrX2Zpbl9zb21ldGhpbmdfdG9fc3RhcnQiOiJBc2sgRmluIGEgcXVlc3Rpb24geW91ciBjdXN0b21lcnMgbWlnaHQgYXNrLCB0byBwcmV2aWV3IGl0cyByZXNwb25zZS4iLCJhc2tfb3VyX2JvdF9hX3F1ZXN0aW9uIjoiQXNrIG91ciBib3QgYSBxdWVzdGlvbiIsImFza2VkX2Fib3V0IjoiQXNrZWQgYWJvdXQiLCJhc3NpZ25fYW5kX3Nub296ZV9jb252ZXJzYXRpb25zX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJBdXRvbWF0aWNhbGx5IGFzc2lnbiBjb252ZXJzYXRpb25zIHRvIHRoZSByaWdodCB0ZWFtIG9yIHRlYW1tYXRlLiIsImFzc2lnbl9hbmRfc25vb3plX2NvbnZlcnNhdGlvbnNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkFzc2lnbiBhbmQgc25vb3plIGNvbnZlcnNhdGlvbnMiLCJhc3NpZ25fYW5kX3Nub296ZV9jb252ZXJzYXRpb25zX2ZlYXR1cmVfdGl0bGUiOiJBc3NpZ24gYW5kIHNub296ZSBjb252ZXJzYXRpb25zIiwiYXNzaWduZWRfdG9fYWRtaW4iOiJBc3NpZ25lZCB0byB7YWRtaW59IiwiYXR0YWNoX2ltYWdlc19vcl9maWxlcyI6IkF0dGFjaCBpbWFnZXMgb3IgZmlsZXMiLCJhdHRyaWJ1dGVfY29sbGVjdG9yX25lZ2F0aXZlIjoiTm8iLCJhdHRyaWJ1dGVfY29sbGVjdG9yX3Bvc2l0aXZlIjoiWWVzIiwiYXVkaWVuY2VfcnVsZXNfbm90X2FwcGxpZWQiOiJOb3RlOiBUaGlzIHByZXZpZXcgZG9lcyBub3QgYXBwbHkgYXVkaWVuY2UgcnVsZXMiLCJhdWRpZW5jZV90ZXN0aW5nX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJUZXN0IGhvdyBGaW4gYW5zd2VycyB2YXJ5IGJ5IGF1ZGllbmNlIHR5cGVzLiIsImF1ZGllbmNlX3Rlc3RpbmdfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkF1ZGllbmNlIHRlc3RpbmciLCJhdWRpZW5jZV90ZXN0aW5nX2ZlYXR1cmVfdGl0bGUiOiJBdWRpZW5jZSB0ZXN0aW5nIiwiYXVndXN0X2RhdGUiOiJBdWd1c3Qge2RhdGV9IiwiYXZhdGFyIjoiQXZhdGFyIiwiYXZhdGFycyI6IkF2YXRhcnMiLCJhd2F5X3N0YXRlIjoiQXdheSIsImJhZCI6IkJhZCIsImJhbm5lciI6ImJhbm5lciIsImJhbm5lcl9tZXNzYWdlc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiSGlnaGxpZ2h0IGltcG9ydGFudCBpbmZvcm1hdGlvbiB3aXRoIHBlcnNpc3RlbnQgYmFubmVycyBpbiB5b3VyIGFwcCBvciB3ZWJzaXRlLiIsImJhbm5lcl9tZXNzYWdlc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQmFubmVyIG1lc3NhZ2VzIiwiYmFubmVyX21lc3NhZ2VzX2ZlYXR1cmVfdGl0bGUiOiJCYW5uZXIgbWVzc2FnZXMiLCJiYXNpY19jaGF0Ym90c19hbmRfYXV0b21hdGlvbnNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlNpbXBsZSBib3RzIGFuZCBhdXRvbWF0aW9ucyBmb3IgdHJpYWdpbmcgY29udmVyc2F0aW9ucywgcXVhbGlmeWluZyBsZWFkcywgYW5kIGdhdGhlcmluZyBjdXN0b21lciBpbmZvcm1hdGlvbi4iLCJiYXNpY19jaGF0Ym90c19hbmRfYXV0b21hdGlvbnNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkJhc2ljIGF1dG9tYXRpb24iLCJiYXNpY19jaGF0Ym90c19hbmRfYXV0b21hdGlvbnNfZmVhdHVyZV90aXRsZSI6IkJhc2ljIGNoYXRib3RzIGFuZCBhdXRvbWF0aW9ucyIsImJhdGNoX3Rlc3RpbmdfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkltcG9ydCBjb252ZXJzYXRpb25zIGZyb20geW91ciBzdXBwb3J0IGluYm94LCBvdGhlciBzb3VyY2VzIHRvIHRlc3QgaG93IHJlYWR5IHlvdXIgY29udGVudCBpcyBmb3IgRmluLiIsImJhdGNoX3Rlc3RpbmdfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkJhdGNoIHRlc3RpbmciLCJiYXRjaF90ZXN0aW5nX2ZlYXR1cmVfdGl0bGUiOiJCYXRjaCB0ZXN0aW5nIiwiYm9va19hX21lZXRpbmciOiJCb29rIGEgbWVldGluZyIsImJvdCI6IkJvdCIsImJvdF9hbnN3ZXJzX2luc3RhbnRseSI6IkJvdCBhbnN3ZXJzIGluc3RhbnRseSIsImJvdF9leHBlY3RhdGlvbl90ZXh0IjoiT3VyIGJvdCBjYW4gYW5zd2VyIG1hbnkgY29tbW9uIHF1ZXN0aW9ucyIsImJvdF9pc19zdGlsbF90aGlua2luZyI6IkJvdCBpcyBzdGlsbCB0aGlua2luZy4uLiIsImJvdF9pc190aGlua2luZyI6IkJvdCBpcyB0aGlua2luZy4uLiIsImJyb3dzZV9jb2xsZWN0aW9ucyI6IkJyb3dzZSBjb2xsZWN0aW9ucyIsImJ1bGtfd2hhdHNhcHBfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IldoYXRzQXBwIGNvbnZlcnNhdGlvbnMgc2VudCB2aWEgdGhlIE91dGJvdW5kIHNlY3Rpb24gb3Igc2VyaWVzLCByZWdhcmRsZXNzIG9mIGF1ZGllbmNlIHNpemUuIiwiYnVsa193aGF0c2FwcF9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiV2hhdHNBcHAiLCJidWxrX3doYXRzYXBwX2ZlYXR1cmVfdGl0bGUiOiJCdWxrIFdoYXRzQXBwIiwiYnlfZW1haWwiOiJCeSBlbWFpbCIsImJ5X3dlYl9ub3RpZmljYXRpb24iOiJCeSB3ZWIgbm90aWZpY2F0aW9uIiwiY2FsZW5kYXJfYmFjayI6IkJhY2siLCJjYWxlbmRhcl9ib29raW5nX2NvbmZpcm1lZCI6IkJvb2tpbmcgY29uZmlybWVkIiwiY2FsZW5kYXJfYm9va2luZ19mYWlsZWRfcmV0cnkiOiJCb29raW5nIGZhaWxlZCAtIFJldHJ5IiwiY2FsZW5kYXJfY29uZmlybV9ib29raW5nIjoiQ29uZmlybSBib29raW5nIiwiY2FsZW5kYXJfZXhwaXJlZCI6IkNhbGVuZGFyIGV4cGlyZWQiLCJjYWxlbmRhcl9uZXh0X21vbnRoIjoiTmV4dCBtb250aCIsImNhbGVuZGFyX25vX2RhdGVfc2VsZWN0ZWQiOiJObyBkYXRlIHNlbGVjdGVkIiwiY2FsZW5kYXJfcGxlYXNlX3RyeV9hZ2FpbiI6IlBsZWFzZSB0cnkgYWdhaW4uIiwiY2FsZW5kYXJfcHJldmlvdXNfbW9udGgiOiJQcmV2aW91cyBtb250aCIsImNhbGVuZGFyX3NlbGVjdF9kYXRlIjoiU2VsZWN0IGEgZGF0ZSIsImNhbGVuZGFyX3NvbWV0aGluZ193ZW50X3dyb25nIjoiU29tZXRoaW5nIHdlbnQgd3JvbmciLCJjYWxlbmRhcl90cnlfYWdhaW4iOiJQbGVhc2UgdHJ5IGFnYWluLiIsImNhbGxfYmFyZ2luZ19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiTWFuYWdlcnMgY2FuIGp1bXAgaW4gZHVyaW5nIGEgY2FsbCB0byBoZWxwIG91dCB3aXRoIGN1c3RvbWVyIHJlcXVlc3RzLiIsImNhbGxfYmFyZ2luZ19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQ2FsbCBiYXJnaW5nIiwiY2FsbF9iYXJnaW5nX2ZlYXR1cmVfdGl0bGUiOiJDYWxsIGJhcmdpbmciLCJjYWxsX2NzYXRfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkNhcHR1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uIHJhdGluZ3MgYWZ0ZXIgdGhlIGNhbGwgZW5kcy4iLCJjYWxsX2NzYXRfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkNhbGwgQ1NBVCIsImNhbGxfY3NhdF9mZWF0dXJlX3RpdGxlIjoiQ2FsbCBDU0FUIiwiY2FsbF9saXZlX21vbml0b3JpbmdfZmVhdHVyZV9kZXNjcmlwdGlvbiI6Ik1hbmFnZXJzIGNhbiBsaXN0ZW4gaW4gZHVyaW5nIGEgY2FsbCBhbmQgY29hY2ggYWdlbnRzLiIsImNhbGxfbGl2ZV9tb25pdG9yaW5nX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJDYWxsIGxpdmUgbW9uaXRvcmluZyIsImNhbGxfbGl2ZV9tb25pdG9yaW5nX2ZlYXR1cmVfdGl0bGUiOiJDYWxsIGxpdmUgbW9uaXRvcmluZyIsImNhbGxfb3ZlcmZsb3dfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlJvdXRlIGNhbGxzIHRvIGEgc2Vjb25kYXJ5IHRlYW0gb3IgY29uZmlndXJlIG9uZSBvZiBvdXIgY2FsbCBkZWZsZWN0aW9uIG9wdGlvbnMuIiwiY2FsbF9vdmVyZmxvd19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQ2FsbCBvdmVyZmxvdyIsImNhbGxfb3ZlcmZsb3dfZmVhdHVyZV90aXRsZSI6IkNhbGwgb3ZlcmZsb3ciLCJjYWxsX3dyYXBfdXBfdGltZV9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiU2V0IHRoZSBhbW91bnQgb2YgdGltZSBhZ2VudHMgaGF2ZSBhZnRlciBhIGNhbGwgdG8gd3JhcC11cCBiZWZvcmUgYWNjZXB0aW5nIG5ldyBjYWxscy4iLCJjYWxsX3dyYXBfdXBfdGltZV9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQ2FsbCB3cmFwLXVwIHRpbWUiLCJjYWxsX3dyYXBfdXBfdGltZV9mZWF0dXJlX3RpdGxlIjoiQ2FsbCB3cmFwLXVwIHRpbWUiLCJjYWxsZXJfaWRfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkF1dG9tYXRpY2FsbHkgaWRlbnRpZnkgdGhlIGN1c3RvbWVyIGFuZCBoYXZlIGZ1bGwgY29udGV4dCBiZWZvcmUgdGhlIGNhbGwgc3RhcnRzLiIsImNhbGxlcl9pZF9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQ2FsbGVyIElEIiwiY2FsbGVyX2lkX2ZlYXR1cmVfdGl0bGUiOiJDYWxsZXIgSUQiLCJjYW5fY29udGludWVfd2hhdHNhcHAiOiJZb3UgY2FuIGNvbnRpbnVlIHlvdXIgY29udmVyc2F0aW9uIG9uIFdoYXRzQXBwIiwiY2FuY2VsIjoiQ2FuY2VsIiwiY2FuY2VsX3RyYW5zY3JpcHRpb24iOiJDYW5jZWwgdHJhbnNjcmlwdGlvbiIsImNhbnRfbG9hZF9uZXdfbWVzc2FnZXMiOiJDYW5cJ3QgbG9hZCBuZXcgbWVzc2FnZXMiLCJjYXB0aW9ucyI6IkNhcHRpb25zIiwiY2Fyb3VzZWxfYWRkX3RvX2NhcnQiOiJBZGQgdG8gY2FydCIsImNhcm91c2VsX2FkZF90b19jYXJ0X21lc3NhZ2UiOiJDYW4geW91IGFkZCB7cHJvZHVjdH0gdG8gbXkgY2FydCBwbGVhc2UiLCJjaGF0X3dpdGgiOiJDaGF0IHdpdGgge2Fzc2lnbmVlX25hbWV9IiwiY2hhdF93aXRoX3VzIjoiQ2hhdCB3aXRoIHVzIiwiY2hhdHNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlNlbmQgb25lLW9mZiBtZXNzYWdlcyB0byBzcGVjaWZpYyBjdXN0b21lcnMuIiwiY2hhdHNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkNoYXRzIiwiY2hhdHNfZmVhdHVyZV90aXRsZSI6IkNoYXRzIiwiY2hlY2tfbGF0ZXJfZm9yX3VwZGF0ZXMiOiJDaGVjayBiYWNrIGxhdGVyIGZvciB1cGRhdGVzLiIsImNoZWNrbGlzdF9jYXJkX2ZpcnN0X3N0ZXAiOiJGaXJzdCBzdGVwIiwiY2hlY2tsaXN0X2NhcmRfbmV4dF9zdGVwIjoiTmV4dCBzdGVwIiwiY2hlY2tsaXN0X2NvbXBsZXRlZCI6IkNvbXBsZXRlZCIsImNoZWNrbGlzdF9pbl9wcm9ncmVzc190aW1lX3JlbWFpbmluZ19wbHVyYWwiOiJBYm91dCB7bWludXRlc30gbWludXRlcyBsZWZ0IiwiY2hlY2tsaXN0X2luX3Byb2dyZXNzX3RpbWVfcmVtYWluaW5nX3Npbmd1bGFyIjoiQWJvdXQgMSBtaW51dGUgbGVmdCIsImNoZWNrbGlzdF9tYXJrX3N0ZXBfYXNfY29tcGxldGUiOiJNYXJrIGFzIGNvbXBsZXRlZCIsImNoZWNrbGlzdF9ub3Rfc3RhcnRlZF90aW1lX3JlbWFpbmluZ19wbHVyYWwiOiJBYm91dCB7bWludXRlc30gbWludXRlcyIsImNoZWNrbGlzdF9ub3Rfc3RhcnRlZF90aW1lX3JlbWFpbmluZ19zaW5ndWxhciI6IkFib3V0IDEgbWludXRlIiwiY2hlY2tsaXN0X251bWJlcl9vZl9zdGVwc19wbHVyYWwiOiJ7bnVtYmVyX29mX3N0ZXBzfSBzdGVwcyIsImNoZWNrbGlzdF9udW1iZXJfb2Zfc3RlcHNfcHJvZ3Jlc3NfcGx1cmFsIjoie3N0ZXBzX2NvbXBsZXRlZH0gb2Yge3RvdGFsX3N0ZXBzfSBkb25lIiwiY2hlY2tsaXN0X251bWJlcl9vZl9zdGVwc19wcm9ncmVzc19zaW5ndWxhciI6IjEgb2Yge3RvdGFsX3N0ZXBzfSBkb25lIiwiY2hlY2tsaXN0X251bWJlcl9vZl9zdGVwc19zaW5ndWxhciI6IjEgc3RlcCIsImNoZWNrbGlzdF9wcm9ncmVzcyI6IkNoZWNrbGlzdCBwcm9ncmVzczoge2NvbXBsZXRlZENoZWNrbGlzdFRhc2tzfSBvZiB7Y2hlY2tsaXN0VGFza3N9IHRhc2tzIGNvbXBsZXRlZCIsImNoZWNrbGlzdF9zZW5kZXJfbmFtZSI6IlNoYXJlZCBieSB7bmFtZX0iLCJjaGVja2xpc3Rfc3RlcF9hY3Rpb25fYnV0dG9uIjoiU3RlcCBhY3Rpb24gYnV0dG9uIiwiY2hlY2tsaXN0X3N0ZXBfY29tcGxldGVkIjoiQ29tcGxldGVkIiwiY2hlY2tsaXN0X3RvZ2dsZV90YXNrX2RldGFpbHMiOiJUb2dnbGUgdGFzayBkZXRhaWxzIiwiY2hlY2tsaXN0c19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiSW4tcHJvZHVjdCBtZXNzYWdlIHRoYXQgYWxsb3dzIHlvdSB0byBkZWxpdmVyIGNvbnRleHR1YWwgYW5kIHBlcnNvbmFsaXplZCBsaXN0cyBvZiB0YXNrcyB0byBjdXN0b21lcnMuIiwiY2hlY2tsaXN0c19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQ2hlY2tsaXN0cyIsImNoZWNrbGlzdHNfZmVhdHVyZV90aXRsZSI6IkNoZWNrbGlzdHMiLCJjaG9vc2VfZGF0ZSI6IkNob29zZSBkYXRlIiwiY2hvb3NlX29uZSI6IkNob29zZSBvbmXigKYiLCJjbGVhciI6IkNsZWFyIiwiY2xlYXJfYWxsIjoiQ2xlYXIgQWxsIiwiY2xlYXJfcmVjb3JkaW5nIjoiQ2xlYXIgcmVjb3JkaW5nIiwiY2xlYXJiaXRfaW50ZWdyYXRpb25fZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlVzZSBDbGVhcmJpdCBkYXRhIHRvIGlkZW50aWZ5LCB0YXJnZXQsIGFuZCByb3V0ZSB3ZWJzaXRlIHZpc2l0b3JzLiIsImNsZWFyYml0X2ludGVncmF0aW9uX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJDbGVhcmJpdCBpbnRlZ3JhdGlvbiIsImNsZWFyYml0X2ludGVncmF0aW9uX2ZlYXR1cmVfdGl0bGUiOiJDbGVhcmJpdCBpbnRlZ3JhdGlvbiIsImNsaWNrX29wZW5fd2hhdHNhcHAiOiJDbGljayBoZXJlIHRvIG9wZW4gV2hhdHNBcHAiLCJjbGlja190b191bm11dGUiOiJDbGljayB0byB1bm11dGUiLCJjbGlja2FibGVfYnV0dG9uIjoiQ2xpY2thYmxlIGJ1dHRvbiIsImNsb3NlIjoiQ2xvc2UiLCJjbG9zZV9pbnRlcmNvbV9tZXNzZW5nZXIiOiJDbG9zZSBJbnRlcmNvbSBNZXNzZW5nZXIiLCJjb2RlX2Jsb2NrX2xhYmVsIjoiQ29kZSIsImNvbXBvbmVudCI6IkNvbXBvbmVudCIsImNvbm5lY3RpbmciOiJDb25uZWN0aW5nLi4uIiwiY29udGFjdF9zdXBwb3J0IjoiQ29udGFjdCBzdXBwb3J0IiwiY29udGFjdF91cyI6IkNvbnRhY3QgdXMiLCJjb250aW51ZV9vbl93aGF0c2FwcCI6IkNvbnRpbnVlIG9uIFdoYXRzQXBwIiwiY29udGludWVfdGhlX2NvbnZlcnNhdGlvbiI6IkNvbnRpbnVlIHRoZSBjb252ZXJzYXRpb24iLCJjb250aW51ZV93aGF0c2FwcF9pbnN0ZWFkIjoiWW91IGNhbiBjb250aW51ZSB0aGUgY29udmVyc2F0aW9uIG9uIFdoYXRzQXBwIGluc3RlYWQuIiwiY29udmVyc2F0aW9uX2NhcmRfb2ZmaWNlX2hvdXJzX2hlYWRlciI6IldlXCdsbCBiZSBiYWNrIG9ubGluZSIsImNvbnZlcnNhdGlvbl9jYXJkX3JlcGx5X3RpbWVfaGVhZGVyIjoiT3VyIHVzdWFsIHJlcGx5IHRpbWUiLCJjb252ZXJzYXRpb25fY2FyZF9yZXBseV90aW1lX2hlYWRlcl9tNSI6IlVzdWFsIHJlcGx5IHRpbWUiLCJjb252ZXJzYXRpb25fY2FyZF91bmtub3duX3Jlc3BvbnNlX3RpbWUiOiJXZeKAmWxsIHJlcGx5IGFzIHNvb24gYXMgd2UgY2FuIiwiY29udmVyc2F0aW9uX2RhdGFfYXR0cmlidXRlc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQ2F0ZWdvcml6ZSBhbGwgb2YgeW91ciBjb252ZXJzYXRpb25zIGZvciByZXBvcnRpbmcgcHVycG9zZXMsIGUuZy4gYnkgdHlwZSwgdXJnZW5jeSwgcHJvZHVjdCBhcmVhIGV0Yy4iLCJjb252ZXJzYXRpb25fZGF0YV9hdHRyaWJ1dGVzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJDb252ZXJzYXRpb24gZGF0YSBhdHRyaWJ1dGVzIiwiY29udmVyc2F0aW9uX2RhdGFfYXR0cmlidXRlc19mZWF0dXJlX3RpdGxlIjoiQ29udmVyc2F0aW9uIGRhdGEgYXR0cmlidXRlcyIsImNvbnZlcnNhdGlvbl9oYXNfZW5kZWQiOiJZb3VyIGNvbnZlcnNhdGlvbiBoYXMgZW5kZWQiLCJjb252ZXJzYXRpb25faGlzdG9yeV9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRmluIEFJIENvcGlsb3QgdXNlcyB5b3VyIHRlYW1cJ3MgcGFzdCBjb252ZXJzYXRpb24gaGlzdG9yeSB0byBnaXZlIHlvdXIgdGVhbSB0aGUgYmVzdCBwb3NzaWJsZSBhbnN3ZXIuIiwiY29udmVyc2F0aW9uX2hpc3RvcnlfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkNvbnZlcnNhdGlvbiBoaXN0b3J5IiwiY29udmVyc2F0aW9uX2hpc3RvcnlfZmVhdHVyZV90aXRsZSI6IkNvbnZlcnNhdGlvbiBoaXN0b3J5IiwiY29udmVyc2F0aW9uX2hpc3Rvcnlfbm9fcmVjZW50X3RleHQiOiJZb3VyIHJlY2VudCBjb252ZXJzYXRpb25zIHdpbGwgYXBwZWFyIGhlcmUuIiwiY29udmVyc2F0aW9uX2hpc3Rvcnlfbm9fcmVjZW50X3RpdGxlIjoiTm8gcmVjZW50IGNvbnZlcnNhdGlvbnMiLCJjb252ZXJzYXRpb25fbW9uaXRvcmluZ19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRWFzaWx5IHJldmlldyBGaW4gY29udmVyc2F0aW9ucyBpbiByZWFsIHRpbWUgcmlnaHQgd2l0aGluIHRoZSBJbmJveC4iLCJjb252ZXJzYXRpb25fbW9uaXRvcmluZ19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQ29udmVyc2F0aW9uIG1vbml0b3JpbmciLCJjb252ZXJzYXRpb25fbW9uaXRvcmluZ19mZWF0dXJlX3RpdGxlIjoiQ29udmVyc2F0aW9uIG1vbml0b3JpbmciLCJjb252ZXJzYXRpb25fbW92ZWRfd2hhdHNhcHAiOiJZb3VyIGNvbnZlcnNhdGlvbiBoYXMgbW92ZWQgdG8gV2hhdHNBcHAiLCJjb252ZXJzYXRpb25fb3B0aW9ucyI6IkNvbnZlcnNhdGlvbiBvcHRpb25zIiwiY29udmVyc2F0aW9uX3F1YWxpdHlfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlF1aWNrbHkgaWRlbnRpZnkgYXJlYXMgb2YgcG9vciBxdWFsaXR5IGFjcm9zcyBhbGwgeW91ciBzdXBwb3J0IHRvIHVuZGVyc3RhbmQgd2hlcmUgeW91IG5lZWQgdG8gaW1wcm92ZS4iLCJjb252ZXJzYXRpb25fcXVhbGl0eV9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQUkgSW5zaWdodHMiLCJjb252ZXJzYXRpb25fcXVhbGl0eV9mZWF0dXJlX3RpdGxlIjoiQUkgSW5zaWdodHMiLCJjb252ZXJzYXRpb25fcmF0aW5nc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQXNrIHlvdXIgY3VzdG9tZXJzIGZvciBmZWVkYmFjayBhZnRlciBhIGNvbnZlcnNhdGlvbiBpcyBjbG9zZWQuIiwiY29udmVyc2F0aW9uX3JhdGluZ3NfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkNvbnZlcnNhdGlvbiByYXRpbmdzIiwiY29udmVyc2F0aW9uX3JhdGluZ3NfZmVhdHVyZV90aXRsZSI6IkNvbnZlcnNhdGlvbiByYXRpbmdzIiwiY29udmVyc2F0aW9uX3RvcGljc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRGVmaW5lIGEgc2V0IG9mIGtleXdvcmRzIGFuZCBwaHJhc2VzIHRvIGluY2x1ZGUgKG9yIGV4Y2x1ZGUpIGFuZCBhbnkgbWF0Y2hpbmcgY29udmVyc2F0aW9uIHdpbGwgYmUgYXV0b21hdGljYWxseSBhZGRlZCB0byBhIHRvcGljLiIsImNvbnZlcnNhdGlvbl90b3BpY3NfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkNvbnZlcnNhdGlvbiB0b3BpY3MiLCJjb252ZXJzYXRpb25fdG9waWNzX2ZlYXR1cmVfdGl0bGUiOiJDb252ZXJzYXRpb24gdG9waWNzIiwiY29udmVyc2F0aW9ucyI6IkNvbnZlcnNhdGlvbnMiLCJjb252ZXJzYXRpb25zX2VtcHR5X3N0YXRlX3RleHQiOiJQcmV2aW91cyBjb252ZXJzYXRpb25zIHdpbGwgYmUgc2hvd24gaGVyZSIsImNvbnZlcnNhdGlvbnNfcG9ydGFsX2NhcmRfbGlua190aXRsZSI6IkdvIHRvIGN1c3RvbWVyIHBvcnRhbCIsImNvbnZlcnNhdGlvbnNfcG9ydGFsX2NhcmRfdGl0bGUiOiJMb29raW5nIGZvciB5b3VyIGNvbXBhbnnigJlzIGNvbnZlcnNhdGlvbnM/IiwiY29udmVyc2F0aW9uc19zcGFjZV90aXRsZSI6IkNvbnZlcnNhdGlvbnMiLCJjb3BpbG90X211bHRpbGluZ3VhbF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiVXNlIEZpbiBBSSBDb3BpbG90IGluIDQ1IGRpZmZlcmVudCBsYW5ndWFnZXMuIiwiY29waWxvdF9tdWx0aWxpbmd1YWxfZmVhdHVyZV9zaG9ydF90aXRsZSI6Ik11bHRpbGluZ3VhbCIsImNvcGlsb3RfbXVsdGlsaW5ndWFsX2ZlYXR1cmVfdGl0bGUiOiJNdWx0aWxpbmd1YWwiLCJjb3B5IjoiQ29weSIsImNvcHlfdG9fY2xpcGJvYXJkIjoiQ29weSB0aGlzIGNvZGUgYmxvY2sgdG8geW91ciBjbGlwYm9hcmQuIiwiY291bGRudF9sb2FkX2FwcCI6IkNvdWxkblwndCBsb2FkIHRoZSBhcHAuIiwiY291bGRudF9sb2FkX2FwcHMiOiJDb3VsZG5cJ3QgbG9hZCBhcHBzLiIsImNvdWxkbnRfbG9hZF9jb250ZW50IjoiQ291bGRuXCd0IGxvYWQgdGhlIGNvbnRlbnQiLCJjb3VudF9tb3JlIjoie2NvdW50fSBtb3JlIiwiY3JlYXRlX2FfdGlja2V0IjoiQ3JlYXRlIGEgdGlja2V0IiwiY3VycmVudGx5X25vX2hlbHBfYXJ0aWNsZXMiOiJUaGVyZeKAmXMgY3VycmVudGx5IG5vIGhlbHAgYXJ0aWNsZXMgYXZhaWxhYmxlLiIsImN1c3RvbV9hY3Rpb25zX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJDYWxsIGV4dGVybmFsIEFQSXMgd2l0aCBjdXN0b20gYWN0aW9ucy4iLCJjdXN0b21fYWN0aW9uc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQ3VzdG9tIGFjdGlvbnMiLCJjdXN0b21fYWN0aW9uc19mZWF0dXJlX3RpdGxlIjoiQ3VzdG9tIGFjdGlvbnMiLCJjdXN0b21fYW5zd2Vyc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRmluIGNhbiB1c2UgaHVtYW4td3JpdHRlbiBhbnN3ZXJzIHdpdGggZW1iZWRkZWQgcmljaCBtZWRpYSBsaWtlIG1hcHMsIGV4dGVybmFsIGRhdGEsIGFuZCBjdXN0b20gYWN0aW9ucyB0byBnaXZlIHlvdSBjb21wbGV0ZSBjb250cm9sIG92ZXIgZXhhY3RseSBob3cgc3BlY2lmaWMsIGhpZ2ggcHJpb3JpdHkgb3IgY3JpdGljYWwgcXVlc3Rpb25zIHNob3VsZCBiZSBhbnN3ZXJlZC4iLCJjdXN0b21fYW5zd2Vyc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQ3VzdG9tIEFuc3dlcnMiLCJjdXN0b21fYW5zd2Vyc19mZWF0dXJlX3RpdGxlIjoiQ3VzdG9tIEFuc3dlcnMiLCJjdXN0b21fY2FsbF9yZXBvcnRzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJDcmVhdGUgY3VzdG9tIHJlcG9ydHMgdG8gZGl2ZSBkZWVwZXIgaW50byBjYWxsIHZvbHVtZSBhbmQgcGVyZm9ybWFuY2UgZGF0YS4iLCJjdXN0b21fY2FsbF9yZXBvcnRzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJDdXN0b20gY2FsbCByZXBvcnRzIiwiY3VzdG9tX2NhbGxfcmVwb3J0c19mZWF0dXJlX3RpdGxlIjoiQ3VzdG9tIGNhbGwgcmVwb3J0cyIsImN1c3RvbV9lbW9qaXMiOiJDdXN0b20gZW1vamlzIiwiY3VzdG9tX2V2ZW50c19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiVHJhY2sgYWN0aXZpdHkgYW5kIGNoYW5naW5nIGRhdGEgd2l0aCBjdXN0b20gZXZlbnRzLiIsImN1c3RvbV9ldmVudHNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkN1c3RvbSBldmVudHMiLCJjdXN0b21fZXZlbnRzX2ZlYXR1cmVfdGl0bGUiOiJDdXN0b20gZXZlbnRzIiwiY3VzdG9tX29iamVjdHNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkJyaW5nIGluIGJ1c2luZXNzLWNyaXRpY2FsIGRhdGEgdG8gcG93ZXIgYXV0b21hdGVkIHdvcmtmbG93cy4iLCJjdXN0b21fb2JqZWN0c19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQ3VzdG9tIG9iamVjdHMiLCJjdXN0b21fb2JqZWN0c19mZWF0dXJlX3RpdGxlIjoiQ3VzdG9tIG9iamVjdHMiLCJjdXN0b21fcmVwb3J0c19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQ3JlYXRlIGN1c3RvbSByZXBvcnRzIGFuZCBidWlsZCBjaGFydHMgdXNpbmcgb3VyIGV4dGVuc2l2ZSBtZXRyaWMgbGlicmFyeSBhbmQgY2hhcnQtYnVpbGRpbmcgdG9vbHMuIiwiY3VzdG9tX3JlcG9ydHNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkFkdmFuY2VkIGN1c3RvbSByZXBvcnRzIiwiY3VzdG9tX3JlcG9ydHNfZmVhdHVyZV90aXRsZSI6IkFkdmFuY2VkIGN1c3RvbSByZXBvcnRzIiwiY3VzdG9tX3Jlc3BvbnNlX2RlbGF5XzAiOiJUeXBpY2FsbHkgcmVwbGllcyBpbiBhIGZldyBtaW51dGVzIiwiY3VzdG9tX3Jlc3BvbnNlX2RlbGF5XzEiOiJUeXBpY2FsbHkgcmVwbGllcyBpbiBhIGZldyBob3VycyIsImN1c3RvbV9yZXNwb25zZV9kZWxheV8yIjoiVHlwaWNhbGx5IHJlcGxpZXMgaW4gYSBkYXkiLCJjdXN0b21fcmVzcG9uc2VfZGVsYXlfMyI6IlR5cGljYWxseSByZXBsaWVzIGluIGEgd2VlayIsImN1c3RvbV9yZXNwb25zZV9kZWxheV91bmtub3duIjoiV2lsbCByZXBseSBhcyBzb29uIGFzIHRoZXkgY2FuLiIsImN1c3RvbV9yb2xlc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQ3JlYXRlIGN1c3RvbSByb2xlcyB0byBhc3NpZ24gY29uc2lzdGVudCBwZXJtaXNzaW9ucyB0byB5b3VyIHRlYW0uIiwiY3VzdG9tX3JvbGVzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJDdXN0b20gcm9sZXMiLCJjdXN0b21fcm9sZXNfZmVhdHVyZV90aXRsZSI6IkN1c3RvbSByb2xlcyIsImN1c3RvbWl6YWJsZV9jaGFydHNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkN1c3RvbWl6YWJsZSBjaGFydHMgdXNlZCB0byBhbmFseXplIGFuZCBkaXNwbGF5IGRhdGEgb24gcmVwb3J0cy4iLCJjdXN0b21pemFibGVfY2hhcnRzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJDdXN0b21pemFibGUgY2hhcnRzIiwiY3VzdG9taXphYmxlX2NoYXJ0c19mZWF0dXJlX3RpdGxlIjoiQ3VzdG9taXphYmxlIGNoYXJ0cyIsImN1c3RvbWl6YWJsZV9yZXBvcnRfbGF5b3V0X2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJDdXN0b21pemUgeW91ciByZXBvcnQgYnkgcmVzaXppbmcgdmlzdWFscyBhbmQgYXJyYW5naW5nIGxheW91dHMuIiwiY3VzdG9taXphYmxlX3JlcG9ydF9sYXlvdXRfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkN1c3RvbWl6YWJsZSByZXBvcnQgbGF5b3V0IiwiY3VzdG9taXphYmxlX3JlcG9ydF9sYXlvdXRfZmVhdHVyZV90aXRsZSI6IkN1c3RvbWl6YWJsZSByZXBvcnQgbGF5b3V0IiwiY3VzdG9taXplX2xhdW5jaGVyX2xvZ29fZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkRpc3BsYXkgeW91ciBsb2dvIG9uIHRoZSBtZXNzZW5nZXIgbGF1bmNoZXIuIiwiY3VzdG9taXplX2xhdW5jaGVyX2xvZ29fZmVhdHVyZV9zaG9ydF90aXRsZSI6IkN1c3RvbWl6ZSBsYXVuY2hlciBsb2dvIiwiY3VzdG9taXplX2xhdW5jaGVyX2xvZ29fZmVhdHVyZV90aXRsZSI6IkN1c3RvbWl6ZSBsYXVuY2hlciBsb2dvIiwiY3VzdG9taXplZF9ncmVldGluZ3NfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkdlbmVyYXRlIGdyZWV0aW5ncyB3aXRoIHRleHQgdG8gc3BlZWNoIG9yIHVwbG9hZCBjdXN0b20gYXVkaW8gZm9yIGJyYW5kZWQgb3IgbG9jYWxpemVkIG1lc3NhZ2VzLiIsImN1c3RvbWl6ZWRfZ3JlZXRpbmdzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJDdXN0b21pemVkIGdyZWV0aW5ncyIsImN1c3RvbWl6ZWRfZ3JlZXRpbmdzX2ZlYXR1cmVfdGl0bGUiOiJDdXN0b21pemVkIGdyZWV0aW5ncyIsImN4X3Njb3JlX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJBbiBBSS1nZW5lcmF0ZWQgbWV0cmljIHRoYXQgc2NvcmVzIHRoZSBjdXN0b21lciBleHBlcmllbmNlIGFjcm9zcyBhbGwgb2YgeW91ciBjb252ZXJzYXRpb25zLiIsImN4X3Njb3JlX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJDWCBTY29yZSIsImN4X3Njb3JlX2ZlYXR1cmVfdGl0bGUiOiJDWCBTY29yZSIsImRhdGFfZXhwb3J0X2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJFeHBvcnQgSW50ZXJjb20gZGF0YSB0byBhIGRhdGEgd2FyZWhvdXNlLiIsImRhdGFfZXhwb3J0X2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJEYXRhIGV4cG9ydCIsImRhdGFfZXhwb3J0X2ZlYXR1cmVfdGl0bGUiOiJEYXRhIGV4cG9ydCIsImRhdGFfdGFibGUiOiJEYXRhIHRhYmxlIiwiZGVjZW1iZXJfZGF0ZSI6IkRlY2VtYmVyIHtkYXRlfSIsImRpY3RhdGUiOiJEaWN0YXRlIiwiZGlzY292ZXJ5X2xhdW5jaGVyIjoiZGlzY292ZXJ5IGxhdW5jaGVyIiwiZGlzY292ZXJ5X21vZGVfZW50cnlfdGV4dCI6Ik5lZWQgaGVscD8iLCJkaXNtaXNzIjoiRGlzbWlzcyIsImRvbnRfc2hvd19zdWdnZXN0aW9ucyI6IkRvbuKAmXQgc2hvdyBzdWdnZXN0aW9ucyIsImRvd25sb2FkX3RyYW5zY3JpcHQiOiJEb3dubG9hZCB0cmFuc2NyaXB0IiwiZHJhZ19kcm9wX292ZXJsYXlfc3VidGl0bGUiOiJUaGV5XCdsbCBiZSBhZGRlZCB0byB5b3VyIGNvbnZlcnNhdGlvbiIsImRyYWdfZHJvcF9vdmVybGF5X3RpdGxlIjoiRHJvcCBmaWxlcyBvciBpbWFnZXMgaGVyZSIsImVmZmVjdGl2ZW5lc3NfcmVwb3J0X2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJHZXQgaW5zaWdodCBpbnRvIHlvdXIgc3VwcG9ydCB0ZWFtXCdzIGVmZmVjdGl2ZW5lc3MgYW5kIGlkZW50aWZ5IGluZWZmaWNpZW5jaWVzLiIsImVmZmVjdGl2ZW5lc3NfcmVwb3J0X2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJFZmZlY3RpdmVuZXNzIHJlcG9ydCIsImVmZmVjdGl2ZW5lc3NfcmVwb3J0X2ZlYXR1cmVfdGl0bGUiOiJFZmZlY3RpdmVuZXNzIHJlcG9ydCIsImVtYWlsIjoiRW1haWwiLCJlbWFpbF9jYW1wYWlnbnNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkNyZWF0ZSBhbmQgc2VuZCB0YXJnZXRlZCBlbWFpbHMgdG8gY3VzdG9tZXJzLiIsImVtYWlsX2NhbXBhaWduc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiRW1haWwgY2FtcGFpZ25zIiwiZW1haWxfY2FtcGFpZ25zX2ZlYXR1cmVfdGl0bGUiOiJFbWFpbCBjYW1wYWlnbnMiLCJlbW9qaV9waWNrZXIiOiJFbW9qaSBwaWNrZXIiLCJlbXB0eV9jb252ZXJzYXRpb25zIjoiTWVzc2FnZXMgZnJvbSB0aGUgdGVhbSB3aWxsIGJlIHNob3duIGhlcmUiLCJlbXB0eV9zdWdnZXN0aW9uX3Byb21wdCI6Ik5vIHJlbGF0ZWQgc3VnZ2VzdGlvbnMiLCJlbmFibGVfbWljcm9waG9uZV9mb3Jfdm9pY2VfZmVhdHVyZXMiOiJFbmFibGUgbWljcm9waG9uZSBhY2Nlc3MgaW4geW91ciBicm93c2VyIHNldHRpbmdzIHRvIHVzZSB2b2ljZSBmZWF0dXJlcy4iLCJlbnRlcl9mdWxsc2NyZWVuIjoiRW50ZXIgZnVsbHNjcmVlbiIsImVudGVyX3RleHRfcGxhY2Vob2xkZXIiOiJFbnRlciB0ZXh04oCmIiwiZW50ZXJfeW91cl9lbWFpbCI6IkVudGVyIHlvdXIgZW1haWwiLCJleGl0X2Z1bGxzY3JlZW4iOiJFeGl0IGZ1bGxzY3JlZW4iLCJleHBhbmRfaGVhZGVyIjoiRXhwYW5kIGhlYWRlciIsImV4cGFuZGVkIjoiRXhwYW5kZWQiLCJleHBhbmRlZF9tb2RlX2Rpc2FibGUiOiJDb2xsYXBzZSB3aW5kb3ciLCJleHBhbmRlZF9tb2RlX2VuYWJsZSI6IkV4cGFuZCB3aW5kb3ciLCJleHBlY3RlZF9yZXNwb25zZV9kZWxheV8xMDgwMCI6InVuZGVyIDMgaG91cnMiLCJleHBlY3RlZF9yZXNwb25zZV9kZWxheV8xMjAiOiJ1bmRlciAyIG1pbnV0ZXMiLCJleHBlY3RlZF9yZXNwb25zZV9kZWxheV8xMjAwIjoidW5kZXIgMjAgbWludXRlcyIsImV4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzE0NDAwIjoidW5kZXIgNCBob3VycyIsImV4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzE3MjgwMCI6IjIgZGF5cyIsImV4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzE4MCI6InVuZGVyIDMgbWludXRlcyIsImV4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzE4MDAiOiJ1bmRlciAzMCBtaW51dGVzIiwiZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMTgwMDAiOiJ1bmRlciA1IGhvdXJzIiwiZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMjE2MDAiOiJ1bmRlciA2IGhvdXJzIiwiZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMjQwIjoidW5kZXIgNCBtaW51dGVzIiwiZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMjU5MjAwIjoiMyBkYXlzIiwiZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMzAwIjoidW5kZXIgNSBtaW51dGVzIiwiZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMzQ1NjAwIjoiNCBkYXlzIiwiZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMzYwMCI6InVuZGVyIDEgaG91ciIsImV4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzQzMjAwIjoidW5kZXIgMTIgaG91cnMiLCJleHBlY3RlZF9yZXNwb25zZV9kZWxheV80MzIwMDAiOiI1IGRheXMiLCJleHBlY3RlZF9yZXNwb25zZV9kZWxheV81MTg0MDAiOiI2IGRheXMiLCJleHBlY3RlZF9yZXNwb25zZV9kZWxheV82MCI6InVuZGVyIDEgbWludXRlIiwiZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfNjAwIjoidW5kZXIgMTAgbWludXRlcyIsImV4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzYwNDgwMCI6InVuZGVyIDEgd2VlayIsImV4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzcyMDAiOiJ1bmRlciAyIGhvdXJzIiwiZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfODY0MDAiOiIxIGRheSIsImV4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzkwMCI6InVuZGVyIDE1IG1pbnV0ZXMiLCJleHBvcnRfY29udmVyc2F0aW9uX2RhdGFfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkVhc2lseSBleHBvcnQgeW91ciBjb252ZXJzYXRpb24gYW5kIG1lc3NhZ2UgZGF0YSB0byBmdXJ0aGVyIGFuYWx5emUgeW91ciB0ZWFtXCdzIHBlcmZvcm1hbmNlLiIsImV4cG9ydF9jb252ZXJzYXRpb25fZGF0YV9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiRXhwb3J0IGNvbnZlcnNhdGlvbiBkYXRhIiwiZXhwb3J0X2NvbnZlcnNhdGlvbl9kYXRhX2ZlYXR1cmVfdGl0bGUiOiJFeHBvcnQgY29udmVyc2F0aW9uIGRhdGEiLCJleHRlbmRlZF9hcGlfbGltaXRfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkNvbXBhbmllcyByZXF1aXJpbmcgbW9yZSBBUEkgdm9sdW1lIGNhbiBleHRlbmQgdG8gMzAsMDAwIGNhbGxzIHBlciBtaW51dGUuIiwiZXh0ZW5kZWRfYXBpX2xpbWl0X2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJFeHRlbmRlZCBBUEkgbGltaXQiLCJleHRlbmRlZF9hcGlfbGltaXRfZmVhdHVyZV90aXRsZSI6IkV4dGVuZGVkIEFQSSBsaW1pdCIsImV4dGVybmFsX2FuZF9pbnRlcm5hbF9zb3VyY2VzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJGaW4gQUkgQ29waWxvdCBjb25uZWN0cyB0byBleHRlcm5hbCBjb250ZW50IChhcnRpY2xlcywgcHVibGljIFVSTHMsIFBERnMpIGFuZCBpbnRlcm5hbCBjb250ZW50IChhcnRpY2xlcyBvciBzeW5jcyB3aXRoIENvbmZsdWVuY2UsIE5vdGlvbiwgb3IgR3VydS4pIiwiZXh0ZXJuYWxfYW5kX2ludGVybmFsX3NvdXJjZXNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkV4dGVybmFsICYgaW50ZXJuYWwgc291cmNlcyIsImV4dGVybmFsX2FuZF9pbnRlcm5hbF9zb3VyY2VzX2ZlYXR1cmVfdGl0bGUiOiJFeHRlcm5hbCAmIGludGVybmFsIHNvdXJjZXMiLCJleHRyYV9sYWJlbHNfY291bnQiOiIrIHtsYWJlbHNfY291bnR9IGxhYmVscyIsImZhaWxlZF9tZXNzYWdlIjoiRmFpbGVkIG1lc3NhZ2UiLCJmYWlsZWRfdG9fc2VuZCI6IkNvdWxkblwndCBzZW5kIiwiZmVicnVhcnlfZGF0ZSI6IkZlYnJ1YXJ5IHtkYXRlfSIsImZpZWxkX2lzX3JlcXVpcmVkIjoiRmllbGQge2ZpZWxkX25hbWV9IGlzIHJlcXVpcmVkIiwiZmlsZSI6IkZpbGUiLCJmaWxlX21heF9saW1pdCI6Ik1heGltdW0ge2xpbWl0fSBmaWxlcyIsImZpbGVfdG9vX2JpZyI6IkNhblwndCBzZW5kIGZpbGVzIG92ZXIge2xpbWl0fU1CIiwiZmlsZV90b29fbGFyZ2VfdG9fdHJhbnNjcmliZSI6IkZpbGUgdG9vIGxhcmdlIHRvIHRyYW5zY3JpYmUiLCJmaWxlX3R5cGVfbm90X2FsbG93ZWQiOiJGaWxlIHR5cGUgaXMgbm90IGFsbG93ZWQiLCJmaW5fZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkZpbiBpcyB0aGUgbW9zdCBzb3BoaXN0aWNhdGVkIEFJIGFnZW50IGluIGN1c3RvbWVyIHNlcnZpY2UsIGhhbmRsaW5nIGFsbCBvZiB5b3VyIGZyb250bGluZSBzdXBwb3J0IHdoaWxlIGRlbGl2ZXJpbmcgaHVtYW4tcXVhbGl0eSBzZXJ2aWNlLiIsImZpbl9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiRmluIEFJIEFnZW50IiwiZmluX2ZlYXR1cmVfdGl0bGUiOiJGaW4gQUkgQWdlbnQiLCJmaW5fZ3VpZGFuY2VfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkZpbiBjYW4gbGVhcm4geW91ciBzdXBwb3J0IHBvbGljaWVzIG9yIGluc3RydWN0aW9ucyBpbiBuYXR1cmFsIGxhbmd1YWdlLCBlbnN1cmluZyBpdCBhbHdheXMgZm9sbG93cyB0aGUgY29ycmVjdCBwcm9jZXNzZXMgd2l0aCBjdXN0b21lcnMuIiwiZmluX2d1aWRhbmNlX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJGaW4gR3VpZGFuY2UiLCJmaW5fZ3VpZGFuY2VfZmVhdHVyZV90aXRsZSI6IkZpbiBHdWlkYW5jZSIsImZpbl9rbm93bGVkZ2VfbWFuYWdlbWVudF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRmluXCdzIGluZHVzdHJ5IGxlYWRpbmcgS25vd2xlZGdlIEh1YiBtYWtlcyBpdCBlYXN5IGZvciB5b3VyIHRlYW0gdG8gY29udHJvbCwgdXBkYXRlIGFuZCBtYWludGFpbiBhbGwgb2YgdGhlIGtub3dsZWRnZSBGaW4gbGVhcm5zIGZyb20gaW4gYSBjZW50cmFsaXplZCBsb2NhdGlvbi4iLCJmaW5fa25vd2xlZGdlX21hbmFnZW1lbnRfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkZpbiBLbm93bGVkZ2UgTWFuYWdlbWVudCIsImZpbl9rbm93bGVkZ2VfbWFuYWdlbWVudF9mZWF0dXJlX3RpdGxlIjoiRmluIEtub3dsZWRnZSBNYW5hZ2VtZW50IiwiZmluX2tub3dsZWRnZV9zb3VyY2VzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJGaW4gaW5zdGFudGx5IGxlYXJucyBmcm9tIGEgdmFyaWV0eSBvZiBwdWJsaWMgYW5kIHByaXZhdGUga25vd2xlZGdlIHNvdXJjZXMsIGluY2x1ZGluZyBIZWxwIENlbnRlciBhcnRpY2xlcywgaW50ZXJuYWwgc3VwcG9ydCBjb250ZW50LCBQREZzLCBhbmQgVVJMcy4iLCJmaW5fa25vd2xlZGdlX3NvdXJjZXNfZmVhdHVyZV9zaG9ydF90aXRsZSI6Iktub3dsZWRnZSBzb3VyY2VzIiwiZmluX2tub3dsZWRnZV9zb3VyY2VzX2ZlYXR1cmVfdGl0bGUiOiJLbm93bGVkZ2Ugc291cmNlcyIsImZpbl9tdWx0aV9zb3VyY2VfZ2VuZXJhdGl2ZV9hbnN3ZXJzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJGaW4gY2FuIGNvbnN0cnVjdCBhbiBhbnN3ZXIgdXNpbmcgbXVsdGlwbGUgY29udGVudCBzb3VyY2VzLCBlbmhhbmNpbmcgaXRzIGFiaWxpdHkgdG8gc29sdmUgY29tcGxleCBxdWVzdGlvbnMgYnkgdXNpbmcgdGhlIG1vc3QgcmVsZXZhbnQgaW5mb3JtYXRpb24gZnJvbSBlYWNoIHNvdXJjZSB0byBjcmVhdGUgYSBtb3JlIHRob3JvdWdoIGFuZCBjb21wcmVoZW5zaXZlIHJlc3BvbnNlLiIsImZpbl9tdWx0aV9zb3VyY2VfZ2VuZXJhdGl2ZV9hbnN3ZXJzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJNdWx0aS1Tb3VyY2UgR2VuZXJhdGl2ZSBBbnN3ZXJzIiwiZmluX211bHRpX3NvdXJjZV9nZW5lcmF0aXZlX2Fuc3dlcnNfZmVhdHVyZV90aXRsZSI6Ik11bHRpLVNvdXJjZSBHZW5lcmF0aXZlIEFuc3dlcnMiLCJmaW5fbXVsdGlsaW5ndWFsX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJGaW4gY2FuIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IGFuZCByZXNvbHZlIGlzc3VlcyBpbiBtb3JlIHRoYW4gNDUgbGFuZ3VhZ2VzLCBnaXZpbmcgeW91IGNvbXBsZXRlIGNvbnRyb2wgb3ZlciB3aGljaCBvZiB0aG9zZSBsYW5ndWFnZXMgeW91IHdvdWxkIGxpa2UgdG8gc3VwcG9ydC4iLCJmaW5fbXVsdGlsaW5ndWFsX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJNdWx0aWxpbmd1YWwiLCJmaW5fbXVsdGlsaW5ndWFsX2ZlYXR1cmVfdGl0bGUiOiJNdWx0aWxpbmd1YWwiLCJmaW5fb3Zlcl9hcGlfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkludGVncmF0ZSBGaW4gYWxtb3N0IGFueXdoZXJlIHVzaW5nIGFuIEFQSSBjb25uZWN0aW9uLiIsImZpbl9vdmVyX2FwaV9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiRmluIG92ZXIgQVBJIiwiZmluX292ZXJfYXBpX2ZlYXR1cmVfdGl0bGUiOiJGaW4gb3ZlciBBUEkiLCJmaW5fb3Zlcl9lbWFpbF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRmluIGNhbiByZXNwb25kIHRvIGN1c3RvbWVycyBvdmVyIGVtYWlsLCB3aXRoIHJlc3BvbnNlcyBzdHJ1Y3R1cmVkIGluIGEgd2F5IHRoYXQgZmVlbHMgbmF0dXJhbCB0byB0aGUgY2hhbm5lbC4gQXQgdGhlIHNhbWUgdGltZSwgRmluIGZpbHRlcnMgb3V0IHBoaXNoaW5nIGF0dGVtcHRzLCBzcGFtLCBhbmQgb3RoZXIgdGhyZWF0cy4iLCJmaW5fb3Zlcl9lbWFpbF9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiRmluIG92ZXIgZW1haWwiLCJmaW5fb3Zlcl9lbWFpbF9mZWF0dXJlX3RpdGxlIjoiRmluIG92ZXIgZW1haWwiLCJmaW5fb3Zlcl9zbGFja19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRGVsaXZlciBpbnN0YW50LCBhY2N1cmF0ZSBhbnN3ZXJzIG9uIFNsYWNrLiIsImZpbl9vdmVyX3NsYWNrX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJGaW4gb3ZlciBTbGFjayIsImZpbl9vdmVyX3NsYWNrX2ZlYXR1cmVfdGl0bGUiOiJGaW4gb3ZlciBTbGFjayIsImZpbl9vdmVyX3NvY2lhbF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRmluIGNhbiBkZWxpdmVyIGNvbnZlcnNhdGlvbmFsIHN1cHBvcnQgYWNyb3NzIHNvY2lhbCBjaGFubmVscywgaW5jbHVkaW5nIEZhY2Vib29rIGFuZCBJbnN0YWdyYW0uIiwiZmluX292ZXJfc29jaWFsX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJGaW4gb3ZlciBzb2NpYWwiLCJmaW5fb3Zlcl9zb2NpYWxfZmVhdHVyZV90aXRsZSI6IkZpbiBvdmVyIHNvY2lhbCIsImZpbl9vdmVyX3doYXRzYXBwX2FuZF9zbXNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkZpbiBjYW4gZGVsaXZlciBjb252ZXJzYXRpb25hbCBzdXBwb3J0IGFjcm9zcyBXaGF0c2FwcCBhbmQgU01TLiIsImZpbl9vdmVyX3doYXRzYXBwX2FuZF9zbXNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkZpbiBvdmVyIFdoYXRzYXBwICYgU01TIiwiZmluX292ZXJfd2hhdHNhcHBfYW5kX3Ntc19mZWF0dXJlX3RpdGxlIjoiRmluIG92ZXIgV2hhdHNhcHAgJiBTTVMiLCJmaW5fb3Zlcl93aGF0c2FwcF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRmluIGNhbiByZXNwb25kIHRvIGN1c3RvbWVycyBvdmVyIFdoYXRzQXBwLCB3aXRoIHJlc3BvbnNlcyBzdHJ1Y3R1cmVkIGluIGEgd2F5IHRoYXQgZmVlbHMgbmF0dXJhbCB0byB0aGUgY2hhbm5lbC4iLCJmaW5fb3Zlcl93aGF0c2FwcF9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiRmluIG92ZXIgV2hhdHNBcHAiLCJmaW5fb3Zlcl93aGF0c2FwcF9mZWF0dXJlX3RpdGxlIjoiRmluIG92ZXIgV2hhdHNBcHAiLCJmaW5fcHJldmlld19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiU2VlIGhvdyB1cGRhdGVzIHRvIGd1aWRhbmNlLCBkZXBsb3ltZW50IHNldHRpbmdzIHdpbGwgYXBwZWFyIHRvIGN1c3RvbWVycyBpbiByZWFsIHRpbWUuIiwiZmluX3ByZXZpZXdfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkZpbiBwcmV2aWV3IiwiZmluX3ByZXZpZXdfZmVhdHVyZV90aXRsZSI6IkZpbiBwcmV2aWV3IiwiZmluX3ByZXZpZXdfaGFuZG92ZXJfbWVzc2FnZV9wYXJ0X29uZSI6IkF0IHRoaXMgcG9pbnQsIEnigJlkIGhhbmQgdGhlIGNvbnZlcnNhdGlvbiBvdmVyIHRvIGEgdGVhbW1hdGUuIEhvd2V2ZXIgdGhpcyBpcyBqdXN0IGEgcHJldmlldy4gWW91IGNhbiBjb250cm9sIGhhbmRvdmVycyBmcm9tIDxhIGhyZWY9XFwie2RlcGxveV91cmx9XFwiIHJlbD1cXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXFwiIHRhcmdldD1cXCJfYmxhbmtcXCI+RGVwbG95PC9hPi4iLCJmaW5fcHJldmlld19oYW5kb3Zlcl9tZXNzYWdlX3BhcnRfdHdvIjoiVG8ga2VlcCBnb2luZywgYXNrIG1lIGFub3RoZXIgcXVlc3Rpb24uIiwiZmluX3Byb2NlZHVyZXNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlByb2NlZHVyZXMgY29tYmluZSB0aGUgZmxleGliaWxpdHkgb2YgbmF0dXJhbCBsYW5ndWFnZSB3aXRoIHRoZSByZWxpYWJpbGl0eSBvZiBkZXRlcm1pbmlzdGljIGNvbnRyb2xzLCBlbmFibGluZyBGaW4gdG8gcmVzb2x2ZSBjb21wbGV4IGN1c3RvbWVyIHF1ZXJpZXMgZnJvbSBzdGFydCB0byBmaW5pc2guIiwiZmluX3Byb2NlZHVyZXNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkZpbiBQcm9jZWR1cmVzIiwiZmluX3Byb2NlZHVyZXNfZmVhdHVyZV90aXRsZSI6IkZpbiBQcm9jZWR1cmVzIiwiZmluX3Zpc2lvbl9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRmluIGNhbiByZWFkLCBhbmFseXplIGFuZCB1bmRlcnN0YW5kIGltYWdlcyDigJQgbGlrZSBzY3JlZW5zaG90cywgaW52b2ljZXMsIGFuZCBlcnJvciBtZXNzYWdlcy4iLCJmaW5fdmlzaW9uX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJGaW4gVmlzaW9uIiwiZmluX3Zpc2lvbl9mZWF0dXJlX3RpdGxlIjoiRmluIFZpc2lvbiIsImZpbl92b2ljZV9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRmluIFZvaWNlIGlzIEludGVyY29tXCdzIEFJIEFnZW50IGZvciBwaG9uZSBzdXBwb3J0LiIsImZpbl92b2ljZV9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiRmluIFZvaWNlIiwiZmluX3ZvaWNlX2ZlYXR1cmVfdGl0bGUiOiJGaW4gVm9pY2UiLCJmbGFncyI6IkZsYWdzIiwiZm9vZF9kcmluayI6IkZvb2QgJiBEcmluayIsImZvcndhcmRfdG9fZXh0ZXJuYWxfbnVtYmVyX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJGb3J3YXJkIGNhbGxzIHRvIGV4dGVybmFsIG51bWJlcnMgd2hlbiBvdXQgb2Ygb2ZmaWNlIG9yIHRvIGNvbm5lY3QgY3VzdG9tZXJzIHdpdGggYSBwYXJ0bmVyLiIsImZvcndhcmRfdG9fZXh0ZXJuYWxfbnVtYmVyX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJGb3J3YXJkIHRvIGV4dGVybmFsIG51bWJlciIsImZvcndhcmRfdG9fZXh0ZXJuYWxfbnVtYmVyX2ZlYXR1cmVfdGl0bGUiOiJGb3J3YXJkIHRvIGV4dGVybmFsIG51bWJlciIsImZyZXF1ZW50bHlfdXNlZCI6IkZyZXF1ZW50bHkgdXNlZCIsImZyb21fYXBwIjoiZnJvbSB7YXBwX25hbWV9IiwiZnJvbV9uYW1lIjoiZnJvbSB7bmFtZX0iLCJmdWxsX3BhZ2VfaGVscF9hcnRpY2xlX3RpdGxlIjoiSGVscCBjZW50ZXIgYXJ0aWNsZSIsImZ1bGxfcGFnZV9uZXdfY29udmVyc2F0aW9uX2xhYmVsIjoiTmV3IGNvbnZlcnNhdGlvbiIsImZ1bGxfcGFnZV9ub19jb252ZXJzYXRpb25zX3lldCI6Ik5vIGNvbnZlcnNhdGlvbnMgeWV0IiwiZnVsbF9wYWdlX3Jlc291cmNlc19zZWN0aW9uX3RpdGxlIjoiUmVzb3VyY2VzIiwiZnVsbF9wYWdlX3dlbGNvbWVfc3VidGl0bGUiOiJZb3VyIHN0ZXAtYnktc3RlcCBzZXR1cCBndWlkZSIsImZ1bGxfcGFnZV93ZWxjb21lX3RpdGxlIjoiR2V0IHN0YXJ0ZWQiLCJnZW5lcmF0aW5nX2Fuc3dlciI6IkdlbmVyYXRpbmcgYW5zd2VyLi4uIiwiZ2VuZXJhdGluZ190YWJsZSI6IkdlbmVyYXRpbmcgdGFibGXigKYiLCJnZXRfYW5faW5zdGFudF9hbnN3ZXIiOiJHZXQgYW4gaW5zdGFudCBhbnN3ZXIiLCJnZXRfaGVscCI6IkdldCBoZWxwIiwiZ2V0X25vdGlmaWVkIjoiR2V0IG5vdGlmaWVkIiwiZ2V0X25vdGlmaWVkX2J5X2VtYWlsIjoiR2V0IG5vdGlmaWVkIGJ5IGVtYWlsIiwiZ2V0X3Jlc3BvbnNlc19ieV9lbWFpbCI6IkdldCByZXBsaWVzIGJ5IGVtYWlsIiwiZ2lmX2F0dHJpYnV0aW9uIjoidmlhIHtwcm92aWRlcm5hbWV9IiwiZ2lmX3BpY2tlciI6IkdpZiBwaWNrZXIiLCJnaWZzX2xvYWRfZXJyb3IiOiJDb3VsZG5cJ3QgbG9hZCBHSUZzIiwiZ2l0aHViX2ludGVncmF0aW9uX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJTeW5jIEdpdEh1YiBpc3N1ZXMgd2l0aCB5b3VyIGNvbnZlcnNhdGlvbnMuIiwiZ2l0aHViX2ludGVncmF0aW9uX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJHaXRIdWIgaW50ZWdyYXRpb24iLCJnaXRodWJfaW50ZWdyYXRpb25fZmVhdHVyZV90aXRsZSI6IkdpdEh1YiBpbnRlZ3JhdGlvbiIsImdvX2JhY2siOiJHbyBiYWNrIiwiZ29fYmFja190byI6IkdvIGJhY2ssIHtkZXN0aW5hdGlvbn0iLCJnb190byI6IkdvIHRvIHthcHBfbmFtZX0iLCJncmVhdCI6IkdyZWF0IiwiZ3JvdXBfY29udmVyc2F0aW9uXzFfb3RoZXJfcGFydGljaXBhbnRfY291bnRfc2hvcnQiOiIrMSBvdGhlciIsImdyb3VwX2NvbnZlcnNhdGlvbl9tdWx0aXBsZV9vdGhlcl9wYXJ0aWNpcGFudF9jb3VudF9zaG9ydCI6Iit7b3RoZXJfcGFydGljaXBhbnRfY291bnR9IG90aGVycyIsImdyb3VwX2NvbnZlcnNhdGlvbl9tdWx0aXBsZV9wZXJzb25fYWxzb19wYXJ0aWNpcGF0aW5nIjoie290aGVyX3BhcnRpY2lwYW50X2NvdW50fSBvdGhlcnMgYXJlIGFsc28gcGFydGljaXBhdGluZyIsImdyb3VwX2NvbnZlcnNhdGlvbl9uYW1lX2Fsc29fcGFydGljaXBhdGluZyI6IntwYXJ0aWNpcGFudF9uYW1lfSBpcyBhbHNvIHBhcnRpY2lwYXRpbmciLCJncm91cF9jb252ZXJzYXRpb25fbmFtZV9hbmRfMV9vdGhlcl9hbHNvX3BhcnRpY2lhcHRpbmciOiJ7cGFydGljaXBhbnRfbmFtZX0gYW5kIDEgb3RoZXIgYXJlIGFsc28gcGFydGljaXBhdGluZyIsImdyb3VwX2NvbnZlcnNhdGlvbl9uYW1lX2FuZF9tdWx0aXBsZV9vdGhlcnNfYWxzb19wYXJ0aWNpcGF0aW5nIjoie3BhcnRpY2lwYW50X25hbWV9IGFuZCB7b3RoZXJfcGFydGljaXBhbnRfY291bnR9IG90aGVycyBhcmUgYWxzbyBwYXJ0aWNpcGF0aW5nIiwiZ3JvdXBfY29udmVyc2F0aW9uX29uZV9wZXJzb25fYWxzb19wYXJ0aWNpcGF0aW5nIjoiMSBvdGhlciBpcyBhbHNvIHBhcnRpY2lwYXRpbmciLCJoYW5kb3Zlcl9jb250ZXh0X2Zyb21fY29udmVyc2F0aW9uIjoiQ29udGV4dCBmcm9tIHtjb252ZXJzYXRpb259IiwiaGFuZG92ZXJfY29udGV4dF9zb3VyY2VfY29udmVyc2F0aW9uIjoib3RoZXIgY29udmVyc2F0aW9uIiwiaGFuZG92ZXJfY3RhX2NvbnZlcnNhdGlvbl9jcmVhdGVkIjoiU2VwYXJhdGUgY29udmVyc2F0aW9uIGNyZWF0ZWQiLCJoYW5kb3Zlcl9jdGFfZXJyb3IiOiJTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4iLCJoYW5kb3Zlcl9jdGFfdGFsa190b190ZWFtIjoiVGFsayB0byB0ZWFtIiwiaGVscF9jZW50ZXJfYXJ0aWNsZSI6IkhlbHAgQ2VudGVyIEFydGljbGUiLCJoZWxwX2NlbnRlcl9jdXN0b21pemF0aW9uX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJDdXN0b21pemUgdGhlIHZpc3VhbCBhcHBlYXJhbmNlIG9mIHlvdXIgaGVscCBjZW50ZXIgdG8ga2VlcCBpdCBsb29raW5nIG9uIGJyYW5kLiIsImhlbHBfY2VudGVyX2N1c3RvbWl6YXRpb25fZmVhdHVyZV9zaG9ydF90aXRsZSI6IkhlbHAgY2VudGVyIGN1c3RvbWl6YXRpb24iLCJoZWxwX2NlbnRlcl9jdXN0b21pemF0aW9uX2ZlYXR1cmVfdGl0bGUiOiJIZWxwIGNlbnRlciBjdXN0b21pemF0aW9uIiwiaGVscF9zcGFjZV90aXRsZSI6IkhlbHAiLCJoaV9uYW1lIjoiSGkge2ZpcnN0X25hbWV9IPCfkYsiLCJoaV90aGVyZSI6IkhpIDxpbXQ+Zmlyc3RfbmFtZSB8IGZhbGxiYWNrOiBcJ3RoZXJlXCc8L2ltdD4g8J+RiyIsImhpZGVfbWVzc2VuZ2VyX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJDaG9vc2Ugd2hldGhlciB0byBoaWRlIHRoZSBtZXNzZW5nZXIuIiwiaGlkZV9tZXNzZW5nZXJfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkhpZGUgbWVzc2VuZ2VyIiwiaGlkZV9tZXNzZW5nZXJfZmVhdHVyZV90aXRsZSI6IkhpZGUgbWVzc2VuZ2VyIiwiaGlwYWFfc3VwcG9ydF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiSW50ZXJjb20gaXMgSElQQUEgY29tcGxpYW50LiIsImhpcGFhX3N1cHBvcnRfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkhJUEFBIHN1cHBvcnQiLCJoaXBhYV9zdXBwb3J0X2ZlYXR1cmVfdGl0bGUiOiJISVBBQSBzdXBwb3J0IiwiaG9tZV9zcGFjZV90aXRsZSI6IkhvbWUiLCJob3dfY2FuX3dlX2hlbHAiOiJIb3cgY2FuIHdlIGhlbHA/IiwiaG93X3dvdWxkX3lvdV9yYXRlX3RoaXMiOiJIb3cgd291bGQgeW91IHJhdGUgdGhpcz8iLCJodWJzcG90X2ludGVncmF0aW9uX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJTZWUgSHViU3BvdCBkYXRhIGluIEludGVyY29tXCdzIGluYm94IGFuZCBzeW5jIGxlYWRzIGFuZCBjb252ZXJzYXRpb25zLiIsImh1YnNwb3RfaW50ZWdyYXRpb25fZmVhdHVyZV9zaG9ydF90aXRsZSI6Ikh1YlNwb3QgaW50ZWdyYXRpb24iLCJodWJzcG90X2ludGVncmF0aW9uX2ZlYXR1cmVfdGl0bGUiOiJIdWJTcG90IGludGVncmF0aW9uIiwiaHVtYW5faGFuZG9mZl9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQ29uZmlndXJlIGhvdyBhbmQgd2hlbiBGaW4gdHJpYWdlcyBjb252ZXJzYXRpb25zIG9yIGhhbmRzIG9mZiB0byB5b3VyIGh1bWFuIHN1cHBvcnQgdGVhbS4gRmluIHdpbGwgYWx3YXlzIGF1dG9tYXRpY2FsbHkgaGFuZG9mZiB3aGVuIHRoYXQgaXMgdGhlIHNhZmVzdCBvcHRpb24gZm9yIHRoZSBjdXN0b21lci4iLCJodW1hbl9oYW5kb2ZmX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJIdW1hbiBoYW5kb2ZmIiwiaHVtYW5faGFuZG9mZl9mZWF0dXJlX3RpdGxlIjoiSHVtYW4gaGFuZG9mZiIsImltYWdlX3ByZXZpZXdfYWx0IjoiSW1hZ2UgcHJldmlldyB7aW5kZXh9IG9mIHt0b3RhbH0iLCJpbWFnZV9wcmV2aWV3cyI6IkltYWdlIHByZXZpZXdzIiwiaW5ib3VuZF9hbmRfb3V0Ym91bmRfcGhvbmVfY2FsbHNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkN1c3RvbWVycyBjYW4gcmVhY2ggeW91IGJ5IHBob25lIGFuZCBhZ2VudHMgcmVjZWl2ZSBvciBwbGFjZSBpbi1icm93c2VyIHRocm91Z2ggdGhlIEludGVyY29tIEluYm94LiIsImluYm91bmRfYW5kX291dGJvdW5kX3Bob25lX2NhbGxzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJJbmJvdW5kIGFuZCBvdXRib3VuZCBwaG9uZSBjYWxscyIsImluYm91bmRfYW5kX291dGJvdW5kX3Bob25lX2NhbGxzX2ZlYXR1cmVfdGl0bGUiOiJJbmJvdW5kIGFuZCBvdXRib3VuZCBwaG9uZSBjYWxscyIsImluYm91bmRfZW1haWxfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlJlY2VpdmUgYW5kIHJlcGx5IHRvIHN1cHBvcnQgZW1haWxzIGZyb20gdGhlIEluYm94LCBmcmVlIG9mIGNoYXJnZS4iLCJpbmJvdW5kX2VtYWlsX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJJbmJvdW5kIGVtYWlsIiwiaW5ib3VuZF9lbWFpbF9mZWF0dXJlX3RpdGxlIjoiSW5ib3VuZCBlbWFpbCIsImluYm94X3ZpZXdzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJCdWlsZCBjdXN0b20gZmlsdGVyZWQgdmlld3MgdG8gbW9uaXRvciBjb252ZXJzYXRpb25zIGluIHJlYWwgdGltZS4iLCJpbmJveF92aWV3c19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiSW5ib3ggdmlld3MiLCJpbmJveF92aWV3c19mZWF0dXJlX3RpdGxlIjoiSW5ib3ggdmlld3MiLCJpbmNsdWRlZF91c2FnZV9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiTW9udGhseSBGaW4gQUkgQ29waWxvdCBVc2FnZSBpbmNsdWRlZCBpbiBldmVyeSBjb3JlIHBsYW4uIiwiaW5jbHVkZWRfdXNhZ2VfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkluY2x1ZGVkIHVzYWdlIiwiaW5jbHVkZWRfdXNhZ2VfZmVhdHVyZV90aXRsZSI6IkluY2x1ZGVkIHVzYWdlIiwiaW50ZWdyYXRlZF9jYWxsc19hbmRfY29udmVyc2F0aW9uc19pbmJveF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiU2F2ZSB0aW1lIGJ5IGhhbmRsaW5nIGNhbGxzIHdpdGhpbiB0aGUgSW50ZXJjb20gSW5ib3guIFF1aWNrbHkgZm9sbG93IHVwIHdpdGggY3VzdG9tZXJzIHRocm91Z2ggdGlja2V0cyBvciBtZXNzYWdpbmcgYWNyb3NzIHZhcmlvdXMgY2hhbm5lbHMuIiwiaW50ZWdyYXRlZF9jYWxsc19hbmRfY29udmVyc2F0aW9uc19pbmJveF9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiSW50ZWdyYXRlZCBjYWxscyBhbmQgY29udmVyc2F0aW9ucyBJbmJveCIsImludGVncmF0ZWRfY2FsbHNfYW5kX2NvbnZlcnNhdGlvbnNfaW5ib3hfZmVhdHVyZV90aXRsZSI6IkludGVncmF0ZWQgY2FsbHMgYW5kIGNvbnZlcnNhdGlvbnMgSW5ib3giLCJpbnRlcmNvbV9tZXNzZW5nZXJfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkdpdmUgcHJvYWN0aXZlIGhlbHAsIHNlbGYtc2VydmUgb3B0aW9ucywgYW5kIHBlcnNvbmFsIGFzc2lzdGFuY2UgdGhyb3VnaCBjaGF0IG9uIHlvdXIgd2Vic2l0ZSBvciBtb2JpbGUgYXBwLiIsImludGVyY29tX21lc3Nlbmdlcl9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiSW50ZXJjb20gbWVzc2VuZ2VyIiwiaW50ZXJjb21fbWVzc2VuZ2VyX2ZlYXR1cmVfdGl0bGUiOiJJbnRlcmNvbSBtZXNzZW5nZXIiLCJqYW51YXJ5X2RhdGUiOiJKYW51YXJ5IHtkYXRlfSIsImpvaW5fY29udmVyc2F0aW9uIjoiSm9pbiBjb252ZXJzYXRpb24iLCJqdWx5X2RhdGUiOiJKdWx5IHtkYXRlfSIsImp1bmVfZGF0ZSI6Ikp1bmUge2RhdGV9IiwibGFzdF9hY3RpdmVfaG91cnNfYWdvIjoiTGFzdCBhY3RpdmUge21pbnN9IGhvdXJzIGFnbyIsImxhc3RfYWN0aXZlX21pbnNfYWdvIjoiTGFzdCBhY3RpdmUge21pbnN9IG1pbnMgYWdvIiwibGFzdF9hY3RpdmVfb3Zlcl9hX3dlZWsiOiJMYXN0IGFjdGl2ZSBvdmVyIDF3IGFnbyIsImxhdW5jaGVyX25ld19tZXNzYWdlX3Npbmd1bGFyIjoie2NvdW50fSBuZXcgbWVzc2FnZSIsImxhdW5jaGVyX25ld19tZXNzYWdlc19wbHVyYWwiOiJ7Y291bnR9IG5ldyBtZXNzYWdlcyIsImxlYXJuX21vcmUiOiJMZWFybiBtb3JlIiwibGVhdmVfdXNfYV9tZXNzYWdlIjoiTGVhdmUgdXMgYSBtZXNzYWdlIiwibGVhdmVfeW91cl9lbWFpbCI6IkxlYXZlIHlvdXIgZW1haWwuLi4iLCJsaXN0X3BsYWNlaG9sZGVyIjoiTGlzdCIsImxpdGVfc2VhdHNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkJhY2stb2ZmaWNlIHRlYW1zIGNhbiBhY2Nlc3MgSW50ZXJjb20gYXMgYSBjb2xsYWJvcmF0b3IgYXQgbm8gZXh0cmEgY29zdC4iLCJsaXRlX3NlYXRzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJMaXRlIHNlYXRzIiwibGl0ZV9zZWF0c19mZWF0dXJlX3RpdGxlIjoiTGl0ZSBzZWF0cyIsImxpdmVfY2hhdF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiU3VwcG9ydCBjdXN0b21lcnMgdmlhIGxpdmUgY2hhdCBvbiB0aGUgbWVzc2VuZ2VyICh3ZWIsIGlPUywgQW5kcm9pZCkuIiwibGl2ZV9jaGF0X2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJMaXZlIGNoYXQiLCJsaXZlX2NoYXRfZmVhdHVyZV90aXRsZSI6IkxpdmUgY2hhdCIsImxvYWRpbmciOiJMb2FkaW5nIiwibG9jYWxfYW5kX3RvbGxfZnJlZV9udW1iZXJzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJTZXQtdXAgYSBuZXcgbnVtYmVyIG9yIHBvcnQgb3ZlciB5b3VyIGV4aXN0aW5nIG51bWJlci4iLCJsb2NhbF9hbmRfdG9sbF9mcmVlX251bWJlcnNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkxvY2FsIGFuZCB0b2xsLWZyZWUgbnVtYmVycyIsImxvY2FsX2FuZF90b2xsX2ZyZWVfbnVtYmVyc19mZWF0dXJlX3RpdGxlIjoiTG9jYWwgYW5kIHRvbGwtZnJlZSBudW1iZXJzIiwibWFjcm9zX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJTYXZlIHRpbWUgb24gcmVwZXRpdGl2ZSB0YXNrcyBieSBjcmVhdGluZyBzYXZlZCByZXBsaWVzIGFuZCBhY3Rpb25zIGZvciB5b3VyIHRlYW0uIiwibWFjcm9zX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJNYWNyb3MiLCJtYWNyb3NfZmVhdHVyZV90aXRsZSI6Ik1hY3JvcyIsIm1hcmNoX2RhdGUiOiJNYXJjaCB7ZGF0ZX0iLCJtYXJrZXRvX2ludGVncmF0aW9uX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJBdXRvbWF0aWNhbGx5IHNlbmQgbGVhZHMgYW5kIGNvbnZlcnNhdGlvbnMgdG8gTWFya2V0by4iLCJtYXJrZXRvX2ludGVncmF0aW9uX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJNYXJrZXRvIGludGVncmF0aW9uIiwibWFya2V0b19pbnRlZ3JhdGlvbl9mZWF0dXJlX3RpdGxlIjoiTWFya2V0byBpbnRlZ3JhdGlvbiIsIm1heGltdW1fYXR0YWNobWVudF9saW1pdF9yZWFjaGVkIjoiTWF4aW11bSBhdHRhY2htZW50IGxpbWl0IHJlYWNoZWQiLCJtYXlfZGF0ZSI6Ik1heSB7ZGF0ZX0iLCJtZXNzYWdlIjoibWVzc2FnZSIsIm1lc3NhZ2VfcGxhY2Vob2xkZXIiOiJNZXNzYWdl4oCmIiwibWVzc2FnZV9zZWVuIjoiU2VlbiIsIm1lc3NhZ2Vfc2VudCI6Ik1lc3NhZ2Ugc2VudC4iLCJtZXNzYWdlX3N0YXRlX3NlbmRpbmciOiJTZW5kaW5n4oCmIiwibWVzc2FnZV91bnNlZW4iOiJOb3Qgc2VlbiB5ZXQiLCJtZXNzYWdlc19icm93c2VfYXJ0aWNsZXNfYnRuIjoiQnJvd3NlIGZvciBoZWxwIiwibWVzc2FnZXNfZW1wdHlfc3RhdGVfdGV4dCI6Ik1lc3NhZ2VzIGZyb20gdGhlIHRlYW0gd2lsbCBiZSBzaG93biBoZXJlIiwibWVzc2FnZXNfZW1wdHlfc3RhdGVfdGl0bGUiOiJObyBtZXNzYWdlcyIsIm1lc3NhZ2VzX3NwYWNlX3RpdGxlIjoiTWVzc2FnZXMiLCJtZXNzZW5nZXIiOiJtZXNzZW5nZXIiLCJtZXNzZW5nZXJfYXBwX3RhcmdldGluZ19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQ29uZmlndXJlIHlvdXIgbWVzc2VuZ2VyXCdzIGhvbWUgc2NyZWVuIHdpdGggYXBwcyBhbmQgYXBwbHkgdGFyZ2V0aW5nIHRvIGRpZmZlcmVudCB1c2Vycy4iLCJtZXNzZW5nZXJfYXBwX3RhcmdldGluZ19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiTWVzc2VuZ2VyIGFwcCB0YXJnZXRpbmciLCJtZXNzZW5nZXJfYXBwX3RhcmdldGluZ19mZWF0dXJlX3RpdGxlIjoiTWVzc2VuZ2VyIGFwcCB0YXJnZXRpbmciLCJtZXNzZW5nZXJfYm90X3JlcGx5X3RpbWUiOiJPdXIgYm90IHdpbGwgcmVwbHkgaW5zdGFudGx5IiwibWVzc2VuZ2VyX2NhbGxzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJBZ2VudHMgY2FuIGdvIGZyb20gYSBsaXZlIGNoYXQgdG8gYSB2b2ljZSBvciB2aWRlbyBjYWxsIGluIHRoZSBNZXNzZW5nZXIgZm9yIHJpY2hlciBjdXN0b21lciBpbnRlcmFjdGlvbnMuIiwibWVzc2VuZ2VyX2NhbGxzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJNZXNzZW5nZXIgY2FsbHMiLCJtZXNzZW5nZXJfY2FsbHNfZmVhdHVyZV90aXRsZSI6Ik1lc3NlbmdlciBjYWxscyIsIm1lc3Nlbmdlcl9zY3JlZW5fc2hhcmluZ19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQ3VzdG9tZXJzIGNhbiBzaGFyZSB0aGVpciBzY3JlZW4gdG8gaGF2ZSBjb21wbGV4IHByb2JsZW1zIHNvbHZlZCBpbiBjb250ZXh0LiIsIm1lc3Nlbmdlcl9zY3JlZW5fc2hhcmluZ19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiTWVzc2VuZ2VyIHNjcmVlbiBzaGFyaW5nIiwibWVzc2VuZ2VyX3NjcmVlbl9zaGFyaW5nX2ZlYXR1cmVfdGl0bGUiOiJNZXNzZW5nZXIgc2NyZWVuIHNoYXJpbmciLCJtb2JpbGVfY2Fyb3VzZWxzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJIaWdobGlnaHQgdGhlIGJlc3QgcGFydHMgb2YgeW91ciBtb2JpbGUgYXBwIHdpdGggc2ltcGxlLXRvLWNyZWF0ZSwgZnVsbHkgY3VzdG9taXphYmxlIHNjcmVlbnMuIiwibW9iaWxlX2Nhcm91c2Vsc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiTW9iaWxlIGNhcm91c2VscyIsIm1vYmlsZV9jYXJvdXNlbHNfZmVhdHVyZV90aXRsZSI6Ik1vYmlsZSBjYXJvdXNlbHMiLCJtb3JlX2FjdGlvbnMiOiJNb3JlIGFjdGlvbnMiLCJtdWx0aV9icmFuZF9lbWFpbF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiTWFuYWdlIGVtYWlsIHNldHRpbmdzLCBzaWduYXR1cmVzLCBhbmQgbm90aWZpY2F0aW9ucyBmb3IgbXVsdGlwbGUgYnJhbmRzLiIsIm11bHRpX2JyYW5kX2VtYWlsX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJNdWx0aS1icmFuZCBlbWFpbCIsIm11bHRpX2JyYW5kX2VtYWlsX2ZlYXR1cmVfdGl0bGUiOiJNdWx0aS1icmFuZCBlbWFpbCIsIm11bHRpYnJhbmRfbWVzc2VuZ2VyX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJDcmVhdGUgZGlmZmVyZW50IG1lc3NlbmdlciBzdHlsZXMgZm9yIGVhY2ggb2YgeW91ciB1bmlxdWUgYnJhbmRzLiIsIm11bHRpYnJhbmRfbWVzc2VuZ2VyX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJNdWx0aWJyYW5kIG1lc3NlbmdlciIsIm11bHRpYnJhbmRfbWVzc2VuZ2VyX2ZlYXR1cmVfdGl0bGUiOiJNdWx0aWJyYW5kIG1lc3NlbmdlciIsIm11bHRpbGluZ3VhbF9oZWxwX2NlbnRlcl9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQ29uZmlndXJlIHlvdXIgaGVscCBjZW50ZXIgdG8gd29yayBpbiBtdWx0aXBsZSBsYW5ndWFnZXMsIHNvIHlvdSBjYW4gcHJvdmlkZSBzZWxmLXNlcnZpY2Ugc3VwcG9ydCBpbiB0aGUgbGFuZ3VhZ2VzIHlvdXIgY3VzdG9tZXJzIHNwZWFrLiIsIm11bHRpbGluZ3VhbF9oZWxwX2NlbnRlcl9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiTXVsdGlsaW5ndWFsIGhlbHAgY2VudGVyIiwibXVsdGlsaW5ndWFsX2hlbHBfY2VudGVyX2ZlYXR1cmVfdGl0bGUiOiJNdWx0aWxpbmd1YWwgaGVscCBjZW50ZXIiLCJtdWx0aXBsZV9hcnRpY2xlcyI6Int0b3RhbF9hcnRpY2xlc30gYXJ0aWNsZXMiLCJtdWx0aXBsZV9jb2xsZWN0aW9ucyI6Int0b3RhbF9jb2xsZWN0aW9ufSBjb2xsZWN0aW9ucyIsIm11bHRpcGxlX2hlbHBfY2VudGVyc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQ3JlYXRlIHNlcGFyYXRlIGtub3dsZWRnZSBiYXNlcyBmb3IgeW91ciBkaWZmZXJlbnQgcHJvZHVjdHMgb3IgYnJhbmRzLiIsIm11bHRpcGxlX2hlbHBfY2VudGVyc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiTXVsdGlwbGUgaGVscCBjZW50ZXJzIiwibXVsdGlwbGVfaGVscF9jZW50ZXJzX2ZlYXR1cmVfdGl0bGUiOiJNdWx0aXBsZSBoZWxwIGNlbnRlcnMiLCJtdWx0aXBsZV90ZWFtX2luYm94ZXNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlByb3ZpZGUgbXVsdGlwbGUgaW5ib3hlcyBwZXIgdGVhbSBmcm9tIHRoZSBzYW1lIHdvcmtzcGFjZS4iLCJtdWx0aXBsZV90ZWFtX2luYm94ZXNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlRlYW0gaW5ib3hlcyIsIm11bHRpcGxlX3RlYW1faW5ib3hlc19mZWF0dXJlX3RpdGxlIjoiTXVsdGlwbGUgdGVhbSBpbmJveGVzIiwibXV0ZV9ob2xkX3RyYW5zZmVyX2NhbGxzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJNdXRlLCBob2xkIGFuZCB0cmFuc2ZlciBjYWxscyB0byBvdGhlciB0ZWFtcyBhcyBuZWVkZWQuIiwibXV0ZV9ob2xkX3RyYW5zZmVyX2NhbGxzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJNdXRlLCBob2xkICYgdHJhbnNmZXIgY2FsbHMiLCJtdXRlX2hvbGRfdHJhbnNmZXJfY2FsbHNfZmVhdHVyZV90aXRsZSI6Ik11dGUsIGhvbGQgJiB0cmFuc2ZlciBjYWxscyIsIm11dGVfc291bmQiOiJNdXRlIHNvdW5kIiwibmFtZV9hbmRfMV9vdGhlciI6IntuYW1lfSBhbmQgMSBvdGhlciIsIm5hbWVfYW5kX29uZV9vdGhlciI6IntuYW1lfSBhbmQgb25lIG90aGVyIiwibmFtZV9hbmRfdHdvX290aGVycyI6IntuYW1lfSBhbmQgMiBvdGhlcnMiLCJuYW1lX2FuZF94X290aGVycyI6IntuYW1lfSBhbmQge2NvdW50fSBvdGhlcnMiLCJuYXR1cmUiOiJOYXR1cmUiLCJuYXZpZ2F0aW9uX2JhY2siOiJCYWNrIiwibmV3IjoiTmV3IiwibmV3X2NoYXQiOiJOZXcgY2hhdCIsIm5ld19jb252ZXJzYXRpb24iOiJOZXcgY29udmVyc2F0aW9uIiwibmV3X21lc3NhZ2UiOiJOZXcgbWVzc2FnZSIsIm5ld3MiOiJOZXdzIiwibmV3c19lbXB0eV90aXRsZSI6Ik5vIG5ld3MgeWV0IiwibmV3c19pdGVtc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiU2hhcmUgY29udGV4dHVhbCBhbmQgcmVsZXZhbnQgYW5ub3VuY2VtZW50cyB3aXRoIHlvdXIgY3VzdG9tZXJzIGRpcmVjdGx5IGluIHRoZSBtZXNzZW5nZXIuIiwibmV3c19pdGVtc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiTmV3cyBpdGVtcyIsIm5ld3NfaXRlbXNfZmVhdHVyZV90aXRsZSI6Ik5ld3MgaXRlbXMiLCJuZXdzX2xhdGVzdF9zdWJ0aXRsZSI6IkZyb20gVGVhbSB7dGVhbV9uYW1lfSIsIm5ld3NfbGF0ZXN0X3RpdGxlIjoiTGF0ZXN0IiwibmV3c19vbGRlcl90aXRsZSI6Ik9sZGVyIiwibmV3c19zcGFjZV90aXRsZSI6Ik5ld3MiLCJuZXdzZmVlZCI6Ik5ld3NmZWVkIiwibm9fYXJ0aWNsZXNfdG9fZGlzcGxheSI6Ik5vIGFydGljbGVzIHlldCIsIm5vX2NvbnZlcnNhdGlvbnMiOiJObyBjb252ZXJzYXRpb25zIiwibm9fZW1vamlfZm91bmQiOiJObyBlbW9qaSBjb3VsZCBiZSBmb3VuZCIsIm5vX2dpZnNfZm91bmQiOiJObyBHSUZzIGZvdW5kIiwibm9faGVscF9hcnRpY2xlc190b19kaXNwbGF5IjoiTm8gaGVscCBhcnRpY2xlcyIsIm5vX21lc3NhZ2VzX2Zyb21fdGhlX3RlYW0iOiJObyBtZXNzYWdlcyBmcm9tIHRoZSB0ZWFtIiwibm9fcmVzdWx0c19mb3Jfc2VhcmNodGVybSI6Ik5vIHJlc3VsdHMgZm9yIHtzZWFyY2hUZXJtfSIsIm5vX3Rhc2tzIjoiTm8gdGFza3MiLCJub190YXNrc19hdmFpbGFibGVfY3VycmVudGx5IjoiVGhlcmUgYXJlIGN1cnJlbnRseSBubyB0YXNrcyBhdmFpbGFibGUuIiwibm90aGluZ190b19zZWVfaGVyZV95ZXQiOiJOb3RoaW5nIHRvIHNlZSBoZXJlIHlldCIsIm5vdGlmaWNhdGlvbiI6Im5vdGlmaWNhdGlvbiIsIm5vdmVtYmVyX2RhdGUiOiJOb3ZlbWJlciB7ZGF0ZX0iLCJudW1iZXJfaXNfaW5jb3JyZWN0IjoiVGhhdCBudW1iZXIgZG9lc25cJ3QgbG9vayBxdWl0ZSByaWdodCIsIm9iamVjdHMiOiJPYmplY3RzIiwib2N0b2Jlcl9kYXRlIjoiT2N0b2JlciB7ZGF0ZX0iLCJvZmZpY2VfaG91cnNfYW5kX3JlcGx5X3RpbWVfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlNldCBvZmZpY2UgaG91cnMgYW5kIHJlcGx5IHRpbWUgc28gY3VzdG9tZXJzIGtub3cgd2hlbiB0byBleHBlY3QgYSByZXBseSBhbmQgd2hlbiB5b3VcJ3JlIG91dCBvZiBvZmZpY2UuIiwib2ZmaWNlX2hvdXJzX2FuZF9yZXBseV90aW1lX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJPZmZpY2UgaG91cnMgYW5kIHJlcGx5IHRpbWUiLCJvZmZpY2VfaG91cnNfYW5kX3JlcGx5X3RpbWVfZmVhdHVyZV90aXRsZSI6Ik9mZmljZSBob3VycyBhbmQgcmVwbHkgdGltZSIsIm9mZmljZV9ob3Vyc19jbGllbnRfcmVzcG9uc2VfMWgiOiJCYWNrIGluIDFoIiwib2ZmaWNlX2hvdXJzX2NsaWVudF9yZXNwb25zZV8yaCI6IkJhY2sgaW4gMmgiLCJvZmZpY2VfaG91cnNfY2xpZW50X3Jlc3BvbnNlXzMwbSI6IkJhY2sgaW4gMzBtIiwib2ZmaWNlX2hvdXJzX2NsaWVudF9yZXNwb25zZV8zaCI6IkJhY2sgaW4gM2giLCJvZmZpY2VfaG91cnNfY2xpZW50X3Jlc3BvbnNlX2RheV8wIjoiQmFjayBvbiBNb24iLCJvZmZpY2VfaG91cnNfY2xpZW50X3Jlc3BvbnNlX2RheV8xIjoiQmFjayBvbiBUdWUiLCJvZmZpY2VfaG91cnNfY2xpZW50X3Jlc3BvbnNlX2RheV8yIjoiQmFjayBvbiBXZWQiLCJvZmZpY2VfaG91cnNfY2xpZW50X3Jlc3BvbnNlX2RheV8zIjoiQmFjayBvbiBUaHUiLCJvZmZpY2VfaG91cnNfY2xpZW50X3Jlc3BvbnNlX2RheV80IjoiQmFjayBvbiBGcmkiLCJvZmZpY2VfaG91cnNfY2xpZW50X3Jlc3BvbnNlX2RheV81IjoiQmFjayBvbiBTYXQiLCJvZmZpY2VfaG91cnNfY2xpZW50X3Jlc3BvbnNlX2RheV82IjoiQmFjayBvbiBTdW4iLCJvZmZpY2VfaG91cnNfY2xpZW50X3Jlc3BvbnNlX2xhdGVyX3RvZGF5IjoiQmFjayBsYXRlciB0b2RheSIsIm9mZmljZV9ob3Vyc19jbGllbnRfcmVzcG9uc2VfbmV4dF93ZWVrIjoiQmFjayBuZXh0IHdlZWsiLCJvZmZpY2VfaG91cnNfY2xpZW50X3Jlc3BvbnNlX3RvbW9ycm93IjoiQmFjayB0b21vcnJvdyIsIm9rX2Rlc2NyaXB0aW9uIjoiT0siLCJvbl9iZWhhbGZfb2ZfYXBwIjoib24gYmVoYWxmIG9mIHthcHBfbmFtZX0iLCJvcGVuX2FydGljbGVfaW5faGVscF9jZW50ZXIiOiJPcGVuIGluIGhlbHAgY2VudGVyIiwib3Blbl9jb252ZXJzYXRpb25fYW5kX3JlcGx5IjoiT3BlbiBjb252ZXJzYXRpb24gYW5kIHJlcGx5Iiwib3Blbl9maWxlIjoiT3BlbiB7ZmlsZW5hbWV9Iiwib3Blbl9pbnRlcmNvbV9tZXNzZW5nZXIiOiJPcGVuIEludGVyY29tIE1lc3NlbmdlciIsIm9wZW5zX2luX25ld190YWIiOiJvcGVucyBpbiBuZXcgdGFiIiwib3BlcmF0b3JfYXNrZWRfZm9yX2F0dHJpYnV0ZSI6IkFza2VkIGZvciB7YXR0cmlidXRlfSIsIm9wdGltaXplX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJVbmRlcnN0YW5kIHdoZXJlIEZpbiBjYW4gcmVzb2x2ZSBtb3JlIGNvbnZlcnNhdGlvbnMsIGFuZCB0YWtlIGluc3RhbnQgYWN0aW9uIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuIiwib3B0aW1pemVfZmVhdHVyZV9zaG9ydF90aXRsZSI6Ik9wdGltaXplIERhc2hib2FyZCIsIm9wdGltaXplX2ZlYXR1cmVfdGl0bGUiOiJPcHRpbWl6ZSBEYXNoYm9hcmQiLCJvcl9jbGlja19vcGVuX3doYXRzYXBwIjoiT3IgY2xpY2sgaGVyZSB0byBvcGVuIFdoYXRzQXBwIiwib3JfY29udGludWVfb25fd2hhdHNhcHBfd2ViIjoiT3IgY29udGludWUgb24gV2hhdHNBcHAgd2ViIiwib3VyX2JvdF9hbnN3ZXJzX2luc3RhbnRseSI6Ik91ciBib3QgYW5zd2VycyBpbnN0YW50bHkiLCJvdmVydmlld19yZXBvcnRfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkFuYWx5emUgaG93IEZpbiBpcyBpbXBhY3RpbmcgeW91ciByZXNvbHV0aW9uIHJhdGVzIGFuZCBDU0FULCB3aXRoIGEgY29tcGxldGUgb3ZlcnZpZXcgb2YgRmluXCdzIHBlcmZvcm1hbmNlIGluIGEgcHJlLWJ1aWx0LCBjdXN0b21pemFibGUgcmVwb3J0LiIsIm92ZXJ2aWV3X3JlcG9ydF9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiRmluIHBlcmZvcm1hbmNlIHJlcG9ydCIsIm92ZXJ2aWV3X3JlcG9ydF9mZWF0dXJlX3RpdGxlIjoiRmluIHBlcmZvcm1hbmNlIHJlcG9ydCIsInBhdXNlIjoiUGF1c2UiLCJwZW9wbGUiOiJQZW9wbGUiLCJwZW9wbGVfYm9keSI6IlBlb3BsZSAmIEJvZHkiLCJwZXJzb25hbGl6ZWRfYW5zd2Vyc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRmluIHVzZXMgY3VzdG9tZXIgaW5mb3JtYXRpb24gZnJvbSBleHRlcm5hbCBzeXN0ZW1zIC0gaW5jbHVkaW5nIGFjY291bnQsIHB1cmNoYXNlIGFuZCBzdWJzY3JpcHRpb24gaGlzdG9yeSAtIHRvIHBlcnNvbmFsaXplIGFuc3dlcnMgZm9yIGVhY2ggaW5kaXZpZHVhbCBjdXN0b21lci4iLCJwZXJzb25hbGl6ZWRfYW5zd2Vyc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiUGVyc29uYWxpemVkIGFuc3dlcnMiLCJwZXJzb25hbGl6ZWRfYW5zd2Vyc19mZWF0dXJlX3RpdGxlIjoiUGVyc29uYWxpemVkIGFuc3dlcnMiLCJwaG9uZV9hdmFpbGFiaWxpdHlfY29udHJvbHNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6Ik1hbmFnZSB0ZWFtIHBob25lIFwnYXZhaWxhYmlsaXR5XCcgdG8gbWVldCBwaG9uZSB2b2x1bWUuIiwicGhvbmVfYXZhaWxhYmlsaXR5X2NvbnRyb2xzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJQaG9uZSBcJ2F2YWlsYWJpbGl0eVwnIGNvbnRyb2xzIiwicGhvbmVfYXZhaWxhYmlsaXR5X2NvbnRyb2xzX2ZlYXR1cmVfdGl0bGUiOiJQaG9uZSBcJ2F2YWlsYWJpbGl0eVwnIGNvbnRyb2xzIiwicGhvbmVfZmVhdHVyZV9kZXNjcmlwdGlvbiI6Ik1ha2UgZXZlcnkgY2FsbCBjb3VudC4gU29sdmUgY3VzdG9tZXIgcHJvYmxlbXMgZmFzdGVyIHdpdGggcGhvbmUgY2FsbHMsIHZpZGVvIGNhbGxzLCBhbmQgc2NyZWVuIHNoYXJpbmcuIEFsbCB3aXRoaW4gSW50ZXJjb20uIiwicGhvbmVfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlBob25lIiwicGhvbmVfZmVhdHVyZV90aXRsZSI6IlBob25lIiwicGhvbmVfaW50ZWdyYXRpb25zX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJBbHJlYWR5IHVzaW5nIGEgQ2FsbCBDZW50ZXIgeW91IHdhbnQgdG8ga2VlcD8gSW50ZWdyYXRlIHlvdXIgY2FsbCBjZW50ZXIgd2l0aCBJbnRlcmNvbSBzbyBhbGwgZGF0YSBpcyBzeW5jZWQgYW5kIGFnZW50cyBjYW4gd29yayBvdXQgb2Ygb25lIHRvb2wuIiwicGhvbmVfaW50ZWdyYXRpb25zX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJQaG9uZSBpbnRlZ3JhdGlvbnMiLCJwaG9uZV9pbnRlZ3JhdGlvbnNfZmVhdHVyZV90aXRsZSI6IlBob25lIGludGVncmF0aW9ucyIsInBob25lX251bWJlciI6IlBob25lIG51bWJlciIsInBpcGVkcml2ZV9pbnRlZ3JhdGlvbl9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQm9vc3QgeW91ciBzYWxlcyBieSBjcmVhdGluZyBhbmQgdHJhY2tpbmcgUGlwZWRyaXZlIGRlYWxzIHdoaWxlIHlvdSBjaGF0LiIsInBpcGVkcml2ZV9pbnRlZ3JhdGlvbl9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiUGlwZWRyaXZlIGludGVncmF0aW9uIiwicGlwZWRyaXZlX2ludGVncmF0aW9uX2ZlYXR1cmVfdGl0bGUiOiJQaXBlZHJpdmUgaW50ZWdyYXRpb24iLCJwbGFjZWhvbGRlcl9kYXRlcGlja2VyIjoiREQtTU0tWVlZWSIsInBsYWNlaG9sZGVyX2VtYWlsX2lucHV0IjoiRW50ZXIgZW1haWwgaGVyZS4uLiIsInBsYWNlaG9sZGVyX251bWVyaWNhbF9pbnB1dHMiOiJFbnRlciBudW1iZXIgaGVyZS4uLiIsInBsYWNlaG9sZGVyX3RleHRfaW5wdXRzIjoiRW50ZXIgdGV4dCBoZXJlLi4uIiwicGxhY2VzIjoiUGxhY2VzIiwicGxhbl9jYXJkX2Vycm9yX3RleHQiOiJDb3VsZG5cJ3QgbG9hZCBwbGFuLiIsInBsYW5fY2FyZF9sb2FkaW5nX3RleHQiOiJMb2FkaW5nIHBsYW7igKYiLCJwbGFuX2NhcmRfb3V0ZGF0ZWRfc3VmZml4Ijoib3V0ZGF0ZWQiLCJwbGFuX2NhcmRfc2tlbGV0b25fc3VidGl0bGUiOiJGaW4gd2lsbCBjcmVhdGUgYSB0YWlsb3JlZCBvbmJvYXJkaW5nIHBsYW4iLCJwbGFuX2NhcmRfc2tlbGV0b25fdGl0bGUiOiJTZXR1cCBwbGFuIiwicGxhbl9jYXJkX3RpdGxlIjoiT25ib2FyZGluZyBQbGFuIiwicGxhbl9jYXJkX3RpdGxlX3N1Y2Nlc3MiOiJTdWNjZXNzIFBsYW4iLCJwbGFuX2NhcmRfdXBkYXRlZF9zdWZmaXgiOiJ1cGRhdGVkIHBsYW4gYmVsb3ciLCJwbGF5IjoiUGxheSIsInBsYXlfc291bmQiOiJQbGF5IHNvdW5kIiwicGxheV92aWRlbyI6IlBsYXkgdmlkZW8iLCJwbGVhc2Vfc2VsZWN0IjoiUGxlYXNlIHNlbGVjdC4uLiIsInBsdXNfeF9wYXJ0aWNpcGFudHMiOiIrIHtjb3VudH0iLCJwb2ludGVyIjoicG9pbnRlciIsInBvc3QiOiJwb3N0IiwicG9zdHNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlByb2FjdGl2ZWx5IHNlbmQgY3VzdG9tZXJzIHBvcC11cCBtZXNzYWdlcyBpbiB5b3VyIGFwcC4iLCJwb3N0c19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiUG9zdHMiLCJwb3N0c19mZWF0dXJlX3RpdGxlIjoiUG9zdHMiLCJwb3dlcmVkX2J5X2Zpbl9haV9hZ2VudCI6IlBvd2VyZWQgYnkgRmluIiwicG93ZXJlZF9ieV9pbnRlcmNvbSI6IlBvd2VyZWQgYnkgSW50ZXJjb20iLCJwcmVfYnVpbHRfcmVwb3J0c19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiSW5ib3ggY29tZXMgd2l0aCByZXBvcnRzIGxpa2UgY29udmVyc2F0aW9ucywgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLCBhbmQgbW9yZS4iLCJwcmVfYnVpbHRfcmVwb3J0c19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiUHJlLWJ1aWx0IHJlcG9ydHMiLCJwcmVfYnVpbHRfcmVwb3J0c19mZWF0dXJlX3RpdGxlIjoiUHJlLWJ1aWx0IHJlcG9ydHMiLCJwcmV2aWV3X2N1c3RvbWVyX3ZpZXdfZW1wdHlfc3RhdGVfc3VidGV4dCI6Ik5vdGU6IFlvdSB3b25cJ3QgYmUgY2hhcmdlZCBmb3IgcHJldmlldyBjb252ZXJzYXRpb25zLiIsInByaXZhY3lfcG9saWN5IjoiUHJpdmFjeSBQb2xpY3kiLCJwcml2YXRlX2hlbHBfY2VudGVyX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJLZWVwIGFydGljbGVzIHByaXZhdGUgb3IgZGVmaW5lIGEgc2V0IG9mIGF1ZGllbmNlIHJ1bGVzIHRvIGNvbnRyb2wgd2hpY2ggY3VzdG9tZXJzIGNhbiBzZWUgd2hpY2ggYXJ0aWNsZXMuIiwicHJpdmF0ZV9oZWxwX2NlbnRlcl9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiUHJpdmF0ZSBoZWxwIGNlbnRlciIsInByaXZhdGVfaGVscF9jZW50ZXJfZmVhdHVyZV90aXRsZSI6IlByaXZhdGUgaGVscCBjZW50ZXIiLCJwcm9hY3RpdmVfZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMTA4MDAiOiJUeXBpY2FsbHkgcmVwbGllcyBpbiB1bmRlciAzaCIsInByb2FjdGl2ZV9leHBlY3RlZF9yZXNwb25zZV9kZWxheV8xMjAiOiJUeXBpY2FsbHkgcmVwbGllcyBpbiB1bmRlciAybSIsInByb2FjdGl2ZV9leHBlY3RlZF9yZXNwb25zZV9kZWxheV8xMjAwIjoiVHlwaWNhbGx5IHJlcGxpZXMgaW4gdW5kZXIgMjBtIiwicHJvYWN0aXZlX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzE0NDAwIjoiVHlwaWNhbGx5IHJlcGxpZXMgaW4gdW5kZXIgNGgiLCJwcm9hY3RpdmVfZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMTcyODAwIjoiVHlwaWNhbGx5IHJlcGxpZXMgaW4gMmQiLCJwcm9hY3RpdmVfZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMTgwIjoiVHlwaWNhbGx5IHJlcGxpZXMgaW4gdW5kZXIgM20iLCJwcm9hY3RpdmVfZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMTgwMCI6IlR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIDMwbSIsInByb2FjdGl2ZV9leHBlY3RlZF9yZXNwb25zZV9kZWxheV8xODAwMCI6IlR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIDVoIiwicHJvYWN0aXZlX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzIxNjAwIjoiVHlwaWNhbGx5IHJlcGxpZXMgaW4gdW5kZXIgNmgiLCJwcm9hY3RpdmVfZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMjQwIjoiVHlwaWNhbGx5IHJlcGxpZXMgaW4gdW5kZXIgNG0iLCJwcm9hY3RpdmVfZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMjU5MjAwIjoiVHlwaWNhbGx5IHJlcGxpZXMgaW4gM2QiLCJwcm9hY3RpdmVfZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMzAwIjoiVHlwaWNhbGx5IHJlcGxpZXMgaW4gdW5kZXIgNW0iLCJwcm9hY3RpdmVfZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMzQ1NjAwIjoiVHlwaWNhbGx5IHJlcGxpZXMgaW4gNGQiLCJwcm9hY3RpdmVfZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMzYwMCI6IlR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIDFoIiwicHJvYWN0aXZlX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzQzMjAwIjoiVHlwaWNhbGx5IHJlcGxpZXMgaW4gMTJoIiwicHJvYWN0aXZlX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzQzMjAwMCI6IlR5cGljYWxseSByZXBsaWVzIGluIDVkIiwicHJvYWN0aXZlX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzUxODQwMCI6IlR5cGljYWxseSByZXBsaWVzIGluIDZkIiwicHJvYWN0aXZlX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzYwIjoiVHlwaWNhbGx5IHJlcGxpZXMgaW4gdW5kZXIgMW0iLCJwcm9hY3RpdmVfZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfNjAwIjoiVHlwaWNhbGx5IHJlcGxpZXMgaW4gdW5kZXIgMTBtIiwicHJvYWN0aXZlX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzYwNDgwMCI6IlR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIDF3IiwicHJvYWN0aXZlX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzcyMDAiOiJUeXBpY2FsbHkgcmVwbGllcyBpbiB1bmRlciAyaCIsInByb2FjdGl2ZV9leHBlY3RlZF9yZXNwb25zZV9kZWxheV84NjQwMCI6IlR5cGljYWxseSByZXBsaWVzIGluIDFkIiwicHJvYWN0aXZlX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzkwMCI6IlR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIDE1bSIsInByb2FjdGl2ZV9leHBlY3RlZF9yZXNwb25zZV9kZWxheV91bmtub3duIjoiV2lsbCByZXBseSBhcyBzb29uIGFzIHRoZXkgY2FuIiwicHJvY2Vzc2luZ19yZWNvcmRpbmciOiJQcm9jZXNzaW5nIHJlY29yZGluZyIsInByb2R1Y3RfdG91cnNfYXV0aG9yIjoiQnkge25hbWV9IGZyb20ge2NvbXBhbnl9IiwicHJvZHVjdF90b3Vyc19kb25lIjoiRG9uZSIsInByb2R1Y3RfdG91cnNfZXJyb3IiOiJXZeKAmXJlIHNvcnJ5LCB0aGVyZSB3YXMgYW4gdW5leHBlY3RlZCBpc3N1ZSB3aXRoIHRoaXMgdG91ciIsInByb2R1Y3RfdG91cnNfZXJyb3JfY3RhIjoiVGFsayB0byB0aGUgdGVhbSIsInByb2R1Y3RfdG91cnNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6Ik1ha2UgaXQgZWFzeSBmb3IgbmV3IHVzZXJzIHRvIGdldCBzdGFydGVkIHdpdGggYXV0b21hdGVkLCBpbnRlcmFjdGl2ZSBvbmJvYXJkaW5nLiIsInByb2R1Y3RfdG91cnNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlByb2R1Y3QgdG91cnMiLCJwcm9kdWN0X3RvdXJzX2ZlYXR1cmVfdGl0bGUiOiJQcm9kdWN0IHRvdXJzIiwicHJvZHVjdF90b3Vyc19uYW1lIjoiUHJvZHVjdCB0b3VyIiwicHJvZHVjdF90b3Vyc19uZXh0IjoiTmV4dCIsInByb2R1Y3RfdG91cnNfcmVzdGFydCI6IlJlc3RhcnQiLCJwcm9kdWN0X3RvdXJzX3Nub296ZSI6IlNub296ZSIsInByb2R1Y3RfdG91cnNfdG91cl9zdGVwX251bWJlciI6IntzdGFydF9udW1iZXJ9IG9mIHtlbmRfbnVtYmVyfSIsInByb2R1Y3RfdG91cnNfdmlldyI6IlZpZXcgdG91ciIsInByb2ZpbGVfbG9jYXRpb24iOiJ7dGltZX0gaW4ge2xvY2F0aW9ufSIsInB1YmxpY19oZWxwX2NlbnRlcl9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQSB3ZWIgcGFnZSBmb3IgeW91ciBjdXN0b21lcnMgdG8gcXVpY2tseSBhbmQgcmVsaWFibHkgZmluZCBzdXBwb3J0IGNvbnRlbnQuIiwicHVibGljX2hlbHBfY2VudGVyX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJQdWJsaWMgaGVscCBjZW50ZXIiLCJwdWJsaWNfaGVscF9jZW50ZXJfZmVhdHVyZV90aXRsZSI6IlB1YmxpYyBoZWxwIGNlbnRlciIsInB1c2hfbm90aWZpY2F0aW9uc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiU2VuZCBjb250ZXh0dWFsIHB1c2ggbWVzc2FnZXMgYW5kIGJyaW5nIGN1c3RvbWVycyBkaXJlY3RseSBpbnRvIHlvdXIgbW9iaWxlIGFwcC4iLCJwdXNoX25vdGlmaWNhdGlvbnNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlB1c2ggbm90aWZpY2F0aW9ucyIsInB1c2hfbm90aWZpY2F0aW9uc19mZWF0dXJlX3RpdGxlIjoiUHVzaCBub3RpZmljYXRpb25zIiwicmF0ZV95b3VyX2NvbnZlcnNhdGlvbiI6IlJhdGUgeW91ciBjb252ZXJzYXRpb24iLCJyZWFsX3RpbWVfY2FsbF9hZ2VudF9kYXNoYm9hcmRfZmVhdHVyZV9kZXNjcmlwdGlvbiI6Ik1vbml0b3IgYWdlbnQgcGhvbmUgdm9sdW1lIGFuZCBwZXJmb3JtYW5jZSBpbiByZWFsLXRpbWUuIiwicmVhbF90aW1lX2NhbGxfYWdlbnRfZGFzaGJvYXJkX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJSZWFsLXRpbWUgY2FsbCBhZ2VudCBkYXNoYm9hcmQiLCJyZWFsX3RpbWVfY2FsbF9hZ2VudF9kYXNoYm9hcmRfZmVhdHVyZV90aXRsZSI6IlJlYWwtdGltZSBjYWxsIGFnZW50IGRhc2hib2FyZCIsInJlYWxfdGltZV9jYWxsX3RlYW1fZGFzaGJvYXJkX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJNb25pdG9yIHRlYW0gcGhvbmUgdm9sdW1lIGFuZCBwZXJmb3JtYW5jZSBpbiByZWFsLXRpbWUuIiwicmVhbF90aW1lX2NhbGxfdGVhbV9kYXNoYm9hcmRfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlJlYWwtdGltZSBjYWxsIHRlYW0gZGFzaGJvYXJkIiwicmVhbF90aW1lX2NhbGxfdGVhbV9kYXNoYm9hcmRfZmVhdHVyZV90aXRsZSI6IlJlYWwtdGltZSBjYWxsIHRlYW0gZGFzaGJvYXJkIiwicmVhbF90aW1lX2Rhc2hib2FyZF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiTW9uaXRvciB5b3VyIHRlYW1cJ3Mgd29ya2xvYWQgYW5kIGNhcGFjaXR5IGluIHJlYWwgdGltZS4iLCJyZWFsX3RpbWVfZGFzaGJvYXJkX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJSZWFsLXRpbWUgZGFzaGJvYXJkIiwicmVhbF90aW1lX2Rhc2hib2FyZF9mZWF0dXJlX3RpdGxlIjoiUmVhbC10aW1lIGRhc2hib2FyZCIsInJlYWxfdGltZV90cmFuc2xhdGlvbnNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkZpbiBjYW4gYXV0b21hdGljYWxseSB0cmFuc2xhdGUgc3VwcG9ydCBjb250ZW50IHdyaXR0ZW4gaW4gYW55IGxhbmd1YWdlIGFuZCByZXBseSB0byBlYWNoIGN1c3RvbWVyIGluIHRoZSBsYW5ndWFnZSB0aGV5IGFyZSBzcGVha2luZyBpbi4iLCJyZWFsX3RpbWVfdHJhbnNsYXRpb25zX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJSZWFsLXRpbWUgVHJhbnNsYXRpb25zIiwicmVhbF90aW1lX3RyYW5zbGF0aW9uc19mZWF0dXJlX3RpdGxlIjoiUmVhbC10aW1lIFRyYW5zbGF0aW9ucyIsInJlY2VpdmVfcmVwbGllc190aGVyZSI6IllvdVwnbGwgcmVjZWl2ZSByZXBsaWVzIHRoZXJlIHdoZW4gdGhlIHRlYW0gcmVwbGllcyIsInJlY2VudF90aWNrZXQiOiJSZWNlbnQgdGlja2V0IiwicmVjZW50X3RpY2tldHMiOiJSZWNlbnQgdGlja2V0cyIsInJlY29ubmVjdCI6IlJlY29ubmVjdCIsInJlY29yZGVkX2RheXNfYWdvIjoiUmVjb3JkZWQge2RheXN9IGRheXMgYWdvIiwicmVjb3JkZWRfb3Zlcl93ZWVrX2FnbyI6IlJlY29yZGVkIG92ZXIgYSB3ZWVrIGFnbyIsInJlY29yZGVkX3RvZGF5IjoiUmVjb3JkZWQgdG9kYXkiLCJyZWNvcmRlZF95ZXN0ZXJkYXkiOiJSZWNvcmRlZCB5ZXN0ZXJkYXkiLCJyZWNvcmRpbmdzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJFbmFibGUgY2FsbCByZWNvcmRpbmdzIGZvciBxdWljayByZWZlcmVuY2UgYW5kIHF1YWxpdHkgYXNzdXJhbmNlLiIsInJlY29yZGluZ3NfZmVhdHVyZV9zaG9ydF90aXRsZSI6IkNhbGwgcmVjb3JkaW5ncyIsInJlY29yZGluZ3NfZmVhdHVyZV90aXRsZSI6IkNhbGwgcmVjb3JkaW5ncyIsInJlbW92ZV9maWxlIjoiUmVtb3ZlIGZpbGUiLCJyZW1vdmVfaW1hZ2UiOiJSZW1vdmUgaW1hZ2Uge2luZGV4fSIsInJlbW92ZV9wYXJ0aWNpcGFudCI6IlJlbW92ZSBwYXJ0aWNpcGFudCIsInJlbW92ZV9wZXJzb24iOiJSZW1vdmUgcGVyc29uIiwicmVwbHkiOiJSZXBseSIsInJlcGx5X2Zyb20iOiJSZXBseSBmcm9tIiwicmVwbHlfdG9fY29udmVyc2F0aW9uIjoiV3JpdGUgYSByZXBseeKApiIsInJlcGx5X3RvX25hbWUiOiJSZXBseSB0byB7bmFtZX3igKYiLCJyZXBvcnRfYWlfYW5zd2VyIjoiUmVwb3J0IEFJIGFuc3dlciIsInJlcG9ydF9idWlsZGVyX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJDcmVhdGUgdW5pcXVlIHJlcG9ydHMgZnJvbSBzY3JhdGNoIHdpdGggeW91ciBjaG9pY2Ugb2YgY2hhcnRzIGZyb20gb3VyIHRlbXBsYXRlIGxpYnJhcnkuIiwicmVwb3J0X2J1aWxkZXJfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlJlcG9ydCBidWlsZGVyIiwicmVwb3J0X2J1aWxkZXJfZmVhdHVyZV90aXRsZSI6IlJlcG9ydCBidWlsZGVyIiwicmVwb3J0aW5nX2RyaWxsX2Rvd25zX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJDdXN0b21pemFibGUgcmVwb3J0aW5nIGRyaWxsLWRvd25zIHRoYXQgYWxsb3cgdXNlIG9mIGZpbHRlcnMuIiwicmVwb3J0aW5nX2RyaWxsX2Rvd25zX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJSZXBvcnRpbmcgZHJpbGwtZG93bnMiLCJyZXBvcnRpbmdfZHJpbGxfZG93bnNfZmVhdHVyZV90aXRsZSI6IlJlcG9ydGluZyBkcmlsbC1kb3ducyIsInJlcG9ydGluZ19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiR2V0IGluc2lnaHRzIG9uIGhvdyBtYW55IGNvbnZlcnNhdGlvbnMgYXJlIHVzaW5nIEZpbiBBSSBDb3BpbG90LCB0cmFjayB0ZWFtbWF0ZSB1c2FnZSwgYW5kIHJldmlldyB0aGUgcXVhbGl0eSBvZiBGaW5cJ3MgYW5zd2Vycy4iLCJyZXBvcnRpbmdfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlJlcG9ydGluZyIsInJlcG9ydGluZ19mZWF0dXJlX3RpdGxlIjoiUmVwb3J0aW5nIiwicmVxdWVzdF9jYWxsYmFja19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQWxsb3cgY3VzdG9tZXJzIHRvIHJlcXVlc3QgYSBjYWxsYmFjayBhdCBhIGNvbnZlbmllbnQgdGltZSBpbnN0ZWFkIG9mIHdhaXRpbmcgb24gaG9sZC4iLCJyZXF1ZXN0X2NhbGxiYWNrX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJSZXF1ZXN0IGNhbGxiYWNrIiwicmVxdWVzdF9jYWxsYmFja19mZWF0dXJlX3RpdGxlIjoiUmVxdWVzdCBjYWxsYmFjayIsInJlcXVpcmVfZW1haWxfdG9fY2hhdF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiUmVxdWlyZSBhbiBlbWFpbCBmb3IgbmV3IGNvbnZlcnNhdGlvbnMuIiwicmVxdWlyZV9lbWFpbF90b19jaGF0X2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJSZXF1aXJlIGVtYWlsIHRvIGNoYXQiLCJyZXF1aXJlX2VtYWlsX3RvX2NoYXRfZmVhdHVyZV90aXRsZSI6IlJlcXVpcmUgZW1haWwgdG8gY2hhdCIsInJlcXVpcmVkX2ZpZWxkc19hc3Rlcmlza19leHBsYW5hdGlvbiI6IkFzdGVyaXNrcyAoKikgaW5kaWNhdGUgcmVxdWlyZWQgZmllbGRzLiIsInJvdW5kX3JvYmluX2Fzc2lnbm1lbnRfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlNoYXJlIG5ldyBpbmJvdW5kIGNvbnZlcnNhdGlvbnMgZXZlbmx5IGFtb25nIHlvdXIgdGVhbS4iLCJyb3VuZF9yb2Jpbl9hc3NpZ25tZW50X2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJSb3VuZC1yb2JpbiBhc3NpZ25tZW50Iiwicm91bmRfcm9iaW5fYXNzaWdubWVudF9mZWF0dXJlX3RpdGxlIjoiUm91bmQtcm9iaW4gYXNzaWdubWVudCIsInNhbGVzX3JlcG9ydHNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlRyYWNrIHlvdXIgc2FsZXMgdGVhbVwncyBwZXJmb3JtYW5jZSBhbmQgSW50ZXJjb21cJ3MgaW1wYWN0IG9uIHlvdXIgcmV2ZW51ZS4iLCJzYWxlc19yZXBvcnRzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJTYWxlcyByZXBvcnRzIiwic2FsZXNfcmVwb3J0c19mZWF0dXJlX3RpdGxlIjoiU2FsZXMgcmVwb3J0cyIsInNhbGVzZm9yY2VfaW50ZWdyYXRpb25fZmVhdHVyZV9kZXNjcmlwdGlvbiI6IjItd2F5IHN5bmMgb2YgQ29udGFjdCwgQWNjb3VudCwgYW5kIENhc2UgZGF0YSBiZXR3ZWVuIFNhbGVzZm9yY2UgYW5kIEludGVyY29tLiIsInNhbGVzZm9yY2VfaW50ZWdyYXRpb25fZmVhdHVyZV9zaG9ydF90aXRsZSI6IlNhbGVzZm9yY2UgaW50ZWdyYXRpb24iLCJzYWxlc2ZvcmNlX2ludGVncmF0aW9uX2ZlYXR1cmVfdGl0bGUiOiJTYWxlc2ZvcmNlIGludGVncmF0aW9uIiwic2Nhbl9xciI6IlNjYW4gdGhlIFFSIHdpdGggeW91ciBwaG9uZSIsInNlYXJjaCI6IlNlYXJjaCIsInNlYXJjaF9icm93c2VfZW1wdHlfc3RhdGVfdGV4dCI6IlNvcnJ5LCB3ZSBjb3VsZG7igJl0IGZpbmQgYW55IHJlc3VsdHMgZm9yIHRoYXQuIFRyeSByZXdvcmRpbmcgeW91ciBzZWFyY2guIiwic2VhcmNoX2Zvcl9hbnN3ZXJzIjoiU2VhcmNoIGZvciBhbnN3ZXJz4oCmIiwic2VhcmNoX2Zvcl9lbW9qaSI6IlNlYXJjaCBlbW9qaeKApiIsInNlYXJjaF9mb3JfaGVscCI6IlNlYXJjaCBmb3IgaGVscCIsInNlYXJjaF9naWYiOiJTZWFyY2ggR0lGc+KApiIsInNlZV9hbGwiOiJTZWUgYWxsIiwic2VlX2FsbF9jb252ZXJzYXRpb25zIjoiU2VlIGFsbCB5b3VyIGNvbnZlcnNhdGlvbnMiLCJzZWVfcGFzdF9jb252ZXJzYXRpb25zIjoiU2VlIHByZXZpb3VzIiwic2VlX3ByZXZpb3VzX2NvbnZlcnNhdGlvbnMiOiJTZWUgeW91ciBwcmV2aW91cyBjb252ZXJzYXRpb25zIiwic2Vla192aWRlbyI6IlNlZWsgdmlkZW8iLCJzZWxlY3RfYW5fb3B0aW9uIjoiUGxlYXNlIHNlbGVjdCBhbiBvcHRpb246Iiwic2VuZCI6IlNlbmQiLCJzZW5kX2FfbWVzc2FnZSI6IlNlbmQgYSBtZXNzYWdl4oCmIiwic2VuZF9hX21lc3NhZ2VfcmVwbHlfdGltZSI6IlVzdWFsIHJlcGx5IHRpbWUgaXMiLCJzZW5kX2FfbWVzc2FnZV9yZXBseV90aW1lX2NhcmQiOiJVc3VhbCByZXBseSB0aW1lIGlzIHtyZXBseVRpbWV9Iiwic2VuZF9hX3ZvaWNlX25vdGUiOiJTZW5kIGEgdm9pY2Ugbm90ZeKApiIsInNlbmRfcHJlZmlsbGVkX21lc3NhZ2UiOiJXaGVuIFdoYXRzQXBwIG9wZW5zLCBzZW5kIHRoZSBwcmUtZmlsbGVkIG1lc3NhZ2UgdG8gY29udGludWUgdGhlIGNvbnZlcnNhdGlvbiIsInNlbmRfdXNfYV9tZXNzYWdlIjoiU2VuZCB1cyBhIG1lc3NhZ2UiLCJzZW5kX3VzX2FfbWVzc2FnZV9ib3QiOiJTZW5kIHVzIGEgbWVzc2FnZSBhbmQgb3VyIGJvdCB3aWxsIHJlcGx5IGluc3RhbnRseSIsInNlbnRfYV92aWRlbyI6InNlbnQgYSB2aWRlbyIsInNlbnRfYV92b2ljZV9ub3RlIjoiU2VudCBhIHZvaWNlIG5vdGUiLCJzZW50X2FuX2FwcCI6InNlbnQgYW4gYXBwIiwic2VudF9hbl9hdHRhY2htZW50Ijoic2VudCBhbiBhdHRhY2htZW50Iiwic2VudF9hbl9pbWFnZSI6InNlbnQgYW4gaW1hZ2UiLCJzZW50X3lvdV9hX3ZpZGVvIjoiU2VudCB5b3UgYSB2aWRlbyIsInNlbnRfeW91X2FfdmlkZW9fcmVwbHkiOiJTZW50IHlvdSBhIHZpZGVvIHJlcGx5Iiwic2VudF95b3VfYV92b2ljZV9ub3RlIjoiU2VudCB5b3UgYSB2b2ljZSBub3RlIiwic2VudF95b3VfYW5fYXBwIjoiU2VudCB5b3UgYW4gYXBwIiwic2VudF95b3VfYW5fYXR0YWNobWVudCI6IlNlbnQgeW91IGFuIGF0dGFjaG1lbnQiLCJzZW50X3lvdV9hbl9pbWFnZSI6IlNlbnQgeW91IGFuIGltYWdlIiwic2VudF95b3VfYW5faW50ZXJhY3RpdmVfbWVzc2FnZSI6IlNlbnQgeW91IGFuIGludGVyYWN0aXZlIG1lc3NhZ2UiLCJzZXB0ZW1iZXJfZGF0ZSI6IlNlcHRlbWJlciB7ZGF0ZX0iLCJzZXJpZXNfY2FtcGFpZ25fYnVpbGRlcl9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQ3JlYXRlIGNvaGVzaXZlIHRhcmdldGVkIG1lc3NhZ2Ugc2VxdWVuY2VzIGFjcm9zcyBjaGFubmVscyB3aXRoIGEgbm8tY29kZSB2aXN1YWwgYnVpbGRlci4iLCJzZXJpZXNfY2FtcGFpZ25fYnVpbGRlcl9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiU2VyaWVzIGNhbXBhaWduIGJ1aWxkZXIiLCJzZXJpZXNfY2FtcGFpZ25fYnVpbGRlcl9mZWF0dXJlX3RpdGxlIjoiU2VyaWVzIGNhbXBhaWduIGJ1aWxkZXIiLCJzZXJ2aWNlX2xldmVsX2FncmVlbWVudHNfc2xhc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQXV0b21hdGljYWxseSBhcHBseSBTTEFzIHRvIGluYm91bmQgY29udmVyc2F0aW9ucyB1c2luZyBydWxlcy4iLCJzZXJ2aWNlX2xldmVsX2FncmVlbWVudHNfc2xhc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiU2VydmljZSBsZXZlbCBhZ3JlZW1lbnRzIChTTEFzKSIsInNlcnZpY2VfbGV2ZWxfYWdyZWVtZW50c19zbGFzX2ZlYXR1cmVfdGl0bGUiOiJTZXJ2aWNlIGxldmVsIGFncmVlbWVudHMgKFNMQXMpIiwic2hhcmVkX2J5IjoiU2hhcmVkIGJ5Iiwic2hhcmVkX2luYm94X2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJNYW5hZ2UgY29udmVyc2F0aW9ucyBmcm9tIGEgc2luZ2xlLCBjb2xsYWJvcmF0aXZlIEluYm94LiIsInNoYXJlZF9pbmJveF9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiU2hhcmVkIEluYm94Iiwic2hhcmVkX2luYm94X2ZlYXR1cmVfdGl0bGUiOiJTaGFyZWQgSW5ib3giLCJzaG93X2FkbWluX25hbWUiOiJTaG93IGFkbWluIG5hbWUiLCJzaG93X2NvdW50X21vcmUiOiJTaG93IHtjb3VudH0gbW9yZSIsInNob3dfbGVzcyI6IlNob3cgbGVzcyIsInNob3dfbW9yZSI6IlNob3cgbW9yZSIsInNpZGVfY29udmVyc2F0aW9uc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQ29sbGFib3JhdGUgd2l0aCBleHRlcm5hbCBwYXJ0bmVycyBieSBzdGFydGluZyBhIHNpZGUgY29udmVyc2F0aW9uIGZyb20gdGhlIHRpY2tldC4iLCJzaWRlX2NvbnZlcnNhdGlvbnNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlNpZGUgY29udmVyc2F0aW9ucyIsInNpZGVfY29udmVyc2F0aW9uc19mZWF0dXJlX3RpdGxlIjoiU2lkZSBjb252ZXJzYXRpb25zIiwic2ltdWxhdGlvbnNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlNpbXVsYXRpb25zIGFyZSBhIHNjYWxhYmxlIHdheSB0byB0ZXN0LCBldmFsdWF0ZSwgYW5kIHJlZmluZSBGaW5cJ3MgYmVoYXZpb3IgYW5kIGFjdGlvbnMuIiwic2ltdWxhdGlvbnNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlNpbXVsYXRpb25zIiwic2ltdWxhdGlvbnNfZmVhdHVyZV90aXRsZSI6IlNpbXVsYXRpb25zIiwic2luZ2xlX2FydGljbGUiOiIxIGFydGljbGUiLCJzaW5nbGVfY29sbGVjdGlvbiI6IjEgY29sbGVjdGlvbiIsInNsYWNrX2ludGVncmF0aW9uX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJBdXRvbWF0aWNhbGx5IHNlbmQgbm90aWZpY2F0aW9ucyB0byBTbGFjayBjaGFubmVscyB1c2luZyBXb3JrZmxvd3MuIiwic2xhY2tfaW50ZWdyYXRpb25fZmVhdHVyZV9zaG9ydF90aXRsZSI6IlNsYWNrIGludGVncmF0aW9uIiwic2xhY2tfaW50ZWdyYXRpb25fZmVhdHVyZV90aXRsZSI6IlNsYWNrIGludGVncmF0aW9uIiwic21pbGV5c19lbW90aW9uIjoiU21pbGV5cyAmIEVtb3Rpb24iLCJzbXMiOiJTTVMiLCJzbXNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlNlbmQgYW5kIHJlY2VpdmUgU01TIHRleHQgbWVzc2FnZXMgZnJvbSB0aGUgaW5ib3guIiwic21zX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJTTVMiLCJzbXNfZmVhdHVyZV90aXRsZSI6IlNNUyIsInNvY2lhbF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiSW50ZWdyYXRlIHdpdGggRmFjZWJvb2sgYW5kIEluc3RhZ3JhbS4iLCJzb2NpYWxfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlNvY2lhbCIsInNvY2lhbF9mZWF0dXJlX3RpdGxlIjoiU29jaWFsIiwic29jaWFsX2ludGVncmF0aW9uc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiSW50ZWdyYXRlIHdpdGggRmFjZWJvb2sgYW5kIEluc3RhZ3JhbS4iLCJzb2NpYWxfaW50ZWdyYXRpb25zX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJTb2NpYWwgaW50ZWdyYXRpb25zIiwic29jaWFsX2ludGVncmF0aW9uc19mZWF0dXJlX3RpdGxlIjoiU29jaWFsIGludGVncmF0aW9ucyIsInNvbWVfdGhpbmdzX2ZhaWxlZF90b19sb2FkIjoiU29tZSB0aGluZ3MgZmFpbGVkIHRvIGxvYWQuIFRyeSBhZ2Fpbi4iLCJzb21ldGhpbmdfaXNfd3JvbmciOiJTb21ldGhpbmdcJ3Mgd3JvbmciLCJzb3BoaXN0aWNhdGVkX2ludGVyYWN0aXZlX3ZvaWNlX3Jlc3BvbnNlX3RyZWVzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJSb3V0ZSwgYXNzaWduIG9yIGF1dG9tYXRlIGNhbGxzIGJhc2VkIG9uIHVzZXIgZGF0YSB3aXRoIGZ1bGx5IGN1c3RvbWl6YWJsZSBtdWx0aS1sZXZlbCBJVlIgdHJlZXMuIiwic29waGlzdGljYXRlZF9pbnRlcmFjdGl2ZV92b2ljZV9yZXNwb25zZV90cmVlc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiU29waGlzdGljYXRlZCBpbnRlcmFjdGl2ZSB2b2ljZSByZXNwb25zZSB0cmVlcyIsInNvcGhpc3RpY2F0ZWRfaW50ZXJhY3RpdmVfdm9pY2VfcmVzcG9uc2VfdHJlZXNfZmVhdHVyZV90aXRsZSI6IlNvcGhpc3RpY2F0ZWQgaW50ZXJhY3RpdmUgdm9pY2UgcmVzcG9uc2UgdHJlZXMiLCJzb3VyY2UiOiJTb3VyY2UiLCJzb3VyY2VzIjoiU291cmNlcyIsInNwYWNlc19lcnJvcl9kZXNjcmlwdGlvbiI6IkNvbnRlbnQgY291bGQgbm90IGJlIGxvYWRlZCIsInNwYWNlc19lcnJvcl90aXRsZSI6IlNvbWV0aGluZ1wncyBnb25lIHdyb25nIiwic3NvX2lkZW50aXR5X21hbmFnZW1lbnRfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkxvZyBpbiB0byBJbnRlcmNvbSB3aXRoIFNBTUwgU1NPIHVzaW5nIE9rdGEsIE9uZUxvZ2luLCBvciBhbm90aGVyIGlkZW50aXR5IHByb3ZpZGVyLiIsInNzb19pZGVudGl0eV9tYW5hZ2VtZW50X2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJTaW5nbGUgc2lnbi1vbiIsInNzb19pZGVudGl0eV9tYW5hZ2VtZW50X2ZlYXR1cmVfdGl0bGUiOiJTU08gJiBpZGVudGl0eSBtYW5hZ2VtZW50Iiwic3RhbmRhcmRfY2FsbF9yZXBvcnRzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJBbmFseXplIGNhbGwgdm9sdW1lIGFuZCBwZXJmb3JtYW5jZSB0cmVuZHMgd2l0aCBvdXQtb2YtdGhlLWJveCByZXBvcnRzLiIsInN0YW5kYXJkX2NhbGxfcmVwb3J0c19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiU3RhbmRhcmQgY2FsbCByZXBvcnRzIiwic3RhbmRhcmRfY2FsbF9yZXBvcnRzX2ZlYXR1cmVfdGl0bGUiOiJTdGFuZGFyZCBjYWxsIHJlcG9ydHMiLCJzdGFydF9hX2NvbnZlcnNhdGlvbiI6IlN0YXJ0IGEgY29udmVyc2F0aW9uIiwic3RhcnRfYW5vdGhlcl9jb252ZXJzYXRpb24iOiJTdGFydCBhbm90aGVyIGNvbnZlcnNhdGlvbiIsInN0YXJ0X2RpY3RhdGluZyI6IlN0YXJ0IGRpY3RhdGluZyIsInN0YXJ0X3JlY29yZGluZyI6IlN0YXJ0IHJlY29yZGluZyIsInN0YXJ0X3JlY29yZGluZ193aXRoX3Nob3J0Y3V0IjoiU3RhcnQgcmVjb3JkaW5nIChob2xkIHtzaG9ydGN1dH0pIiwic3RhcnRfdHlwaW5nIjoiU3RhcnQgdHlwaW5nLi4uIiwic3RhdHVzIjoiU3RhdHVzIiwic3RpbGxfZ2VuZXJhdGluZ19hbnN3ZXIiOiJTdGlsbCBnZW5lcmF0aW5nIGFuc3dlci4uLiIsInN0aWxsX3RoaW5raW5nIjoiU3RpbGwgdGhpbmtpbmcuLi4iLCJzdGlsbF93b3JraW5nX29uX2l0IjoiU3RpbGwgd29ya2luZyBvbiBpdC4uLiIsInN0b3BfZGljdGF0aW5nIjoiU3RvcCBkaWN0YXRpbmciLCJzdG9wX3JlY29yZGluZyI6IlN0b3AgcmVjb3JkaW5nIiwic3RyaW5nX2lzX2luY29ycmVjdCI6IlRoYXQgZG9lc25cJ3QgbG9vayBxdWl0ZSByaWdodCIsInN1Ym1pdCI6IlN1Ym1pdCIsInN1Y2Nlc3NmdWxseV9yZWNvbm5lY3RlZCI6IlN1Y2Nlc3NmdWxseSByZWNvbm5lY3RlZCIsInN1Z2dlc3RlZF9hcnRpY2xlcyI6IlN1Z2dlc3RlZCBhcnRpY2xlcyIsInN1Z2dlc3RlZF9jb250ZW50X3Byb21wdCI6IkFyZSBhbnkgb2YgdGhlc2UgcmVsYXRlZCB0byB5b3VyIHF1ZXN0aW9uPyIsInN1Z2dlc3Rpb25zX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJBY3Rpb25hYmxlIEFJLWdlbmVyYXRlZCBzdWdnZXN0aW9ucyB5b3UgY2FuIGFwcHJvdmUgaW4gb25lIGNsaWNrIHRvIGltcHJvdmUgRmluXCdzIHBlcmZvcm1hbmNlLiIsInN1Z2dlc3Rpb25zX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJTdWdnZXN0aW9ucyIsInN1Z2dlc3Rpb25zX2ZlYXR1cmVfdGl0bGUiOiJTdWdnZXN0aW9ucyIsInN1cnZleSI6IlN1cnZleSIsInN1cnZleXNfYWxsX29wdGlvbnNfcmVzcG9uc2VfaGludCI6IlBsZWFzZSBzZWxlY3QgYWxsIG9wdGlvbnMgdGhhdCBhcHBseSIsInN1cnZleXNfY2xvc2Vfc3VydmV5IjoiQ2xvc2Ugc3VydmV5Iiwic3VydmV5c19kb25lX2J1dHRvbiI6IkRvbmUiLCJzdXJ2ZXlzX2Ryb3Bkb3duX2RlZmF1bHRfb3B0aW9uIjoiUGxlYXNlIHNlbGVjdCBhIHJlc3BvbnNlLi4uIiwic3VydmV5c19lbWFpbF9lcnJvciI6IlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MiLCJzdXJ2ZXlzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJDYXB0dXJlIGN1c3RvbWVyIGZlZWRiYWNrIGFuZCB1c2UgaXQgdG8gY3JlYXRlIGEgYmV0dGVyIGN1c3RvbWVyIGV4cGVyaWVuY2UuIiwic3VydmV5c19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiU3VydmV5cyIsInN1cnZleXNfZmVhdHVyZV90aXRsZSI6IlN1cnZleXMiLCJzdXJ2ZXlzX2ZpeGVkX3Jlc3BvbnNlX2NvdW50X3Jlc3BvbnNlX2hpbnQiOiJQbGVhc2Ugc2VsZWN0IHtyZXNwb25zZV9jb3VudH0gb3B0aW9ucyIsInN1cnZleXNfZnJvbV9jb21wYW55IjoiU3VydmV5IGZyb20ge2NvbXBhbnl9Iiwic3VydmV5c19mcm9tX3RlYW1tYXRlIjoiU3VydmV5IGJ5IHtzZW5kZXJfbmFtZX0gZnJvbSB7Y29tcGFueX0iLCJzdXJ2ZXlzX211bHRpX3NlbGVjdF90b29fZmV3X3Jlc3BvbnNlcyI6IlRoaXMgcXVlc3Rpb24gcmVxdWlyZXMgYXQgbGVhc3Qge3Jlc3BvbnNlX2NvdW50fSBvcHRpb25zIHRvIGJlIHNlbGVjdGVkIiwic3VydmV5c19tdWx0aV9zZWxlY3RfdG9vX21hbnlfcmVzcG9uc2VzIjoiVGhpcyBxdWVzdGlvbiByZXF1aXJlcyB7cmVzcG9uc2VfY291bnR9IG9wdGlvbnMgdG8gYmUgc2VsZWN0ZWQiLCJzdXJ2ZXlzX211bHRpc2VsZWN0X290aGVyX29wdGlvbiI6Ik90aGVyIChQbGVhc2Ugc3BlY2lmeSkiLCJzdXJ2ZXlzX211bHRpc2VsZWN0X290aGVyX29wdGlvbl9pbnB1dF9sYWJlbCI6IlBsZWFzZSBzcGVjaWZ5Iiwic3VydmV5c19tdWx0aXNlbGVjdF9vdGhlcl9vcHRpb25faW5wdXRfcGxhY2Vob2xkZXIiOiJFbnRlciByZXNwb25zZSIsInN1cnZleXNfbXVsdGlzZWxlY3Rfb3RoZXJfb3B0aW9uX3ZhbHVlIjoiT3RoZXIiLCJzdXJ2ZXlzX25leHRfYnV0dG9uIjoiTmV4dCIsInN1cnZleXNfbnBzX2xvd2VyX2xhYmVsIjoiTm90IGxpa2VseSIsInN1cnZleXNfbnBzX3VwcGVyX2xhYmVsIjoiVmVyeSBsaWtlbHkiLCJzdXJ2ZXlzX251bWJlcl9lcnJvciI6IlBsZWFzZSBlbnRlciBhIG51bWJlciIsInN1cnZleXNfcmVxdWlyZWRfcXVlc3Rpb24iOiJUaGlzIGlzIGEgcmVxdWlyZWQgcXVlc3Rpb24iLCJzdXJ2ZXlzX3JlcXVpcmVkX3Jlc3BvbnNlIjoiVGhpcyBpcyBhIHJlcXVpcmVkIHJlc3BvbnNlIiwic3VydmV5c19yZXNwb25zZV9yYW5nZV9yZXNwb25zZV9oaW50IjoiUGxlYXNlIHNlbGVjdCBhIG1pbmltdW0gb2Yge21pbmltdW1fcmVzcG9uc2VfY291bnR9IGFuZCBhIG1heGltdW0gb2Yge21heGltdW1fcmVzcG9uc2VfY291bnR9IG9wdGlvbnMiLCJzdXJ2ZXlzX3Jlc3BvbnNlX3Rvb19sb25nIjoiUGxlYXNlIGtlZXAgYW5zd2VycyB0byBhIG1heGltdW0gb2Yge2NoYXJhY3Rlcl9jb3VudH0gY2hhcmFjdGVycyIsInN1cnZleXNfc2luZ2xlX3Jlc3BvbnNlX2hpbnQiOiJQbGVhc2Ugc2VsZWN0IDEgb3B0aW9uIiwic3VydmV5c19zdWJtaXRfcmVzcG9uc2UiOiJTdWJtaXQgeW91ciByZXNwb25zZSIsInN1cnZleXNfdGVsZXBob25lX2Vycm9yIjoiUGxlYXNlIGVudGVyIGEgdmFsaWQgdGVsZXBob25lIG51bWJlciIsInN1cnZleXNfdGV4dF9pbnB1dF9xdWVzdGlvbl9wbGFjZWhvbGRlciI6IlBsZWFzZSB0eXBlIHlvdXIgcmVzcG9uc2UgaGVyZS4uLiIsInN3aXRjaF9waG9uZV9kZWZsZWN0aW9uX3RvX21lc3Nlbmdlcl9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiUmVkdWNlIHdhaXQgdGltZXMgYnkgZ2l2aW5nIHlvdXIgY3VzdG9tZXJzIHRoZSBjaG9pY2UgdG8gc3dpdGNoIHRvIG1lc3NhZ2luZyBtaWQtY2FsbC4iLCJzd2l0Y2hfcGhvbmVfZGVmbGVjdGlvbl90b19tZXNzZW5nZXJfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlN3aXRjaDogcGhvbmUgZGVmbGVjdGlvbiB0byBNZXNzZW5nZXIiLCJzd2l0Y2hfcGhvbmVfZGVmbGVjdGlvbl90b19tZXNzZW5nZXJfZmVhdHVyZV90aXRsZSI6IlN3aXRjaDogcGhvbmUgZGVmbGVjdGlvbiB0byBNZXNzZW5nZXIiLCJzeW1ib2xzIjoiU3ltYm9scyIsInRhcmdldGluZ19hbmRfc2NoZWR1bGluZ19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRGVjaWRlIGhvdyBhbmQgRmluIGNhbiBzaG93IHVwIGZvciB5b3VyIGN1c3RvbWVycyBiYXNlZCBvbiBhdWRpZW5jZSwgcmVnaW9uLCBjaGFubmVsLCBhbmQgbW9yZeKAlGhlbHBpbmcgeW91IGNvbnRyb2wgYW5kIG1haW50YWluIHlvdXIgc3VwcG9ydCBhdmFpbGFiaWxpdHkgZXZlbiB3aGVuIHlvdVwncmUgb3V0IG9mIG9mZmljZS4iLCJ0YXJnZXRpbmdfYW5kX3NjaGVkdWxpbmdfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlRhcmdldGluZyAmIHNjaGVkdWxpbmciLCJ0YXJnZXRpbmdfYW5kX3NjaGVkdWxpbmdfZmVhdHVyZV90aXRsZSI6IlRhcmdldGluZyAmIHNjaGVkdWxpbmciLCJ0YXNrc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQ29ubmVjdCBGaW4gdG8geW91ciBkYXRhIHNvdXJjZXMgYW5kIHN5c3RlbXMgc28gaXQgY2FuIHVwZGF0ZSBkYXRhLCBlbmFibGluZyBpdCB0byBwZXJmb3JtIGNvbXBsZXggdGFza3Mgb24gYmVoYWxmIG9mIHlvdXIgY3VzdG9tZXJzLiIsInRhc2tzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJGaW4gVGFza3MiLCJ0YXNrc19mZWF0dXJlX3RpdGxlIjoiRmluIFRhc2tzIiwidGFza3Nfc3BhY2VfdGl0bGUiOiJUYXNrcyIsInRlYW1fbmFtZV9jdXN0b21fcmVzcG9uc2VfZGVsYXlfMiI6InthcHBfbmFtZX0gdHlwaWNhbGx5IHJlcGxpZXMgaW4gYSBkYXkiLCJ0ZWFtX25hbWVfY3VzdG9tX3Jlc3BvbnNlX2RlbGF5XzMiOiJ7YXBwX25hbWV9IHR5cGljYWxseSByZXBsaWVzIGluIGEgd2VlayIsInRlYW1fbmFtZV9wcm9hY3RpdmVfZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfb25lX2J1c2luZXNzX2RheSI6InthcHBfbmFtZX0gdHlwaWNhbGx5IHJlcGxpZXMgaW4gb25lIGJ1c2luZXNzIGRheSIsInRlYW1fbmFtZV9wcm9hY3RpdmVfZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfdHdvX2J1c2luZXNzX2RheXMiOiJ7YXBwX25hbWV9IHR5cGljYWxseSByZXBsaWVzIGluIHR3byBidXNpbmVzcyBkYXlzIiwidGVhbV9vZmZpY2VfaG91cnNfYW5kX3JlcGx5X3RpbWVfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlNldCB1bmlxdWUgb2ZmaWNlIGhvdXJzIGFuZCByZXBseSB0aW1lcyBmb3IgZWFjaCB0ZWFtIHRvIGJldHRlciBzZXQgY3VzdG9tZXIgZXhwZWN0YXRpb25zLiIsInRlYW1fb2ZmaWNlX2hvdXJzX2FuZF9yZXBseV90aW1lX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJUZWFtIG9mZmljZSBob3VycyBhbmQgcmVwbHkgdGltZSIsInRlYW1fb2ZmaWNlX2hvdXJzX2FuZF9yZXBseV90aW1lX2ZlYXR1cmVfdGl0bGUiOiJUZWFtIG9mZmljZSBob3VycyBhbmQgcmVwbHkgdGltZSIsInRlYW1fcGVyZm9ybWFuY2VfcmVwb3J0c19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRWFzaWx5IG1lYXN1cmUgYW5kIGNvbXBhcmUgeW91ciB0ZWFtXCdzIHBlcmZvcm1hbmNlLiIsInRlYW1fcGVyZm9ybWFuY2VfcmVwb3J0c19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiVGVhbSBwZXJmb3JtYW5jZSByZXBvcnRzIiwidGVhbV9wZXJmb3JtYW5jZV9yZXBvcnRzX2ZlYXR1cmVfdGl0bGUiOiJUZWFtIHBlcmZvcm1hbmNlIHJlcG9ydHMiLCJ0ZWFtX3JvdXRpbmdfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlNwZWNpZnkgdGhlIHRlYW1zIGZvciBjYWxsIHJvdXRpbmcgdG8gZW5zdXJlIGN1c3RvbWVycyBjb25uZWN0IHdpdGggdGhlIHJpZ2h0IGFnZW50LiIsInRlYW1fcm91dGluZ19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiVGVhbSByb3V0aW5nIiwidGVhbV9yb3V0aW5nX2ZlYXR1cmVfdGl0bGUiOiJUZWFtIHJvdXRpbmciLCJ0ZWFtbWF0ZV9jYWxlbmRhcl9saW5rIjoiVGVhbW1hdGUgY2FsZW5kYXIiLCJ0ZWFtbWF0ZV9pbmFjdGl2aXR5X2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJUcmlnZ2VyIHJ1bGVzIHdoZW4gYSB0ZWFtbWF0ZSBoYXNuXCd0IHJlcGxpZWQgdG8gYSBuZXcgY29udmVyc2F0aW9uIGluIGEgc3BlY2lmaWVkIHRpbWUuIiwidGVhbW1hdGVfaW5hY3Rpdml0eV9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiVGVhbW1hdGUgaW5hY3Rpdml0eSIsInRlYW1tYXRlX2luYWN0aXZpdHlfZmVhdHVyZV90aXRsZSI6IlRlYW1tYXRlIGluYWN0aXZpdHkiLCJ0ZWFtbWF0ZV9wcm9maWxlIjoie3Byb3ZpZGVyfSB0ZWFtbWF0ZSBwcm9maWxlIiwidGVsbF91c19tb3JlIjoiVGVsbCB1cyBtb3Jl4oCmIiwidGVsbF91c193aGF0X3lvdV9uZWVkIjoiVGVsbCB1cyB3aGF0IHlvdSBuZWVkIGhlbHAgd2l0aCBhbmQgb3VyIGJvdCB3aWxsIGRvIGl0cyBiZXN0IHRvIGFuc3dlciIsInRlcnJpYmxlIjoiVGVycmlibGUiLCJ0aGFua195b3UiOiJUaGFuayB5b3UiLCJ0aGFua3NfY3VzdG9tX3Jlc3BvbnNlX2RlbGF5X29uZV9idXNpbmVzc19kYXkiOiJUaGFua3MhIFRoZSB0ZWFtIHdpbGwgcmVwbHkgaW4gb25lIGJ1c2luZXNzIGRheSIsInRoYW5rc19jdXN0b21fcmVzcG9uc2VfZGVsYXlfdHdvX2J1c2luZXNzX2RheXMiOiJUaGFua3MhIFRoZSB0ZWFtIHdpbGwgcmVwbHkgaW4gdHdvIGJ1c2luZXNzIGRheXMiLCJ0aGFua3NfZm9yX2xldHRpbmdfdXNfa25vdyI6IlRoYW5rcyBmb3IgbGV0dGluZyB1cyBrbm93IiwidGhhbmtzX3Byb2FjdGl2ZV9leHBlY3RlZF9yZXNwb25zZV9kZWxheV91bmtub3duIjoiVGhhbmtzISBUaGUgdGVhbSB3aWxsIHJlcGx5IGFzIHNvb24gYXMgdGhleSBjYW4iLCJ0aGF0X2NvdW50cnlfY29kZV9kb2VzbnRfbG9va19xdWl0ZV9yaWdodCI6IlRoYXQgY291bnRyeSBjb2RlIGRvZXNuXCd0IGxvb2sgcXVpdGUgcmlnaHQiLCJ0aGF0X2VtYWlsX2FkZHJlc3NfZG9lc250X2xvb2tfcXVpdGVfcmlnaHQiOiJUaGF0IGVtYWlsIGRvZXNuXCd0IGxvb2sgcXVpdGUgcmlnaHQiLCJ0aGF0X251bWJlcl9kb2VzbnRfbG9va19xdWl0ZV9yaWdodCI6IlRoYXQgbnVtYmVyIGRvZXNuXCd0IGxvb2sgcXVpdGUgcmlnaHQiLCJ0aGF0X251bWJlcl9oYXNfdG9vX21hbnlfZGlnaXRzIjoiVGhhdCBudW1iZXIgaGFzIHRvbyBtYW55IGRpZ2l0cyIsInRoYXRfbnVtYmVyX2lzX21pc3NpbmdfYV9mZXdfZGlnaXRzIjoiVGhhdCBudW1iZXIgaXMgbWlzc2luZyBhIGZldyBkaWdpdHMiLCJ0aGF0X251bWJlcl9uZWVkc19hX3ByZWZpeCI6IlRoYXQgbnVtYmVyIG5lZWRzIGEgcHJlZml4ICgrIG9yIDAwKSIsInRoZV90ZWFtX2Nhbl9oZWxwX2lmX25lZWRlZCI6IlRoZSB0ZWFtIGNhbiBoZWxwIGlmIG5lZWRlZCIsInRoZV90ZWFtX3R5cGljYWxseV9yZXBsaWVzX2luXzEwODAwIjoiVGhlIHRlYW0gdHlwaWNhbGx5IHJlcGxpZXMgaW4gdW5kZXIgM2giLCJ0aGVfdGVhbV90eXBpY2FsbHlfcmVwbGllc19pbl8xMjAiOiJUaGUgdGVhbSB0eXBpY2FsbHkgcmVwbGllcyBpbiB1bmRlciAybSIsInRoZV90ZWFtX3R5cGljYWxseV9yZXBsaWVzX2luXzEyMDAiOiJUaGUgdGVhbSB0eXBpY2FsbHkgcmVwbGllcyBpbiB1bmRlciAyMG0iLCJ0aGVfdGVhbV90eXBpY2FsbHlfcmVwbGllc19pbl8xNDQwMCI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIDRoIiwidGhlX3RlYW1fdHlwaWNhbGx5X3JlcGxpZXNfaW5fMTcyODAwIjoiVGhlIHRlYW0gdHlwaWNhbGx5IHJlcGxpZXMgaW4gMmQiLCJ0aGVfdGVhbV90eXBpY2FsbHlfcmVwbGllc19pbl8xODAiOiJUaGUgdGVhbSB0eXBpY2FsbHkgcmVwbGllcyBpbiB1bmRlciAzbSIsInRoZV90ZWFtX3R5cGljYWxseV9yZXBsaWVzX2luXzE4MDAiOiJUaGUgdGVhbSB0eXBpY2FsbHkgcmVwbGllcyBpbiB1bmRlciAzMG0iLCJ0aGVfdGVhbV90eXBpY2FsbHlfcmVwbGllc19pbl8xODAwMCI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIDVoIiwidGhlX3RlYW1fdHlwaWNhbGx5X3JlcGxpZXNfaW5fMjE2MDAiOiJUaGUgdGVhbSB0eXBpY2FsbHkgcmVwbGllcyBpbiB1bmRlciA2aCIsInRoZV90ZWFtX3R5cGljYWxseV9yZXBsaWVzX2luXzI0MCI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIDRtIiwidGhlX3RlYW1fdHlwaWNhbGx5X3JlcGxpZXNfaW5fMjU5MjAwIjoiVGhlIHRlYW0gdHlwaWNhbGx5IHJlcGxpZXMgaW4gM2QiLCJ0aGVfdGVhbV90eXBpY2FsbHlfcmVwbGllc19pbl8zMDAiOiJUaGUgdGVhbSB0eXBpY2FsbHkgcmVwbGllcyBpbiB1bmRlciA1bSIsInRoZV90ZWFtX3R5cGljYWxseV9yZXBsaWVzX2luXzM0NTYwMCI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIDRkIiwidGhlX3RlYW1fdHlwaWNhbGx5X3JlcGxpZXNfaW5fMzYwMCI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIDFoIiwidGhlX3RlYW1fdHlwaWNhbGx5X3JlcGxpZXNfaW5fNDMyMDAiOiJUaGUgdGVhbSB0eXBpY2FsbHkgcmVwbGllcyBpbiB1bmRlciAxMmgiLCJ0aGVfdGVhbV90eXBpY2FsbHlfcmVwbGllc19pbl80MzIwMDAiOiJUaGUgdGVhbSB0eXBpY2FsbHkgcmVwbGllcyBpbiA1ZCIsInRoZV90ZWFtX3R5cGljYWxseV9yZXBsaWVzX2luXzUxODQwMCI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIDZkIiwidGhlX3RlYW1fdHlwaWNhbGx5X3JlcGxpZXNfaW5fNjAiOiJUaGUgdGVhbSB0eXBpY2FsbHkgcmVwbGllcyBpbiB1bmRlciAxbSIsInRoZV90ZWFtX3R5cGljYWxseV9yZXBsaWVzX2luXzYwMCI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIDEwbSIsInRoZV90ZWFtX3R5cGljYWxseV9yZXBsaWVzX2luXzYwNDgwMCI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIDF3IiwidGhlX3RlYW1fdHlwaWNhbGx5X3JlcGxpZXNfaW5fNzIwMCI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIDJoIiwidGhlX3RlYW1fdHlwaWNhbGx5X3JlcGxpZXNfaW5fODY0MDAiOiJUaGUgdGVhbSB0eXBpY2FsbHkgcmVwbGllcyBpbiAxZCIsInRoZV90ZWFtX3R5cGljYWxseV9yZXBsaWVzX2luXzkwMCI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIDE1bSIsInRoZV90ZWFtX3R5cGljYWxseV9yZXBsaWVzX2luX2RheSI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIGEgZGF5LiIsInRoZV90ZWFtX3R5cGljYWxseV9yZXBsaWVzX2luX2hvdXJzIjoiVGhlIHRlYW0gdHlwaWNhbGx5IHJlcGxpZXMgaW4gYSBmZXcgaG91cnMuIiwidGhlX3RlYW1fdHlwaWNhbGx5X3JlcGxpZXNfaW5fbWludXRlcyI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIGEgZmV3IG1pbnV0ZXMuIiwidGhlX3RlYW1fdHlwaWNhbGx5X3JlcGxpZXNfaW5fb25lX2J1c2luZXNzX2RheSI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIG9uZSBidXNpbmVzcyBkYXkuIiwidGhlX3RlYW1fdHlwaWNhbGx5X3JlcGxpZXNfaW5fdHdvX2J1c2luZXNzX2RheXMiOiJUaGUgdGVhbSB0eXBpY2FsbHkgcmVwbGllcyBpbiB0d28gYnVzaW5lc3MgZGF5cyIsInRoZV90ZWFtX3R5cGljYWxseV9yZXBsaWVzX2luX3VuZGVyX25faG91cnMiOiJUaGUgdGVhbSB0eXBpY2FsbHkgcmVwbGllcyBpbiB1bmRlciB7aG91cnN9aC4iLCJ0aGVfdGVhbV90eXBpY2FsbHlfcmVwbGllc19pbl91bmRlcl9uX21pbiI6IlRoZSB0ZWFtIHR5cGljYWxseSByZXBsaWVzIGluIHVuZGVyIHttaW51dGVzfW0uIiwidGhlX3RlYW1fdHlwaWNhbGx5X3JlcGxpZXNfaW5fdW5rbm93biI6IlRoZSB0ZWFtIHdpbGwgcmVwbHkgYXMgc29vbiBhcyB0aGV5IGNhbiIsInRoZV90ZWFtX3R5cGljYWxseV9yZXBsaWVzX2luX3dlZWsiOiJUaGUgdGVhbSB0eXBpY2FsbHkgcmVwbGllcyBpbiBhIHdlZWsuIiwidGhpbmtpbmciOiJUaGlua2luZy4uLiIsInRoaXNfY2hhdF9pc19wb3dlcmVkX2J5X2ludGVyY29tIjoiVGhpcyBjaGF0IGlzIHBvd2VyZWQgYnkgSW50ZXJjb20iLCJ0aWNrZXRfY291bGRfbm90X2JlX2NyZWF0ZWQiOiJUaWNrZXQgY291bGQgbm90IGJlIGNyZWF0ZWQiLCJ0aWNrZXRfY3JlYXRlX3RpY2tldF93aXRoX3R5cGVfdGl0bGUiOiJDcmVhdGUge3RpY2tldF90eXBlX3RpdGxlfSB0aWNrZXQiLCJ0aWNrZXRfY3VycmVudF9zdGF0dXMiOiJDdXJyZW50IHN0YXR1czoge2N1cnJlbnRfc3RhdHVzX3RpdGxlfSIsInRpY2tldF9jdXJyZW50X3N0YXR1c193aXRoX2RhdGUiOiJDdXJyZW50IHN0YXR1czoge2N1cnJlbnRfc3RhdHVzX3RpdGxlfSwge2RhdGV9IiwidGlja2V0X2RhdGFfYXR0cmlidXRlc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQ3JlYXRlIHRpY2tldCB0eXBlcyBhbmQgYXR0cmlidXRlcy4iLCJ0aWNrZXRfZGF0YV9hdHRyaWJ1dGVzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJUaWNrZXQgZGF0YSBhdHRyaWJ1dGVzIiwidGlja2V0X2RhdGFfYXR0cmlidXRlc19mZWF0dXJlX3RpdGxlIjoiVGlja2V0IGRhdGEgYXR0cmlidXRlcyIsInRpY2tldF9kZXRhaWxzX2F0dHJpYnV0ZXNfYWNjZXNzaWJpbGl0eV90ZXh0IjoiVGlja2V0IGF0dHJpYnV0ZXM7IiwidGlja2V0X2RldGFpbHNfZm9yX3RpdGxlIjoiVGlja2V0IGRldGFpbHMgZm9yIHt0aXRsZX0iLCJ0aWNrZXRfZGV0YWlsc19ub3RpZmljYXRpb25fZGV0YWlsIjoiWW91IHdpbGwgYmUgbm90aWZpZWQgaGVyZSBhbmQgdmlhIGVtYWlsIGF0IiwidGlja2V0X2Zvcm1zX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJDb2xsZWN0IGluZm9ybWF0aW9uIHVwZnJvbnQgdGhyb3VnaCBhIGJvdCBpbiBtZXNzZW5nZXIgb3IgZGlyZWN0bHkgaW4geW91ciBwcm9kdWN0LiIsInRpY2tldF9mb3Jtc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiVGlja2V0IGZvcm1zIiwidGlja2V0X2Zvcm1zX2ZlYXR1cmVfdGl0bGUiOiJUaWNrZXQgZm9ybXMiLCJ0aWNrZXRfaGFzX2JlZW5fY3JlYXRlZCI6IlRpY2tldCBoYXMgYmVlbiBjcmVhdGVkIiwidGlja2V0X2hhc19iZWVuX3VwZGF0ZWQiOiJUaWNrZXQgaGFzIGJlZW4gdXBkYXRlZCIsInRpY2tldF9wb3J0YWxfY2FyZF9saW5rX3RpdGxlIjoiR28gdG8gdGlja2V0IHBvcnRhbCIsInRpY2tldF9wb3J0YWxfY2FyZF90aXRsZSI6Ikxvb2tpbmcgZm9yIHlvdXIgY29tcGFueeKAmXMgdGlja2V0cz8iLCJ0aWNrZXRfc2xhX2RldGFpbHMiOiJTTEEgZGV0YWlsczoge3NsYV9kZXRhaWxzfSIsInRpY2tldF9zdGF0dXNfZGV0YWlscyI6IlN0YXR1cyBkZXRhaWxzOiB7c3RhdHVzX2RldGFpbHN9IiwidGlja2V0X3N0YXR1c19ldmVudF9tb3ZlZF9hdXRvbWF0aW9uX3dpdGhfYnVsbGV0X3BvaW50IjoiVGlja2V0IG1vdmVkIGludG8ge3N0YXR1c30g4oCiIHt0aW1lc3RhbXB9IiwidGlja2V0X3N0YXR1c19ldmVudF9tb3ZlZF93aXRoX2J1bGxldF9wb2ludCI6Int0ZWFtbWF0ZX0gbW92ZWQgdGlja2V0IGludG8ge3N0YXR1c30g4oCiIHt0aW1lc3RhbXB9IiwidGlja2V0aW5nX3N5c3RlbV9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiVGlja2V0cyBvcHRpbWl6ZWQgZm9yIHRlYW0gY29sbGFib3JhdGlvbiBhbmQgcmVhbC10aW1lIGN1c3RvbWVyIHVwZGF0ZXMuIiwidGlja2V0aW5nX3N5c3RlbV9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiVGlja2V0aW5nIHN5c3RlbSIsInRpY2tldGluZ19zeXN0ZW1fZmVhdHVyZV90aXRsZSI6IlRpY2tldGluZyBzeXN0ZW0iLCJ0aWNrZXRzX2FkZF9maWxlIjoiQWRkIGZpbGUiLCJ0aWNrZXRzX2FkZF9maWxlcyI6IkFkZCBmaWxlcyIsInRpY2tldHNfY3JlYXRlX3RpY2tldCI6IkNyZWF0ZSB0aWNrZXQiLCJ0aWNrZXRzX2NyZWF0ZV90aWNrZXRfZmFsbGJhY2siOiJQbGVhc2UgcmVwbHkgd2l0aCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFuZCBzb21lb25lIHdpbGwgZ2V0IGJhY2sgdG8geW91IHNvb24uIiwidGlja2V0c19jcmVhdGVkX2NvbmZpcm1hdGlvbl9oZWFkZXIiOiJUaWNrZXQgaXMgY3JlYXRlZCIsInRpY2tldHNfY3RhX3RleHQiOiJIYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhpcyB0aWNrZXQ/IiwidGlja2V0c19lbWFpbF9jb3B5IjoiUmVwbGllcyBhbmQgdGlja2V0IHVwZGF0ZXMgd2lsbCBiZSBzZW50IHRvIHRoaXMgZW1haWwiLCJ0aWNrZXRzX2VtYWlsX3N1YmplY3QiOiJZb3VyIHt0aWNrZXRfdHlwZV9uYW1lfSB0aWNrZXQiLCJ0aWNrZXRzX2VtYWlsX3N1YmplY3Rfd2l0aF90aWNrZXRfaWQiOiJZb3VyIHt0aWNrZXRfdHlwZV9uYW1lfSB0aWNrZXQgI3t0aWNrZXRfaWR9IiwidGlja2V0c19lc3RpbWF0ZWRfcmVzb2x1dGlvbiI6IkVzdGltYXRlZCB0aW1lIHRvIHJlc29sdXRpb246IHtkdXJhdGlvbn0iLCJ0aWNrZXRzX2ZpbGVzX2FkZGVkIjoiRmlsZXMgYWRkZWQiLCJ0aWNrZXRzX2hhdmVfYV9xdWVzdGlvbiI6IkhhdmUgYSBxdWVzdGlvbiBhYm91dCB0aGlzIGlzc3VlPyIsInRpY2tldHNfaW5fcHJvZ3Jlc3Nfc3RhdHVzX2RldGFpbCI6Ildl4oCZcmUgd29ya2luZyBvbiB0aGlzIPCfmYwiLCJ0aWNrZXRzX2luX3Byb2dyZXNzX3N0YXR1c19kZXRhaWxfd2l0aF9hc3NpZ25lZSI6IntmaXJzdF9uYW1lfSBpcyB3b3JraW5nIG9uIHRoaXMhIiwidGlja2V0c19pc19yZXNvbHZlZCI6IklzIHRoaXMgdGlja2V0IHJlc29sdmVkPyIsInRpY2tldHNfbG9nX2FfdGlja2V0IjoiTG9nIGEgdGlja2V0IiwidGlja2V0c19wb3J0YWxfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkFsbG93IGJ1c2luZXNzIGN1c3RvbWVycyB0byB2aWV3IGFuZCB0cmFjayBhbGwgdGhlaXIgdGVhbVwncyB0aWNrZXRzIGluIG9uZSBwbGFjZS4iLCJ0aWNrZXRzX3BvcnRhbF9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiVGlja2V0cyBwb3J0YWwiLCJ0aWNrZXRzX3BvcnRhbF9mZWF0dXJlX3RpdGxlIjoiVGlja2V0cyBwb3J0YWwiLCJ0aWNrZXRzX3Jlc29sdmVkX3N0YXR1c19kZXRhaWwiOiJXZeKAmXZlIGNvbXBsZXRlZCB5b3VyIHRpY2tldCIsInRpY2tldHNfcmVzb2x2ZWRfc3RhdHVzX2RldGFpbF93aXRoX2Fzc2lnbmVlIjoie2ZpcnN0X25hbWV9IGhhcyBjb21wbGV0ZWQgeW91ciB0aWNrZXQiLCJ0aWNrZXRzX3NsYSI6IkVzdGltYXRlZCB0byBiZSByZXNvbHZlZCB7dGltZX0iLCJ0aWNrZXRzX3NwYWNlX3RpdGxlIjoiVGlja2V0cyIsInRpY2tldHNfc3RhdHVzX2NoYW5nZV9ldmVudCI6IlRpY2tldCBpcyBub3cge3N0YXR1c30g4oCiIHt0aW1lc3RhbXB9IiwidGlja2V0c19zdGF0dXNfZGVzY3JpcHRpb25fY29tcGxldGVkIjoiV2VcJ3ZlIGNvbXBsZXRlZCB5b3VyIHRpY2tldCIsInRpY2tldHNfc3RhdHVzX2Rlc2NyaXB0aW9uX21vcmVfaW5mbyI6IldlIG5lZWQgbW9yZSBpbmZvcm1hdGlvbiIsInRpY2tldHNfc3RhdHVzX2Rlc2NyaXB0aW9uX3dlbGxfcGlja191cF9zb29uIjoiV2VcJ2xsIHBpY2sgdXAgeW91ciB0aWNrZXQgc29vbiIsInRpY2tldHNfc3RhdHVzX2Rlc2NyaXB0aW9uX3dvcmtpbmdfb24iOiJXZVwncmUgd29ya2luZyBvbiB5b3VyIHRpY2tldCIsInRpY2tldHNfc3RhdHVzX2V2ZW50X21vdmVkIjoie3RlYW1tYXRlfSBtb3ZlZCB0aWNrZXQgaW50byB7c3RhdHVzfSB7dGltZXN0YW1wfSIsInRpY2tldHNfc3RhdHVzX2V2ZW50X21vdmVkX2F1dG9tYXRpb24iOiJUaWNrZXQgbW92ZWQgaW50byB7c3RhdHVzfSB7dGltZXN0YW1wfSIsInRpY2tldHNfc3RhdHVzX2V2ZW50X3N1Ym1pdHRlZCI6IlRpY2tldCBoYXMgYmVlbiB7c3VibWl0dGVkX3N0YXR1c30g4oCiIHt0aW1lc3RhbXB9IiwidGlja2V0c19zdGF0dXNfaW5fcHJvZ3Jlc3MiOiJJbiBwcm9ncmVzcyIsInRpY2tldHNfc3RhdHVzX3Jlc29sdmVkIjoiUmVzb2x2ZWQiLCJ0aWNrZXRzX3N0YXR1c19zdWJtaXR0ZWQiOiJTdWJtaXR0ZWQiLCJ0aWNrZXRzX3N0YXR1c193YWl0aW5nX29uX3lvdSI6IldhaXRpbmcgb24geW91IiwidGlja2V0c19zdWJtaXR0ZWRfY29uZmlybWF0aW9uX2hlYWRlciI6IlRpY2tldCBpcyBzdWJtaXR0ZWQiLCJ0aWNrZXRzX3N1Ym1pdHRlZF9jb25maXJtYXRpb25fcGFyYWdyYXBoIjoiV2VcJ2xsIG5vdGlmeSB5b3Ugb25jZSB5b3VyIHRpY2tldCBoYXMgYW4gdXBkYXRlIiwidGlja2V0c19zdWJtaXR0ZWRfc3RhdHVzX2RldGFpbCI6Ildl4oCZbGwgcGljayB0aGlzIHVwIHNvb24iLCJ0aWNrZXRzX3N1Ym1pdHRlZF9zdGF0dXNfZGV0YWlsX3dpdGhfYXNzaWduZWUiOiJ7Zmlyc3RfbmFtZX0gd2lsbCBwaWNrIHRoaXMgdXAgc29vbiIsInRpY2tldHNfdXBkYXRlc19wcm9tcHQiOiJZb3Ugd2lsbCByZWNlaXZlIHVwZGF0ZXMgaW4gdGhlIE1lc3NlbmdlciBhbmQgdmlhIGVtYWlsIiwidGlja2V0c192aWV3X3RpY2tldCI6IlZpZXcgdGlja2V0IGRldGFpbHMiLCJ0aWNrZXRzX3dhaXRpbmdfb25fY3VzdG9tZXJfc3RhdHVzX2RldGFpbCI6IldlIG5lZWQgbW9yZSBpbmZvcm1hdGlvbiBmcm9tIHlvdSIsInRpY2tldHNfd2FpdGluZ19vbl9jdXN0b21lcl9zdGF0dXNfZGV0YWlsX3dpdGhfYXNzaWduZWUiOiJ7Zmlyc3RfbmFtZX0gbmVlZHMgbW9yZSBpbmZvcm1hdGlvbiIsInRpbWVfZGF5X2FnbyI6IntkZWx0YX1kIiwidGltZV9mdXR1cmVfMWgiOiJJbiAxIGhvdXIiLCJ0aW1lX2Z1dHVyZV8yaCI6IkluIDIgaG91cnMiLCJ0aW1lX2Z1dHVyZV8zMG0iOiJJbiAzMCBtaW51dGVzIiwidGltZV9mdXR1cmVfM2giOiJJbiAzIGhvdXJzIiwidGltZV9mdXR1cmVfZGF5XzAiOiJNb25kYXkiLCJ0aW1lX2Z1dHVyZV9kYXlfMSI6IlR1ZXNkYXkiLCJ0aW1lX2Z1dHVyZV9kYXlfMiI6IldlZG5lc2RheSIsInRpbWVfZnV0dXJlX2RheV8zIjoiVGh1cnNkYXkiLCJ0aW1lX2Z1dHVyZV9kYXlfNCI6IkZyaWRheSIsInRpbWVfZnV0dXJlX2RheV81IjoiU2F0dXJkYXkiLCJ0aW1lX2Z1dHVyZV9kYXlfNiI6IlN1bmRheSIsInRpbWVfZnV0dXJlX2xhdGVyX3RvZGF5IjoiTGF0ZXIgdG9kYXkiLCJ0aW1lX2Z1dHVyZV9uZXh0X3dlZWsiOiJOZXh0IHdlZWsiLCJ0aW1lX2Z1dHVyZV90b21vcnJvdyI6IlRvbW9ycm93IiwidGltZV9ob3VyX2FnbyI6IntkZWx0YX1oIiwidGltZV9qdXN0X25vdyI6Ikp1c3Qgbm93IiwidGltZV9taW51dGVfYWdvIjoie2RlbHRhfW0iLCJ0aW1lX21vbnRoX2FnbyI6IntkZWx0YX1tbyIsInRpbWVfd2Vla19hZ28iOiJ7ZGVsdGF9dyIsInRpbWVfeWVhcl9hZ28iOiJ7ZGVsdGF9eSIsInRpbWVfeWVzdGVyZGF5IjoieWVzdGVyZGF5IiwidG9uZV9vZl92b2ljZV9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiRmluIGNhbiBpbmNvcnBvcmF0ZSB5b3VyIHN1cHBvcnQgdG9uZSBvZiB2b2ljZSBwcmVmZXJlbmNlcywgYWxsb3dpbmcgeW91IHRvIGN1c3RvbWl6ZSB5b3VyIG93biwgb3IgY2hvb3NlIGZyb20gYSBzZWxlY3Rpb24gb2Ygb3B0aW9ucyBsaWtlIHByb2Zlc3Npb25hbCwgZnJpZW5kbHksIGh1bW9yb3VzLCBhbmQgbW9yZS4iLCJ0b25lX29mX3ZvaWNlX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJUb25lIG9mIHZvaWNlIiwidG9uZV9vZl92b2ljZV9mZWF0dXJlX3RpdGxlIjoiVG9uZSBvZiB2b2ljZSIsInRvb2x0aXBfYW5jaG9yIjoiVG9vbHRpcCBhbmNob3IiLCJ0b29sdGlwc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiSGlnaGxpZ2h0IGZlYXR1cmVzIHdpdGggYSBsYWJlbCB0aGF0IGRyYXdzIGF0dGVudGlvbiB0byBhIHNwZWNpZmljIGFyZWEgb2YgeW91ciBwcm9kdWN0LiIsInRvb2x0aXBzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJUb29sdGlwcyIsInRvb2x0aXBzX2ZlYXR1cmVfdGl0bGUiOiJUb29sdGlwcyIsInRvcGljc19leHBsb3Jlcl9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiVmlzdWFsaXplIHN1cHBvcnQgdm9sdW1lIGFuZCBrZXkgcGVyZm9ybWFuY2UgbWV0cmljcyBieSB0b3BpYyBhbmQgc3VidG9waWMuIiwidG9waWNzX2V4cGxvcmVyX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJUb3BpY3MgRXhwbG9yZXIiLCJ0b3BpY3NfZXhwbG9yZXJfZmVhdHVyZV90aXRsZSI6IlRvcGljcyBFeHBsb3JlciIsInRvdXIiOiJ0b3VyIiwidHJhbnNjcmliaW5nIjoiVHJhbnNjcmliaW5nLi4uIiwidHJhbnNjcmlwdGlvbl9mYWlsZWQiOiJUcmFuc2NyaXB0aW9uIGZhaWxlZCIsInRyYW5zY3JpcHRzX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJFbmFibGUgY2FsbCB0cmFuc2NyaXB0cyBmb3IgcXVpY2sgcmVmZXJlbmNlIGFuZCBxdWFsaXR5IGFzc3VyYW5jZS4iLCJ0cmFuc2NyaXB0c19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiQ2FsbCB0cmFuc2NyaXB0cyIsInRyYW5zY3JpcHRzX2ZlYXR1cmVfdGl0bGUiOiJDYWxsIHRyYW5zY3JpcHRzIiwidHJhdmVsX3BsYWNlcyI6IlRyYXZlbCAmIFBsYWNlcyIsInRyZW5kaW5nX3RvcGljc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiQXV0b21hdGljYWxseSBkZXRlY3QgbWVhbmluZ2Z1bCBjaGFuZ2VzIGluIHN1cHBvcnQgYWN0aXZpdHkgYW5kIHBlcmZvcm1hbmNlLiIsInRyZW5kaW5nX3RvcGljc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiVHJlbmRzIiwidHJlbmRpbmdfdG9waWNzX2ZlYXR1cmVfdGl0bGUiOiJUcmVuZHMiLCJ0cnlfYWdhaW4iOiJUcnkgQWdhaW4iLCJ0cnlfaGVscF9jZW50ZXIiOiJUcnkgb3VyIEhlbHAgQ2VudGVyIiwidHJ5X3VzZV9kaWZmZXJlbnRfa2V5d29yZHMiOiJUcnkgZGlmZmVyZW50IGtleXdvcmRzIG9yIHR5cGUgeW91ciBmdWxsIHF1ZXN0aW9uIiwidHdvX2J1c2luZXNzX2RheXMiOiJUd28gYnVzaW5lc3MgZGF5cyIsInR5cGVfYV9udW1iZXIiOiJUeXBlIGEgbnVtYmVy4oCmIiwidHlwaWNhbGx5X3JlcGxpZXNfaW5fb25lX2J1c2luZXNzX2RheSI6IlR5cGljYWxseSByZXBsaWVzIGluIG9uZSBidXNpbmVzcyBkYXkiLCJ0eXBpY2FsbHlfcmVwbGllc19pbl90d29fYnVzaW5lc3NfZGF5cyI6IlR5cGljYWxseSByZXBsaWVzIGluIHR3byBidXNpbmVzcyBkYXlzIiwidHlwaW5nIjoiVHlwaW5nIiwidW5hYmxlX3RvX2xvYWRfdGhlX21lc3NlbmdlciI6IldlXCdyZSB1bmFibGUgdG8gbG9hZCB0aGUgbWVzc2VuZ2VyIiwidW5icmFuZGVkX2hlbHBfY2VudGVyX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJBIGhlbHAgY2VudGVyIHRoYXQgd2lsbCBub3QgaW5jbHVkZSBcJ0J1aWx0IGJ5IEludGVyY29tXCcgaW4gdGhlIGZvb3Rlci4iLCJ1bmJyYW5kZWRfaGVscF9jZW50ZXJfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlVuYnJhbmRlZCBoZWxwIGNlbnRlciIsInVuYnJhbmRlZF9oZWxwX2NlbnRlcl9mZWF0dXJlX3RpdGxlIjoiVW5icmFuZGVkIGhlbHAgY2VudGVyIiwidW5saW1pdGVkX2FydGljbGVzX2FuZF9jb2xsZWN0aW9uc19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiUHVibGlzaCBhbiB1bmxpbWl0ZWQgYW1vdW50IG9mIGFydGljbGVzIGFuZCBvcmdhbml6ZSB0aGVtIGJ5IHRvcGljIGluIGNvbGxlY3Rpb25zLiIsInVubGltaXRlZF9hcnRpY2xlc19hbmRfY29sbGVjdGlvbnNfZmVhdHVyZV9zaG9ydF90aXRsZSI6IlVubGltaXRlZCBhcnRpY2xlcyIsInVubGltaXRlZF9hcnRpY2xlc19hbmRfY29sbGVjdGlvbnNfZmVhdHVyZV90aXRsZSI6IlVubGltaXRlZCBhcnRpY2xlcyAmIGNvbGxlY3Rpb25zIiwidW5saW1pdGVkX3VzYWdlX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJVbmxpbWl0ZWQgRmluIEFJIENvcGlsb3QgdXNhZ2UuIiwidW5saW1pdGVkX3VzYWdlX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJGaW4gQUkgQ29waWxvdCIsInVubGltaXRlZF91c2FnZV9mZWF0dXJlX3RpdGxlIjoiVW5saW1pdGVkIHVzYWdlIiwidW5yZWFkX21lc3NhZ2VzIjoiVW5yZWFkIG1lc3NhZ2VzIiwidW5zdWJzY3JpYmVfc3luY19mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiS2VlcCB5b3VyIGN1c3RvbWVyc1wnIHN1YnNjcmlwdGlvbiBjaG9pY2VzIGluIHN5bmMgYWNyb3NzIEludGVyY29tIGFuZCBNYWlsY2hpbXAvTWFya2V0by4iLCJ1bnN1YnNjcmliZV9zeW5jX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJVbnN1YnNjcmliZSBzeW5jIiwidW5zdWJzY3JpYmVfc3luY19mZWF0dXJlX3RpdGxlIjoiVW5zdWJzY3JpYmUgc3luYyIsInVwZGF0ZWRfaW5fdGhlX2xhc3RfMTVtIjoiVXBkYXRlZCBpbiB0aGUgbGFzdCAxNSBtaW51dGVzIiwidXBkYXRlZF9pbl90aGVfbGFzdF9ob3VyIjoiVXBkYXRlZCBpbiB0aGUgbGFzdCBob3VyIiwidXBkYXRlZF9tdWx0aXBsZV9tb250aHNfYWdvIjoiVXBkYXRlZCBvdmVyIHtjb3VudH0gbW9udGhzIGFnbyIsInVwZGF0ZWRfbXVsdGlwbGVfd2Vla3NfYWdvIjoiVXBkYXRlZCBvdmVyIHtjb3VudH0gd2Vla3MgYWdvIiwidXBkYXRlZF9tdWx0aXBsZV95ZWFyc19hZ28iOiJVcGRhdGVkIG92ZXIge2NvdW50fSB5ZWFycyBhZ28iLCJ1cGRhdGVkX292ZXJfYV9tb250aF9hZ28gIjoiVXBkYXRlZCBvdmVyIGEgbW9udGggYWdvIiwidXBkYXRlZF9vdmVyX2Ffd2Vla19hZ28iOiJVcGRhdGVkIG92ZXIgYSB3ZWVrIGFnbyIsInVwZGF0ZWRfb3Zlcl9hX3llYXJfYWdvIjoiVXBkYXRlZCBvdmVyIGEgeWVhciBhZ28iLCJ1cGRhdGVkX3RoaXNfd2VlayI6IlVwZGF0ZWQgdGhpcyB3ZWVrIiwidXBkYXRlZF90b2RheSI6IlVwZGF0ZWQgdG9kYXkiLCJ1cGRhdGVkX3llc3RlcmRheSI6IlVwZGF0ZWQgeWVzdGVyZGF5IiwidXBmcm9udF9jb2xsZWN0aW9uX2Zvcm1fY2xvc2Vfb3V0IjoiWW91IGNhbiByZXR1cm4gaGVyZSBhbnl0aW1lIHRvIHNlZSByZXNwb25zZXMgYW5kIHNlbmQgdXBkYXRlcy4iLCJ1cGZyb250X2NvbGxlY3Rpb25fZm9ybV9pbnRyb2R1Y3Rpb24iOiJTaGFyZSBzb21lIGNvbnRleHQgdG8gaGVscCB0aGUgdGVhbSByZXNwb25kIGJldHRlciBhbmQgZmFzdGVyLiIsInVwZnJvbnRfY29sbGVjdGlvbl9mb3JtX3N1Ym1pc3Npb25fY29uZmlybWF0aW9uIjoiVGhhbmtzIGZvciBzZW5kaW5nIHRoYXQgY29udGV4dC4gVG8gc2F2ZSB0aW1lIGxhdGVyLCBmZWVsIGZyZWUgdG8gYWRkIG1vcmUgZGV0YWlscyBub3cuIiwidXBmcm9udF9jb2xsZWN0aW9uX2Zvcm1fc3VidGl0bGUiOiJTZW5kIHRoZSB0ZWFtIHNvbWUgY29udGV4dCIsInVwZnJvbnRfY29sbGVjdGlvbl9mb3JtX3N1YnRpdGxlX3N1Ym1pdHRlZCI6IlRoZXlcJ2xsIGtlZXAgdGhpcyBjb250ZXh0IGluIG1pbmQiLCJ1cGZyb250X2NvbGxlY3Rpb25fZm9ybV90aXRsZSI6IkdldCBoZWxwIGZhc3RlciIsInVwZnJvbnRfY29sbGVjdGlvbl9mb3JtX3RpdGxlX3N1Ym1pdHRlZCI6IlNlbnQgdG8gdGhlIHRlYW0hIiwidXBsb2FkX2F0dGFjaG1lbnQiOiJVcGxvYWQgYXR0YWNobWVudCIsInVwbG9hZF9mYWlsZWQiOiJVcGxvYWQgZmFpbGVkIiwidXBsb2FkX21heF9maWxlc19hbGxvd2VkIjoiTWF4aW11bSB7bGltaXR9IGZpbGVzIGFsbG93ZWQiLCJ1cGxvYWRfbWF4X2ZpbGVzX3NpemUiOiJNYXhpbXVtIGZpbGUgc2l6ZSBpcyB7bGltaXR9TUIiLCJ1cGxvYWRfcmV0cnkiOiJSZXRyeSB1cGxvYWQiLCJ1c2VyX2NvbXBhbnlfc2VnbWVudHNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkZpbHRlciBhbmQgZ3JvdXAgdXNlcnMgYW5kIGNvbXBhbmllcyB3aXRoIHNlZ21lbnRzLiIsInVzZXJfY29tcGFueV9zZWdtZW50c19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiVXNlciAmIGNvbXBhbnkgc2VnbWVudHMiLCJ1c2VyX2NvbXBhbnlfc2VnbWVudHNfZmVhdHVyZV90aXRsZSI6IlVzZXIgJiBjb21wYW55IHNlZ21lbnRzIiwidXNlcl9zYXlzIjoie2ZpcnN0TmFtZX0gc2F5c+KApiIsInVzdWFsX3JlcGx5X3RpbWVfaGVhZGVyX2xhYmVsIjoiVXN1YWwgcmVwbHkgdGltZSIsInZpZXdfYWxsIjoiVmlldyBhbGwiLCJ2aWV3X2NvbnZlcnNhdGlvbiI6IlZpZXcgY29udmVyc2F0aW9uIiwidmlld19tb3JlIjoiVmlldyBtb3JlIiwidmlld19tb3JlX2RldGFpbHMiOiJWaWV3IG1vcmUgZGV0YWlscyIsInZpZXdfcG9zdCI6IlZpZXcgcG9zdCIsInZvaWNlX3Nob3J0Y3V0X2hpbnQiOiJSZWNvcmQgYSB2b2ljZSBub3RlIOKAlCBob2xkIHtzaG9ydGN1dH0gd2hpbGUgdGhlIGNvbXBvc2VyIGlzIGVtcHR5LiIsInZvaWNlbWFpbF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiVHVybiBvbiB0cmFuc2NyaWJlZCB2b2ljZW1haWxzIHRvIGVhc2lseSByZXR1cm4gY3VzdG9tZXIgY2FsbHMuIiwidm9pY2VtYWlsX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJWb2ljZW1haWwiLCJ2b2ljZW1haWxfZmVhdHVyZV90aXRsZSI6IlZvaWNlbWFpbCIsIndlX3J1bl9vbl9maW4iOiJXZSBydW4gb24gRmluIiwid2VfcnVuX29uX2ludGVyY29tIjoiV2UgcnVuIG9uIEludGVyY29tIiwid2ViaG9va3NfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IlN1YnNjcmliZSB0byByZWFsLXRpbWUgbm90aWZpY2F0aW9ucyBvZiBldmVudHMgaGFwcGVuaW5nIGluIEludGVyY29tLiIsIndlYmhvb2tzX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJXZWJob29rcyIsIndlYmhvb2tzX2ZlYXR1cmVfdGl0bGUiOiJXZWJob29rcyIsIndlbGNvbWVfbWVzc2FnZXNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkF1dG9tYXRpY2FsbHkgbWVzc2FnZSBuZXcgdXNlcnMgYW5kIHZpc2l0b3JzIHdpdGggYSBwZXJzb25hbGl6ZWQgZ3JlZXRpbmcuIiwid2VsY29tZV9tZXNzYWdlc19mZWF0dXJlX3Nob3J0X3RpdGxlIjoiV2VsY29tZSBtZXNzYWdlcyIsIndlbGNvbWVfbWVzc2FnZXNfZmVhdHVyZV90aXRsZSI6IldlbGNvbWUgbWVzc2FnZXMiLCJ3aGF0c2FwcF9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiU2VuZCBhbmQgcmVjZWl2ZSBXaGF0c0FwcCBtZXNzYWdlcyBmcm9tIHRoZSBpbmJveC4iLCJ3aGF0c2FwcF9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiV2hhdHNBcHAiLCJ3aGF0c2FwcF9mZWF0dXJlX3RpdGxlIjoiV2hhdHNBcHAiLCJ3aGF0c2FwcF9pbmJvdW5kX2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJXaGF0c0FwcCBjb252ZXJzYXRpb25zIGluIHRoZSBJbmJveCBhbmQgc2VudCBmcm9tIFdvcmtmbG93cywgZnJlZSBvZiBjaGFyZ2UuIiwid2hhdHNhcHBfaW5ib3VuZF9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiSW5ib3VuZCBXaGF0c0FwcCIsIndoYXRzYXBwX2luYm91bmRfZmVhdHVyZV90aXRsZSI6IkluYm91bmQgV2hhdHNBcHAiLCJ3aXRoX3RlYW1uYW1lIjoid2l0aCB7dGVhbW5hbWV9Iiwid2l0aGluX2N1c3RvbV9yZXNwb25zZV9kZWxheV8wIjoiYSBmZXcgbWludXRlcyIsIndpdGhpbl9jdXN0b21fcmVzcG9uc2VfZGVsYXlfMSI6ImEgZmV3IGhvdXJzIiwid2l0aGluX2N1c3RvbV9yZXNwb25zZV9kZWxheV8yIjoiYSBkYXkiLCJ3aXRoaW5fY3VzdG9tX3Jlc3BvbnNlX2RlbGF5XzMiOiJhIHdlZWsiLCJ3aXRoaW5fZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMTA4MDAiOiIzIGhvdXJzIiwid2l0aGluX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzEyMCI6IjIgbWludXRlcyIsIndpdGhpbl9leHBlY3RlZF9yZXNwb25zZV9kZWxheV8xMjAwIjoiMjAgbWludXRlcyIsIndpdGhpbl9leHBlY3RlZF9yZXNwb25zZV9kZWxheV8xNDQwMCI6IjQgaG91cnMiLCJ3aXRoaW5fZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMTcyODAwIjoiMiBkYXlzIiwid2l0aGluX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzE4MCI6IjMgbWludXRlcyIsIndpdGhpbl9leHBlY3RlZF9yZXNwb25zZV9kZWxheV8xODAwIjoiMzAgbWludXRlcyIsIndpdGhpbl9leHBlY3RlZF9yZXNwb25zZV9kZWxheV8xODAwMCI6IjUgaG91cnMiLCJ3aXRoaW5fZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMjE2MDAiOiI2IGhvdXJzIiwid2l0aGluX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzI0MCI6IjQgbWludXRlcyIsIndpdGhpbl9leHBlY3RlZF9yZXNwb25zZV9kZWxheV8yNTkyMDAiOiIzIGRheXMiLCJ3aXRoaW5fZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfMzAwIjoiNSBtaW51dGVzIiwid2l0aGluX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzM0NTYwMCI6IjQgZGF5cyIsIndpdGhpbl9leHBlY3RlZF9yZXNwb25zZV9kZWxheV8zNjAwIjoiMSBob3VyIiwid2l0aGluX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzQzMjAwIjoiMTIgaG91cnMiLCJ3aXRoaW5fZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfNDMyMDAwIjoiNSBkYXlzIiwid2l0aGluX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzUxODQwMCI6IjYgZGF5cyIsIndpdGhpbl9leHBlY3RlZF9yZXNwb25zZV9kZWxheV82MCI6IjEgbWludXRlIiwid2l0aGluX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzYwMCI6IjEwIG1pbnV0ZXMiLCJ3aXRoaW5fZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfNjA0ODAwIjoiMSB3ZWVrIiwid2l0aGluX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5XzcyMDAiOiIyIGhvdXJzIiwid2l0aGluX2V4cGVjdGVkX3Jlc3BvbnNlX2RlbGF5Xzg2NDAwIjoiMSBkYXkiLCJ3aXRoaW5fZXhwZWN0ZWRfcmVzcG9uc2VfZGVsYXlfOTAwIjoiMTUgbWludXRlcyIsIndvcmtmbG93c19mb3JfYWR2YW5jZWRfYXV0b21hdGlvbnNfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkF1dG9tYXRpY2FsbHkgYXNzaWduLCBjbG9zZSwgYW5kIHByaW9yaXRpemUgY29udmVyc2F0aW9ucyBhbmQgdGlja2V0cywgYW5kIGRvIG1vcmUgd2l0aCBvdXIgdmlzdWFsIGF1dG9tYXRpb24gYnVpbGRlci4iLCJ3b3JrZmxvd3NfZm9yX2FkdmFuY2VkX2F1dG9tYXRpb25zX2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJXb3JrZmxvd3MgZm9yIGFkdmFuY2VkIGF1dG9tYXRpb24iLCJ3b3JrZmxvd3NfZm9yX2FkdmFuY2VkX2F1dG9tYXRpb25zX2ZlYXR1cmVfdGl0bGUiOiJXb3JrZmxvd3MgZm9yIGFkdmFuY2VkIGF1dG9tYXRpb25zIiwid29ya2Zsb3dzX2Zvcl9maW5fZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkFkZCBGaW4gdG8gc29waGlzdGljYXRlZCBXb3JrZmxvd3MgYXV0b21hdGlvbnMgdG8gdHJpYWdlLCBoYW5kbGUgY29tcGxleCBjdXN0b21lciBxdWVyaWVzIGFuZCBnZW5lcmF0ZSBhbnN3ZXJzIHdoZW4gY3VzdG9tZXJzIHRha2Ugc3BlY2lmaWMgYWN0aW9ucy4iLCJ3b3JrZmxvd3NfZm9yX2Zpbl9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiV29ya2Zsb3dzIGZvciBGaW4iLCJ3b3JrZmxvd3NfZm9yX2Zpbl9mZWF0dXJlX3RpdGxlIjoiV29ya2Zsb3dzIGZvciBGaW4iLCJ3b3JraW5nX29uX2l0IjoiV29ya2luZyBvbiBpdC4uLiIsIndvcmtsb2FkX21hbmFnZW1lbnRfZmVhdHVyZV9kZXNjcmlwdGlvbiI6IkFzc2lnbiB0aGUgbW9zdCBjcml0aWNhbCBjb252ZXJzYXRpb25zIGZyb20gdmFyaW91cyB0ZWFtIGluYm94ZXMgdG8gdGhlIG1vc3QgYXZhaWxhYmxlIGFuZCByZWxldmFudCB0ZWFtbWF0ZS4iLCJ3b3JrbG9hZF9tYW5hZ2VtZW50X2ZlYXR1cmVfc2hvcnRfdGl0bGUiOiJXb3JrbG9hZCBtYW5hZ2VtZW50Iiwid29ya2xvYWRfbWFuYWdlbWVudF9mZWF0dXJlX3RpdGxlIjoiV29ya2xvYWQgbWFuYWdlbWVudCIsIndvcmtzcGFjZV9zYW5kYm94X2ZlYXR1cmVfZGVzY3JpcHRpb24iOiJTYW5kYm94IHRvIHRlc3QgZmVhdHVyZXMgYW5kIHdvcmtmbG93cyB3aXRob3V0IGltcGFjdGluZyB0aGUgbGl2ZSB3b3Jrc3BhY2UuIiwid29ya3NwYWNlX3NhbmRib3hfZmVhdHVyZV9zaG9ydF90aXRsZSI6IldvcmtzcGFjZSBzYW5kYm94Iiwid29ya3NwYWNlX3NhbmRib3hfZmVhdHVyZV90aXRsZSI6IldvcmtzcGFjZSBzYW5kYm94Iiwid3JpdGVfeW91cl9tZXNzYWdlIjoiV3JpdGUgeW91ciBtZXNzYWdlLi4uIiwid3JpdHRlbl9ieSI6IldyaXR0ZW4gYnkiLCJ5b3UiOiJZb3UiLCJ5b3VfYXJlX2FsbF91cF90b19kYXRlIjoiWW91XCdyZSBhbGwgY2F1Z2h0IHVwISIsInlvdV9oYXZlX25ld19tZXNzYWdlcyI6IllvdSBoYXZlIG5ldyBtZXNzYWdlcy4iLCJ5b3VfcmF0ZWRfdGhlX2NvbnZlcnNhdGlvbiI6IllvdSByYXRlZCB0aGUgY29udmVyc2F0aW9uIiwieW91X3dpbGxfZ2V0X2FfcmVwbHlfaGVyZV9hbmRfYXRfZW1haWwiOiJZb3VcJ2xsIGdldCBhIHJlcGx5IGhlcmUgYW5kIGF0IHtlbWFpbH0iLCJ5b3VsbF9iZV9ub3RpZmllZF9oZXJlX2FuZF9ieV9lbWFpbCI6IllvdSB3aWxsIGJlIG5vdGlmaWVkIGhlcmUgYW5kIGJ5IGVtYWlsIiwieW91bGxfYmVfbm90aWZpZWRfaGVyZV9hbmRfYnlfc21zIjoiWW91XCdsbCBiZSBub3RpZmllZCBoZXJlIGFuZCBieSBTTVMiLCJ5b3VyX2NoZWNrbGlzdHMiOiJZb3VyIGNoZWNrbGlzdHMiLCJ5b3VyX2NvbnZlcnNhdGlvbnMiOiJZb3VyIGNvbnZlcnNhdGlvbnMiLCJ5b3VyX2VtYWlsIjoiWW91ciBlbWFpbCIsInlvdXJfbWVzc2FnZSI6IllvdXIgbWVzc2FnZSIsInlvdXJfcmVjZW50X2NvbnZlcnNhdGlvbnMiOiJSZWNlbnQgY29udmVyc2F0aW9ucyIsInlvdXJfcmVjZW50X21lc3NhZ2UiOiJSZWNlbnQgbWVzc2FnZSIsInlvdXJfcmVjZW50X21lc3NhZ2VzIjoiUmVjZW50IG1lc3NhZ2VzIiwieW91cl90aWNrZXQiOiJZb3VyIHRpY2tldCIsInplbmRlc2tfc3VwcG9ydF9pbnRlZ3JhdGlvbl9mZWF0dXJlX2Rlc2NyaXB0aW9uIjoiVmlldyBaZW5kZXNrIHRpY2tldHMgb3IgY3JlYXRlIG5ldyBvbmVzIHdpdGhvdXQgbGVhdmluZyB5b3VyIGluYm94LiIsInplbmRlc2tfc3VwcG9ydF9pbnRlZ3JhdGlvbl9mZWF0dXJlX3Nob3J0X3RpdGxlIjoiWmVuZGVzayBTdXBwb3J0IGludGVncmF0aW9uIiwiemVuZGVza19zdXBwb3J0X2ludGVncmF0aW9uX2ZlYXR1cmVfdGl0bGUiOiJaZW5kZXNrIFN1cHBvcnQgaW50ZWdyYXRpb24ifScpfX1dKTs="}},"time_used":268,"timings":{"blocked":0,"dns":2,"connect":9,"send":0,"wait":10,"receive":5,"ssl":241},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.tidio.co/widget-v4/1_447_0/static/js/chunk-WidgetIframe-c201a34ef1bfdb786fba.js","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.941Z","timestamp":1785145636941,"http_version":"HTTP/2","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":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"GET /widget-v4/1_447_0/static/js/chunk-WidgetIframe-c201a34ef1bfdb786fba.js HTTP/1.1\r\nHost: code.tidio.co\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: application/javascript\r\naccess-control-allow-origin: *\r\ncache-control: public, max-age=31536000, immutable\r\ncontent-encoding: gzip\r\netag: W/\"6a670aff-6a5f9\"\r\nlast-modified: Mon, 27 Jul 2026 07:38:39 GMT\r\nserver: cloudflare\r\nvary: Accept-Encoding\r\nage: 7431\r\ncf-cache-status: HIT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=pjExUwfXst13sd%2FLwb7jL6TzSzN8u0dsmsiKgpvnQNh9uBN02QTLHE9Tiw9yNebsp3VtsRRaXaVJfPPYC9CVYsYLcfxOMiBWbtGJrjaGkqMdbyRvDr6Wyxd7%2B%2FRi0NU%3D\"}]}\r\ncf-ray: a21ab8c6ed06723c-OSL\r\nX-Firefox-Spdy: h2\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"]}],"data":{"size":435705,"size_decoded":151070,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (65536), with no line terminators","md5":"f44f86c6dbadfb4a2ead495d28b3049b","sha1":"847cbc37e19884b2674bd542d0a0669246e87d78","sha256":"3a9fa94d8cb80a07be745de9bdd8174c384e37f087101d103863a949f6ae6825","sha512":"c585d358882ac1a52f03a4326114d519617faac69119470b07f0b9b697ff57952df2a34cf4c2b1205314c399efda697ec402380d16e50f1ec2b7436699096c9c","ssdeep":"12288:sr09SF4bvdyHry58wMERZtDCXUUCZ9IF2mHKP0j:z9SF4bvdyLkZkXUUCZ9IF2mHKP0j","tlshash":"1c946dc270537468bbe351ead4a75848767e340dba488478f6bcbce8158a4d85373fac","first_seen":"2026-07-27T07:44:11.917931Z","last_seen":"2026-07-27T10:17:04.972353Z","times_seen":9,"resource_available":true,"data":"IWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e30sdD0obmV3IGUuRXJyb3IpLnN0YWNrO3QmJihlLl9zZW50cnlEZWJ1Z0lkcz1lLl9zZW50cnlEZWJ1Z0lkc3x8e30sZS5fc2VudHJ5RGVidWdJZHNbdF09ImY4YTAxNWQwLTUwYjctNDE1Yi04MDJiLTA3YjcyMGU2NjFhNiIsZS5fc2VudHJ5RGVidWdJZElkZW50aWZpZXI9InNlbnRyeS1kYmlkLWY4YTAxNWQwLTUwYjctNDE1Yi04MDJiLTA3YjcyMGU2NjFhNiIpfWNhdGNoKGUpe319KCksZnVuY3Rpb24oKXt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2UuX3NlbnRyeU1vZHVsZU1ldGFkYXRhPWUuX3NlbnRyeU1vZHVsZU1ldGFkYXRhfHx7fSxmdW5jdGlvbigpe3ZhciB0LG49KG5ldyBlLkVycm9yKS5zdGFjayxpPWUuX3NlbnRyeU1vZHVsZU1ldGFkYXRhW25dfHx7fSxhPXsiX3NlbnRyeUJ1bmRsZXJQbHVnaW5BcHBLZXk6dGlkaW8tc2VudHJ5LXdpZGdldC1hcHAta2V5IjohMH0sbz17fTtmb3IodCBpbiBpKWkuaGFzT3duUHJvcGVydHkodCkmJihvW3RdPWlbdF0pO2Zvcih0IGluIGEpYS5oYXNPd25Qcm9wZXJ0eSh0KSYmKG9bdF09YVt0XSk7ZS5fc2VudHJ5TW9kdWxlTWV0YWRhdGFbbl09b30oKX0oKTt2YXIgX2dsb2JhbD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O19nbG9iYWwuU0VOVFJZX1JFTEVBU0U9e2lkOiIxLjQ0Ny4wIn0sKHNlbGYud2VicGFja0NodW5rdGlkaW9fd2lkZ2V0X3Y0PXNlbGYud2VicGFja0NodW5rdGlkaW9fd2lkZ2V0X3Y0fHxbXSkucHVzaChbWzk4N10sezEwMzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtSVjpmdW5jdGlvbigpe3JldHVybiBBfSxDUzpmdW5jdGlvbigpe3JldHVybiBLbn0sdG86ZnVuY3Rpb24oKXtyZXR1cm4gTW59LG4kOmZ1bmN0aW9uKCl7cmV0dXJuIFl0fSx6aDpmdW5jdGlvbigpe3JldHVybiBDbn0sVTI6ZnVuY3Rpb24oKXtyZXR1cm4gU259LHBuOmZ1bmN0aW9uKCl7cmV0dXJuIERufX0pO3ZhciBpPXgoKSxhPWU9PmgoZSxpKSxvPXgoKTthLndyaXRlPWU9PmgoZSxvKTt2YXIgcj14KCk7YS5vblN0YXJ0PWU9PmgoZSxyKTt2YXIgcz14KCk7YS5vbkZyYW1lPWU9PmgoZSxzKTt2YXIgbD14KCk7YS5vbkZpbmlzaD1lPT5oKGUsbCk7dmFyIGQ9W107YS5zZXRUaW1lb3V0PShlLHQpPT57Y29uc3Qgbj1hLm5vdygpK3QsaT0oKT0+e2NvbnN0IGU9ZC5maW5kSW5kZXgoZT0+ZS5jYW5jZWw9PWkpO35lJiZkLnNwbGljZShlLDEpLGYtPX5lPzE6MH0sbz17dGltZTpuLGhhbmRsZXI6ZSxjYW5jZWw6aX07cmV0dXJuIGQuc3BsaWNlKGMobiksMCxvKSxmKz0xLGcoKSxvfTt2YXIgYz1lPT5+KH5kLmZpbmRJbmRleCh0PT50LnRpbWU+ZSl8fH5kLmxlbmd0aCk7YS5jYW5jZWw9ZT0+e3IuZGVsZXRlKGUpLHMuZGVsZXRlKGUpLGwuZGVsZXRlKGUpLGkuZGVsZXRlKGUpLG8uZGVsZXRlKGUpfSxhLnN5bmM9ZT0+e209ITAsYS5iYXRjaGVkVXBkYXRlcyhlKSxtPSExfSxhLnRocm90dGxlPWU9PntsZXQgdDtmdW5jdGlvbiBuKCl7dHJ5e2UoLi4udCl9ZmluYWxseXt0PW51bGx9fWZ1bmN0aW9uIGkoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShlKSxvPTA7bzxlO28rKylpW29dPWFyZ3VtZW50c1tvXTt0PWksYS5vblN0YXJ0KG4pfXJldHVybiBpLmhhbmRsZXI9ZSxpLmNhbmNlbD0oKT0+e3IuZGVsZXRlKG4pLHQ9bnVsbH0saX07dmFyIHU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTooKT0+e307YS51c2U9ZT0+dT1lLGEubm93PSJ1bmRlZmluZWQiIT10eXBlb2YgcGVyZm9ybWFuY2U/KCk9PnBlcmZvcm1hbmNlLm5vdygpOkRhdGUubm93LGEuYmF0Y2hlZFVwZGF0ZXM9ZT0+ZSgpLGEuY2F0Y2g9Y29uc29sZS5lcnJvcixhLmZyYW1lTG9vcD0iYWx3YXlzIixhLmFkdmFuY2U9KCk9PnsiZGVtYW5kIiE9PWEuZnJhbWVMb29wP2NvbnNvbGUud2FybigiQ2Fubm90IGNhbGwgdGhlIG1hbnVhbCBhZHZhbmNlbWVudCBvZiByYWZ6IHdoaWxzdCBmcmFtZUxvb3AgaXMgbm90IHNldCBhcyBkZW1hbmQiKTp2KCl9O3ZhciBwPS0xLGY9MCxtPSExO2Z1bmN0aW9uIGgoZSx0KXttPyh0LmRlbGV0ZShlKSxlKDApKToodC5hZGQoZSksZygpKX1mdW5jdGlvbiBnKCl7cDwwJiYocD0wLCJkZW1hbmQiIT09YS5mcmFtZUxvb3AmJnUoYikpfWZ1bmN0aW9uIGIoKXt+cCYmKHUoYiksYS5iYXRjaGVkVXBkYXRlcyh2KSl9ZnVuY3Rpb24gdigpe2NvbnN0IGU9cDtwPWEubm93KCk7Y29uc3QgdD1jKHApO3QmJih5KGQuc3BsaWNlKDAsdCksZT0+ZS5oYW5kbGVyKCkpLGYtPXQpLGY/KHIuZmx1c2goKSxpLmZsdXNoKGU/TWF0aC5taW4oNjQscC1lKToxNi42NjcpLHMuZmx1c2goKSxvLmZsdXNoKCksbC5mbHVzaCgpKTpwPS0xfWZ1bmN0aW9uIHgoKXtsZXQgZT1uZXcgU2V0LHQ9ZTtyZXR1cm57YWRkKG4pe2YrPXQhPWV8fGUuaGFzKG4pPzA6MSxlLmFkZChuKX0sZGVsZXRlKG4pe3JldHVybiBmLT10PT1lJiZlLmhhcyhuKT8xOjAsZS5kZWxldGUobil9LGZsdXNoKG4pe3Quc2l6ZSYmKGU9bmV3IFNldCxmLT10LnNpemUseSh0LHQ9PnQobikmJmUuYWRkKHQpKSxmKz1lLnNpemUsdD1lKX19fWZ1bmN0aW9uIHkoZSx0KXtlLmZvckVhY2goZT0+e3RyeXt0KGUpfWNhdGNoKGUpe2EuY2F0Y2goZSl9fSl9dmFyIHc9bigzNDgwKSxrPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxBPXt9O2Z1bmN0aW9uIEMoKXt9KChlLHQpPT57Zm9yKHZhciBuIGluIHQpayhlLG4se2dldDp0W25dLGVudW1lcmFibGU6ITB9KX0pKEEse2Fzc2lnbjooKT0+UCxjb2xvcnM6KCk9Pk8sY3JlYXRlU3RyaW5nSW50ZXJwb2xhdG9yOigpPT5JLHNraXBBbmltYXRpb246KCk9PlIsdG86KCk9Pl8sd2lsbEFkdmFuY2U6KCk9Pmp9KTt2YXIgRT17YXJyOkFycmF5LmlzQXJyYXksb2JqOmU9PiEhZSYmIk9iamVjdCI9PT1lLmNvbnN0cnVjdG9yLm5hbWUsZnVuOmU9PiJmdW5jdGlvbiI9PXR5cGVvZiBlLHN0cjplPT4ic3RyaW5nIj09dHlwZW9mIGUsbnVtOmU9PiJudW1iZXIiPT10eXBlb2YgZSx1bmQ6ZT0+dm9pZCAwPT09ZX07ZnVuY3Rpb24gUyhlLHQpe2lmKEUuYXJyKGUpKXtpZighRS5hcnIodCl8fGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspaWYoZVtuXSE9PXRbbl0pcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIGU9PT10fXZhciBEPShlLHQpPT5lLmZvckVhY2godCk7ZnVuY3Rpb24gWShlLHQsbil7aWYoRS5hcnIoZSkpZm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspdC5jYWxsKG4sZVtpXSxgJHtpfWApO2Vsc2UgZm9yKGNvbnN0IGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiZ0LmNhbGwobixlW2ldLGkpfXZhciBUPWU9PkUudW5kKGUpP1tdOkUuYXJyKGUpP2U6W2VdO2Z1bmN0aW9uIEYoZSx0KXtpZihlLnNpemUpe2NvbnN0IG49QXJyYXkuZnJvbShlKTtlLmNsZWFyKCksRChuLHQpfX12YXIgSSxfLE09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodD4xP3QtMTowKSxpPTE7aTx0O2krKyluW2ktMV09YXJndW1lbnRzW2ldO3JldHVybiBGKGUsZT0+ZSguLi5uKSl9LE49KCk9PiJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93Lm5hdmlnYXRvcnx8L1NlcnZlclNpZGVSZW5kZXJpbmd8XkRlbm9cLy8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCksTz1udWxsLFI9ITEsaj1DLFA9ZT0+e2UudG8mJihfPWUudG8pLGUubm93JiYoYS5ub3c9ZS5ub3cpLHZvaWQgMCE9PWUuY29sb3JzJiYoTz1lLmNvbG9ycyksbnVsbCE9ZS5za2lwQW5pbWF0aW9uJiYoUj1lLnNraXBBbmltYXRpb24pLGUuY3JlYXRlU3RyaW5nSW50ZXJwb2xhdG9yJiYoST1lLmNyZWF0ZVN0cmluZ0ludGVycG9sYXRvciksZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUmJmEudXNlKGUucmVxdWVzdEFuaW1hdGlvbkZyYW1lKSxlLmJhdGNoZWRVcGRhdGVzJiYoYS5iYXRjaGVkVXBkYXRlcz1lLmJhdGNoZWRVcGRhdGVzKSxlLndpbGxBZHZhbmNlJiYoaj1lLndpbGxBZHZhbmNlKSxlLmZyYW1lTG9vcCYmKGEuZnJhbWVMb29wPWUuZnJhbWVMb29wKX0sej1uZXcgU2V0LEw9W10sVT1bXSxCPTAsSD17Z2V0IGlkbGUoKXtyZXR1cm4hei5zaXplJiYhTC5sZW5ndGh9LHN0YXJ0KGUpe0I+ZS5wcmlvcml0eT8oei5hZGQoZSksYS5vblN0YXJ0KHEpKTooVihlKSxhKFcpKX0sYWR2YW5jZTpXLHNvcnQoZSl7aWYoQilhLm9uRnJhbWUoKCk9Pkguc29ydChlKSk7ZWxzZXtjb25zdCB0PUwuaW5kZXhPZihlKTt+dCYmKEwuc3BsaWNlKHQsMSksJChlKSl9fSxjbGVhcigpe0w9W10sei5jbGVhcigpfX07ZnVuY3Rpb24gcSgpe3ouZm9yRWFjaChWKSx6LmNsZWFyKCksYShXKX1mdW5jdGlvbiBWKGUpe0wuaW5jbHVkZXMoZSl8fCQoZSl9ZnVuY3Rpb24gJChlKXtMLnNwbGljZShmdW5jdGlvbihlLHQpe2NvbnN0IG49ZS5maW5kSW5kZXgodCk7cmV0dXJuIG48MD9lLmxlbmd0aDpufShMLHQ9PnQucHJpb3JpdHk+ZS5wcmlvcml0eSksMCxlKX1mdW5jdGlvbiBXKGUpe2NvbnN0IHQ9VTtmb3IobGV0IG49MDtuPEwubGVuZ3RoO24rKyl7Y29uc3QgaT1MW25dO0I9aS5wcmlvcml0eSxpLmlkbGV8fChqKGkpLGkuYWR2YW5jZShlKSxpLmlkbGV8fHQucHVzaChpKSl9cmV0dXJuIEI9MCwoVT1MKS5sZW5ndGg9MCwoTD10KS5sZW5ndGg+MH12YXIgSz0iWy0rXT9cXGQqXFwuP1xcZCsiLEc9SysiJSI7ZnVuY3Rpb24gWCgpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiJcXChcXHMqKCIrdC5qb2luKCIpXFxzKixcXHMqKCIpKyIpXFxzKlxcKSJ9dmFyIFE9bmV3IFJlZ0V4cCgicmdiIitYKEssSyxLKSksWj1uZXcgUmVnRXhwKCJyZ2JhIitYKEssSyxLLEspKSxKPW5ldyBSZWdFeHAoImhzbCIrWChLLEcsRykpLGVlPW5ldyBSZWdFeHAoImhzbGEiK1goSyxHLEcsSykpLHRlPS9eIyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KSQvLG5lPS9eIyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkkLyxpZT0vXiMoWzAtOWEtZkEtRl17Nn0pJC8sYWU9L14jKFswLTlhLWZBLUZdezh9KSQvO2Z1bmN0aW9uIG9lKGUsdCxuKXtyZXR1cm4gbjwwJiYobis9MSksbj4xJiYobi09MSksbjwxLzY/ZSs2Kih0LWUpKm46bjwuNT90Om48Mi8zP2UrKHQtZSkqKDIvMy1uKSo2OmV9ZnVuY3Rpb24gcmUoZSx0LG4pe2NvbnN0IGk9bjwuNT9uKigxK3QpOm4rdC1uKnQsYT0yKm4taSxvPW9lKGEsaSxlKzEvMykscj1vZShhLGksZSkscz1vZShhLGksZS0xLzMpO3JldHVybiBNYXRoLnJvdW5kKDI1NSpvKTw8MjR8TWF0aC5yb3VuZCgyNTUqcik8PDE2fE1hdGgucm91bmQoMjU1KnMpPDw4fWZ1bmN0aW9uIHNlKGUpe2NvbnN0IHQ9cGFyc2VJbnQoZSwxMCk7cmV0dXJuIHQ8MD8wOnQ+MjU1PzI1NTp0fWZ1bmN0aW9uIGxlKGUpe3JldHVybihwYXJzZUZsb2F0KGUpJTM2MCszNjApJTM2MC8zNjB9ZnVuY3Rpb24gZGUoZSl7Y29uc3QgdD1wYXJzZUZsb2F0KGUpO3JldHVybiB0PDA/MDp0PjE/MjU1Ok1hdGgucm91bmQoMjU1KnQpfWZ1bmN0aW9uIGNlKGUpe2NvbnN0IHQ9cGFyc2VGbG9hdChlKTtyZXR1cm4gdDwwPzA6dD4xMDA/MTp0LzEwMH1mdW5jdGlvbiB1ZShlKXtsZXQgdD1mdW5jdGlvbihlKXtsZXQgdDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/ZT4+PjA9PT1lJiZlPj0wJiZlPD00Mjk0OTY3Mjk1P2U6bnVsbDoodD1pZS5leGVjKGUpKT9wYXJzZUludCh0WzFdKyJmZiIsMTYpPj4+MDpPJiZ2b2lkIDAhPT1PW2VdP09bZV06KHQ9US5leGVjKGUpKT8oc2UodFsxXSk8PDI0fHNlKHRbMl0pPDwxNnxzZSh0WzNdKTw8OHwyNTUpPj4+MDoodD1aLmV4ZWMoZSkpPyhzZSh0WzFdKTw8MjR8c2UodFsyXSk8PDE2fHNlKHRbM10pPDw4fGRlKHRbNF0pKT4+PjA6KHQ9dGUuZXhlYyhlKSk/cGFyc2VJbnQodFsxXSt0WzFdK3RbMl0rdFsyXSt0WzNdK3RbM10rImZmIiwxNik+Pj4wOih0PWFlLmV4ZWMoZSkpP3BhcnNlSW50KHRbMV0sMTYpPj4+MDoodD1uZS5leGVjKGUpKT9wYXJzZUludCh0WzFdK3RbMV0rdFsyXSt0WzJdK3RbM10rdFszXSt0WzRdK3RbNF0sMTYpPj4+MDoodD1KLmV4ZWMoZSkpPygyNTV8cmUobGUodFsxXSksY2UodFsyXSksY2UodFszXSkpKT4+PjA6KHQ9ZWUuZXhlYyhlKSk/KHJlKGxlKHRbMV0pLGNlKHRbMl0pLGNlKHRbM10pKXxkZSh0WzRdKSk+Pj4wOm51bGx9KGUpO2lmKG51bGw9PT10KXJldHVybiBlO3Q9dHx8MDtyZXR1cm5gcmdiYSgkeyg0Mjc4MTkwMDgwJnQpPj4+MjR9LCAkeygxNjcxMTY4MCZ0KT4+PjE2fSwgJHsoNjUyODAmdCk+Pj44fSwgJHsoMjU1JnQpLzI1NX0pYH12YXIgcGU9KGUsdCxuKT0+e2lmKEUuZnVuKGUpKXJldHVybiBlO2lmKEUuYXJyKGUpKXJldHVybiBwZSh7cmFuZ2U6ZSxvdXRwdXQ6dCxleHRyYXBvbGF0ZTpufSk7aWYoRS5zdHIoZS5vdXRwdXRbMF0pKXJldHVybiBJKGUpO2NvbnN0IGk9ZSxhPWkub3V0cHV0LG89aS5yYW5nZXx8WzAsMV0scj1pLmV4dHJhcG9sYXRlTGVmdHx8aS5leHRyYXBvbGF0ZXx8ImV4dGVuZCIscz1pLmV4dHJhcG9sYXRlUmlnaHR8fGkuZXh0cmFwb2xhdGV8fCJleHRlbmQiLGw9aS5lYXNpbmd8fChlPT5lKTtyZXR1cm4gZT0+e2NvbnN0IHQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MTtuPHQubGVuZ3RoLTEmJiEodFtuXT49ZSk7KytuKTtyZXR1cm4gbi0xfShlLG8pO3JldHVybiBmdW5jdGlvbihlLHQsbixpLGEsbyxyLHMsbCl7bGV0IGQ9bD9sKGUpOmU7aWYoZDx0KXtpZigiaWRlbnRpdHkiPT09cilyZXR1cm4gZDsiY2xhbXAiPT09ciYmKGQ9dCl9aWYoZD5uKXtpZigiaWRlbnRpdHkiPT09cylyZXR1cm4gZDsiY2xhbXAiPT09cyYmKGQ9bil9aWYoaT09PWEpcmV0dXJuIGk7aWYodD09PW4pcmV0dXJuIGU8PXQ/aTphO3Q9PT0tMS8wP2Q9LWQ6bj09PTEvMD9kLT10OmQ9KGQtdCkvKG4tdCk7ZD1vKGQpLGk9PT0tMS8wP2Q9LWQ6YT09PTEvMD9kKz1pOmQ9ZCooYS1pKStpO3JldHVybiBkfShlLG9bdF0sb1t0KzFdLGFbdF0sYVt0KzFdLGwscixzLGkubWFwKX19O3ZhciBmZT0xLjcwMTU4LG1lPTEuNTI1KmZlLGhlPWZlKzEsZ2U9MipNYXRoLlBJLzMsYmU9MipNYXRoLlBJLzQuNSx2ZT1lPT57Y29uc3QgdD03LjU2MjUsbj0yLjc1O3JldHVybiBlPDEvbj90KmUqZTplPDIvbj90KihlLT0xLjUvbikqZSsuNzU6ZTwyLjUvbj90KihlLT0yLjI1L24pKmUrLjkzNzU6dCooZS09Mi42MjUvbikqZSsuOTg0Mzc1fSx4ZT17bGluZWFyOmU9PmUsZWFzZUluUXVhZDplPT5lKmUsZWFzZU91dFF1YWQ6ZT0+MS0oMS1lKSooMS1lKSxlYXNlSW5PdXRRdWFkOmU9PmU8LjU/MiplKmU6MS1NYXRoLnBvdygtMiplKzIsMikvMixlYXNlSW5DdWJpYzplPT5lKmUqZSxlYXNlT3V0Q3ViaWM6ZT0+MS1NYXRoLnBvdygxLWUsMyksZWFzZUluT3V0Q3ViaWM6ZT0+ZTwuNT80KmUqZSplOjEtTWF0aC5wb3coLTIqZSsyLDMpLzIsZWFzZUluUXVhcnQ6ZT0+ZSplKmUqZSxlYXNlT3V0UXVhcnQ6ZT0+MS1NYXRoLnBvdygxLWUsNCksZWFzZUluT3V0UXVhcnQ6ZT0+ZTwuNT84KmUqZSplKmU6MS1NYXRoLnBvdygtMiplKzIsNCkvMixlYXNlSW5RdWludDplPT5lKmUqZSplKmUsZWFzZU91dFF1aW50OmU9PjEtTWF0aC5wb3coMS1lLDUpLGVhc2VJbk91dFF1aW50OmU9PmU8LjU/MTYqZSplKmUqZSplOjEtTWF0aC5wb3coLTIqZSsyLDUpLzIsZWFzZUluU2luZTplPT4xLU1hdGguY29zKGUqTWF0aC5QSS8yKSxlYXNlT3V0U2luZTplPT5NYXRoLnNpbihlKk1hdGguUEkvMiksZWFzZUluT3V0U2luZTplPT4tKE1hdGguY29zKE1hdGguUEkqZSktMSkvMixlYXNlSW5FeHBvOmU9PjA9PT1lPzA6TWF0aC5wb3coMiwxMCplLTEwKSxlYXNlT3V0RXhwbzplPT4xPT09ZT8xOjEtTWF0aC5wb3coMiwtMTAqZSksZWFzZUluT3V0RXhwbzplPT4wPT09ZT8wOjE9PT1lPzE6ZTwuNT9NYXRoLnBvdygyLDIwKmUtMTApLzI6KDItTWF0aC5wb3coMiwtMjAqZSsxMCkpLzIsZWFzZUluQ2lyYzplPT4xLU1hdGguc3FydCgxLU1hdGgucG93KGUsMikpLGVhc2VPdXRDaXJjOmU9Pk1hdGguc3FydCgxLU1hdGgucG93KGUtMSwyKSksZWFzZUluT3V0Q2lyYzplPT5lPC41PygxLU1hdGguc3FydCgxLU1hdGgucG93KDIqZSwyKSkpLzI6KE1hdGguc3FydCgxLU1hdGgucG93KC0yKmUrMiwyKSkrMSkvMixlYXNlSW5CYWNrOmU9PmhlKmUqZSplLWZlKmUqZSxlYXNlT3V0QmFjazplPT4xK2hlKk1hdGgucG93KGUtMSwzKStmZSpNYXRoLnBvdyhlLTEsMiksZWFzZUluT3V0QmFjazplPT5lPC41P01hdGgucG93KDIqZSwyKSooNy4xODk4MTkqZS1tZSkvMjooTWF0aC5wb3coMiplLTIsMikqKChtZSsxKSooMiplLTIpK21lKSsyKS8yLGVhc2VJbkVsYXN0aWM6ZT0+MD09PWU/MDoxPT09ZT8xOi1NYXRoLnBvdygyLDEwKmUtMTApKk1hdGguc2luKCgxMCplLTEwLjc1KSpnZSksZWFzZU91dEVsYXN0aWM6ZT0+MD09PWU/MDoxPT09ZT8xOk1hdGgucG93KDIsLTEwKmUpKk1hdGguc2luKCgxMCplLS43NSkqZ2UpKzEsZWFzZUluT3V0RWxhc3RpYzplPT4wPT09ZT8wOjE9PT1lPzE6ZTwuNT8tTWF0aC5wb3coMiwyMCplLTEwKSpNYXRoLnNpbigoMjAqZS0xMS4xMjUpKmJlKS8yOk1hdGgucG93KDIsLTIwKmUrMTApKk1hdGguc2luKCgyMCplLTExLjEyNSkqYmUpLzIrMSxlYXNlSW5Cb3VuY2U6ZT0+MS12ZSgxLWUpLGVhc2VPdXRCb3VuY2U6dmUsZWFzZUluT3V0Qm91bmNlOmU9PmU8LjU/KDEtdmUoMS0yKmUpKS8yOigxK3ZlKDIqZS0xKSkvMixzdGVwczpmdW5jdGlvbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ImVuZCI7cmV0dXJuIG49Pntjb25zdCBpPShuPSJlbmQiPT09dD9NYXRoLm1pbihuLC45OTkpOk1hdGgubWF4KG4sLjAwMSkpKmUsYT0iZW5kIj09PXQ/TWF0aC5mbG9vcihpKTpNYXRoLmNlaWwoaSk7cmV0dXJuIG89MCxyPTEscz1hL2UsTWF0aC5taW4oTWF0aC5tYXgocyxvKSxyKTt2YXIgbyxyLHN9fX0seWU9U3ltYm9sLmZvcigiRmx1aWRWYWx1ZS5nZXQiKSx3ZT1TeW1ib2wuZm9yKCJGbHVpZFZhbHVlLm9ic2VydmVycyIpLGtlPWU9PkJvb2xlYW4oZSYmZVt5ZV0pLEFlPWU9PmUmJmVbeWVdP2VbeWVdKCk6ZSxDZT1lPT5lW3dlXXx8bnVsbDtmdW5jdGlvbiBFZShlLHQpe2NvbnN0IG49ZVt3ZV07biYmbi5mb3JFYWNoKGU9PnshZnVuY3Rpb24oZSx0KXtlLmV2ZW50T2JzZXJ2ZWQ/ZS5ldmVudE9ic2VydmVkKHQpOmUodCl9KGUsdCl9KX12YXIgU2U9Y2xhc3N7Y29uc3RydWN0b3IoZSl7aWYoIWUmJiEoZT10aGlzLmdldCkpdGhyb3cgRXJyb3IoIlVua25vd24gZ2V0dGVyIik7RGUodGhpcyxlKX19LERlPShlLHQpPT5JZShlLHllLHQpO2Z1bmN0aW9uIFllKGUsdCl7aWYoZVt5ZV0pe2xldCBuPWVbd2VdO258fEllKGUsd2Usbj1uZXcgU2V0KSxuLmhhcyh0KXx8KG4uYWRkKHQpLGUub2JzZXJ2ZXJBZGRlZCYmZS5vYnNlcnZlckFkZGVkKG4uc2l6ZSx0KSl9cmV0dXJuIHR9ZnVuY3Rpb24gVGUoZSx0KXtjb25zdCBuPWVbd2VdO2lmKG4mJm4uaGFzKHQpKXtjb25zdCBpPW4uc2l6ZS0xO2k/bi5kZWxldGUodCk6ZVt3ZV09bnVsbCxlLm9ic2VydmVyUmVtb3ZlZCYmZS5vYnNlcnZlclJlbW92ZWQoaSx0KX19dmFyIEZlLEllPShlLHQsbik9Pk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksX2U9L1srXC1dPyg/OjB8WzEtOV1cZCopKD86XC5cZCopPyg/OltlRV1bK1wtXT9cZCspPy9nLE1lPS8oIyg/OlswLTlhLWZdezJ9KXsyLDR9fCgjWzAtOWEtZl17M30pfChyZ2J8aHNsKWE/XCgoLT9cZCslP1ssXHNdKyl7MiwzfVxzKltcZFwuXSslP1wpKS9naSxOZT1uZXcgUmVnRXhwKGAoJHtfZS5zb3VyY2V9KSglfFthLXpdKylgLCJpIiksT2U9L3JnYmFcKChbMC05XC4tXSspLCAoWzAtOVwuLV0rKSwgKFswLTlcLi1dKyksIChbMC05XC4tXSspXCkvZ2ksUmU9L3ZhclwoKC0tW2EtekEtWjAtOS1fXSspLD8gPyhbYS16QS1aMC05ICgpJSMuLC1dKyk/XCkvLGplPWU9Pntjb25zdFt0LG5dPVBlKGUpO2lmKCF0fHxOKCkpcmV0dXJuIGU7Y29uc3QgaT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUodCk7aWYoaSlyZXR1cm4gaS50cmltKCk7aWYobiYmbi5zdGFydHNXaXRoKCItLSIpKXtjb25zdCB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShuKTtyZXR1cm4gdHx8ZX1yZXR1cm4gbiYmUmUudGVzdChuKT9qZShuKTpufHxlfSxQZT1lPT57Y29uc3QgdD1SZS5leGVjKGUpO2lmKCF0KXJldHVyblssXTtjb25zdFssbixpXT10O3JldHVybltuLGldfSx6ZT0oZSx0LG4saSxhKT0+YHJnYmEoJHtNYXRoLnJvdW5kKHQpfSwgJHtNYXRoLnJvdW5kKG4pfSwgJHtNYXRoLnJvdW5kKGkpfSwgJHthfSlgLExlPWU9PntGZXx8KEZlPU8/bmV3IFJlZ0V4cChgKCR7T2JqZWN0LmtleXMoTykuam9pbigifCIpfSkoPyFcXHcpYCwiZyIpOi9eXGIkLyk7Y29uc3QgdD1lLm91dHB1dC5tYXAoZT0+QWUoZSkucmVwbGFjZShSZSxqZSkucmVwbGFjZShNZSx1ZSkucmVwbGFjZShGZSx1ZSkpLG49dC5tYXAoZT0+ZS5tYXRjaChfZSkubWFwKE51bWJlcikpLGk9blswXS5tYXAoKGUsdCk9Pm4ubWFwKGU9PntpZighKHQgaW4gZSkpdGhyb3cgRXJyb3IoJ1RoZSBhcml0eSBvZiBlYWNoICJvdXRwdXQiIHZhbHVlIG11c3QgYmUgZXF1YWwnKTtyZXR1cm4gZVt0XX0pKS5tYXAodD0+cGUoey4uLmUsb3V0cHV0OnR9KSk7cmV0dXJuIGU9Pntjb25zdCBuPSFOZS50ZXN0KHRbMF0pJiZ0LmZpbmQoZT0+TmUudGVzdChlKSk/LnJlcGxhY2UoX2UsIiIpO2xldCBhPTA7cmV0dXJuIHRbMF0ucmVwbGFjZShfZSwoKT0+YCR7aVthKytdKGUpfSR7bnx8IiJ9YCkucmVwbGFjZShPZSx6ZSl9fSxVZT0icmVhY3Qtc3ByaW5nOiAiLEJlPWU9Pntjb25zdCB0PWU7bGV0IG49ITE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtVZX1vbmNlIHJlcXVpcmVzIGEgZnVuY3Rpb24gcGFyYW1ldGVyYCk7cmV0dXJuIGZ1bmN0aW9uKCl7bnx8KHQoLi4uYXJndW1lbnRzKSxuPSEwKX19LEhlPUJlKGNvbnNvbGUud2Fybik7dmFyIHFlPUJlKGNvbnNvbGUud2Fybik7ZnVuY3Rpb24gVmUoZSl7cmV0dXJuIEUuc3RyKGUpJiYoIiMiPT1lWzBdfHwvXGQvLnRlc3QoZSl8fCFOKCkmJlJlLnRlc3QoZSl8fGUgaW4oT3x8e30pKX12YXIgJGU9TigpP3cudXNlRWZmZWN0OncudXNlTGF5b3V0RWZmZWN0LFdlPSgpPT57Y29uc3QgZT0oMCx3LnVzZVJlZikoITEpO3JldHVybiAkZSgoKT0+KGUuY3VycmVudD0hMCwoKT0+e2UuY3VycmVudD0hMX0pLFtdKSxlfTtmdW5jdGlvbiBLZSgpe2NvbnN0IGU9KDAsdy51c2VTdGF0ZSkoKVsxXSx0PVdlKCk7cmV0dXJuKCk9Pnt0LmN1cnJlbnQmJmUoTWF0aC5yYW5kb20oKSl9fXZhciBHZT1lPT4oMCx3LnVzZUVmZmVjdCkoZSxYZSksWGU9W107ZnVuY3Rpb24gUWUoZSl7Y29uc3QgdD0oMCx3LnVzZVJlZikoKTtyZXR1cm4oMCx3LnVzZUVmZmVjdCkoKCk9Pnt0LmN1cnJlbnQ9ZX0pLHQuY3VycmVudH12YXIgWmU9U3ltYm9sLmZvcigiQW5pbWF0ZWQ6bm9kZSIpLEplPWU9PmUmJmVbWmVdLGV0PShlLHQpPT57cmV0dXJuIG49ZSxpPVplLGE9dCxPYmplY3QuZGVmaW5lUHJvcGVydHkobixpLHt2YWx1ZTphLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pO3ZhciBuLGksYX0sdHQ9ZT0+ZSYmZVtaZV0mJmVbWmVdLmdldFBheWxvYWQoKSxudD1jbGFzc3tjb25zdHJ1Y3Rvcigpe2V0KHRoaXMsdGhpcyl9Z2V0UGF5bG9hZCgpe3JldHVybiB0aGlzLnBheWxvYWR8fFtdfX0saXQ9Y2xhc3MgZXh0ZW5kcyBudHtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuX3ZhbHVlPWUsdGhpcy5kb25lPSEwLHRoaXMuZHVyYXRpb25Qcm9ncmVzcz0wLEUubnVtKHRoaXMuX3ZhbHVlKSYmKHRoaXMubGFzdFBvc2l0aW9uPXRoaXMuX3ZhbHVlKX1zdGF0aWMgY3JlYXRlKGUpe3JldHVybiBuZXcgaXQoZSl9Z2V0UGF5bG9hZCgpe3JldHVyblt0aGlzXX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX1zZXRWYWx1ZShlLHQpe3JldHVybiBFLm51bShlKSYmKHRoaXMubGFzdFBvc2l0aW9uPWUsdCYmKGU9TWF0aC5yb3VuZChlL3QpKnQsdGhpcy5kb25lJiYodGhpcy5sYXN0UG9zaXRpb249ZSkpKSx0aGlzLl92YWx1ZSE9PWUmJih0aGlzLl92YWx1ZT1lLCEwKX1yZXNldCgpe2NvbnN0e2RvbmU6ZX09dGhpczt0aGlzLmRvbmU9ITEsRS5udW0odGhpcy5fdmFsdWUpJiYodGhpcy5lbGFwc2VkVGltZT0wLHRoaXMuZHVyYXRpb25Qcm9ncmVzcz0wLHRoaXMubGFzdFBvc2l0aW9uPXRoaXMuX3ZhbHVlLGUmJih0aGlzLmxhc3RWZWxvY2l0eT1udWxsKSx0aGlzLnYwPW51bGwpfX0sYXQ9Y2xhc3MgZXh0ZW5kcyBpdHtjb25zdHJ1Y3RvcihlKXtzdXBlcigwKSx0aGlzLl9zdHJpbmc9bnVsbCx0aGlzLl90b1N0cmluZz1wZSh7b3V0cHV0OltlLGVdfSl9c3RhdGljIGNyZWF0ZShlKXtyZXR1cm4gbmV3IGF0KGUpfWdldFZhbHVlKCl7Y29uc3QgZT10aGlzLl9zdHJpbmc7cmV0dXJuIG51bGw9PWU/dGhpcy5fc3RyaW5nPXRoaXMuX3RvU3RyaW5nKHRoaXMuX3ZhbHVlKTplfXNldFZhbHVlKGUpe2lmKEUuc3RyKGUpKXtpZihlPT10aGlzLl9zdHJpbmcpcmV0dXJuITE7dGhpcy5fc3RyaW5nPWUsdGhpcy5fdmFsdWU9MX1lbHNle2lmKCFzdXBlci5zZXRWYWx1ZShlKSlyZXR1cm4hMTt0aGlzLl9zdHJpbmc9bnVsbH1yZXR1cm4hMH1yZXNldChlKXtlJiYodGhpcy5fdG9TdHJpbmc9cGUoe291dHB1dDpbdGhpcy5nZXRWYWx1ZSgpLGVdfSkpLHRoaXMuX3ZhbHVlPTAsc3VwZXIucmVzZXQoKX19LG90PXtkZXBlbmRlbmNpZXM6bnVsbH0scnQ9Y2xhc3MgZXh0ZW5kcyBudHtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuc291cmNlPWUsdGhpcy5zZXRWYWx1ZShlKX1nZXRWYWx1ZShlKXtjb25zdCB0PXt9O3JldHVybiBZKHRoaXMuc291cmNlLChuLGkpPT57dmFyIGE7KGE9bikmJmFbWmVdPT09YT90W2ldPW4uZ2V0VmFsdWUoZSk6a2Uobik/dFtpXT1BZShuKTplfHwodFtpXT1uKX0pLHR9c2V0VmFsdWUoZSl7dGhpcy5zb3VyY2U9ZSx0aGlzLnBheWxvYWQ9dGhpcy5fbWFrZVBheWxvYWQoZSl9cmVzZXQoKXt0aGlzLnBheWxvYWQmJkQodGhpcy5wYXlsb2FkLGU9PmUucmVzZXQoKSl9X21ha2VQYXlsb2FkKGUpe2lmKGUpe2NvbnN0IHQ9bmV3IFNldDtyZXR1cm4gWShlLHRoaXMuX2FkZFRvUGF5bG9hZCx0KSxBcnJheS5mcm9tKHQpfX1fYWRkVG9QYXlsb2FkKGUpe290LmRlcGVuZGVuY2llcyYma2UoZSkmJm90LmRlcGVuZGVuY2llcy5hZGQoZSk7Y29uc3QgdD10dChlKTt0JiZEKHQsZT0+dGhpcy5hZGQoZSkpfX0sc3Q9Y2xhc3MgZXh0ZW5kcyBydHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKX1zdGF0aWMgY3JlYXRlKGUpe3JldHVybiBuZXcgc3QoZSl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5zb3VyY2UubWFwKGU9PmUuZ2V0VmFsdWUoKSl9c2V0VmFsdWUoZSl7Y29uc3QgdD10aGlzLmdldFBheWxvYWQoKTtyZXR1cm4gZS5sZW5ndGg9PXQubGVuZ3RoP3QubWFwKCh0LG4pPT50LnNldFZhbHVlKGVbbl0pKS5zb21lKEJvb2xlYW4pOihzdXBlci5zZXRWYWx1ZShlLm1hcChsdCkpLCEwKX19O2Z1bmN0aW9uIGx0KGUpe3JldHVybihWZShlKT9hdDppdCkuY3JlYXRlKGUpfWZ1bmN0aW9uIGR0KGUpe2NvbnN0IHQ9SmUoZSk7cmV0dXJuIHQ/dC5jb25zdHJ1Y3RvcjpFLmFycihlKT9zdDpWZShlKT9hdDppdH12YXIgY3Q9KGUsdCk9Pntjb25zdCBuPSFFLmZ1bihlKXx8ZS5wcm90b3R5cGUmJmUucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ7cmV0dXJuKDAsdy5mb3J3YXJkUmVmKSgoaSxvKT0+e2NvbnN0IHI9KDAsdy51c2VSZWYpKG51bGwpLHM9biYmKDAsdy51c2VDYWxsYmFjaykoZT0+e3IuY3VycmVudD1mdW5jdGlvbihlLHQpe2UmJihFLmZ1bihlKT9lKHQpOmUuY3VycmVudD10KTtyZXR1cm4gdH0obyxlKX0sW29dKSxbbCxkXT1mdW5jdGlvbihlLHQpe2NvbnN0IG49bmV3IFNldDtvdC5kZXBlbmRlbmNpZXM9bixlLnN0eWxlJiYoZT17Li4uZSxzdHlsZTp0LmNyZWF0ZUFuaW1hdGVkU3R5bGUoZS5zdHlsZSl9KTtyZXR1cm4gZT1uZXcgcnQoZSksb3QuZGVwZW5kZW5jaWVzPW51bGwsW2Usbl19KGksdCksYz1LZSgpLHU9KCk9Pntjb25zdCBlPXIuY3VycmVudDtpZihuJiYhZSlyZXR1cm47ITE9PT0oISFlJiZ0LmFwcGx5QW5pbWF0ZWRWYWx1ZXMoZSxsLmdldFZhbHVlKCEwKSkpJiZjKCl9LHA9bmV3IHV0KHUsZCksZj0oMCx3LnVzZVJlZikoKTskZSgoKT0+KGYuY3VycmVudD1wLEQoZCxlPT5ZZShlLHApKSwoKT0+e2YuY3VycmVudCYmKEQoZi5jdXJyZW50LmRlcHMsZT0+VGUoZSxmLmN1cnJlbnQpKSxhLmNhbmNlbChmLmN1cnJlbnQudXBkYXRlKSl9KSksKDAsdy51c2VFZmZlY3QpKHUsW10pLEdlKCgpPT4oKT0+e2NvbnN0IGU9Zi5jdXJyZW50O0QoZS5kZXBzLHQ9PlRlKHQsZSkpfSk7Y29uc3QgbT10LmdldENvbXBvbmVudFByb3BzKGwuZ2V0VmFsdWUoKSk7cmV0dXJuIHcuY3JlYXRlRWxlbWVudChlLHsuLi5tLHJlZjpzfSl9KX0sdXQ9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnVwZGF0ZT1lLHRoaXMuZGVwcz10fWV2ZW50T2JzZXJ2ZWQoZSl7ImNoYW5nZSI9PWUudHlwZSYmYS53cml0ZSh0aGlzLnVwZGF0ZSl9fTt2YXIgcHQ9U3ltYm9sLmZvcigiQW5pbWF0ZWRDb21wb25lbnQiKSxmdD1lPT5FLnN0cihlKT9lOmUmJkUuc3RyKGUuZGlzcGxheU5hbWUpP2UuZGlzcGxheU5hbWU6RS5mdW4oZSkmJmUubmFtZXx8bnVsbDtmdW5jdGlvbiBtdChlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0PjE/dC0xOjApLGk9MTtpPHQ7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIEUuZnVuKGUpP2UoLi4ubik6ZX12YXIgaHQ9KGUsdCk9PiEwPT09ZXx8ISEodCYmZSYmKEUuZnVuKGUpP2UodCk6VChlKS5pbmNsdWRlcyh0KSkpLGd0PShlLHQpPT5FLm9iaihlKT90JiZlW3RdOmUsYnQ9KGUsdCk9PiEwPT09ZS5kZWZhdWx0P2VbdF06ZS5kZWZhdWx0P2UuZGVmYXVsdFt0XTp2b2lkIDAsdnQ9ZT0+ZSx4dD1mdW5jdGlvbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dnQsbj15dDtlLmRlZmF1bHQmJiEwIT09ZS5kZWZhdWx0JiYoZT1lLmRlZmF1bHQsbj1PYmplY3Qua2V5cyhlKSk7Y29uc3QgaT17fTtmb3IoY29uc3QgYSBvZiBuKXtjb25zdCBuPXQoZVthXSxhKTtFLnVuZChuKXx8KGlbYV09bil9cmV0dXJuIGl9LHl0PVsiY29uZmlnIiwib25Qcm9wcyIsIm9uU3RhcnQiLCJvbkNoYW5nZSIsIm9uUGF1c2UiLCJvblJlc3VtZSIsIm9uUmVzdCJdLHd0PXtjb25maWc6MSxmcm9tOjEsdG86MSxyZWY6MSxsb29wOjEscmVzZXQ6MSxwYXVzZToxLGNhbmNlbDoxLHJldmVyc2U6MSxpbW1lZGlhdGU6MSxkZWZhdWx0OjEsZGVsYXk6MSxvblByb3BzOjEsb25TdGFydDoxLG9uQ2hhbmdlOjEsb25QYXVzZToxLG9uUmVzdW1lOjEsb25SZXN0OjEsb25SZXNvbHZlOjEsaXRlbXM6MSx0cmFpbDoxLHNvcnQ6MSxleHBpcmVzOjEsaW5pdGlhbDoxLGVudGVyOjEsdXBkYXRlOjEsbGVhdmU6MSxjaGlsZHJlbjoxLG9uRGVzdHJveWVkOjEsa2V5czoxLGNhbGxJZDoxLHBhcmVudElkOjF9O2Z1bmN0aW9uIGt0KGUpe2NvbnN0IHQ9ZnVuY3Rpb24oZSl7Y29uc3QgdD17fTtsZXQgbj0wO2lmKFkoZSwoZSxpKT0+e3d0W2ldfHwodFtpXT1lLG4rKyl9KSxuKXJldHVybiB0fShlKTtpZih0KXtjb25zdCBuPXt0bzp0fTtyZXR1cm4gWShlLChlLGkpPT5pIGluIHR8fChuW2ldPWUpKSxufXJldHVybnsuLi5lfX1mdW5jdGlvbiBBdChlKXtyZXR1cm4gZT1BZShlKSxFLmFycihlKT9lLm1hcChBdCk6VmUoZSk/QS5jcmVhdGVTdHJpbmdJbnRlcnBvbGF0b3Ioe3JhbmdlOlswLDFdLG91dHB1dDpbZSxlXX0pKDEpOmV9ZnVuY3Rpb24gQ3QoZSl7Zm9yKGNvbnN0IHQgaW4gZSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBFdChlKXtyZXR1cm4gRS5mdW4oZSl8fEUuYXJyKGUpJiZFLm9iaihlWzBdKX1mdW5jdGlvbiBTdChlLHQpe2UucmVmPy5kZWxldGUoZSksdD8uZGVsZXRlKGUpfWZ1bmN0aW9uIER0KGUsdCl7dCYmZS5yZWYhPT10JiYoZS5yZWY/LmRlbGV0ZShlKSx0LmFkZChlKSxlLnJlZj10KX1mdW5jdGlvbiBZdChlLHQpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxZTM7JGUoKCk9PntpZih0KXtsZXQgaT0wO0QoZSwoZSxhKT0+e2NvbnN0IG89ZS5jdXJyZW50O2lmKG8ubGVuZ3RoKXtsZXQgcj1uKnRbYV07aXNOYU4ocik/cj1pOmk9cixEKG8sZT0+e0QoZS5xdWV1ZSxlPT57Y29uc3QgdD1lLmRlbGF5O2UuZGVsYXk9ZT0+cittdCh0fHwwLGUpfSl9KSxlLnN0YXJ0KCl9fSl9ZWxzZXtsZXQgdD1Qcm9taXNlLnJlc29sdmUoKTtEKGUsZT0+e2NvbnN0IG49ZS5jdXJyZW50O2lmKG4ubGVuZ3RoKXtjb25zdCBpPW4ubWFwKGU9Pntjb25zdCB0PWUucXVldWU7cmV0dXJuIGUucXVldWU9W10sdH0pO3Q9dC50aGVuKCgpPT4oRChuLChlLHQpPT5EKGlbdF18fFtdLHQ9PmUucXVldWUucHVzaCh0KSkpLFByb21pc2UuYWxsKGUuc3RhcnQoKSkpKX19KX19KX12YXIgVHQ9e3RlbnNpb246MTcwLGZyaWN0aW9uOjI2LG1hc3M6MSxkYW1waW5nOjEsZWFzaW5nOnhlLmxpbmVhcixjbGFtcDohMX0sRnQ9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnZlbG9jaXR5PTAsT2JqZWN0LmFzc2lnbih0aGlzLFR0KX19O2Z1bmN0aW9uIEl0KGUsdCl7aWYoRS51bmQodC5kZWNheSkpe2NvbnN0IG49IUUudW5kKHQudGVuc2lvbil8fCFFLnVuZCh0LmZyaWN0aW9uKTshbiYmRS51bmQodC5mcmVxdWVuY3kpJiZFLnVuZCh0LmRhbXBpbmcpJiZFLnVuZCh0Lm1hc3MpfHwoZS5kdXJhdGlvbj12b2lkIDAsZS5kZWNheT12b2lkIDApLG4mJihlLmZyZXF1ZW5jeT12b2lkIDApfWVsc2UgZS5kdXJhdGlvbj12b2lkIDB9dmFyIF90PVtdLE10PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5jaGFuZ2VkPSExLHRoaXMudmFsdWVzPV90LHRoaXMudG9WYWx1ZXM9bnVsbCx0aGlzLmZyb21WYWx1ZXM9X3QsdGhpcy5jb25maWc9bmV3IEZ0LHRoaXMuaW1tZWRpYXRlPSExfX07ZnVuY3Rpb24gTnQoZSx0KXtsZXR7a2V5Om4scHJvcHM6aSxkZWZhdWx0UHJvcHM6byxzdGF0ZTpyLGFjdGlvbnM6c309dDtyZXR1cm4gbmV3IFByb21pc2UoKHQsbCk9PntsZXQgZCxjLHU9aHQoaS5jYW5jZWw/P28/LmNhbmNlbCxuKTtpZih1KW0oKTtlbHNle0UudW5kKGkucGF1c2UpfHwoci5wYXVzZWQ9aHQoaS5wYXVzZSxuKSk7bGV0IGU9bz8ucGF1c2U7ITAhPT1lJiYoZT1yLnBhdXNlZHx8aHQoZSxuKSksZD1tdChpLmRlbGF5fHwwLG4pLGU/KHIucmVzdW1lUXVldWUuYWRkKGYpLHMucGF1c2UoKSk6KHMucmVzdW1lKCksZigpKX1mdW5jdGlvbiBwKCl7ci5yZXN1bWVRdWV1ZS5hZGQoZiksci50aW1lb3V0cy5kZWxldGUoYyksYy5jYW5jZWwoKSxkPWMudGltZS1hLm5vdygpfWZ1bmN0aW9uIGYoKXtkPjAmJiFBLnNraXBBbmltYXRpb24/KHIuZGVsYXllZD0hMCxjPWEuc2V0VGltZW91dChtLGQpLHIucGF1c2VRdWV1ZS5hZGQocCksci50aW1lb3V0cy5hZGQoYykpOm0oKX1mdW5jdGlvbiBtKCl7ci5kZWxheWVkJiYoci5kZWxheWVkPSExKSxyLnBhdXNlUXVldWUuZGVsZXRlKHApLHIudGltZW91dHMuZGVsZXRlKGMpLGU8PShyLmNhbmNlbElkfHwwKSYmKHU9ITApO3RyeXtzLnN0YXJ0KHsuLi5pLGNhbGxJZDplLGNhbmNlbDp1fSx0KX1jYXRjaChlKXtsKGUpfX19KX12YXIgT3Q9KGUsdCk9PjE9PXQubGVuZ3RoP3RbMF06dC5zb21lKGU9PmUuY2FuY2VsbGVkKT9QdChlLmdldCgpKTp0LmV2ZXJ5KGU9PmUubm9vcCk/UnQoZS5nZXQoKSk6anQoZS5nZXQoKSx0LmV2ZXJ5KGU9PmUuZmluaXNoZWQpKSxSdD1lPT4oe3ZhbHVlOmUsbm9vcDohMCxmaW5pc2hlZDohMCxjYW5jZWxsZWQ6ITF9KSxqdD1mdW5jdGlvbihlLHQpe3JldHVybnt2YWx1ZTplLGZpbmlzaGVkOnQsY2FuY2VsbGVkOmFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl19fSxQdD1lPT4oe3ZhbHVlOmUsY2FuY2VsbGVkOiEwLGZpbmlzaGVkOiExfSk7ZnVuY3Rpb24genQoZSx0LG4saSl7Y29uc3R7Y2FsbElkOm8scGFyZW50SWQ6cixvblJlc3Q6c309dCx7YXN5bmNUbzpsLHByb21pc2U6ZH09bjtyZXR1cm4gcnx8ZSE9PWx8fHQucmVzZXQ/bi5wcm9taXNlPShhc3luYygpPT57bi5hc3luY0lkPW8sbi5hc3luY1RvPWU7Y29uc3QgYz14dCh0LChlLHQpPT4ib25SZXN0Ij09PXQ/dm9pZCAwOmUpO2xldCB1LHA7Y29uc3QgZj1uZXcgUHJvbWlzZSgoZSx0KT0+KHU9ZSxwPXQpKSxtPWU9Pntjb25zdCB0PW88PShuLmNhbmNlbElkfHwwKSYmUHQoaSl8fG8hPT1uLmFzeW5jSWQmJmp0KGksITEpO2lmKHQpdGhyb3cgZS5yZXN1bHQ9dCxwKGUpLGV9LGg9KGUsdCk9Pntjb25zdCBhPW5ldyBVdCxyPW5ldyBCdDtyZXR1cm4oYXN5bmMoKT0+e2lmKEEuc2tpcEFuaW1hdGlvbil0aHJvdyBMdChuKSxyLnJlc3VsdD1qdChpLCExKSxwKHIpLHI7bShhKTtjb25zdCBzPUUub2JqKGUpP3suLi5lfTp7Li4udCx0bzplfTtzLnBhcmVudElkPW8sWShjLChlLHQpPT57RS51bmQoc1t0XSkmJihzW3RdPWUpfSk7Y29uc3QgbD1hd2FpdCBpLnN0YXJ0KHMpO3JldHVybiBtKGEpLG4ucGF1c2VkJiZhd2FpdCBuZXcgUHJvbWlzZShlPT57bi5yZXN1bWVRdWV1ZS5hZGQoZSl9KSxsfSkoKX07bGV0IGc7aWYoQS5za2lwQW5pbWF0aW9uKXJldHVybiBMdChuKSxqdChpLCExKTt0cnl7bGV0IHQ7dD1FLmFycihlKT8oYXN5bmMgZT0+e2Zvcihjb25zdCB0IG9mIGUpYXdhaXQgaCh0KX0pKGUpOlByb21pc2UucmVzb2x2ZShlKGgsaS5zdG9wLmJpbmQoaSkpKSxhd2FpdCBQcm9taXNlLmFsbChbdC50aGVuKHUpLGZdKSxnPWp0KGkuZ2V0KCksITAsITEpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBVdClnPWUucmVzdWx0O2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgQnQpKXRocm93IGU7Zz1lLnJlc3VsdH19ZmluYWxseXtvPT1uLmFzeW5jSWQmJihuLmFzeW5jSWQ9cixuLmFzeW5jVG89cj9sOnZvaWQgMCxuLnByb21pc2U9cj9kOnZvaWQgMCl9cmV0dXJuIEUuZnVuKHMpJiZhLmJhdGNoZWRVcGRhdGVzKCgpPT57cyhnLGksaS5pdGVtKX0pLGd9KSgpOmR9ZnVuY3Rpb24gTHQoZSx0KXtGKGUudGltZW91dHMsZT0+ZS5jYW5jZWwoKSksZS5wYXVzZVF1ZXVlLmNsZWFyKCksZS5yZXN1bWVRdWV1ZS5jbGVhcigpLGUuYXN5bmNJZD1lLmFzeW5jVG89ZS5wcm9taXNlPXZvaWQgMCx0JiYoZS5jYW5jZWxJZD10KX12YXIgVXQ9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJBbiBhc3luYyBhbmltYXRpb24gaGFzIGJlZW4gaW50ZXJydXB0ZWQuIFlvdSBzZWUgdGhpcyBlcnJvciBiZWNhdXNlIHlvdSBmb3Jnb3QgdG8gdXNlIGBhd2FpdGAgb3IgYC5jYXRjaCguLi4pYCBvbiBpdHMgcmV0dXJuZWQgcHJvbWlzZS4iKX19LEJ0PWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiU2tpcEFuaW1hdGlvblNpZ25hbCIpfX0sSHQ9ZT0+ZSBpbnN0YW5jZW9mIFZ0LHF0PTEsVnQ9Y2xhc3MgZXh0ZW5kcyBTZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pZD1xdCsrLHRoaXMuX3ByaW9yaXR5PTB9Z2V0IHByaW9yaXR5KCl7cmV0dXJuIHRoaXMuX3ByaW9yaXR5fXNldCBwcmlvcml0eShlKXt0aGlzLl9wcmlvcml0eSE9ZSYmKHRoaXMuX3ByaW9yaXR5PWUsdGhpcy5fb25Qcmlvcml0eUNoYW5nZShlKSl9Z2V0KCl7Y29uc3QgZT1KZSh0aGlzKTtyZXR1cm4gZSYmZS5nZXRWYWx1ZSgpfXRvKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIEEudG8odGhpcyx0KX1pbnRlcnBvbGF0ZSgpe0hlKGAke1VlfVRoZSAiaW50ZXJwb2xhdGUiIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgaW4gdjkgKHVzZSAidG8iIGluc3RlYWQpYCk7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIEEudG8odGhpcyx0KX10b0pTT04oKXtyZXR1cm4gdGhpcy5nZXQoKX1vYnNlcnZlckFkZGVkKGUpezE9PWUmJnRoaXMuX2F0dGFjaCgpfW9ic2VydmVyUmVtb3ZlZChlKXswPT1lJiZ0aGlzLl9kZXRhY2goKX1fYXR0YWNoKCl7fV9kZXRhY2goKXt9X29uQ2hhbmdlKGUpe0VlKHRoaXMse3R5cGU6ImNoYW5nZSIscGFyZW50OnRoaXMsdmFsdWU6ZSxpZGxlOmFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV19KX1fb25Qcmlvcml0eUNoYW5nZShlKXt0aGlzLmlkbGV8fEguc29ydCh0aGlzKSxFZSh0aGlzLHt0eXBlOiJwcmlvcml0eSIscGFyZW50OnRoaXMscHJpb3JpdHk6ZX0pfX0sJHQ9U3ltYm9sLmZvcigiU3ByaW5nUGhhc2UiKSxXdD1lPT4oMSZlWyR0XSk+MCxLdD1lPT4oMiZlWyR0XSk+MCxHdD1lPT4oNCZlWyR0XSk+MCxYdD0oZSx0KT0+dD9lWyR0XXw9MzplWyR0XSY9LTMsUXQ9KGUsdCk9PnQ/ZVskdF18PTQ6ZVskdF0mPS01LFp0PWNsYXNzIGV4dGVuZHMgVnR7Y29uc3RydWN0b3IoZSx0KXtpZihzdXBlcigpLHRoaXMuYW5pbWF0aW9uPW5ldyBNdCx0aGlzLmRlZmF1bHRQcm9wcz17fSx0aGlzLl9zdGF0ZT17cGF1c2VkOiExLGRlbGF5ZWQ6ITEscGF1c2VRdWV1ZTpuZXcgU2V0LHJlc3VtZVF1ZXVlOm5ldyBTZXQsdGltZW91dHM6bmV3IFNldH0sdGhpcy5fcGVuZGluZ0NhbGxzPW5ldyBTZXQsdGhpcy5fbGFzdENhbGxJZD0wLHRoaXMuX2xhc3RUb0lkPTAsdGhpcy5fbWVtb2l6ZWREdXJhdGlvbj0wLCFFLnVuZChlKXx8IUUudW5kKHQpKXtjb25zdCBuPUUub2JqKGUpP3suLi5lfTp7Li4udCxmcm9tOmV9O0UudW5kKG4uZGVmYXVsdCkmJihuLmRlZmF1bHQ9ITApLHRoaXMuc3RhcnQobil9fWdldCBpZGxlKCl7cmV0dXJuIShLdCh0aGlzKXx8dGhpcy5fc3RhdGUuYXN5bmNUbyl8fEd0KHRoaXMpfWdldCBnb2FsKCl7cmV0dXJuIEFlKHRoaXMuYW5pbWF0aW9uLnRvKX1nZXQgdmVsb2NpdHkoKXtjb25zdCBlPUplKHRoaXMpO3JldHVybiBlIGluc3RhbmNlb2YgaXQ/ZS5sYXN0VmVsb2NpdHl8fDA6ZS5nZXRQYXlsb2FkKCkubWFwKGU9PmUubGFzdFZlbG9jaXR5fHwwKX1nZXQgaGFzQW5pbWF0ZWQoKXtyZXR1cm4gV3QodGhpcyl9Z2V0IGlzQW5pbWF0aW5nKCl7cmV0dXJuIEt0KHRoaXMpfWdldCBpc1BhdXNlZCgpe3JldHVybiBHdCh0aGlzKX1nZXQgaXNEZWxheWVkKCl7cmV0dXJuIHRoaXMuX3N0YXRlLmRlbGF5ZWR9YWR2YW5jZShlKXtsZXQgdD0hMCxuPSExO2NvbnN0IGk9dGhpcy5hbmltYXRpb247bGV0e3RvVmFsdWVzOmF9PWk7Y29uc3R7Y29uZmlnOm99PWkscj10dChpLnRvKTshciYma2UoaS50bykmJihhPVQoQWUoaS50bykpKSxpLnZhbHVlcy5mb3JFYWNoKChzLGwpPT57aWYocy5kb25lKXJldHVybjtjb25zdCBkPXMuY29uc3RydWN0b3I9PWF0PzE6cj9yW2xdLmxhc3RQb3NpdGlvbjphW2xdO2xldCBjPWkuaW1tZWRpYXRlLHU9ZDtpZighYyl7aWYodT1zLmxhc3RQb3NpdGlvbixvLnRlbnNpb248PTApcmV0dXJuIHZvaWQocy5kb25lPSEwKTtsZXQgdD1zLmVsYXBzZWRUaW1lKz1lO2NvbnN0IG49aS5mcm9tVmFsdWVzW2xdLGE9bnVsbCE9cy52MD9zLnYwOnMudjA9RS5hcnIoby52ZWxvY2l0eSk/by52ZWxvY2l0eVtsXTpvLnZlbG9jaXR5O2xldCByO2NvbnN0IHA9by5wcmVjaXNpb258fChuPT1kPy4wMDU6TWF0aC5taW4oMSwuMDAxKk1hdGguYWJzKGQtbikpKTtpZihFLnVuZChvLmR1cmF0aW9uKSlpZihvLmRlY2F5KXtjb25zdCBlPSEwPT09by5kZWNheT8uOTk4Om8uZGVjYXksaT1NYXRoLmV4cCgtKDEtZSkqdCk7dT1uK2EvKDEtZSkqKDEtaSksYz1NYXRoLmFicyhzLmxhc3RQb3NpdGlvbi11KTw9cCxyPWEqaX1lbHNle3I9bnVsbD09cy5sYXN0VmVsb2NpdHk/YTpzLmxhc3RWZWxvY2l0eTtjb25zdCB0PW8ucmVzdFZlbG9jaXR5fHxwLzEwLGk9by5jbGFtcD8wOm8uYm91bmNlLGw9IUUudW5kKGkpLGY9bj09ZD9zLnYwPjA6bjxkO2xldCBtLGg9ITE7Y29uc3QgZz0xLGI9TWF0aC5jZWlsKGUvZyk7Zm9yKGxldCBlPTA7ZTxiJiYobT1NYXRoLmFicyhyKT50LG18fChjPU1hdGguYWJzKGQtdSk8PXAsIWMpKTsrK2Upe2wmJihoPXU9PWR8fHU+ZD09ZixoJiYocj0tcippLHU9ZCkpO3IrPSgxZS02Ki1vLnRlbnNpb24qKHUtZCkrLjAwMSotby5mcmljdGlvbipyKS9vLm1hc3MqZyx1Kz1yKmd9fWVsc2V7bGV0IGk9MTtvLmR1cmF0aW9uPjAmJih0aGlzLl9tZW1vaXplZER1cmF0aW9uIT09by5kdXJhdGlvbiYmKHRoaXMuX21lbW9pemVkRHVyYXRpb249by5kdXJhdGlvbixzLmR1cmF0aW9uUHJvZ3Jlc3M+MCYmKHMuZWxhcHNlZFRpbWU9by5kdXJhdGlvbipzLmR1cmF0aW9uUHJvZ3Jlc3MsdD1zLmVsYXBzZWRUaW1lKz1lKSksaT0oby5wcm9ncmVzc3x8MCkrdC90aGlzLl9tZW1vaXplZER1cmF0aW9uLGk9aT4xPzE6aTwwPzA6aSxzLmR1cmF0aW9uUHJvZ3Jlc3M9aSksdT1uK28uZWFzaW5nKGkpKihkLW4pLHI9KHUtcy5sYXN0UG9zaXRpb24pL2UsYz0xPT1pfXMubGFzdFZlbG9jaXR5PXIsTnVtYmVyLmlzTmFOKHUpJiYoY29uc29sZS53YXJuKCJHb3QgTmFOIHdoaWxlIGFuaW1hdGluZzoiLHRoaXMpLGM9ITApfXImJiFyW2xdLmRvbmUmJihjPSExKSxjP3MuZG9uZT0hMDp0PSExLHMuc2V0VmFsdWUodSxvLnJvdW5kKSYmKG49ITApfSk7Y29uc3Qgcz1KZSh0aGlzKSxsPXMuZ2V0VmFsdWUoKTtpZih0KXtjb25zdCBlPUFlKGkudG8pO2w9PT1lJiYhbnx8by5kZWNheT9uJiZvLmRlY2F5JiZ0aGlzLl9vbkNoYW5nZShsKToocy5zZXRWYWx1ZShlKSx0aGlzLl9vbkNoYW5nZShlKSksdGhpcy5fc3RvcCgpfWVsc2UgbiYmdGhpcy5fb25DaGFuZ2UobCl9c2V0KGUpe3JldHVybiBhLmJhdGNoZWRVcGRhdGVzKCgpPT57dGhpcy5fc3RvcCgpLHRoaXMuX2ZvY3VzKGUpLHRoaXMuX3NldChlKX0pLHRoaXN9cGF1c2UoKXt0aGlzLl91cGRhdGUoe3BhdXNlOiEwfSl9cmVzdW1lKCl7dGhpcy5fdXBkYXRlKHtwYXVzZTohMX0pfWZpbmlzaCgpe2lmKEt0KHRoaXMpKXtjb25zdHt0bzplLGNvbmZpZzp0fT10aGlzLmFuaW1hdGlvbjthLmJhdGNoZWRVcGRhdGVzKCgpPT57dGhpcy5fb25TdGFydCgpLHQuZGVjYXl8fHRoaXMuX3NldChlLCExKSx0aGlzLl9zdG9wKCl9KX1yZXR1cm4gdGhpc311cGRhdGUoZSl7cmV0dXJuKHRoaXMucXVldWV8fCh0aGlzLnF1ZXVlPVtdKSkucHVzaChlKSx0aGlzfXN0YXJ0KGUsdCl7bGV0IG47cmV0dXJuIEUudW5kKGUpPyhuPXRoaXMucXVldWV8fFtdLHRoaXMucXVldWU9W10pOm49W0Uub2JqKGUpP2U6ey4uLnQsdG86ZX1dLFByb21pc2UuYWxsKG4ubWFwKGU9PnRoaXMuX3VwZGF0ZShlKSkpLnRoZW4oZT0+T3QodGhpcyxlKSl9c3RvcChlKXtjb25zdHt0bzp0fT10aGlzLmFuaW1hdGlvbjtyZXR1cm4gdGhpcy5fZm9jdXModGhpcy5nZXQoKSksTHQodGhpcy5fc3RhdGUsZSYmdGhpcy5fbGFzdENhbGxJZCksYS5iYXRjaGVkVXBkYXRlcygoKT0+dGhpcy5fc3RvcCh0LGUpKSx0aGlzfXJlc2V0KCl7dGhpcy5fdXBkYXRlKHtyZXNldDohMH0pfWV2ZW50T2JzZXJ2ZWQoZSl7ImNoYW5nZSI9PWUudHlwZT90aGlzLl9zdGFydCgpOiJwcmlvcml0eSI9PWUudHlwZSYmKHRoaXMucHJpb3JpdHk9ZS5wcmlvcml0eSsxKX1fcHJlcGFyZU5vZGUoZSl7Y29uc3QgdD10aGlzLmtleXx8IiI7bGV0e3RvOm4sZnJvbTppfT1lO249RS5vYmoobik/blt0XTpuLChudWxsPT1ufHxFdChuKSkmJihuPXZvaWQgMCksaT1FLm9iaihpKT9pW3RdOmksbnVsbD09aSYmKGk9dm9pZCAwKTtjb25zdCBhPXt0bzpuLGZyb206aX07cmV0dXJuIFd0KHRoaXMpfHwoZS5yZXZlcnNlJiYoW24saV09W2ksbl0pLGk9QWUoaSksRS51bmQoaSk/SmUodGhpcyl8fHRoaXMuX3NldChuKTp0aGlzLl9zZXQoaSkpLGF9X3VwZGF0ZShlLHQpe2xldHsuLi5ufT1lO2NvbnN0e2tleTppLGRlZmF1bHRQcm9wczphfT10aGlzO24uZGVmYXVsdCYmT2JqZWN0LmFzc2lnbihhLHh0KG4sKGUsdCk9Pi9eb24vLnRlc3QodCk/Z3QoZSxpKTplKSkscm4odGhpcyxuLCJvblByb3BzIiksc24odGhpcywib25Qcm9wcyIsbix0aGlzKTtjb25zdCBvPXRoaXMuX3ByZXBhcmVOb2RlKG4pO2lmKE9iamVjdC5pc0Zyb3plbih0aGlzKSl0aHJvdyBFcnJvcigiQ2Fubm90IGFuaW1hdGUgYSBgU3ByaW5nVmFsdWVgIG9iamVjdCB0aGF0IGlzIGZyb3plbi4gRGlkIHlvdSBmb3JnZXQgdG8gcGFzcyB5b3VyIGNvbXBvbmVudCB0byBgYW5pbWF0ZWQoLi4uKWAgYmVmb3JlIGFuaW1hdGluZyBpdHMgcHJvcHM/Iik7Y29uc3Qgcj10aGlzLl9zdGF0ZTtyZXR1cm4gTnQoKyt0aGlzLl9sYXN0Q2FsbElkLHtrZXk6aSxwcm9wczpuLGRlZmF1bHRQcm9wczphLHN0YXRlOnIsYWN0aW9uczp7cGF1c2U6KCk9PntHdCh0aGlzKXx8KFF0KHRoaXMsITApLE0oci5wYXVzZVF1ZXVlKSxzbih0aGlzLCJvblBhdXNlIixqdCh0aGlzLEp0KHRoaXMsdGhpcy5hbmltYXRpb24udG8pKSx0aGlzKSl9LHJlc3VtZTooKT0+e0d0KHRoaXMpJiYoUXQodGhpcywhMSksS3QodGhpcykmJnRoaXMuX3Jlc3VtZSgpLE0oci5yZXN1bWVRdWV1ZSksc24odGhpcywib25SZXN1bWUiLGp0KHRoaXMsSnQodGhpcyx0aGlzLmFuaW1hdGlvbi50bykpLHRoaXMpKX0sc3RhcnQ6dGhpcy5fbWVyZ2UuYmluZCh0aGlzLG8pfX0pLnRoZW4oZT0+e2lmKG4ubG9vcCYmZS5maW5pc2hlZCYmKCF0fHwhZS5ub29wKSl7Y29uc3QgZT1lbihuKTtpZihlKXJldHVybiB0aGlzLl91cGRhdGUoZSwhMCl9cmV0dXJuIGV9KX1fbWVyZ2UoZSx0LG4pe2lmKHQuY2FuY2VsKXJldHVybiB0aGlzLnN0b3AoITApLG4oUHQodGhpcykpO2NvbnN0IGk9IUUudW5kKGUudG8pLG89IUUudW5kKGUuZnJvbSk7aWYoaXx8byl7aWYoISh0LmNhbGxJZD50aGlzLl9sYXN0VG9JZCkpcmV0dXJuIG4oUHQodGhpcykpO3RoaXMuX2xhc3RUb0lkPXQuY2FsbElkfWNvbnN0e2tleTpyLGRlZmF1bHRQcm9wczpzLGFuaW1hdGlvbjpsfT10aGlzLHt0bzpkLGZyb206Y309bDtsZXR7dG86dT1kLGZyb206cD1jfT1lOyFvfHxpfHx0LmRlZmF1bHQmJiFFLnVuZCh1KXx8KHU9cCksdC5yZXZlcnNlJiYoW3UscF09W3AsdV0pO2NvbnN0IGY9IVMocCxjKTtmJiYobC5mcm9tPXApLHA9QWUocCk7Y29uc3QgbT0hUyh1LGQpO20mJnRoaXMuX2ZvY3VzKHUpO2NvbnN0IGg9RXQodC50bykse2NvbmZpZzpnfT1sLHtkZWNheTpiLHZlbG9jaXR5OnZ9PWc7KGl8fG8pJiYoZy52ZWxvY2l0eT0wKSx0LmNvbmZpZyYmIWgmJmZ1bmN0aW9uKGUsdCxuKXtuJiYoSXQobj17Li4ubn0sdCksdD17Li4ubiwuLi50fSksSXQoZSx0KSxPYmplY3QuYXNzaWduKGUsdCk7Zm9yKGNvbnN0IHQgaW4gVHQpbnVsbD09ZVt0XSYmKGVbdF09VHRbdF0pO2xldHtmcmVxdWVuY3k6aSxkYW1waW5nOmF9PWU7Y29uc3R7bWFzczpvfT1lO0UudW5kKGkpfHwoaTwuMDEmJihpPS4wMSksYTwwJiYoYT0wKSxlLnRlbnNpb249TWF0aC5wb3coMipNYXRoLlBJL2ksMikqbyxlLmZyaWN0aW9uPTQqTWF0aC5QSSphKm8vaSl9KGcsbXQodC5jb25maWcsciksdC5jb25maWchPT1zLmNvbmZpZz9tdChzLmNvbmZpZyxyKTp2b2lkIDApO2xldCB4PUplKHRoaXMpO2lmKCF4fHxFLnVuZCh1KSlyZXR1cm4gbihqdCh0aGlzLCEwKSk7Y29uc3QgeT1FLnVuZCh0LnJlc2V0KT9vJiYhdC5kZWZhdWx0OiFFLnVuZChwKSYmaHQodC5yZXNldCxyKSx3PXk/cDp0aGlzLmdldCgpLGs9QXQodSksQT1FLm51bShrKXx8RS5hcnIoayl8fFZlKGspLEM9IWgmJighQXx8aHQocy5pbW1lZGlhdGV8fHQuaW1tZWRpYXRlLHIpKTtpZihtKXtjb25zdCBlPWR0KHUpO2lmKGUhPT14LmNvbnN0cnVjdG9yKXtpZighQyl0aHJvdyBFcnJvcihgQ2Fubm90IGFuaW1hdGUgYmV0d2VlbiAke3guY29uc3RydWN0b3IubmFtZX0gYW5kICR7ZS5uYW1lfSwgYXMgdGhlICJ0byIgcHJvcCBzdWdnZXN0c2ApO3g9dGhpcy5fc2V0KGspfX1jb25zdCBZPXguY29uc3RydWN0b3I7bGV0IEY9a2UodSksST0hMTtpZighRil7Y29uc3QgZT15fHwhV3QodGhpcykmJmY7KG18fGUpJiYoST1TKEF0KHcpLGspLEY9IUkpLChTKGwuaW1tZWRpYXRlLEMpfHxDKSYmUyhnLmRlY2F5LGIpJiZTKGcudmVsb2NpdHksdil8fChGPSEwKX1pZihJJiZLdCh0aGlzKSYmKGwuY2hhbmdlZCYmIXk/Rj0hMDpGfHx0aGlzLl9zdG9wKGQpKSwhaCYmKChGfHxrZShkKSkmJihsLnZhbHVlcz14LmdldFBheWxvYWQoKSxsLnRvVmFsdWVzPWtlKHUpP251bGw6WT09YXQ/WzFdOlQoaykpLGwuaW1tZWRpYXRlIT1DJiYobC5pbW1lZGlhdGU9QyxDfHx5fHx0aGlzLl9zZXQoZCkpLEYpKXtjb25zdHtvblJlc3Q6ZX09bDtEKG9uLGU9PnJuKHRoaXMsdCxlKSk7Y29uc3QgaT1qdCh0aGlzLEp0KHRoaXMsZCkpO00odGhpcy5fcGVuZGluZ0NhbGxzLGkpLHRoaXMuX3BlbmRpbmdDYWxscy5hZGQobiksbC5jaGFuZ2VkJiZhLmJhdGNoZWRVcGRhdGVzKCgpPT57bC5jaGFuZ2VkPSF5LGU/LihpLHRoaXMpLHk/bXQocy5vblJlc3QsaSk6bC5vblN0YXJ0Py4oaSx0aGlzKX0pfXkmJnRoaXMuX3NldCh3KSxoP24oenQodC50byx0LHRoaXMuX3N0YXRlLHRoaXMpKTpGP3RoaXMuX3N0YXJ0KCk6S3QodGhpcykmJiFtP3RoaXMuX3BlbmRpbmdDYWxscy5hZGQobik6bihSdCh3KSl9X2ZvY3VzKGUpe2NvbnN0IHQ9dGhpcy5hbmltYXRpb247ZSE9PXQudG8mJihDZSh0aGlzKSYmdGhpcy5fZGV0YWNoKCksdC50bz1lLENlKHRoaXMpJiZ0aGlzLl9hdHRhY2goKSl9X2F0dGFjaCgpe2xldCBlPTA7Y29uc3R7dG86dH09dGhpcy5hbmltYXRpb247a2UodCkmJihZZSh0LHRoaXMpLEh0KHQpJiYoZT10LnByaW9yaXR5KzEpKSx0aGlzLnByaW9yaXR5PWV9X2RldGFjaCgpe2NvbnN0e3RvOmV9PXRoaXMuYW5pbWF0aW9uO2tlKGUpJiZUZShlLHRoaXMpfV9zZXQoZSl7bGV0IHQ9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTtjb25zdCBuPUFlKGUpO2lmKCFFLnVuZChuKSl7Y29uc3QgZT1KZSh0aGlzKTtpZighZXx8IVMobixlLmdldFZhbHVlKCkpKXtjb25zdCBpPWR0KG4pO2UmJmUuY29uc3RydWN0b3I9PWk/ZS5zZXRWYWx1ZShuKTpldCh0aGlzLGkuY3JlYXRlKG4pKSxlJiZhLmJhdGNoZWRVcGRhdGVzKCgpPT57dGhpcy5fb25DaGFuZ2Uobix0KX0pfX1yZXR1cm4gSmUodGhpcyl9X29uU3RhcnQoKXtjb25zdCBlPXRoaXMuYW5pbWF0aW9uO2UuY2hhbmdlZHx8KGUuY2hhbmdlZD0hMCxzbih0aGlzLCJvblN0YXJ0IixqdCh0aGlzLEp0KHRoaXMsZS50bykpLHRoaXMpKX1fb25DaGFuZ2UoZSx0KXt0fHwodGhpcy5fb25TdGFydCgpLG10KHRoaXMuYW5pbWF0aW9uLm9uQ2hhbmdlLGUsdGhpcykpLG10KHRoaXMuZGVmYXVsdFByb3BzLm9uQ2hhbmdlLGUsdGhpcyksc3VwZXIuX29uQ2hhbmdlKGUsdCl9X3N0YXJ0KCl7Y29uc3QgZT10aGlzLmFuaW1hdGlvbjtKZSh0aGlzKS5yZXNldChBZShlLnRvKSksZS5pbW1lZGlhdGV8fChlLmZyb21WYWx1ZXM9ZS52YWx1ZXMubWFwKGU9PmUubGFzdFBvc2l0aW9uKSksS3QodGhpcyl8fChYdCh0aGlzLCEwKSxHdCh0aGlzKXx8dGhpcy5fcmVzdW1lKCkpfV9yZXN1bWUoKXtBLnNraXBBbmltYXRpb24/dGhpcy5maW5pc2goKTpILnN0YXJ0KHRoaXMpfV9zdG9wKGUsdCl7aWYoS3QodGhpcykpe1h0KHRoaXMsITEpO2NvbnN0IG49dGhpcy5hbmltYXRpb247RChuLnZhbHVlcyxlPT57ZS5kb25lPSEwfSksbi50b1ZhbHVlcyYmKG4ub25DaGFuZ2U9bi5vblBhdXNlPW4ub25SZXN1bWU9dm9pZCAwKSxFZSh0aGlzLHt0eXBlOiJpZGxlIixwYXJlbnQ6dGhpc30pO2NvbnN0IGk9dD9QdCh0aGlzLmdldCgpKTpqdCh0aGlzLmdldCgpLEp0KHRoaXMsZT8/bi50bykpO00odGhpcy5fcGVuZGluZ0NhbGxzLGkpLG4uY2hhbmdlZCYmKG4uY2hhbmdlZD0hMSxzbih0aGlzLCJvblJlc3QiLGksdGhpcykpfX19O2Z1bmN0aW9uIEp0KGUsdCl7Y29uc3Qgbj1BdCh0KTtyZXR1cm4gUyhBdChlLmdldCgpKSxuKX1mdW5jdGlvbiBlbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ZS5sb29wLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOmUudG87Y29uc3QgaT1tdCh0KTtpZihpKXtjb25zdCBhPSEwIT09aSYma3QoaSksbz0oYXx8ZSkucmV2ZXJzZSxyPSFhfHxhLnJlc2V0O3JldHVybiB0bih7Li4uZSxsb29wOnQsZGVmYXVsdDohMSxwYXVzZTp2b2lkIDAsdG86IW98fEV0KG4pP246dm9pZCAwLGZyb206cj9lLmZyb206dm9pZCAwLHJlc2V0OnIsLi4uYX0pfX1mdW5jdGlvbiB0bihlKXtjb25zdHt0bzp0LGZyb206bn09ZT1rdChlKSxpPW5ldyBTZXQ7cmV0dXJuIEUub2JqKHQpJiZhbih0LGkpLEUub2JqKG4pJiZhbihuLGkpLGUua2V5cz1pLnNpemU/QXJyYXkuZnJvbShpKTpudWxsLGV9ZnVuY3Rpb24gbm4oZSl7Y29uc3QgdD10bihlKTtyZXR1cm4gRS51bmQodC5kZWZhdWx0KSYmKHQuZGVmYXVsdD14dCh0KSksdH1mdW5jdGlvbiBhbihlLHQpe1koZSwoZSxuKT0+bnVsbCE9ZSYmdC5hZGQobikpfXZhciBvbj1bIm9uU3RhcnQiLCJvblJlc3QiLCJvbkNoYW5nZSIsIm9uUGF1c2UiLCJvblJlc3VtZSJdO2Z1bmN0aW9uIHJuKGUsdCxuKXtlLmFuaW1hdGlvbltuXT10W25dIT09YnQodCxuKT9ndCh0W25dLGUua2V5KTp2b2lkIDB9ZnVuY3Rpb24gc24oZSx0KXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShuPjI/bi0yOjApLGE9MjthPG47YSsrKWlbYS0yXT1hcmd1bWVudHNbYV07ZS5hbmltYXRpb25bdF0/LiguLi5pKSxlLmRlZmF1bHRQcm9wc1t0XT8uKC4uLmkpfXZhciBsbj1bIm9uU3RhcnQiLCJvbkNoYW5nZSIsIm9uUmVzdCJdLGRuPTEsY249Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmlkPWRuKyssdGhpcy5zcHJpbmdzPXt9LHRoaXMucXVldWU9W10sdGhpcy5fbGFzdEFzeW5jSWQ9MCx0aGlzLl9hY3RpdmU9bmV3IFNldCx0aGlzLl9jaGFuZ2VkPW5ldyBTZXQsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9zdGF0ZT17cGF1c2VkOiExLHBhdXNlUXVldWU6bmV3IFNldCxyZXN1bWVRdWV1ZTpuZXcgU2V0LHRpbWVvdXRzOm5ldyBTZXR9LHRoaXMuX2V2ZW50cz17b25TdGFydDpuZXcgTWFwLG9uQ2hhbmdlOm5ldyBNYXAsb25SZXN0Om5ldyBNYXB9LHRoaXMuX29uRnJhbWU9dGhpcy5fb25GcmFtZS5iaW5kKHRoaXMpLHQmJih0aGlzLl9mbHVzaD10KSxlJiZ0aGlzLnN0YXJ0KHtkZWZhdWx0OiEwLC4uLmV9KX1nZXQgaWRsZSgpe3JldHVybiF0aGlzLl9zdGF0ZS5hc3luY1RvJiZPYmplY3QudmFsdWVzKHRoaXMuc3ByaW5ncykuZXZlcnkoZT0+ZS5pZGxlJiYhZS5pc0RlbGF5ZWQmJiFlLmlzUGF1c2VkKX1nZXQgaXRlbSgpe3JldHVybiB0aGlzLl9pdGVtfXNldCBpdGVtKGUpe3RoaXMuX2l0ZW09ZX1nZXQoKXtjb25zdCBlPXt9O3JldHVybiB0aGlzLmVhY2goKHQsbik9PmVbbl09dC5nZXQoKSksZX1zZXQoZSl7Zm9yKGNvbnN0IHQgaW4gZSl7Y29uc3Qgbj1lW3RdO0UudW5kKG4pfHx0aGlzLnNwcmluZ3NbdF0uc2V0KG4pfX11cGRhdGUoZSl7cmV0dXJuIGUmJnRoaXMucXVldWUucHVzaCh0bihlKSksdGhpc31zdGFydChlKXtsZXR7cXVldWU6dH09dGhpcztyZXR1cm4gZT90PVQoZSkubWFwKHRuKTp0aGlzLnF1ZXVlPVtdLHRoaXMuX2ZsdXNoP3RoaXMuX2ZsdXNoKHRoaXMsdCk6KGJuKHRoaXMsdCksdW4odGhpcyx0KSl9c3RvcChlLHQpe2lmKGUhPT0hIWUmJih0PWUpLHQpe2NvbnN0IG49dGhpcy5zcHJpbmdzO0QoVCh0KSx0PT5uW3RdLnN0b3AoISFlKSl9ZWxzZSBMdCh0aGlzLl9zdGF0ZSx0aGlzLl9sYXN0QXN5bmNJZCksdGhpcy5lYWNoKHQ9PnQuc3RvcCghIWUpKTtyZXR1cm4gdGhpc31wYXVzZShlKXtpZihFLnVuZChlKSl0aGlzLnN0YXJ0KHtwYXVzZTohMH0pO2Vsc2V7Y29uc3QgdD10aGlzLnNwcmluZ3M7RChUKGUpLGU9PnRbZV0ucGF1c2UoKSl9cmV0dXJuIHRoaXN9cmVzdW1lKGUpe2lmKEUudW5kKGUpKXRoaXMuc3RhcnQoe3BhdXNlOiExfSk7ZWxzZXtjb25zdCB0PXRoaXMuc3ByaW5ncztEKFQoZSksZT0+dFtlXS5yZXN1bWUoKSl9cmV0dXJuIHRoaXN9ZWFjaChlKXtZKHRoaXMuc3ByaW5ncyxlKX1fb25GcmFtZSgpe2NvbnN0e29uU3RhcnQ6ZSxvbkNoYW5nZTp0LG9uUmVzdDpufT10aGlzLl9ldmVudHMsaT10aGlzLl9hY3RpdmUuc2l6ZT4wLGE9dGhpcy5fY2hhbmdlZC5zaXplPjA7KGkmJiF0aGlzLl9zdGFydGVkfHxhJiYhdGhpcy5fc3RhcnRlZCkmJih0aGlzLl9zdGFydGVkPSEwLEYoZSxlPT57bGV0W3Qsbl09ZTtuLnZhbHVlPXRoaXMuZ2V0KCksdChuLHRoaXMsdGhpcy5faXRlbSl9KSk7Y29uc3Qgbz0haSYmdGhpcy5fc3RhcnRlZCxyPWF8fG8mJm4uc2l6ZT90aGlzLmdldCgpOm51bGw7YSYmdC5zaXplJiZGKHQsZT0+e2xldFt0LG5dPWU7bi52YWx1ZT1yLHQobix0aGlzLHRoaXMuX2l0ZW0pfSksbyYmKHRoaXMuX3N0YXJ0ZWQ9ITEsRihuLGU9PntsZXRbdCxuXT1lO24udmFsdWU9cix0KG4sdGhpcyx0aGlzLl9pdGVtKX0pKX1ldmVudE9ic2VydmVkKGUpe2lmKCJjaGFuZ2UiPT1lLnR5cGUpdGhpcy5fY2hhbmdlZC5hZGQoZS5wYXJlbnQpLGUuaWRsZXx8dGhpcy5fYWN0aXZlLmFkZChlLnBhcmVudCk7ZWxzZXtpZigiaWRsZSIhPWUudHlwZSlyZXR1cm47dGhpcy5fYWN0aXZlLmRlbGV0ZShlLnBhcmVudCl9YS5vbkZyYW1lKHRoaXMuX29uRnJhbWUpfX07ZnVuY3Rpb24gdW4oZSx0KXtyZXR1cm4gUHJvbWlzZS5hbGwodC5tYXAodD0+cG4oZSx0KSkpLnRoZW4odD0+T3QoZSx0KSl9YXN5bmMgZnVuY3Rpb24gcG4oZSx0LG4pe2NvbnN0e2tleXM6aSx0bzpvLGZyb206cixsb29wOnMsb25SZXN0Omwsb25SZXNvbHZlOmR9PXQsYz1FLm9iaih0LmRlZmF1bHQpJiZ0LmRlZmF1bHQ7cyYmKHQubG9vcD0hMSksITE9PT1vJiYodC50bz1udWxsKSwhMT09PXImJih0LmZyb209bnVsbCk7Y29uc3QgdT1FLmFycihvKXx8RS5mdW4obyk/bzp2b2lkIDA7dT8odC50bz12b2lkIDAsdC5vblJlc3Q9dm9pZCAwLGMmJihjLm9uUmVzdD12b2lkIDApKTpEKGxuLG49Pntjb25zdCBpPXRbbl07aWYoRS5mdW4oaSkpe2NvbnN0IGE9ZS5fZXZlbnRzW25dO3Rbbl09ZT0+e2xldHtmaW5pc2hlZDp0LGNhbmNlbGxlZDpufT1lO2NvbnN0IG89YS5nZXQoaSk7bz8odHx8KG8uZmluaXNoZWQ9ITEpLG4mJihvLmNhbmNlbGxlZD0hMCkpOmEuc2V0KGkse3ZhbHVlOm51bGwsZmluaXNoZWQ6dHx8ITEsY2FuY2VsbGVkOm58fCExfSl9LGMmJihjW25dPXRbbl0pfX0pO2NvbnN0IHA9ZS5fc3RhdGU7dC5wYXVzZT09PSFwLnBhdXNlZD8ocC5wYXVzZWQ9dC5wYXVzZSxNKHQucGF1c2U/cC5wYXVzZVF1ZXVlOnAucmVzdW1lUXVldWUpKTpwLnBhdXNlZCYmKHQucGF1c2U9ITApO2NvbnN0IGY9KGl8fE9iamVjdC5rZXlzKGUuc3ByaW5ncykpLm1hcChuPT5lLnNwcmluZ3Nbbl0uc3RhcnQodCkpLG09ITA9PT10LmNhbmNlbHx8ITA9PT1idCh0LCJjYW5jZWwiKTsodXx8bSYmcC5hc3luY0lkKSYmZi5wdXNoKE50KCsrZS5fbGFzdEFzeW5jSWQse3Byb3BzOnQsc3RhdGU6cCxhY3Rpb25zOntwYXVzZTpDLHJlc3VtZTpDLHN0YXJ0KHQsbil7bT8oTHQocCxlLl9sYXN0QXN5bmNJZCksbihQdChlKSkpOih0Lm9uUmVzdD1sLG4oenQodSx0LHAsZSkpKX19fSkpLHAucGF1c2VkJiZhd2FpdCBuZXcgUHJvbWlzZShlPT57cC5yZXN1bWVRdWV1ZS5hZGQoZSl9KTtjb25zdCBoPU90KGUsYXdhaXQgUHJvbWlzZS5hbGwoZikpO2lmKHMmJmguZmluaXNoZWQmJighbnx8IWgubm9vcCkpe2NvbnN0IG49ZW4odCxzLG8pO2lmKG4pcmV0dXJuIGJuKGUsW25dKSxwbihlLG4sITApfXJldHVybiBkJiZhLmJhdGNoZWRVcGRhdGVzKCgpPT5kKGgsZSxlLml0ZW0pKSxofWZ1bmN0aW9uIGZuKGUsdCl7Y29uc3Qgbj17Li4uZS5zcHJpbmdzfTtyZXR1cm4gdCYmRChUKHQpLGU9PntFLnVuZChlLmtleXMpJiYoZT10bihlKSksRS5vYmooZS50byl8fChlPXsuLi5lLHRvOnZvaWQgMH0pLGduKG4sZSxlPT5obihlKSl9KSxtbihlLG4pLG59ZnVuY3Rpb24gbW4oZSx0KXtZKHQsKHQsbik9PntlLnNwcmluZ3Nbbl18fChlLnNwcmluZ3Nbbl09dCxZZSh0LGUpKX0pfWZ1bmN0aW9uIGhuKGUsdCl7Y29uc3Qgbj1uZXcgWnQ7cmV0dXJuIG4ua2V5PWUsdCYmWWUobix0KSxufWZ1bmN0aW9uIGduKGUsdCxuKXt0LmtleXMmJkQodC5rZXlzLGk9PnsoZVtpXXx8KGVbaV09bihpKSkpLl9wcmVwYXJlTm9kZSh0KX0pfWZ1bmN0aW9uIGJuKGUsdCl7RCh0LHQ9PntnbihlLnNwcmluZ3MsdCx0PT5obih0LGUpKX0pfXZhciB2bix4bix5bj1lPT57bGV0e2NoaWxkcmVuOnQsLi4ubn09ZTtjb25zdCBpPSgwLHcudXNlQ29udGV4dCkod24pLGE9bi5wYXVzZXx8ISFpLnBhdXNlLG89bi5pbW1lZGlhdGV8fCEhaS5pbW1lZGlhdGU7bj1mdW5jdGlvbihlLHQpe2NvbnN0W25dPSgwLHcudXNlU3RhdGUpKCgpPT4oe2lucHV0czp0LHJlc3VsdDplKCl9KSksaT0oMCx3LnVzZVJlZikoKSxhPWkuY3VycmVudDtsZXQgbz1hO28/Qm9vbGVhbih0JiZvLmlucHV0cyYmZnVuY3Rpb24oZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKWlmKGVbbl0hPT10W25dKXJldHVybiExO3JldHVybiEwfSh0LG8uaW5wdXRzKSl8fChvPXtpbnB1dHM6dCxyZXN1bHQ6ZSgpfSk6bz1uO3JldHVybigwLHcudXNlRWZmZWN0KSgoKT0+e2kuY3VycmVudD1vLGE9PW4mJihuLmlucHV0cz1uLnJlc3VsdD12b2lkIDApfSxbb10pLG8ucmVzdWx0fSgoKT0+KHtwYXVzZTphLGltbWVkaWF0ZTpvfSksW2Esb10pO2NvbnN0e1Byb3ZpZGVyOnJ9PXduO3JldHVybiB3LmNyZWF0ZUVsZW1lbnQocix7dmFsdWU6bn0sdCl9LHduPSh2bj15bix4bj17fSxPYmplY3QuYXNzaWduKHZuLHcuY3JlYXRlQ29udGV4dCh4bikpLHZuLlByb3ZpZGVyLl9jb250ZXh0PXZuLHZuLkNvbnN1bWVyLl9jb250ZXh0PXZuLHZuKTt5bi5Qcm92aWRlcj13bi5Qcm92aWRlcix5bi5Db25zdW1lcj13bi5Db25zdW1lcjt2YXIga249KCk9Pntjb25zdCBlPVtdLHQ9ZnVuY3Rpb24odCl7cWUoYCR7VWV9RGlyZWN0bHkgY2FsbGluZyBzdGFydCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBhcGkgb2JqZWN0IGlzIGRlcHJlY2F0ZWQgaW4gdjkgKHVzZSAiLnN0YXJ0IiBpbnN0ZWFkKSwgdGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gbGF0ZXIgMC5YLjAgdmVyc2lvbnNgKTtjb25zdCBpPVtdO3JldHVybiBEKGUsKGUsYSk9PntpZihFLnVuZCh0KSlpLnB1c2goZS5zdGFydCgpKTtlbHNle2NvbnN0IG89bih0LGUsYSk7byYmaS5wdXNoKGUuc3RhcnQobykpfX0pLGl9O3QuY3VycmVudD1lLHQuYWRkPWZ1bmN0aW9uKHQpe2UuaW5jbHVkZXModCl8fGUucHVzaCh0KX0sdC5kZWxldGU9ZnVuY3Rpb24odCl7Y29uc3Qgbj1lLmluZGV4T2YodCk7fm4mJmUuc3BsaWNlKG4sMSl9LHQucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4gRChlLGU9PmUucGF1c2UoLi4uYXJndW1lbnRzKSksdGhpc30sdC5yZXN1bWU9ZnVuY3Rpb24oKXtyZXR1cm4gRChlLGU9PmUucmVzdW1lKC4uLmFyZ3VtZW50cykpLHRoaXN9LHQuc2V0PWZ1bmN0aW9uKHQpe0QoZSwoZSxuKT0+e2NvbnN0IGk9RS5mdW4odCk/dChuLGUpOnQ7aSYmZS5zZXQoaSl9KX0sdC5zdGFydD1mdW5jdGlvbih0KXtjb25zdCBuPVtdO3JldHVybiBEKGUsKGUsaSk9PntpZihFLnVuZCh0KSluLnB1c2goZS5zdGFydCgpKTtlbHNle2NvbnN0IGE9dGhpcy5fZ2V0UHJvcHModCxlLGkpO2EmJm4ucHVzaChlLnN0YXJ0KGEpKX19KSxufSx0LnN0b3A9ZnVuY3Rpb24oKXtyZXR1cm4gRChlLGU9PmUuc3RvcCguLi5hcmd1bWVudHMpKSx0aGlzfSx0LnVwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gRChlLChlLG4pPT5lLnVwZGF0ZSh0aGlzLl9nZXRQcm9wcyh0LGUsbikpKSx0aGlzfTtjb25zdCBuPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gRS5mdW4oZSk/ZShuLHQpOmV9O3JldHVybiB0Ll9nZXRQcm9wcz1uLHR9O2Z1bmN0aW9uIEFuKGUsdCxuKXtjb25zdCBpPUUuZnVuKHQpJiZ0O2kmJiFuJiYobj1bXSk7Y29uc3QgYT0oMCx3LnVzZU1lbW8pKCgpPT5pfHwzPT1hcmd1bWVudHMubGVuZ3RoP2tuKCk6dm9pZCAwLFtdKSxvPSgwLHcudXNlUmVmKSgwKSxyPUtlKCkscz0oMCx3LnVzZU1lbW8pKCgpPT4oe2N0cmxzOltdLHF1ZXVlOltdLGZsdXNoKGUsdCl7Y29uc3Qgbj1mbihlLHQpO3JldHVybiBvLmN1cnJlbnQ+MCYmIXMucXVldWUubGVuZ3RoJiYhT2JqZWN0LmtleXMobikuc29tZSh0PT4hZS5zcHJpbmdzW3RdKT91bihlLHQpOm5ldyBQcm9taXNlKGk9PnttbihlLG4pLHMucXVldWUucHVzaCgoKT0+e2kodW4oZSx0KSl9KSxyKCl9KX19KSxbXSksbD0oMCx3LnVzZVJlZikoWy4uLnMuY3RybHNdKSxkPVtdLGM9UWUoZSl8fDA7ZnVuY3Rpb24gdShlLG4pe2ZvcihsZXQgYT1lO2E8bjthKyspe2NvbnN0IGU9bC5jdXJyZW50W2FdfHwobC5jdXJyZW50W2FdPW5ldyBjbihudWxsLHMuZmx1c2gpKSxuPWk/aShhLGUpOnRbYV07biYmKGRbYV09bm4obikpfX0oMCx3LnVzZU1lbW8pKCgpPT57RChsLmN1cnJlbnQuc2xpY2UoZSxjKSxlPT57U3QoZSxhKSxlLnN0b3AoITApfSksbC5jdXJyZW50Lmxlbmd0aD1lLHUoYyxlKX0sW2VdKSwoMCx3LnVzZU1lbW8pKCgpPT57dSgwLE1hdGgubWluKGMsZSkpfSxuKTtjb25zdCBwPWwuY3VycmVudC5tYXAoKGUsdCk9PmZuKGUsZFt0XSkpLGY9KDAsdy51c2VDb250ZXh0KSh5biksbT1RZShmKSxoPWYhPT1tJiZDdChmKTskZSgoKT0+e28uY3VycmVudCsrLHMuY3RybHM9bC5jdXJyZW50O2NvbnN0e3F1ZXVlOmV9PXM7ZS5sZW5ndGgmJihzLnF1ZXVlPVtdLEQoZSxlPT5lKCkpKSxEKGwuY3VycmVudCwoZSx0KT0+e2E/LmFkZChlKSxoJiZlLnN0YXJ0KHtkZWZhdWx0OmZ9KTtjb25zdCBuPWRbdF07biYmKER0KGUsbi5yZWYpLGUucmVmP2UucXVldWUucHVzaChuKTplLnN0YXJ0KG4pKX0pfSksR2UoKCk9PigpPT57RChzLmN0cmxzLGU9PmUuc3RvcCghMCkpfSk7Y29uc3QgZz1wLm1hcChlPT4oey4uLmV9KSk7cmV0dXJuIGE/W2csYV06Z31mdW5jdGlvbiBDbihlLHQpe2NvbnN0IG49RS5mdW4oZSksW1tpXSxhXT1BbigxLG4/ZTpbZV0sbj90fHxbXTp0KTtyZXR1cm4gbnx8Mj09YXJndW1lbnRzLmxlbmd0aD9baSxhXTppfXZhciBFbj0oKT0+a24oKSxTbj0oKT0+KDAsdy51c2VTdGF0ZSkoRW4pWzBdO2Z1bmN0aW9uIERuKGUsdCxuKXtjb25zdCBpPUUuZnVuKHQpJiZ0LHtyZXNldDphLHNvcnQ6byx0cmFpbDpyPTAsZXhwaXJlczpzPSEwLGV4aXRCZWZvcmVFbnRlcjpsPSExLG9uRGVzdHJveWVkOmQscmVmOmMsY29uZmlnOnV9PWk/aSgpOnQscD0oMCx3LnVzZU1lbW8pKCgpPT5pfHwzPT1hcmd1bWVudHMubGVuZ3RoP2tuKCk6dm9pZCAwLFtdKSxmPVQoZSksbT1bXSxoPSgwLHcudXNlUmVmKShudWxsKSxnPWE/bnVsbDpoLmN1cnJlbnQ7JGUoKCk9PntoLmN1cnJlbnQ9bX0pLEdlKCgpPT4oRChtLGU9PntwPy5hZGQoZS5jdHJsKSxlLmN0cmwucmVmPXB9KSwoKT0+e0QoaC5jdXJyZW50LGU9PntlLmV4cGlyZWQmJmNsZWFyVGltZW91dChlLmV4cGlyYXRpb25JZCksU3QoZS5jdHJsLHApLGUuY3RybC5zdG9wKCEwKX0pfSkpO2NvbnN0IGI9ZnVuY3Rpb24oZSx0LG4pe2xldHtrZXk6aSxrZXlzOmE9aX09dDtpZihudWxsPT09YSl7Y29uc3QgdD1uZXcgU2V0O3JldHVybiBlLm1hcChlPT57Y29uc3QgaT1uJiZuLmZpbmQobj0+bi5pdGVtPT09ZSYmImxlYXZlIiE9PW4ucGhhc2UmJiF0LmhhcyhuKSk7cmV0dXJuIGk/KHQuYWRkKGkpLGkua2V5KTpZbisrfSl9cmV0dXJuIEUudW5kKGEpP2U6RS5mdW4oYSk/ZS5tYXAoYSk6VChhKX0oZixpP2koKTp0LGcpLHY9YSYmaC5jdXJyZW50fHxbXTskZSgoKT0+RCh2LGU9PntsZXR7Y3RybDp0LGl0ZW06bixrZXk6aX09ZTtTdCh0LHApLG10KGQsbixpKX0pKTtjb25zdCB4PVtdO2lmKGcmJkQoZywoZSx0KT0+e2UuZXhwaXJlZD8oY2xlYXJUaW1lb3V0KGUuZXhwaXJhdGlvbklkKSx2LnB1c2goZSkpOn4odD14W3RdPWIuaW5kZXhPZihlLmtleSkpJiYobVt0XT1lKX0pLEQoZiwoZSx0KT0+e21bdF18fChtW3RdPXtrZXk6Ylt0XSxpdGVtOmUscGhhc2U6Im1vdW50IixjdHJsOm5ldyBjbn0sbVt0XS5jdHJsLml0ZW09ZSl9KSx4Lmxlbmd0aCl7bGV0IGU9LTE7Y29uc3R7bGVhdmU6bn09aT9pKCk6dDtEKHgsKHQsaSk9Pntjb25zdCBhPWdbaV07fnQ/KGU9bS5pbmRleE9mKGEpLG1bZV09ey4uLmEsaXRlbTpmW3RdfSk6biYmbS5zcGxpY2UoKytlLDAsYSl9KX1FLmZ1bihvKSYmbS5zb3J0KChlLHQpPT5vKGUuaXRlbSx0Lml0ZW0pKTtsZXQgeT0tcjtjb25zdCBrPUtlKCksQT14dCh0KSxDPW5ldyBNYXAsUz0oMCx3LnVzZVJlZikobmV3IE1hcCksWT0oMCx3LnVzZVJlZikoITEpO0QobSwoZSxuKT0+e2NvbnN0IGE9ZS5rZXksbz1lLnBoYXNlLGQ9aT9pKCk6dDtsZXQgcCxmO2NvbnN0IG09bXQoZC5kZWxheXx8MCxhKTtpZigibW91bnQiPT1vKXA9ZC5lbnRlcixmPSJlbnRlciI7ZWxzZXtjb25zdCBlPWIuaW5kZXhPZihhKTwwO2lmKCJsZWF2ZSIhPW8paWYoZSlwPWQubGVhdmUsZj0ibGVhdmUiO2Vsc2V7aWYoIShwPWQudXBkYXRlKSlyZXR1cm47Zj0idXBkYXRlIn1lbHNle2lmKGUpcmV0dXJuO3A9ZC5lbnRlcixmPSJlbnRlciJ9fWlmKHA9bXQocCxlLml0ZW0sbikscD1FLm9iaihwKT9rdChwKTp7dG86cH0sIXAuY29uZmlnKXtjb25zdCB0PXV8fEEuY29uZmlnO3AuY29uZmlnPW10KHQsZS5pdGVtLG4sZil9eSs9cjtjb25zdCB2PXsuLi5BLGRlbGF5Om0reSxyZWY6YyxpbW1lZGlhdGU6ZC5pbW1lZGlhdGUscmVzZXQ6ITEsLi4ucH07aWYoImVudGVyIj09ZiYmRS51bmQodi5mcm9tKSl7Y29uc3QgYT1pP2koKTp0LG89RS51bmQoYS5pbml0aWFsKXx8Zz9hLmZyb206YS5pbml0aWFsO3YuZnJvbT1tdChvLGUuaXRlbSxuKX1jb25zdHtvblJlc29sdmU6eH09djt2Lm9uUmVzb2x2ZT1lPT57bXQoeCxlKTtjb25zdCB0PWguY3VycmVudCxuPXQuZmluZChlPT5lLmtleT09PWEpO2lmKG4mJighZS5jYW5jZWxsZWR8fCJ1cGRhdGUiPT1uLnBoYXNlKSYmbi5jdHJsLmlkbGUpe2NvbnN0IGU9dC5ldmVyeShlPT5lLmN0cmwuaWRsZSk7aWYoImxlYXZlIj09bi5waGFzZSl7Y29uc3QgdD1tdChzLG4uaXRlbSk7aWYoITEhPT10KXtjb25zdCBpPSEwPT09dD8wOnQ7aWYobi5leHBpcmVkPSEwLCFlJiZpPjApcmV0dXJuIHZvaWQoaTw9MjE0NzQ4MzY0NyYmKG4uZXhwaXJhdGlvbklkPXNldFRpbWVvdXQoayxpKSkpfX1lJiZ0LnNvbWUoZT0+ZS5leHBpcmVkKSYmKFMuY3VycmVudC5kZWxldGUobiksbCYmKFkuY3VycmVudD0hMCksaygpKX19O2NvbnN0IHc9Zm4oZS5jdHJsLHYpOyJsZWF2ZSI9PT1mJiZsP1MuY3VycmVudC5zZXQoZSx7cGhhc2U6ZixzcHJpbmdzOncscGF5bG9hZDp2fSk6Qy5zZXQoZSx7cGhhc2U6ZixzcHJpbmdzOncscGF5bG9hZDp2fSl9KTtjb25zdCBGPSgwLHcudXNlQ29udGV4dCkoeW4pLEk9UWUoRiksXz1GIT09SSYmQ3QoRik7JGUoKCk9PntfJiZEKG0sZT0+e2UuY3RybC5zdGFydCh7ZGVmYXVsdDpGfSl9KX0sW0ZdKSxEKEMsKGUsdCk9PntpZihTLmN1cnJlbnQuc2l6ZSl7Y29uc3QgZT1tLmZpbmRJbmRleChlPT5lLmtleT09PXQua2V5KTttLnNwbGljZShlLDEpfX0pLCRlKCgpPT57RChTLmN1cnJlbnQuc2l6ZT9TLmN1cnJlbnQ6QywoZSx0KT0+e2xldHtwaGFzZTpuLHBheWxvYWQ6aX09ZTtjb25zdHtjdHJsOmF9PXQ7dC5waGFzZT1uLHA/LmFkZChhKSxfJiYiZW50ZXIiPT1uJiZhLnN0YXJ0KHtkZWZhdWx0OkZ9KSxpJiYoRHQoYSxpLnJlZiksIWEucmVmJiYhcHx8WS5jdXJyZW50PyhhLnN0YXJ0KGkpLFkuY3VycmVudCYmKFkuY3VycmVudD0hMSkpOmEudXBkYXRlKGkpKX0pfSxhP3ZvaWQgMDpuKTtjb25zdCBNPWU9PncuY3JlYXRlRWxlbWVudCh3LkZyYWdtZW50LG51bGwsbS5tYXAoKHQsbik9Pntjb25zdHtzcHJpbmdzOml9PUMuZ2V0KHQpfHx0LmN0cmwsYT1lKHsuLi5pfSx0Lml0ZW0sdCxuKTtyZXR1cm4gYSYmYS50eXBlP3cuY3JlYXRlRWxlbWVudChhLnR5cGUsey4uLmEucHJvcHMsa2V5OkUuc3RyKHQua2V5KXx8RS5udW0odC5rZXkpP3Qua2V5OnQuY3RybC5pZCxyZWY6YS5yZWZ9KTphfSkpO3JldHVybiBwP1tNLHBdOk19dmFyIFluPTE7dmFyIFRuPWNsYXNzIGV4dGVuZHMgVnR7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMuc291cmNlPWUsdGhpcy5pZGxlPSEwLHRoaXMuX2FjdGl2ZT1uZXcgU2V0LHRoaXMuY2FsYz1wZSguLi50KTtjb25zdCBuPXRoaXMuX2dldCgpLGk9ZHQobik7ZXQodGhpcyxpLmNyZWF0ZShuKSl9YWR2YW5jZShlKXtjb25zdCB0PXRoaXMuX2dldCgpO1ModCx0aGlzLmdldCgpKXx8KEplKHRoaXMpLnNldFZhbHVlKHQpLHRoaXMuX29uQ2hhbmdlKHQsdGhpcy5pZGxlKSksIXRoaXMuaWRsZSYmSW4odGhpcy5fYWN0aXZlKSYmX24odGhpcyl9X2dldCgpe2NvbnN0IGU9RS5hcnIodGhpcy5zb3VyY2UpP3RoaXMuc291cmNlLm1hcChBZSk6VChBZSh0aGlzLnNvdXJjZSkpO3JldHVybiB0aGlzLmNhbGMoLi4uZSl9X3N0YXJ0KCl7dGhpcy5pZGxlJiYhSW4odGhpcy5fYWN0aXZlKSYmKHRoaXMuaWRsZT0hMSxEKHR0KHRoaXMpLGU9PntlLmRvbmU9ITF9KSxBLnNraXBBbmltYXRpb24/KGEuYmF0Y2hlZFVwZGF0ZXMoKCk9PnRoaXMuYWR2YW5jZSgpKSxfbih0aGlzKSk6SC5zdGFydCh0aGlzKSl9X2F0dGFjaCgpe2xldCBlPTE7RChUKHRoaXMuc291cmNlKSx0PT57a2UodCkmJlllKHQsdGhpcyksSHQodCkmJih0LmlkbGV8fHRoaXMuX2FjdGl2ZS5hZGQodCksZT1NYXRoLm1heChlLHQucHJpb3JpdHkrMSkpfSksdGhpcy5wcmlvcml0eT1lLHRoaXMuX3N0YXJ0KCl9X2RldGFjaCgpe0QoVCh0aGlzLnNvdXJjZSksZT0+e2tlKGUpJiZUZShlLHRoaXMpfSksdGhpcy5fYWN0aXZlLmNsZWFyKCksX24odGhpcyl9ZXZlbnRPYnNlcnZlZChlKXsiY2hhbmdlIj09ZS50eXBlP2UuaWRsZT90aGlzLmFkdmFuY2UoKToodGhpcy5fYWN0aXZlLmFkZChlLnBhcmVudCksdGhpcy5fc3RhcnQoKSk6ImlkbGUiPT1lLnR5cGU/dGhpcy5fYWN0aXZlLmRlbGV0ZShlLnBhcmVudCk6InByaW9yaXR5Ij09ZS50eXBlJiYodGhpcy5wcmlvcml0eT1UKHRoaXMuc291cmNlKS5yZWR1Y2UoKGUsdCk9Pk1hdGgubWF4KGUsKEh0KHQpP3QucHJpb3JpdHk6MCkrMSksMCkpfX07ZnVuY3Rpb24gRm4oZSl7cmV0dXJuITEhPT1lLmlkbGV9ZnVuY3Rpb24gSW4oZSl7cmV0dXJuIWUuc2l6ZXx8QXJyYXkuZnJvbShlKS5ldmVyeShGbil9ZnVuY3Rpb24gX24oZSl7ZS5pZGxlfHwoZS5pZGxlPSEwLEQodHQoZSksZT0+e2UuZG9uZT0hMH0pLEVlKGUse3R5cGU6ImlkbGUiLHBhcmVudDplfSkpfXZhciBNbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0PjE/dC0xOjApLGk9MTtpPHQ7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIG5ldyBUbihlLG4pfTtBLmFzc2lnbih7Y3JlYXRlU3RyaW5nSW50ZXJwb2xhdG9yOkxlLHRvOihlLHQpPT5uZXcgVG4oZSx0KX0pO0guYWR2YW5jZTt2YXIgTm49big5NjQ1KSxPbj0vXi0tLztmdW5jdGlvbiBSbihlLHQpe3JldHVybiBudWxsPT10fHwiYm9vbGVhbiI9PXR5cGVvZiB0fHwiIj09PXQ/IiI6Im51bWJlciIhPXR5cGVvZiB0fHwwPT09dHx8T24udGVzdChlKXx8UG4uaGFzT3duUHJvcGVydHkoZSkmJlBuW2VdPygiIit0KS50cmltKCk6dCsicHgifXZhciBqbj17fTt2YXIgUG49e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlckltYWdlU2xpY2U6ITAsYm9yZGVySW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDohMCxib3hPcmRpbmFsR3JvdXA6ITAsY29sdW1uQ291bnQ6ITAsY29sdW1uczohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFydDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblNwYW46ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LHpuPVsiV2Via2l0IiwiTXMiLCJNb3oiLCJPIl07UG49T2JqZWN0LmtleXMoUG4pLnJlZHVjZSgoZSx0KT0+KHpuLmZvckVhY2gobj0+ZVsoKGUsdCk9PmUrdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnN1YnN0cmluZygxKSkobix0KV09ZVt0XSksZSksUG4pO3ZhciBMbj0vXihtYXRyaXh8dHJhbnNsYXRlfHNjYWxlfHJvdGF0ZXxza2V3KS8sVW49L14odHJhbnNsYXRlKS8sQm49L14ocm90YXRlfHNrZXcpLyxIbj0oZSx0KT0+RS5udW0oZSkmJjAhPT1lP2UrdDplLHFuPShlLHQpPT5FLmFycihlKT9lLmV2ZXJ5KGU9PnFuKGUsdCkpOkUubnVtKGUpP2U9PT10OnBhcnNlRmxvYXQoZSk9PT10LFZuPWNsYXNzIGV4dGVuZHMgcnR7Y29uc3RydWN0b3IoZSl7bGV0e3g6dCx5Om4sejppLC4uLmF9PWU7Y29uc3Qgbz1bXSxyPVtdOyh0fHxufHxpKSYmKG8ucHVzaChbdHx8MCxufHwwLGl8fDBdKSxyLnB1c2goZT0+W2B0cmFuc2xhdGUzZCgke2UubWFwKGU9PkhuKGUsInB4IikpLmpvaW4oIiwiKX0pYCxxbihlLDApXSkpLFkoYSwoZSx0KT0+e2lmKCJ0cmFuc2Zvcm0iPT09dClvLnB1c2goW2V8fCIiXSksci5wdXNoKGU9PltlLCIiPT09ZV0pO2Vsc2UgaWYoTG4udGVzdCh0KSl7aWYoZGVsZXRlIGFbdF0sRS51bmQoZSkpcmV0dXJuO2NvbnN0IG49VW4udGVzdCh0KT8icHgiOkJuLnRlc3QodCk/ImRlZyI6IiI7by5wdXNoKFQoZSkpLHIucHVzaCgicm90YXRlM2QiPT09dD9lPT57bGV0W3QsaSxhLG9dPWU7cmV0dXJuW2Byb3RhdGUzZCgke3R9LCR7aX0sJHthfSwke0huKG8sbil9KWAscW4obywwKV19OmU9PltgJHt0fSgke2UubWFwKGU9PkhuKGUsbikpLmpvaW4oIiwiKX0pYCxxbihlLHQuc3RhcnRzV2l0aCgic2NhbGUiKT8xOjApXSl9fSksby5sZW5ndGgmJihhLnRyYW5zZm9ybT1uZXcgJG4obyxyKSksc3VwZXIoYSl9fSwkbj1jbGFzcyBleHRlbmRzIFNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLmlucHV0cz1lLHRoaXMudHJhbnNmb3Jtcz10LHRoaXMuX3ZhbHVlPW51bGx9Z2V0KCl7cmV0dXJuIHRoaXMuX3ZhbHVlfHwodGhpcy5fdmFsdWU9dGhpcy5fZ2V0KCkpfV9nZXQoKXtsZXQgZT0iIix0PSEwO3JldHVybiBEKHRoaXMuaW5wdXRzLChuLGkpPT57Y29uc3QgYT1BZShuWzBdKSxbbyxyXT10aGlzLnRyYW5zZm9ybXNbaV0oRS5hcnIoYSk/YTpuLm1hcChBZSkpO2UrPSIgIitvLHQ9dCYmcn0pLHQ/Im5vbmUiOmV9b2JzZXJ2ZXJBZGRlZChlKXsxPT1lJiZEKHRoaXMuaW5wdXRzLGU9PkQoZSxlPT5rZShlKSYmWWUoZSx0aGlzKSkpfW9ic2VydmVyUmVtb3ZlZChlKXswPT1lJiZEKHRoaXMuaW5wdXRzLGU9PkQoZSxlPT5rZShlKSYmVGUoZSx0aGlzKSkpfWV2ZW50T2JzZXJ2ZWQoZSl7ImNoYW5nZSI9PWUudHlwZSYmKHRoaXMuX3ZhbHVlPW51bGwpLEVlKHRoaXMsZSl9fTtBLmFzc2lnbih7YmF0Y2hlZFVwZGF0ZXM6Tm4udW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMsY3JlYXRlU3RyaW5nSW50ZXJwb2xhdG9yOkxlLGNvbG9yczp7dHJhbnNwYXJlbnQ6MCxhbGljZWJsdWU6NDA0Mjg1MDMwMyxhbnRpcXVld2hpdGU6NDIwOTc2MDI1NSxhcXVhOjE2Nzc3MjE1LGFxdWFtYXJpbmU6MjE0NzQ3MjYzOSxhenVyZTo0MDQzMzA5MDU1LGJlaWdlOjQxMjY1MzA4MTUsYmlzcXVlOjQyOTMxODI3MTksYmxhY2s6MjU1LGJsYW5jaGVkYWxtb25kOjQyOTM2NDM3NzUsYmx1ZTo2NTUzNSxibHVldmlvbGV0OjIzMTgxMzE5NjcsYnJvd246Mjc3MTAwNDE1OSxidXJseXdvb2Q6MzczNjYzNTM5MSxidXJudHNpZW5uYTozOTM0MTUwMTQzLGNhZGV0Ymx1ZToxNjA0MjMxNDIzLGNoYXJ0cmV1c2U6MjE0NzQxODM2NyxjaG9jb2xhdGU6MzUzMDEwNDU3NSxjb3JhbDo0Mjg2NTMzODg3LGNvcm5mbG93ZXJibHVlOjE2ODc1NDczOTEsY29ybnNpbGs6NDI5NDQ5OTU4Myxjcmltc29uOjM2OTIzMTM4NTUsY3lhbjoxNjc3NzIxNSxkYXJrYmx1ZTozNTgzOSxkYXJrY3lhbjo5MTQ1MzQzLGRhcmtnb2xkZW5yb2Q6MzA5NTc5MjYzOSxkYXJrZ3JheToyODQ2NDY4NjA3LGRhcmtncmVlbjo2NTUzODU1LGRhcmtncmV5OjI4NDY0Njg2MDcsZGFya2toYWtpOjMxODI5MTQ1NTksZGFya21hZ2VudGE6MjMzMjA2ODg2MyxkYXJrb2xpdmVncmVlbjoxNDMzMDg3OTk5LGRhcmtvcmFuZ2U6NDI4NzM2NTM3NSxkYXJrb3JjaGlkOjI1NzAyNDMzMjcsZGFya3JlZDoyMzMyMDMzMjc5LGRhcmtzYWxtb246MzkxODk1MzIxNSxkYXJrc2VhZ3JlZW46MjQxMTQ5OTUxOSxkYXJrc2xhdGVibHVlOjEyMTE5OTMwODcsZGFya3NsYXRlZ3JheTo3OTM3MjY5NzUsZGFya3NsYXRlZ3JleTo3OTM3MjY5NzUsZGFya3R1cnF1b2lzZToxMzU1NDE3NSxkYXJrdmlvbGV0OjI0ODMwODIyMzksZGVlcHBpbms6NDI3OTUzODY4NyxkZWVwc2t5Ymx1ZToxMjU4MjkxMSxkaW1ncmF5OjE3Njg1MTYwOTUsZGltZ3JleToxNzY4NTE2MDk1LGRvZGdlcmJsdWU6NTEyODE5MTk5LGZpcmVicmljazoyOTg4NTgxNjMxLGZsb3JhbHdoaXRlOjQyOTQ2MzU3NzUsZm9yZXN0Z3JlZW46NTc5NTQzODA3LGZ1Y2hzaWE6NDI3ODI1NTYxNSxnYWluc2Jvcm86MzcwNTQ2MjAxNSxnaG9zdHdoaXRlOjQxNzcwNjgwMzEsZ29sZDo0MjkyMjgwNTc1LGdvbGRlbnJvZDozNjY4MjU0OTc1LGdyYXk6MjE1NTkwNTI3OSxncmVlbjo4Mzg4ODYzLGdyZWVueWVsbG93OjI5MTkxODIzMzUsZ3JleToyMTU1OTA1Mjc5LGhvbmV5ZGV3OjQwNDMzMDUyMTUsaG90cGluazo0Mjg1MTE3Njk1LGluZGlhbnJlZDozNDQ1MzgyMzk5LGluZGlnbzoxMjU4MzI0NzM1LGl2b3J5OjQyOTQ5NjM0NTUsa2hha2k6NDA0MTY0MTIxNSxsYXZlbmRlcjozODczODk3MjE1LGxhdmVuZGVyYmx1c2g6NDI5Mzk4MTY5NSxsYXduZ3JlZW46MjA5Njg5MDExMSxsZW1vbmNoaWZmb246NDI5NDYyNjgxNSxsaWdodGJsdWU6MjkxNjY3MzI3OSxsaWdodGNvcmFsOjQwMzQ5NTM0NzEsbGlnaHRjeWFuOjM3NzQ4NzM1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6NDIxMDc0MjAxNSxsaWdodGdyYXk6MzU1Mzg3NDk0MyxsaWdodGdyZWVuOjI0MzE1NTM3OTEsbGlnaHRncmV5OjM1NTM4NzQ5NDMsbGlnaHRwaW5rOjQyOTAxNjcyOTUsbGlnaHRzYWxtb246NDI4ODcwNzMyNyxsaWdodHNlYWdyZWVuOjU0ODU4MDA5NSxsaWdodHNreWJsdWU6MjI3ODQ4ODgzMSxsaWdodHNsYXRlZ3JheToyMDA1NDQxMDIzLGxpZ2h0c2xhdGVncmV5OjIwMDU0NDEwMjMsbGlnaHRzdGVlbGJsdWU6Mjk2NTY5MjE1OSxsaWdodHllbGxvdzo0Mjk0OTU5MzU5LGxpbWU6MTY3MTE5MzUsbGltZWdyZWVuOjg1MjMwODczNSxsaW5lbjo0MjEwMDkxNzc1LG1hZ2VudGE6NDI3ODI1NTYxNSxtYXJvb246MjE0NzQ4MzkwMyxtZWRpdW1hcXVhbWFyaW5lOjE3MjQ3NTQ2ODcsbWVkaXVtYmx1ZTo1MjczNSxtZWRpdW1vcmNoaWQ6MzEyNjE4NzAwNyxtZWRpdW1wdXJwbGU6MjQ3MzY0NzEwMyxtZWRpdW1zZWFncmVlbjoxMDE4MzkzMDg3LG1lZGl1bXNsYXRlYmx1ZToyMDcwNDc0NDk1LG1lZGl1bXNwcmluZ2dyZWVuOjE2NDIzNjc5LG1lZGl1bXR1cnF1b2lzZToxMjIxNzA5MDU1LG1lZGl1bXZpb2xldHJlZDozMzQwMDc2NTQzLG1pZG5pZ2h0Ymx1ZTo0MjEwOTc3MjcsbWludGNyZWFtOjQxMjcxOTM4NTUsbWlzdHlyb3NlOjQyOTMxOTAxNDMsbW9jY2FzaW46NDI5MzE3ODg3OSxuYXZham93aGl0ZTo0MjkyNzgzNjE1LG5hdnk6MzMwMjMsb2xkbGFjZTo0MjYwNzUxMTAzLG9saXZlOjIxNTU4NzI1MTEsb2xpdmVkcmFiOjE4MDQ0Nzc0Mzksb3JhbmdlOjQyODkwMDM3NzUsb3JhbmdlcmVkOjQyODI3MTIzMTksb3JjaGlkOjM2NjQ4MjgxNTkscGFsZWdvbGRlbnJvZDo0MDA4MjI1NTM1LHBhbGVncmVlbjoyNTY2NjI1NTM1LHBhbGV0dXJxdW9pc2U6Mjk1MTY3MTU1MSxwYWxldmlvbGV0cmVkOjM2ODE1ODgyMjMscGFwYXlhd2hpcDo0MjkzOTA3OTY3LHBlYWNocHVmZjo0MjkyNTI0NTQzLHBlcnU6MzQ0ODA2MTk1MSxwaW5rOjQyOTA4MjUyMTUscGx1bTozNzE4MzA3MzI3LHBvd2RlcmJsdWU6Mjk2NzUyOTIxNSxwdXJwbGU6MjE0NzUxNjY3MSxyZWJlY2NhcHVycGxlOjE3MTQ2NTc3OTEscmVkOjQyNzgxOTAzMzUscm9zeWJyb3duOjMxNjM1MjUxMTkscm95YWxibHVlOjEwOTc0NTgxNzUsc2FkZGxlYnJvd246MjMzNjU2MDEyNyxzYWxtb246NDIwMjcyMjA0NyxzYW5keWJyb3duOjQxMDQ0MTM0Mzksc2VhZ3JlZW46NzgwODgzOTY3LHNlYXNoZWxsOjQyOTQzMDc1ODMsc2llbm5hOjI2ODk3NDAyODcsc2lsdmVyOjMyMzM4NTc3OTEsc2t5Ymx1ZToyMjc4NDg0OTkxLHNsYXRlYmx1ZToxNzg0MzM1ODcxLHNsYXRlZ3JheToxODg3NDczOTE5LHNsYXRlZ3JleToxODg3NDczOTE5LHNub3c6NDI5NDYzODMzNSxzcHJpbmdncmVlbjoxNjc0NDQ0NyxzdGVlbGJsdWU6MTE4Mjk3MTEzNSx0YW46MzUzNTA0NzkzNSx0ZWFsOjg0MjE2MzEsdGhpc3RsZTozNjM2NDUxNTgzLHRvbWF0bzo0Mjg0Njk2NTc1LHR1cnF1b2lzZToxMDg4NDc1MzkxLHZpb2xldDo0MDAxNTU4MjcxLHdoZWF0OjQxMjUwMTI5OTEsd2hpdGU6NDI5NDk2NzI5NSx3aGl0ZXNtb2tlOjQxMjY1MzcyMTUseWVsbG93OjQyOTQ5MDIwMTUseWVsbG93Z3JlZW46MjU5NzEzOTE5OX19KTt2YXIgV249ZnVuY3Rpb24oZSl7bGV0e2FwcGx5QW5pbWF0ZWRWYWx1ZXM6dD0oKT0+ITEsY3JlYXRlQW5pbWF0ZWRTdHlsZTpuPWU9Pm5ldyBydChlKSxnZXRDb21wb25lbnRQcm9wczppPWU9PmV9PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtjb25zdCBhPXthcHBseUFuaW1hdGVkVmFsdWVzOnQsY3JlYXRlQW5pbWF0ZWRTdHlsZTpuLGdldENvbXBvbmVudFByb3BzOml9LG89ZT0+e2NvbnN0IHQ9ZnQoZSl8fCJBbm9ueW1vdXMiO3JldHVybihlPUUuc3RyKGUpP29bZV18fChvW2VdPWN0KGUsYSkpOmVbcHRdfHwoZVtwdF09Y3QoZSxhKSkpLmRpc3BsYXlOYW1lPWBBbmltYXRlZCgke3R9KWAsZX07cmV0dXJuIFkoZSwodCxuKT0+e0UuYXJyKGUpJiYobj1mdCh0KSksb1tuXT1vKHQpfSkse2FuaW1hdGVkOm99fShbImEiLCJhYmJyIiwiYWRkcmVzcyIsImFyZWEiLCJhcnRpY2xlIiwiYXNpZGUiLCJhdWRpbyIsImIiLCJiYXNlIiwiYmRpIiwiYmRvIiwiYmlnIiwiYmxvY2txdW90ZSIsImJvZHkiLCJiciIsImJ1dHRvbiIsImNhbnZhcyIsImNhcHRpb24iLCJjaXRlIiwiY29kZSIsImNvbCIsImNvbGdyb3VwIiwiZGF0YSIsImRhdGFsaXN0IiwiZGQiLCJkZWwiLCJkZXRhaWxzIiwiZGZuIiwiZGlhbG9nIiwiZGl2IiwiZGwiLCJkdCIsImVtIiwiZW1iZWQiLCJmaWVsZHNldCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJmb290ZXIiLCJmb3JtIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhlYWRlciIsImhncm91cCIsImhyIiwiaHRtbCIsImkiLCJpZnJhbWUiLCJpbWciLCJpbnB1dCIsImlucyIsImtiZCIsImtleWdlbiIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWFpbiIsIm1hcCIsIm1hcmsiLCJtZW51IiwibWVudWl0ZW0iLCJtZXRhIiwibWV0ZXIiLCJuYXYiLCJub3NjcmlwdCIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJvdXRwdXQiLCJwIiwicGFyYW0iLCJwaWN0dXJlIiwicHJlIiwicHJvZ3Jlc3MiLCJxIiwicnAiLCJydCIsInJ1YnkiLCJzIiwic2FtcCIsInNjcmlwdCIsInNlY3Rpb24iLCJzZWxlY3QiLCJzbWFsbCIsInNvdXJjZSIsInNwYW4iLCJzdHJvbmciLCJzdHlsZSIsInN1YiIsInN1bW1hcnkiLCJzdXAiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0aXRsZSIsInRyIiwidHJhY2siLCJ1IiwidWwiLCJ2YXIiLCJ2aWRlbyIsIndiciIsImNpcmNsZSIsImNsaXBQYXRoIiwiZGVmcyIsImVsbGlwc2UiLCJmb3JlaWduT2JqZWN0IiwiZyIsImltYWdlIiwibGluZSIsImxpbmVhckdyYWRpZW50IiwibWFzayIsInBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsR3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN2ZyIsInRleHQiLCJ0c3BhbiJdLHthcHBseUFuaW1hdGVkVmFsdWVzOmZ1bmN0aW9uKGUsdCl7aWYoIWUubm9kZVR5cGV8fCFlLnNldEF0dHJpYnV0ZSlyZXR1cm4hMTtjb25zdCBuPSJmaWx0ZXIiPT09ZS5ub2RlTmFtZXx8ZS5wYXJlbnROb2RlJiYiZmlsdGVyIj09PWUucGFyZW50Tm9kZS5ub2RlTmFtZSx7Y2xhc3NOYW1lOmksc3R5bGU6YSxjaGlsZHJlbjpvLHNjcm9sbFRvcDpyLHNjcm9sbExlZnQ6cyx2aWV3Qm94OmwsLi4uZH09dCxjPU9iamVjdC52YWx1ZXMoZCksdT1PYmplY3Qua2V5cyhkKS5tYXAodD0+bnx8ZS5oYXNBdHRyaWJ1dGUodCk/dDpqblt0XXx8KGpuW3RdPXQucmVwbGFjZSgvKFtBLVpdKS9nLGU9PiItIitlLnRvTG93ZXJDYXNlKCkpKSk7dm9pZCAwIT09byYmKGUudGV4dENvbnRlbnQ9byk7Zm9yKGNvbnN0IHQgaW4gYSlpZihhLmhhc093blByb3BlcnR5KHQpKXtjb25zdCBuPVJuKHQsYVt0XSk7T24udGVzdCh0KT9lLnN0eWxlLnNldFByb3BlcnR5KHQsbik6ZS5zdHlsZVt0XT1ufXUuZm9yRWFjaCgodCxuKT0+e2Uuc2V0QXR0cmlidXRlKHQsY1tuXSl9KSx2b2lkIDAhPT1pJiYoZS5jbGFzc05hbWU9aSksdm9pZCAwIT09ciYmKGUuc2Nyb2xsVG9wPXIpLHZvaWQgMCE9PXMmJihlLnNjcm9sbExlZnQ9cyksdm9pZCAwIT09bCYmZS5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLGwpfSxjcmVhdGVBbmltYXRlZFN0eWxlOmU9Pm5ldyBWbihlKSxnZXRDb21wb25lbnRQcm9wczplPT57bGV0e3Njcm9sbFRvcDp0LHNjcm9sbExlZnQ6biwuLi5pfT1lO3JldHVybiBpfX0pLEtuPVduLmFuaW1hdGVkfSwxNDY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7VjpmdW5jdGlvbigpe3JldHVybiBhfSxiOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7Y29uc3QgaT17bmFtZToiMTFjNmpuaSIsc3R5bGVzOiJwYWRkaW5nOjhweCAxMnB4O2JhY2tncm91bmQ6cmdiYSgyMjAsIDIzMywgMjU1LCAwLjQwKTtjb2xvcjojNjQ3NDkxO3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MTRweDtib3JkZXItcmFkaXVzOjRweCAxMnB4IDEycHggMTJweDtnYXA6MTJweDtzdmd7ZmlsbDojMDU2NkZGO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7ZmxleC1zaHJpbms6MDt9In0sYT17bmFtZToicDlqZXI0IixzdHlsZXM6ImNvbG9yOiMwNTY2RkY7bGluZS1oZWlnaHQ6MjBweDttYXJnaW4tdG9wOjJweDsmOmZvY3Vze291dGxpbmU6bm9uZTt9In19LDIzMjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkZyYW1lPXZvaWQgMDt2YXIgaT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciBpIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4saSkmJihlW2ldPW5baV0pfXJldHVybiBlfSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaS5rZXksaSl9fXJldHVybiBmdW5jdGlvbih0LG4saSl7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksaSYmZSh0LGkpLHR9fSgpLG89bigzNDgwKSxyPXUobykscz11KG4oOTY0NSkpLGw9dShuKDIyMDApKSxkPW4oNTQwOSksYz11KG4oNzM1OSkpO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBwPXQuRnJhbWU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4peyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO3ZhciBpPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcyxlLG4pKTtyZXR1cm4gaS5zZXRSZWY9ZnVuY3Rpb24oZSl7aS5ub2RlUmVmLmN1cnJlbnQ9ZSxlJiYoZS5zcmNkb2N8fGkuaGFuZGxlTG9hZCgpKTt2YXIgdD1pLnByb3BzLmZvcndhcmRlZFJlZjsiZnVuY3Rpb24iPT10eXBlb2YgdD90KGUpOnQmJih0LmN1cnJlbnQ9ZSl9LGkuaGFuZGxlTG9hZD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoaS5sb2FkQ2hlY2spLGkuc3RhdGUuaWZyYW1lTG9hZGVkfHxpLnNldFN0YXRlKHtpZnJhbWVMb2FkZWQ6ITB9KX0saS5sb2FkQ2hlY2s9ZnVuY3Rpb24oKXtyZXR1cm4gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtpLmhhbmRsZUxvYWQoKX0sNTAwKX0saS5faXNNb3VudGVkPSExLGkubm9kZVJlZj1yLmRlZmF1bHQuY3JlYXRlUmVmKCksaS5zdGF0ZT17aWZyYW1lTG9hZGVkOiExfSxpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksYSh0LFt7a2V5OiJjb21wb25lbnREaWRNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9pc01vdW50ZWQ9ITAsdGhpcy5nZXREb2MoKSYmdGhpcy5ub2RlUmVmLmN1cnJlbnQuY29udGVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIix0aGlzLmhhbmRsZUxvYWQpfX0se2tleToiY29tcG9uZW50V2lsbFVubW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5faXNNb3VudGVkPSExLHRoaXMubm9kZVJlZi5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHRoaXMuaGFuZGxlTG9hZCl9fSx7a2V5OiJnZXREb2MiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZVJlZi5jdXJyZW50P3RoaXMubm9kZVJlZi5jdXJyZW50LmNvbnRlbnREb2N1bWVudDpudWxsfX0se2tleToiZ2V0TW91bnRUYXJnZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXREb2MoKTtpZih0aGlzLnByb3BzLm1vdW50VGFyZ2V0KXJldHVybiBlLnF1ZXJ5U2VsZWN0b3IodGhpcy5wcm9wcy5tb3VudFRhcmdldCk7aWYoMD09PWU/LmJvZHk/LmNoaWxkcmVuPy5sZW5ndGgpe3RoaXMucHJvcHMubm9TcmNEb2NCb2R5UHJvcHMmJk9iamVjdC5lbnRyaWVzKHRoaXMucHJvcHMubm9TcmNEb2NCb2R5UHJvcHMpLmZvckVhY2godD0+e2xldFtuLGldPXQ7ZS5ib2R5LnNldEF0dHJpYnV0ZShuLGkpfSksdGhpcy5wcm9wcy5ub1NyY0RvY0hlYWRUYWdzJiYoZS5oZWFkLmlubmVySFRNTD10aGlzLnByb3BzLm5vU3JjRG9jSGVhZFRhZ3MpO3ZhciB0PWUuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZS5ib2R5LmFwcGVuZENoaWxkKHQpfXJldHVybiBlLmJvZHkuY2hpbGRyZW5bMF19fSx7a2V5OiJyZW5kZXJGcmFtZUNvbnRlbnRzIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLl9pc01vdW50ZWQpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5nZXREb2MoKTtpZighZSlyZXR1cm4gbnVsbDt2YXIgdD10aGlzLnByb3BzLmNvbnRlbnREaWRNb3VudCxuPXRoaXMucHJvcHMuY29udGVudERpZFVwZGF0ZSxpPWUuZGVmYXVsdFZpZXd8fGUucGFyZW50VmlldyxhPXIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGMuZGVmYXVsdCx7Y29udGVudERpZE1vdW50OnQsY29udGVudERpZFVwZGF0ZTpufSxyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkLkZyYW1lQ29udGV4dFByb3ZpZGVyLHt2YWx1ZTp7ZG9jdW1lbnQ6ZSx3aW5kb3c6aX19LHIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImZyYW1lLWNvbnRlbnQifSx0aGlzLnByb3BzLmNoaWxkcmVuKSkpLG89dGhpcy5nZXRNb3VudFRhcmdldCgpO3JldHVybiBvP1tzLmRlZmF1bHQuY3JlYXRlUG9ydGFsKHRoaXMucHJvcHMuaGVhZCx0aGlzLmdldERvYygpLmhlYWQpLHMuZGVmYXVsdC5jcmVhdGVQb3J0YWwoYSxvKV06bnVsbH19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1pKHt9LHRoaXMucHJvcHMse3NyY0RvYzp0aGlzLnByb3BzLmluaXRpYWxDb250ZW50LGNoaWxkcmVuOnZvaWQgMH0pO3JldHVybiBkZWxldGUgZS5oZWFkLGRlbGV0ZSBlLmluaXRpYWxDb250ZW50LGRlbGV0ZSBlLm1vdW50VGFyZ2V0LGRlbGV0ZSBlLmNvbnRlbnREaWRNb3VudCxkZWxldGUgZS5jb250ZW50RGlkVXBkYXRlLGRlbGV0ZSBlLmZvcndhcmRlZFJlZixkZWxldGUgZS5ub1NyY0RvY0JvZHlQcm9wcyxkZWxldGUgZS5ub1NyY0RvY0hlYWRUYWdzLHIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiLGkoe30sZSx7cmVmOnRoaXMuc2V0UmVmLG9uTG9hZDp0aGlzLmhhbmRsZUxvYWR9KSx0aGlzLnN0YXRlLmlmcmFtZUxvYWRlZCYmdGhpcy5yZW5kZXJGcmFtZUNvbnRlbnRzKCkpfX1dKSx0fShvLkNvbXBvbmVudCk7cC5wcm9wVHlwZXM9e3N0eWxlOmwuZGVmYXVsdC5vYmplY3QsaGVhZDpsLmRlZmF1bHQubm9kZSxpbml0aWFsQ29udGVudDpsLmRlZmF1bHQuc3RyaW5nLG1vdW50VGFyZ2V0OmwuZGVmYXVsdC5zdHJpbmcsY29udGVudERpZE1vdW50OmwuZGVmYXVsdC5mdW5jLGNvbnRlbnREaWRVcGRhdGU6bC5kZWZhdWx0LmZ1bmMsY2hpbGRyZW46bC5kZWZhdWx0Lm9uZU9mVHlwZShbbC5kZWZhdWx0LmVsZW1lbnQsbC5kZWZhdWx0LmFycmF5T2YobC5kZWZhdWx0LmVsZW1lbnQpXSksbm9TcmNEb2NCb2R5UHJvcHM6bC5kZWZhdWx0Lm9iamVjdCxub1NyY0RvY0hlYWRUYWdzOmwuZGVmYXVsdC5zdHJpbmd9LHAuZGVmYXVsdFByb3BzPXtzdHlsZTp7fSxoZWFkOm51bGwsY2hpbGRyZW46dm9pZCAwLG1vdW50VGFyZ2V0OnZvaWQgMCxjb250ZW50RGlkTW91bnQ6ZnVuY3Rpb24oKXt9LGNvbnRlbnREaWRVcGRhdGU6ZnVuY3Rpb24oKXt9LGluaXRpYWxDb250ZW50Oic8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+PGRpdiBjbGFzcz0iZnJhbWUtcm9vdCI+PC9kaXY+PC9ib2R5PjwvaHRtbD4nLG5vU3JjRG9jQm9keVByb3BzOnZvaWQgMCxub1NyY0RvY0hlYWRUYWdzOnZvaWQgMH0sdC5kZWZhdWx0PXIuZGVmYXVsdC5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHAsaSh7fSxlLHtmb3J3YXJkZWRSZWY6dH0pKX0pfSw2MDA6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDg3MjcpLGE9bigzMTE3KSxvPW4oOTcyOSkscj1uKDExNjkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3QmJiJzdHJpbmciPT10eXBlb2YgZXx8YShlKTt2YXIgbj1yKGUpO3JldHVybiBvKGEodm9pZCAwIT09bj9pKG4sZSk6ZSkpfX0sMTgxODpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBpLGE9big4OTY2KSxvPShpPWEpJiZpLl9fZXNNb2R1bGU/aTp7ZGVmYXVsdDppfTt2YXIgcj0tMTtmdW5jdGlvbiBzKGUsdCl7aWYoZT09PXIpcmV0dXJuIG8uZGVmYXVsdC50cmFuc2Zvcm0odCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIm5hbWUiLHt2YWx1ZToic3R5bGlzUlRMUGx1Z2luIn0pLHQuQXk9c30sMjIwMDpmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oNjAwMikoKX0sMjQyMTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oMzkzMiksYT1uKDg3MjcpLG89big4MDApLHI9bigzMTE3KSxzPW4oOTcyOSksbD1uKDYwMCksZD1uKDg1MjQpLGM9bigzOTc3KSx1PW4oNzcwOSkscD1uKDE1MTApLGY9big3MzY4KSxtPSF1JiYhcCgiZmxhdE1hcCIsZnVuY3Rpb24oKXt9KSxoPSF1JiYhbSYmZigiZmxhdE1hcCIsVHlwZUVycm9yKSxnPXV8fG18fGgsYj1kKGZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQsbj10aGlzLml0ZXJhdG9yLGk9dGhpcy5tYXBwZXI7Oyl7aWYodD10aGlzLmlubmVyKXRyeXtpZighKGU9cihhKHQubmV4dCx0Lml0ZXJhdG9yKSkpLmRvbmUpcmV0dXJuIGUudmFsdWU7dGhpcy5pbm5lcj1udWxsfWNhdGNoKGUpe2MobiwidGhyb3ciLGUpfWlmKGU9cihhKHRoaXMubmV4dCxuKSksdGhpcy5kb25lPSEhZS5kb25lKXJldHVybjt0cnl7dGhpcy5pbm5lcj1sKGkoZS52YWx1ZSx0aGlzLmNvdW50ZXIrKyksITEpfWNhdGNoKGUpe2MobiwidGhyb3ciLGUpfX19KTtpKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpnfSx7ZmxhdE1hcDpmdW5jdGlvbihlKXtyKHRoaXMpO3RyeXtvKGUpfWNhdGNoKGUpe2ModGhpcywidGhyb3ciLGUpfXJldHVybiBoP2EoaCx0aGlzLGUpOm5ldyBiKHModGhpcykse21hcHBlcjplLGlubmVyOm51bGx9KX19KX0sMzY2MjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0KXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGkoZSx0KX1uLmQodCx7QTpmdW5jdGlvbigpe3JldHVybiBpfX0pfSw0MDE5OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse0tzOmZ1bmN0aW9uKCl7cmV0dXJuIGJ9LGx6OmZ1bmN0aW9uKCl7cmV0dXJuIGd9fSk7big4MzU2KSxuKDU3MTgpLG4oNTg1NSk7dmFyIGk9bigzNDgwKSxhPW4oNDA1NSksbz1uKDE2Mikscj1uLm4obykscz1uKDg5NDgpLGw9big4OTQ1KSxkPW4oNTgzKSxjPW4oMzY1MCksdT1uKDk3ODgpLHA9big4Mjg5KTtjb25zdCBmPXIoKSgpLG09KDAsaS5jcmVhdGVDb250ZXh0KSh7c3RhdGU6bnVsbCxkaXNwYXRjaDooKT0+e30saWNlQ2FuZGlkYXRlc1F1ZXVlUmVmOm51bGx9KSxoPShlLHQpPT57c3dpdGNoKHQudHlwZSl7Y2FzZSJTRVRfT1BFUkFUT1JfVklERU9fQ0FMTF9PRkZFUiI6cmV0dXJuIGU/ey4uLmUsLi4udC5wYXlsb2FkfTp0LnBheWxvYWQ7Y2FzZSJSRVNFVF9PUEVSQVRPUl9WSURFT19DQUxMX09GRkVSIjpyZXR1cm4gbnVsbDtjYXNlIlNFVF9WSURFT0NBTExfSU5TVEFOQ0VfSUQiOnJldHVybiBlP3suLi5lLGluc3RhbmNlSWQ6dC5wYXlsb2FkLmluc3RhbmNlSWR9Om51bGw7ZGVmYXVsdDpyZXR1cm4gZX19LGc9KCk9Pntjb25zdCBlPSgwLGkudXNlQ29udGV4dCkobSk7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoInVzZVZpZGVvQ2FsbE9mZmVyIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBWaWRlb0NhbGxQcm92aWRlciIpO2NvbnN0IHQ9KDAsYS53QSkoKSxuPWUuZGlzcGF0Y2gse3N0YXRlOm99PWUscj1vPy5vcGVyYXRvcklkLHM9Qm9vbGVhbihvPy5vZmZlciksbD1vPy5pbnN0YW5jZUlkPT09ZjtyZXR1cm57c3RhdGU6byxyZXNldFZpZGVvQ2FsbDooMCxpLnVzZUNhbGxiYWNrKShlPT57ciYmcyYmKGx8fGU/LmZvcmNlKSYmdCgoMCxkLkFqUCkoe29wZXJhdG9ySWQ6cixvZmZlcjpudWxsfSkpLG4oe3R5cGU6IlJFU0VUX09QRVJBVE9SX1ZJREVPX0NBTExfT0ZGRVIifSl9LFtuLHQscixzLGxdKSxpbnN0YW5jZUlkOmZ9fSxiPWU9Pntjb25zdCB0PSgwLGkudXNlQ29udGV4dCkobSk7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoInVzZVZpZGVvQ2FsbE9mZmVyIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBWaWRlb0NhbGxQcm92aWRlciIpO2NvbnN0e2ljZUNhbmRpZGF0ZXNRdWV1ZVJlZjpufT10OygwLGkudXNlRWZmZWN0KSgoKT0+bC5BLnN1YnNjcmliZSgib3BlcmF0b3JWaWRlb0NhbGxJY2VDYW5kaWRhdGVzT2ZmZXJlZCIsdD0+e3QuaWNlQ2FuZGlkYXRlcy5mb3JFYWNoKHQ9Pnt0JiZlKHQpfSl9KSxbZV0pO3JldHVybntwb3BJbml0aWFsT3BlcmF0b3JJY2VDYW5kaWRhdGVzUG9vbDooMCxpLnVzZUNhbGxiYWNrKSgoKT0+e2lmKCFuKXJldHVybltdO2NvbnN0IGU9KDAscy5tZykobi5jdXJyZW50KTtyZXR1cm4gbi5jdXJyZW50PVtdLGV9LFtuXSl9fTt0LkF5PWU9PntsZXR7Y2hpbGRyZW46dH09ZTtjb25zdFtuLG9dPSgwLGkudXNlUmVkdWNlcikoaCxudWxsKSxyPSgwLGkudXNlUmVmKShbXSkscz0oMCxhLmQ0KShjLktaKSxnPSgwLGEud0EpKCksYj1uPy5pbnN0YW5jZUlkLHY9KDAsYS5kNCkoYy5PMSk7KDAsaS51c2VFZmZlY3QpKCgpPT5sLkEuc3Vic2NyaWJlKCJvcGVyYXRvclZpZGVvQ2FsbE9mZmVyZWQiLGU9PntlPy5vZmZlcj8oInN0cmluZyI9PXR5cGVvZiBlLm9mZmVyLmluc3RhbmNlSWQmJmUub2ZmZXIuaW5zdGFuY2VJZD09PWZ8fHZvaWQgMD09PWUub2ZmZXIuaW5zdGFuY2VJZCkmJihzIT09dS5Tcy5DSEFUJiZnKCgwLGQuZzZRKSh1LlNzLkNIQVQpKSwiY29udmVyc2F0aW9ucyIhPT12JiZnKCgwLGQucTd2KSgiY29udmVyc2F0aW9ucyIpKSxvKHt0eXBlOiJTRVRfT1BFUkFUT1JfVklERU9fQ0FMTF9PRkZFUiIscGF5bG9hZDplfSkpOihvKHt0eXBlOiJSRVNFVF9PUEVSQVRPUl9WSURFT19DQUxMX09GRkVSIn0pLHIuY3VycmVudD1bXSl9KSxbcyx2LGddKSwoMCxpLnVzZUVmZmVjdCkoKCk9PmwuQS5zdWJzY3JpYmUoIm9wZXJhdG9yVmlkZW9DYWxsSWNlQ2FuZGlkYXRlc09mZmVyZWQiLGU9PntlLmljZUNhbmRpZGF0ZXMuZm9yRWFjaChlPT57ZSYmci5jdXJyZW50LnB1c2goZSl9KX0pLFtdKSwoMCxpLnVzZUVmZmVjdCkoKCk9PmwuQS5zdWJzY3JpYmUoInZpc2l0b3JWaWRlb0NhbGxPZmZlciIsZT0+e2NvbnN0IHQ9ZT8ub2ZmZXI/Lmluc3RhbmNlSWQ7dCE9PWY/byh7dHlwZToiUkVTRVRfT1BFUkFUT1JfVklERU9fQ0FMTF9PRkZFUiJ9KTpiIT09dCYmbyh7dHlwZToiU0VUX1ZJREVPQ0FMTF9JTlNUQU5DRV9JRCIscGF5bG9hZDp7aW5zdGFuY2VJZDp0fX0pfSksW2JdKTtjb25zdCB4PSgwLGkudXNlTWVtbykoKCk9Pih7c3RhdGU6bixkaXNwYXRjaDpvLGljZUNhbmRpZGF0ZXNRdWV1ZVJlZjpyfSksW25dKTtyZXR1cm4oMCxwLlkpKG0uUHJvdmlkZXIse3ZhbHVlOngsY2hpbGRyZW46dH0pfX0sNDA2MjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24ucih0KSxuLmQodCx7YWRkSW1wb3J0YW50VG9EZWZhdWx0U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHF1fSxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuIG5wfX0pO3ZhciBpPW4oNDQ2NyksYT0obig1NzE4KSxuKDU4NTUpLG4oMjAyMCksbigzNDgwKSksbz1uKDUxMjYpLHI9big0MDU1KSxzPW4oNzM2NiksbD1uKDc4ODgpLGQ9big2MTc3KSxjPW4oMTAzKSx1PW4oMTgxOCkscD1uKDk1MzUpLGY9big4OTQ4KTtjb25zdCBtPWU9PntsZXQgdD1lLnJlcGxhY2UoIiMiLCIiKTszPT09dC5sZW5ndGgmJih0PXQuc3BsaXQoIiIpLm1hcChlPT5lK2UpLmpvaW4oIiIpKTtyZXR1cm4oMjk5KnBhcnNlSW50KHQuc2xpY2UoMCwyKSwxNikrNTg3KnBhcnNlSW50KHQuc2xpY2UoMiw0KSwxNikrMTE0KnBhcnNlSW50KHQuc2xpY2UoNCw2KSwxNikpLzFlMzwxNTV9O3ZhciBoPW4oMTg0MyksZz1uKDY5MjQpLGI9bigyMzE4KSx2PW4oNzMyNikseD1uKDY1NDIpLHk9big4NDQ4KSx3PW4oMjcyNCksaz1uKDU4MyksQT1uKDYwNTgpLEM9bigzNjUwKTt2YXIgRT1uKDgxNjgpLFM9big4NTg3KSxEPW4oMzY2Mik7ZnVuY3Rpb24gWShlLHQpe2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsKDAsRC5BKShlLHQpfWZ1bmN0aW9uIFQoZSx0KXtyZXR1cm4gZS5yZXBsYWNlKG5ldyBSZWdFeHAoIihefFxccykiK3QrIig/Olxcc3wkKSIsImciKSwiJDEiKS5yZXBsYWNlKC9ccysvZywiICIpLnJlcGxhY2UoL15ccyp8XHMqJC9nLCIiKX12YXIgRj1uKDk2NDUpLEk9ITEsXz1hLmNyZWF0ZUNvbnRleHQobnVsbCksTT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zY3JvbGxUb3B9LE49InVubW91bnRlZCIsTz0iZXhpdGVkIixSPSJlbnRlcmluZyIsaj0iZW50ZXJlZCIsUD0iZXhpdGluZyIsej1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7dmFyIGk7aT1lLmNhbGwodGhpcyx0LG4pfHx0aGlzO3ZhciBhLG89biYmIW4uaXNNb3VudGluZz90LmVudGVyOnQuYXBwZWFyO3JldHVybiBpLmFwcGVhclN0YXR1cz1udWxsLHQuaW4/bz8oYT1PLGkuYXBwZWFyU3RhdHVzPVIpOmE9ajphPXQudW5tb3VudE9uRXhpdHx8dC5tb3VudE9uRW50ZXI/TjpPLGkuc3RhdGU9e3N0YXR1czphfSxpLm5leHRDYWxsYmFjaz1udWxsLGl9WSh0LGUpLHQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaW4mJnQuc3RhdHVzPT09Tj97c3RhdHVzOk99Om51bGx9O3ZhciBuPXQucHJvdG90eXBlO3JldHVybiBuLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7dGhpcy51cGRhdGVTdGF0dXMoITAsdGhpcy5hcHBlYXJTdGF0dXMpfSxuLmNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1udWxsO2lmKGUhPT10aGlzLnByb3BzKXt2YXIgbj10aGlzLnN0YXRlLnN0YXR1czt0aGlzLnByb3BzLmluP24hPT1SJiZuIT09aiYmKHQ9Uik6biE9PVImJm4hPT1qfHwodD1QKX10aGlzLnVwZGF0ZVN0YXR1cyghMSx0KX0sbi5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCl9LG4uZ2V0VGltZW91dHM9ZnVuY3Rpb24oKXt2YXIgZSx0LG4saT10aGlzLnByb3BzLnRpbWVvdXQ7cmV0dXJuIGU9dD1uPWksbnVsbCE9aSYmIm51bWJlciIhPXR5cGVvZiBpJiYoZT1pLmV4aXQsdD1pLmVudGVyLG49dm9pZCAwIT09aS5hcHBlYXI/aS5hcHBlYXI6dCkse2V4aXQ6ZSxlbnRlcjp0LGFwcGVhcjpufX0sbi51cGRhdGVTdGF0dXM9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT1lJiYoZT0hMSksbnVsbCE9PXQpaWYodGhpcy5jYW5jZWxOZXh0Q2FsbGJhY2soKSx0PT09Uil7aWYodGhpcy5wcm9wcy51bm1vdW50T25FeGl0fHx0aGlzLnByb3BzLm1vdW50T25FbnRlcil7dmFyIG49dGhpcy5wcm9wcy5ub2RlUmVmP3RoaXMucHJvcHMubm9kZVJlZi5jdXJyZW50OkYuZmluZERPTU5vZGUodGhpcyk7biYmTShuKX10aGlzLnBlcmZvcm1FbnRlcihlKX1lbHNlIHRoaXMucGVyZm9ybUV4aXQoKTtlbHNlIHRoaXMucHJvcHMudW5tb3VudE9uRXhpdCYmdGhpcy5zdGF0ZS5zdGF0dXM9PT1PJiZ0aGlzLnNldFN0YXRlKHtzdGF0dXM6Tn0pfSxuLnBlcmZvcm1FbnRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy5wcm9wcy5lbnRlcixpPXRoaXMuY29udGV4dD90aGlzLmNvbnRleHQuaXNNb3VudGluZzplLGE9dGhpcy5wcm9wcy5ub2RlUmVmP1tpXTpbRi5maW5kRE9NTm9kZSh0aGlzKSxpXSxvPWFbMF0scj1hWzFdLHM9dGhpcy5nZXRUaW1lb3V0cygpLGw9aT9zLmFwcGVhcjpzLmVudGVyOyFlJiYhbnx8ST90aGlzLnNhZmVTZXRTdGF0ZSh7c3RhdHVzOmp9LGZ1bmN0aW9uKCl7dC5wcm9wcy5vbkVudGVyZWQobyl9KToodGhpcy5wcm9wcy5vbkVudGVyKG8sciksdGhpcy5zYWZlU2V0U3RhdGUoe3N0YXR1czpSfSxmdW5jdGlvbigpe3QucHJvcHMub25FbnRlcmluZyhvLHIpLHQub25UcmFuc2l0aW9uRW5kKGwsZnVuY3Rpb24oKXt0LnNhZmVTZXRTdGF0ZSh7c3RhdHVzOmp9LGZ1bmN0aW9uKCl7dC5wcm9wcy5vbkVudGVyZWQobyxyKX0pfSl9KSl9LG4ucGVyZm9ybUV4aXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcy5leGl0LG49dGhpcy5nZXRUaW1lb3V0cygpLGk9dGhpcy5wcm9wcy5ub2RlUmVmP3ZvaWQgMDpGLmZpbmRET01Ob2RlKHRoaXMpO3QmJiFJPyh0aGlzLnByb3BzLm9uRXhpdChpKSx0aGlzLnNhZmVTZXRTdGF0ZSh7c3RhdHVzOlB9LGZ1bmN0aW9uKCl7ZS5wcm9wcy5vbkV4aXRpbmcoaSksZS5vblRyYW5zaXRpb25FbmQobi5leGl0LGZ1bmN0aW9uKCl7ZS5zYWZlU2V0U3RhdGUoe3N0YXR1czpPfSxmdW5jdGlvbigpe2UucHJvcHMub25FeGl0ZWQoaSl9KX0pfSkpOnRoaXMuc2FmZVNldFN0YXRlKHtzdGF0dXM6T30sZnVuY3Rpb24oKXtlLnByb3BzLm9uRXhpdGVkKGkpfSl9LG4uY2FuY2VsTmV4dENhbGxiYWNrPWZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMubmV4dENhbGxiYWNrJiYodGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsKCksdGhpcy5uZXh0Q2FsbGJhY2s9bnVsbCl9LG4uc2FmZVNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7dD10aGlzLnNldE5leHRDYWxsYmFjayh0KSx0aGlzLnNldFN0YXRlKGUsdCl9LG4uc2V0TmV4dENhbGxiYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj0hMDtyZXR1cm4gdGhpcy5uZXh0Q2FsbGJhY2s9ZnVuY3Rpb24oaSl7biYmKG49ITEsdC5uZXh0Q2FsbGJhY2s9bnVsbCxlKGkpKX0sdGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsPWZ1bmN0aW9uKCl7bj0hMX0sdGhpcy5uZXh0Q2FsbGJhY2t9LG4ub25UcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKGUsdCl7dGhpcy5zZXROZXh0Q2FsbGJhY2sodCk7dmFyIG49dGhpcy5wcm9wcy5ub2RlUmVmP3RoaXMucHJvcHMubm9kZVJlZi5jdXJyZW50OkYuZmluZERPTU5vZGUodGhpcyksaT1udWxsPT1lJiYhdGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcjtpZihuJiYhaSl7aWYodGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcil7dmFyIGE9dGhpcy5wcm9wcy5ub2RlUmVmP1t0aGlzLm5leHRDYWxsYmFja106W24sdGhpcy5uZXh0Q2FsbGJhY2tdLG89YVswXSxyPWFbMV07dGhpcy5wcm9wcy5hZGRFbmRMaXN0ZW5lcihvLHIpfW51bGwhPWUmJnNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssZSl9ZWxzZSBzZXRUaW1lb3V0KHRoaXMubmV4dENhbGxiYWNrLDApfSxuLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUuc3RhdHVzO2lmKGU9PT1OKXJldHVybiBudWxsO3ZhciB0PXRoaXMucHJvcHMsbj10LmNoaWxkcmVuLGk9KHQuaW4sdC5tb3VudE9uRW50ZXIsdC51bm1vdW50T25FeGl0LHQuYXBwZWFyLHQuZW50ZXIsdC5leGl0LHQudGltZW91dCx0LmFkZEVuZExpc3RlbmVyLHQub25FbnRlcix0Lm9uRW50ZXJpbmcsdC5vbkVudGVyZWQsdC5vbkV4aXQsdC5vbkV4aXRpbmcsdC5vbkV4aXRlZCx0Lm5vZGVSZWYsKDAsUy5BKSh0LFsiY2hpbGRyZW4iLCJpbiIsIm1vdW50T25FbnRlciIsInVubW91bnRPbkV4aXQiLCJhcHBlYXIiLCJlbnRlciIsImV4aXQiLCJ0aW1lb3V0IiwiYWRkRW5kTGlzdGVuZXIiLCJvbkVudGVyIiwib25FbnRlcmluZyIsIm9uRW50ZXJlZCIsIm9uRXhpdCIsIm9uRXhpdGluZyIsIm9uRXhpdGVkIiwibm9kZVJlZiJdKSk7cmV0dXJuIGEuY3JlYXRlRWxlbWVudChfLlByb3ZpZGVyLHt2YWx1ZTpudWxsfSwiZnVuY3Rpb24iPT10eXBlb2Ygbj9uKGUsaSk6YS5jbG9uZUVsZW1lbnQoYS5DaGlsZHJlbi5vbmx5KG4pLGkpKX0sdH0oYS5Db21wb25lbnQpO2Z1bmN0aW9uIEwoKXt9ei5jb250ZXh0VHlwZT1fLHoucHJvcFR5cGVzPXt9LHouZGVmYXVsdFByb3BzPXtpbjohMSxtb3VudE9uRW50ZXI6ITEsdW5tb3VudE9uRXhpdDohMSxhcHBlYXI6ITEsZW50ZXI6ITAsZXhpdDohMCxvbkVudGVyOkwsb25FbnRlcmluZzpMLG9uRW50ZXJlZDpMLG9uRXhpdDpMLG9uRXhpdGluZzpMLG9uRXhpdGVkOkx9LHouVU5NT1VOVEVEPU4sei5FWElURUQ9Tyx6LkVOVEVSSU5HPVIsei5FTlRFUkVEPWosei5FWElUSU5HPVA7dmFyIFU9eixCPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnQmJnQuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBpPXQsdm9pZCgobj1lKS5jbGFzc0xpc3Q/bi5jbGFzc0xpc3QucmVtb3ZlKGkpOiJzdHJpbmciPT10eXBlb2Ygbi5jbGFzc05hbWU/bi5jbGFzc05hbWU9VChuLmNsYXNzTmFtZSxpKTpuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLFQobi5jbGFzc05hbWUmJm4uY2xhc3NOYW1lLmJhc2VWYWx8fCIiLGkpKSk7dmFyIG4saX0pfSxIPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtmb3IodmFyIHQsbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4pLGE9MDthPG47YSsrKWlbYV09YXJndW1lbnRzW2FdO3JldHVybih0PWUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQoaSkpfHx0aGlzKS5hcHBsaWVkQ2xhc3Nlcz17YXBwZWFyOnt9LGVudGVyOnt9LGV4aXQ6e319LHQub25FbnRlcj1mdW5jdGlvbihlLG4pe3ZhciBpPXQucmVzb2x2ZUFyZ3VtZW50cyhlLG4pLGE9aVswXSxvPWlbMV07dC5yZW1vdmVDbGFzc2VzKGEsImV4aXQiKSx0LmFkZENsYXNzKGEsbz8iYXBwZWFyIjoiZW50ZXIiLCJiYXNlIiksdC5wcm9wcy5vbkVudGVyJiZ0LnByb3BzLm9uRW50ZXIoZSxuKX0sdC5vbkVudGVyaW5nPWZ1bmN0aW9uKGUsbil7dmFyIGk9dC5yZXNvbHZlQXJndW1lbnRzKGUsbiksYT1pWzBdLG89aVsxXT8iYXBwZWFyIjoiZW50ZXIiO3QuYWRkQ2xhc3MoYSxvLCJhY3RpdmUiKSx0LnByb3BzLm9uRW50ZXJpbmcmJnQucHJvcHMub25FbnRlcmluZyhlLG4pfSx0Lm9uRW50ZXJlZD1mdW5jdGlvbihlLG4pe3ZhciBpPXQucmVzb2x2ZUFyZ3VtZW50cyhlLG4pLGE9aVswXSxvPWlbMV0/ImFwcGVhciI6ImVudGVyIjt0LnJlbW92ZUNsYXNzZXMoYSxvKSx0LmFkZENsYXNzKGEsbywiZG9uZSIpLHQucHJvcHMub25FbnRlcmVkJiZ0LnByb3BzLm9uRW50ZXJlZChlLG4pfSx0Lm9uRXhpdD1mdW5jdGlvbihlKXt2YXIgbj10LnJlc29sdmVBcmd1bWVudHMoZSlbMF07dC5yZW1vdmVDbGFzc2VzKG4sImFwcGVhciIpLHQucmVtb3ZlQ2xhc3NlcyhuLCJlbnRlciIpLHQuYWRkQ2xhc3MobiwiZXhpdCIsImJhc2UiKSx0LnByb3BzLm9uRXhpdCYmdC5wcm9wcy5vbkV4aXQoZSl9LHQub25FeGl0aW5nPWZ1bmN0aW9uKGUpe3ZhciBuPXQucmVzb2x2ZUFyZ3VtZW50cyhlKVswXTt0LmFkZENsYXNzKG4sImV4aXQiLCJhY3RpdmUiKSx0LnByb3BzLm9uRXhpdGluZyYmdC5wcm9wcy5vbkV4aXRpbmcoZSl9LHQub25FeGl0ZWQ9ZnVuY3Rpb24oZSl7dmFyIG49dC5yZXNvbHZlQXJndW1lbnRzKGUpWzBdO3QucmVtb3ZlQ2xhc3NlcyhuLCJleGl0IiksdC5hZGRDbGFzcyhuLCJleGl0IiwiZG9uZSIpLHQucHJvcHMub25FeGl0ZWQmJnQucHJvcHMub25FeGl0ZWQoZSl9LHQucmVzb2x2ZUFyZ3VtZW50cz1mdW5jdGlvbihlLG4pe3JldHVybiB0LnByb3BzLm5vZGVSZWY/W3QucHJvcHMubm9kZVJlZi5jdXJyZW50LGVdOltlLG5dfSx0LmdldENsYXNzTmFtZXM9ZnVuY3Rpb24oZSl7dmFyIG49dC5wcm9wcy5jbGFzc05hbWVzLGk9InN0cmluZyI9PXR5cGVvZiBuLGE9aT8iIisoaSYmbj9uKyItIjoiIikrZTpuW2VdO3JldHVybntiYXNlQ2xhc3NOYW1lOmEsYWN0aXZlQ2xhc3NOYW1lOmk/YSsiLWFjdGl2ZSI6bltlKyJBY3RpdmUiXSxkb25lQ2xhc3NOYW1lOmk/YSsiLWRvbmUiOm5bZSsiRG9uZSJdfX0sdH1ZKHQsZSk7dmFyIG49dC5wcm90b3R5cGU7cmV0dXJuIG4uYWRkQ2xhc3M9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXRoaXMuZ2V0Q2xhc3NOYW1lcyh0KVtuKyJDbGFzc05hbWUiXSxhPXRoaXMuZ2V0Q2xhc3NOYW1lcygiZW50ZXIiKS5kb25lQ2xhc3NOYW1lOyJhcHBlYXIiPT09dCYmImRvbmUiPT09biYmYSYmKGkrPSIgIithKSwiYWN0aXZlIj09PW4mJmUmJk0oZSksaSYmKHRoaXMuYXBwbGllZENsYXNzZXNbdF1bbl09aSxmdW5jdGlvbihlLHQpe2UmJnQmJnQuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBpPXQsdm9pZCgobj1lKS5jbGFzc0xpc3Q/bi5jbGFzc0xpc3QuYWRkKGkpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY2xhc3NMaXN0PyEhdCYmZS5jbGFzc0xpc3QuY29udGFpbnModCk6LTEhPT0oIiAiKyhlLmNsYXNzTmFtZS5iYXNlVmFsfHxlLmNsYXNzTmFtZSkrIiAiKS5pbmRleE9mKCIgIit0KyIgIil9KG4saSl8fCgic3RyaW5nIj09dHlwZW9mIG4uY2xhc3NOYW1lP24uY2xhc3NOYW1lPW4uY2xhc3NOYW1lKyIgIitpOm4uc2V0QXR0cmlidXRlKCJjbGFzcyIsKG4uY2xhc3NOYW1lJiZuLmNsYXNzTmFtZS5iYXNlVmFsfHwiIikrIiAiK2kpKSk7dmFyIG4saX0pfShlLGkpKX0sbi5yZW1vdmVDbGFzc2VzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5hcHBsaWVkQ2xhc3Nlc1t0XSxpPW4uYmFzZSxhPW4uYWN0aXZlLG89bi5kb25lO3RoaXMuYXBwbGllZENsYXNzZXNbdF09e30saSYmQihlLGkpLGEmJkIoZSxhKSxvJiZCKGUsbyl9LG4ucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PShlLmNsYXNzTmFtZXMsKDAsUy5BKShlLFsiY2xhc3NOYW1lcyJdKSk7cmV0dXJuIGEuY3JlYXRlRWxlbWVudChVLCgwLEUuQSkoe30sdCx7b25FbnRlcjp0aGlzLm9uRW50ZXIsb25FbnRlcmVkOnRoaXMub25FbnRlcmVkLG9uRW50ZXJpbmc6dGhpcy5vbkVudGVyaW5nLG9uRXhpdDp0aGlzLm9uRXhpdCxvbkV4aXRpbmc6dGhpcy5vbkV4aXRpbmcsb25FeGl0ZWQ6dGhpcy5vbkV4aXRlZH0pKX0sdH0oYS5Db21wb25lbnQpO0guZGVmYXVsdFByb3BzPXtjbGFzc05hbWVzOiIifSxILnByb3BUeXBlcz17fTt2YXIgcT1ILFY9big4Mjg5KTt2YXIgJD1lPT57bGV0e2NoaWxkcmVuOnQsdGltZW91dDpuPTIwMCxjbGFzc05hbWVzOmksaW46YSwuLi5vfT1lO3JldHVybigwLFYuWSkocSx7Li4ubyxpbjphLHRpbWVvdXQ6bixjbGFzc05hbWVzOmksbW91bnRPbkVudGVyOiEwLHVubW91bnRPbkV4aXQ6ITAsYXBwZWFyOiEwLGNoaWxkcmVuOnR9KX07dmFyIFc9ZnVuY3Rpb24oKXtsZXR7ZGlzYWJsZVNjYWxpbmc6ZT0hMX09YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9OygwLGEudXNlRWZmZWN0KSgoKT0+e2lmKCFlKXJldHVybjtsZXQgdD1udWxsLG49IiI7dHJ5e2NvbnN0IGk9KDAsaC5BTCkoKTtpZighaT8ucGFyZW50Py5kb2N1bWVudClyZXR1cm47Y29uc3QgYT1pLnBhcmVudC5kb2N1bWVudDt0PWEucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPSJ2aWV3cG9ydCJdJyksbj10Py5nZXRBdHRyaWJ1dGUoImNvbnRlbnQiKXx8IiI7Y29uc3Qgbz1uLmluY2x1ZGVzKCJ1c2VyLXNjYWxhYmxlPSIpO2lmKCF0KXtjb25zdCBlPWEuY3JlYXRlRWxlbWVudCgibWV0YSIpO2Uuc2V0QXR0cmlidXRlKCJuYW1lIiwidmlld3BvcnQiKSxhLmhlYWQuYXBwZW5kQ2hpbGQoZSksdD1lfWlmKHQpe2NvbnN0IGU9bz9uLnJlcGxhY2UoL3VzZXItc2NhbGFibGU9KHllc3xub3wxfDApLywidXNlci1zY2FsYWJsZT1ubyIpOmAke259JHtuPyIsICI6IiJ9dXNlci1zY2FsYWJsZT1ub2A7dC5zZXRBdHRyaWJ1dGUoImNvbnRlbnQiLGUpfXJldHVybigpPT57ZSYmKG4/byYmdCYmdC5zZXRBdHRyaWJ1dGUoImNvbnRlbnQiLG4pOnQ/LnJlbW92ZSgpKX19Y2F0Y2h7cmV0dXJufX0sW2VdKX0sSz0obigzMTQ3KSxuKDgyNjQpLG4oMjIwMCkpLEc9bi5uKEspO2Z1bmN0aW9uIFgoZSx0LG4saSl7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoZnVuY3Rpb24oYSxvKXtmdW5jdGlvbiByKGUpe3RyeXtsKGkubmV4dChlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gcyhlKXt0cnl7bChpLnRocm93KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9hKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbihmdW5jdGlvbihlKXtlKHQpfSkpLnRoZW4ocixzKX1sKChpPWkuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KX1PYmplY3QuY3JlYXRlO09iamVjdC5jcmVhdGU7ImZ1bmN0aW9uIj09dHlwZW9mIFN1cHByZXNzZWRFcnJvciYmU3VwcHJlc3NlZEVycm9yO2NvbnN0IFE9bmV3IE1hcChbWyIxa20iLCJhcHBsaWNhdGlvbi92bmQuMTAwMG1pbmRzLmRlY2lzaW9uLW1vZGVsK3htbCJdLFsiM2RtbCIsInRleHQvdm5kLmluM2QuM2RtbCJdLFsiM2RzIiwiaW1hZ2UveC0zZHMiXSxbIjNnMiIsInZpZGVvLzNncHAyIl0sWyIzZ3AiLCJ2aWRlby8zZ3AiXSxbIjNncHAiLCJ2aWRlby8zZ3BwIl0sWyIzbWYiLCJtb2RlbC8zbWYiXSxbIjd6IiwiYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkIl0sWyI3emlwIiwiYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkIl0sWyIxMjMiLCJhcHBsaWNhdGlvbi92bmQubG90dXMtMS0yLTMiXSxbImFhYiIsImFwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1iaW4iXSxbImFhYyIsImF1ZGlvL3gtYWNjIl0sWyJhYW0iLCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtbWFwIl0sWyJhYXMiLCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtc2VnIl0sWyJhYnciLCJhcHBsaWNhdGlvbi94LWFiaXdvcmQiXSxbImFjIiwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5hYyt4bWwiXSxbImFjMyIsImF1ZGlvL2FjMyJdLFsiYWNjIiwiYXBwbGljYXRpb24vdm5kLmFtZXJpY2FuZHluYW1pY3MuYWNjIl0sWyJhY2UiLCJhcHBsaWNhdGlvbi94LWFjZS1jb21wcmVzc2VkIl0sWyJhY3UiLCJhcHBsaWNhdGlvbi92bmQuYWN1Y29ib2wiXSxbImFjdXRjIiwiYXBwbGljYXRpb24vdm5kLmFjdWNvcnAiXSxbImFkcCIsImF1ZGlvL2FkcGNtIl0sWyJhZXAiLCJhcHBsaWNhdGlvbi92bmQuYXVkaW9ncmFwaCJdLFsiYWZtIiwiYXBwbGljYXRpb24veC1mb250LXR5cGUxIl0sWyJhZnAiLCJhcHBsaWNhdGlvbi92bmQuaWJtLm1vZGNhcCJdLFsiYWhlYWQiLCJhcHBsaWNhdGlvbi92bmQuYWhlYWQuc3BhY2UiXSxbImFpIiwiYXBwbGljYXRpb24vcGRmIl0sWyJhaWYiLCJhdWRpby94LWFpZmYiXSxbImFpZmMiLCJhdWRpby94LWFpZmYiXSxbImFpZmYiLCJhdWRpby94LWFpZmYiXSxbImFpciIsImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5haXItYXBwbGljYXRpb24taW5zdGFsbGVyLXBhY2thZ2UremlwIl0sWyJhaXQiLCJhcHBsaWNhdGlvbi92bmQuZHZiLmFpdCJdLFsiYW1pIiwiYXBwbGljYXRpb24vdm5kLmFtaWdhLmFtaSJdLFsiYW1yIiwiYXVkaW8vYW1yIl0sWyJhcGsiLCJhcHBsaWNhdGlvbi92bmQuYW5kcm9pZC5wYWNrYWdlLWFyY2hpdmUiXSxbImFwbmciLCJpbWFnZS9hcG5nIl0sWyJhcHBjYWNoZSIsInRleHQvY2FjaGUtbWFuaWZlc3QiXSxbImFwcGxpY2F0aW9uIiwiYXBwbGljYXRpb24veC1tcy1hcHBsaWNhdGlvbiJdLFsiYXByIiwiYXBwbGljYXRpb24vdm5kLmxvdHVzLWFwcHJvYWNoIl0sWyJhcmMiLCJhcHBsaWNhdGlvbi94LWZyZWVhcmMiXSxbImFyaiIsImFwcGxpY2F0aW9uL3gtYXJqIl0sWyJhc2MiLCJhcHBsaWNhdGlvbi9wZ3Atc2lnbmF0dXJlIl0sWyJhc2YiLCJ2aWRlby94LW1zLWFzZiJdLFsiYXNtIiwidGV4dC94LWFzbSJdLFsiYXNvIiwiYXBwbGljYXRpb24vdm5kLmFjY3BhYy5zaW1wbHkuYXNvIl0sWyJhc3giLCJ2aWRlby94LW1zLWFzZiJdLFsiYXRjIiwiYXBwbGljYXRpb24vdm5kLmFjdWNvcnAiXSxbImF0b20iLCJhcHBsaWNhdGlvbi9hdG9tK3htbCJdLFsiYXRvbWNhdCIsImFwcGxpY2F0aW9uL2F0b21jYXQreG1sIl0sWyJhdG9tZGVsZXRlZCIsImFwcGxpY2F0aW9uL2F0b21kZWxldGVkK3htbCJdLFsiYXRvbXN2YyIsImFwcGxpY2F0aW9uL2F0b21zdmMreG1sIl0sWyJhdHgiLCJhcHBsaWNhdGlvbi92bmQuYW50aXguZ2FtZS1jb21wb25lbnQiXSxbImF1IiwiYXVkaW8veC1hdSJdLFsiYXZpIiwidmlkZW8veC1tc3ZpZGVvIl0sWyJhdmlmIiwiaW1hZ2UvYXZpZiJdLFsiYXciLCJhcHBsaWNhdGlvbi9hcHBsaXh3YXJlIl0sWyJhemYiLCJhcHBsaWNhdGlvbi92bmQuYWlyemlwLmZpbGVzZWN1cmUuYXpmIl0sWyJhenMiLCJhcHBsaWNhdGlvbi92bmQuYWlyemlwLmZpbGVzZWN1cmUuYXpzIl0sWyJhenYiLCJpbWFnZS92bmQuYWlyemlwLmFjY2VsZXJhdG9yLmF6diJdLFsiYXp3IiwiYXBwbGljYXRpb24vdm5kLmFtYXpvbi5lYm9vayJdLFsiYjE2IiwiaW1hZ2Uvdm5kLnBjby5iMTYiXSxbImJhdCIsImFwcGxpY2F0aW9uL3gtbXNkb3dubG9hZCJdLFsiYmNwaW8iLCJhcHBsaWNhdGlvbi94LWJjcGlvIl0sWyJiZGYiLCJhcHBsaWNhdGlvbi94LWZvbnQtYmRmIl0sWyJiZG0iLCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtK3dieG1sIl0sWyJiZG9jIiwiYXBwbGljYXRpb24veC1iZG9jIl0sWyJiZWQiLCJhcHBsaWNhdGlvbi92bmQucmVhbHZuYy5iZWQiXSxbImJoMiIsImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzcHJzIl0sWyJiaW4iLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbImJsYiIsImFwcGxpY2F0aW9uL3gtYmxvcmIiXSxbImJsb3JiIiwiYXBwbGljYXRpb24veC1ibG9yYiJdLFsiYm1pIiwiYXBwbGljYXRpb24vdm5kLmJtaSJdLFsiYm1tbCIsImFwcGxpY2F0aW9uL3ZuZC5iYWxzYW1pcS5ibW1sK3htbCJdLFsiYm1wIiwiaW1hZ2UvYm1wIl0sWyJib29rIiwiYXBwbGljYXRpb24vdm5kLmZyYW1lbWFrZXIiXSxbImJveCIsImFwcGxpY2F0aW9uL3ZuZC5wcmV2aWV3c3lzdGVtcy5ib3giXSxbImJveiIsImFwcGxpY2F0aW9uL3gtYnppcDIiXSxbImJwayIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiYnBtbiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiYnNwIiwibW9kZWwvdm5kLnZhbHZlLnNvdXJjZS5jb21waWxlZC1tYXAiXSxbImJ0aWYiLCJpbWFnZS9wcnMuYnRpZiJdLFsiYnVmZmVyIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0sWyJieiIsImFwcGxpY2F0aW9uL3gtYnppcCJdLFsiYnoyIiwiYXBwbGljYXRpb24veC1iemlwMiJdLFsiYyIsInRleHQveC1jIl0sWyJjNGQiLCJhcHBsaWNhdGlvbi92bmQuY2xvbmsuYzRncm91cCJdLFsiYzRmIiwiYXBwbGljYXRpb24vdm5kLmNsb25rLmM0Z3JvdXAiXSxbImM0ZyIsImFwcGxpY2F0aW9uL3ZuZC5jbG9uay5jNGdyb3VwIl0sWyJjNHAiLCJhcHBsaWNhdGlvbi92bmQuY2xvbmsuYzRncm91cCJdLFsiYzR1IiwiYXBwbGljYXRpb24vdm5kLmNsb25rLmM0Z3JvdXAiXSxbImMxMWFtYyIsImFwcGxpY2F0aW9uL3ZuZC5jbHVldHJ1c3QuY2FydG9tb2JpbGUtY29uZmlnIl0sWyJjMTFhbXoiLCJhcHBsaWNhdGlvbi92bmQuY2x1ZXRydXN0LmNhcnRvbW9iaWxlLWNvbmZpZy1wa2ciXSxbImNhYiIsImFwcGxpY2F0aW9uL3ZuZC5tcy1jYWItY29tcHJlc3NlZCJdLFsiY2FmIiwiYXVkaW8veC1jYWYiXSxbImNhcCIsImFwcGxpY2F0aW9uL3ZuZC50Y3BkdW1wLnBjYXAiXSxbImNhciIsImFwcGxpY2F0aW9uL3ZuZC5jdXJsLmNhciJdLFsiY2F0IiwiYXBwbGljYXRpb24vdm5kLm1zLXBraS5zZWNjYXQiXSxbImNiNyIsImFwcGxpY2F0aW9uL3gtY2JyIl0sWyJjYmEiLCJhcHBsaWNhdGlvbi94LWNiciJdLFsiY2JyIiwiYXBwbGljYXRpb24veC1jYnIiXSxbImNidCIsImFwcGxpY2F0aW9uL3gtY2JyIl0sWyJjYnoiLCJhcHBsaWNhdGlvbi94LWNiciJdLFsiY2MiLCJ0ZXh0L3gtYyJdLFsiY2NvIiwiYXBwbGljYXRpb24veC1jb2NvYSJdLFsiY2N0IiwiYXBwbGljYXRpb24veC1kaXJlY3RvciJdLFsiY2N4bWwiLCJhcHBsaWNhdGlvbi9jY3htbCt4bWwiXSxbImNkYmNtc2ciLCJhcHBsaWNhdGlvbi92bmQuY29udGFjdC5jbXNnIl0sWyJjZGEiLCJhcHBsaWNhdGlvbi94LWNkZiJdLFsiY2RmIiwiYXBwbGljYXRpb24veC1uZXRjZGYiXSxbImNkZngiLCJhcHBsaWNhdGlvbi9jZGZ4K3htbCJdLFsiY2RrZXkiLCJhcHBsaWNhdGlvbi92bmQubWVkaWFzdGF0aW9uLmNka2V5Il0sWyJjZG1pYSIsImFwcGxpY2F0aW9uL2NkbWktY2FwYWJpbGl0eSJdLFsiY2RtaWMiLCJhcHBsaWNhdGlvbi9jZG1pLWNvbnRhaW5lciJdLFsiY2RtaWQiLCJhcHBsaWNhdGlvbi9jZG1pLWRvbWFpbiJdLFsiY2RtaW8iLCJhcHBsaWNhdGlvbi9jZG1pLW9iamVjdCJdLFsiY2RtaXEiLCJhcHBsaWNhdGlvbi9jZG1pLXF1ZXVlIl0sWyJjZHIiLCJhcHBsaWNhdGlvbi9jZHIiXSxbImNkeCIsImNoZW1pY2FsL3gtY2R4Il0sWyJjZHhtbCIsImFwcGxpY2F0aW9uL3ZuZC5jaGVtZHJhdyt4bWwiXSxbImNkeSIsImFwcGxpY2F0aW9uL3ZuZC5jaW5kZXJlbGxhIl0sWyJjZXIiLCJhcHBsaWNhdGlvbi9wa2l4LWNlcnQiXSxbImNmcyIsImFwcGxpY2F0aW9uL3gtY2ZzLWNvbXByZXNzZWQiXSxbImNnbSIsImltYWdlL2NnbSJdLFsiY2hhdCIsImFwcGxpY2F0aW9uL3gtY2hhdCJdLFsiY2htIiwiYXBwbGljYXRpb24vdm5kLm1zLWh0bWxoZWxwIl0sWyJjaHJ0IiwiYXBwbGljYXRpb24vdm5kLmtkZS5rY2hhcnQiXSxbImNpZiIsImNoZW1pY2FsL3gtY2lmIl0sWyJjaWkiLCJhcHBsaWNhdGlvbi92bmQuYW5zZXItd2ViLWNlcnRpZmljYXRlLWlzc3VlLWluaXRpYXRpb24iXSxbImNpbCIsImFwcGxpY2F0aW9uL3ZuZC5tcy1hcnRnYWxyeSJdLFsiY2pzIiwiYXBwbGljYXRpb24vbm9kZSJdLFsiY2xhIiwiYXBwbGljYXRpb24vdm5kLmNsYXltb3JlIl0sWyJjbGFzcyIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiY2xrayIsImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLmtleWJvYXJkIl0sWyJjbGtwIiwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIucGFsZXR0ZSJdLFsiY2xrdCIsImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLnRlbXBsYXRlIl0sWyJjbGt3IiwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIud29yZGJhbmsiXSxbImNsa3giLCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlciJdLFsiY2xwIiwiYXBwbGljYXRpb24veC1tc2NsaXAiXSxbImNtYyIsImFwcGxpY2F0aW9uL3ZuZC5jb3Ntb2NhbGxlciJdLFsiY21kZiIsImNoZW1pY2FsL3gtY21kZiJdLFsiY21sIiwiY2hlbWljYWwveC1jbWwiXSxbImNtcCIsImFwcGxpY2F0aW9uL3ZuZC55ZWxsb3dyaXZlci1jdXN0b20tbWVudSJdLFsiY214IiwiaW1hZ2UveC1jbXgiXSxbImNvZCIsImFwcGxpY2F0aW9uL3ZuZC5yaW0uY29kIl0sWyJjb2ZmZWUiLCJ0ZXh0L2NvZmZlZXNjcmlwdCJdLFsiY29tIiwiYXBwbGljYXRpb24veC1tc2Rvd25sb2FkIl0sWyJjb25mIiwidGV4dC9wbGFpbiJdLFsiY3BpbyIsImFwcGxpY2F0aW9uL3gtY3BpbyJdLFsiY3BwIiwidGV4dC94LWMiXSxbImNwdCIsImFwcGxpY2F0aW9uL21hYy1jb21wYWN0cHJvIl0sWyJjcmQiLCJhcHBsaWNhdGlvbi94LW1zY2FyZGZpbGUiXSxbImNybCIsImFwcGxpY2F0aW9uL3BraXgtY3JsIl0sWyJjcnQiLCJhcHBsaWNhdGlvbi94LXg1MDktY2EtY2VydCJdLFsiY3J4IiwiYXBwbGljYXRpb24veC1jaHJvbWUtZXh0ZW5zaW9uIl0sWyJjcnlwdG9ub3RlIiwiYXBwbGljYXRpb24vdm5kLnJpZy5jcnlwdG9ub3RlIl0sWyJjc2giLCJhcHBsaWNhdGlvbi94LWNzaCJdLFsiY3NsIiwiYXBwbGljYXRpb24vdm5kLmNpdGF0aW9uc3R5bGVzLnN0eWxlK3htbCJdLFsiY3NtbCIsImNoZW1pY2FsL3gtY3NtbCJdLFsiY3NwIiwiYXBwbGljYXRpb24vdm5kLmNvbW1vbnNwYWNlIl0sWyJjc3IiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbImNzcyIsInRleHQvY3NzIl0sWyJjc3QiLCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIl0sWyJjc3YiLCJ0ZXh0L2NzdiJdLFsiY3UiLCJhcHBsaWNhdGlvbi9jdS1zZWVtZSJdLFsiY3VybCIsInRleHQvdm5kLmN1cmwiXSxbImN3dyIsImFwcGxpY2F0aW9uL3Bycy5jd3ciXSxbImN4dCIsImFwcGxpY2F0aW9uL3gtZGlyZWN0b3IiXSxbImN4eCIsInRleHQveC1jIl0sWyJkYWUiLCJtb2RlbC92bmQuY29sbGFkYSt4bWwiXSxbImRhZiIsImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMuZGFmIl0sWyJkYXJ0IiwiYXBwbGljYXRpb24vdm5kLmRhcnQiXSxbImRhdGFsZXNzIiwiYXBwbGljYXRpb24vdm5kLmZkc24uc2VlZCJdLFsiZGF2bW91bnQiLCJhcHBsaWNhdGlvbi9kYXZtb3VudCt4bWwiXSxbImRiZiIsImFwcGxpY2F0aW9uL3ZuZC5kYmYiXSxbImRiayIsImFwcGxpY2F0aW9uL2RvY2Jvb2sreG1sIl0sWyJkY3IiLCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIl0sWyJkY3VybCIsInRleHQvdm5kLmN1cmwuZGN1cmwiXSxbImRkMiIsImFwcGxpY2F0aW9uL3ZuZC5vbWEuZGQyK3htbCJdLFsiZGRkIiwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kZGQiXSxbImRkZiIsImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG1kZGYreG1sIl0sWyJkZHMiLCJpbWFnZS92bmQubXMtZGRzIl0sWyJkZWIiLCJhcHBsaWNhdGlvbi94LWRlYmlhbi1wYWNrYWdlIl0sWyJkZWYiLCJ0ZXh0L3BsYWluIl0sWyJkZXBsb3kiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbImRlciIsImFwcGxpY2F0aW9uL3gteDUwOS1jYS1jZXJ0Il0sWyJkZmFjIiwiYXBwbGljYXRpb24vdm5kLmRyZWFtZmFjdG9yeSJdLFsiZGdjIiwiYXBwbGljYXRpb24veC1kZ2MtY29tcHJlc3NlZCJdLFsiZGljIiwidGV4dC94LWMiXSxbImRpciIsImFwcGxpY2F0aW9uL3gtZGlyZWN0b3IiXSxbImRpcyIsImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMuZGlzIl0sWyJkaXNwb3NpdGlvbi1ub3RpZmljYXRpb24iLCJtZXNzYWdlL2Rpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvbiJdLFsiZGlzdCIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiZGlzdHoiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbImRqdiIsImltYWdlL3ZuZC5kanZ1Il0sWyJkanZ1IiwiaW1hZ2Uvdm5kLmRqdnUiXSxbImRsbCIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiZG1nIiwiYXBwbGljYXRpb24veC1hcHBsZS1kaXNraW1hZ2UiXSxbImRtbiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiZG1wIiwiYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcCJdLFsiZG1zIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0sWyJkbmEiLCJhcHBsaWNhdGlvbi92bmQuZG5hIl0sWyJkb2MiLCJhcHBsaWNhdGlvbi9tc3dvcmQiXSxbImRvY20iLCJhcHBsaWNhdGlvbi92bmQubXMtd29yZC50ZW1wbGF0ZS5tYWNyb0VuYWJsZWQuMTIiXSxbImRvY3giLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCJdLFsiZG90IiwiYXBwbGljYXRpb24vbXN3b3JkIl0sWyJkb3RtIiwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQudGVtcGxhdGUubWFjcm9FbmFibGVkLjEyIl0sWyJkb3R4IiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGUiXSxbImRwIiwiYXBwbGljYXRpb24vdm5kLm9zZ2kuZHAiXSxbImRwZyIsImFwcGxpY2F0aW9uL3ZuZC5kcGdyYXBoIl0sWyJkcmEiLCJhdWRpby92bmQuZHJhIl0sWyJkcmxlIiwiaW1hZ2UvZGljb20tcmxlIl0sWyJkc2MiLCJ0ZXh0L3Bycy5saW5lcy50YWciXSxbImRzc2MiLCJhcHBsaWNhdGlvbi9kc3NjK2RlciJdLFsiZHRiIiwiYXBwbGljYXRpb24veC1kdGJvb2sreG1sIl0sWyJkdGQiLCJhcHBsaWNhdGlvbi94bWwtZHRkIl0sWyJkdHMiLCJhdWRpby92bmQuZHRzIl0sWyJkdHNoZCIsImF1ZGlvL3ZuZC5kdHMuaGQiXSxbImR1bXAiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbImR2YiIsInZpZGVvL3ZuZC5kdmIuZmlsZSJdLFsiZHZpIiwiYXBwbGljYXRpb24veC1kdmkiXSxbImR3ZCIsImFwcGxpY2F0aW9uL2F0c2MtZHdkK3htbCJdLFsiZHdmIiwibW9kZWwvdm5kLmR3ZiJdLFsiZHdnIiwiaW1hZ2Uvdm5kLmR3ZyJdLFsiZHhmIiwiaW1hZ2Uvdm5kLmR4ZiJdLFsiZHhwIiwiYXBwbGljYXRpb24vdm5kLnNwb3RmaXJlLmR4cCJdLFsiZHhyIiwiYXBwbGljYXRpb24veC1kaXJlY3RvciJdLFsiZWFyIiwiYXBwbGljYXRpb24vamF2YS1hcmNoaXZlIl0sWyJlY2VscDQ4MDAiLCJhdWRpby92bmQubnVlcmEuZWNlbHA0ODAwIl0sWyJlY2VscDc0NzAiLCJhdWRpby92bmQubnVlcmEuZWNlbHA3NDcwIl0sWyJlY2VscDk2MDAiLCJhdWRpby92bmQubnVlcmEuZWNlbHA5NjAwIl0sWyJlY21hIiwiYXBwbGljYXRpb24vZWNtYXNjcmlwdCJdLFsiZWRtIiwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmVkbSJdLFsiZWR4IiwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmVkeCJdLFsiZWZpZiIsImFwcGxpY2F0aW9uL3ZuZC5waWNzZWwiXSxbImVpNiIsImFwcGxpY2F0aW9uL3ZuZC5wZy5vc2FzbGkiXSxbImVsYyIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiZW1mIiwiaW1hZ2UvZW1mIl0sWyJlbWwiLCJtZXNzYWdlL3JmYzgyMiJdLFsiZW1tYSIsImFwcGxpY2F0aW9uL2VtbWEreG1sIl0sWyJlbW90aW9ubWwiLCJhcHBsaWNhdGlvbi9lbW90aW9ubWwreG1sIl0sWyJlbXoiLCJhcHBsaWNhdGlvbi94LW1zbWV0YWZpbGUiXSxbImVvbCIsImF1ZGlvL3ZuZC5kaWdpdGFsLXdpbmRzIl0sWyJlb3QiLCJhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCJdLFsiZXBzIiwiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJdLFsiZXB1YiIsImFwcGxpY2F0aW9uL2VwdWIremlwIl0sWyJlcyIsImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQiXSxbImVzMyIsImFwcGxpY2F0aW9uL3ZuZC5lc3ppZ25vMyt4bWwiXSxbImVzYSIsImFwcGxpY2F0aW9uL3ZuZC5vc2dpLnN1YnN5c3RlbSJdLFsiZXNmIiwiYXBwbGljYXRpb24vdm5kLmVwc29uLmVzZiJdLFsiZXQzIiwiYXBwbGljYXRpb24vdm5kLmVzemlnbm8zK3htbCJdLFsiZXR4IiwidGV4dC94LXNldGV4dCJdLFsiZXZhIiwiYXBwbGljYXRpb24veC1ldmEiXSxbImV2eSIsImFwcGxpY2F0aW9uL3gtZW52b3kiXSxbImV4ZSIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsiZXhpIiwiYXBwbGljYXRpb24vZXhpIl0sWyJleHAiLCJhcHBsaWNhdGlvbi9leHByZXNzIl0sWyJleHIiLCJpbWFnZS9hY2VzIl0sWyJleHQiLCJhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZXh0Il0sWyJleiIsImFwcGxpY2F0aW9uL2FuZHJldy1pbnNldCJdLFsiZXoyIiwiYXBwbGljYXRpb24vdm5kLmV6cGl4LWFsYnVtIl0sWyJlejMiLCJhcHBsaWNhdGlvbi92bmQuZXpwaXgtcGFja2FnZSJdLFsiZiIsInRleHQveC1mb3J0cmFuIl0sWyJmNHYiLCJ2aWRlby9tcDQiXSxbImY3NyIsInRleHQveC1mb3J0cmFuIl0sWyJmOTAiLCJ0ZXh0L3gtZm9ydHJhbiJdLFsiZmJzIiwiaW1hZ2Uvdm5kLmZhc3RiaWRzaGVldCJdLFsiZmNkdCIsImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5mb3Jtc2NlbnRyYWwuZmNkdCJdLFsiZmNzIiwiYXBwbGljYXRpb24vdm5kLmlzYWMuZmNzIl0sWyJmZGYiLCJhcHBsaWNhdGlvbi92bmQuZmRmIl0sWyJmZHQiLCJhcHBsaWNhdGlvbi9mZHQreG1sIl0sWyJmZV9sYXVuY2giLCJhcHBsaWNhdGlvbi92bmQuZGVub3ZvLmZjc2VsYXlvdXQtbGluayJdLFsiZmc1IiwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNncCJdLFsiZmdkIiwiYXBwbGljYXRpb24veC1kaXJlY3RvciJdLFsiZmgiLCJpbWFnZS94LWZyZWVoYW5kIl0sWyJmaDQiLCJpbWFnZS94LWZyZWVoYW5kIl0sWyJmaDUiLCJpbWFnZS94LWZyZWVoYW5kIl0sWyJmaDciLCJpbWFnZS94LWZyZWVoYW5kIl0sWyJmaGMiLCJpbWFnZS94LWZyZWVoYW5kIl0sWyJmaWciLCJhcHBsaWNhdGlvbi94LXhmaWciXSxbImZpdHMiLCJpbWFnZS9maXRzIl0sWyJmbGFjIiwiYXVkaW8veC1mbGFjIl0sWyJmbGkiLCJ2aWRlby94LWZsaSJdLFsiZmxvIiwiYXBwbGljYXRpb24vdm5kLm1pY3JvZ3JhZnguZmxvIl0sWyJmbHYiLCJ2aWRlby94LWZsdiJdLFsiZmx3IiwiYXBwbGljYXRpb24vdm5kLmtkZS5raXZpbyJdLFsiZmx4IiwidGV4dC92bmQuZm1pLmZsZXhzdG9yIl0sWyJmbHkiLCJ0ZXh0L3ZuZC5mbHkiXSxbImZtIiwiYXBwbGljYXRpb24vdm5kLmZyYW1lbWFrZXIiXSxbImZuYyIsImFwcGxpY2F0aW9uL3ZuZC5mcm9nYW5zLmZuYyJdLFsiZm8iLCJhcHBsaWNhdGlvbi92bmQuc29mdHdhcmU2MDIuZmlsbGVyLmZvcm0reG1sIl0sWyJmb3IiLCJ0ZXh0L3gtZm9ydHJhbiJdLFsiZnB4IiwiaW1hZ2Uvdm5kLmZweCJdLFsiZnJhbWUiLCJhcHBsaWNhdGlvbi92bmQuZnJhbWVtYWtlciJdLFsiZnNjIiwiYXBwbGljYXRpb24vdm5kLmZzYy53ZWJsYXVuY2giXSxbImZzdCIsImltYWdlL3ZuZC5mc3QiXSxbImZ0YyIsImFwcGxpY2F0aW9uL3ZuZC5mbHV4dGltZS5jbGlwIl0sWyJmdGkiLCJhcHBsaWNhdGlvbi92bmQuYW5zZXItd2ViLWZ1bmRzLXRyYW5zZmVyLWluaXRpYXRpb24iXSxbImZ2dCIsInZpZGVvL3ZuZC5mdnQiXSxbImZ4cCIsImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5meHAiXSxbImZ4cGwiLCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuZnhwIl0sWyJmenMiLCJhcHBsaWNhdGlvbi92bmQuZnV6enlzaGVldCJdLFsiZzJ3IiwiYXBwbGljYXRpb24vdm5kLmdlb3BsYW4iXSxbImczIiwiaW1hZ2UvZzNmYXgiXSxbImczdyIsImFwcGxpY2F0aW9uL3ZuZC5nZW9zcGFjZSJdLFsiZ2FjIiwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1hY2NvdW50Il0sWyJnYW0iLCJhcHBsaWNhdGlvbi94LXRhZHMiXSxbImdiciIsImFwcGxpY2F0aW9uL3Jwa2ktZ2hvc3RidXN0ZXJzIl0sWyJnY2EiLCJhcHBsaWNhdGlvbi94LWdjYS1jb21wcmVzc2VkIl0sWyJnZGwiLCJtb2RlbC92bmQuZ2RsIl0sWyJnZG9jIiwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLmRvY3VtZW50Il0sWyJnZW8iLCJhcHBsaWNhdGlvbi92bmQuZHluYWdlbyJdLFsiZ2VvanNvbiIsImFwcGxpY2F0aW9uL2dlbytqc29uIl0sWyJnZXgiLCJhcHBsaWNhdGlvbi92bmQuZ2VvbWV0cnktZXhwbG9yZXIiXSxbImdnYiIsImFwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS5maWxlIl0sWyJnZ3QiLCJhcHBsaWNhdGlvbi92bmQuZ2VvZ2VicmEudG9vbCJdLFsiZ2hmIiwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1oZWxwIl0sWyJnaWYiLCJpbWFnZS9naWYiXSxbImdpbSIsImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaWRlbnRpdHktbWVzc2FnZSJdLFsiZ2xiIiwibW9kZWwvZ2x0Zi1iaW5hcnkiXSxbImdsdGYiLCJtb2RlbC9nbHRmK2pzb24iXSxbImdtbCIsImFwcGxpY2F0aW9uL2dtbCt4bWwiXSxbImdteCIsImFwcGxpY2F0aW9uL3ZuZC5nbXgiXSxbImdudW1lcmljIiwiYXBwbGljYXRpb24veC1nbnVtZXJpYyJdLFsiZ3BnIiwiYXBwbGljYXRpb24vZ3BnLWtleXMiXSxbImdwaCIsImFwcGxpY2F0aW9uL3ZuZC5mbG9ncmFwaGl0Il0sWyJncHgiLCJhcHBsaWNhdGlvbi9ncHgreG1sIl0sWyJncWYiLCJhcHBsaWNhdGlvbi92bmQuZ3JhZmVxIl0sWyJncXMiLCJhcHBsaWNhdGlvbi92bmQuZ3JhZmVxIl0sWyJncmFtIiwiYXBwbGljYXRpb24vc3JncyJdLFsiZ3JhbXBzIiwiYXBwbGljYXRpb24veC1ncmFtcHMteG1sIl0sWyJncmUiLCJhcHBsaWNhdGlvbi92bmQuZ2VvbWV0cnktZXhwbG9yZXIiXSxbImdydiIsImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaW5qZWN0b3IiXSxbImdyeG1sIiwiYXBwbGljYXRpb24vc3Jncyt4bWwiXSxbImdzZiIsImFwcGxpY2F0aW9uL3gtZm9udC1naG9zdHNjcmlwdCJdLFsiZ3NoZWV0IiwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnNwcmVhZHNoZWV0Il0sWyJnc2xpZGVzIiwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnByZXNlbnRhdGlvbiJdLFsiZ3RhciIsImFwcGxpY2F0aW9uL3gtZ3RhciJdLFsiZ3RtIiwiYXBwbGljYXRpb24vdm5kLmdyb292ZS10b29sLW1lc3NhZ2UiXSxbImd0dyIsIm1vZGVsL3ZuZC5ndHciXSxbImd2IiwidGV4dC92bmQuZ3JhcGh2aXoiXSxbImd4ZiIsImFwcGxpY2F0aW9uL2d4ZiJdLFsiZ3h0IiwiYXBwbGljYXRpb24vdm5kLmdlb25leHQiXSxbImd6IiwiYXBwbGljYXRpb24vZ3ppcCJdLFsiZ3ppcCIsImFwcGxpY2F0aW9uL2d6aXAiXSxbImgiLCJ0ZXh0L3gtYyJdLFsiaDI2MSIsInZpZGVvL2gyNjEiXSxbImgyNjMiLCJ2aWRlby9oMjYzIl0sWyJoMjY0IiwidmlkZW8vaDI2NCJdLFsiaGFsIiwiYXBwbGljYXRpb24vdm5kLmhhbCt4bWwiXSxbImhiY2kiLCJhcHBsaWNhdGlvbi92bmQuaGJjaSJdLFsiaGJzIiwidGV4dC94LWhhbmRsZWJhcnMtdGVtcGxhdGUiXSxbImhkZCIsImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1oZGQiXSxbImhkZiIsImFwcGxpY2F0aW9uL3gtaGRmIl0sWyJoZWljIiwiaW1hZ2UvaGVpYyJdLFsiaGVpY3MiLCJpbWFnZS9oZWljLXNlcXVlbmNlIl0sWyJoZWlmIiwiaW1hZ2UvaGVpZiJdLFsiaGVpZnMiLCJpbWFnZS9oZWlmLXNlcXVlbmNlIl0sWyJoZWoyIiwiaW1hZ2UvaGVqMmsiXSxbImhlbGQiLCJhcHBsaWNhdGlvbi9hdHNjLWhlbGQreG1sIl0sWyJoaCIsInRleHQveC1jIl0sWyJoanNvbiIsImFwcGxpY2F0aW9uL2hqc29uIl0sWyJobHAiLCJhcHBsaWNhdGlvbi93aW5obHAiXSxbImhwZ2wiLCJhcHBsaWNhdGlvbi92bmQuaHAtaHBnbCJdLFsiaHBpZCIsImFwcGxpY2F0aW9uL3ZuZC5ocC1ocGlkIl0sWyJocHMiLCJhcHBsaWNhdGlvbi92bmQuaHAtaHBzIl0sWyJocXgiLCJhcHBsaWNhdGlvbi9tYWMtYmluaGV4NDAiXSxbImhzajIiLCJpbWFnZS9oc2oyIl0sWyJodGMiLCJ0ZXh0L3gtY29tcG9uZW50Il0sWyJodGtlIiwiYXBwbGljYXRpb24vdm5kLmtlbmFtZWFhcHAiXSxbImh0bSIsInRleHQvaHRtbCJdLFsiaHRtbCIsInRleHQvaHRtbCJdLFsiaHZkIiwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi1kaWMiXSxbImh2cCIsImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtdm9pY2UiXSxbImh2cyIsImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtc2NyaXB0Il0sWyJpMmciLCJhcHBsaWNhdGlvbi92bmQuaW50ZXJnZW8iXSxbImljYyIsImFwcGxpY2F0aW9uL3ZuZC5pY2Nwcm9maWxlIl0sWyJpY2UiLCJ4LWNvbmZlcmVuY2UveC1jb29sdGFsayJdLFsiaWNtIiwiYXBwbGljYXRpb24vdm5kLmljY3Byb2ZpbGUiXSxbImljbyIsImltYWdlL3gtaWNvbiJdLFsiaWNzIiwidGV4dC9jYWxlbmRhciJdLFsiaWVmIiwiaW1hZ2UvaWVmIl0sWyJpZmIiLCJ0ZXh0L2NhbGVuZGFyIl0sWyJpZm0iLCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuZm9ybWRhdGEiXSxbImlnZXMiLCJtb2RlbC9pZ2VzIl0sWyJpZ2wiLCJhcHBsaWNhdGlvbi92bmQuaWdsb2FkZXIiXSxbImlnbSIsImFwcGxpY2F0aW9uL3ZuZC5pbnNvcnMuaWdtIl0sWyJpZ3MiLCJtb2RlbC9pZ2VzIl0sWyJpZ3giLCJhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5pZ3giXSxbImlpZiIsImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5pbnRlcmNoYW5nZSJdLFsiaW1nIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0sWyJpbXAiLCJhcHBsaWNhdGlvbi92bmQuYWNjcGFjLnNpbXBseS5pbXAiXSxbImltcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1pbXMiXSxbImluIiwidGV4dC9wbGFpbiJdLFsiaW5pIiwidGV4dC9wbGFpbiJdLFsiaW5rIiwiYXBwbGljYXRpb24vaW5rbWwreG1sIl0sWyJpbmttbCIsImFwcGxpY2F0aW9uL2lua21sK3htbCJdLFsiaW5zdGFsbCIsImFwcGxpY2F0aW9uL3gtaW5zdGFsbC1pbnN0cnVjdGlvbnMiXSxbImlvdGEiLCJhcHBsaWNhdGlvbi92bmQuYXN0cmFlYS1zb2Z0d2FyZS5pb3RhIl0sWyJpcGZpeCIsImFwcGxpY2F0aW9uL2lwZml4Il0sWyJpcGsiLCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQucGFja2FnZSJdLFsiaXJtIiwiYXBwbGljYXRpb24vdm5kLmlibS5yaWdodHMtbWFuYWdlbWVudCJdLFsiaXJwIiwiYXBwbGljYXRpb24vdm5kLmlyZXBvc2l0b3J5LnBhY2thZ2UreG1sIl0sWyJpc28iLCJhcHBsaWNhdGlvbi94LWlzbzk2NjAtaW1hZ2UiXSxbIml0cCIsImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5mb3JtdGVtcGxhdGUiXSxbIml0cyIsImFwcGxpY2F0aW9uL2l0cyt4bWwiXSxbIml2cCIsImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnAiXSxbIml2dSIsImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnUiXSxbImphZCIsInRleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlwdG9yIl0sWyJqYWRlIiwidGV4dC9qYWRlIl0sWyJqYW0iLCJhcHBsaWNhdGlvbi92bmQuamFtIl0sWyJqYXIiLCJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUiXSxbImphcmRpZmYiLCJhcHBsaWNhdGlvbi94LWphdmEtYXJjaGl2ZS1kaWZmIl0sWyJqYXZhIiwidGV4dC94LWphdmEtc291cmNlIl0sWyJqaGMiLCJpbWFnZS9qcGhjIl0sWyJqaXNwIiwiYXBwbGljYXRpb24vdm5kLmppc3AiXSxbImpscyIsImltYWdlL2pscyJdLFsiamx0IiwiYXBwbGljYXRpb24vdm5kLmhwLWpseXQiXSxbImpuZyIsImltYWdlL3gtam5nIl0sWyJqbmxwIiwiYXBwbGljYXRpb24veC1qYXZhLWpubHAtZmlsZSJdLFsiam9kYSIsImFwcGxpY2F0aW9uL3ZuZC5qb29zdC5qb2RhLWFyY2hpdmUiXSxbImpwMiIsImltYWdlL2pwMiJdLFsianBlIiwiaW1hZ2UvanBlZyJdLFsianBlZyIsImltYWdlL2pwZWciXSxbImpwZiIsImltYWdlL2pweCJdLFsianBnIiwiaW1hZ2UvanBlZyJdLFsianBnMiIsImltYWdlL2pwMiJdLFsianBnbSIsInZpZGVvL2pwbSJdLFsianBndiIsInZpZGVvL2pwZWciXSxbImpwaCIsImltYWdlL2pwaCJdLFsianBtIiwidmlkZW8vanBtIl0sWyJqcHgiLCJpbWFnZS9qcHgiXSxbImpzIiwiYXBwbGljYXRpb24vamF2YXNjcmlwdCJdLFsianNvbiIsImFwcGxpY2F0aW9uL2pzb24iXSxbImpzb241IiwiYXBwbGljYXRpb24vanNvbjUiXSxbImpzb25sZCIsImFwcGxpY2F0aW9uL2xkK2pzb24iXSxbImpzb25sIiwiYXBwbGljYXRpb24vanNvbmwiXSxbImpzb25tbCIsImFwcGxpY2F0aW9uL2pzb25tbCtqc29uIl0sWyJqc3giLCJ0ZXh0L2pzeCJdLFsianhyIiwiaW1hZ2UvanhyIl0sWyJqeHJhIiwiaW1hZ2UvanhyYSJdLFsianhycyIsImltYWdlL2p4cnMiXSxbImp4cyIsImltYWdlL2p4cyJdLFsianhzYyIsImltYWdlL2p4c2MiXSxbImp4c2kiLCJpbWFnZS9qeHNpIl0sWyJqeHNzIiwiaW1hZ2UvanhzcyJdLFsia2FyIiwiYXVkaW8vbWlkaSJdLFsia2FyYm9uIiwiYXBwbGljYXRpb24vdm5kLmtkZS5rYXJib24iXSxbImtkYiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsia2RieCIsImFwcGxpY2F0aW9uL3gta2VlcGFzczIiXSxbImtleSIsImFwcGxpY2F0aW9uL3gtaXdvcmsta2V5bm90ZS1zZmZrZXkiXSxbImtmbyIsImFwcGxpY2F0aW9uL3ZuZC5rZGUua2Zvcm11bGEiXSxbImtpYSIsImFwcGxpY2F0aW9uL3ZuZC5raWRzcGlyYXRpb24iXSxbImttbCIsImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua21sK3htbCJdLFsia216IiwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1lYXJ0aC5rbXoiXSxbImtuZSIsImFwcGxpY2F0aW9uL3ZuZC5raW5hciJdLFsia25wIiwiYXBwbGljYXRpb24vdm5kLmtpbmFyIl0sWyJrb24iLCJhcHBsaWNhdGlvbi92bmQua2RlLmtvbnRvdXIiXSxbImtwciIsImFwcGxpY2F0aW9uL3ZuZC5rZGUua3ByZXNlbnRlciJdLFsia3B0IiwiYXBwbGljYXRpb24vdm5kLmtkZS5rcHJlc2VudGVyIl0sWyJrcHh4IiwiYXBwbGljYXRpb24vdm5kLmRzLWtleXBvaW50Il0sWyJrc3AiLCJhcHBsaWNhdGlvbi92bmQua2RlLmtzcHJlYWQiXSxbImt0ciIsImFwcGxpY2F0aW9uL3ZuZC5rYWhvb3R6Il0sWyJrdHgiLCJpbWFnZS9rdHgiXSxbImt0eDIiLCJpbWFnZS9rdHgyIl0sWyJrdHoiLCJhcHBsaWNhdGlvbi92bmQua2Fob290eiJdLFsia3dkIiwiYXBwbGljYXRpb24vdm5kLmtkZS5rd29yZCJdLFsia3d0IiwiYXBwbGljYXRpb24vdm5kLmtkZS5rd29yZCJdLFsibGFzeG1sIiwiYXBwbGljYXRpb24vdm5kLmxhcy5sYXMreG1sIl0sWyJsYXRleCIsImFwcGxpY2F0aW9uL3gtbGF0ZXgiXSxbImxiZCIsImFwcGxpY2F0aW9uL3ZuZC5sbGFtYWdyYXBoaWNzLmxpZmUtYmFsYW5jZS5kZXNrdG9wIl0sWyJsYmUiLCJhcHBsaWNhdGlvbi92bmQubGxhbWFncmFwaGljcy5saWZlLWJhbGFuY2UuZXhjaGFuZ2UreG1sIl0sWyJsZXMiLCJhcHBsaWNhdGlvbi92bmQuaGhlLmxlc3Nvbi1wbGF5ZXIiXSxbImxlc3MiLCJ0ZXh0L2xlc3MiXSxbImxnciIsImFwcGxpY2F0aW9uL2xncit4bWwiXSxbImxoYSIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsibGluazY2IiwiYXBwbGljYXRpb24vdm5kLnJvdXRlNjYubGluazY2K3htbCJdLFsibGlzdCIsInRleHQvcGxhaW4iXSxbImxpc3QzODIwIiwiYXBwbGljYXRpb24vdm5kLmlibS5tb2RjYXAiXSxbImxpc3RhZnAiLCJhcHBsaWNhdGlvbi92bmQuaWJtLm1vZGNhcCJdLFsibGl0Y29mZmVlIiwidGV4dC9jb2ZmZWVzY3JpcHQiXSxbImxuayIsImFwcGxpY2F0aW9uL3gtbXMtc2hvcnRjdXQiXSxbImxvZyIsInRleHQvcGxhaW4iXSxbImxvc3R4bWwiLCJhcHBsaWNhdGlvbi9sb3N0K3htbCJdLFsibHJmIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0sWyJscm0iLCJhcHBsaWNhdGlvbi92bmQubXMtbHJtIl0sWyJsdGYiLCJhcHBsaWNhdGlvbi92bmQuZnJvZ2Fucy5sdGYiXSxbImx1YSIsInRleHQveC1sdWEiXSxbImx1YWMiLCJhcHBsaWNhdGlvbi94LWx1YS1ieXRlY29kZSJdLFsibHZwIiwiYXVkaW8vdm5kLmx1Y2VudC52b2ljZSJdLFsibHdwIiwiYXBwbGljYXRpb24vdm5kLmxvdHVzLXdvcmRwcm8iXSxbImx6aCIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsibTF2IiwidmlkZW8vbXBlZyJdLFsibTJhIiwiYXVkaW8vbXBlZyJdLFsibTJ2IiwidmlkZW8vbXBlZyJdLFsibTNhIiwiYXVkaW8vbXBlZyJdLFsibTN1IiwidGV4dC9wbGFpbiJdLFsibTN1OCIsImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIl0sWyJtNGEiLCJhdWRpby94LW00YSJdLFsibTRwIiwiYXBwbGljYXRpb24vbXA0Il0sWyJtNHMiLCJ2aWRlby9pc28uc2VnbWVudCJdLFsibTR1IiwiYXBwbGljYXRpb24vdm5kLm1wZWd1cmwiXSxbIm00diIsInZpZGVvL3gtbTR2Il0sWyJtMTMiLCJhcHBsaWNhdGlvbi94LW1zbWVkaWF2aWV3Il0sWyJtMTQiLCJhcHBsaWNhdGlvbi94LW1zbWVkaWF2aWV3Il0sWyJtMjEiLCJhcHBsaWNhdGlvbi9tcDIxIl0sWyJtYSIsImFwcGxpY2F0aW9uL21hdGhlbWF0aWNhIl0sWyJtYWRzIiwiYXBwbGljYXRpb24vbWFkcyt4bWwiXSxbIm1hZWkiLCJhcHBsaWNhdGlvbi9tbXQtYWVpK3htbCJdLFsibWFnIiwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5jaGFydCJdLFsibWFrZXIiLCJhcHBsaWNhdGlvbi92bmQuZnJhbWVtYWtlciJdLFsibWFuIiwidGV4dC90cm9mZiJdLFsibWFuaWZlc3QiLCJ0ZXh0L2NhY2hlLW1hbmlmZXN0Il0sWyJtYXAiLCJhcHBsaWNhdGlvbi9qc29uIl0sWyJtYXIiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbIm1hcmtkb3duIiwidGV4dC9tYXJrZG93biJdLFsibWF0aG1sIiwiYXBwbGljYXRpb24vbWF0aG1sK3htbCJdLFsibWIiLCJhcHBsaWNhdGlvbi9tYXRoZW1hdGljYSJdLFsibWJrIiwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tYmsiXSxbIm1ib3giLCJhcHBsaWNhdGlvbi9tYm94Il0sWyJtYzEiLCJhcHBsaWNhdGlvbi92bmQubWVkY2FsY2RhdGEiXSxbIm1jZCIsImFwcGxpY2F0aW9uL3ZuZC5tY2QiXSxbIm1jdXJsIiwidGV4dC92bmQuY3VybC5tY3VybCJdLFsibWQiLCJ0ZXh0L21hcmtkb3duIl0sWyJtZGIiLCJhcHBsaWNhdGlvbi94LW1zYWNjZXNzIl0sWyJtZGkiLCJpbWFnZS92bmQubXMtbW9kaSJdLFsibWR4IiwidGV4dC9tZHgiXSxbIm1lIiwidGV4dC90cm9mZiJdLFsibWVzaCIsIm1vZGVsL21lc2giXSxbIm1ldGE0IiwiYXBwbGljYXRpb24vbWV0YWxpbms0K3htbCJdLFsibWV0YWxpbmsiLCJhcHBsaWNhdGlvbi9tZXRhbGluayt4bWwiXSxbIm1ldHMiLCJhcHBsaWNhdGlvbi9tZXRzK3htbCJdLFsibWZtIiwiYXBwbGljYXRpb24vdm5kLm1mbXAiXSxbIm1mdCIsImFwcGxpY2F0aW9uL3Jwa2ktbWFuaWZlc3QiXSxbIm1ncCIsImFwcGxpY2F0aW9uL3ZuZC5vc2dlby5tYXBndWlkZS5wYWNrYWdlIl0sWyJtZ3oiLCJhcHBsaWNhdGlvbi92bmQucHJvdGV1cy5tYWdhemluZSJdLFsibWlkIiwiYXVkaW8vbWlkaSJdLFsibWlkaSIsImF1ZGlvL21pZGkiXSxbIm1pZSIsImFwcGxpY2F0aW9uL3gtbWllIl0sWyJtaWYiLCJhcHBsaWNhdGlvbi92bmQubWlmIl0sWyJtaW1lIiwibWVzc2FnZS9yZmM4MjIiXSxbIm1qMiIsInZpZGVvL21qMiJdLFsibWpwMiIsInZpZGVvL21qMiJdLFsibWpzIiwiYXBwbGljYXRpb24vamF2YXNjcmlwdCJdLFsibWszZCIsInZpZGVvL3gtbWF0cm9za2EiXSxbIm1rYSIsImF1ZGlvL3gtbWF0cm9za2EiXSxbIm1rZCIsInRleHQveC1tYXJrZG93biJdLFsibWtzIiwidmlkZW8veC1tYXRyb3NrYSJdLFsibWt2IiwidmlkZW8veC1tYXRyb3NrYSJdLFsibWxwIiwiYXBwbGljYXRpb24vdm5kLmRvbGJ5Lm1scCJdLFsibW1kIiwiYXBwbGljYXRpb24vdm5kLmNoaXBudXRzLmthcmFva2UtbW1kIl0sWyJtbWYiLCJhcHBsaWNhdGlvbi92bmQuc21hZiJdLFsibW1sIiwidGV4dC9tYXRobWwiXSxbIm1tciIsImltYWdlL3ZuZC5mdWppeGVyb3guZWRtaWNzLW1tciJdLFsibW5nIiwidmlkZW8veC1tbmciXSxbIm1ueSIsImFwcGxpY2F0aW9uL3gtbXNtb25leSJdLFsibW9iaSIsImFwcGxpY2F0aW9uL3gtbW9iaXBvY2tldC1lYm9vayJdLFsibW9kcyIsImFwcGxpY2F0aW9uL21vZHMreG1sIl0sWyJtb3YiLCJ2aWRlby9xdWlja3RpbWUiXSxbIm1vdmllIiwidmlkZW8veC1zZ2ktbW92aWUiXSxbIm1wMiIsImF1ZGlvL21wZWciXSxbIm1wMmEiLCJhdWRpby9tcGVnIl0sWyJtcDMiLCJhdWRpby9tcGVnIl0sWyJtcDQiLCJ2aWRlby9tcDQiXSxbIm1wNGEiLCJhdWRpby9tcDQiXSxbIm1wNHMiLCJhcHBsaWNhdGlvbi9tcDQiXSxbIm1wNHYiLCJ2aWRlby9tcDQiXSxbIm1wMjEiLCJhcHBsaWNhdGlvbi9tcDIxIl0sWyJtcGMiLCJhcHBsaWNhdGlvbi92bmQubW9waHVuLmNlcnRpZmljYXRlIl0sWyJtcGQiLCJhcHBsaWNhdGlvbi9kYXNoK3htbCJdLFsibXBlIiwidmlkZW8vbXBlZyJdLFsibXBlZyIsInZpZGVvL21wZWciXSxbIm1wZyIsInZpZGVvL21wZWciXSxbIm1wZzQiLCJ2aWRlby9tcDQiXSxbIm1wZ2EiLCJhdWRpby9tcGVnIl0sWyJtcGtnIiwiYXBwbGljYXRpb24vdm5kLmFwcGxlLmluc3RhbGxlcit4bWwiXSxbIm1wbSIsImFwcGxpY2F0aW9uL3ZuZC5ibHVlaWNlLm11bHRpcGFzcyJdLFsibXBuIiwiYXBwbGljYXRpb24vdm5kLm1vcGh1bi5hcHBsaWNhdGlvbiJdLFsibXBwIiwiYXBwbGljYXRpb24vdm5kLm1zLXByb2plY3QiXSxbIm1wdCIsImFwcGxpY2F0aW9uL3ZuZC5tcy1wcm9qZWN0Il0sWyJtcHkiLCJhcHBsaWNhdGlvbi92bmQuaWJtLm1pbmlwYXkiXSxbIm1xeSIsImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMubXF5Il0sWyJtcmMiLCJhcHBsaWNhdGlvbi9tYXJjIl0sWyJtcmN4IiwiYXBwbGljYXRpb24vbWFyY3htbCt4bWwiXSxbIm1zIiwidGV4dC90cm9mZiJdLFsibXNjbWwiLCJhcHBsaWNhdGlvbi9tZWRpYXNlcnZlcmNvbnRyb2wreG1sIl0sWyJtc2VlZCIsImFwcGxpY2F0aW9uL3ZuZC5mZHNuLm1zZWVkIl0sWyJtc2VxIiwiYXBwbGljYXRpb24vdm5kLm1zZXEiXSxbIm1zZiIsImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5tc2YiXSxbIm1zZyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vdXRsb29rIl0sWyJtc2giLCJtb2RlbC9tZXNoIl0sWyJtc2kiLCJhcHBsaWNhdGlvbi94LW1zZG93bmxvYWQiXSxbIm1zbCIsImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMubXNsIl0sWyJtc20iLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbIm1zcCIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsibXN0eSIsImFwcGxpY2F0aW9uL3ZuZC5tdXZlZS5zdHlsZSJdLFsibXRsIiwibW9kZWwvbXRsIl0sWyJtdHMiLCJtb2RlbC92bmQubXRzIl0sWyJtdXMiLCJhcHBsaWNhdGlvbi92bmQubXVzaWNpYW4iXSxbIm11c2QiLCJhcHBsaWNhdGlvbi9tbXQtdXNkK3htbCJdLFsibXVzaWN4bWwiLCJhcHBsaWNhdGlvbi92bmQucmVjb3JkYXJlLm11c2ljeG1sK3htbCJdLFsibXZiIiwiYXBwbGljYXRpb24veC1tc21lZGlhdmlldyJdLFsibXZ0IiwiYXBwbGljYXRpb24vdm5kLm1hcGJveC12ZWN0b3ItdGlsZSJdLFsibXdmIiwiYXBwbGljYXRpb24vdm5kLm1mZXIiXSxbIm14ZiIsImFwcGxpY2F0aW9uL214ZiJdLFsibXhsIiwiYXBwbGljYXRpb24vdm5kLnJlY29yZGFyZS5tdXNpY3htbCJdLFsibXhtZiIsImF1ZGlvL21vYmlsZS14bWYiXSxbIm14bWwiLCJhcHBsaWNhdGlvbi94dit4bWwiXSxbIm14cyIsImFwcGxpY2F0aW9uL3ZuZC50cmlzY2FwZS5teHMiXSxbIm14dSIsInZpZGVvL3ZuZC5tcGVndXJsIl0sWyJuLWdhZ2UiLCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLnN5bWJpYW4uaW5zdGFsbCJdLFsibjMiLCJ0ZXh0L24zIl0sWyJuYiIsImFwcGxpY2F0aW9uL21hdGhlbWF0aWNhIl0sWyJuYnAiLCJhcHBsaWNhdGlvbi92bmQud29sZnJhbS5wbGF5ZXIiXSxbIm5jIiwiYXBwbGljYXRpb24veC1uZXRjZGYiXSxbIm5jeCIsImFwcGxpY2F0aW9uL3gtZHRibmN4K3htbCJdLFsibmZvIiwidGV4dC94LW5mbyJdLFsibmdkYXQiLCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLmRhdGEiXSxbIm5pdGYiLCJhcHBsaWNhdGlvbi92bmQubml0ZiJdLFsibmx1IiwiYXBwbGljYXRpb24vdm5kLm5ldXJvbGFuZ3VhZ2Uubmx1Il0sWyJubWwiLCJhcHBsaWNhdGlvbi92bmQuZW5saXZlbiJdLFsibm5kIiwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LWRpcmVjdG9yeSJdLFsibm5zIiwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LXNlYWxlciJdLFsibm53IiwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LXdlYiJdLFsibnB4IiwiaW1hZ2Uvdm5kLm5ldC1mcHgiXSxbIm5xIiwiYXBwbGljYXRpb24vbi1xdWFkcyJdLFsibnNjIiwiYXBwbGljYXRpb24veC1jb25mZXJlbmNlIl0sWyJuc2YiLCJhcHBsaWNhdGlvbi92bmQubG90dXMtbm90ZXMiXSxbIm50IiwiYXBwbGljYXRpb24vbi10cmlwbGVzIl0sWyJudGYiLCJhcHBsaWNhdGlvbi92bmQubml0ZiJdLFsibnVtYmVycyIsImFwcGxpY2F0aW9uL3gtaXdvcmstbnVtYmVycy1zZmZudW1iZXJzIl0sWyJuemIiLCJhcHBsaWNhdGlvbi94LW56YiJdLFsib2EyIiwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXMyIl0sWyJvYTMiLCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czMiXSxbIm9hcyIsImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzIl0sWyJvYmQiLCJhcHBsaWNhdGlvbi94LW1zYmluZGVyIl0sWyJvYmd4IiwiYXBwbGljYXRpb24vdm5kLm9wZW5ibG94LmdhbWUreG1sIl0sWyJvYmoiLCJtb2RlbC9vYmoiXSxbIm9kYSIsImFwcGxpY2F0aW9uL29kYSJdLFsib2RiIiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5kYXRhYmFzZSJdLFsib2RjIiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5jaGFydCJdLFsib2RmIiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhIl0sWyJvZGZ0IiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhLXRlbXBsYXRlIl0sWyJvZGciLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmdyYXBoaWNzIl0sWyJvZGkiLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmltYWdlIl0sWyJvZG0iLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtbWFzdGVyIl0sWyJvZHAiLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvbiJdLFsib2RzIiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCJdLFsib2R0IiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0Il0sWyJvZ2EiLCJhdWRpby9vZ2ciXSxbIm9nZXgiLCJtb2RlbC92bmQub3BlbmdleCJdLFsib2dnIiwiYXVkaW8vb2dnIl0sWyJvZ3YiLCJ2aWRlby9vZ2ciXSxbIm9neCIsImFwcGxpY2F0aW9uL29nZyJdLFsib21kb2MiLCJhcHBsaWNhdGlvbi9vbWRvYyt4bWwiXSxbIm9uZXBrZyIsImFwcGxpY2F0aW9uL29uZW5vdGUiXSxbIm9uZXRtcCIsImFwcGxpY2F0aW9uL29uZW5vdGUiXSxbIm9uZXRvYyIsImFwcGxpY2F0aW9uL29uZW5vdGUiXSxbIm9uZXRvYzIiLCJhcHBsaWNhdGlvbi9vbmVub3RlIl0sWyJvcGYiLCJhcHBsaWNhdGlvbi9vZWJwcy1wYWNrYWdlK3htbCJdLFsib3BtbCIsInRleHQveC1vcG1sIl0sWyJvcHJjIiwiYXBwbGljYXRpb24vdm5kLnBhbG0iXSxbIm9wdXMiLCJhdWRpby9vZ2ciXSxbIm9yZyIsInRleHQveC1vcmciXSxbIm9zZiIsImFwcGxpY2F0aW9uL3ZuZC55YW1haGEub3BlbnNjb3JlZm9ybWF0Il0sWyJvc2ZwdmciLCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdC5vc2ZwdmcreG1sIl0sWyJvc20iLCJhcHBsaWNhdGlvbi92bmQub3BlbnN0cmVldG1hcC5kYXRhK3htbCJdLFsib3RjIiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5jaGFydC10ZW1wbGF0ZSJdLFsib3RmIiwiZm9udC9vdGYiXSxbIm90ZyIsImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZ3JhcGhpY3MtdGVtcGxhdGUiXSxbIm90aCIsImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC13ZWIiXSxbIm90aSIsImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuaW1hZ2UtdGVtcGxhdGUiXSxbIm90cCIsImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uLXRlbXBsYXRlIl0sWyJvdHMiLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0LXRlbXBsYXRlIl0sWyJvdHQiLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtdGVtcGxhdGUiXSxbIm92YSIsImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmEiXSxbIm92ZiIsImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmYiXSxbIm93bCIsImFwcGxpY2F0aW9uL3JkZit4bWwiXSxbIm94cHMiLCJhcHBsaWNhdGlvbi9veHBzIl0sWyJveHQiLCJhcHBsaWNhdGlvbi92bmQub3Blbm9mZmljZW9yZy5leHRlbnNpb24iXSxbInAiLCJ0ZXh0L3gtcGFzY2FsIl0sWyJwN2EiLCJhcHBsaWNhdGlvbi94LXBrY3M3LXNpZ25hdHVyZSJdLFsicDdiIiwiYXBwbGljYXRpb24veC1wa2NzNy1jZXJ0aWZpY2F0ZXMiXSxbInA3YyIsImFwcGxpY2F0aW9uL3BrY3M3LW1pbWUiXSxbInA3bSIsImFwcGxpY2F0aW9uL3BrY3M3LW1pbWUiXSxbInA3ciIsImFwcGxpY2F0aW9uL3gtcGtjczctY2VydHJlcXJlc3AiXSxbInA3cyIsImFwcGxpY2F0aW9uL3BrY3M3LXNpZ25hdHVyZSJdLFsicDgiLCJhcHBsaWNhdGlvbi9wa2NzOCJdLFsicDEwIiwiYXBwbGljYXRpb24veC1wa2NzMTAiXSxbInAxMiIsImFwcGxpY2F0aW9uL3gtcGtjczEyIl0sWyJwYWMiLCJhcHBsaWNhdGlvbi94LW5zLXByb3h5LWF1dG9jb25maWciXSxbInBhZ2VzIiwiYXBwbGljYXRpb24veC1pd29yay1wYWdlcy1zZmZwYWdlcyJdLFsicGFzIiwidGV4dC94LXBhc2NhbCJdLFsicGF3IiwiYXBwbGljYXRpb24vdm5kLnBhd2FhZmlsZSJdLFsicGJkIiwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjYiXSxbInBibSIsImltYWdlL3gtcG9ydGFibGUtYml0bWFwIl0sWyJwY2FwIiwiYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcCJdLFsicGNmIiwiYXBwbGljYXRpb24veC1mb250LXBjZiJdLFsicGNsIiwiYXBwbGljYXRpb24vdm5kLmhwLXBjbCJdLFsicGNseGwiLCJhcHBsaWNhdGlvbi92bmQuaHAtcGNseGwiXSxbInBjdCIsImltYWdlL3gtcGljdCJdLFsicGN1cmwiLCJhcHBsaWNhdGlvbi92bmQuY3VybC5wY3VybCJdLFsicGN4IiwiaW1hZ2UveC1wY3giXSxbInBkYiIsImFwcGxpY2F0aW9uL3gtcGlsb3QiXSxbInBkZSIsInRleHQveC1wcm9jZXNzaW5nIl0sWyJwZGYiLCJhcHBsaWNhdGlvbi9wZGYiXSxbInBlbSIsImFwcGxpY2F0aW9uL3gteDUwOS11c2VyLWNlcnQiXSxbInBmYSIsImFwcGxpY2F0aW9uL3gtZm9udC10eXBlMSJdLFsicGZiIiwiYXBwbGljYXRpb24veC1mb250LXR5cGUxIl0sWyJwZm0iLCJhcHBsaWNhdGlvbi94LWZvbnQtdHlwZTEiXSxbInBmciIsImFwcGxpY2F0aW9uL2ZvbnQtdGRwZnIiXSxbInBmeCIsImFwcGxpY2F0aW9uL3gtcGtjczEyIl0sWyJwZ20iLCJpbWFnZS94LXBvcnRhYmxlLWdyYXltYXAiXSxbInBnbiIsImFwcGxpY2F0aW9uL3gtY2hlc3MtcGduIl0sWyJwZ3AiLCJhcHBsaWNhdGlvbi9wZ3AiXSxbInBocCIsImFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwIl0sWyJwaHAzIiwiYXBwbGljYXRpb24veC1odHRwZC1waHAiXSxbInBocDQiLCJhcHBsaWNhdGlvbi94LWh0dHBkLXBocCJdLFsicGhwcyIsImFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwLXNvdXJjZSJdLFsicGh0bWwiLCJhcHBsaWNhdGlvbi94LWh0dHBkLXBocCJdLFsicGljIiwiaW1hZ2UveC1waWN0Il0sWyJwa2ciLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbInBraSIsImFwcGxpY2F0aW9uL3BraXhjbXAiXSxbInBraXBhdGgiLCJhcHBsaWNhdGlvbi9wa2l4LXBraXBhdGgiXSxbInBrcGFzcyIsImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5wa3Bhc3MiXSxbInBsIiwiYXBwbGljYXRpb24veC1wZXJsIl0sWyJwbGIiLCJhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctbGFyZ2UiXSxbInBsYyIsImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMucGxjIl0sWyJwbGYiLCJhcHBsaWNhdGlvbi92bmQucG9ja2V0bGVhcm4iXSxbInBscyIsImFwcGxpY2F0aW9uL3Bscyt4bWwiXSxbInBtIiwiYXBwbGljYXRpb24veC1wZXJsIl0sWyJwbWwiLCJhcHBsaWNhdGlvbi92bmQuY3RjLXBvc21sIl0sWyJwbmciLCJpbWFnZS9wbmciXSxbInBubSIsImltYWdlL3gtcG9ydGFibGUtYW55bWFwIl0sWyJwb3J0cGtnIiwiYXBwbGljYXRpb24vdm5kLm1hY3BvcnRzLnBvcnRwa2ciXSxbInBvdCIsImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50Il0sWyJwb3RtIiwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQucHJlc2VudGF0aW9uLm1hY3JvRW5hYmxlZC4xMiJdLFsicG90eCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50ZW1wbGF0ZSJdLFsicHBhIiwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQiXSxbInBwYW0iLCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5hZGRpbi5tYWNyb0VuYWJsZWQuMTIiXSxbInBwZCIsImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXBwZCJdLFsicHBtIiwiaW1hZ2UveC1wb3J0YWJsZS1waXhtYXAiXSxbInBwcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50Il0sWyJwcHNtIiwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGVzaG93Lm1hY3JvRW5hYmxlZC4xMiJdLFsicHBzeCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZXNob3ciXSxbInBwdCIsImFwcGxpY2F0aW9uL3Bvd2VycG9pbnQiXSxbInBwdG0iLCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5wcmVzZW50YXRpb24ubWFjcm9FbmFibGVkLjEyIl0sWyJwcHR4IiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbiJdLFsicHFhIiwiYXBwbGljYXRpb24vdm5kLnBhbG0iXSxbInByYyIsImFwcGxpY2F0aW9uL3gtcGlsb3QiXSxbInByZSIsImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1mcmVlbGFuY2UiXSxbInByZiIsImFwcGxpY2F0aW9uL3BpY3MtcnVsZXMiXSxbInByb3Z4IiwiYXBwbGljYXRpb24vcHJvdmVuYW5jZSt4bWwiXSxbInBzIiwiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJdLFsicHNiIiwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXNtYWxsIl0sWyJwc2QiLCJhcHBsaWNhdGlvbi94LXBob3Rvc2hvcCJdLFsicHNmIiwiYXBwbGljYXRpb24veC1mb250LWxpbnV4LXBzZiJdLFsicHNrY3htbCIsImFwcGxpY2F0aW9uL3Bza2MreG1sIl0sWyJwdGkiLCJpbWFnZS9wcnMucHRpIl0sWyJwdGlkIiwiYXBwbGljYXRpb24vdm5kLnB2aS5wdGlkMSJdLFsicHViIiwiYXBwbGljYXRpb24veC1tc3B1Ymxpc2hlciJdLFsicHZiIiwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXZhciJdLFsicHduIiwiYXBwbGljYXRpb24vdm5kLjNtLnBvc3QtaXQtbm90ZXMiXSxbInB5YSIsImF1ZGlvL3ZuZC5tcy1wbGF5cmVhZHkubWVkaWEucHlhIl0sWyJweXYiLCJ2aWRlby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5diJdLFsicWFtIiwiYXBwbGljYXRpb24vdm5kLmVwc29uLnF1aWNrYW5pbWUiXSxbInFibyIsImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFibyJdLFsicWZ4IiwiYXBwbGljYXRpb24vdm5kLmludHUucWZ4Il0sWyJxcHMiLCJhcHBsaWNhdGlvbi92bmQucHVibGlzaGFyZS1kZWx0YS10cmVlIl0sWyJxdCIsInZpZGVvL3F1aWNrdGltZSJdLFsicXdkIiwiYXBwbGljYXRpb24vdm5kLnF1YXJrLnF1YXJreHByZXNzIl0sWyJxd3QiLCJhcHBsaWNhdGlvbi92bmQucXVhcmsucXVhcmt4cHJlc3MiXSxbInF4YiIsImFwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcyJdLFsicXhkIiwiYXBwbGljYXRpb24vdm5kLnF1YXJrLnF1YXJreHByZXNzIl0sWyJxeGwiLCJhcHBsaWNhdGlvbi92bmQucXVhcmsucXVhcmt4cHJlc3MiXSxbInF4dCIsImFwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcyJdLFsicmEiLCJhdWRpby94LXJlYWxhdWRpbyJdLFsicmFtIiwiYXVkaW8veC1wbi1yZWFsYXVkaW8iXSxbInJhbWwiLCJhcHBsaWNhdGlvbi9yYW1sK3lhbWwiXSxbInJhcGQiLCJhcHBsaWNhdGlvbi9yb3V0ZS1hcGQreG1sIl0sWyJyYXIiLCJhcHBsaWNhdGlvbi94LXJhciJdLFsicmFzIiwiaW1hZ2UveC1jbXUtcmFzdGVyIl0sWyJyY3Byb2ZpbGUiLCJhcHBsaWNhdGlvbi92bmQuaXB1bnBsdWdnZWQucmNwcm9maWxlIl0sWyJyZGYiLCJhcHBsaWNhdGlvbi9yZGYreG1sIl0sWyJyZHoiLCJhcHBsaWNhdGlvbi92bmQuZGF0YS12aXNpb24ucmR6Il0sWyJyZWxvIiwiYXBwbGljYXRpb24vcDJwLW92ZXJsYXkreG1sIl0sWyJyZXAiLCJhcHBsaWNhdGlvbi92bmQuYnVzaW5lc3NvYmplY3RzIl0sWyJyZXMiLCJhcHBsaWNhdGlvbi94LWR0YnJlc291cmNlK3htbCJdLFsicmdiIiwiaW1hZ2UveC1yZ2IiXSxbInJpZiIsImFwcGxpY2F0aW9uL3JlZ2luZm8reG1sIl0sWyJyaXAiLCJhdWRpby92bmQucmlwIl0sWyJyaXMiLCJhcHBsaWNhdGlvbi94LXJlc2VhcmNoLWluZm8tc3lzdGVtcyJdLFsicmwiLCJhcHBsaWNhdGlvbi9yZXNvdXJjZS1saXN0cyt4bWwiXSxbInJsYyIsImltYWdlL3ZuZC5mdWppeGVyb3guZWRtaWNzLXJsYyJdLFsicmxkIiwiYXBwbGljYXRpb24vcmVzb3VyY2UtbGlzdHMtZGlmZit4bWwiXSxbInJtIiwiYXVkaW8veC1wbi1yZWFsYXVkaW8iXSxbInJtaSIsImF1ZGlvL21pZGkiXSxbInJtcCIsImF1ZGlvL3gtcG4tcmVhbGF1ZGlvLXBsdWdpbiJdLFsicm1zIiwiYXBwbGljYXRpb24vdm5kLmpjcC5qYXZhbWUubWlkbGV0LXJtcyJdLFsicm12YiIsImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWEtdmJyIl0sWyJybmMiLCJhcHBsaWNhdGlvbi9yZWxheC1uZy1jb21wYWN0LXN5bnRheCJdLFsicm5nIiwiYXBwbGljYXRpb24veG1sIl0sWyJyb2EiLCJhcHBsaWNhdGlvbi9ycGtpLXJvYSJdLFsicm9mZiIsInRleHQvdHJvZmYiXSxbInJwOSIsImFwcGxpY2F0aW9uL3ZuZC5jbG9hbnRvLnJwOSJdLFsicnBtIiwiYXVkaW8veC1wbi1yZWFsYXVkaW8tcGx1Z2luIl0sWyJycHNzIiwiYXBwbGljYXRpb24vdm5kLm5va2lhLnJhZGlvLXByZXNldHMiXSxbInJwc3QiLCJhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0Il0sWyJycSIsImFwcGxpY2F0aW9uL3NwYXJxbC1xdWVyeSJdLFsicnMiLCJhcHBsaWNhdGlvbi9ybHMtc2VydmljZXMreG1sIl0sWyJyc2EiLCJhcHBsaWNhdGlvbi94LXBrY3M3Il0sWyJyc2F0IiwiYXBwbGljYXRpb24vYXRzYy1yc2F0K3htbCJdLFsicnNkIiwiYXBwbGljYXRpb24vcnNkK3htbCJdLFsicnNoZWV0IiwiYXBwbGljYXRpb24vdXJjLXJlc3NoZWV0K3htbCJdLFsicnNzIiwiYXBwbGljYXRpb24vcnNzK3htbCJdLFsicnRmIiwidGV4dC9ydGYiXSxbInJ0eCIsInRleHQvcmljaHRleHQiXSxbInJ1biIsImFwcGxpY2F0aW9uL3gtbWFrZXNlbGYiXSxbInJ1c2QiLCJhcHBsaWNhdGlvbi9yb3V0ZS11c2QreG1sIl0sWyJydiIsInZpZGVvL3ZuZC5ybi1yZWFsdmlkZW8iXSxbInMiLCJ0ZXh0L3gtYXNtIl0sWyJzM20iLCJhdWRpby9zM20iXSxbInNhZiIsImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuc21hZi1hdWRpbyJdLFsic2FzcyIsInRleHQveC1zYXNzIl0sWyJzYm1sIiwiYXBwbGljYXRpb24vc2JtbCt4bWwiXSxbInNjIiwiYXBwbGljYXRpb24vdm5kLmlibS5zZWN1cmUtY29udGFpbmVyIl0sWyJzY2QiLCJhcHBsaWNhdGlvbi94LW1zc2NoZWR1bGUiXSxbInNjbSIsImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1zY3JlZW5jYW0iXSxbInNjcSIsImFwcGxpY2F0aW9uL3NjdnAtY3YtcmVxdWVzdCJdLFsic2NzIiwiYXBwbGljYXRpb24vc2N2cC1jdi1yZXNwb25zZSJdLFsic2NzcyIsInRleHQveC1zY3NzIl0sWyJzY3VybCIsInRleHQvdm5kLmN1cmwuc2N1cmwiXSxbInNkYSIsImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uZHJhdyJdLFsic2RjIiwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5jYWxjIl0sWyJzZGQiLCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmltcHJlc3MiXSxbInNka2QiLCJhcHBsaWNhdGlvbi92bmQuc29sZW50LnNka20reG1sIl0sWyJzZGttIiwiYXBwbGljYXRpb24vdm5kLnNvbGVudC5zZGttK3htbCJdLFsic2RwIiwiYXBwbGljYXRpb24vc2RwIl0sWyJzZHciLCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlciJdLFsic2VhIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0sWyJzZWUiLCJhcHBsaWNhdGlvbi92bmQuc2VlbWFpbCJdLFsic2VlZCIsImFwcGxpY2F0aW9uL3ZuZC5mZHNuLnNlZWQiXSxbInNlbWEiLCJhcHBsaWNhdGlvbi92bmQuc2VtYSJdLFsic2VtZCIsImFwcGxpY2F0aW9uL3ZuZC5zZW1kIl0sWyJzZW1mIiwiYXBwbGljYXRpb24vdm5kLnNlbWYiXSxbInNlbm1seCIsImFwcGxpY2F0aW9uL3Nlbm1sK3htbCJdLFsic2Vuc21seCIsImFwcGxpY2F0aW9uL3NlbnNtbCt4bWwiXSxbInNlciIsImFwcGxpY2F0aW9uL2phdmEtc2VyaWFsaXplZC1vYmplY3QiXSxbInNldHBheSIsImFwcGxpY2F0aW9uL3NldC1wYXltZW50LWluaXRpYXRpb24iXSxbInNldHJlZyIsImFwcGxpY2F0aW9uL3NldC1yZWdpc3RyYXRpb24taW5pdGlhdGlvbiJdLFsic2ZkLWhkc3R4IiwiYXBwbGljYXRpb24vdm5kLmh5ZHJvc3RhdGl4LnNvZi1kYXRhIl0sWyJzZnMiLCJhcHBsaWNhdGlvbi92bmQuc3BvdGZpcmUuc2ZzIl0sWyJzZnYiLCJ0ZXh0L3gtc2Z2Il0sWyJzZ2kiLCJpbWFnZS9zZ2kiXSxbInNnbCIsImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyLWdsb2JhbCJdLFsic2dtIiwidGV4dC9zZ21sIl0sWyJzZ21sIiwidGV4dC9zZ21sIl0sWyJzaCIsImFwcGxpY2F0aW9uL3gtc2giXSxbInNoYXIiLCJhcHBsaWNhdGlvbi94LXNoYXIiXSxbInNoZXgiLCJ0ZXh0L3NoZXgiXSxbInNoZiIsImFwcGxpY2F0aW9uL3NoZit4bWwiXSxbInNodG1sIiwidGV4dC9odG1sIl0sWyJzaWQiLCJpbWFnZS94LW1yc2lkLWltYWdlIl0sWyJzaWV2ZSIsImFwcGxpY2F0aW9uL3NpZXZlIl0sWyJzaWciLCJhcHBsaWNhdGlvbi9wZ3Atc2lnbmF0dXJlIl0sWyJzaWwiLCJhdWRpby9zaWxrIl0sWyJzaWxvIiwibW9kZWwvbWVzaCJdLFsic2lzIiwiYXBwbGljYXRpb24vdm5kLnN5bWJpYW4uaW5zdGFsbCJdLFsic2lzeCIsImFwcGxpY2F0aW9uL3ZuZC5zeW1iaWFuLmluc3RhbGwiXSxbInNpdCIsImFwcGxpY2F0aW9uL3gtc3R1ZmZpdCJdLFsic2l0eCIsImFwcGxpY2F0aW9uL3gtc3R1ZmZpdHgiXSxbInNpdiIsImFwcGxpY2F0aW9uL3NpZXZlIl0sWyJza2QiLCJhcHBsaWNhdGlvbi92bmQua29hbiJdLFsic2ttIiwiYXBwbGljYXRpb24vdm5kLmtvYW4iXSxbInNrcCIsImFwcGxpY2F0aW9uL3ZuZC5rb2FuIl0sWyJza3QiLCJhcHBsaWNhdGlvbi92bmQua29hbiJdLFsic2xkbSIsImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnNsaWRlLm1hY3JvZW5hYmxlZC4xMiJdLFsic2xkeCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZSJdLFsic2xpbSIsInRleHQvc2xpbSJdLFsic2xtIiwidGV4dC9zbGltIl0sWyJzbHMiLCJhcHBsaWNhdGlvbi9yb3V0ZS1zLXRzaWQreG1sIl0sWyJzbHQiLCJhcHBsaWNhdGlvbi92bmQuZXBzb24uc2FsdCJdLFsic20iLCJhcHBsaWNhdGlvbi92bmQuc3RlcG1hbmlhLnN0ZXBjaGFydCJdLFsic21mIiwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5tYXRoIl0sWyJzbWkiLCJhcHBsaWNhdGlvbi9zbWlsIl0sWyJzbWlsIiwiYXBwbGljYXRpb24vc21pbCJdLFsic212IiwidmlkZW8veC1zbXYiXSxbInNtemlwIiwiYXBwbGljYXRpb24vdm5kLnN0ZXBtYW5pYS5wYWNrYWdlIl0sWyJzbmQiLCJhdWRpby9iYXNpYyJdLFsic25mIiwiYXBwbGljYXRpb24veC1mb250LXNuZiJdLFsic28iLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSxbInNwYyIsImFwcGxpY2F0aW9uL3gtcGtjczctY2VydGlmaWNhdGVzIl0sWyJzcGR4IiwidGV4dC9zcGR4Il0sWyJzcGYiLCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnNtYWYtcGhyYXNlIl0sWyJzcGwiLCJhcHBsaWNhdGlvbi94LWZ1dHVyZXNwbGFzaCJdLFsic3BvdCIsInRleHQvdm5kLmluM2Quc3BvdCJdLFsic3BwIiwiYXBwbGljYXRpb24vc2N2cC12cC1yZXNwb25zZSJdLFsic3BxIiwiYXBwbGljYXRpb24vc2N2cC12cC1yZXF1ZXN0Il0sWyJzcHgiLCJhdWRpby9vZ2ciXSxbInNxbCIsImFwcGxpY2F0aW9uL3gtc3FsIl0sWyJzcmMiLCJhcHBsaWNhdGlvbi94LXdhaXMtc291cmNlIl0sWyJzcnQiLCJhcHBsaWNhdGlvbi94LXN1YnJpcCJdLFsic3J1IiwiYXBwbGljYXRpb24vc3J1K3htbCJdLFsic3J4IiwiYXBwbGljYXRpb24vc3BhcnFsLXJlc3VsdHMreG1sIl0sWyJzc2RsIiwiYXBwbGljYXRpb24vc3NkbCt4bWwiXSxbInNzZSIsImFwcGxpY2F0aW9uL3ZuZC5rb2Rhay1kZXNjcmlwdG9yIl0sWyJzc2YiLCJhcHBsaWNhdGlvbi92bmQuZXBzb24uc3NmIl0sWyJzc21sIiwiYXBwbGljYXRpb24vc3NtbCt4bWwiXSxbInNzdCIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdLFsic3QiLCJhcHBsaWNhdGlvbi92bmQuc2FpbGluZ3RyYWNrZXIudHJhY2siXSxbInN0YyIsImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmNhbGMudGVtcGxhdGUiXSxbInN0ZCIsImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXcudGVtcGxhdGUiXSxbInN0ZiIsImFwcGxpY2F0aW9uL3ZuZC53dC5zdGYiXSxbInN0aSIsImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmltcHJlc3MudGVtcGxhdGUiXSxbInN0ayIsImFwcGxpY2F0aW9uL2h5cGVyc3R1ZGlvIl0sWyJzdGwiLCJtb2RlbC9zdGwiXSxbInN0cHgiLCJtb2RlbC9zdGVwK3htbCJdLFsic3RweHoiLCJtb2RlbC9zdGVwLXhtbCt6aXAiXSxbInN0cHoiLCJtb2RlbC9zdGVwK3ppcCJdLFsic3RyIiwiYXBwbGljYXRpb24vdm5kLnBnLmZvcm1hdCJdLFsic3R3IiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLnRlbXBsYXRlIl0sWyJzdHlsIiwidGV4dC9zdHlsdXMiXSxbInN0eWx1cyIsInRleHQvc3R5bHVzIl0sWyJzdWIiLCJ0ZXh0L3ZuZC5kdmIuc3VidGl0bGUiXSxbInN1cyIsImFwcGxpY2F0aW9uL3ZuZC5zdXMtY2FsZW5kYXIiXSxbInN1c3AiLCJhcHBsaWNhdGlvbi92bmQuc3VzLWNhbGVuZGFyIl0sWyJzdjRjcGlvIiwiYXBwbGljYXRpb24veC1zdjRjcGlvIl0sWyJzdjRjcmMiLCJhcHBsaWNhdGlvbi94LXN2NGNyYyJdLFsic3ZjIiwiYXBwbGljYXRpb24vdm5kLmR2Yi5zZXJ2aWNlIl0sWyJzdmQiLCJhcHBsaWNhdGlvbi92bmQuc3ZkIl0sWyJzdmciLCJpbWFnZS9zdmcreG1sIl0sWyJzdmd6IiwiaW1hZ2Uvc3ZnK3htbCJdLFsic3dhIiwiYXBwbGljYXRpb24veC1kaXJlY3RvciJdLFsic3dmIiwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giXSxbInN3aSIsImFwcGxpY2F0aW9uL3ZuZC5hcmlzdGFuZXR3b3Jrcy5zd2kiXSxbInN3aWR0YWciLCJhcHBsaWNhdGlvbi9zd2lkK3htbCJdLFsic3hjIiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuY2FsYyJdLFsic3hkIiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuZHJhdyJdLFsic3hnIiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLmdsb2JhbCJdLFsic3hpIiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuaW1wcmVzcyJdLFsic3htIiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwubWF0aCJdLFsic3h3IiwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyIl0sWyJ0IiwidGV4dC90cm9mZiJdLFsidDMiLCJhcHBsaWNhdGlvbi94LXQzdm0taW1hZ2UiXSxbInQzOCIsImltYWdlL3QzOCJdLFsidGFnbGV0IiwiYXBwbGljYXRpb24vdm5kLm15bmZjIl0sWyJ0YW8iLCJhcHBsaWNhdGlvbi92bmQudGFvLmludGVudC1tb2R1bGUtYXJjaGl2ZSJdLFsidGFwIiwiaW1hZ2Uvdm5kLnRlbmNlbnQudGFwIl0sWyJ0YXIiLCJhcHBsaWNhdGlvbi94LXRhciJdLFsidGNhcCIsImFwcGxpY2F0aW9uL3ZuZC4zZ3BwMi50Y2FwIl0sWyJ0Y2wiLCJhcHBsaWNhdGlvbi94LXRjbCJdLFsidGQiLCJhcHBsaWNhdGlvbi91cmMtdGFyZ2V0ZGVzYyt4bWwiXSxbInRlYWNoZXIiLCJhcHBsaWNhdGlvbi92bmQuc21hcnQudGVhY2hlciJdLFsidGVpIiwiYXBwbGljYXRpb24vdGVpK3htbCJdLFsidGVpY29ycHVzIiwiYXBwbGljYXRpb24vdGVpK3htbCJdLFsidGV4IiwiYXBwbGljYXRpb24veC10ZXgiXSxbInRleGkiLCJhcHBsaWNhdGlvbi94LXRleGluZm8iXSxbInRleGluZm8iLCJhcHBsaWNhdGlvbi94LXRleGluZm8iXSxbInRleHQiLCJ0ZXh0L3BsYWluIl0sWyJ0ZmkiLCJhcHBsaWNhdGlvbi90aHJhdWQreG1sIl0sWyJ0Zm0iLCJhcHBsaWNhdGlvbi94LXRleC10Zm0iXSxbInRmeCIsImltYWdlL3RpZmYtZngiXSxbInRnYSIsImltYWdlL3gtdGdhIl0sWyJ0Z3oiLCJhcHBsaWNhdGlvbi94LXRhciJdLFsidGhteCIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2V0aGVtZSJdLFsidGlmIiwiaW1hZ2UvdGlmZiJdLFsidGlmZiIsImltYWdlL3RpZmYiXSxbInRrIiwiYXBwbGljYXRpb24veC10Y2wiXSxbInRtbyIsImFwcGxpY2F0aW9uL3ZuZC50bW9iaWxlLWxpdmV0diJdLFsidG9tbCIsImFwcGxpY2F0aW9uL3RvbWwiXSxbInRvcnJlbnQiLCJhcHBsaWNhdGlvbi94LWJpdHRvcnJlbnQiXSxbInRwbCIsImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdG9vbC10ZW1wbGF0ZSJdLFsidHB0IiwiYXBwbGljYXRpb24vdm5kLnRyaWQudHB0Il0sWyJ0ciIsInRleHQvdHJvZmYiXSxbInRyYSIsImFwcGxpY2F0aW9uL3ZuZC50cnVlYXBwIl0sWyJ0cmlnIiwiYXBwbGljYXRpb24vdHJpZyJdLFsidHJtIiwiYXBwbGljYXRpb24veC1tc3Rlcm1pbmFsIl0sWyJ0cyIsInZpZGVvL21wMnQiXSxbInRzZCIsImFwcGxpY2F0aW9uL3RpbWVzdGFtcGVkLWRhdGEiXSxbInRzdiIsInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXMiXSxbInR0YyIsImZvbnQvY29sbGVjdGlvbiJdLFsidHRmIiwiZm9udC90dGYiXSxbInR0bCIsInRleHQvdHVydGxlIl0sWyJ0dG1sIiwiYXBwbGljYXRpb24vdHRtbCt4bWwiXSxbInR3ZCIsImFwcGxpY2F0aW9uL3ZuZC5zaW10ZWNoLW1pbmRtYXBwZXIiXSxbInR3ZHMiLCJhcHBsaWNhdGlvbi92bmQuc2ltdGVjaC1taW5kbWFwcGVyIl0sWyJ0eGQiLCJhcHBsaWNhdGlvbi92bmQuZ2Vub21hdGl4LnR1eGVkbyJdLFsidHhmIiwiYXBwbGljYXRpb24vdm5kLm1vYml1cy50eGYiXSxbInR4dCIsInRleHQvcGxhaW4iXSxbInU4ZHNuIiwibWVzc2FnZS9nbG9iYWwtZGVsaXZlcnktc3RhdHVzIl0sWyJ1OGhkciIsIm1lc3NhZ2UvZ2xvYmFsLWhlYWRlcnMiXSxbInU4bWRuIiwibWVzc2FnZS9nbG9iYWwtZGlzcG9zaXRpb24tbm90aWZpY2F0aW9uIl0sWyJ1OG1zZyIsIm1lc3NhZ2UvZ2xvYmFsIl0sWyJ1MzIiLCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluIl0sWyJ1YmoiLCJhcHBsaWNhdGlvbi91Ympzb24iXSxbInVkZWIiLCJhcHBsaWNhdGlvbi94LWRlYmlhbi1wYWNrYWdlIl0sWyJ1ZmQiLCJhcHBsaWNhdGlvbi92bmQudWZkbCJdLFsidWZkbCIsImFwcGxpY2F0aW9uL3ZuZC51ZmRsIl0sWyJ1bHgiLCJhcHBsaWNhdGlvbi94LWdsdWx4Il0sWyJ1bWoiLCJhcHBsaWNhdGlvbi92bmQudW1hamluIl0sWyJ1bml0eXdlYiIsImFwcGxpY2F0aW9uL3ZuZC51bml0eSJdLFsidW9tbCIsImFwcGxpY2F0aW9uL3ZuZC51b21sK3htbCJdLFsidXJpIiwidGV4dC91cmktbGlzdCJdLFsidXJpcyIsInRleHQvdXJpLWxpc3QiXSxbInVybHMiLCJ0ZXh0L3VyaS1saXN0Il0sWyJ1c2R6IiwibW9kZWwvdm5kLnVzZHoremlwIl0sWyJ1c3RhciIsImFwcGxpY2F0aW9uL3gtdXN0YXIiXSxbInV0eiIsImFwcGxpY2F0aW9uL3ZuZC51aXEudGhlbWUiXSxbInV1IiwidGV4dC94LXV1ZW5jb2RlIl0sWyJ1dmEiLCJhdWRpby92bmQuZGVjZS5hdWRpbyJdLFsidXZkIiwiYXBwbGljYXRpb24vdm5kLmRlY2UuZGF0YSJdLFsidXZmIiwiYXBwbGljYXRpb24vdm5kLmRlY2UuZGF0YSJdLFsidXZnIiwiaW1hZ2Uvdm5kLmRlY2UuZ3JhcGhpYyJdLFsidXZoIiwidmlkZW8vdm5kLmRlY2UuaGQiXSxbInV2aSIsImltYWdlL3ZuZC5kZWNlLmdyYXBoaWMiXSxbInV2bSIsInZpZGVvL3ZuZC5kZWNlLm1vYmlsZSJdLFsidXZwIiwidmlkZW8vdm5kLmRlY2UucGQiXSxbInV2cyIsInZpZGVvL3ZuZC5kZWNlLnNkIl0sWyJ1dnQiLCJhcHBsaWNhdGlvbi92bmQuZGVjZS50dG1sK3htbCJdLFsidXZ1IiwidmlkZW8vdm5kLnV2dnUubXA0Il0sWyJ1dnYiLCJ2aWRlby92bmQuZGVjZS52aWRlbyJdLFsidXZ2YSIsImF1ZGlvL3ZuZC5kZWNlLmF1ZGlvIl0sWyJ1dnZkIiwiYXBwbGljYXRpb24vdm5kLmRlY2UuZGF0YSJdLFsidXZ2ZiIsImFwcGxpY2F0aW9uL3ZuZC5kZWNlLmRhdGEiXSxbInV2dmciLCJpbWFnZS92bmQuZGVjZS5ncmFwaGljIl0sWyJ1dnZoIiwidmlkZW8vdm5kLmRlY2UuaGQiXSxbInV2dmkiLCJpbWFnZS92bmQuZGVjZS5ncmFwaGljIl0sWyJ1dnZtIiwidmlkZW8vdm5kLmRlY2UubW9iaWxlIl0sWyJ1dnZwIiwidmlkZW8vdm5kLmRlY2UucGQiXSxbInV2dnMiLCJ2aWRlby92bmQuZGVjZS5zZCJdLFsidXZ2dCIsImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnR0bWwreG1sIl0sWyJ1dnZ1IiwidmlkZW8vdm5kLnV2dnUubXA0Il0sWyJ1dnZ2IiwidmlkZW8vdm5kLmRlY2UudmlkZW8iXSxbInV2dngiLCJhcHBsaWNhdGlvbi92bmQuZGVjZS51bnNwZWNpZmllZCJdLFsidXZ2eiIsImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcCJdLFsidXZ4IiwiYXBwbGljYXRpb24vdm5kLmRlY2UudW5zcGVjaWZpZWQiXSxbInV2eiIsImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcCJdLFsidmJveCIsImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12Ym94Il0sWyJ2Ym94LWV4dHBhY2siLCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmJveC1leHRwYWNrIl0sWyJ2Y2FyZCIsInRleHQvdmNhcmQiXSxbInZjZCIsImFwcGxpY2F0aW9uL3gtY2RsaW5rIl0sWyJ2Y2YiLCJ0ZXh0L3gtdmNhcmQiXSxbInZjZyIsImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdmNhcmQiXSxbInZjcyIsInRleHQveC12Y2FsZW5kYXIiXSxbInZjeCIsImFwcGxpY2F0aW9uL3ZuZC52Y3giXSxbInZkaSIsImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12ZGkiXSxbInZkcyIsIm1vZGVsL3ZuZC5zYXAudmRzIl0sWyJ2aGQiLCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmhkIl0sWyJ2aXMiLCJhcHBsaWNhdGlvbi92bmQudmlzaW9uYXJ5Il0sWyJ2aXYiLCJ2aWRlby92bmQudml2byJdLFsidmxjIiwiYXBwbGljYXRpb24vdmlkZW9sYW4iXSxbInZtZGsiLCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdm1kayJdLFsidm9iIiwidmlkZW8veC1tcy12b2IiXSxbInZvciIsImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyIl0sWyJ2b3giLCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluIl0sWyJ2cm1sIiwibW9kZWwvdnJtbCJdLFsidnNkIiwiYXBwbGljYXRpb24vdm5kLnZpc2lvIl0sWyJ2c2YiLCJhcHBsaWNhdGlvbi92bmQudnNmIl0sWyJ2c3MiLCJhcHBsaWNhdGlvbi92bmQudmlzaW8iXSxbInZzdCIsImFwcGxpY2F0aW9uL3ZuZC52aXNpbyJdLFsidnN3IiwiYXBwbGljYXRpb24vdm5kLnZpc2lvIl0sWyJ2dGYiLCJpbWFnZS92bmQudmFsdmUuc291cmNlLnRleHR1cmUiXSxbInZ0dCIsInRleHQvdnR0Il0sWyJ2dHUiLCJtb2RlbC92bmQudnR1Il0sWyJ2eG1sIiwiYXBwbGljYXRpb24vdm9pY2V4bWwreG1sIl0sWyJ3M2QiLCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIl0sWyJ3YWQiLCJhcHBsaWNhdGlvbi94LWRvb20iXSxbIndhZGwiLCJhcHBsaWNhdGlvbi92bmQuc3VuLndhZGwreG1sIl0sWyJ3YXIiLCJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUiXSxbIndhc20iLCJhcHBsaWNhdGlvbi93YXNtIl0sWyJ3YXYiLCJhdWRpby94LXdhdiJdLFsid2F4IiwiYXVkaW8veC1tcy13YXgiXSxbIndibXAiLCJpbWFnZS92bmQud2FwLndibXAiXSxbIndicyIsImFwcGxpY2F0aW9uL3ZuZC5jcml0aWNhbHRvb2xzLndicyt4bWwiXSxbIndieG1sIiwiYXBwbGljYXRpb24vd2J4bWwiXSxbIndjbSIsImFwcGxpY2F0aW9uL3ZuZC5tcy13b3JrcyJdLFsid2RiIiwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmtzIl0sWyJ3ZHAiLCJpbWFnZS92bmQubXMtcGhvdG8iXSxbIndlYmEiLCJhdWRpby93ZWJtIl0sWyJ3ZWJhcHAiLCJhcHBsaWNhdGlvbi94LXdlYi1hcHAtbWFuaWZlc3QranNvbiJdLFsid2VibSIsInZpZGVvL3dlYm0iXSxbIndlYm1hbmlmZXN0IiwiYXBwbGljYXRpb24vbWFuaWZlc3QranNvbiJdLFsid2VicCIsImltYWdlL3dlYnAiXSxbIndnIiwiYXBwbGljYXRpb24vdm5kLnBtaS53aWRnZXQiXSxbIndndCIsImFwcGxpY2F0aW9uL3dpZGdldCJdLFsid2tzIiwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmtzIl0sWyJ3bSIsInZpZGVvL3gtbXMtd20iXSxbIndtYSIsImF1ZGlvL3gtbXMtd21hIl0sWyJ3bWQiLCJhcHBsaWNhdGlvbi94LW1zLXdtZCJdLFsid21mIiwiaW1hZ2Uvd21mIl0sWyJ3bWwiLCJ0ZXh0L3ZuZC53YXAud21sIl0sWyJ3bWxjIiwiYXBwbGljYXRpb24vd21sYyJdLFsid21scyIsInRleHQvdm5kLndhcC53bWxzY3JpcHQiXSxbIndtbHNjIiwiYXBwbGljYXRpb24vdm5kLndhcC53bWxzY3JpcHRjIl0sWyJ3bXYiLCJ2aWRlby94LW1zLXdtdiJdLFsid214IiwidmlkZW8veC1tcy13bXgiXSxbIndteiIsImFwcGxpY2F0aW9uL3gtbXNtZXRhZmlsZSJdLFsid29mZiIsImZvbnQvd29mZiJdLFsid29mZjIiLCJmb250L3dvZmYyIl0sWyJ3b3JkIiwiYXBwbGljYXRpb24vbXN3b3JkIl0sWyJ3cGQiLCJhcHBsaWNhdGlvbi92bmQud29yZHBlcmZlY3QiXSxbIndwbCIsImFwcGxpY2F0aW9uL3ZuZC5tcy13cGwiXSxbIndwcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy13b3JrcyJdLFsid3FkIiwiYXBwbGljYXRpb24vdm5kLndxZCJdLFsid3JpIiwiYXBwbGljYXRpb24veC1tc3dyaXRlIl0sWyJ3cmwiLCJtb2RlbC92cm1sIl0sWyJ3c2MiLCJtZXNzYWdlL3ZuZC53ZmEud3NjIl0sWyJ3c2RsIiwiYXBwbGljYXRpb24vd3NkbCt4bWwiXSxbIndzcG9saWN5IiwiYXBwbGljYXRpb24vd3Nwb2xpY3kreG1sIl0sWyJ3dGIiLCJhcHBsaWNhdGlvbi92bmQud2VidHVyYm8iXSxbInd2eCIsInZpZGVvL3gtbXMtd3Z4Il0sWyJ4M2QiLCJtb2RlbC94M2QreG1sIl0sWyJ4M2RiIiwibW9kZWwveDNkK2Zhc3RpbmZvc2V0Il0sWyJ4M2RieiIsIm1vZGVsL3gzZCtiaW5hcnkiXSxbIngzZHYiLCJtb2RlbC94M2QtdnJtbCJdLFsieDNkdnoiLCJtb2RlbC94M2QrdnJtbCJdLFsieDNkeiIsIm1vZGVsL3gzZCt4bWwiXSxbIngzMiIsImFwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1iaW4iXSxbInhfYiIsIm1vZGVsL3ZuZC5wYXJhc29saWQudHJhbnNtaXQuYmluYXJ5Il0sWyJ4X3QiLCJtb2RlbC92bmQucGFyYXNvbGlkLnRyYW5zbWl0LnRleHQiXSxbInhhbWwiLCJhcHBsaWNhdGlvbi94YW1sK3htbCJdLFsieGFwIiwiYXBwbGljYXRpb24veC1zaWx2ZXJsaWdodC1hcHAiXSxbInhhciIsImFwcGxpY2F0aW9uL3ZuZC54YXJhIl0sWyJ4YXYiLCJhcHBsaWNhdGlvbi94Y2FwLWF0dCt4bWwiXSxbInhiYXAiLCJhcHBsaWNhdGlvbi94LW1zLXhiYXAiXSxbInhiZCIsImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzLmJpbmRlciJdLFsieGJtIiwiaW1hZ2UveC14Yml0bWFwIl0sWyJ4Y2EiLCJhcHBsaWNhdGlvbi94Y2FwLWNhcHMreG1sIl0sWyJ4Y3MiLCJhcHBsaWNhdGlvbi9jYWxlbmRhcit4bWwiXSxbInhkZiIsImFwcGxpY2F0aW9uL3hjYXAtZGlmZit4bWwiXSxbInhkbSIsImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0reG1sIl0sWyJ4ZHAiLCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGRwK3htbCJdLFsieGRzc2MiLCJhcHBsaWNhdGlvbi9kc3NjK3htbCJdLFsieGR3IiwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kb2N1d29ya3MiXSxbInhlbCIsImFwcGxpY2F0aW9uL3hjYXAtZWwreG1sIl0sWyJ4ZW5jIiwiYXBwbGljYXRpb24veGVuYyt4bWwiXSxbInhlciIsImFwcGxpY2F0aW9uL3BhdGNoLW9wcy1lcnJvcit4bWwiXSxbInhmZGYiLCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGZkZiJdLFsieGZkbCIsImFwcGxpY2F0aW9uL3ZuZC54ZmRsIl0sWyJ4aHQiLCJhcHBsaWNhdGlvbi94aHRtbCt4bWwiXSxbInhodG1sIiwiYXBwbGljYXRpb24veGh0bWwreG1sIl0sWyJ4aHZtbCIsImFwcGxpY2F0aW9uL3h2K3htbCJdLFsieGlmIiwiaW1hZ2Uvdm5kLnhpZmYiXSxbInhsIiwiYXBwbGljYXRpb24vZXhjZWwiXSxbInhsYSIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCJdLFsieGxhbSIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQuMTIiXSxbInhsYyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCJdLFsieGxmIiwiYXBwbGljYXRpb24veGxpZmYreG1sIl0sWyJ4bG0iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwiXSxbInhscyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCJdLFsieGxzYiIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLjEyIl0sWyJ4bHNtIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvRW5hYmxlZC4xMiJdLFsieGxzeCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Il0sWyJ4bHQiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwiXSxbInhsdG0iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGVtcGxhdGUubWFjcm9FbmFibGVkLjEyIl0sWyJ4bHR4IiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGUiXSxbInhsdyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCJdLFsieG0iLCJhdWRpby94bSJdLFsieG1sIiwiYXBwbGljYXRpb24veG1sIl0sWyJ4bnMiLCJhcHBsaWNhdGlvbi94Y2FwLW5zK3htbCJdLFsieG8iLCJhcHBsaWNhdGlvbi92bmQub2xwYy1zdWdhciJdLFsieG9wIiwiYXBwbGljYXRpb24veG9wK3htbCJdLFsieHBpIiwiYXBwbGljYXRpb24veC14cGluc3RhbGwiXSxbInhwbCIsImFwcGxpY2F0aW9uL3hwcm9jK3htbCJdLFsieHBtIiwiaW1hZ2UveC14cGl4bWFwIl0sWyJ4cHIiLCJhcHBsaWNhdGlvbi92bmQuaXMteHByIl0sWyJ4cHMiLCJhcHBsaWNhdGlvbi92bmQubXMteHBzZG9jdW1lbnQiXSxbInhwdyIsImFwcGxpY2F0aW9uL3ZuZC5pbnRlcmNvbi5mb3JtbmV0Il0sWyJ4cHgiLCJhcHBsaWNhdGlvbi92bmQuaW50ZXJjb24uZm9ybW5ldCJdLFsieHNkIiwiYXBwbGljYXRpb24veG1sIl0sWyJ4c2wiLCJhcHBsaWNhdGlvbi94bWwiXSxbInhzbHQiLCJhcHBsaWNhdGlvbi94c2x0K3htbCJdLFsieHNtIiwiYXBwbGljYXRpb24vdm5kLnN5bmNtbCt4bWwiXSxbInhzcGYiLCJhcHBsaWNhdGlvbi94c3BmK3htbCJdLFsieHVsIiwiYXBwbGljYXRpb24vdm5kLm1vemlsbGEueHVsK3htbCJdLFsieHZtIiwiYXBwbGljYXRpb24veHYreG1sIl0sWyJ4dm1sIiwiYXBwbGljYXRpb24veHYreG1sIl0sWyJ4d2QiLCJpbWFnZS94LXh3aW5kb3dkdW1wIl0sWyJ4eXoiLCJjaGVtaWNhbC94LXh5eiJdLFsieHoiLCJhcHBsaWNhdGlvbi94LXh6Il0sWyJ5YW1sIiwidGV4dC95YW1sIl0sWyJ5YW5nIiwiYXBwbGljYXRpb24veWFuZyJdLFsieWluIiwiYXBwbGljYXRpb24veWluK3htbCJdLFsieW1sIiwidGV4dC95YW1sIl0sWyJ5bXAiLCJ0ZXh0L3gtc3VzZS15bXAiXSxbInoiLCJhcHBsaWNhdGlvbi94LWNvbXByZXNzIl0sWyJ6MSIsImFwcGxpY2F0aW9uL3gtem1hY2hpbmUiXSxbInoyIiwiYXBwbGljYXRpb24veC16bWFjaGluZSJdLFsiejMiLCJhcHBsaWNhdGlvbi94LXptYWNoaW5lIl0sWyJ6NCIsImFwcGxpY2F0aW9uL3gtem1hY2hpbmUiXSxbIno1IiwiYXBwbGljYXRpb24veC16bWFjaGluZSJdLFsiejYiLCJhcHBsaWNhdGlvbi94LXptYWNoaW5lIl0sWyJ6NyIsImFwcGxpY2F0aW9uL3gtem1hY2hpbmUiXSxbIno4IiwiYXBwbGljYXRpb24veC16bWFjaGluZSJdLFsiemF6IiwiYXBwbGljYXRpb24vdm5kLnp6YXp6LmRlY2sreG1sIl0sWyJ6aXAiLCJhcHBsaWNhdGlvbi96aXAiXSxbInppciIsImFwcGxpY2F0aW9uL3ZuZC56dWwiXSxbInppcnoiLCJhcHBsaWNhdGlvbi92bmQuenVsIl0sWyJ6bW0iLCJhcHBsaWNhdGlvbi92bmQuaGFuZGhlbGQtZW50ZXJ0YWlubWVudCt4bWwiXSxbInpzaCIsInRleHQveC1zY3JpcHR6c2giXV0pO2Z1bmN0aW9uIFooZSx0LG4pe2NvbnN0IGk9ZnVuY3Rpb24oZSl7Y29uc3R7bmFtZTp0fT1lO2lmKHQmJi0xIT09dC5sYXN0SW5kZXhPZigiLiIpJiYhZS50eXBlKXtjb25zdCBuPXQuc3BsaXQoIi4iKS5wb3AoKS50b0xvd2VyQ2FzZSgpLGk9US5nZXQobik7aSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInR5cGUiLHt2YWx1ZTppLHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwfSl9cmV0dXJuIGV9KGUpLHt3ZWJraXRSZWxhdGl2ZVBhdGg6YX09ZSxvPSJzdHJpbmciPT10eXBlb2YgdD90OiJzdHJpbmciPT10eXBlb2YgYSYmYS5sZW5ndGg+MD9hOmAuLyR7ZS5uYW1lfWA7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBpLnBhdGgmJkooaSwicGF0aCIsbyksdm9pZCAwIT09biYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGksImhhbmRsZSIse3ZhbHVlOm4sd3JpdGFibGU6ITEsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITB9KSxKKGksInJlbGF0aXZlUGF0aCIsbyksaX1mdW5jdGlvbiBKKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwfSl9Y29uc3QgZWU9WyIuRFNfU3RvcmUiLCJUaHVtYnMuZGIiXTtmdW5jdGlvbiB0ZShlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lfWZ1bmN0aW9uIG5lKGUpe3JldHVybiBlLmZpbHRlcihlPT4tMT09PWVlLmluZGV4T2YoZS5uYW1lKSl9ZnVuY3Rpb24gaWUoZSl7aWYobnVsbD09PWUpcmV0dXJuW107Y29uc3QgdD1bXTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3QgaT1lW25dO3QucHVzaChpKX1yZXR1cm4gdH1mdW5jdGlvbiBhZShlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZS53ZWJraXRHZXRBc0VudHJ5KXJldHVybiByZShlKTtjb25zdCB0PWUud2Via2l0R2V0QXNFbnRyeSgpO3JldHVybiB0JiZ0LmlzRGlyZWN0b3J5P2xlKHQpOnJlKGUsdCl9ZnVuY3Rpb24gb2UoZSl7cmV0dXJuIGUucmVkdWNlKChlLHQpPT5bLi4uZSwuLi5BcnJheS5pc0FycmF5KHQpP29lKHQpOlt0XV0sW10pfWZ1bmN0aW9uIHJlKGUsdCl7cmV0dXJuIFgodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBuO2lmKGdsb2JhbFRoaXMuaXNTZWN1cmVDb250ZXh0JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRBc0ZpbGVTeXN0ZW1IYW5kbGUpe2NvbnN0IHQ9eWllbGQgZS5nZXRBc0ZpbGVTeXN0ZW1IYW5kbGUoKTtpZihudWxsPT09dCl0aHJvdyBuZXcgRXJyb3IoYCR7ZX0gaXMgbm90IGEgRmlsZWApO2lmKHZvaWQgMCE9PXQpe2NvbnN0IGU9eWllbGQgdC5nZXRGaWxlKCk7cmV0dXJuIGUuaGFuZGxlPXQsWihlKX19Y29uc3QgaT1lLmdldEFzRmlsZSgpO2lmKCFpKXRocm93IG5ldyBFcnJvcihgJHtlfSBpcyBub3QgYSBGaWxlYCk7cmV0dXJuIFooaSxudWxsIT09KG49bnVsbD09dD92b2lkIDA6dC5mdWxsUGF0aCkmJnZvaWQgMCE9PW4/bjp2b2lkIDApfSl9ZnVuY3Rpb24gc2UoZSl7cmV0dXJuIFgodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiBlLmlzRGlyZWN0b3J5P2xlKGUpOmZ1bmN0aW9uKGUpe3JldHVybiBYKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gbmV3IFByb21pc2UoKHQsbik9PntlLmZpbGUobj0+e2NvbnN0IGk9WihuLGUuZnVsbFBhdGgpO3QoaSl9LGU9PntuKGUpfSl9KX0pfShlKX0pfWZ1bmN0aW9uIGxlKGUpe2NvbnN0IHQ9ZS5jcmVhdGVSZWFkZXIoKTtyZXR1cm4gbmV3IFByb21pc2UoKGUsbik9Pntjb25zdCBpPVtdOyFmdW5jdGlvbiBhKCl7dC5yZWFkRW50cmllcyh0PT5YKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZih0Lmxlbmd0aCl7Y29uc3QgZT1Qcm9taXNlLmFsbCh0Lm1hcChzZSkpO2kucHVzaChlKSxhKCl9ZWxzZSB0cnl7Y29uc3QgdD15aWVsZCBQcm9taXNlLmFsbChpKTtlKHQpfWNhdGNoKGUpe24oZSl9fSksZT0+e24oZSl9KX0oKX0pfXZhciBkZT1uKDgxMDcpO2Z1bmN0aW9uIGNlKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBnZShlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGhlKGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHVlKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYoaT1pLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4saSl9cmV0dXJuIG59ZnVuY3Rpb24gcGUoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/dWUoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2ZlKGUsdCxuW3RdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnVlKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBmZShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gbWUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihudWxsPT1uKXJldHVybjt2YXIgaSxhLG89W10scj0hMCxzPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShyPShpPW4ubmV4dCgpKS5kb25lKSYmKG8ucHVzaChpLnZhbHVlKSwhdHx8by5sZW5ndGghPT10KTtyPSEwKTt9Y2F0Y2goZSl7cz0hMCxhPWV9ZmluYWxseXt0cnl7cnx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fXJldHVybiBvfShlLHQpfHxoZShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gaGUoZSx0KXtpZihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGdlKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKGUpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/Z2UoZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGdlKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAsaT1uZXcgQXJyYXkodCk7bjx0O24rKylpW25dPWVbbl07cmV0dXJuIGl9dmFyIGJlPSJmdW5jdGlvbiI9PXR5cGVvZiBkZT9kZTpkZS5kZWZhdWx0LHZlPSJmaWxlLWludmFsaWQtdHlwZSIseGU9ImZpbGUtdG9vLWxhcmdlIix5ZT0iZmlsZS10b28tc21hbGwiLHdlPSJ0b28tbWFueS1maWxlcyIsa2U9ZnVuY3Rpb24oKXt2YXIgZT0oYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiIiKS5zcGxpdCgiLCIpLHQ9ZS5sZW5ndGg+MT8ib25lIG9mICIuY29uY2F0KGUuam9pbigiLCAiKSk6ZVswXTtyZXR1cm57Y29kZTp2ZSxtZXNzYWdlOiJGaWxlIHR5cGUgbXVzdCBiZSAiLmNvbmNhdCh0KX19LEFlPWZ1bmN0aW9uKGUpe3JldHVybntjb2RlOnhlLG1lc3NhZ2U6IkZpbGUgaXMgbGFyZ2VyIHRoYW4gIi5jb25jYXQoZSwiICIpLmNvbmNhdCgxPT09ZT8iYnl0ZSI6ImJ5dGVzIil9fSxDZT1mdW5jdGlvbihlKXtyZXR1cm57Y29kZTp5ZSxtZXNzYWdlOiJGaWxlIGlzIHNtYWxsZXIgdGhhbiAiLmNvbmNhdChlLCIgIikuY29uY2F0KDE9PT1lPyJieXRlIjoiYnl0ZXMiKX19LEVlPXtjb2RlOndlLG1lc3NhZ2U6IlRvbyBtYW55IGZpbGVzIn07ZnVuY3Rpb24gU2UoZSx0KXt2YXIgbj0iYXBwbGljYXRpb24veC1tb3otZmlsZSI9PT1lLnR5cGV8fGJlKGUsdCk7cmV0dXJuW24sbj9udWxsOmtlKHQpXX1mdW5jdGlvbiBEZShlLHQsbil7aWYoWWUoZS5zaXplKSlpZihZZSh0KSYmWWUobikpe2lmKGUuc2l6ZT5uKXJldHVyblshMSxBZShuKV07aWYoZS5zaXplPHQpcmV0dXJuWyExLENlKHQpXX1lbHNle2lmKFllKHQpJiZlLnNpemU8dClyZXR1cm5bITEsQ2UodCldO2lmKFllKG4pJiZlLnNpemU+bilyZXR1cm5bITEsQWUobildfXJldHVyblshMCxudWxsXX1mdW5jdGlvbiBZZShlKXtyZXR1cm4gbnVsbCE9ZX1mdW5jdGlvbiBUZShlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZD9lLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk6dm9pZCAwIT09ZS5jYW5jZWxCdWJibGUmJmUuY2FuY2VsQnViYmxlfWZ1bmN0aW9uIEZlKGUpe3JldHVybiBlLmRhdGFUcmFuc2Zlcj9BcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGUuZGF0YVRyYW5zZmVyLnR5cGVzLGZ1bmN0aW9uKGUpe3JldHVybiJGaWxlcyI9PT1lfHwiYXBwbGljYXRpb24veC1tb3otZmlsZSI9PT1lfSk6ISFlLnRhcmdldCYmISFlLnRhcmdldC5maWxlc31mdW5jdGlvbiBJZShlKXtlLnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gX2UoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkobj4xP24tMTowKSxhPTE7YTxuO2ErKylpW2EtMV09YXJndW1lbnRzW2FdO3JldHVybiB0LnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIVRlKGUpJiZ0JiZ0LmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KGkpKSxUZShlKX0pfX1mdW5jdGlvbiBNZShlKXtyZXR1cm4iYXVkaW8vKiI9PT1lfHwidmlkZW8vKiI9PT1lfHwiaW1hZ2UvKiI9PT1lfHwidGV4dC8qIj09PWV8fCJhcHBsaWNhdGlvbi8qIj09PWV8fC9cdytcL1stKy5cd10rL2cudGVzdChlKX1mdW5jdGlvbiBOZShlKXtyZXR1cm4vXi4qXC5bXHddKyQvLnRlc3QoZSl9dmFyIE9lPVsiY2hpbGRyZW4iXSxSZT1bIm9wZW4iXSxqZT1bInJlZktleSIsInJvbGUiLCJvbktleURvd24iLCJvbkZvY3VzIiwib25CbHVyIiwib25DbGljayIsIm9uRHJhZ0VudGVyIiwib25EcmFnT3ZlciIsIm9uRHJhZ0xlYXZlIiwib25Ecm9wIl0sUGU9WyJyZWZLZXkiLCJvbkNoYW5nZSIsIm9uQ2xpY2siXTtmdW5jdGlvbiB6ZShlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gQmUoZSl9KGUpfHxmdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxVZShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBMZShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciBpLGEsbz1bXSxyPSEwLHM9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKHI9KGk9bi5uZXh0KCkpLmRvbmUpJiYoby5wdXNoKGkudmFsdWUpLCF0fHxvLmxlbmd0aCE9PXQpO3I9ITApO31jYXRjaChlKXtzPSEwLGE9ZX1maW5hbGx5e3RyeXtyfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgYX19cmV0dXJuIG99KGUsdCl8fFVlKGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBVZShlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gQmUoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09bnx8IlNldCI9PT1uP0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9CZShlLHQpOnZvaWQgMH19ZnVuY3Rpb24gQmUoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxpPW5ldyBBcnJheSh0KTtuPHQ7bisrKWlbbl09ZVtuXTtyZXR1cm4gaX1mdW5jdGlvbiBIZShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKGk9aS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLGkpfXJldHVybiBufWZ1bmN0aW9uIHFlKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP0hlKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbih0KXtWZShlLHQsblt0XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpIZShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gVmUoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uICRlKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixpLGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLGksYT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihpPTA7aTxvLmxlbmd0aDtpKyspbj1vW2ldLHQuaW5kZXhPZihuKT49MHx8KGFbbl09ZVtuXSk7cmV0dXJuIGF9KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKW49b1tpXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYoYVtuXT1lW25dKX1yZXR1cm4gYX12YXIgV2U9KDAsYS5mb3J3YXJkUmVmKShmdW5jdGlvbihlLHQpe3ZhciBuPWUuY2hpbGRyZW4saT1YZSgkZShlLE9lKSksbz1pLm9wZW4scj0kZShpLFJlKTtyZXR1cm4oMCxhLnVzZUltcGVyYXRpdmVIYW5kbGUpKHQsZnVuY3Rpb24oKXtyZXR1cm57b3BlbjpvfX0sW29dKSxhLmNyZWF0ZUVsZW1lbnQoYS5GcmFnbWVudCxudWxsLG4ocWUocWUoe30scikse30se29wZW46b30pKSl9KTtXZS5kaXNwbGF5TmFtZT0iRHJvcHpvbmUiO3ZhciBLZT17ZGlzYWJsZWQ6ITEsZ2V0RmlsZXNGcm9tRXZlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIFgodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0ZShlKSYmdGUoZS5kYXRhVHJhbnNmZXIpP2Z1bmN0aW9uKGUsdCl7cmV0dXJuIFgodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKGUuaXRlbXMpe2NvbnN0IG49aWUoZS5pdGVtcykuZmlsdGVyKGU9PiJmaWxlIj09PWUua2luZCk7aWYoImRyb3AiIT09dClyZXR1cm4gbjtyZXR1cm4gbmUob2UoeWllbGQgUHJvbWlzZS5hbGwobi5tYXAoYWUpKSkpfXJldHVybiBuZShpZShlLmZpbGVzKS5tYXAoZT0+WihlKSkpfSl9KGUuZGF0YVRyYW5zZmVyLGUudHlwZSk6ZnVuY3Rpb24oZSl7cmV0dXJuIHRlKGUpJiZ0ZShlLnRhcmdldCl9KGUpP2Z1bmN0aW9uKGUpe3JldHVybiBpZShlLnRhcmdldC5maWxlcykubWFwKGU9PlooZSkpfShlKTpBcnJheS5pc0FycmF5KGUpJiZlLmV2ZXJ5KGU9PiJnZXRGaWxlImluIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldEZpbGUpP2Z1bmN0aW9uKGUpe3JldHVybiBYKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4oeWllbGQgUHJvbWlzZS5hbGwoZS5tYXAoZT0+ZS5nZXRGaWxlKCkpKSkubWFwKGU9PlooZSkpfSl9KGUpOltdfSl9LG1heFNpemU6MS8wLG1pblNpemU6MCxtdWx0aXBsZTohMCxtYXhGaWxlczowLHByZXZlbnREcm9wT25Eb2N1bWVudDohMCxub0NsaWNrOiExLG5vS2V5Ym9hcmQ6ITEsbm9EcmFnOiExLG5vRHJhZ0V2ZW50c0J1YmJsaW5nOiExLHZhbGlkYXRvcjpudWxsLHVzZUZzQWNjZXNzQXBpOiExLGF1dG9Gb2N1czohMX07V2UuZGVmYXVsdFByb3BzPUtlLFdlLnByb3BUeXBlcz17Y2hpbGRyZW46Sy5mdW5jLGFjY2VwdDpLLm9iamVjdE9mKEsuYXJyYXlPZihLLnN0cmluZykpLG11bHRpcGxlOksuYm9vbCxwcmV2ZW50RHJvcE9uRG9jdW1lbnQ6Sy5ib29sLG5vQ2xpY2s6Sy5ib29sLG5vS2V5Ym9hcmQ6Sy5ib29sLG5vRHJhZzpLLmJvb2wsbm9EcmFnRXZlbnRzQnViYmxpbmc6Sy5ib29sLG1pblNpemU6Sy5udW1iZXIsbWF4U2l6ZTpLLm51bWJlcixtYXhGaWxlczpLLm51bWJlcixkaXNhYmxlZDpLLmJvb2wsZ2V0RmlsZXNGcm9tRXZlbnQ6Sy5mdW5jLG9uRmlsZURpYWxvZ0NhbmNlbDpLLmZ1bmMsb25GaWxlRGlhbG9nT3BlbjpLLmZ1bmMsdXNlRnNBY2Nlc3NBcGk6Sy5ib29sLGF1dG9Gb2N1czpLLmJvb2wsb25EcmFnRW50ZXI6Sy5mdW5jLG9uRHJhZ0xlYXZlOksuZnVuYyxvbkRyYWdPdmVyOksuZnVuYyxvbkRyb3A6Sy5mdW5jLG9uRHJvcEFjY2VwdGVkOksuZnVuYyxvbkRyb3BSZWplY3RlZDpLLmZ1bmMsb25FcnJvcjpLLmZ1bmMsdmFsaWRhdG9yOksuZnVuY307dmFyIEdlPXtpc0ZvY3VzZWQ6ITEsaXNGaWxlRGlhbG9nQWN0aXZlOiExLGlzRHJhZ0FjdGl2ZTohMSxpc0RyYWdBY2NlcHQ6ITEsaXNEcmFnUmVqZWN0OiExLGFjY2VwdGVkRmlsZXM6W10sZmlsZVJlamVjdGlvbnM6W119O2Z1bmN0aW9uIFhlKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9cWUocWUoe30sS2UpLGUpLG49dC5hY2NlcHQsaT10LmRpc2FibGVkLG89dC5nZXRGaWxlc0Zyb21FdmVudCxyPXQubWF4U2l6ZSxzPXQubWluU2l6ZSxsPXQubXVsdGlwbGUsZD10Lm1heEZpbGVzLGM9dC5vbkRyYWdFbnRlcix1PXQub25EcmFnTGVhdmUscD10Lm9uRHJhZ092ZXIsZj10Lm9uRHJvcCxtPXQub25Ecm9wQWNjZXB0ZWQsaD10Lm9uRHJvcFJlamVjdGVkLGc9dC5vbkZpbGVEaWFsb2dDYW5jZWwsYj10Lm9uRmlsZURpYWxvZ09wZW4sdj10LnVzZUZzQWNjZXNzQXBpLHg9dC5hdXRvRm9jdXMseT10LnByZXZlbnREcm9wT25Eb2N1bWVudCx3PXQubm9DbGljayxrPXQubm9LZXlib2FyZCxBPXQubm9EcmFnLEM9dC5ub0RyYWdFdmVudHNCdWJibGluZyxFPXQub25FcnJvcixTPXQudmFsaWRhdG9yLEQ9KDAsYS51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXtpZihZZShlKSlyZXR1cm4gT2JqZWN0LmVudHJpZXMoZSkucmVkdWNlKGZ1bmN0aW9uKGUsdCl7dmFyIG49bWUodCwyKSxpPW5bMF0sYT1uWzFdO3JldHVybltdLmNvbmNhdChjZShlKSxbaV0sY2UoYSkpfSxbXSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBNZShlKXx8TmUoZSl9KS5qb2luKCIsIil9KG4pfSxbbl0pLFk9KDAsYS51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXtpZihZZShlKSl7dmFyIHQ9T2JqZWN0LmVudHJpZXMoZSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3ZhciB0PW1lKGUsMiksbj10WzBdLGk9dFsxXSxhPSEwO3JldHVybiBNZShuKXx8KGNvbnNvbGUud2FybignU2tpcHBlZCAiJy5jb25jYXQobiwnIiBiZWNhdXNlIGl0IGlzIG5vdCBhIHZhbGlkIE1JTUUgdHlwZS4gQ2hlY2sgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9NSU1FX3R5cGVzL0NvbW1vbl90eXBlcyBmb3IgYSBsaXN0IG9mIHZhbGlkIE1JTUUgdHlwZXMuJykpLGE9ITEpLEFycmF5LmlzQXJyYXkoaSkmJmkuZXZlcnkoTmUpfHwoY29uc29sZS53YXJuKCdTa2lwcGVkICInLmNvbmNhdChuLCciIGJlY2F1c2UgYW4gaW52YWxpZCBmaWxlIGV4dGVuc2lvbiB3YXMgcHJvdmlkZWQuJykpLGE9ITEpLGF9KS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXt2YXIgbj1tZSh0LDIpLGk9blswXSxhPW5bMV07cmV0dXJuIHBlKHBlKHt9LGUpLHt9LGZlKHt9LGksYSkpfSx7fSk7cmV0dXJuW3tkZXNjcmlwdGlvbjoiRmlsZXMiLGFjY2VwdDp0fV19cmV0dXJuIGV9KG4pfSxbbl0pLFQ9KDAsYS51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBiP2I6WmV9LFtiXSksRj0oMCxhLnVzZU1lbW8pKGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGc/ZzpaZX0sW2ddKSxJPSgwLGEudXNlUmVmKShudWxsKSxfPSgwLGEudXNlUmVmKShudWxsKSxNPUxlKCgwLGEudXNlUmVkdWNlcikoUWUsR2UpLDIpLE49TVswXSxPPU1bMV0sUj1OLmlzRm9jdXNlZCxqPU4uaXNGaWxlRGlhbG9nQWN0aXZlLFA9KDAsYS51c2VSZWYpKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuaXNTZWN1cmVDb250ZXh0JiZ2JiYic2hvd09wZW5GaWxlUGlja2VyImluIHdpbmRvdyksej1mdW5jdGlvbigpeyFQLmN1cnJlbnQmJmomJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtfLmN1cnJlbnQmJihfLmN1cnJlbnQuZmlsZXMubGVuZ3RofHwoTyh7dHlwZToiY2xvc2VEaWFsb2cifSksRigpKSl9LDMwMCl9OygwLGEudXNlRWZmZWN0KShmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHosITEpLGZ1bmN0aW9uKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix6LCExKX19LFtfLGosRixQXSk7dmFyIEw9KDAsYS51c2VSZWYpKFtdKSxVPWZ1bmN0aW9uKGUpe0kuY3VycmVudCYmSS5jdXJyZW50LmNvbnRhaW5zKGUudGFyZ2V0KXx8KGUucHJldmVudERlZmF1bHQoKSxMLmN1cnJlbnQ9W10pfTsoMCxhLnVzZUVmZmVjdCkoZnVuY3Rpb24oKXtyZXR1cm4geSYmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIixJZSwhMSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsVSwhMSkpLGZ1bmN0aW9uKCl7eSYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIixJZSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJvcCIsVSkpfX0sW0kseV0pLCgwLGEudXNlRWZmZWN0KShmdW5jdGlvbigpe3JldHVybiFpJiZ4JiZJLmN1cnJlbnQmJkkuY3VycmVudC5mb2N1cygpLGZ1bmN0aW9uKCl7fX0sW0kseCxpXSk7dmFyIEI9KDAsYS51c2VDYWxsYmFjaykoZnVuY3Rpb24oZSl7RT9FKGUpOmNvbnNvbGUuZXJyb3IoZSl9LFtFXSksSD0oMCxhLnVzZUNhbGxiYWNrKShmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5wZXJzaXN0KCksbmUoZSksTC5jdXJyZW50PVtdLmNvbmNhdCh6ZShMLmN1cnJlbnQpLFtlLnRhcmdldF0pLEZlKGUpJiZQcm9taXNlLnJlc29sdmUobyhlKSkudGhlbihmdW5jdGlvbih0KXtpZighVGUoZSl8fEMpe3ZhciBuPXQubGVuZ3RoLGk9bj4wJiZmdW5jdGlvbihlKXt2YXIgdD1lLmZpbGVzLG49ZS5hY2NlcHQsaT1lLm1pblNpemUsYT1lLm1heFNpemUsbz1lLm11bHRpcGxlLHI9ZS5tYXhGaWxlcyxzPWUudmFsaWRhdG9yO3JldHVybiEoIW8mJnQubGVuZ3RoPjF8fG8mJnI+PTEmJnQubGVuZ3RoPnIpJiZ0LmV2ZXJ5KGZ1bmN0aW9uKGUpe3ZhciB0PW1lKFNlKGUsbiksMSlbMF0sbz1tZShEZShlLGksYSksMSlbMF0scj1zP3MoZSk6bnVsbDtyZXR1cm4gdCYmbyYmIXJ9KX0oe2ZpbGVzOnQsYWNjZXB0OkQsbWluU2l6ZTpzLG1heFNpemU6cixtdWx0aXBsZTpsLG1heEZpbGVzOmQsdmFsaWRhdG9yOlN9KTtPKHtpc0RyYWdBY2NlcHQ6aSxpc0RyYWdSZWplY3Q6bj4wJiYhaSxpc0RyYWdBY3RpdmU6ITAsdHlwZToic2V0RHJhZ2dlZEZpbGVzIn0pLGMmJmMoZSl9fSkuY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIEIoZSl9KX0sW28sYyxCLEMsRCxzLHIsbCxkLFNdKSxxPSgwLGEudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnBlcnNpc3QoKSxuZShlKTt2YXIgdD1GZShlKTtpZih0JiZlLmRhdGFUcmFuc2Zlcil0cnl7ZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD0iY29weSJ9Y2F0Y2goZSl7fXJldHVybiB0JiZwJiZwKGUpLCExfSxbcCxDXSksVj0oMCxhLnVzZUNhbGxiYWNrKShmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5wZXJzaXN0KCksbmUoZSk7dmFyIHQ9TC5jdXJyZW50LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gSS5jdXJyZW50JiZJLmN1cnJlbnQuY29udGFpbnMoZSl9KSxuPXQuaW5kZXhPZihlLnRhcmdldCk7LTEhPT1uJiZ0LnNwbGljZShuLDEpLEwuY3VycmVudD10LHQubGVuZ3RoPjB8fChPKHt0eXBlOiJzZXREcmFnZ2VkRmlsZXMiLGlzRHJhZ0FjdGl2ZTohMSxpc0RyYWdBY2NlcHQ6ITEsaXNEcmFnUmVqZWN0OiExfSksRmUoZSkmJnUmJnUoZSkpfSxbSSx1LENdKSwkPSgwLGEudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKGUsdCl7dmFyIG49W10saT1bXTtlLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9TGUoU2UoZSxEKSwyKSxhPXRbMF0sbz10WzFdLGw9TGUoRGUoZSxzLHIpLDIpLGQ9bFswXSxjPWxbMV0sdT1TP1MoZSk6bnVsbDtpZihhJiZkJiYhdSluLnB1c2goZSk7ZWxzZXt2YXIgcD1bbyxjXTt1JiYocD1wLmNvbmNhdCh1KSksaS5wdXNoKHtmaWxlOmUsZXJyb3JzOnAuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlfSl9KX19KSwoIWwmJm4ubGVuZ3RoPjF8fGwmJmQ+PTEmJm4ubGVuZ3RoPmQpJiYobi5mb3JFYWNoKGZ1bmN0aW9uKGUpe2kucHVzaCh7ZmlsZTplLGVycm9yczpbRWVdfSl9KSxuLnNwbGljZSgwKSksTyh7YWNjZXB0ZWRGaWxlczpuLGZpbGVSZWplY3Rpb25zOmksaXNEcmFnUmVqZWN0OmkubGVuZ3RoPjAsdHlwZToic2V0RmlsZXMifSksZiYmZihuLGksdCksaS5sZW5ndGg+MCYmaCYmaChpLHQpLG4ubGVuZ3RoPjAmJm0mJm0obix0KX0sW08sbCxELHMscixkLGYsbSxoLFNdKSxXPSgwLGEudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnBlcnNpc3QoKSxuZShlKSxMLmN1cnJlbnQ9W10sRmUoZSkmJlByb21pc2UucmVzb2x2ZShvKGUpKS50aGVuKGZ1bmN0aW9uKHQpe1RlKGUpJiYhQ3x8JCh0LGUpfSkuY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIEIoZSl9KSxPKHt0eXBlOiJyZXNldCJ9KX0sW28sJCxCLENdKSxLPSgwLGEudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKCl7aWYoUC5jdXJyZW50KXtPKHt0eXBlOiJvcGVuRGlhbG9nIn0pLFQoKTt2YXIgZT17bXVsdGlwbGU6bCx0eXBlczpZfTt3aW5kb3cuc2hvd09wZW5GaWxlUGlja2VyKGUpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSl9KS50aGVuKGZ1bmN0aW9uKGUpeyQoZSxudWxsKSxPKHt0eXBlOiJjbG9zZURpYWxvZyJ9KX0pLmNhdGNoKGZ1bmN0aW9uKGUpe3ZhciB0Oyh0PWUpaW5zdGFuY2VvZiBET01FeGNlcHRpb24mJigiQWJvcnRFcnJvciI9PT10Lm5hbWV8fHQuY29kZT09PXQuQUJPUlRfRVJSKT8oRihlKSxPKHt0eXBlOiJjbG9zZURpYWxvZyJ9KSk6IWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiYoIlNlY3VyaXR5RXJyb3IiPT09ZS5uYW1lfHxlLmNvZGU9PT1lLlNFQ1VSSVRZX0VSUil9KGUpP0IoZSk6KFAuY3VycmVudD0hMSxfLmN1cnJlbnQ/KF8uY3VycmVudC52YWx1ZT1udWxsLF8uY3VycmVudC5jbGljaygpKTpCKG5ldyBFcnJvcigiQ2Fubm90IG9wZW4gdGhlIGZpbGUgcGlja2VyIGJlY2F1c2UgdGhlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9GaWxlX1N5c3RlbV9BY2Nlc3NfQVBJIGlzIG5vdCBzdXBwb3J0ZWQgYW5kIG5vIDxpbnB1dD4gd2FzIHByb3ZpZGVkLiIpKSl9KX1lbHNlIF8uY3VycmVudCYmKE8oe3R5cGU6Im9wZW5EaWFsb2cifSksVCgpLF8uY3VycmVudC52YWx1ZT1udWxsLF8uY3VycmVudC5jbGljaygpKX0sW08sVCxGLHYsJCxCLFksbF0pLEc9KDAsYS51c2VDYWxsYmFjaykoZnVuY3Rpb24oZSl7SS5jdXJyZW50JiZJLmN1cnJlbnQuaXNFcXVhbE5vZGUoZS50YXJnZXQpJiYoIiAiIT09ZS5rZXkmJiJFbnRlciIhPT1lLmtleSYmMzIhPT1lLmtleUNvZGUmJjEzIT09ZS5rZXlDb2RlfHwoZS5wcmV2ZW50RGVmYXVsdCgpLEsoKSkpfSxbSSxLXSksWD0oMCxhLnVzZUNhbGxiYWNrKShmdW5jdGlvbigpe08oe3R5cGU6ImZvY3VzIn0pfSxbXSksUT0oMCxhLnVzZUNhbGxiYWNrKShmdW5jdGlvbigpe08oe3R5cGU6ImJsdXIifSl9LFtdKSxaPSgwLGEudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKCl7d3x8KCFmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLTEhPT1lLmluZGV4T2YoIk1TSUUiKXx8LTEhPT1lLmluZGV4T2YoIlRyaWRlbnQvIil9KGUpfHxmdW5jdGlvbihlKXtyZXR1cm4tMSE9PWUuaW5kZXhPZigiRWRnZS8iKX0oZSl9KCk/SygpOnNldFRpbWVvdXQoSywwKSl9LFt3LEtdKSxKPWZ1bmN0aW9uKGUpe3JldHVybiBpP251bGw6ZX0sZWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGs/bnVsbDpKKGUpfSx0ZT1mdW5jdGlvbihlKXtyZXR1cm4gQT9udWxsOkooZSl9LG5lPWZ1bmN0aW9uKGUpe0MmJmUuc3RvcFByb3BhZ2F0aW9uKCl9LGllPSgwLGEudXNlTWVtbykoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1lLnJlZktleSxuPXZvaWQgMD09PXQ/InJlZiI6dCxhPWUucm9sZSxvPWUub25LZXlEb3duLHI9ZS5vbkZvY3VzLHM9ZS5vbkJsdXIsbD1lLm9uQ2xpY2ssZD1lLm9uRHJhZ0VudGVyLGM9ZS5vbkRyYWdPdmVyLHU9ZS5vbkRyYWdMZWF2ZSxwPWUub25Ecm9wLGY9JGUoZSxqZSk7cmV0dXJuIHFlKHFlKFZlKHtvbktleURvd246ZWUoX2UobyxHKSksb25Gb2N1czplZShfZShyLFgpKSxvbkJsdXI6ZWUoX2UocyxRKSksb25DbGljazpKKF9lKGwsWikpLG9uRHJhZ0VudGVyOnRlKF9lKGQsSCkpLG9uRHJhZ092ZXI6dGUoX2UoYyxxKSksb25EcmFnTGVhdmU6dGUoX2UodSxWKSksb25Ecm9wOnRlKF9lKHAsVykpLHJvbGU6InN0cmluZyI9PXR5cGVvZiBhJiYiIiE9PWE/YToicHJlc2VudGF0aW9uIn0sbixJKSxpfHxrP3t9Ont0YWJJbmRleDowfSksZil9fSxbSSxHLFgsUSxaLEgscSxWLFcsayxBLGldKSxhZT0oMCxhLnVzZUNhbGxiYWNrKShmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpfSxbXSksb2U9KDAsYS51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PWUucmVmS2V5LG49dm9pZCAwPT09dD8icmVmIjp0LGk9ZS5vbkNoYW5nZSxhPWUub25DbGljayxvPSRlKGUsUGUpO3JldHVybiBxZShxZSh7fSxWZSh7YWNjZXB0OkQsbXVsdGlwbGU6bCx0eXBlOiJmaWxlIixzdHlsZTp7Ym9yZGVyOjAsY2xpcDoicmVjdCgwLCAwLCAwLCAwKSIsY2xpcFBhdGg6Imluc2V0KDUwJSkiLGhlaWdodDoiMXB4IixtYXJnaW46IjAgLTFweCAtMXB4IDAiLG92ZXJmbG93OiJoaWRkZW4iLHBhZGRpbmc6MCxwb3NpdGlvbjoiYWJzb2x1dGUiLHdpZHRoOiIxcHgiLHdoaXRlU3BhY2U6Im5vd3JhcCJ9LG9uQ2hhbmdlOkooX2UoaSxXKSksb25DbGljazpKKF9lKGEsYWUpKSx0YWJJbmRleDotMX0sbixfKSksbyl9fSxbXyxuLGwsVyxpXSk7cmV0dXJuIHFlKHFlKHt9LE4pLHt9LHtpc0ZvY3VzZWQ6UiYmIWksZ2V0Um9vdFByb3BzOmllLGdldElucHV0UHJvcHM6b2Uscm9vdFJlZjpJLGlucHV0UmVmOl8sb3BlbjpKKEspfSl9ZnVuY3Rpb24gUWUoZSx0KXtzd2l0Y2godC50eXBlKXtjYXNlImZvY3VzIjpyZXR1cm4gcWUocWUoe30sZSkse30se2lzRm9jdXNlZDohMH0pO2Nhc2UiYmx1ciI6cmV0dXJuIHFlKHFlKHt9LGUpLHt9LHtpc0ZvY3VzZWQ6ITF9KTtjYXNlIm9wZW5EaWFsb2ciOnJldHVybiBxZShxZSh7fSxHZSkse30se2lzRmlsZURpYWxvZ0FjdGl2ZTohMH0pO2Nhc2UiY2xvc2VEaWFsb2ciOnJldHVybiBxZShxZSh7fSxlKSx7fSx7aXNGaWxlRGlhbG9nQWN0aXZlOiExfSk7Y2FzZSJzZXREcmFnZ2VkRmlsZXMiOnJldHVybiBxZShxZSh7fSxlKSx7fSx7aXNEcmFnQWN0aXZlOnQuaXNEcmFnQWN0aXZlLGlzRHJhZ0FjY2VwdDp0LmlzRHJhZ0FjY2VwdCxpc0RyYWdSZWplY3Q6dC5pc0RyYWdSZWplY3R9KTtjYXNlInNldEZpbGVzIjpyZXR1cm4gcWUocWUoe30sZSkse30se2FjY2VwdGVkRmlsZXM6dC5hY2NlcHRlZEZpbGVzLGZpbGVSZWplY3Rpb25zOnQuZmlsZVJlamVjdGlvbnMsaXNEcmFnUmVqZWN0OnQuaXNEcmFnUmVqZWN0fSk7Y2FzZSJyZXNldCI6cmV0dXJuIHFlKHt9LEdlKTtkZWZhdWx0OnJldHVybiBlfX1mdW5jdGlvbiBaZSgpe312YXIgSmU9big2OTcwKSxldD1uLm4oSmUpLHR0PW4oOTc4OCk7Y29uc3QgbnQ9KDAsZi5EaikoKS5uYW1lLnRvTG93ZXJDYXNlKCksaXQ9KDAsZi5ERCkoKTt2YXIgYXQ9KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShlPT5lLmFsbG93QXR0YWNobWVudHMpLG49KDAsci5kNCkoZT0+ZS5wZW5kaW5nQXR0YWNobWVudHMpLGk9KDAsci5kNCkoQy5WUSksYT0oMCxyLmQ0KShlPT5lLnNob3dPcHRpb25zRHJvcGRvd24pLG89KDAsci5kNCkoZT0+ZS5pc01vYmlsZSkscz0oMCxyLmQ0KShDLm80KSxsPSgwLHIuZDQpKEMuQW8pLGQ9KDAsci5kNCkoQy5maCksYz1sW2wubGVuZ3RoLTFdPy5mb3JtPy5zb21lKGU9PmUudHlwZT09PXR0LlZ3LkZJTEUpLHU9bi5sZW5ndGg+PWYucXUse2dldFJvb3RQcm9wczpwfT1YZSh7b25Ecm9wOm49PntpZih0KXtjb25zdCB0PW5bMF07ZSgoMCxrLnRLWikoITEpKSxlKCgwLGsuU0JRKShldCgpKCksdCkpfX0sb25EcmFnRW50ZXI6KCk9PntpfHxlKCgwLGsudEtaKSghMCkpfSxvbkRyYWdMZWF2ZTooKT0+e2UoKDAsay50S1opKCExKSl9LG5vQ2xpY2s6ITAsbm9LZXlib2FyZDohMCxkaXNhYmxlZDohbC5maW5kKGU9PiJ2aXNpdG9yIj09PWUuc2VuZGVyKXx8aXR8fHN8fGR8fGN8fHV8fCF0fSk7cmV0dXJue2Ryb3B6b25lUHJvcHM6cCh7b25DbGljazp0PT57dC5zdG9wUHJvcGFnYXRpb24oKSxhJiZvJiYiaW9zIj09PW50JiZlKCgwLGsuWjlxKSghMSkpfX0pfX07dmFyIG90PWU9PigwLFYuWSkoVSx7aW46ZS5pbix0aW1lb3V0OmUudGltZW91dCxhcHBlYXI6ITAsYWRkRW5kTGlzdGVuZXI6dD0+e3QuYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsZS5vbkFuaW1hdGlvbkVuZGVkLCExKX0sY2hpbGRyZW46dD0+KDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJ0cmFuc2l0aW9uLWNvbnRhaW5lciIsc3R5bGU6ey4uLmUuZGVmYXVsdFN0eWxlLC4uLmUudHJhbnNpdGlvblN0eWxlc1t0XX0sY2hpbGRyZW46ZS5jaGlsZHJlbn0pfSk7Y29uc3QgcnQ9KDAsYS5jcmVhdGVDb250ZXh0KShudWxsKTt2YXIgc3Q9ZT0+e2xldHtjaGlsZHJlbjp0fT1lO2NvbnN0W24saV09KDAsYS51c2VTdGF0ZSkobnVsbCk7cmV0dXJuKDAsVi5GRCkocnQuUHJvdmlkZXIse3ZhbHVlOm4sY2hpbGRyZW46WygwLFYuWSkoImRpdiIse3JlZjppfSksdF19KX0sbHQ9big0MTIxKTt2YXIgZHQ9e2JhY2tkcm9wOntuYW1lOiIxbjlhaGkyIixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowO3RvcDowO2JvdHRvbTowO2JhY2tncm91bmQ6cmdiYSgwLCAwLCAwLCAwLjUpO3otaW5kZXg6MTAifSxwYW5lbDooMCxkLkFIKSh7cG9zaXRpb246ImFic29sdXRlIixib3R0b206MCxsZWZ0OjgscmlnaHQ6OCx3aWR0aDoiY2FsYygxMDAlIC0gMTZweCkiLG1heEhlaWdodDoiY2FsYygxMDAlIC0gODdweCkiLGJhY2tncm91bmQ6IiNmZmYiLGJvcmRlclRvcExlZnRSYWRpdXM6MTIsYm9yZGVyVG9wUmlnaHRSYWRpdXM6MTIsZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixvdmVyZmxvdzoiaGlkZGVuIn0sIiIsIiIpfTt2YXIgY3Q9ZT0+e2xldHtpc09wZW46dCxvbkNsb3NlOm4sY2hpbGRyZW46aSxzaG91bGRDbG9zZU9uQmFja2Ryb3BDbGljazpvPSEwfT1lO2NvbnN0IHI9KDAsYy5wbikodCx7Y29uZmlnOnt0ZW5zaW9uOjE1MCxmcmljdGlvbjoyMH0sZnJvbTp7b3BhY2l0eTowfSxlbnRlcjp7b3BhY2l0eToxfSxsZWF2ZTp7b3BhY2l0eTowfX0pLHM9KDAsYy5wbikodCx7ZnJvbTp7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDEwMCUpIn0sZW50ZXI6e3RyYW5zZm9ybToidHJhbnNsYXRlWSgwJSkifSxsZWF2ZTp7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDEwMCUpIn19KSxsPSgwLGEudXNlQ2FsbGJhY2spKGU9PntlLnRhcmdldD09PWUuY3VycmVudFRhcmdldCYmbigpfSxbbl0pO3JldHVybigwLFYuWSkoVi5GSyx7Y2hpbGRyZW46cigoZSx0KT0+dCYmKDAsVi5ZKShjLkNTLmRpdix7Y3NzOmR0LmJhY2tkcm9wLHN0eWxlOmUsb25DbGljazpvP2w6dm9pZCAwLGNoaWxkcmVuOnMoKGUsdCk9PnQmJigwLFYuWSkoYy5DUy5kaXYse2NzczpkdC5wYW5lbCxzdHlsZTplLGNoaWxkcmVuOml9KSl9KSl9KX0sdXQ9big0MjE4KTtmdW5jdGlvbiBwdCgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTo4MjA7Y29uc3RbdCxuXT1hLnVzZVN0YXRlKCIiKSxpPWEudXNlUmVmKCk7cmV0dXJue3RyaWdnZXJTaGFrZTpmdW5jdGlvbigpe24oInNoYWtlIiksY2xlYXJUaW1lb3V0KGkuY3VycmVudCksaS5jdXJyZW50PW51bGwsaS5jdXJyZW50PXNldFRpbWVvdXQoKCk9PntuKCIiKX0sZSl9LHNoYWtlQ2xhc3NOYW1lOnQsc2hvdWxkU2hha2U6InNoYWtlIj09PXR9fWNvbnN0IGZ0PXt0ZXh0MjRCb2xkOntuYW1lOiIxdXA5b3N4IixzdHlsZXM6ImZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MzFweCJ9LHRleHQyMFNlbWk6e25hbWU6IjF5NXM4OTUiLHN0eWxlczoiZm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjMxcHgifSx0ZXh0MTY6e25hbWU6Iml0bTlmaCIsc3R5bGVzOiJmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyMHB4In0sdGV4dDE0TWVkaXVtOntuYW1lOiIxYXhiOWU4IixzdHlsZXM6ImZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoyMHB4In0sdGV4dDE0OntuYW1lOiIyNDRneGQiLHN0eWxlczoiZm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweCJ9LHRleHQxMkJvbGQ6e25hbWU6IjE0b3ZwZTAiLHN0eWxlczoiZm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6Ym9sZDtsaW5lLWhlaWdodDoxNnB4In0sdGV4dDEyTWVkaXVtOntuYW1lOiJpOTltNzYiLHN0eWxlczoiZm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjE2cHgifSx0ZXh0MTI6e25hbWU6InhvbHh3ciIsc3R5bGVzOiJmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxNnB4In0sdGV4dDEwOntuYW1lOiIxeGEydDFlIixzdHlsZXM6ImZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjE0cHgifX0sbXQ9e3RleHQyNEJvbGQ6KDAsZC5BSCkoIiIsIiIpLHRleHQyMFNlbWk6KDAsZC5BSCkoIiIsIiIpLHRleHQxNjooMCxkLkFIKSgiIiwiIiksdGV4dDE0TWVkaXVtOigwLGQuQUgpKCIiLCIiKSx0ZXh0MTQ6KDAsZC5BSCkoIiIsIiIpLHRleHQxMkJvbGQ6KDAsZC5BSCkoIiIsIiIpLHRleHQxMk1lZGl1bTooMCxkLkFIKSgiIiwiIiksdGV4dDEyOigwLGQuQUgpKCIiLCIiKSx0ZXh0MTA6KDAsZC5BSCkoIiIsIiIpfSxodD1lPT5lP2Z0Om10O24oMzkzOCk7Y29uc3R7ZW50cmllczpndCxzZXRQcm90b3R5cGVPZjpidCxpc0Zyb3plbjp2dCxnZXRQcm90b3R5cGVPZjp4dCxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6eXR9PU9iamVjdDtsZXR7ZnJlZXplOnd0LHNlYWw6a3QsY3JlYXRlOkF0fT1PYmplY3Qse2FwcGx5OkN0LGNvbnN0cnVjdDpFdH09InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0O3d0fHwod3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxrdHx8KGt0PWZ1bmN0aW9uKGUpe3JldHVybiBlfSksQ3R8fChDdD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4+Mj9uLTI6MCksYT0yO2E8bjthKyspaVthLTJdPWFyZ3VtZW50c1thXTtyZXR1cm4gZS5hcHBseSh0LGkpfSksRXR8fChFdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0PjE/dC0xOjApLGk9MTtpPHQ7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIG5ldyBlKC4uLm4pfSk7Y29uc3QgU3Q9VXQoQXJyYXkucHJvdG90eXBlLmZvckVhY2gpLER0PVV0KEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZiksWXQ9VXQoQXJyYXkucHJvdG90eXBlLnBvcCksVHQ9VXQoQXJyYXkucHJvdG90eXBlLnB1c2gpLEZ0PVV0KEFycmF5LnByb3RvdHlwZS5zcGxpY2UpLEl0PVV0KFN0cmluZy5wcm90b3R5cGUudG9Mb3dlckNhc2UpLF90PVV0KFN0cmluZy5wcm90b3R5cGUudG9TdHJpbmcpLE10PVV0KFN0cmluZy5wcm90b3R5cGUubWF0Y2gpLE50PVV0KFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSksT3Q9VXQoU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mKSxSdD1VdChTdHJpbmcucHJvdG90eXBlLnRyaW0pLGp0PVV0KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLFB0PVV0KFJlZ0V4cC5wcm90b3R5cGUudGVzdCksenQ9KEx0PVR5cGVFcnJvcixmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBFdChMdCx0KX0pO3ZhciBMdDtmdW5jdGlvbiBVdChlKXtyZXR1cm4gZnVuY3Rpb24odCl7dCBpbnN0YW5jZW9mIFJlZ0V4cCYmKHQubGFzdEluZGV4PTApO2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4+MT9uLTE6MCksYT0xO2E8bjthKyspaVthLTFdPWFyZ3VtZW50c1thXTtyZXR1cm4gQ3QoZSx0LGkpfX1mdW5jdGlvbiBCdChlLHQpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpJdDtidCYmYnQoZSxudWxsKTtsZXQgaT10Lmxlbmd0aDtmb3IoO2ktLTspe2xldCBhPXRbaV07aWYoInN0cmluZyI9PXR5cGVvZiBhKXtjb25zdCBlPW4oYSk7ZSE9PWEmJih2dCh0KXx8KHRbaV09ZSksYT1lKX1lW2FdPSEwfXJldHVybiBlfWZ1bmN0aW9uIEh0KGUpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtqdChlLHQpfHwoZVt0XT1udWxsKX1yZXR1cm4gZX1mdW5jdGlvbiBxdChlKXtjb25zdCB0PUF0KG51bGwpO2Zvcihjb25zdFtuLGldb2YgZ3QoZSkpe2p0KGUsbikmJihBcnJheS5pc0FycmF5KGkpP3Rbbl09SHQoaSk6aSYmIm9iamVjdCI9PXR5cGVvZiBpJiZpLmNvbnN0cnVjdG9yPT09T2JqZWN0P3Rbbl09cXQoaSk6dFtuXT1pKX1yZXR1cm4gdH1mdW5jdGlvbiBWdChlLHQpe2Zvcig7bnVsbCE9PWU7KXtjb25zdCBuPXl0KGUsdCk7aWYobil7aWYobi5nZXQpcmV0dXJuIFV0KG4uZ2V0KTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbi52YWx1ZSlyZXR1cm4gVXQobi52YWx1ZSl9ZT14dChlKX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19Y29uc3QgJHQ9d3QoWyJhIiwiYWJiciIsImFjcm9ueW0iLCJhZGRyZXNzIiwiYXJlYSIsImFydGljbGUiLCJhc2lkZSIsImF1ZGlvIiwiYiIsImJkaSIsImJkbyIsImJpZyIsImJsaW5rIiwiYmxvY2txdW90ZSIsImJvZHkiLCJiciIsImJ1dHRvbiIsImNhbnZhcyIsImNhcHRpb24iLCJjZW50ZXIiLCJjaXRlIiwiY29kZSIsImNvbCIsImNvbGdyb3VwIiwiY29udGVudCIsImRhdGEiLCJkYXRhbGlzdCIsImRkIiwiZGVjb3JhdG9yIiwiZGVsIiwiZGV0YWlscyIsImRmbiIsImRpYWxvZyIsImRpciIsImRpdiIsImRsIiwiZHQiLCJlbGVtZW50IiwiZW0iLCJmaWVsZHNldCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJmb250IiwiZm9vdGVyIiwiZm9ybSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWQiLCJoZWFkZXIiLCJoZ3JvdXAiLCJociIsImh0bWwiLCJpIiwiaW1nIiwiaW5wdXQiLCJpbnMiLCJrYmQiLCJsYWJlbCIsImxlZ2VuZCIsImxpIiwibWFpbiIsIm1hcCIsIm1hcmsiLCJtYXJxdWVlIiwibWVudSIsIm1lbnVpdGVtIiwibWV0ZXIiLCJuYXYiLCJub2JyIiwib2wiLCJvcHRncm91cCIsIm9wdGlvbiIsIm91dHB1dCIsInAiLCJwaWN0dXJlIiwicHJlIiwicHJvZ3Jlc3MiLCJxIiwicnAiLCJydCIsInJ1YnkiLCJzIiwic2FtcCIsInNlYXJjaCIsInNlY3Rpb24iLCJzZWxlY3QiLCJzaGFkb3ciLCJzbG90Iiwic21hbGwiLCJzb3VyY2UiLCJzcGFjZXIiLCJzcGFuIiwic3RyaWtlIiwic3Ryb25nIiwic3R5bGUiLCJzdWIiLCJzdW1tYXJ5Iiwic3VwIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGVtcGxhdGUiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0ciIsInRyYWNrIiwidHQiLCJ1IiwidWwiLCJ2YXIiLCJ2aWRlbyIsIndiciJdKSxXdD13dChbInN2ZyIsImEiLCJhbHRnbHlwaCIsImFsdGdseXBoZGVmIiwiYWx0Z2x5cGhpdGVtIiwiYW5pbWF0ZWNvbG9yIiwiYW5pbWF0ZW1vdGlvbiIsImFuaW1hdGV0cmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwcGF0aCIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImVudGVya2V5aGludCIsImV4cG9ydHBhcnRzIiwiZmlsdGVyIiwiZm9udCIsImciLCJnbHlwaCIsImdseXBocmVmIiwiaGtlcm4iLCJpbWFnZSIsImlucHV0bW9kZSIsImxpbmUiLCJsaW5lYXJncmFkaWVudCIsIm1hcmtlciIsIm1hc2siLCJtZXRhZGF0YSIsIm1wYXRoIiwicGFydCIsInBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN0eWxlIiwic3dpdGNoIiwic3ltYm9sIiwidGV4dCIsInRleHRwYXRoIiwidGl0bGUiLCJ0cmVmIiwidHNwYW4iLCJ2aWV3Iiwidmtlcm4iXSksS3Q9d3QoWyJmZUJsZW5kIiwiZmVDb2xvck1hdHJpeCIsImZlQ29tcG9uZW50VHJhbnNmZXIiLCJmZUNvbXBvc2l0ZSIsImZlQ29udm9sdmVNYXRyaXgiLCJmZURpZmZ1c2VMaWdodGluZyIsImZlRGlzcGxhY2VtZW50TWFwIiwiZmVEaXN0YW50TGlnaHQiLCJmZURyb3BTaGFkb3ciLCJmZUZsb29kIiwiZmVGdW5jQSIsImZlRnVuY0IiLCJmZUZ1bmNHIiwiZmVGdW5jUiIsImZlR2F1c3NpYW5CbHVyIiwiZmVJbWFnZSIsImZlTWVyZ2UiLCJmZU1lcmdlTm9kZSIsImZlTW9ycGhvbG9neSIsImZlT2Zmc2V0IiwiZmVQb2ludExpZ2h0IiwiZmVTcGVjdWxhckxpZ2h0aW5nIiwiZmVTcG90TGlnaHQiLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiXSksR3Q9d3QoWyJhbmltYXRlIiwiY29sb3ItcHJvZmlsZSIsImN1cnNvciIsImRpc2NhcmQiLCJmb250LWZhY2UiLCJmb250LWZhY2UtZm9ybWF0IiwiZm9udC1mYWNlLW5hbWUiLCJmb250LWZhY2Utc3JjIiwiZm9udC1mYWNlLXVyaSIsImZvcmVpZ25vYmplY3QiLCJoYXRjaCIsImhhdGNocGF0aCIsIm1lc2giLCJtZXNoZ3JhZGllbnQiLCJtZXNocGF0Y2giLCJtZXNocm93IiwibWlzc2luZy1nbHlwaCIsInNjcmlwdCIsInNldCIsInNvbGlkY29sb3IiLCJ1bmtub3duIiwidXNlIl0pLFh0PXd0KFsibWF0aCIsIm1lbmNsb3NlIiwibWVycm9yIiwibWZlbmNlZCIsIm1mcmFjIiwibWdseXBoIiwibWkiLCJtbGFiZWxlZHRyIiwibW11bHRpc2NyaXB0cyIsIm1uIiwibW8iLCJtb3ZlciIsIm1wYWRkZWQiLCJtcGhhbnRvbSIsIm1yb290IiwibXJvdyIsIm1zIiwibXNwYWNlIiwibXNxcnQiLCJtc3R5bGUiLCJtc3ViIiwibXN1cCIsIm1zdWJzdXAiLCJtdGFibGUiLCJtdGQiLCJtdGV4dCIsIm10ciIsIm11bmRlciIsIm11bmRlcm92ZXIiLCJtcHJlc2NyaXB0cyJdKSxRdD13dChbIm1hY3Rpb24iLCJtYWxpZ25ncm91cCIsIm1hbGlnbm1hcmsiLCJtbG9uZ2RpdiIsIm1zY2FycmllcyIsIm1zY2FycnkiLCJtc2dyb3VwIiwibXN0YWNrIiwibXNsaW5lIiwibXNyb3ciLCJzZW1hbnRpY3MiLCJhbm5vdGF0aW9uIiwiYW5ub3RhdGlvbi14bWwiLCJtcHJlc2NyaXB0cyIsIm5vbmUiXSksWnQ9d3QoWyIjdGV4dCJdKSxKdD13dChbImFjY2VwdCIsImFjdGlvbiIsImFsaWduIiwiYWx0IiwiYXV0b2NhcGl0YWxpemUiLCJhdXRvY29tcGxldGUiLCJhdXRvcGljdHVyZWlucGljdHVyZSIsImF1dG9wbGF5IiwiYmFja2dyb3VuZCIsImJnY29sb3IiLCJib3JkZXIiLCJjYXB0dXJlIiwiY2VsbHBhZGRpbmciLCJjZWxsc3BhY2luZyIsImNoZWNrZWQiLCJjaXRlIiwiY2xhc3MiLCJjbGVhciIsImNvbG9yIiwiY29scyIsImNvbHNwYW4iLCJjb250cm9scyIsImNvbnRyb2xzbGlzdCIsImNvb3JkcyIsImNyb3Nzb3JpZ2luIiwiZGF0ZXRpbWUiLCJkZWNvZGluZyIsImRlZmF1bHQiLCJkaXIiLCJkaXNhYmxlZCIsImRpc2FibGVwaWN0dXJlaW5waWN0dXJlIiwiZGlzYWJsZXJlbW90ZXBsYXliYWNrIiwiZG93bmxvYWQiLCJkcmFnZ2FibGUiLCJlbmN0eXBlIiwiZW50ZXJrZXloaW50IiwiZXhwb3J0cGFydHMiLCJmYWNlIiwiZm9yIiwiaGVhZGVycyIsImhlaWdodCIsImhpZGRlbiIsImhpZ2giLCJocmVmIiwiaHJlZmxhbmciLCJpZCIsImluZXJ0IiwiaW5wdXRtb2RlIiwiaW50ZWdyaXR5IiwiaXNtYXAiLCJraW5kIiwibGFiZWwiLCJsYW5nIiwibGlzdCIsImxvYWRpbmciLCJsb29wIiwibG93IiwibWF4IiwibWF4bGVuZ3RoIiwibWVkaWEiLCJtZXRob2QiLCJtaW4iLCJtaW5sZW5ndGgiLCJtdWx0aXBsZSIsIm11dGVkIiwibmFtZSIsIm5vbmNlIiwibm9zaGFkZSIsIm5vdmFsaWRhdGUiLCJub3dyYXAiLCJvcGVuIiwib3B0aW11bSIsInBhcnQiLCJwYXR0ZXJuIiwicGxhY2Vob2xkZXIiLCJwbGF5c2lubGluZSIsInBvcG92ZXIiLCJwb3BvdmVydGFyZ2V0IiwicG9wb3ZlcnRhcmdldGFjdGlvbiIsInBvc3RlciIsInByZWxvYWQiLCJwdWJkYXRlIiwicmFkaW9ncm91cCIsInJlYWRvbmx5IiwicmVsIiwicmVxdWlyZWQiLCJyZXYiLCJyZXZlcnNlZCIsInJvbGUiLCJyb3dzIiwicm93c3BhbiIsInNwZWxsY2hlY2siLCJzY29wZSIsInNlbGVjdGVkIiwic2hhcGUiLCJzaXplIiwic2l6ZXMiLCJzbG90Iiwic3BhbiIsInNyY2xhbmciLCJzdGFydCIsInNyYyIsInNyY3NldCIsInN0ZXAiLCJzdHlsZSIsInN1bW1hcnkiLCJ0YWJpbmRleCIsInRpdGxlIiwidHJhbnNsYXRlIiwidHlwZSIsInVzZW1hcCIsInZhbGlnbiIsInZhbHVlIiwid2lkdGgiLCJ3cmFwIiwieG1sbnMiLCJzbG90Il0pLGVuPXd0KFsiYWNjZW50LWhlaWdodCIsImFjY3VtdWxhdGUiLCJhZGRpdGl2ZSIsImFsaWdubWVudC1iYXNlbGluZSIsImFtcGxpdHVkZSIsImFzY2VudCIsImF0dHJpYnV0ZW5hbWUiLCJhdHRyaWJ1dGV0eXBlIiwiYXppbXV0aCIsImJhc2VmcmVxdWVuY3kiLCJiYXNlbGluZS1zaGlmdCIsImJlZ2luIiwiYmlhcyIsImJ5IiwiY2xhc3MiLCJjbGlwIiwiY2xpcHBhdGh1bml0cyIsImNsaXAtcGF0aCIsImNsaXAtcnVsZSIsImNvbG9yIiwiY29sb3ItaW50ZXJwb2xhdGlvbiIsImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyIsImNvbG9yLXByb2ZpbGUiLCJjb2xvci1yZW5kZXJpbmciLCJjeCIsImN5IiwiZCIsImR4IiwiZHkiLCJkaWZmdXNlY29uc3RhbnQiLCJkaXJlY3Rpb24iLCJkaXNwbGF5IiwiZGl2aXNvciIsImR1ciIsImVkZ2Vtb2RlIiwiZWxldmF0aW9uIiwiZW5kIiwiZXhwb25lbnQiLCJmaWxsIiwiZmlsbC1vcGFjaXR5IiwiZmlsbC1ydWxlIiwiZmlsdGVyIiwiZmlsdGVydW5pdHMiLCJmbG9vZC1jb2xvciIsImZsb29kLW9wYWNpdHkiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc2l6ZS1hZGp1c3QiLCJmb250LXN0cmV0Y2giLCJmb250LXN0eWxlIiwiZm9udC12YXJpYW50IiwiZm9udC13ZWlnaHQiLCJmeCIsImZ5IiwiZzEiLCJnMiIsImdseXBoLW5hbWUiLCJnbHlwaHJlZiIsImdyYWRpZW50dW5pdHMiLCJncmFkaWVudHRyYW5zZm9ybSIsImhlaWdodCIsImhyZWYiLCJpZCIsImltYWdlLXJlbmRlcmluZyIsImluIiwiaW4yIiwiaW50ZXJjZXB0IiwiayIsImsxIiwiazIiLCJrMyIsIms0Iiwia2VybmluZyIsImtleXBvaW50cyIsImtleXNwbGluZXMiLCJrZXl0aW1lcyIsImxhbmciLCJsZW5ndGhhZGp1c3QiLCJsZXR0ZXItc3BhY2luZyIsImtlcm5lbG1hdHJpeCIsImtlcm5lbHVuaXRsZW5ndGgiLCJsaWdodGluZy1jb2xvciIsImxvY2FsIiwibWFya2VyLWVuZCIsIm1hcmtlci1taWQiLCJtYXJrZXItc3RhcnQiLCJtYXJrZXJoZWlnaHQiLCJtYXJrZXJ1bml0cyIsIm1hcmtlcndpZHRoIiwibWFza2NvbnRlbnR1bml0cyIsIm1hc2t1bml0cyIsIm1heCIsIm1hc2siLCJtYXNrLXR5cGUiLCJtZWRpYSIsIm1ldGhvZCIsIm1vZGUiLCJtaW4iLCJuYW1lIiwibnVtb2N0YXZlcyIsIm9mZnNldCIsIm9wZXJhdG9yIiwib3BhY2l0eSIsIm9yZGVyIiwib3JpZW50Iiwib3JpZW50YXRpb24iLCJvcmlnaW4iLCJvdmVyZmxvdyIsInBhaW50LW9yZGVyIiwicGF0aCIsInBhdGhsZW5ndGgiLCJwYXR0ZXJuY29udGVudHVuaXRzIiwicGF0dGVybnRyYW5zZm9ybSIsInBhdHRlcm51bml0cyIsInBvaW50cyIsInByZXNlcnZlYWxwaGEiLCJwcmVzZXJ2ZWFzcGVjdHJhdGlvIiwicHJpbWl0aXZldW5pdHMiLCJyIiwicngiLCJyeSIsInJhZGl1cyIsInJlZngiLCJyZWZ5IiwicmVwZWF0Y291bnQiLCJyZXBlYXRkdXIiLCJyZXN0YXJ0IiwicmVzdWx0Iiwicm90YXRlIiwic2NhbGUiLCJzZWVkIiwic2hhcGUtcmVuZGVyaW5nIiwic2xvcGUiLCJzcGVjdWxhcmNvbnN0YW50Iiwic3BlY3VsYXJleHBvbmVudCIsInNwcmVhZG1ldGhvZCIsInN0YXJ0b2Zmc2V0Iiwic3RkZGV2aWF0aW9uIiwic3RpdGNodGlsZXMiLCJzdG9wLWNvbG9yIiwic3RvcC1vcGFjaXR5Iiwic3Ryb2tlLWRhc2hhcnJheSIsInN0cm9rZS1kYXNob2Zmc2V0Iiwic3Ryb2tlLWxpbmVjYXAiLCJzdHJva2UtbGluZWpvaW4iLCJzdHJva2UtbWl0ZXJsaW1pdCIsInN0cm9rZS1vcGFjaXR5Iiwic3Ryb2tlIiwic3Ryb2tlLXdpZHRoIiwic3R5bGUiLCJzdXJmYWNlc2NhbGUiLCJzeXN0ZW1sYW5ndWFnZSIsInRhYmluZGV4IiwidGFibGV2YWx1ZXMiLCJ0YXJnZXR4IiwidGFyZ2V0eSIsInRyYW5zZm9ybSIsInRyYW5zZm9ybS1vcmlnaW4iLCJ0ZXh0LWFuY2hvciIsInRleHQtZGVjb3JhdGlvbiIsInRleHQtcmVuZGVyaW5nIiwidGV4dGxlbmd0aCIsInR5cGUiLCJ1MSIsInUyIiwidW5pY29kZSIsInZhbHVlcyIsInZpZXdib3giLCJ2aXNpYmlsaXR5IiwidmVyc2lvbiIsInZlcnQtYWR2LXkiLCJ2ZXJ0LW9yaWdpbi14IiwidmVydC1vcmlnaW4teSIsIndpZHRoIiwid29yZC1zcGFjaW5nIiwid3JhcCIsIndyaXRpbmctbW9kZSIsInhjaGFubmVsc2VsZWN0b3IiLCJ5Y2hhbm5lbHNlbGVjdG9yIiwieCIsIngxIiwieDIiLCJ4bWxucyIsInkiLCJ5MSIsInkyIiwieiIsInpvb21hbmRwYW4iXSksdG49d3QoWyJhY2NlbnQiLCJhY2NlbnR1bmRlciIsImFsaWduIiwiYmV2ZWxsZWQiLCJjbG9zZSIsImNvbHVtbnNhbGlnbiIsImNvbHVtbmxpbmVzIiwiY29sdW1uc3BhbiIsImRlbm9tYWxpZ24iLCJkZXB0aCIsImRpciIsImRpc3BsYXkiLCJkaXNwbGF5c3R5bGUiLCJlbmNvZGluZyIsImZlbmNlIiwiZnJhbWUiLCJoZWlnaHQiLCJocmVmIiwiaWQiLCJsYXJnZW9wIiwibGVuZ3RoIiwibGluZXRoaWNrbmVzcyIsImxzcGFjZSIsImxxdW90ZSIsIm1hdGhiYWNrZ3JvdW5kIiwibWF0aGNvbG9yIiwibWF0aHNpemUiLCJtYXRodmFyaWFudCIsIm1heHNpemUiLCJtaW5zaXplIiwibW92YWJsZWxpbWl0cyIsIm5vdGF0aW9uIiwibnVtYWxpZ24iLCJvcGVuIiwicm93YWxpZ24iLCJyb3dsaW5lcyIsInJvd3NwYWNpbmciLCJyb3dzcGFuIiwicnNwYWNlIiwicnF1b3RlIiwic2NyaXB0bGV2ZWwiLCJzY3JpcHRtaW5zaXplIiwic2NyaXB0c2l6ZW11bHRpcGxpZXIiLCJzZWxlY3Rpb24iLCJzZXBhcmF0b3IiLCJzZXBhcmF0b3JzIiwic3RyZXRjaHkiLCJzdWJzY3JpcHRzaGlmdCIsInN1cHNjcmlwdHNoaWZ0Iiwic3ltbWV0cmljIiwidm9mZnNldCIsIndpZHRoIiwieG1sbnMiXSksbm49d3QoWyJ4bGluazpocmVmIiwieG1sOmlkIiwieGxpbms6dGl0bGUiLCJ4bWw6c3BhY2UiLCJ4bWxuczp4bGluayJdKSxhbj1rdCgvXHtce1tcd1xXXSp8W1x3XFddKlx9XH0vZ20pLG9uPWt0KC88JVtcd1xXXSp8W1x3XFddKiU+L2dtKSxybj1rdCgvXCRce1tcd1xXXSovZ20pLHNuPWt0KC9eZGF0YS1bXC1cdy5cdTAwQjctXHVGRkZGXSskLyksbG49a3QoL15hcmlhLVtcLVx3XSskLyksZG49a3QoL14oPzooPzooPzpmfGh0KXRwcz98bWFpbHRvfHRlbHxjYWxsdG98c21zfGNpZHx4bXBwfG1hdHJpeCk6fFteYS16XXxbYS16Ky5cLV0rKD86W15hLXorLlwtOl18JCkpL2kpLGNuPWt0KC9eKD86XHcrc2NyaXB0fGRhdGEpOi9pKSx1bj1rdCgvW1x1MDAwMC1cdTAwMjBcdTAwQTBcdTE2ODBcdTE4MEVcdTIwMDAtXHUyMDI5XHUyMDVGXHUzMDAwXS9nKSxwbj1rdCgvXmh0bWwkL2kpLGZuPWt0KC9eW2Etel1bLlx3XSooLVsuXHddKykrJC9pKTt2YXIgbW49T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQVJJQV9BVFRSOmxuLEFUVFJfV0hJVEVTUEFDRTp1bixDVVNUT01fRUxFTUVOVDpmbixEQVRBX0FUVFI6c24sRE9DVFlQRV9OQU1FOnBuLEVSQl9FWFBSOm9uLElTX0FMTE9XRURfVVJJOmRuLElTX1NDUklQVF9PUl9EQVRBOmNuLE1VU1RBQ0hFX0VYUFI6YW4sVE1QTElUX0VYUFI6cm59KTtjb25zdCBobj0xLGduPTMsYm49Nyx2bj04LHhuPTkseW49ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdz9udWxsOndpbmRvd307dmFyIHduPWZ1bmN0aW9uIGUoKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06eW4oKTtjb25zdCBuPXQ9PmUodCk7aWYobi52ZXJzaW9uPSIzLjMuMSIsbi5yZW1vdmVkPVtdLCF0fHwhdC5kb2N1bWVudHx8dC5kb2N1bWVudC5ub2RlVHlwZSE9PXhufHwhdC5FbGVtZW50KXJldHVybiBuLmlzU3VwcG9ydGVkPSExLG47bGV0e2RvY3VtZW50Oml9PXQ7Y29uc3QgYT1pLG89YS5jdXJyZW50U2NyaXB0LHtEb2N1bWVudEZyYWdtZW50OnIsSFRNTFRlbXBsYXRlRWxlbWVudDpzLE5vZGU6bCxFbGVtZW50OmQsTm9kZUZpbHRlcjpjLE5hbWVkTm9kZU1hcDp1PXQuTmFtZWROb2RlTWFwfHx0Lk1vek5hbWVkQXR0ck1hcCxIVE1MRm9ybUVsZW1lbnQ6cCxET01QYXJzZXI6Zix0cnVzdGVkVHlwZXM6bX09dCxoPWQucHJvdG90eXBlLGc9VnQoaCwiY2xvbmVOb2RlIiksYj1WdChoLCJyZW1vdmUiKSx2PVZ0KGgsIm5leHRTaWJsaW5nIikseD1WdChoLCJjaGlsZE5vZGVzIikseT1WdChoLCJwYXJlbnROb2RlIik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHMpe2NvbnN0IGU9aS5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2UuY29udGVudCYmZS5jb250ZW50Lm93bmVyRG9jdW1lbnQmJihpPWUuY29udGVudC5vd25lckRvY3VtZW50KX1sZXQgdyxrPSIiO2NvbnN0e2ltcGxlbWVudGF0aW9uOkEsY3JlYXRlTm9kZUl0ZXJhdG9yOkMsY3JlYXRlRG9jdW1lbnRGcmFnbWVudDpFLGdldEVsZW1lbnRzQnlUYWdOYW1lOlN9PWkse2ltcG9ydE5vZGU6RH09YTtsZXQgWT17YWZ0ZXJTYW5pdGl6ZUF0dHJpYnV0ZXM6W10sYWZ0ZXJTYW5pdGl6ZUVsZW1lbnRzOltdLGFmdGVyU2FuaXRpemVTaGFkb3dET006W10sYmVmb3JlU2FuaXRpemVBdHRyaWJ1dGVzOltdLGJlZm9yZVNhbml0aXplRWxlbWVudHM6W10sYmVmb3JlU2FuaXRpemVTaGFkb3dET006W10sdXBvblNhbml0aXplQXR0cmlidXRlOltdLHVwb25TYW5pdGl6ZUVsZW1lbnQ6W10sdXBvblNhbml0aXplU2hhZG93Tm9kZTpbXX07bi5pc1N1cHBvcnRlZD0iZnVuY3Rpb24iPT10eXBlb2YgZ3QmJiJmdW5jdGlvbiI9PXR5cGVvZiB5JiZBJiZ2b2lkIDAhPT1BLmNyZWF0ZUhUTUxEb2N1bWVudDtjb25zdHtNVVNUQUNIRV9FWFBSOlQsRVJCX0VYUFI6RixUTVBMSVRfRVhQUjpJLERBVEFfQVRUUjpfLEFSSUFfQVRUUjpNLElTX1NDUklQVF9PUl9EQVRBOk4sQVRUUl9XSElURVNQQUNFOk8sQ1VTVE9NX0VMRU1FTlQ6Un09bW47bGV0e0lTX0FMTE9XRURfVVJJOmp9PW1uLFA9bnVsbDtjb25zdCB6PUJ0KHt9LFsuLi4kdCwuLi5XdCwuLi5LdCwuLi5YdCwuLi5adF0pO2xldCBMPW51bGw7Y29uc3QgVT1CdCh7fSxbLi4uSnQsLi4uZW4sLi4udG4sLi4ubm5dKTtsZXQgQj1PYmplY3Quc2VhbChBdChudWxsLHt0YWdOYW1lQ2hlY2s6e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOm51bGx9LGF0dHJpYnV0ZU5hbWVDaGVjazp7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsdmFsdWU6bnVsbH0sYWxsb3dDdXN0b21pemVkQnVpbHRJbkVsZW1lbnRzOnt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTohMX19KSksSD1udWxsLHE9bnVsbDtjb25zdCBWPU9iamVjdC5zZWFsKEF0KG51bGwse3RhZ0NoZWNrOnt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTpudWxsfSxhdHRyaWJ1dGVDaGVjazp7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsdmFsdWU6bnVsbH19KSk7bGV0ICQ9ITAsVz0hMCxLPSExLEc9ITAsWD0hMSxRPSEwLFo9ITEsSj0hMSxlZT0hMSx0ZT0hMSxuZT0hMSxpZT0hMSxhZT0hMCxvZT0hMSxyZT0hMCxzZT0hMSxsZT17fSxkZT1udWxsO2NvbnN0IGNlPUJ0KHt9LFsiYW5ub3RhdGlvbi14bWwiLCJhdWRpbyIsImNvbGdyb3VwIiwiZGVzYyIsImZvcmVpZ25vYmplY3QiLCJoZWFkIiwiaWZyYW1lIiwibWF0aCIsIm1pIiwibW4iLCJtbyIsIm1zIiwibXRleHQiLCJub2VtYmVkIiwibm9mcmFtZXMiLCJub3NjcmlwdCIsInBsYWludGV4dCIsInNjcmlwdCIsInN0eWxlIiwic3ZnIiwidGVtcGxhdGUiLCJ0aGVhZCIsInRpdGxlIiwidmlkZW8iLCJ4bXAiXSk7bGV0IHVlPW51bGw7Y29uc3QgcGU9QnQoe30sWyJhdWRpbyIsInZpZGVvIiwiaW1nIiwic291cmNlIiwiaW1hZ2UiLCJ0cmFjayJdKTtsZXQgZmU9bnVsbDtjb25zdCBtZT1CdCh7fSxbImFsdCIsImNsYXNzIiwiZm9yIiwiaWQiLCJsYWJlbCIsIm5hbWUiLCJwYXR0ZXJuIiwicGxhY2Vob2xkZXIiLCJyb2xlIiwic3VtbWFyeSIsInRpdGxlIiwidmFsdWUiLCJzdHlsZSIsInhtbG5zIl0pLGhlPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIixnZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGJlPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtsZXQgdmU9YmUseGU9ITEseWU9bnVsbDtjb25zdCB3ZT1CdCh7fSxbaGUsZ2UsYmVdLF90KTtsZXQga2U9QnQoe30sWyJtaSIsIm1vIiwibW4iLCJtcyIsIm10ZXh0Il0pLEFlPUJ0KHt9LFsiYW5ub3RhdGlvbi14bWwiXSk7Y29uc3QgQ2U9QnQoe30sWyJ0aXRsZSIsInN0eWxlIiwiZm9udCIsImEiLCJzY3JpcHQiXSk7bGV0IEVlPW51bGw7Y29uc3QgU2U9WyJhcHBsaWNhdGlvbi94aHRtbCt4bWwiLCJ0ZXh0L2h0bWwiXTtsZXQgRGU9bnVsbCxZZT1udWxsO2NvbnN0IFRlPWkuY3JlYXRlRWxlbWVudCgiZm9ybSIpLEZlPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgUmVnRXhwfHxlIGluc3RhbmNlb2YgRnVuY3Rpb259LEllPWZ1bmN0aW9uKCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O2lmKCFZZXx8WWUhPT1lKXtpZihlJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlPXF0KGUpLEVlPS0xPT09U2UuaW5kZXhPZihlLlBBUlNFUl9NRURJQV9UWVBFKT8idGV4dC9odG1sIjplLlBBUlNFUl9NRURJQV9UWVBFLERlPSJhcHBsaWNhdGlvbi94aHRtbCt4bWwiPT09RWU/X3Q6SXQsUD1qdChlLCJBTExPV0VEX1RBR1MiKT9CdCh7fSxlLkFMTE9XRURfVEFHUyxEZSk6eixMPWp0KGUsIkFMTE9XRURfQVRUUiIpP0J0KHt9LGUuQUxMT1dFRF9BVFRSLERlKTpVLHllPWp0KGUsIkFMTE9XRURfTkFNRVNQQUNFUyIpP0J0KHt9LGUuQUxMT1dFRF9OQU1FU1BBQ0VTLF90KTp3ZSxmZT1qdChlLCJBRERfVVJJX1NBRkVfQVRUUiIpP0J0KHF0KG1lKSxlLkFERF9VUklfU0FGRV9BVFRSLERlKTptZSx1ZT1qdChlLCJBRERfREFUQV9VUklfVEFHUyIpP0J0KHF0KHBlKSxlLkFERF9EQVRBX1VSSV9UQUdTLERlKTpwZSxkZT1qdChlLCJGT1JCSURfQ09OVEVOVFMiKT9CdCh7fSxlLkZPUkJJRF9DT05URU5UUyxEZSk6Y2UsSD1qdChlLCJGT1JCSURfVEFHUyIpP0J0KHt9LGUuRk9SQklEX1RBR1MsRGUpOnF0KHt9KSxxPWp0KGUsIkZPUkJJRF9BVFRSIik/QnQoe30sZS5GT1JCSURfQVRUUixEZSk6cXQoe30pLGxlPSEhanQoZSwiVVNFX1BST0ZJTEVTIikmJmUuVVNFX1BST0ZJTEVTLCQ9ITEhPT1lLkFMTE9XX0FSSUFfQVRUUixXPSExIT09ZS5BTExPV19EQVRBX0FUVFIsSz1lLkFMTE9XX1VOS05PV05fUFJPVE9DT0xTfHwhMSxHPSExIT09ZS5BTExPV19TRUxGX0NMT1NFX0lOX0FUVFIsWD1lLlNBRkVfRk9SX1RFTVBMQVRFU3x8ITEsUT0hMSE9PWUuU0FGRV9GT1JfWE1MLFo9ZS5XSE9MRV9ET0NVTUVOVHx8ITEsdGU9ZS5SRVRVUk5fRE9NfHwhMSxuZT1lLlJFVFVSTl9ET01fRlJBR01FTlR8fCExLGllPWUuUkVUVVJOX1RSVVNURURfVFlQRXx8ITEsZWU9ZS5GT1JDRV9CT0RZfHwhMSxhZT0hMSE9PWUuU0FOSVRJWkVfRE9NLG9lPWUuU0FOSVRJWkVfTkFNRURfUFJPUFN8fCExLHJlPSExIT09ZS5LRUVQX0NPTlRFTlQsc2U9ZS5JTl9QTEFDRXx8ITEsaj1lLkFMTE9XRURfVVJJX1JFR0VYUHx8ZG4sdmU9ZS5OQU1FU1BBQ0V8fGJlLGtlPWUuTUFUSE1MX1RFWFRfSU5URUdSQVRJT05fUE9JTlRTfHxrZSxBZT1lLkhUTUxfSU5URUdSQVRJT05fUE9JTlRTfHxBZSxCPWUuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkd8fHt9LGUuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcmJkZlKGUuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrKSYmKEIudGFnTmFtZUNoZWNrPWUuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrKSxlLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HJiZGZShlLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmF0dHJpYnV0ZU5hbWVDaGVjaykmJihCLmF0dHJpYnV0ZU5hbWVDaGVjaz1lLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmF0dHJpYnV0ZU5hbWVDaGVjayksZS5DVVNUT01fRUxFTUVOVF9IQU5ETElORyYmImJvb2xlYW4iPT10eXBlb2YgZS5DVVNUT01fRUxFTUVOVF9IQU5ETElORy5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHMmJihCLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cz1lLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyksWCYmKFc9ITEpLG5lJiYodGU9ITApLGxlJiYoUD1CdCh7fSxadCksTD1bXSwhMD09PWxlLmh0bWwmJihCdChQLCR0KSxCdChMLEp0KSksITA9PT1sZS5zdmcmJihCdChQLFd0KSxCdChMLGVuKSxCdChMLG5uKSksITA9PT1sZS5zdmdGaWx0ZXJzJiYoQnQoUCxLdCksQnQoTCxlbiksQnQoTCxubikpLCEwPT09bGUubWF0aE1sJiYoQnQoUCxYdCksQnQoTCx0biksQnQoTCxubikpKSxlLkFERF9UQUdTJiYoImZ1bmN0aW9uIj09dHlwZW9mIGUuQUREX1RBR1M/Vi50YWdDaGVjaz1lLkFERF9UQUdTOihQPT09eiYmKFA9cXQoUCkpLEJ0KFAsZS5BRERfVEFHUyxEZSkpKSxlLkFERF9BVFRSJiYoImZ1bmN0aW9uIj09dHlwZW9mIGUuQUREX0FUVFI/Vi5hdHRyaWJ1dGVDaGVjaz1lLkFERF9BVFRSOihMPT09VSYmKEw9cXQoTCkpLEJ0KEwsZS5BRERfQVRUUixEZSkpKSxlLkFERF9VUklfU0FGRV9BVFRSJiZCdChmZSxlLkFERF9VUklfU0FGRV9BVFRSLERlKSxlLkZPUkJJRF9DT05URU5UUyYmKGRlPT09Y2UmJihkZT1xdChkZSkpLEJ0KGRlLGUuRk9SQklEX0NPTlRFTlRTLERlKSksZS5BRERfRk9SQklEX0NPTlRFTlRTJiYoZGU9PT1jZSYmKGRlPXF0KGRlKSksQnQoZGUsZS5BRERfRk9SQklEX0NPTlRFTlRTLERlKSkscmUmJihQWyIjdGV4dCJdPSEwKSxaJiZCdChQLFsiaHRtbCIsImhlYWQiLCJib2R5Il0pLFAudGFibGUmJihCdChQLFsidGJvZHkiXSksZGVsZXRlIEgudGJvZHkpLGUuVFJVU1RFRF9UWVBFU19QT0xJQ1kpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlLlRSVVNURURfVFlQRVNfUE9MSUNZLmNyZWF0ZUhUTUwpdGhyb3cgenQoJ1RSVVNURURfVFlQRVNfUE9MSUNZIGNvbmZpZ3VyYXRpb24gb3B0aW9uIG11c3QgcHJvdmlkZSBhICJjcmVhdGVIVE1MIiBob29rLicpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlLlRSVVNURURfVFlQRVNfUE9MSUNZLmNyZWF0ZVNjcmlwdFVSTCl0aHJvdyB6dCgnVFJVU1RFRF9UWVBFU19QT0xJQ1kgY29uZmlndXJhdGlvbiBvcHRpb24gbXVzdCBwcm92aWRlIGEgImNyZWF0ZVNjcmlwdFVSTCIgaG9vay4nKTt3PWUuVFJVU1RFRF9UWVBFU19QT0xJQ1ksaz13LmNyZWF0ZUhUTUwoIiIpfWVsc2Ugdm9pZCAwPT09dyYmKHc9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9dHlwZW9mIGV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmNyZWF0ZVBvbGljeSlyZXR1cm4gbnVsbDtsZXQgbj1udWxsO2NvbnN0IGk9ImRhdGEtdHQtcG9saWN5LXN1ZmZpeCI7dCYmdC5oYXNBdHRyaWJ1dGUoaSkmJihuPXQuZ2V0QXR0cmlidXRlKGkpKTtjb25zdCBhPSJkb21wdXJpZnkiKyhuPyIjIituOiIiKTt0cnl7cmV0dXJuIGUuY3JlYXRlUG9saWN5KGEse2NyZWF0ZUhUTUwoZSl7cmV0dXJuIGV9LGNyZWF0ZVNjcmlwdFVSTChlKXtyZXR1cm4gZX19KX1jYXRjaChlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUcnVzdGVkVHlwZXMgcG9saWN5ICIrYSsiIGNvdWxkIG5vdCBiZSBjcmVhdGVkLiIpLG51bGx9fShtLG8pKSxudWxsIT09dyYmInN0cmluZyI9PXR5cGVvZiBrJiYoaz13LmNyZWF0ZUhUTUwoIiIpKTt3dCYmd3QoZSksWWU9ZX19LF9lPUJ0KHt9LFsuLi5XdCwuLi5LdCwuLi5HdF0pLE1lPUJ0KHt9LFsuLi5YdCwuLi5RdF0pLE5lPWZ1bmN0aW9uKGUpe1R0KG4ucmVtb3ZlZCx7ZWxlbWVudDplfSk7dHJ5e3koZSkucmVtb3ZlQ2hpbGQoZSl9Y2F0Y2godCl7YihlKX19LE9lPWZ1bmN0aW9uKGUsdCl7dHJ5e1R0KG4ucmVtb3ZlZCx7YXR0cmlidXRlOnQuZ2V0QXR0cmlidXRlTm9kZShlKSxmcm9tOnR9KX1jYXRjaChlKXtUdChuLnJlbW92ZWQse2F0dHJpYnV0ZTpudWxsLGZyb206dH0pfWlmKHQucmVtb3ZlQXR0cmlidXRlKGUpLCJpcyI9PT1lKWlmKHRlfHxuZSl0cnl7TmUodCl9Y2F0Y2goZSl7fWVsc2UgdHJ5e3Quc2V0QXR0cmlidXRlKGUsIiIpfWNhdGNoKGUpe319LFJlPWZ1bmN0aW9uKGUpe2xldCB0PW51bGwsbj1udWxsO2lmKGVlKWU9IjxyZW1vdmU+PC9yZW1vdmU+IitlO2Vsc2V7Y29uc3QgdD1NdChlLC9eW1xyXG5cdCBdKy8pO249dCYmdFswXX0iYXBwbGljYXRpb24veGh0bWwreG1sIj09PUVlJiZ2ZT09PWJlJiYoZT0nPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjwvaGVhZD48Ym9keT4nK2UrIjwvYm9keT48L2h0bWw+Iik7Y29uc3QgYT13P3cuY3JlYXRlSFRNTChlKTplO2lmKHZlPT09YmUpdHJ5e3Q9KG5ldyBmKS5wYXJzZUZyb21TdHJpbmcoYSxFZSl9Y2F0Y2goZSl7fWlmKCF0fHwhdC5kb2N1bWVudEVsZW1lbnQpe3Q9QS5jcmVhdGVEb2N1bWVudCh2ZSwidGVtcGxhdGUiLG51bGwpO3RyeXt0LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUw9eGU/azphfWNhdGNoKGUpe319Y29uc3Qgbz10LmJvZHl8fHQuZG9jdW1lbnRFbGVtZW50O3JldHVybiBlJiZuJiZvLmluc2VydEJlZm9yZShpLmNyZWF0ZVRleHROb2RlKG4pLG8uY2hpbGROb2Rlc1swXXx8bnVsbCksdmU9PT1iZT9TLmNhbGwodCxaPyJodG1sIjoiYm9keSIpWzBdOlo/dC5kb2N1bWVudEVsZW1lbnQ6b30samU9ZnVuY3Rpb24oZSl7cmV0dXJuIEMuY2FsbChlLm93bmVyRG9jdW1lbnR8fGUsZSxjLlNIT1dfRUxFTUVOVHxjLlNIT1dfQ09NTUVOVHxjLlNIT1dfVEVYVHxjLlNIT1dfUFJPQ0VTU0lOR19JTlNUUlVDVElPTnxjLlNIT1dfQ0RBVEFfU0VDVElPTixudWxsKX0sUGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBwJiYoInN0cmluZyIhPXR5cGVvZiBlLm5vZGVOYW1lfHwic3RyaW5nIiE9dHlwZW9mIGUudGV4dENvbnRlbnR8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLnJlbW92ZUNoaWxkfHwhKGUuYXR0cmlidXRlcyBpbnN0YW5jZW9mIHUpfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5yZW1vdmVBdHRyaWJ1dGV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLnNldEF0dHJpYnV0ZXx8InN0cmluZyIhPXR5cGVvZiBlLm5hbWVzcGFjZVVSSXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUuaW5zZXJ0QmVmb3JlfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5oYXNDaGlsZE5vZGVzKX0semU9ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGwmJmUgaW5zdGFuY2VvZiBsfTtmdW5jdGlvbiBMZShlLHQsaSl7U3QoZSxlPT57ZS5jYWxsKG4sdCxpLFllKX0pfWNvbnN0IFVlPWZ1bmN0aW9uKGUpe2xldCB0PW51bGw7aWYoTGUoWS5iZWZvcmVTYW5pdGl6ZUVsZW1lbnRzLGUsbnVsbCksUGUoZSkpcmV0dXJuIE5lKGUpLCEwO2NvbnN0IGk9RGUoZS5ub2RlTmFtZSk7aWYoTGUoWS51cG9uU2FuaXRpemVFbGVtZW50LGUse3RhZ05hbWU6aSxhbGxvd2VkVGFnczpQfSksUSYmZS5oYXNDaGlsZE5vZGVzKCkmJiF6ZShlLmZpcnN0RWxlbWVudENoaWxkKSYmUHQoLzxbL1x3IV0vZyxlLmlubmVySFRNTCkmJlB0KC88Wy9cdyFdL2csZS50ZXh0Q29udGVudCkpcmV0dXJuIE5lKGUpLCEwO2lmKGUubm9kZVR5cGU9PT1ibilyZXR1cm4gTmUoZSksITA7aWYoUSYmZS5ub2RlVHlwZT09PXZuJiZQdCgvPFsvXHddL2csZS5kYXRhKSlyZXR1cm4gTmUoZSksITA7aWYoIShWLnRhZ0NoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24mJlYudGFnQ2hlY2soaSkpJiYoIVBbaV18fEhbaV0pKXtpZighSFtpXSYmSGUoaSkpe2lmKEIudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZQdChCLnRhZ05hbWVDaGVjayxpKSlyZXR1cm4hMTtpZihCLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZCLnRhZ05hbWVDaGVjayhpKSlyZXR1cm4hMX1pZihyZSYmIWRlW2ldKXtjb25zdCB0PXkoZSl8fGUucGFyZW50Tm9kZSxuPXgoZSl8fGUuY2hpbGROb2RlcztpZihuJiZ0KXtmb3IobGV0IGk9bi5sZW5ndGgtMTtpPj0wOy0taSl7Y29uc3QgYT1nKG5baV0sITApO2EuX19yZW1vdmFsQ291bnQ9KGUuX19yZW1vdmFsQ291bnR8fDApKzEsdC5pbnNlcnRCZWZvcmUoYSx2KGUpKX19fXJldHVybiBOZShlKSwhMH1yZXR1cm4gZSBpbnN0YW5jZW9mIGQmJiFmdW5jdGlvbihlKXtsZXQgdD15KGUpO3QmJnQudGFnTmFtZXx8KHQ9e25hbWVzcGFjZVVSSTp2ZSx0YWdOYW1lOiJ0ZW1wbGF0ZSJ9KTtjb25zdCBuPUl0KGUudGFnTmFtZSksaT1JdCh0LnRhZ05hbWUpO3JldHVybiEheWVbZS5uYW1lc3BhY2VVUkldJiYoZS5uYW1lc3BhY2VVUkk9PT1nZT90Lm5hbWVzcGFjZVVSST09PWJlPyJzdmciPT09bjp0Lm5hbWVzcGFjZVVSST09PWhlPyJzdmciPT09biYmKCJhbm5vdGF0aW9uLXhtbCI9PT1pfHxrZVtpXSk6Qm9vbGVhbihfZVtuXSk6ZS5uYW1lc3BhY2VVUkk9PT1oZT90Lm5hbWVzcGFjZVVSST09PWJlPyJtYXRoIj09PW46dC5uYW1lc3BhY2VVUkk9PT1nZT8ibWF0aCI9PT1uJiZBZVtpXTpCb29sZWFuKE1lW25dKTplLm5hbWVzcGFjZVVSST09PWJlPyEodC5uYW1lc3BhY2VVUkk9PT1nZSYmIUFlW2ldKSYmISh0Lm5hbWVzcGFjZVVSST09PWhlJiYha2VbaV0pJiYhTWVbbl0mJihDZVtuXXx8IV9lW25dKTohKCJhcHBsaWNhdGlvbi94aHRtbCt4bWwiIT09RWV8fCF5ZVtlLm5hbWVzcGFjZVVSSV0pKX0oZSk/KE5lKGUpLCEwKToibm9zY3JpcHQiIT09aSYmIm5vZW1iZWQiIT09aSYmIm5vZnJhbWVzIiE9PWl8fCFQdCgvPFwvbm8oc2NyaXB0fGVtYmVkfGZyYW1lcykvaSxlLmlubmVySFRNTCk/KFgmJmUubm9kZVR5cGU9PT1nbiYmKHQ9ZS50ZXh0Q29udGVudCxTdChbVCxGLEldLGU9Pnt0PU50KHQsZSwiICIpfSksZS50ZXh0Q29udGVudCE9PXQmJihUdChuLnJlbW92ZWQse2VsZW1lbnQ6ZS5jbG9uZU5vZGUoKX0pLGUudGV4dENvbnRlbnQ9dCkpLExlKFkuYWZ0ZXJTYW5pdGl6ZUVsZW1lbnRzLGUsbnVsbCksITEpOihOZShlKSwhMCl9LEJlPWZ1bmN0aW9uKGUsdCxuKXtpZihhZSYmKCJpZCI9PT10fHwibmFtZSI9PT10KSYmKG4gaW4gaXx8biBpbiBUZSkpcmV0dXJuITE7aWYoVyYmIXFbdF0mJlB0KF8sdCkpO2Vsc2UgaWYoJCYmUHQoTSx0KSk7ZWxzZSBpZihWLmF0dHJpYnV0ZUNoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24mJlYuYXR0cmlidXRlQ2hlY2sodCxlKSk7ZWxzZSBpZighTFt0XXx8cVt0XSl7aWYoIShIZShlKSYmKEIudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZQdChCLnRhZ05hbWVDaGVjayxlKXx8Qi50YWdOYW1lQ2hlY2sgaW5zdGFuY2VvZiBGdW5jdGlvbiYmQi50YWdOYW1lQ2hlY2soZSkpJiYoQi5hdHRyaWJ1dGVOYW1lQ2hlY2sgaW5zdGFuY2VvZiBSZWdFeHAmJlB0KEIuYXR0cmlidXRlTmFtZUNoZWNrLHQpfHxCLmF0dHJpYnV0ZU5hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZCLmF0dHJpYnV0ZU5hbWVDaGVjayh0LGUpKXx8ImlzIj09PXQmJkIuYWxsb3dDdXN0b21pemVkQnVpbHRJbkVsZW1lbnRzJiYoQi50YWdOYW1lQ2hlY2sgaW5zdGFuY2VvZiBSZWdFeHAmJlB0KEIudGFnTmFtZUNoZWNrLG4pfHxCLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZCLnRhZ05hbWVDaGVjayhuKSkpKXJldHVybiExfWVsc2UgaWYoZmVbdF0pO2Vsc2UgaWYoUHQoaixOdChuLE8sIiIpKSk7ZWxzZSBpZigic3JjIiE9PXQmJiJ4bGluazpocmVmIiE9PXQmJiJocmVmIiE9PXR8fCJzY3JpcHQiPT09ZXx8MCE9PU90KG4sImRhdGE6Iil8fCF1ZVtlXSl7aWYoSyYmIVB0KE4sTnQobixPLCIiKSkpO2Vsc2UgaWYobilyZXR1cm4hMX1lbHNlO3JldHVybiEwfSxIZT1mdW5jdGlvbihlKXtyZXR1cm4iYW5ub3RhdGlvbi14bWwiIT09ZSYmTXQoZSxSKX0scWU9ZnVuY3Rpb24oZSl7TGUoWS5iZWZvcmVTYW5pdGl6ZUF0dHJpYnV0ZXMsZSxudWxsKTtjb25zdHthdHRyaWJ1dGVzOnR9PWU7aWYoIXR8fFBlKGUpKXJldHVybjtjb25zdCBpPXthdHRyTmFtZToiIixhdHRyVmFsdWU6IiIsa2VlcEF0dHI6ITAsYWxsb3dlZEF0dHJpYnV0ZXM6TCxmb3JjZUtlZXBBdHRyOnZvaWQgMH07bGV0IGE9dC5sZW5ndGg7Zm9yKDthLS07KXtjb25zdCBvPXRbYV0se25hbWU6cixuYW1lc3BhY2VVUkk6cyx2YWx1ZTpsfT1vLGQ9RGUociksYz1sO2xldCB1PSJ2YWx1ZSI9PT1yP2M6UnQoYyk7aWYoaS5hdHRyTmFtZT1kLGkuYXR0clZhbHVlPXUsaS5rZWVwQXR0cj0hMCxpLmZvcmNlS2VlcEF0dHI9dm9pZCAwLExlKFkudXBvblNhbml0aXplQXR0cmlidXRlLGUsaSksdT1pLmF0dHJWYWx1ZSwhb2V8fCJpZCIhPT1kJiYibmFtZSIhPT1kfHwoT2UocixlKSx1PSJ1c2VyLWNvbnRlbnQtIit1KSxRJiZQdCgvKCgtLSE/fF0pPil8PFwvKHN0eWxlfHRpdGxlfHRleHRhcmVhKS9pLHUpKXtPZShyLGUpO2NvbnRpbnVlfWlmKCJhdHRyaWJ1dGVuYW1lIj09PWQmJk10KHUsImhyZWYiKSl7T2UocixlKTtjb250aW51ZX1pZihpLmZvcmNlS2VlcEF0dHIpY29udGludWU7aWYoIWkua2VlcEF0dHIpe09lKHIsZSk7Y29udGludWV9aWYoIUcmJlB0KC9cLz4vaSx1KSl7T2UocixlKTtjb250aW51ZX1YJiZTdChbVCxGLEldLGU9Pnt1PU50KHUsZSwiICIpfSk7Y29uc3QgcD1EZShlLm5vZGVOYW1lKTtpZihCZShwLGQsdSkpe2lmKHcmJiJvYmplY3QiPT10eXBlb2YgbSYmImZ1bmN0aW9uIj09dHlwZW9mIG0uZ2V0QXR0cmlidXRlVHlwZSlpZihzKTtlbHNlIHN3aXRjaChtLmdldEF0dHJpYnV0ZVR5cGUocCxkKSl7Y2FzZSJUcnVzdGVkSFRNTCI6dT13LmNyZWF0ZUhUTUwodSk7YnJlYWs7Y2FzZSJUcnVzdGVkU2NyaXB0VVJMIjp1PXcuY3JlYXRlU2NyaXB0VVJMKHUpfWlmKHUhPT1jKXRyeXtzP2Uuc2V0QXR0cmlidXRlTlMocyxyLHUpOmUuc2V0QXR0cmlidXRlKHIsdSksUGUoZSk/TmUoZSk6WXQobi5yZW1vdmVkKX1jYXRjaCh0KXtPZShyLGUpfX1lbHNlIE9lKHIsZSl9TGUoWS5hZnRlclNhbml0aXplQXR0cmlidXRlcyxlLG51bGwpfSxWZT1mdW5jdGlvbiBlKHQpe2xldCBuPW51bGw7Y29uc3QgaT1qZSh0KTtmb3IoTGUoWS5iZWZvcmVTYW5pdGl6ZVNoYWRvd0RPTSx0LG51bGwpO249aS5uZXh0Tm9kZSgpOylMZShZLnVwb25TYW5pdGl6ZVNoYWRvd05vZGUsbixudWxsKSxVZShuKSxxZShuKSxuLmNvbnRlbnQgaW5zdGFuY2VvZiByJiZlKG4uY29udGVudCk7TGUoWS5hZnRlclNhbml0aXplU2hhZG93RE9NLHQsbnVsbCl9O3JldHVybiBuLnNhbml0aXplPWZ1bmN0aW9uKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxpPW51bGwsbz1udWxsLHM9bnVsbCxkPW51bGw7aWYoeGU9IWUseGUmJihlPSJceDNjIS0tXHgzZSIpLCJzdHJpbmciIT10eXBlb2YgZSYmIXplKGUpKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZyl0aHJvdyB6dCgidG9TdHJpbmcgaXMgbm90IGEgZnVuY3Rpb24iKTtpZigic3RyaW5nIiE9dHlwZW9mKGU9ZS50b1N0cmluZygpKSl0aHJvdyB6dCgiZGlydHkgaXMgbm90IGEgc3RyaW5nLCBhYm9ydGluZyIpfWlmKCFuLmlzU3VwcG9ydGVkKXJldHVybiBlO2lmKEp8fEllKHQpLG4ucmVtb3ZlZD1bXSwic3RyaW5nIj09dHlwZW9mIGUmJihzZT0hMSksc2Upe2lmKGUubm9kZU5hbWUpe2NvbnN0IHQ9RGUoZS5ub2RlTmFtZSk7aWYoIVBbdF18fEhbdF0pdGhyb3cgenQoInJvb3Qgbm9kZSBpcyBmb3JiaWRkZW4gYW5kIGNhbm5vdCBiZSBzYW5pdGl6ZWQgaW4tcGxhY2UiKX19ZWxzZSBpZihlIGluc3RhbmNlb2YgbClpPVJlKCJceDNjIS0tLS1ceDNlIiksbz1pLm93bmVyRG9jdW1lbnQuaW1wb3J0Tm9kZShlLCEwKSxvLm5vZGVUeXBlPT09aG4mJiJCT0RZIj09PW8ubm9kZU5hbWV8fCJIVE1MIj09PW8ubm9kZU5hbWU/aT1vOmkuYXBwZW5kQ2hpbGQobyk7ZWxzZXtpZighdGUmJiFYJiYhWiYmLTE9PT1lLmluZGV4T2YoIjwiKSlyZXR1cm4gdyYmaWU/dy5jcmVhdGVIVE1MKGUpOmU7aWYoaT1SZShlKSwhaSlyZXR1cm4gdGU/bnVsbDppZT9rOiIifWkmJmVlJiZOZShpLmZpcnN0Q2hpbGQpO2NvbnN0IGM9amUoc2U/ZTppKTtmb3IoO3M9Yy5uZXh0Tm9kZSgpOylVZShzKSxxZShzKSxzLmNvbnRlbnQgaW5zdGFuY2VvZiByJiZWZShzLmNvbnRlbnQpO2lmKHNlKXJldHVybiBlO2lmKHRlKXtpZihuZSlmb3IoZD1FLmNhbGwoaS5vd25lckRvY3VtZW50KTtpLmZpcnN0Q2hpbGQ7KWQuYXBwZW5kQ2hpbGQoaS5maXJzdENoaWxkKTtlbHNlIGQ9aTtyZXR1cm4oTC5zaGFkb3dyb290fHxMLnNoYWRvd3Jvb3Rtb2RlKSYmKGQ9RC5jYWxsKGEsZCwhMCkpLGR9bGV0IHU9Wj9pLm91dGVySFRNTDppLmlubmVySFRNTDtyZXR1cm4gWiYmUFsiIWRvY3R5cGUiXSYmaS5vd25lckRvY3VtZW50JiZpLm93bmVyRG9jdW1lbnQuZG9jdHlwZSYmaS5vd25lckRvY3VtZW50LmRvY3R5cGUubmFtZSYmUHQocG4saS5vd25lckRvY3VtZW50LmRvY3R5cGUubmFtZSkmJih1PSI8IURPQ1RZUEUgIitpLm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lKyI+XG4iK3UpLFgmJlN0KFtULEYsSV0sZT0+e3U9TnQodSxlLCIgIil9KSx3JiZpZT93LmNyZWF0ZUhUTUwodSk6dX0sbi5zZXRDb25maWc9ZnVuY3Rpb24oKXtJZShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30pLEo9ITB9LG4uY2xlYXJDb25maWc9ZnVuY3Rpb24oKXtZZT1udWxsLEo9ITF9LG4uaXNWYWxpZEF0dHJpYnV0ZT1mdW5jdGlvbihlLHQsbil7WWV8fEllKHt9KTtjb25zdCBpPURlKGUpLGE9RGUodCk7cmV0dXJuIEJlKGksYSxuKX0sbi5hZGRIb29rPWZ1bmN0aW9uKGUsdCl7ImZ1bmN0aW9uIj09dHlwZW9mIHQmJlR0KFlbZV0sdCl9LG4ucmVtb3ZlSG9vaz1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMCE9PXQpe2NvbnN0IG49RHQoWVtlXSx0KTtyZXR1cm4tMT09PW4/dm9pZCAwOkZ0KFlbZV0sbiwxKVswXX1yZXR1cm4gWXQoWVtlXSl9LG4ucmVtb3ZlSG9va3M9ZnVuY3Rpb24oZSl7WVtlXT1bXX0sbi5yZW1vdmVBbGxIb29rcz1mdW5jdGlvbigpe1k9e2FmdGVyU2FuaXRpemVBdHRyaWJ1dGVzOltdLGFmdGVyU2FuaXRpemVFbGVtZW50czpbXSxhZnRlclNhbml0aXplU2hhZG93RE9NOltdLGJlZm9yZVNhbml0aXplQXR0cmlidXRlczpbXSxiZWZvcmVTYW5pdGl6ZUVsZW1lbnRzOltdLGJlZm9yZVNhbml0aXplU2hhZG93RE9NOltdLHVwb25TYW5pdGl6ZUF0dHJpYnV0ZTpbXSx1cG9uU2FuaXRpemVFbGVtZW50OltdLHVwb25TYW5pdGl6ZVNoYWRvd05vZGU6W119fSxufSgpLGtuPWZ1bmN0aW9uKCl7dmFyIGU9e2Jhc2U6Imh0dHBzOi8vdHdlbW9qaS5tYXhjZG4uY29tL3YvMTMuMS4xLyIsZXh0OiIucG5nIixzaXplOiI3Mng3MiIsY2xhc3NOYW1lOiJlbW9qaSIsY29udmVydDp7ZnJvbUNvZGVQb2ludDpmdW5jdGlvbihlKXt2YXIgdD0ic3RyaW5nIj09dHlwZW9mIGU/cGFyc2VJbnQoZSwxNik6ZTtpZih0PDY1NTM2KXJldHVybiBzKHQpO3JldHVybiBzKDU1Mjk2KygodC09NjU1MzYpPj4xMCksNTYzMjArKDEwMjMmdCkpfSx0b0NvZGVQb2ludDp2fSxvbmVycm9yOmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGwodGhpcy5hbHQsITEpLHRoaXMpfSxwYXJzZTpmdW5jdGlvbih0LG4pe24mJiJmdW5jdGlvbiIhPXR5cGVvZiBufHwobj17Y2FsbGJhY2s6bn0pO3JldHVybigic3RyaW5nIj09dHlwZW9mIHQ/bTpmKSh0LHtjYWxsYmFjazpuLmNhbGxiYWNrfHxjLGF0dHJpYnV0ZXM6ImZ1bmN0aW9uIj09dHlwZW9mIG4uYXR0cmlidXRlcz9uLmF0dHJpYnV0ZXM6ZyxiYXNlOiJzdHJpbmciPT10eXBlb2Ygbi5iYXNlP24uYmFzZTplLmJhc2UsZXh0Om4uZXh0fHxlLmV4dCxzaXplOm4uZm9sZGVyfHwoaT1uLnNpemV8fGUuc2l6ZSwibnVtYmVyIj09dHlwZW9mIGk/aSsieCIraTppKSxjbGFzc05hbWU6bi5jbGFzc05hbWV8fGUuY2xhc3NOYW1lLG9uZXJyb3I6bi5vbmVycm9yfHxlLm9uZXJyb3J9KTt2YXIgaX0scmVwbGFjZTpiLHRlc3Q6ZnVuY3Rpb24oZSl7bi5sYXN0SW5kZXg9MDt2YXIgdD1uLnRlc3QoZSk7cmV0dXJuIG4ubGFzdEluZGV4PTAsdH19LHQ9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwiJyI6IiYjMzk7IiwnIic6IiZxdW90OyJ9LG49Lyg/Olx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmYlx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjhcdWQ4M2NcdWRmZmNcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY4XHVkODNjXHVkZmZkXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmZVx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjhcdWQ4M2NcdWRmZmZcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZiXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmYlx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZFx1ZGM2OVx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmNcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZjXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkXHVkYzY5XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmZFx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmRcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2RcdWRjNjlcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZlXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmZVx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZFx1ZGM2OVx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmZcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZmXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkXHVkYzY5XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZVx1ZGRkMVx1ZDgzY1x1ZGZmYlx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZVx1ZGRkMVx1ZDgzY1tcdWRmZmMtXHVkZmZmXXxcdWQ4M2VcdWRkZDFcdWQ4M2NcdWRmZmNcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2VcdWRkZDFcdWQ4M2NbXHVkZmZiXHVkZmZkLVx1ZGZmZl18XHVkODNlXHVkZGQxXHVkODNjXHVkZmZkXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNlXHVkZGQxXHVkODNjW1x1ZGZmYlx1ZGZmY1x1ZGZmZVx1ZGZmZl18XHVkODNlXHVkZGQxXHVkODNjXHVkZmZlXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNlXHVkZGQxXHVkODNjW1x1ZGZmYi1cdWRmZmRcdWRmZmZdfFx1ZDgzZVx1ZGRkMVx1ZDgzY1x1ZGZmZlx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZVx1ZGRkMVx1ZDgzY1tcdWRmZmItXHVkZmZlXXxcdWQ4M2RcdWRjNjhcdWQ4M2NcdWRmZmJcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY4XHVkODNjXHVkZmZiXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYy1cdWRmZmZdfFx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmY1x1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjhcdWQ4M2NcdWRmZmNcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiXHVkZmZkLVx1ZGZmZl18XHVkODNkXHVkYzY4XHVkODNjXHVkZmZkXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmZFx1MjAwZFx1ZDgzZVx1ZGQxZFx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmJcdWRmZmNcdWRmZmVcdWRmZmZdfFx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmZVx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjhcdWQ4M2NcdWRmZmVcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZFx1ZGZmZl18XHVkODNkXHVkYzY4XHVkODNjXHVkZmZmXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmZlx1MjAwZFx1ZDgzZVx1ZGQxZFx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZlXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmJcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZiXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY5XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmYlx1MjAwZFx1ZDgzZVx1ZGQxZFx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmMtXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmJcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2RcdWRjNjlcdWQ4M2NbXHVkZmZjLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZjXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmY1x1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM2OVx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmNcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiXHVkZmZkLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZjXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNkXHVkYzY5XHVkODNjW1x1ZGZmYlx1ZGZmZC1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmZFx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmRcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjNjlcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZkXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYlx1ZGZmY1x1ZGZmZVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZkXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNkXHVkYzY5XHVkODNjW1x1ZGZmYlx1ZGZmY1x1ZGZmZVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZlXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmZVx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM2OVx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmVcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2RcdWRjNjhcdWQ4M2NbXHVkZmZiLVx1ZGZmZFx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZlXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNkXHVkYzY5XHVkODNjW1x1ZGZmYi1cdWRmZmRcdWRmZmZdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmZlx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM2OFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmZcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjNjlcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzY5XHVkODNjXHVkZmZmXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNkXHVkYzY4XHVkODNjW1x1ZGZmYi1cdWRmZmVdfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmZlx1MjAwZFx1ZDgzZVx1ZGQxZFx1MjAwZFx1ZDgzZFx1ZGM2OVx1ZDgzY1tcdWRmZmItXHVkZmZlXXxcdWQ4M2VcdWRkZDFcdWQ4M2NcdWRmZmJcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2VcdWRkZDFcdWQ4M2NbXHVkZmZjLVx1ZGZmZl18XHVkODNlXHVkZGQxXHVkODNjXHVkZmZiXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNlXHVkZGQxXHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZVx1ZGRkMVx1ZDgzY1x1ZGZmY1x1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZVx1ZGRkMVx1ZDgzY1tcdWRmZmJcdWRmZmQtXHVkZmZmXXxcdWQ4M2VcdWRkZDFcdWQ4M2NcdWRmZmNcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2VcdWRkZDFcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNlXHVkZGQxXHVkODNjXHVkZmZkXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNlXHVkZGQxXHVkODNjW1x1ZGZmYlx1ZGZmY1x1ZGZmZVx1ZGZmZl18XHVkODNlXHVkZGQxXHVkODNjXHVkZmZkXHUyMDBkXHVkODNlXHVkZDFkXHUyMDBkXHVkODNlXHVkZGQxXHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZVx1ZGRkMVx1ZDgzY1x1ZGZmZVx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZVx1ZGRkMVx1ZDgzY1tcdWRmZmItXHVkZmZkXHVkZmZmXXxcdWQ4M2VcdWRkZDFcdWQ4M2NcdWRmZmVcdTIwMGRcdWQ4M2VcdWRkMWRcdTIwMGRcdWQ4M2VcdWRkZDFcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNlXHVkZGQxXHVkODNjXHVkZmZmXHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNlXHVkZGQxXHVkODNjW1x1ZGZmYi1cdWRmZmVdfFx1ZDgzZVx1ZGRkMVx1ZDgzY1x1ZGZmZlx1MjAwZFx1ZDgzZVx1ZGQxZFx1MjAwZFx1ZDgzZVx1ZGRkMVx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjNjhcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2RcdWRjNjh8XHVkODNkXHVkYzY5XHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkW1x1ZGM2OFx1ZGM2OV18XHVkODNkXHVkYzY4XHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY4fFx1ZDgzZFx1ZGM2OVx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFtcdWRjNjhcdWRjNjldfFx1ZDgzZVx1ZGRkMVx1MjAwZFx1ZDgzZVx1ZGQxZFx1MjAwZFx1ZDgzZVx1ZGRkMXxcdWQ4M2RcdWRjNmJcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzZjXHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFx1ZGM2ZFx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWQ4M2RcdWRjOGZcdWQ4M2NbXHVkZmZiLVx1ZGZmZl18XHVkODNkXHVkYzkxXHVkODNjW1x1ZGZmYi1cdWRmZmZdfFx1ZDgzZFtcdWRjNmItXHVkYzZkXHVkYzhmXHVkYzkxXSl8KD86XHVkODNkW1x1ZGM2OFx1ZGM2OV18XHVkODNlXHVkZGQxKSg/Olx1ZDgzY1tcdWRmZmItXHVkZmZmXSk/XHUyMDBkKD86XHUyNjk1XHVmZTBmfFx1MjY5Nlx1ZmUwZnxcdTI3MDhcdWZlMGZ8XHVkODNjW1x1ZGYzZVx1ZGY3M1x1ZGY3Y1x1ZGY4NFx1ZGY5M1x1ZGZhNFx1ZGZhOFx1ZGZlYlx1ZGZlZF18XHVkODNkW1x1ZGNiYlx1ZGNiY1x1ZGQyN1x1ZGQyY1x1ZGU4MFx1ZGU5Ml18XHVkODNlW1x1ZGRhZi1cdWRkYjNcdWRkYmNcdWRkYmRdKXwoPzpcdWQ4M2NbXHVkZmNiXHVkZmNjXXxcdWQ4M2RbXHVkZDc0XHVkZDc1XXxcdTI2ZjkpKCg/Olx1ZDgzY1tcdWRmZmItXHVkZmZmXXxcdWZlMGYpXHUyMDBkW1x1MjY0MFx1MjY0Ml1cdWZlMGYpfCg/Olx1ZDgzY1tcdWRmYzNcdWRmYzRcdWRmY2FdfFx1ZDgzZFtcdWRjNmVcdWRjNzBcdWRjNzFcdWRjNzNcdWRjNzdcdWRjODFcdWRjODJcdWRjODZcdWRjODdcdWRlNDUtXHVkZTQ3XHVkZTRiXHVkZTRkXHVkZTRlXHVkZWEzXHVkZWI0LVx1ZGViNl18XHVkODNlW1x1ZGQyNlx1ZGQzNVx1ZGQzNy1cdWRkMzlcdWRkM2RcdWRkM2VcdWRkYjhcdWRkYjlcdWRkY2QtXHVkZGNmXHVkZGQ0XHVkZGQ2LVx1ZGRkZF0pKD86XHVkODNjW1x1ZGZmYi1cdWRmZmZdKT9cdTIwMGRbXHUyNjQwXHUyNjQyXVx1ZmUwZnwoPzpcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjZcdTIwMGRcdWQ4M2RcdWRjNjZ8XHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY3XHUyMDBkXHVkODNkW1x1ZGM2Nlx1ZGM2N118XHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY2XHUyMDBkXHVkODNkXHVkYzY2fFx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2N1x1MjAwZFx1ZDgzZFtcdWRjNjZcdWRjNjddfFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2Nlx1MjAwZFx1ZDgzZFx1ZGM2NnxcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RbXHVkYzY2XHVkYzY3XXxcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjZcdTIwMGRcdWQ4M2RcdWRjNjZ8XHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY3XHUyMDBkXHVkODNkW1x1ZGM2Nlx1ZGM2N118XHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkW1x1ZGM2Nlx1ZGM2N118XHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkW1x1ZGM2Nlx1ZGM2N118XHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY2XHUyMDBkXHVkODNkXHVkYzY2fFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2N1x1MjAwZFx1ZDgzZFtcdWRjNjZcdWRjNjddfFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFtcdWRjNjZcdWRjNjddfFx1ZDgzY1x1ZGZmM1x1ZmUwZlx1MjAwZFx1MjZhN1x1ZmUwZnxcdWQ4M2NcdWRmZjNcdWZlMGZcdTIwMGRcdWQ4M2NcdWRmMDh8XHVkODNkXHVkZTM2XHUyMDBkXHVkODNjXHVkZjJiXHVmZTBmfFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGQyNXxcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2VcdWRlNzl8XHVkODNjXHVkZmY0XHUyMDBkXHUyNjIwXHVmZTBmfFx1ZDgzZFx1ZGMxNVx1MjAwZFx1ZDgzZVx1ZGRiYXxcdWQ4M2RcdWRjM2JcdTIwMGRcdTI3NDRcdWZlMGZ8XHVkODNkXHVkYzQxXHUyMDBkXHVkODNkXHVkZGU4fFx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFtcdWRjNjZcdWRjNjddfFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFtcdWRjNjZcdWRjNjddfFx1ZDgzZFx1ZGM2Zlx1MjAwZFx1MjY0MFx1ZmUwZnxcdWQ4M2RcdWRjNmZcdTIwMGRcdTI2NDJcdWZlMGZ8XHVkODNkXHVkZTJlXHUyMDBkXHVkODNkXHVkY2E4fFx1ZDgzZFx1ZGUzNVx1MjAwZFx1ZDgzZFx1ZGNhYnxcdWQ4M2VcdWRkM2NcdTIwMGRcdTI2NDBcdWZlMGZ8XHVkODNlXHVkZDNjXHUyMDBkXHUyNjQyXHVmZTBmfFx1ZDgzZVx1ZGRkZVx1MjAwZFx1MjY0MFx1ZmUwZnxcdWQ4M2VcdWRkZGVcdTIwMGRcdTI2NDJcdWZlMGZ8XHVkODNlXHVkZGRmXHUyMDBkXHUyNjQwXHVmZTBmfFx1ZDgzZVx1ZGRkZlx1MjAwZFx1MjY0Mlx1ZmUwZnxcdWQ4M2RcdWRjMDhcdTIwMGRcdTJiMWIpfFsjKjAtOV1cdWZlMGY/XHUyMGUzfCg/OltceGE5XHhhZVx1MjEyMlx1MjY1Zl1cdWZlMGYpfCg/Olx1ZDgzY1tcdWRjMDRcdWRkNzBcdWRkNzFcdWRkN2VcdWRkN2ZcdWRlMDJcdWRlMWFcdWRlMmZcdWRlMzdcdWRmMjFcdWRmMjQtXHVkZjJjXHVkZjM2XHVkZjdkXHVkZjk2XHVkZjk3XHVkZjk5LVx1ZGY5Ylx1ZGY5ZVx1ZGY5Zlx1ZGZjZFx1ZGZjZVx1ZGZkNC1cdWRmZGZcdWRmZjNcdWRmZjVcdWRmZjddfFx1ZDgzZFtcdWRjM2ZcdWRjNDFcdWRjZmRcdWRkNDlcdWRkNGFcdWRkNmZcdWRkNzBcdWRkNzNcdWRkNzYtXHVkZDc5XHVkZDg3XHVkZDhhLVx1ZGQ4ZFx1ZGRhNVx1ZGRhOFx1ZGRiMVx1ZGRiMlx1ZGRiY1x1ZGRjMi1cdWRkYzRcdWRkZDEtXHVkZGQzXHVkZGRjLVx1ZGRkZVx1ZGRlMVx1ZGRlM1x1ZGRlOFx1ZGRlZlx1ZGRmM1x1ZGRmYVx1ZGVjYlx1ZGVjZC1cdWRlY2ZcdWRlZTAtXHVkZWU1XHVkZWU5XHVkZWYwXHVkZWYzXXxbXHUyMDNjXHUyMDQ5XHUyMTM5XHUyMTk0LVx1MjE5OVx1MjFhOVx1MjFhYVx1MjMxYVx1MjMxYlx1MjMyOFx1MjNjZlx1MjNlZC1cdTIzZWZcdTIzZjFcdTIzZjJcdTIzZjgtXHUyM2ZhXHUyNGMyXHUyNWFhXHUyNWFiXHUyNWI2XHUyNWMwXHUyNWZiLVx1MjVmZVx1MjYwMC1cdTI2MDRcdTI2MGVcdTI2MTFcdTI2MTRcdTI2MTVcdTI2MThcdTI2MjBcdTI2MjJcdTI2MjNcdTI2MjZcdTI2MmFcdTI2MmVcdTI2MmZcdTI2MzgtXHUyNjNhXHUyNjQwXHUyNjQyXHUyNjQ4LVx1MjY1M1x1MjY2MFx1MjY2M1x1MjY2NVx1MjY2Nlx1MjY2OFx1MjY3Ylx1MjY3Zlx1MjY5Mi1cdTI2OTdcdTI2OTlcdTI2OWJcdTI2OWNcdTI2YTBcdTI2YTFcdTI2YTdcdTI2YWFcdTI2YWJcdTI2YjBcdTI2YjFcdTI2YmRcdTI2YmVcdTI2YzRcdTI2YzVcdTI2YzhcdTI2Y2ZcdTI2ZDFcdTI2ZDNcdTI2ZDRcdTI2ZTlcdTI2ZWFcdTI2ZjAtXHUyNmY1XHUyNmY4XHUyNmZhXHUyNmZkXHUyNzAyXHUyNzA4XHUyNzA5XHUyNzBmXHUyNzEyXHUyNzE0XHUyNzE2XHUyNzFkXHUyNzIxXHUyNzMzXHUyNzM0XHUyNzQ0XHUyNzQ3XHUyNzU3XHUyNzYzXHUyNzY0XHUyN2ExXHUyOTM0XHUyOTM1XHUyYjA1LVx1MmIwN1x1MmIxYlx1MmIxY1x1MmI1MFx1MmI1NVx1MzAzMFx1MzAzZFx1MzI5N1x1MzI5OV0pKD86XHVmZTBmfCg/IVx1ZmUwZSkpfCg/Oig/Olx1ZDgzY1tcdWRmY2JcdWRmY2NdfFx1ZDgzZFtcdWRkNzRcdWRkNzVcdWRkOTBdfFtcdTI2MWRcdTI2ZjdcdTI2ZjlcdTI3MGNcdTI3MGRdKSg/Olx1ZmUwZnwoPyFcdWZlMGUpKXwoPzpcdWQ4M2NbXHVkZjg1XHVkZmMyLVx1ZGZjNFx1ZGZjN1x1ZGZjYV18XHVkODNkW1x1ZGM0Mlx1ZGM0M1x1ZGM0Ni1cdWRjNTBcdWRjNjYtXHVkYzY5XHVkYzZlXHVkYzcwLVx1ZGM3OFx1ZGM3Y1x1ZGM4MS1cdWRjODNcdWRjODUtXHVkYzg3XHVkY2FhXHVkZDdhXHVkZDk1XHVkZDk2XHVkZTQ1LVx1ZGU0N1x1ZGU0Yi1cdWRlNGZcdWRlYTNcdWRlYjQtXHVkZWI2XHVkZWMwXHVkZWNjXXxcdWQ4M2VbXHVkZDBjXHVkZDBmXHVkZDE4LVx1ZGQxY1x1ZGQxZVx1ZGQxZlx1ZGQyNlx1ZGQzMC1cdWRkMzlcdWRkM2RcdWRkM2VcdWRkNzdcdWRkYjVcdWRkYjZcdWRkYjhcdWRkYjlcdWRkYmJcdWRkY2QtXHVkZGNmXHVkZGQxLVx1ZGRkZF18W1x1MjcwYVx1MjcwYl0pKSg/Olx1ZDgzY1tcdWRmZmItXHVkZmZmXSk/fCg/Olx1ZDgzY1x1ZGZmNFx1ZGI0MFx1ZGM2N1x1ZGI0MFx1ZGM2Mlx1ZGI0MFx1ZGM2NVx1ZGI0MFx1ZGM2ZVx1ZGI0MFx1ZGM2N1x1ZGI0MFx1ZGM3ZnxcdWQ4M2NcdWRmZjRcdWRiNDBcdWRjNjdcdWRiNDBcdWRjNjJcdWRiNDBcdWRjNzNcdWRiNDBcdWRjNjNcdWRiNDBcdWRjNzRcdWRiNDBcdWRjN2Z8XHVkODNjXHVkZmY0XHVkYjQwXHVkYzY3XHVkYjQwXHVkYzYyXHVkYjQwXHVkYzc3XHVkYjQwXHVkYzZjXHVkYjQwXHVkYzczXHVkYjQwXHVkYzdmfFx1ZDgzY1x1ZGRlNlx1ZDgzY1tcdWRkZTgtXHVkZGVjXHVkZGVlXHVkZGYxXHVkZGYyXHVkZGY0XHVkZGY2LVx1ZGRmYVx1ZGRmY1x1ZGRmZFx1ZGRmZl18XHVkODNjXHVkZGU3XHVkODNjW1x1ZGRlNlx1ZGRlN1x1ZGRlOS1cdWRkZWZcdWRkZjEtXHVkZGY0XHVkZGY2LVx1ZGRmOVx1ZGRmYlx1ZGRmY1x1ZGRmZVx1ZGRmZl18XHVkODNjXHVkZGU4XHVkODNjW1x1ZGRlNlx1ZGRlOFx1ZGRlOVx1ZGRlYi1cdWRkZWVcdWRkZjAtXHVkZGY1XHVkZGY3XHVkZGZhLVx1ZGRmZl18XHVkODNjXHVkZGU5XHVkODNjW1x1ZGRlYVx1ZGRlY1x1ZGRlZlx1ZGRmMFx1ZGRmMlx1ZGRmNFx1ZGRmZl18XHVkODNjXHVkZGVhXHVkODNjW1x1ZGRlNlx1ZGRlOFx1ZGRlYVx1ZGRlY1x1ZGRlZFx1ZGRmNy1cdWRkZmFdfFx1ZDgzY1x1ZGRlYlx1ZDgzY1tcdWRkZWUtXHVkZGYwXHVkZGYyXHVkZGY0XHVkZGY3XXxcdWQ4M2NcdWRkZWNcdWQ4M2NbXHVkZGU2XHVkZGU3XHVkZGU5LVx1ZGRlZVx1ZGRmMS1cdWRkZjNcdWRkZjUtXHVkZGZhXHVkZGZjXHVkZGZlXXxcdWQ4M2NcdWRkZWRcdWQ4M2NbXHVkZGYwXHVkZGYyXHVkZGYzXHVkZGY3XHVkZGY5XHVkZGZhXXxcdWQ4M2NcdWRkZWVcdWQ4M2NbXHVkZGU4LVx1ZGRlYVx1ZGRmMS1cdWRkZjRcdWRkZjYtXHVkZGY5XXxcdWQ4M2NcdWRkZWZcdWQ4M2NbXHVkZGVhXHVkZGYyXHVkZGY0XHVkZGY1XXxcdWQ4M2NcdWRkZjBcdWQ4M2NbXHVkZGVhXHVkZGVjLVx1ZGRlZVx1ZGRmMlx1ZGRmM1x1ZGRmNVx1ZGRmN1x1ZGRmY1x1ZGRmZVx1ZGRmZl18XHVkODNjXHVkZGYxXHVkODNjW1x1ZGRlNi1cdWRkZThcdWRkZWVcdWRkZjBcdWRkZjctXHVkZGZiXHVkZGZlXXxcdWQ4M2NcdWRkZjJcdWQ4M2NbXHVkZGU2XHVkZGU4LVx1ZGRlZFx1ZGRmMC1cdWRkZmZdfFx1ZDgzY1x1ZGRmM1x1ZDgzY1tcdWRkZTZcdWRkZThcdWRkZWEtXHVkZGVjXHVkZGVlXHVkZGYxXHVkZGY0XHVkZGY1XHVkZGY3XHVkZGZhXHVkZGZmXXxcdWQ4M2NcdWRkZjRcdWQ4M2NcdWRkZjJ8XHVkODNjXHVkZGY1XHVkODNjW1x1ZGRlNlx1ZGRlYS1cdWRkZWRcdWRkZjAtXHVkZGYzXHVkZGY3LVx1ZGRmOVx1ZGRmY1x1ZGRmZV18XHVkODNjXHVkZGY2XHVkODNjXHVkZGU2fFx1ZDgzY1x1ZGRmN1x1ZDgzY1tcdWRkZWFcdWRkZjRcdWRkZjhcdWRkZmFcdWRkZmNdfFx1ZDgzY1x1ZGRmOFx1ZDgzY1tcdWRkZTYtXHVkZGVhXHVkZGVjLVx1ZGRmNFx1ZGRmNy1cdWRkZjlcdWRkZmJcdWRkZmQtXHVkZGZmXXxcdWQ4M2NcdWRkZjlcdWQ4M2NbXHVkZGU2XHVkZGU4XHVkZGU5XHVkZGViLVx1ZGRlZFx1ZGRlZi1cdWRkZjRcdWRkZjdcdWRkZjlcdWRkZmJcdWRkZmNcdWRkZmZdfFx1ZDgzY1x1ZGRmYVx1ZDgzY1tcdWRkZTZcdWRkZWNcdWRkZjJcdWRkZjNcdWRkZjhcdWRkZmVcdWRkZmZdfFx1ZDgzY1x1ZGRmYlx1ZDgzY1tcdWRkZTZcdWRkZThcdWRkZWFcdWRkZWNcdWRkZWVcdWRkZjNcdWRkZmFdfFx1ZDgzY1x1ZGRmY1x1ZDgzY1tcdWRkZWJcdWRkZjhdfFx1ZDgzY1x1ZGRmZFx1ZDgzY1x1ZGRmMHxcdWQ4M2NcdWRkZmVcdWQ4M2NbXHVkZGVhXHVkZGY5XXxcdWQ4M2NcdWRkZmZcdWQ4M2NbXHVkZGU2XHVkZGYyXHVkZGZjXXxcdWQ4M2NbXHVkY2NmXHVkZDhlXHVkZDkxLVx1ZGQ5YVx1ZGRlNi1cdWRkZmZcdWRlMDFcdWRlMzItXHVkZTM2XHVkZTM4LVx1ZGUzYVx1ZGU1MFx1ZGU1MVx1ZGYwMC1cdWRmMjBcdWRmMmQtXHVkZjM1XHVkZjM3LVx1ZGY3Y1x1ZGY3ZS1cdWRmODRcdWRmODYtXHVkZjkzXHVkZmEwLVx1ZGZjMVx1ZGZjNVx1ZGZjNlx1ZGZjOFx1ZGZjOVx1ZGZjZi1cdWRmZDNcdWRmZTAtXHVkZmYwXHVkZmY0XHVkZmY4LVx1ZGZmZl18XHVkODNkW1x1ZGMwMC1cdWRjM2VcdWRjNDBcdWRjNDRcdWRjNDVcdWRjNTEtXHVkYzY1XHVkYzZhXHVkYzZmXHVkYzc5LVx1ZGM3Ylx1ZGM3ZC1cdWRjODBcdWRjODRcdWRjODgtXHVkYzhlXHVkYzkwXHVkYzkyLVx1ZGNhOVx1ZGNhYi1cdWRjZmNcdWRjZmYtXHVkZDNkXHVkZDRiLVx1ZGQ0ZVx1ZGQ1MC1cdWRkNjdcdWRkYTRcdWRkZmItXHVkZTQ0XHVkZTQ4LVx1ZGU0YVx1ZGU4MC1cdWRlYTJcdWRlYTQtXHVkZWIzXHVkZWI3LVx1ZGViZlx1ZGVjMS1cdWRlYzVcdWRlZDAtXHVkZWQyXHVkZWQ1LVx1ZGVkN1x1ZGVlYlx1ZGVlY1x1ZGVmNC1cdWRlZmNcdWRmZTAtXHVkZmViXXxcdWQ4M2VbXHVkZDBkXHVkZDBlXHVkZDEwLVx1ZGQxN1x1ZGQxZFx1ZGQyMC1cdWRkMjVcdWRkMjctXHVkZDJmXHVkZDNhXHVkZDNjXHVkZDNmLVx1ZGQ0NVx1ZGQ0Ny1cdWRkNzZcdWRkNzhcdWRkN2EtXHVkZGI0XHVkZGI3XHVkZGJhXHVkZGJjLVx1ZGRjYlx1ZGRkMFx1ZGRkZS1cdWRkZmZcdWRlNzAtXHVkZTc0XHVkZTc4LVx1ZGU3YVx1ZGU4MC1cdWRlODZcdWRlOTAtXHVkZWE4XHVkZWIwLVx1ZGViNlx1ZGVjMC1cdWRlYzJcdWRlZDAtXHVkZWQ2XXxbXHUyM2U5LVx1MjNlY1x1MjNmMFx1MjNmM1x1MjY3ZVx1MjZjZVx1MjcwNVx1MjcyOFx1Mjc0Y1x1Mjc0ZVx1Mjc1My1cdTI3NTVcdTI3OTUtXHUyNzk3XHUyN2IwXHUyN2JmXHVlNTBhXSl8XHVmZTBmL2csaT0vXHVGRTBGL2csYT1TdHJpbmcuZnJvbUNoYXJDb2RlKDgyMDUpLG89L1smPD4nIl0vZyxyPS9eKD86aWZyYW1lfG5vZnJhbWVzfG5vc2NyaXB0fHNjcmlwdHxzZWxlY3R8c3R5bGV8dGV4dGFyZWEpJC8scz1TdHJpbmcuZnJvbUNoYXJDb2RlO3JldHVybiBlO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodD9lLnJlcGxhY2UoaSwiIik6ZSl9ZnVuY3Rpb24gZChlKXtyZXR1cm4gZS5yZXBsYWNlKG8saCl9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiIiLmNvbmNhdCh0LmJhc2UsdC5zaXplLCIvIixlLHQuZXh0KX1mdW5jdGlvbiB1KGUsdCl7Zm9yKHZhciBuLGksYT1lLmNoaWxkTm9kZXMsbz1hLmxlbmd0aDtvLS07KTM9PT0oaT0obj1hW29dKS5ub2RlVHlwZSk/dC5wdXNoKG4pOjEhPT1pfHwib3duZXJTVkdFbGVtZW50ImluIG58fHIudGVzdChuLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpfHx1KG4sdCk7cmV0dXJuIHR9ZnVuY3Rpb24gcChlKXtyZXR1cm4gdihlLmluZGV4T2YoYSk8MD9lLnJlcGxhY2UoaSwiIik6ZSl9ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgaSxhLG8scixzLGQsYyxmLG0saCxnLGIsdix4PXUoZSxbXSkseT14Lmxlbmd0aDt5LS07KXtmb3Iobz0hMSxyPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxkPShzPXhbeV0pLm5vZGVWYWx1ZSxmPTA7Yz1uLmV4ZWMoZCk7KXtpZigobT1jLmluZGV4KSE9PWYmJnIuYXBwZW5kQ2hpbGQobChkLnNsaWNlKGYsbSksITApKSxiPXAoZz1jWzBdKSxmPW0rZy5sZW5ndGgsdj10LmNhbGxiYWNrKGIsdCksYiYmdil7Zm9yKGEgaW4oaD1uZXcgSW1hZ2UpLm9uZXJyb3I9dC5vbmVycm9yLGguc2V0QXR0cmlidXRlKCJkcmFnZ2FibGUiLCJmYWxzZSIpLGk9dC5hdHRyaWJ1dGVzKGcsYikpaS5oYXNPd25Qcm9wZXJ0eShhKSYmMCE9PWEuaW5kZXhPZigib24iKSYmIWguaGFzQXR0cmlidXRlKGEpJiZoLnNldEF0dHJpYnV0ZShhLGlbYV0pO2guY2xhc3NOYW1lPXQuY2xhc3NOYW1lLGguYWx0PWcsaC5zcmM9dixvPSEwLHIuYXBwZW5kQ2hpbGQoaCl9aHx8ci5hcHBlbmRDaGlsZChsKGcsITEpKSxoPW51bGx9byYmKGY8ZC5sZW5ndGgmJnIuYXBwZW5kQ2hpbGQobChkLnNsaWNlKGYpLCEwKSkscy5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChyLHMpKX1yZXR1cm4gZX1mdW5jdGlvbiBtKGUsdCl7cmV0dXJuIGIoZSxmdW5jdGlvbihlKXt2YXIgbixpLGE9ZSxvPXAoZSkscj10LmNhbGxiYWNrKG8sdCk7aWYobyYmcil7Zm9yKGkgaW4gYT0iPGltZyAiLmNvbmNhdCgnY2xhc3M9IicsdC5jbGFzc05hbWUsJyIgJywnZHJhZ2dhYmxlPSJmYWxzZSIgJywnYWx0PSInLGUsJyInLCcgc3JjPSInLHIsJyInKSxuPXQuYXR0cmlidXRlcyhlLG8pKW4uaGFzT3duUHJvcGVydHkoaSkmJjAhPT1pLmluZGV4T2YoIm9uIikmJi0xPT09YS5pbmRleE9mKCIgIitpKyI9IikmJihhPWEuY29uY2F0KCIgIixpLCc9IicsZChuW2ldKSwnIicpKTthPWEuY29uY2F0KCIvPiIpfXJldHVybiBhfSl9ZnVuY3Rpb24gaChlKXtyZXR1cm4gdFtlXX1mdW5jdGlvbiBnKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gYihlLHQpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZShuLHQpfWZ1bmN0aW9uIHYoZSx0KXtmb3IodmFyIG49W10saT0wLGE9MCxvPTA7bzxlLmxlbmd0aDspaT1lLmNoYXJDb2RlQXQobysrKSxhPyhuLnB1c2goKDY1NTM2KyhhLTU1Mjk2PDwxMCkrKGktNTYzMjApKS50b1N0cmluZygxNikpLGE9MCk6NTUyOTY8PWkmJmk8PTU2MzE5P2E9aTpuLnB1c2goaS50b1N0cmluZygxNikpO3JldHVybiBuLmpvaW4odHx8Ii0iKX19KCksQW49a247Y29uc3QgQ249e0FMTE9XRURfVEFHUzpbImltZyJdLEFMTE9XRURfQVRUUjpbImNsYXNzIiwic3JjIiwiYWx0Il19LEVuPXtBTExPV0VEX1RBR1M6WyJpbWciLCJhIiwic3Ryb25nIiwiYnIiLCJvbCIsInVsIiwibGkiXSxBTExPV0VEX0FUVFI6WyJjbGFzcyIsImhyZWYiLCJ0YXJnZXQiLCJzcmMiLCJhbHQiLCJyZWwiXX0sU249e0FMTE9XRURfVEFHUzpbImltZyIsImEiXSxBTExPV0VEX0FUVFI6WyJjbGFzcyIsImhyZWYiLCJ0YXJnZXQiLCJzcmMiLCJhbHQiXX0sRG49ZT0+ZS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKSxZbj17YmFzZToiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvdHdlbW9qaS8xMi4xLjEvIn0sVG49ZT0+e2xldCB0PWUucmVwbGFjZSgvKCg/OmhyZWZ8c3JjKT1bJyJdKT8oXGIoaHR0cHM/fGZ0cCk6XC9cL1stQS1aMC05KyZAIy8lPz1+X3whOiwuOygpJCdbXF0qXSpbLUEtWjAtOSsmQCMvJT1+X3xdKS9naW0sKGUsdCk9PnZvaWQgMCE9PXQ/ZTpgPGEgaHJlZj0iJHtlfSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+JHtlfTwvYT5gKTtyZXR1cm4gdD10LnJlcGxhY2UoLyhefFxzfHN0cm9uZz58bGk+KSgoW2EtekEtWjAtOS1fLitdKStAW2EtekEtWjAtOV9dKz8oXC5bYS16QS1aXXsyLH0pKykvZ2ltLCckMTxhIGhyZWY9Im1haWx0bzokMiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+JDI8L2E+JyksdD10LnJlcGxhY2UoLyhefFxzfHN0cm9uZz58bGk+KSh3d3dcLlstXHcuLEA/Xj0lJjovXSsoXGJ8JCkpL2dpbSwnJDE8YSBocmVmPSJodHRwOi8vJDIiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPiQyPC9hPicpLHR9LEZuPWU9PntpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIiI7bGV0IHQ9RG4oZSk7cmV0dXJuIHQ9VG4odCksdD1Bbi5wYXJzZSh0LFluKSx0PShlPT53bi5zYW5pdGl6ZShlLFNuKSkodCksdH0sSW49ZT0+e2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4iIjtsZXQgdD1EbihlKTt0PXQucmVwbGFjZSgvXHQvZywiIik7dD10LnJlcGxhY2UoLyFcWyhbXlxdXSopXF1cKChbXildKylcKS9nLCc8aW1nIHNyYz0iJDIiIGFsdD0iJDEiIGNsYXNzPSJtYXJrZG93bi1pbWFnZSIgLz4nKTtyZXR1cm4gdD10LnJlcGxhY2UoL1xbKFteXF1dKilcXVwoKFteKV0rKVwpL2csJzxhIGhyZWY9IiQyIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj4kMTwvYT4nKSx0PXQucmVwbGFjZSgvXCpcKiguKj8pXCpcKi9nLCI8c3Ryb25nPiQxPC9zdHJvbmc+IiksdD1Bbi5wYXJzZSh0LFluKSx0PVRuKHQpLHQ9d24uc2FuaXRpemUodCxFbiksdH0sX249ZT0+e2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4iIjtsZXQgdD1EbihlKTtyZXR1cm4gdD1Bbi5wYXJzZSh0LFluKSx0PXduLnNhbml0aXplKHQsQ24pLHR9LE1uPWU9Pntjb25zdCB0PWUudmFsdWVzLnJlZHVjZSgoZSx0KT0+KHsuLi5lLFt0XTooMCx5LnB3KSh0KX0pLHt9KTtyZXR1cm4gZS5yZW5kZXIodCl9O01uLnByb3BUeXBlcz17dmFsdWVzOkcoKS5hcnJheU9mKEcoKS5zdHJpbmcpLmlzUmVxdWlyZWQscmVuZGVyOkcoKS5mdW5jLmlzUmVxdWlyZWR9O2NvbnN0IE5uPWU9Pntjb25zdHt2YWx1ZTp0LGNoaWxkcmVuOm4scmVwbGFjZW1lbnRzOmksZmFsbGJhY2s6byxsaW5raWZ5OnIsZW1vamlmeTpzLG1hcmtkb3duaWZ5Omx9PWUsWyxkXT0oMCxhLnVzZVN0YXRlKSgwKSxjPSgpPT57ZChlPT4hZSl9O3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+KHkuRFIub24oInRyYW5zbGF0aW9uc0NoYW5nZWQiLGMpLCgpPT57eS5EUi5vZmYoInRyYW5zbGF0aW9uc0NoYW5nZWQiLGMpfSksW10pLG4/KDAsVi5ZKShNbix7dmFsdWVzOnQscmVuZGVyOm59KTppPygwLFYuWSkoVi5GSyx7Y2hpbGRyZW46KDAseS5wdykodCxpLG8pfSk6bD8oMCxWLlkpKCJzcGFuIix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpJbigoMCx5LnB3KSh0LG51bGwsbykpfX0pOnJ8fHM/KDAsVi5ZKSgic3BhbiIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6Rm4oKDAseS5wdykodCxudWxsLG8pKX19KTooMCxWLlkpKFYuRksse2NoaWxkcmVuOigwLHkucHcpKHQsbnVsbCxvKX0pfTtObi5kZWZhdWx0UHJvcHM9e2ZhbGxiYWNrOm51bGwscmVwbGFjZW1lbnRzOm51bGwsZW1vamlmeTohMSxsaW5raWZ5OiExLG1hcmtkb3duaWZ5OiExLGNoaWxkcmVuOnZvaWQgMH07dmFyIE9uPU5uO2NvbnN0IFJuPWh0KCEwKSxqbj0oMCxkLkFIKSh7aW5wdXQ6Um4udGV4dDE0LHRleHRhcmVhOlJuLnRleHQxNCxzdmc6e3RvcDo2fX0sIiIsIiIpO2Z1bmN0aW9uIFBuKGUsdCxuKXtyZXR1cm4gbj9uKGUpOiJlbWFpbCI9PT10PygwLGYuQjkpKGUpOiJ0ZWwiPT09dD8oMCxmLmxLKShlKToiIiE9PWUudHJpbSgpfWNsYXNzIHpuIGV4dGVuZHMgYS5Db21wb25lbnR7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksKDAsaS5BKSh0aGlzLCJvbkNoYW5nZSIsZT0+e2NvbnN0e3ZhbHVlOnQsY2hlY2tlZDpuLHR5cGU6aX09ZS50YXJnZXQsYT0iY2hlY2tib3giIT09aT90Om4sbz1QbihhLHRoaXMucHJvcHMudHlwZSx0aGlzLnByb3BzLnZhbGlkYXRvcik7dGhpcy5zZXRTdGF0ZSh7dmFsdWU6YSxpc1ZhbGlkOm99KSx0aGlzLnByb3BzLm9uQ2hhbmdlJiZ0aGlzLnByb3BzLm9uQ2hhbmdlKGEsbyksdGhpcy5wcm9wcy5pc1ZhbGlkQ2FsbGJhY2smJnRoaXMucHJvcHMuaXNWYWxpZENhbGxiYWNrKG8pfSksKDAsaS5BKSh0aGlzLCJvbkNvbXBvc2l0aW9uU3RhcnQiLCgpPT57dGhpcy5pc0NvbXBvc2luZz0hMH0pLCgwLGkuQSkodGhpcywib25Db21wb3NpdGlvbkVuZCIsKCk9PntzZXRUaW1lb3V0KCgpPT57dGhpcy5pc0NvbXBvc2luZz0hMX0sMCl9KSwoMCxpLkEpKHRoaXMsIm9uS2V5RG93biIsZT0+e2NvbnN0e2tleUNvZGU6dCxrZXk6bn09ZSxpPSJFbnRlciI9PT1ufHwxMz09PXQ7cmV0dXJuIWUubmF0aXZlRXZlbnQuaXNDb21wb3NpbmcmJiF0aGlzLmlzQ29tcG9zaW5nJiYyMjkhPT10JiYoaSYmIXRoaXMuc3RhdGUuaXNWYWxpZCYmKHRoaXMuc2V0U3RhdGUoe3Nob3dFcnJvckljb246ITB9KSx0aGlzLnByb3BzLm9uS2V5RG93biYmdGhpcy5wcm9wcy5vbktleURvd24oITEpLGNsZWFyVGltZW91dCh0aGlzLmVycm9ySWNvbkhpZGVUaW1lciksdGhpcy5lcnJvckljb25IaWRlVGltZXI9bnVsbCx0aGlzLmVycm9ySWNvbkhpZGVUaW1lcj1zZXRUaW1lb3V0KCgpPT57dGhpcy5zZXRTdGF0ZSh7c2hvd0Vycm9ySWNvbjohMX0pfSw4MjApKSwhKCFpfHwhdGhpcy5zdGF0ZS5pc1ZhbGlkKSYmKGUucHJldmVudERlZmF1bHQoKSx0aGlzLnByb3BzLm9uS2V5RG93biYmdGhpcy5wcm9wcy5vbktleURvd24odCksITApKX0pLCgwLGkuQSkodGhpcywib25Gb2N1cyIsKCk9Pnt0aGlzLnByb3BzLm9uRm9jdXMmJnRoaXMucHJvcHMub25Gb2N1cygpLHRoaXMucHJvcHMuc2hvdWxkVG9nZ2xlSGVhZGVyJiYhdGhpcy5wcm9wcy5kaXNhYmxlZCYmdGhpcy5pc01vYmlsZSYmdGhpcy5wcm9wcy5kaXNwYXRjaCgoMCxrLkUzUykoITApKX0pLCgwLGkuQSkodGhpcywib25CbHVyIiwoKT0+e3RoaXMucHJvcHMub25CbHVyJiZ0aGlzLnByb3BzLm9uQmx1cigpLHRoaXMucHJvcHMuc2hvdWxkVG9nZ2xlSGVhZGVyJiYhdGhpcy5wcm9wcy5kaXNhYmxlZCYmdGhpcy5pc01vYmlsZSYmc2V0VGltZW91dCgoKT0+e3RoaXMucHJvcHMuZGlzcGF0Y2goKDAsay5FM1MpKCExKSl9LDEwMCl9KSwoMCxpLkEpKHRoaXMsImdldEVycm9yIiwoKT0+dm9pZCAwPT09dGhpcy5wcm9wcy5mb3JjZUVycm9ySWNvbj90aGlzLnN0YXRlLnNob3dFcnJvckljb246dGhpcy5wcm9wcy5mb3JjZUVycm9ySWNvbik7Y29uc3QgdD1udWxsPT09ZS52YWx1ZT8iIjplLnZhbHVlO3RoaXMuc3RhdGU9e3ZhbHVlOnQsaXNWYWxpZDpQbih0LGUudHlwZSxlLnZhbGlkYXRvciksc2hvd0Vycm9ySWNvbjohMX0sdGhpcy5pc01vYmlsZT10aGlzLnByb3BzLmlzTW9iaWxlLHRoaXMuZXJyb3JJY29uSGlkZVRpbWVyPW51bGwsdGhpcy5pc0NvbXBvc2luZz0hMX1jb21wb25lbnREaWRNb3VudCgpe2NvbnN0e2lzVmFsaWQ6ZX09dGhpcy5zdGF0ZTt0aGlzLnN0YXRlLmlzVmFsaWQmJih0aGlzLnByb3BzLm9uQ2hhbmdlJiZ0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMuc3RhdGUudmFsdWUsZSksdGhpcy5wcm9wcy5pc1ZhbGlkQ2FsbGJhY2smJnRoaXMucHJvcHMuaXNWYWxpZENhbGxiYWNrKGUpKX1yZW5kZXIoKXtsZXQgZT1udWxsO3JldHVybiBlPSJjaGVja2JveCIhPT10aGlzLnByb3BzLnR5cGU/KDAsVi5ZKShPbix7dmFsdWU6W3RoaXMucHJvcHMucGxhY2Vob2xkZXJdLGNoaWxkcmVuOmU9PiJ0ZXh0YXJlYSI9PT10aGlzLnByb3BzLnR5cGU/KDAsVi5ZKSgidGV4dGFyZWEiLHtwbGFjZWhvbGRlcjplW3RoaXMucHJvcHMucGxhY2Vob2xkZXJdLG9uQ2hhbmdlOnRoaXMub25DaGFuZ2Usb25LZXlEb3duOnRoaXMub25LZXlEb3duLG9uQ29tcG9zaXRpb25TdGFydDp0aGlzLm9uQ29tcG9zaXRpb25TdGFydCxvbkNvbXBvc2l0aW9uRW5kOnRoaXMub25Db21wb3NpdGlvbkVuZCx2YWx1ZTp0aGlzLnN0YXRlLnZhbHVlLHJlYWRPbmx5OnRoaXMucHJvcHMuZGlzYWJsZWQsY2xhc3NOYW1lOnRoaXMucHJvcHMuZGlzYWJsZWQ/ImRpc2FibGVkIjoiIixyZWY6dGhpcy5wcm9wcy5iaW5kSW5wdXRSZWYsb25Gb2N1czp0aGlzLm9uRm9jdXMsb25CbHVyOnRoaXMub25CbHVyfSk6KDAsVi5ZKSgiaW5wdXQiLHt0eXBlOnRoaXMucHJvcHMudHlwZSxwbGFjZWhvbGRlcjplW3RoaXMucHJvcHMucGxhY2Vob2xkZXJdLG9uQ2hhbmdlOnRoaXMub25DaGFuZ2Usb25LZXlEb3duOnRoaXMub25LZXlEb3duLG9uQ29tcG9zaXRpb25TdGFydDp0aGlzLm9uQ29tcG9zaXRpb25TdGFydCxvbkNvbXBvc2l0aW9uRW5kOnRoaXMub25Db21wb3NpdGlvbkVuZCx2YWx1ZTp0aGlzLnN0YXRlLnZhbHVlLHJlYWRPbmx5OnRoaXMucHJvcHMuZGlzYWJsZWQsY2xhc3NOYW1lOnRoaXMucHJvcHMuZGlzYWJsZWQ/ImRpc2FibGVkIjoiIixyZWY6dGhpcy5wcm9wcy5iaW5kSW5wdXRSZWYsb25Gb2N1czp0aGlzLm9uRm9jdXMsb25CbHVyOnRoaXMub25CbHVyfSl9KTooMCxWLkZEKSgibGFiZWwiLHtodG1sRm9yOnRoaXMucHJvcHMuaWQsY2hpbGRyZW46WygwLFYuWSkoImlucHV0Iix7aWQ6dGhpcy5wcm9wcy5pZCx0eXBlOnRoaXMucHJvcHMudHlwZSxvbkNoYW5nZTp0aGlzLm9uQ2hhbmdlLGNoZWNrZWQ6dGhpcy5zdGF0ZS52YWx1ZSxkaXNhYmxlZDp0aGlzLnByb3BzLmRpc2FibGVkLGNsYXNzTmFtZTp0aGlzLnByb3BzLmRpc2FibGVkPyJkaXNhYmxlZCI6IiIscmVmOnRoaXMucHJvcHMuYmluZElucHV0UmVmfSksKDAsVi5ZKShPbix7dmFsdWU6dGhpcy5wcm9wcy5wbGFjZWhvbGRlcixsaW5raWZ5OiEwfSldfSksKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOmBmaWVsZC13cmFwcGVyICR7dGhpcy5wcm9wcy5zaGFrZUNsYXNzTmFtZX0gJHt0aGlzLmdldEVycm9yKCk/ImZpZWxkLXdyYXBwZXItd2l0aC1lcnJvciI6IiJ9YCxjc3M6dGhpcy5wcm9wcy5pc05ld1NraW4/am46dm9pZCAwLGNoaWxkcmVuOmV9KX19em4uZGVmYXVsdFByb3BzPXtwbGFjZWhvbGRlcjoiIixiaW5kSW5wdXRSZWY6dm9pZCAwLG9uQ2hhbmdlOnZvaWQgMCxvbktleURvd246bnVsbCxkaXNhYmxlZDohMSxpc1ZhbGlkQ2FsbGJhY2s6bnVsbCx2YWx1ZTpudWxsLGZvcmNlRXJyb3JJY29uOiExLGlkOnZvaWQgMCx2YWxpZGF0b3I6dm9pZCAwLHNob3VsZFRvZ2dsZUhlYWRlcjohMCxvbkZvY3VzOnZvaWQgMCxvbkJsdXI6dm9pZCAwLHNoYWtlQ2xhc3NOYW1lOiIiLGlzTmV3U2tpbjohMSxpc01vYmlsZTohMX07dmFyIExuPWU9Pntjb25zdCB0PSgwLHIud0EpKCksbj0oMCxyLmQ0KShDLk55KSx7aXNOZXdTa2luOml9PSgwLHAuQSkoKTtyZXR1cm4oMCxWLlkpKHpuLHsuLi5lLGRpc3BhdGNoOnQsaXNOZXdTa2luOmksaXNNb2JpbGU6bn0pfTtjb25zdCBVbj17bmFtZToiMWVqNWpvdiIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzozMnB4IDIwcHg7Lm1vYmlsZSAme3BhZGRpbmc6MjBweCAxNnB4O30ucHJlLWNoYXQsLmFsd2F5cy1vbmxpbmV7bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJTt9Zm9ybXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3Jvdy1nYXA6MjBweDttYXgtaGVpZ2h0OjQ2NXB4O30udXNlci1kYXRhLW1vZGFsLWZpZWxkc3ttYXJnaW4taW5saW5lOi0yMHB4O3BhZGRpbmctaW5saW5lOjIwcHg7ZmxleC1zaHJpbms6MTtvdmVyZmxvdy15OmF1dG87Lm1vYmlsZSAme21hcmdpbi1pbmxpbmU6LTE2cHg7cGFkZGluZy1pbmxpbmU6MTZweDt9Jj4qKyp7bWFyZ2luLXRvcDoxMnB4O30jaWNfYXJyb3d7ZmlsbDp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTt9c3Zne3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7fWlucHV0LHRleHRhcmVhe2JvcmRlcjpzb2xpZCAxcHggcmdiYSgxMDgsIDEyNSwgMTU5LCAwLjI0KTtmb250LXNpemU6MTVweDtwYWRkaW5nOjEycHggMTZweDtsaW5lLWhlaWdodDpub3JtYWw7bWFyZ2luOjA7Jlt0eXBlPSdjaGVja2JveCdde2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmc6OHB4O319bGFiZWx7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDtwYWRkaW5nOjAgMCAwIDJweDttYXJnaW46MDtpbnB1dHttaW4td2lkdGg6MTZweDttaW4taGVpZ2h0OjE4cHg7fSYuc21hbGwtdGV4dHtwYWRkaW5nLXRvcDowO3NwYW57Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MTZweDt9fXNwYW57Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MThweDt0ZXh0LWFsaWduOmp1c3RpZnk7Y29sb3I6IzAwMTIyZTtkaXNwbGF5OmJsb2NrO2F7Y29sb3I6IzAwMTIyZTt9fX19LmVtb2ppe21hcmdpbjowO30ifSxCbj17bmFtZToieDl0cTYwIixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjIwcHg7dG9wOjIwcHg7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ei1pbmRleDoyO3N2Z3tmaWxsOiM2ZDdlOWU7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDt9In0sSG49e25hbWU6IjVkN3o2aiIsc3R5bGVzOiJmb250LXNpemU6MjBweDtmb250LXdlaWdodDo2MDA7dGV4dC1hbGlnbjpsZWZ0O2NvbG9yOiMwMDEyMmUifTtjb25zdCBxbj17bmFtZToiemd6c2l0IixzdHlsZXM6ImZsZXgtc2hyaW5rOjA7d2lkdGg6MTAwJTtoZWlnaHQ6NDBweDtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo2MDA7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCA2cHgpO2JhY2tncm91bmQ6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcik7Y29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1jb250cmFzdCk7cG9zaXRpb246cmVsYXRpdmU7Jjo6YWZ0ZXJ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuMnM7Y29udGVudDonJztib3JkZXItcmFkaXVzOjZweDtiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMCk7bGVmdDowO3RvcDowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7fSY6aG92ZXJ7Jjo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDAuMDgpO319In07dmFyIFZuPSgpPT4oMCxWLlkpKCJidXR0b24iLHtjc3M6cW4sdHlwZToic3VibWl0IixjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToib2ZmbGluZVNlbmRCdXR0b24ifSl9KTtuKDc0NTApO2NvbnN0ICRuPShlLHQsbik9Pntjb25zdCBpPXQ/e3dpZHRoOnQsaGVpZ2h0OnR9Ont9O3JldHVybiBlJiYoaS5iYWNrZ3JvdW5kSW1hZ2U9YHVybCgkeygwLGYudnMpKGUpfSlgLG4mJihpLmJvcmRlclJhZGl1cz0iNHB4IixpLmJhY2tncm91bmRDb2xvcj0idmFyKC0tY3VzdG9tLWJhY2tncm91bmQpIikpLGl9LFduPWU9PntsZXR7YXZhdGFyU3JjOnQsY2xhc3NOYW1lOm4sc2l6ZTppLHdpdGhCYWNrZ3JvdW5kQ29sb3I6YX09ZTtyZXR1cm4oMCxWLlkpKCJkaXYiLHsiZGF0YS10ZXN0aWQiOiJvcGVyYXRvciIsY2xhc3NOYW1lOm58fHZvaWQgMCxzdHlsZTokbih0LGksYSl9KX07dmFyIEtuPWEubWVtbyhXbiksR249ImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3Q0VBQU1EQXdNREF3UUVCQVFGQlFVRkJRY0hCZ1lIQndzSUNRZ0pDQXNSQ3d3TEN3d0xFUThTRHc0UEVnOGJGUk1URlJzZkdoa2FIeVlpSWlZd0xUQStQbFFCQXdNREF3TURCQVFFQkFVRkJRVUZCd2NHQmdjSEN3Z0pDQWtJQ3hFTERBc0xEQXNSRHhJUERnOFNEeHNWRXhNVkd4OGFHUm9mSmlJaUpqQXRNRDQrVlAvQ0FCRUlBRHdBUEFNQklnQUNFUUVERVFIL3hBQWNBQUVBQVFVQkFRQUFBQUFBQUFBQUFBQUFCZ0VEQkFVSEFnbi8yZ0FJQVFFQUFBQUErbFlBajhjeTVuZEhPOFZOTjBJRnJrNjJnakVZdWRIOWlMUVBONmxlYyswVm10RzAzOEw5VXBXaC84UUFGQUVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9hQUFnQkFoQUFBQUFBQVAvRUFCUUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBRC8yZ0FJQVFNUUFBQUFBQUQveEFBdUVBQUJBd01BQ0FVRUF3QUFBQUFBQUFBQkFnTUVBQVVSQmhBU0V5QWhRVkVpTW1LUndTTnhjb0V4UXFILzJnQUlBUUVBQVQ4QTE0UEhkYnV1TXZjTVkyd1BHczg4WjZDbFQ1cXpsVWgwbjhxalhtYXdvRmF5OGpxbGZ3YVplYmtOSWRiT1VyR1J3Q3B4Sm15U2Y1M3F0ZGdKTnUrenErRzdON3U0eVBVb0s5eHJzeUMzYldmVVZMOXp3NlF4aVMxSUE1WTJGL0dwcGxiN3FHa2VaYXNDa05wYWJRaFBsUWtKSDY0Q01ESjVEdldraytHdTN1Um0zd3A1YWs0MkRrcDJUbkpOQzRTMmhoeVB2VDBXZzR6OXhWcW11TjNTTkpsL1RhYlVjSVR6eGtZMmozcGlSSGtqTExyYmc5S3MxZ2pWTDBubnZMVnVBbGxIVGxsZjdKcCtWS2tuTHo3am41SytLQUFHTlk4Snlra0h1RGcweGU3ckc1SmtxVUIvVlkyeC90UjlMa0J2RW1Nc3VkMi9LZmV1bXJ0WFN1OWRLRlpOZi8vRUFCUVJBUUFBQUFBQUFBQUFBQUFBQUFBQUFFRC8yZ0FJQVFJQkFUOEFCLy9FQUJRUkFRQUFBQUFBQUFBQUFBQUFBQUFBQUVELzJnQUlBUU1CQVQ4QUIvL1oiO2NvbnN0IFhuPXtuYW1lOiJ5cDlvYWYiLHN0eWxlczoidGV4dC1hbGlnbjpsZWZ0O3doaXRlLXNwYWNlOm5vd3JhcDttYXJnaW4tYm90dG9tOjIwcHgifSxRbj0oMCxkLkFIKSgid2lkdGg6NDhweDtoZWlnaHQ6NDhweDtib3JkZXItcmFkaXVzOjI0cHg7YmFja2dyb3VuZC1zaXplOmNvdmVyO2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQtaW1hZ2U6dXJsKCIsR24sIik7Ym9yZGVyOnNvbGlkIDFweCAjZmZmOyY6bm90KDpmaXJzdC1jaGlsZCl7bWFyZ2luLWxlZnQ6LTEycHg7fSIsIiIpO3ZhciBabj0oKT0+e2NvbnN0e2lzTmV3U2tpbjplfT0oMCxwLkEpKCksdD0oMCxyLmQ0KShDLkxkKSxuPSgwLHIuZDQpKEMubW0pO2lmKHQpcmV0dXJuKDAsVi5ZKSgiZGl2Iix7Y3NzOlhuLGNoaWxkcmVuOigwLFYuWSkoS24se2F2YXRhclNyYzp0LGNzczpRbix3aXRoQmFja2dyb3VuZENvbG9yOmV9LDEpfSk7Y29uc3QgaT1uLmZpbmQoZT0+ZS5pc09ubGluZSk/bi5maWx0ZXIoZT0+ZS5pc09ubGluZSk6bjtyZXR1cm4oMCxWLlkpKCJkaXYiLHtjc3M6WG4sY2hpbGRyZW46aS5zbGljZSgwLDQpLm1hcChlPT4oMCxWLlkpKEtuLHthdmF0YXJTcmM6ZS5hdmF0YXJTcmMsY3NzOlFufSxlLmlkKSl9KX07Y29uc3QgSm49KDAsZi5ERCkoKTt2YXIgZWk9KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShDLk55KSxbbixpXT1hLnVzZVN0YXRlKCIiKSxbbyxzXT1hLnVzZVN0YXRlKCExKSxbbCxkXT1hLnVzZVN0YXRlKCExKSx7dHJpZ2dlclNoYWtlOmMsc2hha2VDbGFzc05hbWU6dX09cHQoKSxwPWEudXNlUmVmKG51bGwpO2EudXNlRWZmZWN0KCgpPT57IXAuY3VycmVudHx8Sm58fHR8fHAuY3VycmVudC5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfSxbdF0pO2NvbnN0IGY9dD0+KHQmJnQucHJldmVudERlZmF1bHQoKSxvPyhlKCgwLGsua3hsKShuKSksITApOihkKCEwKSxjKCksITEpKTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJhbHdheXMtb25saW5lIixjaGlsZHJlbjpbKDAsVi5ZKShabix7fSksKDAsVi5GRCkoImZvcm0iLHtvblN1Ym1pdDpmLGNoaWxkcmVuOlsoMCxWLlkpKCJkaXYiLHtjc3M6SG4sY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6ImFsd2F5c09ubGluZUVuZ2FnZU1lc3NhZ2UiLGVtb2ppZnk6ITB9KX0pLCgwLFYuWSkoImRpdiIse2NsYXNzTmFtZToidXNlci1kYXRhLW1vZGFsLWZpZWxkcyIsY2hpbGRyZW46KDAsVi5ZKShMbix7dHlwZToiZW1haWwiLHBsYWNlaG9sZGVyOiJwcmVmb3JtSW5wdXRfZW1haWwiLG9uQ2hhbmdlOihlLHQpPT57aShlKSxzKHQpLGQoITEpfSxvbktleURvd246ZT0+ezEzPT09ZSYmZigpfSxkaXNhYmxlZDohMSxiaW5kSW5wdXRSZWY6cCxmb3JjZUVycm9ySWNvbjpsLHNoYWtlQ2xhc3NOYW1lOnV9KX0pLCgwLFYuWSkoVm4se30pXX0pXX0pfTtjb25zdCB0aT0oZSx0KT0+ZS50cmltKCkubGVuZ3RoPj10O3ZhciBuaT1lPT57bGV0e3ZhbHVlOnQ9IiIscGxhY2Vob2xkZXI6bj0iIixvbkNoYW5nZTppLG9uS2V5RG93bjpvLGRpc2FibGVkOnI9ITEsaXNWYWxpZENhbGxiYWNrOnMsZm9yY2VFcnJvckljb246bD0hMSxvbkZvY3VzOmQsb25CbHVyOmMsc2hha2VDbGFzc05hbWU6dT0iIixtaW5MZW5ndGg6cD0xfT1lO2NvbnN0W2YsbV09KDAsYS51c2VTdGF0ZSkodCksW2gsZ109KDAsYS51c2VTdGF0ZSkodGkoZixwKSksW2Isdl09KDAsYS51c2VTdGF0ZSkoITEpLHg9KDAsYS51c2VSZWYpKCkseT0oMCxhLnVzZVJlZikoITEpLHc9ZT0+e2NvbnN0IHQ9ZS50YXJnZXQudmFsdWUsbj10aSh0LHApO20odCksZyhuKSxpJiZpKHQsbikscyYmcyhoKX0saz0oKT0+e3kuY3VycmVudD0hMH0sQT0oKT0+e3NldFRpbWVvdXQoKCk9Pnt5LmN1cnJlbnQ9ITF9LDApfSxDPWU9Pntjb25zdHtrZXlDb2RlOnQsa2V5Om59PWUsaT0iRW50ZXIiPT09bnx8MTM9PT10O3JldHVybiFlLm5hdGl2ZUV2ZW50LmlzQ29tcG9zaW5nJiYheS5jdXJyZW50JiYyMjkhPT10JiYoaSYmIWgmJih2KCEwKSx4LmN1cnJlbnQmJmNsZWFyVGltZW91dCh4LmN1cnJlbnQpLHguY3VycmVudD1zZXRUaW1lb3V0KCgpPT57dighMSl9LDgyMCkpLCEoIWl8fCFoKSYmKGUucHJldmVudERlZmF1bHQoKSxvJiZvKHQpLCEwKSl9LEU9KCk9PntkJiZkKCl9LFM9KCk9PntjJiZjKCl9O3JldHVybigwLFYuWSkoImRpdiIse2NsYXNzTmFtZTpgZmllbGQtd3JhcHBlciAke3V9ICR7KHZvaWQgMD09PWw/YjpsKT8iZmllbGQtd3JhcHBlci13aXRoLWVycm9yIjoiIn1gLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOltuXSxjaGlsZHJlbjplPT4oMCxWLlkpKCJ0ZXh0YXJlYSIse3BsYWNlaG9sZGVyOmVbbl0sb25DaGFuZ2U6dyxvbktleURvd246QyxvbkNvbXBvc2l0aW9uU3RhcnQ6ayxvbkNvbXBvc2l0aW9uRW5kOkEsdmFsdWU6ZixyZWFkT25seTpyLGNsYXNzTmFtZTpyPyJkaXNhYmxlZCI6IiIsb25Gb2N1czpFLG9uQmx1cjpTLHJvd3M6NH0pfSl9KX07Y29uc3QgaWk9e25hbWU6IjFpZ3kxd2IiLHN0eWxlczoicG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3Jvdy1nYXA6MjBweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtiYWNrZ3JvdW5kOiNmZmY7cGFkZGluZzozMnB4IDIwcHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxMnB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjEycHg7c3Zne3Bvc2l0aW9uOnVuc2V0O3dpZHRoOjQ4cHg7aGVpZ2h0OjQ4cHg7fSJ9LGFpPSgwLGQuQUgpKEhuLCJ0ZXh0LWFsaWduOmNlbnRlcjsiLCIiKTt2YXIgb2k9KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShDLk55KSxuPSgwLHIuZDQpKEMuaGUpLFtpXT0oMCxhLnVzZVN0YXRlKSghbiksW28sc109KDAsYS51c2VTdGF0ZSkoIiIpLFtsLGRdPSgwLGEudXNlU3RhdGUpKCExKSx1PSgwLHIuZDQpKEMuZ3ApLFtwLGZdPSgwLGEudXNlU3RhdGUpKHU/PyIiKSxbbSxoXT0oMCxhLnVzZVN0YXRlKShwLmxlbmd0aD49MyksW2csYl09KDAsYS51c2VTdGF0ZSkoITEpLFt2LHhdPSgwLGEudXNlU3RhdGUpKCExKSx7dHJpZ2dlclNoYWtlOnksc2hha2VDbGFzc05hbWU6d309cHQoKSxBPWEudXNlUmVmKCk7YS51c2VFZmZlY3QoKCk9PntBLmN1cnJlbnQmJiF0JiZBLmN1cnJlbnQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX0sW3RdKTtjb25zdCBFPSgwLGMucG4pKHYse2Zyb206e29wYWNpdHk6MCx0cmFuc2Zvcm06InNjYWxlKDAuOSkifSxlbnRlcjp7b3BhY2l0eToxLHRyYW5zZm9ybToic2NhbGUoMSkifSxsZWF2ZTp7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMC45KSJ9LGNvbmZpZzp7dGVuc2lvbjozMDAsZnJpY3Rpb246MzB9fSk7cmV0dXJuKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6ImFsd2F5cy1vbmxpbmUiLCJkYXRhLXRlc3RpZCI6ImNyZWF0ZVRpY2tldE1vZGFsIixjaGlsZHJlbjpbKDAsVi5ZKShabix7fSksKDAsVi5GRCkoImZvcm0iLHtvblN1Ym1pdDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5wcmV2ZW50RGVmYXVsdCgpLChufHxsKSYmbT8oZSgoMCxrLnJ0Uikobnx8byxwKSkseCghMCksITApOihiKCEwKSx5KCksITEpfSxub1ZhbGlkYXRlOiEwLGNoaWxkcmVuOlsoMCxWLlkpKCJkaXYiLHtjc3M6SG4sY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6ImFsd2F5c09ubGluZUVuZ2FnZU1lc3NhZ2UiLGVtb2ppZnk6ITB9KX0pLCgwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6InVzZXItZGF0YS1tb2RhbC1maWVsZHMiLGNoaWxkcmVuOltpJiYoMCxWLlkpKExuLHt0eXBlOiJlbWFpbCIscGxhY2Vob2xkZXI6InByZWZvcm1JbnB1dF9lbWFpbCIsb25DaGFuZ2U6KGUsdCk9PntzKGUpLGQodCksYighMSl9LGRpc2FibGVkOiExLGJpbmRJbnB1dFJlZjpBLGZvcmNlRXJyb3JJY29uOiFsJiZnLHNoYWtlQ2xhc3NOYW1lOmw/IiI6d30pLCgwLFYuWSkobmkse3ZhbHVlOnAscGxhY2Vob2xkZXI6InByZWZvcm1JbnB1dF9maXJzdG1zZyIsbWluTGVuZ3RoOjMsb25DaGFuZ2U6KGUsdCk9PntmKGUpLGgodCksYighMSl9LGRpc2FibGVkOiExLGZvcmNlRXJyb3JJY29uOiFtJiZnLHNoYWtlQ2xhc3NOYW1lOm0/IiI6d30pXX0pLCgwLFYuWSkoVm4se30pXX0pXX0pLEUoKGUsdCk9PnQ/KDAsVi5GRCkoYy5DUy5kaXYse2NzczppaSxzdHlsZTplLGNoaWxkcmVuOlsoMCxWLlkpKHV0LmNRLHt9KSwoMCxWLlkpKCJkaXYiLHtjc3M6YWksY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6InRpY2tldFN1Ym1pdHRlZENvbmZpcm1hdGlvbiIsZW1vamlmeTohMH0pfSldfSk6bnVsbCldfSl9LHJpPShuKDU0NjkpLG4oMTg3NSkpLHNpPW4oODY4NyksbGk9big4NzA2KTtjb25zdCBkaT17bmFtZToiMWRhMjJxNiIsc3R5bGVzOiJwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjE7bWFyZ2luLWJvdHRvbTo4cHg7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDEwOCwgMTI1LCAxNTksIDAuMjQpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgNXB4KSJ9LGNpPXtuYW1lOiIxb285amZvIixzdHlsZXM6ImJvcmRlci1jb2xvcjojZjYzMDNhO3NlbGVjdHsmOm5vdCg6Zm9jdXMpOmludmFsaWR7Y29sb3I6I2Y2MzAzYTt9fXN2Z3tmaWxsOiNmNjMwM2E7fSJ9LHVpPXtuYW1lOiIxYXl6dXZkIixzdHlsZXM6ImJvcmRlci1jb2xvcjojMDU2NmZmO3N2Z3tmaWxsOiM2NDc0OTE7fSJ9LHBpPXtuYW1lOiIxdDJpeTlkIixzdHlsZXM6J292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZzoxMXB4IDQwcHggMTJweCAxNnB4O2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MDtvdXRsaW5lOm5vbmU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMDgwRjFBO2ZvbnQtc2l6ZToxNXB4O2FwcGVhcmFuY2U6bm9uZTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpczsmOm5vdCg6Zm9jdXMpOmludmFsaWR7Y29sb3I6Izg4OTRhYjt9b3B0aW9uW3ZhbHVlPSIiXVtkaXNhYmxlZF17ZGlzcGxheTpub25lO30nfSxmaT17bmFtZToiem5tYWI4IixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO3JpZ2h0OjhweDt3aWR0aDoyNHB4O2hlaWdodDoyNHB4O21hcmdpbjphdXRvO3BvaW50ZXItZXZlbnRzOm5vbmU7c3Zne3RvcDphdXRvO2xlZnQ6YXV0bztmaWxsOiM2NDc0OTE7fSJ9LG1pPSgwLGYuREQpKCk7dmFyIGhpPWU9PntsZXR7b25DaGFuZ2U6dCxoYXNFcnJvcjpuLHNoYWtlQ2xhc3NOYW1lOml9PWU7Y29uc3Qgbz0oMCxyLmQ0KShDLndZKSxbcyxsXT0oMCxhLnVzZVN0YXRlKSghMSksW2QsY109KDAsYS51c2VTdGF0ZSkoIiIpO2lmKCFvLmxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCB1PSgwLHkucHcpKCJyb3V0aW5nUnVsZXNfc2VsZWN0b3IiLG51bGwsIlNlbGVjdCBEZXBhcnRtZW50Li4uIik7cmV0dXJuKDAsVi5GRCkoImRpdiIse2NzczpbZGksbiYmY2kscyYmdWksIiIsIiJdLGNsYXNzTmFtZTppLGNoaWxkcmVuOlsoMCxWLkZEKSgic2VsZWN0Iix7Y3NzOnBpLHZhbHVlOmQscmVxdWlyZWQ6ITAsZm9ybToibm92YWxpZGF0ZWRmb3JtIixvbkZvY3VzOigpPT57bCghMCl9LG9uQmx1cjooKT0+e2woITEpfSxvbkNoYW5nZTplPT57Y29uc3Qgbj1lLnRhcmdldC52YWx1ZSxpPW8uZmluZChlPT5lLnBvc2l0aW9uPT09TnVtYmVyKG4pKT8uZGVwYXJ0bWVudElkO21pfHxjKG4pLHQmJmkmJnQoaSl9LHRpdGxlOnUsY2hpbGRyZW46WygwLFYuWSkoIm9wdGlvbiIse3ZhbHVlOiIiLGRpc2FibGVkOiEwLGNoaWxkcmVuOnV9KSxvLm1hcChlPT57bGV0e2FsaWFzOnQscG9zaXRpb246bn09ZTtyZXR1cm4oMCxWLlkpKCJvcHRpb24iLHt2YWx1ZTpuLGNoaWxkcmVuOnR9LG4pfSldfSksKDAsVi5ZKSgiZGl2Iix7Y3NzOmZpLGNoaWxkcmVuOigwLFYuWSkodXQueWQse30pfSldfSl9O2xldCBnaT1mdW5jdGlvbihlKXtyZXR1cm4gZS5FTUFJTD0iZW1haWwiLGUuTkFNRT0ibmFtZSIsZS5QSE9ORT0icGhvbmUiLGUuR0RQUl9DT05TRU5UPSJnZHByQ29uc2VudCIsZS5TSUdOX1VQX05FV1NMRVRURVI9InNpZ25VcE5ld3NsZXR0ZXIiLGUuUFJFQ0hBVF9GSUVMRF9UWVBFX0VNQUlMX0NPTlNFTlQ9ImVtYWlsQ29uc2VudCIsZX0oe30pO2NvbnN0IGJpPWEuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e3ZhbHVlOm4sdHlwZTppLHBsYWNlaG9sZGVyOm8sZm9yY2VFcnJvckljb246cj0hMSxkaXNhYmxlZDpzPSExLG9uS2V5RG93bjpsLG9uSW5wdXRDaGFuZ2U6ZD0oKT0+e30sc2hha2VDbGFzc05hbWU6Yz0iIn09ZSx1PSgwLGEudXNlTWVtbykoKCk9PihlPT57c3dpdGNoKGUpe2Nhc2UgZ2kuRU1BSUw6cmV0dXJuImVtYWlsIjtjYXNlIGdpLk5BTUU6cmV0dXJuInRleHQiO2Nhc2UgZ2kuUEhPTkU6cmV0dXJuInRlbCI7Y2FzZSBnaS5HRFBSX0NPTlNFTlQ6Y2FzZSBnaS5QUkVDSEFUX0ZJRUxEX1RZUEVfRU1BSUxfQ09OU0VOVDpjYXNlIGdpLlNJR05fVVBfTkVXU0xFVFRFUjpyZXR1cm4iY2hlY2tib3giO2RlZmF1bHQ6cmV0dXJuIiJ9fSkoaSksW2ldKSxwPSgwLGEudXNlTWVtbykoKCk9PigoZSx0KT0+e3N3aXRjaChlKXtjYXNlIGdpLlBSRUNIQVRfRklFTERfVFlQRV9FTUFJTF9DT05TRU5UOnJldHVybiB0JiYib2JqZWN0Ij09dHlwZW9mIHQ/e3ZhbGlkYXRvcjooKT0+ITAscGxhY2Vob2xkZXI6InNpZ25VcE5ld3NsZXR0ZXIiLHZhbHVlOiJzdWJzY3JpYmVkIj09PXQudmFsdWV9Ont2YWxpZGF0b3I6KCk9PiEwLHBsYWNlaG9sZGVyOiJzaWduVXBOZXdzbGV0dGVyIn07Y2FzZSBnaS5TSUdOX1VQX05FV1NMRVRURVI6cmV0dXJue3ZhbGlkYXRvcjooKT0+ITAscGxhY2Vob2xkZXI6InNpZ25VcE5ld3NsZXR0ZXIifTtkZWZhdWx0OnJldHVybnt9fX0pKGksbiksW2ksbl0pO3JldHVybiB1P2k9PT1naS5HRFBSX0NPTlNFTlQ/KDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOmBmaWVsZC13cmFwcGVyICR7Y30gJHtyPyJmaWVsZC13cmFwcGVyLXdpdGgtZXJyb3IiOiIifWAsY2hpbGRyZW46KDAsVi5GRCkoImxhYmVsIix7aHRtbEZvcjppLGNsYXNzTmFtZToic21hbGwtdGV4dCIsY2hpbGRyZW46WygwLFYuWSkoImlucHV0Iix7aWQ6aSx0eXBlOnUsY2hlY2tlZDpCb29sZWFuKG4pLG9uQ2hhbmdlOmU9PntkKGUudGFyZ2V0LmNoZWNrZWQsZS50YXJnZXQuY2hlY2tlZCxpKX0sZGlzYWJsZWQ6cyxjbGFzc05hbWU6cz8iZGlzYWJsZWQiOiIiLHJlZjp0fSksKDAsVi5ZKShPbix7dmFsdWU6byxsaW5raWZ5OiEwLG1hcmtkb3duaWZ5OiEwfSldfSl9KTooMCxWLlkpKExuLHtpZDppLHR5cGU6dSxvbkNoYW5nZTooZSx0KT0+e2QoZSx0LGkpfSx2YWx1ZTpuLGRpc2FibGVkOnMscGxhY2Vob2xkZXI6byxiaW5kSW5wdXRSZWY6dCxvbktleURvd246bCxmb3JjZUVycm9ySWNvbjpyLHNoYWtlQ2xhc3NOYW1lOmMsLi4ucH0pOm51bGx9KTt2YXIgdmk9Ymk7ZnVuY3Rpb24geGkoZSl7Y29uc3QgdD1lO3JldHVybltzaS5NMCwic2lnblVwTmV3c2xldHRlciJdLmZvckVhY2goZT0+e3ZvaWQgMCE9PXRbZV0mJih0W2VdPUJvb2xlYW4odFtlXSkpfSksImJvb2xlYW4iPT10eXBlb2YgdFtzaS5NMF0mJih0W3NpLk0wXT17dmFsdWU6dFtzaS5NMF0/InN1YnNjcmliZWQiOiJ1bnN1YnNjcmliZWQiLGRhdGU6TWF0aC5yb3VuZChEYXRlLm5vdygpLzFlMyksc2V0Qnk6InVzZXIifSksdH1jb25zdCB5aT0iU0VUX0lOUFVUIix3aT0iU0hPV19FUlJPUl9PTl9JTlZBTElEX0ZJRUxEUyI7ZnVuY3Rpb24ga2koZSx0KXtzd2l0Y2godC50eXBlKXtjYXNlIHlpOntjb25zdHtmaWVsZFR5cGU6bixpc1ZhbGlkOmksdmFsdWU6YX09dDtyZXR1cm57Li4uZSxpbnB1dFZhbHVlczp7Li4uZS5pbnB1dFZhbHVlcyxbbl06e2lzVmFsaWQ6aSx2YWx1ZTphfX0sZmllbGRzV2l0aEVycm9yczp7Li4uZS5maWVsZHNXaXRoRXJyb3JzLFtuXTohMX19fWNhc2Ugd2k6e2NvbnN0IHQ9T2JqZWN0LmVudHJpZXMoZS5pbnB1dFZhbHVlcykuZmlsdGVyKGU9PntsZXRbLHRdPWU7cmV0dXJuIXQuaXNWYWxpZH0pLnJlZHVjZSgoZSx0KT0+e2xldFtuXT10O3JldHVybnsuLi5lLFtuXTohMH19LHt9KTtyZXR1cm57Li4uZSxmaWVsZHNXaXRoRXJyb3JzOnR9fWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yfX1jb25zdCBBaT1lPT57Y29uc3QgdD1lLmFyZURlcGFydG1lbnRzRW5hYmxlZCYmIWUuaXNEZXBhcnRtZW50U2VsZWN0ZWQ/Wy4uLmUucHJlQ2hhdEZpZWxkcyx7dHlwZTpzaS5SNn1dOmUucHJlQ2hhdEZpZWxkcyxbbixpXT1hLnVzZVJlZHVjZXIoa2ksdCxmdW5jdGlvbih0KXtjb25zdCBuPXt9O3JldHVybiB0LmZvckVhY2goZT0+e25bZS50eXBlXT17aXNWYWxpZDohMSx2YWx1ZTplLnZhbHVlP2UudmFsdWU6IiJ9fSksZS5wcmVjaGF0U3Vic2NyaXB0aW9uQ2hlY2tib3hEZWZhdWx0VmFsdWUmJm4uZW1haWxDb25zZW50JiYhbi5lbWFpbENvbnNlbnQudmFsdWUmJihuLmVtYWlsQ29uc2VudD17Li4ubi5lbWFpbENvbnNlbnQsdmFsdWU6ITB9KSx7aW5wdXRWYWx1ZXM6bixmaWVsZHNXaXRoRXJyb3JzOnt9fX0pLHt0cmlnZ2VyU2hha2U6byxzaGFrZUNsYXNzTmFtZTpyfT1wdCgpO2NvbnN0IHM9KGUsdCxuKT0+e2koe3R5cGU6eWksZmllbGRUeXBlOm4sdmFsdWU6ZSxpc1ZhbGlkOnR9KX0sbD1lPT57aSh7dHlwZTp5aSxmaWVsZFR5cGU6c2kuUjYsdmFsdWU6ZSxpc1ZhbGlkOiEwfSl9LGQ9YS51c2VSZWYoKTthLnVzZUVmZmVjdCgoKT0+e2QuY3VycmVudCYmIWUuaXNNb2JpbGUmJmQuY3VycmVudC5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfSxbZS5pc01vYmlsZV0pLGEudXNlRWZmZWN0KCgpPT57ZS5pc0RlcGFydG1lbnRTZWxlY3RlZCYmbChlLnNlbGVjdGVkRGVwYXJ0bWVudElkKX0sW2UuaXNEZXBhcnRtZW50U2VsZWN0ZWQsZS5zZWxlY3RlZERlcGFydG1lbnRJZF0pO2NvbnN0IGM9YS51c2VSZWYoITEpO2Z1bmN0aW9uIHUodCl7dCYmdC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBPYmplY3QudmFsdWVzKG4uaW5wdXRWYWx1ZXMpLmV2ZXJ5KGU9PiEwPT09ZS5pc1ZhbGlkKT8oZS5kaXNwYXRjaCgoMCxrLlNySikoZnVuY3Rpb24oZSl7Y29uc3QgdD17fTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaChuPT57dFtuXT1lW25dLnZhbHVlfSksITA9PT10LnNpZ25VcE5ld3NsZXR0ZXImJih0LmVtYWlsQ29uc2VudD0hMCkseGkodCl9KG4uaW5wdXRWYWx1ZXMpKSksITApOihvKCksaSh7dHlwZTp3aX0pLCExKX1hLnVzZUVmZmVjdCgoKT0+e2lmKCFjLmN1cnJlbnQpe2NvbnN0IHQ9ZS5wcmVDaGF0RmllbGRzLm1hcChlPT5lLnR5cGUpOygwLGxpLnMpKCkudHJhY2tFdmVudCh7ZXZlbnROYW1lOiJ0aWRpb19wcmVjaGF0X3N0YXJ0ZWQiLHBhcmFtczp7ZW1haWw6dC5pbmNsdWRlcygiZW1haWwiKSxwaG9uZTp0LmluY2x1ZGVzKCJwaG9uZSIpLG5hbWU6dC5pbmNsdWRlcygibmFtZSIpLGNvbnNlbnRfZ2l2ZW46dC5pbmNsdWRlcygiZW1haWxDb25zZW50Iil9fSksYy5jdXJyZW50PSEwfX0sW2UucHJlQ2hhdEZpZWxkc10pO2NvbnN0IHA9ZT0+ezEzPT09ZSYmdSgpfSxmPShlLHQpPT4oMCxWLlkpKHZpLHt0eXBlOmUudHlwZSxwbGFjZWhvbGRlcjplLnBsYWNlaG9sZGVyLG9uSW5wdXRDaGFuZ2U6cyxkaXNhYmxlZDohMSxvbktleURvd246cCxmb3JjZUVycm9ySWNvbjpuLmZpZWxkc1dpdGhFcnJvcnNbZS50eXBlXSxzaGFrZUNsYXNzTmFtZTpuLmZpZWxkc1dpdGhFcnJvcnNbZS50eXBlXSYmcj9yOiIiLHJlZjowPT09dD9kOnZvaWQgMCx2YWx1ZTplLnZhbHVlfSxlLnR5cGUpLG09ZS5wcmVDaGF0RmllbGRzLm1hcChlPT57Y29uc3QgdD1uLmlucHV0VmFsdWVzW2UudHlwZV0/LnZhbHVlO3JldHVybnsuLi5lLHZhbHVlOnR9fSksaD1tLmZpbHRlcihlPT57bGV0e3R5cGU6dH09ZTtyZXR1cm4gdCE9PXNpLk0wJiZ0IT09c2kubjZ9KSxnPW0uZmluZChlPT57bGV0e3R5cGU6dH09ZTtyZXR1cm4gdD09PXNpLk0wfSksYj1tLmZpbmQoZT0+e2xldHt0eXBlOnR9PWU7cmV0dXJuIHQ9PT1zaS5uNn0pLHY9bi5maWVsZHNXaXRoRXJyb3JzW3NpLlI2XTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJwcmUtY2hhdCIsY2hpbGRyZW46WygwLFYuWSkoWm4se30pLCgwLFYuRkQpKCJmb3JtIix7b25TdWJtaXQ6dSxjaGlsZHJlbjpbKDAsVi5ZKSgiZGl2Iix7Y3NzOkhuLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJwcmVmb3JtTWVzc2FnZSIsZW1vamlmeTohMH0pfSksKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToidXNlci1kYXRhLW1vZGFsLWZpZWxkcyIsY2hpbGRyZW46W2gubWFwKGYpLGUuYXJlRGVwYXJ0bWVudHNFbmFibGVkJiYhZS5pc0RlcGFydG1lbnRTZWxlY3RlZCYmKDAsVi5ZKShoaSx7b25DaGFuZ2U6bCxzaGFrZUNsYXNzTmFtZTp2JiZyP3I6IiIsaGFzRXJyb3I6dn0pLGcmJmYoZyxoLmxlbmd0aCksYiYmZihiLGgubGVuZ3RoKV19KSwoMCxWLlkpKFZuLHt9KV19KV19KX07QWkuZGVmYXVsdFByb3BzPXtzZWxlY3RlZERlcGFydG1lbnRJZDpudWxsfTt2YXIgQ2k9KDAsci5OZykoZT0+KHtwcmVDaGF0RmllbGRzOigwLHJpLnRyKShlLnByZUNoYXQuZGF0YSxlLnZpc2l0b3IpLGFyZURlcGFydG1lbnRzRW5hYmxlZDooMCxDLlpYKShlKSxpc0RlcGFydG1lbnRTZWxlY3RlZDooMCxDLllOKShlKSxzZWxlY3RlZERlcGFydG1lbnRJZDooMCxDLnBRKShlKSxwcmVjaGF0U3Vic2NyaXB0aW9uQ2hlY2tib3hEZWZhdWx0VmFsdWU6KDAsQy5zZCkoZSksaXNNb2JpbGU6KDAsQy5OeSkoZSl9KSkoQWkpO3ZhciBFaT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx0PSgwLHIuZDQpKGU9PmUuc2hvd1VzZXJEYXRhTW9kYWwpLHtpc05ld1NraW46bn09KDAscC5BKSgpLGk9KDAsYS51c2VSZWYpKHQpO3QmJihpLmN1cnJlbnQ9dCk7Y29uc3Qgbz0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e2UoKDAsay5wTzYpKGx0LlguY2xvc2VNb2RhbENsaWNrZWQpKSxlKCgwLGsuZXN2KSghMSkpfSxbZV0pO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+e2kuY3VycmVudCYmIXQmJigwLGgueUcpKCl9LFt0XSksKDAsVi5ZKShjdCx7aXNPcGVuOiExIT09dCxvbkNsb3NlOm8sc2hvdWxkQ2xvc2VPbkJhY2tkcm9wQ2xpY2s6ITEsY2hpbGRyZW46KDAsVi5GRCkoImRpdiIseyJkYXRhLXRlc3RpZCI6InVzZXJEYXRhTW9kYWwiLGNzczpVbixjaGlsZHJlbjpbKDAsVi5ZKSgiYnV0dG9uIix7Y3NzOkJuLG9uQ2xpY2s6byx0eXBlOiJidXR0b24iLCJhcmlhLWxhYmVsIjooMCx5LnB3KSgiY2xvc2VVc2VyRGF0YU1vZGFsIixudWxsLCJDbG9zZSBtb2RhbCIpLGNoaWxkcmVuOm4/KDAsVi5ZKSh1dC5HLHt9KTooMCxWLlkpKHV0LnlRLHt9KX0pLCJwcmVjaGF0Ij09PWkuY3VycmVudCYmKDAsVi5ZKShDaSx7fSksImFsd2F5c09ubGluZSI9PT1pLmN1cnJlbnQmJigwLFYuWSkoZWkse30pLCJjcmVhdGVUaWNrZXQiPT09aS5jdXJyZW50JiYoMCxWLlkpKG9pLHt9KV19KX0pfTtjbGFzcyBTaSBleHRlbmRzIGEuQ29tcG9uZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSwoMCxpLkEpKHRoaXMsInN0YXRlIix7aGFzRXJyb3I6ITF9KX1zdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKCl7cmV0dXJue2hhc0Vycm9yOiEwfX1jb21wb25lbnREaWRDYXRjaChlKXsoMCx2LkRIKSgiRXJyb3Igd2hpbGUgbG9hZGluZyBhc3luYyBjaHVuayIse21lc3NhZ2U6ZS5tZXNzYWdlfSksdGhpcy5wcm9wcy5vbkRpZENhdGNoKCl9cmVuZGVyKCl7cmV0dXJuIHRoaXMuc3RhdGUuaGFzRXJyb3I/bnVsbDp0aGlzLnByb3BzLmNoaWxkcmVufX12YXIgRGk9U2ksWWk9big0MDE5KTtjb25zdCBUaT1hLmxhenkoKCk9Pm4uZSgxMzEpLnRoZW4obi5iaW5kKG4sODQzMSkpKTt2YXIgRmk9KCk9Pntjb25zdCBlPSgwLFlpLmx6KSgpLnN0YXRlLFt0LG5dPSgwLGEudXNlU3RhdGUpKEJvb2xlYW4oZSkpO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+e2UmJm4oITApfSxbZV0pLCgwLFYuWSkoRGkse29uRGlkQ2F0Y2g6KCk9Pnt9LGNoaWxkcmVuOigwLFYuWSkoYS5TdXNwZW5zZSx7ZmFsbGJhY2s6bnVsbCxjaGlsZHJlbjp0JiYoMCxWLlkpKFRpLHtyZXNldFZpZGVvQ2FsbENvbm5lY3Rpb25SZXF1ZXN0OigpPT57bighMSl9fSl9KX0pfTt2YXIgSWk9KCk9Pntjb25zdFtlLHRdPSgwLGEudXNlU3RhdGUpKCExKSxuPSgpPT57dCghMSl9O3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLG4pLCgpPT57ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsbil9KSxbXSkse2lzQ2xpY2tlZDplLGhhbmRsZUNsaWNrOigpPT57dCghMCl9LGhhbmRsZU1vdXNlRW50ZXI6KCk9Pnt0KCExKX19fTt2YXIgX2k9ZT0+KDAsVi5ZKSgkLHsuLi5lLGluOmUuaW4sY2xhc3NOYW1lczoiZmFkZSIsY2hpbGRyZW46ZS5jaGlsZHJlbn0pO3ZhciBNaT0oMCxkLkFIKSh7d2lkdGg6MzgsaGVpZ2h0OjM4LGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIscG9zaXRpb246InJlbGF0aXZlIixjb2xvcjoiY3VycmVudENvbG9yIixzdmc6e3dpZHRoOjIyLGhlaWdodDoyMixmaWxsOiJjdXJyZW50Q29sb3IiLHRyYW5zaXRpb246ImFsbCAwLjE2cyBlYXNlLWluLW91dCJ9LG91dGxpbmU6Im5vbmUiLCIubW9iaWxlICYiOnt3aWR0aDo0NCxoZWlnaHQ6NDR9LCImOjpiZWZvcmUiOntjb250ZW50OiciIicscG9zaXRpb246ImFic29sdXRlIix3aWR0aDozOCxoZWlnaHQ6MzgsYm9yZGVyUmFkaXVzOiI1MCUiLHpJbmRleDotMSx0cmFuc2l0aW9uOiJhbGwgMC4xNnMgZWFzZS1pbi1vdXQiLHRyYW5zZm9ybToic2NhbGUoMCkiLHRvcDoiY2FsYyg1MCUgLSAxOXB4KSIsbGVmdDoiY2FsYyg1MCUgLSAxOXB4KSJ9LCImOmhvdmVyOjpiZWZvcmUiOnt0cmFuc2Zvcm06InNjYWxlKDEpIn0sIiY6aG92ZXIiOntjb2xvcjoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcikiLCImOjpiZWZvcmUiOntiYWNrZ3JvdW5kQ29sb3I6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItYmFja2dyb3VuZCkifX0sIi5ncmlkLWxheW91dDpub3QoLm1vYmlsZSkgJiI6e3dpZHRoOjI0LGhlaWdodDoyNCxzdmc6e3dpZHRoOjIwLGhlaWdodDoyMH0sIiY6OmJlZm9yZSI6e3dpZHRoOjI4LGhlaWdodDoyOCx0cmFuc2Zvcm06InNjYWxlKDEpIix0b3A6ImNhbGMoNTAlIC0gMTRweCkiLGxlZnQ6ImNhbGMoNTAlIC0gMTRweCkiLGJhY2tncm91bmQ6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItYmFja2dyb3VuZCkiLGJvcmRlclJhZGl1czoidmFyKC0tcmFkaXVzLXNtYWxsLWNvbXBvbmVudCwgOHB4KSIsb3BhY2l0eTowfSwiJjpob3ZlciI6e2NvbG9yOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKSIsIiY6OmJlZm9yZSI6e29wYWNpdHk6MX19fSwiJi5kaXNhYmxlZCBzdmcsICYuZGlzYWJsZWQ6Zm9jdXMgc3ZnIjp7ZmlsbDoiI2M5Y2JkOCJ9LCImOmRpc2FibGVkIjp7IiY6OmJlZm9yZSI6e2JhY2tncm91bmQ6Im5vbmUgIWltcG9ydGFudCJ9LHN2Zzp7ZmlsbDoiI2M5Y2JkOCJ9fX0sIiIsIiIpO3ZhciBOaT17dG9vbHRpcEJ1dHRvbjpmdW5jdGlvbigpe2xldHtzaG93T25EaXNhYmxlZDplPSExfT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuKDAsZC5BSCkoeyJAbWVkaWEgKGhvdmVyOiBob3ZlcikiOntbYCY6JHtlPyIiOiJub3QoW2Rpc2FibGVkXSk6In1ob3ZlciAudG9vbHRpcDpub3QoLmNsaWNrZWQpYF06e29wYWNpdHk6MSx0cmFuc2Zvcm06InRyYW5zbGF0ZSgtNTAlLCAtMTBweCkifX0sW2AmOiR7ZT8iIjoibm90KFtkaXNhYmxlZF0pOiJ9YWN0aXZlIC50b29sdGlwYF06e29wYWNpdHk6MCxwb2ludGVyRXZlbnRzOiJub25lIn19LCIiLCIiKX0sdG9vbHRpcDp7bmFtZToiMXM0MW5yNCIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjVweCA4cHg7Y29sb3I6IzA4MEYxQTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNoYWRvdzowcHggOHB4IDIwcHggcmdiYSgwLCAyNywgNzEsIDAuMjQpO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE4cHg7dGV4dC1hbGlnbjpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOmNhbGMoMTAwJSAtIDRweCk7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCAxMHB4KTtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgMC4xNnMgZWFzZS1pbi1vdXQsIHRyYW5zZm9ybSAwLjE2cyBlYXNlLWluLW91dDt6LWluZGV4OjEwO3doaXRlLXNwYWNlOm5vd3JhcDtnYXA6OHB4In19O3ZhciBPaT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx7aXNOZXdTa2luOnR9PSgwLHAuQSkoKTtyZXR1cm4oMCxWLkZEKSgic3BhbiIse2Nzczoobj10LCgwLGQuQUgpKHttYXJnaW5JbmxpbmVTdGFydDowLCIucHVsc2UsIC5wdWxzZS13aGl0ZSI6e3dpbGxDaGFuZ2U6InRyYW5zZm9ybSIsZGlzcGxheToiYmxvY2siLHdpZHRoOm4/MjQ6MzgsaGVpZ2h0Om4/MjQ6MzgscG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsYm9yZGVyUmFkaXVzOiI1MCUiLGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiIxIixtYXJnaW5JbmxpbmVTdGFydDowfSwiLnB1bHNlIjp7YmFja2dyb3VuZDoiI2M5Y2JkOCIsekluZGV4OiItNCIsYW5pbWF0aW9uOiJ3YXRlclB1bHNlIDNzIiwiJi5hbmltYXRpb24tZGVsYXkiOnt6SW5kZXg6Ii0yIn19LCIucHVsc2Utd2hpdGUiOntiYWNrZ3JvdW5kOiIjZmZmIix6SW5kZXg6Ii0zIixhbmltYXRpb246IndhdGVyUHVsc2VXaGl0ZSAzcyIsIiYuYW5pbWF0aW9uLWRlbGF5Ijp7ekluZGV4OiItMSJ9LG1hcmdpbklubGluZVN0YXJ0OjB9LCIuYW5pbWF0aW9uLWRlbGF5Ijp7YW5pbWF0aW9uRGVsYXk6IjAuOHMifSwiQGtleWZyYW1lcyB3YXRlclB1bHNlV2hpdGUiOntmcm9tOnt0cmFuc2Zvcm06InNjYWxlKDAuNykifSwiMjklIjp7dHJhbnNmb3JtOiJzY2FsZSgwLjcpIn0sIjYwJSI6e3RyYW5zZm9ybToic2NhbGUoMi44KSJ9fSwiQGtleWZyYW1lcyB3YXRlclB1bHNlIjp7ZnJvbTp7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMC44KSJ9LCIxOSUiOntvcGFjaXR5Oi4zfSwiMjMlIjp7dHJhbnNmb3JtOiJzY2FsZSgwLjgpIn0sIjI0JSI6e29wYWNpdHk6LjUsdHJhbnNmb3JtOiJzY2FsZSgwLjgpIn0sIjMxJSI6e29wYWNpdHk6LjR9LCI1NSUiOntvcGFjaXR5Oi4xLHRyYW5zZm9ybToic2NhbGUoMi44KSJ9LCIxMDAlIjp7b3BhY2l0eTowfX19LCIiLCIiKSksY2hpbGRyZW46WygwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6InB1bHNlIn0pLCgwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6InB1bHNlLXdoaXRlIn0pLCgwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6InB1bHNlIGFuaW1hdGlvbi1kZWxheSIsb25BbmltYXRpb25FbmQ6KCk9PntlKCgwLGsuaG0pKCkpfX0pLCgwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6InB1bHNlLXdoaXRlIGFuaW1hdGlvbi1kZWxheSJ9KV19KTt2YXIgbn07Y29uc3QgUmk9e25hbWU6IjFycmZhMnEiLHN0eWxlczoiJi5ib3RzLWFuaW1hdGlvbntzdmd7d2lsbC1jaGFuZ2U6dHJhbnNmb3JtO2FuaW1hdGlvbjpib3RzQW5pbWF0aW9uIDNzO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6MTt9QGtleWZyYW1lcyBib3RzQW5pbWF0aW9uezEyJXt0cmFuc2Zvcm06c2NhbGUoMSk7fTIwJXt0cmFuc2Zvcm06c2NhbGUoMS4yKTt9MjUle3RyYW5zZm9ybTpzY2FsZSgwLjkpO30yOSV7dHJhbnNmb3JtOnNjYWxlKDEuMDUpO30zMSV7dHJhbnNmb3JtOnNjYWxlKDEpO319fSJ9LGppPXtuYW1lOiJtOTlyNHkiLHN0eWxlczoibGVmdDoxMDAlIn07dmFyIFBpPWU9PntsZXR7b25DbGljazp0LGRpc2FibGVCdXR0b25BbmltYXRpb246bixhcmlhTGFiZWw6aSxvbkJsdXI6YSxzaG91bGREaXNwbGF5VG9vbHRpcDpvPSExfT1lO2NvbnN0e2lzQ2xpY2tlZDpzLGhhbmRsZUNsaWNrOmwsaGFuZGxlTW91c2VFbnRlcjpkfT1JaSgpLGM9KDAsci5kNCkoZT0+ZS5pc0JvdEFjdGl2ZSksdT0oMCxyLmQ0KShlPT5lLmFzc2lnbmVkT3BlcmF0b3JzKSxwPSgwLHIuZDQpKEMuTnkpLGY9IWMmJjA9PT11Lmxlbmd0aCYmIW4mJiFwO3JldHVybigwLFYuRkQpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToicmlwcGxlICIrKGY/ImJvdHMtYW5pbWF0aW9uIjoiIiksb25DbGljazooKT0+e2woKSx0KCl9LG9uQmx1cjphLG9uTW91c2VFbnRlcjpkLCJhcmlhLWxhYmVsIjppLGNzczpvP1tNaSxSaSxOaS50b29sdGlwQnV0dG9uKCldOltNaSxSaV0sY2hpbGRyZW46WygwLFYuWSkodXQuWUgse30pLGYmJigwLFYuWSkoT2kse30pLG8mJigwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6InRvb2x0aXAgIisocz8iY2xpY2tlZCI6IiIpLGNzczpbTmkudG9vbHRpcCxqaSwiIiwiIl0sY2hpbGRyZW46KDAseS5wdykoInN0YXJ0VGhlQm90IixudWxsLCJTdGFydCB0aGUgQm90Iil9KV19KX07dmFyIHppPWU9PigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6ImJvdHMtZHJvcGRvd24iLGNoaWxkcmVuOltlLmlzQm90QWN0aXZlJiYoMCxWLlkpKCJ1bCIse2NsYXNzTmFtZToiYm90cy1jYW5jZWwiLGNoaWxkcmVuOigwLFYuWSkoImxpIix7Y2hpbGRyZW46KDAsVi5GRCkoInNwYW4iLHt0YWJJbmRleDoiMCIsb25DbGljazplLm9uQ2FuY2VsQm90Q2xpY2ssb25LZXlVcDp0PT57IkVudGVyIiE9PXQua2V5JiYxMyE9PXQua2V5Q29kZXx8ZS5vbkNhbmNlbEJvdENsaWNrKCl9LG9uRm9jdXM6ZS5vbkJvdEZvY3VzLG9uQmx1cjplLm9uQm90Qmx1cixyb2xlOiJidXR0b24iLGNoaWxkcmVuOlsoMCxWLlkpKHV0LmJtLHt9KSwiICIsKDAseS5wdykoInN0YXJ0T3ZlciIsbnVsbCwiU3RhcnQgb3ZlciIpXX0pfSl9KSwhZS5pc0JvdEFjdGl2ZSYmKDAsVi5ZKSgidWwiLHtjaGlsZHJlbjooMCxWLlkpKCJsaSIse2NoaWxkcmVuOigwLFYuRkQpKCJzcGFuIix7b25DbGljazooKT0+e2Uub25Cb3RDbGljaygpfSxvbktleVVwOnQ9PnsiRW50ZXIiIT09dC5rZXkmJjEzIT09dC5rZXlDb2RlfHxlLm9uQm90Q2xpY2soKX0sb25Gb2N1czplLm9uQm90Rm9jdXMsb25CbHVyOmUub25Cb3RCbHVyLHJvbGU6ImJ1dHRvbiIsdGFiSW5kZXg6ZS5pc0JvdEFjdGl2ZT8iLTEiOiIwIixjaGlsZHJlbjpbKDAsVi5ZKSh1dC5RNSx7fSksIiAiLCgwLHkucHcpKCJzdGFydFRoZUJvdCIsbnVsbCwiU3RhcnQgdGhlIEJvdCIpXX0pfSl9KV19KTt2YXIgTGk9KCk9Pntjb25zdFtlLHRdPSgwLGEudXNlU3RhdGUpKCExKSxuPSgwLHIuZDQpKGU9PmUuYm90cyksaT0oMCxyLmQ0KShlPT5lLmlzQm90QWN0aXZlKSxvPSgwLHIuZDQpKGU9PmUuZGlzYWJsZUJvdHNCdXR0b25BbmltYXRpb24pLHM9KDAsci53QSkoKSx7aXNOZXdTa2luOmx9PSgwLHAuQSkoKSxkPSgpPT4haSYmKHMoKDAsay5xYm8pKCkpLHQoITEpLCEwKTtpZighbnx8MD09PW4ubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IGM9ZT8oMCx5LnB3KSgiY2xvc2VCb3RzTGF1bmNoZXIiLG51bGwsIkNsb3NlIEJvdHMgTGF1bmNoZXIiKTooMCx5LnB3KSgib3BlbkJvdHNMYXVuY2hlciIsbnVsbCwiT3BlbiBCb3RzIExhdW5jaGVyIik7cmV0dXJuIGw/KDAsVi5ZKShQaSx7b25DbGljazpkLGRpc2FibGVCdXR0b25BbmltYXRpb246byxhcmlhTGFiZWw6YyxzaG91bGREaXNwbGF5VG9vbHRpcDohMH0pOigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKFBpLHtvbkJsdXI6KCk9Pnt0KCExKX0sb25DbGljazooKT0+e3MoKDAsay5IemgpKCExKSksdChlPT4hZSkscygoMCxrLnBPNikobHQuWC5ib3RzQnV0dG9uQ2xpY2tlZCkpfSxkaXNhYmxlQnV0dG9uQW5pbWF0aW9uOm8sYXJpYUxhYmVsOmN9KSwoMCxWLlkpKCQse2luOmUsY2xhc3NOYW1lczoiYm90c0xpc3RGYWRlIixjaGlsZHJlbjooMCxWLlkpKHppLHtvbkJvdENsaWNrOmQsb25Cb3RGb2N1czooKT0+e3QoITApfSxvbkJvdEJsdXI6KCk9Pnt0KCExKX0sb25DYW5jZWxCb3RDbGljazooKT0+e3MoKDAsay5wTzYpKGx0LlguYm90Q2FuY2VsZWQpKSxzKCgwLGsuTnMyKSgpKSx0KCExKX0saXNCb3RBY3RpdmU6aX0pfSldfSl9O2NvbnN0IFVpPSgpPT4oMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6ImVtb2ppLXdyYXBwZXIiLGNoaWxkcmVuOigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToiZW1vamktbWFydCJ9KX0pLEJpPWEubGF6eSgoKT0+bi5lKDE4MSkudGhlbihuLmJpbmQobiwyMjgwKSkpO3ZhciBIaT1lPT4oMCxWLlkpKERpLHtvbkRpZENhdGNoOmUuaGFuZGxlRW1vamlQYW5lbCxjaGlsZHJlbjooMCxWLlkpKGEuU3VzcGVuc2Use2ZhbGxiYWNrOigwLFYuWSkoVWkse30pLGNoaWxkcmVuOigwLFYuWSkoQmkse29uRW1vamlDbGljazplLm9uRW1vamlDbGljayxpc01vYmlsZTplLmlzTW9iaWxlfSl9KX0pO2NvbnN0IHFpPXtuYW1lOiJycTV0MXkiLHN0eWxlczoibWFyZ2luLXJpZ2h0OjBweDtmbG9hdDpyaWdodDtkaXNwbGF5OmZsZXg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6Izg4OTRhYjtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjEwcHg7LyogQG5vZmxpcCAqL2RpcmVjdGlvbjpsdHI7c3BhbnthbGlnbi1zZWxmOmNlbnRlcjsvKiBAbm9mbGlwICovbWFyZ2luLXJpZ2h0OjhweDt9In0sVmk9e25hbWU6IjZkYm10ZCIsc3R5bGVzOiJzdmd7d2lkdGg6MTcxcHg7fSJ9LCRpPXtuYW1lOiIxNWhkd2J1IixzdHlsZXM6InN2Z3t3aWR0aDoxMTlweDt9In0sV2k9e25hbWU6IjdrOHVoZiIsc3R5bGVzOiJtYXJnaW4tcmlnaHQ6MHB4O2Zsb2F0OnJpZ2h0Oy8qIEBub2ZsaXAgKi9kaXJlY3Rpb246bHRyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtpbWd7b2JqZWN0LWZpdDpjb250YWluO21heC13aWR0aDoxMjVweDttYXgtaGVpZ2h0OjMwcHg7fSJ9O3ZhciBLaT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx0PSgwLHIuZDQpKGU9PmUucHVibGljS2V5KSxuPSgwLHIuZDQpKGU9PmUucGxhdGZvcm0pLGk9KDAsci5kNCkoZT0+ZS5pc01vYmlsZSksYT0oMCxyLmQ0KShDLlR3KSxvPSgwLHIuZDQpKEMuSEUpLHM9KDAsci5kNCkoQy5aaCksbD0oMCxmLmxlKSgpLGQ9ISgwLGYuSFApKHQpO2lmKG8pcmV0dXJuKDAsVi5ZKSgiZGl2Iix7Y2hpbGRyZW46KDAsVi5ZKSgic3BhbiIse2NzczpXaSxjaGlsZHJlbjooMCxWLlkpKCJpbWciLHtzcmM6byxhbHQ6IkNvbXBhbnkgbG9nbyIsb25FcnJvcjooKT0+e2UoKDAsay51T3kpKHtjdXN0b21CcmFuZGluZzoiIn0pKX19KX0pfSk7Y29uc3QgYz1zP3V0LnRFOnV0LlFULHU9W3FpLHM/Vmk6JGldLHA9YGh0dHBzOi8vd3d3LnRpZGlvLmNvbS8ke3M/InBvd2VyZWQtYnktbHlybyI6InBvd2VyZWQtYnktdGlkaW8ifS8/cGxhdGZvcm09JHtufSZwcm9qZWN0PSR7dH0mZGV2aWNlPSR7aT8ibW9iaWxlIjoiZGVza3RvcCJ9JHtkP2AmdXRtX3NvdXJjZT1wbHVnaW5fcmVmJnV0bV9tZWRpdW09d2lkZ2V0X3Y0JnV0bV9jYW1wYWlnbj1wbHVnaW5fcmVmJnV0bV9yZWZlcnJlcj0ke2x9YDoiIn1gO3JldHVybiBhPygwLFYuWSkoImRpdiIse2NoaWxkcmVuOigwLFYuWSkoInNwYW4iLHtjc3M6dSxjaGlsZHJlbjooMCxWLlkpKGMse30pfSl9KTooMCxWLlkpKCJkaXYiLHtjaGlsZHJlbjooMCxWLlkpKCJhIix7Y3NzOnUsaHJlZjpwLHRhcmdldDoiX2JsYW5rIixyZWw6Im5vb3BlbmVyIG5vcmVmZXJyZXIiLCJhcmlhLWxhYmVsIjooMCx5LnB3KSgicG93ZXJlZEJ5IixudWxsLCJQb3dlcmVkIGJ5IFRpZGlvLiIpLGNoaWxkcmVuOigwLFYuWSkoYyx7fSl9KX0pfTtjbGFzcyBHaSBleHRlbmRzIGEuQ29tcG9uZW50e3JlbmRlcigpe3N3aXRjaCh0aGlzLnByb3BzLmV4dGVuc2lvbil7Y2FzZSJkb2MiOmNhc2UiZG9jeCI6cmV0dXJuKDAsVi5ZKSh1dC5KQSx7fSk7Y2FzZSJmbHYiOnJldHVybigwLFYuWSkodXQuTnAse30pO2Nhc2UibXBnIjpjYXNlIm1wNCI6Y2FzZSJhdmkiOnJldHVybigwLFYuWSkodXQuZnQse30pO2Nhc2UicGRmIjpyZXR1cm4oMCxWLlkpKHV0Lnp6LHt9KTtjYXNlInR4dCI6Y2FzZSJydGYiOnJldHVybigwLFYuWSkodXQuRHkse30pO2Nhc2Uid21hIjpjYXNlIm1wMyI6cmV0dXJuKDAsVi5ZKSh1dC5BSCx7fSk7Y2FzZSJ4bHMiOmNhc2UieGxzeCI6Y2FzZSJjc3YiOnJldHVybigwLFYuWSkodXQubWIse30pO2Nhc2UicG5nIjpjYXNlImpwZyI6Y2FzZSJqcGVnIjpjYXNlImdpZiI6cmV0dXJuKDAsVi5ZKSh1dC5FOSx7fSk7ZGVmYXVsdDpyZXR1cm4gbnVsbH19fXZhciBYaT1HaTtjb25zdCBRaT0yNCxaaT17ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6OCx3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixwYWRkaW5nOiI4cHggMTJweCIsYmFja2dyb3VuZENvbG9yOiIjZmZmIixib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpIixib3JkZXI6IjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IsICNEM0RCRTUpIiwiPiBzdmciOnt3aWR0aDpRaSxoZWlnaHQ6UWksZmxleFNocmluazowfX0sSmk9e25hbWU6Im8ybHhpYSIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7Z2FwOjhweDtwYWRkaW5nLXRvcDoxNnB4O292ZXJmbG93LXg6YXV0bztzY3JvbGxiYXItY29sb3I6I2FjYjhjYiB0cmFuc3BhcmVudDtzY3JvbGxiYXItd2lkdGg6dGhpbjsmOjotd2Via2l0LXNjcm9sbGJhcnt3aWR0aDoxMnB4O30mOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntib3JkZXI6M3B4IHNvbGlkICNlZmYyZjY7Ym9yZGVyLXJhZGl1czo2cHg7YmFja2dyb3VuZC1jb2xvcjojYWNiOGNiO30ifSxlYT0oMCxkLkFIKSh7cG9zaXRpb246InJlbGF0aXZlIixmbGV4U2hyaW5rOjAsd2lkdGg6NTIsaGVpZ2h0OjUyfSwiIiwiIiksdGE9KDAsZC5BSCkoe3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLGJvcmRlclJhZGl1czoidmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgMTJweCkiLGJvcmRlcjoiMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvciwgI0QzREJFNSkiLG92ZXJmbG93OiJoaWRkZW4iLCIubG9hZGVyLWljb24uY2lyY3VsYXIiOnt3aWR0aDpRaSxoZWlnaHQ6UWkscG9zaXRpb246InJlbGF0aXZlIixsZWZ0OjAsdG9wOjB9fSwiIiwiIiksbmE9e25hbWU6InE1ajkwOCIsc3R5bGVzOiJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y292ZXI7ZGlzcGxheTpibG9jayJ9LGlhPXtuYW1lOiIxMThva3NiIixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIn0sYWE9KDAsZC5BSCkoe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIix0b3A6LTYscmlnaHQ6LTYsaGVpZ2h0OjI4LHdpZHRoOjI4LGJvcmRlclJhZGl1czoiNTAlIixib3hTaGFkb3c6IjBweCAycHggNnB4IDBweCAjMDAxYjQ3MWYiLGJhY2tncm91bmQ6IiNmZmYiLHN2Zzp7d2lkdGg6MjAsaGVpZ2h0OjIwLGZpbGw6IiM4ODk0YWIifSwiJjpob3ZlciI6e2JhY2tncm91bmRDb2xvcjoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1iYWNrZ3JvdW5kKSIsc3ZnOntmaWxsOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKSJ9fX0sIiIsIiIpLG9hPSgwLGQuQUgpKFppLHtwb3NpdGlvbjoicmVsYXRpdmUiLGZsZXhTaHJpbms6MCx3aWR0aDoxOTIsaGVpZ2h0OjUyLGJveFNpemluZzoiYm9yZGVyLWJveCIsIi5sb2FkZXItaWNvbi5jaXJjdWxhciI6e3dpZHRoOlFpLGhlaWdodDpRaSxwb3NpdGlvbjoicmVsYXRpdmUiLGxlZnQ6MH19LCIiLCIiKSxyYT0oMCxkLkFIKShaaSx7cG9zaXRpb246InJlbGF0aXZlIixmbGV4U2hyaW5rOjAsd2lkdGg6MjIwLGhlaWdodDo1MiwiLmFsZXJ0LWljb24iOnt3aWR0aDoyMCxoZWlnaHQ6MjAsZmlsbDoiI2Y2MzAzYSJ9fSwiIiwiIiksc2E9e25hbWU6IjFiYnV3bmYiLHN0eWxlczoiZm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MTRweDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTotd2Via2l0LWJveDstd2Via2l0LWxpbmUtY2xhbXA6Mjstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7d29yZC1icmVhazpicmVhay13b3JkO2NvbG9yOnZhcigtLXRleHQtY29sb3IsICMwNjEzMkIpIn0sbGE9e25hbWU6ImxxOWJxNiIsc3R5bGVzOiJjb2xvcjojQUNCOENCIn0sZGE9e25hbWU6ImQ1OTlxIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweDtmbGV4OjE7bWluLXdpZHRoOjAifSxjYT17bmFtZToiMWlnbHBpcSIsc3R5bGVzOiJjb2xvcjojZjYzMDNhO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjE0cHgifTt2YXIgdWE9ZT0+e2xldHtvbkNsaWNrOnR9PWU7cmV0dXJuKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6YWEsb25DbGljazp0LCJhcmlhLWxhYmVsIjooMCx5LnB3KSgicmVtb3ZlQXR0YWNobWVudCIsbnVsbCwiUmVtb3ZlIGF0dGFjaG1lbnQiKSxjaGlsZHJlbjooMCxWLlkpKHV0LmJtLHt9KX0pfTt2YXIgcGE9ZT0+e2xldHthdHRhY2htZW50OnQsb25SZW1vdmU6bn09ZTtjb25zdHtpZDppLHVwbG9hZGVkVGh1bWI6byxmaWxlTmFtZTpyLHVwbG9hZFN0YXR1czpzLGVycm9yTWVzc2FnZTpsfT10LGQ9KDAsYS51c2VDYWxsYmFjaykoKCk9PntuKGkpfSxbaSxuXSksYz0idXBsb2FkaW5nIj09PXMsdT0iZXJyb3IiPT09cyxwPSgwLGEudXNlTWVtbykoKCk9PigwLHJpLlFDKShyfHwiIil8fCIiLFtyXSksZj0oMCxhLnVzZU1lbW8pKCgpPT4oMCxyaS5pVCkocCksW3BdKTtyZXR1cm4gdT8oMCxWLkZEKSgiZGl2Iix7Y3NzOnJhLGNoaWxkcmVuOlsoMCxWLlkpKHV0LkZjLHt9KSwoMCxWLlkpKCJkaXYiLHtjc3M6ZGEsY2hpbGRyZW46bCYmKDAsVi5ZKSgic3BhbiIse2NzczpjYSxjaGlsZHJlbjpsfSl9KSwoMCxWLlkpKHVhLHtvbkNsaWNrOmR9KV19KToiaW1hZ2UiPT09Zj8oMCxWLkZEKSgiZGl2Iix7Y3NzOmVhLGNoaWxkcmVuOlsoMCxWLlkpKCJkaXYiLHtjc3M6dGEsY2hpbGRyZW46Yz8oMCxWLlkpKCJkaXYiLHtjc3M6aWEsY2hpbGRyZW46KDAsVi5ZKSh1dC50Uix7fSl9KTooMCxWLlkpKCJpbWciLHtzcmM6byxhbHQ6cixjc3M6bmF9KX0pLCgwLFYuWSkodWEse29uQ2xpY2s6ZH0pXX0pOmM/KDAsVi5GRCkoImRpdiIse2NzczpvYSxjaGlsZHJlbjpbKDAsVi5ZKSh1dC50Uix7fSksKDAsVi5ZKSgic3BhbiIse2Nzczpbc2EsbGEsIiIsIiJdLGNoaWxkcmVuOnJ9KV19KTooMCxWLkZEKSgiZGl2Iix7Y3NzOm9hLGNoaWxkcmVuOlsoMCxWLlkpKFhpLHtleHRlbnNpb246cH0pLCgwLFYuWSkoInNwYW4iLHtjc3M6c2EsY2hpbGRyZW46cn0pLCgwLFYuWSkodWEse29uQ2xpY2s6ZH0pXX0pfTt2YXIgZmE9ZT0+e2xldHthdHRhY2htZW50czp0LG9uUmVtb3ZlOm59PWU7cmV0dXJuIDA9PT10Lmxlbmd0aD9udWxsOigwLFYuWSkoImRpdiIse2NzczpKaSxjaGlsZHJlbjp0Lm1hcChlPT4oMCxWLlkpKHBhLHthdHRhY2htZW50OmUsb25SZW1vdmU6bn0sZS5pZCkpfSl9O2NvbnN0IG1hPXtuYW1lOiIxNmZxMm16IixzdHlsZXM6ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDtmb250LXNpemU6MTJweDtjb2xvcjojNjQ3NDkxIn0saGE9e25hbWU6ImFtMXg4OSIsc3R5bGVzOiJsZWZ0OjAlIn0sZ2E9ZT0+KDAsZC5BSCkoe2ZsZXg6IjAgMCAzOHB4Iixjb2xvcjplPyIjQjFCOUM4IjoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcikiLHRyYW5zZm9ybToidHJhbnNsYXRlWCg4cHgpIiwiLmdyaWQtbGF5b3V0ICYiOntmbGV4OiIwIDAgMjRweCIsY29sb3I6ZT8iIzY0NzQ5MTgwIjoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcikiLHRyYW5zZm9ybToidHJhbnNsYXRlWCgwcHgpIn0sIi5tb2JpbGUgJiI6e2ZsZXg6IjAgMCA0NHB4Iix0cmFuc2Zvcm06InRyYW5zbGF0ZVgoMTBweCkifX0sIiIsIiIpO3ZhciBiYT1lPT57bGV0e2Rpc2FibGVkOnR9PWU7Y29uc3Qgbj0oMCxyLndBKSgpLGk9KDAsci5kNCkoQy5vNCk7cmV0dXJuKDAsVi5GRCkoImJ1dHRvbiIse2lkOiJzZW5kLWJ1dHRvbiIsdHlwZToiYnV0dG9uIixvbkNsaWNrOigpPT57aXx8bigoMCxrLnpycykoITApKX0sZGlzYWJsZWQ6dCxjc3M6W01pLGdhKHQpLE5pLnRvb2x0aXBCdXR0b24oKSwiIiwiIl0sY2hpbGRyZW46WygwLFYuWSkodXQucXgse30pLCgwLFYuRkQpKCJzcGFuIix7Y2xhc3NOYW1lOiJ0b29sdGlwIixjc3M6W05pLnRvb2x0aXAsaGEsIiIsIiJdLGNoaWxkcmVuOlsoMCx5LnB3KSgic2VuZCIsbnVsbCwiU2VuZCIpLCgwLFYuRkQpKCJkaXYiLHtjc3M6bWEsY2hpbGRyZW46WygwLHkucHcpKCJzaG9ydGN1dCIsbnVsbCwiU2hvcnRjdXQiKSwiICIsKDAsVi5ZKSh1dC54eSx7fSldfSldfSldfSl9O2NvbnN0IHZhPWcuVEgseGE9e25hbWU6InVoNXhqYyIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4In0seWE9KGUsdCk9PmZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj0oMCxoLmJpKSgpO2lmKCFuPy5jcmVhdGVFbGVtZW50KXJldHVybiAwO2NvbnN0IGk9KCJPZmZzY3JlZW5DYW52YXMiaW4gd2luZG93P25ldyBPZmZzY3JlZW5DYW52YXMoNTAwLDEwMCk6bi5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSkuZ2V0Q29udGV4dCgiMmQiKTtyZXR1cm4gaS5mb250PXQsTWF0aC5jZWlsKGkubWVhc3VyZVRleHQoZSkud2lkdGgpfShlLCcxN3B4ICJNdWxpc2giLCBzYW5zLXNlcmlmJyk+dDtmdW5jdGlvbiB3YShlKXtjb25zdCB0PWU/LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIHQ/dC5zaGFkb3dSb290P3dhKHQuc2hhZG93Um9vdCk6dDpudWxsfWNvbnN0IGthPWU9Pnt0cnl7bGV0IHQ9ZS50YXJnZXQ7aWYodD8uc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudCl7Zm9yKDt0Py5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50Oyl0PXQuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ0YXJnZXQiLHt2YWx1ZTp0LHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUuc3JjRWxlbWVudCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNyY0VsZW1lbnQiLHt2YWx1ZTp0LHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pfX1jYXRjaHt9fTtjbGFzcyBBYSBleHRlbmRzIGEuQ29tcG9uZW50e2NvbnN0cnVjdG9yKCl7dmFyIGU7c3VwZXIoLi4uYXJndW1lbnRzKSxlPXRoaXMsKDAsaS5BKSh0aGlzLCJzdGF0ZSIse2lucHV0OiIiLGlucHV0Um93czoxLGlzUGxhY2Vob2xkZXJUb0xvbmc6ITF9KSwoMCxpLkEpKHRoaXMsImlucHV0UmVmIixudWxsKSwoMCxpLkEpKHRoaXMsImluaXRpYWxJbnB1dFNjcm9sbEhlaWdodCIsMCksKDAsaS5BKSh0aGlzLCJvbGRJbnB1dFJvd3MiLDEpLCgwLGkuQSkodGhpcywib2xkUGxhY2Vob2xkZXIiLCIiKSwoMCxpLkEpKHRoaXMsImlzQ29tcG9zaW5nIiwhMSksKDAsaS5BKSh0aGlzLCJ3aW5kb3dSZWYiLCgwLGguQUwpKCkpLCgwLGkuQSkodGhpcywib3NOYW1lIiwoMCxmLkRqKSgpLm5hbWUudG9Mb3dlckNhc2UoKSksKDAsaS5BKSh0aGlzLCJvcmlnaW5hbEFjdGl2ZUVsZW1lbnREZXNjcmlwdG9yIixudWxsKSwoMCxpLkEpKHRoaXMsInNldElucHV0UmVmIixlPT57dGhpcy5pbnB1dFJlZj1lfSksKDAsaS5BKSh0aGlzLCJvbklucHV0Q2hhbmdlIixlPT57Y29uc3QgdD10aGlzLnN0YXRlLmlucHV0Lmxlbmd0aCxuPWUudGFyZ2V0LnZhbHVlO3RoaXMuc2V0U3RhdGUoe2lucHV0Om59LCgpPT57dGhpcy5hZGp1c3RJbnB1dFJvd3ModCl9KSx0aGlzLmRpc3BhdGNoVmlzaXRvcklzVHlwaW5nKG4sdGhpcy5zdGF0ZS5pbnB1dCl9KSwoMCxpLkEpKHRoaXMsImFkanVzdElucHV0Um93cyIsZnVuY3Rpb24oKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtpZihlLm9sZElucHV0Um93cz1lLnN0YXRlLmlucHV0Um93cywiIj09PWUuc3RhdGUuaW5wdXQmJiFlLnN0YXRlLmlzUGxhY2Vob2xkZXJUb0xvbmcpcmV0dXJuIGUuc2V0U3RhdGUoe2lucHV0Um93czoxfSksMT09PWUub2xkSW5wdXRSb3dzfHxlLnByb3BzLmlzTW9iaWxlfHxlLnByb3BzLmRpc3BhdGNoKCgwLGsub09tKSh0dC5OTy5DSEFUX1NJWkVfMSkpLCEwO2lmKDM9PT1lLnN0YXRlLmlucHV0Um93cyYmbnVsbCE9PXQmJmUuc3RhdGUuaW5wdXQubGVuZ3RoPnQpcmV0dXJuITA7Y29uc3Qgbj1lLmdldENhbGN1bGF0ZWRJbnB1dFJvd3MoKTtpZihuIT09ZS5vbGRJbnB1dFJvd3MmJiFlLnByb3BzLmlzTW9iaWxlKXtjb25zdCB0PXsxOnR0Lk5PLkNIQVRfU0laRV8xLDI6dHQuTk8uQ0hBVF9TSVpFXzIsMzp0dC5OTy5DSEFUX1NJWkVfM307ZS5wcm9wcy5kaXNwYXRjaCgoMCxrLm9PbSkodFtuXXx8dHQuTk8uQ0hBVF9TSVpFXzEpKX1yZXR1cm4gZS5zZXRTdGF0ZSh7aW5wdXRSb3dzOm59KSwhMH0pLCgwLGkuQSkodGhpcywiZ2V0Q2FsY3VsYXRlZElucHV0Um93cyIsKCk9PntpZighdGhpcy5pbnB1dFJlZilyZXR1cm4gMTtsZXQgZT1NYXRoLmNlaWwoKHRoaXMuaW5wdXRSZWYuc2Nyb2xsSGVpZ2h0LXRoaXMuaW5pdGlhbElucHV0U2Nyb2xsSGVpZ2h0KS92YSkrMTtyZXR1cm4gdGhpcy5wcm9wcy5pc01vYmlsZSYmZT4yPzI6KGU+Mz9lPTM6dGhpcy5zdGF0ZS5pc1BsYWNlaG9sZGVyVG9Mb25nJiZlPDI/ZT0yOmU8MSYmKGU9MSksZSl9KSwoMCxpLkEpKHRoaXMsInJlc3RvcmVNZXNzYWdlIiwoKT0+e2NvbnN0e2Jsb2NrZWRNZXNzYWdlOmV9PXRoaXMucHJvcHM7c2V0VGltZW91dCgoKT0+e3RoaXMuc2V0U3RhdGUoe2lucHV0OmV8fCIifSwoKT0+e3RoaXMuYWRqdXN0SW5wdXRSb3dzKCl9KX0sMCksdGhpcy5wcm9wcy5kaXNwYXRjaCgoMCxrLlM4aCkoKSl9KSwoMCxpLkEpKHRoaXMsIm9uQ29tcG9zaXRpb25TdGFydCIsKCk9Pnt0aGlzLmlzQ29tcG9zaW5nPSEwfSksKDAsaS5BKSh0aGlzLCJvbkNvbXBvc2l0aW9uRW5kIiwoKT0+e3NldFRpbWVvdXQoKCk9Pnt0aGlzLmlzQ29tcG9zaW5nPSExfSwwKX0pLCgwLGkuQSkodGhpcywib25LZXlEb3duIixlPT57Y29uc3QgdD0iRW50ZXIiPT09ZS5rZXl8fDEzPT09ZS5rZXlDb2RlO3JldHVybiEoIXR8fHQmJmUuc2hpZnRLZXl8fHRoaXMucHJvcHMubmV3TWVzc2FnZURpc2FibGVkfHxlLm5hdGl2ZUV2ZW50LmlzQ29tcG9zaW5nfHx0aGlzLmlzQ29tcG9zaW5nfHwyMjk9PT1lLmtleUNvZGUpJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucHJvcHMuZGlzcGF0Y2goKDAsay56cnMpKCEwKSksITApfSksKDAsaS5BKSh0aGlzLCJvbkNsaWNrIiwoKT0+e3RoaXMucHJvcHMubmV3TWVzc2FnZURpc2FibGVkJiYoMCxoLkJ2KSgpfSksKDAsaS5BKSh0aGlzLCJkaXNwYXRjaFZpc2l0b3JJc1R5cGluZyIsKGUsdCk9Pntjb25zdCBuPWUudHJpbSgpLGk9dC50cmltKCk7cmV0dXJuKCIiIT09bnx8biE9PWkpJiYodGhpcy5wcm9wcy5kaXNwYXRjaCgoMCxrLnVFaSkobikpLCEwKX0pLCgwLGkuQSkodGhpcywic2VuZE1lc3NhZ2UiLCgpPT57Y29uc3R7ZGlzcGF0Y2g6ZSxpc0Vtb2ppUGFuZWxWaXNpYmxlOnQsdHJpZ2dlclNoYWtlOm4scGVuZGluZ0F0dGFjaG1lbnRzOml9PXRoaXMucHJvcHM7bGV0IGE9dGhpcy5zdGF0ZS5pbnB1dDthPWEudHJpbSgpO2NvbnN0IG89IiIhPT1hLHI9KGk/aS5maWx0ZXIoZT0+InVwbG9hZGVkIj09PWUudXBsb2FkU3RhdHVzKTpbXSkubGVuZ3RoPjA7cmV0dXJuKCFpfHwhaS5zb21lKGU9PiJ1cGxvYWRpbmciPT09ZS51cGxvYWRTdGF0dXMpKSYmKG98fHI/KG8mJmUoKDAsay5HOGMpKGEpKSxyJiZlKCgwLGsuRTNIKSgpKSx0aGlzLnNldFN0YXRlKHtpbnB1dDoiIn0pLHQmJmUoKDAsay5IemgpKCExKSksdGhpcy5zZXRTdGF0ZSh7aW5wdXRSb3dzOjF9KSwhMCk6KG4oKSwhMSkpfSksKDAsaS5BKSh0aGlzLCJmaXhXZWJ2aWV3VG91Y2hBcmVhcyIsKCk9Pnt0cnl7dGhpcy5wcm9wcy5pc01vYmlsZSYmImlvcyI9PT10aGlzLm9zTmFtZSYmdGhpcy53aW5kb3dSZWYmJih0aGlzLndpbmRvd1JlZi5wYXJlbnQ/LnNjcm9sbFRvKHRoaXMud2luZG93UmVmLnBhcmVudC5zY3JvbGxYLHRoaXMud2luZG93UmVmLnBhcmVudC5zY3JvbGxZLTEpLHRoaXMud2luZG93UmVmLnBhcmVudD8uc2Nyb2xsVG8odGhpcy53aW5kb3dSZWYucGFyZW50LnNjcm9sbFgsdGhpcy53aW5kb3dSZWYucGFyZW50LnNjcm9sbFkrMSkpfWNhdGNoe319KSwoMCxpLkEpKHRoaXMsIm9uUGFzdGUiLGU9PntpZighdGhpcy5wcm9wcy5maWxlVXBsb2FkRW5hYmxlZClyZXR1cm47aWYoMD09PWUuY2xpcGJvYXJkRGF0YT8uZmlsZXM/Lmxlbmd0aClyZXR1cm47ZS5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IHQ9QXJyYXkuZnJvbShlLmNsaXBib2FyZERhdGEuZmlsZXMpWzBdO3RoaXMucHJvcHMubmV3TWVzc2FnZURpc2FibGVkJiZ0aGlzLnByb3BzLmRpc3BhdGNoKCgwLGsuUzc5KSgoMCx5LnB3KSgibmV3TWVzc2FnZURpc2FibGVkQWxlcnQiLG51bGwsIlBsZWFzZSBlbnRlciB5b3VyIGVtYWlsIGZpcnN0LiIpKSksdGhpcy5wcm9wcy5kaXNwYXRjaCgoMCxrLlNCUSkoZXQoKSgpLHQpKX0pLCgwLGkuQSkodGhpcywiZml4QWN0aXZlRWxlbWVudCIsKCk9Pnt0cnl7Y29uc3QgZT13YSh3aW5kb3cucGFyZW50LmRvY3VtZW50KSx0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LnBhcmVudC5Eb2N1bWVudC5wcm90b3R5cGUsImFjdGl2ZUVsZW1lbnQiKTt0aGlzLm9yaWdpbmFsQWN0aXZlRWxlbWVudERlc2NyaXB0b3I9dHx8bnVsbCxPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LnBhcmVudC5kb2N1bWVudCwiYWN0aXZlRWxlbWVudCIse3ZhbHVlOmUsd3JpdGFibGU6ITEsY29uZmlndXJhYmxlOiEwfSl9Y2F0Y2h7fX0pLCgwLGkuQSkodGhpcywicmV2ZXJ0QWN0aXZlRWxlbWVudCIsKCk9Pnt0cnl7dGhpcy5vcmlnaW5hbEFjdGl2ZUVsZW1lbnREZXNjcmlwdG9yJiZPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LnBhcmVudC5kb2N1bWVudCwiYWN0aXZlRWxlbWVudCIsdGhpcy5vcmlnaW5hbEFjdGl2ZUVsZW1lbnREZXNjcmlwdG9yKX1jYXRjaHt9fSksKDAsaS5BKSh0aGlzLCJvbkZvY3VzIiwoKT0+e3RoaXMucHJvcHMuaXNOZXdTa2luJiYodGhpcy5maXhBY3RpdmVFbGVtZW50KCksKCgpPT57dHJ5e3dpbmRvdy5wYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsa2EsITApLHdpbmRvdy5wYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLGthLCEwKSx3aW5kb3cucGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNzIixrYSwhMCksd2luZG93LnBhcmVudC5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmVpbnB1dCIsa2EsITApfWNhdGNoe319KSgpKSwhdGhpcy5wcm9wcy5uZXdNZXNzYWdlRGlzYWJsZWQmJnRoaXMucHJvcHMuaXNNb2JpbGUmJnRoaXMucHJvcHMuZGlzcGF0Y2goKDAsay5FM1MpKCEwKSl9KSwoMCxpLkEpKHRoaXMsIm9uQmx1ciIsZT0+e3RoaXMucHJvcHMuaXNOZXdTa2luJiYodGhpcy5yZXZlcnRBY3RpdmVFbGVtZW50KCksKCgpPT57dHJ5e3dpbmRvdy5wYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsa2EsITApLHdpbmRvdy5wYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLGthLCEwKSx3aW5kb3cucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXByZXNzIixrYSwhMCksd2luZG93LnBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJiZWZvcmVpbnB1dCIsa2EsITApfWNhdGNoe319KSgpKSwhdGhpcy5wcm9wcy5uZXdNZXNzYWdlRGlzYWJsZWQmJnRoaXMucHJvcHMuaXNNb2JpbGUmJiJzZW5kLWJ1dHRvbiIhPT1lLnJlbGF0ZWRUYXJnZXQ/LmlkJiZzZXRUaW1lb3V0KCgpPT57dGhpcy5wcm9wcy5kaXNwYXRjaCgoMCxrLkUzUykoITEpKSx0aGlzLmZpeFdlYnZpZXdUb3VjaEFyZWFzKCl9LDEwMCl9KX1jb21wb25lbnREaWRNb3VudCgpe2lmKHNldFRpbWVvdXQoKCk9Pnt0aGlzLmlucHV0UmVmJiYodGhpcy5pbml0aWFsSW5wdXRTY3JvbGxIZWlnaHQ9dGhpcy5pbnB1dFJlZi5zY3JvbGxIZWlnaHQpfSwwKSxzZXRUaW1lb3V0KCgpPT57IXRoaXMucHJvcHMubmV3TWVzc2FnZURpc2FibGVkJiZudWxsIT09dGhpcy5wcm9wcy5ibG9ja2VkTWVzc2FnZSYmdGhpcy5yZXN0b3JlTWVzc2FnZSgpfSwwKSx0aGlzLmlucHV0UmVmKXtjb25zdHtwbGFjZWhvbGRlcjplLG9mZnNldFdpZHRoOnR9PXRoaXMuaW5wdXRSZWY7dGhpcy5vbGRQbGFjZWhvbGRlcj1lLHlhKGUsdCkmJnRoaXMuc2V0U3RhdGUoe2lucHV0Um93czoyLGlzUGxhY2Vob2xkZXJUb0xvbmc6ITB9KX19c3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhlLHQpe3JldHVybiBlLm5ld01lc3NhZ2VFbW9qaT8oZS5kaXNwYXRjaCgoMCxrLmVTTCkoKSkse2lucHV0OnQuaW5wdXQrZS5uZXdNZXNzYWdlRW1vaml9KTplLmJsb2NrZWRNZXNzYWdlJiZlLm5ld01lc3NhZ2VEaXNhYmxlZD97aW5wdXQ6ZS5ibG9ja2VkTWVzc2FnZX06bnVsbH1jb21wb25lbnREaWRVcGRhdGUoZSl7aWYodGhpcy5wcm9wcy5zZW5kVmlzaXRvck1lc3NhZ2VGbGFnJiYhZS5zZW5kVmlzaXRvck1lc3NhZ2VGbGFnJiZ0aGlzLnNlbmRNZXNzYWdlKCksdGhpcy5pbnB1dFJlZil7Y29uc3R7cGxhY2Vob2xkZXI6ZSxvZmZzZXRXaWR0aDp0fT10aGlzLmlucHV0UmVmO3RoaXMub2xkUGxhY2Vob2xkZXIhPT1lJiYodGhpcy5vbGRQbGFjZWhvbGRlcj1lLHlhKGUsdCk/dGhpcy5zZXRTdGF0ZSh7aW5wdXRSb3dzOjIsaXNQbGFjZWhvbGRlclRvTG9uZzohMH0pOnRoaXMuc2V0U3RhdGUoe2lzUGxhY2Vob2xkZXJUb0xvbmc6ITF9KSl9bnVsbD09PXRoaXMucHJvcHMuYmxvY2tlZE1lc3NhZ2UmJm51bGwhPT1lLmJsb2NrZWRNZXNzYWdlJiZ0aGlzLnNldFN0YXRlKHtpbnB1dDoiIn0pfWNvbXBvbmVudFdpbGxVbm1vdW50KCl7Y29uc3R7aW5wdXQ6ZX09dGhpcy5zdGF0ZTsiIiE9PWUmJnRoaXMucHJvcHMuZGlzcGF0Y2goKDAsay5TOGgpKGUpKX1yZW5kZXIoKXtjb25zdHtsYXN0TWVzc2FnZTplLG5ld01lc3NhZ2VEaXNhYmxlZDp0LGhhc0Nvbm5lY3Rpb25Jc3N1ZXM6bixzaG93VXNlckRhdGFNb2RhbDppfT10aGlzLnByb3BzLGE9dGhpcy5wcm9wcy5wZW5kaW5nQXR0YWNobWVudHM/LnNvbWUoZT0+InVwbG9hZGluZyI9PT1lLnVwbG9hZFN0YXR1cyksbz10aGlzLnByb3BzLnBlbmRpbmdBdHRhY2htZW50cz8uc29tZShlPT4idXBsb2FkZWQiPT09ZS51cGxvYWRTdGF0dXMpLHI9IiI9PT10aGlzLnN0YXRlLmlucHV0JiYhb3x8YTtyZXR1cm4oMCxWLlkpKE9uLHt2YWx1ZTpbImNsaWNrVG9Qcm92aWRlRW1haWwiLCJvbmxpbmVNZXNzYWdlUGxhY2Vob2xkZXIiLCJoaXRUaGVCdXR0b25zIiwiZmlsbE91dFRoZUZvcm0iXSxjaGlsZHJlbjphPT57bGV0e2NsaWNrVG9Qcm92aWRlRW1haWw6byxvbmxpbmVNZXNzYWdlUGxhY2Vob2xkZXI6cyxoaXRUaGVCdXR0b25zOmwsZmlsbE91dFRoZUZvcm06ZH09YSxjPXM7cmV0dXJuIHQ/bj9jPXM6aSYmKGM9byk6KGU9PntpZighZSlyZXR1cm4hMTtjb25zdCB0PWUudHlwZT09PXJpLnRfLmNhcmRzJiYibnVtYmVyIiE9dHlwZW9mIGUub3BlcmF0b3JfaWQsbj1lLnF1aWNrUmVwbGllcyYmZS5xdWlja1JlcGxpZXMubGVuZ3RoPjAsaT1lLmJ1dHRvbnMmJmUuYnV0dG9ucy5sZW5ndGg+MDtyZXR1cm4hISh0fHxufHxpKX0pKGUpJiYhdGhpcy5wcm9wcy5pc0xhc3RNZXNzYWdlMjRoJiYoYz1sKSxlPy50eXBlPT09dHQuR28uRk9STSYmKGM9ZCksKDAsVi5GRCkoImRpdiIse2Nzczp4YSxjaGlsZHJlbjpbKDAsVi5ZKSgidGV4dGFyZWEiLHtpZDoibmV3LW1lc3NhZ2UtdGV4dGFyZWEiLHZhbHVlOnRoaXMuc3RhdGUuaW5wdXQsb25DaGFuZ2U6dGhpcy5vbklucHV0Q2hhbmdlLG9uS2V5RG93bjp0aGlzLm9uS2V5RG93bixvbkNvbXBvc2l0aW9uU3RhcnQ6dGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQsb25Db21wb3NpdGlvbkVuZDp0aGlzLm9uQ29tcG9zaXRpb25FbmQsb25DbGljazp0aGlzLm9uQ2xpY2sscmVmOnRoaXMuc2V0SW5wdXRSZWYscm93czp0aGlzLnN0YXRlLmlucHV0Um93cyxwbGFjZWhvbGRlcjpjLG9uRm9jdXM6dGhpcy5vbkZvY3VzLG9uQmx1cjp0aGlzLm9uQmx1cixyZWFkT25seTp0LGNsYXNzTmFtZTpgJHt0PyJkaXNhYmxlZCI6IiJ9ICR7dGhpcy5wcm9wcy5zaGFrZUNsYXNzTmFtZX1gLCJhcmlhLWxhYmVsIjooMCx5LnB3KSgibmV3TWVzc2FnZSIsbnVsbCwiTmV3IG1lc3NhZ2UiKSwiZGF0YS10ZXN0aWQiOiJuZXdNZXNzYWdlVGV4dGFyZWEiLG9uUGFzdGU6dGhpcy5vblBhc3RlLHN0eWxlOntwYWRkaW5nOiIxNnB4IDAifSxjc3M6aHQoQm9vbGVhbih0aGlzLnByb3BzLmlzTmV3U2tpbikpLnRleHQxNH0pLHRoaXMucHJvcHMuaXNOZXdTa2luPygwLFYuWSkoYmEse2Rpc2FibGVkOnJ9KTohciYmKDAsVi5ZKShiYSx7ZGlzYWJsZWQ6ITF9KV19KX19KX19Y29uc3QgQ2E9KDAsci5OZykoZT0+KHtuZXdNZXNzYWdlRW1vamk6ZS5uZXdNZXNzYWdlRW1vamksaXNNb2JpbGU6ZS5pc01vYmlsZSxzZW5kVmlzaXRvck1lc3NhZ2VGbGFnOmUuc2VuZFZpc2l0b3JNZXNzYWdlRmxhZyxpc0Vtb2ppUGFuZWxWaXNpYmxlOmUuaXNFbW9qaVBhbmVsVmlzaWJsZSxuZXdNZXNzYWdlRGlzYWJsZWQ6KDAsQy5vNCkoZSksYmxvY2tlZE1lc3NhZ2U6ZS5ibG9ja2VkTWVzc2FnZSxsYXN0TWVzc2FnZTooMCxDLnN5KShlKSxpc0xhc3RNZXNzYWdlMjRoOigwLEMuajYpKGUpLGhhc0Nvbm5lY3Rpb25Jc3N1ZXM6KDAsQy5QOCkoZSksc2hvd1VzZXJEYXRhTW9kYWw6ZS5zaG93VXNlckRhdGFNb2RhbCxwZW5kaW5nQXR0YWNobWVudHM6ZS5wZW5kaW5nQXR0YWNobWVudHN9KSkoKEVhPUFhLGNsYXNzIGV4dGVuZHMgYS5Db21wb25lbnR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLCgwLGkuQSkodGhpcywic3RhdGUiLHtzaGFrZUNsYXNzTmFtZToiIn0pLCgwLGkuQSkodGhpcywiY2xlYXJJZCIsbnVsbCksKDAsaS5BKSh0aGlzLCJpc01vdW50ZWQiLCExKSwoMCxpLkEpKHRoaXMsInRyaWdnZXJTaGFrZSIsKCk9Pnt0aGlzLnNldFN0YXRlKHtzaGFrZUNsYXNzTmFtZToic2hha2UifSksY2xlYXJUaW1lb3V0KHRoaXMuY2xlYXJJZCksdGhpcy5jbGVhcklkPW51bGwsdGhpcy5jbGVhcklkPXNldFRpbWVvdXQoKCk9Pnt0aGlzLmlzTW91bnRlZCYmdGhpcy5zZXRTdGF0ZSh7c2hha2VDbGFzc05hbWU6IiJ9KX0sODIwKX0pfWNvbXBvbmVudERpZE1vdW50KCl7dGhpcy5pc01vdW50ZWQ9ITB9Y29tcG9uZW50V2lsbFVubW91bnQoKXt0aGlzLmlzTW91bnRlZD0hMX1yZW5kZXIoKXtjb25zdCBlPXt0cmlnZ2VyU2hha2U6dGhpcy50cmlnZ2VyU2hha2Usc2hha2VDbGFzc05hbWU6dGhpcy5zdGF0ZS5zaGFrZUNsYXNzTmFtZX07cmV0dXJuKDAsVi5ZKShFYSx7Li4udGhpcy5wcm9wcywuLi5lfSl9fSkpO3ZhciBFYTt2YXIgU2E9ZT0+e2NvbnN0e2lzTmV3U2tpbjp0fT0oMCxwLkEpKCk7cmV0dXJuKDAsVi5ZKShDYSx7Li4uZSxpc05ld1NraW46dH0pfTtjb25zdCBEYT1lPT4oMCxkLkFIKSh7bGVmdDplPyJjYWxjKDEwMCUgLSAxNHB4KSI6ImNhbGMoMTAwJSAtIDE4cHgpIn0sIiIsIiIpLFlhPSgwLGQuQUgpKHtoZWlnaHQ6MzgscG9zaXRpb246InJlbGF0aXZlIix3aWR0aDoiMTAwJSIsZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoicm93IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIiwiLmdyaWQtbGF5b3V0ICYiOntoZWlnaHQ6MzB9LGNvbG9yOiIjNEM1OTZCIiwiLmZvb3Rlci1pY29ucy13cmFwcGVyIjp7bWFyZ2luSW5saW5lU3RhcnQ6LTh9LCIubW9iaWxlICYiOnsiKiArICoiOnttYXJnaW5JbmxpbmVTdGFydDowfSwiLmZvb3Rlci1pY29ucy13cmFwcGVyIjp7bWFyZ2luSW5saW5lU3RhcnQ6LTh9fX0sIiIsIiIpLFRhPXtuYW1lOiJhazRqMWgiLHN0eWxlczoiJi5oaWRkZW57ZGlzcGxheTpub25lO30ifSxGYT0oMCxkLkFIKSh7Y29sb3I6IiM2NDc0OTEiLCIqICsgKiI6e21hcmdpbklubGluZVN0YXJ0OjR9LCIuZm9vdGVyLWljb25zLXdyYXBwZXIiOnttYXJnaW5JbmxpbmVTdGFydDowfSwiLm1vYmlsZSAmIjp7IiogKyAqIjp7bWFyZ2luSW5saW5lU3RhcnQ6MH0sIi5mb290ZXItaWNvbnMtd3JhcHBlciI6e21hcmdpbklubGluZVN0YXJ0Oi04fX19LCIiLCIiKTt2YXIgSWE9ZT0+e2xldHtoYXNTZXBhcmF0b3I6dD0hMX09ZTtjb25zdCBuPSgwLGEudXNlUmVmKShudWxsKSxpPSgwLHIud0EpKCksbz0oMCxyLmQ0KShlPT5lLmlzRW1vamlQYW5lbFZpc2libGUpLHM9KDAsci5kNCkoZT0+ZS5pc01vYmlsZSksbD0oMCxyLmQ0KShDLm80KSxjPSgwLHIuZDQpKEMuRl8pLHU9KDAsci5kNCkoZT0+ZS5tZXNzYWdlcyksbT0oMCxyLmQ0KShDLlZRKSxoPSgwLHIuZDQpKEMuZmgpLGc9KDAsci5kNCkoZT0+ZS5hbGxvd0F0dGFjaG1lbnRzKSxiPSgwLHIuZDQpKGU9PmUuYWxsb3dFbW9qaXMpLHY9KDAsci5kNCkoQy5IRSkseD0oMCxyLmQ0KShDLmNmKSx7aXNOZXdTa2luOnd9PSgwLHAuQSkoKSxBPUlpKCksRT1JaSgpLFM9eC5sZW5ndGg+PWYucXUsRD1Cb29sZWFuKEJvb2xlYW4odS5maW5kKGU9PiJ2aXNpdG9yIj09PWUuc2VuZGVyKSkmJiFoJiZnKSxZPWU9PntpZihFLmhhbmRsZUNsaWNrKCksZSl7ISgwPT09ZS5uYXRpdmVFdmVudC5wYWdlWCYmMD09PWUubmF0aXZlRXZlbnQucGFnZVkpJiZvJiZlLmN1cnJlbnRUYXJnZXQuYmx1cigpfWkobD8oMCxrLlM3OSkoKDAseS5wdykoIm5ld01lc3NhZ2VEaXNhYmxlZEFsZXJ0IixudWxsLCJQbGVhc2UgZW50ZXIgeW91ciBlbWFpbCBmaXJzdC4iKSk6KDAsay5IemgpKCFvKSl9O3JldHVybigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6ImlucHV0LWdyb3VwICIrKG0/ImRyYWctYWN0aXZlIjoiIiksY2hpbGRyZW46W2ImJigwLFYuWSkocSx7aW46byxjbGFzc05hbWVzOiJlbW9qaUZhZGUiLHRpbWVvdXQ6MjAwLG1vdW50T25FbnRlcjohMCx1bm1vdW50T25FeGl0OiEwLGFwcGVhcjohMCxjaGlsZHJlbjooMCxWLlkpKEhpLHtpc01vYmlsZTpzLG9uRW1vamlDbGljazplPT57aSgoMCxrLnBPNikobHQuWC5lbW9qaUFkZGVkKSksIm5hdGl2ZSJpbiBlJiZpKCgwLGsuZVNMKShlLm5hdGl2ZSkpfSxoYW5kbGVFbW9qaVBhbmVsOll9KX0pLCgwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6ImRyYWctYWN0aXZlLXdyYXBwZXIgZm9vdGVyLWlucHV0LXdyYXBwZXIgIisobD8iaGlkZGVuIjoiIiksY3NzOnc/VGE6dm9pZCAwLGNoaWxkcmVuOlt0JiYoMCxWLlkpKCJociIse30pLCgwLFYuWSkoZmEse2F0dGFjaG1lbnRzOngsb25SZW1vdmU6ZT0+e2koKDAsay5QTlEpKGUpKX19KSwoMCxWLlkpKFNhLHtkaXNwYXRjaDppLGZpbGVVcGxvYWRFbmFibGVkOkR9KV19KSwoMCxWLkZEKSgiZGl2Iix7Y3NzOnc/W1lhLEZhXTpbWWFdLGNoaWxkcmVuOlsoMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJmb290ZXItaWNvbnMtd3JhcHBlciAiKyhsPyJoaWRkZW4iOiIiKSxjaGlsZHJlbjpbKDAsVi5ZKShMaSx7fSksKDAsVi5ZKShfaSx7aW46RCxjaGlsZHJlbjooMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6InJpcHBsZSAiKyhsfHxTPyJkaXNhYmxlZCI6IiIpLG9uQ2xpY2s6ZT0+e2lmKEEuaGFuZGxlQ2xpY2soKSwoMCxmLkREKSgpfHwhRClyZXR1cm4hMTtpZihlKXswPT09ZS5uYXRpdmVFdmVudC5wYWdlWCYmMD09PWUubmF0aXZlRXZlbnQucGFnZVl8fGUuY3VycmVudFRhcmdldC5ibHVyKCl9cmV0dXJuIGw/aSgoMCxrLlM3OSkoKDAseS5wdykoIm5ld01lc3NhZ2VEaXNhYmxlZEFsZXJ0IixudWxsLCJQbGVhc2UgZW50ZXIgeW91ciBlbWFpbCBmaXJzdC4iKSkpOihpKCgwLGsucE82KShsdC5YLnVwbG9hZEJ1dHRvbkNsaWNrZWQpKSxuLmN1cnJlbnQmJm4uY3VycmVudC5jbGljaygpKSwhMH0sZGlzYWJsZWQ6UywiYXJpYS1sYWJlbCI6KDAseS5wdykoImF0dGFjaEZpbGUiLG51bGwsIkF0dGFjaCBmaWxlIGJ1dHRvbiIpLGNzczpbTWksTmkudG9vbHRpcEJ1dHRvbigpLCIiLCIiXSxvbk1vdXNlRW50ZXI6QS5oYW5kbGVNb3VzZUVudGVyLGNoaWxkcmVuOlsoMCxWLlkpKHV0LnNvLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2xhc3NOYW1lOiJ0b29sdGlwICIrKEEuaXNDbGlja2VkPyJjbGlja2VkIjoiIiksY3NzOltOaS50b29sdGlwLChUPXcsKDAsZC5BSCkoe2xlZnQ6VD8iY2FsYygxMDAlIC0gMnB4KSI6ImNhbGMoMTAwJSAtIDhweCkifSwiIiwiIikpLCIiLCIiXSxjaGlsZHJlbjooMCx5LnB3KSgiYXR0YWNobWVudCIsbnVsbCwiQXR0YWNobWVudCIpfSldfSl9KSwhcyYmYiYmKDAsVi5GRCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOmBlbW9qaS1zd2l0Y2ggcmlwcGxlICR7bz8iYWN0aXZlIjoiIn0gJHtsPyJkaXNhYmxlZCI6IiJ9YCxvbkNsaWNrOlksImFyaWEtbGFiZWwiOm8/KDAseS5wdykoImNsb3NlRW1vamlQYW5lbCIsbnVsbCwiQ2xvc2UgRW1vamkgcGlja2VyIik6KDAseS5wdykoIm9wZW5FbW9qaVBhbmVsIixudWxsLCJPcGVuIEVtb2ppIHBpY2tlciIpLGNzczpbTWksTmkudG9vbHRpcEJ1dHRvbigpLCIiLCIiXSxvbk1vdXNlRW50ZXI6RS5oYW5kbGVNb3VzZUVudGVyLGNoaWxkcmVuOlsoMCxWLlkpKHV0LmpCLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2xhc3NOYW1lOiJ0b29sdGlwICIrKEUuaXNDbGlja2VkPyJjbGlja2VkIjoiIiksY3NzOltOaS50b29sdGlwLERhKHcpLCIiLCIiXSxjaGlsZHJlbjooMCx5LnB3KSgiZW1vamkiLG51bGwsIkVtb2ppIil9KV19KSwoMCxWLlkpKCJmb3JtIix7Y2hpbGRyZW46KDAsVi5ZKSgiaW5wdXQiLHt0eXBlOiJmaWxlIixzdHlsZTp7ZGlzcGxheToibm9uZSJ9LHJlZjpuLG5hbWU6ImF0dGFjaG1lbnQiLG9uQ2hhbmdlOmU9PntpZihEKXtpZihlLnRhcmdldC5maWxlcyl7Y29uc3QgdD1lLnRhcmdldC5maWxlc1swXTtpKCgwLGsuU0JRKShldCgpKCksdCkpfW4uY3VycmVudCYmKG4uY3VycmVudC52YWx1ZT0iIil9fSwiYXJpYS1sYWJlbCI6KDAseS5wdykoImF0dGFjaEZpbGUiLG51bGwsIkF0dGFjaCBmaWxlIGlucHV0Iil9KX0pXX0pLChjfHxCb29sZWFuKHYpKSYmKDAsVi5ZKShLaSx7fSldfSldfSk7dmFyIFR9O3ZhciBfYT0oMCxkLkFIKSh7IiYmIjp7d2lkdGg6NDAsaGVpZ2h0OjQwLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsY29sb3I6InZhcigtLWN1c3RvbS10ZXh0LWNvbG9yKSIsc3ZnOnt3aWR0aDoyNCxoZWlnaHQ6MjQsZmlsbDoiY3VycmVudENvbG9yIix0cmFuc2l0aW9uOiJhbGwgMC4xNnMgZWFzZS1pbi1vdXQifSxwb3NpdGlvbjoicmVsYXRpdmUiLG91dGxpbmU6Im5vbmUiLCIubW9iaWxlICYiOnt3aWR0aDo0NCxoZWlnaHQ6NDR9LCImOjpiZWZvcmUiOntjb250ZW50OiciIicscG9zaXRpb246ImFic29sdXRlIixiYWNrZ3JvdW5kOiIjMDgwRjFBMjkiLHdpZHRoOjQwLGhlaWdodDo0MCxib3JkZXJSYWRpdXM6IjUwJSIsekluZGV4Oi0xLHRyYW5zaXRpb246ImFsbCAwLjE2cyBlYXNlLWluLW91dCIsdHJhbnNmb3JtOiJzY2FsZSgwKSIsdG9wOiJjYWxjKDUwJSAtIDIwcHgpIixsZWZ0OiJjYWxjKDUwJSAtIDIwcHgpIn0sIkBtZWRpYSAoaG92ZXI6IGhvdmVyKSI6eyImOmhvdmVyOjpiZWZvcmUiOnt0cmFuc2Zvcm06InNjYWxlKDEpIn19LCIuZ3JpZC1sYXlvdXQ6bm90KC5tb2JpbGUpICYiOnt3aWR0aDoyOCxoZWlnaHQ6MjgsY29sb3I6ImN1cnJlbnRDb2xvciIsc3ZnOnt3aWR0aDoyMCxoZWlnaHQ6MjB9LCImOjpiZWZvcmUiOnt3aWR0aDoyOCxoZWlnaHQ6MjgsdHJhbnNmb3JtOiJzY2FsZSgxKSIsdG9wOiJjYWxjKDUwJSAtIDE0cHgpIixsZWZ0OiJjYWxjKDUwJSAtIDE0cHgpIixiYWNrZ3JvdW5kOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLWJhY2tncm91bmQpIixib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1zbWFsbC1jb21wb25lbnQsIDhweCkiLG9wYWNpdHk6MH0sIiY6aG92ZXIiOntjb2xvcjoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcikiLCImOjpiZWZvcmUiOntvcGFjaXR5OjF9fX0sIi5ncmlkLWxheW91dDpub3QoLm1vYmlsZSkgLmNoYXQtaGVhZGVyICYiOntjb2xvcjoidmFyKC0tY3VzdG9tLXRleHQtY29sb3IpIiwiJjo6YmVmb3JlIjp7YmFja2dyb3VuZDoiIzA4MEYxQTI5In0sIiY6aG92ZXIiOntjb2xvcjoidmFyKC0tY3VzdG9tLXRleHQtY29sb3IpIn19fX0sIiIsIiIpO3ZhciBNYT17bmFtZToiYTRxMmUyIixzdHlsZXM6InNwYW57YmFja2dyb3VuZDojZmZmO3BhZGRpbmc6NnB4IDhweDtib3JkZXItcmFkaXVzOjRweDtib3gtc2hhZG93OjBweCA4cHggMjBweCAwcHggcmdiYSgwLCAyNywgNzEsIDAuMjQpO2ZvbnQtc2l6ZToxM3B4O3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lO3doaXRlLXNwYWNlOm5vd3JhcDt0cmFuc2l0aW9uOmFsbCAwLjE2cyBlYXNlLWluLW91dDt6LWluZGV4OjE7dG9wOjUwJTtjb2xvcjojMDYxMzJiO21hcmdpbi1pbmxpbmUtZW5kOjEwcHg7aW5zZXQtaW5saW5lLWVuZDoxMDAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoNXB4LCAtNTAlKTt9QG1lZGlhIChob3ZlcjogaG92ZXIpeyY6aG92ZXJ7c3BhbntvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC01MCUpO319fSJ9O3ZhciBOYT1lPT4oMCxkLkFIKSh7cG9zaXRpb246ImFic29sdXRlIixiYWNrZ3JvdW5kOiIjZmZmIixib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1zbWFsbC1jb21wb25lbnQsIDhweCkiLGJveFNoYWRvdzplPyIwcHggMnB4IDJweCAwcHggcmdiYSg4LCAxNSwgMjYsIDAuMTIpLCAwcHggMnB4IDhweCAwcHggcmdiYSg4LCAxNSwgMjYsIDAuMDgpIjoiMCA2cHggMzJweCAwIHJnYmEoMCwgMTgsIDQ2LCAwLjE2KSIscGFkZGluZzplPyI0cHgiOiIxMnB4IDZweCIsekluZGV4OjYscmlnaHQ6ZT8iMThweCI6IjI0cHgiLHVsOnttYXJnaW46MCxwYWRkaW5nOjB9LGxpOntib3JkZXJSYWRpdXM6IjZweCIsZGlzcGxheToiZmxleCJ9LGJ1dHRvbjp7cGFkZGluZzplPyI4cHgiOiI4cHggMTZweCIsZGlzcGxheToiZmxleCIsbWFyZ2luOjAscG9zaXRpb246ImluaXRpYWwiLGZsb2F0OiJpbml0aWFsIix3aWR0aDoiMTAwJSIsYm9yZGVyUmFkaXVzOiI2cHgiLGFsaWduSXRlbXM6ImNlbnRlciIsIiY6aG92ZXIsICY6Zm9jdXMiOnsiJjpub3QoLm1vYmlsZSksICNib2R5Om5vdCgubW9iaWxlKSAmIjp7YmFja2dyb3VuZDoiI2VmZjJmNiJ9fSxzdmc6e2ZpbGw6IiM4ODk0YWIiLGhlaWdodDoiMjBweCIsd2lkdGg6IjIwcHgifSxzcGFuOnttYXJnaW5MZWZ0OiI4cHgiLGNvbG9yOiIjMDYxMzJiIn0sIiY6OmJlZm9yZSI6e2NvbnRlbnQ6Im5vbmUifX19LCIiLCIiKTt2YXIgT2E9KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShlPT5lLnNob3dPcHRpb25zRHJvcGRvd24pLG49KDAsci5kNCkoZT0+ZS5ub3RpZmljYXRpb25Tbm9vemVkKSxpPSgwLHIuZDQpKGU9PmUuaXNTb3VuZEVuYWJsZWQpLG89KDAsci5kNCkoZT0+ZS5pc01vYmlsZSkscz0oMCxyLmQ0KShDLk8xKSx7aXNOZXdTa2luOmx9PSgwLHAuQSkoKSxkPWh0KGwpLHU9KDAsYS51c2VDYWxsYmFjaykoKCk9PntlKCgwLGsuWjlxKSghMSkpLGUoKDAsay52YWIpKCFuKSl9LFtuLGVdKSxmPSgwLGEudXNlQ2FsbGJhY2spKHQ9PntlKCgwLGsuWjlxKSh0KSl9LFtlXSksbT0oMCxhLnVzZU1lbW8pKCgpPT57bGV0IGU9NzI7cmV0dXJuIGwmJihlPSJjb252ZXJzYXRpb25zIj09PXM/NTI6NjQpLG8mJihlPTYwKSxlfSxbbCxvLHNdKSxoPSgwLGMucG4pKHQmJmkse2Zyb206e29wYWNpdHk6LjAxLHRvcDptLTEwfSxlbnRlcjp7b3BhY2l0eToxLHRvcDptLGNvbmZpZzp7dGVuc2lvbjoxMjAsZnJpY3Rpb246MTR9fSxsZWF2ZTp7b3BhY2l0eTouMDEsY29uZmlnOntkdXJhdGlvbjoxMH19fSk7cmV0dXJuKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46W2kmJigwLFYuRkQpKCJidXR0b24iLHtjbGFzc05hbWU6Im9wdGlvbnMgcmlwcGxlIixvbkNsaWNrOm49PnshKDA9PT1uLm5hdGl2ZUV2ZW50LnBhZ2VYJiYwPT09bi5uYXRpdmVFdmVudC5wYWdlWSkmJnQmJm4uY3VycmVudFRhcmdldC5ibHVyKCksZSgoMCxrLnBPNikobHQuWC5vcHRpb25zQnV0dG9uQ2xpY2tlZCkpO2NvbnN0IGk9IXQ7ZSgoMCxrLlo5cSkoaSkpLHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoImNvbnZlcnNhdGlvbk9wdGlvbnNCdXR0b25DbGljayIse3R5cGU6aT8ib3BlbiI6ImNsb3NlIn0pfSxvbkJsdXI6KCk9PntlKCgwLGsuWjlxKSghMSkpfSx0eXBlOiJidXR0b24iLCJhcmlhLWxhYmVsIjp0PygwLHkucHcpKCJjbG9zZU9wdGlvbnMiLG51bGwsIkNsb3NlIG9wdGlvbnMiKTooMCx5LnB3KSgib3Blbk9wdGlvbnMiLG51bGwsIk9wZW4gb3B0aW9ucyIpLGNzczpbX2EsTWEsIiIsIiJdLGNoaWxkcmVuOltsPygwLFYuWSkodXQudHgse30pOigwLFYuWSkodXQuSlkse30pLCgwLFYuWSkoInNwYW4iLHtjaGlsZHJlbjp0PygwLHkucHcpKCJjbG9zZU9wdGlvbnMiLG51bGwsIkNsb3NlIG9wdGlvbnMiKTooMCx5LnB3KSgib3Blbk9wdGlvbnMiLG51bGwsIk9wZW4gb3B0aW9ucyIpfSldfSksaCgoZSx0KT0+dD8oMCxWLlkpKGMuQ1MuZGl2LHtzdHlsZTplLGNzczpOYShsKSxjaGlsZHJlbjooMCxWLlkpKCJ1bCIse2NoaWxkcmVuOm4/KDAsVi5ZKSgibGkiLHtjaGlsZHJlbjooMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6Im1hdGVyaWFsLWljb25zIixvbkNsaWNrOnUsb25Gb2N1czooKT0+e2YoITApfSxvbkJsdXI6KCk9PntmKCExKX0sY2hpbGRyZW46W2w/KDAsVi5ZKSh1dC5jMCx7fSk6KDAsVi5ZKSh1dC5XVCx7fSksKDAsVi5ZKSgic3BhbiIse2NzczpkLnRleHQxNCxjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToidHVybk9uTm90aWZpY2F0aW9ucyJ9KX0pXX0pfSk6KDAsVi5ZKSgibGkiLHtjaGlsZHJlbjooMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6Im1hdGVyaWFsLWljb25zIixvbkNsaWNrOnUsb25Gb2N1czooKT0+e2YoITApfSxvbkJsdXI6KCk9PntmKCExKX0sY2hpbGRyZW46W2w/KDAsVi5ZKSh1dC5tMix7fSk6KDAsVi5ZKSh1dC5vSCx7fSksKDAsVi5ZKSgic3BhbiIse2NzczpkLnRleHQxNCxjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToidHVybk9mZk5vdGlmaWNhdGlvbnMifSl9KV19KX0pfSl9KTpudWxsKV19KX07dmFyIFJhPSgpPT57Y29uc3QgZT0oMCxyLmQ0KShDLnE2KSx0PSgwLHIuZDQpKEMubW0pLG49KDAsci5kNCkoQy5LKSxpPSgwLGEudXNlTWVtbykoKCk9PmUubWFwKGU9Pntjb25zdCBpPXQuZmluZCh0PT50LmlkPT09ZSk7aWYoIWkpcmV0dXJuO2NvbnN0IGE9bi5maW5kKHQ9PnQuaWQ9PT1lKTtyZXR1cm4gYT97Li4uaSxuYW1lOmEubmFtZX06ey4uLmksbmFtZToiIn19KS5maWx0ZXIoZT0+dm9pZCAwIT09ZSkuc2xpY2UoMCwzKSxbZSx0LG5dKSxvPSgwLGEudXNlTWVtbykoKCk9Pnt0cnl7aWYoMD09PWkubGVuZ3RoKXJldHVybiJceGEwIjtpZigxPT09aS5sZW5ndGgpcmV0dXJuIGlbMF0ubmFtZTtjb25zdCBlPWkubWFwKGU9PmUubmFtZSksdD1lLnNwbGljZSgtMikuam9pbihgICR7KDAseS5wdykoIndpZGdldEhlYWRlckFuZCIsbnVsbCwiYW5kIil9IGApO3JldHVyblsuLi5lLHRdLmpvaW4oIiwgIil9Y2F0Y2goZSl7cmV0dXJuKDAsdi5zUSkoZSksIlx4YTAifX0sW2ldKTtyZXR1cm57YXNzaWduZWRPcGVyYXRvcnNEYXRhOmksYXNzaWduZWRPcGVyYXRvcnNOYW1lczpvfX07Y29uc3QgamE9e25hbWU6IjF3b3RsbTMiLHN0eWxlczoiZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxvYXQ6bGVmdDsmID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpe21hcmdpbi1pbmxpbmUtc3RhcnQ6LTRweDt9In0sUGE9e25hbWU6Imw0MW56eSIsc3R5bGVzOiJoZWlnaHQ6OHB4In07dmFyIHphPWU9PntsZXR7b3BlcmF0b3JzOnQsb3BlblRhYjpuLHdpdGhCYWNrZ3JvdW5kQ29sb3I6aX09ZTtjb25zdHtpc05ld1NraW46YX09KDAscC5BKSgpLG89dC5zbGljZSgwLDMpO3JldHVybigwLFYuRkQpKCJkaXYiLHtjaGlsZHJlbjpbImhvbWUiPT09biYmIWEmJigwLFYuWSkoImRpdiIse2NzczpQYX0pLCgwLFYuWSkoImRpdiIse2NzczpqYSxjaGlsZHJlbjpvLm1hcChlPT4oMCxWLlkpKEtuLHthdmF0YXJTcmM6ZS5hdmF0YXJTcmMsY2xhc3NOYW1lOiJoZWFkZXItYXZhIixzaXplOiJob21lIiE9PW58fGE/MzI6MzYsd2l0aEJhY2tncm91bmRDb2xvcjppfSxlLmlkKSl9KV19KX07Y29uc3QgTGE9e25hbWU6IjFyNm9qbHciLHN0eWxlczoiZm9udC13ZWlnaHQ6NjAwO21hcmdpbjowO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO21heC13aWR0aDpjYWxjKDEwMCUgLSAxNDVweCk7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoxOXB4O2ZsZXgtZ3JvdzoxIn0sVWE9e25hbWU6IjFlYXRicTMiLHN0eWxlczoiZmxleC1ncm93OjE7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO2FsaWduLWl0ZW1zOmNlbnRlcjtzdmd7aGVpZ2h0OjE2cHg7d2lkdGg6MTZweDt9In0sQmE9e25hbWU6IjR6bGVxbCIsc3R5bGVzOiJkaXNwbGF5OmJsb2NrIn07dmFyIEhhPSgpPT57Y29uc3R7YXNzaWduZWRPcGVyYXRvcnNEYXRhOmUsYXNzaWduZWRPcGVyYXRvcnNOYW1lczp0fT1SYSgpLG49KDAsci5kNCkoQy5tbSksaT0oMCxyLmQ0KShDLkxkKSxhPSgwLHIuZDQpKEMuTzEpLHtpc05ld1NraW46b309KDAscC5BKSgpLHM9aHQobyk7cmV0dXJuIGUubGVuZ3RoPygwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKHphLHtvcGVyYXRvcnM6ZSxvcGVuVGFiOmF9KSwoMCxWLkZEKSgiaDIiLHtjc3M6W0xhLHMudGV4dDE0TWVkaXVtLCIiLCIiXSxjaGlsZHJlbjpbIW8mJigwLFYuRkQpKCJzcGFuIix7Y3NzOkJhLGNoaWxkcmVuOlsoMCxWLlkpKE9uLHt2YWx1ZToiY2hhdFdpdGgiLGZhbGxiYWNrOiJDaGF0IHdpdGgifSksIiAiXX0pLHRdfSldfSk6aT8oMCxWLlkpKCJkaXYiLHtjc3M6W1VhLHMudGV4dDE0TWVkaXVtLCIiLCIiXSxjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToibmV3V2lkZ2V0SGVhZGVyVGV4dCIsZmFsbGJhY2s6Ilx4YTAiLGVtb2ppZnk6ITB9KX0pOigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKHphLHtvcGVyYXRvcnM6bixvcGVuVGFiOmF9KSwoMCxWLlkpKCJkaXYiLHtjc3M6W1VhLHMudGV4dDE0TWVkaXVtLCIiLCIiXSxjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToibmV3V2lkZ2V0SGVhZGVyVGV4dCIsZmFsbGJhY2s6Ilx4YTAiLGVtb2ppZnk6ITB9KX0pXX0pfTtjb25zdCBxYT17bmFtZToiODhxbDluIixzdHlsZXM6IkBtZWRpYSAobWF4LWhlaWdodDogODk5cHgpe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7fSJ9O3ZhciBWYT1lPT57bGV0e2NoYXRWaWV3UmVmOnR9PWU7Y29uc3Qgbj0oMCxyLmQ0KShDLk55KSxbaSxvXT0oMCxhLnVzZVN0YXRlKSghMSk7cmV0dXJuIG4/bnVsbDppPygwLFYuRkQpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNzczpbX2EsTWEscWEsIiIsIiJdLCJhcmlhLWxhYmVsIjooMCx5LnB3KSgiY29sbGFwc2UiLG51bGwsIkNvbGxhcHNlIiksb25DbGljazooKT0+e3QuY3VycmVudD8uc3R5bGUuc2V0UHJvcGVydHkoImhlaWdodCIsIjcwMHB4IiksbyghMSl9LGNoaWxkcmVuOlsoMCxWLlkpKHV0LmRMLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoImNvbGxhcHNlIixudWxsLCJDb2xsYXBzZSIpfSldfSk6KDAsVi5GRCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY3NzOltfYSxNYSxxYSwiIiwiIl0sImFyaWEtbGFiZWwiOigwLHkucHcpKCJleHBhbmQiLG51bGwsIkV4cGFuZCIpLG9uQ2xpY2s6KCk9Pnt0LmN1cnJlbnQ/LnN0eWxlLnNldFByb3BlcnR5KCJoZWlnaHQiLCIxMDAlIiksbyghMCl9LGNoaWxkcmVuOlsoMCxWLlkpKHV0Lm1TLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoImV4cGFuZCIsbnVsbCwiRXhwYW5kIil9KV19KX07dmFyICRhPXtvcHRpb25zOntuYW1lOiIxeXlkeGk3IixzdHlsZXM6ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweCJ9LG9wdGlvbnNDaGF0T2xkOntuYW1lOiI0enVtMDQiLHN0eWxlczoibWFyZ2luLXRvcDotNHB4In0sb3B0aW9uc0J1dHRvbnM6e25hbWU6IjFrNTR5bXEiLHN0eWxlczoiaGVpZ2h0OjQwcHg7bWFyZ2luLWlubGluZS1zdGFydDphdXRvO21hcmdpbi1pbmxpbmUtZW5kOi0xMnB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTthbGlnbi1pdGVtczpjZW50ZXI7Lm1vYmlsZSAme21hcmdpbi1pbmxpbmUtZW5kOjA7fSJ9LHdhdmU6e25hbWU6IjNiZDE3eiIsc3R5bGVzOiJAbWVkaWEgKG1pbi13aWR0aDogNTk0cHgpe2Rpc3BsYXk6bm9uZTt9c3Zne3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOmNhbGMoMTAwJSArIDEwcHgpO2JvdHRvbTotMTJweDtsZWZ0Oi00cHg7fSJ9LGJhY2tCdXR0b246e25hbWU6ImZ2NTRnbyIsc3R5bGVzOiJtYXJnaW4taW5saW5lLXN0YXJ0Oi0xNHB4O3NwYW57dG9wOjUwJTtpbnNldC1pbmxpbmUtc3RhcnQ6Y2FsYygxMDAlICsgNHB4KTttYXJnaW4taW5saW5lLXN0YXJ0OnVuc2V0O2luc2V0LWlubGluZS1lbmQ6dW5zZXQ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNXB4LCAtNTAlKTt9QG1lZGlhIChob3ZlcjogaG92ZXIpeyY6aG92ZXIgc3BhbntvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLCAtNTAlKTt9fSJ9LGdldEJhbm5lclN0eWxlczplPT4oMCxkLkFIKSh7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIscG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsb3ZlcmZsb3c6ImhpZGRlbiIsb3BhY2l0eTouMTYsYmFja2dyb3VuZFNpemU6ImNvdmVyIixiYWNrZ3JvdW5kSW1hZ2U6YHVybCgke2V9KWB9LCIiLCIiKSxoZWFkZXI6e25hbWU6ImxpOW5reiIsc3R5bGVzOiJwYWRkaW5nOjIwcHggMjBweCAxNnB4Oy0tY3VzdG9tLXRleHQtY29sb3I6IzY0NzQ5NTtjb2xvcjp2YXIoLS1jdXN0b20tdGV4dC1jb2xvcik7LmhlYWRlci1hdmF7d2lkdGg6MjRweCAhaW1wb3J0YW50O2hlaWdodDoyNHB4ICFpbXBvcnRhbnQ7fSJ9LGdldE5ld0hvbWVIZWFkZXI6ZT0+KDAsZC5BSCkoe2hlaWdodDplPyIyMDZweCI6IjI4NHB4IixkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIn0sIiIsIiIpLG5ld09wdGlvbnM6e25hbWU6IjFkdWVnMmQiLHN0eWxlczoiZ2FwOjEycHg7aGVpZ2h0OjI0cHg7c3Bhbntjb2xvcjojMDgwRjFBO31oMntjb2xvcjojMDgwRjFBO30ifSxuZXdPcHRpb25zQnV0dG9uczp7bmFtZToiMWl2Z2ZmNSIsc3R5bGVzOiJtYXJnaW4taW5saW5lLWVuZDotMnB4Oy5tb2JpbGUgJnttYXJnaW4taW5saW5lLWVuZDotMTJweDt9In0sbmV3QmFja0J1dHRvbjp7bmFtZToiZndrb2VyIixzdHlsZXM6Im1hcmdpbi1pbmxpbmU6LTJweDsubW9iaWxlICZ7bWFyZ2luLWlubGluZTotMTJweDt9In19O3ZhciBXYT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx7aXNOZXdTa2luOnR9PSgwLHAuQSkoKSxuPSgwLGEudXNlUmVmKSghMSk7cmV0dXJuKDAsYS51c2VFZmZlY3QpKCgpPT4oKT0+e24uY3VycmVudCYmd2luZG93LnRpZGlvQ2hhdEFwaT8udHJpZ2dlcigiaGVhZGVyQ2xvc2VIb3ZlciIse3R5cGU6Im9mZiJ9KX0sW10pLCgwLFYuRkQpKCJidXR0b24iLHtjbGFzc05hbWU6InJpcHBsZSIsb25DbGljazooKT0+e2UoKDAsay5wTzYpKGx0LlguY2hhdENsb3NlZCkpLGUoKDAsay5IemgpKCExKSksZSgoMCxrLm5wdykoITEpKX0sb25Nb3VzZUVudGVyOigpPT57bi5jdXJyZW50PSEwLHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoImhlYWRlckNsb3NlSG92ZXIiLHt0eXBlOiJvbiJ9KX0sb25Nb3VzZUxlYXZlOigpPT57bi5jdXJyZW50PSExLHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoImhlYWRlckNsb3NlSG92ZXIiLHt0eXBlOiJvZmYifSl9LHR5cGU6ImJ1dHRvbiIsImFyaWEtbGFiZWwiOigwLHkucHcpKCJtaW5pbWl6ZSIsbnVsbCwiTWluaW1pemUiKSxjc3M6W19hLE1hLCIiLCIiXSxjaGlsZHJlbjpbdD8oMCxWLlkpKHV0LmJtLHt9KTooMCxWLlkpKHV0LnlRLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoIm1pbmltaXplIixudWxsLCJNaW5pbWl6ZSIpfSldfSl9O2NvbnN0IEthPXtuYW1lOiIxdzh6Z3k0IixzdHlsZXM6ImRpc3BsYXk6ZmxleDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxNXB4O21hcmdpbi10b3A6MTJweCJ9O3ZhciBHYT0oKT0+e2NvbnN0IGU9KDAsci5kNCkoZT0+ZS5pc1Byb2plY3RPbmxpbmUpO3JldHVybiBlJiYhKDAseS5wdykoIndlQXJlT25saW5lIil8fCFlJiYhKDAseS5wdykoImFsd2F5c09ubGluZVRvcEJhciIpP251bGw6KDAsVi5ZKSgiZGl2Iix7Y3NzOkthLGNoaWxkcmVuOmU/KDAsVi5ZKSgic3BhbiIse2NoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJ3ZUFyZU9ubGluZSIsZW1vamlmeTohMH0pfSk6KDAsVi5ZKSgic3BhbiIse2NoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJhbHdheXNPbmxpbmVUb3BCYXIiLGVtb2ppZnk6ITB9KX0pfSl9O2NvbnN0IFhhPWU9PntsZXR7c2hvd0Nsb3NlQnV0dG9uOnQsY2hhdFZpZXdSZWY6bn09ZTtjb25zdCBpPSgwLHIud0EpKCkse2lzTmV3U2tpbjphfT0oMCxwLkEpKCksbz0oKT0+e2koKDAsay5xN3YpKCJob21lIikpLGkoKDAsay5wTzYpKGx0LlguZ29CYWNrVG9Db252ZXJzYXRpb25TdGFydGVyc0NsaWNrZWQpKSx3aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJjb252ZXJzYXRpb25CYWNrQnV0dG9uQ2xpY2siKX07cmV0dXJuIGE/KDAsVi5ZKSgiZGl2Iix7Y3NzOiRhLmhlYWRlcixjaGlsZHJlbjooMCxWLkZEKSgiZGl2Iix7Y3NzOlskYS5vcHRpb25zLCRhLm5ld09wdGlvbnMsIiIsIiJdLGNoaWxkcmVuOlsoMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOm8sY3NzOltfYSxNYSwkYS5iYWNrQnV0dG9uLCRhLm5ld0JhY2tCdXR0b24sIiIsIiJdLGNoaWxkcmVuOlsoMCxWLlkpKHV0LkRNLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoImdvQmFjayIsbnVsbCwiR28gYmFjayIpfSldfSksKDAsVi5ZKShIYSx7fSksKDAsVi5GRCkoImRpdiIse2NzczpbJGEub3B0aW9uc0J1dHRvbnMsJGEubmV3T3B0aW9uc0J1dHRvbnMsIiIsIiJdLGNoaWxkcmVuOlt0JiYoMCxWLlkpKFdhLHt9KSwoMCxWLlkpKE9hLHt9KSxuJiYoMCxWLlkpKFZhLHtjaGF0Vmlld1JlZjpufSldfSldfSl9KTooMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJjaGF0LWhlYWRlciIsY2hpbGRyZW46WygwLFYuRkQpKCJkaXYiLHtjc3M6WyRhLm9wdGlvbnMsJGEub3B0aW9uc0NoYXRPbGQsIiIsIiJdLGNoaWxkcmVuOlsoMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6InJpcHBsZSIsb25DbGljazpvLGNzczpbX2EsTWEsJGEuYmFja0J1dHRvbiwiIiwiIl0sY2hpbGRyZW46WygwLFYuWSkodXQuSkcse30pLCgwLFYuWSkoInNwYW4iLHtjaGlsZHJlbjooMCx5LnB3KSgiZ29CYWNrIixudWxsLCJHbyBiYWNrIil9KV19KSwoMCxWLlkpKEhhLHt9KSwoMCxWLkZEKSgiZGl2Iix7Y3NzOiRhLm9wdGlvbnNCdXR0b25zLGNoaWxkcmVuOlt0JiYoMCxWLlkpKFdhLHt9KSwoMCxWLlkpKE9hLHt9KV19KV19KSwoMCxWLlkpKEdhLHt9KSwoMCxWLlkpKCJkaXYiLHtjc3M6JGEud2F2ZSxjaGlsZHJlbjooMCxWLlkpKHV0LndILHt9KX0pXX0pfTt2YXIgUWE9ZT0+e2xldHtjaGF0Vmlld1JlZjp0fT1lO2NvbnN0IG49KDAsci5kNCkoQy5UdyksaT0oMCxyLmQ0KShlPT5lLmlzTW9iaWxlKSx7aXNOZXdTa2luOmF9PSgwLHAuQSkoKSxvPSgwLHIuZDQpKEMuZW0pLHtzdGF0ZTpzfT0oMCxZaS5seikoKSxsPXM/Lm9mZmVyLGQ9byYmISghaSYmKG58fGEpfHxsKTtyZXR1cm4oMCxWLlkpKFhhLHtzaG93Q2xvc2VCdXR0b246ZCxjaGF0Vmlld1JlZjp0fSl9O2NvbnN0IFphPXtuYW1lOiIxeXBqdWExIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEycHg7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjBweCJ9LEphPXtuYW1lOiIxdDZkZjVxIixzdHlsZXM6ImNvbG9yOmN1cnJlbnRDb2xvcjttYXJnaW46NHB4IDAgMCAwO3BhZGRpbmc6MDtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6MzJweDtsaW5lLWhlaWdodDo0MHB4O2ZvbnQtd2VpZ2h0OjUwMDttYXgtd2lkdGg6MTAwJTt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dmVydGljYWwtYWxpZ246Ym90dG9tOy5lbW9qaXt3aWR0aDozMXB4O2hlaWdodDozMXB4O30ifSxlbz1lPT4oMCxkLkFIKSh7ZGlzcGxheToiLXdlYmtpdC1ib3giLFdlYmtpdExpbmVDbGFtcDplPzQ6NixXZWJraXRCb3hPcmllbnQ6InZlcnRpY2FsIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIixwYWRkaW5nQm90dG9tOjJ9LCIiLCIiKTt2YXIgdG89KCk9Pntjb25zdCBlPSgwLHIuZDQpKGU9PmUuaXNNb2JpbGUpLHtpc05ld1NraW46dH09KDAscC5BKSgpLG49aHQodCk7cmV0dXJuIHQ/KDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoImRpdiIse3N0eWxlOntoZWlnaHQ6ZT8xMjowfX0pLCgwLFYuRkQpKCJkaXYiLHtjc3M6WmEsY2hpbGRyZW46WygwLFYuWSkoImgyIix7Y3NzOltKYSxuLnRleHQyNEJvbGQsIiIsIiJdLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJuZXdXaWRnZXRIZWFkZXJUZXh0IixmYWxsYmFjazoiQ2hhdCB3aXRoIHVzIixlbW9qaWZ5OiEwfSl9KSwoMCxWLlkpKCJkaXYiLHtjc3M6ZW8oZSksY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6IndlbGNvbWVNZXNzYWdlIixlbW9qaWZ5OiEwfSl9KV19KV19KTooMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgiZGl2Iix7c3R5bGU6e2hlaWdodDplPzEyOjI4fX0pLCgwLFYuRkQpKCJkaXYiLHtjc3M6WmEsY2hpbGRyZW46WygwLFYuWSkoImgyIix7Y3NzOltKYSxuLnRleHQyNEJvbGQsIiIsIiJdLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJuZXdXaWRnZXRIZWFkZXJUZXh0IixmYWxsYmFjazoiQ2hhdCB3aXRoIHVzIixlbW9qaWZ5OiEwfSl9KSwoMCxWLlkpKE9uLHt2YWx1ZToid2VsY29tZU1lc3NhZ2UiLGVtb2ppZnk6ITB9KV19KV19KX07dmFyIG5vPSgpPT57Y29uc3QgZT0oMCxyLmQ0KShDLm1tKSx0PSgwLHIuZDQpKEMuTGQpLG49KDAsci5kNCkoQy5PMSkse2lzTmV3U2tpbjppfT0oMCxwLkEpKCk7cmV0dXJuIHQ/KDAsVi5ZKSh6YSx7b3BlcmF0b3JzOlt7aWQ6MSxhdmF0YXJTcmM6dCxpc09ubGluZTohMX1dLG9wZW5UYWI6bix3aXRoQmFja2dyb3VuZENvbG9yOml9KTooMCxWLlkpKHphLHtvcGVyYXRvcnM6ZSxvcGVuVGFiOm59KX07Y29uc3R7b3B0aW9uczppbyxvcHRpb25zQnV0dG9uczphbyxuZXdPcHRpb25zQnV0dG9uczpvbyxnZXROZXdIb21lSGVhZGVyOnJvLGdldEJhbm5lclN0eWxlczpzbyx3YXZlOmxvfT0kYSxjbz1lPT57bGV0e3Nob3dDbG9zZUJ1dHRvbjp0fT1lO2NvbnN0IG49KDAsci5kNCkoZT0+ZS5pc01vYmlsZSksaT0oMCxyLmQ0KShlPT5lLmJhbm5lckltYWdlKSx7aXNOZXdTa2luOmF9PSgwLHAuQSkoKTtyZXR1cm4gYT8oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJjaGF0LWhlYWRlciIsY3NzOnJvKG4pLGNoaWxkcmVuOlsiIiE9PWkmJigwLFYuWSkoImRpdiIse2NzczpzbyhpKX0pLCgwLFYuRkQpKCJkaXYiLHtjc3M6aW8sY2hpbGRyZW46WygwLFYuWSkobm8se30pLCgwLFYuRkQpKCJkaXYiLHtjc3M6W2FvLG9vLCIiLCIiXSxjaGlsZHJlbjpbdCYmKDAsVi5ZKShXYSx7fSksKDAsVi5ZKShPYSx7fSldfSldfSksKDAsVi5GRCkoImRpdiIse2NoaWxkcmVuOlsoMCxWLlkpKHRvLHt9KSwoMCxWLlkpKCJkaXYiLHtzdHlsZTp7aGVpZ2h0Om4/MTI6Mjh9fSldfSldfSk6KDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToiY2hhdC1oZWFkZXIiLGNoaWxkcmVuOlsiIiE9PWkmJigwLFYuWSkoImRpdiIse2NzczpzbyhpKX0pLCgwLFYuRkQpKCJkaXYiLHtjc3M6aW8sY2hpbGRyZW46WygwLFYuWSkobm8se30pLCgwLFYuRkQpKCJkaXYiLHtjc3M6YW8sY2hpbGRyZW46W3QmJigwLFYuWSkoV2Ese30pLCgwLFYuWSkoT2Ese30pXX0pXX0pLCgwLFYuWSkodG8se30pLCgwLFYuWSkoImRpdiIse3N0eWxlOntoZWlnaHQ6bj8xMjo0MH19KSwoMCxWLlkpKCJkaXYiLHtjc3M6bG8sY2hpbGRyZW46KDAsVi5ZKSh1dC53SCx7fSl9KV19KX07dmFyIHVvPSgpPT57Y29uc3QgZT0oMCxyLmQ0KShDLlR3KSx0PSgwLHIuZDQpKGU9PmUuaXNNb2JpbGUpLHtpc05ld1NraW46bn09KDAscC5BKSgpLHtzdGF0ZTppfT0oMCxZaS5seikoKSxhPSgwLHIuZDQpKEMuZW0pLG89aT8ub2ZmZXIscz1hJiYhKCF0JiYoZXx8bil8fG8pO3JldHVybigwLFYuWSkoY28se3Nob3dDbG9zZUJ1dHRvbjpzfSl9O2NvbnN0IHBvPXtuYW1lOiIxaTlsbWdiIixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO3RvcDo4cHg7cmlnaHQ6OHB4O2xlZnQ6OHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3otaW5kZXg6MSJ9LGZvPXtuYW1lOiIxNm41Z29yIixzdHlsZXM6ImJhY2tncm91bmQtY29sb3I6I2ZmZjtib3gtc2hhZG93OjAgOHB4IDIwcHggMCAjMDAxYjQ3M2Q7bWluLXdpZHRoOjQ0cHg7aGVpZ2h0OjQ0cHg7Ym9yZGVyLXJhZGl1czo5OXB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtzdmd7ZmlsbDojMDgwZjFhO3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7fSJ9LG1vPXtuYW1lOiJkbGZpcnUiLHN0eWxlczoibWFyZ2luLWlubGluZS1lbmQ6YXV0bztwYWRkaW5nOjhweCAxNnB4IDhweCA4cHg7Zm9udC1zaXplOjE1cHgifTt2YXIgaG89KCk9Pntjb25zdCBlPSgwLHIud0EpKCkse2lzTmV3U2tpbjp0fT0oMCxwLkEpKCk7cmV0dXJuKDAsVi5GRCkoImRpdiIse2NzczpwbyxjaGlsZHJlbjpbKDAsVi5GRCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+e2UoKDAsay5xN3YpKCJob21lIikpLGUoKDAsay5wTzYpKGx0LlguZ29CYWNrVG9Db252ZXJzYXRpb25TdGFydGVyc0NsaWNrZWQpKSxlKCgwLGsuRTNTKSghMSkpLHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoImNvbnZlcnNhdGlvbkJhY2tCdXR0b25DbGljayIpfSxjc3M6W2ZvLG1vLCIiLCIiXSxjaGlsZHJlbjpbdD8oMCxWLlkpKHV0LkRNLHt9KTooMCxWLlkpKHV0LkpHLHt9KSwoMCx5LnB3KSgiZ29CYWNrIixudWxsLCJHbyBiYWNrIildfSksKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOigpPT57ZSgoMCxrLnBPNikobHQuWC5jaGF0Q2xvc2VkKSksZSgoMCxrLkh6aCkoITEpKSxlKCgwLGsubnB3KSghMSkpfSxjc3M6Zm8sImFyaWEtbGFiZWwiOigwLHkucHcpKCJtaW5pbWl6ZSIsbnVsbCwiTWluaW1pemUiKSxjaGlsZHJlbjooMCxWLlkpKHV0LnlRLHt9KX0pXX0pfTt2YXIgZ289KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShDLks3KSxuPSgwLHIuZDQpKGU9PmUuZ2V0U3RhcnRlZEFjdGl2ZSksaT0hKDAsZi5NSSkoKSYmbiYmdDtyZXR1cm57aXNGbG93c0xhdW5jaGVyQWN0aXZlOmksaGFuZGxlVGFiQ2hhbmdlOnQ9PntpJiZlKCgwLGsucWJvKSgpKSxlKCgwLGsucTd2KSh0KSl9fX07Y29uc3QgYm89e2RlZmF1bHQ6IiMwNjEzMkIiLHN1YmR1ZWQ6IiM0QzU5NkIifSx2bz1lPT57bGV0e2FsaWduOnQsY29sb3I6bixzaXplOmksd2VpZ2h0OmEsbnVtYmVyT2ZMaW5lczpvfT1lO3JldHVybigwLGQuQUgpKHtmb250U2l6ZTppLGZvbnRXZWlnaHQ6YSwuLi50JiZ7dGV4dEFsaWduOnR9LC4uLm4mJntjb2xvcjpib1tuXX0sLi4ubyYme292ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLGRpc3BsYXk6Ii13ZWJraXQtYm94IixXZWJraXRMaW5lQ2xhbXA6byxXZWJraXRCb3hPcmllbnQ6InZlcnRpY2FsIn0sIkBtZWRpYSAoaG92ZXI6IGhvdmVyKSI6eyImOmhvdmVyIC50b29sdGlwIjp7dmlzaWJpbGl0eToidmlzaWJsZSIsb3BhY2l0eToxLHRyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9fX0sIiIsIiIpfSx4bz0oMCxkLkFIKSh7cG9zaXRpb246ImZpeGVkIixjb2xvcjpiby5kZWZhdWx0LGJhY2tncm91bmRDb2xvcjoiI2ZmZiIscGFkZGluZzoiNXB4IDhweCIsbWFyZ2luTGVmdDoiMTZweCIsYm9yZGVyUmFkaXVzOiI0cHgiLGZvbnRTaXplOiIxNHB4Iix0ZXh0QWxpZ246ImNlbnRlciIsbGluZUhlaWdodDoiMThweCIsdmlzaWJpbGl0eToiaGlkZGVuIixvcGFjaXR5OjAsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDVweCkiLHRyYW5zaXRpb246Im9wYWNpdHkgMC4ycyBlYXNlLCB0cmFuc2Zvcm0gMC4ycyBlYXNlIixib3hTaGFkb3c6IjBweCA4cHggMjBweCAwcHggcmdiYSgwLCAyNywgNzEsIDAuMjQpIix6SW5kZXg6MWUzLHBvaW50ZXJFdmVudHM6Im5vbmUiLHdpZHRoOjI1Nn0sIiIsIiIpO3ZhciB5bz1lPT57bGV0e2FsaWduOnQ9ImxlZnQiLGNvbG9yOm49ImRlZmF1bHQiLG51bWJlck9mTGluZXM6aSxzaXplOm89MTQsd2VpZ2h0OnI9NDAwLGNoaWxkcmVuOnMsY2xhc3NOYW1lOmx9PWU7Y29uc3QgZD0oMCxhLnVzZVJlZikobnVsbCksW2MsdV09KDAsYS51c2VTdGF0ZSkoITEpLFtwLGZdPSgwLGEudXNlU3RhdGUpKDApLG09KDAsYS51c2VDYWxsYmFjaykoKCk9Pntjb25zdCBlPWQuY3VycmVudDtpZihlKXtjb25zdCB0PWUuc2Nyb2xsSGVpZ2h0PmUuY2xpZW50SGVpZ2h0fHxlLnNjcm9sbFdpZHRoPmUuY2xpZW50V2lkdGg7aWYodSh0KSx0KXtjb25zdCB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Zih0LnRvcCt0LmhlaWdodC8yKX19fSxbXSk7cmV0dXJuIGk/KDAsVi5GRCkoInNwYW4iLHtjc3M6dm8oe2FsaWduOnQsY29sb3I6bixudW1iZXJPZkxpbmVzOmksc2l6ZTpvLHdlaWdodDpyfSkscmVmOmQsb25Nb3VzZUVudGVyOm0sY2xhc3NOYW1lOmwsY2hpbGRyZW46W3MsYyYmKDAsVi5ZKSgiZGl2Iix7Y3NzOlt4byx7dG9wOmAke3B9cHhgfSwiIiwiIl0sY2xhc3NOYW1lOiJ0b29sdGlwIixjaGlsZHJlbjpzfSldfSk6KDAsVi5ZKSgic3BhbiIse2Nzczp2byh7YWxpZ246dCxjb2xvcjpuLG51bWJlck9mTGluZXM6aSxzaXplOm8sd2VpZ2h0OnJ9KSxjbGFzc05hbWU6bCxjaGlsZHJlbjpzfSl9O2NvbnN0IHdvPSIjRTJFOEVGIixrbz0oMCxkLkFIKSh7ZGlzcGxheToiZmxleCIscGFkZGluZ0lubGluZToxNixwYWRkaW5nQmxvY2s6InZhcigtLXN0YXJ0ZXItcGFkZGluZy1ibG9jaywgMTZweCkiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOiI4cHgiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIix3aWR0aDoiMTAwJSIsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLCI6aG92ZXIiOntiYWNrZ3JvdW5kOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLWJhY2tncm91bmQpIixvdXRsaW5lOmAxcHggc29saWQgJHt3b31gfSwiOmZvY3VzIjp7b3V0bGluZToibm9uZSJ9LHN2Zzp7ZmlsbDoiY3VycmVudENvbG9yIix3aWR0aDoyMCxoZWlnaHQ6MjAsZmxleFNocmluazowfX0sIiIsIiIpLEFvPSgwLGQuQUgpKHt3aWR0aDoiY2FsYygxMDAlIC0gMzJweCkiLGJvcmRlckJvdHRvbTpgMXB4IHNvbGlkICR7d299YCxtYXJnaW46IjAgMTZweCJ9LCIiLCIiKTt2YXIgQ289ZT0+e2xldHtzdGFydGVyOnQsc2hvdWxkRGlzcGxheURpdmlkZXI6bn09ZTtjb25zdCBpPSgwLHIud0EpKCkse2lzTmV3U2tpbjpvfT0oMCxwLkEpKCkscz1odChvKSxsPSgwLGEudXNlQ2FsbGJhY2spKGU9PntpKCgwLGsuRzhjKShlKSksaSgoMCxrLnE3dikoImNvbnZlcnNhdGlvbnMiKSksaSgoMCxrLnBPNikobHQuWC5jb252ZXJzYXRpb25TdGFydGVyQ2xpY2tlZCkpfSxbaV0pO3JldHVybigwLFYuRkQpKGEuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6a28sb25DbGljazooKT0+bCh0LmFuc3dlciksY2hpbGRyZW46WygwLFYuWSkoeW8se3NpemU6MTUsbnVtYmVyT2ZMaW5lczozLGNzczpzLnRleHQxNE1lZGl1bSxjaGlsZHJlbjp0LmFuc3dlcn0pLCgwLFYuWSkodXQuY18se30pXX0sdC5pZCksbiYmKDAsVi5ZKSgiZGl2Iix7Y3NzOkFvfSldfSx0LmlkKX07Y29uc3QgRW89IiNFMkU4RUYiLFNvPXtuYW1lOiJ1ZHI2YnciLHN0eWxlczoiZmxleDoxO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTphdXRvO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt6LWluZGV4Ojk7cGFkZGluZy1pbmxpbmU6dmFyKC0tY2hhdC1wYWRkaW5nLCAyNHB4KSJ9LERvPSgwLGQuQUgpKHtkaXNwbGF5OiJmbGV4Iix3aWR0aDoiMTAwJSIsYm9yZGVyUmFkaXVzOiJ2YXIoLS1yYWRpdXMtY29tcG9uZW50LCAxMnB4KSIsYm9yZGVyOmAxcHggc29saWQgJHtFb31gLG92ZXJmbG93WToiaGlkZGVuIixtYXJnaW5Cb3R0b206InZhcigtLXN0YXJ0ZXJzLWdhcCwgMTZweCkifSwiIiwiIiksWW89e25hbWU6IjF4bGs4ZGoiLHN0eWxlczoiZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOiNmZmY7b3ZlcmZsb3cteTphdXRvIn0sVG89e25hbWU6InZ3dWEyZCIsc3R5bGVzOiJib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpO2JhY2tncm91bmQ6I2ZmZiJ9LEZvPSgwLGQuQUgpKHttaW5IZWlnaHQ6NjAsZGlzcGxheToiZmxleCIscGFkZGluZ0lubGluZToiMTZweCIscGFkZGluZ0Jsb2NrOiJ2YXIoLS1zdGFydGVyLWNoYXQtcGFkZGluZy1ibG9jaywgMTJweCkiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOiI4cHgiLHdpZHRoOiIxMDAlIixib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpIixib3JkZXI6YDFweCBzb2xpZCAke0VvfWAsYmFja2dyb3VuZDoiI2ZmZiIsIjpob3ZlciI6e2JhY2tncm91bmQ6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItYmFja2dyb3VuZCkifSwiOmZvY3VzIjp7b3V0bGluZToibm9uZSJ9LHN2Zzp7d2lkdGg6MjAsaGVpZ2h0OjIwLGZsZXhTaHJpbms6MCxmaWxsOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NkZGKSJ9fSwiIiwiIiksSW89e25hbWU6Im1hejIydCIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjJweDtmbGV4LWdyb3c6MSJ9LF9vPXtuYW1lOiIxbXNnbzVuIixzdHlsZXM6ImZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxOXB4In0sTW89e25hbWU6Ino1Y2tuMiIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7ZmxleDowIDAgNDhweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlciJ9LE5vPXtuYW1lOiJjcnJlbXMiLHN0eWxlczoiZmxleDoxIDEwMCAxNnB4In0sT289e25hbWU6IjEzdGk5cGMiLHN0eWxlczoiZmxleDowIDEwMCAxNnB4In0sUm89e25hbWU6ImZzemRtYyIsc3R5bGVzOiJmbGV4OjAgMCAxNnB4In0sam89KCk9Pntjb25zdCBlPSgwLHIuZDQpKEMuSEUpLHQ9KDAsci5kNCkoQy5GXyksbj0oMCxyLmQ0KShlPT5lLmlzTW9iaWxlKSx7aXNOZXdTa2luOml9PSgwLHAuQSkoKTtyZXR1cm4gaT9udWxsOigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlshdCYmIWUmJigwLFYuWSkoImRpdiIse2NzczpSb30pLCh0fHxCb29sZWFuKGUpKSYmKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoImRpdiIse2NzczpuP09vOk5vfSksKDAsVi5ZKSgiZGl2Iix7Y3NzOk1vLGNoaWxkcmVuOigwLFYuWSkoS2kse30pfSldfSldfSl9O3ZhciBQbz0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx0PSgwLHIuZDQpKEMuUTUpLG49KDAsci5kNCkoZT0+ZS5pc01vYmlsZSksaT0oMCxyLmQ0KShlPT5lLmlzUHJvamVjdE9ubGluZSksbz0oMCxyLmQ0KShDLmw1KSxzPUJvb2xlYW4odCYmdC5sZW5ndGg+MCksbD0hKG8mJnMpLHtpc0Zsb3dzTGF1bmNoZXJBY3RpdmU6ZCxoYW5kbGVUYWJDaGFuZ2U6Y309Z28oKSx7aXNOZXdTa2luOnV9PSgwLHAuQSkoKSxmPWh0KHUpOygwLGEudXNlRWZmZWN0KSgoKT0+e2UoKDAsay5vT20pKG4/dHQuTk8uTU9CSUxFOnR0Lk5PLkNIQVRfU0laRV8xKSl9LFtlLG5dKSwoMCxhLnVzZUVmZmVjdCkoKCk9PntlKCgwLGsucE82KShsdC5YLmhvbWVUYWJWaXNpYmxlKSl9LFtlXSk7Y29uc3QgbT0oMCx5LnB3KShpPyJ3ZUFyZU9ubGluZSI6ImFsd2F5c09ubGluZVRvcEJhciIpO2xldCBoPXU/LTMwOi00MDtyZXR1cm4gbiYmKGg9MTIpLCgwLFYuRkQpKCJkaXYiLHtjc3M6U28sc3R5bGU6e21hcmdpblRvcDpoLG1heEhlaWdodDpuPyJub25lIjo0MzR9LGNoaWxkcmVuOltuJiYoMCxWLlkpKCJkaXYiLHtzdHlsZTp7ZmxleDoxfX0pLHQmJnQubGVuZ3RoPjAmJigwLFYuWSkoImRpdiIse2NzczpEbyxjaGlsZHJlbjooMCxWLlkpKCJkaXYiLHtjc3M6WW8sY2hpbGRyZW46dC5tYXAoKGUsbik9PigwLFYuWSkoQ28se3N0YXJ0ZXI6ZSxzaG91bGREaXNwbGF5RGl2aWRlcjpuIT09dC5sZW5ndGgtMX0sZS5pZCkpfSl9KSxsJiYoMCxWLlkpKCJkaXYiLHtjc3M6VG8sY2hpbGRyZW46KDAsVi5GRCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY3NzOkZvLG9uQ2xpY2s6KCk9PntkfHwoZSgoMCxrLnBPNikobHQuWC5jaGF0V2l0aFVzSG9tZVRhYkNsaWNrZWQpKSx3aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJjaGF0V2l0aFVzQ2xpY2siKSksYygiY29udmVyc2F0aW9ucyIpfSxjaGlsZHJlbjpbKDAsVi5GRCkoImRpdiIse2NzczpJbyxjaGlsZHJlbjpbKDAsVi5ZKSgic3BhbiIse2NzczpbX28sZi50ZXh0MTRNZWRpdW0sIiIsIiJdLGNoaWxkcmVuOmQ/KDAsVi5ZKShPbix7dmFsdWU6ImdldFN0YXJ0ZWQiLGZhbGxiYWNrOiJHZXQgc3RhcnRlZCJ9KTooMCxWLlkpKE9uLHt2YWx1ZToiaGVhZGVyVGV4dCIsZmFsbGJhY2s6IkNoYXQgd2l0aCB1cyJ9KX0pLCFkJiZCb29sZWFuKG0pJiYoMCxWLlkpKHlvLHtjb2xvcjoic3ViZHVlZCIsbnVtYmVyT2ZMaW5lczoyLGNzczpmLnRleHQxMixjaGlsZHJlbjppPygwLFYuWSkoT24se3ZhbHVlOiJ3ZUFyZU9ubGluZSIsZW1vamlmeTohMH0pOigwLFYuWSkoT24se3ZhbHVlOiJhbHdheXNPbmxpbmVUb3BCYXIiLGVtb2ppZnk6ITB9KX0pXX0pLCgwLFYuWSkodXQucXgse30pXX0pfSksKDAsVi5ZKShqbyx7fSldfSl9O2NvbnN0IHpvPSIjZmZmIixMbz0oMCxkLkFIKSh7YmFja2dyb3VuZENvbG9yOnpvLGRpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIscGFkZGluZ0lubGluZToidmFyKC0tY2hhdC1wYWRkaW5nLCAyNHB4KSJ9LCIiLCIiKSxVbz17bmFtZToiMWx1ZTduOSIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7ZmxleDoxO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjJweDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2MDA7OmZvY3Vze291dGxpbmU6bm9uZTt9c3Zne3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7fSJ9LEJvPSgwLGQuQUgpKFVvLCJwb3NpdGlvbjpyZWxhdGl2ZTtzdmd7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDt9JiAubmV3TWVzc2FnZXtyaWdodDo1MHB4O2JvdHRvbTozMHB4O30iLCIiKSxIbz17bmFtZToiOG9uZXo2IixzdHlsZXM6ImNvbG9yOiM2NDc0OTE7c3Zney5vdXRsaW5le29wYWNpdHk6MTt9LmZpbGx7b3BhY2l0eTowO319Jjpob3Zlcntjb2xvcjppbml0aWFsO3N2Z3sub3V0bGluZXtvcGFjaXR5OjA7fS5maWxse29wYWNpdHk6MTt9fX0ifSxxbz17bmFtZToiMWgzM2JsbCIsc3R5bGVzOiJwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDo5MnB4O2JvdHRvbTo0NnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojZmZmO3BvaW50ZXItZXZlbnRzOm5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2ZvbnQtc2l6ZToxMnB4O2JhY2tncm91bmQ6I2U4MTMzMjt6LWluZGV4OjI7bGluZS1oZWlnaHQ6MSJ9LFZvPXtuYW1lOiIxYWM2ZTQzIixzdHlsZXM6ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtoZWlnaHQ6NDBweDtmbGV4OjAgMCA0MHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNFMkU4RUYifTt2YXIgJG89KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShlPT5lLnVucmVhZE1lc3NhZ2VzKSxuPSgwLHIuZDQpKGU9PmUuaXNNb2JpbGUpLGk9KDAsci5kNCkoQy5GXyksYT0oMCxyLmQ0KShDLkhFKSx7aXNOZXdTa2luOm99PSgwLHAuQSkoKSxzPWh0KG8pLHtoYW5kbGVUYWJDaGFuZ2U6bH09Z28oKTtyZXR1cm4oMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgiZGl2Iix7Y3NzOkxvLGNoaWxkcmVuOigwLFYuRkQpKCJkaXYiLHtjc3M6KGM9bywoMCxkLkFIKSh7ZGlzcGxheToiZmxleCIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsYWxpZ25JdGVtczoiZmxleC1zdGFydCIsZ2FwOjQsYWxpZ25TZWxmOiJzdHJldGNoIixib3JkZXJUb3A6IjFweCBzb2xpZCAiKyhjPyJ0cmFuc3BhcmVudCI6IiNFMkU4RUYiKSxiYWNrZ3JvdW5kQ29sb3I6em99LCIiLCIiKSksc3R5bGU6e3BhZGRpbmc6bj8iMTBweCAyMHB4IjoiMTJweCAyMHB4In0sY2hpbGRyZW46WygwLFYuRkQpKCJidXR0b24iLHtjc3M6W28/Qm86VW8scy50ZXh0MTJNZWRpdW0sIiIsIiJdLHR5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+e2woImhvbWUiKX0sY2hpbGRyZW46WygwLFYuWSkodXQuZkEse30pLCgwLFYuWSkoT24se3ZhbHVlOiJob21lIixmYWxsYmFjazoiSG9tZSJ9KV19KSwoMCxWLkZEKSgiYnV0dG9uIix7Y3NzOltvP0JvOlVvLEhvLHMudGV4dDEyTWVkaXVtLCIiLCIiXSx0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PntsKCJjb252ZXJzYXRpb25zIiksZSgoMCxrLnBPNikobHQuWC5jaGF0VGFiQ2xpY2tlZCkpLHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoImNoYXRUYWJDbGljayIpfSxjaGlsZHJlbjpbKDAsVi5ZKSh1dC5veSx7fSksKDAsVi5ZKShPbix7dmFsdWU6ImNoYXQiLGZhbGxiYWNrOiJDaGF0In0pLHQ+MCYmKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJuZXdNZXNzYWdlIixjc3M6cW8sY2hpbGRyZW46dDw9OT90OiI5KyJ9KV19KV19KX0pLG8mJihpfHxCb29sZWFuKGEpKSYmKDAsVi5ZKSgiZGl2Iix7Y3NzOlZvLGNoaWxkcmVuOigwLFYuWSkoS2kse30pfSldfSk7dmFyIGN9LFdvPW4oNTkyMyk7dmFyIEtvPSgpPT57Y29uc3QgZT0oMCxyLndBKSgpLHQ9KDAsci5kNCkoQy53bik7cmV0dXJuKDAsYS51c2VFZmZlY3QpKCgpPT57Y29uc3QgdD1zZXRUaW1lb3V0KCgpPT57ZSgoMCxrLkhkJCkoKSl9LDZlMyk7cmV0dXJuKCk9PntudWxsIT09dCYmY2xlYXJUaW1lb3V0KHQpfX0sW2VdKSwoMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IgbWVzc2FnZS1hbGVydCIscm9sZToiYWxlcnQiLCJhcmlhLWxpdmUiOiJhc3NlcnRpdmUiLCJhcmlhLWF0b21pYyI6InRydWUiLGNoaWxkcmVuOlsoMCxWLlkpKHV0LkZjLHt9KSx0XX0pfTtjb25zdCBHbz1lPT57aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1bLyg/OnlvdXR1YmVcLmNvbVwvd2F0Y2hcPy4qdj18eW91dHViZVwuY29tXC93YXRjaFw/dj0pKFthLXpBLVowLTlfLV17MTF9KS8sL3lvdXR1XC5iZVwvKFthLXpBLVowLTlfLV17MTF9KS8sL3lvdXR1YmVcLmNvbVwvZW1iZWRcLyhbYS16QS1aMC05Xy1dezExfSkvLC95b3V0dWJlXC5jb21cL3ZcLyhbYS16QS1aMC05Xy1dezExfSkvXTtmb3IoY29uc3QgbiBvZiB0KXtjb25zdCB0PWUubWF0Y2gobik7aWYodD8uWzFdKXJldHVybiB0WzFdfXJldHVybiBudWxsfSxYbz1lPT57aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD0vaHR0cHM/OlwvXC8oPzp3d3dcLik/KD86eW91dHViZVwuY29tXC93YXRjaFw/W15ccyldK3x5b3V0dWJlXC5jb21cL2VtYmVkXC9bXlxzKV0rfHlvdXR1YmVcLmNvbVwvdlwvW15ccyldK3x5b3V0dVwuYmVcL1teXHMpXSspLy5leGVjKGUpLG49dD8uWzBdO3JldHVybiBuJiZHbyhuKT9uOm51bGx9O3ZhciBRbz1lPT4oMCxhLnVzZU1lbW8pKCgpPT57bGV0IHQ7Y29uc3Qgbj0oZT0+ZS5zcGxpdCgiOyIpWzBdLnRyaW0oKSkoKDAsZi5tZikoKSk7dHJ5e3Q9bmV3IEludGwuTnVtYmVyRm9ybWF0KG58fCJlbi1VUyIse3N0eWxlOiJjdXJyZW5jeSIsY3VycmVuY3k6ZSxjdXJyZW5jeURpc3BsYXk6Im5hcnJvd1N5bWJvbCJ9KX1jYXRjaChlKXtlIGluc3RhbmNlb2YgRXJyb3ImJigwLHYuc1EpKCJXcm9uZyBjdXJyZW5jeSBwcm92aWRlZCB0byByZWNvbW1lbmRlZCBwcm9kdWN0Iix7bWVzc2FnZTplLm1lc3NhZ2V9KX1yZXR1cm4gdH0sW2VdKTtjb25zdCBabz0ibGVhcm5fbW9yZV9jbGlja2VkX2Zvcl9wcm9kdWN0X2lkIixKbz0iYWRkX3RvX2NhcnRfY2xpY2tlZF9mb3JfcHJvZHVjdF9pZF9hcnJheSI7dmFyIGVyPWU9PntsZXR7ZGlzcGxheWVkVmFyaWFudElkOnQsbWVzc2FnZUlkOm4saXNGbHlNZXNzYWdlOmksb25BZGRUb0NhcnQ6byxvblZpZXdDYXJ0Q2xpY2s6c309ZTtjb25zdCBsPSgwLHIud0EpKCksZD0oMCxyLmQ0KShDLkRXKSxjPWAke259XyR7dH1gLFt1LHBdPSgwLGEudXNlU3RhdGUpKCJhZGQiKSxmPSgwLGEudXNlUmVmKSgpLG09KDAsYS51c2VDYWxsYmFjaykoKCk9PntsKCgwLGsuZzZRKSh0dC5Tcy5DSEFUKSksbCgoMCxrLnE3dikoImNvbnZlcnNhdGlvbnMiKSksbCgoMCxrLmFtdikoYykpfSxbbCxjXSksaD0oMCxhLnVzZUNhbGxiYWNrKShhc3luYyBlPT57aWYoaSlyZXR1cm4gbSgpLCExO3AoImFkZGluZyIpO2NvbnN0W3RdPWF3YWl0IFByb21pc2UuYWxsKFtvKGUpLG5ldyBQcm9taXNlKGU9PntzZXRUaW1lb3V0KGUsMmUzKX0pXSk7aWYoIXQpcmV0dXJuIHAoImVycm9yIiksITE7bGV0IG49W107cmV0dXJuIGF3YWl0KDAsQS5USCkoSm8pLnRoZW4oZT0+e249QXJyYXkuaXNBcnJheShlKT9bLi4uZSxjXTpbY119KSxhd2FpdCgwLEEueDIpKEpvLG4pLHAoImFkZGVkIiksZi5jdXJyZW50PXNldFRpbWVvdXQoKCk9PntmLmN1cnJlbnQ9dm9pZCAwLHAoImNhcnQiKX0sM2UzKSwhMH0sW20sbyxpLGNdKSxnPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57dHJ5e2lmKHMoKSx3aW5kb3cudG9wKXtjb25zdCBlPXdpbmRvdy5wYXJlbnQsdD1lLndjX2FkZF90b19jYXJ0X3BhcmFtcz8uY2FydF91cmwsbj1lLlNob3BpZnk/LnJvdXRlcz8uY2FydF91cmw7aWYodCl3aW5kb3cudG9wLmxvY2F0aW9uLmFzc2lnbih0KTtlbHNle2NvbnN0e29yaWdpbjplfT13aW5kb3cudG9wLmxvY2F0aW9uO3dpbmRvdy50b3AubG9jYXRpb24uYXNzaWduKGAke2V9JHtuPz8iL2NhcnQifWApfX19Y2F0Y2h7fX0sW3NdKTtyZXR1cm4oMCxhLnVzZUVmZmVjdCkoKCk9PntpfHxudWxsPT09ZHx8KGwoKDAsay5hbXYpKG51bGwpKSxkPT09YyYmaCh0KSl9LFtkLGMsbCxoLGksdF0pLCgwLGEudXNlRWZmZWN0KSgoKT0+eygwLEEuVEgpKEpvKS50aGVuKGU9PntBcnJheS5pc0FycmF5KGUpJiZlLmluY2x1ZGVzKGMpJiZwKCJjYXJ0Iil9KX0sW2NdKSwoMCxhLnVzZUVmZmVjdCkoKCk9PigpPT57dm9pZCAwIT09Zi5jdXJyZW50JiYoY2xlYXJUaW1lb3V0KGYuY3VycmVudCksZi5jdXJyZW50PXZvaWQgMCl9LFtdKSx7YnV0dG9uU3RhdGU6dSxleGVjdXRlQWRkVG9DYXJ0OmgsaGFuZGxlVmlld0NhcnQ6Z319LHRyPW4oMzk1Mik7big1OTY5KSxuKDU1Niksbig4MzkxKTtjb25zdCBucj0iL3dwLWpzb24vd2Mvc3RvcmUvdjEvY2FydCIsaXI9KGUsdCk9Pntjb25zdCBuPWU7bi50aWRpb1djU3RvcmU9bi50aWRpb1djU3RvcmV8fHt9LG4udGlkaW9XY1N0b3JlLm5vbmNlPXR9LGFyPWU9Pntjb25zdCB0PWUuaGVhZGVycy5nZXQoIk5vbmNlIik7dCYmaXIod2luZG93LnBhcmVudCx0KX0sb3I9YXN5bmMoKT0+e3RyeXtjb25zdCBlPShhd2FpdCB3aW5kb3cucGFyZW50LmZldGNoKG5yLHttZXRob2Q6IkdFVCIsY3JlZGVudGlhbHM6ImluY2x1ZGUifSkpLmhlYWRlcnMuZ2V0KCJOb25jZSIpO3JldHVybiBlJiZpcih3aW5kb3cucGFyZW50LGUpLGU/P3ZvaWQgMH1jYXRjaHtyZXR1cm59fSxycj1hc3luYyBmdW5jdGlvbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307Y29uc3R7cXVhbnRpdHk6bj0xfT10O2xldCBpPWZ1bmN0aW9uKCl7cmV0dXJuKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSkubm9uY2VUb2tlbnx8KGU9d2luZG93LnBhcmVudCxlLnRpZGlvV2NTdG9yZT8ubm9uY2UpO3ZhciBlfSh0KTtjb25zdCBhPXt9O2l8fChpPWF3YWl0IG9yKCkpLGkmJihhLk5vbmNlPWkpO2NvbnN0IG89bmV3IFVSTFNlYXJjaFBhcmFtcyh7aWQ6U3RyaW5nKGUpLHF1YW50aXR5OlN0cmluZyhuKX0pLHI9YCR7bnJ9L2FkZC1pdGVtPyR7b31gLHM9e21ldGhvZDoiUE9TVCIsaGVhZGVyczphLGNyZWRlbnRpYWxzOiJpbmNsdWRlIn07dHJ5e2NvbnN0IGU9YXdhaXQgd2luZG93LnBhcmVudC5mZXRjaChyLHMpO2lmKDQwMz09PWUuc3RhdHVzfHw0MDE9PT1lLnN0YXR1cyl7Y29uc3QgdD1lLmhlYWRlcnMuZ2V0KCJOb25jZSIpPz9hd2FpdCBvcigpO2lmKHQpe2lyKHdpbmRvdy5wYXJlbnQsdCk7Y29uc3QgZT1hd2FpdCB3aW5kb3cucGFyZW50LmZldGNoKHIsey4uLnMsaGVhZGVyczp7Tm9uY2U6dH19KTtyZXR1cm4gYXIoZSksZX1yZXR1cm4gZX1yZXR1cm4gYXIoZSksZX1jYXRjaChlKXt0aHJvdyBlIGluc3RhbmNlb2YgRXJyb3I/ZTpuZXcgRXJyb3IoIkNvdWxkbid0IGFkZCB0byBXb29Db21tZXJjZSBjYXJ0IGZyb20gcGFyZW50IHdpbmRvdyIpfX07dmFyIHNyPWU9Pntjb25zdCB0PSgwLGEudXNlQ29udGV4dCkocnQpO3JldHVybiB0PygwLEYuY3JlYXRlUG9ydGFsKSgoMCxWLlkpKGN0LHsuLi5lfSksdCk6bnVsbH07Y29uc3QgbHI9e25hbWU6IjZsYWFrbyIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDtwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDZweCk7cGFkZGluZzo4cHggMTJweDtsaW5lLWhlaWdodDoyMHB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcik7Y29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1jb250cmFzdCk7Jjpub3QoOmRpc2FibGVkKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItaG92ZXIpO30mOm5vdCg6ZGlzYWJsZWQpOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItYWN0aXZlKTt9JjpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3Rjk7Y29sb3I6IzY0NzQ5MTtvdXRsaW5lOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IsICNEM0RCRTUpO3BhZGRpbmc6OHB4IDExcHg7Y3Vyc29yOmRlZmF1bHQ7fSJ9O3ZhciBkcj17YnV0dG9uOmxyLGFkZGVkVG9DYXJ0QnV0dG9uOigwLGQuQUgpKGxyLCImIHN2Z3tmaWxsOiMzNEI4NTc7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDt9IiwiIiksYWRkaW5nVG9DYXJ0QnV0dG9uOigwLGQuQUgpKGxyLCImOmhvdmVye2N1cnNvcjpwcm9ncmVzczt9JiBzdmcubG9hZGVyLWljb257cG9zaXRpb246c3RhdGljO30iLCIiKSx2aWV3Q2FydFBsYXlncm91bmRUb29sdGlwOigwLGQuQUgpKE5pLnRvb2x0aXAsIndpZHRoOjIxN3B4O3doaXRlLXNwYWNlOm5vcm1hbDsiLCIiKSxlcnJvck1lc3NhZ2VDb250YWluZXI6e25hbWU6Ijg5emo0eCIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7JiBzdmd7ZmlsbDojRTgxMzMyO3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7ZmxleC1zaHJpbms6MDt9In0sZXJyb3JNZXNzYWdlOntuYW1lOiIxNTRiYm5kIixzdHlsZXM6ImNvbG9yOiNFODEzMzI7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MTZweCJ9fTtjb25zdCBjcj1lPT57bGV0e2J1dHRvblN0YXRlOnQsb25BZGRUb0NhcnRDbGljazpuLG9uVmlld0NhcnRDbGljazppLG9uVmlld0RldGFpbHNDbGljazphLGRpc2FibGVkOm89ITF9PWU7Y29uc3Qgcj0oMCxmLk1JKSgpO2lmKCJhZGQiPT09dClyZXR1cm4oMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGRpc2FibGVkOm8sb25DbGljazpuLGNzczpkci5idXR0b24sY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6InJlY29tbWVuZFByb2R1Y3RBZGRUb0NhcnQiLGZhbGxiYWNrOiJBZGQgdG8gY2FydCJ9KX0pO2lmKCJhZGRpbmciPT09dClyZXR1cm4oMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixkaXNhYmxlZDohMCxjc3M6ZHIuYWRkaW5nVG9DYXJ0QnV0dG9uLGNoaWxkcmVuOlsoMCxWLlkpKHV0LnRSLHt3aWR0aDoyMCxoZWlnaHQ6MjB9KSwoMCxWLlkpKE9uLHt2YWx1ZToicmVjb21tZW5kUHJvZHVjdEFkZGluZ1RvQ2FydCIsZmFsbGJhY2s6IkFkZGluZyB0byBjYXJ0In0pXX0pO2lmKCJhZGRlZCI9PT10KXJldHVybigwLFYuRkQpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGRpc2FibGVkOiEwLGNzczpkci5hZGRlZFRvQ2FydEJ1dHRvbixjaGlsZHJlbjpbKDAsVi5ZKSh1dC5vaCx7fSksKDAsVi5ZKShPbix7dmFsdWU6InJlY29tbWVuZFByb2R1Y3RBZGRlZCIsZmFsbGJhY2s6IkFkZGVkIn0pXX0pO2lmKCJjYXJ0Ij09PXQpe2NvbnN0IGU9b3x8cjtyZXR1cm4oMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixkaXNhYmxlZDplLG9uQ2xpY2s6aSxjc3M6W2RyLmJ1dHRvbixOaS50b29sdGlwQnV0dG9uKHtzaG93T25EaXNhYmxlZDohMH0pLCIiLCIiXSxjaGlsZHJlbjpbKDAsVi5ZKShPbix7dmFsdWU6InJlY29tbWVuZFByb2R1Y3RWaWV3Q2FydCIsZmFsbGJhY2s6IlZpZXcgY2FydCJ9KSxyJiYoMCxWLlkpKCJzcGFuIix7Y2xhc3NOYW1lOiJ0b29sdGlwIixjc3M6ZHIudmlld0NhcnRQbGF5Z3JvdW5kVG9vbHRpcCxjaGlsZHJlbjooMCx5LnB3KSgidmlld0NhcnRBY3Rpb25Ob3RBdmFpbGFibGVJblBsYXlncm91bmQiLG51bGwsIlZpZXcgY2FydCBhY3Rpb24gaXNuJ3QgYXZhaWxhYmxlIGluIEx5cm8gcGxheWdyb3VuZC4iKX0pXX0pfXJldHVybiJlcnJvciI9PT10PygwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6YSxjc3M6ZHIuYnV0dG9uLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJyZWNvbW1lbmRQcm9kdWN0Vmlld0RldGFpbHMiLGZhbGxiYWNrOiJWaWV3IGRldGFpbHMifSl9KSwoMCxWLkZEKSgiZGl2Iix7Y3NzOmRyLmVycm9yTWVzc2FnZUNvbnRhaW5lcixjaGlsZHJlbjpbKDAsVi5ZKSh1dC5tbyx7fSksKDAsVi5ZKSgicCIse2Nzczpkci5lcnJvck1lc3NhZ2UsY2hpbGRyZW46KDAseS5wdykoInJlY29tbWVuZFByb2R1Y3RBZGRUb0NhcnRFcnJvciIsbnVsbCwiQ291bGRuJ3QgYWRkIHRvIGNhcnQuIE9wZW4gdGhlIHByb2R1Y3QgcGFnZSB0byBjb250aW51ZS4iKX0pXX0pXX0pOm51bGx9O3ZhciB1cj1lPT57bGV0e2Rpc3BsYXllZFZhcmlhbnRJZDp0LG1lc3NhZ2VJZDpuLGRpc2FibGVkOmksb25BZGRUb0NhcnQ6byxvblZpZXdEZXRhaWxzQ2xpY2s6cyxpc0ZseU1lc3NhZ2U6bH09ZTtjb25zdCBkPSgwLHIud0EpKCksYz0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+eygwLGYuTUkpKCl8fGQoKDAsay5wTzYpKGx0LlgucHJvZHVjdFJlY29tbWVuZGF0aW9uVmlld0NhcnRDbGlja2VkKSl9LFtkXSkse2J1dHRvblN0YXRlOnUsZXhlY3V0ZUFkZFRvQ2FydDpwLGhhbmRsZVZpZXdDYXJ0Om19PWVyKHtkaXNwbGF5ZWRWYXJpYW50SWQ6dCxtZXNzYWdlSWQ6bixpc0ZseU1lc3NhZ2U6bCxvbkFkZFRvQ2FydDpvLG9uVmlld0NhcnRDbGljazpjfSksaD0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e3AodCl9LFtwLHRdKTtyZXR1cm4oMCxWLlkpKGNyLHtidXR0b25TdGF0ZTp1LG9uQWRkVG9DYXJ0Q2xpY2s6aCxvblZpZXdDYXJ0Q2xpY2s6bSxvblZpZXdEZXRhaWxzQ2xpY2s6cyxkaXNhYmxlZDppfSl9O2NvbnN0IHByPXttOntidXR0b25TaXplOjI4LGljb25TaXplOjE4fSxsOntidXR0b25TaXplOjMwLGljb25TaXplOjE4fX0sZnI9ZT0+e2NvbnN0e2J1dHRvblNpemU6dCxpY29uU2l6ZTpufT1wcltlXTtyZXR1cm4oMCxkLkFIKSh7d2lkdGg6dCxoZWlnaHQ6dCxkaXNwbGF5OiJmbGV4IixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixhbGlnbkl0ZW1zOiJjZW50ZXIiLGZsZXhTaHJpbms6MCxib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1zbWFsbC1jb21wb25lbnQsIDhweCkiLHN2Zzp7ZmlsbDoiIzY0NzQ5MSIsd2lkdGg6bixoZWlnaHQ6bn0sIiY6Zm9jdXMiOntvdXRsaW5lOiJub25lIn0sIiY6bm90KDpkaXNhYmxlZCkiOntjdXJzb3I6InBvaW50ZXIiLCImOmhvdmVyLCAmOmZvY3VzIjp7YmFja2dyb3VuZDoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1iYWNrZ3JvdW5kKSIsc3ZnOntmaWxsOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKSJ9fSwiJjphY3RpdmUiOntiYWNrZ3JvdW5kOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLWJhY2tncm91bmQtYWN0aXZlKSJ9fSwiJjpkaXNhYmxlZCI6e2N1cnNvcjoiZGVmYXVsdCIsc3ZnOntmaWxsOiIjQUNCOENCIn19fSwiIiwiIil9O3ZhciBtcj1lPT57bGV0e2ljb246dCxzaXplOm49ImwiLC4uLml9PWU7cmV0dXJuKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6ZnIobiksLi4uaSxjaGlsZHJlbjooMCxWLlkpKHQse30pfSl9O3ZhciBocj17aGVhZGVyOigwLGQuQUgpKHtkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLHBvc2l0aW9uOiJyZWxhdGl2ZSIscGFkZGluZzoiMjBweCAxMnB4IixmbGV4U2hyaW5rOjB9LCIiLCIiKSx0aXRsZTooMCxkLkFIKSh7Zm9udFNpemU6MTYsZm9udFdlaWdodDo2MDAsY29sb3I6IiMwODBmMWEiLGxpbmVIZWlnaHQ6IjIwcHgiLGxldHRlclNwYWNpbmc6Ii0wLjAxZW0iLG92ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLGRpc3BsYXk6Ii13ZWJraXQtYm94IixXZWJraXRMaW5lQ2xhbXA6MyxXZWJraXRCb3hPcmllbnQ6InZlcnRpY2FsIixtYXhXaWR0aDpgY2FsYygxMDAlIC0gJHsyKigxMitwci5sLmljb25TaXplKX1weClgLHRleHRBbGlnbjoiY2VudGVyIn0sIiIsIiIpLGNsb3NlQnV0dG9uOigwLGQuQUgpKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHJpZ2h0OjEyfSwiIiwiIiksbGlzdDp7bmFtZToiMXM4ajY2cCIsc3R5bGVzOiJvdmVyZmxvdy15OmF1dG87ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOjBweCAxMnB4IDMycHggMTJweDtnYXA6NHB4In0scm93Q29udGVudDp7bmFtZToicTBncmNvIixzdHlsZXM6IndpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjEycHggOHB4O2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIwcHg7Ym9yZGVyLXJhZGl1czo0cHg7Y3Vyc29yOmRlZmF1bHQ7Jjpub3QoOmRpc2FibGVkKXsmOmhvdmVye2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6I0Y1RjdGOTt9Jjpmb2N1c3tvdXRsaW5lOm5vbmU7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAycHggdmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvcik7fX0ifSxsYWJlbDooZSx0KT0+KDAsZC5BSCkoe2ZvbnRXZWlnaHQ6NTAwLHRleHREZWNvcmF0aW9uOmU/ImxpbmUtdGhyb3VnaCI6Im5vbmUiLGNvbG9yOmU/IiM2NDc0OTEiOiIjMDgwRjFBIix0ZXh0QWxpZ246ImxlZnQiLGRpc3BsYXk6Ii13ZWJraXQtYm94IixXZWJraXRMaW5lQ2xhbXA6dD8xOjIsV2Via2l0Qm94T3JpZW50OiJ2ZXJ0aWNhbCIsb3ZlcmZsb3c6ImhpZGRlbiJ9LCIiLCIiKSxwcmljZTp7bmFtZToidXFveHA0IixzdHlsZXM6ImNvbG9yOiM2NDc0OTE7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0In19O2NvbnN0IGdyPVsibWVhc3VyZW1lbnQud2VpZ2h0Il07dmFyIGJyPWU9PntsZXR7dGl0bGU6dCx2YXJpYW50czpuLGN1cnJlbmN5Omksb25DbG9zZTphLG9uU2VsZWN0Om99PWU7Y29uc3Qgcz1RbyhpKSxsPSgwLHIuZDQpKEMuTnkpO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLkZEKSgiZGl2Iix7Y3NzOmhyLmhlYWRlcixjaGlsZHJlbjpbKDAsVi5ZKSgicCIse2Nzczpoci50aXRsZSxjaGlsZHJlbjp0fSksKDAsVi5ZKShtcix7aWNvbjp1dC5ibSxjc3M6aHIuY2xvc2VCdXR0b24sb25DbGljazphLCJhcmlhLWxhYmVsIjooMCx5LnB3KSgiY2xvc2UiLG51bGwsIkNsb3NlIil9KV19KSwoMCxWLlkpKCJkaXYiLHtjc3M6aHIubGlzdCxjaGlsZHJlbjpuLm1hcChlPT57Y29uc3QgdD0hMT09PWUuYXZhaWxhYmxlX2Zvcl9zYWxlLG49KGU9Pntjb25zdCB0PU9iamVjdC5lbnRyaWVzKGUudmFyaWFudCksbj10LmZpbHRlcihlPT57bGV0W3RdPWU7cmV0dXJuIWdyLmluY2x1ZGVzKHQpfSk7cmV0dXJuIDA9PT1uLmxlbmd0aD90Lm1hcChlPT57bGV0Wyx0XT1lO3JldHVybiB0fSkuam9pbigiLCAiKTpuLm1hcChlPT57bGV0Wyx0XT1lO3JldHVybiB0fSkuam9pbigiLCAiKX0pKGUpO3JldHVybigwLFYuRkQpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNzczpoci5yb3dDb250ZW50LGRpc2FibGVkOnQsb25DbGljazooKT0+byhlLnZhcmlhbnRfaWQpLGNoaWxkcmVuOlsoMCxWLlkpKCJzcGFuIix7Y3NzOmhyLmxhYmVsKHQsbCksY2hpbGRyZW46bn0pLCgwLFYuWSkoInNwYW4iLHtjc3M6aHIucHJpY2UsY2hpbGRyZW46dD8oMCxWLlkpKE9uLHt2YWx1ZToicmVjb21tZW5kUHJvZHVjdFNvbGRPdXQiLGZhbGxiYWNrOiJTb2xkIG91dCJ9KTpzPy5mb3JtYXQoZS5wcmljZSk/P2Ake2UucHJpY2V9YH0pXX0sZS52YXJpYW50X2lkKX0pfSldfSl9O3ZhciB2cj1lPT57bGV0e3Byb2R1Y3Q6dCx2YXJpYW50Om4sbWVzc2FnZUlkOmksb25WaWV3RGV0YWlsc0NsaWNrOm99PWU7Y29uc3Qgcz0oMCxyLndBKSgpLGw9KDAsci5kNCkoQy51bykse3ZhcmlhbnRfaWQ6ZCxjdXJyZW5jeTpjfT1uLFt1LHBdPSgwLGEudXNlU3RhdGUpKCExKSxtPSgwLGYuTUkpKCksaD0oMCxhLnVzZUNhbGxiYWNrKShhc3luYyBlPT57Y29uc3QgaT10LnZhcmlhbnRzLmZpbmQodD0+dC52YXJpYW50X2lkPT09ZSk/P247aWYobSlyZXR1cm4hMDtzKCgwLGsuaWFxKSh7cHJvZHVjdElkOnQucHJvZHVjdF9pZCxjdGE6ImFkZF90b19jYXJ0IixwcmljZTpNYXRoLnJvdW5kKDEwMCppLnByaWNlKSxjdXJyZW5jeTppLmN1cnJlbmN5fSkpLHMoKDAsay5wTzYpKGx0LlguYWlBc3Npc3RhbnRQcm9kdWN0Q2FyZEFkZFRvQ2FydENsaWNrZWQpKTt0cnl7bGV0IHQ9bnVsbDtpZihsPT09dHQuT0QuU0hPUElGWSl0PWF3YWl0KDAsdHIuSWwpKGUpO2Vsc2V7aWYobCE9PXR0Lk9ELldPT0NPTU1FUkNFKXJldHVybigwLHYuc1EpKCJBZGQgdG8gY2FydDogdW5zdXBwb3J0ZWQgcGxhdGZvcm0iLHttZXNzYWdlOmx9KSwhMTt0PWF3YWl0IHJyKGUpfXJldHVybiEhdC5va3x8KCgwLHYuc1EpKCJBZGQgdG8gY2FydCByZXF1ZXN0IGZhaWxlZCIse21lc3NhZ2U6dC5zdGF0dXNUZXh0LHBsYXRmb3JtOmx9KSwhMSl9Y2F0Y2goZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmKDAsdi5zUSkoIkFkZCB0byBjYXJ0IHJlcXVlc3QgZmFpbGVkIix7bWVzc2FnZTplLm1lc3NhZ2UscGxhdGZvcm06bH0pLCExfX0sW3MsbCx0LnByb2R1Y3RfaWQsdC52YXJpYW50cyxtLG5dKSxnPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57bXx8cygoMCxrLnBPNikobHQuWC5haUFzc2lzdGFudFByb2R1Y3RDYXJkVmlld0NhcnRDbGlja2VkKSl9LFtzLG1dKSx7YnV0dG9uU3RhdGU6YixleGVjdXRlQWRkVG9DYXJ0OngsaGFuZGxlVmlld0NhcnQ6eX09ZXIoe2Rpc3BsYXllZFZhcmlhbnRJZDpkLG1lc3NhZ2VJZDppLG9uQWRkVG9DYXJ0Omgsb25WaWV3Q2FydENsaWNrOmd9KSx3PSgwLGEudXNlTWVtbykoKCk9PnQudmFyaWFudHMuZmlsdGVyKGU9Pk9iamVjdC5rZXlzKGUudmFyaWFudCkubGVuZ3RoPjApLFt0LnZhcmlhbnRzXSksQT0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e3cubGVuZ3RoPjE/cCghMCk6eChkKX0sW3cubGVuZ3RoLGQseF0pLEU9KDAsYS51c2VDYWxsYmFjaykoZT0+e218fHMoKDAsay5wTzYpKGx0LlguYWlBc3Npc3RhbnRQcm9kdWN0Q2FyZFZhcmlhbnRQaWNrZXJWYXJpYW50Q2xpY2tlZCkpLHAoITEpLHgoZSl9LFt4LHMsbV0pLFM9KDAsYS51c2VDYWxsYmFjaykoKCk9PntwKCExKX0sW10pO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKHNyLHtpc09wZW46dSxvbkNsb3NlOlMsY2hpbGRyZW46KDAsVi5ZKShicix7dmFyaWFudHM6dyx0aXRsZTp0LnRpdGxlLGN1cnJlbmN5OmMsb25DbG9zZTpTLG9uU2VsZWN0OkV9KX0pLCgwLFYuWSkoY3Ise2J1dHRvblN0YXRlOmIsb25BZGRUb0NhcnRDbGljazpBLG9uVmlld0NhcnRDbGljazp5LG9uVmlld0RldGFpbHNDbGljazpvfSldfSl9O3ZhciB4cj17Y29udGFpbmVyOntuYW1lOiIxOTFucTdsIixzdHlsZXM6Im92ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkICNFNkU4RUY7Ym9yZGVyLXJhZGl1czoxMnB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cG9zaXRpb246cmVsYXRpdmUifSxjbGlja2FibGVDb250YWluZXI6e25hbWU6ImNyZWowaiIsc3R5bGVzOiJjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3BhY2l0eTowO3otaW5kZXg6MTtjb2xvcjppbmhlcml0OyY6Zm9jdXN7b3V0bGluZTpub25lO30mOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lO30ifSxpbWFnZTp7bmFtZToiMWN6MTdpaCIsc3R5bGVzOiJkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjEgLyAxO29iamVjdC1maXQ6Y29udGFpbjtvYmplY3QtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtwb2ludGVyLWV2ZW50czpub25lO3VzZXItc2VsZWN0Om5vbmUifSxjb250ZW50Q29udGFpbmVyOntuYW1lOiIxYTgwOWYyIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEycHg7cGFkZGluZzoxNnB4IDEycHg7Ym9yZGVyLXJhZGl1czoxMnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mjtwb2ludGVyLWV2ZW50czpub25lIn0sYnV0dG9uc0NvbnRhaW5lcjp7bmFtZToibTdkZnluIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEycHg7cG9pbnRlci1ldmVudHM6YXV0byJ9LGdldFRpdGxlVGV4dDplPT4oMCxkLkFIKSh7Zm9udFdlaWdodDo2MDAsZGlzcGxheToiLXdlYmtpdC1ib3giLFdlYmtpdEJveE9yaWVudDoidmVydGljYWwiLFdlYmtpdExpbmVDbGFtcDoyLG92ZXJmbG93OiJoaWRkZW4iLC4uLmUmJntXZWJraXRMaW5lQ2xhbXA6MX19LCIiLCIiKSxwcmljZVRleHQ6e25hbWU6IjE2Y2VnbGIiLHN0eWxlczoiZm9udC13ZWlnaHQ6NjAwIn0sbGlua0J1dHRvbjp7bmFtZToia2xrdHVlIixzdHlsZXM6IndpZHRoOjEwMCU7Jjpmb2N1c3tvdXRsaW5lOm5vbmU7fSY6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9In0sdGV4dEFuZFByaWNlc0NvbnRhaW5lcjp7bmFtZToidXJxc3ppIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweCJ9LHByaWNlc0NvbnRhaW5lcjp7bmFtZToiNDkwdGxnIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtnYXA6NHB4In0sYmFzZVByaWNlVGV4dDp7bmFtZToic2FwNzMyIixzdHlsZXM6ImNvbG9yOiM2NDc0OTE7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaCJ9LHZpZXdEZXRhaWxzQnV0dG9uOmU9PigwLGQuQUgpKHtwYWRkaW5nOiI3cHggMHB4Iixjb2xvcjoiIzA1NjZGRiIsZGlzcGxheToiZmxleCIsanVzdGlmeUNvbnRlbnQ6ImZsZXgtc3RhcnQiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjQsLi4uIWUmJntmb250V2VpZ2h0OjYwMH0sIiY6Zm9jdXMiOntvdXRsaW5lOiJub25lIn0sIiY6aG92ZXIiOnt0ZXh0RGVjb3JhdGlvbjoidW5kZXJsaW5lIn0sIiYgc3ZnIjp7ZmlsbDoiIzA1NjZGRiIsd2lkdGg6MTYsaGVpZ2h0OjE2fX0sIiIsIiIpfTt2YXIgeXI9ZT0+e2xldHt2YXJpYW50OnQscHJvZHVjdDpuLGlzQWRkVG9DYXJ0RW5hYmxlZDppLG1lc3NhZ2VJZDpvfT1lO2NvbnN0IHM9KDAsci53QSkoKSxsPSgwLHIuZDQpKEMuTnkpLHtpc05ld1NraW46ZH09KDAscC5BKSgpLGM9aHQoZCkse2Jhc2VfcHJpY2U6dSxwcmljZTptLGN1cnJlbmN5OmgsdXJsOmcsaW1hZ2VfdXJsOmJ9PXQse3RpdGxlOnZ9PW4seD0oMCxmLklGKShnKSx5PXUmJm0hPT11LHc9UW8oaCksQT1NYXRoLnJvdW5kKDEwMCptKSxFPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57KDAsZi5NSSkoKXx8KHMoKDAsay5pYXEpKHtwcm9kdWN0SWQ6bi5wcm9kdWN0X2lkLGN0YToidmlld19kZXRhaWxzIixwcmljZTpBLGN1cnJlbmN5Omh9KSkscygoMCxrLnBPNikobHQuWC5haUFzc2lzdGFudFByb2R1Y3RDYXJkVmlld0RldGFpbHNDbGlja2VkKSkpLCgwLGYuRmUpKHgpfSxbaCxzLHgsQSxuLnByb2R1Y3RfaWRdKTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y3NzOnhyLmNvbnRhaW5lcixjaGlsZHJlbjpbKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6eHIuY2xpY2thYmxlQ29udGFpbmVyLG9uQ2xpY2s6RSxjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToicmVjb21tZW5kUHJvZHVjdFZpZXdEZXRhaWxzIixmYWxsYmFjazoiVmlldyBkZXRhaWxzIn0pfSksYiYmKDAsVi5ZKSgiaW1nIix7c3JjOmIsYWx0OnYsY3NzOnhyLmltYWdlfSksKDAsVi5GRCkoImRpdiIse2Nzczp4ci5jb250ZW50Q29udGFpbmVyLGNoaWxkcmVuOlsoMCxWLkZEKSgiZGl2Iix7Y3NzOnhyLnRleHRBbmRQcmljZXNDb250YWluZXIsY2hpbGRyZW46WygwLFYuWSkoInAiLHtjc3M6W3hyLmdldFRpdGxlVGV4dChsKSxjLnRleHQxNE1lZGl1bSwiIiwiIl0sY2hpbGRyZW46dn0pLHcmJigwLFYuRkQpKCJkaXYiLHtjc3M6eHIucHJpY2VzQ29udGFpbmVyLGNoaWxkcmVuOlt5JiYoMCxWLlkpKCJwIix7Y3NzOlt4ci5iYXNlUHJpY2VUZXh0LGMudGV4dDE0TWVkaXVtLCIiLCIiXSxjaGlsZHJlbjp3LmZvcm1hdCh1KX0pLCgwLFYuWSkoInAiLHtjc3M6W3hyLnByaWNlVGV4dCxjLnRleHQxNE1lZGl1bSwiIiwiIl0sY2hpbGRyZW46dy5mb3JtYXQobSl9KV19KV19KSwoMCxWLlkpKCJkaXYiLHtjc3M6eHIuYnV0dG9uc0NvbnRhaW5lcixjaGlsZHJlbjppPygwLFYuWSkodnIse3Byb2R1Y3Q6bix2YXJpYW50OnQsbWVzc2FnZUlkOm8sb25WaWV3RGV0YWlsc0NsaWNrOkV9KTooMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6eHIudmlld0RldGFpbHNCdXR0b24oZCksb25DbGljazpFLGNoaWxkcmVuOlsoMCxWLlkpKE9uLHt2YWx1ZToicmVjb21tZW5kUHJvZHVjdFZpZXdEZXRhaWxzIixmYWxsYmFjazoiVmlldyBkZXRhaWxzIn0pLCgwLFYuWSkodXQuaTMse30pXX0pfSldfSldfSl9LHdyPW4oNjU5Myksa3I9bi5uKHdyKTtjb25zdCBBcj0oMCxkLmk3KSh7IjAlIjp7dHJhbnNmb3JtOiJ0cmFuc2xhdGVYKDglKSJ9LCIxMDAlIjp7dHJhbnNmb3JtOiJ0cmFuc2xhdGVYKDApIn19KSxDcj0oMCxkLmk3KSh7IjAlIjp7b3BhY2l0eToxLHpJbmRleDoxfSwiMTAwJSI6e29wYWNpdHk6MCx6SW5kZXg6LTF9fSk7dmFyIEVyPXtzbGlkZXNob3dDb250YWluZXI6e25hbWU6IjFvZHIyMHIiLHN0eWxlczoicG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3cteDpoaWRkZW47d2lkdGg6MTAwJTtmbG9hdDpsZWZ0In0sY29udGFpbmVyOntuYW1lOiJqaWFhY2IiLHN0eWxlczoicG9zaXRpb246cmVsYXRpdmU7Y2xlYXI6Ym90aDt3aWR0aDoxMDAlO2Zsb2F0OmxlZnQifSxnZXRCdXR0b246KGUsdCk9PigwLGQuQUgpKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGJhY2tncm91bmQ6IiNmZmYiLGJvcmRlclJhZGl1czoiNTAlIix3aWR0aDo0MCxoZWlnaHQ6NDAsYm94U2hhZG93OiIgMCAxMnB4IDMycHggMCByZ2JhKDgsIDE1LCAyNiwgMC4xMikiLHpJbmRleDozLHRvcDp0PzIyOjE0MCx0cmFuc2l0aW9uOiJib3gtc2hhZG93IDAuMnMsIG9wYWNpdHkgMC4ycyIsIiY6aG92ZXIiOntib3hTaGFkb3c6IjBweCAxMHB4IDIwcHggMHB4IHJnYmEoMCwgMjcsIDcxLCAwLjI0KSJ9LCImOmZvY3VzIjp7b3V0bGluZToibm9uZSJ9LC4uLiJsZWZ0Ij09PWUmJntsZWZ0OjB9LC4uLiJyaWdodCI9PT1lJiZ7cmlnaHQ6MH0sIiYgc3ZnIjp7d2lkdGg6NDAsaGVpZ2h0OjQwLC4uLiJsZWZ0Ij09PWUmJnt0cmFuc2Zvcm06InJvdGF0ZSg5MGRlZykiLCIubGFuZy1ydGwgJiI6e3RyYW5zZm9ybToicm90YXRlKC05MGRlZykifX0sLi4uInJpZ2h0Ij09PWUmJnt0cmFuc2Zvcm06InJvdGF0ZSgtOTBkZWcpIiwiLmxhbmctcnRsICYiOnt0cmFuc2Zvcm06InJvdGF0ZSg5MGRlZykifX19fSwiIiwiIiksZ2V0SXRlbXNDb250YWluZXI6ZT0+e2NvbnN0IHQ9ZT8yMDoyNDtyZXR1cm4oMCxkLkFIKSh7cGFkZGluZzpgMHB4ICR7dH1weGAsbWF4V2lkdGg6YGNhbGMoMTAwJSArICR7Mip0fXB4KWAsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLG92ZXJmbG93OiJhdXRvIixib3JkZXJSYWRpdXM6MCxkaXNwbGF5OiJmbGV4IixzY3JvbGxTbmFwVHlwZToieCBtYW5kYXRvcnkiLHNjcm9sbFBhZGRpbmc6dCxzY3JvbGxCZWhhdmlvcjoic21vb3RoIixtYXJnaW5Cb3R0b206NSxtYXJnaW5MZWZ0Oi10LG1hcmdpblJpZ2h0Oi10LGdhcDoxMCxtc092ZXJmbG93U3R5bGU6Im5vbmUiLHNjcm9sbGJhcldpZHRoOiJub25lIiwiOjotd2Via2l0LXNjcm9sbGJhciI6e2Rpc3BsYXk6Im5vbmUifSwiLmlvcy1pcGFkICYiOntXZWJraXRPdmVyZmxvd1Njcm9sbGluZzoidG91Y2gifSwiLnNhZmFyaSAmIjp7c2Nyb2xsU25hcFR5cGU6InggbWFuZGF0b3J5IiwiLmxhbmctcnRsICYiOntzY3JvbGxTbmFwVHlwZToibm9uZSJ9fX0sIiIsIiIpfSxnZXRJdGVtV3JhcHBlcjooZSx0KT0+KDAsZC5BSCkoe21heFdpZHRoOiIxMDAlIixtaW5XaWR0aDplLHNjcm9sbFNuYXBBbGlnbjoiY2VudGVyIix3aWxsQ2hhbmdlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybToidHJhbnNsYXRlWCg4JSkiLGFuaW1hdGlvbjpgJHtBcn0gLjVzIC4ycyBlYXNlLW91dCBmb3J3YXJkc2AscG9zaXRpb246InJlbGF0aXZlIiwiJjpiZWZvcmUiOntjb250ZW50OiciIicscG9zaXRpb246ImFic29sdXRlIix6SW5kZXg6MSxwb2ludGVyRXZlbnRzOiJub25lIixiYWNrZ3JvdW5kQ29sb3I6IiNmZmYiLHdpbGxDaGFuZ2U6Im9wYWNpdHkiLG9wYWNpdHk6MSxhbmltYXRpb246YCR7Q3J9IC41cyAuMnMgZWFzZS1vdXQgZm9yd2FyZHNgfSwiJjpudGgtY2hpbGQoMikiOnthbmltYXRpb25EZWxheToiLjRzIiwiJjpiZWZvcmUiOnthbmltYXRpb25EZWxheToiLjRzIn19LC4uLnQmJnttYXhXaWR0aDplfX0sIiIsIiIpfTt2YXIgU3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuREVGQVVMVD0iZGVmYXVsdCIsZS5SRVZFUlNFPSJyZXZlcnNlIixlfShTcnx8e30pO3ZhciBEcj1lPT57bGV0e2l0ZW1zOnQsaXRlbUtleTpuLHJlbmRlckl0ZW06aSxpc1dpdGhvdXRJbWFnZXM6bz0hMSxpc0ZseU1lc3NhZ2U6cz0hMX09ZTtjb25zdCBsPSgwLHIud0EpKCksZD0oMCx5LlY4KSgpLGM9cz8yMjQ6MjQwLHU9dC5sZW5ndGgscD1hLnVzZVJlZihudWxsKSxmPWEudXNlUmVmKCExKSxbbSxoXT1hLnVzZVN0YXRlKFNyLlJFVkVSU0UpLFtnLGJdPWEudXNlU3RhdGUoMCksW3YseF09YS51c2VTdGF0ZSgwKSxbdyxBXT1hLnVzZVN0YXRlKDApLEM9KDAsYS51c2VDYWxsYmFjaykoKCk9PntsKCgwLGsucE82KShsdC5YLmNhcmRzU2Nyb2xsZWQpKX0sW2xdKSxFPSgwLGEudXNlTWVtbykoKCk9PntpZighcC5jdXJyZW50KXJldHVybiAwO2NvbnN0IGU9ZD8tMSp3Onc7cmV0dXJuIGU8MTA/MDplPjAmJmU8YyYmdT4xPzE6TWF0aC5mbG9vcihlLyhjKzEwKSkrMX0sW3csYyxkLHVdKSxTPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57cC5jdXJyZW50JiYocC5jdXJyZW50LnNjcm9sbExlZnQrPWMsQygpKX0sW0MsY10pLEQ9KDAsYS51c2VDYWxsYmFjaykoKCk9PntwLmN1cnJlbnQmJihwLmN1cnJlbnQuc2Nyb2xsTGVmdC09YyxDKCkpfSxbQyxjXSk7cmV0dXJuKDAsYS51c2VFZmZlY3QpKCgpPT57aWYoIXAuY3VycmVudHx8Zi5jdXJyZW50KXJldHVybigpPT57fTtmLmN1cnJlbnQ9ITAscC5jdXJyZW50LnNjcm9sbExlZnQ+MD9oKFNyLkRFRkFVTFQpOnAuY3VycmVudC5zY3JvbGxMZWZ0PTA7Y29uc3QgZT1rcigpKCgpPT57cC5jdXJyZW50JiZBKHAuY3VycmVudC5zY3JvbGxMZWZ0KX0sODApO3JldHVybiBwLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixlKSxiKHAuY3VycmVudD8ub2Zmc2V0V2lkdGh8fDApLHgocC5jdXJyZW50Py5zY3JvbGxXaWR0aHx8MCksQShwLmN1cnJlbnQmJmQmJiJkZWZhdWx0Ij09PW0/cC5jdXJyZW50LnNjcm9sbFdpZHRoLXAuY3VycmVudC5vZmZzZXRXaWR0aDowKSwoKT0+e3AuY3VycmVudCYmcC5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsZSl9fSxbZCxtXSksKDAsVi5GRCkoImRpdiIse2NzczpFci5zbGlkZXNob3dDb250YWluZXIsY2hpbGRyZW46WygwLFYuWSkoImRpdiIse2NzczpFci5jb250YWluZXIsY2xhc3NOYW1lOiJzbGlkZXNob3ciLGNoaWxkcmVuOmQ/KDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WyJkZWZhdWx0Ij09PW0mJigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKCQse2NsYXNzTmFtZXM6ImZhZGUyMDAiLGluOnYtZz53LGNoaWxkcmVuOigwLFYuWSkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY3NzOkVyLmdldEJ1dHRvbigibGVmdCIsbyksb25DbGljazpTLGNoaWxkcmVuOigwLFYuWSkodXQuc1gse30pfSl9KSwoMCxWLlkpKCQse2NsYXNzTmFtZXM6ImZhZGUyMDAiLGluOnc+MTAsY2hpbGRyZW46KDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6RXIuZ2V0QnV0dG9uKCJyaWdodCIsbyksb25DbGljazpELGNoaWxkcmVuOigwLFYuWSkodXQuc1gse30pfSl9KV19KSwicmV2ZXJzZSI9PT1tJiYoMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgkLHtjbGFzc05hbWVzOiJmYWRlMjAwIixpbjp3PC0xMCxjaGlsZHJlbjooMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNzczpFci5nZXRCdXR0b24oImxlZnQiLG8pLG9uQ2xpY2s6UyxjaGlsZHJlbjooMCxWLlkpKHV0LnNYLHt9KX0pfSksKDAsVi5ZKSgkLHtjbGFzc05hbWVzOiJmYWRlMjAwIixpbjp2LWc+LTEqdyxjaGlsZHJlbjooMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNzczpFci5nZXRCdXR0b24oInJpZ2h0IixvKSxvbkNsaWNrOkQsY2hpbGRyZW46KDAsVi5ZKSh1dC5zWCx7fSl9KX0pXX0pXX0pOigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKCQse2NsYXNzTmFtZXM6ImZhZGUyMDAiLGluOnc+MTAsY2hpbGRyZW46KDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6RXIuZ2V0QnV0dG9uKCJsZWZ0IixvKSxvbkNsaWNrOkQsY2hpbGRyZW46KDAsVi5ZKSh1dC5zWCx7fSl9KX0pLCgwLFYuWSkoJCx7Y2xhc3NOYW1lczoiZmFkZTIwMCIsaW46di1nPncsY2hpbGRyZW46KDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6RXIuZ2V0QnV0dG9uKCJyaWdodCIsbyksb25DbGljazpTLGNoaWxkcmVuOigwLFYuWSkodXQuc1gse30pfSl9KV19KX0pLCgwLFYuWSkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yIixjc3M6RXIuZ2V0SXRlbXNDb250YWluZXIocykscmVmOnAsY2hpbGRyZW46dC5tYXAoKGUsYSk9PigwLFYuWSkoImRpdiIse2NzczpFci5nZXRJdGVtV3JhcHBlcihjLDE9PT10Lmxlbmd0aCksY2hpbGRyZW46aShlLEU9PT1hKX0sU3RyaW5nKGVbbl0pKSl9KV19KX07big4ODkyKTt2YXIgWXI9ZT0+ZS5mbGF0TWFwKGU9PmUudmFyaWFudHMuZmlsdGVyKGU9PmUuaXNfcmVjb21tZW5kZWQpLm1hcCh0PT4oey4uLnQscHJvZHVjdDplfSkpKTt2YXIgVHI9ZT0+e2xldHttZXNzYWdlSWQ6dCxwcm9kdWN0czpufT1lO2NvbnN0IGk9KDAsci5kNCkoQy51byksYT0oMCxyLmQ0KShDLkZyKSxvPWk9PT10dC5PRC5TSE9QSUZZJiYoKDAsZi5NSSkoKXx8KDAsZi5hZSkoKSl8fGk9PT10dC5PRC5XT09DT01NRVJDRSxzPSJhZGRfdG9fY2FydCI9PT1hJiZvLGw9WXIobiksZD1sLmV2ZXJ5KGU9PiFlLmltYWdlX3VybCk7cmV0dXJuKDAsVi5ZKShEcix7aXRlbXM6bCxpdGVtS2V5OiJ2YXJpYW50X2lkIixpc1dpdGhvdXRJbWFnZXM6ZCxyZW5kZXJJdGVtOmU9PigwLFYuWSkoeXIse3ZhcmlhbnQ6ZSxwcm9kdWN0OmUucHJvZHVjdCxtZXNzYWdlSWQ6dCxpc0FkZFRvQ2FydEVuYWJsZWQ6c30sZS52YXJpYW50X2lkKX0pfTt2YXIgRnI9KCk9Pntjb25zdCBlPSgwLHIuZDQpKEMuaGUpO3JldHVybigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciBhbHdheXMtb25saW5lIixjaGlsZHJlbjpbKDAsVi5ZKShPbix7dmFsdWU6ImFsd2F5c09ubGluZUVuZ2FnZU1lc3NhZ2UiLGVtb2ppZnk6ITAsbGlua2lmeTohMH0pLCgwLFYuWSkoTG4se3R5cGU6ImVtYWlsIixwbGFjZWhvbGRlcjoicHJlZm9ybUlucHV0X2VtYWlsIix2YWx1ZTplLGRpc2FibGVkOiEwfSldfSl9O2NvbnN0IElyPWU9PntsZXR7c3BhblJlZjp0LHdyYXBwZXJSZWY6bixtaW5XaWR0aDppfT1lO2NvbnN0IGE9KDAsaC5BTCkoKTt0JiZhJiZhLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2NvbnN0IGU9KHQuY3VycmVudD8ub2Zmc2V0V2lkdGg/PzApKzM1LGE9aT9NYXRoLm1heChlLGkpOmU7bi5jdXJyZW50Py5zdHlsZS5zZXRQcm9wZXJ0eSgid2lkdGgiLGAke2F9cHhgKX0pfSxfcj1lPT5GbihlKSxNcj1lPT57Y29uc3R7aG9zdDp0LHBhdGhuYW1lOm4sc2VhcmNoOmksaGFzaDphfT0oMCxmLkRsKShlKXx8e307cmV0dXJuYCR7dH0ke259JHtpfSR7YX1gfSxOcj1lPT4iW29iamVjdCBIVE1MSW1hZ2VFbGVtZW50XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk7Y29uc3QgT3I9ZT0+KDAsZC5BSCkoe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsYm90dG9tOmU/LTM3Oi0zMSxsZWZ0OjE2LGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImZsZXgtc3RhcnQiLHdpZHRoOjI2MH0sIiIsIiIpLFJyPWU9PigwLGQuQUgpKHtmb250U2l6ZToxMixtYXJnaW5Ub3A6ZT82OjExLG1hcmdpblJpZ2h0Ojh9LCIiLCIiKTt2YXIganI9e25hbWU6IjExdHgzMzQiLHN0eWxlczoicG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjBweCA3cHg7d2lkdGg6NzdweDtoZWlnaHQ6NDBweDtiYWNrZ3JvdW5kLWNvbG9yOiNGMEYyRjc7Ym9yZGVyOjNweCBzb2xpZCB3aGl0ZTtib3JkZXItcmFkaXVzOjIwcHg7Ym94LXNoYWRvdzowcHggM3B4IDhweCByZ2JhKDAsIDE4LCA0NiwgMC4xMik7OjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjM1cHg7d2lkdGg6MXB4O2hlaWdodDoyMHB4O2JhY2tncm91bmQtY29sb3I6I0M5RDFERDt9In0sUHI9e25hbWU6IjdldG94MyIsc3R5bGVzOiJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3dpZHRoOjEwMHB4O2hlaWdodDo0OHB4In07Y29uc3QgenI9ZT0+ZT9QcjpqcixMcj0oZSx0LG4pPT5uPygwLGQuQUgpKHtvdXRsaW5lOiJub25lIix3aWR0aDo0OCxoZWlnaHQ6NDgsYm9yZGVyUmFkaXVzOiI1MCUiLGJhY2tncm91bmRDb2xvcjoiI0YwRjJGNyIsYm94U2hhZG93OiIwcHggM3B4IDhweCAwcHggcmdiYSgwLCAyNywgNzEsIDAuMDgpIixib3JkZXI6IjNweCBzb2xpZCB3aGl0ZSIsc3ZnOntmaWxsOmU/IiNBQ0I4Q0IiOiIjMDU2NmZmIixoZWlnaHQ6MjIsd2lkdGg6MjJ9fSwiIiwiIik6KDAsZC5BSCkoe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsY3Vyc29yOnQ/ImluaXRpYWwiOiJwb2ludGVyIixvdXRsaW5lOiJub25lIiwiOjpiZWZvcmUiOntjb250ZW50OiInJyIscG9zaXRpb246ImFic29sdXRlIixiYWNrZ3JvdW5kQ29sb3I6InJnYmEoMCwxMjUsMjUyLDAuMTIpIix3aWR0aDozNCxoZWlnaHQ6MzQsYm9yZGVyUmFkaXVzOiI1MCUiLHRyYW5zaXRpb246ImFsbCAwLjE2cyBlYXNlLWluLW91dCIsdHJhbnNmb3JtOiJzY2FsZSgwKSIsdG9wOiJjYWxjKDUwJSAtIDE3cHgpIixsZWZ0OiJjYWxjKDUwJSAtIDE3cHgpIn0sIiY6aG92ZXI6OmJlZm9yZSI6e3RyYW5zZm9ybTp0PyJzY2FsZSgwKSI6InNjYWxlKDEpIn0sc3ZnOntmaWxsOmU/IiNBQ0I4Q0IiOiIjMDU2NmZmIixoZWlnaHQ6MjAsd2lkdGg6MjB9fSwiIiwiIik7dmFyIFVyPWU9Pntjb25zdCB0PSgwLHIud0EpKCksbj0oMCxyLmQ0KShDLk55KSxpPW49PnshZS5yYXRpbmcmJmUucmF0aW5nSWQmJnQoKDAsay5zY2opKGUubWVzc2FnZUlkLGUucmF0aW5nSWQsbikpfTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y3NzOk9yKG4pLGNoaWxkcmVuOlsoMCxWLlkpKCJzcGFuIix7Y3NzOlJyKG4pLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJyYXRpbmdMYWJlbCIsZmFsbGJhY2s6IldhcyB0aGlzIGhlbHBmdWw/In0pfSksKDAsVi5GRCkoImRpdiIse2Nzczp6cihuKSxjaGlsZHJlbjpbKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIiwiYXJpYS1sYWJlbCI6InllcyIsb25DbGljazooKT0+aSgieWVzIiksY3NzOkxyKCJubyI9PT1lLnJhdGluZyxCb29sZWFuKGUucmF0aW5nKSxuKSxjaGlsZHJlbjoieWVzIj09PWUucmF0aW5nPygwLFYuWSkodXQua20se30pOigwLFYuWSkodXQuU3Ese30pfSksKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIiwiYXJpYS1sYWJlbCI6Im5vIixvbkNsaWNrOigpPT5pKCJubyIpLGNzczpMcigieWVzIj09PWUucmF0aW5nLEJvb2xlYW4oZS5yYXRpbmcpLG4pLGNoaWxkcmVuOiJubyI9PT1lLnJhdGluZz8oMCxWLlkpKHV0LnRGLHt9KTooMCxWLlkpKHV0LkxsLHt9KX0pXX0pXX0pfSxCcj1uKDIyODQpO2Z1bmN0aW9uIEhyKGUsdCl7aWYodC5sZW5ndGg8ZSl0aHJvdyBuZXcgVHlwZUVycm9yKGUrIiBhcmd1bWVudCIrKGU+MT8icyI6IiIpKyIgcmVxdWlyZWQsIGJ1dCBvbmx5ICIrdC5sZW5ndGgrIiBwcmVzZW50Iil9ZnVuY3Rpb24gcXIoZSl7SHIoMSxhcmd1bWVudHMpO3ZhciB0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKTtyZXR1cm4gZSBpbnN0YW5jZW9mIERhdGV8fCJvYmplY3QiPT09KDAsQnIuQSkoZSkmJiJbb2JqZWN0IERhdGVdIj09PXQ/bmV3IERhdGUoZS5nZXRUaW1lKCkpOiJudW1iZXIiPT10eXBlb2YgZXx8IltvYmplY3QgTnVtYmVyXSI9PT10P25ldyBEYXRlKGUpOigic3RyaW5nIiE9dHlwZW9mIGUmJiJbb2JqZWN0IFN0cmluZ10iIT09dHx8InVuZGVmaW5lZCI9PXR5cGVvZiBjb25zb2xlfHwoY29uc29sZS53YXJuKCJTdGFydGluZyB3aXRoIHYyLjAuMC1iZXRhLjEgZGF0ZS1mbnMgZG9lc24ndCBhY2NlcHQgc3RyaW5ncyBhcyBkYXRlIGFyZ3VtZW50cy4gUGxlYXNlIHVzZSBgcGFyc2VJU09gIHRvIHBhcnNlIHN0cmluZ3MuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdXBncmFkZUd1aWRlLm1kI3N0cmluZy1hcmd1bWVudHMiKSxjb25zb2xlLndhcm4oKG5ldyBFcnJvcikuc3RhY2spKSxuZXcgRGF0ZShOYU4pKX1mdW5jdGlvbiBWcihlKXtIcigxLGFyZ3VtZW50cyk7dmFyIHQ9cXIoZSk7cmV0dXJuIHQuc2V0SG91cnMoMCwwLDAsMCksdH1mdW5jdGlvbiAkcihlLHQpe0hyKDIsYXJndW1lbnRzKTt2YXIgbj1WcihlKSxpPVZyKHQpO3JldHVybiBuLmdldFRpbWUoKT09PWkuZ2V0VGltZSgpfWZ1bmN0aW9uIFdyKGUpe2lmKG51bGw9PT1lfHwhMD09PWV8fCExPT09ZSlyZXR1cm4gTmFOO3ZhciB0PU51bWJlcihlKTtyZXR1cm4gaXNOYU4odCk/dDp0PDA/TWF0aC5jZWlsKHQpOk1hdGguZmxvb3IodCl9ZnVuY3Rpb24gS3IoZSx0KXtyZXR1cm4gSHIoMixhcmd1bWVudHMpLGZ1bmN0aW9uKGUsdCl7SHIoMixhcmd1bWVudHMpO3ZhciBuPXFyKGUpLGk9V3IodCk7cmV0dXJuIGlzTmFOKGkpP25ldyBEYXRlKE5hTik6aT8obi5zZXREYXRlKG4uZ2V0RGF0ZSgpK2kpLG4pOm59KGUsLVdyKHQpKX1mdW5jdGlvbiBHcihlKXtpZihIcigxLGFyZ3VtZW50cyksIWZ1bmN0aW9uKGUpe3JldHVybiBIcigxLGFyZ3VtZW50cyksZSBpbnN0YW5jZW9mIERhdGV8fCJvYmplY3QiPT09KDAsQnIuQSkoZSkmJiJbb2JqZWN0IERhdGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX0oZSkmJiJudW1iZXIiIT10eXBlb2YgZSlyZXR1cm4hMTt2YXIgdD1xcihlKTtyZXR1cm4haXNOYU4oTnVtYmVyKHQpKX1mdW5jdGlvbiBYcihlLHQpe3JldHVybiBIcigyLGFyZ3VtZW50cyksZnVuY3Rpb24oZSx0KXtIcigyLGFyZ3VtZW50cyk7dmFyIG49cXIoZSkuZ2V0VGltZSgpLGk9V3IodCk7cmV0dXJuIG5ldyBEYXRlKG4raSl9KGUsLVdyKHQpKX1mdW5jdGlvbiBRcihlKXtIcigxLGFyZ3VtZW50cyk7dmFyIHQ9cXIoZSksbj10LmdldFVUQ0RheSgpLGk9KG48MT83OjApK24tMTtyZXR1cm4gdC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpLWkpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCksdH1mdW5jdGlvbiBacihlKXtIcigxLGFyZ3VtZW50cyk7dmFyIHQ9cXIoZSksbj10LmdldFVUQ0Z1bGxZZWFyKCksaT1uZXcgRGF0ZSgwKTtpLnNldFVUQ0Z1bGxZZWFyKG4rMSwwLDQpLGkuc2V0VVRDSG91cnMoMCwwLDAsMCk7dmFyIGE9UXIoaSksbz1uZXcgRGF0ZSgwKTtvLnNldFVUQ0Z1bGxZZWFyKG4sMCw0KSxvLnNldFVUQ0hvdXJzKDAsMCwwLDApO3ZhciByPVFyKG8pO3JldHVybiB0LmdldFRpbWUoKT49YS5nZXRUaW1lKCk/bisxOnQuZ2V0VGltZSgpPj1yLmdldFRpbWUoKT9uOm4tMX1mdW5jdGlvbiBKcihlKXtIcigxLGFyZ3VtZW50cyk7dmFyIHQ9cXIoZSksbj1Rcih0KS5nZXRUaW1lKCktZnVuY3Rpb24oZSl7SHIoMSxhcmd1bWVudHMpO3ZhciB0PVpyKGUpLG49bmV3IERhdGUoMCk7cmV0dXJuIG4uc2V0VVRDRnVsbFllYXIodCwwLDQpLG4uc2V0VVRDSG91cnMoMCwwLDAsMCksUXIobil9KHQpLmdldFRpbWUoKTtyZXR1cm4gTWF0aC5yb3VuZChuLzYwNDhlNSkrMX12YXIgZXM9e307ZnVuY3Rpb24gdHMoKXtyZXR1cm4gZXN9ZnVuY3Rpb24gbnMoZSx0KXt2YXIgbixpLGEsbyxyLHMsbCxkO0hyKDEsYXJndW1lbnRzKTt2YXIgYz10cygpLHU9V3IobnVsbCE9PShuPW51bGwhPT0oaT1udWxsIT09KGE9bnVsbCE9PShvPW51bGw9PXQ/dm9pZCAwOnQud2Vla1N0YXJ0c09uKSYmdm9pZCAwIT09bz9vOm51bGw9PXR8fG51bGw9PT0ocj10LmxvY2FsZSl8fHZvaWQgMD09PXJ8fG51bGw9PT0ocz1yLm9wdGlvbnMpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLndlZWtTdGFydHNPbikmJnZvaWQgMCE9PWE/YTpjLndlZWtTdGFydHNPbikmJnZvaWQgMCE9PWk/aTpudWxsPT09KGw9Yy5sb2NhbGUpfHx2b2lkIDA9PT1sfHxudWxsPT09KGQ9bC5vcHRpb25zKXx8dm9pZCAwPT09ZD92b2lkIDA6ZC53ZWVrU3RhcnRzT24pJiZ2b2lkIDAhPT1uP246MCk7aWYoISh1Pj0wJiZ1PD02KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigid2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Iik7dmFyIHA9cXIoZSksZj1wLmdldFVUQ0RheSgpLG09KGY8dT83OjApK2YtdTtyZXR1cm4gcC5zZXRVVENEYXRlKHAuZ2V0VVRDRGF0ZSgpLW0pLHAuc2V0VVRDSG91cnMoMCwwLDAsMCkscH1mdW5jdGlvbiBpcyhlLHQpe3ZhciBuLGksYSxvLHIscyxsLGQ7SHIoMSxhcmd1bWVudHMpO3ZhciBjPXFyKGUpLHU9Yy5nZXRVVENGdWxsWWVhcigpLHA9dHMoKSxmPVdyKG51bGwhPT0obj1udWxsIT09KGk9bnVsbCE9PShhPW51bGwhPT0obz1udWxsPT10P3ZvaWQgMDp0LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkmJnZvaWQgMCE9PW8/bzpudWxsPT10fHxudWxsPT09KHI9dC5sb2NhbGUpfHx2b2lkIDA9PT1yfHxudWxsPT09KHM9ci5vcHRpb25zKXx8dm9pZCAwPT09cz92b2lkIDA6cy5maXJzdFdlZWtDb250YWluc0RhdGUpJiZ2b2lkIDAhPT1hP2E6cC5maXJzdFdlZWtDb250YWluc0RhdGUpJiZ2b2lkIDAhPT1pP2k6bnVsbD09PShsPXAubG9jYWxlKXx8dm9pZCAwPT09bHx8bnVsbD09PShkPWwub3B0aW9ucyl8fHZvaWQgMD09PWQ/dm9pZCAwOmQuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSYmdm9pZCAwIT09bj9uOjEpO2lmKCEoZj49MSYmZjw9NykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImZpcnN0V2Vla0NvbnRhaW5zRGF0ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNyBpbmNsdXNpdmVseSIpO3ZhciBtPW5ldyBEYXRlKDApO20uc2V0VVRDRnVsbFllYXIodSsxLDAsZiksbS5zZXRVVENIb3VycygwLDAsMCwwKTt2YXIgaD1ucyhtLHQpLGc9bmV3IERhdGUoMCk7Zy5zZXRVVENGdWxsWWVhcih1LDAsZiksZy5zZXRVVENIb3VycygwLDAsMCwwKTt2YXIgYj1ucyhnLHQpO3JldHVybiBjLmdldFRpbWUoKT49aC5nZXRUaW1lKCk/dSsxOmMuZ2V0VGltZSgpPj1iLmdldFRpbWUoKT91OnUtMX1mdW5jdGlvbiBhcyhlLHQpe0hyKDEsYXJndW1lbnRzKTt2YXIgbj1xcihlKSxpPW5zKG4sdCkuZ2V0VGltZSgpLWZ1bmN0aW9uKGUsdCl7dmFyIG4saSxhLG8scixzLGwsZDtIcigxLGFyZ3VtZW50cyk7dmFyIGM9dHMoKSx1PVdyKG51bGwhPT0obj1udWxsIT09KGk9bnVsbCE9PShhPW51bGwhPT0obz1udWxsPT10P3ZvaWQgMDp0LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkmJnZvaWQgMCE9PW8/bzpudWxsPT10fHxudWxsPT09KHI9dC5sb2NhbGUpfHx2b2lkIDA9PT1yfHxudWxsPT09KHM9ci5vcHRpb25zKXx8dm9pZCAwPT09cz92b2lkIDA6cy5maXJzdFdlZWtDb250YWluc0RhdGUpJiZ2b2lkIDAhPT1hP2E6Yy5maXJzdFdlZWtDb250YWluc0RhdGUpJiZ2b2lkIDAhPT1pP2k6bnVsbD09PShsPWMubG9jYWxlKXx8dm9pZCAwPT09bHx8bnVsbD09PShkPWwub3B0aW9ucyl8fHZvaWQgMD09PWQ/dm9pZCAwOmQuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSYmdm9pZCAwIT09bj9uOjEpLHA9aXMoZSx0KSxmPW5ldyBEYXRlKDApO3JldHVybiBmLnNldFVUQ0Z1bGxZZWFyKHAsMCx1KSxmLnNldFVUQ0hvdXJzKDAsMCwwLDApLG5zKGYsdCl9KG4sdCkuZ2V0VGltZSgpO3JldHVybiBNYXRoLnJvdW5kKGkvNjA0OGU1KSsxfWZ1bmN0aW9uIG9zKGUsdCl7Zm9yKHZhciBuPWU8MD8iLSI6IiIsaT1NYXRoLmFicyhlKS50b1N0cmluZygpO2kubGVuZ3RoPHQ7KWk9IjAiK2k7cmV0dXJuIG4raX12YXIgcnM9e3k6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldFVUQ0Z1bGxZZWFyKCksaT1uPjA/bjoxLW47cmV0dXJuIG9zKCJ5eSI9PT10P2klMTAwOmksdC5sZW5ndGgpfSxNOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRVVENNb250aCgpO3JldHVybiJNIj09PXQ/U3RyaW5nKG4rMSk6b3MobisxLDIpfSxkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG9zKGUuZ2V0VVRDRGF0ZSgpLHQubGVuZ3RoKX0sYTpmdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0VVRDSG91cnMoKS8xMj49MT8icG0iOiJhbSI7c3dpdGNoKHQpe2Nhc2UiYSI6Y2FzZSJhYSI6cmV0dXJuIG4udG9VcHBlckNhc2UoKTtjYXNlImFhYSI6cmV0dXJuIG47Y2FzZSJhYWFhYSI6cmV0dXJuIG5bMF07ZGVmYXVsdDpyZXR1cm4iYW0iPT09bj8iYS5tLiI6InAubS4ifX0saDpmdW5jdGlvbihlLHQpe3JldHVybiBvcyhlLmdldFVUQ0hvdXJzKCklMTJ8fDEyLHQubGVuZ3RoKX0sSDpmdW5jdGlvbihlLHQpe3JldHVybiBvcyhlLmdldFVUQ0hvdXJzKCksdC5sZW5ndGgpfSxtOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG9zKGUuZ2V0VVRDTWludXRlcygpLHQubGVuZ3RoKX0sczpmdW5jdGlvbihlLHQpe3JldHVybiBvcyhlLmdldFVUQ1NlY29uZHMoKSx0Lmxlbmd0aCl9LFM6ZnVuY3Rpb24oZSx0KXt2YXIgbj10Lmxlbmd0aCxpPWUuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7cmV0dXJuIG9zKE1hdGguZmxvb3IoaSpNYXRoLnBvdygxMCxuLTMpKSx0Lmxlbmd0aCl9fSxzcz0ibWlkbmlnaHQiLGxzPSJub29uIixkcz0ibW9ybmluZyIsY3M9ImFmdGVybm9vbiIsdXM9ImV2ZW5pbmciLHBzPSJuaWdodCIsZnM9e0c6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWUuZ2V0VVRDRnVsbFllYXIoKT4wPzE6MDtzd2l0Y2godCl7Y2FzZSJHIjpjYXNlIkdHIjpjYXNlIkdHRyI6cmV0dXJuIG4uZXJhKGkse3dpZHRoOiJhYmJyZXZpYXRlZCJ9KTtjYXNlIkdHR0dHIjpyZXR1cm4gbi5lcmEoaSx7d2lkdGg6Im5hcnJvdyJ9KTtkZWZhdWx0OnJldHVybiBuLmVyYShpLHt3aWR0aDoid2lkZSJ9KX19LHk6ZnVuY3Rpb24oZSx0LG4pe2lmKCJ5byI9PT10KXt2YXIgaT1lLmdldFVUQ0Z1bGxZZWFyKCksYT1pPjA/aToxLWk7cmV0dXJuIG4ub3JkaW5hbE51bWJlcihhLHt1bml0OiJ5ZWFyIn0pfXJldHVybiBycy55KGUsdCl9LFk6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9aXMoZSxpKSxvPWE+MD9hOjEtYTtyZXR1cm4iWVkiPT09dD9vcyhvJTEwMCwyKToiWW8iPT09dD9uLm9yZGluYWxOdW1iZXIobyx7dW5pdDoieWVhciJ9KTpvcyhvLHQubGVuZ3RoKX0sUjpmdW5jdGlvbihlLHQpe3JldHVybiBvcyhacihlKSx0Lmxlbmd0aCl9LHU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gb3MoZS5nZXRVVENGdWxsWWVhcigpLHQubGVuZ3RoKX0sUTpmdW5jdGlvbihlLHQsbil7dmFyIGk9TWF0aC5jZWlsKChlLmdldFVUQ01vbnRoKCkrMSkvMyk7c3dpdGNoKHQpe2Nhc2UiUSI6cmV0dXJuIFN0cmluZyhpKTtjYXNlIlFRIjpyZXR1cm4gb3MoaSwyKTtjYXNlIlFvIjpyZXR1cm4gbi5vcmRpbmFsTnVtYmVyKGkse3VuaXQ6InF1YXJ0ZXIifSk7Y2FzZSJRUVEiOnJldHVybiBuLnF1YXJ0ZXIoaSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2Nhc2UiUVFRUVEiOnJldHVybiBuLnF1YXJ0ZXIoaSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtkZWZhdWx0OnJldHVybiBuLnF1YXJ0ZXIoaSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl9fSxxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1NYXRoLmNlaWwoKGUuZ2V0VVRDTW9udGgoKSsxKS8zKTtzd2l0Y2godCl7Y2FzZSJxIjpyZXR1cm4gU3RyaW5nKGkpO2Nhc2UicXEiOnJldHVybiBvcyhpLDIpO2Nhc2UicW8iOnJldHVybiBuLm9yZGluYWxOdW1iZXIoaSx7dW5pdDoicXVhcnRlciJ9KTtjYXNlInFxcSI6cmV0dXJuIG4ucXVhcnRlcihpLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6InN0YW5kYWxvbmUifSk7Y2FzZSJxcXFxcSI6cmV0dXJuIG4ucXVhcnRlcihpLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2RlZmF1bHQ6cmV0dXJuIG4ucXVhcnRlcihpLHt3aWR0aDoid2lkZSIsY29udGV4dDoic3RhbmRhbG9uZSJ9KX19LE06ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWUuZ2V0VVRDTW9udGgoKTtzd2l0Y2godCl7Y2FzZSJNIjpjYXNlIk1NIjpyZXR1cm4gcnMuTShlLHQpO2Nhc2UiTW8iOnJldHVybiBuLm9yZGluYWxOdW1iZXIoaSsxLHt1bml0OiJtb250aCJ9KTtjYXNlIk1NTSI6cmV0dXJuIG4ubW9udGgoaSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2Nhc2UiTU1NTU0iOnJldHVybiBuLm1vbnRoKGkse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7ZGVmYXVsdDpyZXR1cm4gbi5tb250aChpLHt3aWR0aDoid2lkZSIsY29udGV4dDoiZm9ybWF0dGluZyJ9KX19LEw6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWUuZ2V0VVRDTW9udGgoKTtzd2l0Y2godCl7Y2FzZSJMIjpyZXR1cm4gU3RyaW5nKGkrMSk7Y2FzZSJMTCI6cmV0dXJuIG9zKGkrMSwyKTtjYXNlIkxvIjpyZXR1cm4gbi5vcmRpbmFsTnVtYmVyKGkrMSx7dW5pdDoibW9udGgifSk7Y2FzZSJMTEwiOnJldHVybiBuLm1vbnRoKGkse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoic3RhbmRhbG9uZSJ9KTtjYXNlIkxMTExMIjpyZXR1cm4gbi5tb250aChpLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2RlZmF1bHQ6cmV0dXJuIG4ubW9udGgoaSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6InN0YW5kYWxvbmUifSl9fSx3OmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPWFzKGUsaSk7cmV0dXJuIndvIj09PXQ/bi5vcmRpbmFsTnVtYmVyKGEse3VuaXQ6IndlZWsifSk6b3MoYSx0Lmxlbmd0aCl9LEk6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPUpyKGUpO3JldHVybiJJbyI9PT10P24ub3JkaW5hbE51bWJlcihpLHt1bml0OiJ3ZWVrIn0pOm9zKGksdC5sZW5ndGgpfSxkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iZG8iPT09dD9uLm9yZGluYWxOdW1iZXIoZS5nZXRVVENEYXRlKCkse3VuaXQ6ImRhdGUifSk6cnMuZChlLHQpfSxEOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1mdW5jdGlvbihlKXtIcigxLGFyZ3VtZW50cyk7dmFyIHQ9cXIoZSksbj10LmdldFRpbWUoKTt0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKTt2YXIgaT1uLXQuZ2V0VGltZSgpO3JldHVybiBNYXRoLmZsb29yKGkvODY0ZTUpKzF9KGUpO3JldHVybiJEbyI9PT10P24ub3JkaW5hbE51bWJlcihpLHt1bml0OiJkYXlPZlllYXIifSk6b3MoaSx0Lmxlbmd0aCl9LEU6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWUuZ2V0VVRDRGF5KCk7c3dpdGNoKHQpe2Nhc2UiRSI6Y2FzZSJFRSI6Y2FzZSJFRUUiOnJldHVybiBuLmRheShpLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJFRUVFRSI6cmV0dXJuIG4uZGF5KGkse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJFRUVFRUUiOnJldHVybiBuLmRheShpLHt3aWR0aDoic2hvcnQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7ZGVmYXVsdDpyZXR1cm4gbi5kYXkoaSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl9fSxlOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPWUuZ2V0VVRDRGF5KCksbz0oYS1pLndlZWtTdGFydHNPbis4KSU3fHw3O3N3aXRjaCh0KXtjYXNlImUiOnJldHVybiBTdHJpbmcobyk7Y2FzZSJlZSI6cmV0dXJuIG9zKG8sMik7Y2FzZSJlbyI6cmV0dXJuIG4ub3JkaW5hbE51bWJlcihvLHt1bml0OiJkYXkifSk7Y2FzZSJlZWUiOnJldHVybiBuLmRheShhLHt3aWR0aDoiYWJicmV2aWF0ZWQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJlZWVlZSI6cmV0dXJuIG4uZGF5KGEse3dpZHRoOiJuYXJyb3ciLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7Y2FzZSJlZWVlZWUiOnJldHVybiBuLmRheShhLHt3aWR0aDoic2hvcnQiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSk7ZGVmYXVsdDpyZXR1cm4gbi5kYXkoYSx7d2lkdGg6IndpZGUiLGNvbnRleHQ6ImZvcm1hdHRpbmcifSl9fSxjOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPWUuZ2V0VVRDRGF5KCksbz0oYS1pLndlZWtTdGFydHNPbis4KSU3fHw3O3N3aXRjaCh0KXtjYXNlImMiOnJldHVybiBTdHJpbmcobyk7Y2FzZSJjYyI6cmV0dXJuIG9zKG8sdC5sZW5ndGgpO2Nhc2UiY28iOnJldHVybiBuLm9yZGluYWxOdW1iZXIobyx7dW5pdDoiZGF5In0pO2Nhc2UiY2NjIjpyZXR1cm4gbi5kYXkoYSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2Nhc2UiY2NjY2MiOnJldHVybiBuLmRheShhLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2Nhc2UiY2NjY2NjIjpyZXR1cm4gbi5kYXkoYSx7d2lkdGg6InNob3J0Iixjb250ZXh0OiJzdGFuZGFsb25lIn0pO2RlZmF1bHQ6cmV0dXJuIG4uZGF5KGEse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJzdGFuZGFsb25lIn0pfX0saTpmdW5jdGlvbihlLHQsbil7dmFyIGk9ZS5nZXRVVENEYXkoKSxhPTA9PT1pPzc6aTtzd2l0Y2godCl7Y2FzZSJpIjpyZXR1cm4gU3RyaW5nKGEpO2Nhc2UiaWkiOnJldHVybiBvcyhhLHQubGVuZ3RoKTtjYXNlImlvIjpyZXR1cm4gbi5vcmRpbmFsTnVtYmVyKGEse3VuaXQ6ImRheSJ9KTtjYXNlImlpaSI6cmV0dXJuIG4uZGF5KGkse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtjYXNlImlpaWlpIjpyZXR1cm4gbi5kYXkoaSx7d2lkdGg6Im5hcnJvdyIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtjYXNlImlpaWlpaSI6cmV0dXJuIG4uZGF5KGkse3dpZHRoOiJzaG9ydCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtkZWZhdWx0OnJldHVybiBuLmRheShpLHt3aWR0aDoid2lkZSIsY29udGV4dDoiZm9ybWF0dGluZyJ9KX19LGE6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWUuZ2V0VVRDSG91cnMoKS8xMj49MT8icG0iOiJhbSI7c3dpdGNoKHQpe2Nhc2UiYSI6Y2FzZSJhYSI6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtjYXNlImFhYSI6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KS50b0xvd2VyQ2FzZSgpO2Nhc2UiYWFhYWEiOnJldHVybiBuLmRheVBlcmlvZChpLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2RlZmF1bHQ6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfX0sYjpmdW5jdGlvbihlLHQsbil7dmFyIGksYT1lLmdldFVUQ0hvdXJzKCk7c3dpdGNoKGk9MTI9PT1hP2xzOjA9PT1hP3NzOmEvMTI+PTE/InBtIjoiYW0iLHQpe2Nhc2UiYiI6Y2FzZSJiYiI6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KTtjYXNlImJiYiI6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJhYmJyZXZpYXRlZCIsY29udGV4dDoiZm9ybWF0dGluZyJ9KS50b0xvd2VyQ2FzZSgpO2Nhc2UiYmJiYmIiOnJldHVybiBuLmRheVBlcmlvZChpLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2RlZmF1bHQ6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfX0sQjpmdW5jdGlvbihlLHQsbil7dmFyIGksYT1lLmdldFVUQ0hvdXJzKCk7c3dpdGNoKGk9YT49MTc/dXM6YT49MTI/Y3M6YT49ND9kczpwcyx0KXtjYXNlIkIiOmNhc2UiQkIiOmNhc2UiQkJCIjpyZXR1cm4gbi5kYXlQZXJpb2QoaSx7d2lkdGg6ImFiYnJldmlhdGVkIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2Nhc2UiQkJCQkIiOnJldHVybiBuLmRheVBlcmlvZChpLHt3aWR0aDoibmFycm93Iixjb250ZXh0OiJmb3JtYXR0aW5nIn0pO2RlZmF1bHQ6cmV0dXJuIG4uZGF5UGVyaW9kKGkse3dpZHRoOiJ3aWRlIixjb250ZXh0OiJmb3JtYXR0aW5nIn0pfX0saDpmdW5jdGlvbihlLHQsbil7aWYoImhvIj09PXQpe3ZhciBpPWUuZ2V0VVRDSG91cnMoKSUxMjtyZXR1cm4gMD09PWkmJihpPTEyKSxuLm9yZGluYWxOdW1iZXIoaSx7dW5pdDoiaG91ciJ9KX1yZXR1cm4gcnMuaChlLHQpfSxIOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iSG8iPT09dD9uLm9yZGluYWxOdW1iZXIoZS5nZXRVVENIb3VycygpLHt1bml0OiJob3VyIn0pOnJzLkgoZSx0KX0sSzpmdW5jdGlvbihlLHQsbil7dmFyIGk9ZS5nZXRVVENIb3VycygpJTEyO3JldHVybiJLbyI9PT10P24ub3JkaW5hbE51bWJlcihpLHt1bml0OiJob3VyIn0pOm9zKGksdC5sZW5ndGgpfSxrOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1lLmdldFVUQ0hvdXJzKCk7cmV0dXJuIDA9PT1pJiYoaT0yNCksImtvIj09PXQ/bi5vcmRpbmFsTnVtYmVyKGkse3VuaXQ6ImhvdXIifSk6b3MoaSx0Lmxlbmd0aCl9LG06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiJtbyI9PT10P24ub3JkaW5hbE51bWJlcihlLmdldFVUQ01pbnV0ZXMoKSx7dW5pdDoibWludXRlIn0pOnJzLm0oZSx0KX0sczpmdW5jdGlvbihlLHQsbil7cmV0dXJuInNvIj09PXQ/bi5vcmRpbmFsTnVtYmVyKGUuZ2V0VVRDU2Vjb25kcygpLHt1bml0OiJzZWNvbmQifSk6cnMucyhlLHQpfSxTOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHJzLlMoZSx0KX0sWDpmdW5jdGlvbihlLHQsbixpKXt2YXIgYT0oaS5fb3JpZ2luYWxEYXRlfHxlKS5nZXRUaW1lem9uZU9mZnNldCgpO2lmKDA9PT1hKXJldHVybiJaIjtzd2l0Y2godCl7Y2FzZSJYIjpyZXR1cm4gaHMoYSk7Y2FzZSJYWFhYIjpjYXNlIlhYIjpyZXR1cm4gZ3MoYSk7ZGVmYXVsdDpyZXR1cm4gZ3MoYSwiOiIpfX0seDpmdW5jdGlvbihlLHQsbixpKXt2YXIgYT0oaS5fb3JpZ2luYWxEYXRlfHxlKS5nZXRUaW1lem9uZU9mZnNldCgpO3N3aXRjaCh0KXtjYXNlIngiOnJldHVybiBocyhhKTtjYXNlInh4eHgiOmNhc2UieHgiOnJldHVybiBncyhhKTtkZWZhdWx0OnJldHVybiBncyhhLCI6Iil9fSxPOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPShpLl9vcmlnaW5hbERhdGV8fGUpLmdldFRpbWV6b25lT2Zmc2V0KCk7c3dpdGNoKHQpe2Nhc2UiTyI6Y2FzZSJPTyI6Y2FzZSJPT08iOnJldHVybiJHTVQiK21zKGEsIjoiKTtkZWZhdWx0OnJldHVybiJHTVQiK2dzKGEsIjoiKX19LHo6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9KGkuX29yaWdpbmFsRGF0ZXx8ZSkuZ2V0VGltZXpvbmVPZmZzZXQoKTtzd2l0Y2godCl7Y2FzZSJ6IjpjYXNlInp6IjpjYXNlInp6eiI6cmV0dXJuIkdNVCIrbXMoYSwiOiIpO2RlZmF1bHQ6cmV0dXJuIkdNVCIrZ3MoYSwiOiIpfX0sdDpmdW5jdGlvbihlLHQsbixpKXt2YXIgYT1pLl9vcmlnaW5hbERhdGV8fGU7cmV0dXJuIG9zKE1hdGguZmxvb3IoYS5nZXRUaW1lKCkvMWUzKSx0Lmxlbmd0aCl9LFQ6ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIG9zKChpLl9vcmlnaW5hbERhdGV8fGUpLmdldFRpbWUoKSx0Lmxlbmd0aCl9fTtmdW5jdGlvbiBtcyhlLHQpe3ZhciBuPWU+MD8iLSI6IisiLGk9TWF0aC5hYnMoZSksYT1NYXRoLmZsb29yKGkvNjApLG89aSU2MDtpZigwPT09bylyZXR1cm4gbitTdHJpbmcoYSk7dmFyIHI9dHx8IiI7cmV0dXJuIG4rU3RyaW5nKGEpK3Irb3MobywyKX1mdW5jdGlvbiBocyhlLHQpe3JldHVybiBlJTYwPT0wPyhlPjA/Ii0iOiIrIikrb3MoTWF0aC5hYnMoZSkvNjAsMik6Z3MoZSx0KX1mdW5jdGlvbiBncyhlLHQpe3ZhciBuPXR8fCIiLGk9ZT4wPyItIjoiKyIsYT1NYXRoLmFicyhlKTtyZXR1cm4gaStvcyhNYXRoLmZsb29yKGEvNjApLDIpK24rb3MoYSU2MCwyKX12YXIgYnM9ZnMsdnM9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJQIjpyZXR1cm4gdC5kYXRlKHt3aWR0aDoic2hvcnQifSk7Y2FzZSJQUCI6cmV0dXJuIHQuZGF0ZSh7d2lkdGg6Im1lZGl1bSJ9KTtjYXNlIlBQUCI6cmV0dXJuIHQuZGF0ZSh7d2lkdGg6ImxvbmcifSk7ZGVmYXVsdDpyZXR1cm4gdC5kYXRlKHt3aWR0aDoiZnVsbCJ9KX19LHhzPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UicCI6cmV0dXJuIHQudGltZSh7d2lkdGg6InNob3J0In0pO2Nhc2UicHAiOnJldHVybiB0LnRpbWUoe3dpZHRoOiJtZWRpdW0ifSk7Y2FzZSJwcHAiOnJldHVybiB0LnRpbWUoe3dpZHRoOiJsb25nIn0pO2RlZmF1bHQ6cmV0dXJuIHQudGltZSh7d2lkdGg6ImZ1bGwifSl9fSx5cz17cDp4cyxQOmZ1bmN0aW9uKGUsdCl7dmFyIG4saT1lLm1hdGNoKC8oUCspKHArKT8vKXx8W10sYT1pWzFdLG89aVsyXTtpZighbylyZXR1cm4gdnMoZSx0KTtzd2l0Y2goYSl7Y2FzZSJQIjpuPXQuZGF0ZVRpbWUoe3dpZHRoOiJzaG9ydCJ9KTticmVhaztjYXNlIlBQIjpuPXQuZGF0ZVRpbWUoe3dpZHRoOiJtZWRpdW0ifSk7YnJlYWs7Y2FzZSJQUFAiOm49dC5kYXRlVGltZSh7d2lkdGg6ImxvbmcifSk7YnJlYWs7ZGVmYXVsdDpuPXQuZGF0ZVRpbWUoe3dpZHRoOiJmdWxsIn0pfXJldHVybiBuLnJlcGxhY2UoInt7ZGF0ZX19Iix2cyhhLHQpKS5yZXBsYWNlKCJ7e3RpbWV9fSIseHMobyx0KSl9fSx3cz15czt2YXIga3M9WyJEIiwiREQiXSxBcz1bIllZIiwiWVlZWSJdO2Z1bmN0aW9uIENzKGUsdCxuKXtpZigiWVlZWSI9PT1lKXRocm93IG5ldyBSYW5nZUVycm9yKCJVc2UgYHl5eXlgIGluc3RlYWQgb2YgYFlZWVlgIChpbiBgIi5jb25jYXQodCwiYCkgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdG8gdGhlIGlucHV0IGAiKS5jb25jYXQobiwiYDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kIikpO2lmKCJZWSI9PT1lKXRocm93IG5ldyBSYW5nZUVycm9yKCJVc2UgYHl5YCBpbnN0ZWFkIG9mIGBZWWAgKGluIGAiLmNvbmNhdCh0LCJgKSBmb3IgZm9ybWF0dGluZyB5ZWFycyB0byB0aGUgaW5wdXQgYCIpLmNvbmNhdChuLCJgOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWQiKSk7aWYoIkQiPT09ZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVXNlIGBkYCBpbnN0ZWFkIG9mIGBEYCAoaW4gYCIuY29uY2F0KHQsImApIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoIHRvIHRoZSBpbnB1dCBgIikuY29uY2F0KG4sImA7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZCIpKTtpZigiREQiPT09ZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVXNlIGBkZGAgaW5zdGVhZCBvZiBgRERgIChpbiBgIi5jb25jYXQodCwiYCkgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdG8gdGhlIGlucHV0IGAiKS5jb25jYXQobiwiYDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kIikpfXZhciBFcz17bGVzc1RoYW5YU2Vjb25kczp7b25lOiJsZXNzIHRoYW4gYSBzZWNvbmQiLG90aGVyOiJsZXNzIHRoYW4ge3tjb3VudH19IHNlY29uZHMifSx4U2Vjb25kczp7b25lOiIxIHNlY29uZCIsb3RoZXI6Int7Y291bnR9fSBzZWNvbmRzIn0saGFsZkFNaW51dGU6ImhhbGYgYSBtaW51dGUiLGxlc3NUaGFuWE1pbnV0ZXM6e29uZToibGVzcyB0aGFuIGEgbWludXRlIixvdGhlcjoibGVzcyB0aGFuIHt7Y291bnR9fSBtaW51dGVzIn0seE1pbnV0ZXM6e29uZToiMSBtaW51dGUiLG90aGVyOiJ7e2NvdW50fX0gbWludXRlcyJ9LGFib3V0WEhvdXJzOntvbmU6ImFib3V0IDEgaG91ciIsb3RoZXI6ImFib3V0IHt7Y291bnR9fSBob3VycyJ9LHhIb3Vyczp7b25lOiIxIGhvdXIiLG90aGVyOiJ7e2NvdW50fX0gaG91cnMifSx4RGF5czp7b25lOiIxIGRheSIsb3RoZXI6Int7Y291bnR9fSBkYXlzIn0sYWJvdXRYV2Vla3M6e29uZToiYWJvdXQgMSB3ZWVrIixvdGhlcjoiYWJvdXQge3tjb3VudH19IHdlZWtzIn0seFdlZWtzOntvbmU6IjEgd2VlayIsb3RoZXI6Int7Y291bnR9fSB3ZWVrcyJ9LGFib3V0WE1vbnRoczp7b25lOiJhYm91dCAxIG1vbnRoIixvdGhlcjoiYWJvdXQge3tjb3VudH19IG1vbnRocyJ9LHhNb250aHM6e29uZToiMSBtb250aCIsb3RoZXI6Int7Y291bnR9fSBtb250aHMifSxhYm91dFhZZWFyczp7b25lOiJhYm91dCAxIHllYXIiLG90aGVyOiJhYm91dCB7e2NvdW50fX0geWVhcnMifSx4WWVhcnM6e29uZToiMSB5ZWFyIixvdGhlcjoie3tjb3VudH19IHllYXJzIn0sb3ZlclhZZWFyczp7b25lOiJvdmVyIDEgeWVhciIsb3RoZXI6Im92ZXIge3tjb3VudH19IHllYXJzIn0sYWxtb3N0WFllYXJzOntvbmU6ImFsbW9zdCAxIHllYXIiLG90aGVyOiJhbG1vc3Qge3tjb3VudH19IHllYXJzIn19LFNzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxhPUVzW2VdO3JldHVybiBpPSJzdHJpbmciPT10eXBlb2YgYT9hOjE9PT10P2Eub25lOmEub3RoZXIucmVwbGFjZSgie3tjb3VudH19Iix0LnRvU3RyaW5nKCkpLG51bGwhPW4mJm4uYWRkU3VmZml4P24uY29tcGFyaXNvbiYmbi5jb21wYXJpc29uPjA/ImluICIraTppKyIgYWdvIjppfTtmdW5jdGlvbiBEcyhlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sbj10LndpZHRoP1N0cmluZyh0LndpZHRoKTplLmRlZmF1bHRXaWR0aDtyZXR1cm4gZS5mb3JtYXRzW25dfHxlLmZvcm1hdHNbZS5kZWZhdWx0V2lkdGhdfX12YXIgWXM9e2RhdGU6RHMoe2Zvcm1hdHM6e2Z1bGw6IkVFRUUsIE1NTU0gZG8sIHkiLGxvbmc6Ik1NTU0gZG8sIHkiLG1lZGl1bToiTU1NIGQsIHkiLHNob3J0OiJNTS9kZC95eXl5In0sZGVmYXVsdFdpZHRoOiJmdWxsIn0pLHRpbWU6RHMoe2Zvcm1hdHM6e2Z1bGw6Img6bW06c3MgYSB6enp6Iixsb25nOiJoOm1tOnNzIGEgeiIsbWVkaXVtOiJoOm1tOnNzIGEiLHNob3J0OiJoOm1tIGEifSxkZWZhdWx0V2lkdGg6ImZ1bGwifSksZGF0ZVRpbWU6RHMoe2Zvcm1hdHM6e2Z1bGw6Int7ZGF0ZX19ICdhdCcge3t0aW1lfX0iLGxvbmc6Int7ZGF0ZX19ICdhdCcge3t0aW1lfX0iLG1lZGl1bToie3tkYXRlfX0sIHt7dGltZX19IixzaG9ydDoie3tkYXRlfX0sIHt7dGltZX19In0sZGVmYXVsdFdpZHRoOiJmdWxsIn0pfSxUcz17bGFzdFdlZWs6IidsYXN0JyBlZWVlICdhdCcgcCIseWVzdGVyZGF5OiIneWVzdGVyZGF5IGF0JyBwIix0b2RheToiJ3RvZGF5IGF0JyBwIix0b21vcnJvdzoiJ3RvbW9ycm93IGF0JyBwIixuZXh0V2VlazoiZWVlZSAnYXQnIHAiLG90aGVyOiJQIn0sRnM9ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIFRzW2VdfTtmdW5jdGlvbiBJcyhlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgaTtpZigiZm9ybWF0dGluZyI9PT0obnVsbCE9biYmbi5jb250ZXh0P1N0cmluZyhuLmNvbnRleHQpOiJzdGFuZGFsb25lIikmJmUuZm9ybWF0dGluZ1ZhbHVlcyl7dmFyIGE9ZS5kZWZhdWx0Rm9ybWF0dGluZ1dpZHRofHxlLmRlZmF1bHRXaWR0aCxvPW51bGwhPW4mJm4ud2lkdGg/U3RyaW5nKG4ud2lkdGgpOmE7aT1lLmZvcm1hdHRpbmdWYWx1ZXNbb118fGUuZm9ybWF0dGluZ1ZhbHVlc1thXX1lbHNle3ZhciByPWUuZGVmYXVsdFdpZHRoLHM9bnVsbCE9biYmbi53aWR0aD9TdHJpbmcobi53aWR0aCk6ZS5kZWZhdWx0V2lkdGg7aT1lLnZhbHVlc1tzXXx8ZS52YWx1ZXNbcl19cmV0dXJuIGlbZS5hcmd1bWVudENhbGxiYWNrP2UuYXJndW1lbnRDYWxsYmFjayh0KTp0XX19dmFyIF9zPXtvcmRpbmFsTnVtYmVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49TnVtYmVyKGUpLGk9biUxMDA7aWYoaT4yMHx8aTwxMClzd2l0Y2goaSUxMCl7Y2FzZSAxOnJldHVybiBuKyJzdCI7Y2FzZSAyOnJldHVybiBuKyJuZCI7Y2FzZSAzOnJldHVybiBuKyJyZCJ9cmV0dXJuIG4rInRoIn0sZXJhOklzKHt2YWx1ZXM6e25hcnJvdzpbIkIiLCJBIl0sYWJicmV2aWF0ZWQ6WyJCQyIsIkFEIl0sd2lkZTpbIkJlZm9yZSBDaHJpc3QiLCJBbm5vIERvbWluaSJdfSxkZWZhdWx0V2lkdGg6IndpZGUifSkscXVhcnRlcjpJcyh7dmFsdWVzOntuYXJyb3c6WyIxIiwiMiIsIjMiLCI0Il0sYWJicmV2aWF0ZWQ6WyJRMSIsIlEyIiwiUTMiLCJRNCJdLHdpZGU6WyIxc3QgcXVhcnRlciIsIjJuZCBxdWFydGVyIiwiM3JkIHF1YXJ0ZXIiLCI0dGggcXVhcnRlciJdfSxkZWZhdWx0V2lkdGg6IndpZGUiLGFyZ3VtZW50Q2FsbGJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGUtMX19KSxtb250aDpJcyh7dmFsdWVzOntuYXJyb3c6WyJKIiwiRiIsIk0iLCJBIiwiTSIsIkoiLCJKIiwiQSIsIlMiLCJPIiwiTiIsIkQiXSxhYmJyZXZpYXRlZDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLHdpZGU6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdfSxkZWZhdWx0V2lkdGg6IndpZGUifSksZGF5OklzKHt2YWx1ZXM6e25hcnJvdzpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSxzaG9ydDpbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl0sYWJicmV2aWF0ZWQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSx3aWRlOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sZGVmYXVsdFdpZHRoOiJ3aWRlIn0pLGRheVBlcmlvZDpJcyh7dmFsdWVzOntuYXJyb3c6e2FtOiJhIixwbToicCIsbWlkbmlnaHQ6Im1pIixub29uOiJuIixtb3JuaW5nOiJtb3JuaW5nIixhZnRlcm5vb246ImFmdGVybm9vbiIsZXZlbmluZzoiZXZlbmluZyIsbmlnaHQ6Im5pZ2h0In0sYWJicmV2aWF0ZWQ6e2FtOiJBTSIscG06IlBNIixtaWRuaWdodDoibWlkbmlnaHQiLG5vb246Im5vb24iLG1vcm5pbmc6Im1vcm5pbmciLGFmdGVybm9vbjoiYWZ0ZXJub29uIixldmVuaW5nOiJldmVuaW5nIixuaWdodDoibmlnaHQifSx3aWRlOnthbToiYS5tLiIscG06InAubS4iLG1pZG5pZ2h0OiJtaWRuaWdodCIsbm9vbjoibm9vbiIsbW9ybmluZzoibW9ybmluZyIsYWZ0ZXJub29uOiJhZnRlcm5vb24iLGV2ZW5pbmc6ImV2ZW5pbmciLG5pZ2h0OiJuaWdodCJ9fSxkZWZhdWx0V2lkdGg6IndpZGUiLGZvcm1hdHRpbmdWYWx1ZXM6e25hcnJvdzp7YW06ImEiLHBtOiJwIixtaWRuaWdodDoibWkiLG5vb246Im4iLG1vcm5pbmc6ImluIHRoZSBtb3JuaW5nIixhZnRlcm5vb246ImluIHRoZSBhZnRlcm5vb24iLGV2ZW5pbmc6ImluIHRoZSBldmVuaW5nIixuaWdodDoiYXQgbmlnaHQifSxhYmJyZXZpYXRlZDp7YW06IkFNIixwbToiUE0iLG1pZG5pZ2h0OiJtaWRuaWdodCIsbm9vbjoibm9vbiIsbW9ybmluZzoiaW4gdGhlIG1vcm5pbmciLGFmdGVybm9vbjoiaW4gdGhlIGFmdGVybm9vbiIsZXZlbmluZzoiaW4gdGhlIGV2ZW5pbmciLG5pZ2h0OiJhdCBuaWdodCJ9LHdpZGU6e2FtOiJhLm0uIixwbToicC5tLiIsbWlkbmlnaHQ6Im1pZG5pZ2h0Iixub29uOiJub29uIixtb3JuaW5nOiJpbiB0aGUgbW9ybmluZyIsYWZ0ZXJub29uOiJpbiB0aGUgYWZ0ZXJub29uIixldmVuaW5nOiJpbiB0aGUgZXZlbmluZyIsbmlnaHQ6ImF0IG5pZ2h0In19LGRlZmF1bHRGb3JtYXR0aW5nV2lkdGg6IndpZGUifSl9O2Z1bmN0aW9uIE1zKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30saT1uLndpZHRoLGE9aSYmZS5tYXRjaFBhdHRlcm5zW2ldfHxlLm1hdGNoUGF0dGVybnNbZS5kZWZhdWx0TWF0Y2hXaWR0aF0sbz10Lm1hdGNoKGEpO2lmKCFvKXJldHVybiBudWxsO3ZhciByLHM9b1swXSxsPWkmJmUucGFyc2VQYXR0ZXJuc1tpXXx8ZS5wYXJzZVBhdHRlcm5zW2UuZGVmYXVsdFBhcnNlV2lkdGhdLGQ9QXJyYXkuaXNBcnJheShsKT9mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKHQoZVtuXSkpcmV0dXJuIG47cmV0dXJufShsLGZ1bmN0aW9uKGUpe3JldHVybiBlLnRlc3Qocyl9KTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobikmJnQoZVtuXSkpcmV0dXJuIG47cmV0dXJufShsLGZ1bmN0aW9uKGUpe3JldHVybiBlLnRlc3Qocyl9KTtyZXR1cm4gcj1lLnZhbHVlQ2FsbGJhY2s/ZS52YWx1ZUNhbGxiYWNrKGQpOmQse3ZhbHVlOnI9bi52YWx1ZUNhbGxiYWNrP24udmFsdWVDYWxsYmFjayhyKTpyLHJlc3Q6dC5zbGljZShzLmxlbmd0aCl9fX12YXIgTnMsT3M9e29yZGluYWxOdW1iZXI6KE5zPXttYXRjaFBhdHRlcm46L14oXGQrKSh0aHxzdHxuZHxyZCk/L2kscGFyc2VQYXR0ZXJuOi9cZCsvaSx2YWx1ZUNhbGxiYWNrOmZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUludChlLDEwKX19LGZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPWUubWF0Y2goTnMubWF0Y2hQYXR0ZXJuKTtpZighbilyZXR1cm4gbnVsbDt2YXIgaT1uWzBdLGE9ZS5tYXRjaChOcy5wYXJzZVBhdHRlcm4pO2lmKCFhKXJldHVybiBudWxsO3ZhciBvPU5zLnZhbHVlQ2FsbGJhY2s/TnMudmFsdWVDYWxsYmFjayhhWzBdKTphWzBdO3JldHVybnt2YWx1ZTpvPXQudmFsdWVDYWxsYmFjaz90LnZhbHVlQ2FsbGJhY2sobyk6byxyZXN0OmUuc2xpY2UoaS5sZW5ndGgpfX0pLGVyYTpNcyh7bWF0Y2hQYXR0ZXJuczp7bmFycm93Oi9eKGJ8YSkvaSxhYmJyZXZpYXRlZDovXihiXC4/XHM/Y1wuP3xiXC4/XHM/Y1wuP1xzP2VcLj98YVwuP1xzP2RcLj98Y1wuP1xzP2VcLj8pL2ksd2lkZTovXihiZWZvcmUgY2hyaXN0fGJlZm9yZSBjb21tb24gZXJhfGFubm8gZG9taW5pfGNvbW1vbiBlcmEpL2l9LGRlZmF1bHRNYXRjaFdpZHRoOiJ3aWRlIixwYXJzZVBhdHRlcm5zOnthbnk6Wy9eYi9pLC9eKGF8YykvaV19LGRlZmF1bHRQYXJzZVdpZHRoOiJhbnkifSkscXVhcnRlcjpNcyh7bWF0Y2hQYXR0ZXJuczp7bmFycm93Oi9eWzEyMzRdL2ksYWJicmV2aWF0ZWQ6L15xWzEyMzRdL2ksd2lkZTovXlsxMjM0XSh0aHxzdHxuZHxyZCk/IHF1YXJ0ZXIvaX0sZGVmYXVsdE1hdGNoV2lkdGg6IndpZGUiLHBhcnNlUGF0dGVybnM6e2FueTpbLzEvaSwvMi9pLC8zL2ksLzQvaV19LGRlZmF1bHRQYXJzZVdpZHRoOiJhbnkiLHZhbHVlQ2FsbGJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrMX19KSxtb250aDpNcyh7bWF0Y2hQYXR0ZXJuczp7bmFycm93Oi9eW2pmbWFzb25kXS9pLGFiYnJldmlhdGVkOi9eKGphbnxmZWJ8bWFyfGFwcnxtYXl8anVufGp1bHxhdWd8c2VwfG9jdHxub3Z8ZGVjKS9pLHdpZGU6L14oamFudWFyeXxmZWJydWFyeXxtYXJjaHxhcHJpbHxtYXl8anVuZXxqdWx5fGF1Z3VzdHxzZXB0ZW1iZXJ8b2N0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaX0sZGVmYXVsdE1hdGNoV2lkdGg6IndpZGUiLHBhcnNlUGF0dGVybnM6e25hcnJvdzpbL15qL2ksL15mL2ksL15tL2ksL15hL2ksL15tL2ksL15qL2ksL15qL2ksL15hL2ksL15zL2ksL15vL2ksL15uL2ksL15kL2ldLGFueTpbL15qYS9pLC9eZi9pLC9ebWFyL2ksL15hcC9pLC9ebWF5L2ksL15qdW4vaSwvXmp1bC9pLC9eYXUvaSwvXnMvaSwvXm8vaSwvXm4vaSwvXmQvaV19LGRlZmF1bHRQYXJzZVdpZHRoOiJhbnkifSksZGF5Ok1zKHttYXRjaFBhdHRlcm5zOntuYXJyb3c6L15bc210d2ZdL2ksc2hvcnQ6L14oc3V8bW98dHV8d2V8dGh8ZnJ8c2EpL2ksYWJicmV2aWF0ZWQ6L14oc3VufG1vbnx0dWV8d2VkfHRodXxmcml8c2F0KS9pLHdpZGU6L14oc3VuZGF5fG1vbmRheXx0dWVzZGF5fHdlZG5lc2RheXx0aHVyc2RheXxmcmlkYXl8c2F0dXJkYXkpL2l9LGRlZmF1bHRNYXRjaFdpZHRoOiJ3aWRlIixwYXJzZVBhdHRlcm5zOntuYXJyb3c6Wy9ecy9pLC9ebS9pLC9edC9pLC9edy9pLC9edC9pLC9eZi9pLC9ecy9pXSxhbnk6Wy9ec3UvaSwvXm0vaSwvXnR1L2ksL153L2ksL150aC9pLC9eZi9pLC9ec2EvaV19LGRlZmF1bHRQYXJzZVdpZHRoOiJhbnkifSksZGF5UGVyaW9kOk1zKHttYXRjaFBhdHRlcm5zOntuYXJyb3c6L14oYXxwfG1pfG58KGluIHRoZXxhdCkgKG1vcm5pbmd8YWZ0ZXJub29ufGV2ZW5pbmd8bmlnaHQpKS9pLGFueTovXihbYXBdXC4/XHM/bVwuP3xtaWRuaWdodHxub29ufChpbiB0aGV8YXQpIChtb3JuaW5nfGFmdGVybm9vbnxldmVuaW5nfG5pZ2h0KSkvaX0sZGVmYXVsdE1hdGNoV2lkdGg6ImFueSIscGFyc2VQYXR0ZXJuczp7YW55OnthbTovXmEvaSxwbTovXnAvaSxtaWRuaWdodDovXm1pL2ksbm9vbjovXm5vL2ksbW9ybmluZzovbW9ybmluZy9pLGFmdGVybm9vbjovYWZ0ZXJub29uL2ksZXZlbmluZzovZXZlbmluZy9pLG5pZ2h0Oi9uaWdodC9pfX0sZGVmYXVsdFBhcnNlV2lkdGg6ImFueSJ9KX0sUnM9e2NvZGU6ImVuLVVTIixmb3JtYXREaXN0YW5jZTpTcyxmb3JtYXRMb25nOllzLGZvcm1hdFJlbGF0aXZlOkZzLGxvY2FsaXplOl9zLG1hdGNoOk9zLG9wdGlvbnM6e3dlZWtTdGFydHNPbjowLGZpcnN0V2Vla0NvbnRhaW5zRGF0ZToxfX0sanM9L1t5WVFxTUx3SWREZWNpaEhLa21zXW98KFx3KVwxKnwnJ3wnKCcnfFteJ10pKygnfCQpfC4vZyxQcz0vUCtwK3xQK3xwK3wnJ3wnKCcnfFteJ10pKygnfCQpfC4vZyx6cz0vXicoW15dKj8pJz8kLyxMcz0vJycvZyxVcz0vW2EtekEtWl0vO2Z1bmN0aW9uIEJzKGUsdCxuKXt2YXIgaSxhLG8scixzLGwsZCxjLHUscCxmLG0saCxnLGIsdix4LHk7SHIoMixhcmd1bWVudHMpO3ZhciB3PVN0cmluZyh0KSxrPXRzKCksQT1udWxsIT09KGk9bnVsbCE9PShhPW51bGw9PW4/dm9pZCAwOm4ubG9jYWxlKSYmdm9pZCAwIT09YT9hOmsubG9jYWxlKSYmdm9pZCAwIT09aT9pOlJzLEM9V3IobnVsbCE9PShvPW51bGwhPT0ocj1udWxsIT09KHM9bnVsbCE9PShsPW51bGw9PW4/dm9pZCAwOm4uZmlyc3RXZWVrQ29udGFpbnNEYXRlKSYmdm9pZCAwIT09bD9sOm51bGw9PW58fG51bGw9PT0oZD1uLmxvY2FsZSl8fHZvaWQgMD09PWR8fG51bGw9PT0oYz1kLm9wdGlvbnMpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkmJnZvaWQgMCE9PXM/czprLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkmJnZvaWQgMCE9PXI/cjpudWxsPT09KHU9ay5sb2NhbGUpfHx2b2lkIDA9PT11fHxudWxsPT09KHA9dS5vcHRpb25zKXx8dm9pZCAwPT09cD92b2lkIDA6cC5maXJzdFdlZWtDb250YWluc0RhdGUpJiZ2b2lkIDAhPT1vP286MSk7aWYoIShDPj0xJiZDPD03KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiZmlyc3RXZWVrQ29udGFpbnNEYXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3IGluY2x1c2l2ZWx5Iik7dmFyIEU9V3IobnVsbCE9PShmPW51bGwhPT0obT1udWxsIT09KGg9bnVsbCE9PShnPW51bGw9PW4/dm9pZCAwOm4ud2Vla1N0YXJ0c09uKSYmdm9pZCAwIT09Zz9nOm51bGw9PW58fG51bGw9PT0oYj1uLmxvY2FsZSl8fHZvaWQgMD09PWJ8fG51bGw9PT0odj1iLm9wdGlvbnMpfHx2b2lkIDA9PT12P3ZvaWQgMDp2LndlZWtTdGFydHNPbikmJnZvaWQgMCE9PWg/aDprLndlZWtTdGFydHNPbikmJnZvaWQgMCE9PW0/bTpudWxsPT09KHg9ay5sb2NhbGUpfHx2b2lkIDA9PT14fHxudWxsPT09KHk9eC5vcHRpb25zKXx8dm9pZCAwPT09eT92b2lkIDA6eS53ZWVrU3RhcnRzT24pJiZ2b2lkIDAhPT1mP2Y6MCk7aWYoIShFPj0wJiZFPD02KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigid2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Iik7aWYoIUEubG9jYWxpemUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImxvY2FsZSBtdXN0IGNvbnRhaW4gbG9jYWxpemUgcHJvcGVydHkiKTtpZighQS5mb3JtYXRMb25nKXRocm93IG5ldyBSYW5nZUVycm9yKCJsb2NhbGUgbXVzdCBjb250YWluIGZvcm1hdExvbmcgcHJvcGVydHkiKTt2YXIgUz1xcihlKTtpZighR3IoUykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdGltZSB2YWx1ZSIpO3ZhciBEPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlKERhdGUuVVRDKGUuZ2V0RnVsbFllYXIoKSxlLmdldE1vbnRoKCksZS5nZXREYXRlKCksZS5nZXRIb3VycygpLGUuZ2V0TWludXRlcygpLGUuZ2V0U2Vjb25kcygpLGUuZ2V0TWlsbGlzZWNvbmRzKCkpKTtyZXR1cm4gdC5zZXRVVENGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkpLGUuZ2V0VGltZSgpLXQuZ2V0VGltZSgpfShTKSxZPVhyKFMsRCksVD17Zmlyc3RXZWVrQ29udGFpbnNEYXRlOkMsd2Vla1N0YXJ0c09uOkUsbG9jYWxlOkEsX29yaWdpbmFsRGF0ZTpTfTtyZXR1cm4gdy5tYXRjaChQcykubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF07cmV0dXJuInAiPT09dHx8IlAiPT09dD8oMCx3c1t0XSkoZSxBLmZvcm1hdExvbmcpOmV9KS5qb2luKCIiKS5tYXRjaChqcykubWFwKGZ1bmN0aW9uKGkpe2lmKCInJyI9PT1pKXJldHVybiInIjt2YXIgYT1pWzBdO2lmKCInIj09PWEpcmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goenMpO2lmKCF0KXJldHVybiBlO3JldHVybiB0WzFdLnJlcGxhY2UoTHMsIiciKX0oaSk7dmFyIG8scj1ic1thXTtpZihyKXJldHVybiBudWxsIT1uJiZuLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vuc3x8KG89aSwtMT09PUFzLmluZGV4T2YobykpfHxDcyhpLHQsU3RyaW5nKGUpKSxudWxsIT1uJiZuLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnN8fCFmdW5jdGlvbihlKXtyZXR1cm4tMSE9PWtzLmluZGV4T2YoZSl9KGkpfHxDcyhpLHQsU3RyaW5nKGUpKSxyKFksaSxBLmxvY2FsaXplLFQpO2lmKGEubWF0Y2goVXMpKXRocm93IG5ldyBSYW5nZUVycm9yKCJGb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIHVuZXNjYXBlZCBsYXRpbiBhbHBoYWJldCBjaGFyYWN0ZXIgYCIrYSsiYCIpO3JldHVybiBpfSkuam9pbigiIil9Y29uc3QgSHM9ZT0+e2NvbnN0IHQ9bmV3IERhdGUoMWUzKmUpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gSHIoMSxhcmd1bWVudHMpLCRyKGUsRGF0ZS5ub3coKSl9KHQpPygwLHkucHcpKCJ0aW1lVG9kYXkiLG51bGwsIlRvZGF5Iik6ZnVuY3Rpb24oZSl7cmV0dXJuIEhyKDEsYXJndW1lbnRzKSwkcihlLEtyKERhdGUubm93KCksMSkpfSh0KT8oMCx5LnB3KSgidGltZVllc3RlcmRheSIsbnVsbCwiWWVzdGVyZGF5Iik6QnModCwiZC9NL3l5eXkiKX0scXM9ZT0+KDAsVi5ZKSgic3BhbiIse2NsYXNzTmFtZToidGltZXN0YW1wLW9wZXJhdG9yIixjaGlsZHJlbjpgJHtlfSAtIGB9KSxWcz1lPT57Y29uc3QgdD0oMCxyLmQ0KSh0PT4oMCxDLk4wKSh0LGUub3BlcmF0b3JJZCkpLG49KDAsci5kNCkodD0+KDAsQy55VSkodCxlLm9wZXJhdG9ySWQpKSxpPXQ/e2JhY2tncm91bmRJbWFnZTpgdXJsKCcke3R9JylgfTpudWxsO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOltpJiYoMCxWLlkpKCJzcGFuIix7Y2xhc3NOYW1lOiJ0aW1lc3RhbXAtYXZhdGFyIixzdHlsZTppfSkscXMobildfSl9O3ZhciAkcz1lPT57bGV0e29wZXJhdG9ySWQ6dCxpc0FJQXNzaXN0YW50Om4sYWlBc3Npc3RhbnROYW1lOmksdGltZTphfT1lO3JldHVybigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2VUaW1lc3RhbXAiLGNoaWxkcmVuOlt0JiYoMCxWLlkpKFZzLHtvcGVyYXRvcklkOnR9KSxuJiZpJiZxcyhgJHtpfSBBSSBBZ2VudGApLGAke0hzKGEpfSwgJHtCcyhuZXcgRGF0ZSgxZTMqYSksIkg6bW0iKX1gXX0pfTtjb25zdCBXcz0iaHR0cHM6Ly9hc3NldHMudGlkaW9jaGF0LmNvbS9pbWcvbm90X2ZvdW5kLmpwZyI7dmFyIEtzPWU9Pntjb25zdHtjb250ZW50OnQsZXh0ZW5zaW9uOm4sdGh1bWI6aSxuYW1lOm8saWQ6c309ZSxsPSgwLHIud0EpKCksZD0oMCxyLmQ0KShlPT5lLnB1YmxpY0tleSksYz0oMCxyLmQ0KShlPT5lLnZpc2l0b3IuaWQpLFt1LHBdPSgwLGEudXNlU3RhdGUpKHQpLFttLGhdPSgwLGEudXNlU3RhdGUpKGl8fCIiKSxbZyxiXT0oMCxhLnVzZVN0YXRlKSghMCksdj0iZ2lmIiE9PW4/bTp1LHg9KDAsYS51c2VDYWxsYmFjaykoYXN5bmMgZnVuY3Rpb24oZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtpZihlPT09V3MpcmV0dXJuIGIoITEpLCIiO2lmKC0xPT09ZS5pbmRleE9mKCIvY29udmVyc2F0aW9uLyIpKXtjb25zdCBuPSgwLGYuRGwpKGUpLGk9YC8ke2R9L2NvbnZlcnNhdGlvbi8ke2N9YCxhPW4/YCR7bi5wcm90b2NvbH0vLyR7bi5ob3N0fSR7aX0ke24ucGF0aG5hbWV9JHtuLnNlYXJjaH0ke24uaGFzaH1gOmUsbz1hd2FpdCBhc3luYyBmdW5jdGlvbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06V3M7cmV0dXJuIG5ldyBQcm9taXNlKCh0LG4pPT57Y29uc3QgaT1uZXcgSW1hZ2U7aS5zcmM9ZSxpLm9ubG9hZD0oKT0+dChlKSxpLm9uZXJyb3I9ZT0+e24oZSl9fSkuY2F0Y2goKCk9PnQpfShhKTt0P2gobyk6cChvKX1lbHNlIGgoV3MpLHAoV3MpO3JldHVybiIifSxbZCxjXSkseT0oMCxhLnVzZUNhbGxiYWNrKSh0PT57dC5wcmV2ZW50RGVmYXVsdCgpLGwoKDAsay5xS24pKHUpKSxlLm9uQ2xpY2soKX0sW2wsdSxlXSksdz0oMCxhLnVzZUNhbGxiYWNrKShlPT57ZS5jdXJyZW50VGFyZ2V0LnNldEF0dHJpYnV0ZSgiYWx0IixgJHtvfWApLGwoKDAsay5EdngpKHMsITApKX0sW2wscyxvXSksQT0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e3godSkseChtLCEwKX0sW3UsbSx4XSk7aWYoIWcpcmV0dXJuIG51bGw7Y29uc3QgQz0oMCxmLklGKSh0KTtyZXR1cm4oMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAsVi5ZKSgiYSIse2hyZWY6Qyx0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciBub3JlZmVycmVyIixvbkNsaWNrOnksY2hpbGRyZW46KDAsVi5ZKSgiaW1nIix7Y2xhc3NOYW1lOiJhdHRhY2htZW50LWltZyIsc3JjOnYsb25Mb2FkOncsb25FcnJvcjpBLGFsdDpvfHwiIn0pfSl9KX07Y29uc3QgR3M9InlvdXR1YmVQcmV2aWV3TG9hZGVkIixYcz17bmFtZToiMWF3dzY2IixzdHlsZXM6ImRpc3BsYXk6YmxvY2s7d2lkdGg6Y2FsYygxMDAlICsgdmFyKC0tbWVzc2FnZS1wYWRkaW5nLWlubGluZSwgMTZweCkgKiAyKTttYXJnaW4tdG9wOjE2cHg7bWFyZ2luLWxlZnQ6Y2FsYyh2YXIoLS1tZXNzYWdlLXBhZGRpbmctaW5saW5lLCAxNnB4KSAqIC0xKTttYXJnaW4tcmlnaHQ6Y2FsYyh2YXIoLS1tZXNzYWdlLXBhZGRpbmctaW5saW5lLCAxNnB4KSAqIC0xKTttYXJnaW4tYm90dG9tOmNhbGModmFyKC0tbWVzc2FnZS1wYWRkaW5nLWJsb2NrLCAxMHB4KSAqIC0xKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiNmZmY7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmUifSxRcz0oMCxkLkFIKSh7d2lkdGg6IjEwMCUiLGFzcGVjdFJhdGlvOiIxNiAvIDkiLG1pbkhlaWdodDoxMzkuNSxiYWNrZ3JvdW5kOiJsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNlOGU4ZTggMjUlLCAjZjVmNWY1IDUwJSwgI2U4ZThlOCA3NSUpIixiYWNrZ3JvdW5kU2l6ZToiMjAwJSAxMDAlIixhbmltYXRpb246InNoaW1tZXIgMS41cyBpbmZpbml0ZSIsIkBrZXlmcmFtZXMgc2hpbW1lciI6eyIwJSI6e2JhY2tncm91bmRQb3NpdGlvbjoiMjAwJSAwIn0sIjEwMCUiOntiYWNrZ3JvdW5kUG9zaXRpb246Ii0yMDAlIDAifX19LCIiLCIiKSxacz0oMCxkLkFIKSh7d2lkdGg6IjEwMCUiLGFzcGVjdFJhdGlvOiIxNiAvIDkiLG9iamVjdEZpdDoiY292ZXIiLGRpc3BsYXk6ImJsb2NrIixtaW5IZWlnaHQ6MTM5LjUsIiYmJiI6e2N1cnNvcjoicG9pbnRlciJ9fSwiIiwiIiksSnM9e25hbWU6IjRjYmNleCIsc3R5bGVzOiJwYWRkaW5nOjE2cHg7Ym9yZGVyOjFweCBzb2xpZCAjZWJlZWYwO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgMTJweCk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgMTJweCkifSxlbD17bmFtZToidTNyNjN5IixzdHlsZXM6ImZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoyMHB4O2NvbG9yOiMwODBGMUE7ZGlzcGxheTotd2Via2l0LWJveDstd2Via2l0LWxpbmUtY2xhbXA6Mjstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXMifTt2YXIgdGw9ZT0+e2xldHt1cmw6dH09ZTtjb25zdFtuLGldPSgwLGEudXNlU3RhdGUpKG51bGwpLFtvLHJdPSgwLGEudXNlU3RhdGUpKCExKSxbcyxsXT0oMCxhLnVzZVN0YXRlKSghMSksW2QsY109KDAsYS51c2VTdGF0ZSkoITEpLHU9KDAsYS51c2VSZWYpKG51bGwpLHA9R28odCk7aWYoKDAsYS51c2VFZmZlY3QpKCgpPT57cCYmKGFzeW5jKCk9Pnt0cnl7Y29uc3QgZT1hd2FpdCBmZXRjaChgaHR0cHM6Ly93d3cueW91dHViZS5jb20vb2VtYmVkP3VybD1odHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PSR7cH0mZm9ybWF0PWpzb25gKSx0PWF3YWl0IGUuanNvbigpO3QudGl0bGUmJmkodC50aXRsZSl9Y2F0Y2h7fWZpbmFsbHl7cighMCl9fSkoKX0sW3BdKSwoMCxhLnVzZUVmZmVjdCkoKCk9PnsoZHx8cykmJm8mJnUuY3VycmVudCYmdS5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KEdzLHtidWJibGVzOiEwfSkpfSxbZCxzLG9dKSwhcClyZXR1cm4gbnVsbDtjb25zdCBmPShlPT5gaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvJHtlfS9ocWRlZmF1bHQuanBnYCkocCksbT0hZCYmIXM7cmV0dXJuKDAsVi5GRCkoImEiLHtyZWY6dSxocmVmOnQsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciIsY3NzOlhzLCJkYXRhLXlvdXR1YmUtcHJldmlldyI6ITAsY2hpbGRyZW46W20mJigwLFYuWSkoImRpdiIse2NzczpRc30pLCgwLFYuWSkoImltZyIse2NzczpbWnMsbSYme2Rpc3BsYXk6Im5vbmUifSwiIiwiIl0sc3JjOnM/V3M6ZixhbHQ6bnx8IllvdVR1YmUgdmlkZW8iLG9uTG9hZDooKT0+YyghMCksb25FcnJvcjooKT0+bCghMCl9KSxuJiYoMCxWLlkpKCJkaXYiLHtjc3M6SnMsY2hpbGRyZW46KDAsVi5ZKSgicCIse2NzczplbCxjaGlsZHJlbjpufSl9KV19KX07dmFyIG5sPWU9Pntjb25zdCB0PSgwLHIud0EpKCksbj0oMCxyLmQ0KSh0PT4oMCxDLm1WKSh0LGUuaWQpKSxpPSgwLHIuZDQpKGU9PigwLEMuUW4pKGUpKSxvPUJvb2xlYW4obiYmZS5pc0FJQXNzaXN0YW50KSxbcyxsXT0oMCxhLnVzZVN0YXRlKShvKSx7aXNOZXdTa2luOmR9PSgwLHAuQSkoKTsoMCxhLnVzZUVmZmVjdCkoKCk9PntsKG8pfSxbb10pO2NvbnN0IGM9Qm9vbGVhbihlLnJhdGluZ0lkKSYmIXMsdT17Ym9yZGVyOiIxcHggc29saWQgdHJhbnNwYXJlbnQiLGJhY2tncm91bmQ6YGxpbmVhci1ncmFkaWVudCh3aGl0ZSwgd2hpdGUpIHBhZGRpbmctYm94LCBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAke2YuWFZbMF19LCAke2YuWFZbMV19KSBib3JkZXItYm94YH07cmV0dXJuKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZTpgbWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yICR7cz8idGltZXN0YW1wLXZpc2libGUiOiIifSAke2UucmF0aW5nSWQ/InJhdGluZy12aXNpYmxlIjoiIn1gLHN0eWxlOmUuaXNBSUFzc2lzdGFudCYmIWQ/dTp2b2lkIDAsY2hpbGRyZW46WygwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6Im1lc3NhZ2UtY29udGVudCBtZXNzYWdlLWNvbnRlbnQtLW1hcmtkb3duIixkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOmUuY29udGVudH0sb25DbGljazplPT57Y29uc3R7dGFyZ2V0Om59PWU7IU5yKG4pfHxuLmNsb3Nlc3QoImEiKXx8bi5jbGFzc0xpc3QuY29udGFpbnMoImVtb2ppIik/bChlPT4hZSk6dCgoMCxrLnFLbikobi5zcmMpKX19KSxlLnlvdXR1YmVVcmwmJigwLFYuWSkodGwse3VybDplLnlvdXR1YmVVcmx9KSwoMCxWLlkpKF9pLHtpbjpzLGNoaWxkcmVuOigwLFYuWSkoJHMse2lzQUlBc3Npc3RhbnQ6ZS5pc0FJQXNzaXN0YW50LGFpQXNzaXN0YW50TmFtZTppLHRpbWU6ZS50aW1lX3NlbnR9KX0pLCgwLFYuWSkoX2kse2luOmMsY2hpbGRyZW46KDAsVi5ZKShVcix7bWVzc2FnZUlkOmUuaWQscmF0aW5nSWQ6ZS5yYXRpbmdJZCxyYXRpbmc6ZS5yYXRpbmd9KX0pXX0pfTt2YXIgaWw9ZT0+e2NvbnN0e2lzTmV3U2tpbjp0fT0oMCxwLkEpKCksbj1odCh0KTtyZXR1cm4oMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLHRpdGxlOmUudGl0bGUsb25DbGljazooKT0+e2xldCB0PWUudGl0bGU7ZS5jYXJkQ2xpY2tlZCYmKHQ9YCR7ZS5jYXJkQ2xpY2tlZH0gJnJhcnI7ICR7ZS50aXRsZX1gKSxlLm9uQ2xpY2soZS5wYXlsb2FkLHQpfSxjaGlsZHJlbjooMCxWLlkpKCJzcGFuIix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpfbihlLnRpdGxlKX0sY3NzOm4udGV4dDE0fSl9KX07dmFyIGFsPWU9Pntjb25zdHt0aXRsZTp0LHBheWxvYWQ6bixvbkNsaWNrOmksY2FyZENsaWNrZWQ6YX09ZSxvPSgwLHIud0EpKCkscz1fbih0KSx7aXNOZXdTa2luOmx9PSgwLHAuQSkoKSxkPWh0KGwpLGM9ZS51cmx8fG4sdT0oMCxmLklGKShjKTtyZXR1cm4oMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6ImJ1dHRvbi11cmwiLGNoaWxkcmVuOigwLFYuWSkoImEiLHtjbGFzc05hbWU6ImJ1dHRvbi11cmxfX2FuY2hvciIsaHJlZjooMCxmLklGKShjKSx0eXBlOiJidXR0b24iLG9uQ2xpY2s6cj0+e3IucHJldmVudERlZmF1bHQoKTtsZXQgcz1lLnRpdGxlO2EmJihzPWAke2F9ICZyYXJyOyAke3R9YCksaShuLHMpLGUubWVzc2FnZVR5cGU9PT10dC5Hby5JRlJBTUUmJmUudXJsP28oKDAsay5RVCQpKCgwLGYuSUYpKGUudXJsKSkpOigwLGYuRmUpKHUpfSwiZGF0YS10ZXN0aWQiOiJidXR0b25VcmwiLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6c30sY3NzOmQudGV4dDE0fSl9KX07dmFyIG9sPWU9PntsZXR7YnV0dG9uczp0LG1ldGFkYXRhOm59PWU7Y29uc3QgaT0oMCxyLndBKSgpLG89KGUsdCk9PntpKCgwLGsuUkE3KSh0LGUse2lzX2FpX2Fzc2lzdGFudF90YXNrOm4/LmlzX2FpX2Fzc2lzdGFudF90YXNrfSkpLGkoKDAsay5wTzYpKGx0LlguYnV0dG9uQ2xpY2tlZCkpfTtyZXR1cm4oMCxWLlkpKFYuRksse2NoaWxkcmVuOnQubWFwKGU9PigwLFYuRkQpKGEuRnJhZ21lbnQse2NoaWxkcmVuOlsidXJsIj09PWUudHlwZSYmKDAsVi5ZKShhbCx7dGl0bGU6ZS50aXRsZSxwYXlsb2FkOmUucGF5bG9hZCx1cmw6ZS51cmwsY2FyZENsaWNrZWQ6ZS5jYXJkQ2xpY2tlZCxvbkNsaWNrOm99KSwiYWN0aW9uIj09PWUudHlwZSYmKDAsVi5ZKShpbCx7dGl0bGU6ZS50aXRsZSxwYXlsb2FkOmUucGF5bG9hZCxjYXJkQ2xpY2tlZDplLmNhcmRDbGlja2VkLG9uQ2xpY2s6b30pXX0sYCR7ZS50aXRsZX0ke2UucGF5bG9hZH1gKSl9KX07dmFyIHJsPWU9PntsZXR7Y29udGVudDp0LGJ1dHRvbnM6bixhaUFzc2lzdGFudFRhc2s6aX09ZTtjb25zdCBhPV9yKHQpO3JldHVybigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yIGJ1dHRvbnMtbWVzc2FnZSIsY2hpbGRyZW46KDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZS13aXRoLWJ1dHRvbnMiLGNoaWxkcmVuOlsoMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2Utd2l0aC1idXR0b25zLXRleHQiLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6YX0sImRhdGEtdGVzdGlkIjoiYnV0dG9uc1RleHQifSksKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJidXR0b24td3JhcHBlciIsY2hpbGRyZW46KDAsVi5ZKShvbCx7YnV0dG9uczpuLG1ldGFkYXRhOntpc19haV9hc3Npc3RhbnRfdGFzazppfX0pfSldfSl9KX07dmFyIHNsPWU9PntsZXR7YnV0dG9uczp0fT1lO2NvbnN0IG49KDAsci53QSkoKSxpPXRbMF0sYT0oMCxmLklGKShpLnVybHx8aS5wYXlsb2FkKTtyZXR1cm4oMCxWLlkpKCJhIix7aHJlZjphLGNsYXNzTmFtZToiYnV0dG9uLWljb24iLG9uQ2xpY2s6ZT0+e2UucHJldmVudERlZmF1bHQoKSxuKCgwLGsucE82KShsdC5YLmJ1dHRvbkNsaWNrZWQpKSwoMCxmLkZlKShhKX0sY2hpbGRyZW46KDAsVi5ZKSh1dC5mNSx7fSl9KX07dmFyIGxsPXtnZXRDb250ZW50Q29udGFpbmVyOmU9PigwLGQuQUgpKHtwYWRkaW5nOiI5cHggMTJweCA4cHgiLGJvcmRlcjoiMXB4IHNvbGlkICNlYmVlZjAiLGJvcmRlclRvcDoibm9uZSIsLi4uIWUmJntib3JkZXJSYWRpdXM6IjE0cHggMTRweCAwIDAiLGJvcmRlclRvcDoiMXB4IHNvbGlkICNlYmVlZjAifSwiJiBhIjp7dGV4dERlY29yYXRpb246Im5vbmUiLGNvbG9yOiIjMDAxMjJlIiwiJjpob3ZlciwgJjpmb2N1cywgJjphY3RpdmUsICY6dmlzaXRlZCI6e2NvbG9yOiIjMDAxMjJlIixvdXRsaW5lOiJub25lIn0sIiY6aG92ZXIiOnt0ZXh0RGVjb3JhdGlvbjoidW5kZXJsaW5lIn19fSwiIiwiIiksaW1hZ2U6e25hbWU6IjFiZDlnbXUiLHN0eWxlczoiYm9yZGVyLXJhZGl1czoxNHB4IDE0cHggMCAwO2hlaWdodDoxMjJweDtiYWNrZ3JvdW5kOiNmZmYgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7YmFja2dyb3VuZC1zaXplOmNvdmVyO2JvcmRlcjoxcHggc29saWQgI2ViZWVmMDtib3JkZXItYm90dG9tOjAifSx0aXRsZTp7bmFtZToiMW54cGI4dyIsc3R5bGVzOiJmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxOXB4O2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6IzAwMTIyZSJ9LHN1YnRpdGxlOntuYW1lOiIxYXd5YTdsIixzdHlsZXM6Im1hcmdpbjo0cHggMCAwO2xpbmUtaGVpZ2h0OjE2LjVweDtmb250LXNpemU6MTRweDtjb2xvcjojNGM1OTZiO3doaXRlLXNwYWNlOnByZS1saW5lOyYgLmVtb2ppe3dpZHRoOjE0cHg7bWFyZ2luOjAgMCAtMnB4IDJweDt9In0sdXJsOntuYW1lOiIxbjNhaTdrIixzdHlsZXM6ImZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE3cHg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2NvbG9yOiMwMDEyMmU7JiBhe29wYWNpdHk6MC41O30ifSxidXR0b25zOntuYW1lOiJvM3RjczgiLHN0eWxlczoiJiYgLmJ1dHRvbi13cmFwcGVye21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjFweDsmOmJlZm9yZXtjb250ZW50Om5vbmU7fWJ1dHRvbnt3aWR0aDoxMDAlO319In19O3ZhciBkbD17c3VidGl0bGU6e25hbWU6Imwxdng0cyIsc3R5bGVzOiJjb2xvcjojNjQ3NDkxO3doaXRlLXNwYWNlOnByZS1saW5lOy5lbW9qaXt3aWR0aDoxNHB4O21hcmdpbjowIDAgLTJweCAycHg7fSJ9LHVybDp7bmFtZToiYmY0MHNuIixzdHlsZXM6Im92ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpczthe3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiM2NDc0OTE7Jjpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30mOmhvdmVyLCAmOmZvY3VzLCAmOmFjdGl2ZSwgJjp2aXNpdGVke291dGxpbmU6bm9uZTt9fSJ9LGJ1dHRvbnM6e25hbWU6InhoYmtnNCIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2J1dHRvbnt3aWR0aDoxMDAlO2NvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IsICMwNTY2ZmYpO291dGxpbmU6bm9uZTtwYWRkaW5nOjhweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvciwgI0QzREJFNSk7Jjpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO319c3Zne2ZpbGw6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciwgIzA1NjZmZik7fWF7b3V0bGluZTpub25lO30ifSxpbWFnZTp7bmFtZToiNml3YnMzIixzdHlsZXM6ImhlaWdodDoxMjJweDtiYWNrZ3JvdW5kOiNmZmYgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7YmFja2dyb3VuZC1zaXplOmNvdmVyO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgOHB4KSB2YXIoLS1yYWRpdXMtY29tcG9uZW50LCA4cHgpIDAgMCJ9LGNvbnRhaW5lcjp7bmFtZToicWtjMnd6IixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IsICNEM0RCRTUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgOHB4KSJ9LGNvbnRlbnQ6e25hbWU6IjFmdHRjcGoiLHN0eWxlczoiZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiJ9LHRleHQ6e25hbWU6Im80NG1jYSIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo0cHg7cGFkZGluZzoxNnB4In19O3ZhciBjbD1lPT57bGV0e2ltYWdlVXJsOnQsbGluazpuLG9wZW5MaW5rOmk9KCk9Pnt9fT1lO2NvbnN0e2lzTmV3U2tpbjphfT0oMCxwLkEpKCk7cmV0dXJuIG4/KDAsVi5ZKSgiYSIse2hyZWY6bixvbkNsaWNrOmksImRhdGEtdGVzdGlkIjoiY2FyZEltYWdlTGluayIsY2hpbGRyZW46KDAsVi5ZKSgiZGl2Iix7Y3NzOmE/ZGwuaW1hZ2U6bGwuaW1hZ2Usc3R5bGU6e2JhY2tncm91bmRJbWFnZTpgdXJsKCR7dH0pYH19KX0pOigwLFYuWSkoImRpdiIse2NzczphP2RsLmltYWdlOmxsLmltYWdlLHN0eWxlOntiYWNrZ3JvdW5kSW1hZ2U6YHVybCgke3R9KWB9fSl9O3ZhciB1bD1lPT57bGV0e3RpdGxlOnQsaXNTaG9waWZ5Q2FyZDpuLGltYWdlVXJsOmksYnV0dG9uczpvLHByb3h5VXJsOnI9IiIsc3VidGl0bGU6cz0iIix1cmw6bD0iIixtZXRhZGF0YTpkfT1lO2NvbnN0e2lzTmV3U2tpbjpjfT0oMCxwLkEpKCksdT1odChjKSx7aG9zdDptfT0oMCxmLkRsKShsKXx8e30saD0oMCxmLklGKShsKSxnPSgwLGYuSUYpKHIpLGI9Rm4odCksdj1GbihzKSx4PSgwLGYuWGYpKCgwLGYuYnApKCksbCkseT1Cb29sZWFuKGkpLHc9KDAsYS51c2VNZW1vKSgoKT0+by5tYXAoZT0+KHsuLi5lLGNhcmRDbGlja2VkOnR9KSksW28sdF0pLGs9ZT0+e2UucHJldmVudERlZmF1bHQoKTtjb25zdCB0PWd8fGg7dHJ5e3gmJndpbmRvdy50b3A/d2luZG93LnRvcC5sb2NhdGlvbj10OndpbmRvdy5vcGVuKHQpfWNhdGNoe3dpbmRvdy5vcGVuKHQpfX07cmV0dXJuIGM/KDAsVi5GRCkoImRpdiIse2NzczpkbC5jb250YWluZXIsY2hpbGRyZW46W2kmJigwLFYuWSkoY2wse2ltYWdlVXJsOmksbGluazpoLG9wZW5MaW5rOmt9KSwoMCxWLkZEKSgiZGl2Iix7Y3NzOmRsLmNvbnRlbnQsY2hpbGRyZW46WygwLFYuRkQpKCJkaXYiLHtjc3M6ZGwudGV4dCxjaGlsZHJlbjpbKDAsVi5ZKSgiZGl2Iix7Y3NzOnUudGV4dDE0TWVkaXVtLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6Yn19KSxzJiYoMCxWLlkpKCJkaXYiLHtjc3M6W3UudGV4dDE0LGRsLnN1YnRpdGxlLCIiLCIiXSxkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOnZ9fSksbCYmKDAsVi5ZKSgiZGl2Iix7Y3NzOlt1LnRleHQxNCxkbC51cmwsIiIsIiJdLGNoaWxkcmVuOigwLFYuWSkoImEiLHtocmVmOmgsdHlwZToiYnV0dG9uIixvbkNsaWNrOmssImRhdGEtdGVzdGlkIjoiY2FyZExpbmsiLGNoaWxkcmVuOng/TXIobCk6bX0pfSldfSksKDAsVi5ZKSgiZGl2Iix7Y3NzOmRsLmJ1dHRvbnMsY2hpbGRyZW46bj8oMCxWLlkpKHNsLHtidXR0b25zOnd9KTooMCxWLlkpKG9sLHtidXR0b25zOncsbWV0YWRhdGE6ZH0pfSldfSldfSk6KDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZS13aXRoLWJ1dHRvbnMiLGNoaWxkcmVuOltpJiYoMCxWLlkpKGNsLHtpbWFnZVVybDppLGxpbms6aCxvcGVuTGluazprfSksKDAsVi5GRCkoImRpdiIse2NzczpsbC5nZXRDb250ZW50Q29udGFpbmVyKHkpLGNoaWxkcmVuOlsoMCxWLlkpKCJkaXYiLHtjc3M6bGwudGl0bGUsZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpifX0pLHMmJigwLFYuWSkoImRpdiIse2NzczpsbC5zdWJ0aXRsZSxkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOnZ9fSksbCYmKDAsVi5ZKSgiZGl2Iix7Y3NzOmxsLnVybCxjaGlsZHJlbjooMCxWLlkpKCJhIix7aHJlZjpoLHR5cGU6ImJ1dHRvbiIsb25DbGljazprLCJkYXRhLXRlc3RpZCI6ImNhcmRMaW5rIixjaGlsZHJlbjp4P01yKGwpOm19KX0pXX0pLCgwLFYuWSkoImRpdiIse2NzczpsbC5idXR0b25zLGNoaWxkcmVuOigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToiYnV0dG9uLXdyYXBwZXIiLGNoaWxkcmVuOm4/KDAsVi5ZKShzbCx7YnV0dG9uczp3fSk6KDAsVi5ZKShvbCx7YnV0dG9uczp3LG1ldGFkYXRhOmR9KX0pfSldfSl9O3ZhciBwbD1lPT57bGV0e2NhcmRzOnQsb3BlcmF0b3JfaWQ6bixhaUFzc2lzdGFudFRhc2s6aX09ZTtjb25zdCBhPSJzdHJpbmciPT10eXBlb2YgdFswXS5pbWFnZVVybCxvPSJudW1iZXIiPT10eXBlb2YgbjtyZXR1cm4oMCxWLlkpKERyLHtpdGVtczp0LGl0ZW1LZXk6ImlkIixyZW5kZXJJdGVtOmU9PigwLGQubikodWwsey4uLmUsaXNTaG9waWZ5Q2FyZDpvLGtleTplLmlkLG1ldGFkYXRhOntpc19haV9hc3Npc3RhbnRfdGFzazppfX0pLGlzV2l0aG91dEltYWdlczohYX0pfTtjb25zdCBmbD17bmFtZToiZWwybno5IixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2NvbG9yOiM2NDc0OTE7bWFyZ2luOmF1dG87dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MjRweDtwe21hcmdpbjo2cHggMDt9In07dmFyIG1sPWU9PntsZXR7b3BlcmF0b3JfaWQ6dH09ZTtjb25zdCBuPSgwLHIuZDQpKEMuSykuZmluZChlPT5lLmlkPT09dCk7cmV0dXJuKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSIsY3NzOmZsLGNoaWxkcmVuOlsoMCxWLlkpKHV0LnpxLHt9KSwoMCxWLlkpKCJwIix7Y2hpbGRyZW46bj8oMCxWLlkpKE9uLHt2YWx1ZToib3BlcmF0b3JNYXJrZWRDb252ZXJzYXRpb25Bc1NvbHZlZCIscmVwbGFjZW1lbnRzOnsie29wZXJhdG9yTmFtZX0iOm4ubmFtZX0sZmFsbGJhY2s6IntvcGVyYXRvck5hbWV9IG1hcmtlZCB0aGUgY29udmVyc2F0aW9uIGFzIHNvbHZlZCJ9KTooMCxWLlkpKE9uLHt2YWx1ZToiY29udmVyc2F0aW9uV2FzTWFya2VkQXNTb2x2ZWQiLGZhbGxiYWNrOiJUaGUgY29udmVyc2F0aW9uIHdhcyBtYXJrZWQgYXMgc29sdmVkIn0pfSldfSl9O2NvbnN0IGhsPXtuYW1lOiJwcjEweHAiLHN0eWxlczoibWFyZ2luLWJvdHRvbToxMHB4In0sZ2w9ZnVuY3Rpb24oKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtyZXR1cm4oMCxkLkFIKSh7d2lkdGg6IjEwMCUiLGRpc3BsYXk6ImZsZXgiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGFsaWduSXRlbXM6ImNlbnRlciIscGFkZGluZzp0PyI0cHggOHB4IjoiMTJweCA0MHB4IixiYWNrZ3JvdW5kOiIjZmZmIixib3JkZXI6IjFweCBkYXNoZWQgdmFyKC0tYm9yZGVyLWNvbG9yLCAjRDNEQkU1KSIsYm9yZGVyUmFkaXVzOiI4cHgiLG91dGxpbmU6Im5vbmUiLHBvc2l0aW9uOiJyZWxhdGl2ZSIsZm9udFdlaWdodDo2MDAsLi4uZT97IiY6aG92ZXIiOntib3JkZXI6IjFweCBzb2xpZCAjQUNCOENCIixjb2xvcjoiIzY0NzQ5MSIsZm9udFdlaWdodDo0MDB9fTp7fSxzdmc6e3dpZHRoOiIxNnB4IixoZWlnaHQ6IjE2cHgifX0sIiIsIiIpfSxibD17bmFtZToiMWd6aDIzNCIsc3R5bGVzOiJsaW5lLWhlaWdodDoyMHB4O2ZvbnQtc2l6ZToxNnB4In0sdmw9e25hbWU6IjFld3V0eW0iLHN0eWxlczoiY29sb3I6IzY0NzQ5MTtmb250LXdlaWdodDo0MDAifSx4bD1lPT4oMCxkLkFIKSh7cG9zaXRpb246ImFic29sdXRlIixyaWdodDplPyI2cHgiOiIxOHB4Iix0b3A6ZT8iNnB4IjoiMTRweCJ9LCIiLCIiKSx5bD17bmFtZToiNGltOGttIixzdHlsZXM6ImRpc3BsYXk6ZmxleDttYXJnaW4tcmlnaHQ6NHB4O3N2Z3tmaWxsOiM2NDc0OTE7fSJ9O3ZhciB3bD1lPT57bGV0e2NvbnRlbnQ6dCxjb3Vwb25Db2RlOm59PWU7Y29uc3RbaSxvXT0oMCxhLnVzZVN0YXRlKShuKSxbcyxsXT0oMCxhLnVzZVN0YXRlKSghMSksW2QsY109KDAsYS51c2VTdGF0ZSkoITApLHU9KDAsYS51c2VSZWYpKCksZj0oMCxyLndBKSgpLG09X3IodCkse2lzTmV3U2tpbjpofT0oMCxwLkEpKCksZz1odChoKTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IgY291cG9uLWNvZGUtbWVzc2FnZSIsY2hpbGRyZW46WygwLFYuWSkoImRpdiIse2NzczpobCxkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOm19fSksZD8oMCxWLkZEKSgiYnV0dG9uIix7Y3NzOltnbCghMCxoKSxzJiZ2bCwiIiwiIl0sb25DbGljazphc3luYygpPT57dHJ5e24mJmQmJihhd2FpdCB3aW5kb3cucGFyZW50Lm5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KG4pLGYoKDAsay5wTzYpKGx0LlguY291cG9uQ29kZUNvcHlDbGlja2VkKSksbCghMCksdS5jdXJyZW50JiZjbGVhclRpbWVvdXQodS5jdXJyZW50KSx1LmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+e2woITEpfSwxNTAwKSl9Y2F0Y2h7YyghMSksbyhuKX19LHR5cGU6ImJ1dHRvbiIsb25Nb3VzZUVudGVyOigpPT57ZCYmbygoMCx5LnB3KSgiY2xpY2tUb0NvcHkiLG51bGwsIkNsaWNrIHRvIGNvcHkiKSl9LG9uTW91c2VMZWF2ZTooKT0+e2QmJm8obil9LGNoaWxkcmVuOltzJiYoMCxWLlkpKCJzcGFuIix7Y3NzOnlsLGNoaWxkcmVuOigwLFYuWSkodXQub2gse30pfSksKDAsVi5ZKSgic3BhbiIse2NzczpbYmwsZy50ZXh0MTRNZWRpdW0sIiIsIiJdLGNoaWxkcmVuOnM/KDAseS5wdykoImNvcGllZCIsbnVsbCwiQ29waWVkIik6aX0pLCFzJiYoMCxWLlkpKCJzcGFuIix7Y3NzOnhsKGgpLGNoaWxkcmVuOigwLFYuWSkodXQuVGQse30pfSldfSk6KDAsVi5ZKSgic3BhbiIse2NzczpnbCghMSxoKSxjaGlsZHJlbjooMCxWLlkpKCJzcGFuIix7Y3NzOmJsLGNoaWxkcmVuOml9KX0pXX0pfTtsZXQga2w9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuVkFMSUQ9InZhbGlkIixlLklOVkFMSUQ9ImludmFsaWQiLGUuRU1QVFk9ImVtcHR5IixlfSh7fSk7Y29uc3QgQWw9ZT0+e3N3aXRjaChlKXtjYXNlIHR0LlZ3LkZJTEU6cmV0dXJuW107Y2FzZSB0dC5Wdy5DSEVDS0JPWDpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiIifX0sQ2w9Lyg/OlwrP1xkK1tccy1dPyk/KD86XChcZCtcKSk/KD86XHM/XC9ccz8pPyg/OlstLlxzXT9cZHsxLDV9KXs1LH0uKlxkLyxFbD0vW14/IUAjJCVeJiooKV8rLT07JzoifCwuLzw+YH5cZF0rLyxTbD0vKCg/Omh0dHBzPzpcL1wvKT8oPzp3d3dcLik/W2Etei0uXGRdK1wuW2Etel17MiwxM30oPzooPzpcP3xcLykoPzpcUyspPyk/KSg/OlsuIT8sXS4qKT8kL2k7dmFyIERsPWU9PntsZXR7Zm9ybTp0LG1lc3NhZ2VJZDpufT1lO2NvbnN0IGk9KDAsci53QSkoKSxvPSgwLHIuZDQpKGU9PigwLEMuaHUpKGUsbikpLHM9KDAsci5kNCkoQy5zeSksbD1vPy50eXBlLGQ9cz8uaWQ9PT1uLFtjLHVdPSgwLGEudXNlU3RhdGUpKHQucmVkdWNlKChlLHQpPT4oey4uLmUsW3QuaWRdOkFsKHQudHlwZSl9KSx7fSkpLFtwLG1dPSgwLGEudXNlU3RhdGUpKCExKSxoPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57bSghMCl9LFtdKSxnPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57bSghMSl9LFtdKSxbYix2XT0oMCxhLnVzZVN0YXRlKSghMSksW3gseV09KDAsYS51c2VTdGF0ZSkodC5yZWR1Y2UoKGUsdCk9Pih7Li4uZSxbdC5pZF06a2wuVkFMSUR9KSx7fSkpLHc9KDAsYS51c2VNZW1vKSgoKT0+T2JqZWN0LnZhbHVlcyh4KS5zb21lKGU9PmUhPT1rbC5WQUxJRCksW3hdKSxBPSgwLGEudXNlUmVmKShudWxsKSxFPSgwLGEudXNlUmVmKShudWxsKSxTPSgwLGEudXNlUmVmKSgpLEQ9KDAsYS51c2VSZWYpKCExKSxZPSgwLGEudXNlQ2FsbGJhY2spKGU9Pnt5KHQ9Pih7Li4udCxbZV06a2wuVkFMSUR9KSl9LFtdKSxUPSgwLGEudXNlQ2FsbGJhY2spKChlLHQpPT57dShuPT4oey4uLm4sW2VdOnR9KSksWShlKX0sW1ldKSxGPSgwLGEudXNlQ2FsbGJhY2spKChlLHQpPT57dShuPT57Y29uc3QgaT1uW2VdO3JldHVybiBBcnJheS5pc0FycmF5KGkpP3suLi5uLFtlXTpbLi4uaSx0XX06bn0pLFkoZSl9LFtZXSksST0oMCxhLnVzZUNhbGxiYWNrKSgoZSx0LG4pPT57dShpPT57Y29uc3QgYT1pW2VdO3JldHVybiBBcnJheS5pc0FycmF5KGEpP3suLi5pLFtlXTphLmZpbHRlcihlPT5lW3RdIT09bil9Oml9KX0sW10pLF89KDAsYS51c2VDYWxsYmFjaykoKCk9Pntjb25zdCBlPXsuLi54fTtsZXQgbj0hMTtyZXR1cm4gdC5mb3JFYWNoKHQ9Pntjb25zdCBpPWNbdC5pZF07c3dpdGNoKHR5cGVvZiBpKXtjYXNlImJvb2xlYW4iOnQucmVxdWlyZWQmJiFpJiYobj0hMCxlW3QuaWRdPWtsLkVNUFRZKTticmVhaztjYXNlIm9iamVjdCI6dC50eXBlPT09dHQuVncuRklMRSYmdC5yZXF1aXJlZCYmIWlbMF0/LnVybCYmKG49ITAsZVt0LmlkXT1rbC5FTVBUWSk7YnJlYWs7ZGVmYXVsdDp0LnJlcXVpcmVkJiYiIj09PWk/KG49ITAsZVt0LmlkXT1rbC5FTVBUWSk6IiI9PT1pfHwoZT0+e3N3aXRjaChlKXtjYXNlIHR0LlZ3LlBIT05FOnJldHVybiBlPT5DbC50ZXN0KGUpO2Nhc2UgdHQuVncuTkFNRTpyZXR1cm4gZT0+RWwudGVzdChlKTtjYXNlIHR0LlZ3LlVSTDpyZXR1cm4gZT0+U2wudGVzdChlKTtjYXNlIHR0LlZ3LkVNQUlMOnJldHVybiBlPT4oMCxmLkI5KShlKTtkZWZhdWx0OnJldHVybigpPT4hMH19KSh0LnR5cGUpKGkpfHwobj0hMCxlW3QuaWRdPWtsLklOVkFMSUQpfX0pLHtmb3JtRXJyb3JzOmUsaXNGb3JtSW52YWxpZDpufX0sW3QseCxjXSksTT0oMCxhLnVzZUNhbGxiYWNrKShlPT57aWYoZS5wcmV2ZW50RGVmYXVsdCgpLHApcmV0dXJuITE7Y29uc3R7Zm9ybUVycm9yczpuLGlzRm9ybUludmFsaWQ6YX09XygpO3JldHVybiBhP3kobik6KHYoITApLGkoKDAsay5yTUEpKHtmb3JtUmVzcG9uc2U6dC5tYXAoZT0+KHtuYW1lOmUubmFtZSxpZDplLmlkLHZhbHVlOmNbZS5pZF19KSl9KSkpLCEwfSxbaSx0LGMscCxfXSksTj0oMCxhLnVzZUNhbGxiYWNrKShlPT57dSh0LnJlZHVjZSgodCxuKT0+e2NvbnN0IGk9ZS5maW5kKGU9PmUuaWQ9PT1uLmlkKT8udmFsdWU7cmV0dXJuey4uLnQsW24uaWRdOm4udHlwZT09PXR0LlZ3LkNIRUNLQk9YP0Jvb2xlYW4oaSk6aT8/IiJ9fSx7fSkpfSxbdF0pO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBFLmN1cnJlbnQ/LnNjcm9sbEludG9WaWV3JiZkJiYoUy5jdXJyZW50PXNldFRpbWVvdXQoKCk9Pnt0cnl7RS5jdXJyZW50Py5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6Im5lYXJlc3QifSl9Y2F0Y2h7RS5jdXJyZW50Py5zY3JvbGxJbnRvVmlldygpfX0sMTUwKSksKCk9PntTLmN1cnJlbnQmJmNsZWFyVGltZW91dChTLmN1cnJlbnQpfSksW2RdKSwoMCxhLnVzZUVmZmVjdCkoKCk9PntkfHxsIT09dHQuR28uRk9STV9SRVNQT05TRXx8IW8/LmZvcm1SZXNwb25zZXx8RC5jdXJyZW50fHwoTihvLmZvcm1SZXNwb25zZSksRC5jdXJyZW50PSEwKX0sW2Qsbz8uZm9ybVJlc3BvbnNlLGwsTl0pLHtmb3JtU3VibWl0dGluZzpiLGZvcm1WYWxpZGl0eVN0YXRlOngsZm9ybVZhbHVlczpjLGhhbmRsZUNoYW5nZTpULGhhbmRsZVN1Ym1pdDpNLGZvcm1SZWY6QSx0aXRsZVJlZjpFLGhhc0Vycm9yczp3LGVuYWJsZUZvcm1TdWJtaXNzaW9uOmcsZGlzYWJsZUZvcm1TdWJtaXNzaW9uOmgsaXNTdWJtaXNzaW9uRGlzYWJsZWQ6cCxhZGRJdGVtVG9BcnJheUZvcm1GaWVsZDpGLHJlbW92ZUl0ZW1Gcm9tQXJyYXlGb3JtRmllbGQ6SSxkaXNhYmxlZDpsIT09dHQuR28uRk9STV9SRVNQT05TRSYmIWQsc2VudDpsPT09dHQuR28uRk9STV9SRVNQT05TRSYmIWR9fTtjb25zdCBZbD1lPT4oMCxkLkFIKSh7bWFyZ2luQm90dG9tOmU/IjhweCI6IjEycHgiLGRpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIscG9zaXRpb246InJlbGF0aXZlIn0sIiIsIiIpLFRsPWU9PigwLGQuQUgpKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHJpZ2h0OiIxMHB4Iix0b3A6ZT8iMTBweCI6IjRweCIsc3ZnOntmaWxsOiIjMjU4MzNFIix3aWR0aDoiMjBweCJ9fSwiIiwiIiksRmw9KDAsZC5BSCkoIlxuICAgIGNvbG9yOiAjRTgxMzMyO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmctdG9wOiA0cHg7XG4iLCIiLCIiKSxJbD0oZSx0KT0+e3N3aXRjaCh0KXtjYXNlIGtsLkVNUFRZOnJldHVybigwLFYuWSkoInNwYW4iLHtjc3M6RmwsY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6ImZpZWxkQ2Fubm90QmVFbXB0eSIsZmFsbGJhY2s6IkZpZWxkIGNhbm5vdCBiZSBlbXB0eSJ9KX0pO2Nhc2Uga2wuSU5WQUxJRDpyZXR1cm4oZT0+e2xldCB0PW51bGw7c3dpdGNoKGUpe2Nhc2UgdHQuVncuQ0hFQ0tCT1g6dD17dmFsdWU6ImZpZWxkUmVxdWlyZWQiLGZhbGxiYWNrOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkIn07YnJlYWs7Y2FzZSB0dC5Wdy5FTUFJTDp0PXt2YWx1ZToid3JvbmdFbWFpbEZvcm1hdCIsZmFsbGJhY2s6IlRoYXQgZW1haWwgZG9lc24ndCBsb29rIHF1aXRlIHJpZ2h0In07YnJlYWs7Y2FzZSB0dC5Wdy5OQU1FOnQ9e3ZhbHVlOiJ3cm9uZ05hbWVGb3JtYXQiLGZhbGxiYWNrOiJUaGF0IG5hbWUgZG9lc24ndCBsb29rIHF1aXRlIHJpZ2h0In07YnJlYWs7Y2FzZSB0dC5Wdy5OVU1CRVI6dD17dmFsdWU6Indyb25nTnVtYmVyRm9ybWF0IixmYWxsYmFjazoiVGhhdCBudW1iZXIgZG9lc24ndCBsb29rIHF1aXRlIHJpZ2h0In07YnJlYWs7Y2FzZSB0dC5Wdy5VUkw6dD17dmFsdWU6Indyb25nVXJsRm9ybWF0IixmYWxsYmFjazoiVGhhdCBVUkwgZG9lc24ndCBsb29rIHF1aXRlIHJpZ2h0In07YnJlYWs7Y2FzZSB0dC5Wdy5QSE9ORTp0PXt2YWx1ZToid3JvbmdQaG9uZUZvcm1hdCIsZmFsbGJhY2s6IlRoYXQgcGhvbmUgbnVtYmVyIGRvZXNuJ3QgbG9vayBxdWl0ZSByaWdodCJ9O2JyZWFrO2Nhc2UgdHQuVncuU0VMRUNUOnQ9e3ZhbHVlOiJjaG9vc2VPbmVPZlRoZU9wdGlvbnMiLGZhbGxiYWNrOiJDaG9vc2Ugb25lIG9mIHRoZSBvcHRpb25zIn07YnJlYWs7Y2FzZSB0dC5Wdy5URVhUOmNhc2UgdHQuVncuTE9OR19URVhUOmNhc2UgdHQuVncuTVVMVElTRUxFQ1Q6ZGVmYXVsdDpyZXR1cm4gbnVsbH1yZXR1cm4oMCxWLlkpKCJzcGFuIix7Y3NzOkZsLGNoaWxkcmVuOigwLFYuWSkoT24sey4uLnR9KX0pfSkoZSk7Y2FzZSBrbC5WQUxJRDpkZWZhdWx0OnJldHVybiBudWxsfX07dmFyIF9sPWU9PntsZXR7c2hvdWxkRGlzcGxheVN1Y2Nlc3NJY29uOnQsdmFsaWRpdHk6bix0eXBlOmksY2hpbGRyZW46YX09ZTtjb25zdHtpc05ld1NraW46b309KDAscC5BKSgpO3JldHVybigwLFYuRkQpKCJkaXYiLHtjc3M6WWwobyksY2hpbGRyZW46W2EsdCYmKDAsVi5ZKSgiZGl2Iix7Y3NzOlRsKG8pLGNoaWxkcmVuOigwLFYuWSkodXQub2gse30pfSksSWwoaSxuKV19KX0sTWw9bigxNjIpLE5sPW4ubihNbCksT2w9big2NzAxKSxSbD1uKDE3OTcpO2NvbnN0IGpsPXtuYW1lOiJjbjN4Y2oiLHN0eWxlczoibWFyZ2luLWJvdHRvbToxMnB4In0sUGw9KGUsdCxuKT0+KDAsZC5BSCkoe2JvcmRlcjoiMnB4IGRhc2hlZCAiKyhlPyIjRTgxMzMyIjoiI0QzREJFNSIpLGJhY2tncm91bmQ6IiNmZmYiLHBhZGRpbmc6bj8iMTJweCI6IjIycHggMjRweCIsYm9yZGVyUmFkaXVzOiI2cHgiLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOiIxMnB4Iixwb3NpdGlvbjoicmVsYXRpdmUiLG9wYWNpdHk6dD8uNToxLCImOmZvY3VzIjp7b3V0bGluZToibm9uZSJ9LCImIHN2ZyI6e2ZsZXhTaHJpbms6MCxmaWxsOiIjODc5NkFGIn0sIiYgLm1lc3NhZ2UtdXBsb2FkIHN2ZyI6e2ZpbGw6IiMwNTY2RkYiLHN0cm9rZToiIzA1NjZGRiJ9LC4uLm4mJntib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDhweCkiLGJvcmRlcjoiMXB4IGRhc2hlZCAiKyhlPyIjRTgxMzMyIjoiI0QzREJFNSIpfX0sIiIsIiIpLHpsPXtuYW1lOiIxb2puc293IixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjAifSxMbD17bmFtZToiMWtkM3R2MCIsc3R5bGVzOiJjb2xvcjojNjQ3NDkxIn0sVWw9e25hbWU6Im00M2ZhIixzdHlsZXM6ImNvbG9yOiMwNTY2RkYifSxCbD0oZSx0KT0+e3N3aXRjaChlKXtjYXNlIFJsLiRtLkZJTEVfVE9PX0JJRzp7Y29uc3QgZT0oMCxPbC55KSh0KSxuPSgwLHkucHcpKCJmaWxlVG9CaWdBbGVydCIsbnVsbCwiRmlsZSBleGNlZWQgMTBNQiBsaW1pdC4iKTtyZXR1cm4gZT8ubGltaXRJbk1CP24ucmVwbGFjZSgiMTBNQiIsYCR7ZS5saW1pdEluTUJ9TUJgKTpufWNhc2UgUmwuJG0uRVhURU5TSU9OX05PVF9TVVBQT1JURUQ6cmV0dXJuKDAseS5wdykoImZpbGVGb3JtYXROb3RTdXBwb3J0ZWQiLHsie2Zvcm1hdHRlZF9leHRlbnNpb25zfSI6YCR7cmkuVU8uam9pbigiLCAiKX0uYH0sIlRoaXMgZmlsZSBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZC4gWW91IGNhbiB1cGxvYWQ6IHtmb3JtYXR0ZWRfZXh0ZW5zaW9uc30iKTtjYXNlIFJsLiRtLkdFTkVSSUNfVVBMT0FEX0VSUk9SOmRlZmF1bHQ6cmV0dXJuKDAseS5wdykoImdlbmVyaWNGaWxlVXBsb2FkQWxlcnQiLG51bGwsIlNvbWV0aGluZyB3ZW50IHdyb25nIHdoZW4gdHJ5aW5nIHRvIHVwbG9hZCB5b3VyIGZpbGUuIil9fTt2YXIgSGw9ZT0+e2xldHtvbkZpbGVBZGQ6dCxmaWVsZE5hbWU6bixlcnJvcjppLGNhdXNlOmEscmVxdWlyZWRFcnJvcjpvLG1heEZpbGVzOnIsZGlzYWJsZWQ6c309ZTtjb25zdHtpc05ld1NraW46bH09KDAscC5BKSgpLHtnZXRSb290UHJvcHM6YyxnZXRJbnB1dFByb3BzOnUsaXNEcmFnQWN0aXZlOmZ9PVhlKHttdWx0aXBsZToxIT09cixvbkRyb3BBY2NlcHRlZDplPT57dChlKX0sbWF4RmlsZXM6cixkaXNhYmxlZDpzfSk7cmV0dXJuKDAsVi5GRCkoImRpdiIse2NzczpqbCxjaGlsZHJlbjpbKDAsVi5GRCkoImRpdiIsey4uLmMoKSxjc3M6UGwoQm9vbGVhbihpKSxzLGwpLGNoaWxkcmVuOlsoMCxWLlkpKCJpbnB1dCIsey4uLnUoKSwiZGF0YS10ZXN0aWQiOiJmaWxlLW1lc3NhZ2UtdXBsb2FkLWlucHV0In0pLCgwLFYuRkQpKCJkaXYiLHtjc3M6KG09ZiwoMCxkLkFIKSh7Ym9yZGVyUmFkaXVzOiI2cHgiLHBhZGRpbmc6IjIycHggMjRweCIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoiLTJweCIsbGVmdDoiLTJweCIscmlnaHQ6Ii0ycHgiLGJvdHRvbToiLTJweCIsYm9yZGVyOiIycHggc29saWQgIzA1NjZGRiIsZ2FwOiIxMnB4IixiYWNrZ3JvdW5kOiIjRENFOUZGIixvcGFjaXR5Om0/MTowLHRyYW5zaXRpb246Im9wYWNpdHkgLjJzIiwiJiBzdmciOntmbGV4U2hyaW5rOjAsZmlsbDoiIzA1NjZGRiJ9fSwiIiwiIikpLGNoaWxkcmVuOlsoMCxWLlkpKHV0LkpNLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoImRyYWdBbmREcm9wSW5mbyIsbnVsbCwiRHJvcCBoZXJlIHRvIGF0dGFjaCIpfSldfSksKDAsVi5ZKSh1dC5KTSx7fSksKDAsVi5GRCkoImRpdiIse2Nzczp6bCxjaGlsZHJlbjpbKDAsVi5ZKSgic3BhbiIse2NoaWxkcmVuOm59KSwoMCxWLkZEKSgic3BhbiIse2NzczpMbCxjaGlsZHJlbjpbKDAseS5wdykoImRyYWdBbmREcm9wIixudWxsLCJEcmFnICYgZHJvcCBoZXJlIG9yICIpLCgwLFYuWSkoInNwYW4iLHtjc3M6VWwsY2hpbGRyZW46KDAseS5wdykoImJyb3dzZSIsbnVsbCwiYnJvd3NlIil9KV19KV19KV19KSxvPygwLFYuWSkoInNwYW4iLHtjc3M6RmwsY2hpbGRyZW46KDAseS5wdykoImZpbGVJc1JlcXVpcmVkIixudWxsLCJGaWxlIGlzIHJlcXVpcmVkIil9KTppJiYoMCxWLlkpKCJzcGFuIix7Y3NzOkZsLGNoaWxkcmVuOkJsKGksYSl9KV19KTt2YXIgbX07Y29uc3QgcWw9e25hbWU6ImRjb3M4aCIsc3R5bGVzOiJiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo2cHg7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjQ0cHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLWJvdHRvbToxMnB4O2FsaWduLWl0ZW1zOmNlbnRlcjsmJiYgc3Zne3Bvc2l0aW9uOnN0YXRpYztoZWlnaHQ6YXV0bzsmIC5wYXRoe3N0cm9rZTojMDU2NkZGO319In07dmFyIFZsPWU9PntsZXR7ZmlsZXNUb1VwbG9hZDp0LGhhbmRsZVVwbG9hZGVkRmlsZTpuLGhhbmRsZVVwbG9hZEZpbmlzaGVkOmksb25VcGxvYWRFcnJvcjpvfT1lO2NvbnN0W3Isc109KDAsYS51c2VTdGF0ZSkoW10pO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+e3IubGVuZ3RoPT09dC5sZW5ndGgmJmkoKX0sW3QubGVuZ3RoLGksci5sZW5ndGhdKSx0Lm1hcChlPT57bGV0e2ZpbGVUb1VwbG9hZDp0LGlkOml9PWU7cmV0dXJuIHIuc29tZShlPT5lPT09aSk/bnVsbDooMCxWLlkpKCJkaXYiLHtjc3M6cWwsY2hpbGRyZW46KDAsVi5ZKShSbC5BeSx7ZmlsZTp0LHNlbmRlcjp0dC5EJC5WSVNJVE9SLGhhbmRsZVN1Y2Nlc3M6ZT0+KChlLHQpPT57bih7bmFtZTp0Lm1ldGEubmFtZSxleHRlbnNpb246dC5tZXRhLmV4dGVuc2lvbix1cmw6dC51cmx9KSxzKHQ9PlsuLi50LGVdKX0pKGksZSksaGFuZGxlRXJyb3I6KGUsdCk9PigoZSx0LG4pPT57cyh0PT5bLi4udCxlXSksbyh0LG4pfSkoaSxlLHQpLGN1c3RvbUNsYXNzTmFtZToiZm9ybS1maWxlLXVwbG9hZGluZyIsaGlkZVByb2dyZXNzSW5mbzohMH0pfSxpKX0pfTtjb25zdCAkbD17bmFtZToiejR1d2FnIixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7b3BhY2l0eTowO2JhY2tncm91bmQ6I2ZmZjt0cmFuc2l0aW9uOmFsbCAuMnM7cGFkZGluZzo2cHggOHB4O2JveC1zaGFkb3c6MHB4IDNweCA4cHggcmdiYSgwLCAxOCwgNDYsIDAuMTIpO2JvcmRlci1yYWRpdXM6NHB4O3RvcDoxMDAlO2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTJweCk7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4OjEifSxXbD17bmFtZToiMTI0MGN2byIsc3R5bGVzOiImJiZ7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuMnM7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46MCAwIDAgYXV0bztwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LXNocmluazowOyY6aG92ZXIgc3BhbntvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgycHgpO319In0sS2w9KGUsdCk9PigwLGQuQUgpKHttYXJnaW5Cb3R0b206IjEycHgiLGdhcDoiMTJweCIsYmFja2dyb3VuZDoiI2ZmZiIscGFkZGluZzp0PyI4cHggNDBweCA4cHggMTJweCI6IjhweCAxMnB4IixkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGJvcmRlclJhZGl1czoiNHB4IiwiJiYmOmhvdmVyIGJ1dHRvbiI6e29wYWNpdHk6MX0sIiYgc3ZnIjp7ZmxleFNocmluazowfSwuLi5lJiZ7cGFkZGluZzoiMTJweCAxNnB4Iixib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDhweCkiLGJvcmRlcjoiMXB4IHNvbGlkICB2YXIoLS1ib3JkZXItY29sb3IsICNEM0RCRTUpIiwiOmZvY3VzIjp7Ym9yZGVyOiIxcHggc29saWQgIHZhcigtLWJvcmRlci1jb2xvciwgI0QzREJFNSkifX19LCIiLCIiKSxHbD17bmFtZToic3FtNDJiIixzdHlsZXM6InRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbiJ9O3ZhciBYbD1lPT57bGV0e25hbWU6dCxleHRlbnNpb246bixvbkZpbGVSZW1vdmU6aSx1cmw6YSxkaXNhYmxlZDpvLHNlbnQ6cn09ZTtjb25zdHtpc05ld1NraW46c309KDAscC5BKSgpO3JldHVybigwLFYuRkQpKCJkaXYiLHtjc3M6S2wocyxyKSxjbGFzc05hbWU6ImlucHV0LWdyb3VwIixjaGlsZHJlbjpbKDAsVi5ZKShYaSx7ZXh0ZW5zaW9uOm59KSwoMCxWLlkpKCJzcGFuIix7Y3NzOkdsLGNoaWxkcmVuOnR9KSwhbyYmKDAsVi5GRCkoImJ1dHRvbiIse2NzczpXbCx0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PmkoYSksY2xhc3NOYW1lOiJtYXRlcmlhbC1pY29ucyByaXBwbGUgIixjaGlsZHJlbjpbKDAsVi5ZKSh1dC5kNyx7fSksKDAsVi5ZKSgic3BhbiIse2NzczokbCxjaGlsZHJlbjooMCx5LnB3KSgiZGVsZXRlIixudWxsLCJEZWxldGUiKX0pXX0pLHImJigwLFYuWSkoImRpdiIse2NzczpUbChzKSxjaGlsZHJlbjooMCxWLlkpKHV0Lm9oLHt9KX0pXX0pfTt2YXIgUWw9ZT0+e2xldHtmaWxlRmllbGRWYWx1ZTp0LGRpc2FibGVkOm4sYWRkRm9ybUZpbGVNZXNzYWdlVmFsdWU6aSxyZW1vdmVGb3JtRmlsZU1lc3NhZ2VWYWx1ZTpvLGZpZWxkTmFtZTpyLHJlcXVpcmVkRXJyb3I6cyxkaXNhYmxlRm9ybVN1Ym1pc3Npb246bCxlbmFibGVGb3JtU3VibWlzc2lvbjpkLHNlbnQ6Yyxjb250YWN0UHJvcGVydHk6dX09ZTtjb25zdFtwLGZdPSgwLGEudXNlU3RhdGUpKFtdKSxbbSxoXT0oMCxhLnVzZVN0YXRlKShudWxsKSxbZyxiXT0oMCxhLnVzZVN0YXRlKShudWxsKSx2PSgwLGEudXNlQ2FsbGJhY2spKChlLHQpPT57aChlKSxiKHQpfSxbXSkseD1udWxsPT09dT8xMDoxLHk9KDAsYS51c2VDYWxsYmFjaykoKCk9PntkKCksZihbXSl9LFtkXSksdz0oMCxhLnVzZU1lbW8pKCgpPT50Lm1hcChlPT4oMCxWLlkpKFhsLHtuYW1lOmUubmFtZSx1cmw6ZS51cmwsZXh0ZW5zaW9uOmUuZXh0ZW5zaW9uLG9uRmlsZVJlbW92ZTpvLGRpc2FibGVkOm4sc2VudDpjfSxlLnVybCkpLFtuLHQsbyxjXSk7cmV0dXJuKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46W3cscC5sZW5ndGg+MCYmKDAsVi5ZKShWbCx7ZmlsZXNUb1VwbG9hZDpwLGhhbmRsZVVwbG9hZGVkRmlsZTppLG9uVXBsb2FkRXJyb3I6dixoYW5kbGVVcGxvYWRGaW5pc2hlZDp5fSksIW4mJnQubGVuZ3RoPHgmJigwLFYuWSkoSGwse29uRmlsZUFkZDplPT57aChudWxsKSxmKGUubWFwKGU9Pih7aWQ6TmwoKSgpLGZpbGVUb1VwbG9hZDplfSkpKSxsKCl9LGZpZWxkTmFtZTpyLGVycm9yOm0sY2F1c2U6ZyxyZXF1aXJlZEVycm9yOnMsbWF4RmlsZXM6eC10Lmxlbmd0aCxkaXNhYmxlZDpCb29sZWFuKHAubGVuZ3RoKX0pXX0pfTtjb25zdCBabD17bmFtZToiYmpuOHdoIixzdHlsZXM6InBvc2l0aW9uOnJlbGF0aXZlIn0sSmw9KGUsdCxuKT0+KDAsZC5BSCkoe3dpZHRoOiIxMDAlIixhcHBlYXJhbmNlOiJub25lIixmb250U2l6ZToiMTVweCIsbGluZUhlaWdodDoiMTlweCIscGFkZGluZzoiOXB4IDM1cHggOXB4IDEycHgiLGJvcmRlcjoibm9uZSIsYm9yZGVyUmFkaXVzOiI2cHgiLGJhY2tncm91bmRDb2xvcjoid2hpdGUiLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLGNvbG9yOiIjMDgwRjFBIiwiOmRpc2FibGVkIjp7b3BhY2l0eToxfSwuLi5lJiZ7Y29sb3I6IiM2NDc0OTEifSwuLi5uJiZ7cGFkZGluZzoiMTJweCAxNnB4Iixib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDhweCkiLGJvcmRlcjoiMXB4IHNvbGlkICB2YXIoLS1ib3JkZXItY29sb3IsICNEM0RCRTUpIiwiOmZvY3VzLCA6YWN0aXZlIjp7Ym9yZGVyOiIxcHggc29saWQgIHZhcigtLWJvcmRlci1jb2xvciwgI0QzREJFNSkifX0sLi4udCYme291dGxpbmU6IjFweCBzb2xpZCAjRTgxMzMyIiwiOmZvY3VzIjp7b3V0bGluZToiMXB4IHNvbGlkICNFODEzMzIifX19LCIiLCIiKSxlZD17bmFtZToiN242ZnNmIixzdHlsZXM6InBvc2l0aW9uOmFic29sdXRlO3RvcDowcHg7Ym90dG9tOjBweDtyaWdodDo4cHg7cG9pbnRlci1ldmVudHM6bm9uZTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7c3Zne2ZpbGw6IzA4MEYxQTt9In07dmFyIHRkPWU9PntsZXR7cGxhY2Vob2xkZXI6dCxvbkNoYW5nZTpuLHZhbHVlOmksb3B0aW9uczphLGhhc0Vycm9yOm89ITEsZGlzYWJsZWQ6cn09ZTtjb25zdHtpc05ld1NraW46c309KDAscC5BKSgpO3JldHVybigwLFYuRkQpKCJkaXYiLHtjc3M6W1psLCIiLCIiXSxjaGlsZHJlbjpbKDAsVi5GRCkoInNlbGVjdCIse2NzczpKbCghaSxvLHMpLHZhbHVlOmksb25DaGFuZ2U6ZT0+bihlLnRhcmdldC52YWx1ZSksZGlzYWJsZWQ6cixjaGlsZHJlbjpbKDAsVi5ZKSgib3B0aW9uIix7dmFsdWU6IiIsc2VsZWN0ZWQ6ITAsZGlzYWJsZWQ6ITAsaGlkZGVuOiEwLGNoaWxkcmVuOnR9KSxhLm1hcChlPT4oMCxWLlkpKCJvcHRpb24iLHt2YWx1ZTplLnZhbHVlLGNoaWxkcmVuOmUudmFsdWV9LGUudmFsdWUpKV19KSwhciYmKDAsVi5ZKSgiZGl2Iix7Y3NzOmVkLGNoaWxkcmVuOigwLFYuWSkodXQueWQse30pfSldfSl9O2NvbnN0IG5kPShlLHQsbik9PigwLGQuQUgpKHtwYWRkaW5nOm4/IjhweCA0MHB4IDhweCAxMnB4IjoiOHB4IDEycHgiLGJvcmRlclJhZGl1czo2LGZvbnRTaXplOjE1LGJvcmRlcjoibm9uZSIsY29sb3I6IiMwODBGMUEiLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLCImOjpwbGFjZWhvbGRlciI6e2NvbG9yOiIjNjQ3NDkxIn0sIiY6ZGlzYWJsZWQiOntiYWNrZ3JvdW5kOiIjZmZmIn0sLi4udCYme3BhZGRpbmc6IjEycHggMTZweCIsYm9yZGVyUmFkaXVzOiJ2YXIoLS1yYWRpdXMtY29tcG9uZW50LCA4cHgpIixib3JkZXI6IjFweCBzb2xpZCAgdmFyKC0tYm9yZGVyLWNvbG9yLCAjRDNEQkU1KSIsIiY6Zm9jdXMsICY6YWN0aXZlIjp7Ym9yZGVyOiIxcHggc29saWQgIHZhcigtLWJvcmRlci1jb2xvciwgI0QzREJFNSkifX0sLi4uZSYme291dGxpbmU6IjFweCBzb2xpZCAjRTgxMzMyIiwiJjpmb2N1cywgJjphY3RpdmUiOntvdXRsaW5lOiIxcHggc29saWQgI0U4MTMzMiJ9fX0sIiIsIiIpLGlkPShlLHQpPT4oMCxkLkFIKSh7Y29sb3I6IiNFODEzMzIiLGZvbnRTaXplOjEyLGxpbmVIZWlnaHQ6IjE2cHgiLGRpc3BsYXk6ImlubGluZS1ibG9jayIsLi4uZSYmdCYme21hcmdpbjoiMTJweCAwIn19LCIiLCIiKSxhZD0oMCxkLkFIKSh7bWFyZ2luQm90dG9tOjEyLGRpc3BsYXk6ImJsb2NrIixtYXJnaW5Ub3A6LTMwLHBhZGRpbmdUb3A6MzB9LCIiLCIiKSxvZD17bmFtZToiMXlrb3dlZiIsc3R5bGVzOiJtYXJnaW4tYm90dG9tOjAifSxyZD0oZSx0KT0+KDAsZC5BSCkoe2JvcmRlcjoiMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvciwgI0QzREJFNSkiLHBhZGRpbmc6IjJweCAxNHB4IixoZWlnaHQ6MzQsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixmb250U2l6ZToxNCxib3JkZXJSYWRpdXM6MjQsZmxleFNocmluazowLCImOmRpc2FibGVkIjp7Y29sb3I6IiNBQ0I4Q0IifSxzdmc6e21hcmdpblJpZ2h0OjcsZmlsbDoiI0FDQjhDQiIsaGVpZ2h0OjE5LHdpZHRoOiJhdXRvIixtYXJnaW5MZWZ0Oi0yfSwiLmxvYWRlci1pY29uLmNpcmN1bGFyIjp7cG9zaXRpb246InN0YXRpYyIsY2lyY2xlOntzdHJva2U6ZX19LC4uLnQmJntib3JkZXJSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDhweCkiLGJhY2tncm91bmQ6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IpIixjb2xvcjoidmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1jb250cmFzdCkiLGJvcmRlcjoibm9uZSIscGFkZGluZzoiMTJweCIsd2lkdGg6IjEwMCUiLGhlaWdodDoidW5zZXQiLCI6ZGlzYWJsZWQiOntiYWNrZ3JvdW5kOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKSIsY29sb3I6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItY29udHJhc3QpIixzdmc6e2ZpbGw6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItY29udHJhc3QpIn19fX0sIiIsIiIpLHNkPWU9PigwLGQuQUgpKHtkaXNwbGF5OiJmbGV4IixqdXN0aWZ5Q29udGVudDoic3BhY2UtYmV0d2VlbiIsZ2FwOjMwLGFsaWduSXRlbXM6ImNlbnRlciIsLi4uZSYme2dhcDowLGZsZXhEaXJlY3Rpb246ImNvbHVtbiJ9fSwiIiwiIiksbGQ9e25hbWU6IjNsdW81bSIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiMwODBGMUE7cG9zaXRpb246cmVsYXRpdmU7c3Zne2Rpc3BsYXk6bm9uZTt9aW5wdXQ6Y2hlY2tlZCArIHN2Z3tkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjE0cHg7bGVmdDoycHg7fSJ9LGRkPShlLHQpPT4oMCxkLkFIKSh7YXBwZWFyYW5jZToibm9uZSIsd2lkdGg6MTgsaGVpZ2h0OjE4LGJvcmRlclJhZGl1czo0LGJvcmRlcjoiMnB4IHNvbGlkICM2NDc0OTEiLG1hcmdpbjoiMCAxMnB4IDAgMCIsZmxleFNocmluazowLCImOmZvY3VzLCAmOmFjdGl2ZSI6e2JvcmRlcjoiMnB4IHNvbGlkICM2NDc0OTEiLGJveFNoYWRvdzpgMCAwIDJweCAwICR7ZX1gfSwiJjpjaGVja2VkIjp7Ym9yZGVyQ29sb3I6ZSxiYWNrZ3JvdW5kQ29sb3I6ZX0sLi4udCYme2JvcmRlckNvbG9yOiIjRTgxMzMyIn19LCIiLCIiKSxjZD1lPT4oMCxkLkFIKSh7bWF4V2lkdGg6ZT8iMzAwcHgiOiJub25lIn0sIiIsIiIpO3ZhciB1ZD1lPT57bGV0e2Zvcm06dCxjb250ZW50Om4saWQ6aX09ZTtjb25zdHtmb3JtVmFsdWVzOm8sZm9ybVN1Ym1pdHRpbmc6cyxmb3JtVmFsaWRpdHlTdGF0ZTpsLGZvcm1SZWY6ZCx0aXRsZVJlZjpjLGhhbmRsZVN1Ym1pdDp1LGhhbmRsZUNoYW5nZTpmLGhhc0Vycm9yczptLHNlbnQ6aCxkaXNhYmxlZDpnLGVuYWJsZUZvcm1TdWJtaXNzaW9uOmIsZGlzYWJsZUZvcm1TdWJtaXNzaW9uOnYsaXNTdWJtaXNzaW9uRGlzYWJsZWQ6eCxyZW1vdmVJdGVtRnJvbUFycmF5Rm9ybUZpZWxkOnksYWRkSXRlbVRvQXJyYXlGb3JtRmllbGQ6d309RGwoe2Zvcm06dCxtZXNzYWdlSWQ6aX0pLGs9KDAsci5kNCkoQy5mTykse2lzTmV3U2tpbjpBfT0oMCxwLkEpKCksRT1odChBKSxTPSgwLGEudXNlQ2FsbGJhY2spKGU9Pntjb25zdCB0PWxbZS5pZF0hPT1rbC5WQUxJRCxuPW9bZS5pZF0saT17cGxhY2Vob2xkZXI6ZS5uYW1lLGNzczpbbmQodCxBLGgpLEUudGV4dDE0XSxkaXNhYmxlZDpnLHJlYWRPbmx5OmgsdmFsdWU6U3RyaW5nKG4pLG9uQ2hhbmdlOnQ9PmYoZS5pZCx0LnRhcmdldC52YWx1ZSl9O2xldCBhPW51bGw7c3dpdGNoKGUudHlwZSl7Y2FzZSB0dC5Wdy5DSEVDS0JPWDphPSgwLFYuRkQpKCJsYWJlbCIse2NzczpsZCxjaGlsZHJlbjpbKDAsVi5ZKSgiaW5wdXQiLHtjc3M6ZGQoa1szXSx0KSxkaXNhYmxlZDpofHxnLGNoZWNrZWQ6Qm9vbGVhbihuKSx0eXBlOiJjaGVja2JveCIsb25DaGFuZ2U6dD0+ZihlLmlkLHQudGFyZ2V0LmNoZWNrZWQpfSksKDAsVi5ZKSh1dC5vaCx7fSksZS5uYW1lXX0pO2JyZWFrO2Nhc2UgdHQuVncuRU1BSUw6YT0oMCxWLlkpKCJpbnB1dCIsey4uLmksdHlwZToiZW1haWwifSk7YnJlYWs7Y2FzZSB0dC5Wdy5OQU1FOmE9KDAsVi5ZKSgiaW5wdXQiLHsuLi5pLHR5cGU6InRleHQifSk7YnJlYWs7Y2FzZSB0dC5Wdy5MT05HX1RFWFQ6YT0oMCxWLlkpKCJ0ZXh0YXJlYSIsey4uLmksb25DaGFuZ2U6dD0+ZihlLmlkLHQudGFyZ2V0LnZhbHVlKX0pO2JyZWFrO2Nhc2UgdHQuVncuVEVYVDphPSgwLFYuWSkoImlucHV0Iix7Li4uaSx0eXBlOiJ0ZXh0In0pO2JyZWFrO2Nhc2UgdHQuVncuTlVNQkVSOmE9KDAsVi5ZKSgiaW5wdXQiLHsuLi5pLHR5cGU6Im51bWJlciJ9KTticmVhaztjYXNlIHR0LlZ3LlVSTDphPSgwLFYuWSkoImlucHV0Iix7Li4uaSx0eXBlOiJ0ZXh0In0pO2JyZWFrO2Nhc2UgdHQuVncuUEhPTkU6YT0oMCxWLlkpKCJpbnB1dCIsey4uLmksdHlwZToidGVsIn0pO2JyZWFrO2Nhc2UgdHQuVncuU0VMRUNUOmE9KDAsVi5ZKSh0ZCx7cGxhY2Vob2xkZXI6ZS5uYW1lLGRpc2FibGVkOmh8fGcsdmFsdWU6U3RyaW5nKG4pLG9uQ2hhbmdlOnQ9PmYoZS5pZCx0KSxoYXNFcnJvcjp0LG9wdGlvbnM6ZS5jaG9pY2VzPy5tYXAoZT0+KHt2YWx1ZTplLm5hbWV9KSl8fFtdfSk7YnJlYWs7Y2FzZSB0dC5Wdy5GSUxFOnJldHVybiJvYmplY3QiPT10eXBlb2Ygbj8oMCxWLlkpKFFsLHtmaWxlRmllbGRWYWx1ZTpuLGRpc2FibGVkOmh8fGcsYWRkRm9ybUZpbGVNZXNzYWdlVmFsdWU6dD0+dyhlLmlkLHQpLHJlbW92ZUZvcm1GaWxlTWVzc2FnZVZhbHVlOnQ9Pnt5KGUuaWQsInVybCIsdCl9LGVuYWJsZUZvcm1TdWJtaXNzaW9uOmIsZGlzYWJsZUZvcm1TdWJtaXNzaW9uOnYscmVxdWlyZWRFcnJvcjpsW2UuaWRdPT09a2wuRU1QVFksZmllbGROYW1lOmUubmFtZSxzZW50OmgsY29udGFjdFByb3BlcnR5OmUuY29udGFjdF9wcm9wZXJ0eX0sZS5pZCk6bnVsbDtjYXNlIHR0LlZ3Lk1VTFRJU0VMRUNUOmRlZmF1bHQ6cmV0dXJuIG51bGx9cmV0dXJuKDAsVi5ZKShfbCx7dHlwZTplLnR5cGUsdmFsaWRpdHk6bFtlLmlkXSxzaG91bGREaXNwbGF5U3VjY2Vzc0ljb246ZS50eXBlIT09dHQuVncuQ0hFQ0tCT1gmJmgsY2hpbGRyZW46YX0sZS5pZCl9LFtsLG8sQSxoLEUudGV4dDE0LGcsZixrLGIsdix3LHldKTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IgbWVzc2FnZS1mb3JtIixjc3M6Y2QoQSksY2hpbGRyZW46WygwLFYuWSkoInNwYW4iLHtjc3M6YWQscmVmOmMsY2hpbGRyZW46bn0pLCgwLFYuRkQpKCJmb3JtIix7b25TdWJtaXQ6dSxyZWY6ZCxub1ZhbGlkYXRlOiEwLGNzczpvZCxjaGlsZHJlbjpbdC5tYXAoUyksKDAsVi5GRCkoImRpdiIse2NzczpzZChBKSxjaGlsZHJlbjpbKDAsVi5ZKSgic3BhbiIse2NzczppZChBLG0pLGNoaWxkcmVuOm0mJigwLFYuWSkoT24se3ZhbHVlOiJmaWVsZHNOb3RGaWxsZWRDb3JyZWN0bHkiLGZhbGxiYWNrOiJTb21lIGZpZWxkcyBhcmUgbm90IGZpbGxlZCBvdXQgY29ycmVjdGx5LiBQbGVhc2UgY2hlY2suIn0pfSksaD8oMCxWLkZEKSgiYnV0dG9uIix7Y3NzOnJkKGtbM10sQSksZGlzYWJsZWQ6ITAsdHlwZToic3VibWl0IixjaGlsZHJlbjpbKDAsVi5ZKSh1dC5vaCx7fSksKDAsVi5ZKShPbix7dmFsdWU6InNlbnQiLGZhbGxiYWNrOiJTZW50In0pXX0pOigwLFYuWSkoImJ1dHRvbiIse2NzczpyZChrWzNdLEEpLGRpc2FibGVkOm18fHN8fGd8fHgsdHlwZToic3VibWl0IixjaGlsZHJlbjpzPygwLFYuWSkodXQuYUgse30pOigwLFYuWSkoT24se3ZhbHVlOiJzdWJtaXQiLGZhbGxiYWNrOiJTdWJtaXQifSl9KV19KV19KV19KX07Y29uc3QgcGQ9e25hbWU6IjUyYjFvYyIsc3R5bGVzOiJwYWRkaW5nOjBweCJ9LGZkPXtuYW1lOiIxaTZoNWZ6IixzdHlsZXM6InBhZGRpbmc6MTBweCAxNnB4In0sbWQ9e25hbWU6ImI5ODM0NiIsc3R5bGVzOiJmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE2cHgifSxoZD17bmFtZToiMWwzZjcybCIsc3R5bGVzOiJmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxNXB4O2NvbG9yOiMwMDEyMkU7bWFyZ2luLXRvcDo2cHg7d2hpdGUtc3BhY2U6cHJlLWxpbmUifSxnZD17bmFtZToieWprdmpyIixzdHlsZXM6ImZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE4cHg7bGV0dGVyLXNwYWNpbmc6LTAuMTVweDtjb2xvcjojMDAxMjJFO29wYWNpdHk6MC41O21hcmdpbi10b3A6NHB4In0sYmQ9e25hbWU6IjFucmltNXciLHN0eWxlczoiZm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjBweDtjb2xvcjp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTtsZXR0ZXItc3BhY2luZzotMC4xN3B4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tb3BlcmF0b3ItbWVzc2FnZSwgd2hpdGUpO3dpZHRoOjEwMCU7cGFkZGluZzo4cHggMTZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLW9wZXJhdG9yLW1lc3NhZ2UsICNFOUVDRjApO2JvcmRlci10b3A6bm9uZTsmOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCAyMHB4KTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCAyMHB4KTt9LmdyaWQtbGF5b3V0ICY6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9b3V0bGluZTpub25lIn07dmFyIHZkPWU9PntsZXR7dGl0bGU6dCxzdWJ0aXRsZTpuLGJ1dHRvbnM6aX09ZTtjb25zdCBhPSgwLHIud0EpKCkse2lzTmV3U2tpbjpvfT0oMCxwLkEpKCkscz1odChvKTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IiLGNzczpwZCxjaGlsZHJlbjpbKDAsVi5GRCkoImRpdiIse2NzczpmZCxjaGlsZHJlbjpbKDAsVi5ZKSgicCIse2NzczptZCxjaGlsZHJlbjp0fSksKDAsVi5ZKSgicCIse2NzczpoZCxjaGlsZHJlbjpufSksKDAsVi5ZKSgicCIse2NzczpnZCxjaGlsZHJlbjooKCk9Pnt0cnl7cmV0dXJuIG5ldyBVUkwoaVswXT8udXJsfHwiIikuaG9zdG5hbWUucmVwbGFjZSgid3d3LiIsIiIpfWNhdGNoe3JldHVybiIifX0pKCl9KV19KSxpLm1hcChlPT4oMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNzczpbYmQscy50ZXh0MTQsIiIsIiJdLG9uQ2xpY2s6KCk9PihlPT57InVybCI9PT1lLnR5cGUmJmUudXJsJiYoYSgoMCxrLlFUJCkoKDAsZi5JRikoZS51cmwpKSksYSgoMCxrLlJBNykoZS50aXRsZSxlLnBheWxvYWQpKSxhKCgwLGsucE82KShsdC5YLmlmcmFtZU1vZGFsQnV0dG9uQ2xpY2tlZCkpKX0pKGUpLGNoaWxkcmVuOmUudGl0bGV9LGUudGl0bGUpKV19KX07Y29uc3QgeGQ9YS5sYXp5KCgpPT5uLmUoNDAyKS50aGVuKG4uYmluZChuLDg5NTYpKSk7dmFyIHlkPWU9PigwLFYuWSkoYS5TdXNwZW5zZSx7ZmFsbGJhY2s6bnVsbCxjaGlsZHJlbjooMCxWLlkpKHhkLHtxdWVzdGlvbk1lc3NhZ2VJZDplLnF1ZXN0aW9uTWVzc2FnZUlkfSl9KSx3ZD1uKDE0Nik7Y29uc3Qga2Q9ZT0+e2xldHtxdWVzdGlvbk1lc3NhZ2VJZDp0LG1lc3NhZ2VJZDpuLGFpQXNzaXN0YW50QWN0aW9uTG9nSWQ6aX09ZTtjb25zdCBvPSgwLGEudXNlUmVmKShudWxsKSxyPSgwLGEudXNlUmVmKSgpOygwLGEudXNlRWZmZWN0KSgoKT0+e3dpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoInJldmlld1NvdXJjZXNEaXNwbGF5ZWQiKX0sW10pO2NvbnN0IHM9KDAsYS51c2VDYWxsYmFjaykoKCk9Pnt3aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJyZXZpZXdTb3VyY2VzQ2xpY2tlZCIse3F1ZXN0aW9uTWVzc2FnZUlkOnQsbWVzc2FnZUlkOm4sYWlBc3Npc3RhbnRBY3Rpb25Mb2dJZDppfSl9LFt0LG4saV0pO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+KHIuY3VycmVudD1zZXRUaW1lb3V0KCgpPT57by5jdXJyZW50Py5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCJ9KX0sMTUwKSwoKT0+e3IuY3VycmVudCYmY2xlYXJUaW1lb3V0KHIuY3VycmVudCl9KSxbXSksKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yIHRpbWVzdGFtcC12aXNpYmxlIixjc3M6d2QuYixjaGlsZHJlbjpbKDAsVi5ZKSh1dC5IMCx7fSksKDAsVi5GRCkoImRpdiIse2NoaWxkcmVuOlsoMCxWLlkpKCJwIix7Y2hpbGRyZW46KDAseS5wdykoInJldmlld1NvdXJjZXNEZXNjcmlwdGlvbiIsbnVsbCwiQUkgcmVzcG9uc2UgYmFzZWQgb24geW91ciBkYXRhIHNvdXJjZXMuIil9KSwoMCxWLlkpKCJidXR0b24iLHtjc3M6d2QuVix0eXBlOiJidXR0b24iLG9uQ2xpY2s6cyxjaGlsZHJlbjooMCx5LnB3KSgicmV2aWV3U291cmNlcyIsbnVsbCwiUmV2aWV3IHNvdXJjZXMiKX0pXX0pLCgwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2VUaW1lc3RhbXAiLHJlZjpvLGNoaWxkcmVuOlsoMCxWLlkpKHV0LmJNLHt9KSwoMCx5LnB3KSgib25seVZpc2libGVUb1lvdSIsbnVsbCwiT25seSB2aXNpYmxlIHRvIHlvdSIpXX0pXX0pfTt2YXIgQWQ9KDAsYS5tZW1vKShrZCk7dmFyIENkPWU9PigwLFYuWSkoYS5TdXNwZW5zZSx7ZmFsbGJhY2s6bnVsbCxjaGlsZHJlbjooMCxWLlkpKEFkLHtxdWVzdGlvbk1lc3NhZ2VJZDplLnF1ZXN0aW9uTWVzc2FnZUlkLG1lc3NhZ2VJZDplLm1lc3NhZ2VJZCxhaUFzc2lzdGFudEFjdGlvbkxvZ0lkOmUuYWlBc3Npc3RhbnRBY3Rpb25Mb2dJZH0pfSk7dmFyIEVkPWU9PntsZXR7Y29udGVudDp0LG9wZXJhdG9yX2lkOm4sdGltZV9zZW50Oml9PWU7Y29uc3Qgbz0oMCxyLndBKSgpLFtzLGxdPSgwLGEudXNlU3RhdGUpKCExKSxkPSgwLGEudXNlUmVmKShudWxsKSxjPSgwLGEudXNlUmVmKShudWxsKSx1PVhvKHQpOygwLGEudXNlRWZmZWN0KSgoKT0+e0lyKHtzcGFuUmVmOmQsd3JhcHBlclJlZjpjLG1pbldpZHRoOnU/MjQ4OnZvaWQgMH0pfSxbdV0pO2NvbnN0IHA9SW4odCk7cmV0dXJuKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yICIrKHM/InRpbWVzdGFtcC12aXNpYmxlIjoiIiksb25DbGljazplPT57Y29uc3R7dGFyZ2V0OnR9PWU7IU5yKHQpfHx0LmNsb3Nlc3QoImEiKXx8dC5jbGFzc0xpc3QuY29udGFpbnMoImVtb2ppIik/bChlPT4hZSk6bygoMCxrLnFLbikodC5zcmMpKX0scmVmOmMsY2hpbGRyZW46WygwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6Im1lc3NhZ2UtY29udGVudCBtZXNzYWdlLWNvbnRlbnQtLW1hcmtkb3duIixkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOnB9LHJlZjpkfSksdSYmKDAsVi5ZKSh0bCx7dXJsOnV9KSwoMCxWLlkpKF9pLHtpbjpzLGNoaWxkcmVuOigwLFYuWSkoJHMse3RpbWU6aSxvcGVyYXRvcklkOm59KX0pXX0pfTt2YXIgU2Q9ZT0+e2xldHtwcmVDaGF0RmllbGRzOnR9PWU7Y29uc3Qgbj0oMCxyLmQ0KShlPT5lLnZpc2l0b3IpO3JldHVybigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciBwcmUtY2hhdCIsY2hpbGRyZW46WygwLFYuWSkoT24se3ZhbHVlOiJwcmVmb3JtTWVzc2FnZSIsZW1vamlmeTohMCxsaW5raWZ5OiEwfSksdC5tYXAoZT0+KDAsVi5ZKSh2aSx7dHlwZTplLnR5cGUscGxhY2Vob2xkZXI6ZS5wbGFjZWhvbGRlcix2YWx1ZTpuW2UudHlwZV0sZGlzYWJsZWQ6ITB9LGUudHlwZSkpXX0pfTtjb25zdCBEZD17bmFtZToiYXFhM205IixzdHlsZXM6IiYme3BhZGRpbmc6MTJweCAxNnB4ICFpbXBvcnRhbnQ7Jjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IpO2NvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItY29udHJhc3QpO3RleHQtZGVjb3JhdGlvbjpub25lICFpbXBvcnRhbnQ7fX0ifTt2YXIgWWQ9ZT0+e2xldHtxdWlja1JlcGx5OnQsb25CdXR0b25DbGljazpuLG1ldGFkYXRhOml9PWU7Y29uc3Qgbz0oMCxhLnVzZVJlZikobnVsbCkscj0oMCxhLnVzZVJlZikobnVsbCkscz0oMCxoLkFMKSgpLHtpc05ld1NraW46bH09KDAscC5BKSgpLGQ9aHQobCksYz0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e2lmKG8uY3VycmVudCYmci5jdXJyZW50KXtjb25zdCBlPWw/Mzg6MzQ7by5jdXJyZW50LnN0eWxlLndpZHRoPWAke3IuY3VycmVudC5vZmZzZXRXaWR0aCtlfXB4YCxyLmN1cnJlbnQuY2xhc3NMaXN0LmFkZCgibGluZS1jbGFtcCIpfX0sW2xdKTtyZXR1cm4oMCxhLnVzZUVmZmVjdCkoKCk9PntzJiZzLnJlcXVlc3RBbmltYXRpb25GcmFtZShjKX0sW3MsY10pLCgwLFYuWSkoImJ1dHRvbiIse3JlZjpvLHR5cGU6ImJ1dHRvbiIsdGl0bGU6dC50aXRsZSxvbkNsaWNrOigpPT57bih0LGkpfSxjc3M6bD9EZDp2b2lkIDAsY2hpbGRyZW46KDAsVi5ZKSgic3BhbiIse3JlZjpyLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6X24odC50aXRsZSl9LGNzczpkLnRleHQxNH0pfSl9O2NvbnN0IFRkPWU9PntsZXR7cXVpY2tSZXBsaWVzOnQsbWVzc2FnZUlkOm4sZGlzYWJsZWQ6aT0hMSxtZXRhZGF0YTpvfT1lO2NvbnN0IHM9KDAsci53QSkoKSxsPSgwLHIuZDQpKGU9PigwLEMubVYpKGUsbikpOygwLGEudXNlRWZmZWN0KSgoKT0+e2x8fGl8fHMoKDAsay5KN2cpKG4pKX0sW2kscyxsLG5dKTtjb25zdCBkPSgwLGEudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKGUpe2xldHtwYXlsb2FkOnQsdGl0bGU6bix0eXBlOml9PWUse2lzX2FpX2Fzc2lzdGFudF90YXNrOmF9PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4gcygoMCxrLlJBNykobix0LHtpc19haV9hc3Npc3RhbnRfdGFzazphfSkpLHMoKDAsay5wTzYpKCJib3QiIT09aT9sdC5YLnF1aWNrUmVwbHlDbGlja2VkOmx0LlguYm90U3RhcnRlZEZyb21Cb3RzTWVudSkpLCEwfSxbc10pO3JldHVybiBpfHwhbD9udWxsOigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToiYnV0dG9uLXdyYXBwZXIiLGNoaWxkcmVuOnQubWFwKGU9PigwLFYuWSkoWWQse3F1aWNrUmVwbHk6ZSxvbkJ1dHRvbkNsaWNrOmQsbWV0YWRhdGE6b30sYCR7ZS50aXRsZX0ke2UucGF5bG9hZH1gKSl9KX07dmFyIEZkPSgwLGEubWVtbykoVGQpO3ZhciBJZD1lPT57bGV0e2Rpc2FibGVkOnQsdHlwZTpuLGlkOmksY29udGVudDpvfT1lO2NvbnN0IHM9KDAsci53QSkoKSxsPSgwLHIuZDQpKGU9PmUuc2VuZFZpc2l0b3JNZXNzYWdlRmxhZyksW2QsY109KDAsYS51c2VTdGF0ZSkoITEpLFt1LHBdPSgwLGEudXNlU3RhdGUpKCIiKSxmPW49PT10dC5Hby5SQVRFX0NPTU1FTlRfR09PRDsoMCxhLnVzZUVmZmVjdCkoKCk9PnshdCYmbCYmZCYmcygoMCxrLkZCVykoaSx1KSl9LFt1LHQscyxpLGQsbF0pO3JldHVybigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciByYXRlLWNvbW1lbnQiLGNoaWxkcmVuOlsoMCxWLlkpKCJzcGFuIix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpGbigoMCx5LnB3KShmPyJjb21tZW50Rm9yR29vZFJhdGluZyI6ImNvbW1lbnRGb3JCYWRSYXRpbmciLG51bGwsZj8iVGhhbmsgeW91IGZvciB5b3VyIHJhdGUgXHVkODNkXHVkZTBkIFdvdWxkIHlvdSBsaWtlIHRvIGxlYXZlIGEgY29tbWVudD8iOiJUaGFuayB5b3UgZm9yIHlvdXIgcmF0ZSBcdWQ4M2RcdWRlMjUgV291bGQgeW91IGxpa2UgdG8gbGVhdmUgYSBjb21tZW50PyIpKX19KSwoMCxWLlkpKExuLHt0eXBlOiJ0ZXh0IixwbGFjZWhvbGRlcjoidHlwZU9wdGlvbmFsIixvbkNoYW5nZTpwLG9uS2V5RG93bjplPT4hKDEzIT09ZXx8IWQpJiYocygoMCxrLnpycykoITApKSwoMCxoLnlHKSgpLCEwKSxpc1ZhbGlkQ2FsbGJhY2s6Yyx2YWx1ZTp0P286bnVsbCxkaXNhYmxlZDp0fSldfSl9O3ZhciBfZD1lPT57Y29uc3QgdD0oMCxyLndBKSgpLHtpc05ld1NraW46bn09KDAscC5BKSgpLGk9aHQobiksYT0oMCxyLmQ0KShDLnRmKSxvPW49PntpZihhKXQoKDAsay5TNzkpKCgwLHkucHcpKCJkaXNhYmxlZFRleHRJbnB1dFBsYWNlaG9sZGVyIixudWxsLCJDaG9vc2Ugb25lIG9mIHRoZSBvcHRpb25zIGFib3ZlIFx1MjYxZFx1ZmUwZiIpKSk7ZWxzZXtjb25zdCBpPW4/KDAseS5wdykoInJhdGVTYXRpc2ZpZWQiLG51bGwsIlllcywgSSBkaWQhIik6KDAseS5wdykoInJhdGVEaXNzYXRpc2ZpZWQiLG51bGwsIk5vLiBJXHUyMDE5bSBub3Qgc2F0aXNmaWVkLiIpO3QoKDAsay5HOGMpKGksITEpKSx0KCgwLGsuV0JXKShuKSksdCgoMCxrLko3ZykoZS5pZCkpfX07cmV0dXJuKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yIG1lc3NhZ2Utd2l0aC1idXR0b25zICIrKGUuZGlzYWJsZWQ/ImJ1dHRvbnMtaGlkZGVuIjoiIiksY2hpbGRyZW46WygwLFYuWSkoInNwYW4iLHtjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToicmF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2UifSl9KSwhZS5kaXNhYmxlZCYmKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToiYnV0dG9uLXdyYXBwZXIiLGNoaWxkcmVuOlsoMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9Pm8oITApLGNoaWxkcmVuOigwLFYuWSkoInNwYW4iLHtjc3M6aS50ZXh0MTQsY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6InJhdGVTYXRpc2ZpZWQifSl9KX0pLCgwLFYuWSkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+byghMSksY2hpbGRyZW46KDAsVi5ZKSgic3BhbiIse2NzczppLnRleHQxNCxjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToicmF0ZURpc3NhdGlzZmllZCJ9KX0pfSldfSldfSl9O3ZhciBNZD1lPT57bGV0e2lkOnQsdGl0bGU6bixpbWFnZVVybDppLHByaWNlOm8sY3VycmVuY3k6cyx2YXJpYW50czpsLHVybDpkLGJ1dHRvblBheWxvYWQ6YyxjaGF0Qm90SWQ6dSxpc0FkZFRvQ2FydEVuYWJsZWQ6bSxtZXNzYWdlSWQ6aCx2YXJpYW50SWQ6Zyxpc0ZseU1lc3NhZ2U6Yn09ZTtjb25zdCB4PSgwLHIud0EpKCksdz0oMCxyLmQ0KShDLk55KSxFPWAke2h9XyR7dH1gLFM9KDAsZi5JRikoZCksRD1sLmxlbmd0aDw9MSxZPSgwLGEudXNlUmVmKSgpLFQ9KDAsYS51c2VSZWYpKCgwLEEudnUpKFpvKSkse2lzTmV3U2tpbjpGfT0oMCxwLkEpKCksST1odChGKSxfPVFvKHMpLE09KDAsYS51c2VDYWxsYmFjaykoKCk9Pnt4KCgwLGsuQzJfKSh7cHJvZHVjdElkOnQsY2hhdEJvdElkOnUsY3RhOiJhZGRfdG9fY2FydCIscHJpY2U6byxjdXJyZW5jeTpzfSkpfSxbeCx0LHUsbyxzXSksTj0oMCxhLnVzZUNhbGxiYWNrKShhc3luYygpPT57aWYoeCgoMCxrLlJBNykoYCR7bn0gJnJhcnI7ICR7KDAseS5wdykoInJlY29tbWVuZFByb2R1Y3RBZGRUb0NhcnQiLG51bGwsIkFkZCB0byBjYXJ0Iil9YCxjKSksKDAsZi5NSSkoKSlyZXR1cm4gTSgpLCEwO3goKDAsay5wTzYpKGx0LlgucHJvZHVjdFJlY29tbWVuZGF0aW9uQWRkVG9DYXJ0Q2xpY2tlZCkpO3RyeXtjb25zdCBlPWF3YWl0KDAsdHIuSWwpKGcpO3JldHVybiBlLm9rPyhNKCksITApOigoMCx2LnNRKSgiU2hvcGlmeSBhZGQgdG8gY2FydCByZXF1ZXN0IGZhaWxlZCIse21lc3NhZ2U6ZS5zdGF0dXNUZXh0fSksITEpfWNhdGNoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRXJyb3ImJigwLHYuc1EpKCJTaG9waWZ5IGFkZCB0byBjYXJ0IHJlcXVlc3QgZmFpbGVkIix7bWVzc2FnZTplLm1lc3NhZ2V9KSwhMX19LFt4LE0sYyxnLG5dKSxPPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57eCgoMCxrLlJBNykoYCR7bn0gJnJhcnI7ICR7KDAseS5wdykoInJlY29tbWVuZFByb2R1Y3RMZWFybk1vcmUiLG51bGwsIkxlYXJuIG1vcmUiKX1gLGMpKSwoMCxmLk1JKSgpfHwoeCgoMCxrLkMyXykoe3Byb2R1Y3RJZDp0LGNoYXRCb3RJZDp1LGN0YToidmlld19kZXRhaWxzIixwcmljZTpvLGN1cnJlbmN5OnN9KSkseCgoMCxrLnBPNikobHQuWC5wcm9kdWN0UmVjb21tZW5kYXRpb25MZWFybk1vcmVDbGlja2VkKSkpfSxbYyx1LHgsdCxuLG8sc10pLFI9YXN5bmMoKT0+e3RyeXtpZigtMT09PWQuaW5kZXhPZigiOi8vIikmJndpbmRvdy50b3Ape2F3YWl0KDAsQS54MikoWm8sRSl8fE8oKSwoMCxmLkhZKShkKXx8d2luZG93LnRvcC5sb2NhdGlvbi5hc3NpZ24oZCl9ZWxzZSBPKCksd2luZG93Lm9wZW4oUyl9Y2F0Y2h7TygpLHdpbmRvdy5vcGVuKFMpfX07KDAsYS51c2VFZmZlY3QpKCgpPT57VC5jdXJyZW50PT09RSYmKFQuY3VycmVudD12b2lkIDAsKDAsQS5sRSkoWm8pLE8oKSl9LFtPLEVdKSwoMCxhLnVzZUVmZmVjdCkoKCk9PigpPT57Y2xlYXJUaW1lb3V0KFkuY3VycmVudCl9LFtdKTtjb25zdCBqPSgwLFYuWSkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY3NzOnhyLmxpbmtCdXR0b24sb25DbGljazpSLGNoaWxkcmVuOigwLFYuWSkoT24se3ZhbHVlOiJyZWNvbW1lbmRQcm9kdWN0TGVhcm5Nb3JlIixmYWxsYmFjazoiTGVhcm4gbW9yZSJ9KX0pO3JldHVybigwLFYuRkQpKCJkaXYiLHtjc3M6eHIuY29udGFpbmVyLGNoaWxkcmVuOltpJiYoMCxWLlkpKCJpbWciLHtzcmM6aSxhbHQ6bixjc3M6eHIuaW1hZ2V9KSwoMCxWLkZEKSgiZGl2Iix7Y3NzOnhyLmNvbnRlbnRDb250YWluZXIsY2hpbGRyZW46WygwLFYuRkQpKCJkaXYiLHtjc3M6eHIudGV4dEFuZFByaWNlc0NvbnRhaW5lcixjaGlsZHJlbjpbKDAsVi5ZKSgicCIse2NzczpbeHIuZ2V0VGl0bGVUZXh0KHcpLEkudGV4dDE0TWVkaXVtLCIiLCIiXSxjaGlsZHJlbjpufSksXyYmKDAsVi5ZKSgicCIse2NzczpbeHIucHJpY2VUZXh0LEkudGV4dDE0TWVkaXVtLCIiLCIiXSxjaGlsZHJlbjpfLmZvcm1hdChvLzEwMCl9KV19KSwoMCxWLlkpKCJkaXYiLHtjc3M6eHIuYnV0dG9uc0NvbnRhaW5lcixjaGlsZHJlbjpEPygwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKHVyLHtkaXNwbGF5ZWRWYXJpYW50SWQ6ZyxtZXNzYWdlSWQ6aCxkaXNhYmxlZDohbSxvbkFkZFRvQ2FydDpOLG9uVmlld0RldGFpbHNDbGljazpSLGlzRmx5TWVzc2FnZTpifSksal19KTpqfSldfSldfSl9O2NvbnN0IE5kPSgwLGQuaTcpKHsiMCUiOnt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoNTAlKSIsb3BhY2l0eTowfSwiMTAwJSI6e3RyYW5zZm9ybToidHJhbnNsYXRlWCgwKSIsb3BhY2l0eToxfX0pLE9kPXtuYW1lOiIxOHVxYXloIixzdHlsZXM6Im1hcmdpbi1ib3R0b206MTZweCJ9LFJkPSgwLGQuQUgpKHt3aWxsQ2hhbmdlOiJ0cmFuc2Zvcm0sIG9wYWNpdHkiLG9wYWNpdHk6MCxhbmltYXRpb246YCR7TmR9IC41cyBlYXNlLW91dCBmb3J3YXJkc2B9LCIiLCIiKTt2YXIgamQ9ZT0+e2xldHt0aXRsZTp0LHByb2R1Y3RzOm4sYnV0dG9uUGF5bG9hZDppLGNoYXRCb3RJZDphLGlzRmx5TWVzc2FnZTpvLG1lc3NhZ2VJZDpyfT1lO2NvbnN0IHM9bi5ldmVyeShlPT4hZS5pbWFnZVVybCksbD1uLmZpbHRlcihlPT5lLnZhcmlhbnRzLmxlbmd0aD4wKTtyZXR1cm4gYT8oMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbbz8oMCxWLlkpKCJwIix7Y3NzOk9kLGNoaWxkcmVuOnR9KTooMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciIsY3NzOlJkLGNoaWxkcmVuOigwLFYuWSkoInAiLHtjaGlsZHJlbjp0fSl9KSwoMCxWLlkpKERyLHtpdGVtczpsLGl0ZW1LZXk6ImlkIixyZW5kZXJJdGVtOihlLHQpPT4oMCxkLm4pKE1kLHsuLi5lLGJ1dHRvblBheWxvYWQ6aSxjaGF0Qm90SWQ6YSxpc0FkZFRvQ2FydEVuYWJsZWQ6IW98fHQsa2V5OmUuaWQsbWVzc2FnZUlkOnIsaXNGbHlNZXNzYWdlOm8sdmFyaWFudElkOmUudmFyaWFudHNbMF0uaWR9KSxpc0ZseU1lc3NhZ2U6byxpc1dpdGhvdXRJbWFnZXM6c30pXX0pOm51bGx9O2NvbnN0IFBkPVt7dmFsdWU6Ilx1ZDgzZFx1ZGUyMSIscmF0aW5nOjF9LHt2YWx1ZToiXHVkODNkXHVkZTQxIixyYXRpbmc6Mn0se3ZhbHVlOiJcdWQ4M2RcdWRlMTAiLHJhdGluZzozfSx7dmFsdWU6Ilx1ZDgzZFx1ZGUwMCIscmF0aW5nOjR9LHt2YWx1ZToiXHVkODNkXHVkZTBkIixyYXRpbmc6NX1dO2NvbnN0IHpkPXtuYW1lOiJ6NWt5YXQiLHN0eWxlczoiZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjE2cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCA2cHgpO2JhY2tncm91bmQ6d2hpdGU7cGFkZGluZzoxMnB4IDE2cHg7dGV4dGFyZWF7aGVpZ2h0Ojc0cHg7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MThweDtwYWRkaW5nOjA7OjpwbGFjZWhvbGRlcntjb2xvcjojNjQ3NDkxO319In0sTGQ9e25hbWU6IjEzc2gyczYiLHN0eWxlczoiYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IsICNEM0RCRTUpIn0sVWQ9e25hbWU6ImQ2dXh0dCIsc3R5bGVzOiJvdXRsaW5lOm5vbmU7c3Zne3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7ZmlsbDp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NkZGKTt9In07dmFyIEJkPWU9PntsZXR7dGhyZWFkU291cmNlOnQsdGhyZWFkSWQ6bixtZXNzYWdlSWQ6aSxjb21tZW50Om99PWU7Y29uc3Qgcz0oMCxyLndBKSgpLHtpc05ld1NraW46bH09KDAscC5BKSgpLFtkLGNdPSgwLGEudXNlU3RhdGUpKCIiKSx1PSgpPT57cygoMCxrLk9jcCkoZCx0LG4saSkpLHMoKDAsay50alIpKCgwLHJpLm95KSh0LG4saSx0dC5Hby5BVVRPTUFUSUNfU1VSVkVZX0NPTU1FTlRFRCkpKSwoMCxoLnlHKSgpfTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y3NzOlt6ZCxsJiZMZCwiIiwiIl0sY2hpbGRyZW46WygwLFYuWSkoTG4se3R5cGU6InRleHRhcmVhIixwbGFjZWhvbGRlcjoic2F0aXNmYWN0aW9uU3VydmV5Q29tbWVudFBsYWNlaG9sZGVyIixvbkNoYW5nZTpjLG9uS2V5RG93bjplPT4xMz09PWUmJih1KCksITApLHZhbHVlOm98fG51bGwsc2hvd0ljb246ITF9KSwoMCxWLlkpKCJidXR0b24iLHsiZGF0YS10ZXN0aWQiOiJzZW5kLXN1cnZleS1idXR0b24iLHR5cGU6ImJ1dHRvbiIsY3NzOlVkLG9uQ2xpY2s6dSxjaGlsZHJlbjooMCxWLlkpKHV0LnF4LHt9KX0pXX0pfTtjb25zdCBIZD17bmFtZToiM3cweW9pIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjhweCJ9LHFkPXtuYW1lOiIxMHJ0c3RqIixzdHlsZXM6InBhZGRpbmc6MTZweCJ9O3ZhciBWZD1lPT57bGV0e3RocmVhZFNvdXJjZTp0LHRocmVhZElkOm4sbWVzc2FnZUlkOmksY29tbWVudFF1ZXN0aW9uOmEsY29tbWVudDpvfT1lO2NvbnN0e2lzTmV3U2tpbjpyfT0oMCxwLkEpKCk7cmV0dXJuKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IiLGNzczohciYmcWQsY2hpbGRyZW46KDAsVi5GRCkoImRpdiIse2NzczpIZCxjaGlsZHJlbjpbKDAsVi5ZKSgic3BhbiIse2NoaWxkcmVuOmF9KSwoMCxWLlkpKEJkLHt0aHJlYWRTb3VyY2U6dCx0aHJlYWRJZDpuLG1lc3NhZ2VJZDppLGNvbW1lbnQ6b30pXX0pfSl9O2NvbnN0ICRkPXtuYW1lOiIxODVhd2VwIixzdHlsZXM6ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjhweDttYXgtd2lkdGg6MzAwcHgifSxXZD17bmFtZToiZ2cxcnl6IixzdHlsZXM6ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Y2xlYXI6Ym90aDtwb3NpdGlvbjpyZWxhdGl2ZTtnYXA6OHB4O3RyYW5zaXRpb246bWFyZ2luIDAuMjhzIGVhc2UtaW4tb3V0In0sS2Q9e25hbWU6Ijlob2djaiIsc3R5bGVzOiJib3JkZXI6MXB4IHNvbGlkIHZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IpO2xldHRlci1zcGFjaW5nOi0wLjAxZW0ifSxHZD17bmFtZToiMWQzMHdxZiIsc3R5bGVzOiJiYWNrZ3JvdW5kOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IpO2NvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3ItY29udHJhc3QpIn0sWGQ9e25hbWU6InEwYTRheiIsc3R5bGVzOiJjb2xvcjojMDYxMzJiO2JvcmRlcjoxcHggc29saWQgdmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciwgIzA1NjZmZik7b3V0bGluZTpub25lO3BhZGRpbmc6MTJweDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NsZWFyOmJvdGg7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjE1cHg7aW1ne21pbi13aWR0aDoxOHB4O21pbi1oZWlnaHQ6MThweDt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O306aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKTtjb2xvcjp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLWNvbnRyYXN0KTt9In07dmFyIFFkPWU9PntsZXR7dGhyZWFkU291cmNlOnQsdGhyZWFkSWQ6bixtZXNzYWdlSWQ6aSxyYXRlUXVlc3Rpb246YSxzY2FsZTpvLHNlbGVjdGVkUmF0aW5nOnN9PWU7Y29uc3QgbD0oMCxyLndBKSgpO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciIsY2hpbGRyZW46YX0pLCgwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciIsY3NzOiRkLGNoaWxkcmVuOlsoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoInNhdGlzZmFjdGlvblN1cnZleVJhdGUiKX0pLCgwLFYuWSkoImRpdiIse2NzczpXZCxjaGlsZHJlbjpvLm1hcChlPT57bGV0e3ZhbHVlOmEscmF0aW5nOm99PWU7cmV0dXJuKDAsVi5ZKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjc3M6W1hkLHMmJktkLHM9PT1vJiZHZCwiIiwiIl0sb25DbGljazooKT0+e3ZhciBlO2U9byxsKCgwLGsuZjd6KShlLHQsbixpKSksc3x8bCgoMCxrLnRqUikoKDAscmkub3kpKHQsbixpLHR0LkdvLkFVVE9NQVRJQ19TVVJWRVlfUkFURUQpKSl9LGNoaWxkcmVuOigwLFYuWSkoInNwYW4iLHtkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOl9uKGEpfX0pfSxvKX0pfSldfSldfSl9O2NvbnN0IFpkPXtuYW1lOiIzdzB5b2kiLHN0eWxlczoiZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4In0sSmQ9e25hbWU6IjFrZDN0djAiLHN0eWxlczoiY29sb3I6IzY0NzQ5MSJ9LGVjPWU9Pntzd2l0Y2goZSl7Y2FzZSAxOnJldHVybiJcdWQ4M2RcdWRlMjEiO2Nhc2UgMjpyZXR1cm4iXHUyNjM5XHVmZTBmIjtjYXNlIDM6cmV0dXJuIlx1ZDgzZFx1ZGUxMCI7Y2FzZSA0OnJldHVybiJcdWQ4M2RcdWRlMDAiO2Nhc2UgNTpyZXR1cm4iXHVkODNkXHVkZTBkIjtkZWZhdWx0OnJldHVybiIifX07dmFyIHRjPWU9PntsZXR7cmF0ZTp0LGNvbW1lbnQ6bn09ZTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IiLGNzczpaZCxjaGlsZHJlbjpbKDAsVi5GRCkoInNwYW4iLHtjaGlsZHJlbjpbKDAseS5wdykoInNhdGlzZmFjdGlvblN1cnZleUNvbW1lbnRlZCIpLCIgIixlYyh0KV19KSwoMCxWLlkpKCJzcGFuIix7Y3NzOkpkLGNoaWxkcmVuOm58fCgwLHkucHcpKCJzYXRpc2ZhY3Rpb25TdXJ2ZXlUaGFua3MiKX0pXX0pfTt2YXIgbmM9ZT0+e2xldHt0aHJlYWRTb3VyY2U6dCx0aHJlYWRJZDpuLG1lc3NhZ2VJZDppLHR5cGU6YSxzYXRpc2ZhY3Rpb25TdXJ2ZXk6b309ZTtjb25zdCBzPSgwLHIud0EpKCksbD0oMCxyLmQ0KShlPT4oMCxDLnoyKShlLG4pKTtpZighbClyZXR1cm4gbyYmcygoMCxrLkh5bikobyx0LG4saSkpLG51bGw7Y29uc3QgZD1sLnRocmVhZFNvdXJjZT8/ImNvbnZlcnNhdGlvbiIsYz0oZT0+e2lmKCJlbW90ZXMiPT09ZSlyZXR1cm4gUGQ7dGhyb3cgbmV3IEVycm9yKCJVbnJlYWNoYWJsZSBjYXNlIGVycm9yIil9KShsLnNjYWxlVHlwZSksdT1jLmZpbmQoZT0+ZS5yYXRpbmc9PT1sPy5yZXNwb25zZS5yYXRpbmcpO3JldHVybigoKT0+e3N3aXRjaChhKXtjYXNlIHR0LkdvLkFVVE9NQVRJQ19TVVJWRVk6cmV0dXJuIG51bGwhPT1sLnJlc3BvbnNlLmNvbW1lbnQ/bnVsbDooMCxWLlkpKFFkLHt0aHJlYWRTb3VyY2U6ZCx0aHJlYWRJZDpuLG1lc3NhZ2VJZDppLHNjYWxlOmMsc2VsZWN0ZWRSYXRpbmc6dT8ucmF0aW5nLHJhdGVRdWVzdGlvbjpsLnJhdGVRdWVzdGlvbnx8KDAseS5wdykoInNhdGlzZmFjdGlvblN1cnZleUhlYWRlciIpfSk7Y2FzZSB0dC5Hby5BVVRPTUFUSUNfU1VSVkVZX1JBVEVEOnJldHVybiBudWxsIT09bC5yZXNwb25zZS5jb21tZW50P251bGw6KDAsVi5ZKShWZCx7dGhyZWFkU291cmNlOmQsdGhyZWFkSWQ6bixtZXNzYWdlSWQ6aSxjb21tZW50OmwucmVzcG9uc2UuY29tbWVudCxjb21tZW50UXVlc3Rpb246bC5jb21tZW50UXVlc3Rpb258fCgwLHkucHcpKCJzYXRpc2ZhY3Rpb25TdXJ2ZXlDb21tZW50T3B0aW9uYWwiKX0pO2Nhc2UgdHQuR28uQVVUT01BVElDX1NVUlZFWV9DT01NRU5URUQ6cmV0dXJuKDAsVi5ZKSh0Yyx7cmF0ZTpsLnJlc3BvbnNlLnJhdGluZyxjb21tZW50OmwucmVzcG9uc2UuY29tbWVudHx8bC5lbmRNZXNzYWdlfSk7ZGVmYXVsdDp0aHJvdygwLHYuc1EpKCJBdXRvbWF0aWMgc2F0aXNmYWN0aW9uIHN1cnZleTogdW5yZWFjaGFibGUgY2FzZSIpLG5ldyBFcnJvcigiQXV0b21hdGljIHNhdGlzZmFjdGlvbiBzdXJ2ZXk6IHVucmVhY2hhYmxlIGNhc2UiKX19KSgpfTt2YXIgaWM9ZT0+e2NvbnN0IHQ9X3IoZS5jb250ZW50KTtyZXR1cm4oMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciIsY2hpbGRyZW46KDAsVi5ZKSgic3BhbiIse2NsYXNzTmFtZToibWVzc2FnZS1jb250ZW50IixkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOnR9fSl9KX07dmFyIGFjPSgpPT4oMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciIsY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6InRpY2tldFN1Ym1pdHRlZE1lc3NhZ2UiLGVtb2ppZnk6ITAsbGlua2lmeTohMH0pfSk7dmFyIG9jPWU9Pntjb25zdFt0LG5dPSgwLGEudXNlU3RhdGUpKCExKSxpPUJvb2xlYW4oZS5yYXRpbmdJZCkmJiF0LG89ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIiI7Y29uc3QgdD1lLm1hdGNoKC9eW2EtekEtWjAtOV17MTAsMTF9LS8pO3JldHVybiB0JiZlLnJlcGxhY2UodFswXSwiIil8fGV9KGUubmFtZSkscj0oZT0+e3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGUpfWNhdGNoe3JldHVybiBlfX0pKG8pLHtpc05ld1NraW46c309KDAscC5BKSgpLGw9KCk9PntuKGU9PiFlKX07cmV0dXJuKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOmBtZXNzYWdlIG1lc3NhZ2UtdXBsb2FkICR7ImltYWdlIj09PWUuYXR0YWNobWVudFR5cGU/Im1lc3NhZ2UtaW1hZ2UiOiJtZXNzYWdlLWZpbGUifSBtZXNzYWdlLSR7ImJvdCI9PT1lLnNlbmRlcj8ib3BlcmF0b3IiOmUuc2VuZGVyfSAke3Q/InRpbWVzdGFtcC12aXNpYmxlIjoiIn0gJHtlLnJhdGluZ0lkPyJyYXRpbmctdmlzaWJsZSI6IiJ9YCxzdHlsZToidmlzaXRvciIhPT1lLnNlbmRlcnx8cz97fTp7YmFja2dyb3VuZDoidmFyKC0tY3VzdG9tLWJhY2tncm91bmQpIixjb2xvcjoidmFyKC0tY3VzdG9tLXRleHQtY29sb3IpIn0sY2hpbGRyZW46ImltYWdlIj09PWUuYXR0YWNobWVudFR5cGU/KDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoS3Mse2NvbnRlbnQ6ZS5jb250ZW50LGV4dGVuc2lvbjplLmV4dGVuc2lvbix0aHVtYjplLnRodW1iLG5hbWU6ZS5uYW1lLGlkOmUuaWQsb25DbGljazpsfSksKDAsVi5ZKShfaSx7aW46dCxjaGlsZHJlbjooMCxWLlkpKCRzLHt0aW1lOmUudGltZV9zZW50fSl9KSwoMCxWLlkpKF9pLHtpbjppLGNoaWxkcmVuOigwLFYuWSkoVXIse21lc3NhZ2VJZDplLmlkLHJhdGluZ0lkOmUucmF0aW5nSWQscmF0aW5nOmUucmF0aW5nfSl9KV19KTooMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgiYSIse2hyZWY6KDAsZi5JRikoZS5jb250ZW50KSx0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciBub3JlZmVycmVyIixvbkNsaWNrOmwsY2hpbGRyZW46KDAsVi5GRCkoInNwYW4iLHtjaGlsZHJlbjpbKDAsVi5ZKShYaSx7ZXh0ZW5zaW9uOmUuZXh0ZW5zaW9ufSkscl19KX0pLCgwLFYuWSkoX2kse2luOnQsY2hpbGRyZW46KDAsVi5ZKSgkcyx7dGltZTplLnRpbWVfc2VudH0pfSldfSl9KX07Y29uc3QgcmM9e25hbWU6Ijk1cXZ5eCIsc3R5bGVzOiJ3aWR0aDptYXgtY29udGVudCJ9O3ZhciBzYz1lPT57bGV0e2lzRGVsaXZlcmVkOnQsdGltZV9zZW50Om4sY29udGVudDppfT1lO2NvbnN0W28scl09KDAsYS51c2VTdGF0ZSkoITEpLHM9KDAsYS51c2VSZWYpKG51bGwpLGw9KDAsYS51c2VSZWYpKG51bGwpLGQ9X3IoaSkse2lzTmV3U2tpbjpjfT0oMCxwLkEpKCksdT1YbyhpKTsoMCxhLnVzZUxheW91dEVmZmVjdCkoKCk9PntJcih7c3BhblJlZjpzLHdyYXBwZXJSZWY6bCxtaW5XaWR0aDp1PzI0ODp2b2lkIDB9KX0sW3VdKTtjb25zdCBmPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57cihlPT4hZSl9LFtdKTtyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOmBtZXNzYWdlIG1lc3NhZ2UtdmlzaXRvciAke28mJnQ/InRpbWVzdGFtcC12aXNpYmxlIjoiIn0gJHt0PyIiOiJub3QtZGVsaXZlcmVkIn1gLG9uQ2xpY2s6ZixzdHlsZTp0P3tiYWNrZ3JvdW5kOiJ2YXIoLS1jdXN0b20tYmFja2dyb3VuZCkiLGNvbG9yOiJ2YXIoLS1jdXN0b20tdGV4dC1jb2xvcikifTp7fSxyZWY6bCxjaGlsZHJlbjpbKDAsVi5ZKSgic3BhbiIse2NsYXNzTmFtZToibWVzc2FnZS1jb250ZW50IixkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOmR9LHJlZjpzfSksdSYmKDAsVi5ZKSh0bCx7dXJsOnV9KSwoMCxWLlkpKF9pLHtpbjpvJiZ0LGNoaWxkcmVuOigwLFYuWSkoJHMse3RpbWU6bn0pfSksIXQmJigwLFYuWSkoInNwYW4iLHtjbGFzc05hbWU6InJlc2VuZC1tZXNzYWdlIixjc3M6Yz9yYzp2b2lkIDAsY2hpbGRyZW46KDAseS5wdykoIm1lc3NhZ2VOb3REZWxpdmVyZWQiLG51bGwsIk5vdCBkZWxpdmVyZWQuIil9KV19KX07dmFyIGxjPWU9Pntzd2l0Y2goZS50eXBlKXtjYXNlIHR0LkdvLlBSRUNIQVQ6cmV0dXJuKDAsVi5ZKShTZCx7Li4uZX0pO2Nhc2UgdHQuR28uUkFURV9DT05WRVJTQVRJT046cmV0dXJuKDAsVi5ZKShfZCx7Li4uZX0pO2Nhc2UgdHQuR28uUkFURV9DT01NRU5UX0dPT0Q6Y2FzZSB0dC5Hby5SQVRFX0NPTU1FTlRfQkFEOnJldHVybigwLFYuWSkoSWQsey4uLmV9KTtjYXNlIHR0LkdvLkFMV0FZU19PTkxJTkU6cmV0dXJuKDAsVi5ZKShGcix7fSk7Y2FzZSB0dC5Hby5VUExPQURJTkdfRklMRTpyZXR1cm4oMCxWLlkpKFJsLkF5LHsuLi5lfSk7Y2FzZSB0dC5Hby5VUExPQURFRF9GSUxFOnJldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKG9jLHsuLi5lfSksZS5xdWlja1JlcGxpZXMmJmUucXVpY2tSZXBsaWVzLmxlbmd0aD4wJiYhZS5kaXNhYmxlZCYmKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlIG1lc3NhZ2Utb3BlcmF0b3IgYm90cy1xdWljay1yZXBsaWVzIixjaGlsZHJlbjooMCxWLlkpKEZkLHtxdWlja1JlcGxpZXM6ZS5xdWlja1JlcGxpZXMsbWVzc2FnZUlkOmUuaWQsZGlzYWJsZWQ6ZS5kaXNhYmxlZH0pfSldfSk7Y2FzZSB0dC5Hby5TWVNURU06cmV0dXJuKDAsVi5ZKShpYyx7Li4uZX0pO2Nhc2UgdHQuR28uQ0FSRF9HQUxMRVJZOnJldHVybigwLFYuWSkocGwsey4uLmV9KTtjYXNlIHR0LkdvLkJVVFRPTlM6cmV0dXJuKDAsVi5ZKShybCx7Li4uZX0pO2Nhc2UgdHQuR28uQ09VUE9OX0NPREU6cmV0dXJuKDAsVi5ZKSh3bCx7Li4uZX0pO2Nhc2UgdHQuR28uQ09OVkVSU0FUSU9OX01BUktFRF9BU19TT0xWRUQ6cmV0dXJuKDAsVi5ZKShtbCx7Li4uZX0pO2Nhc2UgdHQuR28uQVVUT01BVElDX1NVUlZFWTpjYXNlIHR0LkdvLkFVVE9NQVRJQ19TVVJWRVlfUkFURUQ6Y2FzZSB0dC5Hby5BVVRPTUFUSUNfU1VSVkVZX0NPTU1FTlRFRDpyZXR1cm4oMCxWLlkpKG5jLHsuLi5lfSk7Y2FzZSB0dC5Hby5DUkVBVEVfVElDS0VUX1NVQ0NFU1M6cmV0dXJuKDAsVi5ZKShhYyx7fSk7Y2FzZSB0dC5Hby5GT1JNOnJldHVybigwLFYuWSkodWQsey4uLmV9KTtjYXNlIHR0LkdvLkZPUk1fUkVTUE9OU0U6cmV0dXJuIG51bGw7Y2FzZSB0dC5Hby5JRlJBTUU6cmV0dXJuKDAsVi5ZKSh2ZCx7Li4uZS5pZnJhbWV9KTtjYXNlIHR0LkdvLlJFQ09NTUVOREVEX1BST0RVQ1RTOnJldHVybigwLFYuWSkoamQsey4uLmUucmVjb21tZW5kZWRQcm9kdWN0cyxjaGF0Qm90SWQ6ZS5jaGF0Qm90SWQsbWVzc2FnZUlkOmUuaWR9KTtjYXNlIHR0LkdvLkFJX0FTU0lTVEFOVF9SRUNPTU1FTkRFRF9QUk9EVUNUUzp7Y29uc3R7YWlBc3Npc3RhbnRSZXNwb25zZVR5cGU6dCxoYXNBaUFzc2lzdGFudEFuc3dlclNvdXJjZXM6bixxdWVzdGlvbk1lc3NhZ2VJZDppLGFpQXNzaXN0YW50QWN0aW9uTG9nSWQ6YX09ZSxvPSgwLGYuTUkpKCkmJigwLGYucVMpKCk/LmlzTHlyb1BsYXlncm91bmQscj1vJiYia25vd2xlZGdlX21pc3NpbmciPT09dCxzPShufHxhKSYmbyYmaSYmIXIsbD1YbyhlLmNvbnRlbnQpO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKG5sLHsuLi5lLGNvbnRlbnQ6SW4oZS5jb250ZW50KSx5b3V0dWJlVXJsOmx9KSwoMCxWLlkpKFRyLHttZXNzYWdlSWQ6ZS5pZCxwcm9kdWN0czplLnByb2R1Y3RzfSksciYmKDAsVi5ZKSh5ZCx7cXVlc3Rpb25NZXNzYWdlSWQ6aX0pLHMmJigwLFYuWSkoQ2Qse3F1ZXN0aW9uTWVzc2FnZUlkOmksbWVzc2FnZUlkOmUuaWRGcm9tU2VydmVyLGFpQXNzaXN0YW50QWN0aW9uTG9nSWQ6YX0pXX0pfWNhc2UgdHQuR28uVEVYVDpzd2l0Y2goZS5zZW5kZXIpe2Nhc2UgdHQuRCQuT1BFUkFUT1I6cmV0dXJuKDAsVi5ZKShFZCx7Li4uZX0pO2Nhc2UgdHQuRCQuQk9UOntjb25zdHthaUFzc2lzdGFudFJlc3BvbnNlVHlwZTp0LGhhc0FpQXNzaXN0YW50QW5zd2VyU291cmNlczpuLHF1ZXN0aW9uTWVzc2FnZUlkOmksYWlBc3Npc3RhbnRBY3Rpb25Mb2dJZDphfT1lLG89KDAsZi5NSSkoKSYmKDAsZi5xUykoKT8uaXNMeXJvUGxheWdyb3VuZCxyPW8mJiJrbm93bGVkZ2VfbWlzc2luZyI9PT10LHM9KG58fGEpJiZvJiZpJiYhcixsPVhvKGUuY29udGVudCk7cmV0dXJuKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkobmwsey4uLmUsY29udGVudDpJbihlLmNvbnRlbnQpLHlvdXR1YmVVcmw6bH0pLGUucXVpY2tSZXBsaWVzJiZlLnF1aWNrUmVwbGllcy5sZW5ndGg+MCYmIWUuZGlzYWJsZWQmJigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yIGJvdHMtcXVpY2stcmVwbGllcyIsY2hpbGRyZW46KDAsVi5ZKShGZCx7cXVpY2tSZXBsaWVzOmUucXVpY2tSZXBsaWVzLG1lc3NhZ2VJZDplLmlkLGRpc2FibGVkOmUuZGlzYWJsZWQsbWV0YWRhdGE6e2lzX2FpX2Fzc2lzdGFudF90YXNrOmUuYWlBc3Npc3RhbnRUYXNrfX0pfSksciYmKDAsVi5ZKSh5ZCx7cXVlc3Rpb25NZXNzYWdlSWQ6aX0pLHMmJigwLFYuWSkoQ2Qse3F1ZXN0aW9uTWVzc2FnZUlkOmksbWVzc2FnZUlkOmUuaWRGcm9tU2VydmVyLGFpQXNzaXN0YW50QWN0aW9uTG9nSWQ6YX0pXX0pfWNhc2UgdHQuRCQuVklTSVRPUjpyZXR1cm4oMCxWLlkpKHNjLHsuLi5lfSk7ZGVmYXVsdDpyZXR1cm4gbnVsbH1kZWZhdWx0OnJldHVybiBudWxsfX07dmFyIGRjPWU9PntsZXR7bWVzc2FnZXNMZW5ndGg6dCxzaG93T2xkTWVzc2FnZXM6bixjb252ZXJzYXRpb25SZWY6aSxkb2N1bWVudFJlZjpvfT1lO2NvbnN0IHI9KDAsYS51c2VSZWYpKG51bGwpLHM9KDAsYS51c2VSZWYpKCExKSxsPSgwLGEudXNlUmVmKShudWxsKSxkPSgwLGEudXNlUmVmKSgwKSxjPSgwLGEudXNlUmVmKShudWxsKSx1PSgwLGEudXNlTWVtbykoKCk9Pm8mJiJob3N0ImluIG8/by5ob3N0Lm93bmVyRG9jdW1lbnQ6byxbb10pLHA9KDAsYS51c2VDYWxsYmFjaykoKCk9Pntjb25zdHtzY3JvbGxIZWlnaHQ6ZT0wLGNsaWVudEhlaWdodDp0PTB9PWl8fHt9LG49dC0wO3IuY3VycmVudCYmKHIuY3VycmVudC5zdHlsZS5oZWlnaHQ9ZT09PXQ/IjBweCI6bipuLytlKyJweCIpfSxbaV0pLGY9KCk9PntpJiYoaS5vbnNjcm9sbD0oKT0+e2xldCBlPTA7aWYoci5jdXJyZW50KXtpZihzLmN1cnJlbnQpe2NvbnN0IHQ9QXJyYXkuZnJvbSh1LnF1ZXJ5U2VsZWN0b3JBbGwoIi5tZXNzYWdlIikpLnNsaWNlKC0xKVswXTtlPXQ/dC5vZmZzZXRIZWlnaHQ6MCxzLmN1cnJlbnQ9ITF9ci5jdXJyZW50LnN0eWxlLnRvcD0oaS5jbGllbnRIZWlnaHQtMCkqaS5zY3JvbGxUb3AvKGkuc2Nyb2xsSGVpZ2h0LWUpKyJweCJ9fSl9LG09ZT0+e2NvbnN0e3Njcm9sbEhlaWdodDp0PTAsY2xpZW50SGVpZ2h0Om49MH09aXx8e307aSYmKGkuc2Nyb2xsVG9wPXQqZS8obi0wKSl9LGg9KCk9Pnt1Lm9ubW91c2V1cD1udWxsLHUub25tb3VzZW1vdmU9bnVsbCxsLmN1cnJlbnQmJndpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShsLmN1cnJlbnQpLGYoKSxyLmN1cnJlbnQmJihyLmN1cnJlbnQuc3R5bGUud2lkdGg9IiIsci5jdXJyZW50LnN0eWxlLm1hcmdpbj0iIixyLmN1cnJlbnQuc3R5bGUub3BhY2l0eT0iIil9LGc9ZT0+e2wuY3VycmVudD13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57aWYoIXIuY3VycmVudClyZXR1cm47bGV0e2NsaWVudEhlaWdodDp0PTB9PWl8fHt9O3QtPTA7Y29uc3Qgbj1lLmNsaWVudFktZC5jdXJyZW50LGE9cGFyc2VJbnQoci5jdXJyZW50LnN0eWxlLnRvcCwxMCkrbjthPj0wJiZhPD10LXBhcnNlSW50KHIuY3VycmVudC5zdHlsZS5oZWlnaHQsMTApPyhyLmN1cnJlbnQuc3R5bGUudG9wPWAke2F9cHhgLG0oYSkpOmE8MD8oci5jdXJyZW50LnN0eWxlLnRvcD0iMHB4IixtKDApKTooci5jdXJyZW50LnN0eWxlLnRvcD10LXBhcnNlSW50KHIuY3VycmVudC5zdHlsZS5oZWlnaHQsMTApKyJweCIsbSh0LXBhcnNlSW50KHIuY3VycmVudC5zdHlsZS5oZWlnaHQsMTApKSksdS5vbm1vdXNldXA9aCxkLmN1cnJlbnQ9ZS5jbGllbnRZfSl9O3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+e3QmJihzLmN1cnJlbnQ9ITApLHAoKX0sW3QscF0pLCgwLGEudXNlRWZmZWN0KSgoKT0+e3AoKX0sW24scF0pLCgwLGEudXNlRWZmZWN0KSgoKT0+e2YoKX0pLCgwLGEudXNlRWZmZWN0KSgoKT0+KGkmJihjLmN1cnJlbnQ9bmV3IFJlc2l6ZU9ic2VydmVyKHApLGMuY3VycmVudC5vYnNlcnZlKGkpKSwoKT0+e2MuY3VycmVudCYmYy5jdXJyZW50LmRpc2Nvbm5lY3QoKX0pLFtpLHBdKSwoMCxWLlkpKCJkaXYiLHtpZDoiY29udmVyc2F0aW9uLXNjcm9sbCIsY2hpbGRyZW46KDAsVi5ZKSgiZGl2Iix7b25Nb3VzZURvd246ZT0+e2kmJihpLm9uc2Nyb2xsPW51bGwpLGQuY3VycmVudD1lLmNsaWVudFksci5jdXJyZW50JiYoci5jdXJyZW50LnN0eWxlLndpZHRoPSI4cHgiLHIuY3VycmVudC5zdHlsZS5tYXJnaW49IjBweCIsci5jdXJyZW50LnN0eWxlLm9wYWNpdHk9IjAuMzIiKSx1Lm9ubW91c2Vtb3ZlPWcsdS5vbm1vdXNldXA9aH0scmVmOmU9PntpZighZSlyZXR1cm4hMTtyLmN1cnJlbnQ9ZTtjb25zdHtzY3JvbGxIZWlnaHQ6dD0wLGNsaWVudEhlaWdodDpuPTAsc2Nyb2xsVG9wOmE9MH09aXx8e307cmV0dXJuIHIuY3VycmVudC5zdHlsZS50b3A9KG4rMCkqYS90KyJweCIsITB9fSl9KX07Y29uc3QgY2M9e25hbWU6Im1hbGJwcCIsc3R5bGVzOiJwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjMifSx1Yz17bmFtZToiMWJjZXBtZiIsc3R5bGVzOiJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3N2Z3t3aWR0aDo2NHB4O2hlaWdodDo2NHB4O30ifTt2YXIgcGM9KCk9Pntjb25zdCBlPSgwLHIuZDQpKEMuVlEpLHtpc05ld1NraW46dH09KDAscC5BKSgpO3JldHVybiBlP3Q/KDAsVi5ZKSgiZGl2Iix7Y3NzOmNjLGNoaWxkcmVuOigwLFYuRkQpKCJkaXYiLHtjc3M6dWMsY2hpbGRyZW46WygwLFYuWSkodXQuZV8se30pLCgwLFYuWSkoInNwYW4iLHtjaGlsZHJlbjooMCx5LnB3KSgiZHJhZ0FuZERyb3BJbmZvIixudWxsLCJEcm9wIGhlcmUgdG8gYXR0YWNoIil9KV19KX0pOigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToidXBsb2FkSWNvbldyYXBwZXIiLGNoaWxkcmVuOigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6InVwbG9hZC1jaXJjbGUiLGNoaWxkcmVuOlsoMCxWLlkpKHV0LkpNLHt9KSwoMCxWLlkpKCJzcGFuIix7Y2hpbGRyZW46KDAseS5wdykoImRyYWdBbmREcm9wSW5mbyIsbnVsbCwiRHJvcCBoZXJlIHRvIGF0dGFjaCIpfSldfSl9KTpudWxsfTtjb25zdCBmYz17bmFtZToiMWg2eGxjMyIsc3R5bGVzOiJjbGVhcjpib3RoO3dpZHRoOjEwMCU7ZmxvYXQ6bGVmdCJ9O3ZhciBtYz1lPT57bGV0e29uQ2xpY2s6dH09ZTtjb25zdHtpc05ld1NraW46bn09KDAscC5BKSgpO3JldHVybigwLFYuWSkoImRpdiIse2NzczpmYywiZGF0YS10ZXN0aWQiOiJoaXN0b3J5QnV0dG9uV3JhcHBlciIsY2hpbGRyZW46KDAsVi5GRCkoImJ1dHRvbiIse2NzczooaT1uLCgwLGQuQUgpKHttYXJnaW46IjAgYXV0byIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixiYWNrZ3JvdW5kOiIjZmZmIixsZXR0ZXJTcGFjaW5nOiItMC4xcHgiLHRleHRBbGlnbjoiY2VudGVyIixmb250U2l6ZToiMTJweCIsZm9udFdlaWdodDppPzUwMDo2MDAsY29sb3I6IiM4ODk0YWIiLGJvcmRlclJhZGl1czoiMTRweCIsYm9yZGVyOiJzb2xpZCAxcHggcmdiYSgxMzYsIDE0OCwgMTcxLCAwLjI0KSIscGFkZGluZ1JpZ2h0OiIxMHB4Iixzdmc6e2ZpbGw6IiM4ODk0YWIiLHdpZHRoOiIxOXB4IixtYXJnaW5JbmxpbmU6IjRweCJ9LCImOmhvdmVyIjp7Y29sb3I6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IsICMwNTY2ZmYpIixzdmc6e2ZpbGw6InZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IsICMwNTY2ZmYpIn19LG1hcmdpbkJvdHRvbTppPyIxMHB4IjoiMjBweCJ9LCIiLCIiKSksdHlwZToiYnV0dG9uIixvbkNsaWNrOnQsImRhdGEtdGVzdGlkIjoiaGlzdG9yeUJ1dHRvbiIsY2hpbGRyZW46WygwLFYuWSkodXQub3Mse30pLCgwLHkucHcpKCJwcmV2aW91c01lc3NhZ2VzIixudWxsLCJQcmV2aW91cyBtZXNzYWdlcyIpXX0pfSk7dmFyIGl9O2NvbnN0IGhjPSgwLGQuQUgpKHtib3JkZXI6IjFweCBzb2xpZCB0cmFuc3BhcmVudCIsYmFja2dyb3VuZDpgbGluZWFyLWdyYWRpZW50KHdoaXRlLCB3aGl0ZSkgcGFkZGluZy1ib3gsIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICR7Zi5YVlswXX0sICR7Zi5YVlsxXX0pIGJvcmRlci1ib3hgLGNvbG9yOmYuWFZbMF19LCIiLCIiKSxnYz0oMCxkLkFIKSh7ZGlzcGxheToiaW5saW5lLWJsb2NrIixtYXJnaW5MZWZ0Ojgsc3Bhbjp7ZGlzcGxheToiaW5saW5lLWJsb2NrIixoZWlnaHQ6NSx3aWR0aDo1LG1hcmdpbjoiMTFweCAxcHggMCAycHgiLGJhY2tncm91bmRDb2xvcjpmLlhWWzBdLGJvcmRlclJhZGl1czoiNTAlIixhbmltYXRpb246ImJsaW5rIDEuM3MgbGluZWFyIGluZmluaXRlIiwiJjpudGgtY2hpbGQoMikiOnthbmltYXRpb25EZWxheToiLTEuMXMifSwiJjpudGgtY2hpbGQoMykiOnthbmltYXRpb25EZWxheToiLTAuOXMifX19LCIiLCIiKTt2YXIgYmM9KCk9Pntjb25zdCBlPSgwLHIuZDQpKEMuUW4pO3JldHVybigwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UgbWVzc2FnZS1vcGVyYXRvciIsY3NzOmhjLGNoaWxkcmVuOlsoMCxWLkZEKSgic3BhbiIse2NoaWxkcmVuOltlLCIgIiwoMCx5LnB3KSgiaXNUeXBpbmciLG51bGwsImlzIHR5cGluZyIpXX0pLCgwLFYuWSkoJCx7aW46ITAsY2xhc3NOYW1lczoib3BlcmF0b3JUeXBpbmciLGNoaWxkcmVuOigwLFYuRkQpKCJkaXYiLHtjc3M6Z2MsY2hpbGRyZW46WygwLFYuWSkoInNwYW4iLHt9KSwoMCxWLlkpKCJzcGFuIix7fSksKDAsVi5ZKSgic3BhbiIse30pXX0pfSldfSl9O3ZhciB2Yz1lPT57bGV0e29wZXJhdG9ySXNUeXBpbmc6dH09ZTtyZXR1cm4oMCxWLlkpKCQse2luOiExIT09dCxjbGFzc05hbWVzOiJvcGVyYXRvclR5cGluZyIsY2hpbGRyZW46KDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZSBtZXNzYWdlLW9wZXJhdG9yIHR5cGluZy1pbmRpY2F0b3IiLGNoaWxkcmVuOlsoMCxWLlkpKCJzcGFuIix7fSksKDAsVi5ZKSgic3BhbiIse30pLCgwLFYuWSkoInNwYW4iLHt9KV19KX0pfTtjb25zdCB4Yz0oMCxkLmk3KSh7IjAlIjp7YmFja2dyb3VuZFBvc2l0aW9uOiItNTAlIDUwJSJ9LCIxMDAlIjp7YmFja2dyb3VuZFBvc2l0aW9uOiI1MCUgNTAlIn19KSx5Yz0oMCxkLkFIKSh7Y2xlYXI6ImJvdGgiLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjgscGFkZGluZ1RvcDoxMixzdmc6e3dpZHRoOjE2LGhlaWdodDoxNn0sYmFja2dyb3VuZEltYWdlOiJsaW5lYXItZ3JhZGllbnQoOTBkZWcsICM2NDc0OTEgNDIlLCAjMDgwRjFBIDQ2JSwgIzA4MEYxQSA1NCUsICM2NDc0OTEgNTglKSIsYmFja2dyb3VuZFNpemU6IjUwJSAxMDAlIixXZWJraXRCYWNrZ3JvdW5kQ2xpcDoidGV4dCIsV2Via2l0VGV4dEZpbGxDb2xvcjoidHJhbnNwYXJlbnQiLGFuaW1hdGlvbjpgJHt4Y30gMnMgbGluZWFyIGluZmluaXRlYH0sIiIsIiIpLHdjPXtuYW1lOiIxczl4aDgiLHN0eWxlczoid2lkdGg6MjRweDtoZWlnaHQ6MjRweDtib3JkZXItcmFkaXVzOjUwJSJ9LGtjPWU9PntsZXR7b3BlcmF0b3JJc1R5cGluZzp0LGFpQXNzaXN0YW50SXNUaGlua2luZzpufT1lO2NvbnN0e2Fzc2lnbmVkT3BlcmF0b3JzRGF0YTppfT1SYSgpLG89KDAsci5kNCkoQy5Rbikscz0oMCxhLnVzZU1lbW8pKCgpPT5pLmZpbmQoZT0+ZS5pZD09PXQpLFtpLHRdKSx7aXNOZXdTa2luOmx9PSgwLHAuQSkoKSxkPWh0KGwpLHU9KDAsYy56aCkoe2Zyb206e29wYWNpdHk6LjAxLHRyYW5zZm9ybToidHJhbnNsYXRlWSgxMHB4KSJ9LHRvOntvcGFjaXR5OjEsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDBweCkifSxjb25maWc6e3RlbnNpb246MjAwLGZyaWN0aW9uOjIwfX0pO3JldHVybiBufHx0P24/KDAsVi5GRCkoYy5DUy5kaXYse2NzczpbZC50ZXh0MTQseWMsIiIsIiJdLHN0eWxlOnUsY2hpbGRyZW46WygwLFYuWSkodXQuamQse30pLCIgIixvLCIgIiwoMCx5LnB3KSgiaXNUeXBpbmciLG51bGwsImlzIHR5cGluZy4uLiIpLCJcdTIwMjYiXX0pOnM/KDAsVi5GRCkoYy5DUy5kaXYse2NzczpbZC50ZXh0MTQseWMsIiIsIiJdLHN0eWxlOnUsY2hpbGRyZW46WygwLFYuWSkoImltZyIse3NyYzpzLmF2YXRhclNyYz8oMCxmLnZzKShzLmF2YXRhclNyYyk6R24sYWx0OmAke3MubmFtZX0gYXZhdGFyYCxjc3M6d2N9KSxzLm5hbWUsIiAiLCgwLHkucHcpKCJpc1R5cGluZyIsbnVsbCwiaXMgdHlwaW5nLi4uIiksIlx1MjAyNiJdfSk6KDAsVi5GRCkoYy5DUy5kaXYse2NzczpbZC50ZXh0MTQseWMsIiIsIiJdLHN0eWxlOnUsY2hpbGRyZW46WygwLHkucHcpKCJ0eXBpbmciLG51bGwsIlR5cGluZyIpLCJcdTIwMjYiXX0pOm51bGx9O3ZhciBBYz1lPT57bGV0e29wZXJhdG9ySXNUeXBpbmc6dCxhaUFzc2lzdGFudElzVGhpbmtpbmc6bn09ZTtjb25zdHtpc05ld1NraW46aX09KDAscC5BKSgpO3JldHVybiBpPygwLFYuWSkoa2Mse29wZXJhdG9ySXNUeXBpbmc6dCxhaUFzc2lzdGFudElzVGhpbmtpbmc6bn0pOigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKHZjLHtvcGVyYXRvcklzVHlwaW5nOnR9KSxuJiYoMCxWLlkpKGJjLHt9KV19KX07Y29uc3QgQ2M9KGUsdCxuKT0+KDAsZC5BSCkoe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsekluZGV4OjksYmFja2dyb3VuZENvbG9yOiIjZmZmIix3aWR0aDoiY2FsYygxMDAlIC0gKHZhcigtLWNoYXQtcGFkZGluZywgMjRweCkgKiAyKSkiLGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6InZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpIixib3JkZXJCb3R0b21SaWdodFJhZGl1czoidmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgMTJweCkiLC4uLiFlJiZ7dG9wOnQ/IjExMnB4IjoiMTI0cHgifSwuLi5uJiZ7dG9wOiI2MHB4In0sLi4uKG58fCFlKSYme2JvcmRlclJhZGl1czoidmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgMTJweCkifX0sIiIsIiIpLEVjPXtuYW1lOiJ4MmtrYTEiLHN0eWxlczoiZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtiYWNrZ3JvdW5kLWNvbG9yOiNGNUY3Rjk7cGFkZGluZzo4cHg7Z2FwOjhweDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDEycHgpO2ZvbnQtc2l6ZToxMnB4O2F7b3V0bGluZTpub25lO2NvbG9yOiMwODBGMUE7fSJ9LFNjPXtuYW1lOiJqdjcydjAiLHN0eWxlczoibWFyZ2luOjJweDtvdXRsaW5lOm5vbmU7c3Zne2ZsZXgtc2hyaW5rOjA7ZmlsbDojNEM1OTZCO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7fSJ9LERjPSgwLGYuREQpKCk7dmFyIFljPSgpPT57Y29uc3QgZT0oMCxyLndBKSgpLHQ9KDAsci5kNCkoZT0+ZS5oaWRlSGVhZGVyKSxuPSgwLHIuZDQpKEMuTnkpLGk9KDAsci5kNCkoQy5vRCksbz0oMCxyLmQ0KShDLks4KSx7aXNOZXdTa2luOnN9PSgwLHAuQSkoKSxsPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57RGN8fGUoKDAsay5wNWgpKCkpfSxbZV0pO3JldHVybiFpfHxvP251bGw6KDAsVi5ZKSgiZGl2Iix7Y3NzOkNjKHMsbix0KSxjaGlsZHJlbjooMCxWLkZEKSgiZGl2Iix7Y3NzOkVjLGNoaWxkcmVuOlsoMCxWLlkpKE9uLHt2YWx1ZToicHJpdmFjeVBvbGljeSIsbWFya2Rvd25pZnk6ITB9KSwoMCxWLlkpKCJidXR0b24iLHsiYXJpYS1sYWJlbCI6IkNsb3NlIHByaXZhY3kgcG9saWN5Iix0eXBlOiJidXR0b24iLG9uQ2xpY2s6bCx0YWJJbmRleDotMSxjc3M6U2MsY2hpbGRyZW46KDAsVi5ZKSh1dC5ibSx7fSl9KV19KX0pfTt2YXIgVGM9KCk9Pntjb25zdCBlPSgwLHIud0EpKCksdD0oMCxyLmQ0KShDLkFvKSxuPSgwLHIuZDQpKGU9PmUub3BlcmF0b3JJc1R5cGluZyksaT0oMCxyLmQ0KShlPT5lLmFsZXJ0LmlzVmlzaWJsZSksbz0oMCxyLmQ0KShlPT5lLmlzTW9iaWxlKSxzPSgwLHIuZDQpKGU9PmUuc2hvd09sZE1lc3NhZ2VzKSxsPSgwLHIuZDQpKEMuVlEpLGQ9KDAsci5kNCkoQy5ERyksYz0oMCxhLnVzZVJlZikoKDAsaC5iaSkoKSksdT0oMCxhLnVzZVJlZikobnVsbCkscD0oMCxhLnVzZVJlZikobnVsbCksbT0oMCxhLnVzZVJlZikobnVsbCksW2csYl09KDAsYS51c2VTdGF0ZSkoITEpOygwLGEudXNlRWZmZWN0KSgoKT0+e3AuY3VycmVudCYmYighMCl9LFtdKTtjb25zdCB4PSgpPT57cC5jdXJyZW50JiYocC5jdXJyZW50LnNjcm9sbFRvcD1wLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0LXAuY3VycmVudC5jbGllbnRIZWlnaHQpfTsoMCxhLnVzZUVmZmVjdCkoKCk9PihlKCgwLGsub09tKShvP3R0Lk5PLk1PQklMRTp0dC5OTy5DSEFUX1NJWkVfMSkpLHgoKSxtLmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+e3AuY3VycmVudCYmcC5jdXJyZW50LnNjcm9sbFRvcC1wLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0IT09cC5jdXJyZW50LmNsaWVudEhlaWdodCYmeCgpfSwxMDApLCgpPT57bS5jdXJyZW50JiZjbGVhclRpbWVvdXQobS5jdXJyZW50KX0pLFtlLG9dKTtjb25zdFt5LHddPSgwLGEudXNlU3RhdGUpKHMpOygwLGEudXNlRWZmZWN0KSgoKT0+e3khPT1zJiZ1LmN1cnJlbnQmJih1LmN1cnJlbnQuc2Nyb2xsSW50b1ZpZXcoKSx3KHMpKX0sW3MseV0pO2NvbnN0IEE9KDAsYS51c2VSZWYpKHQpLEU9cC5jdXJyZW50JiZwLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0PnAuY3VycmVudC5jbGllbnRIZWlnaHQrNDAsUz10Lmxlbmd0aCxEPUJvb2xlYW4odC5sZW5ndGg+MCYmdFtTLTFdLnR5cGU9PT10dC5Hby5VUExPQURJTkdfRklMRSYmdFtTLTFdLmltYWdlTG9hZGVkKSxZPUEuY3VycmVudC5sZW5ndGg8UzsoMCxXby5GVykodCksKDAsYS51c2VFZmZlY3QpKCgpPT57QS5jdXJyZW50Lmxlbmd0aCE9PXQubGVuZ3RoJiZ4KCksRSYmWSYmKCgpPT57dHJ5e2NvbnN0IGU9QXJyYXkuZnJvbShjLmN1cnJlbnQucXVlcnlTZWxlY3RvckFsbCgiLm1lc3NhZ2UiKSkuc2xpY2UoLTkpLHQ9ZVtlLmxlbmd0aC0xXS5vZmZzZXRIZWlnaHQ7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKz0xKWVbbl0uc3R5bGUudHJhbnNpdGlvbj0ibm9uZSIsZVtuXS5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZVkoJHt0fXB4KWA7c2V0VGltZW91dCgoKT0+e2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCs9MSllW3RdLnN0eWxlLnRyYW5zaXRpb249InRyYW5zZm9ybSAwLjJzLCBtYXJnaW4gMC4ycyIsZVt0XS5zdHlsZS50cmFuc2Zvcm09IiJ9LDApfWNhdGNoKGUpeygwLHYuc1EpKGUpfX0pKCl9LFtFLGMsdCxBLFldKSwoMCxhLnVzZUVmZmVjdCkoKCk9PntBLmN1cnJlbnQ9dH0sW3RdKSwoMCxhLnVzZUVmZmVjdCkoKCk9PnsoaXx8bnx8ZHx8RCkmJngoKX0sW2ksbixkLERdKTtjb25zdCBUPSgwLGYuSjApKCkse21lc3NhZ2VzT2xkZXJUaGFuT25lRGF5OkYsbWVzc2FnZXNMZXNzVGhhbk9uZURheU9sZDpJLHZpc2libGVNZXNzYWdlczpffT0oMCxhLnVzZU1lbW8pKCgpPT57Y29uc3QgZT10LmZpbHRlcihlPT5NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKS1lLnRpbWVfc2VudD44NjQwMCksbj10LmZpbHRlcihlPT5NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKS1lLnRpbWVfc2VudDw9ODY0MDApO3JldHVybnttZXNzYWdlc09sZGVyVGhhbk9uZURheTplLG1lc3NhZ2VzTGVzc1RoYW5PbmVEYXlPbGQ6bix2aXNpYmxlTWVzc2FnZXM6cz90Om59fSxbdCxzXSksTT0oMCxhLnVzZU1lbW8pKCgpPT5fLmZpbHRlcihlPT5lLnR5cGU9PT10dC5Hby5VUExPQURFRF9GSUxFJiYiaW1hZ2UiPT09ZS5hdHRhY2htZW50VHlwZSkuZmlsdGVyKGU9PmUuaW1hZ2VMb2FkZWQpLFtfXSksTj0oMCxhLnVzZU1lbW8pKCgpPT5fLmZpbHRlcihlPT5lLnR5cGU9PT10dC5Hby5VUExPQURJTkdfRklMRSksW19dKTtyZXR1cm4oMCxhLnVzZUVmZmVjdCkoKCk9PnsoTS5sZW5ndGg+MHx8Ti5sZW5ndGg+MCkmJngoKX0sW00ubGVuZ3RoLE4ubGVuZ3RoXSksKDAsYS51c2VFZmZlY3QpKCgpPT57Y29uc3QgZT1wLmN1cnJlbnQ7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dD0+e2NvbnN0e3RhcmdldDpufT10LGk9ZS5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS15b3V0dWJlLXByZXZpZXddIik7aVtpLmxlbmd0aC0xXT09PW4mJngoKX07cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcihHcyx0KSwoKT0+e2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihHcyx0KX19LFtdKSwoMCxWLkZEKSgiZGl2Iix7aWQ6ImNvbnZlcnNhdGlvbi1ncm91cCIscmVmOnAsY2xhc3NOYW1lOmAke2w/ImRyYWctYWN0aXZlIjoiIn0gJHtUPyJpb3MtaXBhZCI6IiJ9YCxyb2xlOiJsb2ciLGNoaWxkcmVuOlsoMCxWLlkpKFljLHt9KSwoMCxWLlkpKHBjLHt9KSwoMCxWLkZEKSgiZGl2Iix7aWQ6Im1lc3NhZ2VzIiwiYXJpYS1saXZlIjoicG9saXRlIiwiYXJpYS1hdG9taWMiOiJmYWxzZSIsImRhdGEtdGVzdGlkIjoibWVzc2FnZXNMb2ciLGNoaWxkcmVuOltzJiZGLm1hcChlPT4oMCxWLlkpKGxjLHsuLi5lfSxlLmlkKSksIXMmJkYubGVuZ3RoPjAmJigwLFYuWSkobWMse29uQ2xpY2s6KCk9PntlKCgwLGsucE82KShsdC5YLnNob3dQcmV2aW91c01lc3NhZ2VzQ2xpY2tlZCkpLGUoKDAsay5RU0opKCEwKSl9fSksRi5sZW5ndGg+MCYmKDAsVi5ZKSgiZGl2Iix7cmVmOnUsc3R5bGU6e2Zsb2F0OiJsZWZ0IixjbGVhcjoiYm90aCIsd2lkdGg6IjEwMCUifX0pLEkubWFwKGU9PigwLFYuWSkobGMsey4uLmV9LGUuaWQpKSwoMCxWLlkpKF9pLHtpbjppLGNoaWxkcmVuOigwLFYuWSkoS28se30pfSksKDAsVi5ZKShBYyx7b3BlcmF0b3JJc1R5cGluZzpuLGFpQXNzaXN0YW50SXNUaGlua2luZzpkfSldfSksZyYmImZpcmVmb3giIT09Zi5MZCYmIW8mJigwLFYuWSkoZGMse21lc3NhZ2VzTGVuZ3RoOnQubGVuZ3RoLGNvbnZlcnNhdGlvblJlZjpwLmN1cnJlbnQsZG9jdW1lbnRSZWY6Yy5jdXJyZW50LHNob3dPbGRNZXNzYWdlczpzfSldfSl9O2NvbnN0IEZjPXt0cmFuc2l0aW9uOiJtYXgtaGVpZ2h0IDIwMG1zIn0sSWM9KDAsZi5EaikoKS5uYW1lLnRvTG93ZXJDYXNlKCksX2M9KDAsZi5ERCkoKSxNYz17bmFtZToiMXc4MnhzciIsc3R5bGVzOiJtaW4taGVpZ2h0OjA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjE7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjAifTt2YXIgTmM9KCk9Pntjb25zdCBlPSgwLHIuZDQpKEMuS1opLHQ9KDAsci5kNCkoZT0+ZS5pc01vYmlsZSksbj0oMCxyLmQ0KShlPT5lLmhpZGVIZWFkZXIpLGk9KDAsci5kNCkoQy5qNiksbz0oMCxyLmQ0KShDLkFvKSxbc109KDAsYS51c2VTdGF0ZSkoby5sZW5ndGgpLFtsLGRdPSgwLGEudXNlU3RhdGUpKGkmJiF0KSx1PSgwLGEudXNlUmVmKSgwKSxtPSgwLGEudXNlUmVmKSgiIiksYj0oMCxhLnVzZVJlZikoIiIpLFt4LHldPSgwLGEudXNlU3RhdGUpKGUpLEE9KDAsci53QSkoKSx7aXNOZXdTa2luOkV9PSgwLHAuQSkoKSxTPW4mJnQmJiFFO1coe2Rpc2FibGVTY2FsaW5nOnQmJiJpb3MiPT09SWMmJkV9KTtjb25zdCBEPSgwLGEudXNlUmVmKSgxMDApLFk9KDAsYS51c2VSZWYpKHQmJiJpb3MiPT09SWMpLFQ9KDAsYS51c2VSZWYpKHtlbnRlcmluZzp7bWF4SGVpZ2h0OmAke0QuY3VycmVudH1weGB9LGVudGVyZWQ6e21heEhlaWdodDoiMzk5cHgifX0pLEY9KDAsYS51c2VSZWYpKG51bGwpLEk9KDAsci5kNCkoQy5PMSkse2Ryb3B6b25lUHJvcHM6X309YXQoKSxNPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57Y29uc3QgZT0oMCxoLkFMKSgpO2lmKFkuY3VycmVudCl0cnl7ZSYmZS5wYXJlbnQ/LnNjcm9sbFRvKDAsdS5jdXJyZW50KX1jYXRjaChlKXsoMCx2LnNRKShlKX19LFtdKSxOPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57Y29uc3QgZT0oMCxoLkFMKSgpO2lmKHQmJmUpdHJ5e2UucGFyZW50LmRvY3VtZW50LmJvZHkuc3R5bGUuY3NzVGV4dD1tLmN1cnJlbnQsZS5wYXJlbnQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc1RleHQ9Yi5jdXJyZW50fWNhdGNoKGUpeygwLHYuc1EpKCJjbGVhck1vYmlsZVN0eWxlcyBlcnJvciIse2Vycm9yOmV9KX19LFt0XSk7KDAsYS51c2VMYXlvdXRFZmZlY3QpKCgpPT4oKT0+e04oKSxNKCl9LFtOLE1dKSwoMCxhLnVzZUVmZmVjdCkoKCk9Pntjb25zdCBlPSgwLGguQUwpKCk7WS5jdXJyZW50JiYwPT09dS5jdXJyZW50JiZlJiYodS5jdXJyZW50PWUucGFyZW50LnNjcm9sbFkpfSxbXSksKDAsYS51c2VFZmZlY3QpKCgpPT57Y29uc3Qgbj0oMCxoLkFMKSgpO2lmKGU9PT13LmwuY2hhdCYmdCYmbil0cnl7Yi5jdXJyZW50PW4ucGFyZW50LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jc3NUZXh0LG0uY3VycmVudD1uLnBhcmVudC5kb2N1bWVudC5ib2R5LnN0eWxlLmNzc1RleHQ7Y29uc3QgZT1bWyJ0cmFuc2Zvcm0iLCJub25lIl0sWyJmaWx0ZXIiLCJub25lIl0sWyJiYWNrZHJvcC1maWx0ZXIiLCJub25lIl0sWyJwZXJzcGVjdGl2ZSIsIm5vbmUiXSxbImNsaXAtcGF0aCIsIm5vbmUiXSxbImNvbnRhaW4iLCJub25lIl0sWyJ3aWxsLWNoYW5nZSIsImF1dG8iXV0sdD1lLm1hcChlPT57bGV0W3Qsbl09ZTtyZXR1cm5gJHt0fTogJHtufSAhaW1wb3J0YW50O2B9KS5qb2luKCIgIik7bGV0IGk9YG92ZXJmbG93OiBoaWRkZW47IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IHZpc2liaWxpdHk6IHZpc2libGU7IG9wYWNpdHk6IDEgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IGxlZnQ6IDA7IHRvcDowOyByaWdodDogYXV0bzsgYm90dG9tOiBhdXRvOyBtYXJnaW46IDA7ICR7dH1gOyJpb3MiPT09SWMmJiJjaHJvbWUiIT09Zi5MZCYmKGkrPSJwb3NpdGlvbjpmaXhlZDsiKSxuLnBhcmVudC5kb2N1bWVudC5ib2R5LnN0eWxlLmNzc1RleHQ9aTtjb25zdCBhPW4ucGFyZW50LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDthLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLGEuc3R5bGUuc2V0UHJvcGVydHkoIm1hcmdpbiIsIjBweCIsImltcG9ydGFudCIpLGUuZm9yRWFjaChlPT57bGV0W3Qsbl09ZTtyZXR1cm4gYS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4sImltcG9ydGFudCIpfSl9Y2F0Y2h7fX0sW3QsZV0pLCgwLGEudXNlRWZmZWN0KSgoKT0+e2xldCBlO2lmKHg9PT13LmwuY2hhdCYmImhvbWUiPT09SSYmIXQmJiFfYyl7Y29uc3R7d2lkdGg6dH09KDAsZy5MWSkodHQuTk8uQ0hBVF9TSVpFXzEpO2U9c2V0VGltZW91dCgoKT0+e2lmKEYuY3VycmVudCl7Y29uc3R7Y2xpZW50SGVpZ2h0OmV9PUYuY3VycmVudDtGLmN1cnJlbnQuc3R5bGUuaGVpZ2h0PWAke2V9cHhgLEEoKDAsay5vT20pKHR0Lk5PLkRZTkFNSUMse3dpZHRoOnQsaGVpZ2h0OmUrNTF9KSl9fSw1MDApfXJldHVybigpPT57Y2xlYXJUaW1lb3V0KGUpfX0sW0EsdCxJLHhdKSwoMCxhLnVzZUVmZmVjdCkoKCk9PntvLmxlbmd0aD5zJiZ5KHR0LlNzLkNIQVQpfSxbby5sZW5ndGgsc10pO2NvbnN0IE89ImNvbnZlcnNhdGlvbnMiPT09SSxSPSgwLGMucG4pKE8se2Zyb206e29wYWNpdHk6MH0sZW50ZXI6e29wYWNpdHk6MX0sbGVhdmU6e29wYWNpdHk6MH19KTtyZXR1cm4oMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6YGNoYXQgbm8tY2xpcC1wYXRoICR7Zi5MZH1gLHN0eWxlOntiYWNrZ3JvdW5kOiIjZmZmIiwuLi4hdCYme2hlaWdodDpPPzcwMDoiYXV0byIsaW50ZXJwb2xhdGVTaXplOiJhbGxvdy1rZXl3b3JkcyIsdHJhbnNpdGlvbjoiaGVpZ2h0IDIwMG1zIGVhc2UtaW4tb3V0In19LHJlZjpGLGNoaWxkcmVuOigwLFYuRkQpKHN0LHtjaGlsZHJlbjpbKDAsVi5ZKShFaSx7fSksKDAsVi5ZKShGaSx7fSksUyYmKDAsVi5ZKShobyx7fSksUigoZSx0KT0+dD8oMCxWLkZEKShjLkNTLmRpdix7c3R5bGU6ey4uLmUscG9zaXRpb246Tz8icmVsYXRpdmUiOiJhYnNvbHV0ZSJ9LGNzczpNYywuLi5fLGNoaWxkcmVuOlshUyYmKDAsVi5ZKShRYSx7Y2hhdFZpZXdSZWY6Rn0pLGw/KDAsVi5ZKShvdCx7aW46ITAsdGltZW91dDoxLGRlZmF1bHRTdHlsZTpGYyx0cmFuc2l0aW9uU3R5bGVzOlQuY3VycmVudCxvbkFuaW1hdGlvbkVuZGVkOigpPT57ZCghMSl9LGNoaWxkcmVuOigwLFYuWSkoVGMse30pfSk6KDAsVi5ZKShUYyx7fSksKDAsVi5ZKShJYSx7aGFzU2VwYXJhdG9yOiEwfSldfSk6KDAsVi5GRCkoYy5DUy5kaXYse3N0eWxlOnsuLi5lLHBvc2l0aW9uOk8/ImFic29sdXRlIjoicmVsYXRpdmUifSxjc3M6TWMsImRhdGEtdGVzdGlkIjoiaG9tZSIsY2hpbGRyZW46WygwLFYuWSkodW8se30pLCgwLFYuWSkoUG8se30pLCgwLFYuWSkoJG8se30pXX0pKV19KX0pfTt2YXIgT2M9ZT0+e2xldHt0cmFja2luZ0V2ZW50OnR9PWU7Y29uc3Qgbj0oMCxyLndBKSgpLGk9KDAsci5kNCkoZT0+ZS5pc01vYmlsZSksYT0oMCxyLmQ0KShDLlR3KTtyZXR1cm4haSYmYT9udWxsOigwLFYuWSkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJleGl0LWNoYXQiLG9uQ2xpY2s6KCk9PntuKCgwLGsucE82KSh0KSksbigoMCxrLkh6aCkoITEpKSxuKCgwLGsubnB3KSghMSkpfSwiYXJpYS1sYWJlbCI6KDAseS5wdykoImNsb3NlV2lkZ2V0IixudWxsLCJDbG9zZSBjaGF0IHdpZGdldCIpLGNoaWxkcmVuOigwLFYuWSkodXQuYm0se30pfSl9O3ZhciBSYz17bmFtZToicWp1ZWdwIixzdHlsZXM6ImJhY2tncm91bmQtY29sb3I6I2ZmZjtwYWRkaW5nLWJsb2NrOnZhcigtLWZseS1wYWRkaW5nLCAwKTtwYWRkaW5nLWlubGluZTp2YXIoLS1mbHktcGFkZGluZywgMjBweCk7bWF4LXdpZHRoOjM0MHB4O3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbToyNnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXN1cmZhY2UsIDEycHgpO2JveC1zaGFkb3c6dmFyKC0tZmx5LXNoYWRvdyk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt6LWluZGV4OjE7bWF4LWhlaWdodDpjYWxjKDEwMCUgLSA3NnB4KTsuY2hhdC1pbi1wcmV2aWV3ICZ7Ym94LXNoYWRvdzowIDhweCAxM3B4IDAgcmdiYSgwLCAxOCwgNDYsIDAuMTYpO31yaWdodDo0OHB4O21hcmdpbi1sZWZ0OjIwcHg7Lm1vYmlsZSAme21heC13aWR0aDpjYWxjKDEwMCUgLSA0OHB4IC0gNTVweCk7Ji53aXRoLWJ1dHRvbnN7d2lkdGg6Y2FsYygxMDAlIC0gNDhweCAtIDU1cHgpO21heC13aWR0aDoyNTBweDt9fSYubmFycm93ZXJ7bWF4LXdpZHRoOjMwMHB4O30mOmhvdmVyIC5jbG9zZS1idXR0b24td3JhcHBlcntvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoOHB4KTt9LmNsb3NlLWJ1dHRvbi13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbToxMDAlO29wYWNpdHk6MDt3aWR0aDoxMDAlO2hlaWdodDo0NXB4O3RyYW5zaXRpb246dHJhbnNmb3JtIDAuM3Mgb3BhY2l0eSAwLjNzO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwcHgpO2xlZnQ6MDsubW9iaWxlICZ7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDJweCk7fX0uZ3JpZC1sYXlvdXQgJnsuY2xvc2UtYnV0dG9uLXdyYXBwZXJ7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3M7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxMnB4LCAzM3B4KTt9Jjpob3ZlciAuY2xvc2UtYnV0dG9uLXdyYXBwZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxMnB4LCAzM3B4KTt9fS5ncmlkLWxheW91dC5tb2JpbGUgJnsuY2xvc2UtYnV0dG9uLXdyYXBwZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZSg2cHgsIDMzcHgpO30mOmhvdmVyIC5jbG9zZS1idXR0b24td3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlKDZweCwgMzNweCk7fX1idXR0b24uZXhpdC1jaGF0e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7aGVpZ2h0OjI4cHg7d2lkdGg6MjhweDtib3JkZXItcmFkaXVzOjUwJTtib3gtc2hhZG93OjBweCAycHggNnB4IDBweCAjMDAxYjQ3MWY7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JhY2tncm91bmQ6I2ZmZjsubW9iaWxlICZ7aGVpZ2h0OjMycHg7d2lkdGg6MzJweDt9Lm1vYmlsZS5ncmlkLWxheW91dCAme2hlaWdodDoyOHB4O3dpZHRoOjI4cHg7fS5ncmlkLWxheW91dCAme2JveC1zaGFkb3c6MHB4IDJweCA4cHggMHB4IHJnYmEoOCwgMTUsIDI2LCAwLjA4KTt9c3Zne3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7ZmlsbDojODg5NGFiO30ubW9iaWxlICZ7c3Zne3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7fX0ubW9iaWxlLmdyaWQtbGF5b3V0ICZ7c3Zne3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7fX0mOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1iYWNrZ3JvdW5kKTtzdmd7ZmlsbDp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTt9fS5tb2JpbGUgJjpiZWZvcmV7Y29udGVudDonJzt3aWR0aDo0NHB4O2hlaWdodDo0NHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDpjYWxjKDUwJSAtIDIycHgpO2xlZnQ6Y2FsYyg1MCUgLSAyMnB4KTt9fS5pbnB1dC1ncm91cHtwYWRkaW5nOjlweCAyMnB4IDlweCAwO30uaW5wdXQtZ3JvdXAgLmZseS1uZXctbWVzc2FnZS1idXR0b257dHJhbnNpdGlvbjptaW4td2lkdGggMC4zczttaW4td2lkdGg6MTgwcHg7cGFkZGluZzo0cHggMCA4cHg7bGluZS1oZWlnaHQ6MjFweDt0ZXh0LWFsaWduOmxlZnQ7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjE3cHg7Y29sb3I6Izg4OTRhYjt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7Jjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcnt3aGl0ZS1zcGFjZTpub3dyYXA7fSY6Oi1tb3otcGxhY2Vob2xkZXJ7d2hpdGUtc3BhY2U6bm93cmFwO30mOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnt3aGl0ZS1zcGFjZTpub3dyYXA7fSY6LW1vei1wbGFjZWhvbGRlcnt3aGl0ZS1zcGFjZTpub3dyYXA7fX0ubWVzc2FnZS1jb250YWluZXJ7cGFkZGluZzoxOXB4IDA7bWF4LXdpZHRoOjI5MHB4O2ZvbnQtc2l6ZToxN3B4O2JhY2tncm91bmQ6I2ZmZjtwb3NpdGlvbjpyZWxhdGl2ZTt3b3JkLXdyYXA6YnJlYWstd29yZDtvdmVyZmxvdy15OmF1dG87d2hpdGUtc3BhY2U6cHJlLWxpbmU7cGFkZGluZy1yaWdodDozOHB4O3Vse2xpc3Qtc3R5bGUtdHlwZTpkaXNjO31vbHtsaXN0LXN0eWxlLXR5cGU6ZGVjaW1hbDt9dWwsb2x7bWFyZ2luOjEycHggMDtwYWRkaW5nLWxlZnQ6MTZweDt9bGl7cGFkZGluZy1sZWZ0OjRweDttYXJnaW4tYm90dG9tOjhweDt9Ji5pbWFnZS1jb250ZW50e292ZXJmbG93LXk6aGlkZGVuO3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MDtidXR0b257ZmxvYXQ6bGVmdDtoZWlnaHQ6MjAwcHg7d2lkdGg6MTAwJTttaW4td2lkdGg6MjAwcHg7YmFja2dyb3VuZC1jb2xvcjojZmZmOy5pbWFnZS1wcmV2aWV3e2JhY2tncm91bmQtc2l6ZTpjb3ZlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7Ym9yZGVyLXJhZGl1czo4cHg7aGVpZ2h0OjEwMCU7fX1zcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6MTBweDt9fS5tb2JpbGUgJnt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxNXB4O3BhZGRpbmctcmlnaHQ6MjJweDsmLmltYWdlLWNvbnRlbnR7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowO2J1dHRvbntoZWlnaHQ6MTMycHg7bWluLXdpZHRoOmF1dG87fX19Ji5yZWNvbW1lbmQtcHJvZHVjdHMtbWVzc2FnZXtwYWRkaW5nLXJpZ2h0OjBweDtwYWRkaW5nLWJvdHRvbTozMHB4O292ZXJmbG93LXk6dmlzaWJsZTt9JjphZnRlcntjb250ZW50OicnO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZWRlZGU7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDt3aWR0aDpjYWxjKDEwMCUgLSAzOHB4KTsubW9iaWxlICZ7d2lkdGg6Y2FsYygxMDAlIC0gMjJweCk7fX19LmJ1dHRvbi13cmFwcGVye3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwOy5tb2JpbGUgJntmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydDt9YnV0dG9uLC5idXR0b24tdXJse2ZvbnQtc2l6ZToxN3B4O2NvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IsICMwNTY2ZmYpO2JhY2tncm91bmQ6I2ZmZjtsaW5lLWhlaWdodDoyMXB4O21hcmdpbi10b3A6NnB4O21hcmdpbi1ib3R0b206NnB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczttYXgtd2lkdGg6MTAwJTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAwLjJzO21hcmdpbi1yaWdodDoxNnB4O3RleHQtYWxpZ246bGVmdDsmOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTt9Lm1vYmlsZSAme21heC13aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2s7cGFkZGluZzo0cHggMDt9LmVtb2ppe3ZlcnRpY2FsLWFsaWduOnRvcDt9fS5idXR0b24tdXJsX19hbmNob3J7Y29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciwgIzA1NjZmZik7dGV4dC1kZWNvcmF0aW9uOm5vbmU7fS5tb3JlLXJlcGxpZXN7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTtib3JkZXItcmFkaXVzOjIwcHg7cGFkZGluZzozcHggMTBweDtsaW5lLWhlaWdodDo3cHg7YWxpZ24tc2VsZjpjZW50ZXI7Lm1vYmlsZSAme2FsaWduLXNlbGY6ZmxleC1zdGFydDtwYWRkaW5nOjNweCAxMHB4O21hcmdpbjo2cHggMDt9c3Zne3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3dpZHRoOjEzcHg7aGVpZ2h0OjEzcHg7ZmlsbDp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTt9fX1pbWd7bWF4LXdpZHRoOjEwMCU7fSJ9O3ZhciBqYz1lPT4iaW1hZ2UiPT09ZS5hdHRhY2htZW50VHlwZT8oMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6ZS5vbkNsaWNrLGNoaWxkcmVuOigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToiaW1hZ2UtcHJldmlldyIsc3R5bGU6e2JhY2tncm91bmRJbWFnZTpgdXJsKCR7ZS5jb250ZW50fSlgfSwiZGF0YS10ZXN0aWQiOiJpbWFnZVByZXZpZXcifSl9KTooMCxWLlkpKCJidXR0b24iLHtjbGFzc05hbWU6ImxpbmsiLHR5cGU6ImJ1dHRvbiIsb25DbGljazplLm9uQ2xpY2ssc3R5bGU6e2JvcmRlckJvdHRvbToiMXB4IHNvbGlkICMzZjg4ZjMiLGNvbG9yOiIjM2Y4OGYzIn0sY2hpbGRyZW46KDAsVi5ZKShPbix7dmFsdWU6Im1lZGlhRmlsZSIsZmFsbGJhY2s6Ik1lZGlhIGZpbGUifSl9KTtjb25zdCBQYz17bmFtZToidjhxZDBtIixzdHlsZXM6ImRpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6MjBweCJ9O3ZhciB6Yz1lPT57Y29uc3QgdD0oMCxyLndBKSgpLHtjb250ZW50Om4sdHlwZTppLGF0dGFjaG1lbnRUeXBlOmEsY2hhdEJvdElkOm8saWZyYW1lOnMsY2FyZHM6bD1bXSxpZDpkLHJlY29tbWVuZGVkUHJvZHVjdHM6Y309ZS5tZXNzYWdlO2lmKGk9PT1yaS50Xy51cGxvYWRlZEZpbGUpcmV0dXJuKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOmBtZXNzYWdlLWNvbnRhaW5lciAke2F9LWNvbnRlbnRgLGNoaWxkcmVuOigwLFYuWSkoamMse2NvbnRlbnQ6bixvbkNsaWNrOigpPT57dCgoMCxrLnBPNikobHQuWC5mbHlNZXNzYWdlQ2xpY2tlZCkpLHQoKDAsay5nNlEpKHR0LlNzLkNIQVQpKSx0KCgwLGsucTd2KSgiY29udmVyc2F0aW9ucyIpKX0sYXR0YWNobWVudFR5cGU6YX0pfSk7bGV0IHU9bnVsbDtpZihpPT09cmkudF8uY2FyZHMpe2NvbnN0IGU9bFswXT8udGl0bGV8fCIiO3U9Rm4oZSk7Y29uc3Qgbj1sWzBdPy5pbWFnZVVybHx8IiI7aWYobilyZXR1cm4oMCxWLkZEKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlLWNvbnRhaW5lciBpbWFnZS1jb250ZW50IixjaGlsZHJlbjpbKDAsVi5ZKShqYyx7Y29udGVudDpuLG9uQ2xpY2s6KCk9Pnt0KCgwLGsuZzZRKSh0dC5Tcy5DSEFUKSksdCgoMCxrLnE3dikoImNvbnZlcnNhdGlvbnMiKSl9LGF0dGFjaG1lbnRUeXBlOiJpbWFnZSJ9KSwoMCxWLlkpKCJzcGFuIix7Y2xhc3NOYW1lOiJmbHktbWVzc2FnZS0tY2FyZC10aXRsZSIsZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDp1fX0pXX0pfWVsc2V7aWYoaT09PXJpLnRfLmNvdXBvbkNvZGUpe2NvbnN0e2NvdXBvbkNvZGU6dD0iIn09ZS5tZXNzYWdlO3JldHVybiB1PUZuKG4pLCgwLFYuRkQpKCJkaXYiLHtjbGFzc05hbWU6Im1lc3NhZ2UtY29udGFpbmVyIixjaGlsZHJlbjpbKDAsVi5ZKSgiZGl2Iix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDp1fX0pLCgwLFYuWSkoInNwYW4iLHtjc3M6UGMsY2hpbGRyZW46dH0pXX0pfWlmKGk9PT1yaS50Xy5pZnJhbWUpcmV0dXJuKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZS1jb250YWluZXIiLGNoaWxkcmVuOlsoMCxWLlkpKCJwIix7Y2hpbGRyZW46cz8udGl0bGV9KSwoMCxWLlkpKCJiciIse30pLCgwLFYuWSkoInAiLHtjaGlsZHJlbjpzPy5zdWJ0aXRsZX0pXX0pO2lmKGk9PT1yaS50Xy5yZWNvbW1lbmRlZFByb2R1Y3RzKXJldHVybigwLFYuWSkoImRpdiIse2NsYXNzTmFtZToibWVzc2FnZS1jb250YWluZXIgcmVjb21tZW5kLXByb2R1Y3RzLW1lc3NhZ2UiLGNoaWxkcmVuOigwLFYuWSkoamQse3RpdGxlOmM/LnRpdGxlfHwiIixidXR0b25QYXlsb2FkOmM/LmJ1dHRvblBheWxvYWR8fCIiLHByb2R1Y3RzOmM/LnByb2R1Y3RzfHxbXSxjaGF0Qm90SWQ6byxpc0ZseU1lc3NhZ2U6ITAsbWVzc2FnZUlkOmR9KX0pO3U9SW4obil9cmV0dXJuKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJtZXNzYWdlLWNvbnRhaW5lciIsZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDp1fX0pfTt2YXIgTGM9ZT0+e2NvbnN0e2lzTmV3U2tpbjp0fT0oMCxwLkEpKCksbj1lLnNob3dNb3JlUmVwbGllc0J1dHRvbnx8ZS5xdWlja1JlcGxpZXMubGVuZ3RoPmUubWF4QnV0dG9ucyxpPW4/ZS5xdWlja1JlcGxpZXMuc2xpY2UoMCxlLm1heEJ1dHRvbnMtMSk6ZS5xdWlja1JlcGxpZXM7cmV0dXJuKDAsVi5GRCkoImRpdiIse2NsYXNzTmFtZToiYnV0dG9uLXdyYXBwZXIiLGNoaWxkcmVuOltpLm1hcCh0PT4oMCxWLkZEKShhLkZyYWdtZW50LHtjaGlsZHJlbjpbInVybCI9PT10LnR5cGUmJigwLFYuWSkoYWwse3RpdGxlOnQudGl0bGUscGF5bG9hZDp0LnBheWxvYWQsdXJsOnQudXJsLG9uQ2xpY2s6ZS5vbkJ1dHRvbkNsaWNrLG1lc3NhZ2VUeXBlOmUubWVzc2FnZVR5cGV9KSwoImFjdGlvbiI9PT10LnR5cGV8fCJib3QiPT09dC50eXBlfHwidGV4dCI9PT10LnR5cGUpJiYoMCxWLlkpKGlsLHt0aXRsZTp0LnRpdGxlLHBheWxvYWQ6dC5wYXlsb2FkLG9uQ2xpY2s6ZS5vbkJ1dHRvbkNsaWNrfSldfSxgJHt0LnRpdGxlfSR7dC5wYXlsb2FkfWApKSxuJiYoMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToibW9yZS1yZXBsaWVzIixvbkNsaWNrOmUub25Nb3JlQnV0dG9uQ2xpY2ssY2hpbGRyZW46dD8oMCxWLlkpKHV0LnR4LHt9KTooMCxWLlkpKHV0LkpZLHt9KX0pXX0pfTt2YXIgVWM9ZT0+e2NvbnN0IHQ9KDAsci53QSkoKSxuPSgwLHIuZDQpKEMuTnkpO2xldCBpPVtdO2UubWVzc2FnZS50eXBlPT09cmkudF8uY2FyZHM/aT1lLm1lc3NhZ2UuY2FyZHM/LlswXT8uYnV0dG9uc3x8W106ZS5tZXNzYWdlLnF1aWNrUmVwbGllcz9pPWUubWVzc2FnZS5xdWlja1JlcGxpZXM6ZS5tZXNzYWdlLmJ1dHRvbnM/KHtidXR0b25zOml9PWUubWVzc2FnZSk6ZS5tZXNzYWdlLnR5cGU9PT1yaS50Xy5pZnJhbWUmJmUubWVzc2FnZT8uaWZyYW1lJiYoaT1lLm1lc3NhZ2UuaWZyYW1lLmJ1dHRvbnMpO3JldHVybigwLFYuWSkoTGMse3F1aWNrUmVwbGllczppLG1lc3NhZ2VUeXBlOmUubWVzc2FnZS50eXBlLG9uQnV0dG9uQ2xpY2s6KGUsbik9Pnt0KCgwLGsucE82KShsdC5YLmZseU1lc3NhZ2VCdXR0b25zQ2xpY2tlZCkpLHQoKDAsay5SQTcpKG4sZSkpfSxvbk1vcmVCdXR0b25DbGljazooKT0+e3QoKDAsay5nNlEpKHR0LlNzLkNIQVQpKSx0KCgwLGsucTd2KSgiY29udmVyc2F0aW9ucyIpKX0sbWF4QnV0dG9uczpuPzM6NCxzaG93TW9yZVJlcGxpZXNCdXR0b246ZS5tZXNzYWdlLnR5cGU9PT1yaS50Xy5jYXJkcyYmKGUubWVzc2FnZS5jYXJkcz8ubGVuZ3RofHwwKT4xfSl9O2NvbnN0IEJjPSIyMjBweCIsSGM9KGUsdCk9PntpZihlKXJldHVybiBCYztpZigoMCxmLkREKSgpKXJldHVybiIyMzBweCI7Y29uc3Qgbj10JiZ3aW5kb3cuc2NyZWVuLndpZHRoPDM0MCxpPXQmJndpbmRvdy5zY3JlZW4ud2lkdGg8NDEwO3JldHVybiBuPyIxNjBweCI6aT8iMjEwcHgiOiIxMzBweCJ9O3ZhciBxYz1lPT57Y29uc3QgdD0oMCxyLndBKSgpLG49KDAsci5kNCkoQy5OeSksaT1lLm1lc3NhZ2UudHlwZT09PXJpLnRfLnVwbG9hZGVkRmlsZSxhPSgpPT57dCgoMCxrLnBPNikobHQuWC5mbHlNZXNzYWdlQ2xpY2tlZCkpLHQoKDAsay5nNlEpKHR0LlNzLkNIQVQpKSx0KCgwLGsucTd2KSgiY29udmVyc2F0aW9ucyIpKX07cmV0dXJuKDAsVi5ZKShPbix7dmFsdWU6WyJvbmxpbmVNZXNzYWdlUGxhY2Vob2xkZXIiLCJmaWxsT3V0VGhlRm9ybSJdLGNoaWxkcmVuOnQ9PntsZXR7b25saW5lTWVzc2FnZVBsYWNlaG9sZGVyOm8sZmlsbE91dFRoZUZvcm06cn09dDtyZXR1cm4oMCxWLlkpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLHN0eWxlOnt3aWR0aDppP0JjOiJhdXRvIixtaW5XaWR0aDpIYyhpLG4pfSxpZDoibmV3LW1lc3NhZ2UtYnV0dG9uLWZseSIsY2xhc3NOYW1lOiJmbHktbmV3LW1lc3NhZ2UtYnV0dG9uIixvbkNsaWNrOmEsImRhdGEtdGVzdGlkIjoiZmx5TmV3TWVzc2FnZUJ1dHRvbiIsY2hpbGRyZW46ZS5tZXNzYWdlLnR5cGU9PT10dC5Hby5GT1JNP3I6b30pfX0pfTt2YXIgVmM9ZT0+KDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJpbnB1dC1ncm91cCIsY2hpbGRyZW46ZS5oYXNCdXR0b25zPygwLFYuWSkoVWMse21lc3NhZ2U6ZS5tZXNzYWdlfSk6KDAsVi5ZKShxYyx7bWVzc2FnZTplLm1lc3NhZ2V9KX0pO2NvbnN0ICRjPVt0dC5Hby5SRUNPTU1FTkRFRF9QUk9EVUNUU107dmFyIFdjPSgpPT57Y29uc3QgZT0oMCxyLndBKSgpLHQ9KDAsaC5BTCkoKSxuPSgwLGEudXNlUmVmKShudWxsKSxpPSgwLGEudXNlUmVmKShudWxsKSxvPSgwLHIuZDQpKEMuJFkpLHM9KDAsci5kNCkoQy5OeSksbD0oMCxyLmQ0KShDLktaKSxkPSgwLGEudXNlUmVmKShudWxsKSxjPSgwLGEudXNlUmVmKShudWxsKSx1PXZvaWQgMCE9PW8/LnF1aWNrUmVwbGllc3x8dm9pZCAwIT09bz8uY2FyZHN8fHZvaWQgMCE9PW8/LmJ1dHRvbnN8fHZvaWQgMCE9PW8/LmlmcmFtZT8uYnV0dG9ucyxwPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57bGV0IHQ9dT80OTU6MzYyO2NvbnN0IGk9IjEwMCUiO3MmJih0PSIxMDAlIiksbi5jdXJyZW50JiYobi5jdXJyZW50LnN0eWxlLm1heEhlaWdodD0ibm9uZSIpLGUoKDAsay5vT20pKGBkeW5hbWljJHt0fV8ke2l9YCx7d2lkdGg6dCxoZWlnaHQ6aX0pKSxkLmN1cnJlbnQ9dCxjLmN1cnJlbnQ9aX0sW2UsdSxzXSksbT0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+ISF0JiYocCgpLGkuY3VycmVudD10Py5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntpZihuLmN1cnJlbnQpe2xldHtjbGllbnRXaWR0aDp0LGNsaWVudEhlaWdodDppfT1uLmN1cnJlbnQ7aWYocyl7aWYodCs9OTUsaSs9ODAsZC5jdXJyZW50PT09dCYmYy5jdXJyZW50PT09aSlyZXR1cm4gbi5jdXJyZW50LnN0eWxlLmNzc1RleHQ9IiIsITF9ZWxzZSBpZih0Kz05MCxpKz05MCxkLmN1cnJlbnQ9PT10JiZjLmN1cnJlbnQ9PT1pKXJldHVybiBuLmN1cnJlbnQuc3R5bGUuY3NzVGV4dD0iIiwhMTtyZXR1cm4gZSgoMCxrLm9PbSkoYGR5bmFtaWMke3R9XyR7aX1gLHt3aWR0aDp0LGhlaWdodDppfSkpLGQuY3VycmVudD10LGMuY3VycmVudD1pLG4uY3VycmVudC5zdHlsZS5jc3NUZXh0PSIiLCEwfXJldHVybiEwfSksITApLFtlLHAscyx0XSk7cmV0dXJuKDAsYS51c2VFZmZlY3QpKCgpPT57bGV0IGU9bnVsbDtjb25zdCBhPWU9Pntjb25zdCB0PWUudGFyZ2V0OyJuZXctbWVzc2FnZS1idXR0b24tZmx5Ij09PXQ/LmdldEF0dHJpYnV0ZSgiaWQiKSYmbD09PXR0LlNzLkZMWSYmbSgpfTtyZXR1cm4gbi5jdXJyZW50JiYoZT1uLmN1cnJlbnQsZS5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixhKSksbCE9PXR0LlNzLkZMWT9pLmN1cnJlbnQmJih0Py5jYW5jZWxBbmltYXRpb25GcmFtZShpLmN1cnJlbnQpLGkuY3VycmVudD1udWxsKTptKCksKCk9PntlJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLGEpfX0sW20sbCx0XSksKDAsVi5GRCkoImRpdiIse3JlZjpuLCJkYXRhLXRlc3RpZCI6ImZseU1lc3NhZ2UiLGNsYXNzTmFtZTpgZmx5TWVzc2FnZSAke3U/IndpdGgtYnV0dG9ucyI6IiJ9ICR7Zi5MZH0gJHtvPy50eXBlPT09dHQuR28uUkVDT01NRU5ERURfUFJPRFVDVFM/Im5hcnJvd2VyIjoiIn1gLGNzczpSYyxjaGlsZHJlbjpbbyYmKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoemMse21lc3NhZ2U6b30pLCEkYy5pbmNsdWRlcyhvLnR5cGUpJiYoMCxWLlkpKFZjLHttZXNzYWdlOm8saGFzQnV0dG9uczp1fSldfSksKDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOiJjbG9zZS1idXR0b24td3JhcHBlciIsY2hpbGRyZW46KDAsVi5ZKShPYyx7dHJhY2tpbmdFdmVudDpsdC5YLmZseU1lc3NhZ2VDbG9zZWR9KX0pXX0pfTt2YXIgS2M9KCk9Pntjb25zdCBlPSgwLHIuZDQpKGU9PmUudW5yZWFkTWVzc2FnZXMpO3JldHVybigwLFYuWSkoJCx7Y2xhc3NOYW1lczoic2NhbGUiLGluOmU+MCxjaGlsZHJlbjooMCxWLlkpKCJkaXYiLHtpZDoibmV3LW1lc3NhZ2UiLGNsYXNzTmFtZToiYWN0aXZlIixjaGlsZHJlbjplPD05P2U6IjkrIn0pfSl9O2NvbnN0IEdjPXthY3RpdmU6IjBweCA0cHggMjRweCIsaG92ZXI6IjBweCA4cHggMzJweCJ9LFhjPXthY3RpdmU6IjBweCAycHggMTZweCIsaG92ZXI6IjBweCAycHggMTJweCJ9O2Z1bmN0aW9uIFFjKGUsdCl7cmV0dXJuIGU/WGNbdF06R2NbdF19Y2xhc3MgWmMgZXh0ZW5kcyBhLkNvbXBvbmVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksKDAsaS5BKSh0aGlzLCJzdGF0ZSIse2VsZW1lbnRIb3ZlcmVkOiExLGJ1dHRvblNoYWRvdzoiIzAyMDYxMCI9PT10aGlzLnByb3BzLndpZGdldENvbG9yWzNdP2Ake1FjKHRoaXMucHJvcHMuaXNBd2Vzb21lSWZyYW1lLCJhY3RpdmUiKX0gJHsoMCxmLmo1KSh0aGlzLnByb3BzLndpZGdldENvbG9yWzNdLCIuMjAiKX1gOmAke1FjKHRoaXMucHJvcHMuaXNBd2Vzb21lSWZyYW1lLCJhY3RpdmUiKX0gJHsoMCxmLmo1KSh0aGlzLnByb3BzLndpZGdldENvbG9yWzNdLCIuNTAiKX1gLGlzR3JhZGllbnRBY3RpdmU6IiMwMjA2MTAiIT09dGhpcy5wcm9wcy53aWRnZXRDb2xvclszXX0pLCgwLGkuQSkodGhpcywib25CdWJibGVDbGljayIsZT0+e2NvbnN0e2Rpc3BhdGNoOnQsdmlldzpufT10aGlzLnByb3BzLHtjaGF0OmksY2xvc2VkOmEsZmx5Om99PXcubDtyZXR1cm4gMD09PWUubmF0aXZlRXZlbnQucGFnZVgmJjA9PT1lLm5hdGl2ZUV2ZW50LnBhZ2VZfHxlLmN1cnJlbnRUYXJnZXQuYmx1cigpLG49PT1hPyh0KCgwLGsucE82KShsdC5YLndpZGdldEljb25DbGlja2VkKSksdCgoMCxrLk90eikoKSksdm9pZCB0KCgwLGsubnB3KSghMCkpKTpuPT09bz8odCgoMCxrLmc2USkoaSkpLHZvaWQgdCgoMCxrLnE3dikoImNvbnZlcnNhdGlvbnMiKSkpOnZvaWQodGhpcy5wcm9wcy5hbGxvd0Nsb3NlJiYodCgoMCxrLnBPNikobHQuWC5jaGF0Q2xvc2VkKSksdCgoMCxrLkh6aCkoITEpKSx0KCgwLGsubnB3KSghMSkpKSl9KSwoMCxpLkEpKHRoaXMsInNldEhvdmVyU2hhZG93IiwoKT0+e3RoaXMuc2V0U3RhdGUoe2VsZW1lbnRIb3ZlcmVkOiEwfSl9KSwoMCxpLkEpKHRoaXMsInNldERlZmF1bHRTaGFkb3ciLCgpPT57dGhpcy5zZXRTdGF0ZSh7ZWxlbWVudEhvdmVyZWQ6ITF9KX0pfXN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoZSx0KXtyZXR1cm4gdC5lbGVtZW50SG92ZXJlZD90LmVsZW1lbnRIb3ZlcmVkP3tidXR0b25TaGFkb3c6YCR7UWMoZS5pc0F3ZXNvbWVJZnJhbWUsImhvdmVyIil9ICR7KDAsZi5qNSkoZS53aWRnZXRDb2xvclszXSx0LmlzR3JhZGllbnRBY3RpdmU/Ii4yNCI6Ii4yMCIpfWB9Om51bGw6e2J1dHRvblNoYWRvdzpgJHtRYyhlLmlzQXdlc29tZUlmcmFtZSwiYWN0aXZlIil9ICR7KDAsZi5qNSkoZS53aWRnZXRDb2xvclszXSx0LmlzR3JhZGllbnRBY3RpdmU/Ii41MCI6Ii4yMCIpfWB9fXJlbmRlcigpe2NvbnN0e2lzQ2hhdE9uU2l0ZTplLHZpZXc6dCxpc05ld1NraW46bixpc01vYmlsZTppLGFsbG93Q2xvc2U6YX09dGhpcy5wcm9wcyxvPXQhPT13LmwuY2xvc2VkJiZhLHI9dD09PXcubC5jbG9zZWR8fHQ9PT13LmwuZmx5fHwhYSxzPXRoaXMucHJvcHMuc2lkZWJhci5mb250Q29sb3J8fCIjZmZmIjtyZXR1cm4iY2hhdCI9PT10JiYoIW58fGl8fGUmJiFpKT9udWxsOigwLFYuRkQpKCJkaXYiLHtpZDoiYnV0dG9uIiwiZGF0YS10ZXN0aWQiOiJ3aWRnZXRCdXR0b24iLGNsYXNzTmFtZTpgJHt0aGlzLnByb3BzLmlzU2lkZWJhckNvbXBvbmVudD8ic2lkZWJhciI6IiJ9ICR7bz8iY2hhdC1vcGVuIjoiY2hhdC1jbG9zZWQifSBtb2JpbGUtc2l6ZV9fJHt0aGlzLnByb3BzLm1vYmlsZUJ1dHRvblNpemV9YCwiYXJpYS1sYWJlbCI6biYmbz8oMCx5LnB3KSgibWluaW1pemUiLG51bGwsIk1pbmltaXplIik6IiIsY2hpbGRyZW46W3RoaXMucHJvcHMuaXNTaWRlYmFyQ29tcG9uZW50JiYoMCxWLlkpKCJkaXYiLHtjbGFzc05hbWU6InNpZGViYXItY29udGVudCIsc3R5bGU6e2JhY2tncm91bmQ6dGhpcy5wcm9wcy5zaWRlYmFyLmNvbG9yLGNvbG9yOnN9LG9uQ2xpY2s6dGhpcy5vbkJ1YmJsZUNsaWNrLGNoaWxkcmVuOigwLFYuWSkoInNwYW4iLHtjaGlsZHJlbjooMCxWLlkpKE9uLHt2YWx1ZToic2lkZWJhckxhYmVsIn0pfSl9KSwoMCxWLkZEKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixpZDoiYnV0dG9uLWJvZHkiLCJkYXRhLXRlc3RpZCI6IndpZGdldEJ1dHRvbkJvZHkiLG9uQ2xpY2s6dGhpcy5vbkJ1YmJsZUNsaWNrLHN0eWxlOntib3hTaGFkb3c6bj8iMHB4IDJweCA4cHggMHB4ICMwODBGMUExNCwgMHB4IDJweCAycHggMHB4ICMwODBGMUExRiI6dGhpcy5zdGF0ZS5idXR0b25TaGFkb3d9LG9uTW91c2VFbnRlcjp0aGlzLnNldEhvdmVyU2hhZG93LG9uTW91c2VMZWF2ZTp0aGlzLnNldERlZmF1bHRTaGFkb3csY2xhc3NOYW1lOmYuTGQsdGFiSW5kZXg6IjAiLCJhcmlhLWxhYmVsIjpvPygwLHkucHcpKCJjbG9zZVdpZGdldCIsbnVsbCwiQ2xvc2UgY2hhdCB3aWRnZXQiKTooMCx5LnB3KSgib3BlbldpZGdldCIsbnVsbCwiT3BlbiBjaGF0IHdpZGdldCIpLGNoaWxkcmVuOlsoMCxWLlkpKCJpIix7Y2xhc3NOYW1lOiJtYXRlcmlhbC1pY29ucyB0eXBlMSBmb3ItY2xvc2VkICIrKHI/ImFjdGl2ZSI6IiIpLHN0eWxlOntjb2xvcjoidmFyKC0tY3VzdG9tLXRleHQtY29sb3IsICNmZmYpIn0sY2hpbGRyZW46KDAsVi5ZKSh1dC5aaCx7fSl9KSwoMCxWLlkpKCJpIix7Y2xhc3NOYW1lOiJtYXRlcmlhbC1pY29ucyB0eXBlMSBmb3Itb3BlbmVkICIrKHI/IiI6ImFjdGl2ZSIpLHN0eWxlOntjb2xvcjoidmFyKC0tY3VzdG9tLXRleHQtY29sb3IsICNmZmYpIn0sY2hpbGRyZW46KDAsVi5ZKSh1dC5ibSx7fSl9KV19KSwhdGhpcy5wcm9wcy5pc1NpZGViYXJDb21wb25lbnQmJigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsiY2hhdCIhPT10JiYoMCxWLlkpKEtjLHt9KSwoMCxWLlkpKCQse2NsYXNzTmFtZXM6InNjYWxlIixpbjp0aGlzLnByb3BzLmlzU291bmRFbmFibGVkJiZ0aGlzLnByb3BzLmFyZU5vdGlmaWNhdGlvblNub296ZWQsY2hpbGRyZW46KDAsVi5ZKSgiZGl2Iix7aWQ6ImRuZC1pbmRpY2F0b3IiLGNoaWxkcmVuOigwLFYuWSkodXQub0gse30pfSl9KV19KV19KX19WmMuZGVmYXVsdFByb3BzPXtpc1NpZGViYXJDb21wb25lbnQ6ITEsaXNOZXdTa2luOiExfTtjb25zdCBKYz0oMCxyLk5nKShlPT4oe3ZpZXc6KDAsQy5LWikoZSksd2lkZ2V0Q29sb3I6KDAsZi5BcikoZS53aWRnZXRDb2xvciksYXJlTm90aWZpY2F0aW9uU25vb3plZDplLm5vdGlmaWNhdGlvblNub296ZWQsc2lkZWJhcjplLnNpZGViYXJJZnJhbWVTdHlsZXMsbW9iaWxlQnV0dG9uU2l6ZTooMCxDLmVDKShlKSxpc1NvdW5kRW5hYmxlZDplLmlzU291bmRFbmFibGVkLGlzQXdlc29tZUlmcmFtZTooMCxDLml4KShlKSxpc0NoYXRPblNpdGU6KDAsQy5UdykoZSksaXNNb2JpbGU6ZS5pc01vYmlsZSxhbGxvd0Nsb3NlOigwLEMuZW0pKGUpfSkpKFpjKSxldT1lPT57bGV0e2lzU2lkZWJhckNvbXBvbmVudDp0fT1lO2NvbnN0e2lzTmV3U2tpbjpufT0oMCxwLkEpKCk7cmV0dXJuKDAsVi5ZKShKYyx7aXNOZXdTa2luOm4saXNTaWRlYmFyQ29tcG9uZW50OnR9KX07ZXUuZGVmYXVsdFByb3BzPXtpc1NpZGViYXJDb21wb25lbnQ6ITF9O3ZhciB0dT1ldTtjb25zdCBudT17bmFtZToiMTJqOXpzZiIsc3R5bGVzOiJwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6NDJweDtib3R0b206NjFweDt6LWluZGV4OjE7d2hpdGUtc3BhY2U6bm93cmFwO2ZvbnQtc2l6ZToxN3B4O2xpbmUtaGVpZ2h0OjE3cHg7LndpZGdldC1wb3NpdGlvbi1sZWZ0ICZ7LyohIEBub2ZsaXAgKi9sZWZ0OjEwMHB4O30ud2lkZ2V0LXBvc2l0aW9uLXJpZ2h0ICZ7LyohIEBub2ZsaXAgKi9yaWdodDoxMDBweDt9Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCAxNnB4KTtwYWRkaW5nLWJsb2NrOnZhcigtLWxhYmVsLXBhZGRpbmctYmxvY2ssIDEwcHgpO3BhZGRpbmctaW5saW5lOnZhcigtLWxhYmVsLXBhZGRpbmctaW5saW5lLCAxNXB4KTtib3gtc2hhZG93OnZhcigtLWxhYmVsLXNoYWRvdyk7YmFja2dyb3VuZDojZmZmIn0saXU9e25hbWU6IjFtbW5tNnEiLHN0eWxlczoiaGVpZ2h0OmF1dG87bWluLWhlaWdodDo0MnB4O21heC13aWR0aDoyODBweDt3aWR0aDphdXRvO3doaXRlLXNwYWNlOm5vcm1hbDt0ZXh0LWFsaWduOmxlZnQ7bGluZS1oZWlnaHQ6MjBweDtzcGFue2Rpc3BsYXk6LXdlYmtpdC1ib3g7LXdlYmtpdC1saW5lLWNsYW1wOjM7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsO292ZXJmbG93OmhpZGRlbjt3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkO30ifSxhdT0oMCxmLkREKSgpLG91PWU9PmU/OTQ6MTQwO3ZhciBydT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx0PSgwLHIuZDQpKEMuS1opLG49KDAsci5kNCkoQy5peCksaT0oMCxyLmQ0KShDLnhJKSx7aXNOZXdTa2luOm99PSgwLHAuQSkoKSxzPWh0KG8pLGw9KDAsYS51c2VSZWYpKG51bGwpLGQ9KDAsYS51c2VSZWYpKG51bGwpLGM9KDAsYS51c2VSZWYpKG51bGwpLHU9KDAsYS51c2VSZWYpKG51bGwpLGY9KDAsYS51c2VSZWYpKG51bGwpLG09KDAsYS51c2VSZWYpKG51bGwpLGc9KDAsYS51c2VDYWxsYmFjaykoKCk9Pntjb25zdCB0PW91KG4pO2UoKDAsay5vT20pKHR0Lk5PLkRZTkFNSUMse3dpZHRoOjQ1MCxoZWlnaHQ6dH0pKSx1LmN1cnJlbnQ9NDUwLGYuY3VycmVudD10fSxbZSxuXSksYj0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e2lmKCFkLmN1cnJlbnQpcmV0dXJuITE7aWYoYXUpcmV0dXJuIGcoKSwhMDtsZXQgdD0oZT0+ZT85NDoxMTIpKG4pO2NvbnN0IGk9b3Uobik7cmV0dXJuIHQrPSgoKT0+e3RyeXtpZihsLmN1cnJlbnQpe2wuY3VycmVudC5zdHlsZS5jc3NUZXh0PSJ3aWR0aDogYXV0bzsgYWxpZ24tc2VsZjogZmxleC1zdGFydDsgd2hpdGUtc3BhY2U6IG5vd3JhcCI7Y29uc3QgZT1sLmN1cnJlbnQuY2xpZW50V2lkdGg7cmV0dXJuIGwuY3VycmVudC5zdHlsZS5jc3NUZXh0PSIiLGUrMTV9cmV0dXJuIDI1MH1jYXRjaHtyZXR1cm4gMjUwfX0pKCksdS5jdXJyZW50PT09dCYmZi5jdXJyZW50PT09aXx8KG0uY3VycmVudD1kLmN1cnJlbnQ/LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2UoKDAsay5vT20pKHR0Lk5PLkRZTkFNSUMse3dpZHRoOnQsaGVpZ2h0Oml9KSksdS5jdXJyZW50PXR9KSksITB9LFtlLGcsbl0pLHY9KCk9PnttLmN1cnJlbnQmJmQ/LmN1cnJlbnQmJihkLmN1cnJlbnQuY2FuY2VsQW5pbWF0aW9uRnJhbWUobS5jdXJyZW50KSxtLmN1cnJlbnQ9bnVsbCl9OygwLGEudXNlRWZmZWN0KSgoKT0+e2QuY3VycmVudD0oMCxoLkFMKSgpLGMuY3VycmVudD0oMCxoLkdZKSgpLHUuY3VycmVudD1jLmN1cnJlbnQ/LmNsaWVudFdpZHRofHxudWxsLGYuY3VycmVudD1jLmN1cnJlbnQ/LmNsaWVudEhlaWdodHx8bnVsbH0sW10pLCgwLGEudXNlRWZmZWN0KSgoKT0+KHQhPT13LmwuY2xvc2VkP3YoKTpiKCksKCk9PigpPT57digpfSksW2IsdCxpXSksKDAsYS51c2VFZmZlY3QpKCgpPT4oKT0+e3Q9PT13LmwuY2xvc2VkJiZlKCgwLGsub09tKSh0dC5OTy5PTkxZX0JVQkJMRSkpfSxbZSx0XSk7Y29uc3QgeD0oKT0+e2UoKDAsay5wTzYpKGx0Llgud2lkZ2V0TGFiZWxDbGlja2VkKSksZSgoMCxrLk90eikoKSksZSgoMCxrLm5wdykoITApKX07cmV0dXJuKDAsVi5ZKShPbix7dmFsdWU6WyJjaGF0V2l0aFVzTGFiZWwiXSxjaGlsZHJlbjplPT57bGV0e2NoYXRXaXRoVXNMYWJlbDp0fT1lO2NvbnN0IG49aXx8dDtpZigwPT09bi5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgYT1pJiZvP2k6KChlLHQpPT57bGV0IG49ZTtjb25zdCBpPVsuLi5uXSxhPW4ubGVuZ3RoPnQ7Zm9yKDtuLmxlbmd0aD50OylpLnBvcCgpLG49aS5qb2luKCIiKTtyZXR1cm4gYT9gJHtufSZoZWxsaXA7YDpufSkobiwyNSk7cmV0dXJuKDAsVi5ZKSgiYnV0dG9uIix7Y2xhc3NOYW1lOiJ3aWRnZXRMYWJlbCIscmVmOmwsb25DbGljazp4LHR5cGU6ImJ1dHRvbiIsY3NzOltudSxvJiZpJiZpdSxzLnRleHQxNiwiIiwiIl0sY2hpbGRyZW46KDAsVi5ZKSgic3BhbiIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6Rm4oYSl9fSl9KX19KX07Y29uc3Qgc3U9ZT0+e2NvbnN0IHQ9KDAsci5kNCkoQy5LWiksW24saV09KDAsYS51c2VTdGF0ZSkodCE9PXcubC5jbG9zZWQpO3JldHVybiBlLmNoaWxkcmVuKHtoYXNBbmltYXRpb25FbmRlZDpuLG9uQW5pbWF0aW9uRW5kZWQ6KCk9PntpKGU9PiFlKX19KX07c3UucHJvcFR5cGVzPXtjaGlsZHJlbjpHKCkuZnVuYy5pc1JlcXVpcmVkfTt2YXIgbHU9c3U7dmFyIGR1PSgpPT57Y29uc3QgZT0oMCxyLmQ0KShDLktaKSx0PSgwLHIuZDQpKEMuengpLG49Qm9vbGVhbigoMCxZaS5seikoKS5zdGF0ZSksaT1lIT09dy5sLmNsb3NlZDtyZXR1cm4oMCxWLlkpKGx1LHtjaGlsZHJlbjphPT57bGV0e2hhc0FuaW1hdGlvbkVuZGVkOm8sb25BbmltYXRpb25FbmRlZDpyfT1hO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKCQse2luOmU9PT13LmwuZmx5LGNsYXNzTmFtZXM6Im1vdmVGcm9tUmlnaHQiLG9uRXhpdGVkOmU9PT13LmwuY2xvc2VkP3I6dm9pZCAwLHRpbWVvdXQ6MzAwLGNoaWxkcmVuOigwLFYuWSkoV2Mse30pfSksKDAsVi5ZKSgkLHtpbjppJiZlIT09dy5sLmZseSYmbyxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0IixvbkV4aXRlZDpyLHRpbWVvdXQ6NDAwLGNoaWxkcmVuOigwLFYuWSkoTmMse30pfSksdCYmKDAsVi5ZKSgkLHtpbjohaSYmZSE9PXcubC5mbHkmJiFvLGNsYXNzTmFtZXM6Im1vdmVGcm9tTGVmdExhYmVsIix0aW1lb3V0OjMwMCxjaGlsZHJlbjooMCxWLlkpKHJ1LHt9KX0pLCgwLFYuWSkoJCx7aW46IWkmJiFvLGNsYXNzTmFtZXM6ImJ1YmJsZUFuaW1hdGlvblJldHVybiIsdGltZW91dDozMDAsb25FeGl0ZWQ6cixjaGlsZHJlbjooMCxWLlkpKHR1LHt9KX0pLCgwLFYuWSkoJCx7aW46aSYmbyYmIShlPT09dy5sLmNoYXQmJm4pLGNsYXNzTmFtZXM6ImJ1YmJsZUFuaW1hdGlvbiIsdGltZW91dDozMDAsb25FeGl0ZWQ6ZT09PXcubC5mbHk/cjp2b2lkIDAsY2hpbGRyZW46KDAsVi5ZKSh0dSx7fSl9KV19KX19KX07Y29uc3QgY3U9KCk9Pnt9O3ZhciB1dT0oKT0+e2NvbnN0IGU9KDAsci5kNCkoQy5LWiksdD0oMCxyLmQ0KShlPT5lLmlzTW9iaWxlKSxuPSgwLHIuZDQpKEMuengpLGk9Qm9vbGVhbigoMCxZaS5seikoKS5zdGF0ZSksYT1lIT09dy5sLmNsb3NlZDtyZXR1cm4gdD8oMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgkLHtpbjplPT09dy5sLmZseSxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0Iix0aW1lb3V0OjMwMCxjaGlsZHJlbjooMCxWLlkpKFdjLHt9KX0pLCgwLFYuWSkoJCx7aW46YSYmZSE9PXcubC5mbHksY2xhc3NOYW1lczoibW92ZUZyb21SaWdodCIsdGltZW91dDozMDAsY2hpbGRyZW46KDAsVi5ZKShOYyx7fSl9KSwoMCxWLlkpKCQse2luOiEoZT09PXcubC5jaGF0JiZpKSxjbGFzc05hbWVzOiJidWJibGVBbmltYXRpb24iLGNoaWxkcmVuOigwLFYuWSkodHUse30pfSldfSk6KDAsVi5ZKShsdSx7Y2hpbGRyZW46dD0+e2xldHtoYXNBbmltYXRpb25FbmRlZDpvLG9uQW5pbWF0aW9uRW5kZWQ6cn09dDtyZXR1cm4oMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgkLHtpbjplPT09dy5sLmZseSxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0Iix0aW1lb3V0OjMwMCxvbkV4aXRlZDplPT09dy5sLmNsb3NlZD9yOmN1LGNoaWxkcmVuOigwLFYuWSkoV2Mse30pfSksKDAsVi5ZKSgkLHtpbjphJiZlIT09dy5sLmZseSxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0Iix0aW1lb3V0OjMwMCxvbkV4aXRlZDpyLGNoaWxkcmVuOigwLFYuWSkoTmMse30pfSksbiYmKDAsVi5ZKSgkLHtpbjohYSYmZSE9PXcubC5mbHkmJm8sY2xhc3NOYW1lczoibW92ZUZyb21SaWdodExhYmVsIixvbkV4aXRlZDpyLHRpbWVvdXQ6MzAwLGNoaWxkcmVuOigwLFYuWSkocnUse30pfSksKDAsVi5ZKSgkLHtpbjohKGU9PT13LmwuY2hhdCYmaSksY2xhc3NOYW1lczoiYnViYmxlQW5pbWF0aW9uIixvbkVudGVyZWQ6cixjaGlsZHJlbjooMCxWLlkpKHR1LHt9KX0pXX0pfX0pfTtjb25zdCBwdT0oKT0+e2NvbnN0IGU9KDAsci5kNCkoQy5LWiksdD0oMCxyLmQ0KShDLnNTKSxuPUJvb2xlYW4oKDAsWWkubHopKCkuc3RhdGUpLGk9ZSE9PXcubC5jbG9zZWQ7cmV0dXJuKDAsVi5ZKShsdSx7Y2hpbGRyZW46YT0+e2xldHtoYXNBbmltYXRpb25FbmRlZDpvLG9uQW5pbWF0aW9uRW5kZWQ6cn09YTtyZXR1cm4oMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKSgkLHtpbjplPT09dy5sLmZseSYmbyxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0Iix0aW1lb3V0OjMwMCxvbkV4aXRlZDplPT09dy5sLmNsb3NlZHx8ZT09PXcubC5mbHk/cjp2b2lkIDAsY2hpbGRyZW46KDAsVi5ZKShXYyx7fSl9KSwoMCxWLlkpKCQse2luOmkmJmUhPT13LmwuZmx5JiZvLGNsYXNzTmFtZXM6Im1vdmVGcm9tUmlnaHQiLHRpbWVvdXQ6MzAwLG9uRXhpdGVkOnIsY2hpbGRyZW46KDAsVi5ZKShOYyx7fSl9KSwoMCxWLlkpKCQse2luOiFpJiYhbyxjbGFzc05hbWVzOiIiKyh0JiYibGVmdCI9PT10PyJidWJibGVBbmltYXRpb25MZWZ0IjoiYnViYmxlQW5pbWF0aW9uIiksdGltZW91dDozMDAsb25FeGl0ZWQ6cixjaGlsZHJlbjooMCxWLlkpKHR1LHtpc1NpZGViYXJDb21wb25lbnQ6ITB9KX0pLCgwLFYuWSkoJCx7aW46aSYmbyYmIShlPT09dy5sLmNoYXQmJm4pLHRpbWVvdXQ6MzAwLGNsYXNzTmFtZXM6ImJ1YmJsZUFuaW1hdGlvbiIsY2hpbGRyZW46KDAsVi5ZKSh0dSx7fSl9KV19KX19KX07cHUuZGVmYXVsdFByb3BzPXtzaWRlYmFyUG9zaXRpb246InJpZ2h0In07dmFyIGZ1PXB1O3ZhciBtdT0oMCxyLk5nKShlPT4oe3ZpZXc6KDAsQy5LWikoZSksaXNNb2JpbGU6ZS5pc01vYmlsZX0pKShlPT57aWYoImxlZnQiPT09ZS53aWRnZXRQb3NpdGlvbiYmZS5pc01vYmlsZSl7Y29uc3QgdD1lLnZpZXchPT13LmwuY2xvc2VkO3JldHVybigwLFYuWSkobHUse2NoaWxkcmVuOm49PntsZXR7aGFzQW5pbWF0aW9uRW5kZWQ6aSxvbkFuaW1hdGlvbkVuZGVkOmF9PW47cmV0dXJuKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoJCx7aW46ZS52aWV3PT09dy5sLmZseSxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0IixvbkV4aXRlZDplLnZpZXc9PT13LmwuY2xvc2VkP2E6dm9pZCAwLHRpbWVvdXQ6MzAwLGNoaWxkcmVuOigwLFYuWSkoV2Mse30pfSksKDAsVi5ZKSgkLHtpbjp0JiZlLnZpZXchPT13LmwuZmx5JiZpLGNsYXNzTmFtZXM6Im1vdmVGcm9tUmlnaHQiLG9uRXhpdGVkOmEsdGltZW91dDo0MDAsY2hpbGRyZW46KDAsVi5ZKShOYyx7fSl9KSwoMCxWLlkpKCQse2luOiF0JiYhaSxjbGFzc05hbWVzOiJidWJibGVBbmltYXRpb25SZXR1cm4iLHRpbWVvdXQ6MzAwLG9uRXhpdGVkOmEsY2hpbGRyZW46KDAsVi5ZKSh0dSx7fSl9KSwoMCxWLlkpKCQse2luOnQmJmksY2xhc3NOYW1lczoiYnViYmxlQW5pbWF0aW9uIix0aW1lb3V0OjMwMCxvbkV4aXRlZDplLnZpZXc9PT13LmwuZmx5P2E6dm9pZCAwLGNoaWxkcmVuOigwLFYuWSkodHUse30pfSldfSl9fSl9cmV0dXJuKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoJCx7aW46ZS52aWV3PT09dy5sLmZseSxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0Iix0aW1lb3V0OjMwMCxjaGlsZHJlbjooMCxWLlkpKFdjLHt9KX0pLCgwLFYuWSkoJCx7aW46ZS52aWV3IT09dy5sLmNsb3NlZCYmZS52aWV3IT09dy5sLmZseSxjbGFzc05hbWVzOiJtb3ZlRnJvbVJpZ2h0Iix0aW1lb3V0OjMwMCxjaGlsZHJlbjooMCxWLlkpKE5jLHt9KX0pLCgwLFYuWSkoJCx7aW46ITAsY2xhc3NOYW1lczoiYnViYmxlQW5pbWF0aW9uIixjaGlsZHJlbjooMCxWLlkpKHR1LHt9KX0pXX0pfSk7dmFyIGh1PSgpPT57Y29uc3QgZT0oMCxhLnVzZVJlZikoIiIpLHQ9KDAsci5kNCkoZT0+ZS51bnJlYWRNZXNzYWdlcyksbj0oMCxyLmQ0KShlPT5lLmlzUGFnZVZpc2libGUpLGk9KDAsYS51c2VSZWYpKG51bGwpLG89KDAsYS51c2VSZWYpKCExKSxbc109KDAsYS51c2VTdGF0ZSkoKCk9PlJlZ0V4cChgXFwoWzAtOV0rXFwpICR7KDAseS5wdykoIm5ld01lc3NhZ2VUaXRsZSIsbnVsbCwiTmV3IG1lc3NhZ2UiKX0kYCkpO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+e3RyeXtlLmN1cnJlbnQ9d2luZG93LnBhcmVudC5kb2N1bWVudC50aXRsZX1jYXRjaHtvLmN1cnJlbnQ9ITB9fSxbXSksKDAsYS51c2VFZmZlY3QpKCgpPT57aWYoIW8uY3VycmVudCl7aS5jdXJyZW50JiYoY2xlYXJJbnRlcnZhbChpLmN1cnJlbnQpLGkuY3VycmVudD1udWxsKTt0cnl7IW4mJnQ/aS5jdXJyZW50PXNldEludGVydmFsKCgpPT57ZS5jdXJyZW50PT09d2luZG93LnBhcmVudC5kb2N1bWVudC50aXRsZXx8cy50ZXN0KHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGl0bGUpfHwoZS5jdXJyZW50PXdpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGl0bGUpLHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGl0bGU9PT1lLmN1cnJlbnQ/d2luZG93LnBhcmVudC5kb2N1bWVudC50aXRsZT1gKCR7dH0pICR7KDAseS5wdykoIm5ld01lc3NhZ2VUaXRsZSIsbnVsbCwiTmV3IG1lc3NhZ2UiKX1gOndpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGl0bGU9ZS5jdXJyZW50fSwxZTMpOnMudGVzdCh3aW5kb3cucGFyZW50LmRvY3VtZW50LnRpdGxlKSYmKHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGl0bGU9ZS5jdXJyZW50KX1jYXRjaHt9cmV0dXJuKCk9PntpZighby5jdXJyZW50KXtpLmN1cnJlbnQmJihjbGVhckludGVydmFsKGkuY3VycmVudCksaS5jdXJyZW50PW51bGwpO3RyeXtzLnRlc3Qod2luZG93LnBhcmVudC5kb2N1bWVudC50aXRsZSkmJih3aW5kb3cucGFyZW50LmRvY3VtZW50LnRpdGxlPWUuY3VycmVudCl9Y2F0Y2h7fX19fX0sW24sdCxzXSksbnVsbH07Y2xhc3MgZ3UgZXh0ZW5kcyBhLkNvbXBvbmVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksKDAsaS5BKSh0aGlzLCJvbldpbmRvd1Zpc2liaWxpdHlDaGFuZ2UiLCgpPT57dGhpcy5zZXRWaXNpYmlsaXR5U3RhdGUoKX0pLCgwLGkuQSkodGhpcywiYXBwQXZhcmlhbnQiLCgpPT50aGlzLnByb3BzLmlzQ2hhdE9uU2l0ZT8oMCxWLlkpKG11LHt3aWRnZXRQb3NpdGlvbjp0aGlzLnByb3BzLndpZGdldFBvc2l0aW9ufSk6dGhpcy5wcm9wcy5pc1NpZGViYXJFbmFibGVkPygwLFYuWSkoZnUse30pOiJsZWZ0Ij09PXRoaXMucHJvcHMud2lkZ2V0UG9zaXRpb24/KDAsVi5ZKShkdSx7fSk6KDAsVi5ZKSh1dSx7fSkpfWNvbXBvbmVudERpZE1vdW50KCl7dHJ5e3dpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLm9uV2luZG93VmlzaWJpbGl0eUNoYW5nZSksdGhpcy5zZXRWaXNpYmlsaXR5U3RhdGUoKX1jYXRjaChlKXsoMCx2LnNRKShlKX13aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJzZXRTdGF0dXMiLHRoaXMucHJvcHMuaXNQcm9qZWN0T25saW5lPyJvbmxpbmUiOiJvZmZsaW5lIil9Y29tcG9uZW50RGlkVXBkYXRlKGUpe2Uud2lkZ2V0UG9zaXRpb24hPT10aGlzLnByb3BzLndpZGdldFBvc2l0aW9uJiZ0aGlzLnByb3BzLnNldFdpZGdldFBvc2l0aW9uKHRoaXMucHJvcHMud2lkZ2V0UG9zaXRpb24pfWNvbXBvbmVudFdpbGxVbm1vdW50KCl7d2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHRoaXMub25XaW5kb3dWaXNpYmlsaXR5Q2hhbmdlKX1zZXRWaXNpYmlsaXR5U3RhdGUoKXtjb25zdHt2aXNpYmlsaXR5U3RhdGU6ZX09ZG9jdW1lbnQ7cmV0dXJuInZpc2libGUiIT09ZT8odGhpcy5wcm9wcy5kaXNwYXRjaCgoMCxrLnBIdSkoITEpKSwhMSk6KHRoaXMucHJvcHMuZGlzcGF0Y2goKDAsay5wSHUpKCEwKSksITApfXJlbmRlcigpe3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlshdGhpcy5wcm9wcy5pc1NvdW5kRW5hYmxlZCYmKDAsVi5ZKShodSx7fSksKDAsVi5ZKShZaS5BeSx7Y2hpbGRyZW46dGhpcy5hcHBBdmFyaWFudCgpfSldfSl9fXZhciBidT0oMCxyLk5nKShlPT4oe3dpZGdldFBvc2l0aW9uOmUuY2hhdElmcmFtZVN0eWxlcy53aWRnZXRQb3NpdGlvbixpc1NpZGViYXJFbmFibGVkOmUuc2lkZWJhcklmcmFtZVN0eWxlcyxpc0NoYXRPblNpdGU6KDAsQy5UdykoZSksaXNQcm9qZWN0T25saW5lOmUuaXNQcm9qZWN0T25saW5lLGlzU291bmRFbmFibGVkOmUuaXNTb3VuZEVuYWJsZWR9KSkoZ3UpO2NvbnN0IHZ1PWEubGF6eSgoKT0+bi5lKDc0MikudGhlbihuLmJpbmQobiw1MDczKSkpO3ZhciB4dT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx0PSgwLHIuZDQpKEMuSkkpO3JldHVybiB0PygwLFYuWSkoby5BeSx7dGl0bGU6IlRpZGlvIENoYXQgLSBJZnJhbWUgTW9kYWwiLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixwb3NpdGlvbjoiZml4ZWQiLHRvcDoiMCIsbGVmdDoiMCIsekluZGV4OjIxNDc0ODMwMDIsYm9yZGVyOjB9LC4uLmYud2gsY2hpbGRyZW46KDAsVi5ZKShEaSx7b25EaWRDYXRjaDooKT0+e2UoKDAsay5RVCQpKG51bGwpKX0sY2hpbGRyZW46KDAsVi5ZKShhLlN1c3BlbnNlLHtmYWxsYmFjazpudWxsLGNoaWxkcmVuOigwLFYuWSkodnUse3VybDp0fSl9KX0pfSk6bnVsbH07Y29uc3QgeXU9YS5sYXp5KCgpPT5uLmUoNzQyKS50aGVuKG4uYmluZChuLDE0NzcpKSksd3U9KCk9PigwLFYuWSkoImRpdiIse30pO3ZhciBrdT1lPT57bGV0e3NoYWRvd1Jvb3Q6dH09ZTtjb25zdCBuPSgwLHIud0EpKCksaT0oMCxyLmQ0KShlPT5lLmlmcmFtZU1vZGFsVXJsKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGkmJiIiIT09aSYmdD8oMCxGLmNyZWF0ZVBvcnRhbCkoKDAsVi5ZKShEaSx7b25EaWRDYXRjaDooKT0+e24oKDAsay5RVCQpKG51bGwpKX0sY2hpbGRyZW46KDAsVi5ZKShhLlN1c3BlbnNlLHtmYWxsYmFjazooMCxWLlkpKHd1LHt9KSxjaGlsZHJlbjooMCxWLlkpKHl1LHt1cmw6aSxzaGFkb3dSb290OnR9KX0pfSksdCk6bnVsbH07Y29uc3QgQXU9YS5sYXp5KCgpPT5uLmUoNTY2KS50aGVuKG4uYmluZChuLDQxOTYpKSksQ3U9KCk9PigwLFYuWSkoImRpdiIse30pO3ZhciBFdT0oKT0+e2NvbnN0IGU9KDAsci53QSkoKSx0PSgwLHIuZDQpKGU9PmUucG9wdXBJbWFnZVNyYyk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYiIiE9PXQ/KDAsVi5ZKShvLkF5LHt0aXRsZToiVGlkaW8gQ2hhdCAtIEltYWdlIFBvcHVwIixzdHlsZTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIscG9zaXRpb246ImZpeGVkIix0b3A6IjAiLGxlZnQ6IjAiLHpJbmRleDoyMTQ3NDgzMDAzLGJvcmRlcjowfSxpZDoidGlkaW8tY2hhdC1pbWFnZS1wb3B1cCIsLi4uZi53aCxjaGlsZHJlbjooMCxWLlkpKERpLHtvbkRpZENhdGNoOigpPT57ZSgoMCxrLnlybikoKSl9LGNoaWxkcmVuOigwLFYuWSkoYS5TdXNwZW5zZSx7ZmFsbGJhY2s6KDAsVi5ZKShDdSx7fSksY2hpbGRyZW46KDAsVi5ZKShBdSx7aW1hZ2VTcmM6dH0pfSl9KX0pOm51bGx9O2NvbnN0IFN1PWEubGF6eSgoKT0+bi5lKDU2NikudGhlbihuLmJpbmQobiw5NDQpKSksRHU9KCk9PigwLFYuWSkoImRpdiIse30pO3ZhciBZdT1lPT57bGV0e3NoYWRvd1Jvb3Q6dH09ZTtjb25zdCBuPSgwLHIud0EpKCksaT0oMCxyLmQ0KShlPT5lLnBvcHVwSW1hZ2VTcmMpO3JldHVybiJzdHJpbmciPT10eXBlb2YgaSYmIiIhPT1pJiZ0PygwLEYuY3JlYXRlUG9ydGFsKSgoMCxWLlkpKERpLHtvbkRpZENhdGNoOigpPT57bigoMCxrLnlybikoKSl9LGNoaWxkcmVuOigwLFYuWSkoYS5TdXNwZW5zZSx7ZmFsbGJhY2s6KDAsVi5ZKShEdSx7fSksY2hpbGRyZW46KDAsVi5ZKShTdSx7aW1hZ2VTcmM6aSxzaGFkb3dSb290OnR9KX0pfSksdCk6bnVsbH0sVHU9big0NDMwKTtjb25zdCBGdT0oKT0+e2NvbnN0IGU9KDAsYS51c2VSZWYpKCExKSx0PSgwLGEudXNlUmVmKShudWxsKSxuPSgwLHIud0EpKCksaT0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e2xldCBlPW51bGw7cmV0dXJuIHQuY3VycmVudCYmKGU9dC5jdXJyZW50LHQuY3VycmVudD1udWxsKSxlfSxbXSksbz0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+eygwLGYub04pKCgpPT57c2V0VGltZW91dCgoKT0+e3RyeXtjb25zdHtocmVmOmV9PXdpbmRvdy5wYXJlbnQubG9jYXRpb247ZS5pbmNsdWRlcyhUdS5kJCk/bigoMCxrLm5wdykoITApKTpuKCgwLGsubnB3KSghMSkpfWNhdGNoe319LDApfSl9LFtuXSkscz0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e3RyeXtpZighd2luZG93LnBhcmVudD8uaGlzdG9yeSlyZXR1cm4hMTtjb25zdHtocmVmOm59PXdpbmRvdy5wYXJlbnQubG9jYXRpb247cmV0dXJuKGU9PnshZS5pbmNsdWRlcygiIyIpfHxlLmluY2x1ZGVzKFR1LmQkKXx8ZS5pbmNsdWRlcyhUdS5LMyl8fGUuaW5jbHVkZXMoVHUud0kpfHwodC5jdXJyZW50PWUpfSkobiksbi5pbmNsdWRlcyhUdS5kJCl8fHdpbmRvdy5wYXJlbnQuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwibW9iaWxlLXdpZGdldCIsVHUuZCQpLGUuY3VycmVudHx8KG8oKSxlLmN1cnJlbnQ9ITApLCEwfWNhdGNoe3JldHVybiExfX0sW29dKTtyZXR1cm4oMCxhLnVzZUVmZmVjdCkoKCk9PihzKCksKCk9PntzZXRUaW1lb3V0KCgpPT57dHJ5e2NvbnN0e2hyZWY6ZX09d2luZG93LnBhcmVudC5sb2NhdGlvbjtpZihlLmluY2x1ZGVzKFR1LmQkKSl7Y29uc3QgdD1pKCl8fGUucmVwbGFjZShUdS5kJCwiIik7d2luZG93LnBhcmVudC5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCIiLHQpfX1jYXRjaHt9fSwwKX0pLFtzLGldKSxudWxsfTt2YXIgSXU9KCk9Pntjb25zdCBlPSgwLHIuZDQpKEMuTnkpLHQ9KDAsci5kNCkoQy5LWiksbj0oMCxyLmQ0KShDLlhMKTtyZXR1cm4gZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHdpbmRvdy5wYXJlbnQ9PT13aW5kb3cudG9wfWNhdGNoe3JldHVybiExfX0oKSYmZSYmdCE9PXcubC5jbG9zZWQmJnQhPT13LmwuZmx5JiZuPygwLFYuWSkoRnUse30pOm51bGx9O2NvbnN0IF91PSgpPT57Y29uc3QgZT0oMCxhLnVzZVJlZikoITEpLHQ9KDAsci53QSkoKSxuPSgwLGEudXNlQ2FsbGJhY2spKCgpPT57KDAsZi5vTikoKCk9PntzZXRUaW1lb3V0KCgpPT57dHJ5e2NvbnN0e2hyZWY6ZX09d2luZG93LnBhcmVudC5sb2NhdGlvbjtlLmluY2x1ZGVzKFR1LkszKT90KCgwLGsubnB3KSghMCkpOmUuaW5jbHVkZXMoVHUud0kpJiZ0KCgwLGsubnB3KSghMSkpfWNhdGNoe319LDApfSl9LFt0XSksaT0oMCxhLnVzZUNhbGxiYWNrKSgoKT0+e3RyeXtpZighd2luZG93LnBhcmVudD8ubG9jYXRpb24pcmV0dXJuITE7Y29uc3R7aHJlZjppfT13aW5kb3cucGFyZW50LmxvY2F0aW9uO3JldHVybiBpLmluY2x1ZGVzKFR1LkszKT90KCgwLGsubnB3KSghMCkpOmkuaW5jbHVkZXMoVHUud0kpJiZ0KCgwLGsubnB3KSghMSkpLGUuY3VycmVudHx8KG4oKSxlLmN1cnJlbnQ9ITApLCEwfWNhdGNoe3JldHVybiExfX0sW24sdF0pO3JldHVybigwLGEudXNlRWZmZWN0KSgoKT0+KGkoKSwoKT0+e2UuY3VycmVudD0hMX0pLFtpXSksbnVsbH07dmFyIE11PSgpPT5mdW5jdGlvbigpe3RyeXtyZXR1cm4gd2luZG93LnBhcmVudD09PXdpbmRvdy50b3B9Y2F0Y2h7cmV0dXJuITF9fSgpPygwLFYuWSkoX3Use30pOm51bGw7dmFyIE51PSgpPT4oMCxWLkZEKShWLkZLLHtjaGlsZHJlbjpbKDAsVi5ZKShJdSx7fSksKDAsVi5ZKShNdSx7fSldfSk7dmFyIE91PXtuYW1lOiJiYWdlb3ciLHN0eWxlczoiLmF3ZXNvbWUtaWZyYW1ley5vbmx5QnViYmxlLC5idWJibGVXaXRoTGFiZWx7I2J1dHRvbntoZWlnaHQ6OTRweDt3aWR0aDo5NHB4O2JvdHRvbTowO319LndpZGdldC1wb3NpdGlvbi1sZWZ0ey53aWRnZXRMYWJlbHsvKiEgQG5vZmxpcCAqL2xlZnQ6MTAwcHg7fSYuYnViYmxlV2l0aExhYmVsIC53aWRnZXRMYWJlbHsvKiEgQG5vZmxpcCAqL2xlZnQ6OTFweDt9fS53aWRnZXQtcG9zaXRpb24tcmlnaHR7LndpZGdldExhYmVsey8qISBAbm9mbGlwICovcmlnaHQ6MTAwcHg7fSYuYnViYmxlV2l0aExhYmVsIC53aWRnZXRMYWJlbHsvKiEgQG5vZmxpcCAqL3JpZ2h0OjkxcHg7fX0uYnViYmxlV2l0aExhYmVsIC53aWRnZXRMYWJlbHtib3R0b206MjZweDt9LndpZGdldExhYmVse2JvdHRvbTo2MXB4O3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eTt9Ji5tb2JpbGV7LmNoYXQrLmNoYXQtY2xvc2Vke2JvdHRvbTowIWltcG9ydGFudDt9LmZseU1lc3NhZ2UrLmNoYXQtY2xvc2Vke2JvdHRvbTowIWltcG9ydGFudDt9fVtjbGFzcyo9J2NoYXRTaXplJ10gLmNoYXQtY2xvc2VkICNkbmQtaW5kaWNhdG9ye3RyYW5zaXRpb246bm9uZTt9Lm9ubHlCdWJibGUsLmJ1YmJsZVdpdGhMYWJlbHsjbmV3LW1lc3NhZ2UsI2RuZC1pbmRpY2F0b3J7dG9wOjE0cHg7cmlnaHQ6MTRweDt0cmFuc2l0aW9uOm5vbmU7fSNuZXctbWVzc2FnZSsjZG5kLWluZGljYXRvcntyaWdodDozcHg7fX0ub25seUJ1YmJsZUxhcmdleyNuZXctbWVzc2FnZSwjZG5kLWluZGljYXRvcnt0b3A6MTRweDtyaWdodDoyMHB4O3RyYW5zaXRpb246bm9uZTt9I25ldy1tZXNzYWdlKyNkbmQtaW5kaWNhdG9ye3JpZ2h0OjEwcHg7fX0ub25seUJ1YmJsZU1lZGl1bXsjbmV3LW1lc3NhZ2UsI2RuZC1pbmRpY2F0b3J7dG9wOjdweDt0cmFuc2l0aW9uOm5vbmU7fX0ub25seUJ1YmJsZVNtYWxseyNuZXctbWVzc2FnZSwjZG5kLWluZGljYXRvcnt0b3A6LTNweDt0cmFuc2l0aW9uOm5vbmU7cmlnaHQ6M3B4O30jbmV3LW1lc3NhZ2UrI2RuZC1pbmRpY2F0b3J7cmlnaHQ6LTdweDt9fS5vbmx5QnViYmxlU21hbGwsLm9ubHlCdWJibGVNZWRpdW0sLm9ubHlCdWJibGVMYXJnZXsjYnV0dG9ue3RyYW5zaXRpb246bm9uZTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKTt9fS5vbmx5QnViYmxlU21hbGwgI2J1dHRvbnt3aWR0aDo2MHB4O2hlaWdodDo2MHB4O30ub25seUJ1YmJsZU1lZGl1bSAjYnV0dG9ue3dpZHRoOjgwcHg7aGVpZ2h0OjgwcHg7fS5vbmx5QnViYmxlTGFyZ2UgI2J1dHRvbnt3aWR0aDo5NHB4O2hlaWdodDo5NHB4O319In07dmFyIFJ1PXtuYW1lOiIxbXVlYjNwIixzdHlsZXM6Imh0bWwsOmhvc3R7Ym94LXNpemluZzpib3JkZXItYm94IWltcG9ydGFudDtjb2xvci1zY2hlbWU6bGlnaHQ7fSosKjpiZWZvcmUsKjphZnRlcntib3gtc2l6aW5nOmluaGVyaXQ7fWlucHV0OjpwbGFjZWhvbGRlcix0ZXh0YXJlYTo6cGxhY2Vob2xkZXJ7Y29sb3I6Izg4OTRhYjtvcGFjaXR5OjE7fWlucHV0OmZvY3VzLGlucHV0OmFjdGl2ZSx0ZXh0YXJlYTpmb2N1cyx0ZXh0YXJlYTphY3RpdmUsc2VsZWN0OmZvY3VzLHNlbGVjdDphY3RpdmV7Ym9yZGVyOjA7b3V0bGluZTowO310YWJsZXtib3JkZXItc3BhY2luZzowO31pe3VzZXItc2VsZWN0Om5vbmU7fXVse2xpc3Qtc3R5bGUtdHlwZTpub25lO31we21hcmdpbjowO30uZW1vaml7d2lkdGg6MjBweDttYXJnaW46MCAycHggLTVweCAycHg7dXNlci1zZWxlY3Q6bm9uZTt9LmxhbmctcnRsey8qISBAbm9mbGlwICovZGlyZWN0aW9uOnJ0bDt1bmljb2RlLWJpZGk6ZW1iZWQ7fS53aWRnZXQtcG9zaXRpb24tbGVmdHsuY2hhdHtyaWdodDoyNnB4O2xlZnQ6YXV0bzsubW9iaWxlICZ7LyohIEBub2ZsaXAgKi9yaWdodDowO319I2J1dHRvbnsmOm5vdCguc2lkZWJhcil7LyohIEBub2ZsaXAgKi9sZWZ0OjBweDsvKiEgQG5vZmxpcCAqL3JpZ2h0OmF1dG87fSYuYnViYmxlQW5pbWF0aW9uLWV4aXR7cmlnaHQ6MHB4O2xlZnQ6YXV0bzt9Ji5jaGF0LW9wZW57cmlnaHQ6MHB4O2xlZnQ6YXV0bzsubW9iaWxlICZ7cmlnaHQ6MHB4O2xlZnQ6YXV0bzt9fX19LmxhbmctcnRsIC5kaXJlY3Rpb25hbC1pY29ue3RyYW5zZm9ybTpzY2FsZVgoLTEpO31AbWVkaWEgcHJpbnR7LmZyYW1lLWNvbnRlbnR7ZGlzcGxheTpub25lIWltcG9ydGFudDt9fS5ncmlkLWxheW91dHttYXgtd2lkdGg6MzcycHg7bWFyZ2luOjI0cHggMjRweCA1MnB4IDI0cHg7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGU6J2NvbnRlbnQnIDFmciAnYnViYmxlJyBhdXRvO2dhcDoxMnB4OyYud2lkZ2V0LXBvc2l0aW9uLXJpZ2h0e3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjAgMCAwIGF1dG87fSYuc2lkZWJhci1wb3NpdGlvbi1yaWdodDpoYXMoLnNpZGViYXIpe3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjAgMCAwIGF1dG87fSYud2lkZ2V0LXBvc2l0aW9uLWxlZnR7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MCBhdXRvIDAgMDt9Ji5zaWRlYmFyLXBvc2l0aW9uLWxlZnQ6aGFzKC5zaWRlYmFyKXtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowIGF1dG8gMCAwO30mLm1vYmlsZS5jaGF0LW9uLXNpdGV7cG9zaXRpb246Zml4ZWQ7fSY6bm90KC5tb2JpbGUpLmNoYXQtb24tc2l0ZXtpbnNldDowO21hcmdpbjoyMHB4IGF1dG87fSY+Kntwb2ludGVyLWV2ZW50czphdXRvO30mLm1vYmlsZXttYXJnaW46MTRweDt9JjpoYXMoLnNpZGViYXIpe21hcmdpbjowO30uZmx5TWVzc2FnZXtncmlkLWFyZWE6Y29udGVudDttaW4td2lkdGg6MjIwcHg7bWF4LXdpZHRoOjMyMHB4O3BhZGRpbmc6MTBweDsubWVzc2FnZS1jb250YWluZXJ7cGFkZGluZzoxMHB4IDEwcHggMXB4O21heC13aWR0aDozMjBweDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxOHB4OzphZnRlcntkaXNwbGF5Om5vbmU7fSYuaW1hZ2UtY29udGVudHttYXJnaW46LTEwcHggLTEwcHggMDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLXJhZGl1cy1zdXJmYWNlKTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1yYWRpdXMtc3VyZmFjZSk7cGFkZGluZzowO3dpZHRoOjMyMHB4O21heC13aWR0aDpjYWxjKDEwMCUgKyAyMHB4KTtzcGFue21hcmdpbi10b3A6MjBweDtwYWRkaW5nLWlubGluZToyMHB4O30uaW1hZ2UtcHJldmlld3tib3JkZXItcmFkaXVzOjA7fX19LmlucHV0LWdyb3Vwe3BhZGRpbmc6MjBweCAxMHB4IDEwcHg7Ym9yZGVyOm5vbmU7ZGlzcGxheTpmbGV4Oy5mbHktbmV3LW1lc3NhZ2UtYnV0dG9ue3BhZGRpbmc6MTJweCAxNnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCk7Ym9yZGVyOjFweCBzb2xpZCByZ2IoMjExLCAyMTksIDIyOSk7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MThweDtmbGV4OjE7fX0uYnV0dG9uLXdyYXBwZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiKDIxMSwgMjE5LCAyMjkpO3BhZGRpbmctdG9wOjIwcHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7YnV0dG9uLC5idXR0b24tdXJse2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE4cHg7bWFyZ2luOjA7fWJ1dHRvbi5tb3JlLXJlcGxpZXN7d2lkdGg6MzJweDtoZWlnaHQ6MThweDtwYWRkaW5nOjA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLXNlbGY6ZmxleC1zdGFydDt9fX0uY2hhdHtncmlkLWFyZWE6Y29udGVudDtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDphdXRvIDAgMDtqdXN0aWZ5LXNlbGY6Y2VudGVyO2FsaWduLXNlbGY6ZW5kO21heC1oZWlnaHQ6MTAwJTsubW9iaWxlJntwb3NpdGlvbjpmaXhlZDt9fSY6bm90KC5tb2JpbGUpLmNoYXQtb24tc2l0ZXsuY2hhdHthbGlnbi1zZWxmOmNlbnRlcjtpbnNldDphdXRvIDA7fX0jYnV0dG9uOm5vdCguc2lkZWJhcil7Z3JpZC1hcmVhOmJ1YmJsZTtwb3NpdGlvbjpyZWxhdGl2ZTtpbnNldDowO3dpZHRoOmF1dG87aGVpZ2h0OmF1dG87anVzdGlmeS1zZWxmOnJpZ2h0O3RyYW5zZm9ybS1vcmlnaW46Ym90dG9tIHJpZ2h0Oy53aWRnZXQtcG9zaXRpb24tbGVmdCZ7anVzdGlmeS1zZWxmOmxlZnQ7fS5tb2JpbGUgJnt0cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm0tb3JpZ2luOmJvdHRvbSByaWdodDt9Lm1vYmlsZSAud2lkZ2V0LXBvc2l0aW9uLWxlZnQme3RyYW5zZm9ybS1vcmlnaW46Ym90dG9tIGxlZnQ7fX0ud2lkZ2V0TGFiZWx7Z3JpZC1hcmVhOmJ1YmJsZTtqdXN0aWZ5LXNlbGY6cmlnaHQ7Ym90dG9tOmluaXRpYWw7YWxpZ24tc2VsZjpjZW50ZXI7cmlnaHQ6NjhweCFpbXBvcnRhbnQ7LndpZGdldC1wb3NpdGlvbi1sZWZ0JntqdXN0aWZ5LXNlbGY6bGVmdDtyaWdodDppbml0aWFsIWltcG9ydGFudDtsZWZ0OjY4cHghaW1wb3J0YW50O319I25ldy1tZXNzYWdlLCNkbmQtaW5kaWNhdG9ye3RvcDotNHB4O3JpZ2h0Oi00cHg7fSNidXR0b257I25ldy1tZXNzYWdlOm5vdCg6bGFzdC1jaGlsZCl7cmlnaHQ6NHB4O30jbmV3LW1lc3NhZ2UrI2RuZC1pbmRpY2F0b3I6bGFzdC1jaGlsZHtyaWdodDotOHB4O319LmZseU1lc3NhZ2V7aW5zZXQ6aW5pdGlhbDthbGlnbi1zZWxmOmVuZDtqdXN0aWZ5LXNlbGY6ZW5kO21hcmdpbjowOy53aWRnZXQtcG9zaXRpb24tbGVmdCZ7anVzdGlmeS1zZWxmOnN0YXJ0O319fSJ9O3ZhciBqdT17bmFtZToiMWp2anBwdSIsc3R5bGVzOiJib2R5LCNib2R5LDpob3N0LGlucHV0LHRleHRhcmVhLHNlbGVjdCxidXR0b257Zm9udC1mYW1pbHk6J1RpZGlvSW50ZXInLHNhbnMtc2VyaWY7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7Y29sb3I6IzA4MGYxYTtsZXR0ZXItc3BhY2luZzpub3JtYWw7fSJ9O3ZhciBQdT17bmFtZToiY3ZxanJ3IixzdHlsZXM6IkBrZXlmcmFtZXMgcmlwcGxle2Zyb217YmFja2dyb3VuZDpyZ2JhKDIzOSwgMjQyLCAyNDYsIDApO3RyYW5zZm9ybTpzY2FsZSgwLjUpO301MCV7YmFja2dyb3VuZDpyZ2JhKDIzOSwgMjQyLCAyNDYsIDAuNik7dHJhbnNmb3JtOnNjYWxlKDEpO310b3tiYWNrZ3JvdW5kOnJnYmEoMjM5LCAyNDIsIDI0NiwgMCk7dHJhbnNmb3JtOnNjYWxlKDIpO319Lm1vYmlsZXstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLCAwLCAwLCAwKTsuY2hhdHt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvdHRvbTowO2JhY2tncm91bmQ6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JvcmRlci1yYWRpdXM6MDtyaWdodDowO2xlZnQ6YXV0bzttYXgtaGVpZ2h0Om5vbmU7fS5pbnB1dC1ncm91cHthbGlnbi1zZWxmOmZsZXgtZW5kO3RleHRhcmVhe3BhZGRpbmctcmlnaHQ6NTBweDt9YnV0dG9uLC5idXR0b24tdXJse21hcmdpbi1ib3R0b206MDt9fSNjb252ZXJzYXRpb24tZ3JvdXB7bWF4LWhlaWdodDpub25lO2ZsZXg6MSAxIGF1dG87b3ZlcmZsb3cteTpzY3JvbGw7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7fSNidXR0b257d2lkdGg6ODBweDtoZWlnaHQ6MTAwcHg7Ym90dG9tOjA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC4yczt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTJweCk7LyohIEBub2ZsaXAgKi9yaWdodDowcHg7LyohIEBub2ZsaXAgKi9sZWZ0OmF1dG87Ji5jaGF0LW9wZW57cmlnaHQ6MHB4O2xlZnQ6YXV0bzt9Ji5zaWRlYmFye3dpZHRoOjUwcHg7fSYuY2hhdC1jbG9zZWQ6bm90KC5zaWRlYmFyKXsmLm1vYmlsZS1zaXpleyZfX3NtYWxse3RyYW5zZm9ybTpzY2FsZSgwLjYpO30mX19tZWRpdW17dHJhbnNmb3JtOnNjYWxlKDAuOCk7fX19fSNuZXctbWVzc2FnZXt0b3A6MTdweDtyaWdodDoxM3B4OyYrI2RuZC1pbmRpY2F0b3J7cmlnaHQ6MnB4O30mLmFjdGl2ZXthbmltYXRpb246c2hha2UgMC44MnMgY3ViaWMtYmV6aWVyKDAuMzYsIDAuMDcsIDAuMTksIDAuOTcpIGJvdGg7fX0jZG5kLWluZGljYXRvcnt0b3A6MTdweDtyaWdodDoxM3B4O31idXR0b24ucmlwcGxle3RvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247Jjo6YWZ0ZXJ7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6NTBweDt3aWR0aDowcHg7dG9wOmNhbGMoNTAlIC0gMjVweCk7YmFja2dyb3VuZDpyZ2JhKDIzOSwgMjQyLCAyNDYsIDApO2JvcmRlci1yYWRpdXM6NTAlO3otaW5kZXg6LTE7d2lsbC1jaGFuZ2U6dHJhbnNmb3JtLG9wYWNpdHk7bGVmdDpjYWxjKDUwJSAtIDI1cHgpO30mOm5vdCg6YWN0aXZlKTo6YWZ0ZXJ7YW5pbWF0aW9uOnJpcHBsZSAwLjNzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246d2lkdGggMC4zcyBzdGVwLWVuZDt9JjphY3RpdmU6OmFmdGVye3dpZHRoOjUwcHg7dHJhbnNpdGlvbjp3aWR0aCAwcyBzdGVwLXN0YXJ0O319LndpZGdldC1wb3NpdGlvbi1sZWZ0ICNidXR0b24uY2hhdC1vcGVue3JpZ2h0OjA7bGVmdDphdXRvO30uY2hhdC1oZWFkZXJ7cGFkZGluZzoxMnB4IDE2cHggMTZweDt9fSJ9O3ZhciB6dT17bmFtZToieDRsd284IixzdHlsZXM6ImJvZHksI2JvZHksOmhvc3QsaW5wdXQsdGV4dGFyZWEsc2VsZWN0LGJ1dHRvbntmb250LWZhbWlseTonTXVsaXNoJyxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjI0cHg7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7Y29sb3I6IzA2MTMyYjt9In07dmFyIEx1PXtuYW1lOiIxeGVuNHJlIixzdHlsZXM6Ii5ib3RzTGlzdEZhZGUtZW50ZXJ7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MnB4KTsmLmJvdHNMaXN0RmFkZS1lbnRlci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC02MHB4KTt9fS5ib3RzTGlzdEZhZGUtYXBwZWFye29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTJweCk7Ji5ib3RzTGlzdEZhZGUtYXBwZWFyLWFjdGl2ZXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTYwcHgpO319LmJvdHNMaXN0RmFkZS1leGl0e29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNjBweCk7Ji5ib3RzTGlzdEZhZGUtZXhpdC1hY3RpdmV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MnB4KTt9fS5mYWRlLWVudGVye29wYWNpdHk6MC4wMTsmLmZhZGUtZW50ZXItYWN0aXZle3RyYW5zaXRpb246b3BhY2l0eSAwLjNzO29wYWNpdHk6MTt9fS5mYWRlLWV4aXR7b3BhY2l0eToxO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzOyYuZmFkZS1leGl0LWFjdGl2ZXtvcGFjaXR5OjAuMDE7fX0uZmFkZTIwMC1lbnRlcntvcGFjaXR5OjAuMDE7Ji5mYWRlMjAwLWVudGVyLWFjdGl2ZXt0cmFuc2l0aW9uOm9wYWNpdHkgMC4ycztvcGFjaXR5OjE7fX0uZmFkZTIwMC1leGl0e29wYWNpdHk6MTt0cmFuc2l0aW9uOm9wYWNpdHkgMC4yczsmLmZhZGUyMDAtZXhpdC1hY3RpdmV7b3BhY2l0eTowLjAxO319LmVtb2ppRmFkZS1lbnRlcntvcGFjaXR5OjAuMDE7Ym90dG9tOmNhbGMoMTAwJSAtIDEwcHgpOyYuZW1vamlGYWRlLWVudGVyLWFjdGl2ZXtvcGFjaXR5OjE7Ym90dG9tOjEwMCU7dHJhbnNpdGlvbjphbGwgMC4zczt9fS5lbW9qaUZhZGUtZXhpdHtvcGFjaXR5OjE7Ym90dG9tOjEwMCU7dHJhbnNpdGlvbjphbGwgMC4zczsmLmVtb2ppRmFkZS1leGl0LWFjdGl2ZXtvcGFjaXR5OjAuMDE7Ym90dG9tOmNhbGMoMTAwJSAtIDEwcHgpO319LnNjYWxlLWVudGVye3RyYW5zZm9ybTpzY2FsZSgwLjAxKTtvcGFjaXR5OjA7Ji5zY2FsZS1lbnRlci1hY3RpdmV7dHJhbnNmb3JtOnNjYWxlKDEpO29wYWNpdHk6MTt9fS5zY2FsZS1leGl0e3RyYW5zZm9ybTpzY2FsZSgxKTtvcGFjaXR5OjE7Ji5zY2FsZS1leGl0LWFjdGl2ZXt0cmFuc2Zvcm06c2NhbGUoMC4wMSk7b3BhY2l0eTowO319I2J1dHRvbi5zaWRlYmFye3RyYW5zaXRpb246b3BhY2l0eSAwLjNzLHRyYW5zZm9ybSAwLjNzOyYuYnViYmxlQW5pbWF0aW9uLWFwcGVhcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCg4cHgpO29wYWNpdHk6MC4wMTt9Ji5idWJibGVBbmltYXRpb24tYXBwZWFyLWFjdGl2ZXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTt9Ji5idWJibGVBbmltYXRpb24tZW50ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KTtvcGFjaXR5OjAuMDE7fSYuYnViYmxlQW5pbWF0aW9uLWVudGVyLWFjdGl2ZXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTt9Ji5idWJibGVBbmltYXRpb24tZXhpdHtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTt9Ji5idWJibGVBbmltYXRpb24tZXhpdC1hY3RpdmV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KTtvcGFjaXR5OjAuMDE7fX1bY2xhc3N+PSdzaWRlYmFyLWVuYWJsZWQnXTpub3QoW2NsYXNzfj0nZ3JpZC1sYXlvdXQnXSkgLmNoYXQrI2J1dHRvbjpub3QoLnNpZGViYXIpe29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lO3Zpc2liaWxpdHk6aGlkZGVuO30jYnV0dG9uOm5vdCguc2lkZWJhcil7Ji5idWJibGVBbmltYXRpb24tYXBwZWFye3RyYW5zZm9ybTp0cmFuc2xhdGVYKDhweCk7b3BhY2l0eTowLjAxOyYuYnViYmxlQW5pbWF0aW9uLWFwcGVhci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsdHJhbnNmb3JtIDAuM3M7fX0mLmJ1YmJsZUFuaW1hdGlvbi1lbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCg4cHgpO29wYWNpdHk6MC4wMTsmLmJ1YmJsZUFuaW1hdGlvbi1lbnRlci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7fX0mLmJ1YmJsZUFuaW1hdGlvbi1leGl0e29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpOy5sYW5nLXJ0bCAme2Rpc3BsYXk6bm9uZTt9Ji5idWJibGVBbmltYXRpb24tZXhpdC1hY3RpdmV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KTtvcGFjaXR5OjAuMDE7fX19LndpZGdldC1wb3NpdGlvbi1sZWZ0ICNidXR0b246bm90KC5zaWRlYmFyKXsmLmJ1YmJsZUFuaW1hdGlvbi1hcHBlYXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLThweCk7b3BhY2l0eTowLjAxOyYuYnViYmxlQW5pbWF0aW9uLWFwcGVhci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsdHJhbnNmb3JtIDAuM3M7fX0mLmJ1YmJsZUFuaW1hdGlvbi1lbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtOHB4KTtvcGFjaXR5OjAuMDE7Ji5idWJibGVBbmltYXRpb24tZW50ZXItYWN0aXZle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO319Ji5idWJibGVBbmltYXRpb24tZXhpdHtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTsubGFuZy1ydGwgJntkaXNwbGF5Om5vbmU7fSYuYnViYmxlQW5pbWF0aW9uLWV4aXQtYWN0aXZle3RyYW5zZm9ybTp0cmFuc2xhdGVYKC04cHgpO29wYWNpdHk6MC4wMTt9fS5tb2JpbGUgJnsmLmJ1YmJsZUFuaW1hdGlvbi1leGl0e2Rpc3BsYXk6bm9uZTt9Ji5idWJibGVBbmltYXRpb25SZXR1cm4tZXhpdC1hY3RpdmV7ZGlzcGxheTpub25lO319fS53aWRnZXQtcG9zaXRpb24tbGVmdCAjYnV0dG9uOm5vdCguc2lkZWJhcil7Ji5idWJibGVBbmltYXRpb25SZXR1cm4tYXBwZWFye29wYWNpdHk6MC4wMTsmLmJ1YmJsZUFuaW1hdGlvblJldHVybi1hcHBlYXItYWN0aXZle29wYWNpdHk6MTt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zczt9fSYuYnViYmxlQW5pbWF0aW9uUmV0dXJuLWVudGVye29wYWNpdHk6MC4wMTsmLmJ1YmJsZUFuaW1hdGlvblJldHVybi1lbnRlci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzO319Ji5idWJibGVBbmltYXRpb25SZXR1cm4tZXhpdHtvcGFjaXR5OjE7Ji5idWJibGVBbmltYXRpb25SZXR1cm4tZXhpdC1hY3RpdmV7b3BhY2l0eTowLjAxO319Lm1vYmlsZSAmeyYuYnViYmxlQW5pbWF0aW9uLWV4aXR7ZGlzcGxheTpub25lO30mLmJ1YmJsZUFuaW1hdGlvblJldHVybi1leGl0LWFjdGl2ZXtkaXNwbGF5Om5vbmU7fX19LnNpZGViYXItcG9zaXRpb24tbGVmdCAjYnV0dG9uLnNpZGViYXJ7Ji5idWJibGVBbmltYXRpb25MZWZ0LWV4aXR7b3BhY2l0eToxOy8qISBAbm9mbGlwICovbGVmdDowcHg7fSYuYnViYmxlQW5pbWF0aW9uTGVmdC1leGl0LWFjdGl2ZXsvKiEgQG5vZmxpcCAqL2xlZnQ6LThweDtvcGFjaXR5OjAuMDE7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsbGVmdCAwLjNzO30mLmJ1YmJsZUFuaW1hdGlvbkxlZnQtYXBwZWFyey8qISBAbm9mbGlwICovbGVmdDotOHB4O29wYWNpdHk6MC4wMTt9Ji5idWJibGVBbmltYXRpb25MZWZ0LWFwcGVhci1hY3RpdmV7b3BhY2l0eToxOy8qISBAbm9mbGlwICovbGVmdDowcHg7fSYuYnViYmxlQW5pbWF0aW9uTGVmdC1lbnRlcnsvKiEgQG5vZmxpcCAqL2xlZnQ6LThweDtvcGFjaXR5OjAuMDE7fSYuYnViYmxlQW5pbWF0aW9uTGVmdC1lbnRlci1hY3RpdmV7b3BhY2l0eToxOy8qISBAbm9mbGlwICovbGVmdDowcHg7fX0ubW92ZUZyb21SaWdodC1hcHBlYXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KTtvcGFjaXR5OjAuMDE7Ji5tb3ZlRnJvbVJpZ2h0LWFwcGVhci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsdHJhbnNmb3JtIDAuM3M7fX0ubW92ZUZyb21SaWdodC1lbnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCg4cHgpO29wYWNpdHk6MC4wMTsmLm1vdmVGcm9tUmlnaHQtZW50ZXItYWN0aXZle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzLHRyYW5zZm9ybSAwLjNzO319Lm1vdmVGcm9tUmlnaHQtZXhpdHtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyx0cmFuc2Zvcm0gMC4zczsmLm1vdmVGcm9tUmlnaHQtZXhpdC1hY3RpdmV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KTtvcGFjaXR5OjAuMDE7fX0ubW92ZUZyb21SaWdodExhYmVsLWFwcGVhcnsvKiEgQG5vZmxpcCAqL3JpZ2h0OjkycHg7b3BhY2l0eTowLjAxOyYubW92ZUZyb21SaWdodExhYmVsLWFwcGVhci1hY3RpdmV7b3BhY2l0eToxOy8qISBAbm9mbGlwICovcmlnaHQ6MTAwcHg7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MscmlnaHQgMC4zczt9fS5tb3ZlRnJvbVJpZ2h0TGFiZWwtZW50ZXJ7LyohIEBub2ZsaXAgKi9yaWdodDo5MnB4O29wYWNpdHk6MC4wMTsmLm1vdmVGcm9tUmlnaHRMYWJlbC1lbnRlci1hY3RpdmV7b3BhY2l0eToxOy8qISBAbm9mbGlwICovcmlnaHQ6MTAwcHg7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MscmlnaHQgMC4zczt9fS5tb3ZlRnJvbVJpZ2h0TGFiZWwtZXhpdHtvcGFjaXR5OjE7LyohIEBub2ZsaXAgKi9yaWdodDoxMDBweDt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyxyaWdodCAwLjNzOyYubW92ZUZyb21SaWdodExhYmVsLWV4aXQtYWN0aXZley8qISBAbm9mbGlwICovcmlnaHQ6OTJweDtvcGFjaXR5OjAuMDE7fX0ubW92ZUZyb21MZWZ0TGFiZWwtYXBwZWFyey8qISBAbm9mbGlwICovdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLThweCk7b3BhY2l0eTowLjAxOyYubW92ZUZyb21MZWZ0TGFiZWwtYXBwZWFyLWFjdGl2ZXtvcGFjaXR5OjE7LyohIEBub2ZsaXAgKi90cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzLHRyYW5zZm9ybSAwLjNzO319Lm1vdmVGcm9tTGVmdExhYmVsLWVudGVyey8qISBAbm9mbGlwICovdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLThweCk7b3BhY2l0eTowLjAxOyYubW92ZUZyb21MZWZ0TGFiZWwtZW50ZXItYWN0aXZle29wYWNpdHk6MTsvKiEgQG5vZmxpcCAqL3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsdHJhbnNmb3JtIDAuM3M7fX0ubW92ZUZyb21MZWZ0TGFiZWwtZXhpdHtvcGFjaXR5OjE7LyohIEBub2ZsaXAgKi90cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzLHRyYW5zZm9ybSAwLjNzOyYubW92ZUZyb21MZWZ0TGFiZWwtZXhpdC1hY3RpdmV7LyohIEBub2ZsaXAgKi90cmFuc2Zvcm06dHJhbnNsYXRlWCgtOHB4KTtvcGFjaXR5OjAuMDE7fX1ib2R5Om5vdCgubW9iaWxlKSAud2lkZ2V0LXBvc2l0aW9uLWxlZnQgLmNoYXQsI2JvZHk6bm90KC5tb2JpbGUpIC53aWRnZXQtcG9zaXRpb24tbGVmdCAuY2hhdHsmLm1vdmVGcm9tUmlnaHQtYXBwZWFye3RyYW5zZm9ybTp0cmFuc2xhdGVYKDhweCk7b3BhY2l0eTowLjAxOyYubW92ZUZyb21SaWdodC1hcHBlYXItYWN0aXZle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzLHRyYW5zZm9ybSAwLjNzO319Ji5tb3ZlRnJvbVJpZ2h0LWVudGVye3RyYW5zZm9ybTp0cmFuc2xhdGVYKDhweCk7b3BhY2l0eTowLjAxOyYubW92ZUZyb21SaWdodC1lbnRlci1hY3RpdmV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsdHJhbnNmb3JtIDAuM3M7fX0mLm1vdmVGcm9tUmlnaHQtZXhpdHtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyx0cmFuc2Zvcm0gMC4zczsmLm1vdmVGcm9tUmlnaHQtZXhpdC1hY3RpdmV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoOHB4KTtvcGFjaXR5OjAuMDE7fX19Lm9wZXJhdG9yVHlwaW5nLWVudGVye29wYWNpdHk6MC4wMTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMHB4KTsmLm9wZXJhdG9yVHlwaW5nLWVudGVyLWFjdGl2ZXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwcHgpO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzLHRyYW5zZm9ybSAwLjNzO29wYWNpdHk6MTt9fS5vcGVyYXRvclR5cGluZy1leGl0e2Rpc3BsYXk6bm9uZTt9In07Y29uc3QgVXU9W3tuYW1lOiJ3bjBhNXkiLHN0eWxlczoiLmNoYXR7d2lkdGg6MzcycHg7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjI2cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtc3VyZmFjZSwgMTZweCk7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2hhZG93OjAgOHB4IDE4cHggMCByZ2JhKDAsIDE4LCA0NiwgMC4xNik7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MTtyaWdodDoyNnB4O2xlZnQ6YXV0bzt9dGV4dGFyZWF7Ym9yZGVyOjA7d2lkdGg6MTAwJTtmb250LXNpemU6MTZweDtwYWRkaW5nOjIwcHggMCAxNHB4IDA7cmVzaXplOm5vbmU7bGluZS1oZWlnaHQ6MjBweDtvdmVyZmxvdy14OmhpZGRlbjstbXMtb3ZlcmZsb3ctc3R5bGU6bm9uZTt9QGtleWZyYW1lcyBzaGFrZXsxMCUsOTAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKDFweCk7fTIwJSw4MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTFweCk7fTMwJSw1MCUsNzAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKDJweCk7fTQwJSw2MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTJweCk7fX1idXR0b24sYnV0dG9uLm1hdGVyaWFsLWljb25ze2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtsaW5lLWhlaWdodDpub3JtYWw7b3ZlcmZsb3c6dmlzaWJsZTtwYWRkaW5nOjA7dXNlci1zZWxlY3Q6bm9uZTtvdXRsaW5lOm5vbmU7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwgMCwgMCwgMCk7fWJ1dHRvbi5tYXRlcmlhbC1pY29uczo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MDtwYWRkaW5nOjA7fWJ1dHRvbi5saW5re2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM0NDQ7fSJ9LHtuYW1lOiIxYmowam16IixzdHlsZXM6ImJvZHl7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowO31zdmd7ZmlsbDojZmZmO3RyYW5zaXRpb246YWxsIDAuMnMgZWFzZS1pbi1vdXQ7fSNidXR0b257cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTEycHg7aGVpZ2h0OjE0MHB4O2JvdHRvbToxMnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MTsvKiEgQG5vZmxpcCAqL3JpZ2h0OjA7Ji5jaGF0LW9wZW46bm90KC5zaWRlYmFyKXtyaWdodDowO2xlZnQ6YXV0bzt9YnV0dG9ue2l7aGVpZ2h0OjI2cHg7d2lkdGg6MjZweDtwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7dHJhbnNpdGlvbjphbGwgMC4ycyBlYXNlLWluLW91dDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Ji5hY3RpdmV7b3BhY2l0eToxO30mLnR5cGUxe3N2Z3tmaWxsOmN1cnJlbnRDb2xvcjt9Ji5mb3Itb3BlbmVke3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7c3Zne3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7fX19Ji5mb3ItY2xvc2Vkey8qISBAbm9mbGlwICovdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwcHgpOyYuYWN0aXZley8qISBAbm9mbGlwICovdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7fX0mLmZvci1vcGVuZWR7LyohIEBub2ZsaXAgKi90cmFuc2Zvcm06dHJhbnNsYXRlWCgxMHB4KTsmLmFjdGl2ZXsvKiEgQG5vZmxpcCAqL3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApO319fSY6aG92ZXIsJjpmb2N1c3t0cmFuc2Zvcm06c2NhbGUoMS4xKTt9JjphY3RpdmV7dHJhbnNmb3JtOnNjYWxlKDAuOSk7fX0uc2lkZWJhci1jb250ZW50OmhvdmVye34jYnV0dG9uLWJvZHl7Ym9keTpub3QoLm1vYmlsZSkgJiwjYm9keTpub3QoLm1vYmlsZSkgJnt0cmFuc2Zvcm06c2NhbGUoMS4xKTt9fX0mLnNpZGViYXJ7d2lkdGg6NTBweDtwb2ludGVyLWV2ZW50czphdXRvO2JvdHRvbTpjYWxjKDUwJSAtIDEwMHB4KTtzdmd7d2lkdGg6MTVweDtoZWlnaHQ6MTVweDt9LnNpZGViYXItcG9zaXRpb24tbGVmdCAmey8qISBAbm9mbGlwICovbGVmdDowOy8qISBAbm9mbGlwICovcmlnaHQ6YXV0bzsuc2lkZWJhci1jb250ZW50ey8qISBAbm9mbGlwICovdHJhbnNmb3JtLW9yaWdpbjpsZWZ0IHRvcDsvKiEgQG5vZmxpcCAqL3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKTsvKiEgQG5vZmxpcCAqL2xlZnQ6MDsvKiEgQG5vZmxpcCAqL3JpZ2h0OmF1dG87LyohIEBub2ZsaXAgKi9ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7LyohIEBub2ZsaXAgKi9ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjI4cHg7LyohIEBub2ZsaXAgKi9wYWRkaW5nOjAgMjBweCAwIDMwcHg7fSNidXR0b24tYm9keXsvKiEgQG5vZmxpcCAqL2xlZnQ6N3B4O319LnNpZGViYXItY29udGVudHtiYWNrZ3JvdW5kOiMzMTNmYTA7Y29sb3I6I2ZmZjsvKiEgQG5vZmxpcCAqL3BhZGRpbmc6MCAzMHB4IDAgMjBweDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDozMHB4O2hlaWdodDozMHB4O2ZvbnQtd2VpZ2h0OjcwMDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47LyohIEBub2ZsaXAgKi9ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czoyOHB4Oy8qISBAbm9mbGlwICovYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7LyohIEBub2ZsaXAgKi90cmFuc2Zvcm06cm90YXRlKDkwZGVnKTsvKiEgQG5vZmxpcCAqL3RyYW5zZm9ybS1vcmlnaW46cmlnaHQgdG9wO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowOy8qISBAbm9mbGlwICovcmlnaHQ6MDt3aGl0ZS1zcGFjZTpub3dyYXA7bWF4LXdpZHRoOjQwMHB4O3NwYW57ZGlzcGxheTppbmxpbmUtYmxvY2s7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpO21heC13aWR0aDoyNjVweDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47fSY6aG92ZXJ7Y3Vyc29yOnBvaW50ZXI7fX0jYnV0dG9uLWJvZHl7cG9zaXRpb246YWJzb2x1dGU7LyohIEBub2ZsaXAgKi9yaWdodDo3cHg7Ym90dG9tOjIwcHg7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtib3gtc2hhZG93OjAgNnB4IDIwcHggMCByZ2JhKDAsIDE4LCA0NiwgMC4yNCk7fWJ1dHRvbntpLm1hdGVyaWFsLWljb25zLnR5cGUxe3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7fX19fSNidXR0b24tYm9keXt3aWR0aDp2YXIoLS1idWJibGUtc2l6ZSwgNjBweCk7aGVpZ2h0OnZhcigtLWJ1YmJsZS1zaXplLCA2MHB4KTtib3JkZXItcmFkaXVzOjI4cHg7ZGlzcGxheTppbmhlcml0O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BvaW50ZXItZXZlbnRzOmluaXRpYWw7YmFja2dyb3VuZC1zaXplOjEzMCUgMTMwJTt0cmFuc2l0aW9uOmFsbCAwLjE1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO3Bvc2l0aW9uOnJlbGF0aXZlO2NvbG9yOiMwNTY2ZmY7YmFja2dyb3VuZDp2YXIoLS1jdXN0b20tYmFja2dyb3VuZCk7Jjo6YmVmb3Jle2NvbnRlbnQ6Jyc7dHJhbnNpdGlvbjpvcGFjaXR5IDAuNXMgZWFzZS1pbi1vdXQ7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xcHg7cmlnaHQ6LTFweDtib3R0b206LTFweDtsZWZ0Oi0xcHg7b3BhY2l0eTowO2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQtY29sb3I6I2M2Y2NkYzt9Jjpob3ZlciwmOmZvY3Vze291dGxpbmU6bm9uZTtib2R5Om5vdCgubW9iaWxlKSAmLCNib2R5Om5vdCgubW9iaWxlKSAme3RyYW5zZm9ybTpzY2FsZSgxLjEpO319JjphY3RpdmV7b3V0bGluZTpub25lO2JvZHk6bm90KC5tb2JpbGUpICYsI2JvZHk6bm90KC5tb2JpbGUpICZ7dHJhbnNmb3JtOnNjYWxlKDAuOSk7fX19I25ldy1tZXNzYWdlLCNkbmQtaW5kaWNhdG9ye3Bvc2l0aW9uOmFic29sdXRlO3RvcDozN3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojZmZmO3JpZ2h0OjIzcHg7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXItcmFkaXVzOjEwcHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21pbi13aWR0aDoyMHB4O2hlaWdodDoyMHB4O30jbmV3LW1lc3NhZ2V7Zm9udC1zaXplOjEycHg7YmFja2dyb3VuZDojZTgxMzMyO3otaW5kZXg6MjtsaW5lLWhlaWdodDoxNnB4O3BhZGRpbmc6MnB4IDRweDsmKyNkbmQtaW5kaWNhdG9ye3JpZ2h0OjEycHg7fSYuYWN0aXZle2FuaW1hdGlvbjpzaGFrZSAwLjgycyBjdWJpYy1iZXppZXIoMC4zNiwgMC4wNywgMC4xOSwgMC45NykgYm90aDt9fSNkbmQtaW5kaWNhdG9ye2JhY2tncm91bmQ6I2ZmZjtvdXRsaW5lOjFweCBzb2xpZCAjZTJlOGVmO2NvbG9yOiMwODBmMWE7ei1pbmRleDoxO3N2Z3tmaWxsOiMwODBmMWE7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDt9fSJ9LHtuYW1lOiIxZDUyaGdqIixzdHlsZXM6Ii5lbW9qaS1tYXJ0LC5lbW9qaS1tYXJ0ICp7Ym94LXNpemluZzpib3JkZXItYm94O2xpbmUtaGVpZ2h0OjEuMTU7fS5lbW9qaS1tYXJ0e2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdIZWx2ZXRpY2EgTmV1ZScsc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDtkaXNwbGF5OmlubGluZS1ibG9jaztjb2xvcjojMjIyNDI3O2JvcmRlcjoxcHggc29saWQgI2Q5ZDlkOTtib3JkZXItcmFkaXVzOjVweDtiYWNrZ3JvdW5kOiNmZmY7fS5lbW9qaS1tYXJ0IC5lbW9qaS1tYXJ0LWVtb2ppe3BhZGRpbmc6NnB4O30uZW1vamktbWFydC1iYXJ7Ym9yZGVyOjAgc29saWQgI2Q5ZDlkOTt9LmVtb2ppLW1hcnQtYmFyOmZpcnN0LWNoaWxke2JvcmRlci1ib3R0b20td2lkdGg6MXB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NXB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjVweDt9LmVtb2ppLW1hcnQtYmFyOmxhc3QtY2hpbGR7Ym9yZGVyLXRvcC13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo1cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NXB4O30uZW1vamktbWFydC1hbmNob3Jze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzowIDZweDtjb2xvcjojODU4NTg1O2xpbmUtaGVpZ2h0OjA7fS5lbW9qaS1tYXJ0LWFuY2hvcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2ZsZXg6MSAxIGF1dG87Y29sb3I6Izg1ODU4NTt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjEycHggNHB4O292ZXJmbG93OmhpZGRlbjt0cmFuc2l0aW9uOmNvbG9yIDAuMXMgZWFzZS1vdXQ7bWFyZ2luOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTt9LmVtb2ppLW1hcnQtYW5jaG9yOmZvY3Vze291dGxpbmU6MDt9LmVtb2ppLW1hcnQtYW5jaG9yOmhvdmVyLC5lbW9qaS1tYXJ0LWFuY2hvcjpmb2N1cywuZW1vamktbWFydC1hbmNob3Itc2VsZWN0ZWR7Y29sb3I6IzQ2NDY0Njt9LmVtb2ppLW1hcnQtYW5jaG9yLXNlbGVjdGVkIC5lbW9qaS1tYXJ0LWFuY2hvci1iYXJ7Ym90dG9tOjA7fS5lbW9qaS1tYXJ0LWFuY2hvci1iYXJ7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOi0zcHg7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjNweDtiYWNrZ3JvdW5kLWNvbG9yOiM0NjQ2NDY7fS5lbW9qaS1tYXJ0LWFuY2hvcnMgaXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlO21heC13aWR0aDoyMnB4O30uZW1vamktbWFydC1hbmNob3JzIHN2ZywuZW1vamktbWFydC1hbmNob3JzIGltZ3tmaWxsOmN1cnJlbnRDb2xvcjttYXgtaGVpZ2h0OjE4cHg7fS5lbW9qaS1tYXJ0LXNjcm9sbHtvdmVyZmxvdy15OnNjcm9sbDtvdmVyZmxvdy14OmhpZGRlbjtoZWlnaHQ6MjcwcHg7cGFkZGluZzowIDZweCA2cHggNnB4O3dpbGwtY2hhbmdlOnRyYW5zZm9ybTt9LmVtb2ppLW1hcnQtc2VhcmNoe21hcmdpbi10b3A6NnB4O3BhZGRpbmc6MCA2cHg7cG9zaXRpb246cmVsYXRpdmU7fS5lbW9qaS1tYXJ0LXNlYXJjaCBpbnB1dHtmb250LXNpemU6MTZweDtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZzowLjJlbSAwLjZlbTtib3JkZXItcmFkaXVzOjI1cHg7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O291dGxpbmU6MDt9LmVtb2ppLW1hcnQtc2VhcmNoIGlucHV0LC5lbW9qaS1tYXJ0LXNlYXJjaCBpbnB1dDo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwuZW1vamktbWFydC1zZWFyY2ggaW5wdXQ6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sLmVtb2ppLW1hcnQtc2VhcmNoIGlucHV0Ojotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiwuZW1vamktbWFydC1zZWFyY2ggaW5wdXQ6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTt9LmVtb2ppLW1hcnQtc2VhcmNoLWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjdweDtyaWdodDoxMXB4O3otaW5kZXg6MjtwYWRkaW5nOjJweCA1cHggMXB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6bm9uZTt9LmVtb2ppLW1hcnQtY2F0ZWdvcnkgLmVtb2ppLW1hcnQtZW1vamkgc3Bhbnt6LWluZGV4OjE7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOmRlZmF1bHQ7fS5lbW9qaS1tYXJ0LWNhdGVnb3J5IC5lbW9qaS1tYXJ0LWVtb2ppOmhvdmVyOmJlZm9yZXt6LWluZGV4OjA7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0ZjQ7Ym9yZGVyLXJhZGl1czoxMDAlO30uZW1vamktbWFydC1jYXRlZ29yeS1sYWJlbHt6LWluZGV4OjI7cG9zaXRpb246cmVsYXRpdmU7cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O3RvcDowO30uZW1vamktbWFydC1jYXRlZ29yeS1sYWJlbCBzcGFue2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtmb250LXdlaWdodDo1MDA7cGFkZGluZzo1cHggNnB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7fS5lbW9qaS1tYXJ0LWNhdGVnb3J5LWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO30uZW1vamktbWFydC1jYXRlZ29yeS1saXN0IGxpe2xpc3Qtc3R5bGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7fS5lbW9qaS1tYXJ0LWVtb2ppe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZTowO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOm5vbmU7Ym94LXNoYWRvdzpub25lO30uZW1vamktbWFydC1lbW9qaS1uYXRpdmV7Zm9udC1mYW1pbHk6J1NlZ29lIFVJIEVtb2ppJywnU2Vnb2UgVUkgU3ltYm9sJywnU2Vnb2UgVUknLCdBcHBsZSBDb2xvciBFbW9qaScsJ1R3ZW1vamkgTW96aWxsYScsJ05vdG8gQ29sb3IgRW1vamknLCdBbmRyb2lkIEVtb2ppJzt9LmVtb2ppLW1hcnQtbm8tcmVzdWx0c3tmb250LXNpemU6MTRweDt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDo3MHB4O2NvbG9yOiM4NTg1ODU7fS5lbW9qaS1tYXJ0LW5vLXJlc3VsdHMtaW1ne2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bzt3aWR0aDo1MCU7fS5lbW9qaS1tYXJ0LW5vLXJlc3VsdHMgLmVtb2ppLW1hcnQtY2F0ZWdvcnktbGFiZWx7ZGlzcGxheTpub25lO30uZW1vamktbWFydC1uby1yZXN1bHRzIC5lbW9qaS1tYXJ0LW5vLXJlc3VsdHMtbGFiZWx7bWFyZ2luLXRvcDowLjJlbTt9LmVtb2ppLW1hcnQtbm8tcmVzdWx0cyAuZW1vamktbWFydC1lbW9qaTpob3ZlcjpiZWZvcmV7Y29udGVudDpub25lO30uZW1vamktbWFydC1zci1vbmx5e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtoZWlnaHQ6MXB4O3BhZGRpbmc6MDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47Y2xpcDpyZWN0KDAsIDAsIDAsIDApO2JvcmRlcjowO30ifSwoMCxkLkFIKSgiKjpmb2N1c3tvdXRsaW5lOnRoaW4gZG90dGVkO30uY2hhdHttYXgtaGVpZ2h0OmNhbGMoMTAwJSAtIDQ3cHgpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47fXN2Z3t3aWR0aDoyNHB4O2hlaWdodDoyNHB4O30uY2hhdC1oZWFkZXJ7cGFkZGluZzp2YXIoLS1jaGF0LXBhZGRpbmcsIDI0cHgpO2JhY2tncm91bmQ6dmFyKC0tY3VzdG9tLWJhY2tncm91bmQpO2NvbG9yOnZhcigtLWN1c3RvbS10ZXh0LWNvbG9yKTtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjQ7ZmxleDowIDAgYXV0bzthe2NvbG9yOmN1cnJlbnRDb2xvcjsmOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lO319fSNjb252ZXJzYXRpb24tZ3JvdXA6Oi13ZWJraXQtc2Nyb2xsYmFyLCNuZXctbWVzc2FnZS10ZXh0YXJlYTo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lO30uaGVhZGVyLWF2YXtib3JkZXItcmFkaXVzOjI0cHg7YmFja2dyb3VuZC1zaXplOmNvdmVyO2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyO2JhY2tncm91bmQtaW1hZ2U6dXJsKCIsR24sIik7ZmxvYXQ6bGVmdDsubW9iaWxlICZ7d2lkdGg6NDJweDtoZWlnaHQ6NDJweDtib3JkZXItcmFkaXVzOjE5cHg7fX0jY29udmVyc2F0aW9uLWdyb3Vwe3dpZHRoOjEwMCU7b3ZlcmZsb3cteTphdXRvO292ZXJmbG93LXg6aGlkZGVuOy1tcy1vdmVyZmxvdy1zdHlsZTpub25lO2JhY2tncm91bmQ6I2ZmZjt0cmFuc2l0aW9uOmFsbCAwLjNzO21pbi1oZWlnaHQ6MTYwcHg7aGVpZ2h0OjQ4N3B4O3BhZGRpbmctaW5saW5lOnZhcigtLWNoYXQtcGFkZGluZywgMjRweCk7ZmxleDoxIGF1dG87LmdyaWQtbGF5b3V0ICZ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjs6YmVmb3Jle2NvbnRlbnQ6Jyc7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDoxcHg7ZmxleDoxO319Ji5pb3MtaXBhZHstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDt3aWR0aDpjYWxjKDEwMCUgKyA2cHgpOy8qISBAbm9mbGlwICovbWFyZ2luLXJpZ2h0OjA7LmxhbmctcnRsICZ7LyohIEBub2ZsaXAgKi9tYXJnaW4tcmlnaHQ6LTZweDt9fS51cGxvYWRJY29uV3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjM7c3Bhbntmb250LXNpemU6MTlweDttYXgtd2lkdGg6MTIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzA4MGYxYTtsaW5lLWhlaWdodDoxLjM7fS5pY191cGxvYWR7ZmlsbDojMjg3ZWZjO3dpZHRoOjczcHg7aGVpZ2h0OjczcHg7bWFyZ2luLWJvdHRvbToxMHB4O21hcmdpbi10b3A6LTVweDt9fS51cGxvYWQtY2lyY2xle3dpZHRoOjIzMHB4O2hlaWdodDoyMzBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnJnYmEoMTgyLCAxOTgsIDIyOSwgMC4yNCk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbmltYXRpb246c2NhbGUtdXAgMC4zcyBlYXNlO3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTt9Ji5kcmFnLWFjdGl2ZTo6YWZ0ZXJ7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO2JhY2tncm91bmQ6cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKTt6LWluZGV4OjI7YW5pbWF0aW9uOmZhZGUtaW4gMC4zcyBlYXNlO30udHJhbnNpdGlvbi1jb250YWluZXIgJntmbGV4OjE7fX0udHJhbnNpdGlvbi1jb250YWluZXJ7aGVpZ2h0OjM5OXB4O2JhY2tncm91bmQ6I2ZmZjtmbGV4OjAgMSBhdXRvO21pbi1oZWlnaHQ6MTYwcHg7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjsjY29udmVyc2F0aW9uLWdyb3Vwe292ZXJmbG93LXk6aGlkZGVuO319I21lc3NhZ2Vze3Bvc2l0aW9uOnJlbGF0aXZlOy1tcy1vdmVyZmxvdy1zdHlsZTpub25lO21hcmdpbi10b3A6MTBweDt3aWR0aDoxMDAlO3BhZGRpbmctYm90dG9tOjI0cHg7ZmxvYXQ6bGVmdDsuZ3JpZC1sYXlvdXQgJntwYWRkaW5nLWJvdHRvbToxNnB4O319I2NvbnZlcnNhdGlvbi1ncm91cCAjY29udmVyc2F0aW9uLXNjcm9sbHt3aWR0aDoxNnB4O2hlaWdodDpjYWxjKDMzOXB4IC0gMjZweCk7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDtwYWRkaW5nOjAgNHB4O30jY29udmVyc2F0aW9uLWdyb3VwICNjb252ZXJzYXRpb24tc2Nyb2xsIGRpdnt3aWR0aDo4cHg7bWFyZ2luOjAgMXB4O2JhY2tncm91bmQ6IzAwMTczYjtvcGFjaXR5OjA7dG9wOjA7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo0cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpvcGFjaXR5IDAuMXMgZWFzZS1pbi1vdXQsd2lkdGggMC4xcyBlYXNlLWluLW91dCxtYXJnaW4gMC4xcyBlYXNlLWluLW91dDt6LWluZGV4OjI7dXNlci1zZWxlY3Q6bm9uZTt9I2NvbnZlcnNhdGlvbi1ncm91cDpob3ZlciAjY29udmVyc2F0aW9uLXNjcm9sbCBkaXZ7Ym9keTpub3QoLm1vYmlsZSkgJiwjYm9keTpub3QoLm1vYmlsZSkgJntvcGFjaXR5OjAuMTY7fX0jY29udmVyc2F0aW9uLWdyb3VwICNjb252ZXJzYXRpb24tc2Nyb2xsIGRpdjpob3Zlcntib2R5Om5vdCgubW9iaWxlKSAmLCNib2R5Om5vdCgubW9iaWxlKSAme29wYWNpdHk6MC4zMjt3aWR0aDoxMHB4O21hcmdpbjowO319aHJ7bWFyZ2luOjA7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RiZGZlNjt9aW5wdXQsdGV4dGFyZWF7Ji5kaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7Y29sb3I6Izg4OTRhYjt9fWJ1dHRvbixsYWJlbHsmLm1hdGVyaWFsLWljb25ze3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTttYXJnaW46MTVweCAwIDhweCAxMXB4O2Zsb2F0OnJpZ2h0O3N2Z3tmaWxsOiM4ODk0YWI7Ji5vcHRpb25zLWljb257ZmlsbDpjdXJyZW50Q29sb3I7fX0mOjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOiNlZmYyZjY7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjUwJTt6LWluZGV4Oi0xO3RyYW5zaXRpb246YWxsIDAuMTZzIGVhc2UtaW4tb3V0O3RyYW5zZm9ybTpzY2FsZSgwKTt0b3A6Y2FsYyg1MCUgLSAyMnB4KTtsZWZ0OmNhbGMoNTAlIC0gMjBweCk7fSY6aG92ZXI6OmJlZm9yZXtib2R5Om5vdCgubW9iaWxlKSAmLCNib2R5Om5vdCgubW9iaWxlKSAme3RyYW5zZm9ybTpzY2FsZSgxKTt9fSY6Zm9jdXN7c3Zne2ZpbGw6Y3VycmVudENvbG9yO31zdmcuYm90cy1pY29ue2ZpbGw6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciwgIzA1NjZmZik7fX0mLmRpc2FibGVkIHN2ZywmLmRpc2FibGVkOmZvY3VzIHN2Z3tmaWxsOiNjOWNiZDg7fX19LmlucHV0LWdyb3Vwe3BhZGRpbmctaW5saW5lOnZhcigtLWNoYXQtcGFkZGluZywgMjRweCk7cGFkZGluZy1ib3R0b206MTZweDt3aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO2JhY2tncm91bmQ6I2ZmZjt6LWluZGV4OjM7ZmxleDowIDAgYXV0bzsmLmRyYWctYWN0aXZlIC5kcmFnLWFjdGl2ZS13cmFwcGVyOjphZnRlcntjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7YmFja2dyb3VuZDpyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7ei1pbmRleDoxO2FuaW1hdGlvbjpmYWRlLWluIDAuM3MgZWFzZTt9LmZvb3Rlci1pbnB1dC13cmFwcGVyLC5mb290ZXItaWNvbnMtd3JhcHBlcnt0cmFuc2l0aW9uOmFsbCAwLjVzIGVhc2UtaW4tb3V0O29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKTsmLmhpZGRlbnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMHB4KTtwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6MDt9fS5mb290ZXItaWNvbnMtd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjt9fS5lbW9qaS13cmFwcGVye2hlaWdodDoyMTVweDtwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MzQwcHg7Ym90dG9tOjEwMCU7ei1pbmRleDoxMDtsZWZ0OjE4cHg7fS5lbW9qaS1tYXJ0e2JvcmRlcjowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCUhaW1wb3J0YW50O2hlaWdodDoxMDAlO3JpZ2h0OjA7aW5wdXQ6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O30mLXNjcm9sbHtoZWlnaHQ6MTQwcHg7fS5lbW9qaS1tYXJ0LWVtb2ppe2N1cnNvcjpwb2ludGVyO3NwYW57Y3Vyc29yOnBvaW50ZXI7fX19LmVtb2ppLW1hcnQtYW5jaG9yey1tcy1mbGV4OjEgMSBhdXRvO30uYm90cy1kcm9wZG93bntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NzJweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo4cHg7Ym94LXNoYWRvdzowIDZweCAzMnB4IDAgcmdiYSgwLCAxOCwgNDYsIDAuMTYpO3BhZGRpbmc6MTJweCA2cHg7ei1pbmRleDo2O3RyYW5zaXRpb246YWxsIDAuMnMgZWFzZS1pbi1vdXQ7cmlnaHQ6MjRweDt1bHttYXJnaW46MDtwYWRkaW5nOjA7bGl7Ym9yZGVyLXJhZGl1czo2cHg7ZGlzcGxheTpmbGV4OyY6bnRoLW9mLXR5cGUoMikgYnV0dG9ue3N2Z3tmaWxsOiNmZmI5MjY7fX19fWxpIGJ1dHRvbntwYWRkaW5nOjhweCAxNnB4O2Rpc3BsYXk6ZmxleDttYXJnaW46MDtwb3NpdGlvbjppbml0aWFsO2Zsb2F0OmluaXRpYWw7d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjZweDsmOmhvdmVyLCY6Zm9jdXN7Ym9keTpub3QoLm1vYmlsZSkgJiwjYm9keTpub3QoLm1vYmlsZSkgJntiYWNrZ3JvdW5kOiNlZmYyZjY7fX1zdmcsJjpmb2N1cyBzdmd7ZmlsbDojODg5NGFiO2hlaWdodDoyMnB4O3dpZHRoOjIycHg7fXNwYW57bWFyZ2luLWxlZnQ6MTBweDtjb2xvcjojMDYxMzJiO30mOjpiZWZvcmV7Y29udGVudDpub25lO319fS5ib3RzLWRyb3Bkb3due3RvcDphdXRvO2JvdHRvbTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC02MHB4KTttYXgtaGVpZ2h0OjI3NXB4O3dpZHRoOm1heC1jb250ZW50O292ZXJmbG93LXk6YXV0bzt6LWluZGV4OjExO3JpZ2h0OmF1dG87bGVmdDowcHg7dWx7bGl7cGFkZGluZzowO3NwYW57Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzo4cHggMTZweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7d2lkdGg6MTAwJTtzdmd7d2lkdGg6MjJweDtoZWlnaHQ6MjJweDt9fX19dWwuYm90cy1jYW5jZWx7c3Bhbntjb2xvcjojMGFiNmZmO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7fXN2Z3tmaWxsOnJlZDt9fX0uZW1vamktc3dpdGNoLmFjdGl2ZSBzdmd7ZmlsbDpjdXJyZW50Q29sb3I7fUBrZXlmcmFtZXMgc2NhbGUtdXB7MCV7dHJhbnNmb3JtOnNjYWxlKDAuOCk7fTEwMCV7dHJhbnNmb3JtOnNjYWxlKDEpO319QGtleWZyYW1lcyBmYWRlLWluezAle29wYWNpdHk6MDt9MTAwJXtvcGFjaXR5OjE7fX0uY2hhdC1pbi1wcmV2aWV3LS10b3Vyey5leGl0LWNoYXQsLm9wdGlvbnMtaWNvbntvcGFjaXR5OjAuMzt9LmlucHV0LWdyb3Vwe29wYWNpdHk6MC40O319IiwiIiksTHUsKDAsZC5BSCkoIi5tZXNzYWdle3BhZGRpbmctYmxvY2s6dmFyKC0tbWVzc2FnZS1wYWRkaW5nLWJsb2NrLCAxMHB4KTtwYWRkaW5nLWlubGluZTp2YXIoLS1tZXNzYWdlLXBhZGRpbmctaW5saW5lLCAxNnB4KTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDIwcHgpO21hcmdpbjoycHggMDtmb250LXNpemU6dmFyKC0tbWVzc2FnZS1mb250LXNpemUsIDE1cHgpO2xpbmUtaGVpZ2h0OnZhcigtLW1lc3NhZ2UtbGluZS1oZWlnaHQsIDIwcHgpO3dvcmQtd3JhcDpicmVhay13b3JkO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDo4NSU7Y2xlYXI6Ym90aDtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOm1hcmdpbiAwLjI4cyBlYXNlLWluLW91dDsmLnRpbWVzdGFtcC12aXNpYmxle21hcmdpbi1ib3R0b206MjhweDt9Ji5yYXRpbmctdmlzaWJsZXttYXJnaW4tYm90dG9tOjM1cHg7fXNwYW4ubWVzc2FnZS1jb250ZW50e3doaXRlLXNwYWNlOnByZS1saW5lO31zcGFuLm1lc3NhZ2UtY29udGVudC0tbWFya2Rvd257d2hpdGUtc3BhY2U6YnJlYWstc3BhY2VzOy5tYXJrZG93bi1pbWFnZXtkaXNwbGF5OmJsb2NrO21heC13aWR0aDoxMDAlO21hcmdpbjoycHggMDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDIwcHgpO31hIC5tYXJrZG93bi1pbWFnZXtjdXJzb3I6cG9pbnRlcjt9fS5tZXNzYWdlLWNvbnRlbnR7dWx7bGlzdC1zdHlsZS10eXBlOmRpc2M7fW9se2xpc3Qtc3R5bGUtdHlwZTpkZWNpbWFsO311bCxvbHttYXJnaW46MTJweCAwO3BhZGRpbmctbGVmdDoxNnB4O31saXtwYWRkaW5nLWxlZnQ6NHB4O21hcmdpbi1ib3R0b206OHB4O319aW1ne21heC13aWR0aDoxMDAlOyY6bm90KC5lbW9qaSl7Y3Vyc29yOnpvb20taW47fX19LnJhdGluZy12aXNpYmxlKy5tZXNzYWdlLC5yYXRpbmctdmlzaWJsZSsuc2xpZGVzaG93e21hcmdpbi10b3A6MTBweDt9Lm1lc3NhZ2UtdmlzaXRvcntjb2xvcjojZmZmO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDMzMmRlZywgIzIxZGJkYiwgIzI5NzlmZik7ZmxvYXQ6cmlnaHQ7JisubWVzc2FnZS1vcGVyYXRvcnttYXJnaW4tdG9wOjlweDt9c3BhbiBhe2NvbG9yOmN1cnJlbnRDb2xvcjt9Ji5ub3QtZGVsaXZlcmVke291dGxpbmU6MXB4IHNvbGlkICNlMmU4ZWY7YmFja2dyb3VuZDojZmZmO2NvbG9yOiM2NDc0OTE7bWFyZ2luLWJvdHRvbToyMnB4Oy5yZXNlbmQtbWVzc2FnZXtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LTIycHg7Zm9udC1zaXplOjEycHg7cmlnaHQ6MDtjb2xvcjojZTgxMzMyO319fS5tZXNzYWdlLW9wZXJhdG9ye2NvbG9yOiMwNjEzMmI7YmFja2dyb3VuZDp2YXIoLS1vcGVyYXRvci1tZXNzYWdlLCAjZjBmMmY3KTtmbG9hdDpsZWZ0OyYubWVzc2FnZS1mb3Jte3dpZHRoOjEwMCU7cGFkZGluZzoxNnB4O31zcGFuIGF7Y29sb3I6IzA2MTMyYjt9JisubWVzc2FnZS12aXNpdG9ye21hcmdpbi10b3A6OXB4O30mLnRpbWVzdGFtcC12aXNpYmxlfi5ib3RzLXF1aWNrLXJlcGxpZXN7cGFkZGluZy10b3A6MDt9Ji5tZXNzYWdlLXdpdGgtYnV0dG9ucywubWVzc2FnZS13aXRoLWJ1dHRvbnMsJi5ib3RzLXF1aWNrLXJlcGxpZXN7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowO3BhZGRpbmctYm90dG9tOjA7dHJhbnNpdGlvbjpwYWRkaW5nIDAuMjhzIGVhc2UtaW4tb3V0OyYuYnV0dG9ucy1oaWRkZW57cGFkZGluZy1ib3R0b206MTBweDt9PnNwYW57cGFkZGluZzowIDE2cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7d29yZC1icmVhazpicmVhay13b3JkO30uYnV0dG9uLXdyYXBwZXJ7YmFja2dyb3VuZDojZmZmO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDoxMHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yLCAjZWJlZWYwKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDIwcHgpO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDIwcHgpO2JvcmRlci10b3A6MDtwb3NpdGlvbjpyZWxhdGl2ZTt9LmJ1dHRvbi1pY29ue2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2UtaW4tb3V0O3BhZGRpbmc6OHB4IDE2cHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCAyMHB4KTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1yYWRpdXMtY29tcG9uZW50LCAyMHB4KTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7JiBzdmd7ZmlsbDp2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKTt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O30mOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvci1iYWNrZ3JvdW5kKTt9fWJ1dHRvbiwuYnV0dG9uLXVybHttYXJnaW46MCBhdXRvO21pbi13aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MTlweDtwYWRkaW5nOjhweCAxNnB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvciwgI2ViZWVmMCk7Y29sb3I6dmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciwgIzA1NjZmZik7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7b3V0bGluZTpub25lO3dvcmQtYnJlYWs6YnJlYWstd29yZDsmOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fX19Lm1lc3NhZ2Utd2l0aC1idXR0b25zLCYubWVzc2FnZS13aXRoLWJ1dHRvbnN7YnV0dG9uOmxhc3QtY2hpbGQsLmJ1dHRvbi11cmw6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOjA7fS5ncmlkLWxheW91dCAmey5idXR0b24td3JhcHBlcntib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO319fSYuYm90cy1xdWljay1yZXBsaWVze3dpZHRoOjg1JTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7bWFyZ2luLXRvcDowO2Zsb2F0OnJpZ2h0Oy5idXR0b24td3JhcHBlcnttYXJnaW4tdG9wOjA7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDt3aWR0aDoxMDAlO2JvcmRlcjpub25lO31idXR0b257Zm9udC1zaXplOjE1cHg7cGFkZGluZzoxMHB4IDE0cHg7Ym9yZGVyOjFweCBzb2xpZDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1jb21wb25lbnQsIDIwcHgpO21hcmdpbjozcHg7bWluLXdpZHRoOmluaGVyaXQ7fXNwYW57dGV4dC1hbGlnbjpsZWZ0O292ZXJmbG93OmhpZGRlbjsmLmxpbmUtY2xhbXB7ZGlzcGxheTotd2Via2l0LWJveDstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1saW5lLWNsYW1wOjI7fX19Ji5idXR0b25zLW1lc3NhZ2V7cGFkZGluZzowO21heC13aWR0aDo5MCU7Lm1lc3NhZ2Utd2l0aC1idXR0b25ze21heC13aWR0aDoxMDAlOyYtdGV4dHtwYWRkaW5nOjlweCAxNnB4IDFweDtsaW5lLWhlaWdodDoxOXB4O3doaXRlLXNwYWNlOnByZS1saW5lOy5ncmlkLWxheW91dCAme3BhZGRpbmctdG9wOjE2cHg7fX19fSYuY291cG9uLWNvZGUtbWVzc2FnZXtwYWRkaW5nOjEwcHggMTRweCAxNHB4O3dpZHRoOjEwMCU7fSYubWVzc2FnZS1hbGVydHtib3JkZXI6MnB4IHNvbGlkICNkZWUzZTg7YmFja2dyb3VuZDojZmZmIWltcG9ydGFudDttYXJnaW4tYm90dG9tOjIycHg7cG9zaXRpb246cmVsYXRpdmU7c3ZnLmFsZXJ0LWljb257aGVpZ2h0OjIwcHg7d2lkdGg6MjBweDtmaWxsOnJlZDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTVweDtiYWNrZ3JvdW5kOiNmZmY7cmlnaHQ6LTVweDt9fSYudHlwaW5nLWluZGljYXRvcnt0ZXh0LWFsaWduOmxlZnQ7c3BhbntoZWlnaHQ6NHB4O3dpZHRoOjRweDttYXJnaW46MTFweCAxcHggMCAxcHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO29wYWNpdHk6MC40O2FuaW1hdGlvbjpibGluayAxLjNzIGxpbmVhciBpbmZpbml0ZTsmOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjRweDt9JjpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi0xLjFzO30mOm50aC1jaGlsZCgzKXthbmltYXRpb24tZGVsYXk6LTAuOXM7fX19LmJ1dHRvbi11cmx7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MTlweDtwYWRkaW5nOjhweCAxNnB4O3RleHQtYWxpZ246Y2VudGVyO30uYnV0dG9uLXVybF9fYW5jaG9ye3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IsICMwNTY2ZmYpOyY6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9fUBrZXlmcmFtZXMgYmxpbmt7MCUsNjAlLDEwMCV7dHJhbnNmb3JtOmluaXRpYWw7fTMwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNXB4KTt9fX0ubWVzc2FnZSAuZW1vaml7bWFyZ2luOjAgMXB4IDAgMnB4O3ZlcnRpY2FsLWFsaWduOi01cHg7fS5tZXNzYWdlVGltZXN0YW1we2JvdHRvbTotMjRweDtmb250LXNpemU6MTJweDtjb2xvcjojODg5NGFiO3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zaXRpb246YWxsIDAuMnM7d2hpdGUtc3BhY2U6bm93cmFwOy5tZXNzYWdlLW9wZXJhdG9yICZ7aGVpZ2h0OjIzcHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjt0b3A6Y2FsYygxMDAlICsgNHB4KTtsZWZ0OjEycHg7fS5tZXNzYWdlLXZpc2l0b3IgJntyaWdodDoxMnB4O31zdmd7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDttYXJnaW4tcmlnaHQ6NHB4O319LnNoYWtle2FuaW1hdGlvbjpzaGFrZSAwLjgycyBjdWJpYy1iZXppZXIoMC4zNiwgMC4wNywgMC4xOSwgMC45NykgYm90aDt9LnJhdGUtY29tbWVudHttYXgtd2lkdGg6OTUlO30ucHJlLWNoYXQsLnJhdGUtY29tbWVudCwuYWx3YXlzLW9ubGluZXsuZmllbGQtd3JhcHBlcnsmLmZpZWxkLXdyYXBwZXItd2l0aC1lcnJvcntpbnB1dCx0ZXh0YXJlYXtib3JkZXItY29sb3I6I2Y2MzAzYTt9fX1zdmd7d2lkdGg6MTlweDtoZWlnaHQ6MTlweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6OHB4O2ZpbGw6Z3JlZW47bGVmdDo5cHg7JiNpY19hcnJvd3tmaWxsOnZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IsICMwNTY2ZmYpO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO30mI2ljX2Nsb3Nle2ZpbGw6cmVkO319aW5wdXQsdGV4dGFyZWF7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxNnB4O3BhZGRpbmc6MTJweCAxNnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgNXB4KTttYXJnaW46MTBweCAwIDVweDtib3JkZXI6c29saWQgMXB4IHJnYmEoMTA4LCAxMjUsIDE1OSwgMC4yNCk7JjphY3RpdmU6bm90KFt0eXBlPSdjaGVja2JveCddKSwmOmZvY3VzOm5vdChbdHlwZT0nY2hlY2tib3gnXSl7Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDEwOCwgMTI1LCAxNTksIDAuMjQpO30mW3R5cGU9J2NoZWNrYm94J117d2lkdGg6YXV0bztkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MDtwYWRkaW5nOjA7bWluLWhlaWdodDoxNHB4O21pbi13aWR0aDoxNHB4O2JvcmRlcjpub25lOy5tb2JpbGUgLmZpcmVmb3ggJntvdXRsaW5lOnNvbGlkIDFweCByZ2JhKDEwOCwgMTI1LCAxNTksIDAuMjQpO319fWxhYmVse2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjE0cHg7dGV4dC1hbGlnbjpqdXN0aWZ5O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo4cHg7cGFkZGluZzo0cHg7YXt3b3JkLWJyZWFrOmJyZWFrLWFsbDt9fX0udGltZXN0YW1wLWF2YXRhcnt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyO2JhY2tncm91bmQtc2l6ZTpjb3Zlcjtib3JkZXItcmFkaXVzOjI1cHg7YmFja2dyb3VuZC1pbWFnZTp1cmwoIixHbiwiKTtwYWRkaW5nLWxlZnQ6MjNweDtsZWZ0OjA7JitzcGFue21hcmdpbi1sZWZ0OjMwcHg7fX0udGltZXN0YW1wLW9wZXJhdG9ye21hcmdpbi1yaWdodDoycHg7fS5sb2FkZXItaWNvbnsmLmNpcmN1bGFye2FuaW1hdGlvbjpyb3RhdGUgMnMgbGluZWFyIGluZmluaXRlO2hlaWdodDoxMDAlO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyIGNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDttYXJnaW46MDtsZWZ0OjEwcHg7cmlnaHQ6MDt9LnBhdGh7c3Ryb2tlLWRhc2hhcnJheToxLDIwMDtzdHJva2UtZGFzaG9mZnNldDowO2FuaW1hdGlvbjpkYXNoIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7fUBrZXlmcmFtZXMgcm90YXRlezEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpO319QGtleWZyYW1lcyBkYXNoezAle3N0cm9rZS1kYXNoYXJyYXk6MSwyMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6MDt9NTAle3N0cm9rZS1kYXNoYXJyYXk6ODksMjAwO3N0cm9rZS1kYXNob2Zmc2V0Oi0zNXB4O30xMDAle3N0cm9rZS1kYXNoYXJyYXk6ODksMjAwO3N0cm9rZS1kYXNob2Zmc2V0Oi0xMjRweDt9fX0ubWVzc2FnZS11cGxvYWR7bWF4LXdpZHRoOjc1JTtzcGFue3BhZGRpbmctbGVmdDoyNXB4O30jaWNfZG93bmxvYWR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt9Ji5tZXNzYWdlLW9wZXJhdG9yeyNpY19kb3dubG9hZHtyaWdodDotMzVweDt9fSYubWVzc2FnZS12aXNpdG9yeyNpY19kb3dubG9hZHtsZWZ0Oi0zNXB4O319YXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO291dGxpbmU6bm9uZTsmOmhvdmVyPnN2Z3tvcGFjaXR5OjE7fT5zdmd7b3BhY2l0eTowO2ZpbGw6I2JmYzVkNzt9fSYubWVzc2FnZS1pbWFnZXtiYWNrZ3JvdW5kOm5vbmU7cGFkZGluZzowO3NwYW57cGFkZGluZy1sZWZ0OjA7fWltZ3t3aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgMjBweCk7fX0mLm1lc3NhZ2UtZmlsZXtzcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dvcmQtYnJlYWs6YnJlYWstYWxsO3BhZGRpbmctbGVmdDowO31he2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy1sZWZ0OjM1cHg7c3Zne3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7bGVmdDoxN3B4O319fX0uYXR0YWNobWVudC1pbWd7YmFja2dyb3VuZDp3aGl0ZTtjb2xvcjp3aGl0ZTtib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmU7fSIsIiIpLFB1LE91LFJ1XTt2YXIgQnU9e25ld1NraW5Db250ZW50U3R5bGVzOlsuLi5VdSxqdV0sb2xkU2tpbkNvbnRlbnRTdHlsZXM6Wy4uLlV1LHp1XX07Y29uc3QgSHU9e3pJbmRleDoiei1pbmRleCIsdHJhbnNpdGlvbjoidHJhbnNpdGlvbiIsYmFja2dyb3VuZDoiYmFja2dyb3VuZCJ9OygwLGIubykoKS5tYXJrRHVyYXRpb24oIndpZGdldF90b3RhbF9sb2FkX2luX21zIiwiZW5kIik7Y29uc3QgcXU9ZT0+e3RyeXtlJiZPYmplY3Qua2V5cyhIdSkuZm9yRWFjaCh0PT57ZS5zdHlsZS5zZXRQcm9wZXJ0eShIdVt0XSxlLnN0eWxlW3RdLCJpbXBvcnRhbnQiKX0pfWNhdGNoe319O2Z1bmN0aW9uIFZ1KGUsdCxuKXtlJiYoIm1vYmlsZSI9PT10P3NldFRpbWVvdXQoKCk9PntlLnN0eWxlLnNldFByb3BlcnR5KCJib3R0b20iLG4sImltcG9ydGFudCIpfSwwKToib25seVNpZGViYXIiPT09dD9zZXRUaW1lb3V0KCgpPT57ZS5zdHlsZS5zZXRQcm9wZXJ0eSgiYm90dG9tIixuLCJpbXBvcnRhbnQiKSxlLnN0eWxlLnNldFByb3BlcnR5KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGVZKDUwJSkiLCJpbXBvcnRhbnQiKX0sMCk6ZS5zdHlsZS5zZXRQcm9wZXJ0eSgiYm90dG9tIixuKSl9Y29uc3QgJHU9KDAsZi5QaCkoKSxXdT0oKT0+e2MuUlYuYXNzaWduKHtza2lwQW5pbWF0aW9uOiJ2aXNpYmxlIiE9PWRvY3VtZW50Py52aXNpYmlsaXR5U3RhdGV9KX0sS3U9ZT0+e3RyeXtsZXQgdD1lLnRhcmdldDtjb25zdCBuPWUudGFyZ2V0O2lmKCF0Py5zaGFkb3dSb290KXJldHVybjtpZihlLmNvbXBvc2VkUGF0aCYmZS5jb21wb3NlZFBhdGgoKS5sZW5ndGg+MCl7Y29uc3Qgbj1lLmNvbXBvc2VkUGF0aCgpWzBdO24mJm4hPT10JiYodD1uKX10IT09biYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJ0YXJnZXQiLHt2YWx1ZTp0LHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUuc3JjRWxlbWVudCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNyY0VsZW1lbnQiLHt2YWx1ZTp0LHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pKX1jYXRjaHt9fSxHdT0oKT0+e3RyeXtjb25zdHtGYXN0Q2xpY2s6ZX09d2luZG93LnBhcmVudDtpZighZXx8ZS50aWRpb1BhdGNoZWQpcmV0dXJuO2NvbnN0IHQ9d2luZG93LnBhcmVudC5TaGFkb3dSb290O2lmKCF0KXJldHVybjtjb25zdCBuPWUucHJvdG90eXBlLm5lZWRzQ2xpY2s7ZS5wcm90b3R5cGUubmVlZHNDbGljaz1mdW5jdGlvbihlKXtyZXR1cm4gZT8uZ2V0Um9vdE5vZGU/LigpaW5zdGFuY2VvZiB0fHxuLmNhbGwodGhpcyxlKX0sZS50aWRpb1BhdGNoZWQ9ITB9Y2F0Y2h7fX0sWHU9e2NhcHR1cmU6ITAscGFzc2l2ZTohMX07Y2xhc3MgUXUgZXh0ZW5kcyBhLkNvbXBvbmVudHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSwoMCxpLkEpKHRoaXMsInN0eWxlQ2FjaGUiLCgwLHMuQSkoe2tleToidGlkaW8iLHN0eWxpc1BsdWdpbnM6KDAseS5WOCkoKT9bdS5BeV06W10sY29udGFpbmVyOnRoaXMucHJvcHMuc3R5bGVDYWNoZUNvbnRhaW5lcnx8dGhpcy5wcm9wcy5pZnJhbWVEb2N1bWVudC5oZWFkfSkpLCgwLGkuQSkodGhpcywic3RhdGUiLHtpc1JlbmRlcmVkOiExfSksKDAsaS5BKSh0aGlzLCJzZXRJbXBvcnRhbnRQb3NpdGlvbmluZ0Zvck1vYmlsZUFuZFNpZGViYXIiLCgpPT57dGhpcy5wcm9wcy5pZnJhbWVXaW5kb3cuZnJhbWVFbGVtZW50JiYoIm1vYmlsZSI9PT10aGlzLnByb3BzLmlmcmFtZVZpZXc/c2V0VGltZW91dCgoKT0+e3RoaXMucHJvcHMuaWZyYW1lV2luZG93LmZyYW1lRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgiYm90dG9tIix0aGlzLmdldEJvdHRvbU9mZnNldCgpLCJpbXBvcnRhbnQiKX0sMCk6Im9ubHlTaWRlYmFyIj09PXRoaXMucHJvcHMuaWZyYW1lVmlldz9zZXRUaW1lb3V0KCgpPT4odGhpcy5wcm9wcy5pZnJhbWVXaW5kb3cuZnJhbWVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJib3R0b20iLCI1MCUiLCJpbXBvcnRhbnQiKSx0aGlzLnByb3BzLmlmcmFtZVdpbmRvdy5mcmFtZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoInRyYW5zZm9ybSIsInRyYW5zbGF0ZVkoNTAlKSIsImltcG9ydGFudCIpLCEwKSwwKTp0aGlzLnByb3BzLmlmcmFtZVdpbmRvdy5mcmFtZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoImJvdHRvbSIsdGhpcy5nZXRCb3R0b21PZmZzZXQoKSkpfSksKDAsaS5BKSh0aGlzLCJyZWdpc3RlckNsaWNrRm9yQXV0b1BsYXlQZXJtaXNzaW9ucyIsKCk9Pnt0cnl7Y29uc3QgZT0oKT0+eygwLHgucGMpKHRoaXMucHJvcHMuaXNOZXdTa2luKSx3aW5kb3cucGFyZW50LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixlLCEwKSx3aW5kb3cucGFyZW50LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixlLCEwKSx0aGlzLnByb3BzLmlmcmFtZURvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixlLCEwKSx0aGlzLnByb3BzLmlmcmFtZURvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixlLCEwKX07KHRoaXMucHJvcHMuaXNNb2JpbGV8fCJzYWZhcmkiPT09Zi5MZHx8Im1vYmlsZSBzYWZhcmkiPT09Zi5MZCkmJih3aW5kb3cucGFyZW50LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixlLCEwKSx3aW5kb3cucGFyZW50LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixlLCEwKSx0aGlzLnByb3BzLmlmcmFtZURvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixlLCEwKSx0aGlzLnByb3BzLmlmcmFtZURvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixlLCEwKSl9Y2F0Y2goZSl7KDAsdi5zUSkoZSl9fSksKDAsaC5ycikodGhpcy5wcm9wcy5pZnJhbWVEb2N1bWVudCx0aGlzLnByb3BzLmlmcmFtZVdpbmRvdyl9Y29tcG9uZW50RGlkTW91bnQoKXtxdSh0aGlzLnByb3BzLmlmcmFtZVdpbmRvdy5mcmFtZUVsZW1lbnQpLFZ1KHRoaXMucHJvcHMuaWZyYW1lV2luZG93LmZyYW1lRWxlbWVudCx0aGlzLnByb3BzLmlmcmFtZVZpZXcsdGhpcy5nZXRCb3R0b21PZmZzZXQoKSksdGhpcy5wcm9wcy5pc1NvdW5kRW5hYmxlZCYmdGhpcy5yZWdpc3RlckNsaWNrRm9yQXV0b1BsYXlQZXJtaXNzaW9ucygpLHRoaXMuc2V0SW1wb3J0YW50UG9zaXRpb25pbmdGb3JNb2JpbGVBbmRTaWRlYmFyKCksZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLFd1KSxjLlJWLmFzc2lnbih7cmVxdWVzdEFuaW1hdGlvbkZyYW1lOnRoaXMucHJvcHMuaWZyYW1lV2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSxjYW5jZWxBbmltYXRpb25GcmFtZTp0aGlzLnByb3BzLmlmcmFtZVdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZX0pO3RyeXt0aGlzLnByb3BzLmlmcmFtZURvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixlPT57aWYoZT8udGFyZ2V0Py5tYXRjaGVzKCJpbWcuZW1vamkiKSYmZS50YXJnZXQucGFyZW50Tm9kZSl7Y29uc3QgdD1lLnRhcmdldC5jbG9zZXN0KCIubWVzc2FnZSIpLG49dD8ucXVlcnlTZWxlY3RvcigiLm1lc3NhZ2UtY29udGVudCIpLGk9dGhpcy5wcm9wcy5pc05ld1NraW4/dGhpcy5wcm9wcy5pZnJhbWVEb2N1bWVudC5vd25lckRvY3VtZW50OnRoaXMucHJvcHMuaWZyYW1lRG9jdW1lbnQ7aWYoZS50YXJnZXQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoaS5jcmVhdGVUZXh0Tm9kZShlLnRhcmdldC5hbHQpLGUudGFyZ2V0KSx0JiZuJiZ0aGlzLnByb3BzLmlmcmFtZVdpbmRvdyl7Y29uc3QgZT0zNTt0aGlzLnByb3BzLmlmcmFtZVdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0LnN0eWxlLndpZHRoPWAke24ub2Zmc2V0V2lkdGgrZX1weGB9KX19fSwhMCl9Y2F0Y2goZSl7KDAsdi5zUSkoZSl9c2V0VGltZW91dCgoKT0+e3RoaXMuc2V0U3RhdGUoe2lzUmVuZGVyZWQ6ITB9KX0sMCksdGhpcy5wcm9wcy5pc05ld1NraW4mJigoKT0+e3RyeXt3aW5kb3cucGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLEt1LFh1KSx3aW5kb3cucGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixLdSxYdSksd2luZG93LnBhcmVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLEt1LFh1KSxHdSgpfWNhdGNoe319KSgpfWNvbXBvbmVudERpZFVwZGF0ZShlKXtlLmlmcmFtZU1vZGUhPT10aGlzLnByb3BzLmlmcmFtZU1vZGUmJihxdSh0aGlzLnByb3BzLmlmcmFtZVdpbmRvdy5mcmFtZUVsZW1lbnQpLHRoaXMuc2V0SW1wb3J0YW50UG9zaXRpb25pbmdGb3JNb2JpbGVBbmRTaWRlYmFyKCksVnUodGhpcy5wcm9wcy5pZnJhbWVXaW5kb3cuZnJhbWVFbGVtZW50LHRoaXMucHJvcHMuaWZyYW1lVmlldyx0aGlzLmdldEJvdHRvbU9mZnNldCgpKSl9Y29tcG9uZW50V2lsbFVubW91bnQoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixXdSksdGhpcy5wcm9wcy5pc05ld1NraW4mJigoKT0+e3RyeXt3aW5kb3cucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLEt1LFh1KSx3aW5kb3cucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixLdSxYdSksd2luZG93LnBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLEt1LFh1KX1jYXRjaHt9fSkoKX1nZXRCb3R0b21PZmZzZXQoKXtjb25zdHtpc0F3ZXNvbWVJZnJhbWU6ZSxpZnJhbWVNb2RlOnQsaWZyYW1lVmlldzpufT10aGlzLnByb3BzO3JldHVybiJvbmx5U2lkZWJhciI9PT1uPyI1MCUiOmUmJmcuSzU/Llt0XSYmZy5LNVt0XS5ib3R0b218fDB9cmVuZGVyKCl7cmV0dXJuKDAsVi5GRCkobC5DLHt2YWx1ZTp0aGlzLnN0eWxlQ2FjaGUsY2hpbGRyZW46WygwLFYuWSkoZC5tTCx7c3R5bGVzOnRoaXMucHJvcHMuaXNOZXdTa2luP0J1Lm5ld1NraW5Db250ZW50U3R5bGVzOkJ1Lm9sZFNraW5Db250ZW50U3R5bGVzfSksKDAsVi5ZKShOdSx7fSksdGhpcy5zdGF0ZS5pc1JlbmRlcmVkJiYoMCxWLlkpKGJ1LHtzZXRXaWRnZXRQb3NpdGlvbjp0aGlzLnByb3BzLnNldFdpZGdldFBvc2l0aW9ufSldfSl9fVF1LmRlZmF1bHRQcm9wcz17c3R5bGVDYWNoZUNvbnRhaW5lcjpudWxsfTtjb25zdCBadT1lPT57Y29uc3R7ZG9jdW1lbnQ6dCx3aW5kb3c6bn09KDAsby5qJCkoKTtyZXR1cm4oMCxWLlkpKFF1LHsuLi5lLGlmcmFtZURvY3VtZW50OnQsaWZyYW1lV2luZG93Om59KX07Y2xhc3MgSnUgZXh0ZW5kcyBhLkNvbXBvbmVudHtjb25zdHJ1Y3Rvcigpe3ZhciBlO3N1cGVyKC4uLmFyZ3VtZW50cyksZT10aGlzLCgwLGkuQSkodGhpcywiZ2V0SWZyYW1lU2l6ZSIsKCk9Pih7Li4uKDAsZy5MWSkodGhpcy5wcm9wcy5pZnJhbWVWaWV3KSwuLi4ib25seVNpZGViYXIiPT09dGhpcy5wcm9wcy5pZnJhbWVWaWV3P3tsZWZ0OiJsZWZ0Ij09PXRoaXMucHJvcHMuc2lkZWJhclBvc2l0aW9uPyIwIjp2b2lkIDAscmlnaHQ6InJpZ2h0Ij09PXRoaXMucHJvcHMuc2lkZWJhclBvc2l0aW9uPyIwIjp2b2lkIDB9Ont9fSkpLCgwLGkuQSkodGhpcywic3RhdGUiLHtzdHlsZTp7ZGlzcGxheToiYmxvY2siLGJvcmRlcjoibm9uZSIscG9zaXRpb246IXRoaXMucHJvcHMuaXNDaGF0T25TaXRlfHx0aGlzLnByb3BzLmlzTW9iaWxlfHwoMCxmLkREKSgpPyJmaXhlZCI6ImluaGVyaXQiLHRvcDoiYXV0byIsYm90dG9tOjAsbGVmdDoiYXV0byIscmlnaHQ6ImF1dG8iLC4uLnRoaXMuZ2V0SWZyYW1lU2l6ZSgpLG9wYWNpdHk6MCxbdGhpcy5wcm9wcy53aWRnZXRQb3NpdGlvbl06MCxjb2xvclNjaGVtZToibm9uZSIsYmFja2dyb3VuZDoibm9uZSB0cmFuc3BhcmVudCIsbWFyZ2luOjAsbWF4SGVpZ2h0OiIxMDB2aCIsbWF4SGVpZ2h0OiIxMDBkdmgiLG1heFdpZHRoOiIxMDB2dyIsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDApIix0cmFuc2l0aW9uOiJub25lIix2aXNpYmlsaXR5OiJ2aXNpYmxlIix6SW5kZXg6OTk5OTk5OTk5fX0pLCgwLGkuQSkodGhpcywicmVmIixudWxsKSwoMCxpLkEpKHRoaXMsImdldEF3ZXNvbWVJZnJhbWVPZmZzZXQiLChlLHQpPT57bGV0IG49MDtyZXR1cm4gZy5LNT8uW2VdPy5bdF0mJihuPWcuSzVbZV1bdF0pLG59KSwoMCxpLkEpKHRoaXMsInNldElmcmFtZVN0eWxlIixmdW5jdGlvbih0KXtsZXQgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06KCk9Pnt9O2Uuc2V0U3RhdGUoe3N0eWxlOnR9LG4pfSksKDAsaS5BKSh0aGlzLCJnZXRDdXJyZW50SWZyYW1lU3R5bGUiLCgpPT4oey4uLnRoaXMuc3RhdGUuc3R5bGV9KSksKDAsaS5BKSh0aGlzLCJtZXJnZVdpdGhDdXJyZW50U3R5bGVzIixmdW5jdGlvbih0KXtsZXQgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06KCk9Pnt9O2Uuc2V0SWZyYW1lU3R5bGUoey4uLmUuZ2V0Q3VycmVudElmcmFtZVN0eWxlKCksLi4udH0pLG4oKX0pLCgwLGkuQSkodGhpcywic2V0V2lkZ2V0UG9zaXRpb24iLChlLHQpPT57Y29uc3Qgbj10aGlzLmdldEN1cnJlbnRJZnJhbWVTdHlsZSgpLGk9dGhpcy5nZXRJZnJhbWVNb2RlKCk7bGV0IGE9MDt0aGlzLnByb3BzLmlzQXdlc29tZUlmcmFtZSYmKGE9dGhpcy5nZXRBd2Vzb21lSWZyYW1lT2Zmc2V0KGksZSkpLHRoaXMuc2V0SWZyYW1lU3R5bGUoey4uLm4scmlnaHQ6ImF1dG8iLGxlZnQ6ImF1dG8iLFtlXTphfSx0KX0pLCgwLGkuQSkodGhpcywiZ2V0SWZyYW1lQXdlc29tZVN0eWxlIiwoKT0+e2NvbnN0e3dpZGdldFBvc2l0aW9uOmUsaXNBd2Vzb21lSWZyYW1lOnR9PXRoaXMucHJvcHMsbj17fTtpZih0KXtjb25zdCB0PXRoaXMuZ2V0SWZyYW1lTW9kZSgpLHt3aWR0aDppLGhlaWdodDphfT1nLks1Py5bdF18fHt9O2lmKGkmJihuLndpZHRoPWkpLGEmJihuLmhlaWdodD1hKSxuW2VdPXRoaXMuZ2V0QXdlc29tZUlmcmFtZU9mZnNldCh0LGUpLG4uYm9yZGVyUmFkaXVzPXRoaXMucHJvcHMuaXNNb2JpbGU/MDpnLmFMLCR1KXtjb25zdHtib3R0b206ZSxyaWdodDppfT1nLks1Py5bdF18fHt9O24uYm90dG9tPWUsbi5yaWdodD1pfX1yZXR1cm4gbn0pLCgwLGkuQSkodGhpcywib25JZnJhbWVNb3VudCIsKCk9Pnt0aGlzLnNldFdpZGdldFBvc2l0aW9uKHRoaXMucHJvcHMud2lkZ2V0UG9zaXRpb24sdGhpcy5hbmltYXRlT3BhY2l0eSl9KSwoMCxpLkEpKHRoaXMsImFuaW1hdGVPcGFjaXR5IiwoKT0+e3RoaXMubWVyZ2VXaXRoQ3VycmVudFN0eWxlcyh7ZGlzcGxheToiYmxvY2sifSwoKT0+e3NldFRpbWVvdXQoKCk9Pnt0aGlzLm1lcmdlV2l0aEN1cnJlbnRTdHlsZXMoe29wYWNpdHk6MX0pfSwwKX0pfSksKDAsaS5BKSh0aGlzLCJvbklmcmFtZVJlZiIsZT0+e3RoaXMucmVmPWU7Y29uc3R7d2lkZ2V0UG9zaXRpb246dCxpc0F3ZXNvbWVJZnJhbWU6bixkaXNwYXRjaDppfT10aGlzLnByb3BzLGE9KDAsQS52dSkoIndpZGdldF9wb3NpdGlvbiIpO3RyeXtpZihlPy5ub2RlKXtjb25zdHtsZWZ0Om8scmlnaHQ6cixib3R0b206c309ZS5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHtpbm5lcldpZHRoOmwsaW5uZXJIZWlnaHQ6ZH09d2luZG93LnBhcmVudCxjPSJsZWZ0Ij09PXQ/bzpsLXIsdT1kLXM7MD09PWMmJjA9PT11fHxhfHxufHwoaSgoMCxrLnNETCkoe2luaXRpYWxYOmMsaW5pdGlhbFk6dX0pKSwoMCxBLkhvKSgid2lkZ2V0X3Bvc2l0aW9uIiwhMCkpfX1jYXRjaChlKXsoMCx2LnNRKSgiRXJyb3Igb25JZnJhbWVSZWYiLHttZXNzYWdlOmU/Lm1lc3NhZ2V9KX1uJiZ0aGlzLm1lcmdlV2l0aEN1cnJlbnRTdHlsZXMoey4uLmcuSzVbdGhpcy5nZXRJZnJhbWVNb2RlKCldfSl9KSwoMCxpLkEpKHRoaXMsImdldElmcmFtZU1vZGUiLCgpPT57Y29uc3R7aWZyYW1lVmlldzplLGlzV2lkZ2V0TGFiZWxFbmFibGVkOnQsdmlldzpuLGRpbWVuc2lvbnM6aX09dGhpcy5wcm9wcztpZihlLmluY2x1ZGVzKGcuTnkuZHluYW1pYykmJmk/LmhlaWdodCl7Y29uc3QgZT05NDtyZXR1cm4gTnVtYmVyKGkuaGVpZ2h0KT09PWUmJnQmJm4hPT13LmwuZmx5P2cuTnkuYnViYmxlV2l0aExhYmVsOmcuTnkuZHluYW1pY31yZXR1cm4gZT09PWcuTnkub25seUJ1YmJsZSYmdGhpcy5wcm9wcy5pc01vYmlsZT9nLk55Lm9ubHlCdWJibGVMYXJnZTplfSl9Y29tcG9uZW50RGlkVXBkYXRlKGUpe3RyeXskdSYmdGhpcy5wcm9wcy5pc0F3ZXNvbWVJZnJhbWUmJmUuaXNBd2Vzb21lSWZyYW1lIT09dGhpcy5wcm9wcy5pc0F3ZXNvbWVJZnJhbWUmJnRoaXMucmVmPy5ub2RlJiZ0aGlzLnJlZi5ub2RlLmNvbnRlbnRXaW5kb3c/LmRvY3VtZW50Py5xdWVyeVNlbGVjdG9yKCJib2R5Iik/LmNsYXNzTGlzdD8uYWRkKCJhd2Vzb21lLWlmcmFtZSIpfWNhdGNoe319cmVuZGVyKCl7Y29uc3QgZT10aGlzLnByb3BzLmhpZGVXaGVuT2ZmbGluZSYmIXRoaXMucHJvcHMuaXNQcm9qZWN0T25saW5lJiYhdGhpcy5wcm9wcy5pc0NoYXRPblNpdGUsdD0oMCx5LlY4KSgpO2lmKCF0aGlzLnByb3BzLmlzTW91bnRlZHx8ZSlyZXR1cm4gbnVsbDtjb25zdCBuPXtkaXI6dD8icnRsIjoibHRyIixjbGFzczpgJHt0aGlzLnByb3BzLmlzTW9iaWxlPyJtb2JpbGUiOiIifSAke3RoaXMucHJvcHMuaXNDaGF0T25TaXRlPyJjaGF0LW9uLXNpdGUiOiIifSAke3Q/ImxhbmctcnRsIjoiIn0gJHsoMCxmLkREKSgpPyJjaGF0LWluLXByZXZpZXciOiIifSAkeygwLGYuUTUpKCk/ImNoYXQtaW4tcHJldmlldy0tdG91ciI6IiJ9ICR7dGhpcy5wcm9wcy5pc0F3ZXNvbWVJZnJhbWU/ImF3ZXNvbWUtaWZyYW1lIjoiIn1gLnRyaW0oKX0saT0nPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgdXNlci1zY2FsYWJsZT1ubyI+JyxhPXRoaXMuZ2V0SWZyYW1lTW9kZSgpO3JldHVybigwLFYuRkQpKFYuRksse2NoaWxkcmVuOlsoMCxWLlkpKG8uQXkse3JlZjp0aGlzLm9uSWZyYW1lUmVmLHRpdGxlOiJUaWRpbyBDaGF0IixoZWFkOigwLFYuWSkoInN0eWxlIix7Y2hpbGRyZW46IlxuLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpc2gnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9tdWxpc2hfU0doZ3FrMGdvdFlLTm5CY2lmLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGO1xufVxuLyogY3lyaWxsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ011bGlzaCc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL211bGlzaF9TR2hncWsyd290WUtObkJjaWYud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG59XG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpc2gnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9tdWxpc2hfU0doZ3FrMEFvdFlLTm5CY2lmLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG59XG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ011bGlzaCc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL211bGlzaF9TR2hncWswUW90WUtObkJjaWYud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcbn1cbi8qIGxhdGluICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpc2gnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9tdWxpc2hfU0doZ3FrM3dvdFlLTm5CUS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpc2gnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9tdWxpc2hfU0doZ3FrMGdvdFlLTm5CY2lmLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGO1xufVxuLyogY3lyaWxsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ011bGlzaCc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL211bGlzaF9TR2hncWsyd290WUtObkJjaWYud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG59XG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpc2gnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9tdWxpc2hfU0doZ3FrMEFvdFlLTm5CY2lmLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG59XG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ011bGlzaCc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL211bGlzaF9TR2hncWswUW90WUtObkJjaWYud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcbn1cbi8qIGxhdGluICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpc2gnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9tdWxpc2hfU0doZ3FrM3dvdFlLTm5CUS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuIn0pLHN0eWxlOnsuLi50aGlzLnN0YXRlLnN0eWxlLC4uLnRoaXMuZ2V0SWZyYW1lU2l6ZSgpLC4uLnRoaXMuZ2V0SWZyYW1lQXdlc29tZVN0eWxlKCl9LGluaXRpYWxDb250ZW50OmBcbiAgICAgICAgICAgICAgICAgIDxodG1sIGxhbmc9ImVuIj5cbiAgICAgICAgICAgICAgICAgIDxoZWFkPlxuICAgICAgICAgICAgICAgICAgJHtpfVxuICAgICAgICAgICAgICAgICAgICA8L2hlYWQ+XG4gICAgICAgICAgICAgICAgICA8Ym9keSAke09iamVjdC5lbnRyaWVzKG4pLm1hcChlPT57bGV0W3Qsbl09ZTtyZXR1cm5gJHt0fT0iJHtufSJgfSkuam9pbigiICIpfT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvYm9keT5cbiAgICAgICAgICAgICAgICAgIGAsbm9TcmNEb2NCb2R5UHJvcHM6bixub1NyY0RvY0hlYWRUYWdzOmksaWQ6InRpZGlvLWNoYXQtaWZyYW1lIixjb250ZW50RGlkTW91bnQ6dGhpcy5vbklmcmFtZU1vdW50LC4uLmYud2gsY2hpbGRyZW46KDAsVi5ZKSgiZGl2Iix7Y2xhc3NOYW1lOmAkeyJsZWZ0Ij09PXRoaXMucHJvcHMud2lkZ2V0UG9zaXRpb24/IndpZGdldC1wb3NpdGlvbi1sZWZ0Ijoid2lkZ2V0LXBvc2l0aW9uLXJpZ2h0In0gJHsibGVmdCI9PT10aGlzLnByb3BzLnNpZGViYXJQb3NpdGlvbj8ic2lkZWJhci1wb3NpdGlvbi1sZWZ0Ijoic2lkZWJhci1wb3NpdGlvbi1yaWdodCJ9ICR7dGhpcy5wcm9wcy5pc1NpZGViYXJFbmFibGVkPyJzaWRlYmFyLWVuYWJsZWQiOiIifVxuICAgICAgICAgICAgICAgICAgICAgICAgJHthfWAsc3R5bGU6eyItLWN1c3RvbS1iYWNrZ3JvdW5kIjp0aGlzLnByb3BzLndpZGdldENvbG9yWzBdPT09dGhpcy5wcm9wcy53aWRnZXRDb2xvclsxXT90aGlzLnByb3BzLndpZGdldENvbG9yWzBdOmBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAke3RoaXMucHJvcHMud2lkZ2V0Q29sb3JbMF19IDAlLCAke3RoaXMucHJvcHMud2lkZ2V0Q29sb3JbMV19IDEwMCUpYCwiLS1jdXN0b20tdGV4dC1jb2xvciI6dGhpcy5wcm9wcy53aWRnZXRDb2xvclsyXSwiLS1jdXN0b20tYWN0aW9uLWNvbG9yIjp0aGlzLnByb3BzLndpZGdldENvbG9yWzRdfHwiIzA1NjZmZiIsIi0tY3VzdG9tLWFjdGlvbi1jb2xvci1jb250cmFzdCI6bSh0aGlzLnByb3BzLndpZGdldENvbG9yWzRdfHwiIzA1NjZmZiIpPyIjZmZmIjoiIzAwMCIsIi0tY3VzdG9tLWFjdGlvbi1jb2xvci1ob3ZlciI6ImNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKSwgd2hpdGUgMTAlKSIsIi0tY3VzdG9tLWFjdGlvbi1jb2xvci1hY3RpdmUiOiJjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciksIHdoaXRlIDIwJSkiLCItLWN1c3RvbS1hY3Rpb24tY29sb3ItYmFja2dyb3VuZCI6ImNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKSwgd2hpdGUgOTAlKSIsIi0tY3VzdG9tLWFjdGlvbi1jb2xvci1iYWNrZ3JvdW5kLWFjdGl2ZSI6ImNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yKSwgd2hpdGUgNjAlKSIsIi0tY2hhdC1wYWRkaW5nIjp0aGlzLnByb3BzLmlzTW9iaWxlPyIxNnB4IjoiMjRweCIsIi0tbGFiZWwtc2hhZG93IjoiMCAycHggMjBweCAwIHJnYmEoMCwgMTgsIDQ2LCAwLjE4KSIsIi0tZmx5LXNoYWRvdyI6IjAgOHB4IDI2cHggMCByZ2JhKDAsIDE4LCA0NiwgMC4xNikifSxjaGlsZHJlbjooMCxWLlkpKFp1LHtzZXRXaWRnZXRQb3NpdGlvbjp0aGlzLnNldFdpZGdldFBvc2l0aW9uLGlmcmFtZVZpZXc6dGhpcy5wcm9wcy5pZnJhbWVWaWV3LGlmcmFtZU1vZGU6YSxpc1NvdW5kRW5hYmxlZDp0aGlzLnByb3BzLmlzU291bmRFbmFibGVkLGlzQXdlc29tZUlmcmFtZTp0aGlzLnByb3BzLmlzQXdlc29tZUlmcmFtZSxpc05ld1NraW46ITEsaXNNb2JpbGU6dGhpcy5wcm9wcy5pc01vYmlsZX0pfSl9KSwoMCxWLlkpKEV1LHt9KSwoMCxWLlkpKHh1LHt9KV19KX19SnUuZGVmYXVsdFByb3BzPXtzaWRlYmFyUG9zaXRpb246InJpZ2h0IixkaW1lbnNpb25zOm51bGx9O2NvbnN0IGVwPSgwLHIuTmcpKGU9Pih7aXNNb3VudGVkOmUuaXNNb3VudGVkLGlmcmFtZVZpZXc6ZS5jaGF0SWZyYW1lU3R5bGVzLmlmcmFtZVZpZXcsZGltZW5zaW9uczooMCxDLlJwKShlKSxpc01vYmlsZTplLmlzTW9iaWxlLHdpZGdldFBvc2l0aW9uOmUuY2hhdElmcmFtZVN0eWxlcy53aWRnZXRQb3NpdGlvbixoaWRlV2hlbk9mZmxpbmU6ZS5oaWRlV2hlbk9mZmxpbmUsaXNQcm9qZWN0T25saW5lOmUuaXNQcm9qZWN0T25saW5lLGlzU2lkZWJhckVuYWJsZWQ6ZS5zaWRlYmFySWZyYW1lU3R5bGVzLGlzQXdlc29tZUlmcmFtZTooMCxDLml4KShlKSxzaWRlYmFyUG9zaXRpb246ZS5zaWRlYmFySWZyYW1lU3R5bGVzLnBvc2l0aW9uLGlzQ2hhdE9uU2l0ZTooMCxDLlR3KShlKSxpc1NvdW5kRW5hYmxlZDplLmlzU291bmRFbmFibGVkLGlzV2lkZ2V0TGFiZWxFbmFibGVkOigwLEMuengpKGUpLHZpZXc6KDAsQy5LWikoZSksd2lkZ2V0Q29sb3I6KDAsQy5mTykoZSl9KSkoSnUpLHRwPSgpPT57Y29uc3QgZT0oMCxyLmQ0KShlPT5lLmNoYXRJZnJhbWVTdHlsZXMud2lkZ2V0UG9zaXRpb24pLHQ9KDAsci5kNCkoZT0+ZS5zaWRlYmFySWZyYW1lU3R5bGVzP2Uuc2lkZWJhcklmcmFtZVN0eWxlcy5wb3NpdGlvbjoiIiksbj0oMCxyLmQ0KShlPT5lLnNpZGViYXJJZnJhbWVTdHlsZXMpLGk9KDAsci5kNCkoQy5mTyksbz0oMCxyLmQ0KShDLk55KSxzPSgwLHIuZDQpKGU9PmUuaXNTb3VuZEVuYWJsZWQpLGw9KDAsci5kNCkoZT0+ZS5jaGF0SWZyYW1lU3R5bGVzLmlmcmFtZVZpZXcpLGQ9KDAsZy5MWSkobCksYz0oMCxyLmQ0KShDLlJwKSx1PWM/LndpZHRofHxkLndpZHRoLHA9KDAsci5kNCkoQy5UdyksW2ZdPSgwLGEudXNlU3RhdGUpKCgpPT53aW5kb3cucGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aWRpby1jaGF0IikpLGg9Zj8uc2hhZG93Um9vdCxiPSgwLHkuVjgpKCk7cmV0dXJuKDAsYS51c2VFZmZlY3QpKCgpPT57Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiBlLnRleHRDb250ZW50PSJcbi8qIGN5cmlsbGljLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NtM0Z3ckszaUxUY3ZuVXdrVDltSTFGNTVNS3cud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7XG59XG4vKiBjeXJpbGxpYyAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NtM0Z3ckszaUxUY3ZuVXdBVDltSTFGNTVNS3cud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG59XG4vKiBncmVlay1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1RpZGlvSW50ZXInO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogdXJsKGh0dHBzOi8vY29kZS50aWRpby5jby93aWRnZXQtdjQvZm9udHMvaW50ZXJfVWNDbTNGd3JLM2lMVGN2blV3Z1Q5bUkxRjU1TUt3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuLyogZ3JlZWsgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1RpZGlvSW50ZXInO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogdXJsKGh0dHBzOi8vY29kZS50aWRpby5jby93aWRnZXQtdjQvZm9udHMvaW50ZXJfVWNDbTNGd3JLM2lMVGN2blV3Y1Q5bUkxRjU1TUt3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGO1xufVxuLyogdmlldG5hbWVzZSAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NtM0Z3ckszaUxUY3ZuVXdzVDltSTFGNTVNS3cud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG59XG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1RpZGlvSW50ZXInO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogdXJsKGh0dHBzOi8vY29kZS50aWRpby5jby93aWRnZXQtdjQvZm9udHMvaW50ZXJfVWNDbTNGd3JLM2lMVGN2blV3b1Q5bUkxRjU1TUt3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGO1xufVxuLyogbGF0aW4gKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1RpZGlvSW50ZXInO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIHNyYzogdXJsKGh0dHBzOi8vY29kZS50aWRpby5jby93aWRnZXQtdjQvZm9udHMvaW50ZXJfVWNDbTNGd3JLM2lMVGN2blV3UVQ5bUkxRjU0LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdUaWRpb0ludGVyJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMTAwIDkwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL2ludGVyX1VjQ28zRndySzNpTFRjdnZZd1laOFVBM0o1OC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjtcbn1cbi8qIGN5cmlsbGljICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdUaWRpb0ludGVyJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMTAwIDkwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL2ludGVyX1VjQ28zRndySzNpTFRjdm1Zd1laOFVBM0o1OC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcbn1cbi8qIGdyZWVrLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NvM0Z3ckszaUxUY3Z1WXdZWjhVQTNKNTgud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XG59XG4vKiBncmVlayAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NvM0Z3ckszaUxUY3ZoWXdZWjhVQTNKNTgud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7XG59XG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdUaWRpb0ludGVyJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMTAwIDkwMDtcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICBzcmM6IHVybChodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0L2ZvbnRzL2ludGVyX1VjQ28zRndySzNpTFRjdnRZd1laOFVBM0o1OC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcbn1cbi8qIGxhdGluLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NvM0Z3ckszaUxUY3ZzWXdZWjhVQTNKNTgud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVGlkaW9JbnRlcic7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgc3JjOiB1cmwoaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC9mb250cy9pbnRlcl9VY0NvM0Z3ckszaUxUY3ZpWXdZWjhVQTMud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XG59XG4iLGY/LmFwcGVuZENoaWxkKGUpLCgpPT57Zj8ucmVtb3ZlQ2hpbGQoZSl9fSxbZl0pLCgwLGEudXNlRWZmZWN0KSgoKT0+e28mJmg/LmdldEVsZW1lbnRCeUlkKCJib2R5Iik/LmNsYXNzTGlzdC5hZGQoIm1vYmlsZSIpfSxbaCxvXSksKDAsVi5GRCkoVi5GSyx7Y2hpbGRyZW46WygwLFYuWSkoImRpdiIse2lkOiJ0aWRpby1jaGF0LXJvb3QiLGNsYXNzTmFtZTpgZ3JpZC1sYXlvdXQgJHsibGVmdCI9PT1lPyJ3aWRnZXQtcG9zaXRpb24tbGVmdCI6IndpZGdldC1wb3NpdGlvbi1yaWdodCJ9ICR7ImxlZnQiPT09dD8ic2lkZWJhci1wb3NpdGlvbi1sZWZ0Ijoic2lkZWJhci1wb3NpdGlvbi1yaWdodCJ9ICR7bj8ic2lkZWJhci1lbmFibGVkIjoiIn0gJHtvPyJtb2JpbGUiOiIifSAke3A/ImNoYXQtb24tc2l0ZSI6IiJ9ICR7Yj8ibGFuZy1ydGwiOiIifVxuICAgIGAsc3R5bGU6e3dpZHRoOnUsIi0tY3VzdG9tLWJhY2tncm91bmQiOmlbMF0sIi0tY3VzdG9tLXRleHQtY29sb3IiOmlbMl0sIi0tY3VzdG9tLWFjdGlvbi1jb2xvciI6aVs0XXx8IiMwNTY2ZmYiLCItLWN1c3RvbS1hY3Rpb24tY29sb3ItY29udHJhc3QiOm0oaVs0XXx8IiMwNTY2ZmYiKT8iI2ZmZiI6IiMwMDAiLCItLWN1c3RvbS1hY3Rpb24tY29sb3ItaG92ZXIiOiJjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciksIHdoaXRlIDEwJSkiLCItLWN1c3RvbS1hY3Rpb24tY29sb3ItYWN0aXZlIjoiY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWN1c3RvbS1hY3Rpb24tY29sb3IpLCB3aGl0ZSAyMCUpIiwiLS1jdXN0b20tYWN0aW9uLWNvbG9yLWJhY2tncm91bmQiOiJjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciksIHdoaXRlIDkwJSkiLCItLWN1c3RvbS1hY3Rpb24tY29sb3ItYmFja2dyb3VuZC1hY3RpdmUiOiJjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY3VzdG9tLWFjdGlvbi1jb2xvciksIHdoaXRlIDYwJSkiLCItLXJhZGl1cy1zdXJmYWNlIjoiMTJweCIsIi0tcmFkaXVzLWNvbXBvbmVudCI6IjEycHgiLCItLXJhZGl1cy1zbWFsbC1jb21wb25lbnQiOiI4cHgiLCItLWNoYXQtcGFkZGluZyI6bz8iMTZweCI6IjIwcHgiLCItLW1lc3NhZ2UtcGFkZGluZy1ibG9jayI6IjE2cHgiLCItLW1lc3NhZ2UtcGFkZGluZy1pbmxpbmUiOiIxNnB4IiwiLS1tZXNzYWdlLWZvbnQtc2l6ZSI6IjE0cHgiLCItLW1lc3NhZ2UtbGluZS1oZWlnaHQiOiIyMHB4IiwiLS1zdGFydGVyLXBhZGRpbmctYmxvY2siOiIxNHB4IiwiLS1zdGFydGVyLWNoYXQtcGFkZGluZy1ibG9jayI6IjE2cHgiLCItLXN0YXJ0ZXJzLWdhcCI6IjhweCIsIi0tYnViYmxlLXNpemUiOiI1NnB4IiwiLS1sYWJlbC1wYWRkaW5nLWJsb2NrIjoiMTJweCIsIi0tbGFiZWwtcGFkZGluZy1pbmxpbmUiOiIxNnB4IiwiLS1sYWJlbC1zaGFkb3ciOiIwcHggMnB4IDhweCAwcHggcmdiYSg4LCAxNSwgMjYsIDAuMDgpLCAwcHggMnB4IDJweCAwcHggcmdiYSg4LCAxNSwgMjYsIDAuMTIpIiwiLS1mbHktc2hhZG93IjoiMHB4IDEycHggMzJweCAwcHggcmdiYSg4LCAxNSwgMjYsIDAuMTIpIiwiLS1vcGVyYXRvci1tZXNzYWdlIjoiI2Y1ZjdmOSIsIi0tYm9yZGVyLWNvbG9yIjoiI0QzREJFNSJ9LGNoaWxkcmVuOigwLFYuWSkoUXUse3NldFdpZGdldFBvc2l0aW9uOigpPT57fSxpZnJhbWVWaWV3OiJub3QtYXBwbGljYWJsZSIsaWZyYW1lTW9kZToibm90LWFwcGxpY2FibGUiLGlzU291bmRFbmFibGVkOnMsaXNBd2Vzb21lSWZyYW1lOiExLGlmcmFtZURvY3VtZW50OmgsaWZyYW1lV2luZG93OndpbmRvdy5wYXJlbnQsc3R5bGVDYWNoZUNvbnRhaW5lcjpoLGlzTW9iaWxlOm8saXNOZXdTa2luOiEwfSl9KSwoMCxWLlkpKFl1LHtzaGFkb3dSb290Omh9KSwoMCxWLlkpKGt1LHtzaGFkb3dSb290Omh9KV19KX07dmFyIG5wPSgpPT57Y29uc3R7aXNOZXdTa2luOmV9PSgwLHAuQSkoKTtyZXR1cm4gZT8oMCxWLlkpKHRwLHt9KTooMCxWLlkpKGVwLHt9KX19LDUxMjY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDIzMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkF5Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oZT1pLGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9KS5kZWZhdWx0O3ZhciBlfX0pO3ZhciBhPW4oNTQwOSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImokIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS51c2VGcmFtZX19KX0sNTQwOTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkZyYW1lQ29udGV4dENvbnN1bWVyPXQuRnJhbWVDb250ZXh0UHJvdmlkZXI9dC51c2VGcmFtZT10LkZyYW1lQ29udGV4dD12b2lkIDA7dmFyIGksYT1uKDM0ODApLG89KGk9YSkmJmkuX19lc01vZHVsZT9pOntkZWZhdWx0Oml9O3ZhciByPXZvaWQgMCxzPXZvaWQgMDsidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYocj1kb2N1bWVudCksInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJihzPXdpbmRvdyk7dmFyIGw9dC5GcmFtZUNvbnRleHQ9by5kZWZhdWx0LmNyZWF0ZUNvbnRleHQoe2RvY3VtZW50OnIsd2luZG93OnN9KSxkPSh0LnVzZUZyYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIG8uZGVmYXVsdC51c2VDb250ZXh0KGwpfSxsLlByb3ZpZGVyKSxjPWwuQ29uc3VtZXI7dC5GcmFtZUNvbnRleHRQcm92aWRlcj1kLHQuRnJhbWVDb250ZXh0Q29uc3VtZXI9Y30sNjAwMjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oNzc5Myk7ZnVuY3Rpb24gYSgpe31mdW5jdGlvbiBvKCl7fW8ucmVzZXRXYXJuaW5nQ2FjaGU9YSxlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLGEsbyxyKXtpZihyIT09aSl7dmFyIHM9bmV3IEVycm9yKCJDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiBVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzIik7dGhyb3cgcy5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIixzfX1mdW5jdGlvbiB0KCl7cmV0dXJuIGV9ZS5pc1JlcXVpcmVkPWU7dmFyIG49e2FycmF5OmUsYmlnaW50OmUsYm9vbDplLGZ1bmM6ZSxudW1iZXI6ZSxvYmplY3Q6ZSxzdHJpbmc6ZSxzeW1ib2w6ZSxhbnk6ZSxhcnJheU9mOnQsZWxlbWVudDplLGVsZW1lbnRUeXBlOmUsaW5zdGFuY2VPZjp0LG5vZGU6ZSxvYmplY3RPZjp0LG9uZU9mOnQsb25lT2ZUeXBlOnQsc2hhcGU6dCxleGFjdDp0LGNoZWNrUHJvcFR5cGVzOm8scmVzZXRXYXJuaW5nQ2FjaGU6YX07cmV0dXJuIG4uUHJvcFR5cGVzPW4sbn19LDYxNzc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7QUg6ZnVuY3Rpb24oKXtyZXR1cm4gcH0saTc6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sbUw6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sbjpmdW5jdGlvbigpe3JldHVybiBjfX0pO3ZhciBpLGEsbz1uKDc4ODgpLHI9bigzNDgwKSxzPW4oOTg1MyksbD1uKDg3OTUpLGQ9big3OTMyKSxjPShuKDczNjYpLG4oMzQ1NCksZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHM7aWYobnVsbD09dHx8IW8uaC5jYWxsKHQsImNzcyIpKXJldHVybiByLmNyZWF0ZUVsZW1lbnQuYXBwbHkodm9pZCAwLG4pO3ZhciBpPW4ubGVuZ3RoLGE9bmV3IEFycmF5KGkpO2FbMF09by5FLGFbMV09KDAsby5jKShlLHQpO2Zvcih2YXIgcz0yO3M8aTtzKyspYVtzXT1uW3NdO3JldHVybiByLmNyZWF0ZUVsZW1lbnQuYXBwbHkobnVsbCxhKX0pO2k9Y3x8KGM9e30pLGF8fChhPWkuSlNYfHwoaS5KU1g9e30pKTt2YXIgdT0oMCxvLncpKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5zdHlsZXMsaT0oMCxkLkopKFtuXSx2b2lkIDAsci51c2VDb250ZXh0KG8uVCkpLGE9ci51c2VSZWYoKTtyZXR1cm4oMCxsLmkpKGZ1bmN0aW9uKCl7dmFyIGU9dC5rZXkrIi1nbG9iYWwiLG49bmV3IHQuc2hlZXQuY29uc3RydWN0b3Ioe2tleTplLG5vbmNlOnQuc2hlZXQubm9uY2UsY29udGFpbmVyOnQuc2hlZXQuY29udGFpbmVyLHNwZWVkeTp0LnNoZWV0LmlzU3BlZWR5fSksbz0hMSxyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlW2RhdGEtZW1vdGlvbj0iJytlKyIgIitpLm5hbWUrJyJdJyk7cmV0dXJuIHQuc2hlZXQudGFncy5sZW5ndGgmJihuLmJlZm9yZT10LnNoZWV0LnRhZ3NbMF0pLG51bGwhPT1yJiYobz0hMCxyLnNldEF0dHJpYnV0ZSgiZGF0YS1lbW90aW9uIixlKSxuLmh5ZHJhdGUoW3JdKSksYS5jdXJyZW50PVtuLG9dLGZ1bmN0aW9uKCl7bi5mbHVzaCgpfX0sW3RdKSwoMCxsLmkpKGZ1bmN0aW9uKCl7dmFyIGU9YS5jdXJyZW50LG49ZVswXTtpZihlWzFdKWVbMV09ITE7ZWxzZXtpZih2b2lkIDAhPT1pLm5leHQmJigwLHMuc2spKHQsaS5uZXh0LCEwKSxuLnRhZ3MubGVuZ3RoKXt2YXIgbz1uLnRhZ3Nbbi50YWdzLmxlbmd0aC0xXS5uZXh0RWxlbWVudFNpYmxpbmc7bi5iZWZvcmU9byxuLmZsdXNoKCl9dC5pbnNlcnQoIiIsaSxuLCExKX19LFt0LGkubmFtZV0pLG51bGx9KTtmdW5jdGlvbiBwKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuKDAsZC5KKSh0KX1mdW5jdGlvbiBmKCl7dmFyIGU9cC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSx0PSJhbmltYXRpb24tIitlLm5hbWU7cmV0dXJue25hbWU6dCxzdHlsZXM6IkBrZXlmcmFtZXMgIit0KyJ7IitlLnN0eWxlcysifSIsYW5pbToxLHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIl9FTU9fIit0aGlzLm5hbWUrIl8iK3RoaXMuc3R5bGVzKyJfRU1PXyJ9fX19LDY5NzA6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW4oOTk4MSksYT1uKDE2Miksbz1hO28udjE9aSxvLnY0PWEsZS5leHBvcnRzPW99LDczNTk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxpJiZlKHQsaSksdH19KCksYT1uKDM0ODApLG89KHIoYSkscihuKDIyMDApKSk7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLGZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX0odCxlKSxpKHQsW3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucHJvcHMuY29udGVudERpZE1vdW50KCl9fSx7a2V5OiJjb21wb25lbnREaWRVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5wcm9wcy5jb250ZW50RGlkVXBkYXRlKCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGEuQ2hpbGRyZW4ub25seSh0aGlzLnByb3BzLmNoaWxkcmVuKX19XSksdH0oYS5Db21wb25lbnQpO3MucHJvcFR5cGVzPXtjaGlsZHJlbjpvLmRlZmF1bHQuZWxlbWVudC5pc1JlcXVpcmVkLGNvbnRlbnREaWRNb3VudDpvLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLGNvbnRlbnREaWRVcGRhdGU6by5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZH0sdC5kZWZhdWx0PXN9LDc3OTM6ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQifSw4MTA3OmZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXtpZihlJiZ0KXt2YXIgbj1BcnJheS5pc0FycmF5KHQpP3Q6dC5zcGxpdCgiLCIpO2lmKDA9PT1uLmxlbmd0aClyZXR1cm4hMDt2YXIgaT1lLm5hbWV8fCIiLGE9KGUudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCksbz1hLnJlcGxhY2UoL1wvLiokLywiIik7cmV0dXJuIG4uc29tZShmdW5jdGlvbihlKXt2YXIgdD1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpO3JldHVybiIuIj09PXQuY2hhckF0KDApP2kudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCh0KTp0LmVuZHNXaXRoKCIvKiIpP289PT10LnJlcGxhY2UoL1wvLiokLywiIik6YT09PXR9KX1yZXR1cm4hMH19LDg4OTI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuKDI0MjEpfSw4OTY2OmZ1bmN0aW9uKGUsdCl7dmFyIG47ZnVuY3Rpb24gaShlLHQpe3ZhciBuPVtdLGk9MDtmdW5jdGlvbiBhKGUpe3JldHVybiBuLnB1c2goZSksdH1mdW5jdGlvbiBvKCl7cmV0dXJuIG5baSsrXX1yZXR1cm57dG9rZW5pemU6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShlLGEpfSxkZXRva2VuaXplOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UobmV3IFJlZ0V4cCgiKCIrdCsiKSIsImciKSxvKX19fW49bmV3IGZ1bmN0aW9uKCl7dmFyIGU9ImBUTVBgIix0PSJbXlxcdTAwMjAtXFx1MDA3ZV0iLG49Iig/OlswLTldKlxcLlswLTldK3xbMC05XSspIixhPSJkaXJlY3Rpb25cXHMqOlxccyoiLG89IlsnXCJdP1xccyoiLHI9IihefFteYS16QS1aXSkiLHM9IlxcL1xcKlxcIT9cXHMqQG5vZmxpcFxccypcXCpcXC8iLGw9Iig/Oig/Oig/OlxcXFxbMC05YS1mXXsxLDZ9KSg/OlxcclxcbnxcXHMpPyl8XFxcXFteXFxyXFxuXFxmMC05YS1mXSkiLGQ9Iig/OltfYS16MC05LV18Iit0KyJ8IitsKyIpIixjPW4rIig/OlxccyooPzplbXxleHxweHxjbXxtbXxpbnxwdHxwY3xkZWd8cmFkfGdyYWR8bXN8c3xoenxraHp8JSl8IisoIi0/IisoIig/OltfYS16XXwiK3QrInwiK2wrIikiKStkKyIqIikrIik/Iix1PSIoKD86LT8iK2MrIil8KD86aW5oZXJpdHxhdXRvKSkiLHA9IigjPyIrZCsiK3woPzpyZ2JhP3xoc2xhPylcXChbIFxcZC4sJS1dK1xcKSkiLGY9Iig/OlshIyQlJiotfl18Iit0KyJ8IitsKyIpKj8iLG09Iig/IVthLXpBLVpdKSIsaD0iKD8hKCIrZCsifFxccj9cXG58XFxzfCN8XFw6fFxcLnxcXCx8XFwrfD58XFwofFxcKXxcXFt8XFxdfD18XFwqPXx+PXxcXF49fCdbXiddKiddKSo/eykiLGc9Iig/ISIrZitvKyJcXCkpIixiPSIoPz0iK2YrbysiXFwpKSIsdj0iKFxccyooPzohaW1wb3J0YW50XFxzKik/Wzt9XSkiLHg9bmV3IFJlZ0V4cCgiYFRNUGAiLCJnIikseT1uZXcgUmVnRXhwKCJcXC9cXCpbXipdKlxcKisoW15cXC8qXVteKl0qXFwqKykqXFwvIiwiZ2kiKSx3PW5ldyBSZWdFeHAoIigiK3MraCsiW147fV0rOz8pIiwiZ2kiKSxrPW5ldyBSZWdFeHAoIigiK3MrIlteXFx9XSo/fSkiLCJnaSIpLEE9bmV3IFJlZ0V4cCgiKCIrYSsiKWx0ciIsImdpIiksQz1uZXcgUmVnRXhwKCIoIithKyIpcnRsIiwiZ2kiKSxFPW5ldyBSZWdFeHAocisiKGxlZnQpIittK2craCwiZ2kiKSxTPW5ldyBSZWdFeHAocisiKHJpZ2h0KSIrbStnK2gsImdpIiksRD1uZXcgUmVnRXhwKHIrIihsZWZ0KSIrYiwiZ2kiKSxZPW5ldyBSZWdFeHAocisiKHJpZ2h0KSIrYiwiZ2kiKSxUPW5ldyBSZWdFeHAocisiKGx0cikiK2IsImdpIiksRj1uZXcgUmVnRXhwKHIrIihydGwpIitiLCJnaSIpLEk9bmV3IFJlZ0V4cChyKyIoW25zXT8pZS1yZXNpemUiLCJnaSIpLF89bmV3IFJlZ0V4cChyKyIoW25zXT8pdy1yZXNpemUiLCJnaSIpLE09bmV3IFJlZ0V4cCgiKCg/Om1hcmdpbnxwYWRkaW5nfGJvcmRlci13aWR0aClcXHMqOlxccyopIit1KyIoXFxzKykiK3UrIihcXHMrKSIrdSsiKFxccyspIit1K3YsImdpIiksTj1uZXcgUmVnRXhwKCIoKD86LWNvbG9yfGJvcmRlci1zdHlsZSlcXHMqOlxccyopIitwKyIoXFxzKykiK3ArIihcXHMrKSIrcCsiKFxccyspIitwK3YsImdpIiksTz1uZXcgUmVnRXhwKCIoYmFja2dyb3VuZCg/Oi1wb3NpdGlvbik/XFxzKjpcXHMqKD86W146O31cXHNdK1xccyspKj8pKCIrYysiKSIsImdpIiksUj1uZXcgUmVnRXhwKCIoYmFja2dyb3VuZC1wb3NpdGlvbi14XFxzKjpcXHMqKSgtPyIrbisiJSkiLCJnaSIpLGo9bmV3IFJlZ0V4cCgiKGJvcmRlci1yYWRpdXNcXHMqOlxccyopIit1KyIoPzooPzpcXHMrIit1KyIpKD86XFxzKyIrdSsiKT8oPzpcXHMrIit1KyIpPyk/KD86KD86KD86XFxzKlxcL1xccyopIit1KyIpKD86XFxzKyIrdSsiKT8oPzpcXHMrIit1KyIpPyg/OlxccysiK3UrIik/KT8iK3YsImdpIiksUD1uZXcgUmVnRXhwKCIoYm94LXNoYWRvd1xccyo6XFxzKig/Omluc2V0XFxzKik/KSIrdSwiZ2kiKSx6PW5ldyBSZWdFeHAoIih0ZXh0LXNoYWRvd1xccyo6XFxzKikiK3UrIihcXHMqKSIrcCwiZ2kiKSxMPW5ldyBSZWdFeHAoIih0ZXh0LXNoYWRvd1xccyo6XFxzKikiK3ArIihcXHMqKSIrdSwiZ2kiKSxVPW5ldyBSZWdFeHAoIih0ZXh0LXNoYWRvd1xccyo6XFxzKikiK3UsImdpIiksQj1uZXcgUmVnRXhwKCIodHJhbnNmb3JtXFxzKjpbXjt9XSopKHRyYW5zbGF0ZVhcXHMqXFwoXFxzKikiK3UrIihcXHMqXFwpKSIsImdpIiksSD1uZXcgUmVnRXhwKCIodHJhbnNmb3JtXFxzKjpbXjt9XSopKHRyYW5zbGF0ZVxccypcXChcXHMqKSIrdSsiKCg/OlxccyosXFxzKiIrdSsiKXswLDJ9XFxzKlxcKSkiLCJnaSIpO2Z1bmN0aW9uIHEoZSx0LG4pe3ZhciBpLGE7cmV0dXJuIiUiPT09bi5zbGljZSgtMSkmJigtMSE9PShpPW4uaW5kZXhPZigiLiIpKT8oYT1uLmxlbmd0aC1pLTIsbj0obj0xMDAtcGFyc2VGbG9hdChuKSkudG9GaXhlZChhKSsiJSIpOm49MTAwLXBhcnNlRmxvYXQobikrIiUiKSx0K259ZnVuY3Rpb24gVihlKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgNDplPVtlWzFdLGVbMF0sZVszXSxlWzJdXTticmVhaztjYXNlIDM6ZT1bZVsxXSxlWzBdLGVbMV0sZVsyXV07YnJlYWs7Y2FzZSAyOmU9W2VbMV0sZVswXV07YnJlYWs7Y2FzZSAxOmU9W2VbMF1dfXJldHVybiBlLmpvaW4oIiAiKX1mdW5jdGlvbiAkKGUsdCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLGk9bi5zbGljZSgyLDYpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pLGE9bi5zbGljZSg2LDEwKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxvPW5bMTBdfHwiIjtyZXR1cm4gdCsoYS5sZW5ndGg/VihpKSsiIC8gIitWKGEpOlYoaSkpK299ZnVuY3Rpb24gVyhlKXtyZXR1cm4gMD09PXBhcnNlRmxvYXQoZSk/ZToiLSI9PT1lWzBdP2Uuc2xpY2UoMSk6Ii0iK2V9ZnVuY3Rpb24gSyhlLHQsbil7cmV0dXJuIHQrVyhuKX1mdW5jdGlvbiBHKGUsdCxuLGksYSl7cmV0dXJuIHQrbitXKGkpK2F9ZnVuY3Rpb24gWChlLHQsbixpLGEpe3JldHVybiB0K24raStXKGEpfXJldHVybnt0cmFuc2Zvcm06ZnVuY3Rpb24odCxuKXt2YXIgYT1uZXcgaSh3LCJgTk9GTElQX1NJTkdMRWAiKSxvPW5ldyBpKGssImBOT0ZMSVBfQ0xBU1NgIikscj1uZXcgaSh5LCJgQ09NTUVOVGAiKTtyZXR1cm4gdD1yLnRva2VuaXplKG8udG9rZW5pemUoYS50b2tlbml6ZSh0LnJlcGxhY2UoImAiLCIlNjAiKSkpKSxuLnRyYW5zZm9ybURpckluVXJsJiYodD10LnJlcGxhY2UoVCwiJDEiK2UpLnJlcGxhY2UoRiwiJDFsdHIiKS5yZXBsYWNlKHgsInJ0bCIpKSxuLnRyYW5zZm9ybUVkZ2VJblVybCYmKHQ9dC5yZXBsYWNlKEQsIiQxIitlKS5yZXBsYWNlKFksIiQxbGVmdCIpLnJlcGxhY2UoeCwicmlnaHQiKSksdD10LnJlcGxhY2UoQSwiJDEiK2UpLnJlcGxhY2UoQywiJDFsdHIiKS5yZXBsYWNlKHgsInJ0bCIpLnJlcGxhY2UoRSwiJDEiK2UpLnJlcGxhY2UoUywiJDFsZWZ0IikucmVwbGFjZSh4LCJyaWdodCIpLnJlcGxhY2UoSSwiJDEkMiIrZSkucmVwbGFjZShfLCIkMSQyZS1yZXNpemUiKS5yZXBsYWNlKHgsInctcmVzaXplIikucmVwbGFjZShqLCQpLnJlcGxhY2UoUCxLKS5yZXBsYWNlKHosWCkucmVwbGFjZShMLFgpLnJlcGxhY2UoVSxLKS5yZXBsYWNlKEIsRykucmVwbGFjZShILEcpLnJlcGxhY2UoTSwiJDEkMiQzJDgkNSQ2JDckNCQ5IikucmVwbGFjZShOLCIkMSQyJDMkOCQ1JDYkNyQ0JDkiKS5yZXBsYWNlKE8scSkucmVwbGFjZShSLHEpLHQ9YS5kZXRva2VuaXplKG8uZGV0b2tlbml6ZShyLmRldG9rZW5pemUodCkpKX19fSxlLmV4cG9ydHM/dC50cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LGkpe3ZhciBhO3JldHVybiJvYmplY3QiPT10eXBlb2YgdD9hPXQ6KGE9e30sImJvb2xlYW4iPT10eXBlb2YgdCYmKGEudHJhbnNmb3JtRGlySW5Vcmw9dCksImJvb2xlYW4iPT10eXBlb2YgaSYmKGEudHJhbnNmb3JtRWRnZUluVXJsPWkpKSxuLnRyYW5zZm9ybShlLGEpfToidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5jc3NqYW51cz1uKX0sOTk4MTpmdW5jdGlvbihlLHQsbil7dmFyIGksYSxvPW4oNTAwMikscj1uKDU4MTEpLHM9MCxsPTA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgZD10JiZufHwwLGM9dHx8W10sdT0oZT1lfHx7fSkubm9kZXx8aSxwPXZvaWQgMCE9PWUuY2xvY2tzZXE/ZS5jbG9ja3NlcTphO2lmKG51bGw9PXV8fG51bGw9PXApe3ZhciBmPW8oKTtudWxsPT11JiYodT1pPVsxfGZbMF0sZlsxXSxmWzJdLGZbM10sZls0XSxmWzVdXSksbnVsbD09cCYmKHA9YT0xNjM4MyYoZls2XTw8OHxmWzddKSl9dmFyIG09dm9pZCAwIT09ZS5tc2Vjcz9lLm1zZWNzOihuZXcgRGF0ZSkuZ2V0VGltZSgpLGg9dm9pZCAwIT09ZS5uc2Vjcz9lLm5zZWNzOmwrMSxnPW0tcysoaC1sKS8xZTQ7aWYoZzwwJiZ2b2lkIDA9PT1lLmNsb2Nrc2VxJiYocD1wKzEmMTYzODMpLChnPDB8fG0+cykmJnZvaWQgMD09PWUubnNlY3MmJihoPTApLGg+PTFlNCl0aHJvdyBuZXcgRXJyb3IoInV1aWQudjEoKTogQ2FuJ3QgY3JlYXRlIG1vcmUgdGhhbiAxME0gdXVpZHMvc2VjIik7cz1tLGw9aCxhPXA7dmFyIGI9KDFlNCooMjY4NDM1NDU1JihtKz0xMjIxOTI5MjhlNSkpK2gpJTQyOTQ5NjcyOTY7Y1tkKytdPWI+Pj4yNCYyNTUsY1tkKytdPWI+Pj4xNiYyNTUsY1tkKytdPWI+Pj44JjI1NSxjW2QrK109MjU1JmI7dmFyIHY9bS80Mjk0OTY3Mjk2KjFlNCYyNjg0MzU0NTU7Y1tkKytdPXY+Pj44JjI1NSxjW2QrK109MjU1JnYsY1tkKytdPXY+Pj4yNCYxNXwxNixjW2QrK109dj4+PjE2JjI1NSxjW2QrK109cD4+Pjh8MTI4LGNbZCsrXT0yNTUmcDtmb3IodmFyIHg9MDt4PDY7Kyt4KWNbZCt4XT11W3hdO3JldHVybiB0fHxyKGMpfX19XSk7"}},"time_used":7,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":7,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/fonts/Outfit-Regular.woff2","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:15.770Z","timestamp":1785145635770,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /fonts/Outfit-Regular.woff2 HTTP/1.1\r\nHost: bit-core.top\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://bit-core.top/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\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\ndate: Mon, 27 Jul 2026 09:47:15 GMT\r\ncontent-type: font/woff2\r\ncontent-length: 16232\r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 03:56:18 GMT\r\nlast-modified: Sun, 16 Nov 2025 06:36:48 GMT\r\netag: \"3f68-69197100-f866e336e0209f;;;\"\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nage: 21057\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: d6a8b246d35cae8b9a9010daec74e0ea-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":16232,"size_decoded":16754,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 16232, version 1.0","md5":"44d632a68853b6c01d99cbd5a40118f3","sha1":"736e4288c98d260bf4eae38b4b4e5d55e02489db","sha256":"e14fd6c0709c156920956b5d27c8d09e9d532ebd4c1969fd7030104734f1474f","sha512":"5c456e6120c72ac3f5720ced95618fd97a1b1c7c6597815b6c02a321f7ee6c67c8293249eec8a966a718e9c3c9bd20d5abca59d8bde90f9123c83f56ed0d9269","ssdeep":"384:pAuyOiQBIQ2HwM9i2RgXucyp1RaH6vk77P+KZnSoH5w:ZylpwgRcWkavku0nx5w","tlshash":"ff72df4cc174d26de6ed0c354f18e2f9d77750297139c314f99261092a88620ee6f78b","first_seen":"2023-05-22T19:02:30Z","last_seen":"2026-07-29T06:16:17.908426Z","times_seen":31,"resource_available":false,"data":"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"}},"time_used":46,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":25,"receive":21,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/img/levels-star-1.png","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.053Z","timestamp":1785145636053,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /img/levels-star-1.png HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: image/webp\r\ncontent-length: 11560\r\ncache-control: public, max-age=604800\r\nage: 6412\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 99b1618c58cf276e87fadceb8baa645a-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":11560,"size_decoded":11866,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"b1b35359e693b6e7c821fcb7f8d01c98","sha1":"79dc57aeb927e2176c90bd4782f3247cf24c5db1","sha256":"8d620966f8479bbefe7db60e483aebd15dad9e42b163a938e3fe05615a14d8b2","sha512":"b493d9e6e5188b76eef4a765e3328959dacd097cb3ee7983ca34beedd789c7583fade030127b62bb164604facbe65abb2be7385a4b7f6bf21ac0cb7579597eaf","ssdeep":"192:Ymk+B+XxcKg2bq5f0bAmwi5lizjTgBw2OQI93fO2gIxWe2dKFOcxylwWDhXaXxv2:x1c28q5RZ8sgBw2OQefO2VWe2teyakhX","tlshash":"1632b0e53c632f45eb0408bd39ffebd2a11fe4574da256424d910badba40b6605bc384","first_seen":"2026-07-27T08:06:16.632916Z","last_seen":"2026-07-27T09:48:29.893002Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":45,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":24,"receive":21,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/img/bg-liquidity.jpg","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.147Z","timestamp":1785145636147,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /img/bg-liquidity.jpg HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/css/main.css?v=1684946825\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\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 200 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: image/webp\r\ncontent-length: 28634\r\ncache-control: public, max-age=604800\r\nage: 6412\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 714f2d7cf8836d0560f176501dc2e3a5-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":28634,"size_decoded":28940,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"3c521689ca69ab7ed04749071d9706ca","sha1":"037c27f8b01acc745a2f8f204819056e04a6c353","sha256":"18bc0a4002a61b6f64fec0702c8dce6d802129a25a4cb309ac3f904a6a52cfce","sha512":"95528e693603f38dcbd91706cf0c0f00d7f0c5c72b7c54c5059748b4ffde69c6ae45f74ad571913f72c0c9b9abae94e53854e2976fa72cb8f80e6b96449a263f","ssdeep":"768:/nbm5sWull1JdWT6aa+uPx03iRl4JU7M5bgnEkaarK6T0E:/bmEUuPy3iJQ2E9a5Tr","tlshash":"9fd2e13043a135e2e00854f33f847a9fea20f1f7e0692d6915dc8fd9786987ae1a5794","first_seen":"2026-07-27T08:06:16.643228Z","last_seen":"2026-07-27T09:48:29.893701Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":22,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":21,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/img/vip-oval.png","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.149Z","timestamp":1785145636149,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /img/vip-oval.png HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/css/main.css?v=1684946825\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\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 200 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: image/webp\r\ncontent-length: 169528\r\ncache-control: public, max-age=604800\r\nage: 6412\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 4c47ef801c926de7f763e562a255f9b8-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":169528,"size_decoded":169835,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"f431ecb2e8334735f8945ef6e8b19fbe","sha1":"6fe57d5e04e76b609eedb00e0bdf133156ab42d0","sha256":"3c576cc606a3e009627b42614af4e04c4cdc3281570c1cb7ad70da4ee6d563af","sha512":"1ba16a2e150df3c3bb1482d5eba1fd298ce8d1bf8bc2bc068e9cf5ed8098fe2060342733ef8723d96c7556ed737962ae073d015fef14dde2e41dfcacfbf940f7","ssdeep":"3072:393+3dua+pPrs+MG1xrelQykbeu/g0Qx1KoHwkdGQzfsIoDDtjSuL:N3+tgpohcxrelHu/ex1KoHNJYIMxjZL","tlshash":"a7f31288838e8982eb0ac9b00da4105439b50cd3bdda426d34f9661bdd4bdf1fb63753","first_seen":"2026-07-27T08:06:16.634651Z","last_seen":"2026-07-27T09:48:29.887931Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":80,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":21,"receive":59,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.tidio.co/widget-v4/1_447_0/static/js/widget.c201a34ef1bfdb786fba.js","fqdn":"code.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"172.67.73.221","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.402Z","timestamp":1785145636402,"http_version":"HTTP/2","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":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"GET /widget-v4/1_447_0/static/js/widget.c201a34ef1bfdb786fba.js HTTP/1.1\r\nHost: code.tidio.co\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: application/javascript\r\naccess-control-allow-origin: *\r\ncache-control: public, max-age=31536000, immutable\r\ncontent-encoding: gzip\r\netag: W/\"6a670aff-90322\"\r\nlast-modified: Mon, 27 Jul 2026 07:38:39 GMT\r\nserver: cloudflare\r\nvary: Accept-Encoding\r\nage: 7431\r\ncf-cache-status: HIT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=q6AHYme4l4oNcXUaJ0DXb4VsGJAkS%2FJKzYcDy%2BMQGLDJpbaDYEXY9WvBnXjDOO9A89lkvcDlWGr9qd2jgccVIAuFcRPwtGP8nzeGXjyVXLF1hoipzihbOCAE40eZ0WU%3D\"}]}\r\ncf-ray: a21ab8c38c9c723c-OSL\r\nX-Firefox-Spdy: h2\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"]}],"data":{"size":590626,"size_decoded":220518,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (65536), with no line terminators","md5":"9e5c54a1193f203bb8b8256bc777cb32","sha1":"0d6532cdd75d9546375c06a489f24f1e0b770235","sha256":"939b501bd754a041cbc5e5a2076a158b66a96e7b9a0247b6e9398b95cfd61a41","sha512":"8cb3ad5ec0d7f695defb9ab5cc2bc0ced2de2eb335285c0264c685225024d7a593abafd610643692469c8ec946ea0be4d0d5e5a88c5cd274ec1407fa2ad58cae","ssdeep":"6144:g0lLcSomMqTNITNVihh+tsAitql5ELWlStVLBUExehbP17Vll4XP1S+kiZv:g0dcSomQTNIhh+oWI/LhehbPtyVZv","tlshash":"61c41ad871d2f06247e311a6407f5107f33e195a380d8490f668edeab87958ea237fad","first_seen":"2026-07-27T07:44:11.949124Z","last_seen":"2026-07-27T10:17:04.952912Z","times_seen":9,"resource_available":true,"data":"IWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e30sdD0obmV3IGUuRXJyb3IpLnN0YWNrO3QmJihlLl9zZW50cnlEZWJ1Z0lkcz1lLl9zZW50cnlEZWJ1Z0lkc3x8e30sZS5fc2VudHJ5RGVidWdJZHNbdF09ImM5NzE1ZjZlLWYyMTktNDBhNS04ODFjLTljNDVkZWE5N2I2NSIsZS5fc2VudHJ5RGVidWdJZElkZW50aWZpZXI9InNlbnRyeS1kYmlkLWM5NzE1ZjZlLWYyMTktNDBhNS04ODFjLTljNDVkZWE5N2I2NSIpfWNhdGNoKGUpe319KCksZnVuY3Rpb24oKXt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2UuX3NlbnRyeU1vZHVsZU1ldGFkYXRhPWUuX3NlbnRyeU1vZHVsZU1ldGFkYXRhfHx7fSxmdW5jdGlvbigpe3ZhciB0LG49KG5ldyBlLkVycm9yKS5zdGFjayxyPWUuX3NlbnRyeU1vZHVsZU1ldGFkYXRhW25dfHx7fSxvPXsiX3NlbnRyeUJ1bmRsZXJQbHVnaW5BcHBLZXk6dGlkaW8tc2VudHJ5LXdpZGdldC1hcHAta2V5IjohMH0saT17fTtmb3IodCBpbiByKXIuaGFzT3duUHJvcGVydHkodCkmJihpW3RdPXJbdF0pO2Zvcih0IGluIG8pby5oYXNPd25Qcm9wZXJ0eSh0KSYmKGlbdF09b1t0XSk7ZS5fc2VudHJ5TW9kdWxlTWV0YWRhdGFbbl09aX0oKX0oKTt2YXIgX2dsb2JhbD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O19nbG9iYWwuU0VOVFJZX1JFTEVBU0U9e2lkOiIxLjQ0Ny4wIn0sZnVuY3Rpb24oKXt2YXIgZSx0LG4scixvPXswOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToyO2lmKCF0fHwib2JqZWN0IiE9dHlwZW9mIHR8fG48PTApcmV0dXJuIHQ7aWYoZSYmdCYmMD09PU9iamVjdC5rZXlzKHQpLmxlbmd0aClyZXR1cm4gZTtjb25zdCBvPXsuLi5lfTtmb3IoY29uc3QgZSBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpJiYob1tlXT1yKG9bZV0sdFtlXSxuLTEpKTtyZXR1cm4gb31uLmQodCx7aDpmdW5jdGlvbigpe3JldHVybiByfX0pfSw1MTpmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0LmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30sNzI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDg0MTIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcihlLmxlbmd0aCl9fSwxNjI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNTAwMiksbz1uKDU4MTEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIGk9dCYmbnx8MDsic3RyaW5nIj09dHlwZW9mIGUmJih0PSJiaW5hcnkiPT09ZT9uZXcgQXJyYXkoMTYpOm51bGwsZT1udWxsKTt2YXIgYT0oZT1lfHx7fSkucmFuZG9tfHwoZS5ybmd8fHIpKCk7aWYoYVs2XT0xNSZhWzZdfDY0LGFbOF09NjMmYVs4XXwxMjgsdClmb3IodmFyIHM9MDtzPDE2Oysrcyl0W2krc109YVtzXTtyZXR1cm4gdHx8byhhKX19LDE2MzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMzkzMiksbz1uKDQ0NzQpLGk9big4MDApLGE9bigzMTE3KSxzPW4oOTcyOSksYz1uKDM5NzcpLHU9big3MzY4KSxsPW4oOTY1MSksZD1uKDM0ODkpLGY9VHlwZUVycm9yLHA9ZChmdW5jdGlvbigpe1tdLmtleXMoKS5yZWR1Y2UoZnVuY3Rpb24oKXt9LHZvaWQgMCl9KSxoPSFwJiZ1KCJyZWR1Y2UiLGYpO3Ioe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOnB8fGh9LHtyZWR1Y2U6ZnVuY3Rpb24oZSl7YSh0aGlzKTt0cnl7aShlKX1jYXRjaChlKXtjKHRoaXMsInRocm93IixlKX12YXIgdD1hcmd1bWVudHMubGVuZ3RoPDIsbj10P3ZvaWQgMDphcmd1bWVudHNbMV07aWYoaClyZXR1cm4gbChoLHRoaXMsdD9bZV06W2Usbl0pO3ZhciByPXModGhpcyksdT0wO2lmKG8ocixmdW5jdGlvbihyKXt0Pyh0PSExLG49cik6bj1lKG4scix1KSx1Kyt9LHtJU19SRUNPUkQ6ITB9KSx0KXRocm93IG5ldyBmKCJSZWR1Y2Ugb2YgZW1wdHkgaXRlcmF0b3Igd2l0aCBubyBpbml0aWFsIHZhbHVlIik7cmV0dXJuIG59fSl9LDI0MTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNzI0MSksbz1uKDY2NzQpLGk9big4NjA2KSxhPW4oNTEpLHM9bigzMTE3KSxjPW8oW10uY29uY2F0KTtlLmV4cG9ydHM9cigiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24oZSl7dmFyIHQ9aS5mKHMoZSkpLG49YS5mO3JldHVybiBuP2ModCxuKGUpKTp0fX0sMjY3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxMzg1KSxvPW4oNjAzMSksaT1yKCJpdGVyYXRvciIpLGE9QXJyYXkucHJvdG90eXBlO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZSYmKG8uQXJyYXk9PT1lfHxhW2ldPT09ZSl9fSwzNTc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDg1OTcpLG89bigzNDg5KSxpPW4oNzU3MCkuU3RyaW5nO2UuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFvKGZ1bmN0aW9uKCl7dmFyIGU9U3ltYm9sKCJzeW1ib2wgZGV0ZWN0aW9uIik7cmV0dXJuIWkoZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJnImJnI8NDF9KX0sMzcxOmZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPXImJiFuLmNhbGwoezE6Mn0sMSk7dC5mPW8/ZnVuY3Rpb24oZSl7dmFyIHQ9cih0aGlzLGUpO3JldHVybiEhdCYmdC5lbnVtZXJhYmxlfTpufSw0MjI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDE0MzApLG89bigzMDExKSxpPW4oNTc5NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtyP28uZihlLHQsaSgwLG4pKTplW3RdPW59fSw0NTU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDc1NzApLG89T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3RyeXtvKHIsZSx7dmFsdWU6dCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaChuKXtyW2VdPXR9cmV0dXJuIHR9fSw1NTY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDkxNzApLG89big2Njc0KSxpPW4oODQ2MSksYT1uKDI2MzQpLHM9VVJMU2VhcmNoUGFyYW1zLGM9cy5wcm90b3R5cGUsdT1vKGMuZ2V0QWxsKSxsPW8oYy5oYXMpLGQ9bmV3IHMoImE9MSIpOyFkLmhhcygiYSIsMikmJmQuaGFzKCJhIix2b2lkIDApfHxyKGMsImhhcyIsZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPXQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdO2lmKHQmJnZvaWQgMD09PW4pcmV0dXJuIGwodGhpcyxlKTt2YXIgcj11KHRoaXMsZSk7YSh0LDEpO2Zvcih2YXIgbz1pKG4pLHM9MDtzPHIubGVuZ3RoOylpZihyW3MrK109PT1vKXJldHVybiEwO3JldHVybiExfSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sNTgzOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQseyQ0MTpmdW5jdGlvbigpe3JldHVybiBrdH0sJGE3OmZ1bmN0aW9uKCl7cmV0dXJuIFZlfSwkZ2M6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sJG1BOmZ1bmN0aW9uKCl7cmV0dXJuIHVlfSxBODA6ZnVuY3Rpb24oKXtyZXR1cm4gaGV9LEFjZzpmdW5jdGlvbigpe3JldHVybiBlZX0sQWpQOmZ1bmN0aW9uKCl7cmV0dXJuIE9ufSxBdEw6ZnVuY3Rpb24oKXtyZXR1cm4gWXR9LEJRVDpmdW5jdGlvbigpe3JldHVybiBXZX0sQmZjOmZ1bmN0aW9uKCl7cmV0dXJuIEJlfSxCdFc6ZnVuY3Rpb24oKXtyZXR1cm4gX259LEMyXzpmdW5jdGlvbigpe3JldHVybiBQbn0sQ1E1OmZ1bmN0aW9uKCl7cmV0dXJuIHp9LEQ4eTpmdW5jdGlvbigpe3JldHVybiBjZX0sRFB3OmZ1bmN0aW9uKCl7cmV0dXJuIFdufSxEdng6ZnVuY3Rpb24oKXtyZXR1cm4gdGV9LEUzSDpmdW5jdGlvbigpe3JldHVybiBpZX0sRTNTOmZ1bmN0aW9uKCl7cmV0dXJuIGZ0fSxGQlc6ZnVuY3Rpb24oKXtyZXR1cm4gRGV9LEZIWTpmdW5jdGlvbigpe3JldHVybiBUbn0sRzhjOmZ1bmN0aW9uKCl7cmV0dXJuIHJlfSxHT1c6ZnVuY3Rpb24oKXtyZXR1cm4gWW59LEdTQTpmdW5jdGlvbigpe3JldHVybiBIdH0sR2dvOmZ1bmN0aW9uKCl7cmV0dXJuIGp9LEhEeTpmdW5jdGlvbigpe3JldHVybiBaZX0sSE06ZnVuY3Rpb24oKXtyZXR1cm4gSX0sSFRGOmZ1bmN0aW9uKCl7cmV0dXJuIHhlfSxIZCQ6ZnVuY3Rpb24oKXtyZXR1cm4gS2V9LEhuXzpmdW5jdGlvbigpe3JldHVybiBWbn0sSHRfOmZ1bmN0aW9uKCl7cmV0dXJuIFF9LEh5bjpmdW5jdGlvbigpe3JldHVybiBobn0sSHpoOmZ1bmN0aW9uKCl7cmV0dXJuIEllfSxJQVU6ZnVuY3Rpb24oKXtyZXR1cm4gcXR9LEoxSDpmdW5jdGlvbigpe3JldHVybiB5fSxKN2c6ZnVuY3Rpb24oKXtyZXR1cm4gTWV9LEplTjpmdW5jdGlvbigpe3JldHVybiBFZX0sSm9xOmZ1bmN0aW9uKCl7cmV0dXJuIGl0fSxLM2w6ZnVuY3Rpb24oKXtyZXR1cm4gYm59LEwzdDpmdW5jdGlvbigpe3JldHVybiBFbn0sTEt4OmZ1bmN0aW9uKCl7cmV0dXJuIHZ0fSxMYVk6ZnVuY3Rpb24oKXtyZXR1cm4geXR9LE1CVjpmdW5jdGlvbigpe3JldHVybiBOdH0sTU9GOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LE1PSzpmdW5jdGlvbigpe3JldHVybiBPZX0sTWRqOmZ1bmN0aW9uKCl7cmV0dXJuIGJlfSxNaFg6ZnVuY3Rpb24oKXtyZXR1cm4gUHR9LE1pWDpmdW5jdGlvbigpe3JldHVybiBFfSxNbXo6ZnVuY3Rpb24oKXtyZXR1cm4gT3R9LE5DRTpmdW5jdGlvbigpe3JldHVybiBnfSxOSjU6ZnVuY3Rpb24oKXtyZXR1cm4gbW59LE5RTjpmdW5jdGlvbigpe3JldHVybiBLbn0sTlhrOmZ1bmN0aW9uKCl7cmV0dXJuIHF9LE5ldjpmdW5jdGlvbigpe3JldHVybiBhdH0sTnMyOmZ1bmN0aW9uKCl7cmV0dXJuIGx0fSxOd3o6ZnVuY3Rpb24oKXtyZXR1cm4gbX0sT2NwOmZ1bmN0aW9uKCl7cmV0dXJuIHZufSxPZGg6ZnVuY3Rpb24oKXtyZXR1cm4ga2V9LE9lNjpmdW5jdGlvbigpe3JldHVybiBTbn0sT3NMOmZ1bmN0aW9uKCl7cmV0dXJuIEd0fSxPdHo6ZnVuY3Rpb24oKXtyZXR1cm4gTHR9LE94azpmdW5jdGlvbigpe3JldHVybiBJbn0sUE5ROmZ1bmN0aW9uKCl7cmV0dXJuIFd9LFBQRzpmdW5jdGlvbigpe3JldHVybiBifSxRTkM6ZnVuY3Rpb24oKXtyZXR1cm4gc3R9LFFPTjpmdW5jdGlvbigpe3JldHVybiBvZX0sUVBHOmZ1bmN0aW9uKCl7cmV0dXJuIExufSxRU0o6ZnVuY3Rpb24oKXtyZXR1cm4gQ3R9LFFUJDpmdW5jdGlvbigpe3JldHVybiBadH0sUXVkOmZ1bmN0aW9uKCl7cmV0dXJuIHV0fSxRdnM6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sUkE3OmZ1bmN0aW9uKCl7cmV0dXJuIGFlfSxSQjE6ZnVuY3Rpb24oKXtyZXR1cm4ga259LFJTaTpmdW5jdGlvbigpe3JldHVybiBGdH0sUzFqOmZ1bmN0aW9uKCl7cmV0dXJuIGplfSxTNzk6ZnVuY3Rpb24oKXtyZXR1cm4gR2V9LFM4VzpmdW5jdGlvbigpe3JldHVybiBVZX0sUzhoOmZ1bmN0aW9uKCl7cmV0dXJuIHZlfSxTQlE6ZnVuY3Rpb24oKXtyZXR1cm4gSH0sU0s4OmZ1bmN0aW9uKCl7cmV0dXJuIFN9LFNRWjpmdW5jdGlvbigpe3JldHVybiBUfSxTUiQ6ZnVuY3Rpb24oKXtyZXR1cm4geW59LFNwYzpmdW5jdGlvbigpe3JldHVybiBFdH0sU3I4OmZ1bmN0aW9uKCl7cmV0dXJuIEhlfSxTcko6ZnVuY3Rpb24oKXtyZXR1cm4gd2V9LFN2VzpmdW5jdGlvbigpe3JldHVybiBjfSxUMFU6ZnVuY3Rpb24oKXtyZXR1cm4gZHR9LFRHcDpmdW5jdGlvbigpe3JldHVybiB1bn0sVHJ2OmZ1bmN0aW9uKCl7cmV0dXJuIE5lfSxUdHU6ZnVuY3Rpb24oKXtyZXR1cm4gd259LFVYSTpmdW5jdGlvbigpe3JldHVybiBMZX0sVWtJOmZ1bmN0aW9uKCl7cmV0dXJuIENufSxVdnI6ZnVuY3Rpb24oKXtyZXR1cm4gdn0sVnJFOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LFcweTpmdW5jdGlvbigpe3JldHVybiB5ZX0sV0JXOmZ1bmN0aW9uKCl7cmV0dXJuIEFlfSxXR006ZnVuY3Rpb24oKXtyZXR1cm4gVW59LFdlVDpmdW5jdGlvbigpe3JldHVybiB6bn0sWEM1OmZ1bmN0aW9uKCl7cmV0dXJuIHh0fSxYZWI6ZnVuY3Rpb24oKXtyZXR1cm4gcH0sWHp1OmZ1bmN0aW9uKCl7cmV0dXJuIG9ufSxZNjU6ZnVuY3Rpb24oKXtyZXR1cm4gUGV9LFlDQjpmdW5jdGlvbigpe3JldHVybiB0bn0sWjlxOmZ1bmN0aW9uKCl7cmV0dXJuIFB9LFpjdjpmdW5jdGlvbigpe3JldHVybiBnZX0sWmd0OmZ1bmN0aW9uKCl7cmV0dXJuIHNlfSxfQTE6ZnVuY3Rpb24oKXtyZXR1cm4gcHR9LF9LcjpmdW5jdGlvbigpe3JldHVybiB0dH0sX1B3OmZ1bmN0aW9uKCl7cmV0dXJuIEJ0fSxfY0Y6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sX3dXOmZ1bmN0aW9uKCl7cmV0dXJuIFh9LGEkUTpmdW5jdGlvbigpe3JldHVybiBSZX0sYW12OmZ1bmN0aW9uKCl7cmV0dXJuIFpufSxiWEE6ZnVuY3Rpb24oKXtyZXR1cm4gcnR9LGJ0SDpmdW5jdGlvbigpe3JldHVybiBafSxjb0Q6ZnVuY3Rpb24oKXtyZXR1cm4gY3R9LGQ1ZzpmdW5jdGlvbigpe3JldHVybiBkZX0sZDlROmZ1bmN0aW9uKCl7cmV0dXJuIE5ufSxkRDA6ZnVuY3Rpb24oKXtyZXR1cm4gcW59LGRQNjpmdW5jdGlvbigpe3JldHVybiBlbn0sZHBWOmZ1bmN0aW9uKCl7cmV0dXJuIGZlfSxkeXI6ZnVuY3Rpb24oKXtyZXR1cm4gQW59LGU1OTpmdW5jdGlvbigpe3JldHVybiBzfSxlNmU6ZnVuY3Rpb24oKXtyZXR1cm4gQ30sZTc3OmZ1bmN0aW9uKCl7cmV0dXJuIHd9LGU4TTpmdW5jdGlvbigpe3JldHVybiAkZX0sZVNMOmZ1bmN0aW9uKCl7cmV0dXJuIFRlfSxlc3Y6ZnVuY3Rpb24oKXtyZXR1cm4gd3R9LGV4dDpmdW5jdGlvbigpe3JldHVybiBwZX0sZjd6OmZ1bmN0aW9uKCl7cmV0dXJuIGdufSxmWTI6ZnVuY3Rpb24oKXtyZXR1cm4genR9LGZnZTpmdW5jdGlvbigpe3JldHVybiBJdH0sZzZROmZ1bmN0aW9uKCl7cmV0dXJuIGd0fSxnQ2I6ZnVuY3Rpb24oKXtyZXR1cm4gbm59LGdQczpmdW5jdGlvbigpe3JldHVybiBMfSxnZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gRmV9LGdwTjpmdW5jdGlvbigpe3JldHVybiBvfSxoRG46ZnVuY3Rpb24oKXtyZXR1cm4gSG59LGhKNzpmdW5jdGlvbigpe3JldHVybiBfdH0saG06ZnVuY3Rpb24oKXtyZXR1cm4gaHR9LGlTRDpmdW5jdGlvbigpe3JldHVybiBCbn0saVRkOmZ1bmN0aW9uKCl7cmV0dXJuIFllfSxpYXE6ZnVuY3Rpb24oKXtyZXR1cm4gUm59LGl2RzpmdW5jdGlvbigpe3JldHVybiBsbn0sajJGOmZ1bmN0aW9uKCl7cmV0dXJuICR9LGpfQTpmdW5jdGlvbigpe3JldHVybiBWdH0sam5rOmZ1bmN0aW9uKCl7cmV0dXJuIG10fSxqb2s6ZnVuY3Rpb24oKXtyZXR1cm4gR30sa0c3OmZ1bmN0aW9uKCl7cmV0dXJuIGFufSxrS0Q6ZnVuY3Rpb24oKXtyZXR1cm4gVHR9LGtmJDpmdW5jdGlvbigpe3JldHVybiBldH0sa29EOmZ1bmN0aW9uKCl7cmV0dXJuIEt0fSxreGw6ZnVuY3Rpb24oKXtyZXR1cm4gU2V9LGwybzpmdW5jdGlvbigpe3JldHVybiBidH0sbE51OmZ1bmN0aW9uKCl7cmV0dXJuIG50fSxsaXk6ZnVuY3Rpb24oKXtyZXR1cm4gZG59LG03XzpmdW5jdGlvbigpe3JldHVybiBGfSxtTzpmdW5jdGlvbigpe3JldHVybiBZfSxuQVg6ZnVuY3Rpb24oKXtyZXR1cm4geG59LG5NJDpmdW5jdGlvbigpe3JldHVybiBEdH0sbnB3OmZ1bmN0aW9uKCl7cmV0dXJuIGt9LG51cjpmdW5jdGlvbigpe3JldHVybiB1fSxud2o6ZnVuY3Rpb24oKXtyZXR1cm4gam59LG56dTpmdW5jdGlvbigpe3JldHVybiBffSxvT206ZnVuY3Rpb24oKXtyZXR1cm4gT30sb1B2OmZ1bmN0aW9uKCl7cmV0dXJuIFhlfSxvZEk6ZnVuY3Rpb24oKXtyZXR1cm4gc259LG9mNTpmdW5jdGlvbigpe3JldHVybiBRZX0scDVoOmZ1bmN0aW9uKCl7cmV0dXJuIFFufSxwSHU6ZnVuY3Rpb24oKXtyZXR1cm4gTXR9LHBPNjpmdW5jdGlvbigpe3JldHVybiBKdH0scFUxOmZ1bmN0aW9uKCl7cmV0dXJuIG5lfSxxMDU6ZnVuY3Rpb24oKXtyZXR1cm4gRG59LHExbTpmdW5jdGlvbigpe3JldHVybiBfZX0scTd2OmZ1bmN0aW9uKCl7cmV0dXJuIEZufSxxS246ZnVuY3Rpb24oKXtyZXR1cm4gV3R9LHFibzpmdW5jdGlvbigpe3JldHVybiBxZX0scWViOmZ1bmN0aW9uKCl7cmV0dXJuIFZ9LHJNQTpmdW5jdGlvbigpe3JldHVybiBKfSxyX2w6ZnVuY3Rpb24oKXtyZXR1cm4gRH0scmZFOmZ1bmN0aW9uKCl7cmV0dXJuIFV0fSxydFI6ZnVuY3Rpb24oKXtyZXR1cm4gQ2V9LHNETDpmdW5jdGlvbigpe3JldHVybiAkdH0sc0plOmZ1bmN0aW9uKCl7cmV0dXJuIHplfSxzY2o6ZnVuY3Rpb24oKXtyZXR1cm4gY259LHNnZjpmdW5jdGlvbigpe3JldHVybiB4fSxzeWM6ZnVuY3Rpb24oKXtyZXR1cm4gUnR9LHRLWjpmdW5jdGlvbigpe3JldHVybiBBdH0sdGFHOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LHRqUjpmdW5jdGlvbigpe3JldHVybiBVfSx0bm86ZnVuY3Rpb24oKXtyZXR1cm4gR259LHVFaTpmdW5jdGlvbigpe3JldHVybiBCfSx1T3k6ZnVuY3Rpb24oKXtyZXR1cm4gU3R9LHVkeDpmdW5jdGlvbigpe3JldHVybiBmbn0sdWZrOmZ1bmN0aW9uKCl7cmV0dXJuIE19LHZETTpmdW5jdGlvbigpe3JldHVybiBtZX0sdkYzOmZ1bmN0aW9uKCl7cmV0dXJuIGp0fSx2YWI6ZnVuY3Rpb24oKXtyZXR1cm4gUn0sdmU4OmZ1bmN0aW9uKCl7cmV0dXJuIGxlfSx3Rlg6ZnVuY3Rpb24oKXtyZXR1cm4gJG59LHdNSTpmdW5jdGlvbigpe3JldHVybiBwbn0sd1B2OmZ1bmN0aW9uKCl7cmV0dXJuIEt9LHdYbjpmdW5jdGlvbigpe3JldHVybiBBfSx4eGg6ZnVuY3Rpb24oKXtyZXR1cm4gcm59LHlWejpmdW5jdGlvbigpe3JldHVybiBvdH0seVczOmZ1bmN0aW9uKCl7cmV0dXJuIE1ufSx5cm46ZnVuY3Rpb24oKXtyZXR1cm4gUXR9LHpuQjpmdW5jdGlvbigpe3JldHVybiBYdH0senJzOmZ1bmN0aW9uKCl7cmV0dXJuIE59fSk7dmFyIHI9bigxODc1KTtjb25zdCBvPSJTRVRfV0lER0VUX01PVU5UX1NUQVRFIjtmdW5jdGlvbiBpKCl7cmV0dXJue3R5cGU6byxzdGF0dXM6IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSxzb3VyY2U6YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJub25lIn19Y29uc3QgYT0iUEVSU0lTVEVEX1NUQVRFX0xPQURFRCI7ZnVuY3Rpb24gcyhlKXtyZXR1cm57dHlwZTphLHN0YXRlOmV9fWNvbnN0IGM9IlJFUExBQ0VfU1RBVEVfV0lUSF9TQVZFRCI7ZnVuY3Rpb24gdShlKXtyZXR1cm57dHlwZTpjLHN0YXRlOmV9fWNvbnN0IGw9Ik1FUkdFX1ZJU0lUT1IiO2Z1bmN0aW9uIGQoZSl7cmV0dXJue3R5cGU6bCx2aXNpdG9ySWQ6ZX19Y29uc3QgZj0iSU5JVElBTElaRV9WSVNJVE9SX0RBVEEiO2Z1bmN0aW9uIHAoZSl7cmV0dXJue3R5cGU6Zix2aXNpdG9yRGF0YTplfX1jb25zdCBoPSJDT01QQVJFX1RJRElPX0lERU5USUZZX0RBVEEiO2Z1bmN0aW9uIG0oZSl7cmV0dXJue3R5cGU6aCxpZGVudGlmeURhdGE6ZX19Y29uc3QgZz0iTUVSR0VfVklTSVRPUl9EQVRBX0ZST01fSURFTlRJRlkiO2Z1bmN0aW9uIHkoZSl7cmV0dXJue3R5cGU6ZyxkYXRhVG9NZXJnZTplfX1jb25zdCB2PSJTQVZFX1RJRElPX0lERU5USUZZX0RBVEEiO2Z1bmN0aW9uIGIoZSl7cmV0dXJue3R5cGU6dixpZGVudGlmeURhdGE6ZX19Y29uc3Qgdz0iVklTSVRPUl9SRUdJU1RFUl9JTVBPUlRfREFUQSI7ZnVuY3Rpb24gXyhlKXtyZXR1cm57dHlwZTp3LGRhdGE6ZSxjYWxsYmFjazphcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06KCk9Pnt9fX1jb25zdCBTPSJTRVRfUFJPSkVDVF9TVEFUVVMiO2Z1bmN0aW9uIEUoZSl7cmV0dXJue3R5cGU6UyxzdGF0dXM6ZX19Y29uc3QgQz0iU0VUX0NIQVRfT1BFTkVEX1NUQVRFIjtmdW5jdGlvbiBrKGUpe3JldHVybnt0eXBlOkMsb3BlbjplfX1jb25zdCBBPSJTRVRfSUZSQU1FX1ZJRVciO2Z1bmN0aW9uIE8oZSl7cmV0dXJue3R5cGU6QSxpZnJhbWVWaWV3OmUsZGltZW5zaW9uczphcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbH19Y29uc3QgVD0iU0VUX1dJREdFVF9DT0xPUiI7ZnVuY3Rpb24geChlKXtyZXR1cm57dHlwZTpULGNvbG9yOmV9fWNvbnN0IEk9IlNFVF9GTEFHX1NFTkRfTUVTU0FHRV9GUk9NX1ZJU0lUT1IiO2Z1bmN0aW9uIE4oZSl7cmV0dXJue3R5cGU6SSxzaG91bGRTZW5kOmV9fWNvbnN0IEw9IlNFVF9PUFRJT05fRFJPUERPV05fVklTSUJJTElUWSI7ZnVuY3Rpb24gUChlKXtyZXR1cm57dHlwZTpMLHZpc2libGU6ZX19Y29uc3QgTT0iU0VUX05PVElGSUNBVElPTl9TVEFUVVMiO2Z1bmN0aW9uIFIoZSl7cmV0dXJue3R5cGU6TSxzdGF0dXM6ZX19Y29uc3QgRD0iT1BFUkFUT1JfSVNfVFlQSU5HX1NUQVRVUyI7ZnVuY3Rpb24gRigpe3JldHVybnt0eXBlOkQsb3BlcmF0b3JJZE9yU3RhdHVzOmFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sdGltZW91dFZhbHVlOmFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp2b2lkIDB9fWNvbnN0IGo9IlZJU0lUT1JfSVNfVFlQSU5HIjtmdW5jdGlvbiBCKCl7cmV0dXJue3R5cGU6aixtZXNzYWdlOmFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiIn19Y29uc3QgVj0iQUREX01FU1NBR0UiO2Z1bmN0aW9uIFUoZSl7cmV0dXJue3R5cGU6VixtZXNzYWdlOmV9fWNvbnN0IHo9IkFERF9QRU5ESU5HX0FUVEFDSE1FTlQiO2Z1bmN0aW9uIEgoZSx0KXtyZXR1cm57dHlwZTp6LHBheWxvYWQ6e2lkOmUsZmlsZTp0fX19Y29uc3QgJD0iVVBEQVRFX1BFTkRJTkdfQVRUQUNITUVOVF9TVEFUVVMiO2Z1bmN0aW9uIFkoZSx0LG4pe3JldHVybnt0eXBlOiQscGF5bG9hZDp7aWQ6ZSxzdGF0dXM6dCx1cGxvYWRlZFVybDpuPy51cGxvYWRlZFVybCx1cGxvYWRlZFRodW1iOm4/LnVwbG9hZGVkVGh1bWIsZXJyb3JNZXNzYWdlOm4/LmVycm9yTWVzc2FnZX19fWNvbnN0IHE9IlJFTU9WRV9QRU5ESU5HX0FUVEFDSE1FTlQiO2Z1bmN0aW9uIFcoZSl7cmV0dXJue3R5cGU6cSxwYXlsb2FkOntpZDplfX19Y29uc3QgRz0iQ0xFQVJfUEVORElOR19BVFRBQ0hNRU5UUyI7ZnVuY3Rpb24gUSgpe3JldHVybnt0eXBlOkd9fWNvbnN0IEs9IlVQREFURV9BVFRBQ0hNRU5UIjtmdW5jdGlvbiBaKGUsdCxuLHIsbyxpKXtyZXR1cm57dHlwZTpLLG1lc3NhZ2VJZDplLGF0dGFjaG1lbnRUeXBlOnQsdXJsOm4sbmFtZTpyLGV4dGVuc2lvbjpvLHRodW1iOmksaW1hZ2VMb2FkZWQ6YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0mJmFyZ3VtZW50c1s2XX19Y29uc3QgWD0iU1VCTUlUX0ZPUk0iO2Z1bmN0aW9uIEooZSl7cmV0dXJue3R5cGU6WCxtZXNzYWdlOigwLHIubVMpKGUpfX1jb25zdCBlZT0iVVBEQVRFX0FUVEFDSE1FTlRfTE9BREVEX1NUQVRFIjtmdW5jdGlvbiB0ZShlLHQpe3JldHVybnt0eXBlOmVlLG1lc3NhZ2VJZDplLGltYWdlTG9hZGVkOnR9fWNvbnN0IG5lPSJTRU5EX01FU1NBR0VfRlJPTV9WSVNJVE9SIjtmdW5jdGlvbiByZShlKXtsZXQgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO3JldHVybnt0eXBlOm5lLG1lc3NhZ2U6ZSxwYXlsb2FkOigwLHIubVMpKGUpLGVtaXQ6dH19Y29uc3Qgb2U9IlNFTkRfUEVORElOR19BVFRBQ0hNRU5UUyI7ZnVuY3Rpb24gaWUoKXtyZXR1cm57dHlwZTpvZX19ZnVuY3Rpb24gYWUoZSx0LG4pe2NvbnN0IHI9cmUoZSwhMCk7cmV0dXJuey4uLnIscGF5bG9hZDp7Li4uci5wYXlsb2FkLHBheWxvYWQ6dCxtZXRhZGF0YTpufX19Y29uc3Qgc2U9Ik9QRVJBVE9SX0FTU0lHTkVEX0RFUEFSVE1FTlQiO2Z1bmN0aW9uIGNlKGUpe3JldHVybnt0eXBlOnNlLGRlcGFydG1lbnRJZDplfX1jb25zdCB1ZT0iT1BFUkFUT1JfSk9JTkVEX0NPTlZFUlNBVElPTiI7ZnVuY3Rpb24gbGUoZSx0KXtyZXR1cm57dHlwZTp1ZSxvcGVyYXRvcklkOmUsb3BlcmF0b3JOYW1lOnR9fWNvbnN0IGRlPSJPUEVSQVRPUl9MRUZUX0NPTlZFUlNBVElPTiI7ZnVuY3Rpb24gZmUoZSl7cmV0dXJue3R5cGU6ZGUsb3BlcmF0b3JJZDplfX1jb25zdCBwZT0iT1BFUkFUT1JfVFJBTlNGRVJSRURfQ09OVkVSU0FUSU9OIjtmdW5jdGlvbiBoZShlKXtyZXR1cm57dHlwZTpwZSxwYXlsb2FkOmV9fWNvbnN0IG1lPSJPUEVSQVRPUl9DSEFOR0VEX1NUQVRVUyI7ZnVuY3Rpb24gZ2UoZSx0KXtyZXR1cm57dHlwZTptZSxvcGVyYXRvcklkOmUsaXNPbmxpbmU6dH19Y29uc3QgeWU9IlNFVF9CTE9DS0VEX01FU1NBR0UiO2Z1bmN0aW9uIHZlKCl7cmV0dXJue3R5cGU6eWUsbWVzc2FnZTphcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbH19Y29uc3QgYmU9IlNFTkRfRklMTEVEX1BSRUNIQVQiO2Z1bmN0aW9uIHdlKGUpe3JldHVybnt0eXBlOmJlLHVwZGF0ZURhdGE6ZX19Y29uc3QgX2U9IlNFTkRfRklMTEVEX0FMV0FZU19PTkxJTkVfTUVTU0FHRSI7ZnVuY3Rpb24gU2UoZSl7cmV0dXJue3R5cGU6X2UsZW1haWw6ZX19Y29uc3QgRWU9IkNSRUFURV9USUNLRVRfV0hFTl9PUEVSQVRPUlNfT0ZGTElORSI7ZnVuY3Rpb24gQ2UoZSx0KXtyZXR1cm57dHlwZTpFZSxlbWFpbDplLG1lc3NhZ2U6dH19Y29uc3Qga2U9IlZJU0lUT1JfU0VUX1JBVElORyI7ZnVuY3Rpb24gQWUoZSl7cmV0dXJue3R5cGU6a2UscmF0aW5nSXNHb29kOmV9fWNvbnN0IE9lPSJBRERfTkVXX01FU1NBR0VfRU1PSkkiO2Z1bmN0aW9uIFRlKCl7cmV0dXJue3R5cGU6T2UsZW1vamk6YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGx9fWNvbnN0IHhlPSJUT0dHTEVfRU1PSklfUEFORUwiO2Z1bmN0aW9uIEllKGUpe3JldHVybnt0eXBlOnhlLHN0YXR1czplfX1jb25zdCBOZT0iVklTSVRPUl9NRVNTQUdFX0RFTElWRVJZX1NUQVRVUyI7ZnVuY3Rpb24gTGUoZSx0LG4pe3JldHVybnt0eXBlOk5lLG1lc3NhZ2VJZDplLGlkRnJvbVNlcnZlcjp0LHN0YXR1czpufX1jb25zdCBQZT0iU0VUX01FU1NBR0VfRElTQUJMRURfU1RBVEUiO2Z1bmN0aW9uIE1lKGUpe3JldHVybnt0eXBlOlBlLG1lc3NhZ2VJZE9yQXJyYXlPZklkczplfX1jb25zdCBSZT0iU0VORF9SQVRFX0NPTlZFUlNBVElPTl9DT01NRU5UIjtmdW5jdGlvbiBEZShlLHQpe3JldHVybnt0eXBlOlJlLG1lc3NhZ2VJZDplLGNvbW1lbnQ6dH19Y29uc3QgRmU9IlZJU0lUT1JfVVBEQVRFX0RBVEEiO2Z1bmN0aW9uIGplKGUpe3JldHVybnt0eXBlOkZlLHVwZGF0ZURhdGE6ZSxlbWl0OiEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV19fWNvbnN0IEJlPSJWSVNJVE9SX0FERF9UQUdTIjtmdW5jdGlvbiBWZShlKXtyZXR1cm57dHlwZTpCZSx0YWdzOmV9fWNvbnN0IFVlPSJTRVRfQ09OVEFDVF9QUk9QRVJUSUVTIjtmdW5jdGlvbiB6ZShlKXtyZXR1cm57dHlwZTpVZSxwcm9wZXJ0aWVzOmV9fWNvbnN0IEhlPSJNRVJHRV9GRVRDSEVEX01FU1NBR0VTIjtmdW5jdGlvbiAkZShlLHQpe3JldHVybnt0eXBlOkhlLG1lc3NhZ2VzVG9NZXJnZTplLGxhc3RNZXNzYWdlSWQ6dH19Y29uc3QgWWU9IkJPVFNfR0VUX1NUQVJURUQiO2Z1bmN0aW9uIHFlKCl7cmV0dXJue3R5cGU6WWV9fWNvbnN0IFdlPSJTSE9XX0FMRVJUIjtmdW5jdGlvbiBHZShlKXtyZXR1cm57dHlwZTpXZSxtZXNzYWdlOmV9fWNvbnN0IFFlPSJISURFX0FMRVJUIjtmdW5jdGlvbiBLZSgpe3JldHVybnt0eXBlOlFlfX1jb25zdCBaZT0iSElERV9NRVNTQUdFIjtmdW5jdGlvbiBYZShlKXtyZXR1cm57dHlwZTpaZSxtZXNzYWdlSWQ6ZX19Y29uc3QgSmU9IlRJRElPQ0hBVEFQSV9GVU5DVElPTl9DQUxMIjtmdW5jdGlvbiBldChlLHQpe3JldHVybnt0eXBlOkplLGZ1bmN0aW9uTmFtZTplLGFyZ3M6dH19Y29uc3QgdHQ9IlRJRElPQ0hBVEFQSV9UUkFDSyI7ZnVuY3Rpb24gbnQoZSx0LG4pe3JldHVybnt0eXBlOnR0LGV2ZW50TmFtZTplLGV2ZW50RGF0YTp0LHN1Y2Nlc3NDYWxsYmFjazpufX1jb25zdCBydD0iQk9UX1RSSUdHRVIiO2Z1bmN0aW9uIG90KGUpe3JldHVybnt0eXBlOnJ0LGlkczplfX1jb25zdCBpdD0iU0VUX1BSRVZJRVdfREFUQSI7ZnVuY3Rpb24gYXQoZSx0KXtyZXR1cm57dHlwZTppdCxwcm9wOmUscGF5bG9hZDp0fX1jb25zdCBzdD0iU0VUX0JPVF9TVEFUVVMiO2Z1bmN0aW9uIGN0KCl7cmV0dXJue3R5cGU6c3QsaXNBY3RpdmU6IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXX19Y29uc3QgdXQ9IkNBTkNFTF9CT1RTIjtmdW5jdGlvbiBsdCgpe3JldHVybnt0eXBlOnV0fX1jb25zdCBkdD0iSElERV9IRUFERVIiO2Z1bmN0aW9uIGZ0KCl7cmV0dXJue3R5cGU6ZHQsc3RhdHVzOiEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF19fWNvbnN0IHB0PSJESVNBQkxFX0JPVF9BTklNQVRJT04iO2Z1bmN0aW9uIGh0KCl7cmV0dXJue3R5cGU6cHQsc3RhdHVzOiEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF19fWNvbnN0IG10PSJTRVRfVklFVyI7ZnVuY3Rpb24gZ3QoZSl7cmV0dXJue3R5cGU6bXQsdmlldzplfX1jb25zdCB5dD0iVVBEQVRFX1ZJU0lUT1JfVVJMIjtmdW5jdGlvbiB2dChlKXtyZXR1cm57dHlwZTp5dCx1cmw6ZX19Y29uc3QgYnQ9IlNIT1dfVVNFUl9EQVRBX01PREFMIjtmdW5jdGlvbiB3dChlKXtyZXR1cm57dHlwZTpidCxtb2RhbDplfX1jb25zdCBfdD0iU0VUX0ZFQVRVUkVTX0ZST01fQVBJIjtmdW5jdGlvbiBTdChlKXtyZXR1cm57dHlwZTpfdCxmZWF0dXJlczplfX1jb25zdCBFdD0iU0hPV19PTERFUl9NRVNTQUdFUyI7ZnVuY3Rpb24gQ3QoZSl7cmV0dXJue3R5cGU6RXQsc3RhdHVzOmV9fWNvbnN0IGt0PSJTRVRfRFJBR19BTkRfRFJPUF9TVEFUVVMiO2Z1bmN0aW9uIEF0KGUpe3JldHVybnt0eXBlOmt0LHN0YXR1czplfX1jb25zdCBPdD0iQ0xPU0VfU09DS0VUX0NPTk5FQ1RJT04iO2Z1bmN0aW9uIFR0KCl7cmV0dXJue3R5cGU6T3R9fWNvbnN0IHh0PSJTRVRfVklTSVRPUl9NRVJHRURfRU1JVF9RVUVVRSI7ZnVuY3Rpb24gSXQoZSl7cmV0dXJue3R5cGU6eHQsY2FsbGJhY2s6ZX19Y29uc3QgTnQ9IlZJU0lUT1JfQ0xJQ0tTX09OX0NIQVRfSUNPTiI7ZnVuY3Rpb24gTHQoKXtyZXR1cm57dHlwZTpOdH19Y29uc3QgUHQ9IlNFVF9QQUdFX1ZJU0lCTElUWV9TVEFUVVMiO2Z1bmN0aW9uIE10KGUpe3JldHVybnt0eXBlOlB0LHN0YXR1czplfX1jb25zdCBSdD0iVklTSVRPUl9NQVJLX01FU1NBR0VTX0FTX1JFQUQiO2Z1bmN0aW9uIER0KCl7cmV0dXJue3R5cGU6UnR9fWNvbnN0IEZ0PSJTSE9QSUZZX09SREVSX0NSRUFURUQiO2Z1bmN0aW9uIGp0KGUpe3JldHVybnt0eXBlOkZ0LHBhcmFtczplfX1jb25zdCBCdD0iU0hPUElGWV9DQVJUX1RPS0VOX1VQREFURUQiO2Z1bmN0aW9uIFZ0KGUpe3JldHVybnt0eXBlOkJ0LHBhcmFtczplfX1jb25zdCBVdD0iU0hPUElGWV9DSEVDS09VVF9DUkVBVEVEIjtmdW5jdGlvbiB6dChlKXtyZXR1cm57dHlwZTpVdCxwYXJhbXM6ZX19Y29uc3QgSHQ9IlZJU0lUT1JfV0lER0VUX1BPU0lUSU9OIjtmdW5jdGlvbiAkdChlKXtyZXR1cm57dHlwZTpIdCxwYXJhbXM6ZX19Y29uc3QgWXQ9IlNFVF9BV0VTT01FX0lGUkFNRSI7Y29uc3QgcXQ9Ik9QRU4tSU1BR0UtUE9QVVAiO2Z1bmN0aW9uIFd0KGUpe3JldHVybnt0eXBlOnF0LGltYWdlOmV9fWNvbnN0IEd0PSJDTE9TRS1JTUFHRS1QT1BVUCI7ZnVuY3Rpb24gUXQoKXtyZXR1cm57dHlwZTpHdH19Y29uc3QgS3Q9IlNFVC1JRlJBTUUtTU9EQUwiO2Z1bmN0aW9uIFp0KGUpe3JldHVybnt0eXBlOkt0LHVybDplfX1jb25zdCBYdD0iV0lER0VULUFDVElWSVRZLVRSQUNLSU5HIjtmdW5jdGlvbiBKdChlLHQpe3JldHVybnt0eXBlOlh0LGV2ZW50OmUsYWRkaXRpb25hbERhdGE6dH19Y29uc3QgZW49IkZFVENILVNIT1BJRlktQ0FSVC1DT05URU5UIjtmdW5jdGlvbiB0bigpe3JldHVybnt0eXBlOmVufX1jb25zdCBubj0iQ0xFQVItU0hPUElGWS1DQVJULUFUVFJJQlVURVMiO2Z1bmN0aW9uIHJuKCl7cmV0dXJue3R5cGU6bm59fWNvbnN0IG9uPSJTRVQtTUVTU0FHRS1GT1ItRkxZIjtmdW5jdGlvbiBhbihlKXtyZXR1cm57dHlwZTpvbixtZXNzYWdlOmV9fWNvbnN0IHNuPSJSQVRFLUNIQVQtQk9UIjtmdW5jdGlvbiBjbihlLHQsbil7cmV0dXJue3R5cGU6c24sbWVzc2FnZUlkOmUscmF0aW5nSWQ6dCxyYXRpbmc6bn19Y29uc3QgdW49IlNFVF9SRUNPTk5FQ1RJT05fQVRURU1QVF9DT1VOVCI7ZnVuY3Rpb24gbG4oZSl7cmV0dXJue3R5cGU6dW4sY291bnQ6ZX19Y29uc3QgZG49IlNFVF9ESVNBQkxFX1RFWFRfSU5QVVQiO2Z1bmN0aW9uIGZuKGUpe3JldHVybnt0eXBlOmRuLHN0YXR1czplfX1jb25zdCBwbj0iU0VULVNBVElTRkFDVElPTi1TVVJWRVktQ09ORklHIjtmdW5jdGlvbiBobihlLHQsbixyKXtyZXR1cm57dHlwZTpwbixjb25maWc6ZSx0aHJlYWRTb3VyY2U6dCx0aHJlYWRJZDpuLG1lc3NhZ2VJZDpyfX1jb25zdCBtbj0iUkFURS1TQVRJU0ZBQ1RJT04tU1VSVkVZIjtmdW5jdGlvbiBnbihlLHQsbixyKXtyZXR1cm57dHlwZTptbixyYXRpbmc6ZSx0aHJlYWRTb3VyY2U6dCx0aHJlYWRJZDpuLG1lc3NhZ2VJZDpyfX1jb25zdCB5bj0iQ09NTUVOVC1TQVRJU0ZBQ1RJT04tU1VSVkVZIjtmdW5jdGlvbiB2bihlLHQsbixyKXtyZXR1cm57dHlwZTp5bixjb21tZW50OmUsdGhyZWFkU291cmNlOnQsdGhyZWFkSWQ6bixtZXNzYWdlSWQ6cn19Y29uc3QgYm49IkpVREdFX01FX1JBVElOR19DTElDSyI7ZnVuY3Rpb24gd24oZSl7cmV0dXJue3R5cGU6Ym4scmF0aW5nOmV9fWNvbnN0IF9uPSJKVURHRV9NRV9SRVZJRVdfU0VOVCI7ZnVuY3Rpb24gU24oZSl7cmV0dXJue3R5cGU6X24scmF0aW5nOmV9fWNvbnN0IEVuPSJDQVJUX1ZBTFVFX0NIQU5HRURfU0VOVCI7ZnVuY3Rpb24gQ24oZSl7cmV0dXJue3R5cGU6RW4sZXZlbnREYXRhOmV9fWNvbnN0IGtuPSJUUklHR0VSX1NBVElTRkFDVElPTl9TVVJWRVkiO2NvbnN0IEFuPSJTRU5ELVZJREVPLUNBTEwtT0ZGRVIiO2Z1bmN0aW9uIE9uKGUpe3JldHVybnt0eXBlOkFuLHBheWxvYWQ6ZX19Y29uc3QgVG49IlNFTkQtVklERU8tQ0FMTC1JQ0UtQ0FORElEQVRFUyI7ZnVuY3Rpb24geG4oZSl7cmV0dXJue3R5cGU6VG4scGF5bG9hZDplfX1jb25zdCBJbj0iQUktQVNTSVNUQU5ULUlTLVRISU5LSU5HIjtmdW5jdGlvbiBObihlKXtyZXR1cm57dHlwZTpJbixzdGF0dXM6ZX19Y29uc3QgTG49IlBST0RVQ1QtUkVDT01NRU5EQVRJT04tQ0xJQ0tFRCI7ZnVuY3Rpb24gUG4oZSl7cmV0dXJue3R5cGU6TG4sLi4uZX19Y29uc3QgTW49IkFJLUFTU0lTVEFOVC1QUk9EVUNULVJFQ09NTUVOREFUSU9OLUNMSUNLRUQiO2Z1bmN0aW9uIFJuKGUpe3JldHVybnt0eXBlOk1uLC4uLmV9fWNvbnN0IERuPSJTRVQtT1BFTi1UQUIiO2Z1bmN0aW9uIEZuKGUpe3JldHVybnt0eXBlOkRuLG9wZW5UYWI6ZX19Y29uc3Qgam49Ik1BUkstTUVTU0FHRVMtQVMtUkVBRCI7ZnVuY3Rpb24gQm4oKXtyZXR1cm57dHlwZTpqbn19Y29uc3QgVm49IkFESlVTVC1TVFlMRVMiO2Z1bmN0aW9uIFVuKGUpe3JldHVybnt0eXBlOlZuLHN0eWxlczplfX1jb25zdCB6bj0iUkVNT1ZFLVNUWUxFUyI7ZnVuY3Rpb24gSG4oZSl7cmV0dXJue3R5cGU6em4sc3R5bGVJZDplfX1jb25zdCAkbj0iU0VUX1ZJU0lUT1JfQ1VSUkVOQ1kiO2Z1bmN0aW9uIFluKGUpe3JldHVybnt0eXBlOiRuLGN1cnJlbmN5RGF0YTplLGVtaXQ6IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXX19Y29uc3QgcW49IlNFVC1ERVZJQ0UtVFlQRSI7ZnVuY3Rpb24gV24oZSl7cmV0dXJue3R5cGU6cW4sZGV2aWNlVHlwZTplfX1jb25zdCBHbj0iRElTTUlTUy1QUklWQUNZLVBPTElDWSI7ZnVuY3Rpb24gUW4oKXtyZXR1cm57dHlwZTpHbn19Y29uc3QgS249IlNFVC1BREQtVE8tQ0FSVC1DQVJELUtFWS1UTy1QUk9DRVNTIjtmdW5jdGlvbiBabihlKXtyZXR1cm57dHlwZTpLbixjYXJkSWQ6ZX19fSw2MzE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2kubGVuZ3RofHwobygpLCEwKSxpW2kubGVuZ3RoXT1lfWUuZXhwb3J0cz1yO3ZhciBvLGk9W10sYT0wO2Z1bmN0aW9uIHMoKXtmb3IoO2E8aS5sZW5ndGg7KXt2YXIgZT1hO2lmKGErPTEsaVtlXS5jYWxsKCksYT4xMDI0KXtmb3IodmFyIHQ9MCxuPWkubGVuZ3RoLWE7dDxuO3QrKylpW3RdPWlbdCthXTtpLmxlbmd0aC09YSxhPTB9fWkubGVuZ3RoPTAsYT0wfXZhciBjLHUsbCxkPXZvaWQgMCE9PW4uZz9uLmc6c2VsZixmPWQuTXV0YXRpb25PYnNlcnZlcnx8ZC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO2Z1bmN0aW9uIHAoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9c2V0VGltZW91dChyLDApLG49c2V0SW50ZXJ2YWwociw1MCk7ZnVuY3Rpb24gcigpe2NsZWFyVGltZW91dCh0KSxjbGVhckludGVydmFsKG4pLGUoKX19fSJmdW5jdGlvbiI9PXR5cGVvZiBmPyhjPTEsdT1uZXcgZihzKSxsPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKSx1Lm9ic2VydmUobCx7Y2hhcmFjdGVyRGF0YTohMH0pLG89ZnVuY3Rpb24oKXtjPS1jLGwuZGF0YT1jfSk6bz1wKHMpLHIucmVxdWVzdEZsdXNoPW8sci5tYWtlUmVxdWVzdENhbGxGcm9tVGltZXI9cH0sNzIyOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxNDg2KSxvPW4oOTkzMyk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gcihlLG8pfX0sNzgwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse0tVOmZ1bmN0aW9uKCl7cmV0dXJuIHd9LG81OmZ1bmN0aW9uKCl7cmV0dXJuIGd9LG02OmZ1bmN0aW9uKCl7cmV0dXJuIHZ9LHJtOmZ1bmN0aW9uKCl7cmV0dXJuIHl9LHZuOmZ1bmN0aW9uKCl7cmV0dXJuIF99LHY0OmZ1bmN0aW9uKCl7cmV0dXJuIGJ9fSk7dmFyIHI9big3OTUwKSxvPW4oMzIyNSk7ZnVuY3Rpb24gaSgpe3JldHVybiBhKG8uTyksby5PfWZ1bmN0aW9uIGEoZSl7Y29uc3QgdD1lLl9fU0VOVFJZX189ZS5fX1NFTlRSWV9ffHx7fTtyZXR1cm4gdC52ZXJzaW9uPXQudmVyc2lvbnx8ci5NLHRbci5NXT10W3IuTV18fHt9fXZhciBzPW4oNzg1MCk7dmFyIGM9big5MDA0KTtjbGFzcyB1e2NvbnN0cnVjdG9yKGUsdCl7bGV0IG4scjtuPWV8fG5ldyBzLkgscj10fHxuZXcgcy5ILHRoaXMuX3N0YWNrPVt7c2NvcGU6bn1dLHRoaXMuX2lzb2xhdGlvblNjb3BlPXJ9d2l0aFNjb3BlKGUpe2NvbnN0IHQ9dGhpcy5fcHVzaFNjb3BlKCk7bGV0IG47dHJ5e249ZSh0KX1jYXRjaChlKXt0aHJvdyB0aGlzLl9wb3BTY29wZSgpLGV9cmV0dXJuKDAsYy5RZykobik/bi50aGVuKGU9Pih0aGlzLl9wb3BTY29wZSgpLGUpLGU9Pnt0aHJvdyB0aGlzLl9wb3BTY29wZSgpLGV9KToodGhpcy5fcG9wU2NvcGUoKSxuKX1nZXRDbGllbnQoKXtyZXR1cm4gdGhpcy5nZXRTdGFja1RvcCgpLmNsaWVudH1nZXRTY29wZSgpe3JldHVybiB0aGlzLmdldFN0YWNrVG9wKCkuc2NvcGV9Z2V0SXNvbGF0aW9uU2NvcGUoKXtyZXR1cm4gdGhpcy5faXNvbGF0aW9uU2NvcGV9Z2V0U3RhY2tUb3AoKXtyZXR1cm4gdGhpcy5fc3RhY2tbdGhpcy5fc3RhY2subGVuZ3RoLTFdfV9wdXNoU2NvcGUoKXtjb25zdCBlPXRoaXMuZ2V0U2NvcGUoKS5jbG9uZSgpO3JldHVybiB0aGlzLl9zdGFjay5wdXNoKHtjbGllbnQ6dGhpcy5nZXRDbGllbnQoKSxzY29wZTplfSksZX1fcG9wU2NvcGUoKXtyZXR1cm4hKHRoaXMuX3N0YWNrLmxlbmd0aDw9MSkmJiEhdGhpcy5fc3RhY2sucG9wKCl9fWZ1bmN0aW9uIGwoKXtjb25zdCBlPWEoaSgpKTtyZXR1cm4gZS5zdGFjaz1lLnN0YWNrfHxuZXcgdSgoMCxvLkIpKCJkZWZhdWx0Q3VycmVudFNjb3BlIiwoKT0+bmV3IHMuSCksKDAsby5CKSgiZGVmYXVsdElzb2xhdGlvblNjb3BlIiwoKT0+bmV3IHMuSCkpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGwoKS53aXRoU2NvcGUoZSl9ZnVuY3Rpb24gZihlLHQpe2NvbnN0IG49bCgpO3JldHVybiBuLndpdGhTY29wZSgoKT0+KG4uZ2V0U3RhY2tUb3AoKS5zY29wZT1lLHQoZSkpKX1mdW5jdGlvbiBwKGUpe3JldHVybiBsKCkud2l0aFNjb3BlKCgpPT5lKGwoKS5nZXRJc29sYXRpb25TY29wZSgpKSl9ZnVuY3Rpb24gaChlKXtjb25zdCB0PWEoZSk7cmV0dXJuIHQuYWNzP3QuYWNzOnt3aXRoSXNvbGF0aW9uU2NvcGU6cCx3aXRoU2NvcGU6ZCx3aXRoU2V0U2NvcGU6Zix3aXRoU2V0SXNvbGF0aW9uU2NvcGU6KGUsdCk9PnAodCksZ2V0Q3VycmVudFNjb3BlOigpPT5sKCkuZ2V0U2NvcGUoKSxnZXRJc29sYXRpb25TY29wZTooKT0+bCgpLmdldElzb2xhdGlvblNjb3BlKCl9fXZhciBtPW4oMjI0Nyk7ZnVuY3Rpb24gZygpe3JldHVybiBoKGkoKSkuZ2V0Q3VycmVudFNjb3BlKCl9ZnVuY3Rpb24geSgpe3JldHVybiBoKGkoKSkuZ2V0SXNvbGF0aW9uU2NvcGUoKX1mdW5jdGlvbiB2KCl7cmV0dXJuKDAsby5CKSgiZ2xvYmFsU2NvcGUiLCgpPT5uZXcgcy5IKX1mdW5jdGlvbiBiKCl7Y29uc3QgZT1oKGkoKSk7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07aWYoMj09PW4ubGVuZ3RoKXtjb25zdFt0LHJdPW47cmV0dXJuIHQ/ZS53aXRoU2V0U2NvcGUodCxyKTplLndpdGhTY29wZShyKX1yZXR1cm4gZS53aXRoU2NvcGUoblswXSl9ZnVuY3Rpb24gdygpe3JldHVybiBnKCkuZ2V0Q2xpZW50KCl9ZnVuY3Rpb24gXyhlKXtjb25zdCB0PWUuZ2V0UHJvcGFnYXRpb25Db250ZXh0KCkse3RyYWNlSWQ6bixzcGFuSWQ6cixwYXJlbnRTcGFuSWQ6b309dDtyZXR1cm4oMCxtLkNlKSh7dHJhY2VfaWQ6bixzcGFuX2lkOnIscGFyZW50X3NwYW5faWQ6b30pfX0sODAwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big5NzkpLG89bigzOTUzKSxpPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYocihlKSlyZXR1cm4gZTt0aHJvdyBuZXcgaShvKGUpKyIgaXMgbm90IGEgZnVuY3Rpb24iKX19LDgxNjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtBOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7dmFyIHI9bigyMjg0KTtmdW5jdGlvbiBvKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPSgwLHIuQSkoZSl8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgbz1uLmNhbGwoZSx0fHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT0oMCxyLkEpKG8pKXJldHVybiBvO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09dD9TdHJpbmc6TnVtYmVyKShlKX0oZSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PSgwLHIuQSkodCk/dDp0KyIifX0sOTM5OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGU+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyB0KCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtyZXR1cm4gZX19LDk3OTpmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7dmFyIHQ9Im9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuYWxsO2UuZXhwb3J0cz12b2lkIDA9PT10JiZ2b2lkIDAhPT10P2Z1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlfHxlPT09dH06ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV9fSwxMDI4OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5yKHQpLG4uZCh0LHtET01FeGNlcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4gX30sSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiBsfSxSZXF1ZXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHl9LFJlc3BvbnNlOmZ1bmN0aW9uKCl7cmV0dXJuIGJ9LGZldGNoOmZ1bmN0aW9uKCl7cmV0dXJuIFN9fSk7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzfHwidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fHZvaWQgMCE9PW4uZyYmbi5nfHx7fSxvPXtzZWFyY2hQYXJhbXM6IlVSTFNlYXJjaFBhcmFtcyJpbiByLGl0ZXJhYmxlOiJTeW1ib2wiaW4gciYmIml0ZXJhdG9yImluIFN5bWJvbCxibG9iOiJGaWxlUmVhZGVyImluIHImJiJCbG9iImluIHImJmZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgQmxvYiwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZm9ybURhdGE6IkZvcm1EYXRhImluIHIsYXJyYXlCdWZmZXI6IkFycmF5QnVmZmVyImluIHJ9O2lmKG8uYXJyYXlCdWZmZXIpdmFyIGk9WyJbb2JqZWN0IEludDhBcnJheV0iLCJbb2JqZWN0IFVpbnQ4QXJyYXldIiwiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iLCJbb2JqZWN0IEludDE2QXJyYXldIiwiW29iamVjdCBVaW50MTZBcnJheV0iLCJbb2JqZWN0IEludDMyQXJyYXldIiwiW29iamVjdCBVaW50MzJBcnJheV0iLCJbb2JqZWN0IEZsb2F0MzJBcnJheV0iLCJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXSxhPUFycmF5QnVmZmVyLmlzVmlld3x8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmkuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpPi0xfTtmdW5jdGlvbiBzKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSYmKGU9U3RyaW5nKGUpKSwvW15hLXowLTlcLSMkJSYnKisuXl9gfH4hXS9pLnRlc3QoZSl8fCIiPT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZTogIicrZSsnIicpO3JldHVybiBlLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gYyhlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGUmJihlPVN0cmluZyhlKSksZX1mdW5jdGlvbiB1KGUpe3ZhciB0PXtuZXh0OmZ1bmN0aW9uKCl7dmFyIHQ9ZS5zaGlmdCgpO3JldHVybntkb25lOnZvaWQgMD09PXQsdmFsdWU6dH19fTtyZXR1cm4gby5pdGVyYWJsZSYmKHRbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0fSksdH1mdW5jdGlvbiBsKGUpe3RoaXMubWFwPXt9LGUgaW5zdGFuY2VvZiBsP2UuZm9yRWFjaChmdW5jdGlvbihlLHQpe3RoaXMuYXBwZW5kKHQsZSl9LHRoaXMpOkFycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKDIhPWUubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoIkhlYWRlcnMgY29uc3RydWN0b3I6IGV4cGVjdGVkIG5hbWUvdmFsdWUgcGFpciB0byBiZSBsZW5ndGggMiwgZm91bmQiK2UubGVuZ3RoKTt0aGlzLmFwcGVuZChlWzBdLGVbMV0pfSx0aGlzKTplJiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXMuYXBwZW5kKHQsZVt0XSl9LHRoaXMpfWZ1bmN0aW9uIGQoZSl7aWYoIWUuX25vQm9keSlyZXR1cm4gZS5ib2R5VXNlZD9Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJBbHJlYWR5IHJlYWQiKSk6dm9pZChlLmJvZHlVc2VkPSEwKX1mdW5jdGlvbiBmKGUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LG4pe2Uub25sb2FkPWZ1bmN0aW9uKCl7dChlLnJlc3VsdCl9LGUub25lcnJvcj1mdW5jdGlvbigpe24oZS5lcnJvcil9fSl9ZnVuY3Rpb24gcChlKXt2YXIgdD1uZXcgRmlsZVJlYWRlcixuPWYodCk7cmV0dXJuIHQucmVhZEFzQXJyYXlCdWZmZXIoZSksbn1mdW5jdGlvbiBoKGUpe2lmKGUuc2xpY2UpcmV0dXJuIGUuc2xpY2UoMCk7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkoZS5ieXRlTGVuZ3RoKTtyZXR1cm4gdC5zZXQobmV3IFVpbnQ4QXJyYXkoZSkpLHQuYnVmZmVyfWZ1bmN0aW9uIG0oKXtyZXR1cm4gdGhpcy5ib2R5VXNlZD0hMSx0aGlzLl9pbml0Qm9keT1mdW5jdGlvbihlKXt2YXIgdDt0aGlzLmJvZHlVc2VkPXRoaXMuYm9keVVzZWQsdGhpcy5fYm9keUluaXQ9ZSxlPyJzdHJpbmciPT10eXBlb2YgZT90aGlzLl9ib2R5VGV4dD1lOm8uYmxvYiYmQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKT90aGlzLl9ib2R5QmxvYj1lOm8uZm9ybURhdGEmJkZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpP3RoaXMuX2JvZHlGb3JtRGF0YT1lOm8uc2VhcmNoUGFyYW1zJiZVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSk/dGhpcy5fYm9keVRleHQ9ZS50b1N0cmluZygpOm8uYXJyYXlCdWZmZXImJm8uYmxvYiYmKCh0PWUpJiZEYXRhVmlldy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZih0KSk/KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcj1oKGUuYnVmZmVyKSx0aGlzLl9ib2R5SW5pdD1uZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpOm8uYXJyYXlCdWZmZXImJihBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKXx8YShlKSk/dGhpcy5fYm9keUFycmF5QnVmZmVyPWgoZSk6dGhpcy5fYm9keVRleHQ9ZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk6KHRoaXMuX25vQm9keT0hMCx0aGlzLl9ib2R5VGV4dD0iIiksdGhpcy5oZWFkZXJzLmdldCgiY29udGVudC10eXBlIil8fCgic3RyaW5nIj09dHlwZW9mIGU/dGhpcy5oZWFkZXJzLnNldCgiY29udGVudC10eXBlIiwidGV4dC9wbGFpbjtjaGFyc2V0PVVURi04Iik6dGhpcy5fYm9keUJsb2ImJnRoaXMuX2JvZHlCbG9iLnR5cGU/dGhpcy5oZWFkZXJzLnNldCgiY29udGVudC10eXBlIix0aGlzLl9ib2R5QmxvYi50eXBlKTpvLnNlYXJjaFBhcmFtcyYmVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpJiZ0aGlzLmhlYWRlcnMuc2V0KCJjb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCIpKX0sby5ibG9iJiYodGhpcy5ibG9iPWZ1bmN0aW9uKCl7dmFyIGU9ZCh0aGlzKTtpZihlKXJldHVybiBlO2lmKHRoaXMuX2JvZHlCbG9iKXJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpO2lmKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKSk7aWYodGhpcy5fYm9keUZvcm1EYXRhKXRocm93IG5ldyBFcnJvcigiY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iIik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keVRleHRdKSl9KSx0aGlzLmFycmF5QnVmZmVyPWZ1bmN0aW9uKCl7aWYodGhpcy5fYm9keUFycmF5QnVmZmVyKXt2YXIgZT1kKHRoaXMpO3JldHVybiBlfHwoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcik/UHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5idWZmZXIuc2xpY2UodGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQrdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpKTpQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUFycmF5QnVmZmVyKSl9aWYoby5ibG9iKXJldHVybiB0aGlzLmJsb2IoKS50aGVuKHApO3Rocm93IG5ldyBFcnJvcigiY291bGQgbm90IHJlYWQgYXMgQXJyYXlCdWZmZXIiKX0sdGhpcy50ZXh0PWZ1bmN0aW9uKCl7dmFyIGU9ZCh0aGlzKTtpZihlKXJldHVybiBlO2lmKHRoaXMuX2JvZHlCbG9iKXJldHVybiBmdW5jdGlvbihlKXt2YXIgdD1uZXcgRmlsZVJlYWRlcixuPWYodCkscj0vY2hhcnNldD0oW0EtWmEtejAtOV8tXSspLy5leGVjKGUudHlwZSksbz1yP3JbMV06InV0Zi04IjtyZXR1cm4gdC5yZWFkQXNUZXh0KGUsbyksbn0odGhpcy5fYm9keUJsb2IpO2lmKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1uZXcgVWludDhBcnJheShlKSxuPW5ldyBBcnJheSh0Lmxlbmd0aCkscj0wO3I8dC5sZW5ndGg7cisrKW5bcl09U3RyaW5nLmZyb21DaGFyQ29kZSh0W3JdKTtyZXR1cm4gbi5qb2luKCIiKX0odGhpcy5fYm9keUFycmF5QnVmZmVyKSk7aWYodGhpcy5fYm9keUZvcm1EYXRhKXRocm93IG5ldyBFcnJvcigiY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0Iik7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dCl9LG8uZm9ybURhdGEmJih0aGlzLmZvcm1EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dCgpLnRoZW4odil9KSx0aGlzLmpzb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKX0sdGhpc31sLnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24oZSx0KXtlPXMoZSksdD1jKHQpO3ZhciBuPXRoaXMubWFwW2VdO3RoaXMubWFwW2VdPW4/bisiLCAiK3Q6dH0sbC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLm1hcFtzKGUpXX0sbC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBlPXMoZSksdGhpcy5oYXMoZSk/dGhpcy5tYXBbZV06bnVsbH0sbC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShzKGUpKX0sbC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dGhpcy5tYXBbcyhlKV09Yyh0KX0sbC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0aGlzLm1hcCl0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuKSYmZS5jYWxsKHQsdGhpcy5tYXBbbl0sbix0aGlzKX0sbC5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCxuKXtlLnB1c2gobil9KSx1KGUpfSxsLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2UucHVzaCh0KX0pLHUoZSl9LGwucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7ZS5wdXNoKFtuLHRdKX0pLHUoZSl9LG8uaXRlcmFibGUmJihsLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWwucHJvdG90eXBlLmVudHJpZXMpO3ZhciBnPVsiQ09OTkVDVCIsIkRFTEVURSIsIkdFVCIsIkhFQUQiLCJPUFRJT05TIiwiUEFUQ0giLCJQT1NUIiwiUFVUIiwiVFJBQ0UiXTtmdW5jdGlvbiB5KGUsdCl7aWYoISh0aGlzIGluc3RhbmNlb2YgeSkpdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgIm5ldyIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJyk7dmFyIG4sbyxpPSh0PXR8fHt9KS5ib2R5O2lmKGUgaW5zdGFuY2VvZiB5KXtpZihlLmJvZHlVc2VkKXRocm93IG5ldyBUeXBlRXJyb3IoIkFscmVhZHkgcmVhZCIpO3RoaXMudXJsPWUudXJsLHRoaXMuY3JlZGVudGlhbHM9ZS5jcmVkZW50aWFscyx0LmhlYWRlcnN8fCh0aGlzLmhlYWRlcnM9bmV3IGwoZS5oZWFkZXJzKSksdGhpcy5tZXRob2Q9ZS5tZXRob2QsdGhpcy5tb2RlPWUubW9kZSx0aGlzLnNpZ25hbD1lLnNpZ25hbCxpfHxudWxsPT1lLl9ib2R5SW5pdHx8KGk9ZS5fYm9keUluaXQsZS5ib2R5VXNlZD0hMCl9ZWxzZSB0aGlzLnVybD1TdHJpbmcoZSk7aWYodGhpcy5jcmVkZW50aWFscz10LmNyZWRlbnRpYWxzfHx0aGlzLmNyZWRlbnRpYWxzfHwic2FtZS1vcmlnaW4iLCF0LmhlYWRlcnMmJnRoaXMuaGVhZGVyc3x8KHRoaXMuaGVhZGVycz1uZXcgbCh0LmhlYWRlcnMpKSx0aGlzLm1ldGhvZD0obj10Lm1ldGhvZHx8dGhpcy5tZXRob2R8fCJHRVQiLG89bi50b1VwcGVyQ2FzZSgpLGcuaW5kZXhPZihvKT4tMT9vOm4pLHRoaXMubW9kZT10Lm1vZGV8fHRoaXMubW9kZXx8bnVsbCx0aGlzLnNpZ25hbD10LnNpZ25hbHx8dGhpcy5zaWduYWx8fGZ1bmN0aW9uKCl7aWYoIkFib3J0Q29udHJvbGxlciJpbiByKXJldHVybihuZXcgQWJvcnRDb250cm9sbGVyKS5zaWduYWx9KCksdGhpcy5yZWZlcnJlcj1udWxsLCgiR0VUIj09PXRoaXMubWV0aG9kfHwiSEVBRCI9PT10aGlzLm1ldGhvZCkmJmkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMiKTtpZih0aGlzLl9pbml0Qm9keShpKSwhKCJHRVQiIT09dGhpcy5tZXRob2QmJiJIRUFEIiE9PXRoaXMubWV0aG9kfHwibm8tc3RvcmUiIT09dC5jYWNoZSYmIm5vLWNhY2hlIiE9PXQuY2FjaGUpKXt2YXIgYT0vKFs/Jl0pXz1bXiZdKi87aWYoYS50ZXN0KHRoaXMudXJsKSl0aGlzLnVybD10aGlzLnVybC5yZXBsYWNlKGEsIiQxXz0iKyhuZXcgRGF0ZSkuZ2V0VGltZSgpKTtlbHNle3RoaXMudXJsKz0oL1w/Ly50ZXN0KHRoaXMudXJsKT8iJiI6Ij8iKSsiXz0iKyhuZXcgRGF0ZSkuZ2V0VGltZSgpfX19ZnVuY3Rpb24gdihlKXt2YXIgdD1uZXcgRm9ybURhdGE7cmV0dXJuIGUudHJpbSgpLnNwbGl0KCImIikuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlKXt2YXIgbj1lLnNwbGl0KCI9Iikscj1uLnNoaWZ0KCkucmVwbGFjZSgvXCsvZywiICIpLG89bi5qb2luKCI9IikucmVwbGFjZSgvXCsvZywiICIpO3QuYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChyKSxkZWNvZGVVUklDb21wb25lbnQobykpfX0pLHR9ZnVuY3Rpb24gYihlLHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGIpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSB1c2UgdGhlICJuZXciIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpO2lmKHR8fCh0PXt9KSx0aGlzLnR5cGU9ImRlZmF1bHQiLHRoaXMuc3RhdHVzPXZvaWQgMD09PXQuc3RhdHVzPzIwMDp0LnN0YXR1cyx0aGlzLnN0YXR1czwyMDB8fHRoaXMuc3RhdHVzPjU5OSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUmVzcG9uc2UnOiBUaGUgc3RhdHVzIHByb3ZpZGVkICgwKSBpcyBvdXRzaWRlIHRoZSByYW5nZSBbMjAwLCA1OTldLiIpO3RoaXMub2s9dGhpcy5zdGF0dXM+PTIwMCYmdGhpcy5zdGF0dXM8MzAwLHRoaXMuc3RhdHVzVGV4dD12b2lkIDA9PT10LnN0YXR1c1RleHQ/IiI6IiIrdC5zdGF0dXNUZXh0LHRoaXMuaGVhZGVycz1uZXcgbCh0LmhlYWRlcnMpLHRoaXMudXJsPXQudXJsfHwiIix0aGlzLl9pbml0Qm9keShlKX15LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgeSh0aGlzLHtib2R5OnRoaXMuX2JvZHlJbml0fSl9LG0uY2FsbCh5LnByb3RvdHlwZSksbS5jYWxsKGIucHJvdG90eXBlKSxiLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgYih0aGlzLl9ib2R5SW5pdCx7c3RhdHVzOnRoaXMuc3RhdHVzLHN0YXR1c1RleHQ6dGhpcy5zdGF0dXNUZXh0LGhlYWRlcnM6bmV3IGwodGhpcy5oZWFkZXJzKSx1cmw6dGhpcy51cmx9KX0sYi5lcnJvcj1mdW5jdGlvbigpe3ZhciBlPW5ldyBiKG51bGwse3N0YXR1czoyMDAsc3RhdHVzVGV4dDoiIn0pO3JldHVybiBlLm9rPSExLGUuc3RhdHVzPTAsZS50eXBlPSJlcnJvciIsZX07dmFyIHc9WzMwMSwzMDIsMzAzLDMwNywzMDhdO2IucmVkaXJlY3Q9ZnVuY3Rpb24oZSx0KXtpZigtMT09PXcuaW5kZXhPZih0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBzdGF0dXMgY29kZSIpO3JldHVybiBuZXcgYihudWxsLHtzdGF0dXM6dCxoZWFkZXJzOntsb2NhdGlvbjplfX0pfTt2YXIgXz1yLkRPTUV4Y2VwdGlvbjt0cnl7bmV3IF99Y2F0Y2goZSl7KF89ZnVuY3Rpb24oZSx0KXt0aGlzLm1lc3NhZ2U9ZSx0aGlzLm5hbWU9dDt2YXIgbj1FcnJvcihlKTt0aGlzLnN0YWNrPW4uc3RhY2t9KS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLF8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPV99ZnVuY3Rpb24gUyhlLHQpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuLGkpe3ZhciBhPW5ldyB5KGUsdCk7aWYoYS5zaWduYWwmJmEuc2lnbmFsLmFib3J0ZWQpcmV0dXJuIGkobmV3IF8oIkFib3J0ZWQiLCJBYm9ydEVycm9yIikpO3ZhciB1PW5ldyBYTUxIdHRwUmVxdWVzdDtmdW5jdGlvbiBkKCl7dS5hYm9ydCgpfWlmKHUub25sb2FkPWZ1bmN0aW9uKCl7dmFyIGUsdCxyPXtzdGF0dXNUZXh0OnUuc3RhdHVzVGV4dCxoZWFkZXJzOihlPXUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCl8fCIiLHQ9bmV3IGwsZS5yZXBsYWNlKC9ccj9cbltcdCBdKy9nLCIgIikuc3BsaXQoIlxyIikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiAwPT09ZS5pbmRleE9mKCJcbiIpP2Uuc3Vic3RyKDEsZS5sZW5ndGgpOmV9KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBuPWUuc3BsaXQoIjoiKSxyPW4uc2hpZnQoKS50cmltKCk7aWYocil7dmFyIG89bi5qb2luKCI6IikudHJpbSgpO3RyeXt0LmFwcGVuZChyLG8pfWNhdGNoKGUpe2NvbnNvbGUud2FybigiUmVzcG9uc2UgIitlLm1lc3NhZ2UpfX19KSx0KX07MD09PWEudXJsLmluZGV4T2YoImZpbGU6Ly8iKSYmKHUuc3RhdHVzPDIwMHx8dS5zdGF0dXM+NTk5KT9yLnN0YXR1cz0yMDA6ci5zdGF0dXM9dS5zdGF0dXMsci51cmw9InJlc3BvbnNlVVJMImluIHU/dS5yZXNwb25zZVVSTDpyLmhlYWRlcnMuZ2V0KCJYLVJlcXVlc3QtVVJMIik7dmFyIG89InJlc3BvbnNlImluIHU/dS5yZXNwb25zZTp1LnJlc3BvbnNlVGV4dDtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bihuZXcgYihvLHIpKX0sMCl9LHUub25lcnJvcj1mdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpKG5ldyBUeXBlRXJyb3IoIk5ldHdvcmsgcmVxdWVzdCBmYWlsZWQiKSl9LDApfSx1Lm9udGltZW91dD1mdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpKG5ldyBUeXBlRXJyb3IoIk5ldHdvcmsgcmVxdWVzdCB0aW1lZCBvdXQiKSl9LDApfSx1Lm9uYWJvcnQ9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aShuZXcgXygiQWJvcnRlZCIsIkFib3J0RXJyb3IiKSl9LDApfSx1Lm9wZW4oYS5tZXRob2QsZnVuY3Rpb24oZSl7dHJ5e3JldHVybiIiPT09ZSYmci5sb2NhdGlvbi5ocmVmP3IubG9jYXRpb24uaHJlZjplfWNhdGNoKHQpe3JldHVybiBlfX0oYS51cmwpLCEwKSwiaW5jbHVkZSI9PT1hLmNyZWRlbnRpYWxzP3Uud2l0aENyZWRlbnRpYWxzPSEwOiJvbWl0Ij09PWEuY3JlZGVudGlhbHMmJih1LndpdGhDcmVkZW50aWFscz0hMSksInJlc3BvbnNlVHlwZSJpbiB1JiYoby5ibG9iP3UucmVzcG9uc2VUeXBlPSJibG9iIjpvLmFycmF5QnVmZmVyJiYodS5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIikpLHQmJiJvYmplY3QiPT10eXBlb2YgdC5oZWFkZXJzJiYhKHQuaGVhZGVycyBpbnN0YW5jZW9mIGx8fHIuSGVhZGVycyYmdC5oZWFkZXJzIGluc3RhbmNlb2Ygci5IZWFkZXJzKSl7dmFyIGY9W107T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModC5oZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2YucHVzaChzKGUpKSx1LnNldFJlcXVlc3RIZWFkZXIoZSxjKHQuaGVhZGVyc1tlXSkpfSksYS5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oZSx0KXstMT09PWYuaW5kZXhPZih0KSYmdS5zZXRSZXF1ZXN0SGVhZGVyKHQsZSl9KX1lbHNlIGEuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7dS5zZXRSZXF1ZXN0SGVhZGVyKHQsZSl9KTthLnNpZ25hbCYmKGEuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixkKSx1Lm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQ9PT11LnJlYWR5U3RhdGUmJmEuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixkKX0pLHUuc2VuZCh2b2lkIDA9PT1hLl9ib2R5SW5pdD9udWxsOmEuX2JvZHlJbml0KX0pfVMucG9seWZpbGw9ITAsci5mZXRjaHx8KHIuZmV0Y2g9UyxyLkhlYWRlcnM9bCxyLlJlcXVlc3Q9eSxyLlJlc3BvbnNlPWIpfSwxMDMyOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxNDMwKSxvPW4oNTAyNyksaT1GdW5jdGlvbi5wcm90b3R5cGUsYT1yJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHM9byhpLCJuYW1lIiksYz1zJiYic29tZXRoaW5nIj09PWZ1bmN0aW9uKCl7fS5uYW1lLHU9cyYmKCFyfHxyJiZhKGksIm5hbWUiKS5jb25maWd1cmFibGUpO2UuZXhwb3J0cz17RVhJU1RTOnMsUFJPUEVSOmMsQ09ORklHVVJBQkxFOnV9fSwxMTE5OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big4NzI3KSxvPW4oODAwKSxpPW4oMzExNyksYT1uKDM5NTMpLHM9bigxMTY5KSxjPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPDI/cyhlKTp0O2lmKG8obikpcmV0dXJuIGkocihuLGUpKTt0aHJvdyBuZXcgYyhhKGUpKyIgaXMgbm90IGl0ZXJhYmxlIil9fSwxMTY5OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzNTI5KSxvPW4oOTkzMiksaT1uKDczOTkpLGE9big2MDMxKSxzPW4oMTM4NSkoIml0ZXJhdG9yIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFpKGUpKXJldHVybiBvKGUscyl8fG8oZSwiQEBpdGVyYXRvciIpfHxhW3IoZSldfX0sMTIxMDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNTQzMCk7ZS5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiJBcnJheSI9PT1yKGUpfX0sMTIzOTpmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3ZhbHVlOmUsZG9uZTp0fX19LDEyNDI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDM0ODkpO2UuZXhwb3J0cz0hcihmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKCl7fS5iaW5kKCk7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIGV8fGUuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpfSl9LDEzMDM6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDQxNzkpO2UuZXhwb3J0cz1yO3ZhciBvPWwoITApLGk9bCghMSksYT1sKG51bGwpLHM9bCh2b2lkIDApLGM9bCgwKSx1PWwoIiIpO2Z1bmN0aW9uIGwoZSl7dmFyIHQ9bmV3IHIoci5fRCk7cmV0dXJuIHQuX3k9MSx0Ll96PWUsdH1yLnJlc29sdmU9ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIHIpcmV0dXJuIGU7aWYobnVsbD09PWUpcmV0dXJuIGE7aWYodm9pZCAwPT09ZSlyZXR1cm4gcztpZighMD09PWUpcmV0dXJuIG87aWYoITE9PT1lKXJldHVybiBpO2lmKDA9PT1lKXJldHVybiBjO2lmKCIiPT09ZSlyZXR1cm4gdTtpZigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKXRyeXt2YXIgdD1lLnRoZW47aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIG5ldyByKHQuYmluZChlKSl9Y2F0Y2goZSl7cmV0dXJuIG5ldyByKGZ1bmN0aW9uKHQsbil7bihlKX0pfXJldHVybiBsKGUpfTt2YXIgZD1mdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgQXJyYXkuZnJvbT8oZD1BcnJheS5mcm9tLEFycmF5LmZyb20oZSkpOihkPWZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKX0sQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkpfTtmdW5jdGlvbiBmKGUpe3JldHVybntzdGF0dXM6ImZ1bGZpbGxlZCIsdmFsdWU6ZX19ZnVuY3Rpb24gcChlKXtyZXR1cm57c3RhdHVzOiJyZWplY3RlZCIscmVhc29uOmV9fWZ1bmN0aW9uIGgoZSl7aWYoZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpKXtpZihlIGluc3RhbmNlb2YgciYmZS50aGVuPT09ci5wcm90b3R5cGUudGhlbilyZXR1cm4gZS50aGVuKGYscCk7dmFyIHQ9ZS50aGVuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiBuZXcgcih0LmJpbmQoZSkpLnRoZW4oZixwKX1yZXR1cm4gZihlKX1mdW5jdGlvbiBtKGUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBBZ2dyZWdhdGVFcnJvcilyZXR1cm4gbmV3IEFnZ3JlZ2F0ZUVycm9yKGUsIkFsbCBwcm9taXNlcyB3ZXJlIHJlamVjdGVkIik7dmFyIHQ9bmV3IEVycm9yKCJBbGwgcHJvbWlzZXMgd2VyZSByZWplY3RlZCIpO3JldHVybiB0Lm5hbWU9IkFnZ3JlZ2F0ZUVycm9yIix0LmVycm9ycz1lLHR9ci5hbGw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZChlKTtyZXR1cm4gbmV3IHIoZnVuY3Rpb24oZSxuKXtpZigwPT09dC5sZW5ndGgpcmV0dXJuIGUoW10pO3ZhciBvPXQubGVuZ3RoO2Z1bmN0aW9uIGkoYSxzKXtpZihzJiYoIm9iamVjdCI9PXR5cGVvZiBzfHwiZnVuY3Rpb24iPT10eXBlb2Ygcykpe2lmKHMgaW5zdGFuY2VvZiByJiZzLnRoZW49PT1yLnByb3RvdHlwZS50aGVuKXtmb3IoOzM9PT1zLl95OylzPXMuX3o7cmV0dXJuIDE9PT1zLl95P2koYSxzLl96KTooMj09PXMuX3kmJm4ocy5feiksdm9pZCBzLnRoZW4oZnVuY3Rpb24oZSl7aShhLGUpfSxuKSl9dmFyIGM9cy50aGVuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBjKXJldHVybiB2b2lkIG5ldyByKGMuYmluZChzKSkudGhlbihmdW5jdGlvbihlKXtpKGEsZSl9LG4pfXRbYV09cywwPT09LS1vJiZlKHQpfWZvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKWkoYSx0W2FdKX0pfSxyLmFsbFNldHRsZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuYWxsKGQoZSkubWFwKGgpKX0sci5yZWplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyByKGZ1bmN0aW9uKHQsbil7bihlKX0pfSxyLnJhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyByKGZ1bmN0aW9uKHQsbil7ZChlKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3IucmVzb2x2ZShlKS50aGVuKHQsbil9KX0pfSxyLnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50aGVuKG51bGwsZSl9LHIuYW55PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgcihmdW5jdGlvbih0LG4pe3ZhciBvPWQoZSksaT0hMSxhPVtdO2Z1bmN0aW9uIHMoZSl7aXx8KGk9ITAsdChlKSl9ZnVuY3Rpb24gYyhlKXthLnB1c2goZSksYS5sZW5ndGg9PT1vLmxlbmd0aCYmbihtKGEpKX0wPT09by5sZW5ndGg/bihtKGEpKTpvLmZvckVhY2goZnVuY3Rpb24oZSl7ci5yZXNvbHZlKGUpLnRoZW4ocyxjKX0pfSl9fSwxMzg1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3NTcwKSxvPW4oNjYwNyksaT1uKDUwMjcpLGE9bigzNDEzKSxzPW4oMzU3KSxjPW4oNDIxNCksdT1yLlN5bWJvbCxsPW8oIndrcyIpLGQ9Yz91LmZvcnx8dTp1JiZ1LndpdGhvdXRTZXR0ZXJ8fGE7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBpKGwsZSl8fChsW2VdPXMmJmkodSxlKT91W2VdOmQoIlN5bWJvbC4iK2UpKSxsW2VdfX0sMTQxMzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTQzMCksbz1uKDMwMTEpLGk9big1Nzk0KTtlLmV4cG9ydHM9cj9mdW5jdGlvbihlLHQsbil7cmV0dXJuIG8uZihlLHQsaSgxLG4pKX06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlW3RdPW4sZX19LDE0MzA6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDM0ODkpO2UuZXhwb3J0cz0hcihmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSl9LDE0ODY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDY2NzQpLG89big1MDI3KSxpPW4oMzM5OSksYT1uKDQyNTkpLmluZGV4T2Yscz1uKDYwNDMpLGM9cihbXS5wdXNoKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWkoZSksdT0wLGw9W107Zm9yKG4gaW4gcikhbyhzLG4pJiZvKHIsbikmJmMobCxuKTtmb3IoO3QubGVuZ3RoPnU7KW8ocixuPXRbdSsrXSkmJih+YShsLG4pfHxjKGwsbikpO3JldHVybiBsfX0sMTUxMDpmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIEl0ZXJhdG9yJiZJdGVyYXRvci5wcm90b3R5cGVbZV07aWYobil0cnl7bi5jYWxsKHtuZXh0Om51bGx9LHQpLm5leHQoKX1jYXRjaChlKXtyZXR1cm4hMH19fSwxNTg0OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse1Q6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KTtjb25zdCByPSJ1bmRlZmluZWQiPT10eXBlb2YgX19TRU5UUllfREVCVUdfX3x8X19TRU5UUllfREVCVUdfX30sMTYzNzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMzQ4OSk7ZS5leHBvcnRzPSFyKGZ1bmN0aW9uKCl7dmFyIGU9IjkwMDcxOTkyNTQ3NDA5OTMiLHQ9SlNPTi5yYXdKU09OKGUpO3JldHVybiFKU09OLmlzUmF3SlNPTih0KXx8SlNPTi5zdHJpbmdpZnkodCkhPT1lfSl9LDE3NDQ6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDE0MzApLG89bigzNDg5KTtlLmV4cG9ydHM9ciYmbyhmdW5jdGlvbigpe3JldHVybiA0MiE9PU9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbigpe30sInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlfSl9LDE3NTg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7VDI6ZnVuY3Rpb24oKXtyZXR1cm4gc30sWFc6ZnVuY3Rpb24oKXtyZXR1cm4gaX0seGc6ZnVuY3Rpb24oKXtyZXR1cm4gYX19KTt2YXIgcixvPW4oOTAwNCk7ZnVuY3Rpb24gaShlKXtyZXR1cm4gbmV3IHModD0+e3QoZSl9KX1mdW5jdGlvbiBhKGUpe3JldHVybiBuZXcgcygodCxuKT0+e24oZSl9KX0hZnVuY3Rpb24oZSl7ZVtlLlBFTkRJTkc9MF09IlBFTkRJTkciO2VbZS5SRVNPTFZFRD0xXT0iUkVTT0xWRUQiO2VbZS5SRUpFQ1RFRD0yXT0iUkVKRUNURUQifShyfHwocj17fSkpO2NsYXNzIHN7Y29uc3RydWN0b3IoZSl7cy5wcm90b3R5cGUuX19pbml0LmNhbGwodGhpcykscy5wcm90b3R5cGUuX19pbml0Mi5jYWxsKHRoaXMpLHMucHJvdG90eXBlLl9faW5pdDMuY2FsbCh0aGlzKSxzLnByb3RvdHlwZS5fX2luaXQ0LmNhbGwodGhpcyksdGhpcy5fc3RhdGU9ci5QRU5ESU5HLHRoaXMuX2hhbmRsZXJzPVtdO3RyeXtlKHRoaXMuX3Jlc29sdmUsdGhpcy5fcmVqZWN0KX1jYXRjaChlKXt0aGlzLl9yZWplY3QoZSl9fXRoZW4oZSx0KXtyZXR1cm4gbmV3IHMoKG4scik9Pnt0aGlzLl9oYW5kbGVycy5wdXNoKFshMSx0PT57aWYoZSl0cnl7bihlKHQpKX1jYXRjaChlKXtyKGUpfWVsc2Ugbih0KX0sZT0+e2lmKHQpdHJ5e24odChlKSl9Y2F0Y2goZSl7cihlKX1lbHNlIHIoZSl9XSksdGhpcy5fZXhlY3V0ZUhhbmRsZXJzKCl9KX1jYXRjaChlKXtyZXR1cm4gdGhpcy50aGVuKGU9PmUsZSl9ZmluYWxseShlKXtyZXR1cm4gbmV3IHMoKHQsbik9PntsZXQgcixvO3JldHVybiB0aGlzLnRoZW4odD0+e289ITEscj10LGUmJmUoKX0sdD0+e289ITAscj10LGUmJmUoKX0pLnRoZW4oKCk9PntvP24ocik6dChyKX0pfSl9X19pbml0KCl7dGhpcy5fcmVzb2x2ZT1lPT57dGhpcy5fc2V0UmVzdWx0KHIuUkVTT0xWRUQsZSl9fV9faW5pdDIoKXt0aGlzLl9yZWplY3Q9ZT0+e3RoaXMuX3NldFJlc3VsdChyLlJFSkVDVEVELGUpfX1fX2luaXQzKCl7dGhpcy5fc2V0UmVzdWx0PShlLHQpPT57dGhpcy5fc3RhdGU9PT1yLlBFTkRJTkcmJigoMCxvLlFnKSh0KT90LnRoZW4odGhpcy5fcmVzb2x2ZSx0aGlzLl9yZWplY3QpOih0aGlzLl9zdGF0ZT1lLHRoaXMuX3ZhbHVlPXQsdGhpcy5fZXhlY3V0ZUhhbmRsZXJzKCkpKX19X19pbml0NCgpe3RoaXMuX2V4ZWN1dGVIYW5kbGVycz0oKT0+e2lmKHRoaXMuX3N0YXRlPT09ci5QRU5ESU5HKXJldHVybjtjb25zdCBlPXRoaXMuX2hhbmRsZXJzLnNsaWNlKCk7dGhpcy5faGFuZGxlcnM9W10sZS5mb3JFYWNoKGU9PntlWzBdfHwodGhpcy5fc3RhdGU9PT1yLlJFU09MVkVEJiZlWzFdKHRoaXMuX3ZhbHVlKSx0aGlzLl9zdGF0ZT09PXIuUkVKRUNURUQmJmVbMl0odGhpcy5fdmFsdWUpLGVbMF09ITApfSl9fX19LDE3OTc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7JG06ZnVuY3Rpb24oKXtyZXR1cm4geX0sb2I6ZnVuY3Rpb24oKXtyZXR1cm4gdn19KTtuKDgzNzcpO3ZhciByPW4oMzQ4MCksbz1uKDQwNTUpLGk9big5NTM1KSxhPW4oODk0OCkscz1uKDY3MDEpLGM9big0NzY3KSx1PW4oNzMyNiksbD1uKDg0NDgpLGQ9bigxODc1KSxmPW4oNTgzKSxwPW4oMzY1MCksaD1uKDQyMTgpLG09big4Mjg5KTtjb25zdCBnPXtuYW1lOiIxM2czYW1hIixzdHlsZXM6ImJvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWNvbXBvbmVudCwgMTJweCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IsICNEM0RCRTUpO2Zsb2F0OnJpZ2h0In07bGV0IHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuRklMRV9UT09fQklHPSJmaWxlVG9vQmlnIixlLkVYVEVOU0lPTl9OT1RfU1VQUE9SVEVEPSJleHRlbnNpb25Ob3RTdXBwb3J0ZWQiLGUuR0VORVJJQ19VUExPQURfRVJST1I9ImdlbmVyaWNVcGxvYWRFcnJvciIsZX0oe30pO2NvbnN0IHY9ZT0+e3RyeXtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7Y29uc3QgdD1KU09OLnBhcnNlKGUpLHttZXNzYWdlOm59PXQ7aWYoInN0cmluZyIhPXR5cGVvZiBuJiYhbi5pbmNsdWRlcygiYnl0ZXMiKSlyZXR1cm4gbnVsbDtjb25zdCByPW4uc3BsaXQoIiAiKSxvPXJbci5sZW5ndGgtMl07aWYoInN0cmluZyIhPXR5cGVvZiBvKXJldHVybiBudWxsO2NvbnN0IGk9cGFyc2VJbnQobywxMCk7cmV0dXJuIE1hdGgubWF4KE1hdGguZmxvb3IoaS8xMDI0LzEwMjQpLDApfWNhdGNoe3JldHVybiBudWxsfX07dC5BeT1lPT57bGV0e2lkOnQsc2VuZGVyOm4sZmlsZTpiLGhhbmRsZVN1Y2Nlc3M6dyxoYW5kbGVFcnJvcjpfLGN1c3RvbUNsYXNzTmFtZTpTLGhpZGVQcm9ncmVzc0luZm86RX09ZTtjb25zdCBDPSgwLG8ud0EpKCksaz0oMCxvLmQ0KShwLmlzKSxBPSgwLG8uZDQpKHAuWUEpLFtPLFRdPSgwLHIudXNlU3RhdGUpKDApLFt4LEldPSgwLHIudXNlU3RhdGUpKCJpbml0Iikse2lzTmV3U2tpbjpOfT0oMCxpLkEpKCksTD0oMCxyLnVzZUNhbGxiYWNrKSgoZSxuKT0+e2lmKHQpe0MoKDAsZi5vUHYpKHQpKTtsZXQgcj0oZT0+e3N3aXRjaChlKXtjYXNlIHkuRklMRV9UT09fQklHOnJldHVybigwLGwucHcpKCJmaWxlVG9CaWdBbGVydCIsbnVsbCwiRmlsZSBleGNlZWQgMTBNQiBsaW1pdC4iKTtjYXNlIHkuRVhURU5TSU9OX05PVF9TVVBQT1JURUQ6cmV0dXJuKDAsbC5wdykoImV4dGVuc2lvbk5vdFN1cHBvcnRlZEFsZXJ0IixudWxsLCJGaWxlIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkLiIpO2Nhc2UgeS5HRU5FUklDX1VQTE9BRF9FUlJPUjpkZWZhdWx0OnJldHVybigwLGwucHcpKCJnZW5lcmljRmlsZVVwbG9hZEFsZXJ0IixudWxsLCJTb21ldGhpbmcgd2VudCB3cm9uZyB3aGVuIHRyeWluZyB0byB1cGxvYWQgeW91ciBmaWxlLiIpfX0pKGUpO2NvbnN0IG89KDAscy55KShuKTtvPy5saW1pdEluTUImJihyPXIucmVwbGFjZSgiMTBNQiIsYCR7by5saW1pdEluTUJ9TUJgKSksQygoMCxmLlM3OSkocikpfX0sW0MsdF0pLFA9KDAsci51c2VDYWxsYmFjaykoZT0+e2xldHtmaWxlRXh0ZW5zaW9uOm59PWU7cmV0dXJuIG5ldyBQcm9taXNlKChlLHIpPT57Y29uc3Qgbz1uZXcgRmlsZVJlYWRlcjtvLm9ubG9hZD0oKT0+eyJzdHJpbmciIT10eXBlb2Ygby5yZXN1bHQ/cihuZXcgRXJyb3IoIlVwbG9hZGluZ0ZpbGVNZXNzYWdlIC0gcHJldmlldzogZXJyb3Igd2hpbGUgcmVhZGluZyBmaWxlIikpOih0JiZDKCgwLGYuYnRIKSh0LCgwLGQuaVQpKG58fCJmaWxlIiksby5yZXN1bHQsYi5uYW1lLG4sby5yZXN1bHQpKSx3Py4oe3VybDpvLnJlc3VsdCxtZXRhOntuYW1lOmIubmFtZSxleHRlbnNpb246bn19KSxlKCkpfSxvLm9uZXJyb3I9ZT0+cihlKSxvLnJlYWRBc0RhdGFVUkwoYil9KX0sW2IsdCx3LENdKSxNPSgwLHIudXNlQ2FsbGJhY2spKGFzeW5jKCk9PntpZighayl0aHJvdyBuZXcgRXJyb3IoIlVwbG9hZGluZ0ZpbGVNZXNzYWdlOiBtaXNzaW5nIHB1YmxpY0tleSIpO2lmKCFBKXRocm93IG5ldyBFcnJvcigiVXBsb2FkaW5nRmlsZU1lc3NhZ2U6IG1pc3NpbmcgdmlzaXRvcklkIik7Y29uc3QgZT1hd2FpdCgwLGMuWXQpKHtmaWxlOmIscHVibGljS2V5OmssdmlzaXRvcklkOkEsb25Qcm9ncmVzc1VwZGF0ZTplPT5UKGUpfSk7aWYoVCgxMDApLGUuaXNFcnJvcilzd2l0Y2goZS5zdGF0dXMpe2Nhc2UgMDp0aHJvdyBuZXcgRXJyb3IoeS5HRU5FUklDX1VQTE9BRF9FUlJPUik7Y2FzZSA0MTM6dGhyb3cgbmV3IEVycm9yKHkuRklMRV9UT09fQklHLHtjYXVzZTp7bGltaXRJbk1COnYoZS5kYXRhKX19KTtjYXNlIDQyMjp0aHJvdyBuZXcgRXJyb3IoeS5FWFRFTlNJT05fTk9UX1NVUFBPUlRFRCk7ZGVmYXVsdDp0aHJvdygwLHUuc1EpKGBVcGxvYWRpbmdGaWxlTWVzc2FnZTogcmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgJHtlLnN0YXR1c31gLHtyZXNwb25zZTplLmRhdGF9KSxuZXcgRXJyb3IoeS5HRU5FUklDX1VQTE9BRF9FUlJPUil9dCYmQygoMCxmLmJ0SCkodCwoMCxkLmlUKShlLmRhdGEubWV0YS5leHRlbnNpb24pLGUuZGF0YS51cmwsYi5uYW1lLGUuZGF0YS5tZXRhLmV4dGVuc2lvbixlLmRhdGEudGh1bWI/Lm1lZGl1bXx8IiIpKSx3Py4oey4uLmUuZGF0YSxtZXRhOnsuLi5lLmRhdGEubWV0YSxuYW1lOmIubmFtZX19KX0sW2ssQSxiLHQsdyxDXSksUj0oMCxyLnVzZUNhbGxiYWNrKShhc3luYygpPT57aWYoIWspdGhyb3cgbmV3IEVycm9yKCJVcGxvYWRpbmdGaWxlTWVzc2FnZTogbWlzc2luZyBwdWJsaWNLZXkiKTtpZighQSl0aHJvdyBuZXcgRXJyb3IoIlVwbG9hZGluZ0ZpbGVNZXNzYWdlOiBtaXNzaW5nIHZpc2l0b3JJZCIpO2NvbnN0IGU9YXdhaXQoMCxjLlRXKSh7ZmlsZVNpemU6Yi5zaXplLHB1YmxpY0tleTprLHZpc2l0b3JJZDpBfSk7aWYoZS5pc0Vycm9yKXN3aXRjaChlLnN0YXR1cyl7Y2FzZSAwOnRocm93IG5ldyBFcnJvcih5LkdFTkVSSUNfVVBMT0FEX0VSUk9SKTtjYXNlIDQxMzp0aHJvdyBuZXcgRXJyb3IoeS5GSUxFX1RPT19CSUcse2NhdXNlOntsaW1pdEluTUI6dihlLmRhdGEpfX0pO2Nhc2UgNDIyOnRocm93IG5ldyBFcnJvcih5LkVYVEVOU0lPTl9OT1RfU1VQUE9SVEVEKTtkZWZhdWx0OnRocm93KDAsdS5zUSkoYFVwbG9hZGluZ0ZpbGVNZXNzYWdlOiBwb3N0VmFsaWRhdGVGaWxlIGZhaWxlZCB3aXRoIHN0YXR1cyAke2Uuc3RhdHVzfWAse3Jlc3BvbnNlOmUuZGF0YX0pLG5ldyBFcnJvcih5LkdFTkVSSUNfVVBMT0FEX0VSUk9SKX19LFtrLEEsYi5zaXplXSksRD0oMCxyLnVzZUNhbGxiYWNrKShhc3luYygpPT57dHJ5e2NvbnN0IGU9KDAsZC5RQykoYi5uYW1lKTtpZighZXx8LTE9PT1kLlVPLmluZGV4T2YoZSkpdGhyb3cgbmV3IEVycm9yKHkuRVhURU5TSU9OX05PVF9TVVBQT1JURUQpOygwLGEuREQpKCk/YXdhaXQgUCh7ZmlsZUV4dGVuc2lvbjplfSk6KGF3YWl0IFIoKSxhd2FpdCBNKCkpfWNhdGNoKHQpe3QgaW5zdGFuY2VvZiBFcnJvciYmKGU9dC5tZXNzYWdlLE9iamVjdC52YWx1ZXMoeSkuaW5jbHVkZXMoZSkpPyhMKHQubWVzc2FnZSx0LmNhdXNlKSxfPy4odC5tZXNzYWdlLHQuY2F1c2UpKTooKDAsdS5zUSkodCksTCh5LkdFTkVSSUNfVVBMT0FEX0VSUk9SKSxfPy4oeS5HRU5FUklDX1VQTE9BRF9FUlJPUikpfWZpbmFsbHl7SSgiZG9uZSIpfXZhciBlfSxbYixfLFAsTSxMLFJdKTtyZXR1cm4oMCxyLnVzZUVmZmVjdCkoKCk9PnsiaW5pdCI9PT14JiYoSSgibG9hZGluZyIpLEQoKSl9LFt4LERdKSwibG9hZGluZyIhPT14P251bGw6Tj8oMCxtLlkpKCJkaXYiLHtjbGFzc05hbWU6U3x8Im1lc3NhZ2UgbWVzc2FnZS11cGxvYWQiLHJvbGU6InByb2dyZXNzYmFyIiwiYXJpYS12YWx1ZW1pbiI6MCwiYXJpYS12YWx1ZW1heCI6MTAwLCJhcmlhLXZhbHVlbm93IjpPLGNzczpnLGNoaWxkcmVuOigwLG0uRkQpKCJzcGFuIix7Y2hpbGRyZW46WygwLG0uWSkoaC50Uix7fSksIUUmJmAkeygwLGwucHcpKCJ1cGxvYWRlZCIsbnVsbCwiVXBsb2FkZWQiKX0gJHtPKzEwfSVgXX0pfSk6KDAsbS5ZKSgiZGl2Iix7Y2xhc3NOYW1lOlN8fGBtZXNzYWdlIG1lc3NhZ2UtdXBsb2FkIG1lc3NhZ2UtJHtufWAscm9sZToicHJvZ3Jlc3NiYXIiLCJhcmlhLXZhbHVlbWluIjowLCJhcmlhLXZhbHVlbWF4IjoxMDAsImFyaWEtdmFsdWVub3ciOk8sc3R5bGU6Uz97fTp7YmFja2dyb3VuZDoidmFyKC0tY3VzdG9tLWJhY2tncm91bmQpIixjb2xvcjoidmFyKC0tY3VzdG9tLXRleHQtY29sb3IpIn0sY2hpbGRyZW46KDAsbS5GRCkoInNwYW4iLHtjaGlsZHJlbjpbKDAsbS5ZKShoLmFILHt9KSwhRSYmYCR7KDAsbC5wdykoInVwbG9hZGVkIixudWxsLCJVcGxvYWRlZCIpfSAke099JWBdfSl9KX19LDE4NDM6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7QUw6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sQnY6ZnVuY3Rpb24oKXtyZXR1cm4gcH0sR1k6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sYXg6ZnVuY3Rpb24oKXtyZXR1cm4gc30sYmk6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sZTI6ZnVuY3Rpb24oKXtyZXR1cm4gaH0scnI6ZnVuY3Rpb24oKXtyZXR1cm4gY30seUc6ZnVuY3Rpb24oKXtyZXR1cm4gZn19KTt2YXIgcj1uKDc1MDIpLG89big3MzI2KTtsZXQgaT1udWxsLGE9bnVsbDtjb25zdCBzPSgwLHIuQSkoKTtmdW5jdGlvbiBjKGUsdCl7aT1lLGE9dCxpJiZhJiZzLmVtaXQoImRvY3VtZW50QW5kV2luZG93UmVmU2V0Iil9Y29uc3QgdT0oKT0+YT9hLmZyYW1lRWxlbWVudDpudWxsLGw9KCk9PmEsZD0oKT0+aTtmdW5jdGlvbiBmKCl7aWYoIWkpcmV0dXJuITE7Y29uc3QgZT1pLmdldEVsZW1lbnRCeUlkKCJuZXctbWVzc2FnZS10ZXh0YXJlYSIpO3JldHVybiBlJiZlLmZvY3VzKCksITB9ZnVuY3Rpb24gcCgpe2lmKCFpKXJldHVybiExO3RyeXtjb25zdCBlPWkucXVlcnlTZWxlY3RvckFsbCgiLmFsd2F5cy1vbmxpbmUgaW5wdXQ6bm90KC5kaXNhYmxlZCksIC5wcmUtY2hhdCBpbnB1dDpub3QoLmRpc2FibGVkKSIpO2lmKGUubGVuZ3RoPjApe2NvbnN0IHQ9ZVtlLmxlbmd0aC0xXTt0LmZvY3VzKCk7Y29uc3Qgbj10LnBhcmVudE5vZGUucGFyZW50Tm9kZSxyPSgpPT57bi5yZW1vdmVFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLHIpLG4uY2xhc3NMaXN0LnJlbW92ZSgic2hha2UiKX07bi5jbGFzc0xpc3QuYWRkKCJzaGFrZSIpLG4uYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIixyKX1yZXR1cm4hMH1jYXRjaChlKXtyZXR1cm4oMCxvLnNRKShlKSwhMX19ZnVuY3Rpb24gaCgpe2lmKCFpKXJldHVybiExO3RyeXtjb25zdCBlPWkucXVlcnlTZWxlY3RvcigiLm1lc3NhZ2Utd2l0aC1idXR0b25zOm5vdCguYnV0dG9ucy1oaWRkZW4pIik7aWYoZSYmZS5zY3JvbGxJbnRvVmlldyl0cnl7ZS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCJ9KX1jYXRjaHtlLnNjcm9sbEludG9WaWV3KCl9cmV0dXJuITB9Y2F0Y2goZSl7cmV0dXJuKDAsby5zUSkoZSksITF9fX0sMTg3NTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtCZzpmdW5jdGlvbigpe3JldHVybiB1fSxIMTpmdW5jdGlvbigpe3JldHVybiBifSxINDpmdW5jdGlvbigpe3JldHVybiBffSxLdDpmdW5jdGlvbigpe3JldHVybiBrfSxRQzpmdW5jdGlvbigpe3JldHVybiBwfSxRVjpmdW5jdGlvbigpe3JldHVybiBDfSxVTzpmdW5jdGlvbigpe3JldHVybiBsfSxlJDpmdW5jdGlvbigpe3JldHVybiBTfSxpVDpmdW5jdGlvbigpe3JldHVybiBtfSxtUzpmdW5jdGlvbigpe3JldHVybiB2fSxuSzpmdW5jdGlvbigpe3JldHVybiB4fSxveTpmdW5jdGlvbigpe3JldHVybiB3fSxwUTpmdW5jdGlvbigpe3JldHVybiBFfSxyMjpmdW5jdGlvbigpe3JldHVybiBBfSx0VDpmdW5jdGlvbigpe3JldHVybiBUfSx0XzpmdW5jdGlvbigpe3JldHVybiBkfSx0cjpmdW5jdGlvbigpe3JldHVybiBPfX0pO24oODM1Niksbig1NzE4KSxuKDc0NTApLG4oMzE0Nyksbig1ODU1KSxuKDIwMjApO3ZhciByPW4oMTYyKSxvPW4ubihyKSxpPW4oODk0OCksYT1uKDczMjYpLHM9big5Nzg4KSxjPW4oODY4Nyk7Y29uc3QgdT17b3BlcmF0b3I6Im9wZXJhdG9yIix2aXNpdG9yOiJ2aXNpdG9yIixzeXN0ZW06InN5c3RlbSIsYm90OiJib3QifSxsPVsicGRmIiwiZG9jIiwiZG9jeCIsInhscyIsInhsc3giLCJjc3YiLCJ0eHQiLCJydGYiLCJtcDMiLCJ3bWEiLCJtcGciLCJtcDQiLCJmbHYiLCJhdmkiLCJqcGciLCJqcGVnIiwicG5nIiwiZ2lmIl0sZD17dGV4dDoidGV4dCIsY2FyZHM6ImNhcmRHYWxsZXJ5IixidXR0b25zOiJidXR0b25zIixjb3Vwb25Db2RlOiJjb3Vwb25Db2RlIix1cGxvYWRlZEZpbGU6InVwbG9hZGVkRmlsZSIscmF0ZUF1dG9tYXRpY1N1cnZleToicmF0ZUF1dG9tYXRpY1N1cnZleSIsZm9ybToiZm9ybSIsZm9ybVJlc3BvbnNlOiJmb3JtUmVzcG9uc2UiLGlmcmFtZToiaWZyYW1lIixyZWNvbW1lbmRlZFByb2R1Y3RzOiJyZWNvbW1lbmRlZFByb2R1Y3RzIixhaUFzc2lzdGFudFJlY29tbWVuZGVkUHJvZHVjdHM6ImFpQXNzaXN0YW50UmVjb21tZW5kZWRQcm9kdWN0cyJ9LGY9UmVnRXhwKGBeKGh0dHBzPzpbL3wufFxcd3xcXHN8LV0qLyguKikpXFwuKCR7bC5qb2luKCJ8Iil9KSRgKSxwPWU9PmUuc3BsaXQoIi4iKS5wb3AoKT8udG9Mb2NhbGVMb3dlckNhc2UoKSxoPS8oPyEuKi1tZWRpdW0kKWh0dHBzOlwvXC9zMy4qLmFtYXpvbmF3cy5jb21cLyh0aWRpby1maWxlc3x0aWRpby1maWxlcy1kZXYpLyxtPWU9Pi0xIT09WyJqcGciLCJqcGVnIiwicG5nIiwiZ2lmIl0uaW5kZXhPZihlKT8iaW1hZ2UiOiJmaWxlIjtmdW5jdGlvbiBnKGUpe3JldHVybiBmLnRlc3QoZS5jb250ZW50KX1mdW5jdGlvbiB5KGUpe2NvbnN0IHQ9ey4uLmV9O3QudHlwZT1zLkdvLlVQTE9BREVEX0ZJTEU7Y29uc3Qgbj10LmNvbnRlbnQubWF0Y2goZik7aWYoIW4pcmV0dXJuIGU7Y29uc3RbLHIsbyxpXT1uO3JldHVybiB0Lm5hbWU9byx0LmV4dGVuc2lvbj1pLHQuYXR0YWNobWVudFR5cGU9bShpKSx0LmltYWdlTG9hZGVkPSExLCJpbWFnZSI9PT10LmF0dGFjaG1lbnRUeXBlP3QudGh1bWI9ImdpZiI9PT1pP2Ake3J9LiR7aX1gOmAke3J9JHtoLnRlc3Qocik/Ii1tZWRpdW0iOiIifS4ke2l9YDp0LnRodW1iPSIiLHR9ZnVuY3Rpb24gdihlKXtjb25zdCB0PXtpZDpvKCkoKSx0eXBlOnMuR28uVEVYVCxzZW5kZXI6cy5EJC5WSVNJVE9SLGlzRGVsaXZlcmVkOiEwLHVybDooMCxpLmJwKSgpfTtpZigic3RyaW5nIj09dHlwZW9mIGUpe2xldCBuPXsuLi50LGlkRnJvbVNlcnZlcjpudWxsLGNvbnRlbnQ6ZSx0aW1lX3NlbnQ6KDAsaS5MbikoKX07cmV0dXJuIGcobikmJihuPXkobikpLG59aWYoImZvcm1SZXNwb25zZSJpbiBlKXJldHVybnsuLi50LHR5cGU6cy5Hby5GT1JNX1JFU1BPTlNFLGlkRnJvbVNlcnZlcjpudWxsLGNvbnRlbnQ6IiIsdGltZV9zZW50OigwLGkuTG4pKCksZm9ybVJlc3BvbnNlOmUuZm9ybVJlc3BvbnNlfTtjb25zdCBuPWUuaWQscj1lLm1lc3NhZ2UubWVzc2FnZSxhPWUudGltZV9zZW50O2xldCBjPXsuLi50LGlkRnJvbVNlcnZlcjpuLGNvbnRlbnQ6cix0aW1lX3NlbnQ6YX07cmV0dXJuIGcoYykmJihjPXkoYykpLGN9ZnVuY3Rpb24gYihlKXtyZXR1cm57aWQ6bygpKCksdHlwZTpzLkdvLlNZU1RFTSxjb250ZW50OmUsc2VuZGVyOnMuRCQuT1BFUkFUT1IsdGltZV9zZW50OigwLGkuTG4pKCl9fWZ1bmN0aW9uIHcoZSx0LG4scil7cmV0dXJue2lkOm8oKSgpLHR5cGU6cixjb250ZW50OiIiLHNlbmRlcjpzLkQkLk9QRVJBVE9SLHRpbWVfc2VudDooMCxpLkxuKSgpLGRpc2FibGVkOiExLHRocmVhZFNvdXJjZTplLHRocmVhZElkOnQsbWVzc2FnZUlkOm59fWZ1bmN0aW9uIF8oZSl7cmV0dXJue2lkOm8oKSgpLHR5cGU6ZT9zLkdvLlJBVEVfQ09NTUVOVF9HT09EOnMuR28uUkFURV9DT01NRU5UX0JBRCxjb250ZW50OiIiLHNlbmRlcjpzLkQkLk9QRVJBVE9SLHRpbWVfc2VudDooMCxpLkxuKSgpLGRpc2FibGVkOiExfX1mdW5jdGlvbiBTKGUsdCxuLHIsaSxhLGMsdSl7cmV0dXJuey4uLmUsaWQ6bygpKCksdHlwZTpzLkdvLlVQTE9BREVEX0ZJTEUsYXR0YWNobWVudFR5cGU6aSxuYW1lOm4sZXh0ZW5zaW9uOnIsY29udGVudDp0LHRodW1iOmEsZmlsZToiIixpbWFnZUxvYWRlZDpjLG9yaWdpbmFsTWVzc2FnZUlkOnUsaXNIaWRkZW46ITF9fWZ1bmN0aW9uIEUoZSl7Y29uc3QgdD17aWQ6bygpKCksdHlwZTpzLkdvLlRFWFQsY29udGVudDoiIixzZW5kZXI6cy5EJC5WSVNJVE9SLHRpbWVfc2VudDooMCxpLkxuKSgpfSxuPXAoZS5maWxlTmFtZXx8IiIpfHwiIjtyZXR1cm4gUyh0LGUudXBsb2FkZWRVcmx8fCIiLGUuZmlsZU5hbWV8fCIiLG4sbShuKSxlLnVwbG9hZGVkVGh1bWJ8fCIiLCEwLGUuaWQpfWZ1bmN0aW9uIEMoKXtyZXR1cm57aWQ6bygpKCksdHlwZTpzLkdvLkFMV0FZU19PTkxJTkUsY29udGVudDoiIixzZW5kZXI6cy5EJC5PUEVSQVRPUix0aW1lX3NlbnQ6KDAsaS5MbikoKSxkaXNhYmxlZDohMX19ZnVuY3Rpb24gaygpe3JldHVybntpZDpvKCkoKSx0eXBlOnMuR28uQ1JFQVRFX1RJQ0tFVF9TVUNDRVNTLGNvbnRlbnQ6IiIsc2VuZGVyOnMuRCQuT1BFUkFUT1IsdGltZV9zZW50OigwLGkuTG4pKCksZGlzYWJsZWQ6ITF9fWNvbnN0IEE9WyJlbWFpbCIsIm5hbWUiLCJwaG9uZSIsImdkcHJDb25zZW50Iiwic2lnblVwTmV3c2xldHRlciIsYy5NMF07ZnVuY3Rpb24gTyhlLHQpe2NvbnN0IG49W107bGV0IHI9ITA7dHJ5e2lmKCFlKXJldHVybltdOyhmdW5jdGlvbihlKXtsZXQgdD1lO3JldHVybiB0LmZpbmQoZT0+ZS50eXBlPT09Yy5NMCkmJnQuZmluZChlPT4ic2lnblVwTmV3c2xldHRlciI9PT1lLnR5cGUpJiYodD10LmZpbHRlcihlPT4ic2lnblVwTmV3c2xldHRlciIhPT1lLnR5cGUpKSx0fSkoZnVuY3Rpb24oKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W107Y29uc3QgdD1lLmZpbmQoZT0+ZS50eXBlPT09Yy5NMCk7cmV0dXJuIHQ/ZS5maW5kKGU9PiJlbWFpbCI9PT1lLnR5cGUpPyEwIT09dC52YWx1ZT9lLmZpbHRlcihlPT5lLnR5cGUhPT1jLk0wKTplOmUuZmlsdGVyKGU9PmUudHlwZSE9PWMuTTAmJiJzaWduVXBOZXdzbGV0dGVyIiE9PWUudHlwZSk6ZX0oZS5maWVsZHMpKS5mb3JFYWNoKGU9Pntjb25zdCBvPWUudHlwZTtBLmZpbmQoZT0+ZT09PW8pJiYtMSE9PVsiZW1haWwiLCJuYW1lIiwicGhvbmUiLCJnZHByQ29uc2VudCIsImVtYWlsQ29uc2VudCIsInNpZ25VcE5ld3NsZXR0ZXIiXS5pbmRleE9mKG8pP3Rbb10mJiJlbWFpbENvbnNlbnQiPT09b3x8dFtvXSYmImVtYWlsQ29uc2VudCIhPT1vP24ucHVzaCh7dHlwZTpvLHBsYWNlaG9sZGVyOmBwcmVmb3JtSW5wdXRfJHtvfWAsdmFsdWU6dFtvXX0pOihyPSExLG4ucHVzaCh7dHlwZTpvLHBsYWNlaG9sZGVyOmBwcmVmb3JtSW5wdXRfJHtvfWB9KSk6ImZpcnN0bXNnIiE9PW8mJigwLGEuc1EpKGBVbmtub3duIHByZUNoYXQgZmllbGQgdHlwZSAtICR7b31gKX0pfWNhdGNoKGUpeygwLGEuc1EpKGUpfXJldHVybiByP1tdOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5maW5kKGU9PmUudHlwZT09PWMuTTApO3JldHVybiB0P1suLi5lLmZpbHRlcihlPT5lLnR5cGUhPT1jLk0wKSx0XTplfShuKX1mdW5jdGlvbiBUKGUsdCl7Y29uc3Qgbj1PKGUsdCk7cmV0dXJuIDA9PT1uLmxlbmd0aD9udWxsOntpZDpvKCkoKSx0eXBlOnMuR28uUFJFQ0hBVCxjb250ZW50OiJwcmVDaGF0IixzZW5kZXI6cy5EJC5PUEVSQVRPUix0aW1lX3NlbnQ6KDAsaS5MbikoKSxkaXNhYmxlZDohMSxwcmVDaGF0RmllbGRzOm59fWZ1bmN0aW9uIHgoZSl7bGV0IHQse2RhdGE6bn09ZSxyPW4udHlwZTtpZigiMSI9PT1uLmF1dG8mJihyPXMuRCQuQk9UKSwtMSE9PU9iamVjdC52YWx1ZXModSkuaW5kZXhPZihyKSl7aWYocj09PXUudmlzaXRvcil0PXYobik7ZWxzZXtjb25zdCBlPW4ubWVzc2FnZT8udHlwZSxpPWRbZV0sYT1mdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSBkLmNhcmRzOnJldHVybiBkLmNhcmRzPT09cy5Hby5DQVJEX0dBTExFUlk7Y2FzZSBkLmJ1dHRvbnM6cmV0dXJuIGQuYnV0dG9ucz09PXMuR28uQlVUVE9OUztjYXNlIGQuY291cG9uQ29kZTpyZXR1cm4gZC5jb3Vwb25Db2RlPT09cy5Hby5DT1VQT05fQ09ERTtjYXNlIGQudXBsb2FkZWRGaWxlOnJldHVybiBkLnVwbG9hZGVkRmlsZT09PXMuR28uVVBMT0FERURfRklMRTtjYXNlIGQucmF0ZUF1dG9tYXRpY1N1cnZleTpyZXR1cm4gZC5yYXRlQXV0b21hdGljU3VydmV5PT09cy5Hby5BVVRPTUFUSUNfU1VSVkVZO2Nhc2UgZC5mb3JtOnJldHVybiBkLmZvcm09PT1zLkdvLkZPUk07Y2FzZSBkLmZvcm1SZXNwb25zZTpyZXR1cm4gZC5mb3JtUmVzcG9uc2U9PT1zLkdvLkZPUk1fUkVTUE9OU0U7Y2FzZSBkLmlmcmFtZTpyZXR1cm4gZC5pZnJhbWU9PT1zLkdvLklGUkFNRTtjYXNlIGQucmVjb21tZW5kZWRQcm9kdWN0czpyZXR1cm4gZC5yZWNvbW1lbmRlZFByb2R1Y3RzPT09cy5Hby5SRUNPTU1FTkRFRF9QUk9EVUNUUztjYXNlIGQuYWlBc3Npc3RhbnRSZWNvbW1lbmRlZFByb2R1Y3RzOnJldHVybiBkLmFpQXNzaXN0YW50UmVjb21tZW5kZWRQcm9kdWN0cz09PXMuR28uQUlfQVNTSVNUQU5UX1JFQ09NTUVOREVEX1BST0RVQ1RTO2RlZmF1bHQ6cmV0dXJuITF9fShpKT9pOnMuR28uVEVYVDtsZXQgYz1uLm1lc3NhZ2UubWVzc2FnZTsic3RyaW5nIj09dHlwZW9mIGMmJihjPWMudHJpbSgpKTtjb25zdCBsPW4ub3BlcmF0b3JfaWQsZj1uLnRpbWVfc2VudCxwPW4uaWQsaD1uLmlzX3dhaXRpbmdfZm9yX2Fuc3dlcixtPW4uaXNfYWlfYXNzaXN0YW50LGc9bi5tZXRhZGF0YT8uYWlfYXNzaXN0YW50X3Jlc3BvbnNlX3R5cGUseT1uLm1ldGFkYXRhPy5xdWVzdGlvbl9tZXNzYWdlX2lkLHY9bi5tZXRhZGF0YT8uaXNfYWlfYXNzaXN0YW50X3Rhc2ssYj1uLm1ldGFkYXRhPy5oYXNfYWlfYXNzaXN0YW50X2Fuc3dlcl9zb3VyY2VzLHc9bi5tZXRhZGF0YT8uYWlfYXNzaXN0YW50X2FjdGlvbl9zdGF0ZV9pZDtsZXQgXztpZihyPT09dS5ib3Qpe24ubWVzc2FnZT8ucXVpY2tfcmVwbGllcyYmQXJyYXkuaXNBcnJheShuLm1lc3NhZ2UucXVpY2tfcmVwbGllcykmJm4ubWVzc2FnZS5xdWlja19yZXBsaWVzLmxlbmd0aD4wJiYoXz1uLm1lc3NhZ2UucXVpY2tfcmVwbGllcyl9dD17aWQ6bygpKCksaWRGcm9tU2VydmVyOnAsaXNXYWl0aW5nRm9yQW5zd2VyOmgsaXNBSUFzc2lzdGFudDptLHJhdGluZ0lkOm4ucmF0aW5nX2lkfHxudWxsLHR5cGU6YSxjb250ZW50OmMsc2VuZGVyOnIscXVpY2tSZXBsaWVzOl8sb3BlcmF0b3JfaWQ6bCx0aW1lX3NlbnQ6ZixkaXNhYmxlVGV4dElucHV0OkJvb2xlYW4obi5kaXNhYmxlX3RleHRfaW5wdXQpLGNoYXRfYm90X25hbWU6bi5jaGF0X2JvdF9uYW1lLGNoYXRCb3RJZDpuLmNoYXRfYm90X2lkLGFpQXNzaXN0YW50UmVzcG9uc2VUeXBlOmcscXVlc3Rpb25NZXNzYWdlSWQ6eSxhaUFzc2lzdGFudFRhc2s6dixoYXNBaUFzc2lzdGFudEFuc3dlclNvdXJjZXM6YixhaUFzc2lzdGFudEFjdGlvbkxvZ0lkOnd9fWlmKHQpe2lmKHQudHlwZT09PWQuY2FyZHMpdD1mdW5jdGlvbihlLHQpe2NvbnN0IG49ey4uLmV9O3RyeXtpZighdC5jYXJkcylyZXR1cm47bi5jYXJkcz10LmNhcmRzO2NvbnN0IGU9bi5jYXJkc1swXS5pbWFnZVVybDtyZXR1cm4oInN0cmluZyIhPXR5cGVvZiBlfHwwPT09ZS5sZW5ndGgpJiYobi5jYXJkcz1uLmNhcmRzLm1hcChlPT57Y29uc3R7aW1hZ2VVcmw6dCwuLi5ufT1lO3JldHVybnsuLi5ufX0pKSxuLmNhcmRzPW4uY2FyZHMubWFwKGU9Pntjb25zdHt1cmw6dCxzdWJ0aXRsZTpuLGltYWdlVXJsOnIsLi4ub309ZSxpPSJzdHJpbmciPT10eXBlb2YgZS5pbWFnZVVybCYmZS5pbWFnZVVybC5sZW5ndGg+MCxhPSJzdHJpbmciPT10eXBlb2YgdCYmdC5sZW5ndGg+MCxzPSJzdHJpbmciPT10eXBlb2YgbiYmbi5sZW5ndGg+MCxjPXsuLi5vfTtyZXR1cm4gaSYmKGMuaW1hZ2VVcmw9ciksYSYmKGMudXJsPXQpLHMmJihjLnN1YnRpdGxlPW4pLGN9KSxufWNhdGNoe3JldHVybn19KHQsbi5tZXNzYWdlKTtlbHNlIGlmKHQudHlwZT09PWQuYnV0dG9ucylpPXQsYT1uLm1lc3NhZ2UsdD17Li4uaSxidXR0b25zOmEuYnV0dG9uc3x8W119O2Vsc2UgaWYodC50eXBlPT09ZC5jb3Vwb25Db2RlKXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm57Li4uZSxjb3Vwb25Db2RlOnQuY291cG9uQ29kZT8uY291cG9uQ29kZXx8IiJ9fSh0LG4ubWVzc2FnZSk7ZWxzZSBpZihnKHQpKXQ9eSh0KTtlbHNlIGlmKHQudHlwZT09PWQucmF0ZUF1dG9tYXRpY1N1cnZleSl7Y29uc3R7bWVzc2FnZTplfT1uLHtjb21tZW50OnIscmF0aW5nOm99PWUuc2F0aXNmYWN0aW9uU3VydmV5LnJlc3BvbnNlO2lmKHJ8fG8pcmV0dXJuO3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm57Li4uZSxzYXRpc2ZhY3Rpb25TdXJ2ZXk6dC5zYXRpc2ZhY3Rpb25TdXJ2ZXksbWVzc2FnZUlkOmU/LmlkRnJvbVNlcnZlcnx8dm9pZCAwLHRocmVhZElkOnQuc2F0aXNmYWN0aW9uU3VydmV5LnRocmVhZElkLHRocmVhZFNvdXJjZTplLnRocmVhZFNvdXJjZXx8ImNvbnZlcnNhdGlvbiJ9fSh0LGUpfWVsc2UgdC50eXBlPT09ZC5mb3JtP3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm57Li4uZSxmb3JtOnQuZm9ybT8uZm9ybT8/W10sY29udGVudDp0LmZvcm0/LnRleHQ/PyIifX0odCxuLm1lc3NhZ2UpOnQudHlwZT09PWQuZm9ybVJlc3BvbnNlP3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm57Li4uZSxmb3JtUmVzcG9uc2U6dC5mb3JtUmVzcG9uc2V9fSh0LG4ubWVzc2FnZSk6dC50eXBlPT09ZC5pZnJhbWU/dD1mdW5jdGlvbihlLHQpe3JldHVybnsuLi5lLGlmcmFtZTp0LmlmcmFtZX19KHQsbi5tZXNzYWdlKTp0LnR5cGU9PT1kLnJlY29tbWVuZGVkUHJvZHVjdHM/dD1mdW5jdGlvbihlLHQpe3JldHVybnsuLi5lLHJlY29tbWVuZGVkUHJvZHVjdHM6dC5yZWNvbW1lbmRlZFByb2R1Y3RzfX0odCxuLm1lc3NhZ2UpOnQudHlwZT09PWQuYWlBc3Npc3RhbnRSZWNvbW1lbmRlZFByb2R1Y3RzJiYodD1mdW5jdGlvbihlLHQpe3JldHVybnsuLi5lLHByb2R1Y3RzOnQucHJvZHVjdHN9fSh0LG4ubWVzc2FnZSkpO3ZhciBpLGE7cmV0dXJuIHR9fX19LDE5NDQ6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9big3NDEyKX0sMTk5MzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMzkzMiksbz1uKDc1NzApLGk9big3OTQ5KSxhPW4oMzExNykscz1uKDk3OSksYz1uKDU2ODUpLHU9big2ZTMpLGw9big0MjIpLGQ9bigzNDg5KSxmPW4oNTAyNykscD1uKDEzODUpLGg9bigzMjY3KS5JdGVyYXRvclByb3RvdHlwZSxtPW4oMTQzMCksZz1uKDc3MDkpLHk9ImNvbnN0cnVjdG9yIix2PSJJdGVyYXRvciIsYj1wKCJ0b1N0cmluZ1RhZyIpLHc9VHlwZUVycm9yLF89b1t2XSxTPWd8fCFzKF8pfHxfLnByb3RvdHlwZSE9PWh8fCFkKGZ1bmN0aW9uKCl7Xyh7fSl9KSxFPWZ1bmN0aW9uKCl7aWYoaSh0aGlzLGgpLGModGhpcyk9PT1oKXRocm93IG5ldyB3KCJBYnN0cmFjdCBjbGFzcyBJdGVyYXRvciBub3QgZGlyZWN0bHkgY29uc3RydWN0YWJsZSIpfSxDPWZ1bmN0aW9uKGUsdCl7bT91KGgsZSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24odCl7aWYoYSh0aGlzKSx0aGlzPT09aCl0aHJvdyBuZXcgdygiWW91IGNhbid0IHJlZGVmaW5lIHRoaXMgcHJvcGVydHkiKTtmKHRoaXMsZSk/dGhpc1tlXT10OmwodGhpcyxlLHQpfX0pOmhbZV09dH07ZihoLGIpfHxDKGIsdiksIVMmJmYoaCx5KSYmaFt5XSE9PU9iamVjdHx8Qyh5LEUpLEUucHJvdG90eXBlPWgscih7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDpTfSx7SXRlcmF0b3I6RX0pfSwyMDIwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7big1MzkxKX0sMjAzNjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHskWDpmdW5jdGlvbigpe3JldHVybiBzfSxHUjpmdW5jdGlvbigpe3JldHVybiBsfSxNNjpmdW5jdGlvbigpe3JldHVybiB1fSxlSjpmdW5jdGlvbigpe3JldHVybiBpfSxnTzpmdW5jdGlvbigpe3JldHVybiBjfX0pO3ZhciByPW4oMjI0Nyksbz1uKDMyMjUpO2Z1bmN0aW9uIGkoKXtjb25zdCBlPW8uTyx0PWUuY3J5cHRvfHxlLm1zQ3J5cHRvO2xldCBuPSgpPT4xNipNYXRoLnJhbmRvbSgpO3RyeXtpZih0JiZ0LnJhbmRvbVVVSUQpcmV0dXJuIHQucmFuZG9tVVVJRCgpLnJlcGxhY2UoLy0vZywiIik7dCYmdC5nZXRSYW5kb21WYWx1ZXMmJihuPSgpPT57Y29uc3QgZT1uZXcgVWludDhBcnJheSgxKTtyZXR1cm4gdC5nZXRSYW5kb21WYWx1ZXMoZSksZVswXX0pfWNhdGNoKGUpe31yZXR1cm4oWzFlN10rMWUzKzRlMys4ZTMrMWUxMSkucmVwbGFjZSgvWzAxOF0vZyxlPT4oZV4oMTUmbigpKT4+ZS80KS50b1N0cmluZygxNikpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGUuZXhjZXB0aW9uJiZlLmV4Y2VwdGlvbi52YWx1ZXM/ZS5leGNlcHRpb24udmFsdWVzWzBdOnZvaWQgMH1mdW5jdGlvbiBzKGUpe2NvbnN0e21lc3NhZ2U6dCxldmVudF9pZDpufT1lO2lmKHQpcmV0dXJuIHQ7Y29uc3Qgcj1hKGUpO3JldHVybiByP3IudHlwZSYmci52YWx1ZT9gJHtyLnR5cGV9OiAke3IudmFsdWV9YDpyLnR5cGV8fHIudmFsdWV8fG58fCI8dW5rbm93bj4iOm58fCI8dW5rbm93bj4ifWZ1bmN0aW9uIGMoZSx0LG4pe2NvbnN0IHI9ZS5leGNlcHRpb249ZS5leGNlcHRpb258fHt9LG89ci52YWx1ZXM9ci52YWx1ZXN8fFtdLGk9b1swXT1vWzBdfHx7fTtpLnZhbHVlfHwoaS52YWx1ZT10fHwiIiksaS50eXBlfHwoaS50eXBlPW58fCJFcnJvciIpfWZ1bmN0aW9uIHUoZSx0KXtjb25zdCBuPWEoZSk7aWYoIW4pcmV0dXJuO2NvbnN0IHI9bi5tZWNoYW5pc207aWYobi5tZWNoYW5pc209e3R5cGU6ImdlbmVyaWMiLGhhbmRsZWQ6ITAsLi4uciwuLi50fSx0JiYiZGF0YSJpbiB0KXtjb25zdCBlPXsuLi5yJiZyLmRhdGEsLi4udC5kYXRhfTtuLm1lY2hhbmlzbS5kYXRhPWV9fWZ1bmN0aW9uIGwoZSl7aWYoZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBlLl9fc2VudHJ5X2NhcHR1cmVkX199Y2F0Y2goZSl7fX0oZSkpcmV0dXJuITA7dHJ5eygwLHIubXkpKGUsIl9fc2VudHJ5X2NhcHR1cmVkX18iLCEwKX1jYXRjaChlKXt9cmV0dXJuITF9fSwyMDgyOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHIsbz1uKDMxMTcpLGk9big0MjcxKSxhPW4oOTkzMykscz1uKDYwNDMpLGM9big4ODgzKSx1PW4oMzQwOSksbD1uKDU5NzcpLGQ9InByb3RvdHlwZSIsZj0ic2NyaXB0IixwPWwoIklFX1BST1RPIiksaD1mdW5jdGlvbigpe30sbT1mdW5jdGlvbihlKXtyZXR1cm4iPCIrZisiPiIrZSsiPC8iK2YrIj4ifSxnPWZ1bmN0aW9uKGUpe2Uud3JpdGUobSgiIikpLGUuY2xvc2UoKTt2YXIgdD1lLnBhcmVudFdpbmRvdy5PYmplY3Q7cmV0dXJuIGU9bnVsbCx0fSx5PWZ1bmN0aW9uKCl7dHJ5e3I9bmV3IEFjdGl2ZVhPYmplY3QoImh0bWxmaWxlIil9Y2F0Y2goZSl7fXZhciBlLHQsbjt5PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuZG9tYWluJiZyP2cocik6KHQ9dSgiaWZyYW1lIiksbj0iamF2YSIrZisiOiIsdC5zdHlsZS5kaXNwbGF5PSJub25lIixjLmFwcGVuZENoaWxkKHQpLHQuc3JjPVN0cmluZyhuKSwoZT10LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSxlLndyaXRlKG0oImRvY3VtZW50LkY9T2JqZWN0IikpLGUuY2xvc2UoKSxlLkYpOmcocik7Zm9yKHZhciBvPWEubGVuZ3RoO28tLTspZGVsZXRlIHlbZF1bYVtvXV07cmV0dXJuIHkoKX07c1twXT0hMCxlLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gbnVsbCE9PWU/KGhbZF09byhlKSxuPW5ldyBoLGhbZF09bnVsbCxuW3BdPWUpOm49eSgpLHZvaWQgMD09PXQ/bjppLmYobix0KX19LDIyNDc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7Q2U6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sR1M6ZnVuY3Rpb24oKXtyZXR1cm4gY30sSEY6ZnVuY3Rpb24oKXtyZXR1cm4gbX0sVzQ6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sbXk6ZnVuY3Rpb24oKXtyZXR1cm4gdX0scE86ZnVuY3Rpb24oKXtyZXR1cm4gbH0sc3A6ZnVuY3Rpb24oKXtyZXR1cm4gZH19KTt2YXIgcj1uKDM1NjIpLG89bigzMDQ4KSxpPW4oOTAwNCksYT1uKDkyMTYpLHM9big3MTM3KTtmdW5jdGlvbiBjKGUsdCxuKXtpZighKHQgaW4gZSkpcmV0dXJuO2NvbnN0IHI9ZVt0XSxpPW4ocik7ImZ1bmN0aW9uIj09dHlwZW9mIGkmJmwoaSxyKTt0cnl7ZVt0XT1pfWNhdGNoKG4pe28uVCYmYS52Ri5sb2coYEZhaWxlZCB0byByZXBsYWNlIG1ldGhvZCAiJHt0fSIgaW4gb2JqZWN0YCxlKX19ZnVuY3Rpb24gdShlLHQsbil7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9Y2F0Y2gobil7by5UJiZhLnZGLmxvZyhgRmFpbGVkIHRvIGFkZCBub24tZW51bWVyYWJsZSBwcm9wZXJ0eSAiJHt0fSIgdG8gb2JqZWN0YCxlKX19ZnVuY3Rpb24gbChlLHQpe3RyeXtjb25zdCBuPXQucHJvdG90eXBlfHx7fTtlLnByb3RvdHlwZT10LnByb3RvdHlwZT1uLHUoZSwiX19zZW50cnlfb3JpZ2luYWxfXyIsdCl9Y2F0Y2goZSl7fX1mdW5jdGlvbiBkKGUpe3JldHVybiBlLl9fc2VudHJ5X29yaWdpbmFsX199ZnVuY3Rpb24gZihlKXtpZigoMCxpLmJKKShlKSlyZXR1cm57bWVzc2FnZTplLm1lc3NhZ2UsbmFtZTplLm5hbWUsc3RhY2s6ZS5zdGFjaywuLi5oKGUpfTtpZigoMCxpLnhIKShlKSl7Y29uc3QgdD17dHlwZTplLnR5cGUsdGFyZ2V0OnAoZS50YXJnZXQpLGN1cnJlbnRUYXJnZXQ6cChlLmN1cnJlbnRUYXJnZXQpLC4uLmgoZSl9O3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQ3VzdG9tRXZlbnQmJigwLGkudEgpKGUsQ3VzdG9tRXZlbnQpJiYodC5kZXRhaWw9ZS5kZXRhaWwpLHR9cmV0dXJuIGV9ZnVuY3Rpb24gcChlKXt0cnl7cmV0dXJuKDAsaS52cSkoZSk/KDAsci5IZCkoZSk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfWNhdGNoKGUpe3JldHVybiI8dW5rbm93bj4ifX1mdW5jdGlvbiBoKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUpe2NvbnN0IHQ9e307Zm9yKGNvbnN0IG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHR9cmV0dXJue319ZnVuY3Rpb24gbShlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NDA7Y29uc3Qgbj1PYmplY3Qua2V5cyhmKGUpKTtuLnNvcnQoKTtjb25zdCByPW5bMF07aWYoIXIpcmV0dXJuIltvYmplY3QgaGFzIG5vIGtleXNdIjtpZihyLmxlbmd0aD49dClyZXR1cm4oMCxzLnh2KShyLHQpO2ZvcihsZXQgZT1uLmxlbmd0aDtlPjA7ZS0tKXtjb25zdCByPW4uc2xpY2UoMCxlKS5qb2luKCIsICIpO2lmKCEoci5sZW5ndGg+dCkpcmV0dXJuIGU9PT1uLmxlbmd0aD9yOigwLHMueHYpKHIsdCl9cmV0dXJuIiJ9ZnVuY3Rpb24gZyhlKXtyZXR1cm4geShlLG5ldyBNYXApfWZ1bmN0aW9uIHkoZSx0KXtpZihmdW5jdGlvbihlKXtpZighKDAsaS5RZCkoZSkpcmV0dXJuITE7dHJ5e2NvbnN0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpLmNvbnN0cnVjdG9yLm5hbWU7cmV0dXJuIXR8fCJPYmplY3QiPT09dH1jYXRjaChlKXtyZXR1cm4hMH19KGUpKXtjb25zdCBuPXQuZ2V0KGUpO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG47Y29uc3Qgcj17fTt0LnNldChlLHIpO2Zvcihjb25zdCBuIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpKXZvaWQgMCE9PWVbbl0mJihyW25dPXkoZVtuXSx0KSk7cmV0dXJuIHJ9aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3Qgbj10LmdldChlKTtpZih2b2lkIDAhPT1uKXJldHVybiBuO2NvbnN0IHI9W107cmV0dXJuIHQuc2V0KGUsciksZS5mb3JFYWNoKGU9PntyLnB1c2goeShlLHQpKX0pLHJ9cmV0dXJuIGV9fSwyMjc5OmZ1bmN0aW9uKGUsdCxuKXsidW5kZWZpbmVkIj09dHlwZW9mIFByb21pc2UmJihuKDk3NjMpLmVuYWJsZSgpLHdpbmRvdy5Qcm9taXNlPW4oMTMwMykpLG4oMTAyOCl9LDIyODQ6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxyKGUpfW4uZCh0LHtBOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSl9LDIzMTg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7bzpmdW5jdGlvbigpe3JldHVybiB1fX0pO3ZhciByPW4oNDQ2Nyksbz0obig4MzU2KSxuKDkzMjgpLG4oNTcxOCksbig1NDY5KSxuKDc0NTApLG4oMzE0Nyksbig1ODU1KSxuKDIwMjApLG4oNTk2OSksbig1NTYpLG4oODM5MSksbig4OTQ4KSk7Y29uc3QgaT1bIndpZGdldF93c19yZWNvbm5lY3RfdGltZV9pbl9tcyIsIndpZGdldF93c19yZWNvbm5lY3RfYXR0ZW1wdHMiXSxhPVsid2lkZ2V0X3dzX2luaXRpYWxfY29ubmVjdGlvbl9pbl9tcyIsIndpZGdldF9qc190b3RhbF9sb2FkX2luX21zIiwid2lkZ2V0X3RvdGFsX2xvYWRfaW5fbXMiLCJ3aWRnZXRfd3NfcmVjb25uZWN0X3RpbWVfaW5fbXMiLCJ3aWRnZXRfd3NfcmVjb25uZWN0X2F0dGVtcHRzIl0uZmlsdGVyKGU9PiFpLmluY2x1ZGVzKGUpKTthLmxlbmd0aDtjbGFzcyBze2NvbnN0cnVjdG9yKCl7KDAsci5BKSh0aGlzLCJtZXRyaWNzQ29sbGVjdG9yVXJsIix2b2lkIDApLCgwLHIuQSkodGhpcywiZXZlbnRzIix7fSksKDAsci5BKSh0aGlzLCJoYXNTZW50SW5pdGlhbE1ldHJpY3MiLCExKSwoMCxyLkEpKHRoaXMsInRpbWVyIixudWxsKSwoMCxyLkEpKHRoaXMsInRpbWVvdXRGaW5pc2hlZCIsITEpLCgwLHIuQSkodGhpcywic2hvdWxkU2VuZE1ldHJpY3MiLCEwKTsxMDAqTWF0aC5yYW5kb20oKTxzLnNlbmRNZXRyaWNzUGVyY2VudHx8KHRoaXMuc2hvdWxkU2VuZE1ldHJpY3M9ITEpO2NvbnN0IGU9Imh0dHBzOi8vbWV0cmljcy1jb2xsZWN0b3IudGlkaW8uY28iO2lmKGUpdHJ5e3RoaXMubWV0cmljc0NvbGxlY3RvclVybD0oZT0+IiI9PT1lfHxlLmVuZHNXaXRoKCIvIik/ZTpgJHtlfS9gKShuZXcgVVJMKGUpLnRvU3RyaW5nKCkpfWNhdGNoe319aXNSZWFkeUZvclNlbmRpbmdNZXRyaWNzKCl7Y29uc3QgZT12b2lkIDAhPT1PYmplY3QudmFsdWVzKHRoaXMuZXZlbnRzKS5maW5kKGU9Pm51bGw9PT1lLnN0YXJ0fHxudWxsPT09ZS5lbmQpLHQ9YS5maWx0ZXIoZT0+IXRoaXMuZXZlbnRzW2VdKTtyZXR1cm4hZSYmMD09PXQubGVuZ3RofW1hcmtEdXJhdGlvbihlLHQsbixyLG8pe3RoaXMuZXZlbnRzW2VdfHwodGhpcy5ldmVudHNbZV09e3N0YXJ0Om51bGwsZW5kOm51bGx9KTtjb25zdCBpPXRoaXMuZXZlbnRzW2VdO2kmJihpW3RdPW58fERhdGUubm93KCkpO09iamVjdC52YWx1ZXModGhpcy5ldmVudHMpLmV2ZXJ5KGU9Pm51bGwhPT1lLnN0YXJ0JiZudWxsIT09ZS5lbmQpJiZ0aGlzLnNlbmRJbml0aWFsTWV0cmljcygpLHImJnRoaXMuc2VuZE1ldHJpY3MoW2VdLEJvb2xlYW4obykpfXNldE51bWVyaWNWYWx1ZShlLHQsbil7dGhpcy5ldmVudHNbZV18fCh0aGlzLmV2ZW50c1tlXT17c3RhcnQ6MCxlbmQ6bnVsbH0pO2NvbnN0IHI9dGhpcy5ldmVudHNbZV07ciYmKHIuc3RhcnQ9MCxyLmVuZD10KSxuJiZ0aGlzLnNlbmRNZXRyaWNzKFtlXSl9YXN5bmMgc2VuZERhdGEoZSl7aWYodGhpcy5tZXRyaWNzQ29sbGVjdG9yVXJsKXRyeXthd2FpdCBmZXRjaChgJHt0aGlzLm1ldHJpY3NDb2xsZWN0b3JVcmx9bWV0cmljcy9XaWRnZXRSZWdpc3RyeS9vYnNlcnZlYCx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkoe21ldHJpY3M6ZSxkZXZpY2VUeXBlOigwLG8uS3UpKCk/Im1vYmlsZSI6ImRlc2t0b3AifSl9KX1jYXRjaHt9fWFzeW5jIHNlbmRJbml0aWFsTWV0cmljcygpe2lmKCF0aGlzLnNob3VsZFNlbmRNZXRyaWNzKXJldHVybjtpZih0aGlzLmhhc1NlbnRJbml0aWFsTWV0cmljcylyZXR1cm47aWYoIXRoaXMubWV0cmljc0NvbGxlY3RvclVybClyZXR1cm47Y29uc3QgZT10aGlzLmNvbGxlY3RJbml0aWFsTWV0cmljcygpO2UmJihhd2FpdCB0aGlzLnNlbmREYXRhKGUpLHRoaXMuaGFzU2VudEluaXRpYWxNZXRyaWNzPSEwKX1hc3luYyBzZW5kTWV0cmljcyhlLHQpe2lmKCF0JiYhdGhpcy5zaG91bGRTZW5kTWV0cmljcylyZXR1cm47aWYoIXRoaXMubWV0cmljc0NvbGxlY3RvclVybClyZXR1cm47Y29uc3Qgbj1lLmZpbHRlcihlPT57Y29uc3QgdD10aGlzLmV2ZW50c1tlXT8uZW5kLG49dGhpcy5ldmVudHNbZV0/LnN0YXJ0O3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmIm51bWJlciI9PXR5cGVvZiBufSkubWFwKGU9Pih7bWV0cmljOmUsdmFsdWU6KHRoaXMuZXZlbnRzW2VdPy5lbmR8fDApLSh0aGlzLmV2ZW50c1tlXT8uc3RhcnR8fDApfSkpO3RoaXMuc2VuZERhdGEobik7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kz0xKXRoaXMuZXZlbnRzW2VbdF1dPXtzdGFydDpudWxsLGVuZDpudWxsfTt0aGlzLmhhc1NlbnRJbml0aWFsTWV0cmljcz0hMH1jb2xsZWN0SW5pdGlhbE1ldHJpY3MoKXtpZighdGhpcy50aW1lciYmIXRoaXMuaXNSZWFkeUZvclNlbmRpbmdNZXRyaWNzKCkpcmV0dXJuIHRoaXMudGltZXI9c2V0VGltZW91dCgoKT0+e3RoaXMudGltZW91dEZpbmlzaGVkPSEwLHRoaXMuc2VuZEluaXRpYWxNZXRyaWNzKCl9LHMubWF4RHVyYXRpb25UaW1lb3V0VGltZSksbnVsbDtpZighdGhpcy50aW1lb3V0RmluaXNoZWQmJiF0aGlzLmlzUmVhZHlGb3JTZW5kaW5nTWV0cmljcygpKXJldHVybiBudWxsO3RoaXMudGltZXImJihjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy50aW1lcj1udWxsKTtjb25zdCBlPVtdO3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLmV2ZW50cykuZm9yRWFjaCh0PT57bGV0W24scl09dDtyLnN0YXJ0JiZyLmVuZD9lLnB1c2goe21ldHJpYzpuLHZhbHVlOnIuZW5kLXIuc3RhcnR9KTpyLnN0YXJ0JiYhci5lbmQmJmUucHVzaCh7bWV0cmljOm4sdmFsdWU6cy5tYXhEdXJhdGlvblRpbWVvdXRUaW1lfSl9KSwwPT09ZS5sZW5ndGg/bnVsbDplfX0oMCxyLkEpKHMsInNlbmRNZXRyaWNzUGVyY2VudCIsMSksKDAsci5BKShzLCJtYXhEdXJhdGlvblRpbWVvdXRUaW1lIiw2ZTQpO2xldCBjPW51bGw7ZnVuY3Rpb24gdSgpe3JldHVybiBjfHwoYz1uZXcgcyksY319LDI1NzU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDM5MzIpLG89big3NDQzKSxpPW4oNzIpLGE9big3NTA1KSxzPW4oNjQyMCksYz1uKDkzOSk7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsYXJpdHk6MSxmb3JjZWQ6MSE9PVtdLnVuc2hpZnQoMCl8fCFmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sImxlbmd0aCIse3dyaXRhYmxlOiExfSkudW5zaGlmdCgpfWNhdGNoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgVHlwZUVycm9yfX0oKX0se3Vuc2hpZnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9byh0aGlzKSxuPWkodCkscj1hcmd1bWVudHMubGVuZ3RoO2lmKHIpe2MobityKTtmb3IodmFyIHU9bjt1LS07KXt2YXIgbD11K3I7dSBpbiB0P3RbbF09dFt1XTpzKHQsbCl9Zm9yKHZhciBkPTA7ZDxyO2QrKyl0W2RdPWFyZ3VtZW50c1tkXX1yZXR1cm4gYSh0LG4rcil9fSl9LDI2MjI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDkxNzApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciBvIGluIHQpcihlLG8sdFtvXSxuKTtyZXR1cm4gZX19LDI2MzQ6ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciB0PVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSxuKXtpZihlPG4pdGhyb3cgbmV3IHQoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7cmV0dXJuIGV9fSwyNjkxOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse1U6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KTtjb25zdCByPSJwcm9kdWN0aW9uIn0sMjcxNTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMzQ4MCksbz1uKDQ3MzgpO2Z1bmN0aW9uIGkoZSl7Zm9yKHZhciB0PSJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0iK2Usbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdCs9IiZhcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW25dKTtyZXR1cm4iTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNpdCAiK3QrIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIn12YXIgYT1uZXcgU2V0LHM9e307ZnVuY3Rpb24gYyhlLHQpe3UoZSx0KSx1KGUrIkNhcHR1cmUiLHQpfWZ1bmN0aW9uIHUoZSx0KXtmb3Ioc1tlXT10LGU9MDtlPHQubGVuZ3RoO2UrKylhLmFkZCh0W2VdKX12YXIgbD0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHx2b2lkIDA9PT13aW5kb3cuZG9jdW1lbnR8fHZvaWQgMD09PXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KSxkPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksZj0vXls6QS1aX2Etelx1MDBDMC1cdTAwRDZcdTAwRDgtXHUwMEY2XHUwMEY4LVx1MDJGRlx1MDM3MC1cdTAzN0RcdTAzN0YtXHUxRkZGXHUyMDBDLVx1MjAwRFx1MjA3MC1cdTIxOEZcdTJDMDAtXHUyRkVGXHUzMDAxLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkZEXVs6QS1aX2Etelx1MDBDMC1cdTAwRDZcdTAwRDgtXHUwMEY2XHUwMEY4LVx1MDJGRlx1MDM3MC1cdTAzN0RcdTAzN0YtXHUxRkZGXHUyMDBDLVx1MjAwRFx1MjA3MC1cdTIxOEZcdTJDMDAtXHUyRkVGXHUzMDAxLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkZEXC0uMC05XHUwMEI3XHUwMzAwLVx1MDM2Rlx1MjAzRi1cdTIwNDBdKiQvLHA9e30saD17fTtmdW5jdGlvbiBtKGUsdCxuLHIsbyxpLGEpe3RoaXMuYWNjZXB0c0Jvb2xlYW5zPTI9PT10fHwzPT09dHx8ND09PXQsdGhpcy5hdHRyaWJ1dGVOYW1lPXIsdGhpcy5hdHRyaWJ1dGVOYW1lc3BhY2U9byx0aGlzLm11c3RVc2VQcm9wZXJ0eT1uLHRoaXMucHJvcGVydHlOYW1lPWUsdGhpcy50eXBlPXQsdGhpcy5zYW5pdGl6ZVVSTD1pLHRoaXMucmVtb3ZlRW1wdHlTdHJpbmc9YX12YXIgZz17fTsiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7Z1tlXT1uZXcgbShlLDAsITEsZSxudWxsLCExLCExKX0pLFtbImFjY2VwdENoYXJzZXQiLCJhY2NlcHQtY2hhcnNldCJdLFsiY2xhc3NOYW1lIiwiY2xhc3MiXSxbImh0bWxGb3IiLCJmb3IiXSxbImh0dHBFcXVpdiIsImh0dHAtZXF1aXYiXV0uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lWzBdO2dbdF09bmV3IG0odCwxLCExLGVbMV0sbnVsbCwhMSwhMSl9KSxbImNvbnRlbnRFZGl0YWJsZSIsImRyYWdnYWJsZSIsInNwZWxsQ2hlY2siLCJ2YWx1ZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7Z1tlXT1uZXcgbShlLDIsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSksWyJhdXRvUmV2ZXJzZSIsImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQiLCJmb2N1c2FibGUiLCJwcmVzZXJ2ZUFscGhhIl0uZm9yRWFjaChmdW5jdGlvbihlKXtnW2VdPW5ldyBtKGUsMiwhMSxlLG51bGwsITEsITEpfSksImFsbG93RnVsbFNjcmVlbiBhc3luYyBhdXRvRm9jdXMgYXV0b1BsYXkgY29udHJvbHMgZGVmYXVsdCBkZWZlciBkaXNhYmxlZCBkaXNhYmxlUGljdHVyZUluUGljdHVyZSBkaXNhYmxlUmVtb3RlUGxheWJhY2sgZm9ybU5vVmFsaWRhdGUgaGlkZGVuIGxvb3Agbm9Nb2R1bGUgbm9WYWxpZGF0ZSBvcGVuIHBsYXlzSW5saW5lIHJlYWRPbmx5IHJlcXVpcmVkIHJldmVyc2VkIHNjb3BlZCBzZWFtbGVzcyBpdGVtU2NvcGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXtnW2VdPW5ldyBtKGUsMywhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KSxbImNoZWNrZWQiLCJtdWx0aXBsZSIsIm11dGVkIiwic2VsZWN0ZWQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2dbZV09bmV3IG0oZSwzLCEwLGUsbnVsbCwhMSwhMSl9KSxbImNhcHR1cmUiLCJkb3dubG9hZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7Z1tlXT1uZXcgbShlLDQsITEsZSxudWxsLCExLCExKX0pLFsiY29scyIsInJvd3MiLCJzaXplIiwic3BhbiJdLmZvckVhY2goZnVuY3Rpb24oZSl7Z1tlXT1uZXcgbShlLDYsITEsZSxudWxsLCExLCExKX0pLFsicm93U3BhbiIsInN0YXJ0Il0uZm9yRWFjaChmdW5jdGlvbihlKXtnW2VdPW5ldyBtKGUsNSwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTt2YXIgeT0vW1wtOl0oW2Etel0pL2c7ZnVuY3Rpb24gdihlKXtyZXR1cm4gZVsxXS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIGIoZSx0LG4scil7dmFyIG89Zy5oYXNPd25Qcm9wZXJ0eSh0KT9nW3RdOm51bGw7KG51bGwhPT1vPzAhPT1vLnR5cGU6cnx8ISgyPHQubGVuZ3RoKXx8Im8iIT09dFswXSYmIk8iIT09dFswXXx8Im4iIT09dFsxXSYmIk4iIT09dFsxXSkmJihmdW5jdGlvbihlLHQsbixyKXtpZihudWxsPT10fHxmdW5jdGlvbihlLHQsbixyKXtpZihudWxsIT09biYmMD09PW4udHlwZSlyZXR1cm4hMTtzd2l0Y2godHlwZW9mIHQpe2Nhc2UiZnVuY3Rpb24iOmNhc2Uic3ltYm9sIjpyZXR1cm4hMDtjYXNlImJvb2xlYW4iOnJldHVybiFyJiYobnVsbCE9PW4/IW4uYWNjZXB0c0Jvb2xlYW5zOiJkYXRhLSIhPT0oZT1lLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KSkmJiJhcmlhLSIhPT1lKTtkZWZhdWx0OnJldHVybiExfX0oZSx0LG4scikpcmV0dXJuITA7aWYocilyZXR1cm4hMTtpZihudWxsIT09bilzd2l0Y2gobi50eXBlKXtjYXNlIDM6cmV0dXJuIXQ7Y2FzZSA0OnJldHVybiExPT09dDtjYXNlIDU6cmV0dXJuIGlzTmFOKHQpO2Nhc2UgNjpyZXR1cm4gaXNOYU4odCl8fDE+dH1yZXR1cm4hMX0odCxuLG8scikmJihuPW51bGwpLHJ8fG51bGw9PT1vP2Z1bmN0aW9uKGUpe3JldHVybiEhZC5jYWxsKGgsZSl8fCFkLmNhbGwocCxlKSYmKGYudGVzdChlKT9oW2VdPSEwOihwW2VdPSEwLCExKSl9KHQpJiYobnVsbD09PW4/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCwiIituKSk6by5tdXN0VXNlUHJvcGVydHk/ZVtvLnByb3BlcnR5TmFtZV09bnVsbD09PW4/MyE9PW8udHlwZSYmIiI6bjoodD1vLmF0dHJpYnV0ZU5hbWUscj1vLmF0dHJpYnV0ZU5hbWVzcGFjZSxudWxsPT09bj9lLnJlbW92ZUF0dHJpYnV0ZSh0KToobj0zPT09KG89by50eXBlKXx8ND09PW8mJiEwPT09bj8iIjoiIituLHI/ZS5zZXRBdHRyaWJ1dGVOUyhyLHQsbik6ZS5zZXRBdHRyaWJ1dGUodCxuKSkpKX0iYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHQiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoeSx2KTtnW3RdPW5ldyBtKHQsMSwhMSxlLG51bGwsITEsITEpfSksInhsaW5rOmFjdHVhdGUgeGxpbms6YXJjcm9sZSB4bGluazpyb2xlIHhsaW5rOnNob3cgeGxpbms6dGl0bGUgeGxpbms6dHlwZSIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSh5LHYpO2dbdF09bmV3IG0odCwxLCExLGUsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCExLCExKX0pLFsieG1sOmJhc2UiLCJ4bWw6bGFuZyIsInhtbDpzcGFjZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKHksdik7Z1t0XT1uZXcgbSh0LDEsITEsZSwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwhMSwhMSl9KSxbInRhYkluZGV4IiwiY3Jvc3NPcmlnaW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2dbZV09bmV3IG0oZSwxLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pLGcueGxpbmtIcmVmPW5ldyBtKCJ4bGlua0hyZWYiLDEsITEsInhsaW5rOmhyZWYiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwhMCwhMSksWyJzcmMiLCJocmVmIiwiYWN0aW9uIiwiZm9ybUFjdGlvbiJdLmZvckVhY2goZnVuY3Rpb24oZSl7Z1tlXT1uZXcgbShlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITAsITApfSk7dmFyIHc9ci5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCxfPVN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKSxTPVN5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpLEU9U3ltYm9sLmZvcigicmVhY3QuZnJhZ21lbnQiKSxDPVN5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIiksaz1TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpLEE9U3ltYm9sLmZvcigicmVhY3QucHJvdmlkZXIiKSxPPVN5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKSxUPVN5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIikseD1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpLEk9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2VfbGlzdCIpLE49U3ltYm9sLmZvcigicmVhY3QubWVtbyIpLEw9U3ltYm9sLmZvcigicmVhY3QubGF6eSIpO1N5bWJvbC5mb3IoInJlYWN0LnNjb3BlIiksU3ltYm9sLmZvcigicmVhY3QuZGVidWdfdHJhY2VfbW9kZSIpO3ZhciBQPVN5bWJvbC5mb3IoInJlYWN0Lm9mZnNjcmVlbiIpO1N5bWJvbC5mb3IoInJlYWN0LmxlZ2FjeV9oaWRkZW4iKSxTeW1ib2wuZm9yKCJyZWFjdC5jYWNoZSIpLFN5bWJvbC5mb3IoInJlYWN0LnRyYWNpbmdfbWFya2VyIik7dmFyIE09U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIFIoZSl7cmV0dXJuIG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIGU/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YoZT1NJiZlW01dfHxlWyJAQGl0ZXJhdG9yIl0pP2U6bnVsbH12YXIgRCxGPU9iamVjdC5hc3NpZ247ZnVuY3Rpb24gaihlKXtpZih2b2lkIDA9PT1EKXRyeXt0aHJvdyBFcnJvcigpfWNhdGNoKGUpe3ZhciB0PWUuc3RhY2sudHJpbSgpLm1hdGNoKC9cbiggKihhdCApPykvKTtEPXQmJnRbMV18fCIifXJldHVybiJcbiIrRCtlfXZhciBCPSExO2Z1bmN0aW9uIFYoZSx0KXtpZighZXx8QilyZXR1cm4iIjtCPSEwO3ZhciBuPUVycm9yLnByZXBhcmVTdGFja1RyYWNlO0Vycm9yLnByZXBhcmVTdGFja1RyYWNlPXZvaWQgMDt0cnl7aWYodClpZih0PWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwcm9wcyIse3NldDpmdW5jdGlvbigpe3Rocm93IEVycm9yKCl9fSksIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmNvbnN0cnVjdCl7dHJ5e1JlZmxlY3QuY29uc3RydWN0KHQsW10pfWNhdGNoKGUpe3ZhciByPWV9UmVmbGVjdC5jb25zdHJ1Y3QoZSxbXSx0KX1lbHNle3RyeXt0LmNhbGwoKX1jYXRjaChlKXtyPWV9ZS5jYWxsKHQucHJvdG90eXBlKX1lbHNle3RyeXt0aHJvdyBFcnJvcigpfWNhdGNoKGUpe3I9ZX1lKCl9fWNhdGNoKHQpe2lmKHQmJnImJiJzdHJpbmciPT10eXBlb2YgdC5zdGFjayl7Zm9yKHZhciBvPXQuc3RhY2suc3BsaXQoIlxuIiksaT1yLnN0YWNrLnNwbGl0KCJcbiIpLGE9by5sZW5ndGgtMSxzPWkubGVuZ3RoLTE7MTw9YSYmMDw9cyYmb1thXSE9PWlbc107KXMtLTtmb3IoOzE8PWEmJjA8PXM7YS0tLHMtLSlpZihvW2FdIT09aVtzXSl7aWYoMSE9PWF8fDEhPT1zKWRve2lmKGEtLSwwPi0tc3x8b1thXSE9PWlbc10pe3ZhciBjPSJcbiIrb1thXS5yZXBsYWNlKCIgYXQgbmV3ICIsIiBhdCAiKTtyZXR1cm4gZS5kaXNwbGF5TmFtZSYmYy5pbmNsdWRlcygiPGFub255bW91cz4iKSYmKGM9Yy5yZXBsYWNlKCI8YW5vbnltb3VzPiIsZS5kaXNwbGF5TmFtZSkpLGN9fXdoaWxlKDE8PWEmJjA8PXMpO2JyZWFrfX19ZmluYWxseXtCPSExLEVycm9yLnByZXBhcmVTdGFja1RyYWNlPW59cmV0dXJuKGU9ZT9lLmRpc3BsYXlOYW1lfHxlLm5hbWU6IiIpP2ooZSk6IiJ9ZnVuY3Rpb24gVShlKXtzd2l0Y2goZS50YWcpe2Nhc2UgNTpyZXR1cm4gaihlLnR5cGUpO2Nhc2UgMTY6cmV0dXJuIGooIkxhenkiKTtjYXNlIDEzOnJldHVybiBqKCJTdXNwZW5zZSIpO2Nhc2UgMTk6cmV0dXJuIGooIlN1c3BlbnNlTGlzdCIpO2Nhc2UgMDpjYXNlIDI6Y2FzZSAxNTpyZXR1cm4gZT1WKGUudHlwZSwhMSk7Y2FzZSAxMTpyZXR1cm4gZT1WKGUudHlwZS5yZW5kZXIsITEpO2Nhc2UgMTpyZXR1cm4gZT1WKGUudHlwZSwhMCk7ZGVmYXVsdDpyZXR1cm4iIn19ZnVuY3Rpb24geihlKXtpZihudWxsPT1lKXJldHVybiBudWxsO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiBlLmRpc3BsYXlOYW1lfHxlLm5hbWV8fG51bGw7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBlO3N3aXRjaChlKXtjYXNlIEU6cmV0dXJuIkZyYWdtZW50IjtjYXNlIFM6cmV0dXJuIlBvcnRhbCI7Y2FzZSBrOnJldHVybiJQcm9maWxlciI7Y2FzZSBDOnJldHVybiJTdHJpY3RNb2RlIjtjYXNlIHg6cmV0dXJuIlN1c3BlbnNlIjtjYXNlIEk6cmV0dXJuIlN1c3BlbnNlTGlzdCJ9aWYoIm9iamVjdCI9PXR5cGVvZiBlKXN3aXRjaChlLiQkdHlwZW9mKXtjYXNlIE86cmV0dXJuKGUuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Db25zdW1lciI7Y2FzZSBBOnJldHVybihlLl9jb250ZXh0LmRpc3BsYXlOYW1lfHwiQ29udGV4dCIpKyIuUHJvdmlkZXIiO2Nhc2UgVDp2YXIgdD1lLnJlbmRlcjtyZXR1cm4oZT1lLmRpc3BsYXlOYW1lKXx8KGU9IiIhPT0oZT10LmRpc3BsYXlOYW1lfHx0Lm5hbWV8fCIiKT8iRm9yd2FyZFJlZigiK2UrIikiOiJGb3J3YXJkUmVmIiksZTtjYXNlIE46cmV0dXJuIG51bGwhPT0odD1lLmRpc3BsYXlOYW1lfHxudWxsKT90OnooZS50eXBlKXx8Ik1lbW8iO2Nhc2UgTDp0PWUuX3BheWxvYWQsZT1lLl9pbml0O3RyeXtyZXR1cm4geihlKHQpKX1jYXRjaChlKXt9fXJldHVybiBudWxsfWZ1bmN0aW9uIEgoZSl7dmFyIHQ9ZS50eXBlO3N3aXRjaChlLnRhZyl7Y2FzZSAyNDpyZXR1cm4iQ2FjaGUiO2Nhc2UgOTpyZXR1cm4odC5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLkNvbnN1bWVyIjtjYXNlIDEwOnJldHVybih0Ll9jb250ZXh0LmRpc3BsYXlOYW1lfHwiQ29udGV4dCIpKyIuUHJvdmlkZXIiO2Nhc2UgMTg6cmV0dXJuIkRlaHlkcmF0ZWRGcmFnbWVudCI7Y2FzZSAxMTpyZXR1cm4gZT0oZT10LnJlbmRlcikuZGlzcGxheU5hbWV8fGUubmFtZXx8IiIsdC5kaXNwbGF5TmFtZXx8KCIiIT09ZT8iRm9yd2FyZFJlZigiK2UrIikiOiJGb3J3YXJkUmVmIik7Y2FzZSA3OnJldHVybiJGcmFnbWVudCI7Y2FzZSA1OnJldHVybiB0O2Nhc2UgNDpyZXR1cm4iUG9ydGFsIjtjYXNlIDM6cmV0dXJuIlJvb3QiO2Nhc2UgNjpyZXR1cm4iVGV4dCI7Y2FzZSAxNjpyZXR1cm4geih0KTtjYXNlIDg6cmV0dXJuIHQ9PT1DPyJTdHJpY3RNb2RlIjoiTW9kZSI7Y2FzZSAyMjpyZXR1cm4iT2Zmc2NyZWVuIjtjYXNlIDEyOnJldHVybiJQcm9maWxlciI7Y2FzZSAyMTpyZXR1cm4iU2NvcGUiO2Nhc2UgMTM6cmV0dXJuIlN1c3BlbnNlIjtjYXNlIDE5OnJldHVybiJTdXNwZW5zZUxpc3QiO2Nhc2UgMjU6cmV0dXJuIlRyYWNpbmdNYXJrZXIiO2Nhc2UgMTpjYXNlIDA6Y2FzZSAxNzpjYXNlIDI6Y2FzZSAxNDpjYXNlIDE1OmlmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0LmRpc3BsYXlOYW1lfHx0Lm5hbWV8fG51bGw7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0fXJldHVybiBudWxsfWZ1bmN0aW9uICQoZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlImJvb2xlYW4iOmNhc2UibnVtYmVyIjpjYXNlInN0cmluZyI6Y2FzZSJ1bmRlZmluZWQiOmNhc2Uib2JqZWN0IjpyZXR1cm4gZTtkZWZhdWx0OnJldHVybiIifX1mdW5jdGlvbiBZKGUpe3ZhciB0PWUudHlwZTtyZXR1cm4oZT1lLm5vZGVOYW1lKSYmImlucHV0Ij09PWUudG9Mb3dlckNhc2UoKSYmKCJjaGVja2JveCI9PT10fHwicmFkaW8iPT09dCl9ZnVuY3Rpb24gcShlKXtlLl92YWx1ZVRyYWNrZXJ8fChlLl92YWx1ZVRyYWNrZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9WShlKT8iY2hlY2tlZCI6InZhbHVlIixuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsdCkscj0iIitlW3RdO2lmKCFlLmhhc093blByb3BlcnR5KHQpJiZ2b2lkIDAhPT1uJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5nZXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBuLnNldCl7dmFyIG89bi5nZXQsaT1uLnNldDtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihlKXtyPSIiK2UsaS5jYWxsKHRoaXMsZSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTpuLmVudW1lcmFibGV9KSx7Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sc2V0VmFsdWU6ZnVuY3Rpb24oZSl7cj0iIitlfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXtlLl92YWx1ZVRyYWNrZXI9bnVsbCxkZWxldGUgZVt0XX19fX0oZSkpfWZ1bmN0aW9uIFcoZSl7aWYoIWUpcmV0dXJuITE7dmFyIHQ9ZS5fdmFsdWVUcmFja2VyO2lmKCF0KXJldHVybiEwO3ZhciBuPXQuZ2V0VmFsdWUoKSxyPSIiO3JldHVybiBlJiYocj1ZKGUpP2UuY2hlY2tlZD8idHJ1ZSI6ImZhbHNlIjplLnZhbHVlKSwoZT1yKSE9PW4mJih0LnNldFZhbHVlKGUpLCEwKX1mdW5jdGlvbiBHKGUpe2lmKHZvaWQgMD09PShlPWV8fCgidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCkpKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZS5hY3RpdmVFbGVtZW50fHxlLmJvZHl9Y2F0Y2godCl7cmV0dXJuIGUuYm9keX19ZnVuY3Rpb24gUShlLHQpe3ZhciBuPXQuY2hlY2tlZDtyZXR1cm4gRih7fSx0LHtkZWZhdWx0Q2hlY2tlZDp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCx2YWx1ZTp2b2lkIDAsY2hlY2tlZDpudWxsIT1uP246ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkfSl9ZnVuY3Rpb24gSyhlLHQpe3ZhciBuPW51bGw9PXQuZGVmYXVsdFZhbHVlPyIiOnQuZGVmYXVsdFZhbHVlLHI9bnVsbCE9dC5jaGVja2VkP3QuY2hlY2tlZDp0LmRlZmF1bHRDaGVja2VkO249JChudWxsIT10LnZhbHVlP3QudmFsdWU6biksZS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpyLGluaXRpYWxWYWx1ZTpuLGNvbnRyb2xsZWQ6ImNoZWNrYm94Ij09PXQudHlwZXx8InJhZGlvIj09PXQudHlwZT9udWxsIT10LmNoZWNrZWQ6bnVsbCE9dC52YWx1ZX19ZnVuY3Rpb24gWihlLHQpe251bGwhPSh0PXQuY2hlY2tlZCkmJmIoZSwiY2hlY2tlZCIsdCwhMSl9ZnVuY3Rpb24gWChlLHQpe1ooZSx0KTt2YXIgbj0kKHQudmFsdWUpLHI9dC50eXBlO2lmKG51bGwhPW4pIm51bWJlciI9PT1yPygwPT09biYmIiI9PT1lLnZhbHVlfHxlLnZhbHVlIT1uKSYmKGUudmFsdWU9IiIrbik6ZS52YWx1ZSE9PSIiK24mJihlLnZhbHVlPSIiK24pO2Vsc2UgaWYoInN1Ym1pdCI9PT1yfHwicmVzZXQiPT09cilyZXR1cm4gdm9pZCBlLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTt0Lmhhc093blByb3BlcnR5KCJ2YWx1ZSIpP2VlKGUsdC50eXBlLG4pOnQuaGFzT3duUHJvcGVydHkoImRlZmF1bHRWYWx1ZSIpJiZlZShlLHQudHlwZSwkKHQuZGVmYXVsdFZhbHVlKSksbnVsbD09dC5jaGVja2VkJiZudWxsIT10LmRlZmF1bHRDaGVja2VkJiYoZS5kZWZhdWx0Q2hlY2tlZD0hIXQuZGVmYXVsdENoZWNrZWQpfWZ1bmN0aW9uIEooZSx0LG4pe2lmKHQuaGFzT3duUHJvcGVydHkoInZhbHVlIil8fHQuaGFzT3duUHJvcGVydHkoImRlZmF1bHRWYWx1ZSIpKXt2YXIgcj10LnR5cGU7aWYoISgic3VibWl0IiE9PXImJiJyZXNldCIhPT1yfHx2b2lkIDAhPT10LnZhbHVlJiZudWxsIT09dC52YWx1ZSkpcmV0dXJuO3Q9IiIrZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxufHx0PT09ZS52YWx1ZXx8KGUudmFsdWU9dCksZS5kZWZhdWx0VmFsdWU9dH0iIiE9PShuPWUubmFtZSkmJihlLm5hbWU9IiIpLGUuZGVmYXVsdENoZWNrZWQ9ISFlLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQsIiIhPT1uJiYoZS5uYW1lPW4pfWZ1bmN0aW9uIGVlKGUsdCxuKXsibnVtYmVyIj09PXQmJkcoZS5vd25lckRvY3VtZW50KT09PWV8fChudWxsPT1uP2UuZGVmYXVsdFZhbHVlPSIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU6ZS5kZWZhdWx0VmFsdWUhPT0iIituJiYoZS5kZWZhdWx0VmFsdWU9IiIrbikpfXZhciB0ZT1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIG5lKGUsdCxuLHIpe2lmKGU9ZS5vcHRpb25zLHQpe3Q9e307Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspdFsiJCIrbltvXV09ITA7Zm9yKG49MDtuPGUubGVuZ3RoO24rKylvPXQuaGFzT3duUHJvcGVydHkoIiQiK2Vbbl0udmFsdWUpLGVbbl0uc2VsZWN0ZWQhPT1vJiYoZVtuXS5zZWxlY3RlZD1vKSxvJiZyJiYoZVtuXS5kZWZhdWx0U2VsZWN0ZWQ9ITApfWVsc2V7Zm9yKG49IiIrJChuKSx0PW51bGwsbz0wO288ZS5sZW5ndGg7bysrKXtpZihlW29dLnZhbHVlPT09bilyZXR1cm4gZVtvXS5zZWxlY3RlZD0hMCx2b2lkKHImJihlW29dLmRlZmF1bHRTZWxlY3RlZD0hMCkpO251bGwhPT10fHxlW29dLmRpc2FibGVkfHwodD1lW29dKX1udWxsIT09dCYmKHQuc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiByZShlLHQpe2lmKG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpdGhyb3cgRXJyb3IoaSg5MSkpO3JldHVybiBGKHt9LHQse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOiIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9KX1mdW5jdGlvbiBvZShlLHQpe3ZhciBuPXQudmFsdWU7aWYobnVsbD09bil7aWYobj10LmNoaWxkcmVuLHQ9dC5kZWZhdWx0VmFsdWUsbnVsbCE9bil7aWYobnVsbCE9dCl0aHJvdyBFcnJvcihpKDkyKSk7aWYodGUobikpe2lmKDE8bi5sZW5ndGgpdGhyb3cgRXJyb3IoaSg5MykpO249blswXX10PW59bnVsbD09dCYmKHQ9IiIpLG49dH1lLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZTokKG4pfX1mdW5jdGlvbiBpZShlLHQpe3ZhciBuPSQodC52YWx1ZSkscj0kKHQuZGVmYXVsdFZhbHVlKTtudWxsIT1uJiYoKG49IiIrbikhPT1lLnZhbHVlJiYoZS52YWx1ZT1uKSxudWxsPT10LmRlZmF1bHRWYWx1ZSYmZS5kZWZhdWx0VmFsdWUhPT1uJiYoZS5kZWZhdWx0VmFsdWU9bikpLG51bGwhPXImJihlLmRlZmF1bHRWYWx1ZT0iIityKX1mdW5jdGlvbiBhZShlKXt2YXIgdD1lLnRleHRDb250ZW50O3Q9PT1lLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlJiYiIiE9PXQmJm51bGwhPT10JiYoZS52YWx1ZT10KX1mdW5jdGlvbiBzZShlKXtzd2l0Y2goZSl7Y2FzZSJzdmciOnJldHVybiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7Y2FzZSJtYXRoIjpyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI7ZGVmYXVsdDpyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCJ9fWZ1bmN0aW9uIGNlKGUsdCl7cmV0dXJuIG51bGw9PWV8fCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWU/c2UodCk6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj09PWUmJiJmb3JlaWduT2JqZWN0Ij09PXQ/Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiOmV9dmFyIHVlLGxlLGRlPShsZT1mdW5jdGlvbihlLHQpe2lmKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIhPT1lLm5hbWVzcGFjZVVSSXx8ImlubmVySFRNTCJpbiBlKWUuaW5uZXJIVE1MPXQ7ZWxzZXtmb3IoKHVlPXVlfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MPSI8c3ZnPiIrdC52YWx1ZU9mKCkudG9TdHJpbmcoKSsiPC9zdmc+Iix0PXVlLmZpcnN0Q2hpbGQ7ZS5maXJzdENoaWxkOyllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7Zm9yKDt0LmZpcnN0Q2hpbGQ7KWUuYXBwZW5kQ2hpbGQodC5maXJzdENoaWxkKX19LCJ1bmRlZmluZWQiIT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uP2Z1bmN0aW9uKGUsdCxuLHIpe01TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uKCl7cmV0dXJuIGxlKGUsdCl9KX06bGUpO2Z1bmN0aW9uIGZlKGUsdCl7aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYmMz09PW4ubm9kZVR5cGUpcmV0dXJuIHZvaWQobi5ub2RlVmFsdWU9dCl9ZS50ZXh0Q29udGVudD10fXZhciBwZT17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYXNwZWN0UmF0aW86ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0saGU9WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtmdW5jdGlvbiBtZShlLHQsbil7cmV0dXJuIG51bGw9PXR8fCJib29sZWFuIj09dHlwZW9mIHR8fCIiPT09dD8iIjpufHwibnVtYmVyIiE9dHlwZW9mIHR8fDA9PT10fHxwZS5oYXNPd25Qcm9wZXJ0eShlKSYmcGVbZV0/KCIiK3QpLnRyaW0oKTp0KyJweCJ9ZnVuY3Rpb24gZ2UoZSx0KXtmb3IodmFyIG4gaW4gZT1lLnN0eWxlLHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIHI9MD09PW4uaW5kZXhPZigiLS0iKSxvPW1lKG4sdFtuXSxyKTsiZmxvYXQiPT09biYmKG49ImNzc0Zsb2F0Iikscj9lLnNldFByb3BlcnR5KG4sbyk6ZVtuXT1vfX1PYmplY3Qua2V5cyhwZSkuZm9yRWFjaChmdW5jdGlvbihlKXtoZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Q9dCtlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc3Vic3RyaW5nKDEpLHBlW3RdPXBlW2VdfSl9KTt2YXIgeWU9Rih7bWVudWl0ZW06ITB9LHthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0cmFjazohMCx3YnI6ITB9KTtmdW5jdGlvbiB2ZShlLHQpe2lmKHQpe2lmKHllW2VdJiYobnVsbCE9dC5jaGlsZHJlbnx8bnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IoaSgxMzcsZSkpO2lmKG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpe2lmKG51bGwhPXQuY2hpbGRyZW4pdGhyb3cgRXJyb3IoaSg2MCkpO2lmKCJvYmplY3QiIT10eXBlb2YgdC5kYW5nZXJvdXNseVNldElubmVySFRNTHx8ISgiX19odG1sImluIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKGkoNjEpKX1pZihudWxsIT10LnN0eWxlJiYib2JqZWN0IiE9dHlwZW9mIHQuc3R5bGUpdGhyb3cgRXJyb3IoaSg2MikpfX1mdW5jdGlvbiBiZShlLHQpe2lmKC0xPT09ZS5pbmRleE9mKCItIikpcmV0dXJuInN0cmluZyI9PXR5cGVvZiB0LmlzO3N3aXRjaChlKXtjYXNlImFubm90YXRpb24teG1sIjpjYXNlImNvbG9yLXByb2ZpbGUiOmNhc2UiZm9udC1mYWNlIjpjYXNlImZvbnQtZmFjZS1zcmMiOmNhc2UiZm9udC1mYWNlLXVyaSI6Y2FzZSJmb250LWZhY2UtZm9ybWF0IjpjYXNlImZvbnQtZmFjZS1uYW1lIjpjYXNlIm1pc3NpbmctZ2x5cGgiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fXZhciB3ZT1udWxsO2Z1bmN0aW9uIF9lKGUpe3JldHVybihlPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdykuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJihlPWUuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLDM9PT1lLm5vZGVUeXBlP2UucGFyZW50Tm9kZTplfXZhciBTZT1udWxsLEVlPW51bGwsQ2U9bnVsbDtmdW5jdGlvbiBrZShlKXtpZihlPXdvKGUpKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgU2UpdGhyb3cgRXJyb3IoaSgyODApKTt2YXIgdD1lLnN0YXRlTm9kZTt0JiYodD1Tbyh0KSxTZShlLnN0YXRlTm9kZSxlLnR5cGUsdCkpfX1mdW5jdGlvbiBBZShlKXtFZT9DZT9DZS5wdXNoKGUpOkNlPVtlXTpFZT1lfWZ1bmN0aW9uIE9lKCl7aWYoRWUpe3ZhciBlPUVlLHQ9Q2U7aWYoQ2U9RWU9bnVsbCxrZShlKSx0KWZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspa2UodFtlXSl9fWZ1bmN0aW9uIFRlKGUsdCl7cmV0dXJuIGUodCl9ZnVuY3Rpb24geGUoKXt9dmFyIEllPSExO2Z1bmN0aW9uIE5lKGUsdCxuKXtpZihJZSlyZXR1cm4gZSh0LG4pO0llPSEwO3RyeXtyZXR1cm4gVGUoZSx0LG4pfWZpbmFsbHl7SWU9ITEsKG51bGwhPT1FZXx8bnVsbCE9PUNlKSYmKHhlKCksT2UoKSl9fWZ1bmN0aW9uIExlKGUsdCl7dmFyIG49ZS5zdGF0ZU5vZGU7aWYobnVsbD09PW4pcmV0dXJuIG51bGw7dmFyIHI9U28obik7aWYobnVsbD09PXIpcmV0dXJuIG51bGw7bj1yW3RdO2U6c3dpdGNoKHQpe2Nhc2Uib25DbGljayI6Y2FzZSJvbkNsaWNrQ2FwdHVyZSI6Y2FzZSJvbkRvdWJsZUNsaWNrIjpjYXNlIm9uRG91YmxlQ2xpY2tDYXB0dXJlIjpjYXNlIm9uTW91c2VEb3duIjpjYXNlIm9uTW91c2VEb3duQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlTW92ZSI6Y2FzZSJvbk1vdXNlTW92ZUNhcHR1cmUiOmNhc2Uib25Nb3VzZVVwIjpjYXNlIm9uTW91c2VVcENhcHR1cmUiOmNhc2Uib25Nb3VzZUVudGVyIjoocj0hci5kaXNhYmxlZCl8fChyPSEoImJ1dHRvbiI9PT0oZT1lLnR5cGUpfHwiaW5wdXQiPT09ZXx8InNlbGVjdCI9PT1lfHwidGV4dGFyZWEiPT09ZSkpLGU9IXI7YnJlYWsgZTtkZWZhdWx0OmU9ITF9aWYoZSlyZXR1cm4gbnVsbDtpZihuJiYiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBFcnJvcihpKDIzMSx0LHR5cGVvZiBuKSk7cmV0dXJuIG59dmFyIFBlPSExO2lmKGwpdHJ5e3ZhciBNZT17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTWUsInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtQZT0hMH19KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsTWUsTWUpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IixNZSxNZSl9Y2F0Y2gobGUpe1BlPSExfWZ1bmN0aW9uIFJlKGUsdCxuLHIsbyxpLGEscyxjKXt2YXIgdT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMyk7dHJ5e3QuYXBwbHkobix1KX1jYXRjaChlKXt0aGlzLm9uRXJyb3IoZSl9fXZhciBEZT0hMSxGZT1udWxsLGplPSExLEJlPW51bGwsVmU9e29uRXJyb3I6ZnVuY3Rpb24oZSl7RGU9ITAsRmU9ZX19O2Z1bmN0aW9uIFVlKGUsdCxuLHIsbyxpLGEscyxjKXtEZT0hMSxGZT1udWxsLFJlLmFwcGx5KFZlLGFyZ3VtZW50cyl9ZnVuY3Rpb24gemUoZSl7dmFyIHQ9ZSxuPWU7aWYoZS5hbHRlcm5hdGUpZm9yKDt0LnJldHVybjspdD10LnJldHVybjtlbHNle2U9dDtkb3shISg0MDk4Jih0PWUpLmZsYWdzKSYmKG49dC5yZXR1cm4pLGU9dC5yZXR1cm59d2hpbGUoZSl9cmV0dXJuIDM9PT10LnRhZz9uOm51bGx9ZnVuY3Rpb24gSGUoZSl7aWYoMTM9PT1lLnRhZyl7dmFyIHQ9ZS5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT10JiYobnVsbCE9PShlPWUuYWx0ZXJuYXRlKSYmKHQ9ZS5tZW1vaXplZFN0YXRlKSksbnVsbCE9PXQpcmV0dXJuIHQuZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiAkZShlKXtpZih6ZShlKSE9PWUpdGhyb3cgRXJyb3IoaSgxODgpKX1mdW5jdGlvbiBZZShlKXtyZXR1cm4gbnVsbCE9PShlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuYWx0ZXJuYXRlO2lmKCF0KXtpZihudWxsPT09KHQ9emUoZSkpKXRocm93IEVycm9yKGkoMTg4KSk7cmV0dXJuIHQhPT1lP251bGw6ZX1mb3IodmFyIG49ZSxyPXQ7Oyl7dmFyIG89bi5yZXR1cm47aWYobnVsbD09PW8pYnJlYWs7dmFyIGE9by5hbHRlcm5hdGU7aWYobnVsbD09PWEpe2lmKG51bGwhPT0ocj1vLnJldHVybikpe249cjtjb250aW51ZX1icmVha31pZihvLmNoaWxkPT09YS5jaGlsZCl7Zm9yKGE9by5jaGlsZDthOyl7aWYoYT09PW4pcmV0dXJuICRlKG8pLGU7aWYoYT09PXIpcmV0dXJuICRlKG8pLHQ7YT1hLnNpYmxpbmd9dGhyb3cgRXJyb3IoaSgxODgpKX1pZihuLnJldHVybiE9PXIucmV0dXJuKW49byxyPWE7ZWxzZXtmb3IodmFyIHM9ITEsYz1vLmNoaWxkO2M7KXtpZihjPT09bil7cz0hMCxuPW8scj1hO2JyZWFrfWlmKGM9PT1yKXtzPSEwLHI9byxuPWE7YnJlYWt9Yz1jLnNpYmxpbmd9aWYoIXMpe2ZvcihjPWEuY2hpbGQ7Yzspe2lmKGM9PT1uKXtzPSEwLG49YSxyPW87YnJlYWt9aWYoYz09PXIpe3M9ITAscj1hLG49bzticmVha31jPWMuc2libGluZ31pZighcyl0aHJvdyBFcnJvcihpKDE4OSkpfX1pZihuLmFsdGVybmF0ZSE9PXIpdGhyb3cgRXJyb3IoaSgxOTApKX1pZigzIT09bi50YWcpdGhyb3cgRXJyb3IoaSgxODgpKTtyZXR1cm4gbi5zdGF0ZU5vZGUuY3VycmVudD09PW4/ZTp0fShlKSk/cWUoZSk6bnVsbH1mdW5jdGlvbiBxZShlKXtpZig1PT09ZS50YWd8fDY9PT1lLnRhZylyZXR1cm4gZTtmb3IoZT1lLmNoaWxkO251bGwhPT1lOyl7dmFyIHQ9cWUoZSk7aWYobnVsbCE9PXQpcmV0dXJuIHQ7ZT1lLnNpYmxpbmd9cmV0dXJuIG51bGx9dmFyIFdlPW8udW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayxHZT1vLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrLFFlPW8udW5zdGFibGVfc2hvdWxkWWllbGQsS2U9by51bnN0YWJsZV9yZXF1ZXN0UGFpbnQsWmU9by51bnN0YWJsZV9ub3csWGU9by51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbCxKZT1vLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5LGV0PW8udW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksdHQ9by51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxudD1vLnVuc3RhYmxlX0xvd1ByaW9yaXR5LHJ0PW8udW5zdGFibGVfSWRsZVByaW9yaXR5LG90PW51bGwsaXQ9bnVsbDt2YXIgYXQ9TWF0aC5jbHozMj9NYXRoLmNsejMyOmZ1bmN0aW9uKGUpe3JldHVybiBlPj4+PTAsMD09PWU/MzI6MzEtKHN0KGUpL2N0fDApfDB9LHN0PU1hdGgubG9nLGN0PU1hdGguTE4yO3ZhciB1dD02NCxsdD00MTk0MzA0O2Z1bmN0aW9uIGR0KGUpe3N3aXRjaChlJi1lKXtjYXNlIDE6cmV0dXJuIDE7Y2FzZSAyOnJldHVybiAyO2Nhc2UgNDpyZXR1cm4gNDtjYXNlIDg6cmV0dXJuIDg7Y2FzZSAxNjpyZXR1cm4gMTY7Y2FzZSAzMjpyZXR1cm4gMzI7Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gNDE5NDI0MCZlO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6cmV0dXJuIDEzMDAyMzQyNCZlO2Nhc2UgMTM0MjE3NzI4OnJldHVybiAxMzQyMTc3Mjg7Y2FzZSAyNjg0MzU0NTY6cmV0dXJuIDI2ODQzNTQ1NjtjYXNlIDUzNjg3MDkxMjpyZXR1cm4gNTM2ODcwOTEyO2Nhc2UgMTA3Mzc0MTgyNDpyZXR1cm4gMTA3Mzc0MTgyNDtkZWZhdWx0OnJldHVybiBlfX1mdW5jdGlvbiBmdChlLHQpe3ZhciBuPWUucGVuZGluZ0xhbmVzO2lmKDA9PT1uKXJldHVybiAwO3ZhciByPTAsbz1lLnN1c3BlbmRlZExhbmVzLGk9ZS5waW5nZWRMYW5lcyxhPTI2ODQzNTQ1NSZuO2lmKDAhPT1hKXt2YXIgcz1hJn5vOzAhPT1zP3I9ZHQocyk6MCE9PShpJj1hKSYmKHI9ZHQoaSkpfWVsc2UgMCE9PShhPW4mfm8pP3I9ZHQoYSk6MCE9PWkmJihyPWR0KGkpKTtpZigwPT09cilyZXR1cm4gMDtpZigwIT09dCYmdCE9PXImJjA9PT0odCZvKSYmKChvPXImLXIpPj0oaT10Ji10KXx8MTY9PT1vJiY0MTk0MjQwJmkpKXJldHVybiB0O2lmKDQmciYmKHJ8PTE2Jm4pLDAhPT0odD1lLmVudGFuZ2xlZExhbmVzKSlmb3IoZT1lLmVudGFuZ2xlbWVudHMsdCY9cjswPHQ7KW89MTw8KG49MzEtYXQodCkpLHJ8PWVbbl0sdCY9fm87cmV0dXJuIHJ9ZnVuY3Rpb24gcHQoZSx0KXtzd2l0Y2goZSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIHQrMjUwO2Nhc2UgODpjYXNlIDE2OmNhc2UgMzI6Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gdCs1ZTM7ZGVmYXVsdDpyZXR1cm4tMX19ZnVuY3Rpb24gaHQoZSl7cmV0dXJuIDAhPT0oZT0tMTA3Mzc0MTgyNSZlLnBlbmRpbmdMYW5lcyk/ZToxMDczNzQxODI0JmU/MTA3Mzc0MTgyNDowfWZ1bmN0aW9uIG10KCl7dmFyIGU9dXQ7cmV0dXJuISg0MTk0MjQwJih1dDw8PTEpKSYmKHV0PTY0KSxlfWZ1bmN0aW9uIGd0KGUpe2Zvcih2YXIgdD1bXSxuPTA7MzE+bjtuKyspdC5wdXNoKGUpO3JldHVybiB0fWZ1bmN0aW9uIHl0KGUsdCxuKXtlLnBlbmRpbmdMYW5lc3w9dCw1MzY4NzA5MTIhPT10JiYoZS5zdXNwZW5kZWRMYW5lcz0wLGUucGluZ2VkTGFuZXM9MCksKGU9ZS5ldmVudFRpbWVzKVt0PTMxLWF0KHQpXT1ufWZ1bmN0aW9uIHZ0KGUsdCl7dmFyIG49ZS5lbnRhbmdsZWRMYW5lc3w9dDtmb3IoZT1lLmVudGFuZ2xlbWVudHM7bjspe3ZhciByPTMxLWF0KG4pLG89MTw8cjtvJnR8ZVtyXSZ0JiYoZVtyXXw9dCksbiY9fm99fXZhciBidD0wO2Z1bmN0aW9uIHd0KGUpe3JldHVybiAxPChlJj0tZSk/NDxlPzI2ODQzNTQ1NSZlPzE2OjUzNjg3MDkxMjo0OjF9dmFyIF90LFN0LEV0LEN0LGt0LEF0PSExLE90PVtdLFR0PW51bGwseHQ9bnVsbCxJdD1udWxsLE50PW5ldyBNYXAsTHQ9bmV3IE1hcCxQdD1bXSxNdD0ibW91c2Vkb3duIG1vdXNldXAgdG91Y2hjYW5jZWwgdG91Y2hlbmQgdG91Y2hzdGFydCBhdXhjbGljayBkYmxjbGljayBwb2ludGVyY2FuY2VsIHBvaW50ZXJkb3duIHBvaW50ZXJ1cCBkcmFnZW5kIGRyYWdzdGFydCBkcm9wIGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9uc3RhcnQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBpbnB1dCB0ZXh0SW5wdXQgY29weSBjdXQgcGFzdGUgY2xpY2sgY2hhbmdlIGNvbnRleHRtZW51IHJlc2V0IHN1Ym1pdCIuc3BsaXQoIiAiKTtmdW5jdGlvbiBSdChlLHQpe3N3aXRjaChlKXtjYXNlImZvY3VzaW4iOmNhc2UiZm9jdXNvdXQiOlR0PW51bGw7YnJlYWs7Y2FzZSJkcmFnZW50ZXIiOmNhc2UiZHJhZ2xlYXZlIjp4dD1udWxsO2JyZWFrO2Nhc2UibW91c2VvdmVyIjpjYXNlIm1vdXNlb3V0IjpJdD1udWxsO2JyZWFrO2Nhc2UicG9pbnRlcm92ZXIiOmNhc2UicG9pbnRlcm91dCI6TnQuZGVsZXRlKHQucG9pbnRlcklkKTticmVhaztjYXNlImdvdHBvaW50ZXJjYXB0dXJlIjpjYXNlImxvc3Rwb2ludGVyY2FwdHVyZSI6THQuZGVsZXRlKHQucG9pbnRlcklkKX19ZnVuY3Rpb24gRHQoZSx0LG4scixvLGkpe3JldHVybiBudWxsPT09ZXx8ZS5uYXRpdmVFdmVudCE9PWk/KGU9e2Jsb2NrZWRPbjp0LGRvbUV2ZW50TmFtZTpuLGV2ZW50U3lzdGVtRmxhZ3M6cixuYXRpdmVFdmVudDppLHRhcmdldENvbnRhaW5lcnM6W29dfSxudWxsIT09dCYmKG51bGwhPT0odD13byh0KSkmJlN0KHQpKSxlKTooZS5ldmVudFN5c3RlbUZsYWdzfD1yLHQ9ZS50YXJnZXRDb250YWluZXJzLG51bGwhPT1vJiYtMT09PXQuaW5kZXhPZihvKSYmdC5wdXNoKG8pLGUpfWZ1bmN0aW9uIEZ0KGUpe3ZhciB0PWJvKGUudGFyZ2V0KTtpZihudWxsIT09dCl7dmFyIG49emUodCk7aWYobnVsbCE9PW4paWYoMTM9PT0odD1uLnRhZykpe2lmKG51bGwhPT0odD1IZShuKSkpcmV0dXJuIGUuYmxvY2tlZE9uPXQsdm9pZCBrdChlLnByaW9yaXR5LGZ1bmN0aW9uKCl7RXQobil9KX1lbHNlIGlmKDM9PT10JiZuLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXJldHVybiB2b2lkKGUuYmxvY2tlZE9uPTM9PT1uLnRhZz9uLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGwpfWUuYmxvY2tlZE9uPW51bGx9ZnVuY3Rpb24ganQoZSl7aWYobnVsbCE9PWUuYmxvY2tlZE9uKXJldHVybiExO2Zvcih2YXIgdD1lLnRhcmdldENvbnRhaW5lcnM7MDx0Lmxlbmd0aDspe3ZhciBuPVF0KGUuZG9tRXZlbnROYW1lLGUuZXZlbnRTeXN0ZW1GbGFncyx0WzBdLGUubmF0aXZlRXZlbnQpO2lmKG51bGwhPT1uKXJldHVybiBudWxsIT09KHQ9d28obikpJiZTdCh0KSxlLmJsb2NrZWRPbj1uLCExO3ZhciByPW5ldyhuPWUubmF0aXZlRXZlbnQpLmNvbnN0cnVjdG9yKG4udHlwZSxuKTt3ZT1yLG4udGFyZ2V0LmRpc3BhdGNoRXZlbnQociksd2U9bnVsbCx0LnNoaWZ0KCl9cmV0dXJuITB9ZnVuY3Rpb24gQnQoZSx0LG4pe2p0KGUpJiZuLmRlbGV0ZSh0KX1mdW5jdGlvbiBWdCgpe0F0PSExLG51bGwhPT1UdCYmanQoVHQpJiYoVHQ9bnVsbCksbnVsbCE9PXh0JiZqdCh4dCkmJih4dD1udWxsKSxudWxsIT09SXQmJmp0KEl0KSYmKEl0PW51bGwpLE50LmZvckVhY2goQnQpLEx0LmZvckVhY2goQnQpfWZ1bmN0aW9uIFV0KGUsdCl7ZS5ibG9ja2VkT249PT10JiYoZS5ibG9ja2VkT249bnVsbCxBdHx8KEF0PSEwLG8udW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayhvLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LFZ0KSkpfWZ1bmN0aW9uIHp0KGUpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIFV0KHQsZSl9aWYoMDxPdC5sZW5ndGgpe1V0KE90WzBdLGUpO2Zvcih2YXIgbj0xO248T3QubGVuZ3RoO24rKyl7dmFyIHI9T3Rbbl07ci5ibG9ja2VkT249PT1lJiYoci5ibG9ja2VkT249bnVsbCl9fWZvcihudWxsIT09VHQmJlV0KFR0LGUpLG51bGwhPT14dCYmVXQoeHQsZSksbnVsbCE9PUl0JiZVdChJdCxlKSxOdC5mb3JFYWNoKHQpLEx0LmZvckVhY2godCksbj0wO248UHQubGVuZ3RoO24rKykocj1QdFtuXSkuYmxvY2tlZE9uPT09ZSYmKHIuYmxvY2tlZE9uPW51bGwpO2Zvcig7MDxQdC5sZW5ndGgmJm51bGw9PT0obj1QdFswXSkuYmxvY2tlZE9uOylGdChuKSxudWxsPT09bi5ibG9ja2VkT24mJlB0LnNoaWZ0KCl9dmFyIEh0PXcuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsJHQ9ITA7ZnVuY3Rpb24gWXQoZSx0LG4scil7dmFyIG89YnQsaT1IdC50cmFuc2l0aW9uO0h0LnRyYW5zaXRpb249bnVsbDt0cnl7YnQ9MSxXdChlLHQsbixyKX1maW5hbGx5e2J0PW8sSHQudHJhbnNpdGlvbj1pfX1mdW5jdGlvbiBxdChlLHQsbixyKXt2YXIgbz1idCxpPUh0LnRyYW5zaXRpb247SHQudHJhbnNpdGlvbj1udWxsO3RyeXtidD00LFd0KGUsdCxuLHIpfWZpbmFsbHl7YnQ9byxIdC50cmFuc2l0aW9uPWl9fWZ1bmN0aW9uIFd0KGUsdCxuLHIpe2lmKCR0KXt2YXIgbz1RdChlLHQsbixyKTtpZihudWxsPT09bykkcihlLHQscixHdCxuKSxSdChlLHIpO2Vsc2UgaWYoZnVuY3Rpb24oZSx0LG4scixvKXtzd2l0Y2godCl7Y2FzZSJmb2N1c2luIjpyZXR1cm4gVHQ9RHQoVHQsZSx0LG4scixvKSwhMDtjYXNlImRyYWdlbnRlciI6cmV0dXJuIHh0PUR0KHh0LGUsdCxuLHIsbyksITA7Y2FzZSJtb3VzZW92ZXIiOnJldHVybiBJdD1EdChJdCxlLHQsbixyLG8pLCEwO2Nhc2UicG9pbnRlcm92ZXIiOnZhciBpPW8ucG9pbnRlcklkO3JldHVybiBOdC5zZXQoaSxEdChOdC5nZXQoaSl8fG51bGwsZSx0LG4scixvKSksITA7Y2FzZSJnb3Rwb2ludGVyY2FwdHVyZSI6cmV0dXJuIGk9by5wb2ludGVySWQsTHQuc2V0KGksRHQoTHQuZ2V0KGkpfHxudWxsLGUsdCxuLHIsbykpLCEwfXJldHVybiExfShvLGUsdCxuLHIpKXIuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihSdChlLHIpLDQmdCYmLTE8TXQuaW5kZXhPZihlKSl7Zm9yKDtudWxsIT09bzspe3ZhciBpPXdvKG8pO2lmKG51bGwhPT1pJiZfdChpKSxudWxsPT09KGk9UXQoZSx0LG4scikpJiYkcihlLHQscixHdCxuKSxpPT09bylicmVhaztvPWl9bnVsbCE9PW8mJnIuc3RvcFByb3BhZ2F0aW9uKCl9ZWxzZSAkcihlLHQscixudWxsLG4pfX12YXIgR3Q9bnVsbDtmdW5jdGlvbiBRdChlLHQsbixyKXtpZihHdD1udWxsLG51bGwhPT0oZT1ibyhlPV9lKHIpKSkpaWYobnVsbD09PSh0PXplKGUpKSllPW51bGw7ZWxzZSBpZigxMz09PShuPXQudGFnKSl7aWYobnVsbCE9PShlPUhlKHQpKSlyZXR1cm4gZTtlPW51bGx9ZWxzZSBpZigzPT09bil7aWYodC5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZClyZXR1cm4gMz09PXQudGFnP3Quc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtlPW51bGx9ZWxzZSB0IT09ZSYmKGU9bnVsbCk7cmV0dXJuIEd0PWUsbnVsbH1mdW5jdGlvbiBLdChlKXtzd2l0Y2goZSl7Y2FzZSJjYW5jZWwiOmNhc2UiY2xpY2siOmNhc2UiY2xvc2UiOmNhc2UiY29udGV4dG1lbnUiOmNhc2UiY29weSI6Y2FzZSJjdXQiOmNhc2UiYXV4Y2xpY2siOmNhc2UiZGJsY2xpY2siOmNhc2UiZHJhZ2VuZCI6Y2FzZSJkcmFnc3RhcnQiOmNhc2UiZHJvcCI6Y2FzZSJmb2N1c2luIjpjYXNlImZvY3Vzb3V0IjpjYXNlImlucHV0IjpjYXNlImludmFsaWQiOmNhc2Uia2V5ZG93biI6Y2FzZSJrZXlwcmVzcyI6Y2FzZSJrZXl1cCI6Y2FzZSJtb3VzZWRvd24iOmNhc2UibW91c2V1cCI6Y2FzZSJwYXN0ZSI6Y2FzZSJwYXVzZSI6Y2FzZSJwbGF5IjpjYXNlInBvaW50ZXJjYW5jZWwiOmNhc2UicG9pbnRlcmRvd24iOmNhc2UicG9pbnRlcnVwIjpjYXNlInJhdGVjaGFuZ2UiOmNhc2UicmVzZXQiOmNhc2UicmVzaXplIjpjYXNlInNlZWtlZCI6Y2FzZSJzdWJtaXQiOmNhc2UidG91Y2hjYW5jZWwiOmNhc2UidG91Y2hlbmQiOmNhc2UidG91Y2hzdGFydCI6Y2FzZSJ2b2x1bWVjaGFuZ2UiOmNhc2UiY2hhbmdlIjpjYXNlInNlbGVjdGlvbmNoYW5nZSI6Y2FzZSJ0ZXh0SW5wdXQiOmNhc2UiY29tcG9zaXRpb25zdGFydCI6Y2FzZSJjb21wb3NpdGlvbmVuZCI6Y2FzZSJjb21wb3NpdGlvbnVwZGF0ZSI6Y2FzZSJiZWZvcmVibHVyIjpjYXNlImFmdGVyYmx1ciI6Y2FzZSJiZWZvcmVpbnB1dCI6Y2FzZSJibHVyIjpjYXNlImZ1bGxzY3JlZW5jaGFuZ2UiOmNhc2UiZm9jdXMiOmNhc2UiaGFzaGNoYW5nZSI6Y2FzZSJwb3BzdGF0ZSI6Y2FzZSJzZWxlY3QiOmNhc2Uic2VsZWN0c3RhcnQiOnJldHVybiAxO2Nhc2UiZHJhZyI6Y2FzZSJkcmFnZW50ZXIiOmNhc2UiZHJhZ2V4aXQiOmNhc2UiZHJhZ2xlYXZlIjpjYXNlImRyYWdvdmVyIjpjYXNlIm1vdXNlbW92ZSI6Y2FzZSJtb3VzZW91dCI6Y2FzZSJtb3VzZW92ZXIiOmNhc2UicG9pbnRlcm1vdmUiOmNhc2UicG9pbnRlcm91dCI6Y2FzZSJwb2ludGVyb3ZlciI6Y2FzZSJzY3JvbGwiOmNhc2UidG9nZ2xlIjpjYXNlInRvdWNobW92ZSI6Y2FzZSJ3aGVlbCI6Y2FzZSJtb3VzZWVudGVyIjpjYXNlIm1vdXNlbGVhdmUiOmNhc2UicG9pbnRlcmVudGVyIjpjYXNlInBvaW50ZXJsZWF2ZSI6cmV0dXJuIDQ7Y2FzZSJtZXNzYWdlIjpzd2l0Y2goWGUoKSl7Y2FzZSBKZTpyZXR1cm4gMTtjYXNlIGV0OnJldHVybiA0O2Nhc2UgdHQ6Y2FzZSBudDpyZXR1cm4gMTY7Y2FzZSBydDpyZXR1cm4gNTM2ODcwOTEyO2RlZmF1bHQ6cmV0dXJuIDE2fWRlZmF1bHQ6cmV0dXJuIDE2fX12YXIgWnQ9bnVsbCxYdD1udWxsLEp0PW51bGw7ZnVuY3Rpb24gZW4oKXtpZihKdClyZXR1cm4gSnQ7dmFyIGUsdCxuPVh0LHI9bi5sZW5ndGgsbz0idmFsdWUiaW4gWnQ/WnQudmFsdWU6WnQudGV4dENvbnRlbnQsaT1vLmxlbmd0aDtmb3IoZT0wO2U8ciYmbltlXT09PW9bZV07ZSsrKTt2YXIgYT1yLWU7Zm9yKHQ9MTt0PD1hJiZuW3ItdF09PT1vW2ktdF07dCsrKTtyZXR1cm4gSnQ9by5zbGljZShlLDE8dD8xLXQ6dm9pZCAwKX1mdW5jdGlvbiB0bihlKXt2YXIgdD1lLmtleUNvZGU7cmV0dXJuImNoYXJDb2RlImluIGU/MD09PShlPWUuY2hhckNvZGUpJiYxMz09PXQmJihlPTEzKTplPXQsMTA9PT1lJiYoZT0xMyksMzI8PWV8fDEzPT09ZT9lOjB9ZnVuY3Rpb24gbm4oKXtyZXR1cm4hMH1mdW5jdGlvbiBybigpe3JldHVybiExfWZ1bmN0aW9uIG9uKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXtmb3IodmFyIGEgaW4gdGhpcy5fcmVhY3ROYW1lPXQsdGhpcy5fdGFyZ2V0SW5zdD1yLHRoaXMudHlwZT1uLHRoaXMubmF0aXZlRXZlbnQ9byx0aGlzLnRhcmdldD1pLHRoaXMuY3VycmVudFRhcmdldD1udWxsLGUpZS5oYXNPd25Qcm9wZXJ0eShhKSYmKHQ9ZVthXSx0aGlzW2FdPXQ/dChvKTpvW2FdKTtyZXR1cm4gdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KG51bGwhPW8uZGVmYXVsdFByZXZlbnRlZD9vLmRlZmF1bHRQcmV2ZW50ZWQ6ITE9PT1vLnJldHVyblZhbHVlKT9ubjpybix0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXJuLHRoaXN9cmV0dXJuIEYodC5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOiJ1bmtub3duIiE9dHlwZW9mIGUucmV0dXJuVmFsdWUmJihlLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1ubil9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUuc3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFByb3BhZ2F0aW9uKCk6InVua25vd24iIT10eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1ubil9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt9LGlzUGVyc2lzdGVudDpubn0pLHR9dmFyIGFuLHNuLGNuLHVuPXtldmVudFBoYXNlOjAsYnViYmxlczowLGNhbmNlbGFibGU6MCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOjAsaXNUcnVzdGVkOjB9LGxuPW9uKHVuKSxkbj1GKHt9LHVuLHt2aWV3OjAsZGV0YWlsOjB9KSxmbj1vbihkbikscG49Rih7fSxkbix7c2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjAsY2xpZW50WTowLHBhZ2VYOjAscGFnZVk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTprbixidXR0b246MCxidXR0b25zOjAscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZS5yZWxhdGVkVGFyZ2V0P2UuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1lbnQ/ZS50b0VsZW1lbnQ6ZS5mcm9tRWxlbWVudDplLnJlbGF0ZWRUYXJnZXR9LG1vdmVtZW50WDpmdW5jdGlvbihlKXtyZXR1cm4ibW92ZW1lbnRYImluIGU/ZS5tb3ZlbWVudFg6KGUhPT1jbiYmKGNuJiYibW91c2Vtb3ZlIj09PWUudHlwZT8oYW49ZS5zY3JlZW5YLWNuLnNjcmVlblgsc249ZS5zY3JlZW5ZLWNuLnNjcmVlblkpOnNuPWFuPTAsY249ZSksYW4pfSxtb3ZlbWVudFk6ZnVuY3Rpb24oZSl7cmV0dXJuIm1vdmVtZW50WSJpbiBlP2UubW92ZW1lbnRZOnNufX0pLGhuPW9uKHBuKSxtbj1vbihGKHt9LHBuLHtkYXRhVHJhbnNmZXI6MH0pKSxnbj1vbihGKHt9LGRuLHtyZWxhdGVkVGFyZ2V0OjB9KSkseW49b24oRih7fSx1bix7YW5pbWF0aW9uTmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSkpLHZuPUYoe30sdW4se2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuImNsaXBib2FyZERhdGEiaW4gZT9lLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fSksYm49b24odm4pLHduPW9uKEYoe30sdW4se2RhdGE6MH0pKSxfbj17RXNjOiJFc2NhcGUiLFNwYWNlYmFyOiIgIixMZWZ0OiJBcnJvd0xlZnQiLFVwOiJBcnJvd1VwIixSaWdodDoiQXJyb3dSaWdodCIsRG93bjoiQXJyb3dEb3duIixEZWw6IkRlbGV0ZSIsV2luOiJPUyIsTWVudToiQ29udGV4dE1lbnUiLEFwcHM6IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLE1velByaW50YWJsZUtleToiVW5pZGVudGlmaWVkIn0sU249ezg6IkJhY2tzcGFjZSIsOToiVGFiIiwxMjoiQ2xlYXIiLDEzOiJFbnRlciIsMTY6IlNoaWZ0IiwxNzoiQ29udHJvbCIsMTg6IkFsdCIsMTk6IlBhdXNlIiwyMDoiQ2Fwc0xvY2siLDI3OiJFc2NhcGUiLDMyOiIgIiwzMzoiUGFnZVVwIiwzNDoiUGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiQXJyb3dMZWZ0IiwzODoiQXJyb3dVcCIsMzk6IkFycm93UmlnaHQiLDQwOiJBcnJvd0Rvd24iLDQ1OiJJbnNlcnQiLDQ2OiJEZWxldGUiLDExMjoiRjEiLDExMzoiRjIiLDExNDoiRjMiLDExNToiRjQiLDExNjoiRjUiLDExNzoiRjYiLDExODoiRjciLDExOToiRjgiLDEyMDoiRjkiLDEyMToiRjEwIiwxMjI6IkYxMSIsMTIzOiJGMTIiLDE0NDoiTnVtTG9jayIsMTQ1OiJTY3JvbGxMb2NrIiwyMjQ6Ik1ldGEifSxFbj17QWx0OiJhbHRLZXkiLENvbnRyb2w6ImN0cmxLZXkiLE1ldGE6Im1ldGFLZXkiLFNoaWZ0OiJzaGlmdEtleSJ9O2Z1bmN0aW9uIENuKGUpe3ZhciB0PXRoaXMubmF0aXZlRXZlbnQ7cmV0dXJuIHQuZ2V0TW9kaWZpZXJTdGF0ZT90LmdldE1vZGlmaWVyU3RhdGUoZSk6ISEoZT1FbltlXSkmJiEhdFtlXX1mdW5jdGlvbiBrbigpe3JldHVybiBDbn12YXIgQW49Rih7fSxkbix7a2V5OmZ1bmN0aW9uKGUpe2lmKGUua2V5KXt2YXIgdD1fbltlLmtleV18fGUua2V5O2lmKCJVbmlkZW50aWZpZWQiIT09dClyZXR1cm4gdH1yZXR1cm4ia2V5cHJlc3MiPT09ZS50eXBlPzEzPT09KGU9dG4oZSkpPyJFbnRlciI6U3RyaW5nLmZyb21DaGFyQ29kZShlKToia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/U25bZS5rZXlDb2RlXXx8IlVuaWRlbnRpZmllZCI6IiJ9LGNvZGU6MCxsb2NhdGlvbjowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxyZXBlYXQ6MCxsb2NhbGU6MCxnZXRNb2RpZmllclN0YXRlOmtuLGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/dG4oZSk6MH0sa2V5Q29kZTpmdW5jdGlvbihlKXtyZXR1cm4ia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/dG4oZSk6ImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2Uua2V5Q29kZTowfX0pLE9uPW9uKEFuKSxUbj1vbihGKHt9LHBuLHtwb2ludGVySWQ6MCx3aWR0aDowLGhlaWdodDowLHByZXNzdXJlOjAsdGFuZ2VudGlhbFByZXNzdXJlOjAsdGlsdFg6MCx0aWx0WTowLHR3aXN0OjAscG9pbnRlclR5cGU6MCxpc1ByaW1hcnk6MH0pKSx4bj1vbihGKHt9LGRuLHt0b3VjaGVzOjAsdGFyZ2V0VG91Y2hlczowLGNoYW5nZWRUb3VjaGVzOjAsYWx0S2V5OjAsbWV0YUtleTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGdldE1vZGlmaWVyU3RhdGU6a259KSksSW49b24oRih7fSx1bix7cHJvcGVydHlOYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSksTm49Rih7fSxwbix7ZGVsdGFYOmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0YVgiaW4gZT9lLmRlbHRhWDoid2hlZWxEZWx0YVgiaW4gZT8tZS53aGVlbERlbHRhWDowfSxkZWx0YVk6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWSJpbiBlP2UuZGVsdGFZOiJ3aGVlbERlbHRhWSJpbiBlPy1lLndoZWVsRGVsdGFZOiJ3aGVlbERlbHRhImluIGU/LWUud2hlZWxEZWx0YTowfSxkZWx0YVo6MCxkZWx0YU1vZGU6MH0pLExuPW9uKE5uKSxQbj1bOSwxMywyNywzMl0sTW49bCYmIkNvbXBvc2l0aW9uRXZlbnQiaW4gd2luZG93LFJuPW51bGw7bCYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKFJuPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIERuPWwmJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhUm4sRm49bCYmKCFNbnx8Um4mJjg8Um4mJjExPj1Sbiksam49U3RyaW5nLmZyb21DaGFyQ29kZSgzMiksQm49ITE7ZnVuY3Rpb24gVm4oZSx0KXtzd2l0Y2goZSl7Y2FzZSJrZXl1cCI6cmV0dXJuLTEhPT1Qbi5pbmRleE9mKHQua2V5Q29kZSk7Y2FzZSJrZXlkb3duIjpyZXR1cm4gMjI5IT09dC5rZXlDb2RlO2Nhc2Uia2V5cHJlc3MiOmNhc2UibW91c2Vkb3duIjpjYXNlImZvY3Vzb3V0IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBVbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mKGU9ZS5kZXRhaWwpJiYiZGF0YSJpbiBlP2UuZGF0YTpudWxsfXZhciB6bj0hMTt2YXIgSG49e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAsImRhdGV0aW1lLWxvY2FsIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O2Z1bmN0aW9uICRuKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dD8hIUhuW2UudHlwZV06InRleHRhcmVhIj09PXR9ZnVuY3Rpb24gWW4oZSx0LG4scil7QWUociksMDwodD1xcih0LCJvbkNoYW5nZSIpKS5sZW5ndGgmJihuPW5ldyBsbigib25DaGFuZ2UiLCJjaGFuZ2UiLG51bGwsbixyKSxlLnB1c2goe2V2ZW50Om4sbGlzdGVuZXJzOnR9KSl9dmFyIHFuPW51bGwsV249bnVsbDtmdW5jdGlvbiBHbihlKXtqcihlLDApfWZ1bmN0aW9uIFFuKGUpe2lmKFcoX28oZSkpKXJldHVybiBlfWZ1bmN0aW9uIEtuKGUsdCl7aWYoImNoYW5nZSI9PT1lKXJldHVybiB0fXZhciBabj0hMTtpZihsKXt2YXIgWG47aWYobCl7dmFyIEpuPSJvbmlucHV0ImluIGRvY3VtZW50O2lmKCFKbil7dmFyIGVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2VyLnNldEF0dHJpYnV0ZSgib25pbnB1dCIsInJldHVybjsiKSxKbj0iZnVuY3Rpb24iPT10eXBlb2YgZXIub25pbnB1dH1Ybj1Kbn1lbHNlIFhuPSExO1puPVhuJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OTxkb2N1bWVudC5kb2N1bWVudE1vZGUpfWZ1bmN0aW9uIHRyKCl7cW4mJihxbi5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsbnIpLFduPXFuPW51bGwpfWZ1bmN0aW9uIG5yKGUpe2lmKCJ2YWx1ZSI9PT1lLnByb3BlcnR5TmFtZSYmUW4oV24pKXt2YXIgdD1bXTtZbih0LFduLGUsX2UoZSkpLE5lKEduLHQpfX1mdW5jdGlvbiBycihlLHQsbil7ImZvY3VzaW4iPT09ZT8odHIoKSxXbj1uLChxbj10KS5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsbnIpKToiZm9jdXNvdXQiPT09ZSYmdHIoKX1mdW5jdGlvbiBvcihlKXtpZigic2VsZWN0aW9uY2hhbmdlIj09PWV8fCJrZXl1cCI9PT1lfHwia2V5ZG93biI9PT1lKXJldHVybiBRbihXbil9ZnVuY3Rpb24gaXIoZSx0KXtpZigiY2xpY2siPT09ZSlyZXR1cm4gUW4odCl9ZnVuY3Rpb24gYXIoZSx0KXtpZigiaW5wdXQiPT09ZXx8ImNoYW5nZSI9PT1lKXJldHVybiBRbih0KX12YXIgc3I9ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXQmJigwIT09ZXx8MS9lPT0xL3QpfHxlIT1lJiZ0IT10fTtmdW5jdGlvbiBjcihlLHQpe2lmKHNyKGUsdCkpcmV0dXJuITA7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiB0fHxudWxsPT09dClyZXR1cm4hMTt2YXIgbj1PYmplY3Qua2V5cyhlKSxyPU9iamVjdC5rZXlzKHQpO2lmKG4ubGVuZ3RoIT09ci5sZW5ndGgpcmV0dXJuITE7Zm9yKHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89bltyXTtpZighZC5jYWxsKHQsbyl8fCFzcihlW29dLHRbb10pKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIHVyKGUpe2Zvcig7ZSYmZS5maXJzdENoaWxkOyllPWUuZmlyc3RDaGlsZDtyZXR1cm4gZX1mdW5jdGlvbiBscihlLHQpe3ZhciBuLHI9dXIoZSk7Zm9yKGU9MDtyOyl7aWYoMz09PXIubm9kZVR5cGUpe2lmKG49ZStyLnRleHRDb250ZW50Lmxlbmd0aCxlPD10JiZuPj10KXJldHVybntub2RlOnIsb2Zmc2V0OnQtZX07ZT1ufWU6e2Zvcig7cjspe2lmKHIubmV4dFNpYmxpbmcpe3I9ci5uZXh0U2libGluZzticmVhayBlfXI9ci5wYXJlbnROb2RlfXI9dm9pZCAwfXI9dXIocil9fWZ1bmN0aW9uIGRyKGUsdCl7cmV0dXJuISghZXx8IXQpJiYoZT09PXR8fCghZXx8MyE9PWUubm9kZVR5cGUpJiYodCYmMz09PXQubm9kZVR5cGU/ZHIoZSx0LnBhcmVudE5vZGUpOiJjb250YWlucyJpbiBlP2UuY29udGFpbnModCk6ISFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYhISgxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpKSkpfWZ1bmN0aW9uIGZyKCl7Zm9yKHZhciBlPXdpbmRvdyx0PUcoKTt0IGluc3RhbmNlb2YgZS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXt2YXIgbj0ic3RyaW5nIj09dHlwZW9mIHQuY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmfWNhdGNoKGUpe249ITF9aWYoIW4pYnJlYWs7dD1HKChlPXQuY29udGVudFdpbmRvdykuZG9jdW1lbnQpfXJldHVybiB0fWZ1bmN0aW9uIHByKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdCYmKCJpbnB1dCI9PT10JiYoInRleHQiPT09ZS50eXBlfHwic2VhcmNoIj09PWUudHlwZXx8InRlbCI9PT1lLnR5cGV8fCJ1cmwiPT09ZS50eXBlfHwicGFzc3dvcmQiPT09ZS50eXBlKXx8InRleHRhcmVhIj09PXR8fCJ0cnVlIj09PWUuY29udGVudEVkaXRhYmxlKX1mdW5jdGlvbiBocihlKXt2YXIgdD1mcigpLG49ZS5mb2N1c2VkRWxlbSxyPWUuc2VsZWN0aW9uUmFuZ2U7aWYodCE9PW4mJm4mJm4ub3duZXJEb2N1bWVudCYmZHIobi5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxuKSl7aWYobnVsbCE9PXImJnByKG4pKWlmKHQ9ci5zdGFydCx2b2lkIDA9PT0oZT1yLmVuZCkmJihlPXQpLCJzZWxlY3Rpb25TdGFydCJpbiBuKW4uc2VsZWN0aW9uU3RhcnQ9dCxuLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihlLG4udmFsdWUubGVuZ3RoKTtlbHNlIGlmKChlPSh0PW4ub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpJiZ0LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbil7ZT1lLmdldFNlbGVjdGlvbigpO3ZhciBvPW4udGV4dENvbnRlbnQubGVuZ3RoLGk9TWF0aC5taW4oci5zdGFydCxvKTtyPXZvaWQgMD09PXIuZW5kP2k6TWF0aC5taW4oci5lbmQsbyksIWUuZXh0ZW5kJiZpPnImJihvPXIscj1pLGk9byksbz1scihuLGkpO3ZhciBhPWxyKG4scik7byYmYSYmKDEhPT1lLnJhbmdlQ291bnR8fGUuYW5jaG9yTm9kZSE9PW8ubm9kZXx8ZS5hbmNob3JPZmZzZXQhPT1vLm9mZnNldHx8ZS5mb2N1c05vZGUhPT1hLm5vZGV8fGUuZm9jdXNPZmZzZXQhPT1hLm9mZnNldCkmJigodD10LmNyZWF0ZVJhbmdlKCkpLnNldFN0YXJ0KG8ubm9kZSxvLm9mZnNldCksZS5yZW1vdmVBbGxSYW5nZXMoKSxpPnI/KGUuYWRkUmFuZ2UodCksZS5leHRlbmQoYS5ub2RlLGEub2Zmc2V0KSk6KHQuc2V0RW5kKGEubm9kZSxhLm9mZnNldCksZS5hZGRSYW5nZSh0KSkpfWZvcih0PVtdLGU9bjtlPWUucGFyZW50Tm9kZTspMT09PWUubm9kZVR5cGUmJnQucHVzaCh7ZWxlbWVudDplLGxlZnQ6ZS5zY3JvbGxMZWZ0LHRvcDplLnNjcm9sbFRvcH0pO2ZvcigiZnVuY3Rpb24iPT10eXBlb2Ygbi5mb2N1cyYmbi5mb2N1cygpLG49MDtuPHQubGVuZ3RoO24rKykoZT10W25dKS5lbGVtZW50LnNjcm9sbExlZnQ9ZS5sZWZ0LGUuZWxlbWVudC5zY3JvbGxUb3A9ZS50b3B9fXZhciBtcj1sJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiYxMT49ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLGdyPW51bGwseXI9bnVsbCx2cj1udWxsLGJyPSExO2Z1bmN0aW9uIHdyKGUsdCxuKXt2YXIgcj1uLndpbmRvdz09PW4/bi5kb2N1bWVudDo5PT09bi5ub2RlVHlwZT9uOm4ub3duZXJEb2N1bWVudDticnx8bnVsbD09Z3J8fGdyIT09RyhyKXx8KCJzZWxlY3Rpb25TdGFydCJpbihyPWdyKSYmcHIocik/cj17c3RhcnQ6ci5zZWxlY3Rpb25TdGFydCxlbmQ6ci5zZWxlY3Rpb25FbmR9OnI9e2FuY2hvck5vZGU6KHI9KHIub3duZXJEb2N1bWVudCYmci5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpKS5hbmNob3JOb2RlLGFuY2hvck9mZnNldDpyLmFuY2hvck9mZnNldCxmb2N1c05vZGU6ci5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6ci5mb2N1c09mZnNldH0sdnImJmNyKHZyLHIpfHwodnI9ciwwPChyPXFyKHlyLCJvblNlbGVjdCIpKS5sZW5ndGgmJih0PW5ldyBsbigib25TZWxlY3QiLCJzZWxlY3QiLG51bGwsdCxuKSxlLnB1c2goe2V2ZW50OnQsbGlzdGVuZXJzOnJ9KSx0LnRhcmdldD1ncikpKX1mdW5jdGlvbiBfcihlLHQpe3ZhciBuPXt9O3JldHVybiBuW2UudG9Mb3dlckNhc2UoKV09dC50b0xvd2VyQ2FzZSgpLG5bIldlYmtpdCIrZV09IndlYmtpdCIrdCxuWyJNb3oiK2VdPSJtb3oiK3Qsbn12YXIgU3I9e2FuaW1hdGlvbmVuZDpfcigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uRW5kIiksYW5pbWF0aW9uaXRlcmF0aW9uOl9yKCJBbmltYXRpb24iLCJBbmltYXRpb25JdGVyYXRpb24iKSxhbmltYXRpb25zdGFydDpfcigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uU3RhcnQiKSx0cmFuc2l0aW9uZW5kOl9yKCJUcmFuc2l0aW9uIiwiVHJhbnNpdGlvbkVuZCIpfSxFcj17fSxDcj17fTtmdW5jdGlvbiBrcihlKXtpZihFcltlXSlyZXR1cm4gRXJbZV07aWYoIVNyW2VdKXJldHVybiBlO3ZhciB0LG49U3JbZV07Zm9yKHQgaW4gbilpZihuLmhhc093blByb3BlcnR5KHQpJiZ0IGluIENyKXJldHVybiBFcltlXT1uW3RdO3JldHVybiBlfWwmJihDcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiQW5pbWF0aW9uRXZlbnQiaW4gd2luZG93fHwoZGVsZXRlIFNyLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIFNyLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIFNyLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0ZSBTci50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pO3ZhciBBcj1rcigiYW5pbWF0aW9uZW5kIiksT3I9a3IoImFuaW1hdGlvbml0ZXJhdGlvbiIpLFRyPWtyKCJhbmltYXRpb25zdGFydCIpLHhyPWtyKCJ0cmFuc2l0aW9uZW5kIiksSXI9bmV3IE1hcCxOcj0iYWJvcnQgYXV4Q2xpY2sgY2FuY2VsIGNhblBsYXkgY2FuUGxheVRocm91Z2ggY2xpY2sgY2xvc2UgY29udGV4dE1lbnUgY29weSBjdXQgZHJhZyBkcmFnRW5kIGRyYWdFbnRlciBkcmFnRXhpdCBkcmFnTGVhdmUgZHJhZ092ZXIgZHJhZ1N0YXJ0IGRyb3AgZHVyYXRpb25DaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgZ290UG9pbnRlckNhcHR1cmUgaW5wdXQgaW52YWxpZCBrZXlEb3duIGtleVByZXNzIGtleVVwIGxvYWQgbG9hZGVkRGF0YSBsb2FkZWRNZXRhZGF0YSBsb2FkU3RhcnQgbG9zdFBvaW50ZXJDYXB0dXJlIG1vdXNlRG93biBtb3VzZU1vdmUgbW91c2VPdXQgbW91c2VPdmVyIG1vdXNlVXAgcGFzdGUgcGF1c2UgcGxheSBwbGF5aW5nIHBvaW50ZXJDYW5jZWwgcG9pbnRlckRvd24gcG9pbnRlck1vdmUgcG9pbnRlck91dCBwb2ludGVyT3ZlciBwb2ludGVyVXAgcHJvZ3Jlc3MgcmF0ZUNoYW5nZSByZXNldCByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdWJtaXQgc3VzcGVuZCB0aW1lVXBkYXRlIHRvdWNoQ2FuY2VsIHRvdWNoRW5kIHRvdWNoU3RhcnQgdm9sdW1lQ2hhbmdlIHNjcm9sbCB0b2dnbGUgdG91Y2hNb3ZlIHdhaXRpbmcgd2hlZWwiLnNwbGl0KCIgIik7ZnVuY3Rpb24gTHIoZSx0KXtJci5zZXQoZSx0KSxjKHQsW2VdKX1mb3IodmFyIFByPTA7UHI8TnIubGVuZ3RoO1ByKyspe3ZhciBNcj1OcltQcl07THIoTXIudG9Mb3dlckNhc2UoKSwib24iKyhNclswXS50b1VwcGVyQ2FzZSgpK01yLnNsaWNlKDEpKSl9THIoQXIsIm9uQW5pbWF0aW9uRW5kIiksTHIoT3IsIm9uQW5pbWF0aW9uSXRlcmF0aW9uIiksTHIoVHIsIm9uQW5pbWF0aW9uU3RhcnQiKSxMcigiZGJsY2xpY2siLCJvbkRvdWJsZUNsaWNrIiksTHIoImZvY3VzaW4iLCJvbkZvY3VzIiksTHIoImZvY3Vzb3V0Iiwib25CbHVyIiksTHIoeHIsIm9uVHJhbnNpdGlvbkVuZCIpLHUoIm9uTW91c2VFbnRlciIsWyJtb3VzZW91dCIsIm1vdXNlb3ZlciJdKSx1KCJvbk1vdXNlTGVhdmUiLFsibW91c2VvdXQiLCJtb3VzZW92ZXIiXSksdSgib25Qb2ludGVyRW50ZXIiLFsicG9pbnRlcm91dCIsInBvaW50ZXJvdmVyIl0pLHUoIm9uUG9pbnRlckxlYXZlIixbInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciJdKSxjKCJvbkNoYW5nZSIsImNoYW5nZSBjbGljayBmb2N1c2luIGZvY3Vzb3V0IGlucHV0IGtleWRvd24ga2V5dXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKSxjKCJvblNlbGVjdCIsImZvY3Vzb3V0IGNvbnRleHRtZW51IGRyYWdlbmQgZm9jdXNpbiBrZXlkb3duIGtleXVwIG1vdXNlZG93biBtb3VzZXVwIHNlbGVjdGlvbmNoYW5nZSIuc3BsaXQoIiAiKSksYygib25CZWZvcmVJbnB1dCIsWyJjb21wb3NpdGlvbmVuZCIsImtleXByZXNzIiwidGV4dElucHV0IiwicGFzdGUiXSksYygib25Db21wb3NpdGlvbkVuZCIsImNvbXBvc2l0aW9uZW5kIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duIi5zcGxpdCgiICIpKSxjKCJvbkNvbXBvc2l0aW9uU3RhcnQiLCJjb21wb3NpdGlvbnN0YXJ0IGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duIi5zcGxpdCgiICIpKSxjKCJvbkNvbXBvc2l0aW9uVXBkYXRlIiwiY29tcG9zaXRpb251cGRhdGUgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpO3ZhciBScj0iYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmciLnNwbGl0KCIgIiksRHI9bmV3IFNldCgiY2FuY2VsIGNsb3NlIGludmFsaWQgbG9hZCBzY3JvbGwgdG9nZ2xlIi5zcGxpdCgiICIpLmNvbmNhdChScikpO2Z1bmN0aW9uIEZyKGUsdCxuKXt2YXIgcj1lLnR5cGV8fCJ1bmtub3duLWV2ZW50IjtlLmN1cnJlbnRUYXJnZXQ9bixmdW5jdGlvbihlLHQsbixyLG8sYSxzLGMsdSl7aWYoVWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLERlKXtpZighRGUpdGhyb3cgRXJyb3IoaSgxOTgpKTt2YXIgbD1GZTtEZT0hMSxGZT1udWxsLGplfHwoamU9ITAsQmU9bCl9fShyLHQsdm9pZCAwLGUpLGUuY3VycmVudFRhcmdldD1udWxsfWZ1bmN0aW9uIGpyKGUsdCl7dD0hISg0JnQpO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dLG89ci5ldmVudDtyPXIubGlzdGVuZXJzO2U6e3ZhciBpPXZvaWQgMDtpZih0KWZvcih2YXIgYT1yLmxlbmd0aC0xOzA8PWE7YS0tKXt2YXIgcz1yW2FdLGM9cy5pbnN0YW5jZSx1PXMuY3VycmVudFRhcmdldDtpZihzPXMubGlzdGVuZXIsYyE9PWkmJm8uaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBlO0ZyKG8scyx1KSxpPWN9ZWxzZSBmb3IoYT0wO2E8ci5sZW5ndGg7YSsrKXtpZihjPShzPXJbYV0pLmluc3RhbmNlLHU9cy5jdXJyZW50VGFyZ2V0LHM9cy5saXN0ZW5lcixjIT09aSYmby5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGU7RnIobyxzLHUpLGk9Y319fWlmKGplKXRocm93IGU9QmUsamU9ITEsQmU9bnVsbCxlfWZ1bmN0aW9uIEJyKGUsdCl7dmFyIG49dFtnb107dm9pZCAwPT09biYmKG49dFtnb109bmV3IFNldCk7dmFyIHI9ZSsiX19idWJibGUiO24uaGFzKHIpfHwoSHIodCxlLDIsITEpLG4uYWRkKHIpKX1mdW5jdGlvbiBWcihlLHQsbil7dmFyIHI9MDt0JiYocnw9NCksSHIobixlLHIsdCl9dmFyIFVyPSJfcmVhY3RMaXN0ZW5pbmciK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO2Z1bmN0aW9uIHpyKGUpe2lmKCFlW1VyXSl7ZVtVcl09ITAsYS5mb3JFYWNoKGZ1bmN0aW9uKHQpeyJzZWxlY3Rpb25jaGFuZ2UiIT09dCYmKERyLmhhcyh0KXx8VnIodCwhMSxlKSxWcih0LCEwLGUpKX0pO3ZhciB0PTk9PT1lLm5vZGVUeXBlP2U6ZS5vd25lckRvY3VtZW50O251bGw9PT10fHx0W1VyXXx8KHRbVXJdPSEwLFZyKCJzZWxlY3Rpb25jaGFuZ2UiLCExLHQpKX19ZnVuY3Rpb24gSHIoZSx0LG4scil7c3dpdGNoKEt0KHQpKXtjYXNlIDE6dmFyIG89WXQ7YnJlYWs7Y2FzZSA0Om89cXQ7YnJlYWs7ZGVmYXVsdDpvPVd0fW49by5iaW5kKG51bGwsdCxuLGUpLG89dm9pZCAwLCFQZXx8InRvdWNoc3RhcnQiIT09dCYmInRvdWNobW92ZSIhPT10JiYid2hlZWwiIT09dHx8KG89ITApLHI/dm9pZCAwIT09bz9lLmFkZEV2ZW50TGlzdGVuZXIodCxuLHtjYXB0dXJlOiEwLHBhc3NpdmU6b30pOmUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITApOnZvaWQgMCE9PW8/ZS5hZGRFdmVudExpc3RlbmVyKHQsbix7cGFzc2l2ZTpvfSk6ZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMSl9ZnVuY3Rpb24gJHIoZSx0LG4scixvKXt2YXIgaT1yO2lmKCEoMSZ0fHwyJnR8fG51bGw9PT1yKSllOmZvcig7Oyl7aWYobnVsbD09PXIpcmV0dXJuO3ZhciBhPXIudGFnO2lmKDM9PT1hfHw0PT09YSl7dmFyIHM9ci5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztpZihzPT09b3x8OD09PXMubm9kZVR5cGUmJnMucGFyZW50Tm9kZT09PW8pYnJlYWs7aWYoND09PWEpZm9yKGE9ci5yZXR1cm47bnVsbCE9PWE7KXt2YXIgYz1hLnRhZztpZigoMz09PWN8fDQ9PT1jKSYmKChjPWEuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pPT09b3x8OD09PWMubm9kZVR5cGUmJmMucGFyZW50Tm9kZT09PW8pKXJldHVybjthPWEucmV0dXJufWZvcig7bnVsbCE9PXM7KXtpZihudWxsPT09KGE9Ym8ocykpKXJldHVybjtpZig1PT09KGM9YS50YWcpfHw2PT09Yyl7cj1pPWE7Y29udGludWUgZX1zPXMucGFyZW50Tm9kZX19cj1yLnJldHVybn1OZShmdW5jdGlvbigpe3ZhciByPWksbz1fZShuKSxhPVtdO2U6e3ZhciBzPUlyLmdldChlKTtpZih2b2lkIDAhPT1zKXt2YXIgYz1sbix1PWU7c3dpdGNoKGUpe2Nhc2Uia2V5cHJlc3MiOmlmKDA9PT10bihuKSlicmVhayBlO2Nhc2Uia2V5ZG93biI6Y2FzZSJrZXl1cCI6Yz1PbjticmVhaztjYXNlImZvY3VzaW4iOnU9ImZvY3VzIixjPWduO2JyZWFrO2Nhc2UiZm9jdXNvdXQiOnU9ImJsdXIiLGM9Z247YnJlYWs7Y2FzZSJiZWZvcmVibHVyIjpjYXNlImFmdGVyYmx1ciI6Yz1nbjticmVhaztjYXNlImNsaWNrIjppZigyPT09bi5idXR0b24pYnJlYWsgZTtjYXNlImF1eGNsaWNrIjpjYXNlImRibGNsaWNrIjpjYXNlIm1vdXNlZG93biI6Y2FzZSJtb3VzZW1vdmUiOmNhc2UibW91c2V1cCI6Y2FzZSJtb3VzZW91dCI6Y2FzZSJtb3VzZW92ZXIiOmNhc2UiY29udGV4dG1lbnUiOmM9aG47YnJlYWs7Y2FzZSJkcmFnIjpjYXNlImRyYWdlbmQiOmNhc2UiZHJhZ2VudGVyIjpjYXNlImRyYWdleGl0IjpjYXNlImRyYWdsZWF2ZSI6Y2FzZSJkcmFnb3ZlciI6Y2FzZSJkcmFnc3RhcnQiOmNhc2UiZHJvcCI6Yz1tbjticmVhaztjYXNlInRvdWNoY2FuY2VsIjpjYXNlInRvdWNoZW5kIjpjYXNlInRvdWNobW92ZSI6Y2FzZSJ0b3VjaHN0YXJ0IjpjPXhuO2JyZWFrO2Nhc2UgQXI6Y2FzZSBPcjpjYXNlIFRyOmM9eW47YnJlYWs7Y2FzZSB4cjpjPUluO2JyZWFrO2Nhc2Uic2Nyb2xsIjpjPWZuO2JyZWFrO2Nhc2Uid2hlZWwiOmM9TG47YnJlYWs7Y2FzZSJjb3B5IjpjYXNlImN1dCI6Y2FzZSJwYXN0ZSI6Yz1ibjticmVhaztjYXNlImdvdHBvaW50ZXJjYXB0dXJlIjpjYXNlImxvc3Rwb2ludGVyY2FwdHVyZSI6Y2FzZSJwb2ludGVyY2FuY2VsIjpjYXNlInBvaW50ZXJkb3duIjpjYXNlInBvaW50ZXJtb3ZlIjpjYXNlInBvaW50ZXJvdXQiOmNhc2UicG9pbnRlcm92ZXIiOmNhc2UicG9pbnRlcnVwIjpjPVRufXZhciBsPSEhKDQmdCksZD0hbCYmInNjcm9sbCI9PT1lLGY9bD9udWxsIT09cz9zKyJDYXB0dXJlIjpudWxsOnM7bD1bXTtmb3IodmFyIHAsaD1yO251bGwhPT1oOyl7dmFyIG09KHA9aCkuc3RhdGVOb2RlO2lmKDU9PT1wLnRhZyYmbnVsbCE9PW0mJihwPW0sbnVsbCE9PWYmJihudWxsIT0obT1MZShoLGYpKSYmbC5wdXNoKFlyKGgsbSxwKSkpKSxkKWJyZWFrO2g9aC5yZXR1cm59MDxsLmxlbmd0aCYmKHM9bmV3IGMocyx1LG51bGwsbixvKSxhLnB1c2goe2V2ZW50OnMsbGlzdGVuZXJzOmx9KSl9fWlmKCEoNyZ0KSl7aWYoYz0ibW91c2VvdXQiPT09ZXx8InBvaW50ZXJvdXQiPT09ZSwoIShzPSJtb3VzZW92ZXIiPT09ZXx8InBvaW50ZXJvdmVyIj09PWUpfHxuPT09d2V8fCEodT1uLnJlbGF0ZWRUYXJnZXR8fG4uZnJvbUVsZW1lbnQpfHwhYm8odSkmJiF1W21vXSkmJihjfHxzKSYmKHM9by53aW5kb3c9PT1vP286KHM9by5vd25lckRvY3VtZW50KT9zLmRlZmF1bHRWaWV3fHxzLnBhcmVudFdpbmRvdzp3aW5kb3csYz8oYz1yLG51bGwhPT0odT0odT1uLnJlbGF0ZWRUYXJnZXR8fG4udG9FbGVtZW50KT9ibyh1KTpudWxsKSYmKHUhPT0oZD16ZSh1KSl8fDUhPT11LnRhZyYmNiE9PXUudGFnKSYmKHU9bnVsbCkpOihjPW51bGwsdT1yKSxjIT09dSkpe2lmKGw9aG4sbT0ib25Nb3VzZUxlYXZlIixmPSJvbk1vdXNlRW50ZXIiLGg9Im1vdXNlIiwicG9pbnRlcm91dCIhPT1lJiYicG9pbnRlcm92ZXIiIT09ZXx8KGw9VG4sbT0ib25Qb2ludGVyTGVhdmUiLGY9Im9uUG9pbnRlckVudGVyIixoPSJwb2ludGVyIiksZD1udWxsPT1jP3M6X28oYykscD1udWxsPT11P3M6X28odSksKHM9bmV3IGwobSxoKyJsZWF2ZSIsYyxuLG8pKS50YXJnZXQ9ZCxzLnJlbGF0ZWRUYXJnZXQ9cCxtPW51bGwsYm8obyk9PT1yJiYoKGw9bmV3IGwoZixoKyJlbnRlciIsdSxuLG8pKS50YXJnZXQ9cCxsLnJlbGF0ZWRUYXJnZXQ9ZCxtPWwpLGQ9bSxjJiZ1KWU6e2ZvcihmPXUsaD0wLHA9bD1jO3A7cD1XcihwKSloKys7Zm9yKHA9MCxtPWY7bTttPVdyKG0pKXArKztmb3IoOzA8aC1wOylsPVdyKGwpLGgtLTtmb3IoOzA8cC1oOylmPVdyKGYpLHAtLTtmb3IoO2gtLTspe2lmKGw9PT1mfHxudWxsIT09ZiYmbD09PWYuYWx0ZXJuYXRlKWJyZWFrIGU7bD1XcihsKSxmPVdyKGYpfWw9bnVsbH1lbHNlIGw9bnVsbDtudWxsIT09YyYmR3IoYSxzLGMsbCwhMSksbnVsbCE9PXUmJm51bGwhPT1kJiZHcihhLGQsdSxsLCEwKX1pZigic2VsZWN0Ij09PShjPShzPXI/X28ocik6d2luZG93KS5ub2RlTmFtZSYmcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXx8ImlucHV0Ij09PWMmJiJmaWxlIj09PXMudHlwZSl2YXIgZz1LbjtlbHNlIGlmKCRuKHMpKWlmKFpuKWc9YXI7ZWxzZXtnPW9yO3ZhciB5PXJyfWVsc2UoYz1zLm5vZGVOYW1lKSYmImlucHV0Ij09PWMudG9Mb3dlckNhc2UoKSYmKCJjaGVja2JveCI9PT1zLnR5cGV8fCJyYWRpbyI9PT1zLnR5cGUpJiYoZz1pcik7c3dpdGNoKGcmJihnPWcoZSxyKSk/WW4oYSxnLG4sbyk6KHkmJnkoZSxzLHIpLCJmb2N1c291dCI9PT1lJiYoeT1zLl93cmFwcGVyU3RhdGUpJiZ5LmNvbnRyb2xsZWQmJiJudW1iZXIiPT09cy50eXBlJiZlZShzLCJudW1iZXIiLHMudmFsdWUpKSx5PXI/X28ocik6d2luZG93LGUpe2Nhc2UiZm9jdXNpbiI6KCRuKHkpfHwidHJ1ZSI9PT15LmNvbnRlbnRFZGl0YWJsZSkmJihncj15LHlyPXIsdnI9bnVsbCk7YnJlYWs7Y2FzZSJmb2N1c291dCI6dnI9eXI9Z3I9bnVsbDticmVhaztjYXNlIm1vdXNlZG93biI6YnI9ITA7YnJlYWs7Y2FzZSJjb250ZXh0bWVudSI6Y2FzZSJtb3VzZXVwIjpjYXNlImRyYWdlbmQiOmJyPSExLHdyKGEsbixvKTticmVhaztjYXNlInNlbGVjdGlvbmNoYW5nZSI6aWYobXIpYnJlYWs7Y2FzZSJrZXlkb3duIjpjYXNlImtleXVwIjp3cihhLG4sbyl9dmFyIHY7aWYoTW4pZTp7c3dpdGNoKGUpe2Nhc2UiY29tcG9zaXRpb25zdGFydCI6dmFyIGI9Im9uQ29tcG9zaXRpb25TdGFydCI7YnJlYWsgZTtjYXNlImNvbXBvc2l0aW9uZW5kIjpiPSJvbkNvbXBvc2l0aW9uRW5kIjticmVhayBlO2Nhc2UiY29tcG9zaXRpb251cGRhdGUiOmI9Im9uQ29tcG9zaXRpb25VcGRhdGUiO2JyZWFrIGV9Yj12b2lkIDB9ZWxzZSB6bj9WbihlLG4pJiYoYj0ib25Db21wb3NpdGlvbkVuZCIpOiJrZXlkb3duIj09PWUmJjIyOT09PW4ua2V5Q29kZSYmKGI9Im9uQ29tcG9zaXRpb25TdGFydCIpO2ImJihGbiYmImtvIiE9PW4ubG9jYWxlJiYoem58fCJvbkNvbXBvc2l0aW9uU3RhcnQiIT09Yj8ib25Db21wb3NpdGlvbkVuZCI9PT1iJiZ6biYmKHY9ZW4oKSk6KFh0PSJ2YWx1ZSJpbihadD1vKT9adC52YWx1ZTpadC50ZXh0Q29udGVudCx6bj0hMCkpLDA8KHk9cXIocixiKSkubGVuZ3RoJiYoYj1uZXcgd24oYixlLG51bGwsbixvKSxhLnB1c2goe2V2ZW50OmIsbGlzdGVuZXJzOnl9KSx2P2IuZGF0YT12Om51bGwhPT0odj1VbihuKSkmJihiLmRhdGE9dikpKSwodj1Ebj9mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlImNvbXBvc2l0aW9uZW5kIjpyZXR1cm4gVW4odCk7Y2FzZSJrZXlwcmVzcyI6cmV0dXJuIDMyIT09dC53aGljaD9udWxsOihCbj0hMCxqbik7Y2FzZSJ0ZXh0SW5wdXQiOnJldHVybihlPXQuZGF0YSk9PT1qbiYmQm4/bnVsbDplO2RlZmF1bHQ6cmV0dXJuIG51bGx9fShlLG4pOmZ1bmN0aW9uKGUsdCl7aWYoem4pcmV0dXJuImNvbXBvc2l0aW9uZW5kIj09PWV8fCFNbiYmVm4oZSx0KT8oZT1lbigpLEp0PVh0PVp0PW51bGwsem49ITEsZSk6bnVsbDtzd2l0Y2goZSl7Y2FzZSJwYXN0ZSI6ZGVmYXVsdDpyZXR1cm4gbnVsbDtjYXNlImtleXByZXNzIjppZighKHQuY3RybEtleXx8dC5hbHRLZXl8fHQubWV0YUtleSl8fHQuY3RybEtleSYmdC5hbHRLZXkpe2lmKHQuY2hhciYmMTx0LmNoYXIubGVuZ3RoKXJldHVybiB0LmNoYXI7aWYodC53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlImNvbXBvc2l0aW9uZW5kIjpyZXR1cm4gRm4mJiJrbyIhPT10LmxvY2FsZT9udWxsOnQuZGF0YX19KGUsbikpJiYoMDwocj1xcihyLCJvbkJlZm9yZUlucHV0IikpLmxlbmd0aCYmKG89bmV3IHduKCJvbkJlZm9yZUlucHV0IiwiYmVmb3JlaW5wdXQiLG51bGwsbixvKSxhLnB1c2goe2V2ZW50Om8sbGlzdGVuZXJzOnJ9KSxvLmRhdGE9dikpfWpyKGEsdCl9KX1mdW5jdGlvbiBZcihlLHQsbil7cmV0dXJue2luc3RhbmNlOmUsbGlzdGVuZXI6dCxjdXJyZW50VGFyZ2V0Om59fWZ1bmN0aW9uIHFyKGUsdCl7Zm9yKHZhciBuPXQrIkNhcHR1cmUiLHI9W107bnVsbCE9PWU7KXt2YXIgbz1lLGk9by5zdGF0ZU5vZGU7NT09PW8udGFnJiZudWxsIT09aSYmKG89aSxudWxsIT0oaT1MZShlLG4pKSYmci51bnNoaWZ0KFlyKGUsaSxvKSksbnVsbCE9KGk9TGUoZSx0KSkmJnIucHVzaChZcihlLGksbykpKSxlPWUucmV0dXJufXJldHVybiByfWZ1bmN0aW9uIFdyKGUpe2lmKG51bGw9PT1lKXJldHVybiBudWxsO2Rve2U9ZS5yZXR1cm59d2hpbGUoZSYmNSE9PWUudGFnKTtyZXR1cm4gZXx8bnVsbH1mdW5jdGlvbiBHcihlLHQsbixyLG8pe2Zvcih2YXIgaT10Ll9yZWFjdE5hbWUsYT1bXTtudWxsIT09biYmbiE9PXI7KXt2YXIgcz1uLGM9cy5hbHRlcm5hdGUsdT1zLnN0YXRlTm9kZTtpZihudWxsIT09YyYmYz09PXIpYnJlYWs7NT09PXMudGFnJiZudWxsIT09dSYmKHM9dSxvP251bGwhPShjPUxlKG4saSkpJiZhLnVuc2hpZnQoWXIobixjLHMpKTpvfHxudWxsIT0oYz1MZShuLGkpKSYmYS5wdXNoKFlyKG4sYyxzKSkpLG49bi5yZXR1cm59MCE9PWEubGVuZ3RoJiZlLnB1c2goe2V2ZW50OnQsbGlzdGVuZXJzOmF9KX12YXIgUXI9L1xyXG4/L2csS3I9L1x1MDAwMHxcdUZGRkQvZztmdW5jdGlvbiBacihlKXtyZXR1cm4oInN0cmluZyI9PXR5cGVvZiBlP2U6IiIrZSkucmVwbGFjZShRciwiXG4iKS5yZXBsYWNlKEtyLCIiKX1mdW5jdGlvbiBYcihlLHQsbil7aWYodD1acih0KSxacihlKSE9PXQmJm4pdGhyb3cgRXJyb3IoaSg0MjUpKX1mdW5jdGlvbiBKcigpe312YXIgZW89bnVsbCx0bz1udWxsO2Z1bmN0aW9uIG5vKGUsdCl7cmV0dXJuInRleHRhcmVhIj09PWV8fCJub3NjcmlwdCI9PT1lfHwic3RyaW5nIj09dHlwZW9mIHQuY2hpbGRyZW58fCJudW1iZXIiPT10eXBlb2YgdC5jaGlsZHJlbnx8Im9iamVjdCI9PXR5cGVvZiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT09dC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWx9dmFyIHJvPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6dm9pZCAwLG9vPSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMCxpbz0iZnVuY3Rpb24iPT10eXBlb2YgUHJvbWlzZT9Qcm9taXNlOnZvaWQgMCxhbz0iZnVuY3Rpb24iPT10eXBlb2YgcXVldWVNaWNyb3Rhc2s/cXVldWVNaWNyb3Rhc2s6dm9pZCAwIT09aW8/ZnVuY3Rpb24oZSl7cmV0dXJuIGlvLnJlc29sdmUobnVsbCkudGhlbihlKS5jYXRjaChzbyl9OnJvO2Z1bmN0aW9uIHNvKGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9ZnVuY3Rpb24gY28oZSx0KXt2YXIgbj10LHI9MDtkb3t2YXIgbz1uLm5leHRTaWJsaW5nO2lmKGUucmVtb3ZlQ2hpbGQobiksbyYmOD09PW8ubm9kZVR5cGUpaWYoIi8kIj09PShuPW8uZGF0YSkpe2lmKDA9PT1yKXJldHVybiBlLnJlbW92ZUNoaWxkKG8pLHZvaWQgenQodCk7ci0tfWVsc2UiJCIhPT1uJiYiJD8iIT09biYmIiQhIiE9PW58fHIrKztuPW99d2hpbGUobik7enQodCl9ZnVuY3Rpb24gdW8oZSl7Zm9yKDtudWxsIT1lO2U9ZS5uZXh0U2libGluZyl7dmFyIHQ9ZS5ub2RlVHlwZTtpZigxPT09dHx8Mz09PXQpYnJlYWs7aWYoOD09PXQpe2lmKCIkIj09PSh0PWUuZGF0YSl8fCIkISI9PT10fHwiJD8iPT09dClicmVhaztpZigiLyQiPT09dClyZXR1cm4gbnVsbH19cmV0dXJuIGV9ZnVuY3Rpb24gbG8oZSl7ZT1lLnByZXZpb3VzU2libGluZztmb3IodmFyIHQ9MDtlOyl7aWYoOD09PWUubm9kZVR5cGUpe3ZhciBuPWUuZGF0YTtpZigiJCI9PT1ufHwiJCEiPT09bnx8IiQ/Ij09PW4pe2lmKDA9PT10KXJldHVybiBlO3QtLX1lbHNlIi8kIj09PW4mJnQrK31lPWUucHJldmlvdXNTaWJsaW5nfXJldHVybiBudWxsfXZhciBmbz1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxwbz0iX19yZWFjdEZpYmVyJCIrZm8saG89Il9fcmVhY3RQcm9wcyQiK2ZvLG1vPSJfX3JlYWN0Q29udGFpbmVyJCIrZm8sZ289Il9fcmVhY3RFdmVudHMkIitmbyx5bz0iX19yZWFjdExpc3RlbmVycyQiK2ZvLHZvPSJfX3JlYWN0SGFuZGxlcyQiK2ZvO2Z1bmN0aW9uIGJvKGUpe3ZhciB0PWVbcG9dO2lmKHQpcmV0dXJuIHQ7Zm9yKHZhciBuPWUucGFyZW50Tm9kZTtuOyl7aWYodD1uW21vXXx8bltwb10pe2lmKG49dC5hbHRlcm5hdGUsbnVsbCE9PXQuY2hpbGR8fG51bGwhPT1uJiZudWxsIT09bi5jaGlsZClmb3IoZT1sbyhlKTtudWxsIT09ZTspe2lmKG49ZVtwb10pcmV0dXJuIG47ZT1sbyhlKX1yZXR1cm4gdH1uPShlPW4pLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gd28oZSl7cmV0dXJuIShlPWVbcG9dfHxlW21vXSl8fDUhPT1lLnRhZyYmNiE9PWUudGFnJiYxMyE9PWUudGFnJiYzIT09ZS50YWc/bnVsbDplfWZ1bmN0aW9uIF9vKGUpe2lmKDU9PT1lLnRhZ3x8Nj09PWUudGFnKXJldHVybiBlLnN0YXRlTm9kZTt0aHJvdyBFcnJvcihpKDMzKSl9ZnVuY3Rpb24gU28oZSl7cmV0dXJuIGVbaG9dfHxudWxsfXZhciBFbz1bXSxDbz0tMTtmdW5jdGlvbiBrbyhlKXtyZXR1cm57Y3VycmVudDplfX1mdW5jdGlvbiBBbyhlKXswPkNvfHwoZS5jdXJyZW50PUVvW0NvXSxFb1tDb109bnVsbCxDby0tKX1mdW5jdGlvbiBPbyhlLHQpe0NvKyssRW9bQ29dPWUuY3VycmVudCxlLmN1cnJlbnQ9dH12YXIgVG89e30seG89a28oVG8pLElvPWtvKCExKSxObz1UbztmdW5jdGlvbiBMbyhlLHQpe3ZhciBuPWUudHlwZS5jb250ZXh0VHlwZXM7aWYoIW4pcmV0dXJuIFRvO3ZhciByPWUuc3RhdGVOb2RlO2lmKHImJnIuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD09PXQpcmV0dXJuIHIuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ7dmFyIG8saT17fTtmb3IobyBpbiBuKWlbb109dFtvXTtyZXR1cm4gciYmKChlPWUuc3RhdGVOb2RlKS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PXQsZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1pKSxpfWZ1bmN0aW9uIFBvKGUpe3JldHVybiBudWxsIT0oZT1lLmNoaWxkQ29udGV4dFR5cGVzKX1mdW5jdGlvbiBNbygpe0FvKElvKSxBbyh4byl9ZnVuY3Rpb24gUm8oZSx0LG4pe2lmKHhvLmN1cnJlbnQhPT1Ubyl0aHJvdyBFcnJvcihpKDE2OCkpO09vKHhvLHQpLE9vKElvLG4pfWZ1bmN0aW9uIERvKGUsdCxuKXt2YXIgcj1lLnN0YXRlTm9kZTtpZih0PXQuY2hpbGRDb250ZXh0VHlwZXMsImZ1bmN0aW9uIiE9dHlwZW9mIHIuZ2V0Q2hpbGRDb250ZXh0KXJldHVybiBuO2Zvcih2YXIgbyBpbiByPXIuZ2V0Q2hpbGRDb250ZXh0KCkpaWYoIShvIGluIHQpKXRocm93IEVycm9yKGkoMTA4LEgoZSl8fCJVbmtub3duIixvKSk7cmV0dXJuIEYoe30sbixyKX1mdW5jdGlvbiBGbyhlKXtyZXR1cm4gZT0oZT1lLnN0YXRlTm9kZSkmJmUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHR8fFRvLE5vPXhvLmN1cnJlbnQsT28oeG8sZSksT28oSW8sSW8uY3VycmVudCksITB9ZnVuY3Rpb24gam8oZSx0LG4pe3ZhciByPWUuc3RhdGVOb2RlO2lmKCFyKXRocm93IEVycm9yKGkoMTY5KSk7bj8oZT1EbyhlLHQsTm8pLHIuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ9ZSxBbyhJbyksQW8oeG8pLE9vKHhvLGUpKTpBbyhJbyksT28oSW8sbil9dmFyIEJvPW51bGwsVm89ITEsVW89ITE7ZnVuY3Rpb24gem8oZSl7bnVsbD09PUJvP0JvPVtlXTpCby5wdXNoKGUpfWZ1bmN0aW9uIEhvKCl7aWYoIVVvJiZudWxsIT09Qm8pe1VvPSEwO3ZhciBlPTAsdD1idDt0cnl7dmFyIG49Qm87Zm9yKGJ0PTE7ZTxuLmxlbmd0aDtlKyspe3ZhciByPW5bZV07ZG97cj1yKCEwKX13aGlsZShudWxsIT09cil9Qm89bnVsbCxWbz0hMX1jYXRjaCh0KXt0aHJvdyBudWxsIT09Qm8mJihCbz1Cby5zbGljZShlKzEpKSxXZShKZSxIbyksdH1maW5hbGx5e2J0PXQsVW89ITF9fXJldHVybiBudWxsfXZhciAkbz1bXSxZbz0wLHFvPW51bGwsV289MCxHbz1bXSxRbz0wLEtvPW51bGwsWm89MSxYbz0iIjtmdW5jdGlvbiBKbyhlLHQpeyRvW1lvKytdPVdvLCRvW1lvKytdPXFvLHFvPWUsV289dH1mdW5jdGlvbiBlaShlLHQsbil7R29bUW8rK109Wm8sR29bUW8rK109WG8sR29bUW8rK109S28sS289ZTt2YXIgcj1abztlPVhvO3ZhciBvPTMyLWF0KHIpLTE7ciY9figxPDxvKSxuKz0xO3ZhciBpPTMyLWF0KHQpK287aWYoMzA8aSl7dmFyIGE9by1vJTU7aT0ociYoMTw8YSktMSkudG9TdHJpbmcoMzIpLHI+Pj1hLG8tPWEsWm89MTw8MzItYXQodCkrb3xuPDxvfHIsWG89aStlfWVsc2UgWm89MTw8aXxuPDxvfHIsWG89ZX1mdW5jdGlvbiB0aShlKXtudWxsIT09ZS5yZXR1cm4mJihKbyhlLDEpLGVpKGUsMSwwKSl9ZnVuY3Rpb24gbmkoZSl7Zm9yKDtlPT09cW87KXFvPSRvWy0tWW9dLCRvW1lvXT1udWxsLFdvPSRvWy0tWW9dLCRvW1lvXT1udWxsO2Zvcig7ZT09PUtvOylLbz1Hb1stLVFvXSxHb1tRb109bnVsbCxYbz1Hb1stLVFvXSxHb1tRb109bnVsbCxabz1Hb1stLVFvXSxHb1tRb109bnVsbH12YXIgcmk9bnVsbCxvaT1udWxsLGlpPSExLGFpPW51bGw7ZnVuY3Rpb24gc2koZSx0KXt2YXIgbj1OdSg1LG51bGwsbnVsbCwwKTtuLmVsZW1lbnRUeXBlPSJERUxFVEVEIixuLnN0YXRlTm9kZT10LG4ucmV0dXJuPWUsbnVsbD09PSh0PWUuZGVsZXRpb25zKT8oZS5kZWxldGlvbnM9W25dLGUuZmxhZ3N8PTE2KTp0LnB1c2gobil9ZnVuY3Rpb24gY2koZSx0KXtzd2l0Y2goZS50YWcpe2Nhc2UgNTp2YXIgbj1lLnR5cGU7cmV0dXJuIG51bGwhPT0odD0xIT09dC5ub2RlVHlwZXx8bi50b0xvd2VyQ2FzZSgpIT09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP251bGw6dCkmJihlLnN0YXRlTm9kZT10LHJpPWUsb2k9dW8odC5maXJzdENoaWxkKSwhMCk7Y2FzZSA2OnJldHVybiBudWxsIT09KHQ9IiI9PT1lLnBlbmRpbmdQcm9wc3x8MyE9PXQubm9kZVR5cGU/bnVsbDp0KSYmKGUuc3RhdGVOb2RlPXQscmk9ZSxvaT1udWxsLCEwKTtjYXNlIDEzOnJldHVybiBudWxsIT09KHQ9OCE9PXQubm9kZVR5cGU/bnVsbDp0KSYmKG49bnVsbCE9PUtvP3tpZDpabyxvdmVyZmxvdzpYb306bnVsbCxlLm1lbW9pemVkU3RhdGU9e2RlaHlkcmF0ZWQ6dCx0cmVlQ29udGV4dDpuLHJldHJ5TGFuZToxMDczNzQxODI0fSwobj1OdSgxOCxudWxsLG51bGwsMCkpLnN0YXRlTm9kZT10LG4ucmV0dXJuPWUsZS5jaGlsZD1uLHJpPWUsb2k9bnVsbCwhMCk7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gdWkoZSl7cmV0dXJuISghKDEmZS5tb2RlKXx8MTI4JmUuZmxhZ3MpfWZ1bmN0aW9uIGxpKGUpe2lmKGlpKXt2YXIgdD1vaTtpZih0KXt2YXIgbj10O2lmKCFjaShlLHQpKXtpZih1aShlKSl0aHJvdyBFcnJvcihpKDQxOCkpO3Q9dW8obi5uZXh0U2libGluZyk7dmFyIHI9cmk7dCYmY2koZSx0KT9zaShyLG4pOihlLmZsYWdzPS00MDk3JmUuZmxhZ3N8MixpaT0hMSxyaT1lKX19ZWxzZXtpZih1aShlKSl0aHJvdyBFcnJvcihpKDQxOCkpO2UuZmxhZ3M9LTQwOTcmZS5mbGFnc3wyLGlpPSExLHJpPWV9fX1mdW5jdGlvbiBkaShlKXtmb3IoZT1lLnJldHVybjtudWxsIT09ZSYmNSE9PWUudGFnJiYzIT09ZS50YWcmJjEzIT09ZS50YWc7KWU9ZS5yZXR1cm47cmk9ZX1mdW5jdGlvbiBmaShlKXtpZihlIT09cmkpcmV0dXJuITE7aWYoIWlpKXJldHVybiBkaShlKSxpaT0hMCwhMTt2YXIgdDtpZigodD0zIT09ZS50YWcpJiYhKHQ9NSE9PWUudGFnKSYmKHQ9ImhlYWQiIT09KHQ9ZS50eXBlKSYmImJvZHkiIT09dCYmIW5vKGUudHlwZSxlLm1lbW9pemVkUHJvcHMpKSx0JiYodD1vaSkpe2lmKHVpKGUpKXRocm93IHBpKCksRXJyb3IoaSg0MTgpKTtmb3IoO3Q7KXNpKGUsdCksdD11byh0Lm5leHRTaWJsaW5nKX1pZihkaShlKSwxMz09PWUudGFnKXtpZighKGU9bnVsbCE9PShlPWUubWVtb2l6ZWRTdGF0ZSk/ZS5kZWh5ZHJhdGVkOm51bGwpKXRocm93IEVycm9yKGkoMzE3KSk7ZTp7Zm9yKGU9ZS5uZXh0U2libGluZyx0PTA7ZTspe2lmKDg9PT1lLm5vZGVUeXBlKXt2YXIgbj1lLmRhdGE7aWYoIi8kIj09PW4pe2lmKDA9PT10KXtvaT11byhlLm5leHRTaWJsaW5nKTticmVhayBlfXQtLX1lbHNlIiQiIT09biYmIiQhIiE9PW4mJiIkPyIhPT1ufHx0Kyt9ZT1lLm5leHRTaWJsaW5nfW9pPW51bGx9fWVsc2Ugb2k9cmk/dW8oZS5zdGF0ZU5vZGUubmV4dFNpYmxpbmcpOm51bGw7cmV0dXJuITB9ZnVuY3Rpb24gcGkoKXtmb3IodmFyIGU9b2k7ZTspZT11byhlLm5leHRTaWJsaW5nKX1mdW5jdGlvbiBoaSgpe29pPXJpPW51bGwsaWk9ITF9ZnVuY3Rpb24gbWkoZSl7bnVsbD09PWFpP2FpPVtlXTphaS5wdXNoKGUpfXZhciBnaT13LlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnO2Z1bmN0aW9uIHlpKGUsdCxuKXtpZihudWxsIT09KGU9bi5yZWYpJiYiZnVuY3Rpb24iIT10eXBlb2YgZSYmIm9iamVjdCIhPXR5cGVvZiBlKXtpZihuLl9vd25lcil7aWYobj1uLl9vd25lcil7aWYoMSE9PW4udGFnKXRocm93IEVycm9yKGkoMzA5KSk7dmFyIHI9bi5zdGF0ZU5vZGV9aWYoIXIpdGhyb3cgRXJyb3IoaSgxNDcsZSkpO3ZhciBvPXIsYT0iIitlO3JldHVybiBudWxsIT09dCYmbnVsbCE9PXQucmVmJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5yZWYmJnQucmVmLl9zdHJpbmdSZWY9PT1hP3QucmVmOih0PWZ1bmN0aW9uKGUpe3ZhciB0PW8ucmVmcztudWxsPT09ZT9kZWxldGUgdFthXTp0W2FdPWV9LHQuX3N0cmluZ1JlZj1hLHQpfWlmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBFcnJvcihpKDI4NCkpO2lmKCFuLl9vd25lcil0aHJvdyBFcnJvcihpKDI5MCxlKSl9cmV0dXJuIGV9ZnVuY3Rpb24gdmkoZSx0KXt0aHJvdyBlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSxFcnJvcihpKDMxLCJbb2JqZWN0IE9iamVjdF0iPT09ZT8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyh0KS5qb2luKCIsICIpKyJ9IjplKSl9ZnVuY3Rpb24gYmkoZSl7cmV0dXJuKDAsZS5faW5pdCkoZS5fcGF5bG9hZCl9ZnVuY3Rpb24gd2koZSl7ZnVuY3Rpb24gdCh0LG4pe2lmKGUpe3ZhciByPXQuZGVsZXRpb25zO251bGw9PT1yPyh0LmRlbGV0aW9ucz1bbl0sdC5mbGFnc3w9MTYpOnIucHVzaChuKX19ZnVuY3Rpb24gbihuLHIpe2lmKCFlKXJldHVybiBudWxsO2Zvcig7bnVsbCE9PXI7KXQobixyKSxyPXIuc2libGluZztyZXR1cm4gbnVsbH1mdW5jdGlvbiByKGUsdCl7Zm9yKGU9bmV3IE1hcDtudWxsIT09dDspbnVsbCE9PXQua2V5P2Uuc2V0KHQua2V5LHQpOmUuc2V0KHQuaW5kZXgsdCksdD10LnNpYmxpbmc7cmV0dXJuIGV9ZnVuY3Rpb24gbyhlLHQpe3JldHVybihlPVB1KGUsdCkpLmluZGV4PTAsZS5zaWJsaW5nPW51bGwsZX1mdW5jdGlvbiBhKHQsbixyKXtyZXR1cm4gdC5pbmRleD1yLGU/bnVsbCE9PShyPXQuYWx0ZXJuYXRlKT8ocj1yLmluZGV4KTxuPyh0LmZsYWdzfD0yLG4pOnI6KHQuZmxhZ3N8PTIsbik6KHQuZmxhZ3N8PTEwNDg1NzYsbil9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gZSYmbnVsbD09PXQuYWx0ZXJuYXRlJiYodC5mbGFnc3w9MiksdH1mdW5jdGlvbiBjKGUsdCxuLHIpe3JldHVybiBudWxsPT09dHx8NiE9PXQudGFnPygodD1GdShuLGUubW9kZSxyKSkucmV0dXJuPWUsdCk6KCh0PW8odCxuKSkucmV0dXJuPWUsdCl9ZnVuY3Rpb24gdShlLHQsbixyKXt2YXIgaT1uLnR5cGU7cmV0dXJuIGk9PT1FP2QoZSx0LG4ucHJvcHMuY2hpbGRyZW4scixuLmtleSk6bnVsbCE9PXQmJih0LmVsZW1lbnRUeXBlPT09aXx8Im9iamVjdCI9PXR5cGVvZiBpJiZudWxsIT09aSYmaS4kJHR5cGVvZj09PUwmJmJpKGkpPT09dC50eXBlKT8oKHI9byh0LG4ucHJvcHMpKS5yZWY9eWkoZSx0LG4pLHIucmV0dXJuPWUscik6KChyPU11KG4udHlwZSxuLmtleSxuLnByb3BzLG51bGwsZS5tb2RlLHIpKS5yZWY9eWkoZSx0LG4pLHIucmV0dXJuPWUscil9ZnVuY3Rpb24gbChlLHQsbixyKXtyZXR1cm4gbnVsbD09PXR8fDQhPT10LnRhZ3x8dC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyE9PW4uY29udGFpbmVySW5mb3x8dC5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb24hPT1uLmltcGxlbWVudGF0aW9uPygodD1qdShuLGUubW9kZSxyKSkucmV0dXJuPWUsdCk6KCh0PW8odCxuLmNoaWxkcmVufHxbXSkpLnJldHVybj1lLHQpfWZ1bmN0aW9uIGQoZSx0LG4scixpKXtyZXR1cm4gbnVsbD09PXR8fDchPT10LnRhZz8oKHQ9UnUobixlLm1vZGUscixpKSkucmV0dXJuPWUsdCk6KCh0PW8odCxuKSkucmV0dXJuPWUsdCl9ZnVuY3Rpb24gZihlLHQsbil7aWYoInN0cmluZyI9PXR5cGVvZiB0JiYiIiE9PXR8fCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4odD1GdSgiIit0LGUubW9kZSxuKSkucmV0dXJuPWUsdDtpZigib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10KXtzd2l0Y2godC4kJHR5cGVvZil7Y2FzZSBfOnJldHVybihuPU11KHQudHlwZSx0LmtleSx0LnByb3BzLG51bGwsZS5tb2RlLG4pKS5yZWY9eWkoZSxudWxsLHQpLG4ucmV0dXJuPWUsbjtjYXNlIFM6cmV0dXJuKHQ9anUodCxlLm1vZGUsbikpLnJldHVybj1lLHQ7Y2FzZSBMOnJldHVybiBmKGUsKDAsdC5faW5pdCkodC5fcGF5bG9hZCksbil9aWYodGUodCl8fFIodCkpcmV0dXJuKHQ9UnUodCxlLm1vZGUsbixudWxsKSkucmV0dXJuPWUsdDt2aShlLHQpfXJldHVybiBudWxsfWZ1bmN0aW9uIHAoZSx0LG4scil7dmFyIG89bnVsbCE9PXQ/dC5rZXk6bnVsbDtpZigic3RyaW5nIj09dHlwZW9mIG4mJiIiIT09bnx8Im51bWJlciI9PXR5cGVvZiBuKXJldHVybiBudWxsIT09bz9udWxsOmMoZSx0LCIiK24scik7aWYoIm9iamVjdCI9PXR5cGVvZiBuJiZudWxsIT09bil7c3dpdGNoKG4uJCR0eXBlb2Ype2Nhc2UgXzpyZXR1cm4gbi5rZXk9PT1vP3UoZSx0LG4scik6bnVsbDtjYXNlIFM6cmV0dXJuIG4ua2V5PT09bz9sKGUsdCxuLHIpOm51bGw7Y2FzZSBMOnJldHVybiBwKGUsdCwobz1uLl9pbml0KShuLl9wYXlsb2FkKSxyKX1pZih0ZShuKXx8UihuKSlyZXR1cm4gbnVsbCE9PW8/bnVsbDpkKGUsdCxuLHIsbnVsbCk7dmkoZSxuKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBoKGUsdCxuLHIsbyl7aWYoInN0cmluZyI9PXR5cGVvZiByJiYiIiE9PXJ8fCJudW1iZXIiPT10eXBlb2YgcilyZXR1cm4gYyh0LGU9ZS5nZXQobil8fG51bGwsIiIrcixvKTtpZigib2JqZWN0Ij09dHlwZW9mIHImJm51bGwhPT1yKXtzd2l0Y2goci4kJHR5cGVvZil7Y2FzZSBfOnJldHVybiB1KHQsZT1lLmdldChudWxsPT09ci5rZXk/bjpyLmtleSl8fG51bGwscixvKTtjYXNlIFM6cmV0dXJuIGwodCxlPWUuZ2V0KG51bGw9PT1yLmtleT9uOnIua2V5KXx8bnVsbCxyLG8pO2Nhc2UgTDpyZXR1cm4gaChlLHQsbiwoMCxyLl9pbml0KShyLl9wYXlsb2FkKSxvKX1pZih0ZShyKXx8UihyKSlyZXR1cm4gZCh0LGU9ZS5nZXQobil8fG51bGwscixvLG51bGwpO3ZpKHQscil9cmV0dXJuIG51bGx9ZnVuY3Rpb24gbShvLGkscyxjKXtmb3IodmFyIHU9bnVsbCxsPW51bGwsZD1pLG09aT0wLGc9bnVsbDtudWxsIT09ZCYmbTxzLmxlbmd0aDttKyspe2QuaW5kZXg+bT8oZz1kLGQ9bnVsbCk6Zz1kLnNpYmxpbmc7dmFyIHk9cChvLGQsc1ttXSxjKTtpZihudWxsPT09eSl7bnVsbD09PWQmJihkPWcpO2JyZWFrfWUmJmQmJm51bGw9PT15LmFsdGVybmF0ZSYmdChvLGQpLGk9YSh5LGksbSksbnVsbD09PWw/dT15Omwuc2libGluZz15LGw9eSxkPWd9aWYobT09PXMubGVuZ3RoKXJldHVybiBuKG8sZCksaWkmJkpvKG8sbSksdTtpZihudWxsPT09ZCl7Zm9yKDttPHMubGVuZ3RoO20rKyludWxsIT09KGQ9ZihvLHNbbV0sYykpJiYoaT1hKGQsaSxtKSxudWxsPT09bD91PWQ6bC5zaWJsaW5nPWQsbD1kKTtyZXR1cm4gaWkmJkpvKG8sbSksdX1mb3IoZD1yKG8sZCk7bTxzLmxlbmd0aDttKyspbnVsbCE9PShnPWgoZCxvLG0sc1ttXSxjKSkmJihlJiZudWxsIT09Zy5hbHRlcm5hdGUmJmQuZGVsZXRlKG51bGw9PT1nLmtleT9tOmcua2V5KSxpPWEoZyxpLG0pLG51bGw9PT1sP3U9ZzpsLnNpYmxpbmc9ZyxsPWcpO3JldHVybiBlJiZkLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIHQobyxlKX0pLGlpJiZKbyhvLG0pLHV9ZnVuY3Rpb24gZyhvLHMsYyx1KXt2YXIgbD1SKGMpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBsKXRocm93IEVycm9yKGkoMTUwKSk7aWYobnVsbD09KGM9bC5jYWxsKGMpKSl0aHJvdyBFcnJvcihpKDE1MSkpO2Zvcih2YXIgZD1sPW51bGwsbT1zLGc9cz0wLHk9bnVsbCx2PWMubmV4dCgpO251bGwhPT1tJiYhdi5kb25lO2crKyx2PWMubmV4dCgpKXttLmluZGV4Pmc/KHk9bSxtPW51bGwpOnk9bS5zaWJsaW5nO3ZhciBiPXAobyxtLHYudmFsdWUsdSk7aWYobnVsbD09PWIpe251bGw9PT1tJiYobT15KTticmVha31lJiZtJiZudWxsPT09Yi5hbHRlcm5hdGUmJnQobyxtKSxzPWEoYixzLGcpLG51bGw9PT1kP2w9YjpkLnNpYmxpbmc9YixkPWIsbT15fWlmKHYuZG9uZSlyZXR1cm4gbihvLG0pLGlpJiZKbyhvLGcpLGw7aWYobnVsbD09PW0pe2Zvcig7IXYuZG9uZTtnKyssdj1jLm5leHQoKSludWxsIT09KHY9ZihvLHYudmFsdWUsdSkpJiYocz1hKHYscyxnKSxudWxsPT09ZD9sPXY6ZC5zaWJsaW5nPXYsZD12KTtyZXR1cm4gaWkmJkpvKG8sZyksbH1mb3IobT1yKG8sbSk7IXYuZG9uZTtnKyssdj1jLm5leHQoKSludWxsIT09KHY9aChtLG8sZyx2LnZhbHVlLHUpKSYmKGUmJm51bGwhPT12LmFsdGVybmF0ZSYmbS5kZWxldGUobnVsbD09PXYua2V5P2c6di5rZXkpLHM9YSh2LHMsZyksbnVsbD09PWQ/bD12OmQuc2libGluZz12LGQ9dik7cmV0dXJuIGUmJm0uZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdChvLGUpfSksaWkmJkpvKG8sZyksbH1yZXR1cm4gZnVuY3Rpb24gZShyLGksYSxjKXtpZigib2JqZWN0Ij09dHlwZW9mIGEmJm51bGwhPT1hJiZhLnR5cGU9PT1FJiZudWxsPT09YS5rZXkmJihhPWEucHJvcHMuY2hpbGRyZW4pLCJvYmplY3QiPT10eXBlb2YgYSYmbnVsbCE9PWEpe3N3aXRjaChhLiQkdHlwZW9mKXtjYXNlIF86ZTp7Zm9yKHZhciB1PWEua2V5LGw9aTtudWxsIT09bDspe2lmKGwua2V5PT09dSl7aWYoKHU9YS50eXBlKT09PUUpe2lmKDc9PT1sLnRhZyl7bihyLGwuc2libGluZyksKGk9byhsLGEucHJvcHMuY2hpbGRyZW4pKS5yZXR1cm49cixyPWk7YnJlYWsgZX19ZWxzZSBpZihsLmVsZW1lbnRUeXBlPT09dXx8Im9iamVjdCI9PXR5cGVvZiB1JiZudWxsIT09dSYmdS4kJHR5cGVvZj09PUwmJmJpKHUpPT09bC50eXBlKXtuKHIsbC5zaWJsaW5nKSwoaT1vKGwsYS5wcm9wcykpLnJlZj15aShyLGwsYSksaS5yZXR1cm49cixyPWk7YnJlYWsgZX1uKHIsbCk7YnJlYWt9dChyLGwpLGw9bC5zaWJsaW5nfWEudHlwZT09PUU/KChpPVJ1KGEucHJvcHMuY2hpbGRyZW4sci5tb2RlLGMsYS5rZXkpKS5yZXR1cm49cixyPWkpOigoYz1NdShhLnR5cGUsYS5rZXksYS5wcm9wcyxudWxsLHIubW9kZSxjKSkucmVmPXlpKHIsaSxhKSxjLnJldHVybj1yLHI9Yyl9cmV0dXJuIHMocik7Y2FzZSBTOmU6e2ZvcihsPWEua2V5O251bGwhPT1pOyl7aWYoaS5rZXk9PT1sKXtpZig0PT09aS50YWcmJmkuc3RhdGVOb2RlLmNvbnRhaW5lckluZm89PT1hLmNvbnRhaW5lckluZm8mJmkuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uPT09YS5pbXBsZW1lbnRhdGlvbil7bihyLGkuc2libGluZyksKGk9byhpLGEuY2hpbGRyZW58fFtdKSkucmV0dXJuPXIscj1pO2JyZWFrIGV9bihyLGkpO2JyZWFrfXQocixpKSxpPWkuc2libGluZ30oaT1qdShhLHIubW9kZSxjKSkucmV0dXJuPXIscj1pfXJldHVybiBzKHIpO2Nhc2UgTDpyZXR1cm4gZShyLGksKGw9YS5faW5pdCkoYS5fcGF5bG9hZCksYyl9aWYodGUoYSkpcmV0dXJuIG0ocixpLGEsYyk7aWYoUihhKSlyZXR1cm4gZyhyLGksYSxjKTt2aShyLGEpfXJldHVybiJzdHJpbmciPT10eXBlb2YgYSYmIiIhPT1hfHwibnVtYmVyIj09dHlwZW9mIGE/KGE9IiIrYSxudWxsIT09aSYmNj09PWkudGFnPyhuKHIsaS5zaWJsaW5nKSwoaT1vKGksYSkpLnJldHVybj1yLHI9aSk6KG4ocixpKSwoaT1GdShhLHIubW9kZSxjKSkucmV0dXJuPXIscj1pKSxzKHIpKTpuKHIsaSl9fXZhciBfaT13aSghMCksU2k9d2koITEpLEVpPWtvKG51bGwpLENpPW51bGwsa2k9bnVsbCxBaT1udWxsO2Z1bmN0aW9uIE9pKCl7QWk9a2k9Q2k9bnVsbH1mdW5jdGlvbiBUaShlKXt2YXIgdD1FaS5jdXJyZW50O0FvKEVpKSxlLl9jdXJyZW50VmFsdWU9dH1mdW5jdGlvbiB4aShlLHQsbil7Zm9yKDtudWxsIT09ZTspe3ZhciByPWUuYWx0ZXJuYXRlO2lmKChlLmNoaWxkTGFuZXMmdCkhPT10PyhlLmNoaWxkTGFuZXN8PXQsbnVsbCE9PXImJihyLmNoaWxkTGFuZXN8PXQpKTpudWxsIT09ciYmKHIuY2hpbGRMYW5lcyZ0KSE9PXQmJihyLmNoaWxkTGFuZXN8PXQpLGU9PT1uKWJyZWFrO2U9ZS5yZXR1cm59fWZ1bmN0aW9uIElpKGUsdCl7Q2k9ZSxBaT1raT1udWxsLG51bGwhPT0oZT1lLmRlcGVuZGVuY2llcykmJm51bGwhPT1lLmZpcnN0Q29udGV4dCYmKDAhPT0oZS5sYW5lcyZ0KSYmKGJzPSEwKSxlLmZpcnN0Q29udGV4dD1udWxsKX1mdW5jdGlvbiBOaShlKXt2YXIgdD1lLl9jdXJyZW50VmFsdWU7aWYoQWkhPT1lKWlmKGU9e2NvbnRleHQ6ZSxtZW1vaXplZFZhbHVlOnQsbmV4dDpudWxsfSxudWxsPT09a2kpe2lmKG51bGw9PT1DaSl0aHJvdyBFcnJvcihpKDMwOCkpO2tpPWUsQ2kuZGVwZW5kZW5jaWVzPXtsYW5lczowLGZpcnN0Q29udGV4dDplfX1lbHNlIGtpPWtpLm5leHQ9ZTtyZXR1cm4gdH12YXIgTGk9bnVsbDtmdW5jdGlvbiBQaShlKXtudWxsPT09TGk/TGk9W2VdOkxpLnB1c2goZSl9ZnVuY3Rpb24gTWkoZSx0LG4scil7dmFyIG89dC5pbnRlcmxlYXZlZDtyZXR1cm4gbnVsbD09PW8/KG4ubmV4dD1uLFBpKHQpKToobi5uZXh0PW8ubmV4dCxvLm5leHQ9biksdC5pbnRlcmxlYXZlZD1uLFJpKGUscil9ZnVuY3Rpb24gUmkoZSx0KXtlLmxhbmVzfD10O3ZhciBuPWUuYWx0ZXJuYXRlO2ZvcihudWxsIT09biYmKG4ubGFuZXN8PXQpLG49ZSxlPWUucmV0dXJuO251bGwhPT1lOyllLmNoaWxkTGFuZXN8PXQsbnVsbCE9PShuPWUuYWx0ZXJuYXRlKSYmKG4uY2hpbGRMYW5lc3w9dCksbj1lLGU9ZS5yZXR1cm47cmV0dXJuIDM9PT1uLnRhZz9uLnN0YXRlTm9kZTpudWxsfXZhciBEaT0hMTtmdW5jdGlvbiBGaShlKXtlLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6ZS5tZW1vaXplZFN0YXRlLGZpcnN0QmFzZVVwZGF0ZTpudWxsLGxhc3RCYXNlVXBkYXRlOm51bGwsc2hhcmVkOntwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowfSxlZmZlY3RzOm51bGx9fWZ1bmN0aW9uIGppKGUsdCl7ZT1lLnVwZGF0ZVF1ZXVlLHQudXBkYXRlUXVldWU9PT1lJiYodC51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmUuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTplLmZpcnN0QmFzZVVwZGF0ZSxsYXN0QmFzZVVwZGF0ZTplLmxhc3RCYXNlVXBkYXRlLHNoYXJlZDplLnNoYXJlZCxlZmZlY3RzOmUuZWZmZWN0c30pfWZ1bmN0aW9uIEJpKGUsdCl7cmV0dXJue2V2ZW50VGltZTplLGxhbmU6dCx0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9fWZ1bmN0aW9uIFZpKGUsdCxuKXt2YXIgcj1lLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1yKXJldHVybiBudWxsO2lmKHI9ci5zaGFyZWQsMiZUYyl7dmFyIG89ci5wZW5kaW5nO3JldHVybiBudWxsPT09bz90Lm5leHQ9dDoodC5uZXh0PW8ubmV4dCxvLm5leHQ9dCksci5wZW5kaW5nPXQsUmkoZSxuKX1yZXR1cm4gbnVsbD09PShvPXIuaW50ZXJsZWF2ZWQpPyh0Lm5leHQ9dCxQaShyKSk6KHQubmV4dD1vLm5leHQsby5uZXh0PXQpLHIuaW50ZXJsZWF2ZWQ9dCxSaShlLG4pfWZ1bmN0aW9uIFVpKGUsdCxuKXtpZihudWxsIT09KHQ9dC51cGRhdGVRdWV1ZSkmJih0PXQuc2hhcmVkLDQxOTQyNDAmbikpe3ZhciByPXQubGFuZXM7bnw9ciY9ZS5wZW5kaW5nTGFuZXMsdC5sYW5lcz1uLHZ0KGUsbil9fWZ1bmN0aW9uIHppKGUsdCl7dmFyIG49ZS51cGRhdGVRdWV1ZSxyPWUuYWx0ZXJuYXRlO2lmKG51bGwhPT1yJiZuPT09KHI9ci51cGRhdGVRdWV1ZSkpe3ZhciBvPW51bGwsaT1udWxsO2lmKG51bGwhPT0obj1uLmZpcnN0QmFzZVVwZGF0ZSkpe2Rve3ZhciBhPXtldmVudFRpbWU6bi5ldmVudFRpbWUsbGFuZTpuLmxhbmUsdGFnOm4udGFnLHBheWxvYWQ6bi5wYXlsb2FkLGNhbGxiYWNrOm4uY2FsbGJhY2ssbmV4dDpudWxsfTtudWxsPT09aT9vPWk9YTppPWkubmV4dD1hLG49bi5uZXh0fXdoaWxlKG51bGwhPT1uKTtudWxsPT09aT9vPWk9dDppPWkubmV4dD10fWVsc2Ugbz1pPXQ7cmV0dXJuIG49e2Jhc2VTdGF0ZTpyLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6byxsYXN0QmFzZVVwZGF0ZTppLHNoYXJlZDpyLnNoYXJlZCxlZmZlY3RzOnIuZWZmZWN0c30sdm9pZChlLnVwZGF0ZVF1ZXVlPW4pfW51bGw9PT0oZT1uLmxhc3RCYXNlVXBkYXRlKT9uLmZpcnN0QmFzZVVwZGF0ZT10OmUubmV4dD10LG4ubGFzdEJhc2VVcGRhdGU9dH1mdW5jdGlvbiBIaShlLHQsbixyKXt2YXIgbz1lLnVwZGF0ZVF1ZXVlO0RpPSExO3ZhciBpPW8uZmlyc3RCYXNlVXBkYXRlLGE9by5sYXN0QmFzZVVwZGF0ZSxzPW8uc2hhcmVkLnBlbmRpbmc7aWYobnVsbCE9PXMpe28uc2hhcmVkLnBlbmRpbmc9bnVsbDt2YXIgYz1zLHU9Yy5uZXh0O2MubmV4dD1udWxsLG51bGw9PT1hP2k9dTphLm5leHQ9dSxhPWM7dmFyIGw9ZS5hbHRlcm5hdGU7bnVsbCE9PWwmJigocz0obD1sLnVwZGF0ZVF1ZXVlKS5sYXN0QmFzZVVwZGF0ZSkhPT1hJiYobnVsbD09PXM/bC5maXJzdEJhc2VVcGRhdGU9dTpzLm5leHQ9dSxsLmxhc3RCYXNlVXBkYXRlPWMpKX1pZihudWxsIT09aSl7dmFyIGQ9by5iYXNlU3RhdGU7Zm9yKGE9MCxsPXU9Yz1udWxsLHM9aTs7KXt2YXIgZj1zLmxhbmUscD1zLmV2ZW50VGltZTtpZigociZmKT09PWYpe251bGwhPT1sJiYobD1sLm5leHQ9e2V2ZW50VGltZTpwLGxhbmU6MCx0YWc6cy50YWcscGF5bG9hZDpzLnBheWxvYWQsY2FsbGJhY2s6cy5jYWxsYmFjayxuZXh0Om51bGx9KTtlOnt2YXIgaD1lLG09cztzd2l0Y2goZj10LHA9bixtLnRhZyl7Y2FzZSAxOmlmKCJmdW5jdGlvbiI9PXR5cGVvZihoPW0ucGF5bG9hZCkpe2Q9aC5jYWxsKHAsZCxmKTticmVhayBlfWQ9aDticmVhayBlO2Nhc2UgMzpoLmZsYWdzPS02NTUzNyZoLmZsYWdzfDEyODtjYXNlIDA6aWYobnVsbD09KGY9ImZ1bmN0aW9uIj09dHlwZW9mKGg9bS5wYXlsb2FkKT9oLmNhbGwocCxkLGYpOmgpKWJyZWFrIGU7ZD1GKHt9LGQsZik7YnJlYWsgZTtjYXNlIDI6RGk9ITB9fW51bGwhPT1zLmNhbGxiYWNrJiYwIT09cy5sYW5lJiYoZS5mbGFnc3w9NjQsbnVsbD09PShmPW8uZWZmZWN0cyk/by5lZmZlY3RzPVtzXTpmLnB1c2gocykpfWVsc2UgcD17ZXZlbnRUaW1lOnAsbGFuZTpmLHRhZzpzLnRhZyxwYXlsb2FkOnMucGF5bG9hZCxjYWxsYmFjazpzLmNhbGxiYWNrLG5leHQ6bnVsbH0sbnVsbD09PWw/KHU9bD1wLGM9ZCk6bD1sLm5leHQ9cCxhfD1mO2lmKG51bGw9PT0ocz1zLm5leHQpKXtpZihudWxsPT09KHM9by5zaGFyZWQucGVuZGluZykpYnJlYWs7cz0oZj1zKS5uZXh0LGYubmV4dD1udWxsLG8ubGFzdEJhc2VVcGRhdGU9ZixvLnNoYXJlZC5wZW5kaW5nPW51bGx9fWlmKG51bGw9PT1sJiYoYz1kKSxvLmJhc2VTdGF0ZT1jLG8uZmlyc3RCYXNlVXBkYXRlPXUsby5sYXN0QmFzZVVwZGF0ZT1sLG51bGwhPT0odD1vLnNoYXJlZC5pbnRlcmxlYXZlZCkpe289dDtkb3thfD1vLmxhbmUsbz1vLm5leHR9d2hpbGUobyE9PXQpfWVsc2UgbnVsbD09PWkmJihvLnNoYXJlZC5sYW5lcz0wKTtEY3w9YSxlLmxhbmVzPWEsZS5tZW1vaXplZFN0YXRlPWR9fWZ1bmN0aW9uICRpKGUsdCxuKXtpZihlPXQuZWZmZWN0cyx0LmVmZmVjdHM9bnVsbCxudWxsIT09ZSlmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcj1lW3RdLG89ci5jYWxsYmFjaztpZihudWxsIT09byl7aWYoci5jYWxsYmFjaz1udWxsLHI9biwiZnVuY3Rpb24iIT10eXBlb2Ygbyl0aHJvdyBFcnJvcihpKDE5MSxvKSk7by5jYWxsKHIpfX19dmFyIFlpPXt9LHFpPWtvKFlpKSxXaT1rbyhZaSksR2k9a28oWWkpO2Z1bmN0aW9uIFFpKGUpe2lmKGU9PT1ZaSl0aHJvdyBFcnJvcihpKDE3NCkpO3JldHVybiBlfWZ1bmN0aW9uIEtpKGUsdCl7c3dpdGNoKE9vKEdpLHQpLE9vKFdpLGUpLE9vKHFpLFlpKSxlPXQubm9kZVR5cGUpe2Nhc2UgOTpjYXNlIDExOnQ9KHQ9dC5kb2N1bWVudEVsZW1lbnQpP3QubmFtZXNwYWNlVVJJOmNlKG51bGwsIiIpO2JyZWFrO2RlZmF1bHQ6dD1jZSh0PShlPTg9PT1lP3QucGFyZW50Tm9kZTp0KS5uYW1lc3BhY2VVUkl8fG51bGwsZT1lLnRhZ05hbWUpfUFvKHFpKSxPbyhxaSx0KX1mdW5jdGlvbiBaaSgpe0FvKHFpKSxBbyhXaSksQW8oR2kpfWZ1bmN0aW9uIFhpKGUpe1FpKEdpLmN1cnJlbnQpO3ZhciB0PVFpKHFpLmN1cnJlbnQpLG49Y2UodCxlLnR5cGUpO3QhPT1uJiYoT28oV2ksZSksT28ocWksbikpfWZ1bmN0aW9uIEppKGUpe1dpLmN1cnJlbnQ9PT1lJiYoQW8ocWkpLEFvKFdpKSl9dmFyIGVhPWtvKDApO2Z1bmN0aW9uIHRhKGUpe2Zvcih2YXIgdD1lO251bGwhPT10Oyl7aWYoMTM9PT10LnRhZyl7dmFyIG49dC5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1uJiYobnVsbD09PShuPW4uZGVoeWRyYXRlZCl8fCIkPyI9PT1uLmRhdGF8fCIkISI9PT1uLmRhdGEpKXJldHVybiB0fWVsc2UgaWYoMTk9PT10LnRhZyYmdm9pZCAwIT09dC5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyKXtpZigxMjgmdC5mbGFncylyZXR1cm4gdH1lbHNlIGlmKG51bGwhPT10LmNoaWxkKXt0LmNoaWxkLnJldHVybj10LHQ9dC5jaGlsZDtjb250aW51ZX1pZih0PT09ZSlicmVhaztmb3IoO251bGw9PT10LnNpYmxpbmc7KXtpZihudWxsPT09dC5yZXR1cm58fHQucmV0dXJuPT09ZSlyZXR1cm4gbnVsbDt0PXQucmV0dXJufXQuc2libGluZy5yZXR1cm49dC5yZXR1cm4sdD10LnNpYmxpbmd9cmV0dXJuIG51bGx9dmFyIG5hPVtdO2Z1bmN0aW9uIHJhKCl7Zm9yKHZhciBlPTA7ZTxuYS5sZW5ndGg7ZSsrKW5hW2VdLl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5PW51bGw7bmEubGVuZ3RoPTB9dmFyIG9hPXcuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixpYT13LlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLGFhPTAsc2E9bnVsbCxjYT1udWxsLHVhPW51bGwsbGE9ITEsZGE9ITEsZmE9MCxwYT0wO2Z1bmN0aW9uIGhhKCl7dGhyb3cgRXJyb3IoaSgzMjEpKX1mdW5jdGlvbiBtYShlLHQpe2lmKG51bGw9PT10KXJldHVybiExO2Zvcih2YXIgbj0wO248dC5sZW5ndGgmJm48ZS5sZW5ndGg7bisrKWlmKCFzcihlW25dLHRbbl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGdhKGUsdCxuLHIsbyxhKXtpZihhYT1hLHNhPXQsdC5tZW1vaXplZFN0YXRlPW51bGwsdC51cGRhdGVRdWV1ZT1udWxsLHQubGFuZXM9MCxvYS5jdXJyZW50PW51bGw9PT1lfHxudWxsPT09ZS5tZW1vaXplZFN0YXRlP0phOmVzLGU9bihyLG8pLGRhKXthPTA7ZG97aWYoZGE9ITEsZmE9MCwyNTw9YSl0aHJvdyBFcnJvcihpKDMwMSkpO2ErPTEsdWE9Y2E9bnVsbCx0LnVwZGF0ZVF1ZXVlPW51bGwsb2EuY3VycmVudD10cyxlPW4ocixvKX13aGlsZShkYSl9aWYob2EuY3VycmVudD1YYSx0PW51bGwhPT1jYSYmbnVsbCE9PWNhLm5leHQsYWE9MCx1YT1jYT1zYT1udWxsLGxhPSExLHQpdGhyb3cgRXJyb3IoaSgzMDApKTtyZXR1cm4gZX1mdW5jdGlvbiB5YSgpe3ZhciBlPTAhPT1mYTtyZXR1cm4gZmE9MCxlfWZ1bmN0aW9uIHZhKCl7dmFyIGU9e21lbW9pemVkU3RhdGU6bnVsbCxiYXNlU3RhdGU6bnVsbCxiYXNlUXVldWU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH07cmV0dXJuIG51bGw9PT11YT9zYS5tZW1vaXplZFN0YXRlPXVhPWU6dWE9dWEubmV4dD1lLHVhfWZ1bmN0aW9uIGJhKCl7aWYobnVsbD09PWNhKXt2YXIgZT1zYS5hbHRlcm5hdGU7ZT1udWxsIT09ZT9lLm1lbW9pemVkU3RhdGU6bnVsbH1lbHNlIGU9Y2EubmV4dDt2YXIgdD1udWxsPT09dWE/c2EubWVtb2l6ZWRTdGF0ZTp1YS5uZXh0O2lmKG51bGwhPT10KXVhPXQsY2E9ZTtlbHNle2lmKG51bGw9PT1lKXRocm93IEVycm9yKGkoMzEwKSk7ZT17bWVtb2l6ZWRTdGF0ZTooY2E9ZSkubWVtb2l6ZWRTdGF0ZSxiYXNlU3RhdGU6Y2EuYmFzZVN0YXRlLGJhc2VRdWV1ZTpjYS5iYXNlUXVldWUscXVldWU6Y2EucXVldWUsbmV4dDpudWxsfSxudWxsPT09dWE/c2EubWVtb2l6ZWRTdGF0ZT11YT1lOnVhPXVhLm5leHQ9ZX1yZXR1cm4gdWF9ZnVuY3Rpb24gd2EoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90KGUpOnR9ZnVuY3Rpb24gX2EoZSl7dmFyIHQ9YmEoKSxuPXQucXVldWU7aWYobnVsbD09PW4pdGhyb3cgRXJyb3IoaSgzMTEpKTtuLmxhc3RSZW5kZXJlZFJlZHVjZXI9ZTt2YXIgcj1jYSxvPXIuYmFzZVF1ZXVlLGE9bi5wZW5kaW5nO2lmKG51bGwhPT1hKXtpZihudWxsIT09byl7dmFyIHM9by5uZXh0O28ubmV4dD1hLm5leHQsYS5uZXh0PXN9ci5iYXNlUXVldWU9bz1hLG4ucGVuZGluZz1udWxsfWlmKG51bGwhPT1vKXthPW8ubmV4dCxyPXIuYmFzZVN0YXRlO3ZhciBjPXM9bnVsbCx1PW51bGwsbD1hO2Rve3ZhciBkPWwubGFuZTtpZigoYWEmZCk9PT1kKW51bGwhPT11JiYodT11Lm5leHQ9e2xhbmU6MCxhY3Rpb246bC5hY3Rpb24saGFzRWFnZXJTdGF0ZTpsLmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTpsLmVhZ2VyU3RhdGUsbmV4dDpudWxsfSkscj1sLmhhc0VhZ2VyU3RhdGU/bC5lYWdlclN0YXRlOmUocixsLmFjdGlvbik7ZWxzZXt2YXIgZj17bGFuZTpkLGFjdGlvbjpsLmFjdGlvbixoYXNFYWdlclN0YXRlOmwuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOmwuZWFnZXJTdGF0ZSxuZXh0Om51bGx9O251bGw9PT11PyhjPXU9ZixzPXIpOnU9dS5uZXh0PWYsc2EubGFuZXN8PWQsRGN8PWR9bD1sLm5leHR9d2hpbGUobnVsbCE9PWwmJmwhPT1hKTtudWxsPT09dT9zPXI6dS5uZXh0PWMsc3Iocix0Lm1lbW9pemVkU3RhdGUpfHwoYnM9ITApLHQubWVtb2l6ZWRTdGF0ZT1yLHQuYmFzZVN0YXRlPXMsdC5iYXNlUXVldWU9dSxuLmxhc3RSZW5kZXJlZFN0YXRlPXJ9aWYobnVsbCE9PShlPW4uaW50ZXJsZWF2ZWQpKXtvPWU7ZG97YT1vLmxhbmUsc2EubGFuZXN8PWEsRGN8PWEsbz1vLm5leHR9d2hpbGUobyE9PWUpfWVsc2UgbnVsbD09PW8mJihuLmxhbmVzPTApO3JldHVyblt0Lm1lbW9pemVkU3RhdGUsbi5kaXNwYXRjaF19ZnVuY3Rpb24gU2EoZSl7dmFyIHQ9YmEoKSxuPXQucXVldWU7aWYobnVsbD09PW4pdGhyb3cgRXJyb3IoaSgzMTEpKTtuLmxhc3RSZW5kZXJlZFJlZHVjZXI9ZTt2YXIgcj1uLmRpc3BhdGNoLG89bi5wZW5kaW5nLGE9dC5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1vKXtuLnBlbmRpbmc9bnVsbDt2YXIgcz1vPW8ubmV4dDtkb3thPWUoYSxzLmFjdGlvbikscz1zLm5leHR9d2hpbGUocyE9PW8pO3NyKGEsdC5tZW1vaXplZFN0YXRlKXx8KGJzPSEwKSx0Lm1lbW9pemVkU3RhdGU9YSxudWxsPT09dC5iYXNlUXVldWUmJih0LmJhc2VTdGF0ZT1hKSxuLmxhc3RSZW5kZXJlZFN0YXRlPWF9cmV0dXJuW2Escl19ZnVuY3Rpb24gRWEoKXt9ZnVuY3Rpb24gQ2EoZSx0KXt2YXIgbj1zYSxyPWJhKCksbz10KCksYT0hc3Ioci5tZW1vaXplZFN0YXRlLG8pO2lmKGEmJihyLm1lbW9pemVkU3RhdGU9byxicz0hMCkscj1yLnF1ZXVlLERhKE9hLmJpbmQobnVsbCxuLHIsZSksW2VdKSxyLmdldFNuYXBzaG90IT09dHx8YXx8bnVsbCE9PXVhJiYxJnVhLm1lbW9pemVkU3RhdGUudGFnKXtpZihuLmZsYWdzfD0yMDQ4LE5hKDksQWEuYmluZChudWxsLG4scixvLHQpLHZvaWQgMCxudWxsKSxudWxsPT09eGMpdGhyb3cgRXJyb3IoaSgzNDkpKTszMCZhYXx8a2Eobix0LG8pfXJldHVybiBvfWZ1bmN0aW9uIGthKGUsdCxuKXtlLmZsYWdzfD0xNjM4NCxlPXtnZXRTbmFwc2hvdDp0LHZhbHVlOm59LG51bGw9PT0odD1zYS51cGRhdGVRdWV1ZSk/KHQ9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0sc2EudXBkYXRlUXVldWU9dCx0LnN0b3Jlcz1bZV0pOm51bGw9PT0obj10LnN0b3Jlcyk/dC5zdG9yZXM9W2VdOm4ucHVzaChlKX1mdW5jdGlvbiBBYShlLHQsbixyKXt0LnZhbHVlPW4sdC5nZXRTbmFwc2hvdD1yLFRhKHQpJiZ4YShlKX1mdW5jdGlvbiBPYShlLHQsbil7cmV0dXJuIG4oZnVuY3Rpb24oKXtUYSh0KSYmeGEoZSl9KX1mdW5jdGlvbiBUYShlKXt2YXIgdD1lLmdldFNuYXBzaG90O2U9ZS52YWx1ZTt0cnl7dmFyIG49dCgpO3JldHVybiFzcihlLG4pfWNhdGNoKGUpe3JldHVybiEwfX1mdW5jdGlvbiB4YShlKXt2YXIgdD1SaShlLDEpO251bGwhPT10JiZudSh0LGUsMSwtMSl9ZnVuY3Rpb24gSWEoZSl7dmFyIHQ9dmEoKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmKGU9ZSgpKSx0Lm1lbW9pemVkU3RhdGU9dC5iYXNlU3RhdGU9ZSxlPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjp3YSxsYXN0UmVuZGVyZWRTdGF0ZTplfSx0LnF1ZXVlPWUsZT1lLmRpc3BhdGNoPUdhLmJpbmQobnVsbCxzYSxlKSxbdC5tZW1vaXplZFN0YXRlLGVdfWZ1bmN0aW9uIE5hKGUsdCxuLHIpe3JldHVybiBlPXt0YWc6ZSxjcmVhdGU6dCxkZXN0cm95Om4sZGVwczpyLG5leHQ6bnVsbH0sbnVsbD09PSh0PXNhLnVwZGF0ZVF1ZXVlKT8odD17bGFzdEVmZmVjdDpudWxsLHN0b3JlczpudWxsfSxzYS51cGRhdGVRdWV1ZT10LHQubGFzdEVmZmVjdD1lLm5leHQ9ZSk6bnVsbD09PShuPXQubGFzdEVmZmVjdCk/dC5sYXN0RWZmZWN0PWUubmV4dD1lOihyPW4ubmV4dCxuLm5leHQ9ZSxlLm5leHQ9cix0Lmxhc3RFZmZlY3Q9ZSksZX1mdW5jdGlvbiBMYSgpe3JldHVybiBiYSgpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gUGEoZSx0LG4scil7dmFyIG89dmEoKTtzYS5mbGFnc3w9ZSxvLm1lbW9pemVkU3RhdGU9TmEoMXx0LG4sdm9pZCAwLHZvaWQgMD09PXI/bnVsbDpyKX1mdW5jdGlvbiBNYShlLHQsbixyKXt2YXIgbz1iYSgpO3I9dm9pZCAwPT09cj9udWxsOnI7dmFyIGk9dm9pZCAwO2lmKG51bGwhPT1jYSl7dmFyIGE9Y2EubWVtb2l6ZWRTdGF0ZTtpZihpPWEuZGVzdHJveSxudWxsIT09ciYmbWEocixhLmRlcHMpKXJldHVybiB2b2lkKG8ubWVtb2l6ZWRTdGF0ZT1OYSh0LG4saSxyKSl9c2EuZmxhZ3N8PWUsby5tZW1vaXplZFN0YXRlPU5hKDF8dCxuLGkscil9ZnVuY3Rpb24gUmEoZSx0KXtyZXR1cm4gUGEoODM5MDY1Niw4LGUsdCl9ZnVuY3Rpb24gRGEoZSx0KXtyZXR1cm4gTWEoMjA0OCw4LGUsdCl9ZnVuY3Rpb24gRmEoZSx0KXtyZXR1cm4gTWEoNCwyLGUsdCl9ZnVuY3Rpb24gamEoZSx0KXtyZXR1cm4gTWEoNCw0LGUsdCl9ZnVuY3Rpb24gQmEoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD8oZT1lKCksdChlKSxmdW5jdGlvbigpe3QobnVsbCl9KTpudWxsIT10PyhlPWUoKSx0LmN1cnJlbnQ9ZSxmdW5jdGlvbigpe3QuY3VycmVudD1udWxsfSk6dm9pZCAwfWZ1bmN0aW9uIFZhKGUsdCxuKXtyZXR1cm4gbj1udWxsIT1uP24uY29uY2F0KFtlXSk6bnVsbCxNYSg0LDQsQmEuYmluZChudWxsLHQsZSksbil9ZnVuY3Rpb24gVWEoKXt9ZnVuY3Rpb24gemEoZSx0KXt2YXIgbj1iYSgpO3Q9dm9pZCAwPT09dD9udWxsOnQ7dmFyIHI9bi5tZW1vaXplZFN0YXRlO3JldHVybiBudWxsIT09ciYmbnVsbCE9PXQmJm1hKHQsclsxXSk/clswXToobi5tZW1vaXplZFN0YXRlPVtlLHRdLGUpfWZ1bmN0aW9uIEhhKGUsdCl7dmFyIG49YmEoKTt0PXZvaWQgMD09PXQ/bnVsbDp0O3ZhciByPW4ubWVtb2l6ZWRTdGF0ZTtyZXR1cm4gbnVsbCE9PXImJm51bGwhPT10JiZtYSh0LHJbMV0pP3JbMF06KGU9ZSgpLG4ubWVtb2l6ZWRTdGF0ZT1bZSx0XSxlKX1mdW5jdGlvbiAkYShlLHQsbil7cmV0dXJuIDIxJmFhPyhzcihuLHQpfHwobj1tdCgpLHNhLmxhbmVzfD1uLERjfD1uLGUuYmFzZVN0YXRlPSEwKSx0KTooZS5iYXNlU3RhdGUmJihlLmJhc2VTdGF0ZT0hMSxicz0hMCksZS5tZW1vaXplZFN0YXRlPW4pfWZ1bmN0aW9uIFlhKGUsdCl7dmFyIG49YnQ7YnQ9MCE9PW4mJjQ+bj9uOjQsZSghMCk7dmFyIHI9aWEudHJhbnNpdGlvbjtpYS50cmFuc2l0aW9uPXt9O3RyeXtlKCExKSx0KCl9ZmluYWxseXtidD1uLGlhLnRyYW5zaXRpb249cn19ZnVuY3Rpb24gcWEoKXtyZXR1cm4gYmEoKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIFdhKGUsdCxuKXt2YXIgcj10dShlKTtpZihuPXtsYW5lOnIsYWN0aW9uOm4saGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfSxRYShlKSlLYSh0LG4pO2Vsc2UgaWYobnVsbCE9PShuPU1pKGUsdCxuLHIpKSl7bnUobixlLHIsZXUoKSksWmEobix0LHIpfX1mdW5jdGlvbiBHYShlLHQsbil7dmFyIHI9dHUoZSksbz17bGFuZTpyLGFjdGlvbjpuLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH07aWYoUWEoZSkpS2EodCxvKTtlbHNle3ZhciBpPWUuYWx0ZXJuYXRlO2lmKDA9PT1lLmxhbmVzJiYobnVsbD09PWl8fDA9PT1pLmxhbmVzKSYmbnVsbCE9PShpPXQubGFzdFJlbmRlcmVkUmVkdWNlcikpdHJ5e3ZhciBhPXQubGFzdFJlbmRlcmVkU3RhdGUscz1pKGEsbik7aWYoby5oYXNFYWdlclN0YXRlPSEwLG8uZWFnZXJTdGF0ZT1zLHNyKHMsYSkpe3ZhciBjPXQuaW50ZXJsZWF2ZWQ7cmV0dXJuIG51bGw9PT1jPyhvLm5leHQ9byxQaSh0KSk6KG8ubmV4dD1jLm5leHQsYy5uZXh0PW8pLHZvaWQodC5pbnRlcmxlYXZlZD1vKX19Y2F0Y2goZSl7fW51bGwhPT0obj1NaShlLHQsbyxyKSkmJihudShuLGUscixvPWV1KCkpLFphKG4sdCxyKSl9fWZ1bmN0aW9uIFFhKGUpe3ZhciB0PWUuYWx0ZXJuYXRlO3JldHVybiBlPT09c2F8fG51bGwhPT10JiZ0PT09c2F9ZnVuY3Rpb24gS2EoZSx0KXtkYT1sYT0hMDt2YXIgbj1lLnBlbmRpbmc7bnVsbD09PW4/dC5uZXh0PXQ6KHQubmV4dD1uLm5leHQsbi5uZXh0PXQpLGUucGVuZGluZz10fWZ1bmN0aW9uIFphKGUsdCxuKXtpZig0MTk0MjQwJm4pe3ZhciByPXQubGFuZXM7bnw9ciY9ZS5wZW5kaW5nTGFuZXMsdC5sYW5lcz1uLHZ0KGUsbil9fXZhciBYYT17cmVhZENvbnRleHQ6TmksdXNlQ2FsbGJhY2s6aGEsdXNlQ29udGV4dDpoYSx1c2VFZmZlY3Q6aGEsdXNlSW1wZXJhdGl2ZUhhbmRsZTpoYSx1c2VJbnNlcnRpb25FZmZlY3Q6aGEsdXNlTGF5b3V0RWZmZWN0OmhhLHVzZU1lbW86aGEsdXNlUmVkdWNlcjpoYSx1c2VSZWY6aGEsdXNlU3RhdGU6aGEsdXNlRGVidWdWYWx1ZTpoYSx1c2VEZWZlcnJlZFZhbHVlOmhhLHVzZVRyYW5zaXRpb246aGEsdXNlTXV0YWJsZVNvdXJjZTpoYSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpoYSx1c2VJZDpoYSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LEphPXtyZWFkQ29udGV4dDpOaSx1c2VDYWxsYmFjazpmdW5jdGlvbihlLHQpe3JldHVybiB2YSgpLm1lbW9pemVkU3RhdGU9W2Usdm9pZCAwPT09dD9udWxsOnRdLGV9LHVzZUNvbnRleHQ6TmksdXNlRWZmZWN0OlJhLHVzZUltcGVyYXRpdmVIYW5kbGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuPW51bGwhPW4/bi5jb25jYXQoW2VdKTpudWxsLFBhKDQxOTQzMDgsNCxCYS5iaW5kKG51bGwsdCxlKSxuKX0sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFBhKDQxOTQzMDgsNCxlLHQpfSx1c2VJbnNlcnRpb25FZmZlY3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUGEoNCwyLGUsdCl9LHVzZU1lbW86ZnVuY3Rpb24oZSx0KXt2YXIgbj12YSgpO3JldHVybiB0PXZvaWQgMD09PXQ/bnVsbDp0LGU9ZSgpLG4ubWVtb2l6ZWRTdGF0ZT1bZSx0XSxlfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj12YSgpO3JldHVybiB0PXZvaWQgMCE9PW4/bih0KTp0LHIubWVtb2l6ZWRTdGF0ZT1yLmJhc2VTdGF0ZT10LGU9e3BlbmRpbmc6bnVsbCxpbnRlcmxlYXZlZDpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmUsbGFzdFJlbmRlcmVkU3RhdGU6dH0sci5xdWV1ZT1lLGU9ZS5kaXNwYXRjaD1XYS5iaW5kKG51bGwsc2EsZSksW3IubWVtb2l6ZWRTdGF0ZSxlXX0sdXNlUmVmOmZ1bmN0aW9uKGUpe3JldHVybiBlPXtjdXJyZW50OmV9LHZhKCkubWVtb2l6ZWRTdGF0ZT1lfSx1c2VTdGF0ZTpJYSx1c2VEZWJ1Z1ZhbHVlOlVhLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHZhKCkubWVtb2l6ZWRTdGF0ZT1lfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9SWEoITEpLHQ9ZVswXTtyZXR1cm4gZT1ZYS5iaW5kKG51bGwsZVsxXSksdmEoKS5tZW1vaXplZFN0YXRlPWUsW3QsZV19LHVzZU11dGFibGVTb3VyY2U6ZnVuY3Rpb24oKXt9LHVzZVN5bmNFeHRlcm5hbFN0b3JlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1zYSxvPXZhKCk7aWYoaWkpe2lmKHZvaWQgMD09PW4pdGhyb3cgRXJyb3IoaSg0MDcpKTtuPW4oKX1lbHNle2lmKG49dCgpLG51bGw9PT14Yyl0aHJvdyBFcnJvcihpKDM0OSkpOzMwJmFhfHxrYShyLHQsbil9by5tZW1vaXplZFN0YXRlPW47dmFyIGE9e3ZhbHVlOm4sZ2V0U25hcHNob3Q6dH07cmV0dXJuIG8ucXVldWU9YSxSYShPYS5iaW5kKG51bGwscixhLGUpLFtlXSksci5mbGFnc3w9MjA0OCxOYSg5LEFhLmJpbmQobnVsbCxyLGEsbix0KSx2b2lkIDAsbnVsbCksbn0sdXNlSWQ6ZnVuY3Rpb24oKXt2YXIgZT12YSgpLHQ9eGMuaWRlbnRpZmllclByZWZpeDtpZihpaSl7dmFyIG49WG87dD0iOiIrdCsiUiIrKG49KFpvJn4oMTw8MzItYXQoWm8pLTEpKS50b1N0cmluZygzMikrbiksMDwobj1mYSsrKSYmKHQrPSJIIituLnRvU3RyaW5nKDMyKSksdCs9IjoifWVsc2UgdD0iOiIrdCsiciIrKG49cGErKykudG9TdHJpbmcoMzIpKyI6IjtyZXR1cm4gZS5tZW1vaXplZFN0YXRlPXR9LHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sZXM9e3JlYWRDb250ZXh0Ok5pLHVzZUNhbGxiYWNrOnphLHVzZUNvbnRleHQ6TmksdXNlRWZmZWN0OkRhLHVzZUltcGVyYXRpdmVIYW5kbGU6VmEsdXNlSW5zZXJ0aW9uRWZmZWN0OkZhLHVzZUxheW91dEVmZmVjdDpqYSx1c2VNZW1vOkhhLHVzZVJlZHVjZXI6X2EsdXNlUmVmOkxhLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIF9hKHdhKX0sdXNlRGVidWdWYWx1ZTpVYSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiAkYShiYSgpLGNhLm1lbW9pemVkU3RhdGUsZSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm5bX2Eod2EpWzBdLGJhKCkubWVtb2l6ZWRTdGF0ZV19LHVzZU11dGFibGVTb3VyY2U6RWEsdXNlU3luY0V4dGVybmFsU3RvcmU6Q2EsdXNlSWQ6cWEsdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSx0cz17cmVhZENvbnRleHQ6TmksdXNlQ2FsbGJhY2s6emEsdXNlQ29udGV4dDpOaSx1c2VFZmZlY3Q6RGEsdXNlSW1wZXJhdGl2ZUhhbmRsZTpWYSx1c2VJbnNlcnRpb25FZmZlY3Q6RmEsdXNlTGF5b3V0RWZmZWN0OmphLHVzZU1lbW86SGEsdXNlUmVkdWNlcjpTYSx1c2VSZWY6TGEsdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gU2Eod2EpfSx1c2VEZWJ1Z1ZhbHVlOlVhLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YmEoKTtyZXR1cm4gbnVsbD09PWNhP3QubWVtb2l6ZWRTdGF0ZT1lOiRhKHQsY2EubWVtb2l6ZWRTdGF0ZSxlKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3JldHVybltTYSh3YSlbMF0sYmEoKS5tZW1vaXplZFN0YXRlXX0sdXNlTXV0YWJsZVNvdXJjZTpFYSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpDYSx1c2VJZDpxYSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9O2Z1bmN0aW9uIG5zKGUsdCl7aWYoZSYmZS5kZWZhdWx0UHJvcHMpe2Zvcih2YXIgbiBpbiB0PUYoe30sdCksZT1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT10W25dJiYodFtuXT1lW25dKTtyZXR1cm4gdH1yZXR1cm4gdH1mdW5jdGlvbiBycyhlLHQsbixyKXtuPW51bGw9PShuPW4ocix0PWUubWVtb2l6ZWRTdGF0ZSkpP3Q6Rih7fSx0LG4pLGUubWVtb2l6ZWRTdGF0ZT1uLDA9PT1lLmxhbmVzJiYoZS51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9bil9dmFyIG9zPXtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuISEoZT1lLl9yZWFjdEludGVybmFscykmJnplKGUpPT09ZX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCxuKXtlPWUuX3JlYWN0SW50ZXJuYWxzO3ZhciByPWV1KCksbz10dShlKSxpPUJpKHIsbyk7aS5wYXlsb2FkPXQsbnVsbCE9biYmKGkuY2FsbGJhY2s9biksbnVsbCE9PSh0PVZpKGUsaSxvKSkmJihudSh0LGUsbyxyKSxVaSh0LGUsbykpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCxuKXtlPWUuX3JlYWN0SW50ZXJuYWxzO3ZhciByPWV1KCksbz10dShlKSxpPUJpKHIsbyk7aS50YWc9MSxpLnBheWxvYWQ9dCxudWxsIT1uJiYoaS5jYWxsYmFjaz1uKSxudWxsIT09KHQ9VmkoZSxpLG8pKSYmKG51KHQsZSxvLHIpLFVpKHQsZSxvKSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihlLHQpe2U9ZS5fcmVhY3RJbnRlcm5hbHM7dmFyIG49ZXUoKSxyPXR1KGUpLG89QmkobixyKTtvLnRhZz0yLG51bGwhPXQmJihvLmNhbGxiYWNrPXQpLG51bGwhPT0odD1WaShlLG8scikpJiYobnUodCxlLHIsbiksVWkodCxlLHIpKX19O2Z1bmN0aW9uIGlzKGUsdCxuLHIsbyxpLGEpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZihlPWUuc3RhdGVOb2RlKS5zaG91bGRDb21wb25lbnRVcGRhdGU/ZS5zaG91bGRDb21wb25lbnRVcGRhdGUocixpLGEpOiF0LnByb3RvdHlwZXx8IXQucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50fHwoIWNyKG4scil8fCFjcihvLGkpKX1mdW5jdGlvbiBhcyhlLHQsbil7dmFyIHI9ITEsbz1UbyxpPXQuY29udGV4dFR5cGU7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBpJiZudWxsIT09aT9pPU5pKGkpOihvPVBvKHQpP05vOnhvLmN1cnJlbnQsaT0ocj1udWxsIT0ocj10LmNvbnRleHRUeXBlcykpP0xvKGUsbyk6VG8pLHQ9bmV3IHQobixpKSxlLm1lbW9pemVkU3RhdGU9bnVsbCE9PXQuc3RhdGUmJnZvaWQgMCE9PXQuc3RhdGU/dC5zdGF0ZTpudWxsLHQudXBkYXRlcj1vcyxlLnN0YXRlTm9kZT10LHQuX3JlYWN0SW50ZXJuYWxzPWUsciYmKChlPWUuc3RhdGVOb2RlKS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PW8sZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1pKSx0fWZ1bmN0aW9uIHNzKGUsdCxuLHIpe2U9dC5zdGF0ZSwiZnVuY3Rpb24iPT10eXBlb2YgdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZ0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobixyKSwiZnVuY3Rpb24iPT10eXBlb2YgdC5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmdC5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuLHIpLHQuc3RhdGUhPT1lJiZvcy5lbnF1ZXVlUmVwbGFjZVN0YXRlKHQsdC5zdGF0ZSxudWxsKX1mdW5jdGlvbiBjcyhlLHQsbixyKXt2YXIgbz1lLnN0YXRlTm9kZTtvLnByb3BzPW4sby5zdGF0ZT1lLm1lbW9pemVkU3RhdGUsby5yZWZzPXt9LEZpKGUpO3ZhciBpPXQuY29udGV4dFR5cGU7Im9iamVjdCI9PXR5cGVvZiBpJiZudWxsIT09aT9vLmNvbnRleHQ9TmkoaSk6KGk9UG8odCk/Tm86eG8uY3VycmVudCxvLmNvbnRleHQ9TG8oZSxpKSksby5zdGF0ZT1lLm1lbW9pemVkU3RhdGUsImZ1bmN0aW9uIj09dHlwZW9mKGk9dC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMpJiYocnMoZSx0LGksbiksby5zdGF0ZT1lLm1lbW9pemVkU3RhdGUpLCJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc3x8ImZ1bmN0aW9uIj09dHlwZW9mIG8uZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fCJmdW5jdGlvbiIhPXR5cGVvZiBvLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJiJmdW5jdGlvbiIhPXR5cGVvZiBvLmNvbXBvbmVudFdpbGxNb3VudHx8KHQ9by5zdGF0ZSwiZnVuY3Rpb24iPT10eXBlb2Ygby5jb21wb25lbnRXaWxsTW91bnQmJm8uY29tcG9uZW50V2lsbE1vdW50KCksImZ1bmN0aW9uIj09dHlwZW9mIG8uVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmby5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksdCE9PW8uc3RhdGUmJm9zLmVucXVldWVSZXBsYWNlU3RhdGUobyxvLnN0YXRlLG51bGwpLEhpKGUsbixvLHIpLG8uc3RhdGU9ZS5tZW1vaXplZFN0YXRlKSwiZnVuY3Rpb24iPT10eXBlb2Ygby5jb21wb25lbnREaWRNb3VudCYmKGUuZmxhZ3N8PTQxOTQzMDgpfWZ1bmN0aW9uIHVzKGUsdCl7dHJ5e3ZhciBuPSIiLHI9dDtkb3tuKz1VKHIpLHI9ci5yZXR1cm59d2hpbGUocik7dmFyIG89bn1jYXRjaChlKXtvPSJcbkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6ICIrZS5tZXNzYWdlKyJcbiIrZS5zdGFja31yZXR1cm57dmFsdWU6ZSxzb3VyY2U6dCxzdGFjazpvLGRpZ2VzdDpudWxsfX1mdW5jdGlvbiBscyhlLHQsbil7cmV0dXJue3ZhbHVlOmUsc291cmNlOm51bGwsc3RhY2s6bnVsbCE9bj9uOm51bGwsZGlnZXN0Om51bGwhPXQ/dDpudWxsfX1mdW5jdGlvbiBkcyhlLHQpe3RyeXtjb25zb2xlLmVycm9yKHQudmFsdWUpfWNhdGNoKGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9fXZhciBmcz0iZnVuY3Rpb24iPT10eXBlb2YgV2Vha01hcD9XZWFrTWFwOk1hcDtmdW5jdGlvbiBwcyhlLHQsbil7KG49QmkoLTEsbikpLnRhZz0zLG4ucGF5bG9hZD17ZWxlbWVudDpudWxsfTt2YXIgcj10LnZhbHVlO3JldHVybiBuLmNhbGxiYWNrPWZ1bmN0aW9uKCl7JGN8fCgkYz0hMCxZYz1yKSxkcygwLHQpfSxufWZ1bmN0aW9uIGhzKGUsdCxuKXsobj1CaSgtMSxuKSkudGFnPTM7dmFyIHI9ZS50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjtpZigiZnVuY3Rpb24iPT10eXBlb2Ygcil7dmFyIG89dC52YWx1ZTtuLnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gcihvKX0sbi5jYWxsYmFjaz1mdW5jdGlvbigpe2RzKDAsdCl9fXZhciBpPWUuc3RhdGVOb2RlO3JldHVybiBudWxsIT09aSYmImZ1bmN0aW9uIj09dHlwZW9mIGkuY29tcG9uZW50RGlkQ2F0Y2gmJihuLmNhbGxiYWNrPWZ1bmN0aW9uKCl7ZHMoMCx0KSwiZnVuY3Rpb24iIT10eXBlb2YgciYmKG51bGw9PT1xYz9xYz1uZXcgU2V0KFt0aGlzXSk6cWMuYWRkKHRoaXMpKTt2YXIgZT10LnN0YWNrO3RoaXMuY29tcG9uZW50RGlkQ2F0Y2godC52YWx1ZSx7Y29tcG9uZW50U3RhY2s6bnVsbCE9PWU/ZToiIn0pfSksbn1mdW5jdGlvbiBtcyhlLHQsbil7dmFyIHI9ZS5waW5nQ2FjaGU7aWYobnVsbD09PXIpe3I9ZS5waW5nQ2FjaGU9bmV3IGZzO3ZhciBvPW5ldyBTZXQ7ci5zZXQodCxvKX1lbHNlIHZvaWQgMD09PShvPXIuZ2V0KHQpKSYmKG89bmV3IFNldCxyLnNldCh0LG8pKTtvLmhhcyhuKXx8KG8uYWRkKG4pLGU9a3UuYmluZChudWxsLGUsdCxuKSx0LnRoZW4oZSxlKSl9ZnVuY3Rpb24gZ3MoZSl7ZG97dmFyIHQ7aWYoKHQ9MTM9PT1lLnRhZykmJih0PW51bGw9PT0odD1lLm1lbW9pemVkU3RhdGUpfHxudWxsIT09dC5kZWh5ZHJhdGVkKSx0KXJldHVybiBlO2U9ZS5yZXR1cm59d2hpbGUobnVsbCE9PWUpO3JldHVybiBudWxsfWZ1bmN0aW9uIHlzKGUsdCxuLHIsbyl7cmV0dXJuIDEmZS5tb2RlPyhlLmZsYWdzfD02NTUzNixlLmxhbmVzPW8sZSk6KGU9PT10P2UuZmxhZ3N8PTY1NTM2OihlLmZsYWdzfD0xMjgsbi5mbGFnc3w9MTMxMDcyLG4uZmxhZ3MmPS01MjgwNSwxPT09bi50YWcmJihudWxsPT09bi5hbHRlcm5hdGU/bi50YWc9MTc6KCh0PUJpKC0xLDEpKS50YWc9MixWaShuLHQsMSkpKSxuLmxhbmVzfD0xKSxlKX12YXIgdnM9dy5SZWFjdEN1cnJlbnRPd25lcixicz0hMTtmdW5jdGlvbiB3cyhlLHQsbixyKXt0LmNoaWxkPW51bGw9PT1lP1NpKHQsbnVsbCxuLHIpOl9pKHQsZS5jaGlsZCxuLHIpfWZ1bmN0aW9uIF9zKGUsdCxuLHIsbyl7bj1uLnJlbmRlcjt2YXIgaT10LnJlZjtyZXR1cm4gSWkodCxvKSxyPWdhKGUsdCxuLHIsaSxvKSxuPXlhKCksbnVsbD09PWV8fGJzPyhpaSYmbiYmdGkodCksdC5mbGFnc3w9MSx3cyhlLHQscixvKSx0LmNoaWxkKToodC51cGRhdGVRdWV1ZT1lLnVwZGF0ZVF1ZXVlLHQuZmxhZ3MmPS0yMDUzLGUubGFuZXMmPX5vLCRzKGUsdCxvKSl9ZnVuY3Rpb24gU3MoZSx0LG4scixvKXtpZihudWxsPT09ZSl7dmFyIGk9bi50eXBlO3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiBpfHxMdShpKXx8dm9pZCAwIT09aS5kZWZhdWx0UHJvcHN8fG51bGwhPT1uLmNvbXBhcmV8fHZvaWQgMCE9PW4uZGVmYXVsdFByb3BzPygoZT1NdShuLnR5cGUsbnVsbCxyLHQsdC5tb2RlLG8pKS5yZWY9dC5yZWYsZS5yZXR1cm49dCx0LmNoaWxkPWUpOih0LnRhZz0xNSx0LnR5cGU9aSxFcyhlLHQsaSxyLG8pKX1pZihpPWUuY2hpbGQsMD09PShlLmxhbmVzJm8pKXt2YXIgYT1pLm1lbW9pemVkUHJvcHM7aWYoKG49bnVsbCE9PShuPW4uY29tcGFyZSk/bjpjcikoYSxyKSYmZS5yZWY9PT10LnJlZilyZXR1cm4gJHMoZSx0LG8pfXJldHVybiB0LmZsYWdzfD0xLChlPVB1KGkscikpLnJlZj10LnJlZixlLnJldHVybj10LHQuY2hpbGQ9ZX1mdW5jdGlvbiBFcyhlLHQsbixyLG8pe2lmKG51bGwhPT1lKXt2YXIgaT1lLm1lbW9pemVkUHJvcHM7aWYoY3IoaSxyKSYmZS5yZWY9PT10LnJlZil7aWYoYnM9ITEsdC5wZW5kaW5nUHJvcHM9cj1pLDA9PT0oZS5sYW5lcyZvKSlyZXR1cm4gdC5sYW5lcz1lLmxhbmVzLCRzKGUsdCxvKTsxMzEwNzImZS5mbGFncyYmKGJzPSEwKX19cmV0dXJuIEFzKGUsdCxuLHIsbyl9ZnVuY3Rpb24gQ3MoZSx0LG4pe3ZhciByPXQucGVuZGluZ1Byb3BzLG89ci5jaGlsZHJlbixpPW51bGwhPT1lP2UubWVtb2l6ZWRTdGF0ZTpudWxsO2lmKCJoaWRkZW4iPT09ci5tb2RlKWlmKDEmdC5tb2RlKXtpZighKDEwNzM3NDE4MjQmbikpcmV0dXJuIGU9bnVsbCE9PWk/aS5iYXNlTGFuZXN8bjpuLHQubGFuZXM9dC5jaGlsZExhbmVzPTEwNzM3NDE4MjQsdC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6ZSxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSx0LnVwZGF0ZVF1ZXVlPW51bGwsT28oUGMsTGMpLExjfD1lLG51bGw7dC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxyPW51bGwhPT1pP2kuYmFzZUxhbmVzOm4sT28oUGMsTGMpLExjfD1yfWVsc2UgdC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxPbyhQYyxMYyksTGN8PW47ZWxzZSBudWxsIT09aT8ocj1pLmJhc2VMYW5lc3xuLHQubWVtb2l6ZWRTdGF0ZT1udWxsKTpyPW4sT28oUGMsTGMpLExjfD1yO3JldHVybiB3cyhlLHQsbyxuKSx0LmNoaWxkfWZ1bmN0aW9uIGtzKGUsdCl7dmFyIG49dC5yZWY7KG51bGw9PT1lJiZudWxsIT09bnx8bnVsbCE9PWUmJmUucmVmIT09bikmJih0LmZsYWdzfD01MTIsdC5mbGFnc3w9MjA5NzE1Mil9ZnVuY3Rpb24gQXMoZSx0LG4scixvKXt2YXIgaT1QbyhuKT9Obzp4by5jdXJyZW50O3JldHVybiBpPUxvKHQsaSksSWkodCxvKSxuPWdhKGUsdCxuLHIsaSxvKSxyPXlhKCksbnVsbD09PWV8fGJzPyhpaSYmciYmdGkodCksdC5mbGFnc3w9MSx3cyhlLHQsbixvKSx0LmNoaWxkKToodC51cGRhdGVRdWV1ZT1lLnVwZGF0ZVF1ZXVlLHQuZmxhZ3MmPS0yMDUzLGUubGFuZXMmPX5vLCRzKGUsdCxvKSl9ZnVuY3Rpb24gT3MoZSx0LG4scixvKXtpZihQbyhuKSl7dmFyIGk9ITA7Rm8odCl9ZWxzZSBpPSExO2lmKElpKHQsbyksbnVsbD09PXQuc3RhdGVOb2RlKUhzKGUsdCksYXModCxuLHIpLGNzKHQsbixyLG8pLHI9ITA7ZWxzZSBpZihudWxsPT09ZSl7dmFyIGE9dC5zdGF0ZU5vZGUscz10Lm1lbW9pemVkUHJvcHM7YS5wcm9wcz1zO3ZhciBjPWEuY29udGV4dCx1PW4uY29udGV4dFR5cGU7Im9iamVjdCI9PXR5cGVvZiB1JiZudWxsIT09dT91PU5pKHUpOnU9TG8odCx1PVBvKG4pP05vOnhvLmN1cnJlbnQpO3ZhciBsPW4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLGQ9ImZ1bmN0aW9uIj09dHlwZW9mIGx8fCJmdW5jdGlvbiI9PXR5cGVvZiBhLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlO2R8fCJmdW5jdGlvbiIhPXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiYiZnVuY3Rpb24iIT10eXBlb2YgYS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwocyE9PXJ8fGMhPT11KSYmc3ModCxhLHIsdSksRGk9ITE7dmFyIGY9dC5tZW1vaXplZFN0YXRlO2Euc3RhdGU9ZixIaSh0LHIsYSxvKSxjPXQubWVtb2l6ZWRTdGF0ZSxzIT09cnx8ZiE9PWN8fElvLmN1cnJlbnR8fERpPygiZnVuY3Rpb24iPT10eXBlb2YgbCYmKHJzKHQsbixsLHIpLGM9dC5tZW1vaXplZFN0YXRlKSwocz1EaXx8aXModCxuLHMscixmLGMsdSkpPyhkfHwiZnVuY3Rpb24iIT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiYiZnVuY3Rpb24iIT10eXBlb2YgYS5jb21wb25lbnRXaWxsTW91bnR8fCgiZnVuY3Rpb24iPT10eXBlb2YgYS5jb21wb25lbnRXaWxsTW91bnQmJmEuY29tcG9uZW50V2lsbE1vdW50KCksImZ1bmN0aW9uIj09dHlwZW9mIGEuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmYS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkpLCJmdW5jdGlvbiI9PXR5cGVvZiBhLmNvbXBvbmVudERpZE1vdW50JiYodC5mbGFnc3w9NDE5NDMwOCkpOigiZnVuY3Rpb24iPT10eXBlb2YgYS5jb21wb25lbnREaWRNb3VudCYmKHQuZmxhZ3N8PTQxOTQzMDgpLHQubWVtb2l6ZWRQcm9wcz1yLHQubWVtb2l6ZWRTdGF0ZT1jKSxhLnByb3BzPXIsYS5zdGF0ZT1jLGEuY29udGV4dD11LHI9cyk6KCJmdW5jdGlvbiI9PXR5cGVvZiBhLmNvbXBvbmVudERpZE1vdW50JiYodC5mbGFnc3w9NDE5NDMwOCkscj0hMSl9ZWxzZXthPXQuc3RhdGVOb2RlLGppKGUsdCkscz10Lm1lbW9pemVkUHJvcHMsdT10LnR5cGU9PT10LmVsZW1lbnRUeXBlP3M6bnModC50eXBlLHMpLGEucHJvcHM9dSxkPXQucGVuZGluZ1Byb3BzLGY9YS5jb250ZXh0LCJvYmplY3QiPT10eXBlb2YoYz1uLmNvbnRleHRUeXBlKSYmbnVsbCE9PWM/Yz1OaShjKTpjPUxvKHQsYz1QbyhuKT9Obzp4by5jdXJyZW50KTt2YXIgcD1uLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczsobD0iZnVuY3Rpb24iPT10eXBlb2YgcHx8ImZ1bmN0aW9uIj09dHlwZW9mIGEuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpfHwiZnVuY3Rpb24iIT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmImZ1bmN0aW9uIiE9dHlwZW9mIGEuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KHMhPT1kfHxmIT09YykmJnNzKHQsYSxyLGMpLERpPSExLGY9dC5tZW1vaXplZFN0YXRlLGEuc3RhdGU9ZixIaSh0LHIsYSxvKTt2YXIgaD10Lm1lbW9pemVkU3RhdGU7cyE9PWR8fGYhPT1ofHxJby5jdXJyZW50fHxEaT8oImZ1bmN0aW9uIj09dHlwZW9mIHAmJihycyh0LG4scCxyKSxoPXQubWVtb2l6ZWRTdGF0ZSksKHU9RGl8fGlzKHQsbix1LHIsZixoLGMpfHwhMSk/KGx8fCJmdW5jdGlvbiIhPXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiYiZnVuY3Rpb24iIT10eXBlb2YgYS5jb21wb25lbnRXaWxsVXBkYXRlfHwoImZ1bmN0aW9uIj09dHlwZW9mIGEuY29tcG9uZW50V2lsbFVwZGF0ZSYmYS5jb21wb25lbnRXaWxsVXBkYXRlKHIsaCxjKSwiZnVuY3Rpb24iPT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmYS5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZShyLGgsYykpLCJmdW5jdGlvbiI9PXR5cGVvZiBhLmNvbXBvbmVudERpZFVwZGF0ZSYmKHQuZmxhZ3N8PTQpLCJmdW5jdGlvbiI9PXR5cGVvZiBhLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYodC5mbGFnc3w9MTAyNCkpOigiZnVuY3Rpb24iIT10eXBlb2YgYS5jb21wb25lbnREaWRVcGRhdGV8fHM9PT1lLm1lbW9pemVkUHJvcHMmJmY9PT1lLm1lbW9pemVkU3RhdGV8fCh0LmZsYWdzfD00KSwiZnVuY3Rpb24iIT10eXBlb2YgYS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8cz09PWUubWVtb2l6ZWRQcm9wcyYmZj09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZmxhZ3N8PTEwMjQpLHQubWVtb2l6ZWRQcm9wcz1yLHQubWVtb2l6ZWRTdGF0ZT1oKSxhLnByb3BzPXIsYS5zdGF0ZT1oLGEuY29udGV4dD1jLHI9dSk6KCJmdW5jdGlvbiIhPXR5cGVvZiBhLmNvbXBvbmVudERpZFVwZGF0ZXx8cz09PWUubWVtb2l6ZWRQcm9wcyYmZj09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZmxhZ3N8PTQpLCJmdW5jdGlvbiIhPXR5cGVvZiBhLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxzPT09ZS5tZW1vaXplZFByb3BzJiZmPT09ZS5tZW1vaXplZFN0YXRlfHwodC5mbGFnc3w9MTAyNCkscj0hMSl9cmV0dXJuIFRzKGUsdCxuLHIsaSxvKX1mdW5jdGlvbiBUcyhlLHQsbixyLG8saSl7a3MoZSx0KTt2YXIgYT0hISgxMjgmdC5mbGFncyk7aWYoIXImJiFhKXJldHVybiBvJiZqbyh0LG4sITEpLCRzKGUsdCxpKTtyPXQuc3RhdGVOb2RlLHZzLmN1cnJlbnQ9dDt2YXIgcz1hJiYiZnVuY3Rpb24iIT10eXBlb2Ygbi5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I/bnVsbDpyLnJlbmRlcigpO3JldHVybiB0LmZsYWdzfD0xLG51bGwhPT1lJiZhPyh0LmNoaWxkPV9pKHQsZS5jaGlsZCxudWxsLGkpLHQuY2hpbGQ9X2kodCxudWxsLHMsaSkpOndzKGUsdCxzLGkpLHQubWVtb2l6ZWRTdGF0ZT1yLnN0YXRlLG8mJmpvKHQsbiwhMCksdC5jaGlsZH1mdW5jdGlvbiB4cyhlKXt2YXIgdD1lLnN0YXRlTm9kZTt0LnBlbmRpbmdDb250ZXh0P1JvKDAsdC5wZW5kaW5nQ29udGV4dCx0LnBlbmRpbmdDb250ZXh0IT09dC5jb250ZXh0KTp0LmNvbnRleHQmJlJvKDAsdC5jb250ZXh0LCExKSxLaShlLHQuY29udGFpbmVySW5mbyl9ZnVuY3Rpb24gSXMoZSx0LG4scixvKXtyZXR1cm4gaGkoKSxtaShvKSx0LmZsYWdzfD0yNTYsd3MoZSx0LG4sciksdC5jaGlsZH12YXIgTnMsTHMsUHMsTXMsUnM9e2RlaHlkcmF0ZWQ6bnVsbCx0cmVlQ29udGV4dDpudWxsLHJldHJ5TGFuZTowfTtmdW5jdGlvbiBEcyhlKXtyZXR1cm57YmFzZUxhbmVzOmUsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH19ZnVuY3Rpb24gRnMoZSx0LG4pe3ZhciByLG89dC5wZW5kaW5nUHJvcHMsYT1lYS5jdXJyZW50LHM9ITEsYz0hISgxMjgmdC5mbGFncyk7aWYoKHI9Yyl8fChyPShudWxsPT09ZXx8bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSkmJiEhKDImYSkpLHI/KHM9ITAsdC5mbGFncyY9LTEyOSk6bnVsbCE9PWUmJm51bGw9PT1lLm1lbW9pemVkU3RhdGV8fChhfD0xKSxPbyhlYSwxJmEpLG51bGw9PT1lKXJldHVybiBsaSh0KSxudWxsIT09KGU9dC5tZW1vaXplZFN0YXRlKSYmbnVsbCE9PShlPWUuZGVoeWRyYXRlZCk/KDEmdC5tb2RlPyIkISI9PT1lLmRhdGE/dC5sYW5lcz04OnQubGFuZXM9MTA3Mzc0MTgyNDp0LmxhbmVzPTEsbnVsbCk6KGM9by5jaGlsZHJlbixlPW8uZmFsbGJhY2sscz8obz10Lm1vZGUscz10LmNoaWxkLGM9e21vZGU6ImhpZGRlbiIsY2hpbGRyZW46Y30sMSZvfHxudWxsPT09cz9zPUR1KGMsbywwLG51bGwpOihzLmNoaWxkTGFuZXM9MCxzLnBlbmRpbmdQcm9wcz1jKSxlPVJ1KGUsbyxuLG51bGwpLHMucmV0dXJuPXQsZS5yZXR1cm49dCxzLnNpYmxpbmc9ZSx0LmNoaWxkPXMsdC5jaGlsZC5tZW1vaXplZFN0YXRlPURzKG4pLHQubWVtb2l6ZWRTdGF0ZT1ScyxlKTpqcyh0LGMpKTtpZihudWxsIT09KGE9ZS5tZW1vaXplZFN0YXRlKSYmbnVsbCE9PShyPWEuZGVoeWRyYXRlZCkpcmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsbyxhLHMpe2lmKG4pcmV0dXJuIDI1NiZ0LmZsYWdzPyh0LmZsYWdzJj0tMjU3LEJzKGUsdCxzLHI9bHMoRXJyb3IoaSg0MjIpKSkpKTpudWxsIT09dC5tZW1vaXplZFN0YXRlPyh0LmNoaWxkPWUuY2hpbGQsdC5mbGFnc3w9MTI4LG51bGwpOihhPXIuZmFsbGJhY2ssbz10Lm1vZGUscj1EdSh7bW9kZToidmlzaWJsZSIsY2hpbGRyZW46ci5jaGlsZHJlbn0sbywwLG51bGwpLChhPVJ1KGEsbyxzLG51bGwpKS5mbGFnc3w9MixyLnJldHVybj10LGEucmV0dXJuPXQsci5zaWJsaW5nPWEsdC5jaGlsZD1yLDEmdC5tb2RlJiZfaSh0LGUuY2hpbGQsbnVsbCxzKSx0LmNoaWxkLm1lbW9pemVkU3RhdGU9RHMocyksdC5tZW1vaXplZFN0YXRlPVJzLGEpO2lmKCEoMSZ0Lm1vZGUpKXJldHVybiBCcyhlLHQscyxudWxsKTtpZigiJCEiPT09by5kYXRhKXtpZihyPW8ubmV4dFNpYmxpbmcmJm8ubmV4dFNpYmxpbmcuZGF0YXNldCl2YXIgYz1yLmRnc3Q7cmV0dXJuIHI9YyxCcyhlLHQscyxyPWxzKGE9RXJyb3IoaSg0MTkpKSxyLHZvaWQgMCkpfWlmKGM9MCE9PShzJmUuY2hpbGRMYW5lcyksYnN8fGMpe2lmKG51bGwhPT0ocj14Yykpe3N3aXRjaChzJi1zKXtjYXNlIDQ6bz0yO2JyZWFrO2Nhc2UgMTY6bz04O2JyZWFrO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpvPTMyO2JyZWFrO2Nhc2UgNTM2ODcwOTEyOm89MjY4NDM1NDU2O2JyZWFrO2RlZmF1bHQ6bz0wfTAhPT0obz0wIT09KG8mKHIuc3VzcGVuZGVkTGFuZXN8cykpPzA6bykmJm8hPT1hLnJldHJ5TGFuZSYmKGEucmV0cnlMYW5lPW8sUmkoZSxvKSxudShyLGUsbywtMSkpfXJldHVybiBtdSgpLEJzKGUsdCxzLHI9bHMoRXJyb3IoaSg0MjEpKSkpfXJldHVybiIkPyI9PT1vLmRhdGE/KHQuZmxhZ3N8PTEyOCx0LmNoaWxkPWUuY2hpbGQsdD1PdS5iaW5kKG51bGwsZSksby5fcmVhY3RSZXRyeT10LG51bGwpOihlPWEudHJlZUNvbnRleHQsb2k9dW8oby5uZXh0U2libGluZykscmk9dCxpaT0hMCxhaT1udWxsLG51bGwhPT1lJiYoR29bUW8rK109Wm8sR29bUW8rK109WG8sR29bUW8rK109S28sWm89ZS5pZCxYbz1lLm92ZXJmbG93LEtvPXQpLHQ9anModCxyLmNoaWxkcmVuKSx0LmZsYWdzfD00MDk2LHQpfShlLHQsYyxvLHIsYSxuKTtpZihzKXtzPW8uZmFsbGJhY2ssYz10Lm1vZGUscj0oYT1lLmNoaWxkKS5zaWJsaW5nO3ZhciB1PXttb2RlOiJoaWRkZW4iLGNoaWxkcmVuOm8uY2hpbGRyZW59O3JldHVybiAxJmN8fHQuY2hpbGQ9PT1hPyhvPVB1KGEsdSkpLnN1YnRyZWVGbGFncz0xNDY4MDA2NCZhLnN1YnRyZWVGbGFnczooKG89dC5jaGlsZCkuY2hpbGRMYW5lcz0wLG8ucGVuZGluZ1Byb3BzPXUsdC5kZWxldGlvbnM9bnVsbCksbnVsbCE9PXI/cz1QdShyLHMpOihzPVJ1KHMsYyxuLG51bGwpKS5mbGFnc3w9MixzLnJldHVybj10LG8ucmV0dXJuPXQsby5zaWJsaW5nPXMsdC5jaGlsZD1vLG89cyxzPXQuY2hpbGQsYz1udWxsPT09KGM9ZS5jaGlsZC5tZW1vaXplZFN0YXRlKT9EcyhuKTp7YmFzZUxhbmVzOmMuYmFzZUxhbmVzfG4sY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6Yy50cmFuc2l0aW9uc30scy5tZW1vaXplZFN0YXRlPWMscy5jaGlsZExhbmVzPWUuY2hpbGRMYW5lcyZ+bix0Lm1lbW9pemVkU3RhdGU9UnMsb31yZXR1cm4gZT0ocz1lLmNoaWxkKS5zaWJsaW5nLG89UHUocyx7bW9kZToidmlzaWJsZSIsY2hpbGRyZW46by5jaGlsZHJlbn0pLCEoMSZ0Lm1vZGUpJiYoby5sYW5lcz1uKSxvLnJldHVybj10LG8uc2libGluZz1udWxsLG51bGwhPT1lJiYobnVsbD09PShuPXQuZGVsZXRpb25zKT8odC5kZWxldGlvbnM9W2VdLHQuZmxhZ3N8PTE2KTpuLnB1c2goZSkpLHQuY2hpbGQ9byx0Lm1lbW9pemVkU3RhdGU9bnVsbCxvfWZ1bmN0aW9uIGpzKGUsdCl7cmV0dXJuKHQ9RHUoe21vZGU6InZpc2libGUiLGNoaWxkcmVuOnR9LGUubW9kZSwwLG51bGwpKS5yZXR1cm49ZSxlLmNoaWxkPXR9ZnVuY3Rpb24gQnMoZSx0LG4scil7cmV0dXJuIG51bGwhPT1yJiZtaShyKSxfaSh0LGUuY2hpbGQsbnVsbCxuKSwoZT1qcyh0LHQucGVuZGluZ1Byb3BzLmNoaWxkcmVuKSkuZmxhZ3N8PTIsdC5tZW1vaXplZFN0YXRlPW51bGwsZX1mdW5jdGlvbiBWcyhlLHQsbil7ZS5sYW5lc3w9dDt2YXIgcj1lLmFsdGVybmF0ZTtudWxsIT09ciYmKHIubGFuZXN8PXQpLHhpKGUucmV0dXJuLHQsbil9ZnVuY3Rpb24gVXMoZSx0LG4scixvKXt2YXIgaT1lLm1lbW9pemVkU3RhdGU7bnVsbD09PWk/ZS5tZW1vaXplZFN0YXRlPXtpc0JhY2t3YXJkczp0LHJlbmRlcmluZzpudWxsLHJlbmRlcmluZ1N0YXJ0VGltZTowLGxhc3Q6cix0YWlsOm4sdGFpbE1vZGU6b306KGkuaXNCYWNrd2FyZHM9dCxpLnJlbmRlcmluZz1udWxsLGkucmVuZGVyaW5nU3RhcnRUaW1lPTAsaS5sYXN0PXIsaS50YWlsPW4saS50YWlsTW9kZT1vKX1mdW5jdGlvbiB6cyhlLHQsbil7dmFyIHI9dC5wZW5kaW5nUHJvcHMsbz1yLnJldmVhbE9yZGVyLGk9ci50YWlsO2lmKHdzKGUsdCxyLmNoaWxkcmVuLG4pLDImKHI9ZWEuY3VycmVudCkpcj0xJnJ8Mix0LmZsYWdzfD0xMjg7ZWxzZXtpZihudWxsIT09ZSYmMTI4JmUuZmxhZ3MpZTpmb3IoZT10LmNoaWxkO251bGwhPT1lOyl7aWYoMTM9PT1lLnRhZyludWxsIT09ZS5tZW1vaXplZFN0YXRlJiZWcyhlLG4sdCk7ZWxzZSBpZigxOT09PWUudGFnKVZzKGUsbix0KTtlbHNlIGlmKG51bGwhPT1lLmNoaWxkKXtlLmNoaWxkLnJldHVybj1lLGU9ZS5jaGlsZDtjb250aW51ZX1pZihlPT09dClicmVhayBlO2Zvcig7bnVsbD09PWUuc2libGluZzspe2lmKG51bGw9PT1lLnJldHVybnx8ZS5yZXR1cm49PT10KWJyZWFrIGU7ZT1lLnJldHVybn1lLnNpYmxpbmcucmV0dXJuPWUucmV0dXJuLGU9ZS5zaWJsaW5nfXImPTF9aWYoT28oZWEsciksMSZ0Lm1vZGUpc3dpdGNoKG8pe2Nhc2UiZm9yd2FyZHMiOmZvcihuPXQuY2hpbGQsbz1udWxsO251bGwhPT1uOyludWxsIT09KGU9bi5hbHRlcm5hdGUpJiZudWxsPT09dGEoZSkmJihvPW4pLG49bi5zaWJsaW5nO251bGw9PT0obj1vKT8obz10LmNoaWxkLHQuY2hpbGQ9bnVsbCk6KG89bi5zaWJsaW5nLG4uc2libGluZz1udWxsKSxVcyh0LCExLG8sbixpKTticmVhaztjYXNlImJhY2t3YXJkcyI6Zm9yKG49bnVsbCxvPXQuY2hpbGQsdC5jaGlsZD1udWxsO251bGwhPT1vOyl7aWYobnVsbCE9PShlPW8uYWx0ZXJuYXRlKSYmbnVsbD09PXRhKGUpKXt0LmNoaWxkPW87YnJlYWt9ZT1vLnNpYmxpbmcsby5zaWJsaW5nPW4sbj1vLG89ZX1Vcyh0LCEwLG4sbnVsbCxpKTticmVhaztjYXNlInRvZ2V0aGVyIjpVcyh0LCExLG51bGwsbnVsbCx2b2lkIDApO2JyZWFrO2RlZmF1bHQ6dC5tZW1vaXplZFN0YXRlPW51bGx9ZWxzZSB0Lm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gdC5jaGlsZH1mdW5jdGlvbiBIcyhlLHQpeyEoMSZ0Lm1vZGUpJiZudWxsIT09ZSYmKGUuYWx0ZXJuYXRlPW51bGwsdC5hbHRlcm5hdGU9bnVsbCx0LmZsYWdzfD0yKX1mdW5jdGlvbiAkcyhlLHQsbil7aWYobnVsbCE9PWUmJih0LmRlcGVuZGVuY2llcz1lLmRlcGVuZGVuY2llcyksRGN8PXQubGFuZXMsMD09PShuJnQuY2hpbGRMYW5lcykpcmV0dXJuIG51bGw7aWYobnVsbCE9PWUmJnQuY2hpbGQhPT1lLmNoaWxkKXRocm93IEVycm9yKGkoMTUzKSk7aWYobnVsbCE9PXQuY2hpbGQpe2ZvcihuPVB1KGU9dC5jaGlsZCxlLnBlbmRpbmdQcm9wcyksdC5jaGlsZD1uLG4ucmV0dXJuPXQ7bnVsbCE9PWUuc2libGluZzspZT1lLnNpYmxpbmcsKG49bi5zaWJsaW5nPVB1KGUsZS5wZW5kaW5nUHJvcHMpKS5yZXR1cm49dDtuLnNpYmxpbmc9bnVsbH1yZXR1cm4gdC5jaGlsZH1mdW5jdGlvbiBZcyhlLHQpe2lmKCFpaSlzd2l0Y2goZS50YWlsTW9kZSl7Y2FzZSJoaWRkZW4iOnQ9ZS50YWlsO2Zvcih2YXIgbj1udWxsO251bGwhPT10OyludWxsIT09dC5hbHRlcm5hdGUmJihuPXQpLHQ9dC5zaWJsaW5nO251bGw9PT1uP2UudGFpbD1udWxsOm4uc2libGluZz1udWxsO2JyZWFrO2Nhc2UiY29sbGFwc2VkIjpuPWUudGFpbDtmb3IodmFyIHI9bnVsbDtudWxsIT09bjspbnVsbCE9PW4uYWx0ZXJuYXRlJiYocj1uKSxuPW4uc2libGluZztudWxsPT09cj90fHxudWxsPT09ZS50YWlsP2UudGFpbD1udWxsOmUudGFpbC5zaWJsaW5nPW51bGw6ci5zaWJsaW5nPW51bGx9fWZ1bmN0aW9uIHFzKGUpe3ZhciB0PW51bGwhPT1lLmFsdGVybmF0ZSYmZS5hbHRlcm5hdGUuY2hpbGQ9PT1lLmNoaWxkLG49MCxyPTA7aWYodClmb3IodmFyIG89ZS5jaGlsZDtudWxsIT09bzspbnw9by5sYW5lc3xvLmNoaWxkTGFuZXMscnw9MTQ2ODAwNjQmby5zdWJ0cmVlRmxhZ3Mscnw9MTQ2ODAwNjQmby5mbGFncyxvLnJldHVybj1lLG89by5zaWJsaW5nO2Vsc2UgZm9yKG89ZS5jaGlsZDtudWxsIT09bzspbnw9by5sYW5lc3xvLmNoaWxkTGFuZXMscnw9by5zdWJ0cmVlRmxhZ3Mscnw9by5mbGFncyxvLnJldHVybj1lLG89by5zaWJsaW5nO3JldHVybiBlLnN1YnRyZWVGbGFnc3w9cixlLmNoaWxkTGFuZXM9bix0fWZ1bmN0aW9uIFdzKGUsdCxuKXt2YXIgcj10LnBlbmRpbmdQcm9wcztzd2l0Y2gobmkodCksdC50YWcpe2Nhc2UgMjpjYXNlIDE2OmNhc2UgMTU6Y2FzZSAwOmNhc2UgMTE6Y2FzZSA3OmNhc2UgODpjYXNlIDEyOmNhc2UgOTpjYXNlIDE0OnJldHVybiBxcyh0KSxudWxsO2Nhc2UgMTpjYXNlIDE3OnJldHVybiBQbyh0LnR5cGUpJiZNbygpLHFzKHQpLG51bGw7Y2FzZSAzOnJldHVybiByPXQuc3RhdGVOb2RlLFppKCksQW8oSW8pLEFvKHhvKSxyYSgpLHIucGVuZGluZ0NvbnRleHQmJihyLmNvbnRleHQ9ci5wZW5kaW5nQ29udGV4dCxyLnBlbmRpbmdDb250ZXh0PW51bGwpLG51bGwhPT1lJiZudWxsIT09ZS5jaGlsZHx8KGZpKHQpP3QuZmxhZ3N8PTQ6bnVsbD09PWV8fGUubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJiEoMjU2JnQuZmxhZ3MpfHwodC5mbGFnc3w9MTAyNCxudWxsIT09YWkmJihhdShhaSksYWk9bnVsbCkpKSxMcyhlLHQpLHFzKHQpLG51bGw7Y2FzZSA1OkppKHQpO3ZhciBvPVFpKEdpLmN1cnJlbnQpO2lmKG49dC50eXBlLG51bGwhPT1lJiZudWxsIT10LnN0YXRlTm9kZSlQcyhlLHQsbixyLG8pLGUucmVmIT09dC5yZWYmJih0LmZsYWdzfD01MTIsdC5mbGFnc3w9MjA5NzE1Mik7ZWxzZXtpZighcil7aWYobnVsbD09PXQuc3RhdGVOb2RlKXRocm93IEVycm9yKGkoMTY2KSk7cmV0dXJuIHFzKHQpLG51bGx9aWYoZT1RaShxaS5jdXJyZW50KSxmaSh0KSl7cj10LnN0YXRlTm9kZSxuPXQudHlwZTt2YXIgYT10Lm1lbW9pemVkUHJvcHM7c3dpdGNoKHJbcG9dPXQscltob109YSxlPSEhKDEmdC5tb2RlKSxuKXtjYXNlImRpYWxvZyI6QnIoImNhbmNlbCIsciksQnIoImNsb3NlIixyKTticmVhaztjYXNlImlmcmFtZSI6Y2FzZSJvYmplY3QiOmNhc2UiZW1iZWQiOkJyKCJsb2FkIixyKTticmVhaztjYXNlInZpZGVvIjpjYXNlImF1ZGlvIjpmb3Iobz0wO288UnIubGVuZ3RoO28rKylCcihScltvXSxyKTticmVhaztjYXNlInNvdXJjZSI6QnIoImVycm9yIixyKTticmVhaztjYXNlImltZyI6Y2FzZSJpbWFnZSI6Y2FzZSJsaW5rIjpCcigiZXJyb3IiLHIpLEJyKCJsb2FkIixyKTticmVhaztjYXNlImRldGFpbHMiOkJyKCJ0b2dnbGUiLHIpO2JyZWFrO2Nhc2UiaW5wdXQiOksocixhKSxCcigiaW52YWxpZCIscik7YnJlYWs7Y2FzZSJzZWxlY3QiOnIuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFhLm11bHRpcGxlfSxCcigiaW52YWxpZCIscik7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6b2UocixhKSxCcigiaW52YWxpZCIscil9Zm9yKHZhciBjIGluIHZlKG4sYSksbz1udWxsLGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShjKSl7dmFyIHU9YVtjXTsiY2hpbGRyZW4iPT09Yz8ic3RyaW5nIj09dHlwZW9mIHU/ci50ZXh0Q29udGVudCE9PXUmJighMCE9PWEuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZYcihyLnRleHRDb250ZW50LHUsZSksbz1bImNoaWxkcmVuIix1XSk6Im51bWJlciI9PXR5cGVvZiB1JiZyLnRleHRDb250ZW50IT09IiIrdSYmKCEwIT09YS5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcmJlhyKHIudGV4dENvbnRlbnQsdSxlKSxvPVsiY2hpbGRyZW4iLCIiK3VdKTpzLmhhc093blByb3BlcnR5KGMpJiZudWxsIT11JiYib25TY3JvbGwiPT09YyYmQnIoInNjcm9sbCIscil9c3dpdGNoKG4pe2Nhc2UiaW5wdXQiOnEociksSihyLGEsITApO2JyZWFrO2Nhc2UidGV4dGFyZWEiOnEociksYWUocik7YnJlYWs7Y2FzZSJzZWxlY3QiOmNhc2Uib3B0aW9uIjpicmVhaztkZWZhdWx0OiJmdW5jdGlvbiI9PXR5cGVvZiBhLm9uQ2xpY2smJihyLm9uY2xpY2s9SnIpfXI9byx0LnVwZGF0ZVF1ZXVlPXIsbnVsbCE9PXImJih0LmZsYWdzfD00KX1lbHNle2M9OT09PW8ubm9kZVR5cGU/bzpvLm93bmVyRG9jdW1lbnQsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPT09ZSYmKGU9c2UobikpLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWU/InNjcmlwdCI9PT1uPygoZT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pbm5lckhUTUw9IjxzY3JpcHQ+PFwvc2NyaXB0PiIsZT1lLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCkpOiJzdHJpbmciPT10eXBlb2Ygci5pcz9lPWMuY3JlYXRlRWxlbWVudChuLHtpczpyLmlzfSk6KGU9Yy5jcmVhdGVFbGVtZW50KG4pLCJzZWxlY3QiPT09biYmKGM9ZSxyLm11bHRpcGxlP2MubXVsdGlwbGU9ITA6ci5zaXplJiYoYy5zaXplPXIuc2l6ZSkpKTplPWMuY3JlYXRlRWxlbWVudE5TKGUsbiksZVtwb109dCxlW2hvXT1yLE5zKGUsdCwhMSwhMSksdC5zdGF0ZU5vZGU9ZTtlOntzd2l0Y2goYz1iZShuLHIpLG4pe2Nhc2UiZGlhbG9nIjpCcigiY2FuY2VsIixlKSxCcigiY2xvc2UiLGUpLG89cjticmVhaztjYXNlImlmcmFtZSI6Y2FzZSJvYmplY3QiOmNhc2UiZW1iZWQiOkJyKCJsb2FkIixlKSxvPXI7YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6Zm9yKG89MDtvPFJyLmxlbmd0aDtvKyspQnIoUnJbb10sZSk7bz1yO2JyZWFrO2Nhc2Uic291cmNlIjpCcigiZXJyb3IiLGUpLG89cjticmVhaztjYXNlImltZyI6Y2FzZSJpbWFnZSI6Y2FzZSJsaW5rIjpCcigiZXJyb3IiLGUpLEJyKCJsb2FkIixlKSxvPXI7YnJlYWs7Y2FzZSJkZXRhaWxzIjpCcigidG9nZ2xlIixlKSxvPXI7YnJlYWs7Y2FzZSJpbnB1dCI6SyhlLHIpLG89UShlLHIpLEJyKCJpbnZhbGlkIixlKTticmVhaztjYXNlIm9wdGlvbiI6ZGVmYXVsdDpvPXI7YnJlYWs7Y2FzZSJzZWxlY3QiOmUuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFyLm11bHRpcGxlfSxvPUYoe30scix7dmFsdWU6dm9pZCAwfSksQnIoImludmFsaWQiLGUpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOm9lKGUsciksbz1yZShlLHIpLEJyKCJpbnZhbGlkIixlKX1mb3IoYSBpbiB2ZShuLG8pLHU9bylpZih1Lmhhc093blByb3BlcnR5KGEpKXt2YXIgbD11W2FdOyJzdHlsZSI9PT1hP2dlKGUsbCk6ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIj09PWE/bnVsbCE9KGw9bD9sLl9faHRtbDp2b2lkIDApJiZkZShlLGwpOiJjaGlsZHJlbiI9PT1hPyJzdHJpbmciPT10eXBlb2YgbD8oInRleHRhcmVhIiE9PW58fCIiIT09bCkmJmZlKGUsbCk6Im51bWJlciI9PXR5cGVvZiBsJiZmZShlLCIiK2wpOiJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciIT09YSYmInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyIhPT1hJiYiYXV0b0ZvY3VzIiE9PWEmJihzLmhhc093blByb3BlcnR5KGEpP251bGwhPWwmJiJvblNjcm9sbCI9PT1hJiZCcigic2Nyb2xsIixlKTpudWxsIT1sJiZiKGUsYSxsLGMpKX1zd2l0Y2gobil7Y2FzZSJpbnB1dCI6cShlKSxKKGUsciwhMSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6cShlKSxhZShlKTticmVhaztjYXNlIm9wdGlvbiI6bnVsbCE9ci52YWx1ZSYmZS5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiskKHIudmFsdWUpKTticmVhaztjYXNlInNlbGVjdCI6ZS5tdWx0aXBsZT0hIXIubXVsdGlwbGUsbnVsbCE9KGE9ci52YWx1ZSk/bmUoZSwhIXIubXVsdGlwbGUsYSwhMSk6bnVsbCE9ci5kZWZhdWx0VmFsdWUmJm5lKGUsISFyLm11bHRpcGxlLHIuZGVmYXVsdFZhbHVlLCEwKTticmVhaztkZWZhdWx0OiJmdW5jdGlvbiI9PXR5cGVvZiBvLm9uQ2xpY2smJihlLm9uY2xpY2s9SnIpfXN3aXRjaChuKXtjYXNlImJ1dHRvbiI6Y2FzZSJpbnB1dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEiOnI9ISFyLmF1dG9Gb2N1czticmVhayBlO2Nhc2UiaW1nIjpyPSEwO2JyZWFrIGU7ZGVmYXVsdDpyPSExfX1yJiYodC5mbGFnc3w9NCl9bnVsbCE9PXQucmVmJiYodC5mbGFnc3w9NTEyLHQuZmxhZ3N8PTIwOTcxNTIpfXJldHVybiBxcyh0KSxudWxsO2Nhc2UgNjppZihlJiZudWxsIT10LnN0YXRlTm9kZSlNcyhlLHQsZS5tZW1vaXplZFByb3BzLHIpO2Vsc2V7aWYoInN0cmluZyIhPXR5cGVvZiByJiZudWxsPT09dC5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IoaSgxNjYpKTtpZihuPVFpKEdpLmN1cnJlbnQpLFFpKHFpLmN1cnJlbnQpLGZpKHQpKXtpZihyPXQuc3RhdGVOb2RlLG49dC5tZW1vaXplZFByb3BzLHJbcG9dPXQsKGE9ci5ub2RlVmFsdWUhPT1uKSYmbnVsbCE9PShlPXJpKSlzd2l0Y2goZS50YWcpe2Nhc2UgMzpYcihyLm5vZGVWYWx1ZSxuLCEhKDEmZS5tb2RlKSk7YnJlYWs7Y2FzZSA1OiEwIT09ZS5tZW1vaXplZFByb3BzLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmWHIoci5ub2RlVmFsdWUsbiwhISgxJmUubW9kZSkpfWEmJih0LmZsYWdzfD00KX1lbHNlKHI9KDk9PT1uLm5vZGVUeXBlP246bi5vd25lckRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShyKSlbcG9dPXQsdC5zdGF0ZU5vZGU9cn1yZXR1cm4gcXModCksbnVsbDtjYXNlIDEzOmlmKEFvKGVhKSxyPXQubWVtb2l6ZWRTdGF0ZSxudWxsPT09ZXx8bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZS5kZWh5ZHJhdGVkKXtpZihpaSYmbnVsbCE9PW9pJiYxJnQubW9kZSYmISgxMjgmdC5mbGFncykpcGkoKSxoaSgpLHQuZmxhZ3N8PTk4NTYwLGE9ITE7ZWxzZSBpZihhPWZpKHQpLG51bGwhPT1yJiZudWxsIT09ci5kZWh5ZHJhdGVkKXtpZihudWxsPT09ZSl7aWYoIWEpdGhyb3cgRXJyb3IoaSgzMTgpKTtpZighKGE9bnVsbCE9PShhPXQubWVtb2l6ZWRTdGF0ZSk/YS5kZWh5ZHJhdGVkOm51bGwpKXRocm93IEVycm9yKGkoMzE3KSk7YVtwb109dH1lbHNlIGhpKCksISgxMjgmdC5mbGFncykmJih0Lm1lbW9pemVkU3RhdGU9bnVsbCksdC5mbGFnc3w9NDtxcyh0KSxhPSExfWVsc2UgbnVsbCE9PWFpJiYoYXUoYWkpLGFpPW51bGwpLGE9ITA7aWYoIWEpcmV0dXJuIDY1NTM2JnQuZmxhZ3M/dDpudWxsfXJldHVybiAxMjgmdC5mbGFncz8odC5sYW5lcz1uLHQpOigocj1udWxsIT09cikhPT0obnVsbCE9PWUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUpJiZyJiYodC5jaGlsZC5mbGFnc3w9ODE5MiwxJnQubW9kZSYmKG51bGw9PT1lfHwxJmVhLmN1cnJlbnQ/MD09PU1jJiYoTWM9Myk6bXUoKSkpLG51bGwhPT10LnVwZGF0ZVF1ZXVlJiYodC5mbGFnc3w9NCkscXModCksbnVsbCk7Y2FzZSA0OnJldHVybiBaaSgpLExzKGUsdCksbnVsbD09PWUmJnpyKHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLHFzKHQpLG51bGw7Y2FzZSAxMDpyZXR1cm4gVGkodC50eXBlLl9jb250ZXh0KSxxcyh0KSxudWxsO2Nhc2UgMTk6aWYoQW8oZWEpLG51bGw9PT0oYT10Lm1lbW9pemVkU3RhdGUpKXJldHVybiBxcyh0KSxudWxsO2lmKHI9ISEoMTI4JnQuZmxhZ3MpLG51bGw9PT0oYz1hLnJlbmRlcmluZykpaWYocilZcyhhLCExKTtlbHNle2lmKDAhPT1NY3x8bnVsbCE9PWUmJjEyOCZlLmZsYWdzKWZvcihlPXQuY2hpbGQ7bnVsbCE9PWU7KXtpZihudWxsIT09KGM9dGEoZSkpKXtmb3IodC5mbGFnc3w9MTI4LFlzKGEsITEpLG51bGwhPT0ocj1jLnVwZGF0ZVF1ZXVlKSYmKHQudXBkYXRlUXVldWU9cix0LmZsYWdzfD00KSx0LnN1YnRyZWVGbGFncz0wLHI9bixuPXQuY2hpbGQ7bnVsbCE9PW47KWU9ciwoYT1uKS5mbGFncyY9MTQ2ODAwNjYsbnVsbD09PShjPWEuYWx0ZXJuYXRlKT8oYS5jaGlsZExhbmVzPTAsYS5sYW5lcz1lLGEuY2hpbGQ9bnVsbCxhLnN1YnRyZWVGbGFncz0wLGEubWVtb2l6ZWRQcm9wcz1udWxsLGEubWVtb2l6ZWRTdGF0ZT1udWxsLGEudXBkYXRlUXVldWU9bnVsbCxhLmRlcGVuZGVuY2llcz1udWxsLGEuc3RhdGVOb2RlPW51bGwpOihhLmNoaWxkTGFuZXM9Yy5jaGlsZExhbmVzLGEubGFuZXM9Yy5sYW5lcyxhLmNoaWxkPWMuY2hpbGQsYS5zdWJ0cmVlRmxhZ3M9MCxhLmRlbGV0aW9ucz1udWxsLGEubWVtb2l6ZWRQcm9wcz1jLm1lbW9pemVkUHJvcHMsYS5tZW1vaXplZFN0YXRlPWMubWVtb2l6ZWRTdGF0ZSxhLnVwZGF0ZVF1ZXVlPWMudXBkYXRlUXVldWUsYS50eXBlPWMudHlwZSxlPWMuZGVwZW5kZW5jaWVzLGEuZGVwZW5kZW5jaWVzPW51bGw9PT1lP251bGw6e2xhbmVzOmUubGFuZXMsZmlyc3RDb250ZXh0OmUuZmlyc3RDb250ZXh0fSksbj1uLnNpYmxpbmc7cmV0dXJuIE9vKGVhLDEmZWEuY3VycmVudHwyKSx0LmNoaWxkfWU9ZS5zaWJsaW5nfW51bGwhPT1hLnRhaWwmJlplKCk+emMmJih0LmZsYWdzfD0xMjgscj0hMCxZcyhhLCExKSx0LmxhbmVzPTQxOTQzMDQpfWVsc2V7aWYoIXIpaWYobnVsbCE9PShlPXRhKGMpKSl7aWYodC5mbGFnc3w9MTI4LHI9ITAsbnVsbCE9PShuPWUudXBkYXRlUXVldWUpJiYodC51cGRhdGVRdWV1ZT1uLHQuZmxhZ3N8PTQpLFlzKGEsITApLG51bGw9PT1hLnRhaWwmJiJoaWRkZW4iPT09YS50YWlsTW9kZSYmIWMuYWx0ZXJuYXRlJiYhaWkpcmV0dXJuIHFzKHQpLG51bGx9ZWxzZSAyKlplKCktYS5yZW5kZXJpbmdTdGFydFRpbWU+emMmJjEwNzM3NDE4MjQhPT1uJiYodC5mbGFnc3w9MTI4LHI9ITAsWXMoYSwhMSksdC5sYW5lcz00MTk0MzA0KTthLmlzQmFja3dhcmRzPyhjLnNpYmxpbmc9dC5jaGlsZCx0LmNoaWxkPWMpOihudWxsIT09KG49YS5sYXN0KT9uLnNpYmxpbmc9Yzp0LmNoaWxkPWMsYS5sYXN0PWMpfXJldHVybiBudWxsIT09YS50YWlsPyh0PWEudGFpbCxhLnJlbmRlcmluZz10LGEudGFpbD10LnNpYmxpbmcsYS5yZW5kZXJpbmdTdGFydFRpbWU9WmUoKSx0LnNpYmxpbmc9bnVsbCxuPWVhLmN1cnJlbnQsT28oZWEscj8xJm58MjoxJm4pLHQpOihxcyh0KSxudWxsKTtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIGR1KCkscj1udWxsIT09dC5tZW1vaXplZFN0YXRlLG51bGwhPT1lJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlIT09ciYmKHQuZmxhZ3N8PTgxOTIpLHImJjEmdC5tb2RlPyEhKDEwNzM3NDE4MjQmTGMpJiYocXModCksNiZ0LnN1YnRyZWVGbGFncyYmKHQuZmxhZ3N8PTgxOTIpKTpxcyh0KSxudWxsO2Nhc2UgMjQ6Y2FzZSAyNTpyZXR1cm4gbnVsbH10aHJvdyBFcnJvcihpKDE1Nix0LnRhZykpfWZ1bmN0aW9uIEdzKGUsdCl7c3dpdGNoKG5pKHQpLHQudGFnKXtjYXNlIDE6cmV0dXJuIFBvKHQudHlwZSkmJk1vKCksNjU1MzYmKGU9dC5mbGFncyk/KHQuZmxhZ3M9LTY1NTM3JmV8MTI4LHQpOm51bGw7Y2FzZSAzOnJldHVybiBaaSgpLEFvKElvKSxBbyh4bykscmEoKSw2NTUzNiYoZT10LmZsYWdzKSYmISgxMjgmZSk/KHQuZmxhZ3M9LTY1NTM3JmV8MTI4LHQpOm51bGw7Y2FzZSA1OnJldHVybiBKaSh0KSxudWxsO2Nhc2UgMTM6aWYoQW8oZWEpLG51bGwhPT0oZT10Lm1lbW9pemVkU3RhdGUpJiZudWxsIT09ZS5kZWh5ZHJhdGVkKXtpZihudWxsPT09dC5hbHRlcm5hdGUpdGhyb3cgRXJyb3IoaSgzNDApKTtoaSgpfXJldHVybiA2NTUzNiYoZT10LmZsYWdzKT8odC5mbGFncz0tNjU1MzcmZXwxMjgsdCk6bnVsbDtjYXNlIDE5OnJldHVybiBBbyhlYSksbnVsbDtjYXNlIDQ6cmV0dXJuIFppKCksbnVsbDtjYXNlIDEwOnJldHVybiBUaSh0LnR5cGUuX2NvbnRleHQpLG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBkdSgpLG51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbH19TnM9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dC5jaGlsZDtudWxsIT09bjspe2lmKDU9PT1uLnRhZ3x8Nj09PW4udGFnKWUuYXBwZW5kQ2hpbGQobi5zdGF0ZU5vZGUpO2Vsc2UgaWYoNCE9PW4udGFnJiZudWxsIT09bi5jaGlsZCl7bi5jaGlsZC5yZXR1cm49bixuPW4uY2hpbGQ7Y29udGludWV9aWYobj09PXQpYnJlYWs7Zm9yKDtudWxsPT09bi5zaWJsaW5nOyl7aWYobnVsbD09PW4ucmV0dXJufHxuLnJldHVybj09PXQpcmV0dXJuO249bi5yZXR1cm59bi5zaWJsaW5nLnJldHVybj1uLnJldHVybixuPW4uc2libGluZ319LExzPWZ1bmN0aW9uKCl7fSxQcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1lLm1lbW9pemVkUHJvcHM7aWYobyE9PXIpe2U9dC5zdGF0ZU5vZGUsUWkocWkuY3VycmVudCk7dmFyIGksYT1udWxsO3N3aXRjaChuKXtjYXNlImlucHV0IjpvPVEoZSxvKSxyPVEoZSxyKSxhPVtdO2JyZWFrO2Nhc2Uic2VsZWN0IjpvPUYoe30sbyx7dmFsdWU6dm9pZCAwfSkscj1GKHt9LHIse3ZhbHVlOnZvaWQgMH0pLGE9W107YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6bz1yZShlLG8pLHI9cmUoZSxyKSxhPVtdO2JyZWFrO2RlZmF1bHQ6ImZ1bmN0aW9uIiE9dHlwZW9mIG8ub25DbGljayYmImZ1bmN0aW9uIj09dHlwZW9mIHIub25DbGljayYmKGUub25jbGljaz1Kcil9Zm9yKGwgaW4gdmUobixyKSxuPW51bGwsbylpZighci5oYXNPd25Qcm9wZXJ0eShsKSYmby5oYXNPd25Qcm9wZXJ0eShsKSYmbnVsbCE9b1tsXSlpZigic3R5bGUiPT09bCl7dmFyIGM9b1tsXTtmb3IoaSBpbiBjKWMuaGFzT3duUHJvcGVydHkoaSkmJihufHwobj17fSksbltpXT0iIil9ZWxzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCIhPT1sJiYiY2hpbGRyZW4iIT09bCYmInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIhPT1sJiYic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiE9PWwmJiJhdXRvRm9jdXMiIT09bCYmKHMuaGFzT3duUHJvcGVydHkobCk/YXx8KGE9W10pOihhPWF8fFtdKS5wdXNoKGwsbnVsbCkpO2ZvcihsIGluIHIpe3ZhciB1PXJbbF07aWYoYz1udWxsIT1vP29bbF06dm9pZCAwLHIuaGFzT3duUHJvcGVydHkobCkmJnUhPT1jJiYobnVsbCE9dXx8bnVsbCE9YykpaWYoInN0eWxlIj09PWwpaWYoYyl7Zm9yKGkgaW4gYykhYy5oYXNPd25Qcm9wZXJ0eShpKXx8dSYmdS5oYXNPd25Qcm9wZXJ0eShpKXx8KG58fChuPXt9KSxuW2ldPSIiKTtmb3IoaSBpbiB1KXUuaGFzT3duUHJvcGVydHkoaSkmJmNbaV0hPT11W2ldJiYobnx8KG49e30pLG5baV09dVtpXSl9ZWxzZSBufHwoYXx8KGE9W10pLGEucHVzaChsLG4pKSxuPXU7ZWxzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI9PT1sPyh1PXU/dS5fX2h0bWw6dm9pZCAwLGM9Yz9jLl9faHRtbDp2b2lkIDAsbnVsbCE9dSYmYyE9PXUmJihhPWF8fFtdKS5wdXNoKGwsdSkpOiJjaGlsZHJlbiI9PT1sPyJzdHJpbmciIT10eXBlb2YgdSYmIm51bWJlciIhPXR5cGVvZiB1fHwoYT1hfHxbXSkucHVzaChsLCIiK3UpOiJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciIT09bCYmInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyIhPT1sJiYocy5oYXNPd25Qcm9wZXJ0eShsKT8obnVsbCE9dSYmIm9uU2Nyb2xsIj09PWwmJkJyKCJzY3JvbGwiLGUpLGF8fGM9PT11fHwoYT1bXSkpOihhPWF8fFtdKS5wdXNoKGwsdSkpfW4mJihhPWF8fFtdKS5wdXNoKCJzdHlsZSIsbik7dmFyIGw9YTsodC51cGRhdGVRdWV1ZT1sKSYmKHQuZmxhZ3N8PTQpfX0sTXM9ZnVuY3Rpb24oZSx0LG4scil7biE9PXImJih0LmZsYWdzfD00KX07dmFyIFFzPSExLEtzPSExLFpzPSJmdW5jdGlvbiI9PXR5cGVvZiBXZWFrU2V0P1dlYWtTZXQ6U2V0LFhzPW51bGw7ZnVuY3Rpb24gSnMoZSx0KXt2YXIgbj1lLnJlZjtpZihudWxsIT09bilpZigiZnVuY3Rpb24iPT10eXBlb2Ygbil0cnl7bihudWxsKX1jYXRjaChuKXtDdShlLHQsbil9ZWxzZSBuLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBlYyhlLHQsbil7dHJ5e24oKX1jYXRjaChuKXtDdShlLHQsbil9fXZhciB0Yz0hMTtmdW5jdGlvbiBuYyhlLHQsbil7dmFyIHI9dC51cGRhdGVRdWV1ZTtpZihudWxsIT09KHI9bnVsbCE9PXI/ci5sYXN0RWZmZWN0Om51bGwpKXt2YXIgbz1yPXIubmV4dDtkb3tpZigoby50YWcmZSk9PT1lKXt2YXIgaT1vLmRlc3Ryb3k7by5kZXN0cm95PXZvaWQgMCx2b2lkIDAhPT1pJiZlYyh0LG4saSl9bz1vLm5leHR9d2hpbGUobyE9PXIpfX1mdW5jdGlvbiByYyhlLHQpe2lmKG51bGwhPT0odD1udWxsIT09KHQ9dC51cGRhdGVRdWV1ZSk/dC5sYXN0RWZmZWN0Om51bGwpKXt2YXIgbj10PXQubmV4dDtkb3tpZigobi50YWcmZSk9PT1lKXt2YXIgcj1uLmNyZWF0ZTtuLmRlc3Ryb3k9cigpfW49bi5uZXh0fXdoaWxlKG4hPT10KX19ZnVuY3Rpb24gb2MoZSl7dmFyIHQ9ZS5yZWY7aWYobnVsbCE9PXQpe3ZhciBuPWUuc3RhdGVOb2RlO2UudGFnLGU9biwiZnVuY3Rpb24iPT10eXBlb2YgdD90KGUpOnQuY3VycmVudD1lfX1mdW5jdGlvbiBpYyhlKXt2YXIgdD1lLmFsdGVybmF0ZTtudWxsIT09dCYmKGUuYWx0ZXJuYXRlPW51bGwsaWModCkpLGUuY2hpbGQ9bnVsbCxlLmRlbGV0aW9ucz1udWxsLGUuc2libGluZz1udWxsLDU9PT1lLnRhZyYmKG51bGwhPT0odD1lLnN0YXRlTm9kZSkmJihkZWxldGUgdFtwb10sZGVsZXRlIHRbaG9dLGRlbGV0ZSB0W2dvXSxkZWxldGUgdFt5b10sZGVsZXRlIHRbdm9dKSksZS5zdGF0ZU5vZGU9bnVsbCxlLnJldHVybj1udWxsLGUuZGVwZW5kZW5jaWVzPW51bGwsZS5tZW1vaXplZFByb3BzPW51bGwsZS5tZW1vaXplZFN0YXRlPW51bGwsZS5wZW5kaW5nUHJvcHM9bnVsbCxlLnN0YXRlTm9kZT1udWxsLGUudXBkYXRlUXVldWU9bnVsbH1mdW5jdGlvbiBhYyhlKXtyZXR1cm4gNT09PWUudGFnfHwzPT09ZS50YWd8fDQ9PT1lLnRhZ31mdW5jdGlvbiBzYyhlKXtlOmZvcig7Oyl7Zm9yKDtudWxsPT09ZS5zaWJsaW5nOyl7aWYobnVsbD09PWUucmV0dXJufHxhYyhlLnJldHVybikpcmV0dXJuIG51bGw7ZT1lLnJldHVybn1mb3IoZS5zaWJsaW5nLnJldHVybj1lLnJldHVybixlPWUuc2libGluZzs1IT09ZS50YWcmJjYhPT1lLnRhZyYmMTghPT1lLnRhZzspe2lmKDImZS5mbGFncyljb250aW51ZSBlO2lmKG51bGw9PT1lLmNoaWxkfHw0PT09ZS50YWcpY29udGludWUgZTtlLmNoaWxkLnJldHVybj1lLGU9ZS5jaGlsZH1pZighKDImZS5mbGFncykpcmV0dXJuIGUuc3RhdGVOb2RlfX1mdW5jdGlvbiBjYyhlLHQsbil7dmFyIHI9ZS50YWc7aWYoNT09PXJ8fDY9PT1yKWU9ZS5zdGF0ZU5vZGUsdD84PT09bi5ub2RlVHlwZT9uLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdCk6bi5pbnNlcnRCZWZvcmUoZSx0KTooOD09PW4ubm9kZVR5cGU/KHQ9bi5wYXJlbnROb2RlKS5pbnNlcnRCZWZvcmUoZSxuKToodD1uKS5hcHBlbmRDaGlsZChlKSxudWxsIT0obj1uLl9yZWFjdFJvb3RDb250YWluZXIpfHxudWxsIT09dC5vbmNsaWNrfHwodC5vbmNsaWNrPUpyKSk7ZWxzZSBpZig0IT09ciYmbnVsbCE9PShlPWUuY2hpbGQpKWZvcihjYyhlLHQsbiksZT1lLnNpYmxpbmc7bnVsbCE9PWU7KWNjKGUsdCxuKSxlPWUuc2libGluZ31mdW5jdGlvbiB1YyhlLHQsbil7dmFyIHI9ZS50YWc7aWYoNT09PXJ8fDY9PT1yKWU9ZS5zdGF0ZU5vZGUsdD9uLmluc2VydEJlZm9yZShlLHQpOm4uYXBwZW5kQ2hpbGQoZSk7ZWxzZSBpZig0IT09ciYmbnVsbCE9PShlPWUuY2hpbGQpKWZvcih1YyhlLHQsbiksZT1lLnNpYmxpbmc7bnVsbCE9PWU7KXVjKGUsdCxuKSxlPWUuc2libGluZ312YXIgbGM9bnVsbCxkYz0hMTtmdW5jdGlvbiBmYyhlLHQsbil7Zm9yKG49bi5jaGlsZDtudWxsIT09bjspcGMoZSx0LG4pLG49bi5zaWJsaW5nfWZ1bmN0aW9uIHBjKGUsdCxuKXtpZihpdCYmImZ1bmN0aW9uIj09dHlwZW9mIGl0Lm9uQ29tbWl0RmliZXJVbm1vdW50KXRyeXtpdC5vbkNvbW1pdEZpYmVyVW5tb3VudChvdCxuKX1jYXRjaChlKXt9c3dpdGNoKG4udGFnKXtjYXNlIDU6S3N8fEpzKG4sdCk7Y2FzZSA2OnZhciByPWxjLG89ZGM7bGM9bnVsbCxmYyhlLHQsbiksZGM9byxudWxsIT09KGxjPXIpJiYoZGM/KGU9bGMsbj1uLnN0YXRlTm9kZSw4PT09ZS5ub2RlVHlwZT9lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobik6ZS5yZW1vdmVDaGlsZChuKSk6bGMucmVtb3ZlQ2hpbGQobi5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDE4Om51bGwhPT1sYyYmKGRjPyhlPWxjLG49bi5zdGF0ZU5vZGUsOD09PWUubm9kZVR5cGU/Y28oZS5wYXJlbnROb2RlLG4pOjE9PT1lLm5vZGVUeXBlJiZjbyhlLG4pLHp0KGUpKTpjbyhsYyxuLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgNDpyPWxjLG89ZGMsbGM9bi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxkYz0hMCxmYyhlLHQsbiksbGM9cixkYz1vO2JyZWFrO2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTppZighS3MmJihudWxsIT09KHI9bi51cGRhdGVRdWV1ZSkmJm51bGwhPT0ocj1yLmxhc3RFZmZlY3QpKSl7bz1yPXIubmV4dDtkb3t2YXIgaT1vLGE9aS5kZXN0cm95O2k9aS50YWcsdm9pZCAwIT09YSYmKDImaXx8NCZpKSYmZWMobix0LGEpLG89by5uZXh0fXdoaWxlKG8hPT1yKX1mYyhlLHQsbik7YnJlYWs7Y2FzZSAxOmlmKCFLcyYmKEpzKG4sdCksImZ1bmN0aW9uIj09dHlwZW9mKHI9bi5zdGF0ZU5vZGUpLmNvbXBvbmVudFdpbGxVbm1vdW50KSl0cnl7ci5wcm9wcz1uLm1lbW9pemVkUHJvcHMsci5zdGF0ZT1uLm1lbW9pemVkU3RhdGUsci5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKGUpe0N1KG4sdCxlKX1mYyhlLHQsbik7YnJlYWs7Y2FzZSAyMTpmYyhlLHQsbik7YnJlYWs7Y2FzZSAyMjoxJm4ubW9kZT8oS3M9KHI9S3MpfHxudWxsIT09bi5tZW1vaXplZFN0YXRlLGZjKGUsdCxuKSxLcz1yKTpmYyhlLHQsbik7YnJlYWs7ZGVmYXVsdDpmYyhlLHQsbil9fWZ1bmN0aW9uIGhjKGUpe3ZhciB0PWUudXBkYXRlUXVldWU7aWYobnVsbCE9PXQpe2UudXBkYXRlUXVldWU9bnVsbDt2YXIgbj1lLnN0YXRlTm9kZTtudWxsPT09biYmKG49ZS5zdGF0ZU5vZGU9bmV3IFpzKSx0LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHI9VHUuYmluZChudWxsLGUsdCk7bi5oYXModCl8fChuLmFkZCh0KSx0LnRoZW4ocixyKSl9KX19ZnVuY3Rpb24gbWMoZSx0KXt2YXIgbj10LmRlbGV0aW9ucztpZihudWxsIT09bilmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89bltyXTt0cnl7dmFyIGE9ZSxzPXQsYz1zO2U6Zm9yKDtudWxsIT09Yzspe3N3aXRjaChjLnRhZyl7Y2FzZSA1OmxjPWMuc3RhdGVOb2RlLGRjPSExO2JyZWFrIGU7Y2FzZSAzOmNhc2UgNDpsYz1jLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGRjPSEwO2JyZWFrIGV9Yz1jLnJldHVybn1pZihudWxsPT09bGMpdGhyb3cgRXJyb3IoaSgxNjApKTtwYyhhLHMsbyksbGM9bnVsbCxkYz0hMTt2YXIgdT1vLmFsdGVybmF0ZTtudWxsIT09dSYmKHUucmV0dXJuPW51bGwpLG8ucmV0dXJuPW51bGx9Y2F0Y2goZSl7Q3Uobyx0LGUpfX1pZigxMjg1NCZ0LnN1YnRyZWVGbGFncylmb3IodD10LmNoaWxkO251bGwhPT10OylnYyh0LGUpLHQ9dC5zaWJsaW5nfWZ1bmN0aW9uIGdjKGUsdCl7dmFyIG49ZS5hbHRlcm5hdGUscj1lLmZsYWdzO3N3aXRjaChlLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmlmKG1jKHQsZSkseWMoZSksNCZyKXt0cnl7bmMoMyxlLGUucmV0dXJuKSxyYygzLGUpfWNhdGNoKHQpe0N1KGUsZS5yZXR1cm4sdCl9dHJ5e25jKDUsZSxlLnJldHVybil9Y2F0Y2godCl7Q3UoZSxlLnJldHVybix0KX19YnJlYWs7Y2FzZSAxOm1jKHQsZSkseWMoZSksNTEyJnImJm51bGwhPT1uJiZKcyhuLG4ucmV0dXJuKTticmVhaztjYXNlIDU6aWYobWModCxlKSx5YyhlKSw1MTImciYmbnVsbCE9PW4mJkpzKG4sbi5yZXR1cm4pLDMyJmUuZmxhZ3Mpe3ZhciBvPWUuc3RhdGVOb2RlO3RyeXtmZShvLCIiKX1jYXRjaCh0KXtDdShlLGUucmV0dXJuLHQpfX1pZig0JnImJm51bGwhPShvPWUuc3RhdGVOb2RlKSl7dmFyIGE9ZS5tZW1vaXplZFByb3BzLHM9bnVsbCE9PW4/bi5tZW1vaXplZFByb3BzOmEsYz1lLnR5cGUsdT1lLnVwZGF0ZVF1ZXVlO2lmKGUudXBkYXRlUXVldWU9bnVsbCxudWxsIT09dSl0cnl7ImlucHV0Ij09PWMmJiJyYWRpbyI9PT1hLnR5cGUmJm51bGwhPWEubmFtZSYmWihvLGEpLGJlKGMscyk7dmFyIGw9YmUoYyxhKTtmb3Iocz0wO3M8dS5sZW5ndGg7cys9Mil7dmFyIGQ9dVtzXSxmPXVbcysxXTsic3R5bGUiPT09ZD9nZShvLGYpOiJkYW5nZXJvdXNseVNldElubmVySFRNTCI9PT1kP2RlKG8sZik6ImNoaWxkcmVuIj09PWQ/ZmUobyxmKTpiKG8sZCxmLGwpfXN3aXRjaChjKXtjYXNlImlucHV0IjpYKG8sYSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6aWUobyxhKTticmVhaztjYXNlInNlbGVjdCI6dmFyIHA9by5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlO28uX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZT0hIWEubXVsdGlwbGU7dmFyIGg9YS52YWx1ZTtudWxsIT1oP25lKG8sISFhLm11bHRpcGxlLGgsITEpOnAhPT0hIWEubXVsdGlwbGUmJihudWxsIT1hLmRlZmF1bHRWYWx1ZT9uZShvLCEhYS5tdWx0aXBsZSxhLmRlZmF1bHRWYWx1ZSwhMCk6bmUobywhIWEubXVsdGlwbGUsYS5tdWx0aXBsZT9bXToiIiwhMSkpfW9baG9dPWF9Y2F0Y2godCl7Q3UoZSxlLnJldHVybix0KX19YnJlYWs7Y2FzZSA2OmlmKG1jKHQsZSkseWMoZSksNCZyKXtpZihudWxsPT09ZS5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IoaSgxNjIpKTtvPWUuc3RhdGVOb2RlLGE9ZS5tZW1vaXplZFByb3BzO3RyeXtvLm5vZGVWYWx1ZT1hfWNhdGNoKHQpe0N1KGUsZS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgMzppZihtYyh0LGUpLHljKGUpLDQmciYmbnVsbCE9PW4mJm4ubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpdHJ5e3p0KHQuY29udGFpbmVySW5mbyl9Y2F0Y2godCl7Q3UoZSxlLnJldHVybix0KX1icmVhaztjYXNlIDQ6ZGVmYXVsdDptYyh0LGUpLHljKGUpO2JyZWFrO2Nhc2UgMTM6bWModCxlKSx5YyhlKSw4MTkyJihvPWUuY2hpbGQpLmZsYWdzJiYoYT1udWxsIT09by5tZW1vaXplZFN0YXRlLG8uc3RhdGVOb2RlLmlzSGlkZGVuPWEsIWF8fG51bGwhPT1vLmFsdGVybmF0ZSYmbnVsbCE9PW8uYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGV8fChVYz1aZSgpKSksNCZyJiZoYyhlKTticmVhaztjYXNlIDIyOmlmKGQ9bnVsbCE9PW4mJm51bGwhPT1uLm1lbW9pemVkU3RhdGUsMSZlLm1vZGU/KEtzPShsPUtzKXx8ZCxtYyh0LGUpLEtzPWwpOm1jKHQsZSkseWMoZSksODE5MiZyKXtpZihsPW51bGwhPT1lLm1lbW9pemVkU3RhdGUsKGUuc3RhdGVOb2RlLmlzSGlkZGVuPWwpJiYhZCYmMSZlLm1vZGUpZm9yKFhzPWUsZD1lLmNoaWxkO251bGwhPT1kOyl7Zm9yKGY9WHM9ZDtudWxsIT09WHM7KXtzd2l0Y2goaD0ocD1YcykuY2hpbGQscC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpuYyg0LHAscC5yZXR1cm4pO2JyZWFrO2Nhc2UgMTpKcyhwLHAucmV0dXJuKTt2YXIgbT1wLnN0YXRlTm9kZTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbS5jb21wb25lbnRXaWxsVW5tb3VudCl7cj1wLG49cC5yZXR1cm47dHJ5e3Q9cixtLnByb3BzPXQubWVtb2l6ZWRQcm9wcyxtLnN0YXRlPXQubWVtb2l6ZWRTdGF0ZSxtLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goZSl7Q3UocixuLGUpfX1icmVhaztjYXNlIDU6SnMocCxwLnJldHVybik7YnJlYWs7Y2FzZSAyMjppZihudWxsIT09cC5tZW1vaXplZFN0YXRlKXtfYyhmKTtjb250aW51ZX19bnVsbCE9PWg/KGgucmV0dXJuPXAsWHM9aCk6X2MoZil9ZD1kLnNpYmxpbmd9ZTpmb3IoZD1udWxsLGY9ZTs7KXtpZig1PT09Zi50YWcpe2lmKG51bGw9PT1kKXtkPWY7dHJ5e289Zi5zdGF0ZU5vZGUsbD8iZnVuY3Rpb24iPT10eXBlb2YoYT1vLnN0eWxlKS5zZXRQcm9wZXJ0eT9hLnNldFByb3BlcnR5KCJkaXNwbGF5Iiwibm9uZSIsImltcG9ydGFudCIpOmEuZGlzcGxheT0ibm9uZSI6KGM9Zi5zdGF0ZU5vZGUscz1udWxsIT0odT1mLm1lbW9pemVkUHJvcHMuc3R5bGUpJiZ1Lmhhc093blByb3BlcnR5KCJkaXNwbGF5Iik/dS5kaXNwbGF5Om51bGwsYy5zdHlsZS5kaXNwbGF5PW1lKCJkaXNwbGF5IixzKSl9Y2F0Y2godCl7Q3UoZSxlLnJldHVybix0KX19fWVsc2UgaWYoNj09PWYudGFnKXtpZihudWxsPT09ZCl0cnl7Zi5zdGF0ZU5vZGUubm9kZVZhbHVlPWw/IiI6Zi5tZW1vaXplZFByb3BzfWNhdGNoKHQpe0N1KGUsZS5yZXR1cm4sdCl9fWVsc2UgaWYoKDIyIT09Zi50YWcmJjIzIT09Zi50YWd8fG51bGw9PT1mLm1lbW9pemVkU3RhdGV8fGY9PT1lKSYmbnVsbCE9PWYuY2hpbGQpe2YuY2hpbGQucmV0dXJuPWYsZj1mLmNoaWxkO2NvbnRpbnVlfWlmKGY9PT1lKWJyZWFrIGU7Zm9yKDtudWxsPT09Zi5zaWJsaW5nOyl7aWYobnVsbD09PWYucmV0dXJufHxmLnJldHVybj09PWUpYnJlYWsgZTtkPT09ZiYmKGQ9bnVsbCksZj1mLnJldHVybn1kPT09ZiYmKGQ9bnVsbCksZi5zaWJsaW5nLnJldHVybj1mLnJldHVybixmPWYuc2libGluZ319YnJlYWs7Y2FzZSAxOTptYyh0LGUpLHljKGUpLDQmciYmaGMoZSk7Y2FzZSAyMTp9fWZ1bmN0aW9uIHljKGUpe3ZhciB0PWUuZmxhZ3M7aWYoMiZ0KXt0cnl7ZTp7Zm9yKHZhciBuPWUucmV0dXJuO251bGwhPT1uOyl7aWYoYWMobikpe3ZhciByPW47YnJlYWsgZX1uPW4ucmV0dXJufXRocm93IEVycm9yKGkoMTYwKSl9c3dpdGNoKHIudGFnKXtjYXNlIDU6dmFyIG89ci5zdGF0ZU5vZGU7MzImci5mbGFncyYmKGZlKG8sIiIpLHIuZmxhZ3MmPS0zMyksdWMoZSxzYyhlKSxvKTticmVhaztjYXNlIDM6Y2FzZSA0OnZhciBhPXIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87Y2MoZSxzYyhlKSxhKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKGkoMTYxKSl9fWNhdGNoKHQpe0N1KGUsZS5yZXR1cm4sdCl9ZS5mbGFncyY9LTN9NDA5NiZ0JiYoZS5mbGFncyY9LTQwOTcpfWZ1bmN0aW9uIHZjKGUsdCxuKXtYcz1lLGJjKGUsdCxuKX1mdW5jdGlvbiBiYyhlLHQsbil7Zm9yKHZhciByPSEhKDEmZS5tb2RlKTtudWxsIT09WHM7KXt2YXIgbz1YcyxpPW8uY2hpbGQ7aWYoMjI9PT1vLnRhZyYmcil7dmFyIGE9bnVsbCE9PW8ubWVtb2l6ZWRTdGF0ZXx8UXM7aWYoIWEpe3ZhciBzPW8uYWx0ZXJuYXRlLGM9bnVsbCE9PXMmJm51bGwhPT1zLm1lbW9pemVkU3RhdGV8fEtzO3M9UXM7dmFyIHU9S3M7aWYoUXM9YSwoS3M9YykmJiF1KWZvcihYcz1vO251bGwhPT1YczspYz0oYT1YcykuY2hpbGQsMjI9PT1hLnRhZyYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZT9TYyhvKTpudWxsIT09Yz8oYy5yZXR1cm49YSxYcz1jKTpTYyhvKTtmb3IoO251bGwhPT1pOylYcz1pLGJjKGksdCxuKSxpPWkuc2libGluZztYcz1vLFFzPXMsS3M9dX13YyhlKX1lbHNlIDg3NzImby5zdWJ0cmVlRmxhZ3MmJm51bGwhPT1pPyhpLnJldHVybj1vLFhzPWkpOndjKGUpfX1mdW5jdGlvbiB3YyhlKXtmb3IoO251bGwhPT1Yczspe3ZhciB0PVhzO2lmKDg3NzImdC5mbGFncyl7dmFyIG49dC5hbHRlcm5hdGU7dHJ5e2lmKDg3NzImdC5mbGFncylzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6S3N8fHJjKDUsdCk7YnJlYWs7Y2FzZSAxOnZhciByPXQuc3RhdGVOb2RlO2lmKDQmdC5mbGFncyYmIUtzKWlmKG51bGw9PT1uKXIuY29tcG9uZW50RGlkTW91bnQoKTtlbHNle3ZhciBvPXQuZWxlbWVudFR5cGU9PT10LnR5cGU/bi5tZW1vaXplZFByb3BzOm5zKHQudHlwZSxuLm1lbW9pemVkUHJvcHMpO3IuY29tcG9uZW50RGlkVXBkYXRlKG8sbi5tZW1vaXplZFN0YXRlLHIuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfXZhciBhPXQudXBkYXRlUXVldWU7bnVsbCE9PWEmJiRpKHQsYSxyKTticmVhaztjYXNlIDM6dmFyIHM9dC51cGRhdGVRdWV1ZTtpZihudWxsIT09cyl7aWYobj1udWxsLG51bGwhPT10LmNoaWxkKXN3aXRjaCh0LmNoaWxkLnRhZyl7Y2FzZSA1OmNhc2UgMTpuPXQuY2hpbGQuc3RhdGVOb2RlfSRpKHQscyxuKX1icmVhaztjYXNlIDU6dmFyIGM9dC5zdGF0ZU5vZGU7aWYobnVsbD09PW4mJjQmdC5mbGFncyl7bj1jO3ZhciB1PXQubWVtb2l6ZWRQcm9wcztzd2l0Y2godC50eXBlKXtjYXNlImJ1dHRvbiI6Y2FzZSJpbnB1dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEiOnUuYXV0b0ZvY3VzJiZuLmZvY3VzKCk7YnJlYWs7Y2FzZSJpbWciOnUuc3JjJiYobi5zcmM9dS5zcmMpfX1icmVhaztjYXNlIDY6Y2FzZSA0OmNhc2UgMTI6Y2FzZSAxOTpjYXNlIDE3OmNhc2UgMjE6Y2FzZSAyMjpjYXNlIDIzOmNhc2UgMjU6YnJlYWs7Y2FzZSAxMzppZihudWxsPT09dC5tZW1vaXplZFN0YXRlKXt2YXIgbD10LmFsdGVybmF0ZTtpZihudWxsIT09bCl7dmFyIGQ9bC5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kKXt2YXIgZj1kLmRlaHlkcmF0ZWQ7bnVsbCE9PWYmJnp0KGYpfX19YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihpKDE2MykpfUtzfHw1MTImdC5mbGFncyYmb2ModCl9Y2F0Y2goZSl7Q3UodCx0LnJldHVybixlKX19aWYodD09PWUpe1hzPW51bGw7YnJlYWt9aWYobnVsbCE9PShuPXQuc2libGluZykpe24ucmV0dXJuPXQucmV0dXJuLFhzPW47YnJlYWt9WHM9dC5yZXR1cm59fWZ1bmN0aW9uIF9jKGUpe2Zvcig7bnVsbCE9PVhzOyl7dmFyIHQ9WHM7aWYodD09PWUpe1hzPW51bGw7YnJlYWt9dmFyIG49dC5zaWJsaW5nO2lmKG51bGwhPT1uKXtuLnJldHVybj10LnJldHVybixYcz1uO2JyZWFrfVhzPXQucmV0dXJufX1mdW5jdGlvbiBTYyhlKXtmb3IoO251bGwhPT1Yczspe3ZhciB0PVhzO3RyeXtzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6dmFyIG49dC5yZXR1cm47dHJ5e3JjKDQsdCl9Y2F0Y2goZSl7Q3UodCxuLGUpfWJyZWFrO2Nhc2UgMTp2YXIgcj10LnN0YXRlTm9kZTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygci5jb21wb25lbnREaWRNb3VudCl7dmFyIG89dC5yZXR1cm47dHJ5e3IuY29tcG9uZW50RGlkTW91bnQoKX1jYXRjaChlKXtDdSh0LG8sZSl9fXZhciBpPXQucmV0dXJuO3RyeXtvYyh0KX1jYXRjaChlKXtDdSh0LGksZSl9YnJlYWs7Y2FzZSA1OnZhciBhPXQucmV0dXJuO3RyeXtvYyh0KX1jYXRjaChlKXtDdSh0LGEsZSl9fX1jYXRjaChlKXtDdSh0LHQucmV0dXJuLGUpfWlmKHQ9PT1lKXtYcz1udWxsO2JyZWFrfXZhciBzPXQuc2libGluZztpZihudWxsIT09cyl7cy5yZXR1cm49dC5yZXR1cm4sWHM9czticmVha31Ycz10LnJldHVybn19dmFyIEVjLENjPU1hdGguY2VpbCxrYz13LlJlYWN0Q3VycmVudERpc3BhdGNoZXIsQWM9dy5SZWFjdEN1cnJlbnRPd25lcixPYz13LlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLFRjPTAseGM9bnVsbCxJYz1udWxsLE5jPTAsTGM9MCxQYz1rbygwKSxNYz0wLFJjPW51bGwsRGM9MCxGYz0wLGpjPTAsQmM9bnVsbCxWYz1udWxsLFVjPTAsemM9MS8wLEhjPW51bGwsJGM9ITEsWWM9bnVsbCxxYz1udWxsLFdjPSExLEdjPW51bGwsUWM9MCxLYz0wLFpjPW51bGwsWGM9LTEsSmM9MDtmdW5jdGlvbiBldSgpe3JldHVybiA2JlRjP1plKCk6LTEhPT1YYz9YYzpYYz1aZSgpfWZ1bmN0aW9uIHR1KGUpe3JldHVybiAxJmUubW9kZT8yJlRjJiYwIT09TmM/TmMmLU5jOm51bGwhPT1naS50cmFuc2l0aW9uPygwPT09SmMmJihKYz1tdCgpKSxKYyk6MCE9PShlPWJ0KT9lOmU9dm9pZCAwPT09KGU9d2luZG93LmV2ZW50KT8xNjpLdChlLnR5cGUpOjF9ZnVuY3Rpb24gbnUoZSx0LG4scil7aWYoNTA8S2MpdGhyb3cgS2M9MCxaYz1udWxsLEVycm9yKGkoMTg1KSk7eXQoZSxuLHIpLDImVGMmJmU9PT14Y3x8KGU9PT14YyYmKCEoMiZUYykmJihGY3w9biksND09PU1jJiZzdShlLE5jKSkscnUoZSxyKSwxPT09biYmMD09PVRjJiYhKDEmdC5tb2RlKSYmKHpjPVplKCkrNTAwLFZvJiZIbygpKSl9ZnVuY3Rpb24gcnUoZSx0KXt2YXIgbj1lLmNhbGxiYWNrTm9kZTshZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49ZS5zdXNwZW5kZWRMYW5lcyxyPWUucGluZ2VkTGFuZXMsbz1lLmV4cGlyYXRpb25UaW1lcyxpPWUucGVuZGluZ0xhbmVzOzA8aTspe3ZhciBhPTMxLWF0KGkpLHM9MTw8YSxjPW9bYV07LTE9PT1jPzAhPT0ocyZuKSYmMD09PShzJnIpfHwob1thXT1wdChzLHQpKTpjPD10JiYoZS5leHBpcmVkTGFuZXN8PXMpLGkmPX5zfX0oZSx0KTt2YXIgcj1mdChlLGU9PT14Yz9OYzowKTtpZigwPT09ciludWxsIT09biYmR2UobiksZS5jYWxsYmFja05vZGU9bnVsbCxlLmNhbGxiYWNrUHJpb3JpdHk9MDtlbHNlIGlmKHQ9ciYtcixlLmNhbGxiYWNrUHJpb3JpdHkhPT10KXtpZihudWxsIT1uJiZHZShuKSwxPT09dCkwPT09ZS50YWc/ZnVuY3Rpb24oZSl7Vm89ITAsem8oZSl9KGN1LmJpbmQobnVsbCxlKSk6em8oY3UuYmluZChudWxsLGUpKSxhbyhmdW5jdGlvbigpeyEoNiZUYykmJkhvKCl9KSxuPW51bGw7ZWxzZXtzd2l0Y2god3Qocikpe2Nhc2UgMTpuPUplO2JyZWFrO2Nhc2UgNDpuPWV0O2JyZWFrO2Nhc2UgMTY6ZGVmYXVsdDpuPXR0O2JyZWFrO2Nhc2UgNTM2ODcwOTEyOm49cnR9bj14dShuLG91LmJpbmQobnVsbCxlKSl9ZS5jYWxsYmFja1ByaW9yaXR5PXQsZS5jYWxsYmFja05vZGU9bn19ZnVuY3Rpb24gb3UoZSx0KXtpZihYYz0tMSxKYz0wLDYmVGMpdGhyb3cgRXJyb3IoaSgzMjcpKTt2YXIgbj1lLmNhbGxiYWNrTm9kZTtpZihTdSgpJiZlLmNhbGxiYWNrTm9kZSE9PW4pcmV0dXJuIG51bGw7dmFyIHI9ZnQoZSxlPT09eGM/TmM6MCk7aWYoMD09PXIpcmV0dXJuIG51bGw7aWYoMzAmcnx8MCE9PShyJmUuZXhwaXJlZExhbmVzKXx8dCl0PWd1KGUscik7ZWxzZXt0PXI7dmFyIG89VGM7VGN8PTI7dmFyIGE9aHUoKTtmb3IoeGM9PT1lJiZOYz09PXR8fChIYz1udWxsLHpjPVplKCkrNTAwLGZ1KGUsdCkpOzspdHJ5e3Z1KCk7YnJlYWt9Y2F0Y2godCl7cHUoZSx0KX1PaSgpLGtjLmN1cnJlbnQ9YSxUYz1vLG51bGwhPT1JYz90PTA6KHhjPW51bGwsTmM9MCx0PU1jKX1pZigwIT09dCl7aWYoMj09PXQmJigwIT09KG89aHQoZSkpJiYocj1vLHQ9aXUoZSxvKSkpLDE9PT10KXRocm93IG49UmMsZnUoZSwwKSxzdShlLHIpLHJ1KGUsWmUoKSksbjtpZig2PT09dClzdShlLHIpO2Vsc2V7aWYobz1lLmN1cnJlbnQuYWx0ZXJuYXRlLCEoMzAmcnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWU7Oyl7aWYoMTYzODQmdC5mbGFncyl7dmFyIG49dC51cGRhdGVRdWV1ZTtpZihudWxsIT09biYmbnVsbCE9PShuPW4uc3RvcmVzKSlmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89bltyXSxpPW8uZ2V0U25hcHNob3Q7bz1vLnZhbHVlO3RyeXtpZighc3IoaSgpLG8pKXJldHVybiExfWNhdGNoKGUpe3JldHVybiExfX19aWYobj10LmNoaWxkLDE2Mzg0JnQuc3VidHJlZUZsYWdzJiZudWxsIT09biluLnJldHVybj10LHQ9bjtlbHNle2lmKHQ9PT1lKWJyZWFrO2Zvcig7bnVsbD09PXQuc2libGluZzspe2lmKG51bGw9PT10LnJldHVybnx8dC5yZXR1cm49PT1lKXJldHVybiEwO3Q9dC5yZXR1cm59dC5zaWJsaW5nLnJldHVybj10LnJldHVybix0PXQuc2libGluZ319cmV0dXJuITB9KG8pfHwodD1ndShlLHIpLDI9PT10JiYoYT1odChlKSwwIT09YSYmKHI9YSx0PWl1KGUsYSkpKSwxIT09dCkpKXRocm93IG49UmMsZnUoZSwwKSxzdShlLHIpLHJ1KGUsWmUoKSksbjtzd2l0Y2goZS5maW5pc2hlZFdvcms9byxlLmZpbmlzaGVkTGFuZXM9cix0KXtjYXNlIDA6Y2FzZSAxOnRocm93IEVycm9yKGkoMzQ1KSk7Y2FzZSAyOmNhc2UgNTpfdShlLFZjLEhjKTticmVhaztjYXNlIDM6aWYoc3UoZSxyKSwoMTMwMDIzNDI0JnIpPT09ciYmMTA8KHQ9VWMrNTAwLVplKCkpKXtpZigwIT09ZnQoZSwwKSlicmVhaztpZigoKG89ZS5zdXNwZW5kZWRMYW5lcykmcikhPT1yKXtldSgpLGUucGluZ2VkTGFuZXN8PWUuc3VzcGVuZGVkTGFuZXMmbzticmVha31lLnRpbWVvdXRIYW5kbGU9cm8oX3UuYmluZChudWxsLGUsVmMsSGMpLHQpO2JyZWFrfV91KGUsVmMsSGMpO2JyZWFrO2Nhc2UgNDppZihzdShlLHIpLCg0MTk0MjQwJnIpPT09cilicmVhaztmb3IodD1lLmV2ZW50VGltZXMsbz0tMTswPHI7KXt2YXIgcz0zMS1hdChyKTthPTE8PHMsKHM9dFtzXSk+byYmKG89cyksciY9fmF9aWYocj1vLDEwPChyPSgxMjA+KHI9WmUoKS1yKT8xMjA6NDgwPnI/NDgwOjEwODA+cj8xMDgwOjE5MjA+cj8xOTIwOjNlMz5yPzNlMzo0MzIwPnI/NDMyMDoxOTYwKkNjKHIvMTk2MCkpLXIpKXtlLnRpbWVvdXRIYW5kbGU9cm8oX3UuYmluZChudWxsLGUsVmMsSGMpLHIpO2JyZWFrfV91KGUsVmMsSGMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoaSgzMjkpKX19fXJldHVybiBydShlLFplKCkpLGUuY2FsbGJhY2tOb2RlPT09bj9vdS5iaW5kKG51bGwsZSk6bnVsbH1mdW5jdGlvbiBpdShlLHQpe3ZhciBuPUJjO3JldHVybiBlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJihmdShlLHQpLmZsYWdzfD0yNTYpLDIhPT0oZT1ndShlLHQpKSYmKHQ9VmMsVmM9bixudWxsIT09dCYmYXUodCkpLGV9ZnVuY3Rpb24gYXUoZSl7bnVsbD09PVZjP1ZjPWU6VmMucHVzaC5hcHBseShWYyxlKX1mdW5jdGlvbiBzdShlLHQpe2Zvcih0Jj1+amMsdCY9fkZjLGUuc3VzcGVuZGVkTGFuZXN8PXQsZS5waW5nZWRMYW5lcyY9fnQsZT1lLmV4cGlyYXRpb25UaW1lczswPHQ7KXt2YXIgbj0zMS1hdCh0KSxyPTE8PG47ZVtuXT0tMSx0Jj1+cn19ZnVuY3Rpb24gY3UoZSl7aWYoNiZUYyl0aHJvdyBFcnJvcihpKDMyNykpO1N1KCk7dmFyIHQ9ZnQoZSwwKTtpZighKDEmdCkpcmV0dXJuIHJ1KGUsWmUoKSksbnVsbDt2YXIgbj1ndShlLHQpO2lmKDAhPT1lLnRhZyYmMj09PW4pe3ZhciByPWh0KGUpOzAhPT1yJiYodD1yLG49aXUoZSxyKSl9aWYoMT09PW4pdGhyb3cgbj1SYyxmdShlLDApLHN1KGUsdCkscnUoZSxaZSgpKSxuO2lmKDY9PT1uKXRocm93IEVycm9yKGkoMzQ1KSk7cmV0dXJuIGUuZmluaXNoZWRXb3JrPWUuY3VycmVudC5hbHRlcm5hdGUsZS5maW5pc2hlZExhbmVzPXQsX3UoZSxWYyxIYykscnUoZSxaZSgpKSxudWxsfWZ1bmN0aW9uIHV1KGUsdCl7dmFyIG49VGM7VGN8PTE7dHJ5e3JldHVybiBlKHQpfWZpbmFsbHl7MD09PShUYz1uKSYmKHpjPVplKCkrNTAwLFZvJiZIbygpKX19ZnVuY3Rpb24gbHUoZSl7bnVsbCE9PUdjJiYwPT09R2MudGFnJiYhKDYmVGMpJiZTdSgpO3ZhciB0PVRjO1RjfD0xO3ZhciBuPU9jLnRyYW5zaXRpb24scj1idDt0cnl7aWYoT2MudHJhbnNpdGlvbj1udWxsLGJ0PTEsZSlyZXR1cm4gZSgpfWZpbmFsbHl7YnQ9cixPYy50cmFuc2l0aW9uPW4sISg2JihUYz10KSkmJkhvKCl9fWZ1bmN0aW9uIGR1KCl7TGM9UGMuY3VycmVudCxBbyhQYyl9ZnVuY3Rpb24gZnUoZSx0KXtlLmZpbmlzaGVkV29yaz1udWxsLGUuZmluaXNoZWRMYW5lcz0wO3ZhciBuPWUudGltZW91dEhhbmRsZTtpZigtMSE9PW4mJihlLnRpbWVvdXRIYW5kbGU9LTEsb28obikpLG51bGwhPT1JYylmb3Iobj1JYy5yZXR1cm47bnVsbCE9PW47KXt2YXIgcj1uO3N3aXRjaChuaShyKSxyLnRhZyl7Y2FzZSAxOm51bGwhPShyPXIudHlwZS5jaGlsZENvbnRleHRUeXBlcykmJk1vKCk7YnJlYWs7Y2FzZSAzOlppKCksQW8oSW8pLEFvKHhvKSxyYSgpO2JyZWFrO2Nhc2UgNTpKaShyKTticmVhaztjYXNlIDQ6WmkoKTticmVhaztjYXNlIDEzOmNhc2UgMTk6QW8oZWEpO2JyZWFrO2Nhc2UgMTA6VGkoci50eXBlLl9jb250ZXh0KTticmVhaztjYXNlIDIyOmNhc2UgMjM6ZHUoKX1uPW4ucmV0dXJufWlmKHhjPWUsSWM9ZT1QdShlLmN1cnJlbnQsbnVsbCksTmM9TGM9dCxNYz0wLFJjPW51bGwsamM9RmM9RGM9MCxWYz1CYz1udWxsLG51bGwhPT1MaSl7Zm9yKHQ9MDt0PExpLmxlbmd0aDt0KyspaWYobnVsbCE9PShyPShuPUxpW3RdKS5pbnRlcmxlYXZlZCkpe24uaW50ZXJsZWF2ZWQ9bnVsbDt2YXIgbz1yLm5leHQsaT1uLnBlbmRpbmc7aWYobnVsbCE9PWkpe3ZhciBhPWkubmV4dDtpLm5leHQ9byxyLm5leHQ9YX1uLnBlbmRpbmc9cn1MaT1udWxsfXJldHVybiBlfWZ1bmN0aW9uIHB1KGUsdCl7Zm9yKDs7KXt2YXIgbj1JYzt0cnl7aWYoT2koKSxvYS5jdXJyZW50PVhhLGxhKXtmb3IodmFyIHI9c2EubWVtb2l6ZWRTdGF0ZTtudWxsIT09cjspe3ZhciBvPXIucXVldWU7bnVsbCE9PW8mJihvLnBlbmRpbmc9bnVsbCkscj1yLm5leHR9bGE9ITF9aWYoYWE9MCx1YT1jYT1zYT1udWxsLGRhPSExLGZhPTAsQWMuY3VycmVudD1udWxsLG51bGw9PT1ufHxudWxsPT09bi5yZXR1cm4pe01jPTEsUmM9dCxJYz1udWxsO2JyZWFrfWU6e3ZhciBhPWUscz1uLnJldHVybixjPW4sdT10O2lmKHQ9TmMsYy5mbGFnc3w9MzI3NjgsbnVsbCE9PXUmJiJvYmplY3QiPT10eXBlb2YgdSYmImZ1bmN0aW9uIj09dHlwZW9mIHUudGhlbil7dmFyIGw9dSxkPWMsZj1kLnRhZztpZighKDEmZC5tb2RlfHwwIT09ZiYmMTEhPT1mJiYxNSE9PWYpKXt2YXIgcD1kLmFsdGVybmF0ZTtwPyhkLnVwZGF0ZVF1ZXVlPXAudXBkYXRlUXVldWUsZC5tZW1vaXplZFN0YXRlPXAubWVtb2l6ZWRTdGF0ZSxkLmxhbmVzPXAubGFuZXMpOihkLnVwZGF0ZVF1ZXVlPW51bGwsZC5tZW1vaXplZFN0YXRlPW51bGwpfXZhciBoPWdzKHMpO2lmKG51bGwhPT1oKXtoLmZsYWdzJj0tMjU3LHlzKGgscyxjLDAsdCksMSZoLm1vZGUmJm1zKGEsbCx0KSx1PWw7dmFyIG09KHQ9aCkudXBkYXRlUXVldWU7aWYobnVsbD09PW0pe3ZhciBnPW5ldyBTZXQ7Zy5hZGQodSksdC51cGRhdGVRdWV1ZT1nfWVsc2UgbS5hZGQodSk7YnJlYWsgZX1pZighKDEmdCkpe21zKGEsbCx0KSxtdSgpO2JyZWFrIGV9dT1FcnJvcihpKDQyNikpfWVsc2UgaWYoaWkmJjEmYy5tb2RlKXt2YXIgeT1ncyhzKTtpZihudWxsIT09eSl7ISg2NTUzNiZ5LmZsYWdzKSYmKHkuZmxhZ3N8PTI1NikseXMoeSxzLGMsMCx0KSxtaSh1cyh1LGMpKTticmVhayBlfX1hPXU9dXModSxjKSw0IT09TWMmJihNYz0yKSxudWxsPT09QmM/QmM9W2FdOkJjLnB1c2goYSksYT1zO2Rve3N3aXRjaChhLnRhZyl7Y2FzZSAzOmEuZmxhZ3N8PTY1NTM2LHQmPS10LGEubGFuZXN8PXQsemkoYSxwcygwLHUsdCkpO2JyZWFrIGU7Y2FzZSAxOmM9dTt2YXIgdj1hLnR5cGUsYj1hLnN0YXRlTm9kZTtpZighKDEyOCZhLmZsYWdzfHwiZnVuY3Rpb24iIT10eXBlb2Ygdi5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3ImJihudWxsPT09Ynx8ImZ1bmN0aW9uIiE9dHlwZW9mIGIuY29tcG9uZW50RGlkQ2F0Y2h8fG51bGwhPT1xYyYmcWMuaGFzKGIpKSkpe2EuZmxhZ3N8PTY1NTM2LHQmPS10LGEubGFuZXN8PXQsemkoYSxocyhhLGMsdCkpO2JyZWFrIGV9fWE9YS5yZXR1cm59d2hpbGUobnVsbCE9PWEpfXd1KG4pfWNhdGNoKGUpe3Q9ZSxJYz09PW4mJm51bGwhPT1uJiYoSWM9bj1uLnJldHVybik7Y29udGludWV9YnJlYWt9fWZ1bmN0aW9uIGh1KCl7dmFyIGU9a2MuY3VycmVudDtyZXR1cm4ga2MuY3VycmVudD1YYSxudWxsPT09ZT9YYTplfWZ1bmN0aW9uIG11KCl7MCE9PU1jJiYzIT09TWMmJjIhPT1NY3x8KE1jPTQpLG51bGw9PT14Y3x8ISgyNjg0MzU0NTUmRGMpJiYhKDI2ODQzNTQ1NSZGYyl8fHN1KHhjLE5jKX1mdW5jdGlvbiBndShlLHQpe3ZhciBuPVRjO1RjfD0yO3ZhciByPWh1KCk7Zm9yKHhjPT09ZSYmTmM9PT10fHwoSGM9bnVsbCxmdShlLHQpKTs7KXRyeXt5dSgpO2JyZWFrfWNhdGNoKHQpe3B1KGUsdCl9aWYoT2koKSxUYz1uLGtjLmN1cnJlbnQ9cixudWxsIT09SWMpdGhyb3cgRXJyb3IoaSgyNjEpKTtyZXR1cm4geGM9bnVsbCxOYz0wLE1jfWZ1bmN0aW9uIHl1KCl7Zm9yKDtudWxsIT09SWM7KWJ1KEljKX1mdW5jdGlvbiB2dSgpe2Zvcig7bnVsbCE9PUljJiYhUWUoKTspYnUoSWMpfWZ1bmN0aW9uIGJ1KGUpe3ZhciB0PUVjKGUuYWx0ZXJuYXRlLGUsTGMpO2UubWVtb2l6ZWRQcm9wcz1lLnBlbmRpbmdQcm9wcyxudWxsPT09dD93dShlKTpJYz10LEFjLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiB3dShlKXt2YXIgdD1lO2Rve3ZhciBuPXQuYWx0ZXJuYXRlO2lmKGU9dC5yZXR1cm4sMzI3NjgmdC5mbGFncyl7aWYobnVsbCE9PShuPUdzKG4sdCkpKXJldHVybiBuLmZsYWdzJj0zMjc2Nyx2b2lkKEljPW4pO2lmKG51bGw9PT1lKXJldHVybiBNYz02LHZvaWQoSWM9bnVsbCk7ZS5mbGFnc3w9MzI3NjgsZS5zdWJ0cmVlRmxhZ3M9MCxlLmRlbGV0aW9ucz1udWxsfWVsc2UgaWYobnVsbCE9PShuPVdzKG4sdCxMYykpKXJldHVybiB2b2lkKEljPW4pO2lmKG51bGwhPT0odD10LnNpYmxpbmcpKXJldHVybiB2b2lkKEljPXQpO0ljPXQ9ZX13aGlsZShudWxsIT09dCk7MD09PU1jJiYoTWM9NSl9ZnVuY3Rpb24gX3UoZSx0LG4pe3ZhciByPWJ0LG89T2MudHJhbnNpdGlvbjt0cnl7T2MudHJhbnNpdGlvbj1udWxsLGJ0PTEsZnVuY3Rpb24oZSx0LG4scil7ZG97U3UoKX13aGlsZShudWxsIT09R2MpO2lmKDYmVGMpdGhyb3cgRXJyb3IoaSgzMjcpKTtuPWUuZmluaXNoZWRXb3JrO3ZhciBvPWUuZmluaXNoZWRMYW5lcztpZihudWxsPT09bilyZXR1cm4gbnVsbDtpZihlLmZpbmlzaGVkV29yaz1udWxsLGUuZmluaXNoZWRMYW5lcz0wLG49PT1lLmN1cnJlbnQpdGhyb3cgRXJyb3IoaSgxNzcpKTtlLmNhbGxiYWNrTm9kZT1udWxsLGUuY2FsbGJhY2tQcmlvcml0eT0wO3ZhciBhPW4ubGFuZXN8bi5jaGlsZExhbmVzO2lmKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5wZW5kaW5nTGFuZXMmfnQ7ZS5wZW5kaW5nTGFuZXM9dCxlLnN1c3BlbmRlZExhbmVzPTAsZS5waW5nZWRMYW5lcz0wLGUuZXhwaXJlZExhbmVzJj10LGUubXV0YWJsZVJlYWRMYW5lcyY9dCxlLmVudGFuZ2xlZExhbmVzJj10LHQ9ZS5lbnRhbmdsZW1lbnRzO3ZhciByPWUuZXZlbnRUaW1lcztmb3IoZT1lLmV4cGlyYXRpb25UaW1lczswPG47KXt2YXIgbz0zMS1hdChuKSxpPTE8PG87dFtvXT0wLHJbb109LTEsZVtvXT0tMSxuJj1+aX19KGUsYSksZT09PXhjJiYoSWM9eGM9bnVsbCxOYz0wKSwhKDIwNjQmbi5zdWJ0cmVlRmxhZ3MpJiYhKDIwNjQmbi5mbGFncyl8fFdjfHwoV2M9ITAseHUodHQsZnVuY3Rpb24oKXtyZXR1cm4gU3UoKSxudWxsfSkpLGE9ISEoMTU5OTAmbi5mbGFncyksISEoMTU5OTAmbi5zdWJ0cmVlRmxhZ3MpfHxhKXthPU9jLnRyYW5zaXRpb24sT2MudHJhbnNpdGlvbj1udWxsO3ZhciBzPWJ0O2J0PTE7dmFyIGM9VGM7VGN8PTQsQWMuY3VycmVudD1udWxsLGZ1bmN0aW9uKGUsdCl7aWYoZW89JHQscHIoZT1mcigpKSl7aWYoInNlbGVjdGlvblN0YXJ0ImluIGUpdmFyIG49e3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUuc2VsZWN0aW9uRW5kfTtlbHNlIGU6e3ZhciByPShuPShuPWUub3duZXJEb2N1bWVudCkmJm4uZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uJiZuLmdldFNlbGVjdGlvbigpO2lmKHImJjAhPT1yLnJhbmdlQ291bnQpe249ci5hbmNob3JOb2RlO3ZhciBvPXIuYW5jaG9yT2Zmc2V0LGE9ci5mb2N1c05vZGU7cj1yLmZvY3VzT2Zmc2V0O3RyeXtuLm5vZGVUeXBlLGEubm9kZVR5cGV9Y2F0Y2goZSl7bj1udWxsO2JyZWFrIGV9dmFyIHM9MCxjPS0xLHU9LTEsbD0wLGQ9MCxmPWUscD1udWxsO3Q6Zm9yKDs7KXtmb3IodmFyIGg7ZiE9PW58fDAhPT1vJiYzIT09Zi5ub2RlVHlwZXx8KGM9cytvKSxmIT09YXx8MCE9PXImJjMhPT1mLm5vZGVUeXBlfHwodT1zK3IpLDM9PT1mLm5vZGVUeXBlJiYocys9Zi5ub2RlVmFsdWUubGVuZ3RoKSxudWxsIT09KGg9Zi5maXJzdENoaWxkKTspcD1mLGY9aDtmb3IoOzspe2lmKGY9PT1lKWJyZWFrIHQ7aWYocD09PW4mJisrbD09PW8mJihjPXMpLHA9PT1hJiYrK2Q9PT1yJiYodT1zKSxudWxsIT09KGg9Zi5uZXh0U2libGluZykpYnJlYWs7cD0oZj1wKS5wYXJlbnROb2RlfWY9aH1uPS0xPT09Y3x8LTE9PT11P251bGw6e3N0YXJ0OmMsZW5kOnV9fWVsc2Ugbj1udWxsfW49bnx8e3N0YXJ0OjAsZW5kOjB9fWVsc2Ugbj1udWxsO2Zvcih0bz17Zm9jdXNlZEVsZW06ZSxzZWxlY3Rpb25SYW5nZTpufSwkdD0hMSxYcz10O251bGwhPT1YczspaWYoZT0odD1YcykuY2hpbGQsMTAyOCZ0LnN1YnRyZWVGbGFncyYmbnVsbCE9PWUpZS5yZXR1cm49dCxYcz1lO2Vsc2UgZm9yKDtudWxsIT09WHM7KXt0PVhzO3RyeXt2YXIgbT10LmFsdGVybmF0ZTtpZigxMDI0JnQuZmxhZ3Mpc3dpdGNoKHQudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmNhc2UgNTpjYXNlIDY6Y2FzZSA0OmNhc2UgMTc6YnJlYWs7Y2FzZSAxOmlmKG51bGwhPT1tKXt2YXIgZz1tLm1lbW9pemVkUHJvcHMseT1tLm1lbW9pemVkU3RhdGUsdj10LnN0YXRlTm9kZSxiPXYuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUodC5lbGVtZW50VHlwZT09PXQudHlwZT9nOm5zKHQudHlwZSxnKSx5KTt2Ll9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlPWJ9YnJlYWs7Y2FzZSAzOnZhciB3PXQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87MT09PXcubm9kZVR5cGU/dy50ZXh0Q29udGVudD0iIjo5PT09dy5ub2RlVHlwZSYmdy5kb2N1bWVudEVsZW1lbnQmJncucmVtb3ZlQ2hpbGQody5kb2N1bWVudEVsZW1lbnQpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoaSgxNjMpKX19Y2F0Y2goZSl7Q3UodCx0LnJldHVybixlKX1pZihudWxsIT09KGU9dC5zaWJsaW5nKSl7ZS5yZXR1cm49dC5yZXR1cm4sWHM9ZTticmVha31Ycz10LnJldHVybn1tPXRjLHRjPSExfShlLG4pLGdjKG4sZSksaHIodG8pLCR0PSEhZW8sdG89ZW89bnVsbCxlLmN1cnJlbnQ9bix2YyhuLGUsbyksS2UoKSxUYz1jLGJ0PXMsT2MudHJhbnNpdGlvbj1hfWVsc2UgZS5jdXJyZW50PW47aWYoV2MmJihXYz0hMSxHYz1lLFFjPW8pLGE9ZS5wZW5kaW5nTGFuZXMsMD09PWEmJihxYz1udWxsKSxmdW5jdGlvbihlKXtpZihpdCYmImZ1bmN0aW9uIj09dHlwZW9mIGl0Lm9uQ29tbWl0RmliZXJSb290KXRyeXtpdC5vbkNvbW1pdEZpYmVyUm9vdChvdCxlLHZvaWQgMCwhKDEyOCZ+ZS5jdXJyZW50LmZsYWdzKSl9Y2F0Y2goZSl7fX0obi5zdGF0ZU5vZGUpLHJ1KGUsWmUoKSksbnVsbCE9PXQpZm9yKHI9ZS5vblJlY292ZXJhYmxlRXJyb3Isbj0wO248dC5sZW5ndGg7bisrKW89dFtuXSxyKG8udmFsdWUse2NvbXBvbmVudFN0YWNrOm8uc3RhY2ssZGlnZXN0Om8uZGlnZXN0fSk7aWYoJGMpdGhyb3cgJGM9ITEsZT1ZYyxZYz1udWxsLGU7ISEoMSZRYykmJjAhPT1lLnRhZyYmU3UoKSxhPWUucGVuZGluZ0xhbmVzLDEmYT9lPT09WmM/S2MrKzooS2M9MCxaYz1lKTpLYz0wLEhvKCl9KGUsdCxuLHIpfWZpbmFsbHl7T2MudHJhbnNpdGlvbj1vLGJ0PXJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gU3UoKXtpZihudWxsIT09R2Mpe3ZhciBlPXd0KFFjKSx0PU9jLnRyYW5zaXRpb24sbj1idDt0cnl7aWYoT2MudHJhbnNpdGlvbj1udWxsLGJ0PTE2PmU/MTY6ZSxudWxsPT09R2MpdmFyIHI9ITE7ZWxzZXtpZihlPUdjLEdjPW51bGwsUWM9MCw2JlRjKXRocm93IEVycm9yKGkoMzMxKSk7dmFyIG89VGM7Zm9yKFRjfD00LFhzPWUuY3VycmVudDtudWxsIT09WHM7KXt2YXIgYT1YcyxzPWEuY2hpbGQ7aWYoMTYmWHMuZmxhZ3Mpe3ZhciBjPWEuZGVsZXRpb25zO2lmKG51bGwhPT1jKXtmb3IodmFyIHU9MDt1PGMubGVuZ3RoO3UrKyl7dmFyIGw9Y1t1XTtmb3IoWHM9bDtudWxsIT09WHM7KXt2YXIgZD1Ycztzd2l0Y2goZC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6bmMoOCxkLGEpfXZhciBmPWQuY2hpbGQ7aWYobnVsbCE9PWYpZi5yZXR1cm49ZCxYcz1mO2Vsc2UgZm9yKDtudWxsIT09WHM7KXt2YXIgcD0oZD1Ycykuc2libGluZyxoPWQucmV0dXJuO2lmKGljKGQpLGQ9PT1sKXtYcz1udWxsO2JyZWFrfWlmKG51bGwhPT1wKXtwLnJldHVybj1oLFhzPXA7YnJlYWt9WHM9aH19fXZhciBtPWEuYWx0ZXJuYXRlO2lmKG51bGwhPT1tKXt2YXIgZz1tLmNoaWxkO2lmKG51bGwhPT1nKXttLmNoaWxkPW51bGw7ZG97dmFyIHk9Zy5zaWJsaW5nO2cuc2libGluZz1udWxsLGc9eX13aGlsZShudWxsIT09Zyl9fVhzPWF9fWlmKDIwNjQmYS5zdWJ0cmVlRmxhZ3MmJm51bGwhPT1zKXMucmV0dXJuPWEsWHM9cztlbHNlIGU6Zm9yKDtudWxsIT09WHM7KXtpZigyMDQ4JihhPVhzKS5mbGFncylzd2l0Y2goYS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6bmMoOSxhLGEucmV0dXJuKX12YXIgdj1hLnNpYmxpbmc7aWYobnVsbCE9PXYpe3YucmV0dXJuPWEucmV0dXJuLFhzPXY7YnJlYWsgZX1Ycz1hLnJldHVybn19dmFyIGI9ZS5jdXJyZW50O2ZvcihYcz1iO251bGwhPT1Yczspe3ZhciB3PShzPVhzKS5jaGlsZDtpZigyMDY0JnMuc3VidHJlZUZsYWdzJiZudWxsIT09dyl3LnJldHVybj1zLFhzPXc7ZWxzZSBlOmZvcihzPWI7bnVsbCE9PVhzOyl7aWYoMjA0OCYoYz1YcykuZmxhZ3MpdHJ5e3N3aXRjaChjLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpyYyg5LGMpfX1jYXRjaChlKXtDdShjLGMucmV0dXJuLGUpfWlmKGM9PT1zKXtYcz1udWxsO2JyZWFrIGV9dmFyIF89Yy5zaWJsaW5nO2lmKG51bGwhPT1fKXtfLnJldHVybj1jLnJldHVybixYcz1fO2JyZWFrIGV9WHM9Yy5yZXR1cm59fWlmKFRjPW8sSG8oKSxpdCYmImZ1bmN0aW9uIj09dHlwZW9mIGl0Lm9uUG9zdENvbW1pdEZpYmVyUm9vdCl0cnl7aXQub25Qb3N0Q29tbWl0RmliZXJSb290KG90LGUpfWNhdGNoKGUpe31yPSEwfXJldHVybiByfWZpbmFsbHl7YnQ9bixPYy50cmFuc2l0aW9uPXR9fXJldHVybiExfWZ1bmN0aW9uIEV1KGUsdCxuKXtlPVZpKGUsdD1wcygwLHQ9dXMobix0KSwxKSwxKSx0PWV1KCksbnVsbCE9PWUmJih5dChlLDEsdCkscnUoZSx0KSl9ZnVuY3Rpb24gQ3UoZSx0LG4pe2lmKDM9PT1lLnRhZylFdShlLGUsbik7ZWxzZSBmb3IoO251bGwhPT10Oyl7aWYoMz09PXQudGFnKXtFdSh0LGUsbik7YnJlYWt9aWYoMT09PXQudGFnKXt2YXIgcj10LnN0YXRlTm9kZTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8ImZ1bmN0aW9uIj09dHlwZW9mIHIuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09cWN8fCFxYy5oYXMocikpKXt0PVZpKHQsZT1ocyh0LGU9dXMobixlKSwxKSwxKSxlPWV1KCksbnVsbCE9PXQmJih5dCh0LDEsZSkscnUodCxlKSk7YnJlYWt9fXQ9dC5yZXR1cm59fWZ1bmN0aW9uIGt1KGUsdCxuKXt2YXIgcj1lLnBpbmdDYWNoZTtudWxsIT09ciYmci5kZWxldGUodCksdD1ldSgpLGUucGluZ2VkTGFuZXN8PWUuc3VzcGVuZGVkTGFuZXMmbix4Yz09PWUmJihOYyZuKT09PW4mJig0PT09TWN8fDM9PT1NYyYmKDEzMDAyMzQyNCZOYyk9PT1OYyYmNTAwPlplKCktVWM/ZnUoZSwwKTpqY3w9bikscnUoZSx0KX1mdW5jdGlvbiBBdShlLHQpezA9PT10JiYoMSZlLm1vZGU/KHQ9bHQsISgxMzAwMjM0MjQmKGx0PDw9MSkpJiYobHQ9NDE5NDMwNCkpOnQ9MSk7dmFyIG49ZXUoKTtudWxsIT09KGU9UmkoZSx0KSkmJih5dChlLHQsbikscnUoZSxuKSl9ZnVuY3Rpb24gT3UoZSl7dmFyIHQ9ZS5tZW1vaXplZFN0YXRlLG49MDtudWxsIT09dCYmKG49dC5yZXRyeUxhbmUpLEF1KGUsbil9ZnVuY3Rpb24gVHUoZSx0KXt2YXIgbj0wO3N3aXRjaChlLnRhZyl7Y2FzZSAxMzp2YXIgcj1lLnN0YXRlTm9kZSxvPWUubWVtb2l6ZWRTdGF0ZTtudWxsIT09byYmKG49by5yZXRyeUxhbmUpO2JyZWFrO2Nhc2UgMTk6cj1lLnN0YXRlTm9kZTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKGkoMzE0KSl9bnVsbCE9PXImJnIuZGVsZXRlKHQpLEF1KGUsbil9ZnVuY3Rpb24geHUoZSx0KXtyZXR1cm4gV2UoZSx0KX1mdW5jdGlvbiBJdShlLHQsbixyKXt0aGlzLnRhZz1lLHRoaXMua2V5PW4sdGhpcy5zaWJsaW5nPXRoaXMuY2hpbGQ9dGhpcy5yZXR1cm49dGhpcy5zdGF0ZU5vZGU9dGhpcy50eXBlPXRoaXMuZWxlbWVudFR5cGU9bnVsbCx0aGlzLmluZGV4PTAsdGhpcy5yZWY9bnVsbCx0aGlzLnBlbmRpbmdQcm9wcz10LHRoaXMuZGVwZW5kZW5jaWVzPXRoaXMubWVtb2l6ZWRTdGF0ZT10aGlzLnVwZGF0ZVF1ZXVlPXRoaXMubWVtb2l6ZWRQcm9wcz1udWxsLHRoaXMubW9kZT1yLHRoaXMuc3VidHJlZUZsYWdzPXRoaXMuZmxhZ3M9MCx0aGlzLmRlbGV0aW9ucz1udWxsLHRoaXMuY2hpbGRMYW5lcz10aGlzLmxhbmVzPTAsdGhpcy5hbHRlcm5hdGU9bnVsbH1mdW5jdGlvbiBOdShlLHQsbixyKXtyZXR1cm4gbmV3IEl1KGUsdCxuLHIpfWZ1bmN0aW9uIEx1KGUpe3JldHVybiEoIShlPWUucHJvdG90eXBlKXx8IWUuaXNSZWFjdENvbXBvbmVudCl9ZnVuY3Rpb24gUHUoZSx0KXt2YXIgbj1lLmFsdGVybmF0ZTtyZXR1cm4gbnVsbD09PW4/KChuPU51KGUudGFnLHQsZS5rZXksZS5tb2RlKSkuZWxlbWVudFR5cGU9ZS5lbGVtZW50VHlwZSxuLnR5cGU9ZS50eXBlLG4uc3RhdGVOb2RlPWUuc3RhdGVOb2RlLG4uYWx0ZXJuYXRlPWUsZS5hbHRlcm5hdGU9bik6KG4ucGVuZGluZ1Byb3BzPXQsbi50eXBlPWUudHlwZSxuLmZsYWdzPTAsbi5zdWJ0cmVlRmxhZ3M9MCxuLmRlbGV0aW9ucz1udWxsKSxuLmZsYWdzPTE0NjgwMDY0JmUuZmxhZ3Msbi5jaGlsZExhbmVzPWUuY2hpbGRMYW5lcyxuLmxhbmVzPWUubGFuZXMsbi5jaGlsZD1lLmNoaWxkLG4ubWVtb2l6ZWRQcm9wcz1lLm1lbW9pemVkUHJvcHMsbi5tZW1vaXplZFN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxuLnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsdD1lLmRlcGVuZGVuY2llcyxuLmRlcGVuZGVuY2llcz1udWxsPT09dD9udWxsOntsYW5lczp0LmxhbmVzLGZpcnN0Q29udGV4dDp0LmZpcnN0Q29udGV4dH0sbi5zaWJsaW5nPWUuc2libGluZyxuLmluZGV4PWUuaW5kZXgsbi5yZWY9ZS5yZWYsbn1mdW5jdGlvbiBNdShlLHQsbixyLG8sYSl7dmFyIHM9MjtpZihyPWUsImZ1bmN0aW9uIj09dHlwZW9mIGUpTHUoZSkmJihzPTEpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXM9NTtlbHNlIGU6c3dpdGNoKGUpe2Nhc2UgRTpyZXR1cm4gUnUobi5jaGlsZHJlbixvLGEsdCk7Y2FzZSBDOnM9OCxvfD04O2JyZWFrO2Nhc2UgazpyZXR1cm4oZT1OdSgxMixuLHQsMnxvKSkuZWxlbWVudFR5cGU9ayxlLmxhbmVzPWEsZTtjYXNlIHg6cmV0dXJuKGU9TnUoMTMsbix0LG8pKS5lbGVtZW50VHlwZT14LGUubGFuZXM9YSxlO2Nhc2UgSTpyZXR1cm4oZT1OdSgxOSxuLHQsbykpLmVsZW1lbnRUeXBlPUksZS5sYW5lcz1hLGU7Y2FzZSBQOnJldHVybiBEdShuLG8sYSx0KTtkZWZhdWx0OmlmKCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUpc3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgQTpzPTEwO2JyZWFrIGU7Y2FzZSBPOnM9OTticmVhayBlO2Nhc2UgVDpzPTExO2JyZWFrIGU7Y2FzZSBOOnM9MTQ7YnJlYWsgZTtjYXNlIEw6cz0xNixyPW51bGw7YnJlYWsgZX10aHJvdyBFcnJvcihpKDEzMCxudWxsPT1lP2U6dHlwZW9mIGUsIiIpKX1yZXR1cm4odD1OdShzLG4sdCxvKSkuZWxlbWVudFR5cGU9ZSx0LnR5cGU9cix0LmxhbmVzPWEsdH1mdW5jdGlvbiBSdShlLHQsbixyKXtyZXR1cm4oZT1OdSg3LGUscix0KSkubGFuZXM9bixlfWZ1bmN0aW9uIER1KGUsdCxuLHIpe3JldHVybihlPU51KDIyLGUscix0KSkuZWxlbWVudFR5cGU9UCxlLmxhbmVzPW4sZS5zdGF0ZU5vZGU9e2lzSGlkZGVuOiExfSxlfWZ1bmN0aW9uIEZ1KGUsdCxuKXtyZXR1cm4oZT1OdSg2LGUsbnVsbCx0KSkubGFuZXM9bixlfWZ1bmN0aW9uIGp1KGUsdCxuKXtyZXR1cm4odD1OdSg0LG51bGwhPT1lLmNoaWxkcmVuP2UuY2hpbGRyZW46W10sZS5rZXksdCkpLmxhbmVzPW4sdC5zdGF0ZU5vZGU9e2NvbnRhaW5lckluZm86ZS5jb250YWluZXJJbmZvLHBlbmRpbmdDaGlsZHJlbjpudWxsLGltcGxlbWVudGF0aW9uOmUuaW1wbGVtZW50YXRpb259LHR9ZnVuY3Rpb24gQnUoZSx0LG4scixvKXt0aGlzLnRhZz10LHRoaXMuY29udGFpbmVySW5mbz1lLHRoaXMuZmluaXNoZWRXb3JrPXRoaXMucGluZ0NhY2hlPXRoaXMuY3VycmVudD10aGlzLnBlbmRpbmdDaGlsZHJlbj1udWxsLHRoaXMudGltZW91dEhhbmRsZT0tMSx0aGlzLmNhbGxiYWNrTm9kZT10aGlzLnBlbmRpbmdDb250ZXh0PXRoaXMuY29udGV4dD1udWxsLHRoaXMuY2FsbGJhY2tQcmlvcml0eT0wLHRoaXMuZXZlbnRUaW1lcz1ndCgwKSx0aGlzLmV4cGlyYXRpb25UaW1lcz1ndCgtMSksdGhpcy5lbnRhbmdsZWRMYW5lcz10aGlzLmZpbmlzaGVkTGFuZXM9dGhpcy5tdXRhYmxlUmVhZExhbmVzPXRoaXMuZXhwaXJlZExhbmVzPXRoaXMucGluZ2VkTGFuZXM9dGhpcy5zdXNwZW5kZWRMYW5lcz10aGlzLnBlbmRpbmdMYW5lcz0wLHRoaXMuZW50YW5nbGVtZW50cz1ndCgwKSx0aGlzLmlkZW50aWZpZXJQcmVmaXg9cix0aGlzLm9uUmVjb3ZlcmFibGVFcnJvcj1vLHRoaXMubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT1udWxsfWZ1bmN0aW9uIFZ1KGUsdCxuLHIsbyxpLGEscyxjKXtyZXR1cm4gZT1uZXcgQnUoZSx0LG4scyxjKSwxPT09dD8odD0xLCEwPT09aSYmKHR8PTgpKTp0PTAsaT1OdSgzLG51bGwsbnVsbCx0KSxlLmN1cnJlbnQ9aSxpLnN0YXRlTm9kZT1lLGkubWVtb2l6ZWRTdGF0ZT17ZWxlbWVudDpyLGlzRGVoeWRyYXRlZDpuLGNhY2hlOm51bGwsdHJhbnNpdGlvbnM6bnVsbCxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOm51bGx9LEZpKGkpLGV9ZnVuY3Rpb24gVXUoZSl7aWYoIWUpcmV0dXJuIFRvO2U6e2lmKHplKGU9ZS5fcmVhY3RJbnRlcm5hbHMpIT09ZXx8MSE9PWUudGFnKXRocm93IEVycm9yKGkoMTcwKSk7dmFyIHQ9ZTtkb3tzd2l0Y2godC50YWcpe2Nhc2UgMzp0PXQuc3RhdGVOb2RlLmNvbnRleHQ7YnJlYWsgZTtjYXNlIDE6aWYoUG8odC50eXBlKSl7dD10LnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDticmVhayBlfX10PXQucmV0dXJufXdoaWxlKG51bGwhPT10KTt0aHJvdyBFcnJvcihpKDE3MSkpfWlmKDE9PT1lLnRhZyl7dmFyIG49ZS50eXBlO2lmKFBvKG4pKXJldHVybiBEbyhlLG4sdCl9cmV0dXJuIHR9ZnVuY3Rpb24genUoZSx0LG4scixvLGksYSxzLGMpe3JldHVybihlPVZ1KG4sciwhMCxlLDAsaSwwLHMsYykpLmNvbnRleHQ9VXUobnVsbCksbj1lLmN1cnJlbnQsKGk9Qmkocj1ldSgpLG89dHUobikpKS5jYWxsYmFjaz1udWxsIT10P3Q6bnVsbCxWaShuLGksbyksZS5jdXJyZW50LmxhbmVzPW8seXQoZSxvLHIpLHJ1KGUsciksZX1mdW5jdGlvbiBIdShlLHQsbixyKXt2YXIgbz10LmN1cnJlbnQsaT1ldSgpLGE9dHUobyk7cmV0dXJuIG49VXUobiksbnVsbD09PXQuY29udGV4dD90LmNvbnRleHQ9bjp0LnBlbmRpbmdDb250ZXh0PW4sKHQ9QmkoaSxhKSkucGF5bG9hZD17ZWxlbWVudDplfSxudWxsIT09KHI9dm9pZCAwPT09cj9udWxsOnIpJiYodC5jYWxsYmFjaz1yKSxudWxsIT09KGU9Vmkobyx0LGEpKSYmKG51KGUsbyxhLGkpLFVpKGUsbyxhKSksYX1mdW5jdGlvbiAkdShlKXtyZXR1cm4oZT1lLmN1cnJlbnQpLmNoaWxkPyhlLmNoaWxkLnRhZyxlLmNoaWxkLnN0YXRlTm9kZSk6bnVsbH1mdW5jdGlvbiBZdShlLHQpe2lmKG51bGwhPT0oZT1lLm1lbW9pemVkU3RhdGUpJiZudWxsIT09ZS5kZWh5ZHJhdGVkKXt2YXIgbj1lLnJldHJ5TGFuZTtlLnJldHJ5TGFuZT0wIT09biYmbjx0P246dH19ZnVuY3Rpb24gcXUoZSx0KXtZdShlLHQpLChlPWUuYWx0ZXJuYXRlKSYmWXUoZSx0KX1FYz1mdW5jdGlvbihlLHQsbil7aWYobnVsbCE9PWUpaWYoZS5tZW1vaXplZFByb3BzIT09dC5wZW5kaW5nUHJvcHN8fElvLmN1cnJlbnQpYnM9ITA7ZWxzZXtpZigwPT09KGUubGFuZXMmbikmJiEoMTI4JnQuZmxhZ3MpKXJldHVybiBicz0hMSxmdW5jdGlvbihlLHQsbil7c3dpdGNoKHQudGFnKXtjYXNlIDM6eHModCksaGkoKTticmVhaztjYXNlIDU6WGkodCk7YnJlYWs7Y2FzZSAxOlBvKHQudHlwZSkmJkZvKHQpO2JyZWFrO2Nhc2UgNDpLaSh0LHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO2JyZWFrO2Nhc2UgMTA6dmFyIHI9dC50eXBlLl9jb250ZXh0LG89dC5tZW1vaXplZFByb3BzLnZhbHVlO09vKEVpLHIuX2N1cnJlbnRWYWx1ZSksci5fY3VycmVudFZhbHVlPW87YnJlYWs7Y2FzZSAxMzppZihudWxsIT09KHI9dC5tZW1vaXplZFN0YXRlKSlyZXR1cm4gbnVsbCE9PXIuZGVoeWRyYXRlZD8oT28oZWEsMSZlYS5jdXJyZW50KSx0LmZsYWdzfD0xMjgsbnVsbCk6MCE9PShuJnQuY2hpbGQuY2hpbGRMYW5lcyk/RnMoZSx0LG4pOihPbyhlYSwxJmVhLmN1cnJlbnQpLG51bGwhPT0oZT0kcyhlLHQsbikpP2Uuc2libGluZzpudWxsKTtPbyhlYSwxJmVhLmN1cnJlbnQpO2JyZWFrO2Nhc2UgMTk6aWYocj0wIT09KG4mdC5jaGlsZExhbmVzKSwxMjgmZS5mbGFncyl7aWYocilyZXR1cm4genMoZSx0LG4pO3QuZmxhZ3N8PTEyOH1pZihudWxsIT09KG89dC5tZW1vaXplZFN0YXRlKSYmKG8ucmVuZGVyaW5nPW51bGwsby50YWlsPW51bGwsby5sYXN0RWZmZWN0PW51bGwpLE9vKGVhLGVhLmN1cnJlbnQpLHIpYnJlYWs7cmV0dXJuIG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiB0LmxhbmVzPTAsQ3MoZSx0LG4pfXJldHVybiAkcyhlLHQsbil9KGUsdCxuKTticz0hISgxMzEwNzImZS5mbGFncyl9ZWxzZSBicz0hMSxpaSYmMTA0ODU3NiZ0LmZsYWdzJiZlaSh0LFdvLHQuaW5kZXgpO3N3aXRjaCh0LmxhbmVzPTAsdC50YWcpe2Nhc2UgMjp2YXIgcj10LnR5cGU7SHMoZSx0KSxlPXQucGVuZGluZ1Byb3BzO3ZhciBvPUxvKHQseG8uY3VycmVudCk7SWkodCxuKSxvPWdhKG51bGwsdCxyLGUsbyxuKTt2YXIgYT15YSgpO3JldHVybiB0LmZsYWdzfD0xLCJvYmplY3QiPT10eXBlb2YgbyYmbnVsbCE9PW8mJiJmdW5jdGlvbiI9PXR5cGVvZiBvLnJlbmRlciYmdm9pZCAwPT09by4kJHR5cGVvZj8odC50YWc9MSx0Lm1lbW9pemVkU3RhdGU9bnVsbCx0LnVwZGF0ZVF1ZXVlPW51bGwsUG8ocik/KGE9ITAsRm8odCkpOmE9ITEsdC5tZW1vaXplZFN0YXRlPW51bGwhPT1vLnN0YXRlJiZ2b2lkIDAhPT1vLnN0YXRlP28uc3RhdGU6bnVsbCxGaSh0KSxvLnVwZGF0ZXI9b3MsdC5zdGF0ZU5vZGU9byxvLl9yZWFjdEludGVybmFscz10LGNzKHQscixlLG4pLHQ9VHMobnVsbCx0LHIsITAsYSxuKSk6KHQudGFnPTAsaWkmJmEmJnRpKHQpLHdzKG51bGwsdCxvLG4pLHQ9dC5jaGlsZCksdDtjYXNlIDE2OnI9dC5lbGVtZW50VHlwZTtlOntzd2l0Y2goSHMoZSx0KSxlPXQucGVuZGluZ1Byb3BzLHI9KG89ci5faW5pdCkoci5fcGF5bG9hZCksdC50eXBlPXIsbz10LnRhZz1mdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gTHUoZSk/MTowO2lmKG51bGwhPWUpe2lmKChlPWUuJCR0eXBlb2YpPT09VClyZXR1cm4gMTE7aWYoZT09PU4pcmV0dXJuIDE0fXJldHVybiAyfShyKSxlPW5zKHIsZSksbyl7Y2FzZSAwOnQ9QXMobnVsbCx0LHIsZSxuKTticmVhayBlO2Nhc2UgMTp0PU9zKG51bGwsdCxyLGUsbik7YnJlYWsgZTtjYXNlIDExOnQ9X3MobnVsbCx0LHIsZSxuKTticmVhayBlO2Nhc2UgMTQ6dD1TcyhudWxsLHQscixucyhyLnR5cGUsZSksbik7YnJlYWsgZX10aHJvdyBFcnJvcihpKDMwNixyLCIiKSl9cmV0dXJuIHQ7Y2FzZSAwOnJldHVybiByPXQudHlwZSxvPXQucGVuZGluZ1Byb3BzLEFzKGUsdCxyLG89dC5lbGVtZW50VHlwZT09PXI/bzpucyhyLG8pLG4pO2Nhc2UgMTpyZXR1cm4gcj10LnR5cGUsbz10LnBlbmRpbmdQcm9wcyxPcyhlLHQscixvPXQuZWxlbWVudFR5cGU9PT1yP286bnMocixvKSxuKTtjYXNlIDM6ZTp7aWYoeHModCksbnVsbD09PWUpdGhyb3cgRXJyb3IoaSgzODcpKTtyPXQucGVuZGluZ1Byb3BzLG89KGE9dC5tZW1vaXplZFN0YXRlKS5lbGVtZW50LGppKGUsdCksSGkodCxyLG51bGwsbik7dmFyIHM9dC5tZW1vaXplZFN0YXRlO2lmKHI9cy5lbGVtZW50LGEuaXNEZWh5ZHJhdGVkKXtpZihhPXtlbGVtZW50OnIsaXNEZWh5ZHJhdGVkOiExLGNhY2hlOnMuY2FjaGUscGVuZGluZ1N1c3BlbnNlQm91bmRhcmllczpzLnBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXMsdHJhbnNpdGlvbnM6cy50cmFuc2l0aW9uc30sdC51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9YSx0Lm1lbW9pemVkU3RhdGU9YSwyNTYmdC5mbGFncyl7dD1JcyhlLHQscixuLG89dXMoRXJyb3IoaSg0MjMpKSx0KSk7YnJlYWsgZX1pZihyIT09byl7dD1JcyhlLHQscixuLG89dXMoRXJyb3IoaSg0MjQpKSx0KSk7YnJlYWsgZX1mb3Iob2k9dW8odC5zdGF0ZU5vZGUuY29udGFpbmVySW5mby5maXJzdENoaWxkKSxyaT10LGlpPSEwLGFpPW51bGwsbj1TaSh0LG51bGwscixuKSx0LmNoaWxkPW47bjspbi5mbGFncz0tMyZuLmZsYWdzfDQwOTYsbj1uLnNpYmxpbmd9ZWxzZXtpZihoaSgpLHI9PT1vKXt0PSRzKGUsdCxuKTticmVhayBlfXdzKGUsdCxyLG4pfXQ9dC5jaGlsZH1yZXR1cm4gdDtjYXNlIDU6cmV0dXJuIFhpKHQpLG51bGw9PT1lJiZsaSh0KSxyPXQudHlwZSxvPXQucGVuZGluZ1Byb3BzLGE9bnVsbCE9PWU/ZS5tZW1vaXplZFByb3BzOm51bGwscz1vLmNoaWxkcmVuLG5vKHIsbyk/cz1udWxsOm51bGwhPT1hJiZubyhyLGEpJiYodC5mbGFnc3w9MzIpLGtzKGUsdCksd3MoZSx0LHMsbiksdC5jaGlsZDtjYXNlIDY6cmV0dXJuIG51bGw9PT1lJiZsaSh0KSxudWxsO2Nhc2UgMTM6cmV0dXJuIEZzKGUsdCxuKTtjYXNlIDQ6cmV0dXJuIEtpKHQsdC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbykscj10LnBlbmRpbmdQcm9wcyxudWxsPT09ZT90LmNoaWxkPV9pKHQsbnVsbCxyLG4pOndzKGUsdCxyLG4pLHQuY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gcj10LnR5cGUsbz10LnBlbmRpbmdQcm9wcyxfcyhlLHQscixvPXQuZWxlbWVudFR5cGU9PT1yP286bnMocixvKSxuKTtjYXNlIDc6cmV0dXJuIHdzKGUsdCx0LnBlbmRpbmdQcm9wcyxuKSx0LmNoaWxkO2Nhc2UgODpjYXNlIDEyOnJldHVybiB3cyhlLHQsdC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sbiksdC5jaGlsZDtjYXNlIDEwOmU6e2lmKHI9dC50eXBlLl9jb250ZXh0LG89dC5wZW5kaW5nUHJvcHMsYT10Lm1lbW9pemVkUHJvcHMscz1vLnZhbHVlLE9vKEVpLHIuX2N1cnJlbnRWYWx1ZSksci5fY3VycmVudFZhbHVlPXMsbnVsbCE9PWEpaWYoc3IoYS52YWx1ZSxzKSl7aWYoYS5jaGlsZHJlbj09PW8uY2hpbGRyZW4mJiFJby5jdXJyZW50KXt0PSRzKGUsdCxuKTticmVhayBlfX1lbHNlIGZvcihudWxsIT09KGE9dC5jaGlsZCkmJihhLnJldHVybj10KTtudWxsIT09YTspe3ZhciBjPWEuZGVwZW5kZW5jaWVzO2lmKG51bGwhPT1jKXtzPWEuY2hpbGQ7Zm9yKHZhciB1PWMuZmlyc3RDb250ZXh0O251bGwhPT11Oyl7aWYodS5jb250ZXh0PT09cil7aWYoMT09PWEudGFnKXsodT1CaSgtMSxuJi1uKSkudGFnPTI7dmFyIGw9YS51cGRhdGVRdWV1ZTtpZihudWxsIT09bCl7dmFyIGQ9KGw9bC5zaGFyZWQpLnBlbmRpbmc7bnVsbD09PWQ/dS5uZXh0PXU6KHUubmV4dD1kLm5leHQsZC5uZXh0PXUpLGwucGVuZGluZz11fX1hLmxhbmVzfD1uLG51bGwhPT0odT1hLmFsdGVybmF0ZSkmJih1LmxhbmVzfD1uKSx4aShhLnJldHVybixuLHQpLGMubGFuZXN8PW47YnJlYWt9dT11Lm5leHR9fWVsc2UgaWYoMTA9PT1hLnRhZylzPWEudHlwZT09PXQudHlwZT9udWxsOmEuY2hpbGQ7ZWxzZSBpZigxOD09PWEudGFnKXtpZihudWxsPT09KHM9YS5yZXR1cm4pKXRocm93IEVycm9yKGkoMzQxKSk7cy5sYW5lc3w9bixudWxsIT09KGM9cy5hbHRlcm5hdGUpJiYoYy5sYW5lc3w9bikseGkocyxuLHQpLHM9YS5zaWJsaW5nfWVsc2Ugcz1hLmNoaWxkO2lmKG51bGwhPT1zKXMucmV0dXJuPWE7ZWxzZSBmb3Iocz1hO251bGwhPT1zOyl7aWYocz09PXQpe3M9bnVsbDticmVha31pZihudWxsIT09KGE9cy5zaWJsaW5nKSl7YS5yZXR1cm49cy5yZXR1cm4scz1hO2JyZWFrfXM9cy5yZXR1cm59YT1zfXdzKGUsdCxvLmNoaWxkcmVuLG4pLHQ9dC5jaGlsZH1yZXR1cm4gdDtjYXNlIDk6cmV0dXJuIG89dC50eXBlLHI9dC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sSWkodCxuKSxyPXIobz1OaShvKSksdC5mbGFnc3w9MSx3cyhlLHQscixuKSx0LmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIG89bnMocj10LnR5cGUsdC5wZW5kaW5nUHJvcHMpLFNzKGUsdCxyLG89bnMoci50eXBlLG8pLG4pO2Nhc2UgMTU6cmV0dXJuIEVzKGUsdCx0LnR5cGUsdC5wZW5kaW5nUHJvcHMsbik7Y2FzZSAxNzpyZXR1cm4gcj10LnR5cGUsbz10LnBlbmRpbmdQcm9wcyxvPXQuZWxlbWVudFR5cGU9PT1yP286bnMocixvKSxIcyhlLHQpLHQudGFnPTEsUG8ocik/KGU9ITAsRm8odCkpOmU9ITEsSWkodCxuKSxhcyh0LHIsbyksY3ModCxyLG8sbiksVHMobnVsbCx0LHIsITAsZSxuKTtjYXNlIDE5OnJldHVybiB6cyhlLHQsbik7Y2FzZSAyMjpyZXR1cm4gQ3MoZSx0LG4pfXRocm93IEVycm9yKGkoMTU2LHQudGFnKSl9O3ZhciBXdT0iZnVuY3Rpb24iPT10eXBlb2YgcmVwb3J0RXJyb3I/cmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSl7Y29uc29sZS5lcnJvcihlKX07ZnVuY3Rpb24gR3UoZSl7dGhpcy5faW50ZXJuYWxSb290PWV9ZnVuY3Rpb24gUXUoZSl7dGhpcy5faW50ZXJuYWxSb290PWV9ZnVuY3Rpb24gS3UoZSl7cmV0dXJuISghZXx8MSE9PWUubm9kZVR5cGUmJjkhPT1lLm5vZGVUeXBlJiYxMSE9PWUubm9kZVR5cGUpfWZ1bmN0aW9uIFp1KGUpe3JldHVybiEoIWV8fDEhPT1lLm5vZGVUeXBlJiY5IT09ZS5ub2RlVHlwZSYmMTEhPT1lLm5vZGVUeXBlJiYoOCE9PWUubm9kZVR5cGV8fCIgcmVhY3QtbW91bnQtcG9pbnQtdW5zdGFibGUgIiE9PWUubm9kZVZhbHVlKSl9ZnVuY3Rpb24gWHUoKXt9ZnVuY3Rpb24gSnUoZSx0LG4scixvKXt2YXIgaT1uLl9yZWFjdFJvb3RDb250YWluZXI7aWYoaSl7dmFyIGE9aTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbyl7dmFyIHM9bztvPWZ1bmN0aW9uKCl7dmFyIGU9JHUoYSk7cy5jYWxsKGUpfX1IdSh0LGEsZSxvKX1lbHNlIGE9ZnVuY3Rpb24oZSx0LG4scixvKXtpZihvKXtpZigiZnVuY3Rpb24iPT10eXBlb2Ygcil7dmFyIGk9cjtyPWZ1bmN0aW9uKCl7dmFyIGU9JHUoYSk7aS5jYWxsKGUpfX12YXIgYT16dSh0LHIsZSwwLG51bGwsITEsMCwiIixYdSk7cmV0dXJuIGUuX3JlYWN0Um9vdENvbnRhaW5lcj1hLGVbbW9dPWEuY3VycmVudCx6cig4PT09ZS5ub2RlVHlwZT9lLnBhcmVudE5vZGU6ZSksbHUoKSxhfWZvcig7bz1lLmxhc3RDaGlsZDspZS5yZW1vdmVDaGlsZChvKTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygcil7dmFyIHM9cjtyPWZ1bmN0aW9uKCl7dmFyIGU9JHUoYyk7cy5jYWxsKGUpfX12YXIgYz1WdShlLDAsITEsbnVsbCwwLCExLDAsIiIsWHUpO3JldHVybiBlLl9yZWFjdFJvb3RDb250YWluZXI9YyxlW21vXT1jLmN1cnJlbnQsenIoOD09PWUubm9kZVR5cGU/ZS5wYXJlbnROb2RlOmUpLGx1KGZ1bmN0aW9uKCl7SHUodCxjLG4scil9KSxjfShuLHQsZSxvLHIpO3JldHVybiAkdShhKX1RdS5wcm90b3R5cGUucmVuZGVyPUd1LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGw9PT10KXRocm93IEVycm9yKGkoNDA5KSk7SHUoZSx0LG51bGwsbnVsbCl9LFF1LnByb3RvdHlwZS51bm1vdW50PUd1LnByb3RvdHlwZS51bm1vdW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGwhPT1lKXt0aGlzLl9pbnRlcm5hbFJvb3Q9bnVsbDt2YXIgdD1lLmNvbnRhaW5lckluZm87bHUoZnVuY3Rpb24oKXtIdShudWxsLGUsbnVsbCxudWxsKX0pLHRbbW9dPW51bGx9fSxRdS5wcm90b3R5cGUudW5zdGFibGVfc2NoZWR1bGVIeWRyYXRpb249ZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9Q3QoKTtlPXtibG9ja2VkT246bnVsbCx0YXJnZXQ6ZSxwcmlvcml0eTp0fTtmb3IodmFyIG49MDtuPFB0Lmxlbmd0aCYmMCE9PXQmJnQ8UHRbbl0ucHJpb3JpdHk7bisrKTtQdC5zcGxpY2UobiwwLGUpLDA9PT1uJiZGdChlKX19LF90PWZ1bmN0aW9uKGUpe3N3aXRjaChlLnRhZyl7Y2FzZSAzOnZhciB0PWUuc3RhdGVOb2RlO2lmKHQuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7dmFyIG49ZHQodC5wZW5kaW5nTGFuZXMpOzAhPT1uJiYodnQodCwxfG4pLHJ1KHQsWmUoKSksISg2JlRjKSYmKHpjPVplKCkrNTAwLEhvKCkpKX1icmVhaztjYXNlIDEzOmx1KGZ1bmN0aW9uKCl7dmFyIHQ9UmkoZSwxKTtpZihudWxsIT09dCl7dmFyIG49ZXUoKTtudSh0LGUsMSxuKX19KSxxdShlLDEpfX0sU3Q9ZnVuY3Rpb24oZSl7aWYoMTM9PT1lLnRhZyl7dmFyIHQ9UmkoZSwxMzQyMTc3MjgpO2lmKG51bGwhPT10KW51KHQsZSwxMzQyMTc3MjgsZXUoKSk7cXUoZSwxMzQyMTc3MjgpfX0sRXQ9ZnVuY3Rpb24oZSl7aWYoMTM9PT1lLnRhZyl7dmFyIHQ9dHUoZSksbj1SaShlLHQpO2lmKG51bGwhPT1uKW51KG4sZSx0LGV1KCkpO3F1KGUsdCl9fSxDdD1mdW5jdGlvbigpe3JldHVybiBidH0sa3Q9ZnVuY3Rpb24oZSx0KXt2YXIgbj1idDt0cnl7cmV0dXJuIGJ0PWUsdCgpfWZpbmFsbHl7YnQ9bn19LFNlPWZ1bmN0aW9uKGUsdCxuKXtzd2l0Y2godCl7Y2FzZSJpbnB1dCI6aWYoWChlLG4pLHQ9bi5uYW1lLCJyYWRpbyI9PT1uLnR5cGUmJm51bGwhPXQpe2ZvcihuPWU7bi5wYXJlbnROb2RlOyluPW4ucGFyZW50Tm9kZTtmb3Iobj1uLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0W25hbWU9IitKU09OLnN0cmluZ2lmeSgiIit0KSsnXVt0eXBlPSJyYWRpbyJdJyksdD0wO3Q8bi5sZW5ndGg7dCsrKXt2YXIgcj1uW3RdO2lmKHIhPT1lJiZyLmZvcm09PT1lLmZvcm0pe3ZhciBvPVNvKHIpO2lmKCFvKXRocm93IEVycm9yKGkoOTApKTtXKHIpLFgocixvKX19fWJyZWFrO2Nhc2UidGV4dGFyZWEiOmllKGUsbik7YnJlYWs7Y2FzZSJzZWxlY3QiOm51bGwhPSh0PW4udmFsdWUpJiZuZShlLCEhbi5tdWx0aXBsZSx0LCExKX19LFRlPXV1LHhlPWx1O3ZhciBlbD17dXNpbmdDbGllbnRFbnRyeVBvaW50OiExLEV2ZW50czpbd28sX28sU28sQWUsT2UsdXVdfSx0bD17ZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6Ym8sYnVuZGxlVHlwZTowLHZlcnNpb246IjE4LjMuMSIscmVuZGVyZXJQYWNrYWdlTmFtZToicmVhY3QtZG9tIn0sbmw9e2J1bmRsZVR5cGU6dGwuYnVuZGxlVHlwZSx2ZXJzaW9uOnRsLnZlcnNpb24scmVuZGVyZXJQYWNrYWdlTmFtZTp0bC5yZW5kZXJlclBhY2thZ2VOYW1lLHJlbmRlcmVyQ29uZmlnOnRsLnJlbmRlcmVyQ29uZmlnLG92ZXJyaWRlSG9va1N0YXRlOm51bGwsb3ZlcnJpZGVIb29rU3RhdGVEZWxldGVQYXRoOm51bGwsb3ZlcnJpZGVIb29rU3RhdGVSZW5hbWVQYXRoOm51bGwsb3ZlcnJpZGVQcm9wczpudWxsLG92ZXJyaWRlUHJvcHNEZWxldGVQYXRoOm51bGwsb3ZlcnJpZGVQcm9wc1JlbmFtZVBhdGg6bnVsbCxzZXRFcnJvckhhbmRsZXI6bnVsbCxzZXRTdXNwZW5zZUhhbmRsZXI6bnVsbCxzY2hlZHVsZVVwZGF0ZTpudWxsLGN1cnJlbnREaXNwYXRjaGVyUmVmOncuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixmaW5kSG9zdEluc3RhbmNlQnlGaWJlcjpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PShlPVllKGUpKT9udWxsOmUuc3RhdGVOb2RlfSxmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTp0bC5maW5kRmliZXJCeUhvc3RJbnN0YW5jZXx8ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZmluZEhvc3RJbnN0YW5jZXNGb3JSZWZyZXNoOm51bGwsc2NoZWR1bGVSZWZyZXNoOm51bGwsc2NoZWR1bGVSb290Om51bGwsc2V0UmVmcmVzaEhhbmRsZXI6bnVsbCxnZXRDdXJyZW50RmliZXI6bnVsbCxyZWNvbmNpbGVyVmVyc2lvbjoiMTguMy4xLW5leHQtZjEzMzhmODA4MC0yMDI0MDQyNiJ9O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKXt2YXIgcmw9X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO2lmKCFybC5pc0Rpc2FibGVkJiZybC5zdXBwb3J0c0ZpYmVyKXRyeXtvdD1ybC5pbmplY3QobmwpLGl0PXJsfWNhdGNoKGxlKXt9fXQuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9ZWwsdC5jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oZSx0KXt2YXIgbj0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZighS3UodCkpdGhyb3cgRXJyb3IoaSgyMDApKTtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3ZhciByPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjpTLGtleTpudWxsPT1yP251bGw6IiIrcixjaGlsZHJlbjplLGNvbnRhaW5lckluZm86dCxpbXBsZW1lbnRhdGlvbjpufX0oZSx0LG51bGwsbil9LHQuY3JlYXRlUm9vdD1mdW5jdGlvbihlLHQpe2lmKCFLdShlKSl0aHJvdyBFcnJvcihpKDI5OSkpO3ZhciBuPSExLHI9IiIsbz1XdTtyZXR1cm4gbnVsbCE9dCYmKCEwPT09dC51bnN0YWJsZV9zdHJpY3RNb2RlJiYobj0hMCksdm9pZCAwIT09dC5pZGVudGlmaWVyUHJlZml4JiYocj10LmlkZW50aWZpZXJQcmVmaXgpLHZvaWQgMCE9PXQub25SZWNvdmVyYWJsZUVycm9yJiYobz10Lm9uUmVjb3ZlcmFibGVFcnJvcikpLHQ9VnUoZSwxLCExLG51bGwsMCxuLDAscixvKSxlW21vXT10LmN1cnJlbnQsenIoOD09PWUubm9kZVR5cGU/ZS5wYXJlbnROb2RlOmUpLG5ldyBHdSh0KX0sdC5maW5kRE9NTm9kZT1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiBudWxsO2lmKDE9PT1lLm5vZGVUeXBlKXJldHVybiBlO3ZhciB0PWUuX3JlYWN0SW50ZXJuYWxzO2lmKHZvaWQgMD09PXQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlbmRlcil0aHJvdyBFcnJvcihpKDE4OCkpO3Rocm93IGU9T2JqZWN0LmtleXMoZSkuam9pbigiLCIpLEVycm9yKGkoMjY4LGUpKX1yZXR1cm4gZT1udWxsPT09KGU9WWUodCkpP251bGw6ZS5zdGF0ZU5vZGV9LHQuZmx1c2hTeW5jPWZ1bmN0aW9uKGUpe3JldHVybiBsdShlKX0sdC5oeWRyYXRlPWZ1bmN0aW9uKGUsdCxuKXtpZighWnUodCkpdGhyb3cgRXJyb3IoaSgyMDApKTtyZXR1cm4gSnUobnVsbCxlLHQsITAsbil9LHQuaHlkcmF0ZVJvb3Q9ZnVuY3Rpb24oZSx0LG4pe2lmKCFLdShlKSl0aHJvdyBFcnJvcihpKDQwNSkpO3ZhciByPW51bGwhPW4mJm4uaHlkcmF0ZWRTb3VyY2VzfHxudWxsLG89ITEsYT0iIixzPVd1O2lmKG51bGwhPW4mJighMD09PW4udW5zdGFibGVfc3RyaWN0TW9kZSYmKG89ITApLHZvaWQgMCE9PW4uaWRlbnRpZmllclByZWZpeCYmKGE9bi5pZGVudGlmaWVyUHJlZml4KSx2b2lkIDAhPT1uLm9uUmVjb3ZlcmFibGVFcnJvciYmKHM9bi5vblJlY292ZXJhYmxlRXJyb3IpKSx0PXp1KHQsbnVsbCxlLDEsbnVsbCE9bj9uOm51bGwsbywwLGEscyksZVttb109dC5jdXJyZW50LHpyKGUpLHIpZm9yKGU9MDtlPHIubGVuZ3RoO2UrKylvPShvPShuPXJbZV0pLl9nZXRWZXJzaW9uKShuLl9zb3VyY2UpLG51bGw9PXQubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT90Lm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9W24sb106dC5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhLnB1c2gobixvKTtyZXR1cm4gbmV3IFF1KHQpfSx0LnJlbmRlcj1mdW5jdGlvbihlLHQsbil7aWYoIVp1KHQpKXRocm93IEVycm9yKGkoMjAwKSk7cmV0dXJuIEp1KG51bGwsZSx0LCExLG4pfSx0LnVubW91bnRDb21wb25lbnRBdE5vZGU9ZnVuY3Rpb24oZSl7aWYoIVp1KGUpKXRocm93IEVycm9yKGkoNDApKTtyZXR1cm4hIWUuX3JlYWN0Um9vdENvbnRhaW5lciYmKGx1KGZ1bmN0aW9uKCl7SnUobnVsbCxudWxsLGUsITEsZnVuY3Rpb24oKXtlLl9yZWFjdFJvb3RDb250YWluZXI9bnVsbCxlW21vXT1udWxsfSl9KSwhMCl9LHQudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM9dXUsdC51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcj1mdW5jdGlvbihlLHQsbixyKXtpZighWnUobikpdGhyb3cgRXJyb3IoaSgyMDApKTtpZihudWxsPT1lfHx2b2lkIDA9PT1lLl9yZWFjdEludGVybmFscyl0aHJvdyBFcnJvcihpKDM4KSk7cmV0dXJuIEp1KGUsdCxuLCExLHIpfSx0LnZlcnNpb249IjE4LjMuMS1uZXh0LWYxMzM4ZjgwODAtMjAyNDA0MjYifSwyNzI0OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse2w6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KTtjb25zdCByPXtjbG9zZWQ6ImNsb3NlZCIsZmx5OiJmbHkiLGNoYXQ6ImNoYXQifTtPYmplY3QudmFsdWVzKHIpfSwyODA0OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oOTU2OSl9LDI5Mjk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7elU6ZnVuY3Rpb24oKXtyZXR1cm4gX30seGw6ZnVuY3Rpb24oKXtyZXR1cm4gU30scEs6ZnVuY3Rpb24oKXtyZXR1cm4gdn0sZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geX0sa1g6ZnVuY3Rpb24oKXtyZXR1cm4gaH19KTt2YXIgcj1uKDIyNDcpO2NvbnN0IG89Il9zZW50cnlNZXRyaWNzIjtmdW5jdGlvbiBpKGUpe2NvbnN0IHQ9ZVtvXTtpZighdClyZXR1cm47Y29uc3Qgbj17fTtmb3IoY29uc3RbLFtlLG9dXW9mIHQpeyhuW2VdfHwobltlXT1bXSkpLnB1c2goKDAsci5DZSkobykpfXJldHVybiBufXZhciBhPW4oOTg1Nyk7Y29uc3Qgcz0wLGM9MTt2YXIgdT1uKDkyMTYpLGw9big5NjA5KSxkPW4oNzM3Myk7Y29uc3QgZj0xO2xldCBwPSExO2Z1bmN0aW9uIGgoZSl7Y29uc3R7c3BhbklkOnQsdHJhY2VJZDpuLGlzUmVtb3RlOm99PWUuc3BhbkNvbnRleHQoKSxpPW8/dDp5KGUpLnBhcmVudF9zcGFuX2lkLGE9bz8oMCxsLlpGKSgpOnQ7cmV0dXJuKDAsci5DZSkoe3BhcmVudF9zcGFuX2lkOmksc3Bhbl9pZDphLHRyYWNlX2lkOm59KX1mdW5jdGlvbiBtKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT9nKGUpOkFycmF5LmlzQXJyYXkoZSk/ZVswXStlWzFdLzFlOTplIGluc3RhbmNlb2YgRGF0ZT9nKGUuZ2V0VGltZSgpKTooMCxkLnpmKSgpfWZ1bmN0aW9uIGcoZSl7cmV0dXJuIGU+OTk5OTk5OTk5OT9lLzFlMzplfWZ1bmN0aW9uIHkoZSl7aWYoZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0U3BhbkpTT059KGUpKXJldHVybiBlLmdldFNwYW5KU09OKCk7dHJ5e2NvbnN0e3NwYW5JZDp0LHRyYWNlSWQ6bn09ZS5zcGFuQ29udGV4dCgpO2lmKGZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZTtyZXR1cm4hISh0LmF0dHJpYnV0ZXMmJnQuc3RhcnRUaW1lJiZ0Lm5hbWUmJnQuZW5kVGltZSYmdC5zdGF0dXMpfShlKSl7Y29uc3R7YXR0cmlidXRlczpvLHN0YXJ0VGltZTpzLG5hbWU6YyxlbmRUaW1lOnUscGFyZW50U3BhbklkOmwsc3RhdHVzOmR9PWU7cmV0dXJuKDAsci5DZSkoe3NwYW5faWQ6dCx0cmFjZV9pZDpuLGRhdGE6byxkZXNjcmlwdGlvbjpjLHBhcmVudF9zcGFuX2lkOmwsc3RhcnRfdGltZXN0YW1wOm0ocyksdGltZXN0YW1wOm0odSl8fHZvaWQgMCxzdGF0dXM6YihkKSxvcDpvW2EudVRdLG9yaWdpbjpvW2EuSkRdLF9tZXRyaWNzX3N1bW1hcnk6aShlKX0pfXJldHVybntzcGFuX2lkOnQsdHJhY2VfaWQ6bn19Y2F0Y2goZSl7cmV0dXJue319fWZ1bmN0aW9uIHYoZSl7Y29uc3R7dHJhY2VGbGFnczp0fT1lLnNwYW5Db250ZXh0KCk7cmV0dXJuIHQ9PT1mfWZ1bmN0aW9uIGIoZSl7aWYoZSYmZS5jb2RlIT09cylyZXR1cm4gZS5jb2RlPT09Yz8ib2siOmUubWVzc2FnZXx8InVua25vd25fZXJyb3IifWNvbnN0IHc9Il9zZW50cnlSb290U3BhbiI7ZnVuY3Rpb24gXyhlKXtyZXR1cm4gZVt3XXx8ZX1mdW5jdGlvbiBTKCl7cHx8KCgwLHUucHEpKCgpPT57Y29uc29sZS53YXJuKCJbU2VudHJ5XSBEZXByZWNhdGlvbiB3YXJuaW5nOiBSZXR1cm5pbmcgbnVsbCBmcm9tIGBiZWZvcmVTZW5kU3BhbmAgd2lsbCBiZSBkaXNhbGxvd2VkIGZyb20gU0RLIHZlcnNpb24gOS4wLjAgb253YXJkcy4gVGhlIGNhbGxiYWNrIHdpbGwgb25seSBzdXBwb3J0IG11dGF0aW5nIHNwYW5zLiBUbyBkcm9wIGNlcnRhaW4gc3BhbnMsIGNvbmZpZ3VyZSB0aGUgcmVzcGVjdGl2ZSBpbnRlZ3JhdGlvbnMgZGlyZWN0bHkuIil9KSxwPSEwKX19LDI5NjI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDM0ODkpLG89big5NzkpLGk9LyN8XC5wcm90b3R5cGVcLi8sYT1mdW5jdGlvbihlLHQpe3ZhciBuPWNbcyhlKV07cmV0dXJuIG49PT1sfHxuIT09dSYmKG8odCk/cih0KTohIXQpfSxzPWEubm9ybWFsaXplPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZShpLCIuIikudG9Mb3dlckNhc2UoKX0sYz1hLmRhdGE9e30sdT1hLk5BVElWRT0iTiIsbD1hLlBPTFlGSUxMPSJQIjtlLmV4cG9ydHM9YX0sMjk3NDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNTAyNyksbz1uKDI0MSksaT1uKDc5OTMpLGE9bigzMDExKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcz1vKHQpLGM9YS5mLHU9aS5mLGw9MDtsPHMubGVuZ3RoO2wrKyl7dmFyIGQ9c1tsXTtyKGUsZCl8fG4mJnIobixkKXx8YyhlLGQsdSh0LGQpKX19fSwyOTk0OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big1NDMwKSxvPW4oNjY3NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJGdW5jdGlvbiI9PT1yKGUpKXJldHVybiBvKGUpfX0sMzAxMTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTQzMCksbz1uKDgyMDcpLGk9bigxNzQ0KSxhPW4oMzExNykscz1uKDQ4MTUpLGM9VHlwZUVycm9yLHU9T2JqZWN0LmRlZmluZVByb3BlcnR5LGw9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixkPSJlbnVtZXJhYmxlIixmPSJjb25maWd1cmFibGUiLHA9IndyaXRhYmxlIjt0LmY9cj9pP2Z1bmN0aW9uKGUsdCxuKXtpZihhKGUpLHQ9cyh0KSxhKG4pLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYicHJvdG90eXBlIj09PXQmJiJ2YWx1ZSJpbiBuJiZwIGluIG4mJiFuW3BdKXt2YXIgcj1sKGUsdCk7ciYmcltwXSYmKGVbdF09bi52YWx1ZSxuPXtjb25maWd1cmFibGU6ZiBpbiBuP25bZl06cltmXSxlbnVtZXJhYmxlOmQgaW4gbj9uW2RdOnJbZF0sd3JpdGFibGU6ITF9KX1yZXR1cm4gdShlLHQsbil9OnU6ZnVuY3Rpb24oZSx0LG4pe2lmKGEoZSksdD1zKHQpLGEobiksbyl0cnl7cmV0dXJuIHUoZSx0LG4pfWNhdGNoKGUpe31pZigiZ2V0ImluIG58fCJzZXQiaW4gbil0aHJvdyBuZXcgYygiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4idmFsdWUiaW4gbiYmKGVbdF09bi52YWx1ZSksZX19LDMwNDg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7VDpmdW5jdGlvbigpe3JldHVybiByfX0pO2NvbnN0IHI9InVuZGVmaW5lZCI9PXR5cGVvZiBfX1NFTlRSWV9ERUJVR19ffHxfX1NFTlRSWV9ERUJVR19ffSwzMTE3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big1MjY0KSxvPVN0cmluZyxpPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYocihlKSlyZXR1cm4gZTt0aHJvdyBuZXcgaShvKGUpKyIgaXMgbm90IGFuIG9iamVjdCIpfX0sMzExOTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMzkzMiksbz1uKDg3MjcpLGk9big4MDApLGE9bigzMTE3KSxzPW4oOTcyOSksYz1uKDg1MjQpLHU9bigzMjQ1KSxsPW4oNzcwOSksZD1uKDM5NzcpLGY9bigxNTEwKSxwPW4oNzM2OCksaD0hbCYmIWYoImZpbHRlciIsZnVuY3Rpb24oKXt9KSxtPSFsJiYhaCYmcCgiZmlsdGVyIixUeXBlRXJyb3IpLGc9bHx8aHx8bSx5PWMoZnVuY3Rpb24oKXtmb3IodmFyIGUsdCxuPXRoaXMuaXRlcmF0b3Iscj10aGlzLnByZWRpY2F0ZSxpPXRoaXMubmV4dDs7KXtpZihlPWEobyhpLG4pKSx0aGlzLmRvbmU9ISFlLmRvbmUpcmV0dXJuO2lmKHQ9ZS52YWx1ZSx1KG4scixbdCx0aGlzLmNvdW50ZXIrK10sITApKXJldHVybiB0fX0pO3Ioe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmd9LHtmaWx0ZXI6ZnVuY3Rpb24oZSl7YSh0aGlzKTt0cnl7aShlKX1jYXRjaChlKXtkKHRoaXMsInRocm93IixlKX1yZXR1cm4gbT9vKG0sdGhpcyxlKTpuZXcgeShzKHRoaXMpLHtwcmVkaWNhdGU6ZX0pfX0pfSwzMTQ3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7big3NzYyKX0sMzIyMDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oODcyNyksbz1uKDk3OSksaT1uKDUyNjQpLGE9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuLHM7aWYoInN0cmluZyI9PT10JiZvKG49ZS50b1N0cmluZykmJiFpKHM9cihuLGUpKSlyZXR1cm4gcztpZihvKG49ZS52YWx1ZU9mKSYmIWkocz1yKG4sZSkpKXJldHVybiBzO2lmKCJzdHJpbmciIT09dCYmbyhuPWUudG9TdHJpbmcpJiYhaShzPXIobixlKSkpcmV0dXJuIHM7dGhyb3cgbmV3IGEoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sMzIyNTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtCOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LE86ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgcj1uKDc5NTApO2NvbnN0IG89Z2xvYmFsVGhpcztmdW5jdGlvbiBpKGUsdCxuKXtjb25zdCBpPW58fG8sYT1pLl9fU0VOVFJZX189aS5fX1NFTlRSWV9ffHx7fSxzPWFbci5NXT1hW3IuTV18fHt9O3JldHVybiBzW2VdfHwoc1tlXT10KCkpfX0sMzI0NTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMzExNyksbz1uKDM5NzcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixpKXt0cnl7cmV0dXJuIGk/dChyKG4pWzBdLG5bMV0pOnQobil9Y2F0Y2godCl7byhlLCJ0aHJvdyIsdCl9fX0sMzI2NzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByLG8saSxhPW4oMzQ4OSkscz1uKDk3OSksYz1uKDUyNjQpLHU9bigyMDgyKSxsPW4oNTY4NSksZD1uKDkxNzApLGY9bigxMzg1KSxwPW4oNzcwOSksaD1mKCJpdGVyYXRvciIpLG09ITE7W10ua2V5cyYmKCJuZXh0ImluKGk9W10ua2V5cygpKT8obz1sKGwoaSkpKSE9PU9iamVjdC5wcm90b3R5cGUmJihyPW8pOm09ITApLCFjKHIpfHxhKGZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIHJbaF0uY2FsbChlKSE9PWV9KT9yPXt9OnAmJihyPXUocikpLHMocltoXSl8fGQocixoLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxlLmV4cG9ydHM9e0l0ZXJhdG9yUHJvdG90eXBlOnIsQlVHR1lfU0FGQVJJX0lURVJBVE9SUzptfX0sMzM5OTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNDQwMSksbz1uKDc2NTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcihvKGUpKX19LDM0MDk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDc1NzApLG89big1MjY0KSxpPXIuZG9jdW1lbnQsYT1vKGkpJiZvKGkuY3JlYXRlRWxlbWVudCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhP2kuY3JlYXRlRWxlbWVudChlKTp7fX19LDM0MTM6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDY2NzQpLG89MCxpPU1hdGgucmFuZG9tKCksYT1yKDEuMS50b1N0cmluZyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJTeW1ib2woIisodm9pZCAwPT09ZT8iIjplKSsiKV8iK2EoKytvK2ksMzYpfX0sMzQ1NDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTk0NCksbz17Y2hpbGRDb250ZXh0VHlwZXM6ITAsY29udGV4dFR5cGU6ITAsY29udGV4dFR5cGVzOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxnZXREZWZhdWx0UHJvcHM6ITAsZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiEwLGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczohMCxtaXhpbnM6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LGk9e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlwZTohMCxjYWxsZXI6ITAsY2FsbGVlOiEwLGFyZ3VtZW50czohMCxhcml0eTohMH0sYT17JCR0eXBlb2Y6ITAsY29tcGFyZTohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LHM9e307ZnVuY3Rpb24gYyhlKXtyZXR1cm4gci5pc01lbW8oZSk/YTpzW2UuJCR0eXBlb2ZdfHxvfXNbci5Gb3J3YXJkUmVmXT17JCR0eXBlb2Y6ITAscmVuZGVyOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxwcm9wVHlwZXM6ITB9LHNbci5NZW1vXT1hO3ZhciB1PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLGQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxmPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IscD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsaD1PYmplY3QucHJvdG90eXBlO2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQsbixyKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pe2lmKGgpe3ZhciBvPXAobik7byYmbyE9PWgmJmUodCxvLHIpfXZhciBhPWwobik7ZCYmKGE9YS5jb25jYXQoZChuKSkpO2Zvcih2YXIgcz1jKHQpLG09YyhuKSxnPTA7ZzxhLmxlbmd0aDsrK2cpe3ZhciB5PWFbZ107aWYoIShpW3ldfHxyJiZyW3ldfHxtJiZtW3ldfHxzJiZzW3ldKSl7dmFyIHY9ZihuLHkpO3RyeXt1KHQseSx2KX1jYXRjaChlKXt9fX19cmV0dXJuIHR9fSwzNDgwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oNDk4Nyl9LDM0ODk6ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuISFlKCl9Y2F0Y2goZSl7cmV0dXJuITB9fX0sMzUyOTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oOTg4Miksbz1uKDk3OSksaT1uKDU0MzApLGE9bigxMzg1KSgidG9TdHJpbmdUYWciKSxzPU9iamVjdCxjPSJBcmd1bWVudHMiPT09aShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO2UuZXhwb3J0cz1yP2k6ZnVuY3Rpb24oZSl7dmFyIHQsbixyO3JldHVybiB2b2lkIDA9PT1lPyJVbmRlZmluZWQiOm51bGw9PT1lPyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKG49ZnVuY3Rpb24oZSx0KXt0cnl7cmV0dXJuIGVbdF19Y2F0Y2goZSl7fX0odD1zKGUpLGEpKT9uOmM/aSh0KToiT2JqZWN0Ij09PShyPWkodCkpJiZvKHQuY2FsbGVlKT8iQXJndW1lbnRzIjpyfX0sMzU2MjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHskTjpmdW5jdGlvbigpe3JldHVybiBjfSxIZDpmdW5jdGlvbigpe3JldHVybiBhfSx4RTpmdW5jdGlvbigpe3JldHVybiB1fX0pO3ZhciByPW4oOTAwNCk7Y29uc3Qgbz1uKDMyMjUpLk8saT04MDtmdW5jdGlvbiBhKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZighZSlyZXR1cm4iPHVua25vd24+Ijt0cnl7bGV0IG49ZTtjb25zdCByPTUsbz1bXTtsZXQgYT0wLGM9MDtjb25zdCB1PSIgPiAiLGw9dS5sZW5ndGg7bGV0IGQ7Y29uc3QgZj1BcnJheS5pc0FycmF5KHQpP3Q6dC5rZXlBdHRycyxwPSFBcnJheS5pc0FycmF5KHQpJiZ0Lm1heFN0cmluZ0xlbmd0aHx8aTtmb3IoO24mJmErKzxyJiYoZD1zKG4sZiksISgiaHRtbCI9PT1kfHxhPjEmJmMrby5sZW5ndGgqbCtkLmxlbmd0aD49cCkpOylvLnB1c2goZCksYys9ZC5sZW5ndGgsbj1uLnBhcmVudE5vZGU7cmV0dXJuIG8ucmV2ZXJzZSgpLmpvaW4odSl9Y2F0Y2goZSl7cmV0dXJuIjx1bmtub3duPiJ9fWZ1bmN0aW9uIHMoZSx0KXtjb25zdCBuPWUsaT1bXTtpZighbnx8IW4udGFnTmFtZSlyZXR1cm4iIjtpZihvLkhUTUxFbGVtZW50JiZuIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJm4uZGF0YXNldCl7aWYobi5kYXRhc2V0LnNlbnRyeUNvbXBvbmVudClyZXR1cm4gbi5kYXRhc2V0LnNlbnRyeUNvbXBvbmVudDtpZihuLmRhdGFzZXQuc2VudHJ5RWxlbWVudClyZXR1cm4gbi5kYXRhc2V0LnNlbnRyeUVsZW1lbnR9aS5wdXNoKG4udGFnTmFtZS50b0xvd2VyQ2FzZSgpKTtjb25zdCBhPXQmJnQubGVuZ3RoP3QuZmlsdGVyKGU9Pm4uZ2V0QXR0cmlidXRlKGUpKS5tYXAoZT0+W2Usbi5nZXRBdHRyaWJ1dGUoZSldKTpudWxsO2lmKGEmJmEubGVuZ3RoKWEuZm9yRWFjaChlPT57aS5wdXNoKGBbJHtlWzBdfT0iJHtlWzFdfSJdYCl9KTtlbHNle24uaWQmJmkucHVzaChgIyR7bi5pZH1gKTtjb25zdCBlPW4uY2xhc3NOYW1lO2lmKGUmJigwLHIuS2cpKGUpKXtjb25zdCB0PWUuc3BsaXQoL1xzKy8pO2Zvcihjb25zdCBlIG9mIHQpaS5wdXNoKGAuJHtlfWApfX1jb25zdCBzPVsiYXJpYS1sYWJlbCIsInR5cGUiLCJuYW1lIiwidGl0bGUiLCJhbHQiXTtmb3IoY29uc3QgZSBvZiBzKXtjb25zdCB0PW4uZ2V0QXR0cmlidXRlKGUpO3QmJmkucHVzaChgWyR7ZX09IiR7dH0iXWApfXJldHVybiBpLmpvaW4oIiIpfWZ1bmN0aW9uIGMoKXt0cnl7cmV0dXJuIG8uZG9jdW1lbnQubG9jYXRpb24uaHJlZn1jYXRjaChlKXtyZXR1cm4iIn19ZnVuY3Rpb24gdShlKXtpZighby5IVE1MRWxlbWVudClyZXR1cm4gbnVsbDtsZXQgdD1lO2ZvcihsZXQgZT0wO2U8NTtlKyspe2lmKCF0KXJldHVybiBudWxsO2lmKHQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7aWYodC5kYXRhc2V0LnNlbnRyeUNvbXBvbmVudClyZXR1cm4gdC5kYXRhc2V0LnNlbnRyeUNvbXBvbmVudDtpZih0LmRhdGFzZXQuc2VudHJ5RWxlbWVudClyZXR1cm4gdC5kYXRhc2V0LnNlbnRyeUVsZW1lbnR9dD10LnBhcmVudE5vZGV9cmV0dXJuIG51bGx9fSwzNjE3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7big1NzE4KSxuKDU4NTUpO3ZhciByPW4oODk0OCksbz1uKDE4NzUpLGk9big1ODMpO2NvbnN0IGE9e3BvcFVwT3Blbjoib3BlbiIscG9wVXBIaWRlOiJjbG9zZSIsY2hhdERpc3BsYXk6ImRpc3BsYXkiLHNldENvbG9yUGFsbGV0ZToic2V0Q29sb3JQYWxldHRlIn0scz0oZSx0LG4pPT5mdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7YSsrKW9bYV09YXJndW1lbnRzW2FdO3JldHVybiBuKCgwLGkua2YkKShlLG8pKSx0LmNhbGwobnVsbCwuLi5vKX07dC5BPWZ1bmN0aW9uKGUpe2xldHtkaXNwYXRjaDp0fT1lO2NvbnN0IG49KGU9Pih7b3BlbjooKT0+e2UoKDAsaS5ucHcpKCEwKSl9LGNsb3NlOigpPT57ZSgoMCxpLm5wdykoITEpKX0sZGlzcGxheTpmdW5jdGlvbigpe2xldCB0PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF07ZSgoMCxpLnRhRykodCwidGlkaW9DaGF0QXBpIikpfSxzaG93OigpPT57ZSgoMCxpLnRhRykoITAsInRpZGlvQ2hhdEFwaSIpKX0saGlkZTooKT0+e2UoKDAsaS50YUcpKCExLCJ0aWRpb0NoYXRBcGkiKSl9LHNldENvbG9yUGFsZXR0ZTp0PT57ZSgoMCxpLnNnZikoKDAsci5NUSkoW3RdKSkpfSx0cmFjazoodCxuLHIpPT57dCYmInN0cmluZyI9PXR5cGVvZiB0JiZlKCgwLGkubE51KSh0LG4scikpfSxtZXNzYWdlRnJvbVZpc2l0b3I6dD0+e2UoKDAsaS5HOGMpKHQpKX0sbWVzc2FnZUZyb21PcGVyYXRvcjp0PT57ZSgoMCxpLnRqUikoKDAsby5IMSkodCkpKX0sc2V0VmlzaXRvckRhdGE6dD0+e2UoKDAsaS5TMWopKHQpKX0sYWRkVmlzaXRvclRhZ3M6dD0+e2UoKDAsaS4kYTcpKHQpKX0sc2V0Q29udGFjdFByb3BlcnRpZXM6dD0+e2UoKDAsaS5zSmUpKHQpKX0sc2V0RmVhdHVyZXM6dD0+e2UoKDAsaS51T3kpKHQpKX0sYWRqdXN0U3R5bGVzOnQ9PmUoKDAsaS5XR00pKHQpKSxyZW1vdmVTdHlsZXM6dD0+e2UoKDAsaS5oRG4pKHQpKX0sc2V0VmlzaXRvckN1cnJlbmN5OnQ9PmUoKDAsaS5HT1cpKHQpKSxzZXREZXZpY2VUeXBlOnQ9PntlKCgwLGkuRFB3KSh0KSl9fSkpKHQpO09iamVjdC5rZXlzKG4pLmZvckVhY2goZT0+e2NvbnN0IHI9bltlXTt3aW5kb3cudGlkaW9DaGF0QXBpfHwod2luZG93LnRpZGlvQ2hhdEFwaT17fSksd2luZG93LnRpZGlvQ2hhdEFwaVtlXT1zKGUscix0KX0pLE9iamVjdC5rZXlzKGEpLmZvckVhY2goZT0+e2NvbnN0IHI9blthW2VdXTt3aW5kb3cudGlkaW9DaGF0QXBpfHwod2luZG93LnRpZGlvQ2hhdEFwaT17fSksd2luZG93LnRpZGlvQ2hhdEFwaVtlXT1zKGUscix0KX0pfX0sMzY1MDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHskNDpmdW5jdGlvbigpe3JldHVybiBYfSwkWTpmdW5jdGlvbigpe3JldHVybiBzZX0sQW86ZnVuY3Rpb24oKXtyZXR1cm4geX0sREc6ZnVuY3Rpb24oKXtyZXR1cm4gR30sRFc6ZnVuY3Rpb24oKXtyZXR1cm4gd2V9LEZfOmZ1bmN0aW9uKCl7cmV0dXJuIGdlfSxGcjpmdW5jdGlvbigpe3JldHVybiBfZX0sSEU6ZnVuY3Rpb24oKXtyZXR1cm4gUH0sSkk6ZnVuY3Rpb24oKXtyZXR1cm4gS30sSzpmdW5jdGlvbigpe3JldHVybiBxfSxLNzpmdW5jdGlvbigpe3JldHVybiBsZX0sSzg6ZnVuY3Rpb24oKXtyZXR1cm4gbWV9LEtaOmZ1bmN0aW9uKCl7cmV0dXJuIFN9LExkOmZ1bmN0aW9uKCl7cmV0dXJuIE19LE4wOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LE55OmZ1bmN0aW9uKCl7cmV0dXJuIFp9LE8xOmZ1bmN0aW9uKCl7cmV0dXJuIHVlfSxQODpmdW5jdGlvbigpe3JldHVybiBnfSxQWTpmdW5jdGlvbigpe3JldHVybiBkZX0sUTU6ZnVuY3Rpb24oKXtyZXR1cm4gY2V9LFFuOmZ1bmN0aW9uKCl7cmV0dXJuIGt9LFJwOmZ1bmN0aW9uKCl7cmV0dXJuIEN9LFR3OmZ1bmN0aW9uKCl7cmV0dXJuIGN9LFZROmZ1bmN0aW9uKCl7cmV0dXJuIFR9LFhMOmZ1bmN0aW9uKCl7cmV0dXJuIHllfSxZQTpmdW5jdGlvbigpe3JldHVybiBWfSxZTjpmdW5jdGlvbigpe3JldHVybiBsfSxaWDpmdW5jdGlvbigpe3JldHVybiB1fSxaaDpmdW5jdGlvbigpe3JldHVybiBRfSxiSTpmdW5jdGlvbigpe3JldHVybiBuZX0sY2Y6ZnVuY3Rpb24oKXtyZXR1cm4gYmV9LGRCOmZ1bmN0aW9uKCl7cmV0dXJuIHJlfSxlQzpmdW5jdGlvbigpe3JldHVybiBFfSxlbTpmdW5jdGlvbigpe3JldHVybiBwZX0sZXo6ZnVuY3Rpb24oKXtyZXR1cm4gdGV9LGZPOmZ1bmN0aW9uKCl7cmV0dXJuIEx9LGZoOmZ1bmN0aW9uKCl7cmV0dXJuIGllfSxnUzpmdW5jdGlvbigpe3JldHVybiBSfSxncDpmdW5jdGlvbigpe3JldHVybiBGfSxoZTpmdW5jdGlvbigpe3JldHVybiBJfSxodTpmdW5jdGlvbigpe3JldHVybiBifSxpczpmdW5jdGlvbigpe3JldHVybiBCfSxpeDpmdW5jdGlvbigpe3JldHVybiBhZX0sajY6ZnVuY3Rpb24oKXtyZXR1cm4gb2V9LGw1OmZ1bmN0aW9uKCl7cmV0dXJuIHZlfSxtVjpmdW5jdGlvbigpe3JldHVybiB3fSxtbTpmdW5jdGlvbigpe3JldHVybiAkfSxvNDpmdW5jdGlvbigpe3JldHVybiBBfSxvRDpmdW5jdGlvbigpe3JldHVybiBoZX0scFE6ZnVuY3Rpb24oKXtyZXR1cm4gZH0scHo6ZnVuY3Rpb24oKXtyZXR1cm4gan0scTY6ZnVuY3Rpb24oKXtyZXR1cm4gV30sc1M6ZnVuY3Rpb24oKXtyZXR1cm4gSH0sc2Q6ZnVuY3Rpb24oKXtyZXR1cm4gRH0sc3k6ZnVuY3Rpb24oKXtyZXR1cm4gdn0sdGY6ZnVuY3Rpb24oKXtyZXR1cm4gX30sdGw6ZnVuY3Rpb24oKXtyZXR1cm4gZmV9LHVvOmZ1bmN0aW9uKCl7cmV0dXJuIE99LHZMOmZ1bmN0aW9uKCl7cmV0dXJuIFl9LHdZOmZ1bmN0aW9uKCl7cmV0dXJuIHB9LHduOmZ1bmN0aW9uKCl7cmV0dXJuIHh9LHhJOmZ1bmN0aW9uKCl7cmV0dXJuIHp9LHlVOmZ1bmN0aW9uKCl7cmV0dXJuIG19LHoyOmZ1bmN0aW9uKCl7cmV0dXJuIE59LHpIOmZ1bmN0aW9uKCl7cmV0dXJuIGVlfSx6eDpmdW5jdGlvbigpe3JldHVybiBVfX0pO24oNTcxOCksbig3NDUwKSxuKDMxNDcpLG4oODI2NCk7dmFyIHI9big4OTQ4KSxvPW4oNzMyNiksaT1uKDI3MjQpLGE9bigxODc1KSxzPW4oOTc4OCk7Y29uc3QgYz1lPT4hIWU/LnZpc2l0b3I/LmlzX2NoYXRfb25fc2l0ZSYmZS52aXNpdG9yLmlzX2NoYXRfb25fc2l0ZSx1PWU9PmUucm91dGluZ1J1bGVzLmFyZUVuYWJsZWQsbD1lPT5udWxsIT09ZS5zZWxlY3RlZERlcGFydG1lbnQsZD1lPT5lLnNlbGVjdGVkRGVwYXJ0bWVudCxmPShlLHQpPT57bGV0e3Bvc2l0aW9uOm59PWUse3Bvc2l0aW9uOnJ9PXQ7cmV0dXJuIG4tcn0scD1lPT5lLnJvdXRpbmdSdWxlcy5vcHRpb25zLnNsaWNlKCkuc29ydChmKSxoPShlLHQpPT57Y29uc3Qgbj1lLm9wZXJhdG9ycy5maW5kKGU9PmUuaWQ9PT10KTtyZXR1cm4gbiYmbj8uYXZhdGFyU3JjfHwiIn0sbT0oZSx0KT0+e2NvbnN0IG49ZS5hc3NpZ25lZE9wZXJhdG9yc0RhdGEuZmluZChlPT5lLmlkPT09dCk7cmV0dXJuIG4mJm4/Lm5hbWV8fCIifSxnPWU9PmUucmVjb25uZWN0QXR0ZW1wdENvdW50PjUseT0oKCk9PntsZXQgZT1udWxsLHQ9bnVsbDtyZXR1cm4gbj0+KG4ubWVzc2FnZXM9PT1lJiZudWxsIT09dHx8KGU9bi5tZXNzYWdlcyx0PW4ubWVzc2FnZXMuZmlsdGVyKGU9PiFlLmlzSGlkZGVuKSksdCl9KSgpLHY9ZT0+e2NvbnN0IHQ9eShlKSxuPXQubGVuZ3RoO2lmKG4+MClyZXR1cm4gdFtuLTFdfSxiPShlLHQpPT57Y29uc3Qgbj15KGUpLHI9bi5maW5kSW5kZXgoZT0+ZS5pZD09PXQpO2lmKG4ubGVuZ3RoPnIpcmV0dXJuIG5bcisxXX0sdz0oZSx0KT0+dihlKT8uaWQ9PT10LF89ZT0+Qm9vbGVhbih2KGUpPy5kaXNhYmxlVGV4dElucHV0KSxTPWU9PmUudmlldyxFPWU9PmUubW9iaWxlQnV0dG9uU2l6ZSxDPWU9PmUuY2hhdElmcmFtZVN0eWxlcy5kaW1lbnNpb25zLGs9ZT0+ZS5haUFzc2lzdGFudE5hbWV8fHIuUU8sQT1lPT5lLnNob3dVc2VyRGF0YU1vZGFsJiZlLnZpZXc9PT1pLmwuY2hhdHx8ZyhlKXx8XyhlKXx8KGU9PmUuZGlzYWJsZVRleHRJbnB1dCkoZSkmJiEoZT0+Qm9vbGVhbih2KGUpPy5pc1dhaXRpbmdGb3JBbnN3ZXIpKShlKSxPPWU9PmUucGxhdGZvcm0sVD1lPT5lLmlzRHJhZ0FuZERyb3BBY3RpdmUmJmUuYWxsb3dBdHRhY2htZW50cyx4PWU9PmUuYWxlcnQuY29udGVudCxJPWU9PmUudmlzaXRvci5lbWFpbCxOPShlLHQpPT50P2Uuc2F0aXNmYWN0aW9uU3VydmV5W3RdOm51bGwsTD1lPT5lLndpZGdldENvbG9yLFA9ZT0+ZS5jdXN0b21CcmFuZGluZyxNPWU9PmUuY3VzdG9tQXZhdGFyLFI9KCk9PltzLk1tLk1BSUxDSElNUCxzLk1tLk1BSUxDSElNUF9WMl0sRD1lPT5lLnByZWNoYXRTdWJzY3JpcHRpb25DaGVja2JveERlZmF1bHRWYWx1ZSxGPWU9PmUuYmxvY2tlZE1lc3NhZ2Usaj1lPT5lLmNyZWF0ZVRpY2tldFdoZW5PcGVyYXRvcnNPZmZsaW5lLEI9ZT0+ZS5wdWJsaWNLZXksVj1lPT5lLnZpc2l0b3IuaWQsVT1lPT5lLndpZGdldExhYmVsU3RhdHVzJiYhZS5pc01vYmlsZSYmITE9PT1lLnNpZGViYXJJZnJhbWVTdHlsZXMsej1lPT5lLndpZGdldExhYmVsVGV4dCxIPWU9PmUuc2lkZWJhcklmcmFtZVN0eWxlcz9lLnNpZGViYXJJZnJhbWVTdHlsZXMucG9zaXRpb246InJpZ2h0IiwkPWU9PmUub3BlcmF0b3JzLFk9ZT0+ZS5vcGVyYXRvcnMuc29tZShlPT5lLmlzT25saW5lKT8ib25saW5lIjoib2ZmbGluZSIscT1lPT5lLmFzc2lnbmVkT3BlcmF0b3JzRGF0YSxXPWU9PmUuYXNzaWduZWRPcGVyYXRvcnMsRz1lPT5lLmFpQXNzaXN0YW50SXNUaGlua2luZyxRPWU9PmUuYWlBc3Npc3RhbnQsSz1lPT5lLmlmcmFtZU1vZGFsVXJsLFo9ZT0+ZS5pc01vYmlsZSxYPShlLHQpPT57Y29uc3Qgbj15KGUpLHI9bi5maW5kKGU9PmUuaWRGcm9tU2VydmVyPT09dCk/LmNvbnRlbnQ7cmV0dXJuIHJ9LEo9KGUsdCk9PnkoZSkuZmluZChlPT5lLnR5cGU9PT10KSxlZT1lPT5KKGUscy5Hby5QUkVDSEFUKSx0ZT1lPT52b2lkIDAhPT1KKGUscy5Hby5BTFdBWVNfT05MSU5FKSxuZT0oZSx0KT0+eShlKS5maWx0ZXIoZT0+ZS50eXBlPT09dCkscmU9ZT0+e3RyeXtjb25zdCBuPShlPT57Y29uc3QgdD1uZShlLHMuR28uQUxXQVlTX09OTElORSk7cmV0dXJuIHQubGVuZ3RoPjA/dFt0Lmxlbmd0aC0xXTp2b2lkIDB9KShlKTtyZXR1cm4hIW4mJih0PW4sKDAsci5MbikoKS0zNjAwPj10LnRpbWVfc2VudCl9Y2F0Y2goZSl7cmV0dXJuKDAsby5zUSkoZSksITF9dmFyIHR9LG9lPWU9Pntjb25zdCB0PXkoZSksbj10Lmxlbmd0aD4wP3RbdC5sZW5ndGgtMV0udGltZV9zZW50OjA7cmV0dXJuIE1hdGguZmxvb3IoKG5ldyBEYXRlKS5nZXRUaW1lKCkvMWUzKS1uPjg2NDAwfSxpZT1lPT57Y29uc3QgdD0oMCxhLnRyKShlLnByZUNoYXQuZGF0YSxlLnZpc2l0b3IpLG49KGU9PmUucHJlQ2hhdC5pc0ZpbGxlZCkoZSk7cmV0dXJuIW4mJjAhPT10Lmxlbmd0aH0sYWU9ZT0+ZS5pc0F3ZXNvbWVJZnJhbWUmJiExPT09ZS5zaWRlYmFySWZyYW1lU3R5bGVzLHNlPWU9PmUubWVzc2FnZUZvckZseSxjZT1lPT5lLmNvbnZlcnNhdGlvblN0YXJ0ZXJzLHVlPWU9PmUub3BlblRhYixsZT1lPT57Y29uc3QgdD15KGUpLmxlbmd0aD4wLG49b2UoZSkscj1BKGUpO3JldHVybighdHx8bikmJiFyJiYhZS5pc01vYmlsZX0sZGU9ZT0+e2NvbnN0IHQ9dWUoZSk7cmV0dXJuIFMoZSk9PT1pLmwuY2hhdCYmImNvbnZlcnNhdGlvbnMiPT09dH0sZmU9ZT0+ZS5kZXNpZ25WZXJzaW9uLHBlPWU9PmUuYWxsb3dDbG9zZSxoZT1lPT5lLmlzUHJpdmFjeVBvbGljeUVuYWJsZWQsbWU9ZT0+ZS5pc1ByaXZhY3lQb2xpY3lEaXNtaXNzZWQsZ2U9ZT0+ZS5zaG93QnJhbmRpbmcmJmUucGxhdGZvcm0hPT1zLk9ELlNIT1BJRlkseWU9ZT0+ZS5tb2JpbGVIYXNoLHZlPWU9PmUuaGlkZUNoYXRXaXRoVXNPbkhvbWUsYmU9ZT0+ZS5wZW5kaW5nQXR0YWNobWVudHMsd2U9ZT0+ZS5wZW5kaW5nQWRkVG9DYXJ0Q2FyZEtleSxfZT1lPT5lLmFpQXNzaXN0YW50RGVmYXVsdFByb2R1Y3RDYXJkQWN0aW9ufSwzNjk3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse1M4OmZ1bmN0aW9uKCl7cmV0dXJuIGF9LGNkOmZ1bmN0aW9uKCl7cmV0dXJuIHN9fSk7dmFyIHI9big5MDA0KTt2YXIgbz1uKDIyNDcpLGk9big4MDQxKTtmdW5jdGlvbiBhKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToxMDAsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MS8wO3RyeXtyZXR1cm4gYygiIixlLHQsbil9Y2F0Y2goZSl7cmV0dXJue0VSUk9SOmAqKm5vbi1zZXJpYWxpemFibGUqKiAoJHtlfSlgfX19ZnVuY3Rpb24gcyhlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MyxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxMDI0MDA7Y29uc3Qgcj1hKGUsdCk7cmV0dXJuIG89cixmdW5jdGlvbihlKXtyZXR1cm5+LWVuY29kZVVSSShlKS5zcGxpdCgvJS4ufC4vKS5sZW5ndGh9KEpTT04uc3RyaW5naWZ5KG8pKT5uP3MoZSx0LTEsbik6cjt2YXIgb31mdW5jdGlvbiBjKGUsdCl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjEvMCxzPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXToxLzAsdT1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06ZnVuY3Rpb24oKXtjb25zdCBlPSJmdW5jdGlvbiI9PXR5cGVvZiBXZWFrU2V0LHQ9ZT9uZXcgV2Vha1NldDpbXTtyZXR1cm5bZnVuY3Rpb24obil7aWYoZSlyZXR1cm4hIXQuaGFzKG4pfHwodC5hZGQobiksITEpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV09PT1uKXJldHVybiEwO3JldHVybiB0LnB1c2gobiksITF9LGZ1bmN0aW9uKG4pe2lmKGUpdC5kZWxldGUobik7ZWxzZSBmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylpZih0W2VdPT09bil7dC5zcGxpY2UoZSwxKTticmVha319XX0oKTtjb25zdFtsLGRdPXU7aWYobnVsbD09dHx8WyJib29sZWFuIiwic3RyaW5nIl0uaW5jbHVkZXModHlwZW9mIHQpfHwibnVtYmVyIj09dHlwZW9mIHQmJk51bWJlci5pc0Zpbml0ZSh0KSlyZXR1cm4gdDtjb25zdCBmPWZ1bmN0aW9uKGUsdCl7dHJ5e2lmKCJkb21haW4iPT09ZSYmdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZ0Ll9ldmVudHMpcmV0dXJuIltEb21haW5dIjtpZigiZG9tYWluRW1pdHRlciI9PT1lKXJldHVybiJbRG9tYWluRW1pdHRlcl0iO2lmKHZvaWQgMCE9PW4uZyYmdD09PW4uZylyZXR1cm4iW0dsb2JhbF0iO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ0PT09d2luZG93KXJldHVybiJbV2luZG93XSI7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmdD09PWRvY3VtZW50KXJldHVybiJbRG9jdW1lbnRdIjtpZigoMCxyLkwyKSh0KSlyZXR1cm4iW1Z1ZVZpZXdNb2RlbF0iO2lmKCgwLHIubUUpKHQpKXJldHVybiJbU3ludGhldGljRXZlbnRdIjtpZigibnVtYmVyIj09dHlwZW9mIHQmJiFOdW1iZXIuaXNGaW5pdGUodCkpcmV0dXJuYFske3R9XWA7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuYFtGdW5jdGlvbjogJHsoMCxpLnFRKSh0KX1dYDtpZigic3ltYm9sIj09dHlwZW9mIHQpcmV0dXJuYFske1N0cmluZyh0KX1dYDtpZigiYmlnaW50Ij09dHlwZW9mIHQpcmV0dXJuYFtCaWdJbnQ6ICR7U3RyaW5nKHQpfV1gO2NvbnN0IG89ZnVuY3Rpb24oZSl7Y29uc3QgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIHQ/dC5jb25zdHJ1Y3Rvci5uYW1lOiJudWxsIHByb3RvdHlwZSJ9KHQpO3JldHVybi9eSFRNTChcdyopRWxlbWVudCQvLnRlc3Qobyk/YFtIVE1MRWxlbWVudDogJHtvfV1gOmBbb2JqZWN0ICR7b31dYH1jYXRjaChlKXtyZXR1cm5gKipub24tc2VyaWFsaXphYmxlKiogKCR7ZX0pYH19KGUsdCk7aWYoIWYuc3RhcnRzV2l0aCgiW29iamVjdCAiKSlyZXR1cm4gZjtpZih0Ll9fc2VudHJ5X3NraXBfbm9ybWFsaXphdGlvbl9fKXJldHVybiB0O2NvbnN0IHA9Im51bWJlciI9PXR5cGVvZiB0Ll9fc2VudHJ5X292ZXJyaWRlX25vcm1hbGl6YXRpb25fZGVwdGhfXz90Ll9fc2VudHJ5X292ZXJyaWRlX25vcm1hbGl6YXRpb25fZGVwdGhfXzphO2lmKDA9PT1wKXJldHVybiBmLnJlcGxhY2UoIm9iamVjdCAiLCIiKTtpZihsKHQpKXJldHVybiJbQ2lyY3VsYXIgfl0iO2NvbnN0IGg9dDtpZihoJiYiZnVuY3Rpb24iPT10eXBlb2YgaC50b0pTT04pdHJ5e3JldHVybiBjKCIiLGgudG9KU09OKCkscC0xLHMsdSl9Y2F0Y2goZSl7fWNvbnN0IG09QXJyYXkuaXNBcnJheSh0KT9bXTp7fTtsZXQgZz0wO2NvbnN0IHk9KDAsby5XNCkodCk7Zm9yKGNvbnN0IGUgaW4geSl7aWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh5LGUpKWNvbnRpbnVlO2lmKGc+PXMpe21bZV09IltNYXhQcm9wZXJ0aWVzIH5dIjticmVha31jb25zdCB0PXlbZV07bVtlXT1jKGUsdCxwLTEscyx1KSxnKyt9cmV0dXJuIGQodCksbX19LDM5MzI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDc1NzApLG89big3OTkzKS5mLGk9bigxNDEzKSxhPW4oOTE3MCkscz1uKDQ1NSksYz1uKDI5NzQpLHU9bigyOTYyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixsLGQsZixwLGg9ZS50YXJnZXQsbT1lLmdsb2JhbCxnPWUuc3RhdDtpZihuPW0/cjpnP3JbaF18fHMoaCx7fSk6cltoXSYmcltoXS5wcm90b3R5cGUpZm9yKGwgaW4gdCl7aWYoZj10W2xdLGQ9ZS5kb250Q2FsbEdldFNldD8ocD1vKG4sbCkpJiZwLnZhbHVlOm5bbF0sIXUobT9sOmgrKGc/Ii4iOiIjIikrbCxlLmZvcmNlZCkmJnZvaWQgMCE9PWQpe2lmKHR5cGVvZiBmPT10eXBlb2YgZCljb250aW51ZTtjKGYsZCl9KGUuc2hhbXx8ZCYmZC5zaGFtKSYmaShmLCJzaGFtIiwhMCksYShuLGwsZixlKX19fSwzOTM4OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bigxNjMpfSwzOTUyOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse0I3OmZ1bmN0aW9uKCl7cmV0dXJuIG99LElsOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LE9BOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSk7big5MzI4KTtjb25zdCByPWFzeW5jKCk9Pnt0cnl7Y29uc3QgZT1hd2FpdCB3aW5kb3cucGFyZW50LmZldGNoKCIvY2FydC5qcyIse21ldGhvZDoiR0VUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGNyZWRlbnRpYWxzOiJpbmNsdWRlIn0pLHQ9YXdhaXQgUHJvbWlzZS5hbGwoW2UuanNvbigpLGVdKSxbbixyXT10O2lmKDQwMT09PXIuc3RhdHVzKXRocm93IG5ldyBFcnJvcihTdHJpbmcoci5zdGF0dXMpKTtpZighci5va3x8IW4pdGhyb3cgbmV3IEVycm9yKGBFcnJvciBjb2RlIC0gJHtyLnN0YXR1c31gKTtyZXR1cm4gbn1jYXRjaChlKXt0aHJvdyBlIGluc3RhbmNlb2YgRXJyb3I/ZTpuZXcgRXJyb3IoIkNvdWxkbid0IGZldGNoIFNob3BpZnkgY2FydCBmcm9tIHBhcmVudCB3aW5kb3ciKX19LG89YXN5bmMoKT0+e2NvbnN0IGU9e2F0dHJpYnV0ZXM6eyJUaWRpbyBWaXNpdG9yIElkIjpudWxsfX07dHJ5e3JldHVybiBhd2FpdCB3aW5kb3cucGFyZW50LmZldGNoKCIvY2FydC91cGRhdGUuanMiLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keTpKU09OLnN0cmluZ2lmeShlKX0pfWNhdGNoKGUpe3Rocm93IGUgaW5zdGFuY2VvZiBFcnJvcj9lOm5ldyBFcnJvcigiQ291bGRuJ3QgdXBkYXRlIFNob3BpZnkgY2FydCBmcm9tIHBhcmVudCB3aW5kb3ciKX19LGk9YXN5bmMgZT0+e2NvbnN0IHQ9e2l0ZW1zOlt7aWQ6ZSxxdWFudGl0eToxfV19O3RyeXtyZXR1cm4gYXdhaXQgd2luZG93LnBhcmVudC5mZXRjaCgiL2NhcnQvYWRkLmpzIix7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkodCl9KX1jYXRjaChlKXt0aHJvdyBlIGluc3RhbmNlb2YgRXJyb3I/ZTpuZXcgRXJyb3IoIkNvdWxkbid0IGFkZCB0byBTaG9waWZ5IGNhcnQgZnJvbSBwYXJlbnQgd2luZG93Iil9fX0sMzk1MzpmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7dmFyIHQ9U3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIHQoZSl9Y2F0Y2goZSl7cmV0dXJuIk9iamVjdCJ9fX0sMzk3NzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oODcyNyksbz1uKDMxMTcpLGk9big5OTMyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBhLHM7byhlKTt0cnl7aWYoIShhPWkoZSwicmV0dXJuIikpKXtpZigidGhyb3ciPT09dCl0aHJvdyBuO3JldHVybiBufWE9cihhLGUpfWNhdGNoKGUpe3M9ITAsYT1lfWlmKCJ0aHJvdyI9PT10KXRocm93IG47aWYocyl0aHJvdyBhO3JldHVybiBvKGEpLG59fSwzOTg4OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oNjc2Myl9LDQwNTU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7S3E6ZnVuY3Rpb24oKXtyZXR1cm4gSH0sTmc6ZnVuY3Rpb24oKXtyZXR1cm4gen0sd0E6ZnVuY3Rpb24oKXtyZXR1cm4gV30sZDQ6ZnVuY3Rpb24oKXtyZXR1cm4gYn19KTt2YXIgcj1uKDI4MDQpLG89big5MzM0KSxpPW4oOTY0NSk7bGV0IGE9ZnVuY3Rpb24oZSl7ZSgpfTtjb25zdCBzPSgpPT5hO3ZhciBjPW4oMzQ4MCk7Y29uc3QgdT1TeW1ib2wuZm9yKCJyZWFjdC1yZWR1eC1jb250ZXh0IiksbD0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczp7fTtmdW5jdGlvbiBkKCl7dmFyIGU7aWYoIWMuY3JlYXRlQ29udGV4dClyZXR1cm57fTtjb25zdCB0PW51bGwhPShlPWxbdV0pP2U6bFt1XT1uZXcgTWFwO2xldCBuPXQuZ2V0KGMuY3JlYXRlQ29udGV4dCk7cmV0dXJuIG58fChuPWMuY3JlYXRlQ29udGV4dChudWxsKSx0LnNldChjLmNyZWF0ZUNvbnRleHQsbikpLG59Y29uc3QgZj1kKCk7ZnVuY3Rpb24gcCgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpmO3JldHVybiBmdW5jdGlvbigpe3JldHVybigwLGMudXNlQ29udGV4dCkoZSl9fWNvbnN0IGg9cCgpLG09KCk9Pnt0aHJvdyBuZXcgRXJyb3IoInVTRVMgbm90IGluaXRpYWxpemVkISIpfTtsZXQgZz1tO2NvbnN0IHk9KGUsdCk9PmU9PT10O2Z1bmN0aW9uIHYoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06Zjtjb25zdCB0PWU9PT1mP2g6cChlKTtyZXR1cm4gZnVuY3Rpb24oZSl7bGV0IG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2NvbnN0e2VxdWFsaXR5Rm46cj15LHN0YWJpbGl0eUNoZWNrOm8sbm9vcENoZWNrOml9PSJmdW5jdGlvbiI9PXR5cGVvZiBuP3tlcXVhbGl0eUZuOm59Om47Y29uc3R7c3RvcmU6YSxzdWJzY3JpcHRpb246cyxnZXRTZXJ2ZXJTdGF0ZTp1LHN0YWJpbGl0eUNoZWNrOmwsbm9vcENoZWNrOmR9PXQoKSxmPSgoMCxjLnVzZVJlZikoITApLCgwLGMudXNlQ2FsbGJhY2spKHtbZS5uYW1lXSh0KXtyZXR1cm4gZSh0KX19W2UubmFtZV0sW2UsbCxvXSkpLHA9ZyhzLmFkZE5lc3RlZFN1YixhLmdldFN0YXRlLHV8fGEuZ2V0U3RhdGUsZixyKTtyZXR1cm4oMCxjLnVzZURlYnVnVmFsdWUpKHApLHB9fWNvbnN0IGI9digpO3ZhciB3PW4oODE2OCksXz1uKDg1ODcpLFM9bigzNDU0KSxFPW4ubihTKSxDPW4oNzU0Myk7Y29uc3Qgaz1bImluaXRNYXBTdGF0ZVRvUHJvcHMiLCJpbml0TWFwRGlzcGF0Y2hUb1Byb3BzIiwiaW5pdE1lcmdlUHJvcHMiXTtmdW5jdGlvbiBBKGUsdCxuLHIsbyl7bGV0IGksYSxzLGMsdSx7YXJlU3RhdGVzRXF1YWw6bCxhcmVPd25Qcm9wc0VxdWFsOmQsYXJlU3RhdGVQcm9wc0VxdWFsOmZ9PW8scD0hMTtmdW5jdGlvbiBoKG8scCl7Y29uc3QgaD0hZChwLGEpLG09IWwobyxpLHAsYSk7cmV0dXJuIGk9byxhPXAsaCYmbT8ocz1lKGksYSksdC5kZXBlbmRzT25Pd25Qcm9wcyYmKGM9dChyLGEpKSx1PW4ocyxjLGEpLHUpOmg/KGUuZGVwZW5kc09uT3duUHJvcHMmJihzPWUoaSxhKSksdC5kZXBlbmRzT25Pd25Qcm9wcyYmKGM9dChyLGEpKSx1PW4ocyxjLGEpLHUpOm0/ZnVuY3Rpb24oKXtjb25zdCB0PWUoaSxhKSxyPSFmKHQscyk7cmV0dXJuIHM9dCxyJiYodT1uKHMsYyxhKSksdX0oKTp1fXJldHVybiBmdW5jdGlvbihvLGwpe3JldHVybiBwP2gobyxsKTooaT1vLGE9bCxzPWUoaSxhKSxjPXQocixhKSx1PW4ocyxjLGEpLHA9ITAsdSl9fWZ1bmN0aW9uIE8oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0IG49ZSh0KTtmdW5jdGlvbiByKCl7cmV0dXJuIG59cmV0dXJuIHIuZGVwZW5kc09uT3duUHJvcHM9ITEscn19ZnVuY3Rpb24gVChlKXtyZXR1cm4gZS5kZXBlbmRzT25Pd25Qcm9wcz9Cb29sZWFuKGUuZGVwZW5kc09uT3duUHJvcHMpOjEhPT1lLmxlbmd0aH1mdW5jdGlvbiB4KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7bGV0e2Rpc3BsYXlOYW1lOnJ9PW47Y29uc3Qgbz1mdW5jdGlvbihlLHQpe3JldHVybiBvLmRlcGVuZHNPbk93blByb3BzP28ubWFwVG9Qcm9wcyhlLHQpOm8ubWFwVG9Qcm9wcyhlLHZvaWQgMCl9O3JldHVybiBvLmRlcGVuZHNPbk93blByb3BzPSEwLG8ubWFwVG9Qcm9wcz1mdW5jdGlvbih0LG4pe28ubWFwVG9Qcm9wcz1lLG8uZGVwZW5kc09uT3duUHJvcHM9VChlKTtsZXQgcj1vKHQsbik7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHImJihvLm1hcFRvUHJvcHM9cixvLmRlcGVuZHNPbk93blByb3BzPVQocikscj1vKHQsbikpLHJ9LG99fWZ1bmN0aW9uIEkoZSx0KXtyZXR1cm4obixyKT0+e3Rocm93IG5ldyBFcnJvcihgSW52YWxpZCB2YWx1ZSBvZiB0eXBlICR7dHlwZW9mIGV9IGZvciAke3R9IGFyZ3VtZW50IHdoZW4gY29ubmVjdGluZyBjb21wb25lbnQgJHtyLndyYXBwZWRDb21wb25lbnROYW1lfS5gKX19ZnVuY3Rpb24gTihlLHQsbil7cmV0dXJuKDAsdy5BKSh7fSxuLGUsdCl9Y29uc3QgTD17bm90aWZ5KCl7fSxnZXQ6KCk9PltdfTtmdW5jdGlvbiBQKGUsdCl7bGV0IG4scj1MLG89MCxpPSExO2Z1bmN0aW9uIGEoKXtsLm9uU3RhdGVDaGFuZ2UmJmwub25TdGF0ZUNoYW5nZSgpfWZ1bmN0aW9uIGMoKXtvKyssbnx8KG49dD90LmFkZE5lc3RlZFN1YihhKTplLnN1YnNjcmliZShhKSxyPWZ1bmN0aW9uKCl7Y29uc3QgZT1zKCk7bGV0IHQ9bnVsbCxuPW51bGw7cmV0dXJue2NsZWFyKCl7dD1udWxsLG49bnVsbH0sbm90aWZ5KCl7ZSgoKT0+e2xldCBlPXQ7Zm9yKDtlOyllLmNhbGxiYWNrKCksZT1lLm5leHR9KX0sZ2V0KCl7bGV0IGU9W10sbj10O2Zvcig7bjspZS5wdXNoKG4pLG49bi5uZXh0O3JldHVybiBlfSxzdWJzY3JpYmUoZSl7bGV0IHI9ITAsbz1uPXtjYWxsYmFjazplLG5leHQ6bnVsbCxwcmV2Om59O3JldHVybiBvLnByZXY/by5wcmV2Lm5leHQ9bzp0PW8sZnVuY3Rpb24oKXtyJiZudWxsIT09dCYmKHI9ITEsby5uZXh0P28ubmV4dC5wcmV2PW8ucHJldjpuPW8ucHJldixvLnByZXY/by5wcmV2Lm5leHQ9by5uZXh0OnQ9by5uZXh0KX19fX0oKSl9ZnVuY3Rpb24gdSgpe28tLSxuJiYwPT09byYmKG4oKSxuPXZvaWQgMCxyLmNsZWFyKCkscj1MKX1jb25zdCBsPXthZGROZXN0ZWRTdWI6ZnVuY3Rpb24oZSl7YygpO2NvbnN0IHQ9ci5zdWJzY3JpYmUoZSk7bGV0IG49ITE7cmV0dXJuKCk9PntufHwobj0hMCx0KCksdSgpKX19LG5vdGlmeU5lc3RlZFN1YnM6ZnVuY3Rpb24oKXtyLm5vdGlmeSgpfSxoYW5kbGVDaGFuZ2VXcmFwcGVyOmEsaXNTdWJzY3JpYmVkOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LHRyeVN1YnNjcmliZTpmdW5jdGlvbigpe2l8fChpPSEwLGMoKSl9LHRyeVVuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7aSYmKGk9ITEsdSgpKX0sZ2V0TGlzdGVuZXJzOigpPT5yfTtyZXR1cm4gbH1jb25zdCBNPSEoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8fHZvaWQgMD09PXdpbmRvdy5kb2N1bWVudHx8dm9pZCAwPT09d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpP2MudXNlTGF5b3V0RWZmZWN0OmMudXNlRWZmZWN0O2Z1bmN0aW9uIFIoZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDAhPT10fHwxL2U9PTEvdDplIT1lJiZ0IT10fWZ1bmN0aW9uIEQoZSx0KXtpZihSKGUsdCkpcmV0dXJuITA7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiB0fHxudWxsPT09dClyZXR1cm4hMTtjb25zdCBuPU9iamVjdC5rZXlzKGUpLHI9T2JqZWN0LmtleXModCk7aWYobi5sZW5ndGghPT1yLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKylpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbltyXSl8fCFSKGVbbltyXV0sdFtuW3JdXSkpcmV0dXJuITE7cmV0dXJuITB9Y29uc3QgRj1bInJlYWN0UmVkdXhGb3J3YXJkZWRSZWYiXTtsZXQgaj1tO2NvbnN0IEI9W251bGwsbnVsbF07ZnVuY3Rpb24gVihlLHQsbixyLG8saSl7ZS5jdXJyZW50PXIsbi5jdXJyZW50PSExLG8uY3VycmVudCYmKG8uY3VycmVudD1udWxsLGkoKSl9ZnVuY3Rpb24gVShlLHQpe3JldHVybiBlPT09dH12YXIgej1mdW5jdGlvbihlLHQsbil7bGV0e3B1cmU6cixhcmVTdGF0ZXNFcXVhbDpvPVUsYXJlT3duUHJvcHNFcXVhbDppPUQsYXJlU3RhdGVQcm9wc0VxdWFsOmE9RCxhcmVNZXJnZWRQcm9wc0VxdWFsOnM9RCxmb3J3YXJkUmVmOnU9ITEsY29udGV4dDpsPWZ9PWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTp7fTtjb25zdCBkPWwscD1mdW5jdGlvbihlKXtyZXR1cm4gZT8iZnVuY3Rpb24iPT10eXBlb2YgZT94KGUpOkkoZSwibWFwU3RhdGVUb1Byb3BzIik6TygoKT0+KHt9KSl9KGUpLGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZT9PKHQ9PmZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBpbiBlKXtjb25zdCBvPWVbcl07ImZ1bmN0aW9uIj09dHlwZW9mIG8mJihuW3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHQobyguLi5hcmd1bWVudHMpKX0pfXJldHVybiBufShlLHQpKTplPyJmdW5jdGlvbiI9PXR5cGVvZiBlP3goZSk6SShlLCJtYXBEaXNwYXRjaFRvUHJvcHMiKTpPKGU9Pih7ZGlzcGF0Y2g6ZX0pKX0odCksbT1mdW5jdGlvbihlKXtyZXR1cm4gZT8iZnVuY3Rpb24iPT10eXBlb2YgZT9mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtsZXQgcix7ZGlzcGxheU5hbWU6byxhcmVNZXJnZWRQcm9wc0VxdWFsOml9PW4sYT0hMTtyZXR1cm4gZnVuY3Rpb24odCxuLG8pe2NvbnN0IHM9ZSh0LG4sbyk7cmV0dXJuIGE/aShzLHIpfHwocj1zKTooYT0hMCxyPXMpLHJ9fX0oZSk6SShlLCJtZXJnZVByb3BzIik6KCk9Pk59KG4pLGc9Qm9vbGVhbihlKTtyZXR1cm4gZT0+e2NvbnN0IHQ9ZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHwiQ29tcG9uZW50IixuPWBDb25uZWN0KCR7dH0pYCxyPXtzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXM6ZyxkaXNwbGF5TmFtZTpuLHdyYXBwZWRDb21wb25lbnROYW1lOnQsV3JhcHBlZENvbXBvbmVudDplLGluaXRNYXBTdGF0ZVRvUHJvcHM6cCxpbml0TWFwRGlzcGF0Y2hUb1Byb3BzOmgsaW5pdE1lcmdlUHJvcHM6bSxhcmVTdGF0ZXNFcXVhbDpvLGFyZVN0YXRlUHJvcHNFcXVhbDphLGFyZU93blByb3BzRXF1YWw6aSxhcmVNZXJnZWRQcm9wc0VxdWFsOnN9O2Z1bmN0aW9uIGwodCl7Y29uc3RbbixvLGldPWMudXNlTWVtbygoKT0+e2NvbnN0e3JlYWN0UmVkdXhGb3J3YXJkZWRSZWY6ZX09dCxuPSgwLF8uQSkodCxGKTtyZXR1cm5bdC5jb250ZXh0LGUsbl19LFt0XSksYT1jLnVzZU1lbW8oKCk9Pm4mJm4uQ29uc3VtZXImJigwLEMuaXNDb250ZXh0Q29uc3VtZXIpKGMuY3JlYXRlRWxlbWVudChuLkNvbnN1bWVyLG51bGwpKT9uOmQsW24sZF0pLHM9Yy51c2VDb250ZXh0KGEpLHU9Qm9vbGVhbih0LnN0b3JlKSYmQm9vbGVhbih0LnN0b3JlLmdldFN0YXRlKSYmQm9vbGVhbih0LnN0b3JlLmRpc3BhdGNoKSxsPUJvb2xlYW4ocykmJkJvb2xlYW4ocy5zdG9yZSk7Y29uc3QgZj11P3Quc3RvcmU6cy5zdG9yZSxwPWw/cy5nZXRTZXJ2ZXJTdGF0ZTpmLmdldFN0YXRlLGg9Yy51c2VNZW1vKCgpPT5mdW5jdGlvbihlLHQpe2xldHtpbml0TWFwU3RhdGVUb1Byb3BzOm4saW5pdE1hcERpc3BhdGNoVG9Qcm9wczpyLGluaXRNZXJnZVByb3BzOm99PXQsaT0oMCxfLkEpKHQsayk7cmV0dXJuIEEobihlLGkpLHIoZSxpKSxvKGUsaSksZSxpKX0oZi5kaXNwYXRjaCxyKSxbZl0pLFttLHldPWMudXNlTWVtbygoKT0+e2lmKCFnKXJldHVybiBCO2NvbnN0IGU9UChmLHU/dm9pZCAwOnMuc3Vic2NyaXB0aW9uKSx0PWUubm90aWZ5TmVzdGVkU3Vicy5iaW5kKGUpO3JldHVybltlLHRdfSxbZix1LHNdKSx2PWMudXNlTWVtbygoKT0+dT9zOigwLHcuQSkoe30scyx7c3Vic2NyaXB0aW9uOm19KSxbdSxzLG1dKSxiPWMudXNlUmVmKCksUz1jLnVzZVJlZihpKSxFPWMudXNlUmVmKCksTz1jLnVzZVJlZighMSksVD0oYy51c2VSZWYoITEpLGMudXNlUmVmKCExKSkseD1jLnVzZVJlZigpO00oKCk9PihULmN1cnJlbnQ9ITAsKCk9PntULmN1cnJlbnQ9ITF9KSxbXSk7Y29uc3QgST1jLnVzZU1lbW8oKCk9PigpPT5FLmN1cnJlbnQmJmk9PT1TLmN1cnJlbnQ/RS5jdXJyZW50OmgoZi5nZXRTdGF0ZSgpLGkpLFtmLGldKSxOPWMudXNlTWVtbygoKT0+ZT0+bT9mdW5jdGlvbihlLHQsbixyLG8saSxhLHMsYyx1LGwpe2lmKCFlKXJldHVybigpPT57fTtsZXQgZD0hMSxmPW51bGw7Y29uc3QgcD0oKT0+e2lmKGR8fCFzLmN1cnJlbnQpcmV0dXJuO2NvbnN0IGU9dC5nZXRTdGF0ZSgpO2xldCBuLHA7dHJ5e249cihlLG8uY3VycmVudCl9Y2F0Y2goZSl7cD1lLGY9ZX1wfHwoZj1udWxsKSxuPT09aS5jdXJyZW50P2EuY3VycmVudHx8dSgpOihpLmN1cnJlbnQ9bixjLmN1cnJlbnQ9bixhLmN1cnJlbnQ9ITAsbCgpKX07cmV0dXJuIG4ub25TdGF0ZUNoYW5nZT1wLG4udHJ5U3Vic2NyaWJlKCkscCgpLCgpPT57aWYoZD0hMCxuLnRyeVVuc3Vic2NyaWJlKCksbi5vblN0YXRlQ2hhbmdlPW51bGwsZil0aHJvdyBmfX0oZyxmLG0saCxTLGIsTyxULEUseSxlKTooKT0+e30sW21dKTt2YXIgTCxSLEQ7bGV0IFU7TD1WLFI9W1MsYixPLGksRSx5XSxNKCgpPT5MKC4uLlIpLEQpO3RyeXtVPWooTixJLHA/KCk9PmgocCgpLGkpOkkpfWNhdGNoKGUpe3Rocm93IHguY3VycmVudCYmKGUubWVzc2FnZSs9YFxuVGhlIGVycm9yIG1heSBiZSBjb3JyZWxhdGVkIHdpdGggdGhpcyBwcmV2aW91cyBlcnJvcjpcbiR7eC5jdXJyZW50LnN0YWNrfVxuXG5gKSxlfU0oKCk9Pnt4LmN1cnJlbnQ9dm9pZCAwLEUuY3VycmVudD12b2lkIDAsYi5jdXJyZW50PVV9KTtjb25zdCB6PWMudXNlTWVtbygoKT0+Yy5jcmVhdGVFbGVtZW50KGUsKDAsdy5BKSh7fSxVLHtyZWY6b30pKSxbbyxlLFVdKTtyZXR1cm4gYy51c2VNZW1vKCgpPT5nP2MuY3JlYXRlRWxlbWVudChhLlByb3ZpZGVyLHt2YWx1ZTp2fSx6KTp6LFthLHosdl0pfWNvbnN0IGY9Yy5tZW1vKGwpO2lmKGYuV3JhcHBlZENvbXBvbmVudD1lLGYuZGlzcGxheU5hbWU9bC5kaXNwbGF5TmFtZT1uLHUpe2NvbnN0IHQ9Yy5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGMuY3JlYXRlRWxlbWVudChmLCgwLHcuQSkoe30sZSx7cmVhY3RSZWR1eEZvcndhcmRlZFJlZjp0fSkpfSk7cmV0dXJuIHQuZGlzcGxheU5hbWU9bix0LldyYXBwZWRDb21wb25lbnQ9ZSxFKCkodCxlKX1yZXR1cm4gRSgpKGYsZSl9fTt2YXIgSD1mdW5jdGlvbihlKXtsZXR7c3RvcmU6dCxjb250ZXh0Om4sY2hpbGRyZW46cixzZXJ2ZXJTdGF0ZTpvLHN0YWJpbGl0eUNoZWNrOmk9Im9uY2UiLG5vb3BDaGVjazphPSJvbmNlIn09ZTtjb25zdCBzPWMudXNlTWVtbygoKT0+e2NvbnN0IGU9UCh0KTtyZXR1cm57c3RvcmU6dCxzdWJzY3JpcHRpb246ZSxnZXRTZXJ2ZXJTdGF0ZTpvPygpPT5vOnZvaWQgMCxzdGFiaWxpdHlDaGVjazppLG5vb3BDaGVjazphfX0sW3QsbyxpLGFdKSx1PWMudXNlTWVtbygoKT0+dC5nZXRTdGF0ZSgpLFt0XSk7TSgoKT0+e2NvbnN0e3N1YnNjcmlwdGlvbjplfT1zO3JldHVybiBlLm9uU3RhdGVDaGFuZ2U9ZS5ub3RpZnlOZXN0ZWRTdWJzLGUudHJ5U3Vic2NyaWJlKCksdSE9PXQuZ2V0U3RhdGUoKSYmZS5ub3RpZnlOZXN0ZWRTdWJzKCksKCk9PntlLnRyeVVuc3Vic2NyaWJlKCksZS5vblN0YXRlQ2hhbmdlPXZvaWQgMH19LFtzLHVdKTtjb25zdCBsPW58fGY7cmV0dXJuIGMuY3JlYXRlRWxlbWVudChsLlByb3ZpZGVyLHt2YWx1ZTpzfSxyKX07ZnVuY3Rpb24gJCgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpmO2NvbnN0IHQ9ZT09PWY/aDpwKGUpO3JldHVybiBmdW5jdGlvbigpe2NvbnN0e3N0b3JlOmV9PXQoKTtyZXR1cm4gZX19Y29uc3QgWT0kKCk7ZnVuY3Rpb24gcSgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpmO2NvbnN0IHQ9ZT09PWY/WTokKGUpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KCkuZGlzcGF0Y2h9fWNvbnN0IFc9cSgpO3ZhciBHLFE7Rz1vLnVzZVN5bmNFeHRlcm5hbFN0b3JlV2l0aFNlbGVjdG9yLGc9RywoZT0+e2o9ZX0pKHIudXNlU3luY0V4dGVybmFsU3RvcmUpLFE9aS51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyxhPVF9LDQwNzA6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDM5MzIpLG89big4NzI3KSxpPW4oNDQ3NCksYT1uKDgwMCkscz1uKDMxMTcpLGM9big5NzI5KSx1PW4oMzk3NyksbD1uKDczNjgpKCJldmVyeSIsVHlwZUVycm9yKTtyKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpsfSx7ZXZlcnk6ZnVuY3Rpb24oZSl7cyh0aGlzKTt0cnl7YShlKX1jYXRjaChlKXt1KHRoaXMsInRocm93IixlKX1pZihsKXJldHVybiBvKGwsdGhpcyxlKTt2YXIgdD1jKHRoaXMpLG49MDtyZXR1cm4haSh0LGZ1bmN0aW9uKHQscil7aWYoIWUodCxuKyspKXJldHVybiByKCl9LHtJU19SRUNPUkQ6ITAsSU5URVJSVVBURUQ6ITB9KS5zdG9wcGVkfX0pfSw0MDkyOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3NTcwKSxvPW4oOTc5KSxpPXIuV2Vha01hcDtlLmV4cG9ydHM9byhpKSYmL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhpKSl9LDQxMjE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7WDpmdW5jdGlvbigpe3JldHVybiBvfSx1OmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIHI9big2MDU4KTtjb25zdCBvPXt3aWRnZXRMb2FkZWQ6IndpZGdldExvYWRlZCIscHJlY2hhdE9wZW5lZDoicHJlY2hhdE9wZW5lZCIsYWx3YXlzT25saW5lT3BlbmVkOiJhbHdheXNPbmxpbmVPcGVuZWQiLGNsb3NlTW9kYWxDbGlja2VkOiJjbG9zZU1vZGFsQ2xpY2tlZCIsY2FyZHNTY3JvbGxlZDoiY2FyZHNTY3JvbGxlZCIscXVpY2tSZXBseUNsaWNrZWQ6InF1aWNrUmVwbHlDbGlja2VkIixidXR0b25DbGlja2VkOiJidXR0b25DbGlja2VkIixmbHlNZXNzYWdlRGlzcGxheWVkOiJmbHlNZXNzYWdlRGlzcGxheWVkIixmbHlNZXNzYWdlQ2xvc2VkOiJmbHlNZXNzYWdlQ2xvc2VkIixmbHlNZXNzYWdlQ2xpY2tlZDoiZmx5TWVzc2FnZUNsaWNrZWQiLHdpZGdldExhYmVsQ2xpY2tlZDoid2lkZ2V0TGFiZWxDbGlja2VkIix3aWRnZXRJY29uQ2xpY2tlZDoid2lkZ2V0SWNvbkNsaWNrZWQiLGVtb2ppUGFuZWxPcGVuZWQ6ImVtb2ppUGFuZWxPcGVuZWQiLGVtb2ppQWRkZWQ6ImVtb2ppQWRkZWQiLG5vdGlmaWNhdGlvbnNUdXJuZWRPZmY6Im5vdGlmaWNhdGlvbnNUdXJuZWRPZmYiLG5vdGlmaWNhdGlvbnNUdXJuZWRPbjoibm90aWZpY2F0aW9uc1R1cm5lZE9uIixib3RzQnV0dG9uQ2xpY2tlZDoiYm90c0J1dHRvbkNsaWNrZWQiLGZseU1lc3NhZ2VCdXR0b25zQ2xpY2tlZDoiZmx5TWVzc2FnZUJ1dHRvbnNDbGlja2VkIixib3RTdGFydGVkRnJvbUJvdHNNZW51OiJib3RTdGFydGVkRnJvbUJvdHNNZW51Iixib3RDYW5jZWxlZDoiYm90Q2FuY2VsZWQiLHVwbG9hZEJ1dHRvbkNsaWNrZWQ6InVwbG9hZEJ1dHRvbkNsaWNrZWQiLGNoYXRDbG9zZWQ6ImNoYXRDbG9zZWQiLG9wdGlvbnNCdXR0b25DbGlja2VkOiJvcHRpb25zQnV0dG9uQ2xpY2tlZCIsc2hvd1ByZXZpb3VzTWVzc2FnZXNDbGlja2VkOiJzaG93UHJldmlvdXNNZXNzYWdlc0NsaWNrZWQiLHRpZGlvQ2hhdEFwaUZ1bmN0aW9uQ2FsbDoidGlkaW9DaGF0QXBpRnVuY3Rpb25DYWxsIixpbWFnZU1vZGFsRGlzcGxheWVkOiJpbWFnZU1vZGFsRGlzcGxheWVkIixpbWFnZU1vZGFsQ2xvc2VkOiJpbWFnZU1vZGFsQ2xvc2VkIixmdWxsQ29udmVyc2F0aW9uSGlzdG9yeVJlcXVlc3RlZDoiZnVsbENvbnZlcnNhdGlvbkhpc3RvcnlSZXF1ZXN0ZWQiLHdoaXRlbGFiZWxpbmdFbmFibGVkOiJ3aGl0ZWxhYmVsaW5nRW5hYmxlZCIsY291cG9uQ29kZUNvcHlDbGlja2VkOiJjb3Vwb25Db2RlQ29weUNsaWNrZWQiLGlmcmFtZU1vZGFsRGlzcGxheWVkOiJpZnJhbWVNb2RhbERpc3BsYXllZCIsaWZyYW1lTW9kYWxDbG9zZWQ6ImlmcmFtZU1vZGFsQ2xvc2VkIixpZnJhbWVNb2RhbEJ1dHRvbkNsaWNrZWQ6ImlmcmFtZU1vZGFsQnV0dG9uQ2xpY2tlZCIsdGV4dElucHV0RGlzYWJsZWQ6InRleHRJbnB1dERpc2FibGVkIix0ZXh0SW5wdXRFbmFibGVkOiJ0ZXh0SW5wdXRFbmFibGVkIixwcm9kdWN0UmVjb21tZW5kYXRpb25BZGRUb0NhcnRDbGlja2VkOiJwcm9kdWN0UmVjb21tZW5kYXRpb25BZGRUb0NhcnRDbGlja2VkIixwcm9kdWN0UmVjb21tZW5kYXRpb25MZWFybk1vcmVDbGlja2VkOiJwcm9kdWN0UmVjb21tZW5kYXRpb25MZWFybk1vcmVDbGlja2VkIixwcm9kdWN0UmVjb21tZW5kYXRpb25WaWV3Q2FydENsaWNrZWQ6InByb2R1Y3RSZWNvbW1lbmRhdGlvblZpZXdDYXJ0Q2xpY2tlZCIsY2hhdFRhYkNsaWNrZWQ6ImNoYXRUYWJDbGlja2VkIixjb252ZXJzYXRpb25TdGFydGVyQ2xpY2tlZDoiY29udmVyc2F0aW9uU3RhcnRlckNsaWNrZWQiLGdvQmFja1RvQ29udmVyc2F0aW9uU3RhcnRlcnNDbGlja2VkOiJnb0JhY2tUb0NvbnZlcnNhdGlvblN0YXJ0ZXJzQ2xpY2tlZCIsY2hhdFdpdGhVc0hvbWVUYWJDbGlja2VkOiJjaGF0V2l0aFVzSG9tZVRhYkNsaWNrZWQiLGhvbWVUYWJWaXNpYmxlOiJob21lVGFiVmlzaWJsZSIsYWlBc3Npc3RhbnRQcm9kdWN0Q2FyZEFkZFRvQ2FydENsaWNrZWQ6ImFpQXNzaXN0YW50UHJvZHVjdENhcmRBZGRUb0NhcnRDbGlja2VkIixhaUFzc2lzdGFudFByb2R1Y3RDYXJkVmFyaWFudFBpY2tlclZhcmlhbnRDbGlja2VkOiJhaUFzc2lzdGFudFByb2R1Y3RDYXJkVmFyaWFudFBpY2tlclZhcmlhbnRDbGlja2VkIixhaUFzc2lzdGFudFByb2R1Y3RDYXJkVmlld0NhcnRDbGlja2VkOiJhaUFzc2lzdGFudFByb2R1Y3RDYXJkVmlld0NhcnRDbGlja2VkIixhaUFzc2lzdGFudFByb2R1Y3RDYXJkVmlld0RldGFpbHNDbGlja2VkOiJhaUFzc2lzdGFudFByb2R1Y3RDYXJkVmlld0RldGFpbHNDbGlja2VkIn0saT1lPT57Y29uc3QgdD1gdHJhY2tXaWRnZXRFdmVudF8ke2V9YDtyZXR1cm4hISgwLHIudnUpKHQpfHwoKDAsci5IbykodCwxKSwhMSl9fSw0MTc5OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big2MzEpO2Z1bmN0aW9uIG8oKXt9dmFyIGk9bnVsbCxhPXt9O2Z1bmN0aW9uIHMoZSl7aWYoIm9iamVjdCIhPXR5cGVvZiB0aGlzKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldyIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2UgY29uc3RydWN0b3IncyBhcmd1bWVudCBpcyBub3QgYSBmdW5jdGlvbiIpO3RoaXMuX3g9MCx0aGlzLl95PTAsdGhpcy5fej1udWxsLHRoaXMuX0E9bnVsbCxlIT09byYmcChlLHRoaXMpfWZ1bmN0aW9uIGMoZSx0KXtmb3IoOzM9PT1lLl95OyllPWUuX3o7aWYocy5fQiYmcy5fQihlKSwwPT09ZS5feSlyZXR1cm4gMD09PWUuX3g/KGUuX3g9MSx2b2lkKGUuX0E9dCkpOjE9PT1lLl94PyhlLl94PTIsdm9pZChlLl9BPVtlLl9BLHRdKSk6dm9pZCBlLl9BLnB1c2godCk7IWZ1bmN0aW9uKGUsdCl7cihmdW5jdGlvbigpe3ZhciBuPTE9PT1lLl95P3Qub25GdWxmaWxsZWQ6dC5vblJlamVjdGVkO2lmKG51bGwhPT1uKXt2YXIgcj1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gZSh0KX1jYXRjaChlKXtyZXR1cm4gaT1lLGF9fShuLGUuX3opO3I9PT1hP2wodC5wcm9taXNlLGkpOnUodC5wcm9taXNlLHIpfWVsc2UgMT09PWUuX3k/dSh0LnByb21pc2UsZS5feik6bCh0LnByb21pc2UsZS5feil9KX0oZSx0KX1mdW5jdGlvbiB1KGUsdCl7aWYodD09PWUpcmV0dXJuIGwoZSxuZXcgVHlwZUVycm9yKCJBIHByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXRzZWxmLiIpKTtpZih0JiYoIm9iamVjdCI9PXR5cGVvZiB0fHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpe3ZhciBuPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gZS50aGVufWNhdGNoKGUpe3JldHVybiBpPWUsYX19KHQpO2lmKG49PT1hKXJldHVybiBsKGUsaSk7aWYobj09PWUudGhlbiYmdCBpbnN0YW5jZW9mIHMpcmV0dXJuIGUuX3k9MyxlLl96PXQsdm9pZCBkKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybiB2b2lkIHAobi5iaW5kKHQpLGUpfWUuX3k9MSxlLl96PXQsZChlKX1mdW5jdGlvbiBsKGUsdCl7ZS5feT0yLGUuX3o9dCxzLl9DJiZzLl9DKGUsdCksZChlKX1mdW5jdGlvbiBkKGUpe2lmKDE9PT1lLl94JiYoYyhlLGUuX0EpLGUuX0E9bnVsbCksMj09PWUuX3gpe2Zvcih2YXIgdD0wO3Q8ZS5fQS5sZW5ndGg7dCsrKWMoZSxlLl9BW3RdKTtlLl9BPW51bGx9fWZ1bmN0aW9uIGYoZSx0LG4pe3RoaXMub25GdWxmaWxsZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpudWxsLHRoaXMub25SZWplY3RlZD0iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGwsdGhpcy5wcm9taXNlPW59ZnVuY3Rpb24gcChlLHQpe3ZhciBuPSExLHI9ZnVuY3Rpb24oZSx0LG4pe3RyeXtlKHQsbil9Y2F0Y2goZSl7cmV0dXJuIGk9ZSxhfX0oZSxmdW5jdGlvbihlKXtufHwobj0hMCx1KHQsZSkpfSxmdW5jdGlvbihlKXtufHwobj0hMCxsKHQsZSkpfSk7bnx8ciE9PWF8fChuPSEwLGwodCxpKSl9ZS5leHBvcnRzPXMscy5fQj1udWxsLHMuX0M9bnVsbCxzLl9EPW8scy5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihlLHQpe2lmKHRoaXMuY29uc3RydWN0b3IhPT1zKXJldHVybiBmdW5jdGlvbihlLHQsbil7cmV0dXJuIG5ldyBlLmNvbnN0cnVjdG9yKGZ1bmN0aW9uKHIsaSl7dmFyIGE9bmV3IHMobyk7YS50aGVuKHIsaSksYyhlLG5ldyBmKHQsbixhKSl9KX0odGhpcyxlLHQpO3ZhciBuPW5ldyBzKG8pO3JldHVybiBjKHRoaXMsbmV3IGYoZSx0LG4pKSxufX0sNDIxNDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMzU3KTtlLmV4cG9ydHM9ciYmIVN5bWJvbC5zaGFtJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcn0sNDIxODpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtBSDpmdW5jdGlvbigpe3JldHVybiBUfSxETTpmdW5jdGlvbigpe3JldHVybiByZX0sRHk6ZnVuY3Rpb24oKXtyZXR1cm4geH0sRTk6ZnVuY3Rpb24oKXtyZXR1cm4gTX0sRmM6ZnVuY3Rpb24oKXtyZXR1cm4gRn0sRzpmdW5jdGlvbigpe3JldHVybiBlZX0sSDA6ZnVuY3Rpb24oKXtyZXR1cm4gV30sSkE6ZnVuY3Rpb24oKXtyZXR1cm4gUH0sSkc6ZnVuY3Rpb24oKXtyZXR1cm4gbmV9LEpNOmZ1bmN0aW9uKCl7cmV0dXJuIEV9LEpZOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LExsOmZ1bmN0aW9uKCl7cmV0dXJuIGJ9LE5wOmZ1bmN0aW9uKCl7cmV0dXJuIEx9LFE1OmZ1bmN0aW9uKCl7cmV0dXJuIGp9LFFUOmZ1bmN0aW9uKCl7cmV0dXJuIEF9LFNxOmZ1bmN0aW9uKCl7cmV0dXJuIF99LFRkOmZ1bmN0aW9uKCl7cmV0dXJuIEh9LFdUOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LFlIOmZ1bmN0aW9uKCl7cmV0dXJuIEJ9LFpoOmZ1bmN0aW9uKCl7cmV0dXJuIG99LGFIOmZ1bmN0aW9uKCl7cmV0dXJuIFJ9LGJNOmZ1bmN0aW9uKCl7cmV0dXJuIHF9LGJtOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LGMwOmZ1bmN0aW9uKCl7cmV0dXJuIHB9LGNROmZ1bmN0aW9uKCl7cmV0dXJuICR9LGNfOmZ1bmN0aW9uKCl7cmV0dXJuIHRlfSxkNzpmdW5jdGlvbigpe3JldHVybiBZfSxkTDpmdW5jdGlvbigpe3JldHVybiBzZX0sZV86ZnVuY3Rpb24oKXtyZXR1cm4gQ30sZjU6ZnVuY3Rpb24oKXtyZXR1cm4gU30sZkE6ZnVuY3Rpb24oKXtyZXR1cm4gS30sZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gTn0saTM6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sakI6ZnVuY3Rpb24oKXtyZXR1cm4gbH0samQ6ZnVuY3Rpb24oKXtyZXR1cm4gaWV9LGttOmZ1bmN0aW9uKCl7cmV0dXJuIHd9LG0yOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LG1TOmZ1bmN0aW9uKCl7cmV0dXJuIGFlfSxtYjpmdW5jdGlvbigpe3JldHVybiBPfSxtbzpmdW5jdGlvbigpe3JldHVybiBHfSxvSDpmdW5jdGlvbigpe3JldHVybiBjfSxvaDpmdW5jdGlvbigpe3JldHVybiB5fSxvczpmdW5jdGlvbigpe3JldHVybiBWfSxveTpmdW5jdGlvbigpe3JldHVybiBafSxxeDpmdW5jdGlvbigpe3JldHVybiBRfSxzWDpmdW5jdGlvbigpe3JldHVybiBnfSxzbzpmdW5jdGlvbigpe3JldHVybiBkfSx0RTpmdW5jdGlvbigpe3JldHVybiBrfSx0RjpmdW5jdGlvbigpe3JldHVybiB2fSx0UjpmdW5jdGlvbigpe3JldHVybiBEfSx0eDpmdW5jdGlvbigpe3JldHVybiBzfSx3SDpmdW5jdGlvbigpe3JldHVybiBYfSx4eTpmdW5jdGlvbigpe3JldHVybiBvZX0seVE6ZnVuY3Rpb24oKXtyZXR1cm4gSn0seWQ6ZnVuY3Rpb24oKXtyZXR1cm4gVX0senE6ZnVuY3Rpb24oKXtyZXR1cm4gen0seno6ZnVuY3Rpb24oKXtyZXR1cm4gSX19KTtuKDM0ODApO3ZhciByPW4oODI4OSk7Y29uc3Qgbz0oKT0+KDAsci5GRCkoInN2ZyIse2lkOiJpY19idWJibGUiLGZpbGw6IiNGRkZGRkYiLGhlaWdodDoiMjQiLHZpZXdCb3g6IjAgMCAyNCAyNCIsd2lkdGg6IjI0Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJhcmlhLWhpZGRlbiI6ITAsY2hpbGRyZW46WygwLHIuWSkoInBhdGgiLHtkOiJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnoifSksKDAsci5ZKSgicGF0aCIse2Q6Ik0wIDBoMjR2MjRIMHoiLGZpbGw6Im5vbmUifSldfSksaT0oKT0+KDAsci5GRCkoInN2ZyIse2lkOiJpY19jbG9zZSIsZmlsbDoiIzAwMDAwMCIsaGVpZ2h0OiIyMCIsdmlld0JveDoiMCAwIDIwIDIwIix3aWR0aDoiMjAiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjohMCxjaGlsZHJlbjpbKDAsci5ZKSgicGF0aCIse2Q6Ik01LjI3NSAxNkw0IDE0LjcyNUw4LjcyNSAxMEw0IDUuMjc1TDUuMjc1IDRMMTAgOC43MjVMMTQuNzI1IDRMMTYgNS4yNzVMMTEuMjc1IDEwTDE2IDE0LjcyNUwxNC43MjUgMTZMMTAgMTEuMjc1TDUuMjc1IDE2WiJ9KSwoMCxyLlkpKCJwYXRoIix7ZDoiTTAgMGgyNHYyNEgweiIsZmlsbDoibm9uZSJ9KV19KSxhPSgpPT4oMCxyLkZEKSgic3ZnIix7aWQ6ImljX29wdGlvbnMiLGNsYXNzTmFtZToib3B0aW9ucy1pY29uIixmaWxsOiIjMDAwMDAwIixoZWlnaHQ6IjI0Iix2aWV3Qm94OiIwIDAgMjQgMjQiLHdpZHRoOiIyNCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiYXJpYS1oaWRkZW4iOiEwLGNoaWxkcmVuOlsoMCxyLlkpKCJwYXRoIix7ZDoiTTAgMGgyNHYyNEgweiIsZmlsbDoibm9uZSJ9KSwoMCxyLlkpKCJwYXRoIix7ZDoiTTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0wIDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yeiJ9KV19KSxzPSgpPT4oMCxyLkZEKSgic3ZnIix7aWQ6ImljX29wdGlvbnMiLGNsYXNzTmFtZToib3B0aW9ucy1pY29uIixmaWxsOiIjMDAwMDAwIixoZWlnaHQ6IjIwIix2aWV3Qm94OiIwIDAgMjAgMjAiLHdpZHRoOiIyMCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiYXJpYS1oaWRkZW4iOiEwLGNoaWxkcmVuOlsoMCxyLlkpKCJwYXRoIix7ZDoiTTExLjUgNEMxMS41IDQuODI4NDMgMTAuODI4NCA1LjUgMTAgNS41QzkuMTcxNTcgNS41IDguNSA0LjgyODQzIDguNSA0QzguNSAzLjE3MTU3IDkuMTcxNTcgMi41IDEwIDIuNUMxMC44Mjg0IDIuNSAxMS41IDMuMTcxNTcgMTEuNSA0WiJ9KSwoMCxyLlkpKCJwYXRoIix7ZDoiTTExLjUgMTBDMTEuNSAxMC44Mjg0IDEwLjgyODQgMTEuNSAxMCAxMS41QzkuMTcxNTcgMTEuNSA4LjUgMTAuODI4NCA4LjUgMTBDOC41IDkuMTcxNTcgOS4xNzE1NyA4LjUgMTAgOC41QzEwLjgyODQgOC41IDExLjUgOS4xNzE1NyAxMS41IDEwWiJ9KSwoMCxyLlkpKCJwYXRoIix7ZDoiTTEwIDE3LjVDMTAuODI4NCAxNy41IDExLjUgMTYuODI4NCAxMS41IDE2QzExLjUgMTUuMTcxNiAxMC44Mjg0IDE0LjUgMTAgMTQuNUM5LjE3MTU3IDE0LjUgOC41IDE1LjE3MTYgOC41IDE2QzguNSAxNi44Mjg0IDkuMTcxNTcgMTcuNSAxMCAxNy41WiJ9KV19KSxjPSgpPT4oMCxyLlkpKCJzdmciLHt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjooMCxyLlkpKCJwYXRoIix7ZDoiTTMuNTMzMzIgMTIuMzIzM1YxMS40NTY4SDQuMjA1MTZWNy4xNDg5M0M0LjIwNTE2IDYuNzQ4OTMgNC4yNzA1NSA2LjM2NTIgNC40MDEzMiA1Ljk5Nzc2QzQuNTMyMSA1LjYzMDIgNC43MDYwNSA1LjI4NDQ4IDQuOTIzMTYgNC45NjA1OUw3LjExMTQ5IDcuMTQ4OTNINS44NTY0OUwxLjkyMzE2IDMuMjE1NTlMMi41NDIzMiAyLjU3OTc2TDEzLjQ3MDUgMTMuNTI0NkwxMi44NTEzIDE0LjE0MzhMMTEuMDQzNyAxMi4zMjMzSDMuNTMzMzJaTTExLjc5NDggMTAuMTM2MUw1Ljc1NTE2IDQuMDc5NzZDNS45OTAxNiAzLjg5ODU0IDYuMjQ0NDMgMy43NTI1OSA2LjUxNzk5IDMuNjQxOTNDNi43OTE0MyAzLjUzMTI2IDcuMDc0MzIgMy40NTAyNiA3LjM2NjY2IDMuMzk4OTNWMi41NjY5M0M3LjM2NjY2IDIuMzkxNyA3LjQyODQzIDIuMjQyMzcgNy41NTE5OSAyLjExODkzQzcuNjc1NDMgMS45OTUzNyA3LjgyNDc3IDEuOTMzNTkgNy45OTk5OSAxLjkzMzU5QzguMTc1MjEgMS45MzM1OSA4LjMyNDU1IDEuOTk1MzcgOC40NDc5OSAyLjExODkzQzguNTcxNTUgMi4yNDIzNyA4LjYzMzMyIDIuMzkxNyA4LjYzMzMyIDIuNTY2OTNWMy4zOTg5M0M5LjU2MDY2IDMuNTM4MjYgMTAuMzE5NCAzLjk2MTc2IDEwLjkwOTcgNC42Njk0M0MxMS40OTk4IDUuMzc3MjEgMTEuNzk0OCA2LjIwMzcgMTEuNzk0OCA3LjE0ODkzVjEwLjEzNjFaTTcuOTk5OTkgMTQuMTk1MUM3LjcwMDg4IDE0LjE5NTEgNy40NDc0OSAxNC4wOTEzIDcuMjM5ODIgMTMuODgzNkM3LjAzMjA1IDEzLjY3NTkgNi45MjgxNiAxMy40MjI1IDYuOTI4MTYgMTMuMTIzM0g5LjA3MTgyQzkuMDcxODIgMTMuNDIyNSA4Ljk2NzkzIDEzLjY3NTkgOC43NjAxNiAxMy44ODM2QzguNTUyNDkgMTQuMDkxMyA4LjI5OTEgMTQuMTk1MSA3Ljk5OTk5IDE0LjE5NTFaIixmaWxsOiIjMDgwRjFBIn0pfSksdT0oKT0+KDAsci5ZKSgic3ZnIix7d2lkdGg6IjIwIixoZWlnaHQ6IjIwIix2aWV3Qm94OiIwIDAgMjAgMjAiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46KDAsci5ZKSgicGF0aCIse2Q6Ik00IDE1LjVWMTRINVY5QzUgOC40MzA1NiA1LjA5Mzc1IDcuODg1NDIgNS4yODEyNSA3LjM2NDU4QzUuNDY4NzUgNi44NDM3NSA1LjcyMjIyIDYuMzU0MTcgNi4wNDE2NyA1Ljg5NTgzTDcuMTQ1ODMgN0M2LjkzNzUgNy4yOTE2NyA2Ljc3Nzc4IDcuNjA5MzggNi42NjY2NyA3Ljk1MzEyQzYuNTU1NTYgOC4yOTY4OCA2LjUgOC42NDU4MyA2LjUgOVYxNEgxMkwxLjg3NSAzLjg3NUwyLjkzNzUgMi43OTE2N0wxNy4wNjI1IDE2LjkzNzVMMTYgMThMMTMuNSAxNS41SDRaTTE1IDEyLjc1TDEzLjUgMTEuMjVWOUMxMy41IDguMDI3NzggMTMuMTU5NyA3LjIwMTM5IDEyLjQ3OTIgNi41MjA4M0MxMS43OTg2IDUuODQwMjggMTAuOTcyMiA1LjUgMTAgNS41QzkuNjgyNzggNS41IDkuMzc3NzggNS41NDE2NyA5LjA4NSA1LjYyNUM4Ljc5MjIyIDUuNzA4MzMgOC41MDY5NCA1LjgyNjM5IDguMjI5MTcgNS45NzkxN0w3LjE0NTgzIDQuODg1MjFDNy40MjM2MSA0LjY4Mzk2IDcuNzE4NzUgNC41MjA4MyA4LjAzMTI1IDQuMzk1ODNDOC4zNDM3NSA0LjI3MDgzIDguNjY2NjcgNC4xNzM2MSA5IDQuMTA0MTdWM0M5IDIuNzIyMjIgOS4wOTcyMiAyLjQ4NjExIDkuMjkxNjcgMi4yOTE2N0M5LjQ4NjExIDIuMDk3MjIgOS43MjIyMiAyIDEwIDJDMTAuMjc3OCAyIDEwLjUxMzkgMi4wOTcyMiAxMC43MDgzIDIuMjkxNjdDMTAuOTAyOCAyLjQ4NjExIDExIDIuNzIyMjIgMTEgM1Y0LjEwNDE3QzEyLjE4MDYgNC4zMjYzOSAxMy4xNDI0IDQuODk1ODMgMTMuODg1NCA1LjgxMjVDMTQuNjI4NSA2LjcyOTE3IDE1IDcuNzkxNjcgMTUgOVYxMi43NVpNOS45OTU2MyAxOEM5LjU4MTg4IDE4IDkuMjI5MTcgMTcuODUzMSA4LjkzNzUgMTcuNTU5NEM4LjY0NTgzIDE3LjI2NTYgOC41IDE2LjkxMjUgOC41IDE2LjVIMTEuNUMxMS41IDE2LjkxNjcgMTEuMzUyNyAxNy4yNzA4IDExLjA1ODEgMTcuNTYyNUMxMC43NjM1IDE3Ljg1NDIgMTAuNDA5NCAxOCA5Ljk5NTYzIDE4WiJ9KX0pLGw9KCk9PigwLHIuRkQpKCJzdmciLHtpZDoiaWNfZW1vamlTd2l0Y2giLGZpbGw6IiMwMDAwMDAiLGhlaWdodDoiMjQiLHZpZXdCb3g6IjAgMCAyNCAyNCIsd2lkdGg6IjI0Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJhcmlhLWhpZGRlbiI6ITAsY2hpbGRyZW46WygwLHIuWSkoInBhdGgiLHtkOiJNMCAwaDI0djI0SDB6IixmaWxsOiJub25lIn0pLCgwLHIuWSkoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMkMyIDE3LjUyIDYuNDcgMjIgMTEuOTkgMjJDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJDMjIgNi40OCAxNy41MiAyIDExLjk5IDJaTTEyIDIwQzcuNTggMjAgNCAxNi40MiA0IDEyQzQgNy41OCA3LjU4IDQgMTIgNEMxNi40MiA0IDIwIDcuNTggMjAgMTJDMjAgMTYuNDIgMTYuNDIgMjAgMTIgMjBaTTE1LjUgMTFDMTYuMzMgMTEgMTcgMTAuMzMgMTcgOS41QzE3IDguNjcgMTYuMzMgOCAxNS41IDhDMTQuNjcgOCAxNCA4LjY3IDE0IDkuNUMxNCAxMC4zMyAxNC42NyAxMSAxNS41IDExWk04LjUgMTFDOS4zMyAxMSAxMCAxMC4zMyAxMCA5LjVDMTAgOC42NyA5LjMzIDggOC41IDhDNy42NyA4IDcgOC42NyA3IDkuNUM3IDEwLjMzIDcuNjcgMTEgOC41IDExWk0xMi4wMDA2IDE3LjVDMTQuMzMwNiAxNy41IDE2LjMxMDYgMTYuMDQgMTcuMTEwNiAxNEw2Ljg5MDYyIDE0QzcuNjkwNjMgMTYuMDQgOS42NzA2MyAxNy41IDEyLjAwMDYgMTcuNVoifSldfSksZD0oKT0+KDAsci5GRCkoInN2ZyIse2lkOiJpY19hdHRhY2hGaWxlIixmaWxsOiIjMDAwMDAwIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjI0LGhlaWdodDoyNCx2aWV3Qm94OiIwIDAgMjQgMjQiLCJhcmlhLWhpZGRlbiI6ITAsY2hpbGRyZW46WygwLHIuWSkoInBhdGgiLHtmaWxsOiJub25lIixkOiJNMCwwaDI0djI0SDBWMHoifSksKDAsci5ZKSgicGF0aCIse2Q6Ik0xMi41IDIyQzkuNDYgMjIgNyAxOS41NCA3IDE2LjVMNyA2QzcgMy43OSA4Ljc5IDIgMTEgMkMxMy4yMSAyIDE1IDMuNzkgMTUgNkwxNSAxNC41QzE1IDE1Ljg4IDEzLjg4IDE3IDEyLjUgMTdDMTEuMTIgMTcgMTAgMTUuODggMTAgMTQuNUwxMCA3TDEyIDdMMTIgMTQuNTlDMTIgMTUuMTQgMTMgMTUuMTQgMTMgMTQuNTlMMTMgNkMxMyA0LjkgMTIuMSA0IDExIDRDOS45IDQgOSA0LjkgOSA2TDkgMTYuNUM5IDE4LjQzIDEwLjU3IDIwIDEyLjUgMjBDMTQuNDMgMjAgMTYgMTguNDMgMTYgMTYuNUwxNiA3SDE4TDE4IDE2LjVDMTggMTkuNTQgMTUuNTQgMjIgMTIuNSAyMloifSldfSksZj0oKT0+KDAsci5GRCkoInN2ZyIse2lkOiJpY19ub3RpZmljYXRpb25zT24iLGZpbGw6IiMwMDAwMDAiLGhlaWdodDoiMjQiLHZpZXdCb3g6IjAgMCAyNCAyNCIsd2lkdGg6IjI0Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJhcmlhLWhpZGRlbiI6ITAsY2hpbGRyZW46WygwLHIuWSkoInBhdGgiLHtkOiJNMCAwaDI0djI0SDB6IixmaWxsOiJub25lIn0pLCgwLHIuWSkoInBhdGgiLHtkOiJNNy41OCA0LjA4TDYuMTUgMi42NUMzLjc1IDQuNDggMi4xNyA3LjMgMi4wMyAxMC41aDJjLjE1LTIuNjUgMS41MS00Ljk3IDMuNTUtNi40MnptMTIuMzkgNi40MmgyYy0uMTUtMy4yLTEuNzMtNi4wMi00LjEyLTcuODVsLTEuNDIgMS40M2MyLjAyIDEuNDUgMy4zOSAzLjc3IDMuNTQgNi40MnpNMTggMTFjMC0zLjA3LTEuNjQtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjMgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0ydi01em0tNiAxMWMuMTQgMCAuMjctLjAxLjQtLjA0LjY1LS4xNCAxLjE4LS41OCAxLjQ0LTEuMTguMS0uMjQuMTUtLjUuMTUtLjc4aC00Yy4wMSAxLjEuOSAyIDIuMDEgMnoifSldfSkscD0oKT0+KDAsci5ZKSgic3ZnIix7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoiMjAiLGhlaWdodDoiMjAiLHZpZXdCb3g6IjAgMCAyMCAyMCIsY2hpbGRyZW46KDAsci5ZKSgicGF0aCIse2Q6Ik0yLjUxMjkxIDguOTI3OTFDMi41MTI5MSA3Ljg2MDU1IDIuNzExMzEgNi44NzQ0NCAzLjEwODEyIDUuOTY5NThDMy41MDUwNiA1LjA2NDcyIDQuMDYzNiA0LjI2MTMyIDQuNzgzNzQgMy41NTkzN0w1LjYzNzcgNC4yNDA0MUM1LjAwNjMxIDQuODI2OTQgNC41MDgxOSA1LjUyNDg2IDQuMTQzMzMgNi4zMzQxNkMzLjc3ODYgNy4xNDM0NyAzLjU5NjI0IDguMDA4MDUgMy41OTYyNCA4LjkyNzkxSDIuNTEyOTFaTTE2LjQwMzcgOC45Mjc5MUMxNi40MDM3IDcuOTk0MTYgMTYuMjIxNCA3LjEyMTMyIDE1Ljg1NjcgNi4zMDkzN0MxNS40OTE4IDUuNDk3NDMgMTQuOTg2NyA0Ljc5ODEyIDE0LjM0MTUgNC4yMTE0NkwxNS4yMTYyIDMuNTE3NzFDMTUuOTIyNSA0LjIwNTc2IDE2LjQ3NzYgNS4wMTM5NiAxNi44ODE1IDUuOTQyMjlDMTcuMjg1MiA2Ljg3MDc2IDE3LjQ4NzEgNy44NjU5NyAxNy40ODcxIDguOTI3OTFIMTYuNDAzN1pNNC40MTY2NiAxNS40MDM3VjE0LjMyMDZINS4yNTY0NVY4LjkzNTgzQzUuMjU2NDUgNy43NTk1OCA1LjYyNjY2IDYuNzMwNDggNi4zNjcwOCA1Ljg0ODU0QzcuMTA3MzUgNC45NjY1OSA4LjA1NDQ0IDQuNDMzMTkgOS4yMDgzMyA0LjI0ODMzVjMuMjA4MzNDOS4yMDgzMyAyLjk4OTMgOS4yODU1NSAyLjgwMjY0IDkuNDM5OTkgMi42NDgzM0M5LjU5NDMgMi40OTM4OSA5Ljc4MDk2IDIuNDE2NjYgOS45OTk5OSAyLjQxNjY2QzEwLjIxOSAyLjQxNjY2IDEwLjQwNTcgMi40OTM4OSAxMC41NiAyLjY0ODMzQzEwLjcxNDQgMi44MDI2NCAxMC43OTE3IDIuOTg5MyAxMC43OTE3IDMuMjA4MzNWNC4yNDgzM0MxMS45NDU1IDQuNDMzMTkgMTIuODkyNiA0Ljk2NjU5IDEzLjYzMjkgNS44NDg1NEMxNC4zNzMzIDYuNzMwNDggMTQuNzQzNSA3Ljc1OTU4IDE0Ljc0MzUgOC45MzU4M1YxNC4zMjA2SDE1LjU4MzNWMTUuNDAzN0g0LjQxNjY2Wk05Ljk5NTYyIDE3Ljc0MzVDOS42MjQ2NSAxNy43NDM1IDkuMzA5MzcgMTcuNjEyNyA5LjA0OTc4IDE3LjM1MUM4Ljc5MDA2IDE3LjA4OTQgOC42NjAyIDE2Ljc3MzYgOC42NjAyIDE2LjQwMzdIMTEuMzM5OEMxMS4zMzk4IDE2Ljc3NzggMTEuMjA4NSAxNy4wOTQ2IDEwLjk0NTggMTcuMzU0MkMxMC42ODMzIDE3LjYxMzcgMTAuMzY2NiAxNy43NDM1IDkuOTk1NjIgMTcuNzQzNVpNNi4zMzk3OCAxNC4zMjA2SDEzLjY2MDJWOC45MzU4M0MxMy42NjAyIDcuOTE1NTUgMTMuMzA1MyA3LjA1MDQ4IDEyLjU5NTQgNi4zNDA2MkMxMS44ODU0IDUuNjMwNjIgMTEuMDIwMyA1LjI3NTYyIDkuOTk5OTkgNS4yNzU2MkM4Ljk3OTcxIDUuMjc1NjIgOC4xMTQ1OCA1LjYzMDYyIDcuNDA0NTggNi4zNDA2MkM2LjY5NDcyIDcuMDUwNDggNi4zMzk3OCA3LjkxNTU1IDYuMzM5NzggOC45MzU4M1YxNC4zMjA2WiJ9KX0pLGg9KCk9PigwLHIuRkQpKCJzdmciLHtpZDoiaWNfYXJyb3ciLGZpbGw6IiMwMDAwMDAiLGhlaWdodDoyNCx2aWV3Qm94OiIwIDAgMjQgMjQiLHdpZHRoOjI0LHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46WygwLHIuWSkoInBhdGgiLHtkOiJNMCAwaDI0djI0SDB6IixmaWxsOiJub25lIn0pLCgwLHIuWSkoInBhdGgiLHtkOiJNMTIgNGwtMS40MSAxLjQxTDE2LjE3IDExSDR2MmgxMi4xN2wtNS41OCA1LjU5TDEyIDIwbDgtOHoifSldfSksbT17dHJhbnNmb3JtOiJzY2FsZSgwLjgpIHRyYW5zbGF0ZSgzcHgsIDRweCkifSxnPSgpPT4oMCxyLkZEKSgic3ZnIix7aWQ6ImNhcmV0IixmaWxsOiIjMDAwMDAwIixoZWlnaHQ6IjQ4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLHdpZHRoOiI0OCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpbKDAsci5ZKSgicGF0aCIse3N0eWxlOm0sZDoiTTcuNDEgNy44NEwxMiAxMi40Mmw0LjU5LTQuNThMMTggOS4yNWwtNiA2LTYtNnoiLGZpbGw6IiMwNjJCMkIifSksKDAsci5ZKSgicGF0aCIse2Q6Ik0wLS43NWgyNHYyNEgweiIsZmlsbDoibm9uZSJ9KV19KSx5PSgpPT4oMCxyLkZEKSgic3ZnIix7aWQ6ImljX3N1Y2Nlc3NDaGVrIixmaWxsOiIjMDAwMDAwIixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLHdpZHRoOiIxOCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiYXJpYS1oaWRkZW4iOiEwLGNoaWxkcmVuOlsoMCxyLlkpKCJwYXRoIix7ZDoiTTAgMGgyNHYyNEgweiIsZmlsbDoibm9uZSJ9KSwoMCxyLlkpKCJwYXRoIix7ZDoiTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxeiJ9KV19KSx2PSgpPT4oMCxyLkZEKSgic3ZnIix7aWQ6ImljX3RodW1iRG93biIsZmlsbDoiIzAwMDAwMCIsaGVpZ2h0OiIyNCIsdmlld0JveDoiMCAwIDI0IDI0Iix3aWR0aDoiMjQiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjohMCxjaGlsZHJlbjpbKDAsci5ZKSgicGF0aCIse2Q6Ik0wIDBoMjR2MjRIMHoiLGZpbGw6Im5vbmUifSksKDAsci5ZKSgicGF0aCIse2Q6Ik0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MS45MWwuMDEuMDFMMSAxNGMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OS02LjU5Yy4zNi0uMzYuNTgtLjg2LjU4LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptNCAwdjEyaDRWM2gtNHoifSldfSksYj0oKT0+KDAsci5GRCkoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsaGVpZ2h0OjI0LHZpZXdCb3g6IjAgMCAyNCAyNCIsd2lkdGg6MjQsZmlsbDoiIzAwMDAwMCIsY2hpbGRyZW46WygwLHIuWSkoInBhdGgiLHtkOiJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHoiLGZpbGw6Im5vbmUifSksKDAsci5ZKSgicGF0aCIse2Q6Ik0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MmMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OS02LjU5Yy4zNi0uMzYuNTgtLjg2LjU4LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptMCAxMmwtNC4zNCA0LjM0TDEyIDE0SDN2LTJsMy03aDl2MTB6bTQtMTJoNHYxMmgtNHoifSldfSksdz0oKT0+KDAsci5GRCkoInN2ZyIse2lkOiJpY190aHVtYlVwIixmaWxsOiIjMDAwMDAwIixoZWlnaHQ6IjI0Iix2aWV3Qm94OiIwIDAgMjQgMjQiLHdpZHRoOiIyNCIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiYXJpYS1oaWRkZW4iOiEwLGNoaWxkcmVuOlsoMCxyLlkpKCJwYXRoIix7ZDoiTTAgMGgyNHYyNEgweiIsZmlsbDoibm9uZSJ9KSwoMCxyLlkpKCJwYXRoIix7ZDoiTTEgMjFoNFY5SDF2MTJ6bTIyLTExYzAtMS4xLS45LTItMi0yaC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDEgNy41OSA3LjU5QzcuMjIgNy45NSA3IDguNDUgNyA5djEwYzAgMS4xLjkgMiAyIDJoOWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczdi0xLjkxbC0uMDEtLjAxTDIzIDEweiJ9KV19KSxfPSgpPT4oMCxyLkZEKSgic3ZnIix7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixoZWlnaHQ6MjQsdmlld0JveDoiMCAwIDI0IDI0Iix3aWR0aDoyNCxmaWxsOiIjMDAwMDAwIixjaGlsZHJlbjpbKDAsci5ZKSgicGF0aCIse2Q6Ik0wIDBoMjR2MjRIMFYwem0wIDBoMjR2MjRIMFYweiIsZmlsbDoibm9uZSJ9KSwoMCxyLlkpKCJwYXRoIix7ZDoiTTkgMjFoOWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczdi0yYzAtMS4xLS45LTItMi0yaC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDEgNy41OCA3LjU5QzcuMjIgNy45NSA3IDguNDUgNyA5djEwYzAgMS4xLjkgMiAyIDJ6TTkgOWw0LjM0LTQuMzRMMTIgMTBoOXYybC0zIDdIOVY5ek0xIDloNHYxMkgxeiJ9KV19KSxTPSgpPT4oMCxyLkZEKSgic3ZnIix7aWQ6ImljX2Rvd25sb2FkIixmaWxsOiIjMDAwMDAwIixoZWlnaHQ6MjQsdmlld0JveDoiMCAwIDI0IDI0Iix3aWR0aDoyNCx4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOlsoMCxyLlkpKCJwYXRoIix7ZDoiTTAgMGgyNHYyNEgweiIsZmlsbDoibm9uZSJ9KSwoMCxyLlkpKCJwYXRoIix7ZDoiTTE5IDE5SDVWNWg3VjNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03eiJ9KV19KSxFPSgpPT4oMCxyLlkpKCJzdmciLHt3aWR0aDoiMjgiLGhlaWdodDoiMjgiLHZpZXdCb3g6IjAgMCAyOCAyOCIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjbGFzc05hbWU6ImljX3VwbG9hZCIsY2hpbGRyZW46KDAsci5ZKSgicGF0aCIse2Q6Ik03LjU4MzQxIDIzLjMzMzRDNS44MTM5NyAyMy4zMzM0IDQuMzAyMTYgMjIuNzIwOSAzLjA0OCAyMS40OTU5QzEuNzkzODMgMjAuMjcwOSAxLjE2Njc1IDE4Ljc3MzcgMS4xNjY3NSAxNy4wMDQyQzEuMTY2NzUgMTUuNDg3NiAxLjYyMzY5IDE0LjEzNjIgMi41Mzc1OCAxMi45NTAxQzMuNDUxNDcgMTEuNzY0IDQuNjQ3MyAxMS4wMDU2IDYuMTI1MDggMTAuNjc1MUM2LjYxMTE5IDguODg2MTkgNy41ODM0MSA3LjQzNzU4IDkuMDQxNzUgNi4zMjkyNUMxMC41MDAxIDUuMjIwOTEgMTIuMTUyOSA0LjY2Njc1IDE0LjAwMDEgNC42NjY3NUMxNi4yNzUxIDQuNjY2NzUgMTguMjA0OSA1LjQ1OTExIDE5Ljc4OTcgNy4wNDM4M0MyMS4zNzQ0IDguNjI4NTUgMjIuMTY2NyAxMC41NTg0IDIyLjE2NjcgMTIuODMzNEMyMy41MDg0IDEyLjk4OSAyNC42MjE2IDEzLjU2NzQgMjUuNTA2MyAxNC41Njg4QzI2LjM5MTEgMTUuNTcwMiAyNi44MzM0IDE2Ljc0MTcgMjYuODMzNCAxOC4wODM0QzI2LjgzMzQgMTkuNTQxNyAyNi4zMjMgMjAuNzgxMyAyNS4zMDIyIDIxLjgwMjJDMjQuMjgxMyAyMi44MjMgMjMuMDQxNyAyMy4zMzM0IDIxLjU4MzQgMjMuMzMzNEgxNS4xNjY3QzE0LjUyNTEgMjMuMzMzNCAxMy45NzU4IDIzLjEwNDkgMTMuNTE4OCAyMi42NDhDMTMuMDYxOSAyMi4xOTExIDEyLjgzMzQgMjEuNjQxNyAxMi44MzM0IDIxLjAwMDFWMTQuOTkxN0wxMC45NjY3IDE2LjgwMDFMOS4zMzM0MiAxNS4xNjY3TDE0LjAwMDEgMTAuNTAwMUwxOC42NjY3IDE1LjE2NjdMMTcuMDMzNCAxNi44MDAxTDE1LjE2NjcgMTQuOTkxN1YyMS4wMDAxSDIxLjU4MzRDMjIuNDAwMSAyMS4wMDAxIDIzLjA5MDQgMjAuNzE4MSAyMy42NTQyIDIwLjE1NDJDMjQuMjE4MSAxOS41OTA0IDI0LjUwMDEgMTguOTAwMSAyNC41MDAxIDE4LjA4MzRDMjQuNTAwMSAxNy4yNjY3IDI0LjIxODEgMTYuNTc2NSAyMy42NTQyIDE2LjAxMjZDMjMuMDkwNCAxNS40NDg3IDIyLjQwMDEgMTUuMTY2NyAyMS41ODM0IDE1LjE2NjdIMTkuODMzNFYxMi44MzM0QzE5LjgzMzQgMTEuMjE5NSAxOS4yNjQ3IDkuODQzODMgMTguMTI3MiA4LjcwNjMzQzE2Ljk4OTcgNy41Njg4MyAxNS42MTQgNy4wMDAwOCAxNC4wMDAxIDcuMDAwMDhDMTIuMzg2MiA3LjAwMDA4IDExLjAxMDUgNy41Njg4MyA5Ljg3MyA4LjcwNjMzQzguNzM1NSA5Ljg0MzgzIDguMTY2NzUgMTEuMjE5NSA4LjE2Njc1IDEyLjgzMzRINy41ODM0MUM2LjQ1NTY0IDEyLjgzMzQgNS40OTMxNCAxMy4yMzIgNC42OTU5MSAxNC4wMjkyQzMuODk4NjkgMTQuODI2NSAzLjUwMDA4IDE1Ljc4OSAzLjUwMDA4IDE2LjkxNjdDMy41MDAwOCAxOC4wNDQ1IDMuODk4NjkgMTkuMDA3IDQuNjk1OTEgMTkuODA0MkM1LjQ5MzE0IDIwLjYwMTUgNi40NTU2NCAyMS4wMDAxIDcuNTgzNDEgMjEuMDAwMUgxMC41MDAxVjIzLjMzMzRINy41ODM0MVoifSl9KSxDPSgpPT4oMCxyLlkpKCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOiI2NCIsaGVpZ2h0OiI2NCIsdmlld0JveDoiMCAwIDY0IDY0IixmaWxsOiJub25lIixjaGlsZHJlbjooMCxyLlkpKCJwYXRoIix7ZDoiTTMwLjI2NzEgNDEuMDM2M1YxNy41Njk2TDIzLjYyNjUgMjQuMjEwM0wyMS4xNDkxIDIxLjc4NDlMMzIuMDAwNSAxMC45MzM2TDQyLjg1MTggMjEuNzg0OUw0MC4zNzQ1IDI0LjIxMDNMMzMuNzMzOCAxNy41Njk2VjQxLjAzNjNIMzAuMjY3MVpNMTguNDAyNSA0OS44NjY5QzE3LjIwMTEgNDkuODY2OSAxNi4xODkzIDQ5LjQ1MjUgMTUuMzY3MSA0OC42MjM2QzE0LjU0NDkgNDcuNzk0NyAxNC4xMzM4IDQ2Ljc4IDE0LjEzMzggNDUuNTc5NlY0MS41NDg5SDE3LjYwMDVWNDUuNTc5NkMxNy42MDA1IDQ1Ljc4NDkgMTcuNjg2IDQ1Ljk3MjkgMTcuODU3MSA0Ni4xNDM2QzE4LjAyNzggNDYuMzE0NyAxOC4yMTU4IDQ2LjQwMDMgMTguNDIxMSA0Ni40MDAzSDQ1LjU3OThDNDUuNzg1MSA0Ni40MDAzIDQ1Ljk3MzEgNDYuMzE0NyA0Ni4xNDM4IDQ2LjE0MzZDNDYuMzE0OSA0NS45NzI5IDQ2LjQwMDUgNDUuNzg0OSA0Ni40MDA1IDQ1LjU3OTZWNDEuNTQ4OUg0OS44NjcxVjQ1LjU3OTZDNDkuODY3MSA0Ni43OCA0OS40NTI1IDQ3Ljc5NDcgNDguNjIzMSA0OC42MjM2QzQ3Ljc5MzggNDkuNDUyNSA0Ni43Nzg1IDQ5Ljg2NjkgNDUuNTc3MSA0OS44NjY5SDE4LjQwMjVaIixmaWxsOiIjMDU2NkZGIn0pfSksaz0oKT0+KDAsci5ZKSgic3ZnIix7ZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix2aWV3Qm94OiIwIDAgMTcxIDE4IixjaGlsZHJlbjooMCxyLkZEKSgiZyIse2ZpbGw6IiM2NDc0OTEiLGNoaWxkcmVuOlsoMCxyLlkpKCJwYXRoIix7ZDoiTS45IDEzVjUuNzI3aDIuNDU4Yy41NyAwIDEuMDM3LjEwMyAxLjM5OS4zMS4zNjQuMjAzLjYzNC40NzkuODEuODI3LjE3NS4zNDguMjYyLjczNi4yNjIgMS4xNjRzLS4wODcuODE4LS4yNjMgMS4xNjljLS4xNzIuMzUtLjQ0LjYzLS44MDIuODM4LS4zNjIuMjA2LS44MjYuMzA5LTEuMzkyLjMwOUgxLjYxdi0uNzgxaDEuNzMzYy4zOTEgMCAuNzA1LS4wNjguOTQxLS4yMDMuMjM3LS4xMzUuNDA5LS4zMTcuNTE1LS41NDcuMTEtLjIzMi4xNjQtLjQ5My4xNjQtLjc4NXMtLjA1NS0uNTUxLS4xNjQtLjc4Yy0uMTA2LS4yMy0uMjc5LS40MS0uNTE4LS41NC0uMjQtLjEzMy0uNTU2LS4yLS45NTItLjJIMS43ODFWMTN6bTEyLjQ4NC0zLjYzNmMwIC43NjctLjEzOCAxLjQzLS40MTUgMS45ODgtLjI3Ny41NTktLjY1Ny45OS0xLjE0IDEuMjkzLS40ODMuMzAzLTEuMDM1LjQ1NC0xLjY1NS40NTQtLjYyIDAtMS4xNzItLjE1MS0xLjY1NS0uNDU0LS40ODMtLjMwMy0uODYzLS43MzQtMS4xNC0xLjI5M3MtLjQxNS0xLjIyMS0uNDE1LTEuOTg4YzAtLjc2Ny4xMzgtMS40My40MTUtMS45ODlzLjY1Ny0uOTkgMS4xNC0xLjI5M2MuNDgzLS4zMDMgMS4wMzUtLjQ1NCAxLjY1NS0uNDU0LjYyIDAgMS4xNzIuMTUxIDEuNjU1LjQ1NC40ODMuMzAzLjg2My43MzQgMS4xNCAxLjI5My4yNzcuNTU5LjQxNSAxLjIyMi40MTUgMS45ODl6bS0uODUyIDBjMC0uNjMtLjEwNS0xLjE2Mi0uMzE2LTEuNTk1LS4yMDgtLjQzMy0uNDkxLS43Ni0uODQ5LS45ODNhMi4yIDIuMiAwIDAgMC0xLjE5My0uMzM0Yy0uNDQgMC0uODQuMTExLTEuMTk3LjMzNC0uMzU1LjIyMi0uNjM4LjU1LS44NDguOTgzLS4yMDkuNDMzLS4zMTMuOTY1LS4zMTMgMS41OTVzLjEwNCAxLjE2LjMxMyAxLjU5NGMuMjEuNDMzLjQ5My43NjEuODQ4Ljk4NC4zNTguMjIyLjc1Ny4zMzQgMS4xOTcuMzM0LjQ0IDAgLjgzOC0uMTEyIDEuMTkzLS4zMzQuMzU4LS4yMjMuNjQtLjU1Ljg0OS0uOTg0LjIxLS40MzMuMzE2LS45NjUuMzE2LTEuNTk0ek0xNi4xODYgMTNsLTEuOTg5LTcuMjczaC44OTVsMS41MiA1LjkyNGguMDcxbDEuNTQ5LTUuOTI0aC45OTRsMS41NDggNS45MjRoLjA3MWwxLjUyLTUuOTI0aC44OTVMMjEuMjcgMTNoLS45MDlsLTEuNjA1LTUuNzk1SDE4LjdMMTcuMDk1IDEzem04LjE3MSAwVjUuNzI3aDQuMzl2Ljc4MmgtMy41MXYyLjQ1N2gzLjI4MnYuNzgxaC0zLjI4MXYyLjQ3MmgzLjU2NVYxM3ptNS45NzcgMFY1LjcyN2gyLjQ1N2MuNTY4IDAgMS4wMzUuMDk3IDEuNC4yOTEuMzY0LjE5Mi42MzQuNDU2LjgwOS43OTIuMTc1LjMzNy4yNjMuNzE5LjI2MyAxLjE0NyAwIC40MjktLjA4OC44MDktLjI2MyAxLjE0cy0uNDQ0LjU5Mi0uODA2Ljc4MmMtLjM2Mi4xODctLjgyNS4yOC0xLjM4OS4yOGgtMS45ODh2LS43OTVoMS45NmMuMzg4IDAgLjctLjA1Ny45MzgtLjE3LjIzOS0uMTE0LjQxMS0uMjc1LjUxOC0uNDg0YTEuNjIgMS42MiAwIDAgMCAuMTYzLS43NTNjMC0uMjktLjA1NC0uNTQ1LS4xNjMtLjc2M3MtLjI4My0uMzg2LS41MjItLjUwNGMtLjI0LS4xMjEtLjU1NS0uMTgxLS45NDgtLjE4MWgtMS41NDhWMTN6bTMuNDIzLTMuMjY3TDM1LjU0NyAxM2gtMS4wMjNsLTEuNzYxLTMuMjY3ek0zNi43MyAxM1Y1LjcyN2g0LjM5di43ODJIMzcuNjF2Mi40NTdoMy4yODF2Ljc4MWgtMy4yODF2Mi40NzJoMy41NjVWMTN6bTguMjIxIDBoLTIuMjQ0VjUuNzI3aDIuMzQ0Yy43MDUgMCAxLjMwOS4xNDYgMS44MS40MzdhMi44NiAyLjg2IDAgMCAxIDEuMTU1IDEuMjQ3Yy4yNjcuNTQuNDAxIDEuMTg2LjQwMSAxLjkzOCAwIC43NTgtLjEzNSAxLjQxLS40MDUgMS45NTctLjI3LjU0NS0uNjYzLjk2NC0xLjE3OSAxLjI1Ny0uNTE2LjI5MS0xLjE0My40MzctMS44ODIuNDM3em0tMS4zNjQtLjc4MWgxLjMwN2MuNjAyIDAgMS4xLS4xMTYgMS40OTUtLjM0OC4zOTYtLjIzMi42OS0uNTYzLjg4NS0uOTkxcy4yOS0uOTM5LjI5LTEuNTNjMC0uNTg4LS4wOTUtMS4wOTMtLjI4Ny0xLjUxN2EyLjEyMiAyLjEyMiAwIDAgMC0uODYtLjk4Yy0uMzgtLjIzLS44NTUtLjM0NC0xLjQyMy0uMzQ0aC0xLjQwNnptOS4xMi43ODFWNS43MjdoMi41NDJjLjUwNyAwIC45MjUuMDg4IDEuMjU0LjI2My4zMy4xNzMuNTc0LjQwNi43MzUuNy4xNjEuMjkuMjQyLjYxNC4yNDIuOTcgMCAuMzEyLS4wNTYuNTctLjE2Ny43NzNhMS4yOTggMS4yOTggMCAwIDEtLjQzNC40ODNjLS4xNzcuMTE5LS4zNy4yMDYtLjU3OC4yNjN2LjA3MWMuMjIyLjAxNC40NDYuMDkyLjY3LjIzNC4yMjYuMTQyLjQxNC4zNDYuNTY1LjYxMS4xNTIuMjY1LjIyOC41OS4yMjguOTczIDAgLjM2NS0uMDgzLjY5My0uMjQ5Ljk4NC0uMTY2LjI5MS0uNDI3LjUyMi0uNzg1LjY5Mi0uMzU3LjE3LS44MjIuMjU2LTEuMzk1LjI1NnptLjg4LS43ODFoMS43NDhjLjU3NSAwIC45ODMtLjExMSAxLjIyNS0uMzM0YTEuMDcgMS4wNyAwIDAgMCAuMzY2LS44MTdjMC0uMjQ2LS4wNjMtLjQ3My0uMTg5LS42ODJhMS4zNjIgMS4zNjIgMCAwIDAtLjUzNi0uNTA0IDEuNjgyIDEuNjgyIDAgMCAwLS44MjQtLjE5MmgtMS43OXptMC0zLjI5NmgxLjYzNGMuMjY1IDAgLjUwNC0uMDUyLjcxNy0uMTU2LjIxNi0uMTA0LjM4Ni0uMjUuNTEyLS40NC4xMjgtLjE5LjE5Mi0uNDEyLjE5Mi0uNjY4IDAtLjMyLS4xMTItLjU5LS4zMzQtLjgxMy0uMjIzLS4yMjUtLjU3Ni0uMzM3LTEuMDU4LS4zMzdoLTEuNjYyem00Ljk5OS0zLjE5NmgxLjAwOGwyLjAxNyAzLjM5NWguMDg2bDIuMDE3LTMuMzk1aDEuMDA4bC0yLjYyOCA0LjI3NlYxM2gtLjg4di0yLjk5N3oifSksKDAsci5ZKSgicGF0aCIse2Q6Ik02OC45NSAxN3YuMDVoNS43NTdjMi41OTcgMCA0Ljg0Ni0xLjc1NiA1LjUzNi00LjI5bDQuMzQ0LS4wMTVoLjA1VjYuODI4Qzg0LjYxMyAzLjU5IDgyLjAzNC45NSA3OC44NzUuOTVjLTEuMzA3IDAtMi41OS40NjMtMy42MDQgMS4zYTUuODk0IDUuODk0IDAgMCAwLTEuOTczIDMuMTc1Yy0yLjU3LjY2LTQuMzQ4IDIuOTkyLTQuMzQ4IDUuNzI4em05Ljk0LTQuMjZoLjA2N2MtLjY2MyAxLjgyOC0yLjMzMyAzLjAzNC00LjI1NSAzLjAzNGgtNC41Mjh2LTQuNjQxYzAtMS45NDYgMS4yMDUtMy42OSAyLjk2My00LjM1NVY2Ljg2M2MuMDE1IDMuMjM4IDIuNTk0IDUuODc4IDUuNzUyIDUuODc4em0tNC4xODMtNy41SDc0LjYxMWMuNjUtMS44MDQgMi4zNTYtMy4wMzggNC4yNS0zLjAzOCAyLjQ5MSAwIDQuNTI4IDIuMDc1IDQuNTQyIDQuNjI2djQuNjU1aC0yLjk2Yy4wMDktLjEyNC4wMTYtLjI0OC4wMTYtLjM2NSAwLTMuMjM4LTIuNTgtNS44NzgtNS43NTItNS44Nzh6bS0uMzYgMS42MTdjMC0uMTExLjAwOC0uMjMuMDE2LS4zNDguMTE4LS4wMDkuMjMxLS4wMTcuMzQ0LS4wMTdoLjAxNGMyLjQ4MiAwIDQuNTE0IDIuMDc2IDQuNTI4IDQuNjI3IDAgLjExOS0uMDA3LjI0Mi0uMDE2LjM2NGgtLjM0NGMtMi40OSAwLTQuNTI3LTIuMDc1LTQuNTQyLTQuNjI2eiIsc3Ryb2tlOiIjNjQ3NDkxIixzdHJva2VXaWR0aDoiLjEifSksKDAsci5ZKSgicGF0aCIse2Q6Ik04OS41NzMgMTNWNS4xNjhoMS40MTl2Ni42NjZoMy42NTJWMTN6bTYuNTczIDBWOS40OGwuMjk3Ljg1OC0zLjQ3Ni01LjE3aDEuNjE3bDIuNDc1IDMuODVoLS40MDdsMi40NzUtMy44NWgxLjYxN2wtMy40NjUgNS4xNy4yODYtLjg1OFYxM3ptNC45MDUgMFY1LjE2OGgzLjM1NWMuODg3IDAgMS41NjIuMTk0IDIuMDI0LjU4M3MuNjkzLjk0Ni42OTMgMS42NzJjMCAuNjktLjIzOSAxLjI0LS43MTUgMS42NS0uNDc3LjQwMy0xLjE0MS42MDUtMS45OTEuNjA1bC44OC0uMTc2Yy4yNzEgMCAuNTEzLjA4LjcyNi4yNDIuMjEyLjE2MS4zODEuNDEuNTA2Ljc0OGwuOTY4IDIuNTA4aC0xLjQ5NmwtLjk5LTIuNjA3Yy0uMTAzLS4yNTctLjI1LS40MjktLjQ0LS41MTdhMS42MDQgMS42MDQgMCAwIDAtLjY5My0uMTMyaC0xLjQzVjEzem0xLjM4Ni00LjM1NmgxLjc3MWMuNTQyIDAgLjkzOC0uMDk5IDEuMTg4LS4yOTcuMjQ5LS4xOTguMzc0LS40OTUuMzc0LS44OTEgMC0uNDAzLS4xMjUtLjctLjM3NC0uODkxLS4yNS0uMTktLjY0Ni0uMjg2LTEuMTg4LS4yODZoLTEuNzcxem05LjY1IDQuNDQ0Yy0uNzYzIDAtMS40MjMtLjE2MS0xLjk4LS40ODRhMy4yMiAzLjIyIDAgMCAxLTEuMjg3LTEuMzg2Yy0uMzAxLS42MDEtLjQ1MS0xLjMxMy0uNDUxLTIuMTM0IDAtLjgyOS4xNS0xLjU0LjQ1MS0yLjEzNGEzLjIyIDMuMjIgMCAwIDEgMS4yODctMS4zODZjLjU1Ny0uMzIzIDEuMjE3LS40ODQgMS45OC0uNDg0Ljc3IDAgMS40MzMuMTYxIDEuOTkxLjQ4NC41NTcuMzIzLjk4Ni43ODUgMS4yODcgMS4zODYuMy41OTQuNDUxIDEuMzAyLjQ1MSAyLjEyMyAwIC44MjktLjE1NCAxLjU0NC0uNDYyIDIuMTQ1YTMuMjMyIDMuMjMyIDAgMCAxLTEuMjg3IDEuMzg2Yy0uNTUuMzIzLTEuMjEuNDg0LTEuOTguNDg0em0wLTEuMTIyYy43MTggMCAxLjI4My0uMjQ2IDEuNjk0LS43MzcuNDEtLjQ5OS42MTYtMS4yMTcuNjE2LTIuMTU2IDAtLjkzOS0uMjA2LTEuNjUtLjYxNi0yLjEzNC0uNDExLS40OTEtLjk3Ni0uNzM3LTEuNjk0LS43MzctLjcxMiAwLTEuMjczLjI0Ni0xLjY4My43MzctLjQxMS40ODQtLjYxNiAxLjE5NS0uNjE2IDIuMTM0IDAgLjkzOS4yMDUgMS42NTcuNjE2IDIuMTU2LjQxLjQ5MS45NzEuNzM3IDEuNjgzLjczN3pNMTIwLjY1IDEzaC0xLjQzbDMuNTQyLTcuODMyaDEuMTU1TDEyNy40NTkgMTNoLTEuNDA4bC0yLjg4Mi02LjczMmguMzg1em0uMTMyLTEuODM3LjUzOS0xLjFoMy45OTNsLjUxNyAxLjF6TTEyOC4xOTcgMTNWNS4xNjhoMS40MTlWMTN6bTYuNTA3IDBoLTEuNDNsMy41NDItNy44MzJoMS4xNTVMMTQxLjUxMyAxM2gtMS40MDhsLTIuODgyLTYuNzMyaC4zODV6bS4xMzItMS44MzcuNTM5LTEuMWgzLjk5M2wuNTE3IDEuMXptMTAuODUyIDEuOTI1Yy0uODE0IDAtMS41MTgtLjE1OC0yLjExMi0uNDczYTMuMzEzIDMuMzEzIDAgMCAxLTEuMzUzLTEuMzc1Yy0uMzA4LS42MDEtLjQ2Mi0xLjMyNC0uNDYyLTIuMTY3IDAtLjgyOS4xNTQtMS41NC40NjItMi4xMzRhMy4yNDQgMy4yNDQgMCAwIDEgMS4zNDItMS4zNzVjLjU4LS4zMjMgMS4yNjUtLjQ4NCAyLjA1Ny0uNDg0LjU1IDAgMS4wNjQuMDc3IDEuNTQuMjMxLjQ3Ny4xNTQuODguMzgxIDEuMjEuNjgybC0uNDg0IDEuMDM0YTQuMDM3IDQuMDM3IDAgMCAwLTEuMDg5LS42MTYgMy4yNjUgMy4yNjUgMCAwIDAtMS4xNTUtLjE5OGMtLjc5OSAwLTEuNDA4LjI0Mi0xLjgyNi43MjYtLjQxLjQ4NC0uNjE2IDEuMTk1LS42MTYgMi4xMzQgMCAuOTYuMjEzIDEuNjg3LjYzOCAyLjE3OC40MjYuNDg0IDEuMDYuNzI2IDEuOTAzLjcyNi4zMjMgMCAuNjM4LS4wMjYuOTQ2LS4wNzcuMzE2LS4wNTkuNjEzLS4xNC44OTEtLjI0MmwtLjMzLjUyOFY5Ljc4OGgtMS42ODNWOC43NjVoMi45N3YzLjc2MmMtLjI0Mi4xMjUtLjUxNy4yMjctLjgyNS4zMDhzLS42MzQuMTQzLS45NzkuMTg3YTguMjM2IDguMjM2IDAgMCAxLTEuMDQ1LjA2NnptNC4zNDgtLjA4OFY1LjE2OGg1LjIzNnYxLjExMWgtMy44NXYyLjE3OGgzLjYzdjEuMTIyaC0zLjYzdjIuMzFoMy44NVYxM3ptNi40MzIgMFY1LjE2OGgxLjA1Nmw0LjUxIDUuODYzLS4yOTcuMTU0VjUuMTY4aDEuMzMxVjEzaC0xLjA2N2wtNC40ODgtNS44NDEuMjg2LS4xNzZWMTN6bTEwLjAzMSAwVjYuMzM0aC0yLjU1MlY1LjE2OGg2LjUzNHYxLjE2NmgtMi41NTJWMTN6In0pXX0pfSksQT0oKT0+KDAsci5GRCkoInN2ZyIse2ZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjohMCx2aWV3Qm94OiIwIDAgMTE5IDE4IixjaGlsZHJlbjpbKDAsci5ZKSgicGF0aCIse2Q6Ik0uOSAxM1Y1LjcyN2gyLjQ1OGMuNTcgMCAxLjAzNy4xMDMgMS4zOTkuMzEuMzY0LjIwMy42MzQuNDc5LjgxLjgyNy4xNzUuMzQ4LjI2Mi43MzYuMjYyIDEuMTY0IDAgLjQyOS0uMDg3LjgxOC0uMjYzIDEuMTY5LS4xNzIuMzUtLjQ0LjYzLS44MDIuODM4LS4zNjIuMjA2LS44MjYuMzA5LTEuMzkyLjMwOUgxLjYxdi0uNzgxaDEuNzMzYy4zOTEgMCAuNzA1LS4wNjguOTQxLS4yMDMuMjM3LS4xMzUuNDA5LS4zMTcuNTE1LS41NDcuMTEtLjIzMi4xNjQtLjQ5My4xNjQtLjc4NSAwLS4yOS0uMDU1LS41NTEtLjE2NC0uNzgtLjEwNi0uMjMtLjI3OS0uNDEtLjUxOC0uNTQtLjI0LS4xMzMtLjU1Ni0uMi0uOTUyLS4ySDEuNzgxVjEzSC45Wm0xMi40ODQtMy42MzZjMCAuNzY3LS4xMzggMS40My0uNDE1IDEuOTg4LS4yNzcuNTU5LS42NTcuOTktMS4xNCAxLjI5My0uNDgzLjMwMy0xLjAzNS40NTQtMS42NTUuNDU0LS42MiAwLTEuMTcyLS4xNTEtMS42NTUtLjQ1NC0uNDgzLS4zMDMtLjg2My0uNzM0LTEuMTQtMS4yOTMtLjI3Ny0uNTU4LS40MTUtMS4yMjEtLjQxNS0xLjk4OCAwLS43NjcuMTM4LTEuNDMuNDE1LTEuOTg5LjI3Ny0uNTU5LjY1Ny0uOTkgMS4xNC0xLjI5My40ODMtLjMwMyAxLjAzNS0uNDU0IDEuNjU1LS40NTQuNjIgMCAxLjE3Mi4xNTEgMS42NTUuNDU0LjQ4My4zMDMuODYzLjczNCAxLjE0IDEuMjkzLjI3Ny41NTkuNDE1IDEuMjIyLjQxNSAxLjk4OVptLS44NTIgMGMwLS42My0uMTA1LTEuMTYyLS4zMTYtMS41OTUtLjIwOC0uNDMzLS40OTEtLjc2MS0uODQ5LS45ODNhMi4yIDIuMiAwIDAgMC0xLjE5My0uMzM0Yy0uNDQgMC0uODQuMTExLTEuMTk3LjMzNC0uMzU1LjIyMi0uNjM4LjU1LS44NDguOTgzLS4yMDkuNDMzLS4zMTMuOTY1LS4zMTMgMS41OTVzLjEwNCAxLjE2LjMxMyAxLjU5NGMuMjEuNDMzLjQ5My43NjEuODQ4Ljk4NC4zNTguMjIyLjc1Ny4zMzQgMS4xOTcuMzM0LjQ0IDAgLjgzOC0uMTEyIDEuMTkzLS4zMzQuMzU4LS4yMjMuNjQtLjU1Ljg0OS0uOTg0LjIxLS40MzMuMzE2LS45NjUuMzE2LTEuNTk0Wk0xNi4xODYgMTNsLTEuOTg5LTcuMjczaC44OTVsMS41MiA1LjkyNGguMDcxbDEuNTQ5LTUuOTI0aC45OTRsMS41NDggNS45MjRoLjA3MWwxLjUyLTUuOTI0aC44OTVMMjEuMjcgMTNoLS45MDlsLTEuNjA1LTUuNzk1SDE4LjdMMTcuMDk1IDEzaC0uOTA5Wm04LjE3MSAwVjUuNzI3aDQuMzl2Ljc4MmgtMy41MXYyLjQ1N2gzLjI4MnYuNzgxaC0zLjI4MXYyLjQ3MmgzLjU2NVYxM2gtNC40NDZabTUuOTc3IDBWNS43MjdoMi40NTdjLjU2OCAwIDEuMDM1LjA5NyAxLjQuMjkxLjM2NC4xOTIuNjM0LjQ1Ni44MDkuNzkyLjE3NS4zMzcuMjYzLjcxOS4yNjMgMS4xNDcgMCAuNDI5LS4wODguODA5LS4yNjMgMS4xNGExLjg1MiAxLjg1MiAwIDAgMS0uODA2Ljc4MmMtLjM2Mi4xODctLjgyNS4yOC0xLjM4OS4yOGgtMS45ODh2LS43OTVoMS45NmMuMzg4IDAgLjctLjA1Ny45MzgtLjE3LjIzOS0uMTE0LjQxMS0uMjc1LjUxOC0uNDg0YTEuNjIgMS42MiAwIDAgMCAuMTYzLS43NTNjMC0uMjktLjA1NC0uNTQ1LS4xNjMtLjc2M2ExLjExNCAxLjExNCAwIDAgMC0uNTIyLS41MDRjLS4yNC0uMTIxLS41NTUtLjE4MS0uOTQ4LS4xODFoLTEuNTQ4VjEzaC0uODgxWm0zLjQyMy0zLjI2N0wzNS41NDcgMTNoLTEuMDIzbC0xLjc2MS0zLjI2N2guOTk0Wk0zNi43MyAxM1Y1LjcyN2g0LjM5di43ODJIMzcuNjF2Mi40NTdoMy4yODF2Ljc4MWgtMy4yODF2Mi40NzJoMy41NjVWMTNIMzYuNzNabTguMjIxIDBoLTIuMjQ0VjUuNzI3aDIuMzQ0Yy43MDUgMCAxLjMwOS4xNDYgMS44MS40MzdhMi44NiAyLjg2IDAgMCAxIDEuMTU1IDEuMjQ3Yy4yNjcuNTQuNDAxIDEuMTg2LjQwMSAxLjkzOCAwIC43NTgtLjEzNSAxLjQxLS40MDUgMS45NTctLjI3LjU0NS0uNjYzLjk2NC0xLjE3OSAxLjI1Ny0uNTE2LjI5MS0xLjE0My40MzctMS44ODIuNDM3Wm0tMS4zNjQtLjc4MWgxLjMwN2MuNjAyIDAgMS4xLS4xMTYgMS40OTUtLjM0OC4zOTYtLjIzMi42OS0uNTYzLjg4NS0uOTkxLjE5NC0uNDI5LjI5LS45MzkuMjktMS41MyAwLS41ODgtLjA5NS0xLjA5My0uMjg3LTEuNTE3YTIuMTIyIDIuMTIyIDAgMCAwLS44Ni0uOThjLS4zOC0uMjMtLjg1NS0uMzQ0LTEuNDIzLS4zNDRoLTEuNDA3djUuNzFabTkuMTIuNzgxVjUuNzI3aDIuNTQyYy41MDcgMCAuOTI1LjA4OCAxLjI1NC4yNjMuMzMuMTczLjU3NC40MDYuNzM1LjcuMTYxLjI5LjI0Mi42MTQuMjQyLjk3IDAgLjMxMi0uMDU2LjU3LS4xNjcuNzczYTEuMjk4IDEuMjk4IDAgMCAxLS40MzQuNDgzYy0uMTc3LjExOS0uMzcuMjA2LS41NzguMjYzdi4wNzFjLjIyMi4wMTQuNDQ2LjA5Mi42Ny4yMzQuMjI2LjE0Mi40MTQuMzQ2LjU2NS42MTEuMTUyLjI2NS4yMjguNTkuMjI4Ljk3MyAwIC4zNjUtLjA4My42OTMtLjI0OS45ODQtLjE2Ni4yOTEtLjQyNy41MjItLjc4NS42OTItLjM1Ny4xNy0uODIyLjI1Ni0xLjM5NS4yNTZoLTIuNjI4Wm0uODgtLjc4MWgxLjc0OGMuNTc1IDAgLjk4My0uMTExIDEuMjI1LS4zMzRhMS4wNyAxLjA3IDAgMCAwIC4zNjYtLjgxN2MwLS4yNDYtLjA2My0uNDczLS4xODktLjY4MmExLjM2MiAxLjM2MiAwIDAgMC0uNTM2LS41MDQgMS42ODIgMS42ODIgMCAwIDAtLjgyNC0uMTkyaC0xLjc5djIuNTI5Wm0wLTMuMjk2aDEuNjM0Yy4yNjUgMCAuNTA0LS4wNTIuNzE3LS4xNTYuMjE2LS4xMDQuMzg2LS4yNS41MTItLjQ0LjEyOC0uMTkuMTkxLS40MTIuMTkxLS42NjggMC0uMzItLjExLS41OS0uMzMzLS44MTMtLjIyMy0uMjI1LS41NzYtLjMzNy0xLjA1OS0uMzM3aC0xLjY2MnYyLjQxNFptNC45OTktMy4xOTZoMS4wMDhsMi4wMTcgMy4zOTVoLjA4NmwyLjAxNy0zLjM5NWgxLjAwOGwtMi42MjggNC4yNzZWMTNoLS44OHYtMi45OTdsLTIuNjI4LTQuMjc2WiIsZmlsbDoiIzY0NzQ5MSJ9KSwoMCxyLlkpKCJwYXRoIix7ZDoiTTY4Ljk1IDE3di4wNWg1Ljc1N2MyLjU5NyAwIDQuODQ2LTEuNzU2IDUuNTM2LTQuMjlsNC4zNDQtLjAxNWguMDVWNi44MjhDODQuNjEzIDMuNTkgODIuMDM0Ljk1IDc4Ljg3NS45NWMtMS4zMDcgMC0yLjU5LjQ2My0zLjYwNCAxLjNhNS44OTQgNS44OTQgMCAwIDAtMS45NzMgMy4xNzVjLTIuNTcuNjYtNC4zNDggMi45OTItNC4zNDggNS43MjhWMTdabTkuOTQtNC4yNmguMDY3Yy0uNjYzIDEuODI4LTIuMzMzIDMuMDM0LTQuMjU1IDMuMDM0aC00LjUyOHYtNC42NDFjMC0xLjk0NiAxLjIwNS0zLjY5IDIuOTYzLTQuMzU1VjYuODYzYy4wMTUgMy4yMzggMi41OTQgNS44NzggNS43NTIgNS44NzhabS00LjE4My03LjVINzQuNjExYy42NS0xLjgwNCAyLjM1Ni0zLjAzOCA0LjI1LTMuMDM4IDIuNDkxIDAgNC41MjggMi4wNzUgNC41NDIgNC42MjZ2NC42NTVoLTIuOTZjLjAwOS0uMTIzLjAxNi0uMjQ4LjAxNi0uMzY1IDAtMy4yMzgtMi41OC01Ljg3OC01Ljc1Mi01Ljg3OFptLS4zNiAxLjYxN2MwLS4xMTEuMDA4LS4yMy4wMTYtLjM0OC4xMTgtLjAwOS4yMzEtLjAxNy4zNDQtLjAxN2guMDE0YzIuNDgyIDAgNC41MTQgMi4wNzYgNC41MjggNC42MjcgMCAuMTE5LS4wMDcuMjQyLS4wMTYuMzY0aC0uMzQ0Yy0yLjQ5IDAtNC41MjctMi4wNzUtNC41NDItNC42MjZaIixmaWxsOiIjNjQ3NDkxIixzdHJva2U6IiM2NDc0OTEiLHN0cm9rZVdpZHRoOiIuMSJ9KSwoMCxyLlkpKCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGNsaXBSdWxlOiJldmVub2RkIixkOiJNMTE0LjY2NyAxMy4zNGE0LjIzIDQuMjMgMCAwIDEtMy4wODQtMS4yNDJjLTEuNjY3LTEuNzE1LTEuNjY3LTQuNDgxIDAtNi4xOTZhNC4xOSA0LjE5IDAgMCAxIDMuMDg0LTEuMjQyIDQuMjU1IDQuMjU1IDAgMCAxIDMuMDgzIDEuMjQyYzEuNjY3IDEuNzE1IDEuNjY3IDQuNDgxIDAgNi4xOTZhNC4yNTQgNC4yNTQgMCAwIDEtMy4wODMgMS4yNDJabTAtNy40NTVhMi42IDIuNiAwIDAgMC0yLjAxNy45MkEzLjIxOCAzLjIxOCAwIDAgMCAxMTEuODMzIDlhMy4xIDMuMSAwIDAgMCAuODE3IDIuMTc5IDIuNjg1IDIuNjg1IDAgMCAwIDIuMDE3LjkxOGMuNzY5IDAgMS41MDItLjMzMyAyLjAxNi0uOTE4YTMuMzM3IDMuMzM3IDAgMCAwIDAtNC4zNzUgMi42IDIuNiAwIDAgMC0yLjAxNi0uOTE5Wm0tMjMuNTM0IDcuMzdWNi4wNzJoLTIuNDY2VjQuODNoNi40MTZ2MS4yNDJIOTIuNnY3LjE4M2gtMS40NjdaTTk5LjEgNC44M3Y4LjQyNWgyLjczM2MxLjYgMCAyLjc4NC0uMzc0IDMuNTUtMS4xNC43NjctLjc2NiAxLjE1LTEuODA0IDEuMTUtMy4xMTUgMC0xLjMxLS4zODMtMi4zMzItMS4xNjYtMy4wNjQtLjc4NC0uNzMyLTEuOTM0LTEuMTA2LTMuNDE3LTEuMTA2SDk5LjFabTIuOTUgNy4xNDloLTEuNDY3di01Ljg5aDEuMzE3YzEuMDUgMCAxLjg1LjIzOSAyLjM2Ny43NjYuNTE2LjUyOC43ODMgMS4yNi43ODMgMi4xOTYgMCAuOTM2LS4yNSAxLjY4NS0uNzgzIDIuMTc5LS41MzQuNDkzLTEuMjY3Ljc0OS0yLjIxNy43NDlabS02LjA2Ny01LjM5NmMtLjAwNS0uODYzLjYxNC0xLjU5NyAxLjQ1LTEuNzJoLjAxN3Y2LjY1NmMuMDA1Ljg2My0uNjE0IDEuNTk3LTEuNDUgMS43MmgtLjAxN1Y2LjU4MlptMTMuMTg0LTEuNzJhMS43MTMgMS43MTMgMCAwIDAtMS40NSAxLjcydjYuNjU1aC4wMTZjLjgzNi0uMTIyIDEuNDU1LS44NTYgMS40NS0xLjcxOVY0Ljg2NGgtLjAxNloiLGZpbGw6IiM2NDc0OTEifSldfSksTz0oKT0+KDAsci5GRCkoInN2ZyIse2lkOiJ4bHMteGxzeC1jc3YtaWNvbiIsImRhdGEtbmFtZSI6IldhcnN0d2EgMSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix2aWV3Qm94OiIwIDAgMjQgMjQiLCJhcmlhLWhpZGRlbiI6ITAsY2hpbGRyZW46WygwLHIuWSkoImRlZnMiLHtjaGlsZHJlbjooMCxyLlkpKCJzdHlsZSIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6IiN4bHMteGxzeC1jc3YtaWNvbiAuY2xzLTF7ZmlsbDojMjA4NTQ5O30jeGxzLXhsc3gtY3N2LWljb24gLmNscy0ye2ZpbGw6IzIxYTU1ODt9I3hscy14bHN4LWNzdi1pY29uIC5jbHMtM3tmaWxsOiMyYWJjNjU7fSN4bHMteGxzeC1jc3YtaWNvbiAuY2xzLTR7ZmlsbDojZmZmO30ifX0pfSksKDAsci5ZKSgicGF0aCIse2NsYXNzTmFtZToiY2xzLTEiLGQ6Ik00LjcsMUEyLjA5LDIuMDksMCwwLDAsMi42MSwzLjEzVjIxLjkxQTIuMDksMi4wOSwwLDAsMCw0LjcsMjRIMTkuM2EyLjA5LDIuMDksMCwwLDAsMi4wOS0yLjA5VjcuM0wxNS4xMywxWiJ9KSwoMCxyLlkpKCJwYXRoIix7Y2xhc3NOYW1lOiJjbHMtMiIsZDoiTTQuNywwQTIuMDksMi4wOSwwLDAsMCwyLjYxLDIuMDlWMjAuODdBMi4wOSwyLjA5LDAsMCwwLDQuNywyM0gxOS4zYTIuMDksMi4wOSwwLDAsMCwyLjA5LTIuMDlWNi4yNkwxNS4xMywwWiJ9KSwoMCxyLlkpKCJwb2x5Z29uIix7Y2xhc3NOYW1lOiJjbHMtMSIscG9pbnRzOiIyMS4zOSAxMS4zIDIxLjM5IDEwLjQ0IDIxLjM5IDYuMjYgMTguMjkgMy4xNiAxNS43NyA1LjY4IDIxLjM5IDExLjMifSksKDAsci5ZKSgicGF0aCIse2NsYXNzTmFtZToiY2xzLTMiLGQ6Ik0yMS4zOSw2LjI2LDE1LjEzLDBWNC4xN2EyLjA5LDIuMDksMCwwLDAsMi4wOSwyLjA5WiJ9KSwoMCxyLlkpKCJwYXRoIix7Y2xhc3NOYW1lOiJjbHMtNCIsZDoiTTEwLjU0LDExLjc5bC0zLTQuMzZoMi41M0wxMiwxMC42M2wxLjg3LTMuMmgyLjQ0bC0yLjk1LDQuMzIsMy4zLDQuODJIMTQuMTNMMTEuOSwxMi44OSw5LjczLDE2LjU3SDcuMzRaIn0pXX0pLFQ9KCk9PigwLHIuRkQpKCJzdmciLHtpZDoid21hLW1wMy1pY29uIiwiZGF0YS1uYW1lIjoiV2Fyc3R3YSAxIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHZpZXdCb3g6IjAgMCAyNCAyNCIsImFyaWEtaGlkZGVuIjohMCxjaGlsZHJlbjpbKDAsci5ZKSgiZGVmcyIse2NoaWxkcmVuOigwLHIuWSkoInN0eWxlIix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDoiI3dtYS1tcDMtaWNvbiAuY2xzLTF7ZmlsbDojNTQyYzc0O30jd21hLW1wMy1pY29uIC5jbHMtMntmaWxsOiM2ODM2OTU7fSN3bWEtbXAzLWljb24gLmNscy0ze2ZpbGw6Izc2NDlhMjt9I3dtYS1tcDMtaWNvbiAuY2xzLTR7ZmlsbDojZmZmO30ifX0pfSksKDAsci5ZKSgicGF0aCIse2NsYXNzTmFtZToiY2xzLTEiLGQ6Ik00LjcsMUEyLjA5LDIuMDksMCwwLDAsMi42MSwzLjEzVjIxLjkxQTIuMDksMi4wOSwwLDAsMCw0LjcsMjRIMTkuM2EyLjA5LDIuMDksMCwwLDAsMi4wOS0yLjA5VjcuM0wxNS4xMywxWiJ9KSwoMCxyLlkpKCJwYXRoIix7Y2xhc3NOYW1lOiJjbHMtMiIsZDoiTTQuNywwQTIuMDksMi4wOSwwLDAsMCwyLjYxLDIuMDlWMjAuODdBMi4wOSwyLjA5LDAsMCwwLDQuNywyM0gxOS4zYTIuMDksMi4wOSwwLDAsMCwyLjA5LTIuMDlWNi4yNkwxNS4xMywwWiJ9KSwoMCxyLlkpKCJwb2x5Z29uIix7Y2xhc3NOYW1lOiJjbHMtMSIscG9pbnRzOiIyMS4zOSAxMS4zIDIxLjM5IDEwLjQ0IDIxLjM5IDYuMjYgMTguMjkgMy4xNiAxNS43NyA1LjY4IDIxLjM5IDExLjMifSksKDAsci5ZKSgicGF0aCIse2NsYXNzTmFtZToiY2xzLTMiLGQ6Ik0yMS4zOSw2LjI2LDE1LjEzLDBWNC4xN2EyLjA5LDIuMDksMCwwLDAsMi4wOSwyLjA5WiJ9KSwoMCxyLlkpKCJwYXRoIix7Y2xhc3NOYW1lOiJjbHMtNCIsZDoiTTEyLDYuODN2Ni4wNmEyLjI2LDIuMjYsMCwwLDAtMS4xNS0uMzIsMi4zLDIuMywwLDEsMCwyLjMsMi4zVjkuMTNoMi4zVjYuODNaIn0pXX0pLHg9KCk9PigwLHIuRkQpKCJzdmciLHtpZDoidHh0LXJ0Zi1pY29uIiwiZGF0YS1uYW1lIjoiV2Fyc3R3YSAxIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHZpZXdCb3g6IjAgMCAyNCAyNCIsImFyaWEtaGlkZGVuIjohMCxjaGlsZHJlbjpbKDAsci5ZKSgiZGVmcyIse2NoaWxkcmVuOigwLHIuWSkoInN0eWxlIix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDoiI3R4dC1ydGYtaWNvbiAuY2xzLTF7ZmlsbDojZGFkYWRhO30jdHh0LXJ0Zi1pY29uIC5jbHMtMntmaWxsOiNmZmY7fSN0eHQtcnRmLWljb24gLmNscy0ze2ZpbGw6IzQ0NWI3MDt9In19KX0pLCgwLHIuWSkoInBhdGgiLHtjbGFzc05hbWU6ImNscy0xIixkOiJNNC43LDFBMi4wOSwyLjA5LDAsMCwwLDIuNjEsMy4xM1YyMS45MUEyLjA5LDIuMDksMCwwLDAsNC43LDI0SDE5LjNhMi4wOSwyLjA5LDAsMCwwLDIuMDktMi4wOVY3LjNMMTUuMTMsMVoifSksKDAsci5ZKSgicGF0aCIse2NsYXNzTmFtZToiY2xzLTIiLGQ6Ik00LjcsMEEyLjA5LDIuMDksMCwwLDAsMi42MSwyLjA5VjIwLjg3QTIuMDksMi4wOSwwLDAsMCw0LjcsMjNIMTkuM2EyLjA5LDIuMDksMCwwLDAsMi4wOS0yLjA5VjYuMjZMMTUuMTMsMFoifSksKDAsci5ZKSgicG9seWdvbiIse2NsYXNzTmFtZToiY2xzLTEiLHBvaW50czoiMjEuMzkgMTEuMyAyMS4zOSAxMC40NCAyMS4zOSA2LjI2IDE4LjI5IDMuMTYgMTUuNzcgNS42OCAyMS4zOSAxMS4zIn0pLCgwLHIuWSkoInBhdGgiLHtjbGFzc05hbWU6ImNscy0yIixkOiJNMjEuMzksNi4yNiwxNS4xMywwVjQuMTdhMi4wOSwyLjA5LDAsMCwwLDIuMDksMi4wOVoifSksKDAsci5ZKSgicGF0aCIse2NsYXNzTmFtZToiY2xzLTMiLGQ6Ik0xMy41NCwxNEgxMC4zMWwtLjUxLjgtLjU4Ljg5YTIuMTIsMi4xMiwwLDAsMC0uMjIuNTEuODguODgsMCwwLDAsMCwuMzYuNjEuNjEsMCwwLDAsLjI2LjM0LDEuNDIsMS40MiwwLDAsMCwuNjguMThsLjA1LjI4SDYuODZsMC0uMjhhMS42NiwxLjY2LDAsMCwwLC42OS0uMjksNi41OSw2LjU5LDAsMCwwLDEtMS4yN2w1LjgzLTguODJoLjM1bDEuMTYsOC41M2MuMDYuNDUuMS43Mi4xMS44MWExLjM4LDEuMzgsMCwwLDAsLjM1Ljc2LDEuMjIsMS4yMiwwLDAsMCwuNzUuMjhsMCwuMjhIMTIuNmwwLS4yOGE0LDQsMCwwLDAsLjc1LS4xMS43Ni43NiwwLDAsMCwuMzEtLjQ1LDIuODUsMi44NSwwLDAsMCwwLTEuMTlabS0uMTEtLjYzTDEzLDkuOTRsLTIuMywzLjRaIn0pXX0pLEk9KCk9PigwLHIuRkQpKCJzdmciLHtpZDoicGRmLWljb24iLCJkYXRhLW5hbWUiOiJXYXJzdHdhIDEiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsdmlld0JveDoiMCAwIDI0IDI0IiwiYXJpYS1oaWRkZW4iOiEwLGNoaWxkcmVuOlsoMCxyLlkpKCJkZWZzIix7Y2hpbGRyZW46KDAsci5ZKSgic3R5bGUiLHtkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOiIjcGRmLWljb24gLmNscy0xe2ZpbGw6I2I2MjQxZTt9I3BkZi1pY29uIC5jbHMtMntmaWxsOiNlZTJhMjQ7fSNwZGYtaWNvbiAuY2xzLTN7ZmlsbDojZmY0MzQzO30jcGRmLWljb24gLmNscy00e2ZpbGw6I2ZmZjt9In19KX0pLCgwLHIuWSkoInBhdGgiLHtjbGFzc05hbWU6ImNscy0xIixkOiJNNC43LDFBMi4wOSwyLjA5LDAsMCwwLDIuNjEsMy4xM1YyMS45MUEyLjA5LDIuMDksMCwwLDAsNC43LDI0SDE5LjNhMi4wOSwyLjA5LDAsMCwwLDIuMDktMi4wOVY3LjNMMTUuMTMsMVoifSksKDAsci5ZKSgicGF0aCIse2NsYXNzTmFtZToiY2xzLTIiLGQ6Ik00LjcsMEEyLjA5LDIuMDksMCwwLDAsMi42MSwyLjA5VjIwLjg3QTIuMDksMi4wOSwwLDAsMCw0LjcsMjNIMTkuM2EyLjA5LDIuMDksMCwwLDAsMi4wOS0yLjA5VjYuMjZMMTUuMTMsMFoifSksKDAsci5ZKSgicG9seWdvbiIse2NsYXNzTmFtZToiY2xzLTEiLHBvaW50czoiMjEuMzkgMTEuMyAyMS4zOSAxMC40NCAyMS4zOSA2LjI2IDE4LjI5IDMuMTYgMTUuNzcgNS42OCAyMS4zOSAxMS4zIn0pLCgwLHIuWSkoInBhdGgiLHtjbGFzc05hbWU6ImNscy0zIixkOiJNMjEuMzksNi4yNiwxNS4xMywwVjQuMTdhMi4wOSwyLjA5LDAsMCwwLDIuMDksMi4wOVoifSksKDAsci5ZKSgicGF0aCIse2NsYXNzTmFtZToiY2xzLTQiLGQ6Ik0xOC4zNywxNC40NmMtLjMxLS41Ni0xLjM5LS43My0xLjg5LS44MWE3Ljg0LDcuODQsMCwwLDAtMS4xOS0uMDhjLS4zMSwwLS42MSwwLS45MiwwbC0uMzMsMGMtLjExLS4xMi0uMjItLjI0LS4zMi0uMzdhMTEuNDUsMTEuNDUsMCwwLDEtMS42Ni0yLjYzLDEwLjUsMTAuNSwwLDAsMCwuMjctMS40Miw1Ljg5LDUuODksMCwwLDAtLjItMi43N2MtLjEyLS4zLS40My0uNjYtLjc4LS40OGExLjQ0LDEuNDQsMCwwLDAtLjU2LDEuMiwzLjcxLDMuNzEsMCwwLDAsLjA1LDEsNi4xNSw2LjE1LDAsMCwwLC4yNSwxYy4wOS4yOS4xOS41Ny4zLjg1LS4wNy4yMy0uMTQuNDQtLjIyLjY2LS4xOS40OC0uMzkuOTQtLjU4LDEuMzlsLS4zLjY0Yy0uMzEuNjgtLjY0LDEuMzQtMSwyQTExLDExLDAsMCwwLDcsMTUuNzNhNC44OSw0Ljg5LDAsMCwwLS45Mi43NCwxLjYsMS42LDAsMCwwLS41MS45NC42LjYsMCwwLDAsLjI0LjUzLDEsMSwwLDAsMCwuODEuMTEsNC40Niw0LjQ2LDAsMCwwLDIuMTMtMS41OEExNi4yMywxNi4yMywwLDAsMCwxMCwxNC43OWgwYTE5LjE1LDE5LjE1LDAsMCwxLDIuNjMtLjYyYy40Mi0uMDcuODYtLjEzLDEuMzEtLjE3YTcuMjEsNy4yMSwwLDAsMCwxLC43OSw0Ljg3LDQuODcsMCwwLDAsLjkyLjQ0LDgsOCwwLDAsMCwxLC4yNSwzLDMsMCwwLDAsLjUyLDBjLjQsMCwxLS4xNiwxLS42NUEuNjYuNjYsMCwwLDAsMTguMzcsMTQuNDZabS05LjUzLjg5Yy0uMTkuMjktLjM3LjU1LS41My43OGEzLjg4LDMuODgsMCwwLDEtMS41OCwxLjQ4LDEuMTcsMS4xNywwLDAsMS0uNDguMDljLS4xNiwwLS4zMi0uMDgtLjMyLS4yN2EuOTMuOTMsMCwwLDEsLjEzLS4zMywxLjcyLDEuNzIsMCwwLDEsLjI4LS4zNyw1LjA2LDUuMDYsMCwwLDEsLjg0LS42OEExMC4xOCwxMC4xOCwwLDAsMSw5LDE1LjE3Wk0xMS4xOCw4LjFhMy40LDMuNCwwLDAsMSwwLS45LDIuNTksMi41OSwwLDAsMSwuMDktLjQyYzAtLjEyLjEyLS40LjI1LS40M3MuMjcuMzkuMjkuNTFhNS42NSw1LjY1LDAsMCwxLS4xNCwyLjI0bC0uMDkuMzNjLS4wNS0uMTQtLjA5LS4yOC0uMTQtLjQyQTcuMTMsNy4xMywwLDAsMSwxMS4xOCw4LjFabTEuNDQsNS43YTIyLjUxLDIyLjUxLDAsMCwwLTIuMjQuNDksNS40Myw1LjQzLDAsMCwwLC41Ni0uOSwxMS42MSwxMS42MSwwLDAsMCwxLTIuMjYsMTAuNzMsMTAuNzMsMCwwLDAsMS41NiwyLjM0LDEuNTQsMS41NCwwLDAsMCwuMTcuMTlabTUuMywxYzAsLjE1LS4zNi4yNC0uNTEuMjdBMi45NCwyLjk0LDAsMCwxLDE2LDE0Ljk0YTQsNCwwLDAsMS0uODYtLjRBNC43OSw0Ljc5LDAsMCwxLDE0LjQsMTRjLjI5LDAsLjU5LDAsLjg5LDBzLjYsMCwuOS4wNmEzLjIsMy4yLDAsMCwxLDEuNjMuNjJDMTcuOTEsMTQuNjksMTcuOTMsMTQuNzUsMTcuOTIsMTQuODFaIn0pXX0pLE49KCk9PigwLHIuRkQpKCJzdmciLHtpZDoibXBnLW1wNC1pY29uIiwiZGF0YS1uYW1lIjoiV2Fyc3R3YSAxIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHZpZXdCb3g6IjAgMCAyNCAyNCIsImFyaWEtaGlkZGVuIjohMCxjaGlsZHJlbjpbKDAsci5ZKSgiZGVmcyIse2NoaWxkcmVuOigwLHIuWSkoInN0eWxlIix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDoiI21wZy1tcDQtaWNvbiAuY2xzLTF7ZmlsbDojMTMyYjQwO30jbXBnLW1wNC1pY29uIC5jbHMtMntmaWxsOiMxYzNjNTc7fSNtcGctbXA0LWljb24gLmNscy0ze2ZpbGw6IzMzNTI2ODt9I21wZy1tcDQtaWNvbiAuY2xzLTR7ZmlsbDojZmZmO30ifX0pfSksKDAsci5ZKSgicGF0aCIse2NsYXNzTmFtZToiY2xzLTEiLGQ6Ik00LjcsMUEyLjA5LDIuMDksMCwwLDAsMi42MSwzLjEzVjIxLjkxQTIuMDksMi4wOSwwLDAsMCw0LjcsMjRIMTkuM2EyLjA5LDIuMDksMCwwLDAsMi4wOS0yLjA5VjcuM0wxNS4xMywxWiJ9KSwoMCxyLlkpKCJwYXRoIix7Y2xhc3NOYW1lOiJjbHMtMiIsZDoiTTQuNywwQTIuMDksMi4wOSwwLDAsMCwyLjYxLDIuMDlWMjAuODdBMi4wOSwyLjA5LDAsMCwwLDQuNywyM0gxOS4zYTIuMDksMi4wOSwwLDAsMCwyLjA5LTIuMDlWNi4yNkwxNS4xMywwWiJ9KSwoMCxyLlkpKCJwb2x5Z29uIix7Y2xhc3NOYW1lOiJjbHMtMSIscG9pbnRzOiIyMS4zOSAxMS4zIDIxLjM5IDEwLjQ0IDIxLjM5IDYuMjYgMTguMjkgMy4xNiAxNS43NyA1LjY4IDIxLjM5IDExLjMifSksKDAsci5ZKSgicGF0aCIse2NsYXNzTmFtZToiY2xzLTMiLGQ6Ik0yMS4zOSw2LjI2LDE1LjEzLDBWNC4xN2EyLjA5LDIuMDksMCwwLDAsMi4wOSwyLjA5WiJ9KSwoMCxyLlkpKCJwYXRoIix7Y2xhc3NOYW1lOiJjbHMtNCIsZDoiTTE0LjY5LDExLjE5VjkuMzFhLjU0LjU0LDAsMCwwLS41NC0uNTRINy42OWEuNTQuNTQsMCwwLDAtLjUzLjU0djUuMzhhLjU0LjU0LDAsMCwwLC41My41NGg2LjQ2YS41NC41NCwwLDAsMCwuNTQtLjU0VjEyLjgxTDE2Ljg0LDE1VjlaIn0pXX0pLEw9KCk9PigwLHIuRkQpKCJzdmciLHtpZDoiZmx2LWljb24iLCJkYXRhLW5hbWUiOiJXYXJzdHdhIDEiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsdmlld0JveDoiMCAwIDI0IDI0IiwiYXJpYS1oaWRkZW4iOiEwLGNoaWxkcmVuOlsoMCxyLlkpKCJkZWZzIix7Y2hpbGRyZW46KDAsci5ZKSgic3R5bGUiLHtkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOiIjZmx2LWljb24gLmNscy0xe2ZpbGw6IzliMWMyNDt9I2Zsdi1pY29uIC5jbHMtMntmaWxsOiNjZjFmMjY7fSNmbHYtaWNvbiAuY2xzLTN7ZmlsbDojZjIzMzQxO30jZmx2LWljb24gLmNscy00e2ZpbGw6I2ZmZjt9In19KX0pLCgwLHIuWSkoInBhdGgiLHtjbGFzc05hbWU6ImNscy0xIixkOiJNNC43LDFBMi4wOSwyLjA5LDAsMCwwLDIuNjEsMy4xM1YyMS45MUEyLjA5LDIuMDksMCwwLDAsNC43LDI0SDE5LjNhMi4wOSwyLjA5LDAsMCwwLDIuMDktMi4wOVY3LjNMMTUuMTMsMVoifSksKDAsci5ZKSgicGF0aCIse2NsYXNzTmFtZToiY2xzLTIiLGQ6Ik00LjcsMEEyLjA5LDIuMDksMCwwLDAsMi42MSwyLjA5VjIwLjg3QTIuMDksMi4wOSwwLDAsMCw0LjcsMjNIMTkuM2EyLjA5LDIuMDksMCwwLDAsMi4wOS0yLjA5VjYuMjZMMTUuMTMsMFoifSksKDAsci5ZKSgicG9seWdvbiIse2NsYXNzTmFtZToiY2xzLTEiLHBvaW50czoiMjEuMzkgMTEuMyAyMS4zOSAxMC40NCAyMS4zOSA2LjI2IDE4LjI5IDMuMTYgMTUuNzcgNS42OCAyMS4zOSAxMS4zIn0pLCgwLHIuWSkoInBhdGgiLHtjbGFzc05hbWU6ImNscy0zIixkOiJNMjEuMzksNi4yNiwxNS4xMywwVjQuMTdhMi4wOSwyLjA5LDAsMCwwLDIuMDksMi4wOVoifSksKDAsci5ZKSgicGF0aCIse2lkOiJwYXRoMzgyMCIsY2xhc3NOYW1lOiJjbHMtNCIsZDoiTTcuNDgsMTYuNHYtMWguMTdhMi40NywyLjQ3LDAsMCwwLDEuNzgtLjgxLDguNSw4LjUsMCwwLDAsMS43NS0zLjI3LDEwLjkyLDEwLjkyLDAsMCwxLDEuNDQtMi44QTQuNTQsNC41NCwwLDAsMSwxNC45LDYuODVhNS41Myw1LjUzLDAsMCwxLDEuNDctLjI3aC4xNVY4LjYzaC0uMTdBMi44MiwyLjgyLDAsMCwwLDE1LjE0LDlhNC4yNyw0LjI3LDAsMCwwLTEuNCwxLjcyYy0uMTIuMjUtLjE4LjIzLjc2LjIzaC44M1YxM0gxMi43OWwtLjE0LjMxYTEzLjQ1LDEzLjQ1LDAsMCwxLTEuMTksMi4xMiw0LjQ4LDQuNDgsMCwwLDEtMy4zMSwxLjlsLS40OCwwSDcuNDh2LTFaIn0pXX0pLFA9KCk9PigwLHIuRkQpKCJzdmciLHtpZDoiZG9jLWRvY3gtaWNvbiIsImRhdGEtbmFtZSI6IldhcnN0d2EgMSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix2aWV3Qm94OiIwIDAgMjQgMjQiLCJhcmlhLWhpZGRlbiI6ITAsY2hpbGRyZW46WygwLHIuWSkoImRlZnMiLHtjaGlsZHJlbjooMCxyLlkpKCJzdHlsZSIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6IiNkb2MtZG9jeC1pY29uIC5jbHMtMXtmaWxsOiMxNjNkNzU7fSNkb2MtZG9jeC1pY29uIC5jbHMtMntmaWxsOiMyZDRiOGU7fSNkb2MtZG9jeC1pY29uIC5jbHMtM3tmaWxsOiMzNjY2YWQ7fSNkb2MtZG9jeC1pY29uIC5jbHMtNHtmaWxsOiNmZmY7fSNkb2MtZG9jeC1pY29uIC5jbHMtNXtmaWxsOiNhMGJkZTA7fSJ9fSl9KSwoMCxyLlkpKCJwYXRoIix7Y2xhc3NOYW1lOiJjbHMtMSIsZDoiTTQuNywxQTIuMDksMi4wOSwwLDAsMCwyLjYxLDMuMTNWMjEuOTFBMi4wOSwyLjA5LDAsMCwwLDQuNywyNEgxOS4zYTIuMDksMi4wOSwwLDAsMCwyLjA5LTIuMDlWNy4zTDE1LjEzLDFaIn0pLCgwLHIuWSkoInBhdGgiLHtjbGFzc05hbWU6ImNscy0yIixkOiJNNC43LDBBMi4wOSwyLjA5LDAsMCwwLDIuNjEsMi4wOVYyMC44N0EyLjA5LDIuMDksMCwwLDAsNC43LDIzSDE5LjNhMi4wOSwyLjA5LDAsMCwwLDIuMDktMi4wOVY2LjI2TDE1LjEzLDBaIn0pLCgwLHIuWSkoInBvbHlnb24iLHtjbGFzc05hbWU6ImNscy0xIixwb2ludHM6IjIxLjM5IDExLjMgMjEuMzkgMTAuNDQgMjEuMzkgNi4yNiAxOC4yOSAzLjE2IDE1Ljc3IDUuNjggMjEuMzkgMTEuMyJ9KSwoMCxyLlkpKCJwYXRoIix7Y2xhc3NOYW1lOiJjbHMtMyIsZDoiTTIxLjM5LDYuMjYsMTUuMTMsMFY0LjE3YTIuMDksMi4wOSwwLDAsMCwyLjA5LDIuMDlaIn0pLCgwLHIuWSkoInBhdGgiLHtjbGFzc05hbWU6ImNscy00IixkOiJNNS41MSw3LjQzaDIuMmwxLjQ2LDUuODZoMGwxLjkxLTUuODZIMTNsMS45LDZoMGwxLjUzLTZoMmwtMi42OCw5LjE0SDE0bC0yLTYuMzNoMGwtMiw2LjMzSDguMjNaIn0pLCgwLHIuWSkoInBvbHlnb24iLHtjbGFzc05hbWU6ImNscy01Iixwb2ludHM6IjE4LjI3IDguMTcgMTguNDggNy40MyAxNy41MiA3LjQzIDE4LjI3IDguMTcifSldfSksTT0oKT0+KDAsci5GRCkoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjI0IixoZWlnaHQ6IjI0Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGNoaWxkcmVuOlsoMCxyLlkpKCJwYXRoIix7ZmlsbDoiIzAwOTBlMCIsZDoiTTQuNywxQTIuMDksMi4wOSwwLDAsMCwyLjYxLDMuMTNWMjEuOTFBMi4wOSwyLjA5LDAsMCwwLDQuNywyNEgxOS4zYTIuMDksMi4wOSwwLDAsMCwyLjA5LTIuMDlWNy4zTDE1LjEzLDFaIn0pLCgwLHIuWSkoInBhdGgiLHtmaWxsOiIjMGFiY2ZmIixkOiJNNC43LDBBMi4wOSwyLjA5LDAsMCwwLDIuNjEsMi4wOVYyMC44N0EyLjA5LDIuMDksMCwwLDAsNC43LDIzSDE5LjNhMi4wOSwyLjA5LDAsMCwwLDIuMDktMi4wOVY2LjI2TDE1LjEzLDBaIn0pLCgwLHIuWSkoInBvbHlnb24iLHtmaWxsOiIjMDA5MGUwIixwb2ludHM6IjIxLjM5IDExLjMgMjEuMzkgMTAuNDQgMjEuMzkgNi4yNiAxOC4yOSAzLjE2IDE1Ljc3IDUuNjggMjEuMzkgMTEuMyJ9KSwoMCxyLlkpKCJwYXRoIix7ZmlsbDoiIzRhZGRmZiIsZDoiTTIxLjM5LDYuMjYsMTUuMTMsMFY0LjE3YTIuMDksMi4wOSwwLDAsMCwyLjA5LDIuMDlaIn0pLCgwLHIuWSkoInBhdGgiLHtmaWxsOiIjZmZmIixkOiJNOC44MiwxMS42NmwyLjI3LDIuNzQsMy4xOC00LjEsNC4xLDUuNDZINS42M1oifSldfSksUj0oKT0+KDAsci5ZKSgic3ZnIix7Y2xhc3NOYW1lOiJjaXJjdWxhciBsb2FkZXItaWNvbiIsdmlld0JveDoiMjUgMjUgNTAgNTAiLCJhcmlhLWhpZGRlbiI6ITAsY2hpbGRyZW46KDAsci5ZKSgiY2lyY2xlIix7Y2xhc3NOYW1lOiJwYXRoIixjeDo1MCxjeTo1MCxyOjIwLGZpbGw6Im5vbmUiLHN0cm9rZToiI2ZmZiIsc3Ryb2tlV2lkdGg6MixzdHJva2VNaXRlcmxpbWl0OjEwfSl9KSxEPWU9PntsZXR7d2lkdGg6dD0yOCxoZWlnaHQ6bj0yOH09ZTtyZXR1cm4oMCxyLkZEKSgic3ZnIix7Y2xhc3NOYW1lOiJjaXJjdWxhciBsb2FkZXItaWNvbiIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDp0LGhlaWdodDpuLHZpZXdCb3g6IjAgMCAyOCAyOCIsZmlsbDoibm9uZSIsc3R5bGU6e3dpZHRoOnQsaGVpZ2h0Om59LGNoaWxkcmVuOlsoMCxyLlkpKCJwYXRoIix7ZDoiTTE2LjkzMTMgNy4wOTUyOUMxMy4xMTg1IDUuNDc2ODMgOC43MTU1NCA3LjI1NTc0IDcuMDk3MDggMTEuMDY4NkM1LjQ3ODYxIDE0Ljg4MTUgNy4yNTc1MiAxOS4yODQ0IDExLjA3MDQgMjAuOTAyOUwxMC4wOTM2IDIzLjIwNDFDNS4wMDk3NCAyMS4wNDYyIDIuNjM3ODcgMTUuMTc1NiA0Ljc5NTgxIDEwLjA5MThDNi45NTM3NiA1LjAwNzk2IDEyLjgyNDQgMi42MzYwOCAxNy45MDgyIDQuNzk0MDNDMTguNTQzNiA1LjA2Mzc3IDE4Ljg0MDEgNS43OTc2IDE4LjU3MDQgNi40MzMwOEMxOC4zMDA2IDcuMDY4NTUgMTcuNTY2OCA3LjM2NTA0IDE2LjkzMTMgNy4wOTUyOVoiLGZpbGw6InVybCgjcGFpbnQwX2xpbmVhcl8yMDY5XzMwNTcxKSJ9KSwoMCxyLlkpKCJwYXRoIix7ZDoiTTExLjA3MDYgMjAuOTAyOEMxNC44ODM1IDIyLjUyMTIgMTkuMjg2NCAyMC43NDIzIDIwLjkwNDkgMTYuOTI5NUMyMi41MjMzIDEzLjExNjYgMjAuNzQ0NCA4LjcxMzY0IDE2LjkzMTYgNy4wOTUxOEMxNi4yOTYxIDYuODI1NDQgMTUuOTk5NiA2LjA5MTYxIDE2LjI2OTQgNS40NTYxNEMxNi41MzkxIDQuODIwNjYgMTcuMjcyOSA0LjUyNDE4IDE3LjkwODQgNC43OTM5MkMyMi45OTIyIDYuOTUxODcgMjUuMzY0MSAxMi44MjI1IDIzLjIwNjEgMTcuOTA2M0MyMS4wNDgyIDIyLjk5MDEgMTUuMTc3NiAyNS4zNjIgMTAuMDkzOCAyMy4yMDRMMTEuMDcwNiAyMC45MDI4WiIsZmlsbDoidXJsKCNwYWludDFfbGluZWFyXzIwNjlfMzA1NzEpIn0pLCgwLHIuRkQpKCJkZWZzIix7Y2hpbGRyZW46WygwLHIuRkQpKCJsaW5lYXJHcmFkaWVudCIse2lkOiJwYWludDBfbGluZWFyXzIwNjlfMzA1NzEiLHgxOiIxMS4wNzA0Iix5MToiMjAuOTAyOSIseDI6IjE3LjQxOTgiLHkyOiI1Ljk0NDY2IixncmFkaWVudFVuaXRzOiJ1c2VyU3BhY2VPblVzZSIsY2hpbGRyZW46WygwLHIuWSkoInN0b3AiLHtzdG9wQ29sb3I6IiMwMjdBRkYiLHN0b3BPcGFjaXR5OiIwLjUifSksKDAsci5ZKSgic3RvcCIse29mZnNldDoiMSIsc3RvcENvbG9yOiIjMDI3QUZGIn0pXX0pLCgwLHIuRkQpKCJsaW5lYXJHcmFkaWVudCIse2lkOiJwYWludDFfbGluZWFyXzIwNjlfMzA1NzEiLHgxOiIxNy40MiIseTE6IjUuOTQ0NTUiLHgyOiIxMS4wNzA2Iix5MjoiMjAuOTAyOCIsZ3JhZGllbnRVbml0czoidXNlclNwYWNlT25Vc2UiLGNoaWxkcmVuOlsoMCxyLlkpKCJzdG9wIix7c3RvcENvbG9yOiIjMDI3QUZGIixzdG9wT3BhY2l0eToiMCJ9KSwoMCxyLlkpKCJzdG9wIix7b2Zmc2V0OiIxIixzdG9wQ29sb3I6IiMwMjdBRkYiLHN0b3BPcGFjaXR5OiIwLjUifSldfSldfSldfSl9LEY9KCk9PigwLHIuRkQpKCJzdmciLHtjbGFzc05hbWU6ImFsZXJ0LWljb24iLGZpbGw6IiMwMDAwMDAiLGhlaWdodDoyNCx2aWV3Qm94OiIwIDAgMjQgMjQiLHdpZHRoOjI0LHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjohMCxjaGlsZHJlbjpbKDAsci5ZKSgicGF0aCIse2Q6Ik0wIDBoMjR2MjRIMFYweiIsZmlsbDoibm9uZSJ9KSwoMCxyLlkpKCJwYXRoIix7ZDoiTTExIDE1aDJ2MmgtMnptMC04aDJ2NmgtMnptLjk5LTVDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoifSldfSksaj0oKT0+KDAsci5GRCkoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MjQsaGVpZ2h0OjI0LHZpZXdCb3g6IjAgMCAyNCAyNCIsY2hpbGRyZW46WygwLHIuWSkoInBhdGgiLHtkOiJNMCAwaDI0djI0SDB6IixmaWxsOiJub25lIn0pLCgwLHIuWSkoInBhdGgiLHtmaWxsOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKSIsZDoiTTEwIDE2LjVsNi00LjUtNi00LjV2OXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6In0pXX0pLEI9KCk9PigwLHIuWSkoInN2ZyIse2NsYXNzTmFtZToiYm90cy1pY29uIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGhlaWdodDoiMjQiLHZpZXdCb3g6IjAgLTk2MCA5NjAgOTYwIix3aWR0aDoiMjQiLGNoaWxkcmVuOigwLHIuWSkoInBhdGgiLHtkOiJNODAtODB2LTcyMHEwLTMzIDIzLjUtNTYuNVQxNjAtODgwaDY0MHEzMyAwIDU2LjUgMjMuNVQ4ODAtODAwdjI0MGgtODB2LTI0MEgxNjB2NTI1bDQ2LTQ1aDM5NHY4MEgyNDBMODAtODBabTgwLTI0MHYtNDgwIDQ4MFpNNzYwLTQwdi0yMDBoLTgwdi0yNDBoMjAwbC02OCAxNjBoODhMNzYwLTQwWiJ9KX0pLFY9KCk9PigwLHIuRkQpKCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjI0LGhlaWdodDoyNCx2aWV3Qm94OiIwIDAgMjQgMjQiLGNoaWxkcmVuOlsoMCxyLlkpKCJwYXRoIix7ZDoiTTAgMGgyNHYyNEgweiIsZmlsbDoibm9uZSJ9KSwoMCxyLlkpKCJwYXRoIix7ZDoiTTEzIDNjLTQuOTcgMC05IDQuMDMtOSA5SDFsMy44OSAzLjg5LjA3LjE0TDkgMTJINmMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3LTMuMTMgNy03IDdjLTEuOTMgMC0zLjY4LS43OS00Ljk0LTIuMDZsLTEuNDIgMS40MkM4LjI3IDE5Ljk5IDEwLjUxIDIxIDEzIDIxYzQuOTcgMCA5LTQuMDMgOS05cy00LjAzLTktOS05em0tMSA1djVsNC4yOCAyLjU0LjcyLTEuMjEtMy41LTIuMDhWOEgxMnoifSldfSksVT0oKT0+KDAsci5ZKSgic3ZnIix7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoyNCxoZWlnaHQ6MjQsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJjdXJyZW50Q29sb3IiLGNoaWxkcmVuOigwLHIuWSkoInBhdGgiLHtkOiJNNyAxMEwxMiAxNUwxNyAxMEw3IDEwWiJ9KX0pLHo9KCk9PigwLHIuRkQpKCJzdmciLHt2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46WygwLHIuWSkoImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMiIsZmlsbDoiIzUzQ0Y3NCJ9KSwoMCxyLlkpKCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGNsaXBSdWxlOiJldmVub2RkIixkOiJtMTYuNDUgOS4wMS0xLjE5LS45NmEuMi4yIDAgMCAwLS4xMy0uMDUuMi4yIDAgMCAwLS4xNC4wNmwtNC4zMiA1LjY3LTEuNzUtMS43MmMtLjA1LS4wNC0uMS0uMTMtLjItLjEzcy0uMTQuMDctLjIuMTJsLS45MyAxLjAyYS45NS45NSAwIDAgMS0uMDUuMDQuMjIuMjIgMCAwIDAtLjA0LjEzYzAgLjA1LjAyLjA5LjA0LjEzbC4wNi4wNSAzLjA3IDMuMDFjLjA1LjA2LjEuMTIuMi4xMi4wOCAwIC4xNi0uMS4yLS4xNGw1LjM5LTcuMDhhLjIyLjIyIDAgMCAwIC4wNC0uMTNjMC0uMDUtLjAyLS4xLS4wNS0uMTRaIixmaWxsOiIjZmZmIn0pXX0pLEg9KCk9PigwLHIuWSkoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLGZpbGw6Im5vbmUiLGNoaWxkcmVuOigwLHIuWSkoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0xMi41ODMzIDE1LjkxNjZMMS43NDk5MiAxNS45MTY2QzAuODMzMjUyIDE1LjkxNjYgMC4wODMyNTIgMTUuMTY2NiAwLjA4MzI1MiAxNC4yNDk5TDAuMDgzMjUyIDMuNDE2NTlMMS43NDk5MiAzLjQxNjU5TDEuNzQ5OTIgMTQuMjQ5OUwxMi41ODMzIDE0LjI0OTlWMTUuOTE2NlpNMTQuMjQ5OSAxMi41ODMzTDUuMDgzMjUgMTIuNTgzM0M0LjE2NjU5IDEyLjU4MzMgMy40MTY1OSAxMS44MzMzIDMuNDE2NTkgMTAuOTE2NkwzLjQxNjU5IDEuNzQ5OTJDMy40MTY1OSAwLjgzMzI1MiA0LjE2NjU5IDAuMDgzMjUyIDUuMDgzMjUgMC4wODMyNTJMMTQuMjQ5OSAwLjA4MzI1MkMxNS4xNjY2IDAuMDgzMjUyIDE1LjkxNjYgMC44MzMyNTIgMTUuOTE2NiAxLjc0OTkyTDE1LjkxNjYgMTAuOTE2NkMxNS45MTY2IDExLjgzMzMgMTUuMTY2NiAxMi41ODMzIDE0LjI0OTkgMTIuNTgzM1pNMTQuMjQ5OSAxLjc0OTkyTDUuMDgzMjUgMS43NDk5Mkw1LjA4MzI1IDEwLjkxNjZMMTQuMjQ5OSAxMC45MTY2TDE0LjI0OTkgMS43NDk5MloiLGZpbGw6IiM4Nzk2QUYifSl9KSwkPSgpPT4oMCxyLlkpKCJzdmciLHt3aWR0aDoiNTQiLGhlaWdodDoiNTQiLHZpZXdCb3g6IjAgMCA1NCA1NCIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjooMCxyLlkpKCJwYXRoIix7ZDoiTTI2Ljk5OTkgMC4zMzMzNDFDMTIuMjc5OSAwLjMzMzM0MiAwLjMzMzI1MyAxMi4yOCAwLjMzMzI1NCAyN0MwLjMzMzI1NiA0MS43MiAxMi4yNzk5IDUzLjY2NjcgMjYuOTk5OSA1My42NjY3QzQxLjcxOTkgNTMuNjY2NyA1My42NjY2IDQxLjcyIDUzLjY2NjYgMjdDNTMuNjY2NiAxMi4yOCA0MS43MTk5IDAuMzMzMzQgMjYuOTk5OSAwLjMzMzM0MVpNMjYuOTk5OSA0OC4zMzMzQzE1LjIzOTkgNDguMzMzMyA1LjY2NjU5IDM4Ljc2IDUuNjY2NTkgMjdDNS42NjY1OSAxNS4yNCAxNS4yMzk5IDUuNjY2NjggMjYuOTk5OSA1LjY2NjY3QzM4Ljc1OTkgNS42NjY2NyA0OC4zMzMzIDE1LjI0IDQ4LjMzMzMgMjdDNDguMzMzMyAzOC43NiAzOC43NTk5IDQ4LjMzMzMgMjYuOTk5OSA0OC4zMzMzWk0zOS4yMzk5IDE1LjIxMzNMMjEuNjY2NiAzMi43ODY3TDE0Ljc1OTkgMjUuOTA2N0wxMC45OTk5IDI5LjY2NjdMMjEuNjY2NiA0MC4zMzMzTDQyLjk5OTkgMTlMMzkuMjM5OSAxNS4yMTMzWiIsZmlsbDoiIzM0Qjg1NyJ9KX0pLFk9KCk9PigwLHIuWSkoInN2ZyIse3dpZHRoOiIyNCIsaGVpZ2h0OiIyNCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOigwLHIuWSkoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGQ6Ik03LjAwMDA4IDE3LjgzMzNDNy4wMDAwOCAxOC43NSA3Ljc1MDA4IDE5LjUgOC42NjY3NSAxOS41SDE1LjMzMzRDMTYuMjUwMSAxOS41IDE3LjAwMDEgMTguNzUgMTcuMDAwMSAxNy44MzMzVjcuODMzMzNINy4wMDAwOFYxNy44MzMzWk04LjY2Njc1IDkuNUgxNS4zMzM0VjE3LjgzMzNIOC42NjY3NVY5LjVaTTE0LjkxNjcgNS4zMzMzM0wxNC4wODM0IDQuNUg5LjkxNjc1TDkuMDgzNDEgNS4zMzMzM0g2LjE2Njc1VjdIMTcuODMzNFY1LjMzMzMzSDE0LjkxNjdaIn0pfSkscT0oKT0+KDAsci5ZKSgic3ZnIix7d2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46KDAsci5ZKSgiZyIse2lkOiJFeWUiLGNoaWxkcmVuOigwLHIuWSkoInBhdGgiLHtpZDoiVmVjdG9yIixkOiJNOC4wMDAxNiAxMkM1LjQ3MzUgMTIgMy4yMjAxNiAxMC41OCAyLjEyMDE2IDguMzMzMzhDMy4yMjAxNiA2LjA4NjcxIDUuNDczNDkgNC42NjY3MSA4LjAwMDE2IDQuNjY2NzFDMTAuNTI2OCA0LjY2NjcxIDEyLjc4MDIgNi4wODY3MSAxMy44ODAyIDguMzMzMzdDMTIuNzgwMiAxMC41OCAxMC41MjY4IDEyIDguMDAwMTYgMTJaTTguMDAwMTYgMTMuMzMzNEMxMS4zMzM1IDEzLjMzMzQgMTQuMTgwMiAxMS4yNiAxNS4zMzM1IDguMzMzMzdDMTQuMTgwMiA1LjQwNjcxIDExLjMzMzUgMy4zMzMzNyA4LjAwMDE2IDMuMzMzMzdDNC42NjY4MyAzLjMzMzM3IDEuODIwMTYgNS40MDY3MSAwLjY2NjgyOSA4LjMzMzM4QzEuODIwMTYgMTEuMjYgNC42NjY4MyAxMy4zMzM0IDguMDAwMTYgMTMuMzMzNFpNOC4wMDAxNiAxMEM3LjA4MDE2IDEwIDYuMzMzNSA5LjI1MzM3IDYuMzMzNSA4LjMzMzM3QzYuMzMzNSA3LjQxMzM3IDcuMDgwMTYgNi42NjY3MSA4LjAwMDE2IDYuNjY2NzFDOC45MjAxNiA2LjY2NjcxIDkuNjY2ODMgNy40MTMzNyA5LjY2NjgzIDguMzMzMzdDOS42NjY4MyA5LjI1MzM3IDguOTIwMTYgMTAgOC4wMDAxNiAxMFpNOC4wMDAxNiAxMS4zMzM0QzkuNjUzNSAxMS4zMzM0IDExLjAwMDIgOS45ODY3MSAxMS4wMDAyIDguMzMzMzdDMTEuMDAwMiA2LjY4MDA0IDkuNjUzNSA1LjMzMzM3IDguMDAwMTYgNS4zMzMzN0M2LjM0NjgzIDUuMzMzMzcgNS4wMDAxNiA2LjY4MDA0IDUuMDAwMTYgOC4zMzMzN0M1LjAwMDE2IDkuOTg2NzEgNi4zNDY4MyAxMS4zMzM0IDguMDAwMTYgMTEuMzMzNFoiLGZpbGw6IiM4Nzk2QUYifSl9KX0pLFc9KCk9PigwLHIuWSkoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjE2IixoZWlnaHQ6IjE2Iix2aWV3Qm94OiIwIDAgMTYgMTYiLGZpbGw6Im5vbmUiLGNoaWxkcmVuOigwLHIuWSkoInBhdGgiLHtkOiJNMTIuNDM2OSA1LjY3MjI1TDExLjc4NDYgNC4xNTUzN0wxMC4yMDcxIDMuNDU3NjFMMTEuNzg0NiAyLjc3NTAyTDEyLjQzNjkgMS4zMzM5OEwxMy4wODkyIDIuNzc1MDJMMTQuNjY2NyAzLjQ1NzYxTDEzLjA4OTIgNC4xNTUzN0wxMi40MzY5IDUuNjcyMjVaTTEyLjQzNjkgMTQuNjk3N0wxMS43ODQ2IDEzLjI0MTVMMTAuMjA3MSAxMi41NTg5TDExLjc4NDYgMTEuODc2M0wxMi40MzY5IDEwLjM0NDJMMTMuMDg5MiAxMS44NzYzTDE0LjY2NjcgMTIuNTU4OUwxMy4wODkyIDEzLjI0MTVMMTIuNDM2OSAxNC42OTc3Wk01Ljc3NzgyIDEyLjM2MTdMNC4zODIyOSA5LjM3MzQyTDEuMzMzMzcgOC4wMDgyNEw0LjM4MjI5IDYuNjQzMDVMNS43Nzc4MiAzLjY2OTk3TDcuMTg4NTEgNi42NDMwNUwxMC4yMjIzIDguMDA4MjRMNy4xODg1MSA5LjM3MzQyTDUuNzc3ODIgMTIuMzYxN1oiLGZpbGw6IiMwNTY2RkYifSl9KSxHPSgpPT4oMCxyLlkpKCJzdmciLHt3aWR0aDoiMjQiLGhlaWdodDoiMjQiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjooMCxyLlkpKCJwYXRoIix7ZDoiTTExIDE1SDEzVjE3SDExVjE1Wk0xMSA3SDEzTDEzIDEzSDExTDExIDdaTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyQzIgMTcuNTIgNi40NyAyMiAxMS45OSAyMkMxNy41MiAyMiAyMiAxNy41MiAyMiAxMkMyMiA2LjQ4IDE3LjUyIDIgMTEuOTkgMlpNMTIgMjBDNy41OCAyMCA0IDE2LjQyIDQgMTJDNCA3LjU4IDcuNTggNCAxMiA0QzE2LjQyIDQgMjAgNy41OCAyMCAxMkMyMCAxNi40MiAxNi40MiAyMCAxMiAyMFoifSl9KSxRPSgpPT4oMCxyLlkpKCJzdmciLHt3aWR0aDoiMjQiLGhlaWdodDoiMjQiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjbGFzc05hbWU6ImRpcmVjdGlvbmFsLWljb24iLGNoaWxkcmVuOigwLHIuWSkoInBhdGgiLHtkOiJNNS43ODM5MyAxMC43NzMzTDMuNDc3ODUgNi4xNjExM0MyLjM2ODUzIDMuOTQyNSAxLjgxMzg3IDIuODMzMTggMi4zMjM1MyAyLjMyMzUzQzIuODMzMTggMS44MTM4NyAzLjk0MjUgMi4zNjg1MyA2LjE2MTEzIDMuNDc3ODVMMTkuNTc2OSAxMC4xODU3QzIxLjEzOCAxMC45NjYzIDIxLjkxODUgMTEuMzU2NiAyMS45MTg1IDExLjk3NDZDMjEuOTE4NSAxMi41OTI2IDIxLjEzOCAxMi45ODI5IDE5LjU3NjkgMTMuNzYzNEw2LjE2MTEzIDIwLjQ3MTNDMy45NDI1IDIxLjU4MDYgMi44MzMxOCAyMi4xMzUzIDIuMzIzNTMgMjEuNjI1NkMxLjgxMzg3IDIxLjExNiAyLjM2ODUzIDIwLjAwNjcgMy40Nzc4NSAxNy43ODhMNS43ODUyMiAxMy4xNzMzSDEyLjYzNjdDMTMuMjk5NSAxMy4xNzMzIDEzLjgzNjcgMTIuNjM2IDEzLjgzNjcgMTEuOTczM0MxMy44MzY3IDExLjMxMDUgMTMuMjk5NSAxMC43NzMzIDEyLjYzNjcgMTAuNzczM0g1Ljc4MzkzWiJ9KX0pLEs9KCk9PigwLHIuWSkoInN2ZyIse3dpZHRoOiIyOCIsaGVpZ2h0OiIyOCIsdmlld0JveDoiMCAwIDI4IDI4IixmaWxsOiJub25lIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOigwLHIuWSkoInBhdGgiLHtpZDoiaG9tZSIsZDoiTTQuNjY2NjMgMjQuNVYxMC41TDE0IDMuNUwyMy4zMzMzIDEwLjVWMjQuNUgxNi4zMzMzVjE2LjMzMzNIMTEuNjY2NlYyNC41SDQuNjY2NjNaIixmaWxsOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKSJ9KX0pLFo9KCk9PigwLHIuRkQpKCJzdmciLHt3aWR0aDoiMjQiLGhlaWdodDoiMjQiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpbKDAsci5ZKSgicGF0aCIse2NsYXNzTmFtZToib3V0bGluZSIsZDoiTTMuNjAwMSAyMC4zOTk2VjUuMTc0NjFDMy42MDAxIDQuNzQxNDggMy43NTQzMiA0LjM3MDcgNC4wNjI3NSA0LjA2MjI3QzQuMzcxMTkgMy43NTM4MyA0Ljc0MTk3IDMuNTk5NjEgNS4xNzUxIDMuNTk5NjFIMTguODI1MUMxOS4yNTgyIDMuNTk5NjEgMTkuNjI5IDMuNzUzODMgMTkuOTM3NCA0LjA2MjI3QzIwLjI0NTkgNC4zNzA3IDIwLjQwMDEgNC43NDE0OCAyMC40MDAxIDUuMTc0NjFWMTUuNjc0NkMyMC40MDAxIDE2LjEwNzcgMjAuMjQ1OSAxNi40Nzg1IDE5LjkzNzQgMTYuNzg3QzE5LjYyOSAxNy4wOTU0IDE5LjI1ODIgMTcuMjQ5NiAxOC44MjUxIDE3LjI0OTZINi43NTAxTDMuNjAwMSAyMC4zOTk2Wk02LjA5Mzg1IDE1LjY3NDZIMTguODI1MVY1LjE3NDYxSDUuMTc1MVYxNi41OTM0TDYuMDkzODUgMTUuNjc0NloiLGZpbGw6IiM2NDc0OTEifSksKDAsci5ZKSgicGF0aCIse2NsYXNzTmFtZToiZmlsbCIsZDoiTTMuNjAwMSAyMC4zOTk2VjUuMTIyM0MzLjYwMDEgNC42OTU5NSAzLjc0MzU2IDQuMzM1NTggNC4wMzA0OCA0LjA0MTE5QzQuMzE3NDEgMy43NDY4IDQuNjY4NjQgMy41OTk2MSA1LjA4NDE3IDMuNTk5NjFIMTguOTE2QzE5LjMzMTYgMy41OTk2MSAxOS42ODI4IDMuNzQ2OCAxOS45Njk3IDQuMDQxMTlDMjAuMjU2NiA0LjMzNTU4IDIwLjQwMDEgNC42OTU5NSAyMC40MDAxIDUuMTIyM1YxNS45MDQ1QzIwLjQwMDEgMTYuMzMwOCAyMC4yNTY2IDE2LjY5MTIgMTkuOTY5NyAxNi45ODU2QzE5LjY4MjggMTcuMjggMTkuMzMxNiAxNy40MjcyIDE4LjkxNiAxNy40MjcySDYuNDk3MTdMMy42MDAxIDIwLjM5OTZaIixmaWxsOiJ2YXIoLS1jdXN0b20tYWN0aW9uLWNvbG9yLCAjMDU2NmZmKSJ9KV19KSxYPSgpPT4oMCxyLlkpKCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHZpZXdCb3g6IjAgMCAzNzIgMTUiLGNoaWxkcmVuOigwLHIuWSkoInBhdGgiLHtkOiJNMzQ5LjggMS40QzMzNC41LjQgMzE4LjUgMCAzMDIgMGgtMi41Yy05LjEgMC0xOC40LjEtMjcuOC40LTM0LjUgMS02OC4zIDMtMTAyLjMgNC43LTE0IC41LTI4IDEuMi00MS41IDEuNkM4NCA3LjcgNDEuNiA1LjMgMCAyLjJ2OC40YzQxLjYgMyA4NCA1LjMgMTI4LjIgNC4xIDEzLjUtLjQgMjcuNS0xLjEgNDEuNS0xLjYgMzMuOS0xLjcgNjcuOC0zLjYgMTAyLjMtNC43IDkuNC0uMyAxOC43LS40IDI3LjgtLjRoMi41YzE2LjUgMCAzMi40LjQgNDcuOCAxLjQgOC40LjMgMTUuNi43IDIyIDEuMlYyLjJjLTYuNS0uNS0xMy44LS41LTIyLjMtLjh6IixmaWxsOiIjZmZmIn0pfSksSj0oKT0+KDAsci5ZKSgic3ZnIix7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoiMjQiLGhlaWdodDoiMjQiLHZpZXdCb3g6IjAgMCAyNCAyNCIsY2hpbGRyZW46KDAsci5ZKSgicGF0aCIse2Q6Ik0xNy43Mzc1IDcuMzY5MTRMMTkuNSA5LjEzMTY0TDEyIDE2LjYzMTZMNC41IDkuMTMxNjRMNi4yNjI1IDcuMzY5MTRMMTIgMTMuMDk0MUwxNy43Mzc1IDcuMzY5MTRaIn0pfSksZWU9KCk9PigwLHIuWSkoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjIwIixoZWlnaHQ6IjIwIix2aWV3Qm94OiIwIDAgMjAgMjAiLGNoaWxkcmVuOigwLHIuWSkoInBhdGgiLHtkOiJNMTcuNzExIDcuMDAwNDZMOS45OTk1NSAxNC43MTE5TDIuMjg4MDkgNy4wMDA0NkwzLjQwODI5IDUuODgwMjVMOS45OTk1NCAxMi40NzE3TDE2LjU5MDggNS44ODAyNUwxNy43MTEgNy4wMDA0NloifSl9KSx0ZT0oKT0+KDAsci5ZKSgic3ZnIix7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoiMjAiLGhlaWdodDoiMjAiLHZpZXdCb3g6IjAgMCAyMCAyMCIsY2xhc3NOYW1lOiJkaXJlY3Rpb25hbC1pY29uIixjaGlsZHJlbjooMCxyLlkpKCJwYXRoIix7ZDoiTTcuNSA2LjE3NUw4LjY3NSA1TDEzLjY3NSAxMEw4LjY3NSAxNUw3LjUgMTMuODI1TDExLjMxNjcgMTBMNy41IDYuMTc1WiJ9KX0pLG5lPSgpPT4oMCxyLlkpKCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOiIyNCIsaGVpZ2h0OiIyNCIsdmlld0JveDoiMCAwIDI0IDI0IixjbGFzc05hbWU6ImRpcmVjdGlvbmFsLWljb24iLGNoaWxkcmVuOigwLHIuWSkoInBhdGgiLHtkOiJNMTYuNjMxMiAxNy43Mzc1TDE0Ljg2ODcgMTkuNUw3LjM2ODY1IDEyTDE0Ljg2ODcgNC41TDE2LjYzMTIgNi4yNjI1TDEwLjkwNjIgMTJMMTYuNjMxMiAxNy43Mzc1WiJ9KX0pLHJlPSgpPT4oMCxyLlkpKCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOiIyMCIsaGVpZ2h0OiIyMCIsdmlld0JveDoiMCAwIDIwIDIwIixjbGFzc05hbWU6ImRpcmVjdGlvbmFsLWljb24iLGNoaWxkcmVuOigwLHIuWSkoInBhdGgiLHtkOiJNMTIuOTk5NSAxNy43MTE1TDUuMjg4MDkgMTBMMTIuOTk5NSAyLjI4ODU3TDE0LjExOTggMy40MDg3OEw3LjUyODI5IDEwTDE0LjExOTggMTYuNTkxM0wxMi45OTk1IDE3LjcxMTVaIn0pfSksb2U9KCk9PigwLHIuWSkoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjExIixoZWlnaHQ6IjEwIix2aWV3Qm94OiIwIDAgMTEgMTAiLGNoaWxkcmVuOigwLHIuWSkoInBhdGgiLHtkOiJNMi4xNjY1IDYuMjUwMzNMNC42NjY1IDguNzUwMzNMNS4yNTgxNyA4LjE1ODY2TDMuNzYyMzQgNi42NjY5OUg4LjQxNjVWMS42NjY5OUg3LjU4MzE3VjUuODMzNjZIMy43NjIzNEw1LjI1ODE3IDQuMzQxOTlMNC42NjY1IDMuNzUwMzNMMi4xNjY1IDYuMjUwMzNaIixmaWxsOiIjNjQ3NDkxIn0pfSksaWU9KCk9PigwLHIuRkQpKCJzdmciLHt3aWR0aDoiMTYiLGhlaWdodDoiMTYiLHZpZXdCb3g6IjAgMCAxNiAxNiIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpbKDAsci5ZKSgicGF0aCIse2Q6Ik0zLjg2NDU4IDIuMjY2NjdDNC40OTA1MSAyLjI2NjY3IDQuOTk3OTIgMS43NTkyNiA0Ljk5NzkyIDEuMTMzMzNDNC45OTc5MiAwLjUwNzQxMSA0LjQ5MDUxIDAgMy44NjQ1OCAwQzMuMjM4NjYgMCAyLjczMTI1IDAuNTA3NDExIDIuNzMxMjUgMS4xMzMzM0MyLjczMTI1IDEuNzU5MjYgMy4yMzg2NiAyLjI2NjY3IDMuODY0NTggMi4yNjY2N1oiLGZpbGw6IiMwNTY2RkYifSksKDAsci5ZKSgicGF0aCIse2Q6Ik0xMi4xMzMzIDIuMjY2NjdDMTIuNzU5MyAyLjI2NjY3IDEzLjI2NjcgMS43NTkyNiAxMy4yNjY3IDEuMTMzMzNDMTMuMjY2NyAwLjUwNzQxMSAxMi43NTkzIDAgMTIuMTMzMyAwQzExLjUwNzQgMCAxMSAwLjUwNzQxMSAxMSAxLjEzMzMzQzExIDEuNzU5MjYgMTEuNTA3NCAyLjI2NjY3IDEyLjEzMzMgMi4yNjY2N1oiLGZpbGw6IiMwNTY2RkYifSksKDAsci5ZKSgicGF0aCIse2Q6Ik0xMC44NTg1IDEwLjI2MTJDMTAuNTU4NiAxMS41NjI4IDkuMzkyNjYgMTIuNTMzMyA4IDEyLjUzMzNDNi42MDczNCAxMi41MzMzIDUuNDQxMzYgMTEuNTYyOCA1LjE0MTUgMTAuMjYxMkM1LjA1ODg0IDkuOTAyNDMgNS4zNjUxNCA5LjYgNS43MzMzMyA5LjZIMTAuMjY2N0MxMC42MzQ5IDkuNiAxMC45NDEyIDkuOTAyNDMgMTAuODU4NSAxMC4yNjEyWiIsZmlsbDoiIzA1NjZGRiJ9KSwoMCxyLlkpKCJwYXRoIix7ZDoiTTUuOTMzMzMgOC41MzI4MUM2LjU1OTI2IDguNTMyODEgNy4wNjY2NyA4LjAyNTQgNy4wNjY2NyA3LjM5OTQ4QzcuMDY2NjcgNi43NzM1NiA2LjU1OTI2IDYuMjY2MTUgNS45MzMzMyA2LjI2NjE1QzUuMzA3NDEgNi4yNjYxNSA0LjggNi43NzM1NiA0LjggNy4zOTk0OEM0LjggOC4wMjU0IDUuMzA3NDEgOC41MzI4MSA1LjkzMzMzIDguNTMyODFaIixmaWxsOiIjMDU2NkZGIn0pLCgwLHIuWSkoInBhdGgiLHtkOiJNMTEuMjAxIDcuMzk5NDhDMTEuMjAxIDguMDI1NCAxMC42OTM2IDguNTMyODEgMTAuMDY3NyA4LjUzMjgxQzkuNDQxNzkgOC41MzI4MSA4LjkzNDM4IDguMDI1NCA4LjkzNDM4IDcuMzk5NDhDOC45MzQzOCA2Ljc3MzU2IDkuNDQxNzkgNi4yNjYxNSAxMC4wNjc3IDYuMjY2MTVDMTAuNjkzNiA2LjI2NjE1IDExLjIwMSA2Ljc3MzU2IDExLjIwMSA3LjM5OTQ4WiIsZmlsbDoiIzA1NjZGRiJ9KSwoMCxyLlkpKCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGNsaXBSdWxlOiJldmVub2RkIixkOiJNMTQuNCA2LjYwMTA0TDE0LjMzMzMgNS42Njc3MUMxNC4zMzMzIDQuMjY3NzEgMTMuMjY2NyAzLjIwMTA0IDExLjg2NjcgMy4xMzQzOEg0LjEzMzM0QzIuNzMzMzQgMy4yMDEwNCAxLjY2NjY3IDQuMjY3NzEgMS42NjY2NyA1LjY2NzcxTDEuNiA2LjYwMTA0QzAuNzY0MTc4IDYuNjAxMDQgMC4wNTIzNjc0IDcuMjgzMSAwLjAwMjc1OTU3IDguMTY4ODRDMC4wMDE3NDgyNSA4LjE3OTU1IDAuMDAwODI4NTYzIDguMTkwMjkgMS4yNzE1N2UtMDYgOC4yMDEwNEwwIDkuNDAxMDRDMCAxMC4yNjc3IDAuNzMzMzM0IDExLjAwMSAxLjYgMTEuMDY3N0gxLjY2NjY3VjEyLjUzNDRDMS43MzMzMyAxMy45MzQ0IDIuOCAxNS4wMDEgNC4yIDE1LjAwMUgxMS44QzEzLjIgMTUuMDAxIDE0LjI2NjcgMTMuOTM0NCAxNC4zMzMzIDEyLjUzNDRWMTEuMDY3N0gxNC40QzE1LjI2NjcgMTEuMDAxIDE2IDEwLjI2NzcgMTYgOS40MDEwNEwxNiA4LjIwMTA0QzE1LjkzMzMgNy4zMzQzOCAxNS4yNjY3IDYuNjAxMDQgMTQuNCA2LjYwMTA0Wk0xMS44IDEzLjgwMUMxMi41MzMzIDEzLjgwMSAxMy4xMzMzIDEzLjIwMSAxMy4xMzMzIDEyLjQ2NzdWNS43MzQzOEMxMy4xMzMzIDUuMDAxMDQgMTIuNTMzMyA0LjQwMTA0IDExLjggNC40MDEwNEg0LjJDMy40NjY2NyA0LjQwMTA0IDIuODY2NjcgNS4wMDEwNCAyLjg2NjY3IDUuNzM0MzhWMTIuNDY3N0MyLjg2NjY3IDEzLjIwMSAzLjQ2NjY3IDEzLjgwMSA0LjIgMTMuODAxSDExLjhaIixmaWxsOiIjMDU2NkZGIn0pXX0pLGFlPSgpPT4oMCxyLlkpKCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOiIyMCIsaGVpZ2h0OiIyMCIsdmlld0JveDoiMCAwIDIwIDIwIixmaWxsOiJub25lIixjaGlsZHJlbjooMCxyLlkpKCJwYXRoIix7ZDoiTTEwIDE4LjMxMDNMNi4wNTE5OSAxNC4zNjIzTDYuODE4MDIgMTMuNTk2Mkw5LjQ1ODMyIDE2LjIzNjVWMy43NjM1M0w2LjgxODAyIDYuNDAzODRMNi4wNTE5OSA1LjYzNzhMMTAgMS42ODk3OUwxMy45NDggNS42Mzc4TDEzLjE4MiA2LjQwMzg0TDEwLjU0MTcgMy43NjM1M0wxMC41NDE3IDE2LjIzNjVMMTMuMTgyIDEzLjU5NjJMMTMuOTQ4IDE0LjM2MjNMMTAgMTguMzEwM1oifSl9KSxzZT0oKT0+KDAsci5ZKSgic3ZnIix7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoiMjAiLGhlaWdodDoiMjAiLHZpZXdCb3g6IjAgMCAyMCAyMCIsZmlsbDoibm9uZSIsY2hpbGRyZW46KDAsci5ZKSgicGF0aCIse2Q6Ik0xMC41NDE3IDE5LjE4MjhMOS40NTgzMiAxOS4xODI4TDkuNDU4MzIgMTIuMDczOEw2LjgxODAyIDE0LjcxNDFMNi4wNTE5OCAxMy45NDhMMTAgMTBMMTMuOTQ4IDEzLjk0OEwxMy4xODIgMTQuNzE0MUwxMC41NDE3IDEyLjA3MzhMMTAuNTQxNyAxOS4xODI4Wk0xMCAxMEw2LjA1MTk4IDYuMDUyMDJMNi44MTgwMiA1LjI4NTk4TDkuNDU4MzIgNy45MjYyOVYwLjgxNzI1MUwxMC41NDE3IDAuODE3MjUxTDEwLjU0MTcgNy45MjYyOUwxMy4xODIgNS4yODU5OUwxMy45NDggNi4wNTIwMkwxMCAxMFoifSl9KX0sNDI1OTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMzM5OSksbz1uKDQ2ODApLGk9big3MiksYT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuLGEpe3ZhciBzPXIodCksYz1pKHMpO2lmKDA9PT1jKXJldHVybiFlJiYtMTt2YXIgdSxsPW8oYSxjKTtpZihlJiZuIT1uKXtmb3IoO2M+bDspaWYoKHU9c1tsKytdKSE9dSlyZXR1cm4hMH1lbHNlIGZvcig7Yz5sO2wrKylpZigoZXx8bCBpbiBzKSYmc1tsXT09PW4pcmV0dXJuIGV8fGx8fDA7cmV0dXJuIWUmJi0xfX07ZS5leHBvcnRzPXtpbmNsdWRlczphKCEwKSxpbmRleE9mOmEoITEpfX0sNDI2NjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNjY3NCksbz1uKDUwMjcpLGk9U3ludGF4RXJyb3IsYT1wYXJzZUludCxzPVN0cmluZy5mcm9tQ2hhckNvZGUsYz1yKCIiLmNoYXJBdCksdT1yKCIiLnNsaWNlKSxsPXIoLy4vLmV4ZWMpLGQ9eydcXCInOiciJywiXFxcXCI6IlxcIiwiXFwvIjoiLyIsIlxcYiI6IlxiIiwiXFxmIjoiXGYiLCJcXG4iOiJcbiIsIlxcciI6IlxyIiwiXFx0IjoiXHQifSxmPS9eW1xkYS1mXXs0fSQvaSxwPS9eW1x1MDAwMC1cdTAwMUZdJC87ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPSEwLHI9IiI7dDxlLmxlbmd0aDspe3ZhciBoPWMoZSx0KTtpZigiXFwiPT09aCl7dmFyIG09dShlLHQsdCsyKTtpZihvKGQsbSkpcis9ZFttXSx0Kz0yO2Vsc2V7aWYoIlxcdSIhPT1tKXRocm93IG5ldyBpKCdVbmtub3duIGVzY2FwZSBzZXF1ZW5jZTogIicrbSsnIicpO3ZhciBnPXUoZSx0Kz0yLHQrNCk7aWYoIWwoZixnKSl0aHJvdyBuZXcgaSgiQmFkIFVuaWNvZGUgZXNjYXBlIGF0OiAiK3QpO3IrPXMoYShnLDE2KSksdCs9NH19ZWxzZXtpZignIic9PT1oKXtuPSExLHQrKzticmVha31pZihsKHAsaCkpdGhyb3cgbmV3IGkoIkJhZCBjb250cm9sIGNoYXJhY3RlciBpbiBzdHJpbmcgbGl0ZXJhbCBhdDogIit0KTtyKz1oLHQrK319aWYobil0aHJvdyBuZXcgaSgiVW50ZXJtaW5hdGVkIHN0cmluZyBhdDogIit0KTtyZXR1cm57dmFsdWU6cixlbmQ6dH19fSw0MjcxOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxNDMwKSxvPW4oMTc0NCksaT1uKDMwMTEpLGE9bigzMTE3KSxzPW4oMzM5OSksYz1uKDcyMik7dC5mPXImJiFvP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCl7YShlKTtmb3IodmFyIG4scj1zKHQpLG89Yyh0KSx1PW8ubGVuZ3RoLGw9MDt1Pmw7KWkuZihlLG49b1tsKytdLHJbbl0pO3JldHVybiBlfX0sNDM2MTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMzQ4OSk7ZS5leHBvcnRzPSFyKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZS5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbCxPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IGUpIT09ZS5wcm90b3R5cGV9KX0sNDQwMTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNjY3NCksbz1uKDM0ODkpLGk9big1NDMwKSxhPU9iamVjdCxzPXIoIiIuc3BsaXQpO2UuZXhwb3J0cz1vKGZ1bmN0aW9uKCl7cmV0dXJuIWEoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pP2Z1bmN0aW9uKGUpe3JldHVybiJTdHJpbmciPT09aShlKT9zKGUsIiIpOmEoZSl9OmF9LDQ0MDk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDM5MzIpLG89big4NzI3KSxpPW4oNDQ3NCksYT1uKDgwMCkscz1uKDMxMTcpLGM9big5NzI5KSx1PW4oMzk3NyksbD1uKDczNjgpKCJzb21lIixUeXBlRXJyb3IpO3Ioe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmx9LHtzb21lOmZ1bmN0aW9uKGUpe3ModGhpcyk7dHJ5e2EoZSl9Y2F0Y2goZSl7dSh0aGlzLCJ0aHJvdyIsZSl9aWYobClyZXR1cm4gbyhsLHRoaXMsZSk7dmFyIHQ9Yyh0aGlzKSxuPTA7cmV0dXJuIGkodCxmdW5jdGlvbih0LHIpe2lmKGUodCxuKyspKXJldHVybiByKCl9LHtJU19SRUNPUkQ6ITAsSU5URVJSVVBURUQ6ITB9KS5zdG9wcGVkfX0pfSw0NDMwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse0szOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LGQkOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LHdJOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7Y29uc3Qgcj0iI3dpZGdldC1zdGF0ZS1vcGVuIixvPSIjd2lkZ2V0LXN0YXRlLWNsb3NlIixpPSIjbW9iaWxlLXdpZGdldCJ9LDQ0NTk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDg3MjcpLG89big1MjY0KSxpPW4oNjQ3MSksYT1uKDk5MzIpLHM9bigzMjIwKSxjPW4oMTM4NSksdT1UeXBlRXJyb3IsbD1jKCJ0b1ByaW1pdGl2ZSIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCFvKGUpfHxpKGUpKXJldHVybiBlO3ZhciBuLGM9YShlLGwpO2lmKGMpe2lmKHZvaWQgMD09PXQmJih0PSJkZWZhdWx0Iiksbj1yKGMsZSx0KSwhbyhuKXx8aShuKSlyZXR1cm4gbjt0aHJvdyBuZXcgdSgiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9cmV0dXJuIHZvaWQgMD09PXQmJih0PSJudW1iZXIiKSxzKGUsdCl9fSw0NDY3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse0E6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgcj1uKDgxNik7ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJuKHQ9KDAsci5BKSh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX19LDQ0NzQ6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDk3MDYpLG89big4NzI3KSxpPW4oMzExNyksYT1uKDM5NTMpLHM9bigyNjcpLGM9big3MiksdT1uKDc2MjMpLGw9bigxMTE5KSxkPW4oMTE2OSksZj1uKDM5NzcpLHA9VHlwZUVycm9yLGg9ZnVuY3Rpb24oZSx0KXt0aGlzLnN0b3BwZWQ9ZSx0aGlzLnJlc3VsdD10fSxtPWgucHJvdG90eXBlO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIGcseSx2LGIsdyxfLFMsRT1uJiZuLnRoYXQsQz0hKCFufHwhbi5BU19FTlRSSUVTKSxrPSEoIW58fCFuLklTX1JFQ09SRCksQT0hKCFufHwhbi5JU19JVEVSQVRPUiksTz0hKCFufHwhbi5JTlRFUlJVUFRFRCksVD1yKHQsRSkseD1mdW5jdGlvbihlKXtyZXR1cm4gZyYmZihnLCJub3JtYWwiKSxuZXcgaCghMCxlKX0sST1mdW5jdGlvbihlKXtyZXR1cm4gQz8oaShlKSxPP1QoZVswXSxlWzFdLHgpOlQoZVswXSxlWzFdKSk6Tz9UKGUseCk6VChlKX07aWYoaylnPWUuaXRlcmF0b3I7ZWxzZSBpZihBKWc9ZTtlbHNle2lmKCEoeT1kKGUpKSl0aHJvdyBuZXcgcChhKGUpKyIgaXMgbm90IGl0ZXJhYmxlIik7aWYocyh5KSl7Zm9yKHY9MCxiPWMoZSk7Yj52O3YrKylpZigodz1JKGVbdl0pKSYmdShtLHcpKXJldHVybiB3O3JldHVybiBuZXcgaCghMSl9Zz1sKGUseSl9Zm9yKF89az9lLm5leHQ6Zy5uZXh0OyEoUz1vKF8sZykpLmRvbmU7KXt0cnl7dz1JKFMudmFsdWUpfWNhdGNoKGUpe2YoZywidGhyb3ciLGUpfWlmKCJvYmplY3QiPT10eXBlb2YgdyYmdyYmdShtLHcpKXJldHVybiB3fXJldHVybiBuZXcgaCghMSl9fSw0NTc4OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzOTMyKSxvPW4oODcyNyksaT1uKDQ0NzQpLGE9big4MDApLHM9bigzMTE3KSxjPW4oOTcyOSksdT1uKDM5NzcpLGw9big3MzY4KSgiZm9yRWFjaCIsVHlwZUVycm9yKTtyKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpsfSx7Zm9yRWFjaDpmdW5jdGlvbihlKXtzKHRoaXMpO3RyeXthKGUpfWNhdGNoKGUpe3UodGhpcywidGhyb3ciLGUpfWlmKGwpcmV0dXJuIG8obCx0aGlzLGUpO3ZhciB0PWModGhpcyksbj0wO2kodCxmdW5jdGlvbih0KXtlKHQsbisrKX0se0lTX1JFQ09SRDohMH0pfX0pfSw0NjgwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big4NTY1KSxvPU1hdGgubWF4LGk9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49cihlKTtyZXR1cm4gbjwwP28obit0LDApOmkobix0KX19LDQ3Mzg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9big3ODUxKX0sNDc2NzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtHZzpmdW5jdGlvbigpe3JldHVybiBkfSxUVzpmdW5jdGlvbigpe3JldHVybiBzfSxZdDpmdW5jdGlvbigpe3JldHVybiBhfSx4bTpmdW5jdGlvbigpe3JldHVybiBsfX0pO24oOTMyOCksbig4Mzc3KSxuKDU5NjkpLG4oNTU2KSxuKDgzOTEpO3ZhciByPW4oNjcwMSksbz1uKDczMjYpLGk9big4NDQ4KTtjb25zdCBhPWU9PntsZXR7ZmlsZTp0LHB1YmxpY0tleTpuLHZpc2l0b3JJZDpyLG9uUHJvZ3Jlc3NVcGRhdGU6b309ZTtyZXR1cm4gbmV3IFByb21pc2UoKGUsaSk9Pntjb25zdCBhPW5ldyBVUkwoIi91cGxvYWQtZmlsZSIsImh0dHBzOi8vdXBsb2Fkcy50aWRpby5jb20iKTthLnNlYXJjaFBhcmFtcy5zZXQoInByb2plY3RfcHVibGljX2tleSIsbiksYS5zZWFyY2hQYXJhbXMuc2V0KCJ2aXNpdG9yX2lkIixyKTtjb25zdCBzPW5ldyBGb3JtRGF0YTtzLmFwcGVuZCgidXBsb2FkIix0KTtjb25zdCBjPW5ldyBYTUxIdHRwUmVxdWVzdDtjLm9wZW4oIlBPU1QiLGEudG9TdHJpbmcoKSwhMCksYy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoKT0+e3RyeXtjb25zdHtzdGF0dXM6dH09YyxuPUpTT04ucGFyc2UoYy5yZXNwb25zZVRleHQpOzIwMT09PXQmJihlPT57aWYoIWV8fCJvYmplY3QiIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImlzVXBsb2FkRmlsZVJlc3BvbnNlOiB2YWx1ZSBpcyBub3QgYW4gb2JqZWN0Iik7Y29uc3R7bWV0YTp0LHR5cGU6bix1cmw6cn09ZTtpZighdHx8Im9iamVjdCIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiaXNVcGxvYWRGaWxlUmVzcG9uc2U6IG1ldGEgaXMgbm90IGFuIG9iamVjdCIpO2NvbnN0e25hbWU6byxleHRlbnNpb246aX09dDtpZigic3RyaW5nIiE9dHlwZW9mIG8pdGhyb3cgbmV3IEVycm9yKCJpc1VwbG9hZEZpbGVSZXNwb25zZTogbWV0YS5uYW1lIGlzIG5vdCBhIHN0cmluZyIpO2lmKCJzdHJpbmciIT10eXBlb2YgaSl0aHJvdyBuZXcgRXJyb3IoImlzVXBsb2FkRmlsZVJlc3BvbnNlOiBtZXRhLmV4dGVuc2lvbiBpcyBub3QgYSBzdHJpbmciKTtpZigic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJpc1VwbG9hZEZpbGVSZXNwb25zZTogdHlwZSBpcyBub3QgYSBzdHJpbmciKTtpZigic3RyaW5nIiE9dHlwZW9mIHIpdGhyb3cgbmV3IEVycm9yKCJpc1VwbG9hZEZpbGVSZXNwb25zZTogdXJsIGlzIG5vdCBhIHN0cmluZyIpO3JldHVybiEwfSkobik/ZSh7c3RhdHVzOnQsaXNFcnJvcjohMSxkYXRhOm59KTplKHtzdGF0dXM6dCxpc0Vycm9yOiEwLGRhdGE6Yy5yZXNwb25zZVRleHR9KX1jYXRjaChlKXtpKGUpfX0pLGMuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgpPT57ZSh7c3RhdHVzOmMuc3RhdHVzLGlzRXJyb3I6ITAsZGF0YTpjLnJlc3BvbnNlVGV4dH0pfSksYy5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZT0+e2lmKGUubGVuZ3RoQ29tcHV0YWJsZSYmbyl7Y29uc3QgdD1NYXRoLnJvdW5kKDEwMCplLmxvYWRlZC9lLnRvdGFsKTtvKHQpfX0pLGMuc2VuZChzKX0pfSxzPWFzeW5jIGU9PntsZXR7ZmlsZVNpemU6dCxwdWJsaWNLZXk6bix2aXNpdG9ySWQ6cn09ZTt0cnl7Y29uc3QgZT1uZXcgVVJMKCIvdXBsb2FkLWZpbGUvdmFsaWRhdGUiLCJodHRwczovL3VwbG9hZHMudGlkaW8uY29tIiksbz17ZmlsZV9zaXplOnQscHJvamVjdF9wdWJsaWNfa2V5Om4sdmlzaXRvcl9pZDpyfSxpPWF3YWl0IGZldGNoKGUudG9TdHJpbmcoKSx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkobyl9KSx7c3RhdHVzOmF9PWk7dHJ5e2NvbnN0IGU9YXdhaXQgaS50ZXh0KCk7cmV0dXJuIDIwMD09PWE/e3N0YXR1czphLGlzRXJyb3I6ITEsZGF0YTplfTp7c3RhdHVzOmEsaXNFcnJvcjohMCxkYXRhOmV9fWNhdGNoe3JldHVybntzdGF0dXM6YSxpc0Vycm9yOiEwLGRhdGE6bnVsbH19fWNhdGNoKGUpe3JldHVybntzdGF0dXM6NTAwLGlzRXJyb3I6ITAsZGF0YTplfX19O2xldCBjPWZ1bmN0aW9uKGUpe3JldHVybiBlLkZJTEVfVE9PX0JJRz0iZmlsZVRvb0JpZyIsZS5FWFRFTlNJT05fTk9UX1NVUFBPUlRFRD0iZXh0ZW5zaW9uTm90U3VwcG9ydGVkIixlLkdFTkVSSUNfVVBMT0FEX0VSUk9SPSJnZW5lcmljVXBsb2FkRXJyb3IiLGV9KHt9KTtjb25zdCB1PWU9Pnt0cnl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsO2NvbnN0IHQ9SlNPTi5wYXJzZShlKSx7bWVzc2FnZTpufT10O2lmKCJzdHJpbmciIT10eXBlb2YgbiYmIW4uaW5jbHVkZXMoImJ5dGVzIikpcmV0dXJuIG51bGw7Y29uc3Qgcj1uLnNwbGl0KCIgIiksbz1yW3IubGVuZ3RoLTJdO2lmKCJzdHJpbmciIT10eXBlb2YgbylyZXR1cm4gbnVsbDtjb25zdCBpPXBhcnNlSW50KG8sMTApO3JldHVybiBNYXRoLm1heChNYXRoLmZsb29yKGkvMTAyNC8xMDI0KSwwKX1jYXRjaHtyZXR1cm4gbnVsbH19LGw9KGUsdCk9Pntzd2l0Y2goZSl7Y2FzZSBjLkZJTEVfVE9PX0JJRzp7Y29uc3QgZT0oMCxyLnkpKHQpLG49KDAsaS5wdykoImZpbGVUb0JpZ0FsZXJ0IixudWxsLCJGaWxlIGV4Y2VlZCAxME1CIGxpbWl0LiIpO3JldHVybiBlPy5saW1pdEluTUI/bi5yZXBsYWNlKCIxME1CIixgJHtlLmxpbWl0SW5NQn1NQmApOm59Y2FzZSBjLkVYVEVOU0lPTl9OT1RfU1VQUE9SVEVEOnJldHVybigwLGkucHcpKCJleHRlbnNpb25Ob3RTdXBwb3J0ZWRBbGVydCIsbnVsbCwiVGhpcyBmaWxlIHR5cGUgaXMgbm90IHN1cHBvcnRlZCwgc29ycnkhIik7Y2FzZSBjLkdFTkVSSUNfVVBMT0FEX0VSUk9SOmRlZmF1bHQ6cmV0dXJuKDAsaS5wdykoImdlbmVyaWNGaWxlVXBsb2FkQWxlcnQiLG51bGwsIlNvbWV0aGluZyB3ZW50IHdyb25nIHdoZW4gdHJ5aW5nIHRvIHVwbG9hZCB5b3VyIGZpbGUuIil9fSxkPWFzeW5jIGU9PntsZXR7ZmlsZVNpemU6dCxwdWJsaWNLZXk6bix2aXNpdG9ySWQ6cn09ZTtpZighbil0aHJvdyBuZXcgRXJyb3IoInZhbGlkYXRlRmlsZVNpemU6IG1pc3NpbmcgcHVibGljS2V5Iik7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJ2YWxpZGF0ZUZpbGVTaXplOiBtaXNzaW5nIHZpc2l0b3JJZCIpO2NvbnN0IGk9YXdhaXQgcyh7ZmlsZVNpemU6dCxwdWJsaWNLZXk6bix2aXNpdG9ySWQ6cn0pO2lmKGkuaXNFcnJvcilzd2l0Y2goaS5zdGF0dXMpe2Nhc2UgMDp0aHJvdyBuZXcgRXJyb3IoYy5HRU5FUklDX1VQTE9BRF9FUlJPUik7Y2FzZSA0MTM6dGhyb3cgbmV3IEVycm9yKGMuRklMRV9UT09fQklHLHtjYXVzZTp7bGltaXRJbk1COnUoaS5kYXRhKX19KTtjYXNlIDQyMjp0aHJvdyBuZXcgRXJyb3IoYy5FWFRFTlNJT05fTk9UX1NVUFBPUlRFRCk7ZGVmYXVsdDp0aHJvdygwLG8uc1EpKGB2YWxpZGF0ZUZpbGVTaXplOiBwb3N0VmFsaWRhdGVGaWxlIGZhaWxlZCB3aXRoIHN0YXR1cyAke2kuc3RhdHVzfWAse3Jlc3BvbnNlOmkuZGF0YX0pLG5ldyBFcnJvcihjLkdFTkVSSUNfVVBMT0FEX0VSUk9SKX19fSw0ODA2OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big5NjQ1KTt0Lkg9ci5jcmVhdGVSb290LHIuaHlkcmF0ZVJvb3R9LDQ4MTU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDQ0NTkpLG89big2NDcxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9cihlLCJzdHJpbmciKTtyZXR1cm4gbyh0KT90OnQrIiJ9fSw0OTEwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzOTMyKSxvPW4oMTQzMCksaT1uKDc1NzApLGE9big3MjQxKSxzPW4oNjY3NCksYz1uKDg3MjcpLHU9big5NzkpLGw9big1MjY0KSxkPW4oMTIxMCksZj1uKDUwMjcpLHA9big4NDYxKSxoPW4oNzIpLG09big0MjIpLGc9bigzNDg5KSx5PW4oNDI2Niksdj1uKDM1NyksYj1pLkpTT04sdz1pLk51bWJlcixfPWkuU3ludGF4RXJyb3IsUz1iJiZiLnBhcnNlLEU9YSgiT2JqZWN0Iiwia2V5cyIpLEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixrPXMoIiIuY2hhckF0KSxBPXMoIiIuc2xpY2UpLE89cygvLi8uZXhlYyksVD1zKFtdLnB1c2gpLHg9L15cZCQvLEk9L15bMS05XSQvLE49L15bXGQtXSQvLEw9L15bXHRcblxyIF0kLyxQPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGksYSxzLHUscD1lW3RdLG09ciYmcD09PXIudmFsdWUsZz1tJiYic3RyaW5nIj09dHlwZW9mIHIuc291cmNlP3tzb3VyY2U6ci5zb3VyY2V9Ont9O2lmKGwocCkpe3ZhciB5PWQocCksdj1tP3Iubm9kZXM6eT9bXTp7fTtpZih5KWZvcihvPXYubGVuZ3RoLGE9aChwKSxzPTA7czxhO3MrKylNKHAscyxQKHAsIiIrcyxuLHM8bz92W3NdOnZvaWQgMCkpO2Vsc2UgZm9yKGk9RShwKSxhPWgoaSkscz0wO3M8YTtzKyspdT1pW3NdLE0ocCx1LFAocCx1LG4sZih2LHUpP3ZbdV06dm9pZCAwKSl9cmV0dXJuIGMobixlLHQscCxnKX0sTT1mdW5jdGlvbihlLHQsbil7aWYobyl7dmFyIHI9QyhlLHQpO2lmKHImJiFyLmNvbmZpZ3VyYWJsZSlyZXR1cm59dm9pZCAwPT09bj9kZWxldGUgZVt0XTptKGUsdCxuKX0sUj1mdW5jdGlvbihlLHQsbixyKXt0aGlzLnZhbHVlPWUsdGhpcy5lbmQ9dCx0aGlzLnNvdXJjZT1uLHRoaXMubm9kZXM9cn0sRD1mdW5jdGlvbihlLHQpe3RoaXMuc291cmNlPWUsdGhpcy5pbmRleD10fTtELnByb3RvdHlwZT17Zm9yazpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IEQodGhpcy5zb3VyY2UsZSl9LHBhcnNlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zb3VyY2UsdD10aGlzLnNraXAoTCx0aGlzLmluZGV4KSxuPXRoaXMuZm9yayh0KSxyPWsoZSx0KTtpZihPKE4scikpcmV0dXJuIG4ubnVtYmVyKCk7c3dpdGNoKHIpe2Nhc2UieyI6cmV0dXJuIG4ub2JqZWN0KCk7Y2FzZSJbIjpyZXR1cm4gbi5hcnJheSgpO2Nhc2UnIic6cmV0dXJuIG4uc3RyaW5nKCk7Y2FzZSJ0IjpyZXR1cm4gbi5rZXl3b3JkKCEwKTtjYXNlImYiOnJldHVybiBuLmtleXdvcmQoITEpO2Nhc2UibiI6cmV0dXJuIG4ua2V5d29yZChudWxsKX10aHJvdyBuZXcgXygnVW5leHBlY3RlZCBjaGFyYWN0ZXI6ICInK3IrJyIgYXQ6ICcrdCl9LG5vZGU6ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4gbmV3IFIodCxyLGU/bnVsbDpBKHRoaXMuc291cmNlLG4sciksbyl9LG9iamVjdDpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnNvdXJjZSx0PXRoaXMuaW5kZXgrMSxuPSExLHI9e30sbz17fTt0PGUubGVuZ3RoOyl7aWYodD10aGlzLnVudGlsKFsnIicsIn0iXSx0KSwifSI9PT1rKGUsdCkmJiFuKXt0Kys7YnJlYWt9dmFyIGk9dGhpcy5mb3JrKHQpLnN0cmluZygpLGE9aS52YWx1ZTt0PWkuZW5kLHQ9dGhpcy51bnRpbChbIjoiXSx0KSsxLHQ9dGhpcy5za2lwKEwsdCksaT10aGlzLmZvcmsodCkucGFyc2UoKSxtKG8sYSxpKSxtKHIsYSxpLnZhbHVlKSx0PXRoaXMudW50aWwoWyIsIiwifSJdLGkuZW5kKTt2YXIgcz1rKGUsdCk7aWYoIiwiPT09cyluPSEwLHQrKztlbHNlIGlmKCJ9Ij09PXMpe3QrKzticmVha319cmV0dXJuIHRoaXMubm9kZSgxLHIsdGhpcy5pbmRleCx0LG8pfSxhcnJheTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnNvdXJjZSx0PXRoaXMuaW5kZXgrMSxuPSExLHI9W10sbz1bXTt0PGUubGVuZ3RoOyl7aWYodD10aGlzLnNraXAoTCx0KSwiXSI9PT1rKGUsdCkmJiFuKXt0Kys7YnJlYWt9dmFyIGk9dGhpcy5mb3JrKHQpLnBhcnNlKCk7aWYoVChvLGkpLFQocixpLnZhbHVlKSx0PXRoaXMudW50aWwoWyIsIiwiXSJdLGkuZW5kKSwiLCI9PT1rKGUsdCkpbj0hMCx0Kys7ZWxzZSBpZigiXSI9PT1rKGUsdCkpe3QrKzticmVha319cmV0dXJuIHRoaXMubm9kZSgxLHIsdGhpcy5pbmRleCx0LG8pfSxzdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmluZGV4LHQ9eSh0aGlzLnNvdXJjZSx0aGlzLmluZGV4KzEpO3JldHVybiB0aGlzLm5vZGUoMCx0LnZhbHVlLGUsdC5lbmQpfSxudW1iZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNvdXJjZSx0PXRoaXMuaW5kZXgsbj10O2lmKCItIj09PWsoZSxuKSYmbisrLCIwIj09PWsoZSxuKSluKys7ZWxzZXtpZighTyhJLGsoZSxuKSkpdGhyb3cgbmV3IF8oIkZhaWxlZCB0byBwYXJzZSBudW1iZXIgYXQ6ICIrbik7bj10aGlzLnNraXAoeCxuKzEpfWlmKCgiLiI9PT1rKGUsbikmJihuPXRoaXMuc2tpcCh4LG4rMSkpLCJlIj09PWsoZSxuKXx8IkUiPT09ayhlLG4pKSYmKG4rKywiKyIhPT1rKGUsbikmJiItIiE9PWsoZSxuKXx8bisrLG49PT0obj10aGlzLnNraXAoeCxuKSkpKXRocm93IG5ldyBfKCJGYWlsZWQgdG8gcGFyc2UgbnVtYmVyJ3MgZXhwb25lbnQgdmFsdWUgYXQ6ICIrbik7cmV0dXJuIHRoaXMubm9kZSgwLHcoQShlLHQsbikpLHQsbil9LGtleXdvcmQ6ZnVuY3Rpb24oZSl7dmFyIHQ9IiIrZSxuPXRoaXMuaW5kZXgscj1uK3QubGVuZ3RoO2lmKEEodGhpcy5zb3VyY2UsbixyKSE9PXQpdGhyb3cgbmV3IF8oIkZhaWxlZCB0byBwYXJzZSB2YWx1ZSBhdDogIituKTtyZXR1cm4gdGhpcy5ub2RlKDAsZSxuLHIpfSxza2lwOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXRoaXMuc291cmNlO3Q8bi5sZW5ndGgmJk8oZSxrKG4sdCkpO3QrKyk7cmV0dXJuIHR9LHVudGlsOmZ1bmN0aW9uKGUsdCl7dD10aGlzLnNraXAoTCx0KTtmb3IodmFyIG49ayh0aGlzLnNvdXJjZSx0KSxyPTA7cjxlLmxlbmd0aDtyKyspaWYoZVtyXT09PW4pcmV0dXJuIHQ7dGhyb3cgbmV3IF8oJ1VuZXhwZWN0ZWQgY2hhcmFjdGVyOiAiJytuKyciIGF0OiAnK3QpfX07dmFyIEY9ZyhmdW5jdGlvbigpe3ZhciBlLHQ9IjkwMDcxOTkyNTQ3NDA5OTMiO3JldHVybiBTKHQsZnVuY3Rpb24odCxuLHIpe2U9ci5zb3VyY2V9KSxlIT09dH0pLGo9diYmIWcoZnVuY3Rpb24oKXtyZXR1cm4gMS9TKCItMCBcdCIpIT0tMS8wfSk7cih7dGFyZ2V0OiJKU09OIixzdGF0OiEwLGZvcmNlZDpGfSx7cGFyc2U6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaiYmIXUodCk/UyhlKTpmdW5jdGlvbihlLHQpe2U9cChlKTt2YXIgbj1uZXcgRChlLDAsIiIpLHI9bi5wYXJzZSgpLG89ci52YWx1ZSxpPW4uc2tpcChMLHIuZW5kKTtpZihpPGUubGVuZ3RoKXRocm93IG5ldyBfKCdVbmV4cGVjdGVkIGV4dHJhIGNoYXJhY3RlcjogIicrayhlLGkpKyciIGFmdGVyIHRoZSBwYXJzZWQgZGF0YSBhdDogJytpKTtyZXR1cm4gdSh0KT9QKHsiIjpvfSwiIix0LHIpOm99KGUsdCl9fSl9LDQ5MjY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7QTpmdW5jdGlvbigpe3JldHVybiBJaX19KTt2YXIgcj17fTtuLnIociksbi5kKHIse0RlY29kZXI6ZnVuY3Rpb24oKXtyZXR1cm4gRGV9LEVuY29kZXI6ZnVuY3Rpb24oKXtyZXR1cm4gUmV9LFBhY2tldFR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gTWV9LGlzUGFja2V0VmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gVmV9LHByb3RvY29sOmZ1bmN0aW9uKCl7cmV0dXJuIFBlfX0pO24oODM1NiksbigyNTc1KSxuKDgzNzcpO3ZhciBvPW4oNDQ2Nyk7ZnVuY3Rpb24gaShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGEoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/aShPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24odCl7KDAsby5BKShlLHQsblt0XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTppKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBzKGUpe3JldHVybiJNaW5pZmllZCBSZWR1eCBlcnJvciAjIitlKyI7IHZpc2l0IGh0dHBzOi8vcmVkdXguanMub3JnL0Vycm9ycz9jb2RlPSIrZSsiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMuICJ9dmFyIGM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLm9ic2VydmFibGV8fCJAQG9ic2VydmFibGUiLHU9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDcpLnNwbGl0KCIiKS5qb2luKCIuIil9LGw9e0lOSVQ6IkBAcmVkdXgvSU5JVCIrdSgpLFJFUExBQ0U6IkBAcmVkdXgvUkVQTEFDRSIrdSgpLFBST0JFX1VOS05PV05fQUNUSU9OOmZ1bmN0aW9uKCl7cmV0dXJuIkBAcmVkdXgvUFJPQkVfVU5LTk9XTl9BQ1RJT04iK3UoKX19O2Z1bmN0aW9uIGQoZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4hMTtmb3IodmFyIHQ9ZTtudWxsIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpOyl0PU9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09dH1mdW5jdGlvbiBmKGUsdCxuKXt2YXIgcjtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCYmImZ1bmN0aW9uIj09dHlwZW9mIG58fCJmdW5jdGlvbiI9PXR5cGVvZiBuJiYiZnVuY3Rpb24iPT10eXBlb2YgYXJndW1lbnRzWzNdKXRocm93IG5ldyBFcnJvcihzKDApKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCYmdm9pZCAwPT09biYmKG49dCx0PXZvaWQgMCksdm9pZCAwIT09bil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKHMoMSkpO3JldHVybiBuKGYpKGUsdCl9aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKHMoMikpO3ZhciBvPWUsaT10LGE9W10sdT1hLHA9ITE7ZnVuY3Rpb24gaCgpe3U9PT1hJiYodT1hLnNsaWNlKCkpfWZ1bmN0aW9uIG0oKXtpZihwKXRocm93IG5ldyBFcnJvcihzKDMpKTtyZXR1cm4gaX1mdW5jdGlvbiBnKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcihzKDQpKTtpZihwKXRocm93IG5ldyBFcnJvcihzKDUpKTt2YXIgdD0hMDtyZXR1cm4gaCgpLHUucHVzaChlKSxmdW5jdGlvbigpe2lmKHQpe2lmKHApdGhyb3cgbmV3IEVycm9yKHMoNikpO3Q9ITEsaCgpO3ZhciBuPXUuaW5kZXhPZihlKTt1LnNwbGljZShuLDEpLGE9bnVsbH19fWZ1bmN0aW9uIHkoZSl7aWYoIWQoZSkpdGhyb3cgbmV3IEVycm9yKHMoNykpO2lmKHZvaWQgMD09PWUudHlwZSl0aHJvdyBuZXcgRXJyb3Iocyg4KSk7aWYocCl0aHJvdyBuZXcgRXJyb3Iocyg5KSk7dHJ5e3A9ITAsaT1vKGksZSl9ZmluYWxseXtwPSExfWZvcih2YXIgdD1hPXUsbj0wO248dC5sZW5ndGg7bisrKXsoMCx0W25dKSgpfXJldHVybiBlfXJldHVybiB5KHt0eXBlOmwuSU5JVH0pLChyPXtkaXNwYXRjaDp5LHN1YnNjcmliZTpnLGdldFN0YXRlOm0scmVwbGFjZVJlZHVjZXI6ZnVuY3Rpb24oZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKHMoMTApKTtvPWUseSh7dHlwZTpsLlJFUExBQ0V9KX19KVtjXT1mdW5jdGlvbigpe3ZhciBlLHQ9ZztyZXR1cm4oZT17c3Vic2NyaWJlOmZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpdGhyb3cgbmV3IEVycm9yKHMoMTEpKTtmdW5jdGlvbiBuKCl7ZS5uZXh0JiZlLm5leHQobSgpKX1yZXR1cm4gbigpLHt1bnN1YnNjcmliZTp0KG4pfX19KVtjXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlfSxyfWZ1bmN0aW9uIHAoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gMD09PXQubGVuZ3RoP2Z1bmN0aW9uKGUpe3JldHVybiBlfToxPT09dC5sZW5ndGg/dFswXTp0LnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlKHQuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfX0pfXZhciBoPW4oMTYyKSxtPW4ubihoKSxnPW4oODk0OCkseT1uKDIzMTgpLHY9big3MzI2KSxiPW4oODQ0OCksdz1uKDQ0MzApLF89big5MTczKSxTPW4ubihfKTtjb25zdCBFPU9iamVjdC5jcmVhdGUobnVsbCk7RS5vcGVuPSIwIixFLmNsb3NlPSIxIixFLnBpbmc9IjIiLEUucG9uZz0iMyIsRS5tZXNzYWdlPSI0IixFLnVwZ3JhZGU9IjUiLEUubm9vcD0iNiI7Y29uc3QgQz1PYmplY3QuY3JlYXRlKG51bGwpO09iamVjdC5rZXlzKEUpLmZvckVhY2goZT0+e0NbRVtlXV09ZX0pO2NvbnN0IGs9e3R5cGU6ImVycm9yIixkYXRhOiJwYXJzZXIgZXJyb3IifSxBPSJmdW5jdGlvbiI9PXR5cGVvZiBCbG9ifHwidW5kZWZpbmVkIiE9dHlwZW9mIEJsb2ImJiJbb2JqZWN0IEJsb2JDb25zdHJ1Y3Rvcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEJsb2IpLE89ImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyLFQ9ZT0+ImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldz9BcnJheUJ1ZmZlci5pc1ZpZXcoZSk6ZSYmZS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcix4PShlLHQsbik9PntsZXR7dHlwZTpyLGRhdGE6b309ZTtyZXR1cm4gQSYmbyBpbnN0YW5jZW9mIEJsb2I/dD9uKG8pOkkobyxuKTpPJiYobyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHxUKG8pKT90P24obyk6SShuZXcgQmxvYihbb10pLG4pOm4oRVtyXSsob3x8IiIpKX0sST0oZSx0KT0+e2NvbnN0IG49bmV3IEZpbGVSZWFkZXI7cmV0dXJuIG4ub25sb2FkPWZ1bmN0aW9uKCl7Y29uc3QgZT1uLnJlc3VsdC5zcGxpdCgiLCIpWzFdO3QoImIiKyhlfHwiIikpfSxuLnJlYWRBc0RhdGFVUkwoZSl9O2Z1bmN0aW9uIE4oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP25ldyBVaW50OEFycmF5KGUpOm5ldyBVaW50OEFycmF5KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpfWxldCBMO2NvbnN0IFA9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLE09InVuZGVmaW5lZCI9PXR5cGVvZiBVaW50OEFycmF5P1tdOm5ldyBVaW50OEFycmF5KDI1Nik7Zm9yKGxldCBlPTA7ZTw2NDtlKyspTVtQLmNoYXJDb2RlQXQoZSldPWU7Y29uc3QgUj0iZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIsRD0oZSx0KT0+e2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm57dHlwZToibWVzc2FnZSIsZGF0YTpqKGUsdCl9O2NvbnN0IG49ZS5jaGFyQXQoMCk7aWYoImIiPT09bilyZXR1cm57dHlwZToibWVzc2FnZSIsZGF0YTpGKGUuc3Vic3RyaW5nKDEpLHQpfTtyZXR1cm4gQ1tuXT9lLmxlbmd0aD4xP3t0eXBlOkNbbl0sZGF0YTplLnN1YnN0cmluZygxKX06e3R5cGU6Q1tuXX06a30sRj0oZSx0KT0+e2lmKFIpe2NvbnN0IG49KGU9PntsZXQgdCxuLHIsbyxpLGE9Ljc1KmUubGVuZ3RoLHM9ZS5sZW5ndGgsYz0wOyI9Ij09PWVbZS5sZW5ndGgtMV0mJihhLS0sIj0iPT09ZVtlLmxlbmd0aC0yXSYmYS0tKTtjb25zdCB1PW5ldyBBcnJheUJ1ZmZlcihhKSxsPW5ldyBVaW50OEFycmF5KHUpO2Zvcih0PTA7dDxzO3QrPTQpbj1NW2UuY2hhckNvZGVBdCh0KV0scj1NW2UuY2hhckNvZGVBdCh0KzEpXSxvPU1bZS5jaGFyQ29kZUF0KHQrMildLGk9TVtlLmNoYXJDb2RlQXQodCszKV0sbFtjKytdPW48PDJ8cj4+NCxsW2MrK109KDE1JnIpPDw0fG8+PjIsbFtjKytdPSgzJm8pPDw2fDYzJmk7cmV0dXJuIHV9KShlKTtyZXR1cm4gaihuLHQpfXJldHVybntiYXNlNjQ6ITAsZGF0YTplfX0saj0oZSx0KT0+ImJsb2IiPT09dD9lIGluc3RhbmNlb2YgQmxvYj9lOm5ldyBCbG9iKFtlXSk6ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP2U6ZS5idWZmZXIsQj1TdHJpbmcuZnJvbUNoYXJDb2RlKDMwKTtmdW5jdGlvbiBWKCl7cmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe3RyYW5zZm9ybShlLHQpeyFmdW5jdGlvbihlLHQpe0EmJmUuZGF0YSBpbnN0YW5jZW9mIEJsb2I/ZS5kYXRhLmFycmF5QnVmZmVyKCkudGhlbihOKS50aGVuKHQpOk8mJihlLmRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8VChlLmRhdGEpKT90KE4oZS5kYXRhKSk6eChlLCExLGU9PntMfHwoTD1uZXcgVGV4dEVuY29kZXIpLHQoTC5lbmNvZGUoZSkpfSl9KGUsbj0+e2NvbnN0IHI9bi5sZW5ndGg7bGV0IG87aWYocjwxMjYpbz1uZXcgVWludDhBcnJheSgxKSxuZXcgRGF0YVZpZXcoby5idWZmZXIpLnNldFVpbnQ4KDAscik7ZWxzZSBpZihyPDY1NTM2KXtvPW5ldyBVaW50OEFycmF5KDMpO2NvbnN0IGU9bmV3IERhdGFWaWV3KG8uYnVmZmVyKTtlLnNldFVpbnQ4KDAsMTI2KSxlLnNldFVpbnQxNigxLHIpfWVsc2V7bz1uZXcgVWludDhBcnJheSg5KTtjb25zdCBlPW5ldyBEYXRhVmlldyhvLmJ1ZmZlcik7ZS5zZXRVaW50OCgwLDEyNyksZS5zZXRCaWdVaW50NjQoMSxCaWdJbnQocikpfWUuZGF0YSYmInN0cmluZyIhPXR5cGVvZiBlLmRhdGEmJihvWzBdfD0xMjgpLHQuZW5xdWV1ZShvKSx0LmVucXVldWUobil9KX19KX1sZXQgVTtmdW5jdGlvbiB6KGUpe3JldHVybiBlLnJlZHVjZSgoZSx0KT0+ZSt0Lmxlbmd0aCwwKX1mdW5jdGlvbiBIKGUsdCl7aWYoZVswXS5sZW5ndGg9PT10KXJldHVybiBlLnNoaWZ0KCk7Y29uc3Qgbj1uZXcgVWludDhBcnJheSh0KTtsZXQgcj0wO2ZvcihsZXQgbz0wO288dDtvKyspbltvXT1lWzBdW3IrK10scj09PWVbMF0ubGVuZ3RoJiYoZS5zaGlmdCgpLHI9MCk7cmV0dXJuIGUubGVuZ3RoJiZyPGVbMF0ubGVuZ3RoJiYoZVswXT1lWzBdLnNsaWNlKHIpKSxufWZ1bmN0aW9uICQoZSl7aWYoZSlyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluICQucHJvdG90eXBlKWVbdF09JC5wcm90b3R5cGVbdF07cmV0dXJuIGV9KGUpfSQucHJvdG90eXBlLm9uPSQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8e30sKHRoaXMuX2NhbGxiYWNrc1siJCIrZV09dGhpcy5fY2FsbGJhY2tzWyIkIitlXXx8W10pLnB1c2godCksdGhpc30sJC5wcm90b3R5cGUub25jZT1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oKXt0aGlzLm9mZihlLG4pLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBuLmZuPXQsdGhpcy5vbihlLG4pLHRoaXN9LCQucHJvdG90eXBlLm9mZj0kLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj0kLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9JC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe2lmKHRoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9LDA9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuX2NhbGxiYWNrcz17fSx0aGlzO3ZhciBuLHI9dGhpcy5fY2FsbGJhY2tzWyIkIitlXTtpZighcilyZXR1cm4gdGhpcztpZigxPT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkZWxldGUgdGhpcy5fY2FsbGJhY2tzWyIkIitlXSx0aGlzO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKWlmKChuPXJbb10pPT09dHx8bi5mbj09PXQpe3Iuc3BsaWNlKG8sMSk7YnJlYWt9cmV0dXJuIDA9PT1yLmxlbmd0aCYmZGVsZXRlIHRoaXMuX2NhbGxiYWNrc1siJCIrZV0sdGhpc30sJC5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihlKXt0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHx7fTtmb3IodmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSksbj10aGlzLl9jYWxsYmFja3NbIiQiK2VdLHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXRbci0xXT1hcmd1bWVudHNbcl07aWYobil7cj0wO2Zvcih2YXIgbz0obj1uLnNsaWNlKDApKS5sZW5ndGg7cjxvOysrciluW3JdLmFwcGx5KHRoaXMsdCl9cmV0dXJuIHRoaXN9LCQucHJvdG90eXBlLmVtaXRSZXNlcnZlZD0kLnByb3RvdHlwZS5lbWl0LCQucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8e30sdGhpcy5fY2FsbGJhY2tzWyIkIitlXXx8W119LCQucHJvdG90eXBlLmhhc0xpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm4hIXRoaXMubGlzdGVuZXJzKGUpLmxlbmd0aH07Y29uc3QgWT0iZnVuY3Rpb24iPT10eXBlb2YgUHJvbWlzZSYmImZ1bmN0aW9uIj09dHlwZW9mIFByb21pc2UucmVzb2x2ZT9lPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKGUpOihlLHQpPT50KGUsMCkscT0idW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTtmdW5jdGlvbiBXKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTtyZXR1cm4gbi5yZWR1Y2UoKHQsbik9PihlLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKSx0KSx7fSl9Y29uc3QgRz1xLnNldFRpbWVvdXQsUT1xLmNsZWFyVGltZW91dDtmdW5jdGlvbiBLKGUsdCl7dC51c2VOYXRpdmVUaW1lcnM/KGUuc2V0VGltZW91dEZuPUcuYmluZChxKSxlLmNsZWFyVGltZW91dEZuPVEuYmluZChxKSk6KGUuc2V0VGltZW91dEZuPXEuc2V0VGltZW91dC5iaW5kKHEpLGUuY2xlYXJUaW1lb3V0Rm49cS5jbGVhclRpbWVvdXQuYmluZChxKSl9ZnVuY3Rpb24gWihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZnVuY3Rpb24oZSl7bGV0IHQ9MCxuPTA7Zm9yKGxldCByPTAsbz1lLmxlbmd0aDtyPG87cisrKXQ9ZS5jaGFyQ29kZUF0KHIpLHQ8MTI4P24rPTE6dDwyMDQ4P24rPTI6dDw1NTI5Nnx8dD49NTczNDQ/bis9MzoocisrLG4rPTQpO3JldHVybiBufShlKTpNYXRoLmNlaWwoMS4zMyooZS5ieXRlTGVuZ3RofHxlLnNpemUpKX1mdW5jdGlvbiBYKCl7cmV0dXJuIERhdGUubm93KCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygzKStNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw1KX1jbGFzcyBKIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKGUpLHRoaXMuZGVzY3JpcHRpb249dCx0aGlzLmNvbnRleHQ9bix0aGlzLnR5cGU9IlRyYW5zcG9ydEVycm9yIn19Y2xhc3MgZWUgZXh0ZW5kcyAke2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy53cml0YWJsZT0hMSxLKHRoaXMsZSksdGhpcy5vcHRzPWUsdGhpcy5xdWVyeT1lLnF1ZXJ5LHRoaXMuc29ja2V0PWUuc29ja2V0LHRoaXMuc3VwcG9ydHNCaW5hcnk9IWUuZm9yY2VCYXNlNjR9b25FcnJvcihlLHQsbil7cmV0dXJuIHN1cGVyLmVtaXRSZXNlcnZlZCgiZXJyb3IiLG5ldyBKKGUsdCxuKSksdGhpc31vcGVuKCl7cmV0dXJuIHRoaXMucmVhZHlTdGF0ZT0ib3BlbmluZyIsdGhpcy5kb09wZW4oKSx0aGlzfWNsb3NlKCl7cmV0dXJuIm9wZW5pbmciIT09dGhpcy5yZWFkeVN0YXRlJiYib3BlbiIhPT10aGlzLnJlYWR5U3RhdGV8fCh0aGlzLmRvQ2xvc2UoKSx0aGlzLm9uQ2xvc2UoKSksdGhpc31zZW5kKGUpeyJvcGVuIj09PXRoaXMucmVhZHlTdGF0ZSYmdGhpcy53cml0ZShlKX1vbk9wZW4oKXt0aGlzLnJlYWR5U3RhdGU9Im9wZW4iLHRoaXMud3JpdGFibGU9ITAsc3VwZXIuZW1pdFJlc2VydmVkKCJvcGVuIil9b25EYXRhKGUpe2NvbnN0IHQ9RChlLHRoaXMuc29ja2V0LmJpbmFyeVR5cGUpO3RoaXMub25QYWNrZXQodCl9b25QYWNrZXQoZSl7c3VwZXIuZW1pdFJlc2VydmVkKCJwYWNrZXQiLGUpfW9uQ2xvc2UoZSl7dGhpcy5yZWFkeVN0YXRlPSJjbG9zZWQiLHN1cGVyLmVtaXRSZXNlcnZlZCgiY2xvc2UiLGUpfXBhdXNlKGUpe31jcmVhdGVVcmkoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3JldHVybiBlKyI6Ly8iK3RoaXMuX2hvc3RuYW1lKCkrdGhpcy5fcG9ydCgpK3RoaXMub3B0cy5wYXRoK3RoaXMuX3F1ZXJ5KHQpfV9ob3N0bmFtZSgpe2NvbnN0IGU9dGhpcy5vcHRzLmhvc3RuYW1lO3JldHVybi0xPT09ZS5pbmRleE9mKCI6Iik/ZToiWyIrZSsiXSJ9X3BvcnQoKXtyZXR1cm4gdGhpcy5vcHRzLnBvcnQmJih0aGlzLm9wdHMuc2VjdXJlJiY0NDMhPT1OdW1iZXIodGhpcy5vcHRzLnBvcnQpfHwhdGhpcy5vcHRzLnNlY3VyZSYmODAhPT1OdW1iZXIodGhpcy5vcHRzLnBvcnQpKT8iOiIrdGhpcy5vcHRzLnBvcnQ6IiJ9X3F1ZXJ5KGUpe2NvbnN0IHQ9ZnVuY3Rpb24oZSl7bGV0IHQ9IiI7Zm9yKGxldCBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHQubGVuZ3RoJiYodCs9IiYiKSx0Kz1lbmNvZGVVUklDb21wb25lbnQobikrIj0iK2VuY29kZVVSSUNvbXBvbmVudChlW25dKSk7cmV0dXJuIHR9KGUpO3JldHVybiB0Lmxlbmd0aD8iPyIrdDoiIn19Y2xhc3MgdGUgZXh0ZW5kcyBlZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcG9sbGluZz0hMX1nZXQgbmFtZSgpe3JldHVybiJwb2xsaW5nIn1kb09wZW4oKXt0aGlzLl9wb2xsKCl9cGF1c2UoZSl7dGhpcy5yZWFkeVN0YXRlPSJwYXVzaW5nIjtjb25zdCB0PSgpPT57dGhpcy5yZWFkeVN0YXRlPSJwYXVzZWQiLGUoKX07aWYodGhpcy5fcG9sbGluZ3x8IXRoaXMud3JpdGFibGUpe2xldCBlPTA7dGhpcy5fcG9sbGluZyYmKGUrKyx0aGlzLm9uY2UoInBvbGxDb21wbGV0ZSIsZnVuY3Rpb24oKXstLWV8fHQoKX0pKSx0aGlzLndyaXRhYmxlfHwoZSsrLHRoaXMub25jZSgiZHJhaW4iLGZ1bmN0aW9uKCl7LS1lfHx0KCl9KSl9ZWxzZSB0KCl9X3BvbGwoKXt0aGlzLl9wb2xsaW5nPSEwLHRoaXMuZG9Qb2xsKCksdGhpcy5lbWl0UmVzZXJ2ZWQoInBvbGwiKX1vbkRhdGEoZSl7KChlLHQpPT57Y29uc3Qgbj1lLnNwbGl0KEIpLHI9W107Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2NvbnN0IG89RChuW2VdLHQpO2lmKHIucHVzaChvKSwiZXJyb3IiPT09by50eXBlKWJyZWFrfXJldHVybiByfSkoZSx0aGlzLnNvY2tldC5iaW5hcnlUeXBlKS5mb3JFYWNoKGU9PntpZigib3BlbmluZyI9PT10aGlzLnJlYWR5U3RhdGUmJiJvcGVuIj09PWUudHlwZSYmdGhpcy5vbk9wZW4oKSwiY2xvc2UiPT09ZS50eXBlKXJldHVybiB0aGlzLm9uQ2xvc2Uoe2Rlc2NyaXB0aW9uOiJ0cmFuc3BvcnQgY2xvc2VkIGJ5IHRoZSBzZXJ2ZXIifSksITE7dGhpcy5vblBhY2tldChlKX0pLCJjbG9zZWQiIT09dGhpcy5yZWFkeVN0YXRlJiYodGhpcy5fcG9sbGluZz0hMSx0aGlzLmVtaXRSZXNlcnZlZCgicG9sbENvbXBsZXRlIiksIm9wZW4iPT09dGhpcy5yZWFkeVN0YXRlJiZ0aGlzLl9wb2xsKCkpfWRvQ2xvc2UoKXtjb25zdCBlPSgpPT57dGhpcy53cml0ZShbe3R5cGU6ImNsb3NlIn1dKX07Im9wZW4iPT09dGhpcy5yZWFkeVN0YXRlP2UoKTp0aGlzLm9uY2UoIm9wZW4iLGUpfXdyaXRlKGUpe3RoaXMud3JpdGFibGU9ITEsKChlLHQpPT57Y29uc3Qgbj1lLmxlbmd0aCxyPW5ldyBBcnJheShuKTtsZXQgbz0wO2UuZm9yRWFjaCgoZSxpKT0+e3goZSwhMSxlPT57cltpXT1lLCsrbz09PW4mJnQoci5qb2luKEIpKX0pfSl9KShlLGU9Pnt0aGlzLmRvV3JpdGUoZSwoKT0+e3RoaXMud3JpdGFibGU9ITAsdGhpcy5lbWl0UmVzZXJ2ZWQoImRyYWluIil9KX0pfXVyaSgpe2NvbnN0IGU9dGhpcy5vcHRzLnNlY3VyZT8iaHR0cHMiOiJodHRwIix0PXRoaXMucXVlcnl8fHt9O3JldHVybiExIT09dGhpcy5vcHRzLnRpbWVzdGFtcFJlcXVlc3RzJiYodFt0aGlzLm9wdHMudGltZXN0YW1wUGFyYW1dPVgoKSksdGhpcy5zdXBwb3J0c0JpbmFyeXx8dC5zaWR8fCh0LmI2ND0xKSx0aGlzLmNyZWF0ZVVyaShlLHQpfX1sZXQgbmU9ITE7dHJ5e25lPSJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3QmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gbmV3IFhNTEh0dHBSZXF1ZXN0fWNhdGNoKGUpe31jb25zdCByZT1uZTtmdW5jdGlvbiBvZSgpe31jbGFzcyBpZSBleHRlbmRzIHRle2NvbnN0cnVjdG9yKGUpe2lmKHN1cGVyKGUpLCJ1bmRlZmluZWQiIT10eXBlb2YgbG9jYXRpb24pe2NvbnN0IHQ9Imh0dHBzOiI9PT1sb2NhdGlvbi5wcm90b2NvbDtsZXQgbj1sb2NhdGlvbi5wb3J0O258fChuPXQ/IjQ0MyI6IjgwIiksdGhpcy54ZD0idW5kZWZpbmVkIiE9dHlwZW9mIGxvY2F0aW9uJiZlLmhvc3RuYW1lIT09bG9jYXRpb24uaG9zdG5hbWV8fG4hPT1lLnBvcnR9fWRvV3JpdGUoZSx0KXtjb25zdCBuPXRoaXMucmVxdWVzdCh7bWV0aG9kOiJQT1NUIixkYXRhOmV9KTtuLm9uKCJzdWNjZXNzIix0KSxuLm9uKCJlcnJvciIsKGUsdCk9Pnt0aGlzLm9uRXJyb3IoInhociBwb3N0IGVycm9yIixlLHQpfSl9ZG9Qb2xsKCl7Y29uc3QgZT10aGlzLnJlcXVlc3QoKTtlLm9uKCJkYXRhIix0aGlzLm9uRGF0YS5iaW5kKHRoaXMpKSxlLm9uKCJlcnJvciIsKGUsdCk9Pnt0aGlzLm9uRXJyb3IoInhociBwb2xsIGVycm9yIixlLHQpfSksdGhpcy5wb2xsWGhyPWV9fWNsYXNzIGFlIGV4dGVuZHMgJHtjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoKSx0aGlzLmNyZWF0ZVJlcXVlc3Q9ZSxLKHRoaXMsbiksdGhpcy5fb3B0cz1uLHRoaXMuX21ldGhvZD1uLm1ldGhvZHx8IkdFVCIsdGhpcy5fdXJpPXQsdGhpcy5fZGF0YT12b2lkIDAhPT1uLmRhdGE/bi5kYXRhOm51bGwsdGhpcy5fY3JlYXRlKCl9X2NyZWF0ZSgpe3ZhciBlO2NvbnN0IHQ9Vyh0aGlzLl9vcHRzLCJhZ2VudCIsInBmeCIsImtleSIsInBhc3NwaHJhc2UiLCJjZXJ0IiwiY2EiLCJjaXBoZXJzIiwicmVqZWN0VW5hdXRob3JpemVkIiwiYXV0b1VucmVmIik7dC54ZG9tYWluPSEhdGhpcy5fb3B0cy54ZDtjb25zdCBuPXRoaXMuX3hocj10aGlzLmNyZWF0ZVJlcXVlc3QodCk7dHJ5e24ub3Blbih0aGlzLl9tZXRob2QsdGhpcy5fdXJpLCEwKTt0cnl7aWYodGhpcy5fb3B0cy5leHRyYUhlYWRlcnMpe24uc2V0RGlzYWJsZUhlYWRlckNoZWNrJiZuLnNldERpc2FibGVIZWFkZXJDaGVjayghMCk7Zm9yKGxldCBlIGluIHRoaXMuX29wdHMuZXh0cmFIZWFkZXJzKXRoaXMuX29wdHMuZXh0cmFIZWFkZXJzLmhhc093blByb3BlcnR5KGUpJiZuLnNldFJlcXVlc3RIZWFkZXIoZSx0aGlzLl9vcHRzLmV4dHJhSGVhZGVyc1tlXSl9fWNhdGNoKGUpe31pZigiUE9TVCI9PT10aGlzLl9tZXRob2QpdHJ5e24uc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC10eXBlIiwidGV4dC9wbGFpbjtjaGFyc2V0PVVURi04Iil9Y2F0Y2goZSl7fXRyeXtuLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsIiovKiIpfWNhdGNoKGUpe31udWxsPT09KGU9dGhpcy5fb3B0cy5jb29raWVKYXIpfHx2b2lkIDA9PT1lfHxlLmFkZENvb2tpZXMobiksIndpdGhDcmVkZW50aWFscyJpbiBuJiYobi53aXRoQ3JlZGVudGlhbHM9dGhpcy5fb3B0cy53aXRoQ3JlZGVudGlhbHMpLHRoaXMuX29wdHMucmVxdWVzdFRpbWVvdXQmJihuLnRpbWVvdXQ9dGhpcy5fb3B0cy5yZXF1ZXN0VGltZW91dCksbi5vbnJlYWR5c3RhdGVjaGFuZ2U9KCk9Pnt2YXIgZTszPT09bi5yZWFkeVN0YXRlJiYobnVsbD09PShlPXRoaXMuX29wdHMuY29va2llSmFyKXx8dm9pZCAwPT09ZXx8ZS5wYXJzZUNvb2tpZXMobi5nZXRSZXNwb25zZUhlYWRlcigic2V0LWNvb2tpZSIpKSksND09PW4ucmVhZHlTdGF0ZSYmKDIwMD09PW4uc3RhdHVzfHwxMjIzPT09bi5zdGF0dXM/dGhpcy5fb25Mb2FkKCk6dGhpcy5zZXRUaW1lb3V0Rm4oKCk9Pnt0aGlzLl9vbkVycm9yKCJudW1iZXIiPT10eXBlb2Ygbi5zdGF0dXM/bi5zdGF0dXM6MCl9LDApKX0sbi5zZW5kKHRoaXMuX2RhdGEpfWNhdGNoKGUpe3JldHVybiB2b2lkIHRoaXMuc2V0VGltZW91dEZuKCgpPT57dGhpcy5fb25FcnJvcihlKX0sMCl9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmKHRoaXMuX2luZGV4PWFlLnJlcXVlc3RzQ291bnQrKyxhZS5yZXF1ZXN0c1t0aGlzLl9pbmRleF09dGhpcyl9X29uRXJyb3IoZSl7dGhpcy5lbWl0UmVzZXJ2ZWQoImVycm9yIixlLHRoaXMuX3hociksdGhpcy5fY2xlYW51cCghMCl9X2NsZWFudXAoZSl7aWYodm9pZCAwIT09dGhpcy5feGhyJiZudWxsIT09dGhpcy5feGhyKXtpZih0aGlzLl94aHIub25yZWFkeXN0YXRlY2hhbmdlPW9lLGUpdHJ5e3RoaXMuX3hoci5hYm9ydCgpfWNhdGNoKGUpe30idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkZWxldGUgYWUucmVxdWVzdHNbdGhpcy5faW5kZXhdLHRoaXMuX3hocj1udWxsfX1fb25Mb2FkKCl7Y29uc3QgZT10aGlzLl94aHIucmVzcG9uc2VUZXh0O251bGwhPT1lJiYodGhpcy5lbWl0UmVzZXJ2ZWQoImRhdGEiLGUpLHRoaXMuZW1pdFJlc2VydmVkKCJzdWNjZXNzIiksdGhpcy5fY2xlYW51cCgpKX1hYm9ydCgpe3RoaXMuX2NsZWFudXAoKX19aWYoYWUucmVxdWVzdHNDb3VudD0wLGFlLnJlcXVlc3RzPXt9LCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQpaWYoImZ1bmN0aW9uIj09dHlwZW9mIGF0dGFjaEV2ZW50KWF0dGFjaEV2ZW50KCJvbnVubG9hZCIsc2UpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGFkZEV2ZW50TGlzdGVuZXIpe2FkZEV2ZW50TGlzdGVuZXIoIm9ucGFnZWhpZGUiaW4gcT8icGFnZWhpZGUiOiJ1bmxvYWQiLHNlLCExKX1mdW5jdGlvbiBzZSgpe2ZvcihsZXQgZSBpbiBhZS5yZXF1ZXN0cylhZS5yZXF1ZXN0cy5oYXNPd25Qcm9wZXJ0eShlKSYmYWUucmVxdWVzdHNbZV0uYWJvcnQoKX1jb25zdCBjZT1mdW5jdGlvbigpe2NvbnN0IGU9dWUoe3hkb21haW46ITF9KTtyZXR1cm4gZSYmbnVsbCE9PWUucmVzcG9uc2VUeXBlfSgpO2Z1bmN0aW9uIHVlKGUpe2NvbnN0IHQ9ZS54ZG9tYWluO3RyeXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0JiYoIXR8fHJlKSlyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0fWNhdGNoKGUpe31pZighdCl0cnl7cmV0dXJuIG5ldyhxW1siQWN0aXZlIl0uY29uY2F0KCJPYmplY3QiKS5qb2luKCJYIildKSgiTWljcm9zb2Z0LlhNTEhUVFAiKX1jYXRjaChlKXt9fWNvbnN0IGxlPSJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvci5wcm9kdWN0JiYicmVhY3RuYXRpdmUiPT09bmF2aWdhdG9yLnByb2R1Y3QudG9Mb3dlckNhc2UoKTtjbGFzcyBkZSBleHRlbmRzIGVle2dldCBuYW1lKCl7cmV0dXJuIndlYnNvY2tldCJ9ZG9PcGVuKCl7Y29uc3QgZT10aGlzLnVyaSgpLHQ9dGhpcy5vcHRzLnByb3RvY29scyxuPWxlP3t9OlcodGhpcy5vcHRzLCJhZ2VudCIsInBlck1lc3NhZ2VEZWZsYXRlIiwicGZ4Iiwia2V5IiwicGFzc3BocmFzZSIsImNlcnQiLCJjYSIsImNpcGhlcnMiLCJyZWplY3RVbmF1dGhvcml6ZWQiLCJsb2NhbEFkZHJlc3MiLCJwcm90b2NvbFZlcnNpb24iLCJvcmlnaW4iLCJtYXhQYXlsb2FkIiwiZmFtaWx5IiwiY2hlY2tTZXJ2ZXJJZGVudGl0eSIpO3RoaXMub3B0cy5leHRyYUhlYWRlcnMmJihuLmhlYWRlcnM9dGhpcy5vcHRzLmV4dHJhSGVhZGVycyk7dHJ5e3RoaXMud3M9dGhpcy5jcmVhdGVTb2NrZXQoZSx0LG4pfWNhdGNoKGUpe3JldHVybiB0aGlzLmVtaXRSZXNlcnZlZCgiZXJyb3IiLGUpfXRoaXMud3MuYmluYXJ5VHlwZT10aGlzLnNvY2tldC5iaW5hcnlUeXBlLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKX1hZGRFdmVudExpc3RlbmVycygpe3RoaXMud3Mub25vcGVuPSgpPT57dGhpcy5vcHRzLmF1dG9VbnJlZiYmdGhpcy53cy5fc29ja2V0LnVucmVmKCksdGhpcy5vbk9wZW4oKX0sdGhpcy53cy5vbmNsb3NlPWU9PnRoaXMub25DbG9zZSh7ZGVzY3JpcHRpb246IndlYnNvY2tldCBjb25uZWN0aW9uIGNsb3NlZCIsY29udGV4dDplfSksdGhpcy53cy5vbm1lc3NhZ2U9ZT0+dGhpcy5vbkRhdGEoZS5kYXRhKSx0aGlzLndzLm9uZXJyb3I9ZT0+dGhpcy5vbkVycm9yKCJ3ZWJzb2NrZXQgZXJyb3IiLGUpfXdyaXRlKGUpe3RoaXMud3JpdGFibGU9ITE7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XSxyPXQ9PT1lLmxlbmd0aC0xO3gobix0aGlzLnN1cHBvcnRzQmluYXJ5LGU9Pnt0cnl7dGhpcy5kb1dyaXRlKG4sZSl9Y2F0Y2goZSl7fXImJlkoKCk9Pnt0aGlzLndyaXRhYmxlPSEwLHRoaXMuZW1pdFJlc2VydmVkKCJkcmFpbiIpfSx0aGlzLnNldFRpbWVvdXRGbil9KX19ZG9DbG9zZSgpe3ZvaWQgMCE9PXRoaXMud3MmJih0aGlzLndzLm9uZXJyb3I9KCk9Pnt9LHRoaXMud3MuY2xvc2UoKSx0aGlzLndzPW51bGwpfXVyaSgpe2NvbnN0IGU9dGhpcy5vcHRzLnNlY3VyZT8id3NzIjoid3MiLHQ9dGhpcy5xdWVyeXx8e307cmV0dXJuIHRoaXMub3B0cy50aW1lc3RhbXBSZXF1ZXN0cyYmKHRbdGhpcy5vcHRzLnRpbWVzdGFtcFBhcmFtXT1YKCkpLHRoaXMuc3VwcG9ydHNCaW5hcnl8fCh0LmI2ND0xKSx0aGlzLmNyZWF0ZVVyaShlLHQpfX1jb25zdCBmZT1xLldlYlNvY2tldHx8cS5Nb3pXZWJTb2NrZXQ7Y29uc3QgcGU9e3dlYnNvY2tldDpjbGFzcyBleHRlbmRzIGRle2NyZWF0ZVNvY2tldChlLHQsbil7cmV0dXJuIGxlP25ldyBmZShlLHQsbik6dD9uZXcgZmUoZSx0KTpuZXcgZmUoZSl9ZG9Xcml0ZShlLHQpe3RoaXMud3Muc2VuZCh0KX19LHdlYnRyYW5zcG9ydDpjbGFzcyBleHRlbmRzIGVle2dldCBuYW1lKCl7cmV0dXJuIndlYnRyYW5zcG9ydCJ9ZG9PcGVuKCl7dHJ5e3RoaXMuX3RyYW5zcG9ydD1uZXcgV2ViVHJhbnNwb3J0KHRoaXMuY3JlYXRlVXJpKCJodHRwcyIpLHRoaXMub3B0cy50cmFuc3BvcnRPcHRpb25zW3RoaXMubmFtZV0pfWNhdGNoKGUpe3JldHVybiB0aGlzLmVtaXRSZXNlcnZlZCgiZXJyb3IiLGUpfXRoaXMuX3RyYW5zcG9ydC5jbG9zZWQudGhlbigoKT0+e3RoaXMub25DbG9zZSgpfSkuY2F0Y2goZT0+e3RoaXMub25FcnJvcigid2VidHJhbnNwb3J0IGVycm9yIixlKX0pLHRoaXMuX3RyYW5zcG9ydC5yZWFkeS50aGVuKCgpPT57dGhpcy5fdHJhbnNwb3J0LmNyZWF0ZUJpZGlyZWN0aW9uYWxTdHJlYW0oKS50aGVuKGU9Pntjb25zdCB0PWZ1bmN0aW9uKGUsdCl7VXx8KFU9bmV3IFRleHREZWNvZGVyKTtjb25zdCBuPVtdO2xldCByPTAsbz0tMSxpPSExO3JldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm0oYSxzKXtmb3Iobi5wdXNoKGEpOzspe2lmKDA9PT1yKXtpZih6KG4pPDEpYnJlYWs7Y29uc3QgZT1IKG4sMSk7aT0hKDEyOCZ+ZVswXSksbz0xMjcmZVswXSxyPW88MTI2PzM6MTI2PT09bz8xOjJ9ZWxzZSBpZigxPT09cil7aWYoeihuKTwyKWJyZWFrO2NvbnN0IGU9SChuLDIpO289bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmxlbmd0aCkuZ2V0VWludDE2KDApLHI9M31lbHNlIGlmKDI9PT1yKXtpZih6KG4pPDgpYnJlYWs7Y29uc3QgZT1IKG4sOCksdD1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUubGVuZ3RoKSxpPXQuZ2V0VWludDMyKDApO2lmKGk+TWF0aC5wb3coMiwyMSktMSl7cy5lbnF1ZXVlKGspO2JyZWFrfW89aSpNYXRoLnBvdygyLDMyKSt0LmdldFVpbnQzMig0KSxyPTN9ZWxzZXtpZih6KG4pPG8pYnJlYWs7Y29uc3QgZT1IKG4sbyk7cy5lbnF1ZXVlKEQoaT9lOlUuZGVjb2RlKGUpLHQpKSxyPTB9aWYoMD09PW98fG8+ZSl7cy5lbnF1ZXVlKGspO2JyZWFrfX19fSl9KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLHRoaXMuc29ja2V0LmJpbmFyeVR5cGUpLG49ZS5yZWFkYWJsZS5waXBlVGhyb3VnaCh0KS5nZXRSZWFkZXIoKSxyPVYoKTtyLnJlYWRhYmxlLnBpcGVUbyhlLndyaXRhYmxlKSx0aGlzLl93cml0ZXI9ci53cml0YWJsZS5nZXRXcml0ZXIoKTtjb25zdCBvPSgpPT57bi5yZWFkKCkudGhlbihlPT57bGV0e2RvbmU6dCx2YWx1ZTpufT1lO3R8fCh0aGlzLm9uUGFja2V0KG4pLG8oKSl9KS5jYXRjaChlPT57fSl9O28oKTtjb25zdCBpPXt0eXBlOiJvcGVuIn07dGhpcy5xdWVyeS5zaWQmJihpLmRhdGE9YHsic2lkIjoiJHt0aGlzLnF1ZXJ5LnNpZH0ifWApLHRoaXMuX3dyaXRlci53cml0ZShpKS50aGVuKCgpPT50aGlzLm9uT3BlbigpKX0pfSl9d3JpdGUoZSl7dGhpcy53cml0YWJsZT0hMTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdLHI9dD09PWUubGVuZ3RoLTE7dGhpcy5fd3JpdGVyLndyaXRlKG4pLnRoZW4oKCk9PntyJiZZKCgpPT57dGhpcy53cml0YWJsZT0hMCx0aGlzLmVtaXRSZXNlcnZlZCgiZHJhaW4iKX0sdGhpcy5zZXRUaW1lb3V0Rm4pfSl9fWRvQ2xvc2UoKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fdHJhbnNwb3J0KXx8dm9pZCAwPT09ZXx8ZS5jbG9zZSgpfX0scG9sbGluZzpjbGFzcyBleHRlbmRzIGlle2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9ZSYmZS5mb3JjZUJhc2U2NDt0aGlzLnN1cHBvcnRzQmluYXJ5PWNlJiYhdH1yZXF1ZXN0KCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O3JldHVybiBPYmplY3QuYXNzaWduKGUse3hkOnRoaXMueGR9LHRoaXMub3B0cyksbmV3IGFlKHVlLHRoaXMudXJpKCksZSl9fX0saGU9L14oPzooPyFbXjpAXC8/I10rOlteOkBcL10qQCkoaHR0cHxodHRwc3x3c3x3c3MpOlwvXC8pPygoPzooKFteOkBcLz8jXSopKD86OihbXjpAXC8/I10qKSk/KT9AKT8oKD86W2EtZjAtOV17MCw0fTopezIsN31bYS1mMC05XXswLDR9fFteOlwvPyNdKikoPzo6KFxkKikpPykoKChcLyg/OltePyNdKD8hW14/I1wvXSpcLltePyNcLy5dKyg/Ols/I118JCkpKSpcLz8pPyhbXj8jXC9dKikpKD86XD8oW14jXSopKT8oPzojKC4qKSk/KS8sbWU9WyJzb3VyY2UiLCJwcm90b2NvbCIsImF1dGhvcml0eSIsInVzZXJJbmZvIiwidXNlciIsInBhc3N3b3JkIiwiaG9zdCIsInBvcnQiLCJyZWxhdGl2ZSIsInBhdGgiLCJkaXJlY3RvcnkiLCJmaWxlIiwicXVlcnkiLCJhbmNob3IiXTtmdW5jdGlvbiBnZShlKXtpZihlLmxlbmd0aD44ZTMpdGhyb3ciVVJJIHRvbyBsb25nIjtjb25zdCB0PWUsbj1lLmluZGV4T2YoIlsiKSxyPWUuaW5kZXhPZigiXSIpOy0xIT1uJiYtMSE9ciYmKGU9ZS5zdWJzdHJpbmcoMCxuKStlLnN1YnN0cmluZyhuLHIpLnJlcGxhY2UoLzovZywiOyIpK2Uuc3Vic3RyaW5nKHIsZS5sZW5ndGgpKTtsZXQgbz1oZS5leGVjKGV8fCIiKSxpPXt9LGE9MTQ7Zm9yKDthLS07KWlbbWVbYV1dPW9bYV18fCIiO3JldHVybi0xIT1uJiYtMSE9ciYmKGkuc291cmNlPXQsaS5ob3N0PWkuaG9zdC5zdWJzdHJpbmcoMSxpLmhvc3QubGVuZ3RoLTEpLnJlcGxhY2UoLzsvZywiOiIpLGkuYXV0aG9yaXR5PWkuYXV0aG9yaXR5LnJlcGxhY2UoIlsiLCIiKS5yZXBsYWNlKCJdIiwiIikucmVwbGFjZSgvOy9nLCI6IiksaS5pcHY2dXJpPSEwKSxpLnBhdGhOYW1lcz1mdW5jdGlvbihlLHQpe2NvbnN0IG49L1wvezIsOX0vZyxyPXQucmVwbGFjZShuLCIvIikuc3BsaXQoIi8iKTsiLyIhPXQuc2xpY2UoMCwxKSYmMCE9PXQubGVuZ3RofHxyLnNwbGljZSgwLDEpOyIvIj09dC5zbGljZSgtMSkmJnIuc3BsaWNlKHIubGVuZ3RoLTEsMSk7cmV0dXJuIHJ9KDAsaS5wYXRoKSxpLnF1ZXJ5S2V5PWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj17fTtyZXR1cm4gdC5yZXBsYWNlKC8oPzpefCYpKFteJj1dKik9PyhbXiZdKikvZyxmdW5jdGlvbihlLHQscil7dCYmKG5bdF09cil9KSxufSgwLGkucXVlcnkpLGl9Y29uc3QgeWU9ImZ1bmN0aW9uIj09dHlwZW9mIGFkZEV2ZW50TGlzdGVuZXImJiJmdW5jdGlvbiI9PXR5cGVvZiByZW1vdmVFdmVudExpc3RlbmVyLHZlPVtdO3llJiZhZGRFdmVudExpc3RlbmVyKCJvZmZsaW5lIiwoKT0+e3ZlLmZvckVhY2goZT0+ZSgpKX0sITEpO2NsYXNzIGJlIGV4dGVuZHMgJHtjb25zdHJ1Y3RvcihlLHQpe2lmKHN1cGVyKCksdGhpcy5iaW5hcnlUeXBlPSJhcnJheWJ1ZmZlciIsdGhpcy53cml0ZUJ1ZmZlcj1bXSx0aGlzLl9wcmV2QnVmZmVyTGVuPTAsdGhpcy5fcGluZ0ludGVydmFsPS0xLHRoaXMuX3BpbmdUaW1lb3V0PS0xLHRoaXMuX21heFBheWxvYWQ9LTEsdGhpcy5fcGluZ1RpbWVvdXRUaW1lPTEvMCxlJiYib2JqZWN0Ij09dHlwZW9mIGUmJih0PWUsZT1udWxsKSxlKXtjb25zdCBuPWdlKGUpO3QuaG9zdG5hbWU9bi5ob3N0LHQuc2VjdXJlPSJodHRwcyI9PT1uLnByb3RvY29sfHwid3NzIj09PW4ucHJvdG9jb2wsdC5wb3J0PW4ucG9ydCxuLnF1ZXJ5JiYodC5xdWVyeT1uLnF1ZXJ5KX1lbHNlIHQuaG9zdCYmKHQuaG9zdG5hbWU9Z2UodC5ob3N0KS5ob3N0KTtLKHRoaXMsdCksdGhpcy5zZWN1cmU9bnVsbCE9dC5zZWN1cmU/dC5zZWN1cmU6InVuZGVmaW5lZCIhPXR5cGVvZiBsb2NhdGlvbiYmImh0dHBzOiI9PT1sb2NhdGlvbi5wcm90b2NvbCx0Lmhvc3RuYW1lJiYhdC5wb3J0JiYodC5wb3J0PXRoaXMuc2VjdXJlPyI0NDMiOiI4MCIpLHRoaXMuaG9zdG5hbWU9dC5ob3N0bmFtZXx8KCJ1bmRlZmluZWQiIT10eXBlb2YgbG9jYXRpb24/bG9jYXRpb24uaG9zdG5hbWU6ImxvY2FsaG9zdCIpLHRoaXMucG9ydD10LnBvcnR8fCgidW5kZWZpbmVkIiE9dHlwZW9mIGxvY2F0aW9uJiZsb2NhdGlvbi5wb3J0P2xvY2F0aW9uLnBvcnQ6dGhpcy5zZWN1cmU/IjQ0MyI6IjgwIiksdGhpcy50cmFuc3BvcnRzPVtdLHRoaXMuX3RyYW5zcG9ydHNCeU5hbWU9e30sdC50cmFuc3BvcnRzLmZvckVhY2goZT0+e2NvbnN0IHQ9ZS5wcm90b3R5cGUubmFtZTt0aGlzLnRyYW5zcG9ydHMucHVzaCh0KSx0aGlzLl90cmFuc3BvcnRzQnlOYW1lW3RdPWV9KSx0aGlzLm9wdHM9T2JqZWN0LmFzc2lnbih7cGF0aDoiL2VuZ2luZS5pbyIsYWdlbnQ6ITEsd2l0aENyZWRlbnRpYWxzOiExLHVwZ3JhZGU6ITAsdGltZXN0YW1wUGFyYW06InQiLHJlbWVtYmVyVXBncmFkZTohMSxhZGRUcmFpbGluZ1NsYXNoOiEwLHJlamVjdFVuYXV0aG9yaXplZDohMCxwZXJNZXNzYWdlRGVmbGF0ZTp7dGhyZXNob2xkOjEwMjR9LHRyYW5zcG9ydE9wdGlvbnM6e30sY2xvc2VPbkJlZm9yZXVubG9hZDohMX0sdCksdGhpcy5vcHRzLnBhdGg9dGhpcy5vcHRzLnBhdGgucmVwbGFjZSgvXC8kLywiIikrKHRoaXMub3B0cy5hZGRUcmFpbGluZ1NsYXNoPyIvIjoiIiksInN0cmluZyI9PXR5cGVvZiB0aGlzLm9wdHMucXVlcnkmJih0aGlzLm9wdHMucXVlcnk9ZnVuY3Rpb24oZSl7bGV0IHQ9e30sbj1lLnNwbGl0KCImIik7Zm9yKGxldCBlPTAscj1uLmxlbmd0aDtlPHI7ZSsrKXtsZXQgcj1uW2VdLnNwbGl0KCI9Iik7dFtkZWNvZGVVUklDb21wb25lbnQoclswXSldPWRlY29kZVVSSUNvbXBvbmVudChyWzFdKX1yZXR1cm4gdH0odGhpcy5vcHRzLnF1ZXJ5KSkseWUmJih0aGlzLm9wdHMuY2xvc2VPbkJlZm9yZXVubG9hZCYmKHRoaXMuX2JlZm9yZXVubG9hZEV2ZW50TGlzdGVuZXI9KCk9Pnt0aGlzLnRyYW5zcG9ydCYmKHRoaXMudHJhbnNwb3J0LnJlbW92ZUFsbExpc3RlbmVycygpLHRoaXMudHJhbnNwb3J0LmNsb3NlKCkpfSxhZGRFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLHRoaXMuX2JlZm9yZXVubG9hZEV2ZW50TGlzdGVuZXIsITEpKSwibG9jYWxob3N0IiE9PXRoaXMuaG9zdG5hbWUmJih0aGlzLl9vZmZsaW5lRXZlbnRMaXN0ZW5lcj0oKT0+e3RoaXMuX29uQ2xvc2UoInRyYW5zcG9ydCBjbG9zZSIse2Rlc2NyaXB0aW9uOiJuZXR3b3JrIGNvbm5lY3Rpb24gbG9zdCJ9KX0sdmUucHVzaCh0aGlzLl9vZmZsaW5lRXZlbnRMaXN0ZW5lcikpKSx0aGlzLm9wdHMud2l0aENyZWRlbnRpYWxzJiYodGhpcy5fY29va2llSmFyPXZvaWQgMCksdGhpcy5fb3BlbigpfWNyZWF0ZVRyYW5zcG9ydChlKXtjb25zdCB0PU9iamVjdC5hc3NpZ24oe30sdGhpcy5vcHRzLnF1ZXJ5KTt0LkVJTz00LHQudHJhbnNwb3J0PWUsdGhpcy5pZCYmKHQuc2lkPXRoaXMuaWQpO2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSx0aGlzLm9wdHMse3F1ZXJ5OnQsc29ja2V0OnRoaXMsaG9zdG5hbWU6dGhpcy5ob3N0bmFtZSxzZWN1cmU6dGhpcy5zZWN1cmUscG9ydDp0aGlzLnBvcnR9LHRoaXMub3B0cy50cmFuc3BvcnRPcHRpb25zW2VdKTtyZXR1cm4gbmV3IHRoaXMuX3RyYW5zcG9ydHNCeU5hbWVbZV0obil9X29wZW4oKXtpZigwPT09dGhpcy50cmFuc3BvcnRzLmxlbmd0aClyZXR1cm4gdm9pZCB0aGlzLnNldFRpbWVvdXRGbigoKT0+e3RoaXMuZW1pdFJlc2VydmVkKCJlcnJvciIsIk5vIHRyYW5zcG9ydHMgYXZhaWxhYmxlIil9LDApO2NvbnN0IGU9dGhpcy5vcHRzLnJlbWVtYmVyVXBncmFkZSYmYmUucHJpb3JXZWJzb2NrZXRTdWNjZXNzJiYtMSE9PXRoaXMudHJhbnNwb3J0cy5pbmRleE9mKCJ3ZWJzb2NrZXQiKT8id2Vic29ja2V0Ijp0aGlzLnRyYW5zcG9ydHNbMF07dGhpcy5yZWFkeVN0YXRlPSJvcGVuaW5nIjtjb25zdCB0PXRoaXMuY3JlYXRlVHJhbnNwb3J0KGUpO3Qub3BlbigpLHRoaXMuc2V0VHJhbnNwb3J0KHQpfXNldFRyYW5zcG9ydChlKXt0aGlzLnRyYW5zcG9ydCYmdGhpcy50cmFuc3BvcnQucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpcy50cmFuc3BvcnQ9ZSxlLm9uKCJkcmFpbiIsdGhpcy5fb25EcmFpbi5iaW5kKHRoaXMpKS5vbigicGFja2V0Iix0aGlzLl9vblBhY2tldC5iaW5kKHRoaXMpKS5vbigiZXJyb3IiLHRoaXMuX29uRXJyb3IuYmluZCh0aGlzKSkub24oImNsb3NlIixlPT50aGlzLl9vbkNsb3NlKCJ0cmFuc3BvcnQgY2xvc2UiLGUpKX1vbk9wZW4oKXt0aGlzLnJlYWR5U3RhdGU9Im9wZW4iLGJlLnByaW9yV2Vic29ja2V0U3VjY2Vzcz0id2Vic29ja2V0Ij09PXRoaXMudHJhbnNwb3J0Lm5hbWUsdGhpcy5lbWl0UmVzZXJ2ZWQoIm9wZW4iKSx0aGlzLmZsdXNoKCl9X29uUGFja2V0KGUpe2lmKCJvcGVuaW5nIj09PXRoaXMucmVhZHlTdGF0ZXx8Im9wZW4iPT09dGhpcy5yZWFkeVN0YXRlfHwiY2xvc2luZyI9PT10aGlzLnJlYWR5U3RhdGUpc3dpdGNoKHRoaXMuZW1pdFJlc2VydmVkKCJwYWNrZXQiLGUpLHRoaXMuZW1pdFJlc2VydmVkKCJoZWFydGJlYXQiKSxlLnR5cGUpe2Nhc2Uib3BlbiI6dGhpcy5vbkhhbmRzaGFrZShKU09OLnBhcnNlKGUuZGF0YSkpO2JyZWFrO2Nhc2UicGluZyI6dGhpcy5fc2VuZFBhY2tldCgicG9uZyIpLHRoaXMuZW1pdFJlc2VydmVkKCJwaW5nIiksdGhpcy5lbWl0UmVzZXJ2ZWQoInBvbmciKSx0aGlzLl9yZXNldFBpbmdUaW1lb3V0KCk7YnJlYWs7Y2FzZSJlcnJvciI6Y29uc3QgdD1uZXcgRXJyb3IoInNlcnZlciBlcnJvciIpO3QuY29kZT1lLmRhdGEsdGhpcy5fb25FcnJvcih0KTticmVhaztjYXNlIm1lc3NhZ2UiOnRoaXMuZW1pdFJlc2VydmVkKCJkYXRhIixlLmRhdGEpLHRoaXMuZW1pdFJlc2VydmVkKCJtZXNzYWdlIixlLmRhdGEpfX1vbkhhbmRzaGFrZShlKXt0aGlzLmVtaXRSZXNlcnZlZCgiaGFuZHNoYWtlIixlKSx0aGlzLmlkPWUuc2lkLHRoaXMudHJhbnNwb3J0LnF1ZXJ5LnNpZD1lLnNpZCx0aGlzLl9waW5nSW50ZXJ2YWw9ZS5waW5nSW50ZXJ2YWwsdGhpcy5fcGluZ1RpbWVvdXQ9ZS5waW5nVGltZW91dCx0aGlzLl9tYXhQYXlsb2FkPWUubWF4UGF5bG9hZCx0aGlzLm9uT3BlbigpLCJjbG9zZWQiIT09dGhpcy5yZWFkeVN0YXRlJiZ0aGlzLl9yZXNldFBpbmdUaW1lb3V0KCl9X3Jlc2V0UGluZ1RpbWVvdXQoKXt0aGlzLmNsZWFyVGltZW91dEZuKHRoaXMuX3BpbmdUaW1lb3V0VGltZXIpO2NvbnN0IGU9dGhpcy5fcGluZ0ludGVydmFsK3RoaXMuX3BpbmdUaW1lb3V0O3RoaXMuX3BpbmdUaW1lb3V0VGltZT1EYXRlLm5vdygpK2UsdGhpcy5fcGluZ1RpbWVvdXRUaW1lcj10aGlzLnNldFRpbWVvdXRGbigoKT0+e3RoaXMuX29uQ2xvc2UoInBpbmcgdGltZW91dCIpfSxlKSx0aGlzLm9wdHMuYXV0b1VucmVmJiZ0aGlzLl9waW5nVGltZW91dFRpbWVyLnVucmVmKCl9X29uRHJhaW4oKXt0aGlzLndyaXRlQnVmZmVyLnNwbGljZSgwLHRoaXMuX3ByZXZCdWZmZXJMZW4pLHRoaXMuX3ByZXZCdWZmZXJMZW49MCwwPT09dGhpcy53cml0ZUJ1ZmZlci5sZW5ndGg/dGhpcy5lbWl0UmVzZXJ2ZWQoImRyYWluIik6dGhpcy5mbHVzaCgpfWZsdXNoKCl7aWYoImNsb3NlZCIhPT10aGlzLnJlYWR5U3RhdGUmJnRoaXMudHJhbnNwb3J0LndyaXRhYmxlJiYhdGhpcy51cGdyYWRpbmcmJnRoaXMud3JpdGVCdWZmZXIubGVuZ3RoKXtjb25zdCBlPXRoaXMuX2dldFdyaXRhYmxlUGFja2V0cygpO3RoaXMudHJhbnNwb3J0LnNlbmQoZSksdGhpcy5fcHJldkJ1ZmZlckxlbj1lLmxlbmd0aCx0aGlzLmVtaXRSZXNlcnZlZCgiZmx1c2giKX19X2dldFdyaXRhYmxlUGFja2V0cygpe2lmKCEodGhpcy5fbWF4UGF5bG9hZCYmInBvbGxpbmciPT09dGhpcy50cmFuc3BvcnQubmFtZSYmdGhpcy53cml0ZUJ1ZmZlci5sZW5ndGg+MSkpcmV0dXJuIHRoaXMud3JpdGVCdWZmZXI7bGV0IGU9MTtmb3IobGV0IHQ9MDt0PHRoaXMud3JpdGVCdWZmZXIubGVuZ3RoO3QrKyl7Y29uc3Qgbj10aGlzLndyaXRlQnVmZmVyW3RdLmRhdGE7aWYobiYmKGUrPVoobikpLHQ+MCYmZT50aGlzLl9tYXhQYXlsb2FkKXJldHVybiB0aGlzLndyaXRlQnVmZmVyLnNsaWNlKDAsdCk7ZSs9Mn1yZXR1cm4gdGhpcy53cml0ZUJ1ZmZlcn1faGFzUGluZ0V4cGlyZWQoKXtpZighdGhpcy5fcGluZ1RpbWVvdXRUaW1lKXJldHVybiEwO2NvbnN0IGU9RGF0ZS5ub3coKT50aGlzLl9waW5nVGltZW91dFRpbWU7cmV0dXJuIGUmJih0aGlzLl9waW5nVGltZW91dFRpbWU9MCxZKCgpPT57dGhpcy5fb25DbG9zZSgicGluZyB0aW1lb3V0Iil9LHRoaXMuc2V0VGltZW91dEZuKSksZX13cml0ZShlLHQsbil7cmV0dXJuIHRoaXMuX3NlbmRQYWNrZXQoIm1lc3NhZ2UiLGUsdCxuKSx0aGlzfXNlbmQoZSx0LG4pe3JldHVybiB0aGlzLl9zZW5kUGFja2V0KCJtZXNzYWdlIixlLHQsbiksdGhpc31fc2VuZFBhY2tldChlLHQsbixyKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCYmKHI9dCx0PXZvaWQgMCksImZ1bmN0aW9uIj09dHlwZW9mIG4mJihyPW4sbj1udWxsKSwiY2xvc2luZyI9PT10aGlzLnJlYWR5U3RhdGV8fCJjbG9zZWQiPT09dGhpcy5yZWFkeVN0YXRlKXJldHVybjsobj1ufHx7fSkuY29tcHJlc3M9ITEhPT1uLmNvbXByZXNzO2NvbnN0IG89e3R5cGU6ZSxkYXRhOnQsb3B0aW9uczpufTt0aGlzLmVtaXRSZXNlcnZlZCgicGFja2V0Q3JlYXRlIixvKSx0aGlzLndyaXRlQnVmZmVyLnB1c2gobyksciYmdGhpcy5vbmNlKCJmbHVzaCIsciksdGhpcy5mbHVzaCgpfWNsb3NlKCl7Y29uc3QgZT0oKT0+e3RoaXMuX29uQ2xvc2UoImZvcmNlZCBjbG9zZSIpLHRoaXMudHJhbnNwb3J0LmNsb3NlKCl9LHQ9KCk9Pnt0aGlzLm9mZigidXBncmFkZSIsdCksdGhpcy5vZmYoInVwZ3JhZGVFcnJvciIsdCksZSgpfSxuPSgpPT57dGhpcy5vbmNlKCJ1cGdyYWRlIix0KSx0aGlzLm9uY2UoInVwZ3JhZGVFcnJvciIsdCl9O3JldHVybiJvcGVuaW5nIiE9PXRoaXMucmVhZHlTdGF0ZSYmIm9wZW4iIT09dGhpcy5yZWFkeVN0YXRlfHwodGhpcy5yZWFkeVN0YXRlPSJjbG9zaW5nIix0aGlzLndyaXRlQnVmZmVyLmxlbmd0aD90aGlzLm9uY2UoImRyYWluIiwoKT0+e3RoaXMudXBncmFkaW5nP24oKTplKCl9KTp0aGlzLnVwZ3JhZGluZz9uKCk6ZSgpKSx0aGlzfV9vbkVycm9yKGUpe2lmKGJlLnByaW9yV2Vic29ja2V0U3VjY2Vzcz0hMSx0aGlzLm9wdHMudHJ5QWxsVHJhbnNwb3J0cyYmdGhpcy50cmFuc3BvcnRzLmxlbmd0aD4xJiYib3BlbmluZyI9PT10aGlzLnJlYWR5U3RhdGUpcmV0dXJuIHRoaXMudHJhbnNwb3J0cy5zaGlmdCgpLHRoaXMuX29wZW4oKTt0aGlzLmVtaXRSZXNlcnZlZCgiZXJyb3IiLGUpLHRoaXMuX29uQ2xvc2UoInRyYW5zcG9ydCBlcnJvciIsZSl9X29uQ2xvc2UoZSx0KXtpZigib3BlbmluZyI9PT10aGlzLnJlYWR5U3RhdGV8fCJvcGVuIj09PXRoaXMucmVhZHlTdGF0ZXx8ImNsb3NpbmciPT09dGhpcy5yZWFkeVN0YXRlKXtpZih0aGlzLmNsZWFyVGltZW91dEZuKHRoaXMuX3BpbmdUaW1lb3V0VGltZXIpLHRoaXMudHJhbnNwb3J0LnJlbW92ZUFsbExpc3RlbmVycygiY2xvc2UiKSx0aGlzLnRyYW5zcG9ydC5jbG9zZSgpLHRoaXMudHJhbnNwb3J0LnJlbW92ZUFsbExpc3RlbmVycygpLHllJiYodGhpcy5fYmVmb3JldW5sb2FkRXZlbnRMaXN0ZW5lciYmcmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmVmb3JldW5sb2FkIix0aGlzLl9iZWZvcmV1bmxvYWRFdmVudExpc3RlbmVyLCExKSx0aGlzLl9vZmZsaW5lRXZlbnRMaXN0ZW5lcikpe2NvbnN0IGU9dmUuaW5kZXhPZih0aGlzLl9vZmZsaW5lRXZlbnRMaXN0ZW5lcik7LTEhPT1lJiZ2ZS5zcGxpY2UoZSwxKX10aGlzLnJlYWR5U3RhdGU9ImNsb3NlZCIsdGhpcy5pZD1udWxsLHRoaXMuZW1pdFJlc2VydmVkKCJjbG9zZSIsZSx0KSx0aGlzLndyaXRlQnVmZmVyPVtdLHRoaXMuX3ByZXZCdWZmZXJMZW49MH19fWJlLnByb3RvY29sPTQ7Y2xhc3Mgd2UgZXh0ZW5kcyBiZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdXBncmFkZXM9W119b25PcGVuKCl7aWYoc3VwZXIub25PcGVuKCksIm9wZW4iPT09dGhpcy5yZWFkeVN0YXRlJiZ0aGlzLm9wdHMudXBncmFkZSlmb3IobGV0IGU9MDtlPHRoaXMuX3VwZ3JhZGVzLmxlbmd0aDtlKyspdGhpcy5fcHJvYmUodGhpcy5fdXBncmFkZXNbZV0pfV9wcm9iZShlKXtsZXQgdD10aGlzLmNyZWF0ZVRyYW5zcG9ydChlKSxuPSExO2JlLnByaW9yV2Vic29ja2V0U3VjY2Vzcz0hMTtjb25zdCByPSgpPT57bnx8KHQuc2VuZChbe3R5cGU6InBpbmciLGRhdGE6InByb2JlIn1dKSx0Lm9uY2UoInBhY2tldCIsZT0+e2lmKCFuKWlmKCJwb25nIj09PWUudHlwZSYmInByb2JlIj09PWUuZGF0YSl7aWYodGhpcy51cGdyYWRpbmc9ITAsdGhpcy5lbWl0UmVzZXJ2ZWQoInVwZ3JhZGluZyIsdCksIXQpcmV0dXJuO2JlLnByaW9yV2Vic29ja2V0U3VjY2Vzcz0id2Vic29ja2V0Ij09PXQubmFtZSx0aGlzLnRyYW5zcG9ydC5wYXVzZSgoKT0+e258fCJjbG9zZWQiIT09dGhpcy5yZWFkeVN0YXRlJiYodSgpLHRoaXMuc2V0VHJhbnNwb3J0KHQpLHQuc2VuZChbe3R5cGU6InVwZ3JhZGUifV0pLHRoaXMuZW1pdFJlc2VydmVkKCJ1cGdyYWRlIix0KSx0PW51bGwsdGhpcy51cGdyYWRpbmc9ITEsdGhpcy5mbHVzaCgpKX0pfWVsc2V7Y29uc3QgZT1uZXcgRXJyb3IoInByb2JlIGVycm9yIik7ZS50cmFuc3BvcnQ9dC5uYW1lLHRoaXMuZW1pdFJlc2VydmVkKCJ1cGdyYWRlRXJyb3IiLGUpfX0pKX07ZnVuY3Rpb24gbygpe258fChuPSEwLHUoKSx0LmNsb3NlKCksdD1udWxsKX1jb25zdCBpPWU9Pntjb25zdCBuPW5ldyBFcnJvcigicHJvYmUgZXJyb3I6ICIrZSk7bi50cmFuc3BvcnQ9dC5uYW1lLG8oKSx0aGlzLmVtaXRSZXNlcnZlZCgidXBncmFkZUVycm9yIixuKX07ZnVuY3Rpb24gYSgpe2koInRyYW5zcG9ydCBjbG9zZWQiKX1mdW5jdGlvbiBzKCl7aSgic29ja2V0IGNsb3NlZCIpfWZ1bmN0aW9uIGMoZSl7dCYmZS5uYW1lIT09dC5uYW1lJiZvKCl9Y29uc3QgdT0oKT0+e3QucmVtb3ZlTGlzdGVuZXIoIm9wZW4iLHIpLHQucmVtb3ZlTGlzdGVuZXIoImVycm9yIixpKSx0LnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsYSksdGhpcy5vZmYoImNsb3NlIixzKSx0aGlzLm9mZigidXBncmFkaW5nIixjKX07dC5vbmNlKCJvcGVuIixyKSx0Lm9uY2UoImVycm9yIixpKSx0Lm9uY2UoImNsb3NlIixhKSx0aGlzLm9uY2UoImNsb3NlIixzKSx0aGlzLm9uY2UoInVwZ3JhZGluZyIsYyksLTEhPT10aGlzLl91cGdyYWRlcy5pbmRleE9mKCJ3ZWJ0cmFuc3BvcnQiKSYmIndlYnRyYW5zcG9ydCIhPT1lP3RoaXMuc2V0VGltZW91dEZuKCgpPT57bnx8dC5vcGVuKCl9LDIwMCk6dC5vcGVuKCl9b25IYW5kc2hha2UoZSl7dGhpcy5fdXBncmFkZXM9dGhpcy5fZmlsdGVyVXBncmFkZXMoZS51cGdyYWRlcyksc3VwZXIub25IYW5kc2hha2UoZSl9X2ZpbHRlclVwZ3JhZGVzKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspfnRoaXMudHJhbnNwb3J0cy5pbmRleE9mKGVbbl0pJiZ0LnB1c2goZVtuXSk7cmV0dXJuIHR9fWNsYXNzIF9lIGV4dGVuZHMgd2V7Y29uc3RydWN0b3IoZSl7Y29uc3QgdD0ib2JqZWN0Ij09dHlwZW9mIGU/ZTphcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307KCF0LnRyYW5zcG9ydHN8fHQudHJhbnNwb3J0cyYmInN0cmluZyI9PXR5cGVvZiB0LnRyYW5zcG9ydHNbMF0pJiYodC50cmFuc3BvcnRzPSh0LnRyYW5zcG9ydHN8fFsicG9sbGluZyIsIndlYnNvY2tldCIsIndlYnRyYW5zcG9ydCJdKS5tYXAoZT0+cGVbZV0pLmZpbHRlcihlPT4hIWUpKSxzdXBlcihlLHQpfX1jb25zdCBTZT0iZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIsRWU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxDZT0iZnVuY3Rpb24iPT10eXBlb2YgQmxvYnx8InVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiYiW29iamVjdCBCbG9iQ29uc3RydWN0b3JdIj09PUVlLmNhbGwoQmxvYiksa2U9ImZ1bmN0aW9uIj09dHlwZW9mIEZpbGV8fCJ1bmRlZmluZWQiIT10eXBlb2YgRmlsZSYmIltvYmplY3QgRmlsZUNvbnN0cnVjdG9yXSI9PT1FZS5jYWxsKEZpbGUpO2Z1bmN0aW9uIEFlKGUpe3JldHVybiBTZSYmKGUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8KGU9PiJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KGUpOmUuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKGUpKXx8Q2UmJmUgaW5zdGFuY2VvZiBCbG9ifHxrZSYmZSBpbnN0YW5jZW9mIEZpbGV9ZnVuY3Rpb24gT2UoZSx0KXtpZighZXx8Im9iamVjdCIhPXR5cGVvZiBlKXJldHVybiExO2lmKEFycmF5LmlzQXJyYXkoZSkpe2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKylpZihPZShlW3RdKSlyZXR1cm4hMDtyZXR1cm4hMX1pZihBZShlKSlyZXR1cm4hMDtpZihlLnRvSlNPTiYmImZ1bmN0aW9uIj09dHlwZW9mIGUudG9KU09OJiYxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gT2UoZS50b0pTT04oKSwhMCk7Zm9yKGNvbnN0IHQgaW4gZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSYmT2UoZVt0XSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gVGUoZSl7Y29uc3QgdD1bXSxuPWUuZGF0YSxyPWU7cmV0dXJuIHIuZGF0YT14ZShuLHQpLHIuYXR0YWNobWVudHM9dC5sZW5ndGgse3BhY2tldDpyLGJ1ZmZlcnM6dH19ZnVuY3Rpb24geGUoZSx0KXtpZighZSlyZXR1cm4gZTtpZihBZShlKSl7Y29uc3Qgbj17X3BsYWNlaG9sZGVyOiEwLG51bTp0Lmxlbmd0aH07cmV0dXJuIHQucHVzaChlKSxufWlmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IG49bmV3IEFycmF5KGUubGVuZ3RoKTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyluW3JdPXhlKGVbcl0sdCk7cmV0dXJuIG59aWYoIm9iamVjdCI9PXR5cGVvZiBlJiYhKGUgaW5zdGFuY2VvZiBEYXRlKSl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiYobltyXT14ZShlW3JdLHQpKTtyZXR1cm4gbn1yZXR1cm4gZX1mdW5jdGlvbiBJZShlLHQpe3JldHVybiBlLmRhdGE9TmUoZS5kYXRhLHQpLGRlbGV0ZSBlLmF0dGFjaG1lbnRzLGV9ZnVuY3Rpb24gTmUoZSx0KXtpZighZSlyZXR1cm4gZTtpZihlJiYhMD09PWUuX3BsYWNlaG9sZGVyKXtpZigibnVtYmVyIj09dHlwZW9mIGUubnVtJiZlLm51bT49MCYmZS5udW08dC5sZW5ndGgpcmV0dXJuIHRbZS5udW1dO3Rocm93IG5ldyBFcnJvcigiaWxsZWdhbCBhdHRhY2htZW50cyIpfWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspZVtuXT1OZShlW25dLHQpO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBlKWZvcihjb25zdCBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJihlW25dPU5lKGVbbl0sdCkpO3JldHVybiBlfWNvbnN0IExlPVsiY29ubmVjdCIsImNvbm5lY3RfZXJyb3IiLCJkaXNjb25uZWN0IiwiZGlzY29ubmVjdGluZyIsIm5ld0xpc3RlbmVyIiwicmVtb3ZlTGlzdGVuZXIiXSxQZT01O3ZhciBNZTshZnVuY3Rpb24oZSl7ZVtlLkNPTk5FQ1Q9MF09IkNPTk5FQ1QiLGVbZS5ESVNDT05ORUNUPTFdPSJESVNDT05ORUNUIixlW2UuRVZFTlQ9Ml09IkVWRU5UIixlW2UuQUNLPTNdPSJBQ0siLGVbZS5DT05ORUNUX0VSUk9SPTRdPSJDT05ORUNUX0VSUk9SIixlW2UuQklOQVJZX0VWRU5UPTVdPSJCSU5BUllfRVZFTlQiLGVbZS5CSU5BUllfQUNLPTZdPSJCSU5BUllfQUNLIn0oTWV8fChNZT17fSkpO2NsYXNzIFJle2NvbnN0cnVjdG9yKGUpe3RoaXMucmVwbGFjZXI9ZX1lbmNvZGUoZSl7cmV0dXJuIGUudHlwZSE9PU1lLkVWRU5UJiZlLnR5cGUhPT1NZS5BQ0t8fCFPZShlKT9bdGhpcy5lbmNvZGVBc1N0cmluZyhlKV06dGhpcy5lbmNvZGVBc0JpbmFyeSh7dHlwZTplLnR5cGU9PT1NZS5FVkVOVD9NZS5CSU5BUllfRVZFTlQ6TWUuQklOQVJZX0FDSyxuc3A6ZS5uc3AsZGF0YTplLmRhdGEsaWQ6ZS5pZH0pfWVuY29kZUFzU3RyaW5nKGUpe2xldCB0PSIiK2UudHlwZTtyZXR1cm4gZS50eXBlIT09TWUuQklOQVJZX0VWRU5UJiZlLnR5cGUhPT1NZS5CSU5BUllfQUNLfHwodCs9ZS5hdHRhY2htZW50cysiLSIpLGUubnNwJiYiLyIhPT1lLm5zcCYmKHQrPWUubnNwKyIsIiksbnVsbCE9ZS5pZCYmKHQrPWUuaWQpLG51bGwhPWUuZGF0YSYmKHQrPUpTT04uc3RyaW5naWZ5KGUuZGF0YSx0aGlzLnJlcGxhY2VyKSksdH1lbmNvZGVBc0JpbmFyeShlKXtjb25zdCB0PVRlKGUpLG49dGhpcy5lbmNvZGVBc1N0cmluZyh0LnBhY2tldCkscj10LmJ1ZmZlcnM7cmV0dXJuIHIudW5zaGlmdChuKSxyfX1jbGFzcyBEZSBleHRlbmRzICR7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLnJldml2ZXI9ZX1hZGQoZSl7bGV0IHQ7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZih0aGlzLnJlY29uc3RydWN0b3IpdGhyb3cgbmV3IEVycm9yKCJnb3QgcGxhaW50ZXh0IGRhdGEgd2hlbiByZWNvbnN0cnVjdGluZyBhIHBhY2tldCIpO3Q9dGhpcy5kZWNvZGVTdHJpbmcoZSk7Y29uc3Qgbj10LnR5cGU9PT1NZS5CSU5BUllfRVZFTlQ7bnx8dC50eXBlPT09TWUuQklOQVJZX0FDSz8odC50eXBlPW4/TWUuRVZFTlQ6TWUuQUNLLHRoaXMucmVjb25zdHJ1Y3Rvcj1uZXcgRmUodCksMD09PXQuYXR0YWNobWVudHMmJnN1cGVyLmVtaXRSZXNlcnZlZCgiZGVjb2RlZCIsdCkpOnN1cGVyLmVtaXRSZXNlcnZlZCgiZGVjb2RlZCIsdCl9ZWxzZXtpZighQWUoZSkmJiFlLmJhc2U2NCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gdHlwZTogIitlKTtpZighdGhpcy5yZWNvbnN0cnVjdG9yKXRocm93IG5ldyBFcnJvcigiZ290IGJpbmFyeSBkYXRhIHdoZW4gbm90IHJlY29uc3RydWN0aW5nIGEgcGFja2V0Iik7dD10aGlzLnJlY29uc3RydWN0b3IudGFrZUJpbmFyeURhdGEoZSksdCYmKHRoaXMucmVjb25zdHJ1Y3Rvcj1udWxsLHN1cGVyLmVtaXRSZXNlcnZlZCgiZGVjb2RlZCIsdCkpfX1kZWNvZGVTdHJpbmcoZSl7bGV0IHQ9MDtjb25zdCBuPXt0eXBlOk51bWJlcihlLmNoYXJBdCgwKSl9O2lmKHZvaWQgMD09PU1lW24udHlwZV0pdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHBhY2tldCB0eXBlICIrbi50eXBlKTtpZihuLnR5cGU9PT1NZS5CSU5BUllfRVZFTlR8fG4udHlwZT09PU1lLkJJTkFSWV9BQ0spe2NvbnN0IHI9dCsxO2Zvcig7Ii0iIT09ZS5jaGFyQXQoKyt0KSYmdCE9ZS5sZW5ndGg7KTtjb25zdCBvPWUuc3Vic3RyaW5nKHIsdCk7aWYobyE9TnVtYmVyKG8pfHwiLSIhPT1lLmNoYXJBdCh0KSl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgYXR0YWNobWVudHMiKTtuLmF0dGFjaG1lbnRzPU51bWJlcihvKX1pZigiLyI9PT1lLmNoYXJBdCh0KzEpKXtjb25zdCByPXQrMTtmb3IoOysrdDspe2lmKCIsIj09PWUuY2hhckF0KHQpKWJyZWFrO2lmKHQ9PT1lLmxlbmd0aClicmVha31uLm5zcD1lLnN1YnN0cmluZyhyLHQpfWVsc2Ugbi5uc3A9Ii8iO2NvbnN0IHI9ZS5jaGFyQXQodCsxKTtpZigiIiE9PXImJk51bWJlcihyKT09cil7Y29uc3Qgcj10KzE7Zm9yKDsrK3Q7KXtjb25zdCBuPWUuY2hhckF0KHQpO2lmKG51bGw9PW58fE51bWJlcihuKSE9bil7LS10O2JyZWFrfWlmKHQ9PT1lLmxlbmd0aClicmVha31uLmlkPU51bWJlcihlLnN1YnN0cmluZyhyLHQrMSkpfWlmKGUuY2hhckF0KCsrdCkpe2NvbnN0IHI9dGhpcy50cnlQYXJzZShlLnN1YnN0cih0KSk7aWYoIURlLmlzUGF5bG9hZFZhbGlkKG4udHlwZSxyKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcGF5bG9hZCIpO24uZGF0YT1yfXJldHVybiBufXRyeVBhcnNlKGUpe3RyeXtyZXR1cm4gSlNPTi5wYXJzZShlLHRoaXMucmV2aXZlcil9Y2F0Y2goZSl7cmV0dXJuITF9fXN0YXRpYyBpc1BheWxvYWRWYWxpZChlLHQpe3N3aXRjaChlKXtjYXNlIE1lLkNPTk5FQ1Q6cmV0dXJuIEJlKHQpO2Nhc2UgTWUuRElTQ09OTkVDVDpyZXR1cm4gdm9pZCAwPT09dDtjYXNlIE1lLkNPTk5FQ1RfRVJST1I6cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHxCZSh0KTtjYXNlIE1lLkVWRU5UOmNhc2UgTWUuQklOQVJZX0VWRU5UOnJldHVybiBBcnJheS5pc0FycmF5KHQpJiYoIm51bWJlciI9PXR5cGVvZiB0WzBdfHwic3RyaW5nIj09dHlwZW9mIHRbMF0mJi0xPT09TGUuaW5kZXhPZih0WzBdKSk7Y2FzZSBNZS5BQ0s6Y2FzZSBNZS5CSU5BUllfQUNLOnJldHVybiBBcnJheS5pc0FycmF5KHQpfX1kZXN0cm95KCl7dGhpcy5yZWNvbnN0cnVjdG9yJiYodGhpcy5yZWNvbnN0cnVjdG9yLmZpbmlzaGVkUmVjb25zdHJ1Y3Rpb24oKSx0aGlzLnJlY29uc3RydWN0b3I9bnVsbCl9fWNsYXNzIEZle2NvbnN0cnVjdG9yKGUpe3RoaXMucGFja2V0PWUsdGhpcy5idWZmZXJzPVtdLHRoaXMucmVjb25QYWNrPWV9dGFrZUJpbmFyeURhdGEoZSl7aWYodGhpcy5idWZmZXJzLnB1c2goZSksdGhpcy5idWZmZXJzLmxlbmd0aD09PXRoaXMucmVjb25QYWNrLmF0dGFjaG1lbnRzKXtjb25zdCBlPUllKHRoaXMucmVjb25QYWNrLHRoaXMuYnVmZmVycyk7cmV0dXJuIHRoaXMuZmluaXNoZWRSZWNvbnN0cnVjdGlvbigpLGV9cmV0dXJuIG51bGx9ZmluaXNoZWRSZWNvbnN0cnVjdGlvbigpe3RoaXMucmVjb25QYWNrPW51bGwsdGhpcy5idWZmZXJzPVtdfX1jb25zdCBqZT1OdW1iZXIuaXNJbnRlZ2VyfHxmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUmJmlzRmluaXRlKGUpJiZNYXRoLmZsb29yKGUpPT09ZX07ZnVuY3Rpb24gQmUoZSl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9ZnVuY3Rpb24gVmUoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlLm5zcCYmKHZvaWQgMD09PSh0PWUuaWQpfHxqZSh0KSkmJmZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UgTWUuQ09OTkVDVDpyZXR1cm4gdm9pZCAwPT09dHx8QmUodCk7Y2FzZSBNZS5ESVNDT05ORUNUOnJldHVybiB2b2lkIDA9PT10O2Nhc2UgTWUuRVZFTlQ6cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJigibnVtYmVyIj09dHlwZW9mIHRbMF18fCJzdHJpbmciPT10eXBlb2YgdFswXSYmLTE9PT1MZS5pbmRleE9mKHRbMF0pKTtjYXNlIE1lLkFDSzpyZXR1cm4gQXJyYXkuaXNBcnJheSh0KTtjYXNlIE1lLkNPTk5FQ1RfRVJST1I6cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHxCZSh0KTtkZWZhdWx0OnJldHVybiExfX0oZS50eXBlLGUuZGF0YSk7dmFyIHR9ZnVuY3Rpb24gVWUoZSx0LG4pe3JldHVybiBlLm9uKHQsbiksZnVuY3Rpb24oKXtlLm9mZih0LG4pfX1jb25zdCB6ZT1PYmplY3QuZnJlZXplKHtjb25uZWN0OjEsY29ubmVjdF9lcnJvcjoxLGRpc2Nvbm5lY3Q6MSxkaXNjb25uZWN0aW5nOjEsbmV3TGlzdGVuZXI6MSxyZW1vdmVMaXN0ZW5lcjoxfSk7Y2xhc3MgSGUgZXh0ZW5kcyAke2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcigpLHRoaXMuY29ubmVjdGVkPSExLHRoaXMucmVjb3ZlcmVkPSExLHRoaXMucmVjZWl2ZUJ1ZmZlcj1bXSx0aGlzLnNlbmRCdWZmZXI9W10sdGhpcy5fcXVldWU9W10sdGhpcy5fcXVldWVTZXE9MCx0aGlzLmlkcz0wLHRoaXMuYWNrcz17fSx0aGlzLmZsYWdzPXt9LHRoaXMuaW89ZSx0aGlzLm5zcD10LG4mJm4uYXV0aCYmKHRoaXMuYXV0aD1uLmF1dGgpLHRoaXMuX29wdHM9T2JqZWN0LmFzc2lnbih7fSxuKSx0aGlzLmlvLl9hdXRvQ29ubmVjdCYmdGhpcy5vcGVuKCl9Z2V0IGRpc2Nvbm5lY3RlZCgpe3JldHVybiF0aGlzLmNvbm5lY3RlZH1zdWJFdmVudHMoKXtpZih0aGlzLnN1YnMpcmV0dXJuO2NvbnN0IGU9dGhpcy5pbzt0aGlzLnN1YnM9W1VlKGUsIm9wZW4iLHRoaXMub25vcGVuLmJpbmQodGhpcykpLFVlKGUsInBhY2tldCIsdGhpcy5vbnBhY2tldC5iaW5kKHRoaXMpKSxVZShlLCJlcnJvciIsdGhpcy5vbmVycm9yLmJpbmQodGhpcykpLFVlKGUsImNsb3NlIix0aGlzLm9uY2xvc2UuYmluZCh0aGlzKSldfWdldCBhY3RpdmUoKXtyZXR1cm4hIXRoaXMuc3Vic31jb25uZWN0KCl7cmV0dXJuIHRoaXMuY29ubmVjdGVkfHwodGhpcy5zdWJFdmVudHMoKSx0aGlzLmlvLl9yZWNvbm5lY3Rpbmd8fHRoaXMuaW8ub3BlbigpLCJvcGVuIj09PXRoaXMuaW8uX3JlYWR5U3RhdGUmJnRoaXMub25vcGVuKCkpLHRoaXN9b3Blbigpe3JldHVybiB0aGlzLmNvbm5lY3QoKX1zZW5kKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHQudW5zaGlmdCgibWVzc2FnZSIpLHRoaXMuZW1pdC5hcHBseSh0aGlzLHQpLHRoaXN9ZW1pdChlKXt2YXIgdCxuLHI7aWYoemUuaGFzT3duUHJvcGVydHkoZSkpdGhyb3cgbmV3IEVycm9yKCciJytlLnRvU3RyaW5nKCkrJyIgaXMgYSByZXNlcnZlZCBldmVudCBuYW1lJyk7Zm9yKHZhciBvPWFyZ3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkobz4xP28tMTowKSxhPTE7YTxvO2ErKylpW2EtMV09YXJndW1lbnRzW2FdO2lmKGkudW5zaGlmdChlKSx0aGlzLl9vcHRzLnJldHJpZXMmJiF0aGlzLmZsYWdzLmZyb21RdWV1ZSYmIXRoaXMuZmxhZ3Mudm9sYXRpbGUpcmV0dXJuIHRoaXMuX2FkZFRvUXVldWUoaSksdGhpcztjb25zdCBzPXt0eXBlOk1lLkVWRU5ULGRhdGE6aSxvcHRpb25zOnt9fTtpZihzLm9wdGlvbnMuY29tcHJlc3M9ITEhPT10aGlzLmZsYWdzLmNvbXByZXNzLCJmdW5jdGlvbiI9PXR5cGVvZiBpW2kubGVuZ3RoLTFdKXtjb25zdCBlPXRoaXMuaWRzKyssdD1pLnBvcCgpO3RoaXMuX3JlZ2lzdGVyQWNrQ2FsbGJhY2soZSx0KSxzLmlkPWV9Y29uc3QgYz1udWxsPT09KG49bnVsbD09PSh0PXRoaXMuaW8uZW5naW5lKXx8dm9pZCAwPT09dD92b2lkIDA6dC50cmFuc3BvcnQpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLndyaXRhYmxlLHU9dGhpcy5jb25uZWN0ZWQmJiEobnVsbD09PShyPXRoaXMuaW8uZW5naW5lKXx8dm9pZCAwPT09cj92b2lkIDA6ci5faGFzUGluZ0V4cGlyZWQoKSk7cmV0dXJuIHRoaXMuZmxhZ3Mudm9sYXRpbGUmJiFjfHwodT8odGhpcy5ub3RpZnlPdXRnb2luZ0xpc3RlbmVycyhzKSx0aGlzLnBhY2tldChzKSk6dGhpcy5zZW5kQnVmZmVyLnB1c2gocykpLHRoaXMuZmxhZ3M9e30sdGhpc31fcmVnaXN0ZXJBY2tDYWxsYmFjayhlLHQpe3ZhciBuLHI9dGhpcztjb25zdCBvPW51bGwhPT0obj10aGlzLmZsYWdzLnRpbWVvdXQpJiZ2b2lkIDAhPT1uP246dGhpcy5fb3B0cy5hY2tUaW1lb3V0O2lmKHZvaWQgMD09PW8pcmV0dXJuIHZvaWQodGhpcy5hY2tzW2VdPXQpO2NvbnN0IGk9dGhpcy5pby5zZXRUaW1lb3V0Rm4oKCk9PntkZWxldGUgdGhpcy5hY2tzW2VdO2ZvcihsZXQgdD0wO3Q8dGhpcy5zZW5kQnVmZmVyLmxlbmd0aDt0KyspdGhpcy5zZW5kQnVmZmVyW3RdLmlkPT09ZSYmdGhpcy5zZW5kQnVmZmVyLnNwbGljZSh0LDEpO3QuY2FsbCh0aGlzLG5ldyBFcnJvcigib3BlcmF0aW9uIGhhcyB0aW1lZCBvdXQiKSl9LG8pLGE9ZnVuY3Rpb24oKXtyLmlvLmNsZWFyVGltZW91dEZuKGkpO2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGUpLG89MDtvPGU7bysrKW5bb109YXJndW1lbnRzW29dO3QuYXBwbHkocixuKX07YS53aXRoRXJyb3I9ITAsdGhpcy5hY2tzW2VdPWF9ZW1pdFdpdGhBY2soZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodD4xP3QtMTowKSxyPTE7cjx0O3IrKyluW3ItMV09YXJndW1lbnRzW3JdO3JldHVybiBuZXcgUHJvbWlzZSgodCxyKT0+e2NvbnN0IG89KGUsbik9PmU/cihlKTp0KG4pO28ud2l0aEVycm9yPSEwLG4ucHVzaChvKSx0aGlzLmVtaXQoZSwuLi5uKX0pfV9hZGRUb1F1ZXVlKGUpe3ZhciB0PXRoaXM7bGV0IG47ImZ1bmN0aW9uIj09dHlwZW9mIGVbZS5sZW5ndGgtMV0mJihuPWUucG9wKCkpO2NvbnN0IHI9e2lkOnRoaXMuX3F1ZXVlU2VxKyssdHJ5Q291bnQ6MCxwZW5kaW5nOiExLGFyZ3M6ZSxmbGFnczpPYmplY3QuYXNzaWduKHtmcm9tUXVldWU6ITB9LHRoaXMuZmxhZ3MpfTtlLnB1c2goZnVuY3Rpb24oZSl7dC5fcXVldWVbMF07aWYobnVsbCE9PWUpci50cnlDb3VudD50Ll9vcHRzLnJldHJpZXMmJih0Ll9xdWV1ZS5zaGlmdCgpLG4mJm4oZSkpO2Vsc2UgaWYodC5fcXVldWUuc2hpZnQoKSxuKXtmb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShvPjE/by0xOjApLGE9MTthPG87YSsrKWlbYS0xXT1hcmd1bWVudHNbYV07bihudWxsLC4uLmkpfXJldHVybiByLnBlbmRpbmc9ITEsdC5fZHJhaW5RdWV1ZSgpfSksdGhpcy5fcXVldWUucHVzaChyKSx0aGlzLl9kcmFpblF1ZXVlKCl9X2RyYWluUXVldWUoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2lmKCF0aGlzLmNvbm5lY3RlZHx8MD09PXRoaXMuX3F1ZXVlLmxlbmd0aClyZXR1cm47Y29uc3QgdD10aGlzLl9xdWV1ZVswXTt0LnBlbmRpbmcmJiFlfHwodC5wZW5kaW5nPSEwLHQudHJ5Q291bnQrKyx0aGlzLmZsYWdzPXQuZmxhZ3MsdGhpcy5lbWl0LmFwcGx5KHRoaXMsdC5hcmdzKSl9cGFja2V0KGUpe2UubnNwPXRoaXMubnNwLHRoaXMuaW8uX3BhY2tldChlKX1vbm9wZW4oKXsiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5hdXRoP3RoaXMuYXV0aChlPT57dGhpcy5fc2VuZENvbm5lY3RQYWNrZXQoZSl9KTp0aGlzLl9zZW5kQ29ubmVjdFBhY2tldCh0aGlzLmF1dGgpfV9zZW5kQ29ubmVjdFBhY2tldChlKXt0aGlzLnBhY2tldCh7dHlwZTpNZS5DT05ORUNULGRhdGE6dGhpcy5fcGlkP09iamVjdC5hc3NpZ24oe3BpZDp0aGlzLl9waWQsb2Zmc2V0OnRoaXMuX2xhc3RPZmZzZXR9LGUpOmV9KX1vbmVycm9yKGUpe3RoaXMuY29ubmVjdGVkfHx0aGlzLmVtaXRSZXNlcnZlZCgiY29ubmVjdF9lcnJvciIsZSl9b25jbG9zZShlLHQpe3RoaXMuY29ubmVjdGVkPSExLGRlbGV0ZSB0aGlzLmlkLHRoaXMuZW1pdFJlc2VydmVkKCJkaXNjb25uZWN0IixlLHQpLHRoaXMuX2NsZWFyQWNrcygpfV9jbGVhckFja3MoKXtPYmplY3Qua2V5cyh0aGlzLmFja3MpLmZvckVhY2goZT0+e2lmKCF0aGlzLnNlbmRCdWZmZXIuc29tZSh0PT5TdHJpbmcodC5pZCk9PT1lKSl7Y29uc3QgdD10aGlzLmFja3NbZV07ZGVsZXRlIHRoaXMuYWNrc1tlXSx0LndpdGhFcnJvciYmdC5jYWxsKHRoaXMsbmV3IEVycm9yKCJzb2NrZXQgaGFzIGJlZW4gZGlzY29ubmVjdGVkIikpfX0pfW9ucGFja2V0KGUpe2lmKGUubnNwPT09dGhpcy5uc3Apc3dpdGNoKGUudHlwZSl7Y2FzZSBNZS5DT05ORUNUOmUuZGF0YSYmZS5kYXRhLnNpZD90aGlzLm9uY29ubmVjdChlLmRhdGEuc2lkLGUuZGF0YS5waWQpOnRoaXMuZW1pdFJlc2VydmVkKCJjb25uZWN0X2Vycm9yIixuZXcgRXJyb3IoIkl0IHNlZW1zIHlvdSBhcmUgdHJ5aW5nIHRvIHJlYWNoIGEgU29ja2V0LklPIHNlcnZlciBpbiB2Mi54IHdpdGggYSB2My54IGNsaWVudCwgYnV0IHRoZXkgYXJlIG5vdCBjb21wYXRpYmxlIChtb3JlIGluZm9ybWF0aW9uIGhlcmU6IGh0dHBzOi8vc29ja2V0LmlvL2RvY3MvdjMvbWlncmF0aW5nLWZyb20tMi14LXRvLTMtMC8pIikpO2JyZWFrO2Nhc2UgTWUuRVZFTlQ6Y2FzZSBNZS5CSU5BUllfRVZFTlQ6dGhpcy5vbmV2ZW50KGUpO2JyZWFrO2Nhc2UgTWUuQUNLOmNhc2UgTWUuQklOQVJZX0FDSzp0aGlzLm9uYWNrKGUpO2JyZWFrO2Nhc2UgTWUuRElTQ09OTkVDVDp0aGlzLm9uZGlzY29ubmVjdCgpO2JyZWFrO2Nhc2UgTWUuQ09OTkVDVF9FUlJPUjp0aGlzLmRlc3Ryb3koKTtjb25zdCB0PW5ldyBFcnJvcihlLmRhdGEubWVzc2FnZSk7dC5kYXRhPWUuZGF0YS5kYXRhLHRoaXMuZW1pdFJlc2VydmVkKCJjb25uZWN0X2Vycm9yIix0KX19b25ldmVudChlKXtjb25zdCB0PWUuZGF0YXx8W107bnVsbCE9ZS5pZCYmdC5wdXNoKHRoaXMuYWNrKGUuaWQpKSx0aGlzLmNvbm5lY3RlZD90aGlzLmVtaXRFdmVudCh0KTp0aGlzLnJlY2VpdmVCdWZmZXIucHVzaChPYmplY3QuZnJlZXplKHQpKX1lbWl0RXZlbnQoZSl7aWYodGhpcy5fYW55TGlzdGVuZXJzJiZ0aGlzLl9hbnlMaXN0ZW5lcnMubGVuZ3RoKXtjb25zdCB0PXRoaXMuX2FueUxpc3RlbmVycy5zbGljZSgpO2Zvcihjb25zdCBuIG9mIHQpbi5hcHBseSh0aGlzLGUpfXN1cGVyLmVtaXQuYXBwbHkodGhpcyxlKSx0aGlzLl9waWQmJmUubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIGVbZS5sZW5ndGgtMV0mJih0aGlzLl9sYXN0T2Zmc2V0PWVbZS5sZW5ndGgtMV0pfWFjayhlKXtjb25zdCB0PXRoaXM7bGV0IG49ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIW4pe249ITA7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkociksaT0wO2k8cjtpKyspb1tpXT1hcmd1bWVudHNbaV07dC5wYWNrZXQoe3R5cGU6TWUuQUNLLGlkOmUsZGF0YTpvfSl9fX1vbmFjayhlKXtjb25zdCB0PXRoaXMuYWNrc1tlLmlkXTsiZnVuY3Rpb24iPT10eXBlb2YgdCYmKGRlbGV0ZSB0aGlzLmFja3NbZS5pZF0sdC53aXRoRXJyb3ImJmUuZGF0YS51bnNoaWZ0KG51bGwpLHQuYXBwbHkodGhpcyxlLmRhdGEpKX1vbmNvbm5lY3QoZSx0KXt0aGlzLmlkPWUsdGhpcy5yZWNvdmVyZWQ9dCYmdGhpcy5fcGlkPT09dCx0aGlzLl9waWQ9dCx0aGlzLmNvbm5lY3RlZD0hMCx0aGlzLmVtaXRCdWZmZXJlZCgpLHRoaXMuX2RyYWluUXVldWUoITApLHRoaXMuZW1pdFJlc2VydmVkKCJjb25uZWN0Iil9ZW1pdEJ1ZmZlcmVkKCl7dGhpcy5yZWNlaXZlQnVmZmVyLmZvckVhY2goZT0+dGhpcy5lbWl0RXZlbnQoZSkpLHRoaXMucmVjZWl2ZUJ1ZmZlcj1bXSx0aGlzLnNlbmRCdWZmZXIuZm9yRWFjaChlPT57dGhpcy5ub3RpZnlPdXRnb2luZ0xpc3RlbmVycyhlKSx0aGlzLnBhY2tldChlKX0pLHRoaXMuc2VuZEJ1ZmZlcj1bXX1vbmRpc2Nvbm5lY3QoKXt0aGlzLmRlc3Ryb3koKSx0aGlzLm9uY2xvc2UoImlvIHNlcnZlciBkaXNjb25uZWN0Iil9ZGVzdHJveSgpe3RoaXMuc3VicyYmKHRoaXMuc3Vicy5mb3JFYWNoKGU9PmUoKSksdGhpcy5zdWJzPXZvaWQgMCksdGhpcy5pby5fZGVzdHJveSh0aGlzKX1kaXNjb25uZWN0KCl7cmV0dXJuIHRoaXMuY29ubmVjdGVkJiZ0aGlzLnBhY2tldCh7dHlwZTpNZS5ESVNDT05ORUNUfSksdGhpcy5kZXN0cm95KCksdGhpcy5jb25uZWN0ZWQmJnRoaXMub25jbG9zZSgiaW8gY2xpZW50IGRpc2Nvbm5lY3QiKSx0aGlzfWNsb3NlKCl7cmV0dXJuIHRoaXMuZGlzY29ubmVjdCgpfWNvbXByZXNzKGUpe3JldHVybiB0aGlzLmZsYWdzLmNvbXByZXNzPWUsdGhpc31nZXQgdm9sYXRpbGUoKXtyZXR1cm4gdGhpcy5mbGFncy52b2xhdGlsZT0hMCx0aGlzfXRpbWVvdXQoZSl7cmV0dXJuIHRoaXMuZmxhZ3MudGltZW91dD1lLHRoaXN9b25BbnkoZSl7cmV0dXJuIHRoaXMuX2FueUxpc3RlbmVycz10aGlzLl9hbnlMaXN0ZW5lcnN8fFtdLHRoaXMuX2FueUxpc3RlbmVycy5wdXNoKGUpLHRoaXN9cHJlcGVuZEFueShlKXtyZXR1cm4gdGhpcy5fYW55TGlzdGVuZXJzPXRoaXMuX2FueUxpc3RlbmVyc3x8W10sdGhpcy5fYW55TGlzdGVuZXJzLnVuc2hpZnQoZSksdGhpc31vZmZBbnkoZSl7aWYoIXRoaXMuX2FueUxpc3RlbmVycylyZXR1cm4gdGhpcztpZihlKXtjb25zdCB0PXRoaXMuX2FueUxpc3RlbmVycztmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylpZihlPT09dFtuXSlyZXR1cm4gdC5zcGxpY2UobiwxKSx0aGlzfWVsc2UgdGhpcy5fYW55TGlzdGVuZXJzPVtdO3JldHVybiB0aGlzfWxpc3RlbmVyc0FueSgpe3JldHVybiB0aGlzLl9hbnlMaXN0ZW5lcnN8fFtdfW9uQW55T3V0Z29pbmcoZSl7cmV0dXJuIHRoaXMuX2FueU91dGdvaW5nTGlzdGVuZXJzPXRoaXMuX2FueU91dGdvaW5nTGlzdGVuZXJzfHxbXSx0aGlzLl9hbnlPdXRnb2luZ0xpc3RlbmVycy5wdXNoKGUpLHRoaXN9cHJlcGVuZEFueU91dGdvaW5nKGUpe3JldHVybiB0aGlzLl9hbnlPdXRnb2luZ0xpc3RlbmVycz10aGlzLl9hbnlPdXRnb2luZ0xpc3RlbmVyc3x8W10sdGhpcy5fYW55T3V0Z29pbmdMaXN0ZW5lcnMudW5zaGlmdChlKSx0aGlzfW9mZkFueU91dGdvaW5nKGUpe2lmKCF0aGlzLl9hbnlPdXRnb2luZ0xpc3RlbmVycylyZXR1cm4gdGhpcztpZihlKXtjb25zdCB0PXRoaXMuX2FueU91dGdvaW5nTGlzdGVuZXJzO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWlmKGU9PT10W25dKXJldHVybiB0LnNwbGljZShuLDEpLHRoaXN9ZWxzZSB0aGlzLl9hbnlPdXRnb2luZ0xpc3RlbmVycz1bXTtyZXR1cm4gdGhpc31saXN0ZW5lcnNBbnlPdXRnb2luZygpe3JldHVybiB0aGlzLl9hbnlPdXRnb2luZ0xpc3RlbmVyc3x8W119bm90aWZ5T3V0Z29pbmdMaXN0ZW5lcnMoZSl7aWYodGhpcy5fYW55T3V0Z29pbmdMaXN0ZW5lcnMmJnRoaXMuX2FueU91dGdvaW5nTGlzdGVuZXJzLmxlbmd0aCl7Y29uc3QgdD10aGlzLl9hbnlPdXRnb2luZ0xpc3RlbmVycy5zbGljZSgpO2Zvcihjb25zdCBuIG9mIHQpbi5hcHBseSh0aGlzLGUuZGF0YSl9fX1mdW5jdGlvbiAkZShlKXtlPWV8fHt9LHRoaXMubXM9ZS5taW58fDEwMCx0aGlzLm1heD1lLm1heHx8MWU0LHRoaXMuZmFjdG9yPWUuZmFjdG9yfHwyLHRoaXMuaml0dGVyPWUuaml0dGVyPjAmJmUuaml0dGVyPD0xP2Uuaml0dGVyOjAsdGhpcy5hdHRlbXB0cz0wfSRlLnByb3RvdHlwZS5kdXJhdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubXMqTWF0aC5wb3codGhpcy5mYWN0b3IsdGhpcy5hdHRlbXB0cysrKTtpZih0aGlzLmppdHRlcil7dmFyIHQ9TWF0aC5yYW5kb20oKSxuPU1hdGguZmxvb3IodCp0aGlzLmppdHRlciplKTtlPTEmTWF0aC5mbG9vcigxMCp0KT9lK246ZS1ufXJldHVybiAwfE1hdGgubWluKGUsdGhpcy5tYXgpfSwkZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmF0dGVtcHRzPTB9LCRlLnByb3RvdHlwZS5zZXRNaW49ZnVuY3Rpb24oZSl7dGhpcy5tcz1lfSwkZS5wcm90b3R5cGUuc2V0TWF4PWZ1bmN0aW9uKGUpe3RoaXMubWF4PWV9LCRlLnByb3RvdHlwZS5zZXRKaXR0ZXI9ZnVuY3Rpb24oZSl7dGhpcy5qaXR0ZXI9ZX07Y2xhc3MgWWUgZXh0ZW5kcyAke2NvbnN0cnVjdG9yKGUsdCl7dmFyIG47c3VwZXIoKSx0aGlzLm5zcHM9e30sdGhpcy5zdWJzPVtdLGUmJiJvYmplY3QiPT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCksKHQ9dHx8e30pLnBhdGg9dC5wYXRofHwiL3NvY2tldC5pbyIsdGhpcy5vcHRzPXQsSyh0aGlzLHQpLHRoaXMucmVjb25uZWN0aW9uKCExIT09dC5yZWNvbm5lY3Rpb24pLHRoaXMucmVjb25uZWN0aW9uQXR0ZW1wdHModC5yZWNvbm5lY3Rpb25BdHRlbXB0c3x8MS8wKSx0aGlzLnJlY29ubmVjdGlvbkRlbGF5KHQucmVjb25uZWN0aW9uRGVsYXl8fDFlMyksdGhpcy5yZWNvbm5lY3Rpb25EZWxheU1heCh0LnJlY29ubmVjdGlvbkRlbGF5TWF4fHw1ZTMpLHRoaXMucmFuZG9taXphdGlvbkZhY3RvcihudWxsIT09KG49dC5yYW5kb21pemF0aW9uRmFjdG9yKSYmdm9pZCAwIT09bj9uOi41KSx0aGlzLmJhY2tvZmY9bmV3ICRlKHttaW46dGhpcy5yZWNvbm5lY3Rpb25EZWxheSgpLG1heDp0aGlzLnJlY29ubmVjdGlvbkRlbGF5TWF4KCksaml0dGVyOnRoaXMucmFuZG9taXphdGlvbkZhY3RvcigpfSksdGhpcy50aW1lb3V0KG51bGw9PXQudGltZW91dD8yZTQ6dC50aW1lb3V0KSx0aGlzLl9yZWFkeVN0YXRlPSJjbG9zZWQiLHRoaXMudXJpPWU7Y29uc3Qgbz10LnBhcnNlcnx8cjt0aGlzLmVuY29kZXI9bmV3IG8uRW5jb2Rlcix0aGlzLmRlY29kZXI9bmV3IG8uRGVjb2Rlcix0aGlzLl9hdXRvQ29ubmVjdD0hMSE9PXQuYXV0b0Nvbm5lY3QsdGhpcy5fYXV0b0Nvbm5lY3QmJnRoaXMub3BlbigpfXJlY29ubmVjdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5fcmVjb25uZWN0aW9uPSEhZSxlfHwodGhpcy5za2lwUmVjb25uZWN0PSEwKSx0aGlzKTp0aGlzLl9yZWNvbm5lY3Rpb259cmVjb25uZWN0aW9uQXR0ZW1wdHMoZSl7cmV0dXJuIHZvaWQgMD09PWU/dGhpcy5fcmVjb25uZWN0aW9uQXR0ZW1wdHM6KHRoaXMuX3JlY29ubmVjdGlvbkF0dGVtcHRzPWUsdGhpcyl9cmVjb25uZWN0aW9uRGVsYXkoZSl7dmFyIHQ7cmV0dXJuIHZvaWQgMD09PWU/dGhpcy5fcmVjb25uZWN0aW9uRGVsYXk6KHRoaXMuX3JlY29ubmVjdGlvbkRlbGF5PWUsbnVsbD09PSh0PXRoaXMuYmFja29mZil8fHZvaWQgMD09PXR8fHQuc2V0TWluKGUpLHRoaXMpfXJhbmRvbWl6YXRpb25GYWN0b3IoZSl7dmFyIHQ7cmV0dXJuIHZvaWQgMD09PWU/dGhpcy5fcmFuZG9taXphdGlvbkZhY3RvcjoodGhpcy5fcmFuZG9taXphdGlvbkZhY3Rvcj1lLG51bGw9PT0odD10aGlzLmJhY2tvZmYpfHx2b2lkIDA9PT10fHx0LnNldEppdHRlcihlKSx0aGlzKX1yZWNvbm5lY3Rpb25EZWxheU1heChlKXt2YXIgdDtyZXR1cm4gdm9pZCAwPT09ZT90aGlzLl9yZWNvbm5lY3Rpb25EZWxheU1heDoodGhpcy5fcmVjb25uZWN0aW9uRGVsYXlNYXg9ZSxudWxsPT09KHQ9dGhpcy5iYWNrb2ZmKXx8dm9pZCAwPT09dHx8dC5zZXRNYXgoZSksdGhpcyl9dGltZW91dChlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5fdGltZW91dD1lLHRoaXMpOnRoaXMuX3RpbWVvdXR9bWF5YmVSZWNvbm5lY3RPbk9wZW4oKXshdGhpcy5fcmVjb25uZWN0aW5nJiZ0aGlzLl9yZWNvbm5lY3Rpb24mJjA9PT10aGlzLmJhY2tvZmYuYXR0ZW1wdHMmJnRoaXMucmVjb25uZWN0KCl9b3BlbihlKXtpZih+dGhpcy5fcmVhZHlTdGF0ZS5pbmRleE9mKCJvcGVuIikpcmV0dXJuIHRoaXM7dGhpcy5lbmdpbmU9bmV3IF9lKHRoaXMudXJpLHRoaXMub3B0cyk7Y29uc3QgdD10aGlzLmVuZ2luZSxuPXRoaXM7dGhpcy5fcmVhZHlTdGF0ZT0ib3BlbmluZyIsdGhpcy5za2lwUmVjb25uZWN0PSExO2NvbnN0IHI9VWUodCwib3BlbiIsZnVuY3Rpb24oKXtuLm9ub3BlbigpLGUmJmUoKX0pLG89dD0+e3RoaXMuY2xlYW51cCgpLHRoaXMuX3JlYWR5U3RhdGU9ImNsb3NlZCIsdGhpcy5lbWl0UmVzZXJ2ZWQoImVycm9yIix0KSxlP2UodCk6dGhpcy5tYXliZVJlY29ubmVjdE9uT3BlbigpfSxpPVVlKHQsImVycm9yIixvKTtpZighMSE9PXRoaXMuX3RpbWVvdXQpe2NvbnN0IGU9dGhpcy5fdGltZW91dCxuPXRoaXMuc2V0VGltZW91dEZuKCgpPT57cigpLG8obmV3IEVycm9yKCJ0aW1lb3V0IikpLHQuY2xvc2UoKX0sZSk7dGhpcy5vcHRzLmF1dG9VbnJlZiYmbi51bnJlZigpLHRoaXMuc3Vicy5wdXNoKCgpPT57dGhpcy5jbGVhclRpbWVvdXRGbihuKX0pfXJldHVybiB0aGlzLnN1YnMucHVzaChyKSx0aGlzLnN1YnMucHVzaChpKSx0aGlzfWNvbm5lY3QoZSl7cmV0dXJuIHRoaXMub3BlbihlKX1vbm9wZW4oKXt0aGlzLmNsZWFudXAoKSx0aGlzLl9yZWFkeVN0YXRlPSJvcGVuIix0aGlzLmVtaXRSZXNlcnZlZCgib3BlbiIpO2NvbnN0IGU9dGhpcy5lbmdpbmU7dGhpcy5zdWJzLnB1c2goVWUoZSwicGluZyIsdGhpcy5vbnBpbmcuYmluZCh0aGlzKSksVWUoZSwiZGF0YSIsdGhpcy5vbmRhdGEuYmluZCh0aGlzKSksVWUoZSwiZXJyb3IiLHRoaXMub25lcnJvci5iaW5kKHRoaXMpKSxVZShlLCJjbG9zZSIsdGhpcy5vbmNsb3NlLmJpbmQodGhpcykpLFVlKHRoaXMuZGVjb2RlciwiZGVjb2RlZCIsdGhpcy5vbmRlY29kZWQuYmluZCh0aGlzKSkpfW9ucGluZygpe3RoaXMuZW1pdFJlc2VydmVkKCJwaW5nIil9b25kYXRhKGUpe3RyeXt0aGlzLmRlY29kZXIuYWRkKGUpfWNhdGNoKGUpe3RoaXMub25jbG9zZSgicGFyc2UgZXJyb3IiLGUpfX1vbmRlY29kZWQoZSl7WSgoKT0+e3RoaXMuZW1pdFJlc2VydmVkKCJwYWNrZXQiLGUpfSx0aGlzLnNldFRpbWVvdXRGbil9b25lcnJvcihlKXt0aGlzLmVtaXRSZXNlcnZlZCgiZXJyb3IiLGUpfXNvY2tldChlLHQpe2xldCBuPXRoaXMubnNwc1tlXTtyZXR1cm4gbj90aGlzLl9hdXRvQ29ubmVjdCYmIW4uYWN0aXZlJiZuLmNvbm5lY3QoKToobj1uZXcgSGUodGhpcyxlLHQpLHRoaXMubnNwc1tlXT1uKSxufV9kZXN0cm95KGUpe2NvbnN0IHQ9T2JqZWN0LmtleXModGhpcy5uc3BzKTtmb3IoY29uc3QgZSBvZiB0KXtpZih0aGlzLm5zcHNbZV0uYWN0aXZlKXJldHVybn10aGlzLl9jbG9zZSgpfV9wYWNrZXQoZSl7Y29uc3QgdD10aGlzLmVuY29kZXIuZW5jb2RlKGUpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXRoaXMuZW5naW5lLndyaXRlKHRbbl0sZS5vcHRpb25zKX1jbGVhbnVwKCl7dGhpcy5zdWJzLmZvckVhY2goZT0+ZSgpKSx0aGlzLnN1YnMubGVuZ3RoPTAsdGhpcy5kZWNvZGVyLmRlc3Ryb3koKX1fY2xvc2UoKXt0aGlzLnNraXBSZWNvbm5lY3Q9ITAsdGhpcy5fcmVjb25uZWN0aW5nPSExLHRoaXMub25jbG9zZSgiZm9yY2VkIGNsb3NlIil9ZGlzY29ubmVjdCgpe3JldHVybiB0aGlzLl9jbG9zZSgpfW9uY2xvc2UoZSx0KXt2YXIgbjt0aGlzLmNsZWFudXAoKSxudWxsPT09KG49dGhpcy5lbmdpbmUpfHx2b2lkIDA9PT1ufHxuLmNsb3NlKCksdGhpcy5iYWNrb2ZmLnJlc2V0KCksdGhpcy5fcmVhZHlTdGF0ZT0iY2xvc2VkIix0aGlzLmVtaXRSZXNlcnZlZCgiY2xvc2UiLGUsdCksdGhpcy5fcmVjb25uZWN0aW9uJiYhdGhpcy5za2lwUmVjb25uZWN0JiZ0aGlzLnJlY29ubmVjdCgpfXJlY29ubmVjdCgpe2lmKHRoaXMuX3JlY29ubmVjdGluZ3x8dGhpcy5za2lwUmVjb25uZWN0KXJldHVybiB0aGlzO2NvbnN0IGU9dGhpcztpZih0aGlzLmJhY2tvZmYuYXR0ZW1wdHM+PXRoaXMuX3JlY29ubmVjdGlvbkF0dGVtcHRzKXRoaXMuYmFja29mZi5yZXNldCgpLHRoaXMuZW1pdFJlc2VydmVkKCJyZWNvbm5lY3RfZmFpbGVkIiksdGhpcy5fcmVjb25uZWN0aW5nPSExO2Vsc2V7Y29uc3QgdD10aGlzLmJhY2tvZmYuZHVyYXRpb24oKTt0aGlzLl9yZWNvbm5lY3Rpbmc9ITA7Y29uc3Qgbj10aGlzLnNldFRpbWVvdXRGbigoKT0+e2Uuc2tpcFJlY29ubmVjdHx8KHRoaXMuZW1pdFJlc2VydmVkKCJyZWNvbm5lY3RfYXR0ZW1wdCIsZS5iYWNrb2ZmLmF0dGVtcHRzKSxlLnNraXBSZWNvbm5lY3R8fGUub3Blbih0PT57dD8oZS5fcmVjb25uZWN0aW5nPSExLGUucmVjb25uZWN0KCksdGhpcy5lbWl0UmVzZXJ2ZWQoInJlY29ubmVjdF9lcnJvciIsdCkpOmUub25yZWNvbm5lY3QoKX0pKX0sdCk7dGhpcy5vcHRzLmF1dG9VbnJlZiYmbi51bnJlZigpLHRoaXMuc3Vicy5wdXNoKCgpPT57dGhpcy5jbGVhclRpbWVvdXRGbihuKX0pfX1vbnJlY29ubmVjdCgpe2NvbnN0IGU9dGhpcy5iYWNrb2ZmLmF0dGVtcHRzO3RoaXMuX3JlY29ubmVjdGluZz0hMSx0aGlzLmJhY2tvZmYucmVzZXQoKSx0aGlzLmVtaXRSZXNlcnZlZCgicmVjb25uZWN0IixlKX19Y29uc3QgcWU9e307ZnVuY3Rpb24gV2UoZSx0KXsib2JqZWN0Ij09dHlwZW9mIGUmJih0PWUsZT12b2lkIDApO2NvbnN0IG49ZnVuY3Rpb24oZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiIiLG49YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAscj1lO249bnx8InVuZGVmaW5lZCIhPXR5cGVvZiBsb2NhdGlvbiYmbG9jYXRpb24sbnVsbD09ZSYmKGU9bi5wcm90b2NvbCsiLy8iK24uaG9zdCksInN0cmluZyI9PXR5cGVvZiBlJiYoIi8iPT09ZS5jaGFyQXQoMCkmJihlPSIvIj09PWUuY2hhckF0KDEpP24ucHJvdG9jb2wrZTpuLmhvc3QrZSksL14oaHR0cHM/fHdzcz8pOlwvXC8vLnRlc3QoZSl8fChlPXZvaWQgMCE9PW4/bi5wcm90b2NvbCsiLy8iK2U6Imh0dHBzOi8vIitlKSxyPWdlKGUpKSxyLnBvcnR8fCgvXihodHRwfHdzKSQvLnRlc3Qoci5wcm90b2NvbCk/ci5wb3J0PSI4MCI6L14oaHR0cHx3cylzJC8udGVzdChyLnByb3RvY29sKSYmKHIucG9ydD0iNDQzIikpLHIucGF0aD1yLnBhdGh8fCIvIjtjb25zdCBvPS0xIT09ci5ob3N0LmluZGV4T2YoIjoiKT8iWyIrci5ob3N0KyJdIjpyLmhvc3Q7cmV0dXJuIHIuaWQ9ci5wcm90b2NvbCsiOi8vIitvKyI6IityLnBvcnQrdCxyLmhyZWY9ci5wcm90b2NvbCsiOi8vIitvKyhuJiZuLnBvcnQ9PT1yLnBvcnQ/IiI6IjoiK3IucG9ydCkscn0oZSwodD10fHx7fSkucGF0aHx8Ii9zb2NrZXQuaW8iKSxyPW4uc291cmNlLG89bi5pZCxpPW4ucGF0aCxhPXFlW29dJiZpIGluIHFlW29dLm5zcHM7bGV0IHM7cmV0dXJuIHQuZm9yY2VOZXd8fHRbImZvcmNlIG5ldyBjb25uZWN0aW9uIl18fCExPT09dC5tdWx0aXBsZXh8fGE/cz1uZXcgWWUocix0KToocWVbb118fChxZVtvXT1uZXcgWWUocix0KSkscz1xZVtvXSksbi5xdWVyeSYmIXQucXVlcnkmJih0LnF1ZXJ5PW4ucXVlcnlLZXkpLHMuc29ja2V0KG4ucGF0aCx0KX1PYmplY3QuYXNzaWduKFdlLHtNYW5hZ2VyOlllLFNvY2tldDpIZSxpbzpXZSxjb25uZWN0OldlfSk7dmFyIEdlPWZ1bmN0aW9uKCl7cmV0dXJuIEdlPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspZm9yKHZhciBvIGluIHQ9YXJndW1lbnRzW25dKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtyZXR1cm4gZX0sR2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxRZT1mdW5jdGlvbihlLHQsbil7aWYobnx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciByLG89MCxpPXQubGVuZ3RoO288aTtvKyspIXImJm8gaW4gdHx8KHJ8fChyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMCxvKSkscltvXT10W29dKTtyZXR1cm4gZS5jb25jYXQocnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpfSxLZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4scil7dm9pZCAwPT09dCYmKHQ9ITEpLHZvaWQgMD09PW4mJihuPXt9KSx2b2lkIDA9PT1yJiYocj12b2lkIDApO3ZhciBvPXRoaXM7dGhpcy5zb2NrZXRzVXJsPWUsdGhpcy5kZWJ1Z01vZGU9dCx0aGlzLmFkZGl0aW9uYWxQYXJhbWV0ZXJzPW4sdGhpcy5zZXRFbWl0UXVldWVDb25zdGFudFBhcmFtZXRlcnM9cix0aGlzLnNvY2tldHNDb25uZWN0ZWQ9ITEsdGhpcy5saXN0ZW5lcnM9W10sdGhpcy5saXN0ZW5lcnNDYWxsYmFja3M9W10sdGhpcy5keW5hbWljTGlzdGVuZXJzUXVldWU9W10sdGhpcy5keW5hbWljTGlzdGVuZXJzQ2FsbGJhY2tzPXt9LHRoaXMuc29ja2V0PW51bGwsdGhpcy50b0VtaXQ9W10sdGhpcy5ydW5Bc0ZpcnN0RW1pdE9uQ29ubmVjdD1bXSx0aGlzLmJlZm9yZUNvbm5lY3RTdGFydHM9bnVsbCx0aGlzLm1hbmFnZXJBbmRTb2NrZXRFdmVudHNBY3Rpb25zPXt9LHRoaXMuc29ja2V0RW1pdFdyYXBwZXI9ZnVuY3Rpb24oZSx0LG4scil7cihlLHQsbil9LHRoaXMubGlzdGVuV2l0aFN0b3JlPW51bGwsdGhpcy5pbml0aWFsUmVxdWlyZWRFbWl0c0Fjaz1bXSx0aGlzLnJlcXVpcmVkRW1pdHNBY2tMZWZ0PVtdLHRoaXMudG9FbWl0QWZ0ZXJSZXF1aXJlZEVtaXRzQWNrPVtdLHRoaXMuaXNEZWJ1Z01vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWJ1Z01vZGV9LHRoaXMuc2V0RW1pdFF1ZXVlQ29uc3RhbnRQYXJhbWV0ZXJzRnVuY3Rpb249ZnVuY3Rpb24oZSl7by5zZXRFbWl0UXVldWVDb25zdGFudFBhcmFtZXRlcnM9ZX0sdGhpcy5jbG9zZUNvbm5lY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ7KG51bGw9PT0odD1vLnNvY2tldCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaW8pJiYoby5zb2NrZXQuaW8uX2F1dG9Db25uZWN0PSExKSxvLnNvY2tldCYmImZ1bmN0aW9uIj09dHlwZW9mIG8uc29ja2V0LmNsb3NlJiZvLnNvY2tldC5jbG9zZSgpLG8ubGlzdGVuZXJzQ2FsbGJhY2tzLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pLG8ubGlzdGVuZXJzQ2FsbGJhY2tzPVtdLE9iamVjdC52YWx1ZXMoby5keW5hbWljTGlzdGVuZXJzQ2FsbGJhY2tzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KSxvLmR5bmFtaWNMaXN0ZW5lcnNDYWxsYmFja3M9e30sby5pc0RlYnVnTW9kZSgpJiZjb25zb2xlLmRlYnVnKCJjbG9zZWQhISIpLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlKCl9LHRoaXMucnVuQXNGaXJzdEVtaXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPW51bGw9PT0obj1vLmdldFB1c2hUb0VtaXRRdWV1ZUZ1bmN0aW9uKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jYWxsKG8sZS5nZXRTdGF0ZSxlLmRpc3BhdGNoKSxpPVMoKShvLnRvRW1pdCk7by50b0VtaXQ9W107dmFyIGE9dChlLmdldFN0YXRlLGUuZGlzcGF0Y2gpO251bGw9PXJ8fHIuYXBwbHkodm9pZCAwLFFlKFthLmVtaXRdLGEuYXJncywhMSkpLG8udG9FbWl0PVFlKFFlKFtdLG8udG9FbWl0LCEwKSxpLCEwKX0sdGhpcy5hZGRUb0VtaXRRdWV1ZVdpdGhTdG9yZT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuLHIpe3ZhciBpO3ZvaWQgMD09PXImJihyPW51bGwpO3ZhciBhPVMoKShudWxsIT1uP246e30pO251bGw9PT0oaT1vLnNldEVtaXRRdWV1ZUNvbnN0YW50UGFyYW1ldGVycyl8fHZvaWQgMD09PWl8fGkuY2FsbChvLGEsdCxlKSxvLnRvRW1pdC5wdXNoKFt0LGEscl0pLG8ucnVuRmlyc3RFbWl0RnJvbVF1ZXVlKCl9fSx0aGlzLmNyZWF0ZUVtaXRRdWV1ZT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtmb3IodmFyIHI9W10saT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspcltpLTFdPWFyZ3VtZW50c1tpXTt2YXIgYT1lKCkscz1vLmFkZFRvRW1pdFF1ZXVlV2l0aFN0b3JlKGEpO3JldHVybiBuLmFwcGx5KHZvaWQgMCxRZShbcyxhLHRdLHIsITEpKX19fSx0aGlzLmNyZWF0ZUxpc3RlbldpdGhTdG9yZT1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0U3RhdGUscj1lLmRpc3BhdGNoO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIGk9W10sYT0xO2E8YXJndW1lbnRzLmxlbmd0aDthKyspaVthLTFdPWFyZ3VtZW50c1thXTtvLnNvY2tldCYmZS5hcHBseSh2b2lkIDAsUWUoW28uc29ja2V0LG4scix0XSxpLCExKSl9fSx0aGlzLmJpbmRNYW5hZ2VySGFuZGxlcnM9ZnVuY3Rpb24oZSl7dmFyIHQsbjtpZihvLnNvY2tldCl7dmFyIHI9bnVsbD09PSh0PW8uc29ja2V0KXx8dm9pZCAwPT09dD92b2lkIDA6dC5pbyxpPW51bGw9PT0obj1vLmdldFB1c2hUb0VtaXRRdWV1ZUZ1bmN0aW9uKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jYWxsKG8sZS5nZXRTdGF0ZSxlLmRpc3BhdGNoKTtyLm9uKCJvcGVuIixmdW5jdGlvbigpe28uaXNEZWJ1Z01vZGUoKSYmY29uc29sZS5kZWJ1ZygibWFuYWdlciBvcGVuIiksImZ1bmN0aW9uIj09dHlwZW9mIG8ubWFuYWdlckFuZFNvY2tldEV2ZW50c0FjdGlvbnMub3BlbiYmaSYmby5tYW5hZ2VyQW5kU29ja2V0RXZlbnRzQWN0aW9ucy5vcGVuKGUsaSl9KSxyLm9uKCJlcnJvciIsZnVuY3Rpb24odCl7by5pc0RlYnVnTW9kZSgpJiZjb25zb2xlLmRlYnVnKCJtYW5hZ2VyIGVycm9yIix0KSwiZnVuY3Rpb24iPT10eXBlb2Ygby5tYW5hZ2VyQW5kU29ja2V0RXZlbnRzQWN0aW9ucy5lcnJvciYmby5tYW5hZ2VyQW5kU29ja2V0RXZlbnRzQWN0aW9ucy5lcnJvcihlLHQpfSksci5vbigicGluZyIsZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT10eXBlb2Ygby5tYW5hZ2VyQW5kU29ja2V0RXZlbnRzQWN0aW9ucy5waW5nJiZvLm1hbmFnZXJBbmRTb2NrZXRFdmVudHNBY3Rpb25zLnBpbmcoKX0pLHIub24oInJlY29ubmVjdCIsZnVuY3Rpb24odCl7by5pc0RlYnVnTW9kZSgpJiZjb25zb2xlLmRlYnVnKCJtYW5hZ2VyIHJlY29ubmVjdCIsdCksImZ1bmN0aW9uIj09dHlwZW9mIG8ubWFuYWdlckFuZFNvY2tldEV2ZW50c0FjdGlvbnMucmVjb25uZWN0JiZpJiZvLm1hbmFnZXJBbmRTb2NrZXRFdmVudHNBY3Rpb25zLnJlY29ubmVjdChlLGksdCl9KSxyLm9uKCJyZWNvbm5lY3RfYXR0ZW1wdCIsZnVuY3Rpb24odCl7by5pc0RlYnVnTW9kZSgpJiZjb25zb2xlLmRlYnVnKCJtYW5hZ2VyIHJlY29ubmVjdF9hdHRlbXB0IiksImZ1bmN0aW9uIj09dHlwZW9mIG8ubWFuYWdlckFuZFNvY2tldEV2ZW50c0FjdGlvbnMucmVjb25uZWN0X2F0dGVtcHQmJmkmJm8ubWFuYWdlckFuZFNvY2tldEV2ZW50c0FjdGlvbnMucmVjb25uZWN0X2F0dGVtcHQoZSxpLHQpfSksci5vbigicmVjb25uZWN0X2Vycm9yIixmdW5jdGlvbih0KXtvLmlzRGVidWdNb2RlKCkmJmNvbnNvbGUuZGVidWcoIm1hbmFnZXIgcmVjb25uZWN0X2Vycm9yIix0KSwiZnVuY3Rpb24iPT10eXBlb2Ygby5tYW5hZ2VyQW5kU29ja2V0RXZlbnRzQWN0aW9ucy5yZWNvbm5lY3RfZXJyb3ImJmkmJm8ubWFuYWdlckFuZFNvY2tldEV2ZW50c0FjdGlvbnMucmVjb25uZWN0X2Vycm9yKGUsaSx0KX0pLHIub24oInJlY29ubmVjdF9mYWlsZWQiLGZ1bmN0aW9uKCl7by5pc0RlYnVnTW9kZSgpJiZjb25zb2xlLmRlYnVnKCJtYW5hZ2VyIHJlY29ubmVjdF9mYWlsZWQiKSwiZnVuY3Rpb24iPT10eXBlb2Ygby5tYW5hZ2VyQW5kU29ja2V0RXZlbnRzQWN0aW9ucy5yZWNvbm5lY3RfZmFpbGVkJiZpJiZvLm1hbmFnZXJBbmRTb2NrZXRFdmVudHNBY3Rpb25zLnJlY29ubmVjdF9mYWlsZWQoZSxpKX0pfX0sdGhpcy5jb25uZWN0VG9Tb2NrZXRzPWZ1bmN0aW9uKGUsdCxuLHIsaSl7dm9pZCAwPT09biYmKG49ZnVuY3Rpb24oKXt9KSx2b2lkIDA9PT1yJiYocj1mdW5jdGlvbigpe30pLHZvaWQgMD09PWkmJihpPXt9KTtvLnNvY2tldD1XZShvLnNvY2tldHNVcmwsR2UoR2UoR2Uoe30se3JlY29ubmVjdGlvbjohMCx0cmFuc3BvcnRzOlsid2Vic29ja2V0Il19KSxvLmFkZGl0aW9uYWxQYXJhbWV0ZXJzKSxpKSksImZ1bmN0aW9uIj09dHlwZW9mIG8uYmVmb3JlQ29ubmVjdFN0YXJ0cyYmby5iZWZvcmVDb25uZWN0U3RhcnRzKGUuZGlzcGF0Y2gsZSksby5saXN0ZW5XaXRoU3RvcmU9by5jcmVhdGVMaXN0ZW5XaXRoU3RvcmUoZSx0KSxvLnNvY2tldC5vbigiY29ubmVjdCIsZnVuY3Rpb24oKXt2YXIgaTtvLnNvY2tldHNDb25uZWN0ZWQ9ITAsby5pc0RlYnVnTW9kZSgpJiZjb25zb2xlLmRlYnVnKCJjb25uZWN0ZWQgdG8gc29ja2V0cyIpLG8ucmVxdWlyZWRFbWl0c0Fja0xlZnQ9UWUoW10sby5pbml0aWFsUmVxdWlyZWRFbWl0c0FjaywhMCksby5ydW5Bc0ZpcnN0RW1pdE9uQ29ubmVjdC5sZW5ndGg+MCYmby5ydW5Bc0ZpcnN0RW1pdE9uQ29ubmVjdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBvLnJ1bkFzRmlyc3RFbWl0KGUsdCl9KSxvLmR5bmFtaWNMaXN0ZW5lcnNRdWV1ZS5sZW5ndGgmJm8uZHluYW1pY0xpc3RlbmVyc1F1ZXVlLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQsbj1udWxsPT09KHQ9by5saXN0ZW5XaXRoU3RvcmUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNhbGwobyxlLmxpc3RlbmVyKTsiZnVuY3Rpb24iPT10eXBlb2YgbiYmKG8uZHluYW1pY0xpc3RlbmVyc0NhbGxiYWNrc1tlLmtleV09bil9KSxvLmR5bmFtaWNMaXN0ZW5lcnNRdWV1ZT1bXSxvLnJ1bkZpcnN0RW1pdEZyb21RdWV1ZSgpO3ZhciBhPW51bGw9PT0oaT1vLmdldFB1c2hUb0VtaXRRdWV1ZUZ1bmN0aW9uKXx8dm9pZCAwPT09aT92b2lkIDA6aS5jYWxsKG8sZS5nZXRTdGF0ZSxlLmRpc3BhdGNoKTsiZnVuY3Rpb24iPT10eXBlb2Ygby5tYW5hZ2VyQW5kU29ja2V0RXZlbnRzQWN0aW9ucy5jb25uZWN0JiZhJiZvLm1hbmFnZXJBbmRTb2NrZXRFdmVudHNBY3Rpb25zLmNvbm5lY3QoZSxhLHQsbixyKX0pLG8uc29ja2V0Lm9uKCJkaXNjb25uZWN0IixmdW5jdGlvbih0LG4pe28uc29ja2V0c0Nvbm5lY3RlZD0hMSxvLmlzRGVidWdNb2RlKCkmJmNvbnNvbGUuZGVidWcoInNvY2tldHMgZGlzY29ubmVjdCIpLCJmdW5jdGlvbiI9PXR5cGVvZiBvLm1hbmFnZXJBbmRTb2NrZXRFdmVudHNBY3Rpb25zLmRpc2Nvbm5lY3QmJm8ubWFuYWdlckFuZFNvY2tldEV2ZW50c0FjdGlvbnMuZGlzY29ubmVjdChlLHQsbil9KSxvLnNvY2tldC5vbigiY29ubmVjdF9lcnJvciIsZnVuY3Rpb24odCl7dmFyIG47by5zb2NrZXRzQ29ubmVjdGVkPSExO3ZhciByPW51bGw9PT0obj1vLmdldFB1c2hUb0VtaXRRdWV1ZUZ1bmN0aW9uKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jYWxsKG8sZS5nZXRTdGF0ZSxlLmRpc3BhdGNoKTtvLmlzRGVidWdNb2RlKCkmJmNvbnNvbGUuZGVidWcoInNvY2tldHMgY29ubmVjdF9lcnJvciIpLCJmdW5jdGlvbiI9PXR5cGVvZiBvLm1hbmFnZXJBbmRTb2NrZXRFdmVudHNBY3Rpb25zLmNvbm5lY3RfZXJyb3ImJnImJm8ubWFuYWdlckFuZFNvY2tldEV2ZW50c0FjdGlvbnMuY29ubmVjdF9lcnJvcihlLHIsdCl9KSxvLmxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0LG49bnVsbD09PSh0PW8ubGlzdGVuV2l0aFN0b3JlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5jYWxsKG8sZSk7ImZ1bmN0aW9uIj09dHlwZW9mIG4mJm8ubGlzdGVuZXJzQ2FsbGJhY2tzLnB1c2gobil9KSxvLmJpbmRNYW5hZ2VySGFuZGxlcnMoZSl9LHRoaXMuc2V0TGlzdGVuZXJzPWZ1bmN0aW9uKGUpe28ubGlzdGVuZXJzPWV9LHRoaXMuYWRkTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZihvLnNvY2tldHNDb25uZWN0ZWQpe3ZhciByPW51bGw9PT0obj1vLmxpc3RlbldpdGhTdG9yZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uY2FsbChvLGUpOyJmdW5jdGlvbiI9PXR5cGVvZiByJiYoby5keW5hbWljTGlzdGVuZXJzQ2FsbGJhY2tzW3RdPXIpfWVsc2Ugby5keW5hbWljTGlzdGVuZXJzUXVldWUucHVzaCh7bGlzdGVuZXI6ZSxrZXk6dH0pfSx0aGlzLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGUpe3ZhciB0PW8uZHluYW1pY0xpc3RlbmVyc0NhbGxiYWNrc1tlXTsiZnVuY3Rpb24iPT10eXBlb2YgdCYmdCgpLGRlbGV0ZSBvLmR5bmFtaWNMaXN0ZW5lcnNDYWxsYmFja3NbZV19LHRoaXMuc2V0Rmlyc3RFbWl0cz1mdW5jdGlvbihlKXtvLnJ1bkFzRmlyc3RFbWl0T25Db25uZWN0PWV9LHRoaXMuc2V0QmVmb3JlQ29ubmVjdFN0YXJ0cz1mdW5jdGlvbihlKXtvLmJlZm9yZUNvbm5lY3RTdGFydHM9ZX0sdGhpcy5zZXRNYW5hZ2VyRXZlbnRzQWN0aW9ucz1mdW5jdGlvbihlLHQpe28ubWFuYWdlckFuZFNvY2tldEV2ZW50c0FjdGlvbnNbZV09dH0sdGhpcy5zZXRTb2NrZXRFbWl0V3JhcHBlcj1mdW5jdGlvbihlKXtvLnNvY2tldEVtaXRXcmFwcGVyPWV9LHRoaXMuY29ubmVjdGlvbk1hbmFnZXI9ZnVuY3Rpb24oKXtyZXR1cm4gby5nZXRQdXNoVG9FbWl0UXVldWVGdW5jdGlvbj1vLmNyZWF0ZUVtaXRRdWV1ZSgpLHtlbWl0UXVldWU6by5nZXRQdXNoVG9FbWl0UXVldWVGdW5jdGlvbixjbG9zZUNvbm5lY3Rpb246by5jbG9zZUNvbm5lY3Rpb24sY29ubmVjdFRvU29ja2V0czpvLmNvbm5lY3RUb1NvY2tldHN9fX1yZXR1cm4gZS5wcm90b3R5cGUuYWNrUmVxdWlyZWRFbWl0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucmVxdWlyZWRFbWl0c0Fja0xlZnQuZmluZEluZGV4KGZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZX0pO3Q+LTEmJih0aGlzLnJlcXVpcmVkRW1pdHNBY2tMZWZ0LnNwbGljZSh0LDEpLDA9PT10aGlzLnJlcXVpcmVkRW1pdHNBY2tMZWZ0Lmxlbmd0aCYmKHRoaXMudG9FbWl0PVFlKFFlKFtdLHRoaXMudG9FbWl0QWZ0ZXJSZXF1aXJlZEVtaXRzQWNrLCEwKSx0aGlzLnRvRW1pdCwhMCksdGhpcy50b0VtaXRBZnRlclJlcXVpcmVkRW1pdHNBY2s9W10pKX0sZS5wcm90b3R5cGUucnVuRmlyc3RFbWl0RnJvbVF1ZXVlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMudG9FbWl0LnNoaWZ0KCk7aWYodGhpcy5zb2NrZXQmJnQpe3ZhciBuPXRbMF0scj10WzFdLG89dFsyXSxpPXRoaXMuaW5pdGlhbFJlcXVpcmVkRW1pdHNBY2suaW5jbHVkZXMobik7aWYodGhpcy5yZXF1aXJlZEVtaXRzQWNrTGVmdC5sZW5ndGg+MCYmIWkpcmV0dXJuIHRoaXMudG9FbWl0QWZ0ZXJSZXF1aXJlZEVtaXRzQWNrLnB1c2goW24scixvXSksITE7dmFyIGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciByPVtdLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXJbb109YXJndW1lbnRzW29dO2UuaXNEZWJ1Z01vZGUoKSYmY29uc29sZS5kZWJ1ZygiYWNrIC0gIi5jb25jYXQobikpLGkmJmUuYWNrUmVxdWlyZWRFbWl0KG4pLCJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmFwcGx5KHZvaWQgMCxyKSxlLnJ1bkZpcnN0RW1pdEZyb21RdWV1ZSgpfX07cmV0dXJuIHRoaXMuc29ja2V0RW1pdFdyYXBwZXIobixyLG8sZnVuY3Rpb24odCxuLG8pe3ZhciBpLHM7ci5pbnRlcm5hbFZvbGF0aWxlPyhkZWxldGUgci5pbnRlcm5hbFZvbGF0aWxlLG51bGw9PT0oaT1lLnNvY2tldCl8fHZvaWQgMD09PWl8fGkudm9sYXRpbGUuZW1pdCh0LG4sYShvKSkpOm51bGw9PT0ocz1lLnNvY2tldCl8fHZvaWQgMD09PXN8fHMuZW1pdCh0LG4sYShvKSl9KSx0aGlzLnJ1bkZpcnN0RW1pdEZyb21RdWV1ZSgpLCEwfXJldHVybiExfSxlLnByb3RvdHlwZS5zZXRSZXF1aXJlZEVtaXRzQWNrPWZ1bmN0aW9uKGUpe3RoaXMuaW5pdGlhbFJlcXVpcmVkRW1pdHNBY2s9ZSx0aGlzLnJlcXVpcmVkRW1pdHNBY2tMZWZ0PVFlKFtdLHRoaXMuaW5pdGlhbFJlcXVpcmVkRW1pdHNBY2ssITApfSxlfSgpLFplPUtlLFhlPW4oNTgzKSxKZT1uKDg2MTEpLGV0PShuKDU3MTgpLG4oMzE0Nyksbig1ODU1KSxuKDg5NDUpKSx0dD1uKDYwNTgpLG50PW4oOTc4OCkscnQ9big4NzA2KSxvdD1uKDE4NzUpO2NvbnN0IGl0PShlLHQsbik9PntlLm9uKCJwcm9qZWN0RGF0YVVwZGF0ZSIsZT0+e2xldHt0eXBlOnR9PWU7Im9ubGluZSIhPT10JiYib2ZmbGluZSIhPT10fHxuKCgwLFhlLk1pWCkodCkpfSl9LGF0PShlLHQsbik9PntlLm9uKCJuZXdNZXNzYWdlIixlPT57Y29uc3QgdD0oMCxvdC5uSykoZSk7dCYmbigoMCxYZS50alIpKHQpKX0pfSxzdD0oZSx0LG4pPT57ZS5vbigib3BlcmF0b3JJc1R5cGluZyIsZT0+e2xldHtvcGVyYXRvcl9pZDp0fT1lO24oKDAsWGUubTdfKSh0KSl9KX0sY3Q9KGUsdCxuKT0+e2Uub24oImJvdElzVHlwaW5nIixlPT57bGV0e3R5cGU6dH09ZTtuKCJhaUFzc2lzdGFudCI9PT10PygwLFhlLmQ5USkoITApOigwLFhlLm03XykoITAsZy5IXykpfSl9LHV0PShlLHQsbik9PntlLm9uKCJ2aXNpdG9ySXNCYW5uZWQiLCgpPT57bigoMCxYZS5rS0QpKCkpLG4oKDAsWGUudGFHKSghMSkpfSl9LGx0PShlLHQsbik9PntlLm9uKCJ2aXNpdG9ySW5zaWRlQWN0aW9uIixlPT57bGV0e2FjdGlvbjp0LHZhbHVlOnJ9PWU7aWYoInZpc2l0b3JTaG93Q3VzdG9tZXJTdXJ2ZXkiIT09dClyZXR1cm4hMTtjb25zdHtzYXRpc2ZhY3Rpb25TdXJ2ZXk6byx0aHJlYWRJZDppLHRocmVhZFNvdXJjZTphLG1lc3NhZ2VJZDpzfT1yO24oKDAsWGUuSHluKShvLGEsaSxzKSk7Y29uc3QgYz0oMCxvdC5veSkoYSxpLHMsbnQuR28uQVVUT01BVElDX1NVUlZFWSk7cmV0dXJuIG4oKDAsWGUudGpSKShjKSksITB9KX0sZHQ9KGUsdCxuKT0+e2Uub24oInZpc2l0b3JNZXJnZWQiLGU9PntsZXR7dmlzaXRvcl90YXJnZXRfaWQ6dH09ZTt0JiYobigoMCxYZS5WckUpKHQpKSxuKCgwLFhlLmZnZSkoSmUudXEpKSl9KX0sZnQ9KGUsdCxuKT0+e2Uub24oIm9wZXJhdG9yT3BlbkNvbnZlcnNhdGlvbiIsZT0+e2xldHtvcGVyYXRvcl9pZDpyLG9wZXJhdG9yX25hbWU6b309ZTtjb25zdHthc3NpZ25lZE9wZXJhdG9yczppfT10KCksYT1pLmZpbmQoZT0+ZT09PXIpO3JldHVybiEoIXJ8fGEpJiYobigoMCxYZS52ZTgpKHIsbykpLCEwKX0pfSxwdD0oZSx0LG4pPT57ZS5vbigib3BlcmF0b3JBc3NpZ25EZXBhcnRtZW50IixlPT57bGV0e2RlcGFydG1lbnRfaWQ6dH09ZTtyZXR1cm4hIXQmJihuKCgwLFhlLkQ4eSkodCkpLCEwKX0pfSxodD0oZSx0LG4pPT57ZS5vbigib3BlcmF0b3JMZWF2ZUNvbnZlcnNhdGlvbiIsZT0+e2xldHtvcGVyYXRvcl9pZDp0fT1lO3QmJm4oKDAsWGUuZHBWKSh0KSl9KX0sbXQ9KGUsdCxuKT0+e2Uub24oIm9wZXJhdG9yVHJhbnNmZXJDb252ZXJzYXRpb24iLGU9PntsZXR7b3BlcmF0b3JfY3VycmVudF9pZDpyLG9wZXJhdG9yX3RhcmdldF9pZDpvLG9wZXJhdG9yX3RhcmdldF9uYW1lOml9PWU7Y29uc3R7YXNzaWduZWRPcGVyYXRvcnM6YX09dCgpO3JldHVybiFhLmZpbmQoZT0+ZT09PW8pJiYobigoMCxYZS5BODApKHtzb3VyY2VPcGVyYXRvcklkOnIsdGFyZ2V0T3BlcmF0b3JJZDpvLHRhcmdldE9wZXJhdG9yTmFtZTppfSkpLCEwKX0pfSxndD0oZSx0LG4pPT57ZS5vbigib3BlcmF0b3JzVHJhbnNmZXJDb252ZXJzYXRpb25zIixlPT57ZS5mb3JFYWNoKGU9PntsZXR7b3BlcmF0b3JfY3VycmVudF9pZDpyLG9wZXJhdG9yX3RhcmdldF9pZDpvLG9wZXJhdG9yX3RhcmdldF9uYW1lOmksdmlzaXRvcl9pZDphfT1lO2NvbnN0e2Fzc2lnbmVkT3BlcmF0b3JzOnMsdmlzaXRvcjpjfT10KCk7aWYoYy5pZCE9PWEpcmV0dXJuITE7cmV0dXJuIXMuZmluZChlPT5lPT09bykmJihuKCgwLFhlLkE4MCkoe3NvdXJjZU9wZXJhdG9ySWQ6cix0YXJnZXRPcGVyYXRvcklkOm8sdGFyZ2V0T3BlcmF0b3JOYW1lOml9KSksITApfSl9KX0seXQ9KGUsdCxuKT0+e2Uub24oImJvdEFwcFN0YXJ0ZWQiLCgpPT57bigoMCxYZS5jb0QpKCEwKSl9KX0sdnQ9KGUsdCxuKT0+e2Uub24oImJvdEFwcFN0b3BwZWQiLCgpPT57bigoMCxYZS5jb0QpKCExKSl9KX0sYnQ9KGUsdCxuKT0+e2Uub24oImJvdEFwcFRyYW5zZmVycmVkIiwoKT0+e24oKDAsWGUuY29EKSghMSkpfSl9LHd0PShlLHQsbik9PntlLm9uKCJib3RBcHBTdWNjZXNzIiwoKT0+e24oKDAsWGUuY29EKSghMSkpfSl9LF90PShlLHQsbik9PntlLm9uKCJib3RBcHBGYWlsZWQiLCgpPT57bigoMCxYZS5jb0QpKCExKSl9KX0sU3Q9KGUsdCxuKT0+e2Uub24oInZpc2l0b3JVcGRhdGVEYXRhIixlPT57bigoMCxYZS5TMWopKGUsITEpKX0pfSxFdD0oZSx0LG4pPT57ZS5vbigib3BlcmF0b3JTdGF0dXNIYXNCZWVuQ2hhbmdlZCIsZT0+e2xldHtvcGVyYXRvcl9pZDp0LHN0YXR1czpyLGRuZF9mb3JjZWRfc3RhdHVzOm8sZG5kX2lzX2luX2ludGVydmFsOml9PWU7Y29uc3QgYT0hKEJvb2xlYW4obyl8fEJvb2xlYW4oaSl8fCJvZmZsaW5lIj09PXIpO24oKDAsWGUuWmN2KSh0LGEpKX0pfSxDdD0oZSx0LG4pPT57ZS5vbigidmlzaXRvckRlbGV0ZWQiLCgpPT57bigoMCxYZS5rS0QpKCkpLG4oKDAsWGUudGFHKSghMSkpLHNldFRpbWVvdXQoKCk9PnsoMCx0dC5vdSkoKX0sMWUzKX0pfSxrdD0oZSx0LG4pPT57ZS5vbigibWFya01lc3NhZ2VzQXNSZWFkIiwoKT0+e24oKDAsWGUubk0kKSgpKX0pfSxBdD0oZSx0LG4pPT57ZS5vbigidXBkYXRlQ2FydCIsKCk9Pntjb25zdHtwbGF0Zm9ybTplfT10KCk7InNob3BpZnkiPT09ZSYmbigoMCxYZS5ZQ0IpKCkpfSl9LE90PShlLHQsbik9PntlLm9uKCJkaXNhYmxlVGV4dElucHV0IiwoKT0+e24oKDAsWGUudWR4KSghMCkpLG4oKDAsWGUuSHpoKSghMSkpfSl9LFR0PShlLHQsbik9PntlLm9uKCJlbmFibGVUZXh0SW5wdXQiLCgpPT57bigoMCxYZS51ZHgpKCExKSl9KX0seHQ9ZT0+e2Uub24oIm9wZXJhdG9yVmlkZW9DYWxsT2ZmZXIiLGU9PntldC5BLnB1Ymxpc2goIm9wZXJhdG9yVmlkZW9DYWxsT2ZmZXJlZCIsZSl9KX0sSXQ9ZT0+e2Uub24oInZpc2l0b3JWaWRlb0NhbGxPZmZlciIsZT0+e2V0LkEucHVibGlzaCgidmlzaXRvclZpZGVvQ2FsbE9mZmVyIixlKX0pfSxOdD1lPT57ZS5vbigib3BlcmF0b3JWaWRlb0NhbGxJY2VDYW5kaWRhdGVzIixlPT57ZXQuQS5wdWJsaXNoKCJvcGVyYXRvclZpZGVvQ2FsbEljZUNhbmRpZGF0ZXNPZmZlcmVkIixlKX0pfSxMdD1lPT57ZS5vbigic2VuZEV2ZW50VG9Hb29nbGVBbmFseXRpY3MiLGU9PntsZXR7ZXZlbnROYW1lOnR9PWU7InN0cmluZyI9PXR5cGVvZiB0JiYoMCxydC5zKSgpLnRyYWNrRXZlbnQoe3R5cGU6ImN1c3RvbSIsZXZlbnROYW1lOnR9KX0pfTtmdW5jdGlvbiBQdChlKXtsZXQgdD0hMTtjb25zdCBuPVtdO2xldCByPTAsbz0hMCxpPSExO2NvbnN0IGE9bmV3IFplKCJodHRwczovL3NvY2tldC50aWRpby5jbzo0NDMiLCExLHtyZWNvbm5lY3Rpb25EZWxheTo1MDAscmVjb25uZWN0aW9uRGVsYXlNYXg6NmU0LHJhbmRvbWl6YXRpb25GYWN0b3I6LjgscmVjb25uZWN0aW9uQXR0ZW1wdHM6NTAwLHRyYW5zcG9ydHM6WyJ3ZWJzb2NrZXQiXX0sKGUsdCxuKT0+e2NvbnN0IHI9ZTsidmlzaXRvclJlZ2lzdGVyIiE9PXQmJiJ2aXNpdG9ySWRlbnRpZnkiIT09dCYmInZpc2l0b3JJZGVudGlmeUpXVCIhPT10JiYoci52aXNpdG9ySWR8fChyLnZpc2l0b3JJZD1uLnZpc2l0b3IuaWQpLHIucHJvamVjdFB1YmxpY0tleXx8KHIucHJvamVjdFB1YmxpY0tleT1uLnB1YmxpY0tleSksci5kZXZpY2V8fChyLmRldmljZT1uLmlzTW9iaWxlPyJtb2JpbGUiOiJkZXNrdG9wIikpfSkse2Nsb3NlQ29ubmVjdGlvbjpzfT1hLmNvbm5lY3Rpb25NYW5hZ2VyKCk7cmV0dXJuIGEuc2V0TGlzdGVuZXJzKFtpdCxhdCxzdCxjdCxsdCx1dCxkdCxwdCxmdCxodCxtdCxndCx5dCx2dCxidCx3dCxfdCxTdCxFdCxDdCxrdCxBdCxPdCxUdCx4dCxJdCxOdCxMdF0pLGEuc2V0TWFuYWdlckV2ZW50c0FjdGlvbnMoImNvbm5lY3QiLCh0LG4pPT57aXx8KCgwLHkubykoKS5tYXJrRHVyYXRpb24oIndpZGdldF93c19pbml0aWFsX2Nvbm5lY3Rpb25faW5fbXMiLCJlbmQiKSxpPSEwKSxyPTAsdC5kaXNwYXRjaCgoMCxYZS5pdkcpKHIpKTtjb25zdHt0aWRpb0lkZW50aWZ5Q2hhbmdlZDpjfT10LmdldFN0YXRlKCk7KDAsZy5OMikoKTtjPyhhLnNldFJlcXVpcmVkRW1pdHNBY2soWyJ2aXNpdG9ySWRlbnRpZnkiLCJ2aXNpdG9yUmVnaXN0ZXIiXSksbihKZS5oaywoKT0+e24oSmUudXEsZSxvLHMpfSkpOihhLnNldFJlcXVpcmVkRW1pdHNBY2soWyJ2aXNpdG9yUmVnaXN0ZXIiXSksbihKZS51cSxlLG8scykpfSksYS5zZXRNYW5hZ2VyRXZlbnRzQWN0aW9ucygicmVjb25uZWN0X2F0dGVtcHQiLGU9PntpJiYobz0hMSkscis9MSxlLmRpc3BhdGNoKCgwLFhlLml2RykocikpfSksYS5zZXRNYW5hZ2VyRXZlbnRzQWN0aW9ucygiZGlzY29ubmVjdCIsKCk9PnthLnNldFJlcXVpcmVkRW1pdHNBY2soWyJ2aXNpdG9yUmVnaXN0ZXIiXSksKDAseS5vKSgpLm1hcmtEdXJhdGlvbigid2lkZ2V0X3dzX3JlY29ubmVjdF90aW1lX2luX21zIiwic3RhcnQiKX0pLGEuc2V0TWFuYWdlckV2ZW50c0FjdGlvbnMoInJlY29ubmVjdCIsKCk9PnsoMCx5Lm8pKCkubWFya0R1cmF0aW9uKCJ3aWRnZXRfd3NfcmVjb25uZWN0X3RpbWVfaW5fbXMiLCJlbmQiLHZvaWQgMCwhMSksKDAseS5vKSgpLnNldE51bWVyaWNWYWx1ZSgid2lkZ2V0X3dzX3JlY29ubmVjdF9hdHRlbXB0cyIsciwhMSksKDAseS5vKSgpLnNlbmRNZXRyaWNzKFsid2lkZ2V0X3dzX3JlY29ubmVjdF90aW1lX2luX21zIiwid2lkZ2V0X3dzX3JlY29ubmVjdF9hdHRlbXB0cyJdKX0pLGEuc2V0U29ja2V0RW1pdFdyYXBwZXIoKGUscixvLGkpPT57bGV0IGE9bzsidmlzaXRvclByZUZvcm0iPT09ZSYmKHQ9ITAsYT1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KGUpLHM9MDtzPGU7cysrKWFbc109YXJndW1lbnRzW3NdO28/LiguLi5hKSxmdW5jdGlvbihlLHIsbyl7dHJ5e3Q9ITE7Y29uc3RbLGldPXIse3Zpc2l0b3JfaWQ6YX09aTsic3RyaW5nIiE9dHlwZW9mIGEmJigwLHYuc1EpKCJQcmVjaGF0IG5vbiBzdHJpbmcgdmlzaXRvcklkIix7cHJlQ2hhdEFyZ3M6ZSxwcmVDaGF0QWNrQXJnczpyfSk7Y29uc3Qgcz1lPy51cGRhdGVEYXRhPy5kZXBhcnRtZW50X2lkO2Zvcig7bi5sZW5ndGg+MDspe2NvbnN0IGU9bi5zaGlmdCgpO2lmKGUpe2NvbnN0W3QsbixyXT1lO28odCx7Li4ubix2aXNpdG9ySWQ6YSwuLi5zJiZ7anVzdFNlbGVjdGVkRGVwYXJ0bWVudElkOnN9fSxyKX19fWNhdGNoKGUpeygwLHYuc1EpKGUpfX0ocixhLGkpfSksdCYmInZpc2l0b3JOZXdNZXNzYWdlIj09PWU/bi5wdXNoKFtlLHIsYV0pOmkoZSxyLGEpfSksYS5jb25uZWN0aW9uTWFuYWdlcigpfXZhciBNdD1uKDYzODQpO24oNzQ1MCksbigyMDIwKSxuKDM5MzgpO3ZhciBSdD1uKDI3MjQpO24oODI2NCk7ZnVuY3Rpb24gRHQoZSx0KXtyZXR1cm5bLi4udCwuLi5lLmZpbHRlcihlPT4hdC5zb21lKHQ9PnQuaWQ9PT1lLmlkKSldfXZhciBGdD1lPT5lLmZpbHRlcihlPT4ib25Db252ZXJzYXRpb25TdGFydCI9PT1lLnR5cGUmJmUucGF5bG9hZCYmKCExPT09ZS5wYXlsb2FkLmRpc2FibGVkfHx2b2lkIDA9PT1lLnBheWxvYWQuZGlzYWJsZWQpKS5zb3J0KChlLHQpPT52b2lkIDAhPT1lLnBheWxvYWQ/LnBvc2l0aW9uJiZ2b2lkIDAhPT10LnBheWxvYWQ/LnBvc2l0aW9uP2UucGF5bG9hZC5wb3NpdGlvbi10LnBheWxvYWQucG9zaXRpb246MCkubWFwKGU9Pih7dHJpZ2dlcklkOmUudHJpZ2dlcl9pZCxkaXNwbGF5TmFtZTpgJHtlLnBheWxvYWQ/LmRpc3BsYXlfbmFtZX1gLG9mZmxpbmVEaXNhYmxlZDpCb29sZWFuKGUucGF5bG9hZD8ub2ZmbGluZV9kaXNhYmxlZCksYm90QXBwSWRzOmUucGF5bG9hZD8uYm90X2FwcF9pZHN8fFtdfSkpO3ZhciBqdD1uKDM2NTApO2NvbnN0IEJ0PXthcmVFbmFibGVkOiExLG9wdGlvbnM6W119LFZ0PXtyZWNvbm5lY3RBdHRlbXB0Q291bnQ6MCxwcmV2aWV3TW9kZTohMSxpc01vdW50ZWQ6ITEsaXNNb2JpbGU6ITEsaXNQcm9qZWN0T25saW5lOiExLHZpZXc6bnQuU3MuQ0xPU0VELHNob3dPcHRpb25zRHJvcGRvd246ITEsbm90aWZpY2F0aW9uU25vb3plZDohMSxtZXNzYWdlczpbXSxibG9ja2VkTWVzc2FnZTpudWxsLHVucmVhZE1lc3NhZ2VzOjAscHJlQ2hhdDp7aXNGaWxsZWQ6ITEsZGF0YTpudWxsfSxyb3V0aW5nUnVsZXM6QnQsc2VsZWN0ZWREZXBhcnRtZW50Om51bGwsb3BlcmF0b3JzOltdLGJvdHM6W10sZ2V0U3RhcnRlZEFjdGl2ZTohMSxpc0JvdEFjdGl2ZTohMSxhc3NpZ25lZE9wZXJhdG9yczpbXSxhc3NpZ25lZE9wZXJhdG9yc0RhdGE6W10sb3BlcmF0b3JJc1R5cGluZzohMSxjaGF0SWZyYW1lU3R5bGVzOnt3aWRnZXRQb3NpdGlvbjoicmlnaHQiLGlmcmFtZVZpZXc6bnQuTk8uT05MWV9CVUJCTEUsZGltZW5zaW9uczpudWxsfSxzaWRlYmFySWZyYW1lU3R5bGVzOiExLGhpZGVXaGVuT2ZmbGluZTohMSxjcmVhdGVUaWNrZXRXaGVuT3BlcmF0b3JzT2ZmbGluZTohMSxwdWJsaWNLZXk6KDAsZy5EMCkoKSx0aWRpb0lkZW50aWZ5RGF0YTohMSx0aWRpb0lkZW50aWZ5Q2hhbmdlZDohMSx2aXNpdG9yOnt9LHdpZGdldENvbG9yOlsiIzJhMjdkYSIsIiMwMGNjZmYiLCIjZmZmIiwiIzAwNGRmZiJdLGJhbm5lckltYWdlOiIiLG5ld01lc3NhZ2VFbW9qaTpudWxsLGlzRW1vamlQYW5lbFZpc2libGU6ITEsc2VuZFZpc2l0b3JNZXNzYWdlRmxhZzohMSxhbGVydDp7Y29udGVudDoiIixpc1Zpc2libGU6ITF9LHNob3dCcmFuZGluZzohMCxoaWRlSGVhZGVyOiExLG1vYmlsZUJ1dHRvblNpemU6bnQuYVYuTEFSR0UsZGlzYWJsZUJvdHNCdXR0b25BbmltYXRpb246ITEsd2lkZ2V0TGFiZWxTdGF0dXM6ITEsd2lkZ2V0TGFiZWxUZXh0OiIiLG1vYmlsZUhhc2g6ITAsYWxsb3dBdHRhY2htZW50czohMCxhbGxvd0Vtb2ppczohMCxoaWRlQ2hhdFdpdGhVc09uSG9tZTohMSxzaG93T2xkTWVzc2FnZXM6ITEsc2hvd01lc3NhZ2VzQnV0dG9uQ2xpY2tlZFRpbWVzdGFtcDpudWxsLGlzRHJhZ0FuZERyb3BBY3RpdmU6ITEsc2hvd1VzZXJEYXRhTW9kYWw6ITEscGxhdGZvcm06bnQuT0QuT1RIRVJTLGlzU291bmRFbmFibGVkOiEwLGlzUGFnZVZpc2libGU6ITAsaXNBd2Vzb21lSWZyYW1lOiExLHBvcHVwSW1hZ2VTcmM6IiIsbWVzc2FnZUZvckZseTpudWxsLGRpc2FibGVUZXh0SW5wdXQ6ITEsc2F0aXNmYWN0aW9uU3VydmV5Ont9LGN1c3RvbUJyYW5kaW5nOiIiLGN1c3RvbUF2YXRhcjoiIixwcmVjaGF0U3Vic2NyaXB0aW9uQ2hlY2tib3hEZWZhdWx0VmFsdWU6ITEsYWlBc3Npc3RhbnQ6ITEsYWlBc3Npc3RhbnROYW1lOmcuUU8sYWlBc3Npc3RhbnRJc1RoaW5raW5nOiExLGlmcmFtZU1vZGFsVXJsOm51bGwsZGVzaWduTW9kZTohMSxjb252ZXJzYXRpb25TdGFydGVyczpudWxsLG9wZW5UYWI6ImhvbWUiLGRlc2lnblZlcnNpb246NCxhbGxvd0Nsb3NlOiEwLHZpc2l0b3JDdXJyZW5jeURhdGE6e30saXNQcml2YWN5UG9saWN5RGlzbWlzc2VkOiExLGlzUHJpdmFjeVBvbGljeUVuYWJsZWQ6ITEscGVuZGluZ0F0dGFjaG1lbnRzOltdLHBlbmRpbmdBZGRUb0NhcnRDYXJkS2V5Om51bGwsYWlBc3Npc3RhbnREZWZhdWx0UHJvZHVjdENhcmRBY3Rpb246ImFkZF90b19jYXJ0Iix2ZXJzaW9uOjc4fTtsZXQgVXQ9bnVsbDtmdW5jdGlvbiB6dCgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpWdCx0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3N3aXRjaCh0LnR5cGUpe2Nhc2UgWGUuJGdjOnJldHVybnsuLi5lLHZpc2l0b3I6ey4uLnQudmlzaXRvckRhdGF9fTtjYXNlIFhlLl9jRjpyZXR1cm57Li4uZSx2aXNpdG9yOnsuLi5lLnZpc2l0b3IsLi4uKDAsTXQuaikoKX19O2Nhc2UgWGUuU3ZXOnJldHVybiB0LnN0YXRlLmRlc2lnbk1vZGUhPT1lLmRlc2lnbk1vZGU/ZTp7Li4udC5zdGF0ZSx2aXNpdG9yOnsuLi50LnN0YXRlLnZpc2l0b3IsaXNfY2hhdF9vbl9zaXRlOmUudmlzaXRvci5pc19jaGF0X29uX3NpdGV9LGlzUGFnZVZpc2libGU6ZS5pc1BhZ2VWaXNpYmxlLGRlc2lnbk1vZGU6ZS5kZXNpZ25Nb2RlfTtjYXNlIFhlLk1PRjpyZXR1cm57Li4uZSx2aXNpdG9yOnsuLi5lLnZpc2l0b3IsaWQ6dC52aXNpdG9ySWR9fTtjYXNlIFhlLlV2cjp7Y29uc3R7aWRlbnRpZnlEYXRhOm59PXQscj0oMCxnLm0wKShuKTtyZXR1cm4gcj97Li4uZSx0aWRpb0lkZW50aWZ5RGF0YTp7Li4uZS50aWRpb0lkZW50aWZ5RGF0YSwuLi5yfSx0aWRpb0lkZW50aWZ5Q2hhbmdlZDohMH06ZX1jYXNlIFhlLk5DRTp7Y29uc3R7ZGF0YVRvTWVyZ2U6bn09dCx7aWRlbnRpZnlEYXRhOnJ9PW4sbz0oMCxnLm0wKShyKSxpPSgwLGcubWcpKGcuUGkpO2RlbGV0ZSBpLnRhZ3M7Y29uc3QgYT17Li4uaSwuLi5vfTtyZXR1cm57Li4uZSx2aXNpdG9yOnsuLi5lLnZpc2l0b3IsaWQ6bi5pZCwuLi5hfX19Y2FzZSBYZS5lNzc6e2NvbnN0e3BvcHVwOntwb3NpdGlvbjpuLGNvbG9yX2JnOnJ9PXtwb3NpdGlvbjoicmlnaHQiLGNvbG9yX2JnOlsiIzIxZGJkYiJdfSxwcmVmb3JtOm89ITEscm91dGluZ19ydWxlczppPUJ0LGN1cnJlbnRfZGVwYXJ0bWVudF9pZDphLGludGVncmF0aW9uczpzPVtdLHRyYW5zbGF0aW9uczpjLGhpZGVfd2hlbl9vZmZsaW5lOnU9ITEsY3JlYXRlX3RpY2tldF93aGVuX2FsbF9hZ2VudHNfYXJlX29mZmxpbmU6bD0hMSxzaWRlYmFyOmQ9ITEsYmFubmVyX2ltYWdlOmY9IiIsc2hvd0JyYW5kaW5nOnA9ITAsYm90czpoPVtdLGdldF9zdGFydGVkX2FjdGl2ZTptLHdpZGdldF9sYWJlbF9zdGF0dXM6eSxwbGF0Zm9ybTp2PSIiLHdpZGdldF9zb3VuZF9lbmFibGVkOncsaXNfYXdlc29tZV9pZnJhbWU6Xz0hMSxicmFuZGluZ19sb2dvX3VybDpTPSIiLHdpZGdldF9hdmF0YXJfdXJsOkU9IiIsaXNfdGV4dF9pbnB1dF9kaXNhYmxlZDpDLGFpX2Fzc2lzdGFudDprLGFpX2Fzc2lzdGFudF9uYW1lOkEsYWlfYXNzaXN0YW50X2RlZmF1bHRfcHJvZHVjdF9jYXJkX2FjdGlvbjpPPSJhZGRfdG9fY2FydCIsZGVzaWduX21vZGU6VCxjb252ZXJzYXRpb25fc3RhcnRlcnM6eCxkZXNpZ25fdmVyc2lvbjpJLGlzX3ByaXZhY3lfcG9saWN5X2VuYWJsZWQ6Tj0hMX09dC5kYXRhLndpZGdldF9kYXRhLHtwb3NpdGlvbjpMLHNpemU6UH09dC5kYXRhLndpZGdldF9kYXRhLm1vYmlsZT90LmRhdGEud2lkZ2V0X2RhdGEubW9iaWxlOntwb3NpdGlvbjoicmlnaHQiLHNpemU6MTI1fSx7dW5yZWFkX21lc3NhZ2VzOk0sYXNzaWduZWRfb3BlcmF0b3JzOlI9W10saXNfYm90X2FjdGl2ZTpEfT10LmRhdGEsRj1EdChlLmFzc2lnbmVkT3BlcmF0b3JzRGF0YXx8W10sdC5kYXRhLmFzc2lnbmVkX29wZXJhdG9yc19kYXRhfHxbXSk7KDAsYi5VNSkoYyxlLnZpc2l0b3IubGFuZ3x8IiIpO2NvbnN0IGo9KDAsZy5LdSkoKTtsZXQgQj0icmlnaHQiO2lmKGopQj1MO2Vsc2V7Y29uc3QgZT1uLmluZGV4T2YoIi0iKT4tMT9uLnNwbGl0KCItIilbMV06bjsibGVmdCIhPT1lJiYicmlnaHQiIT09ZXx8KEI9ZSl9bGV0IFY9ITE7IWomJmQmJmQudmlzaWJsZSYmKFY9e3Bvc2l0aW9uOmQucG9zaXRpb24sY29sb3I6ZC5jb2xvcixmb250Q29sb3I6ZC5mb250Q29sb3J8fCIjZmZmIn0pO2NvbnN0IFU9KDAsZy5NUSkociksej0ib25saW5lIj09PXQuZGF0YS5wcm9qZWN0X3N0YXR1cyx7b3BlcmF0b3JzOkg9W119PXQuZGF0YSwkPUgubWFwKGU9Pih7aWQ6ZS5pZCxpc09ubGluZTplLmlzX29ubGluZSxhdmF0YXJTcmM6ZS5pbWFnZX0pKSx7bWVzc2FnZXM6WX09ZTtsZXQgcT1udWxsLFc9ZS5wcmVDaGF0LmlzRmlsbGVkO2NvbnN0IEc9KDAsZy5NXykoKSxRPSgwLGcuTUkpKCkmJigwLGcucVMpKCk/LmlzUHJlY2hhdERpc2FibGVkfHxHO2lmKG8mJiFRKXtpZihvLmRpc3BsYXkmJjAhPT1vLmZpZWxkcz8ubGVuZ3RoKXtxPXtmaWVsZHM6by5maWVsZHN9O2NvbnN0IGU9KDAsanQuZ1MpKCksdD1zLmZpbHRlcih0PT5lLmluY2x1ZGVzKHQucGxhdGZvcm0pKTt0Lmxlbmd0aD4wJiZxLmZpZWxkcy5wdXNoKHt0eXBlOiJzaWduVXBOZXdzbGV0dGVyIix2YWx1ZTp0LnJlZHVjZSgoZSx0KT0+Wy4uLmUsdC5wbGF0Zm9ybV0sW10pfSl9ZWxzZSBxPW51bGw7ZS5yb3V0aW5nUnVsZXMuYXJlRW5hYmxlZCYmIWEmJihXPSExKX1sZXQgSyxaO3N3aXRjaChQKXtjYXNlIDEwMDpLPW50LmFWLk1FRElVTTticmVhaztjYXNlIDc1Oks9bnQuYVYuU01BTEw7YnJlYWs7ZGVmYXVsdDpLPW50LmFWLkxBUkdFfXN3aXRjaCh2KXtjYXNlIGcuQm4uc2hvcGlmeTpaPW50Lk9ELlNIT1BJRlk7YnJlYWs7Y2FzZSBnLkJuLndvcmRwcmVzczpaPW50Lk9ELldPUkRQUkVTUzticmVhaztjYXNlIGcuQm4ud29vY29tbWVyY2U6Wj1udC5PRC5XT09DT01NRVJDRTticmVhaztkZWZhdWx0Olo9bnQuT0QuT1RIRVJTfWNvbnN0IFg9KDAsZy5NSSkoKT9bXTpGdChoKSxKPSgwLGIuQmkpKCksZWU9eD8uZmlsdGVyKGU9PmUubGFuZz09PUopfHx4O3JldHVybnsuLi5lLGNoYXRJZnJhbWVTdHlsZXM6ey4uLmUuY2hhdElmcmFtZVN0eWxlcyx3aWRnZXRQb3NpdGlvbjpCfSxzaWRlYmFySWZyYW1lU3R5bGVzOlYsaGlkZVdoZW5PZmZsaW5lOnUsY3JlYXRlVGlja2V0V2hlbk9wZXJhdG9yc09mZmxpbmU6bCx1bnJlYWRNZXNzYWdlczpNLG9wZXJhdG9yczokLGJvdHM6WCxnZXRTdGFydGVkQWN0aXZlOm0saXNCb3RBY3RpdmU6RCxhc3NpZ25lZE9wZXJhdG9yczpSLGFzc2lnbmVkT3BlcmF0b3JzRGF0YTpGLHdpZGdldENvbG9yOlUsYmFubmVySW1hZ2U6Zixpc1Byb2plY3RPbmxpbmU6eixtZXNzYWdlczpZLHByZUNoYXQ6ey4uLmUucHJlQ2hhdCxpc0ZpbGxlZDpXLGRhdGE6cX0sc2VsZWN0ZWREZXBhcnRtZW50OmEscm91dGluZ1J1bGVzOmksc2hvd0JyYW5kaW5nOnAsbW9iaWxlQnV0dG9uU2l6ZTpLLHdpZGdldExhYmVsU3RhdHVzOnkscGxhdGZvcm06Wixpc1NvdW5kRW5hYmxlZDp3LGlzQXdlc29tZUlmcmFtZTpfLGlzTW9iaWxlOmosY3VzdG9tQnJhbmRpbmc6UyxjdXN0b21BdmF0YXI6RSxkaXNhYmxlVGV4dElucHV0OkMsYWlBc3Npc3RhbnQ6ayxhaUFzc2lzdGFudE5hbWU6QXx8ZS5haUFzc2lzdGFudE5hbWUsYWlBc3Npc3RhbnREZWZhdWx0UHJvZHVjdENhcmRBY3Rpb246TyxkZXNpZ25Nb2RlOlQsY29udmVyc2F0aW9uU3RhcnRlcnM6ZWUsZGVzaWduVmVyc2lvbjo1PT09ST81OjQsaXNQcml2YWN5UG9saWN5RW5hYmxlZDpOfX1jYXNlIFhlLlNyODp7Y29uc3R7bGFzdE1lc3NhZ2VJZDpuLG1lc3NhZ2VzVG9NZXJnZTpyfT10O2xldCBvPSgwLGcubWcpKGUubWVzc2FnZXMpO2lmKG4pe2NvbnN0IGU9by5maW5kSW5kZXgoZT0+ZS5pZEZyb21TZXJ2ZXI9PT1uKTtpZigtMT09PWUpe2NvbnN0IGU9KDAsZy5tZykocikubWFwKGU9PigwLG90Lm5LKSh7ZGF0YTplfSkpLmZpbHRlcihnLnZOKTtvPW8uY29uY2F0KGUpfWVsc2V7Y29uc3QgdD0oMCxnLm1nKShyKS5zbGljZSgxKS5tYXAoZT0+KDAsb3QubkspKHtkYXRhOmV9KSkuZmlsdGVyKGcudk4pO289Wy4uLm8uc2xpY2UoMCxlKzEpLC4uLnRdfX1lbHNlIG89KDAsZy5tZykocikubWFwKGU9PigwLG90Lm5LKSh7ZGF0YTplfSkpLmZpbHRlcihnLnZOKTtjb25zdCBpPSgwLGp0LlBZKShlKSxhPVtdO2Zvcihjb25zdCBlIG9mIHIpZS5vcGVyYXRvcl9pZCYmZS5vcGVyYXRvcl9uYW1lJiZhLnB1c2goe2lkOmUub3BlcmF0b3JfaWQsbmFtZTplLm9wZXJhdG9yX25hbWV9KTtjb25zdCBzPUR0KGUuYXNzaWduZWRPcGVyYXRvcnNEYXRhLGEpO3JldHVybnsuLi5lLHVucmVhZE1lc3NhZ2VzOmk/MDplLnVucmVhZE1lc3NhZ2VzLG1lc3NhZ2VzOm8sYXNzaWduZWRPcGVyYXRvcnNEYXRhOnN9fWNhc2UgWGUuU0s4Ontjb25zdCBuPSJvbmxpbmUiPT09dC5zdGF0dXM7cmV0dXJuey4uLmUsaXNQcm9qZWN0T25saW5lOm59fWNhc2UgWGUuZ3BOOntjb25zdHtzdGF0dXM6bixzb3VyY2U6cn09dDtudWxsPT09VXQmJihVdD1yKTtsZXQgbz1uOyJ0aWRpb0NoYXRBcGkiPT09VXQmJiFlLmlzTW91bnRlZCYmInZpc2l0b3JSZWdpc3RlciI9PT1yJiZuJiYobz0hMSk7Y29uc3QgaT0oMCxqdC5OeSkoZSk7bGV0IGE7Y29uc3Qgcz0oMCxqdC5UdykoZSksYz0oMCxqdC5LNykoZSk7bGV0IHU9ZS52aWV3LHtvcGVuVGFiOmx9PWU7cmV0dXJuIXN8fHUhPT1SdC5sLmNsb3NlZCYmdSE9PVJ0LmwuZmx5fHwodT1udC5Tcy5DSEFULGw9ImhvbWUiKSwiaG9tZSIhPT1sfHxjfHwobD0iY29udmVyc2F0aW9ucyIpLGkmJnU9PT1SdC5sLmNoYXQmJih1PW50LlNzLkNMT1NFRCksYT11IT09UnQubC5jbG9zZWR8fHM/bnQuTk8uQ0hBVF9TSVpFXzE6ZS5zaWRlYmFySWZyYW1lU3R5bGVzP250Lk5PLk9OTFlfU0lERUJBUjpudC5OTy5PTkxZX0JVQkJMRSxpJiYodT09PVJ0LmwuY2hhdD8oYT1udC5OTy5NT0JJTEUsdT1udC5Tcy5DSEFUKTp1PT09UnQubC5mbHk/YT1udC5OTy5EWU5BTUlDOmUuc2lkZWJhcklmcmFtZVN0eWxlcz9hPW50Lk5PLk9OTFlfU0lERUJBUjooYT1udC5OTy5PTkxZX0JVQkJMRSwic21hbGwiPT09ZS5tb2JpbGVCdXR0b25TaXplP2E9bnQuTk8uT05MWV9CVUJCTEVfU01BTEw6Im1lZGl1bSI9PT1lLm1vYmlsZUJ1dHRvblNpemUmJihhPW50Lk5PLk9OTFlfQlVCQkxFX01FRElVTSkpKSx7Li4uZSxpc01vdW50ZWQ6byxpc01vYmlsZTppLGNoYXRJZnJhbWVTdHlsZXM6ey4uLmUuY2hhdElmcmFtZVN0eWxlcyxpZnJhbWVWaWV3OmF9LHZpZXc6dSxvcGVuVGFiOmx9fWNhc2UgWGUud1huOnJldHVybnsuLi5lLGNoYXRJZnJhbWVTdHlsZXM6ey4uLmUuY2hhdElmcmFtZVN0eWxlcyxpZnJhbWVWaWV3OnQuaWZyYW1lVmlldyxkaW1lbnNpb25zOnQuZGltZW5zaW9uc319O2Nhc2UgWGUuU1FaOnJldHVybnsuLi5lLHdpZGdldENvbG9yOnQuY29sb3J9O2Nhc2UgWGUuZTZlOntjb25zdCBuPXQub3BlbixyPSgwLGp0Lmo2KShlKSxvPSgwLGp0Lm80KShlKSxpPSgwLGp0LlBZKShlKSxhPSgwLGp0LkFvKShlKS5sZW5ndGg+MCYmKCFyfHxlLnVucmVhZE1lc3NhZ2VzPjApO2lmKCFuKXJldHVybnsuLi5lLHZpZXc6bnQuU3MuQ0xPU0VEfTtsZXQgcz0iY29udmVyc2F0aW9ucyI7cmV0dXJuIG98fGF8fChzPSJob21lIiksey4uLmUsdmlldzpudC5Tcy5DSEFULHVucmVhZE1lc3NhZ2VzOmk/MDplLnVucmVhZE1lc3NhZ2VzLG9wZW5UYWI6c319Y2FzZSBYZS5nUHM6cmV0dXJuey4uLmUsc2hvd09wdGlvbnNEcm9wZG93bjp0LnZpc2libGV9O2Nhc2UgWGUuSE06cmV0dXJuey4uLmUsc2VuZFZpc2l0b3JNZXNzYWdlRmxhZzp0LnNob3VsZFNlbmR9O2Nhc2UgWGUudWZrOnJldHVybnsuLi5lLG5vdGlmaWNhdGlvblNub296ZWQ6dC5zdGF0dXN9O2Nhc2UgWGUucl9sOntjb25zdHtvcGVyYXRvcklkT3JTdGF0dXM6bn09dDtyZXR1cm57Li4uZSxvcGVyYXRvcklzVHlwaW5nOm59fWNhc2UgWGUucWViOntjb25zdHtpc1BhZ2VWaXNpYmxlOm59PWUscj0oMCxqdC5QWSkoZSk7cmV0dXJuey4uLmUsbWVzc2FnZXM6ZS5tZXNzYWdlcy5jb25jYXQodC5tZXNzYWdlKSx1bnJlYWRNZXNzYWdlczpuJiZyPzA6ZS51bnJlYWRNZXNzYWdlcysxLG9wZXJhdG9ySXNUeXBpbmc6ITF9fWNhc2UgWGUuWmd0Ontjb25zdHtkZXBhcnRtZW50SWQ6bn09dCx7aXNGaWxsZWQ6cn09ZS5wcmVDaGF0O3JldHVybiAwIT09KDAsb3QudHIpKGUucHJlQ2hhdC5kYXRhLGUudmlzaXRvcikubGVuZ3RofHxyP3suLi5lLHNlbGVjdGVkRGVwYXJ0bWVudDpufTp7Li4uZSxzZWxlY3RlZERlcGFydG1lbnQ6bixwcmVDaGF0OnsuLi5lLnByZUNoYXQsaXNGaWxsZWQ6ITB9LHNob3dVc2VyRGF0YU1vZGFsOiExfX1jYXNlIFhlLiRtQTp7Y29uc3R7b3BlcmF0b3JJZDpuLG9wZXJhdG9yTmFtZTpyfT10O3JldHVybnsuLi5lLGFzc2lnbmVkT3BlcmF0b3JzOmUuYXNzaWduZWRPcGVyYXRvcnMuY29uY2F0KG4pLGFzc2lnbmVkT3BlcmF0b3JzRGF0YTpEdChlLmFzc2lnbmVkT3BlcmF0b3JzRGF0YSxbe2lkOm4sbmFtZTpyfV0pfX1jYXNlIFhlLmQ1Zzp7Y29uc3R7b3BlcmF0b3JJZDpufT10LHI9ZS5hc3NpZ25lZE9wZXJhdG9ycy5pbmRleE9mKG4pLG89KDAsZy5tZykoZS5hc3NpZ25lZE9wZXJhdG9ycyk7cmV0dXJuIG8uc3BsaWNlKHIsMSksey4uLmUsYXNzaWduZWRPcGVyYXRvcnM6b319Y2FzZSBYZS5leHQ6e2NvbnN0e3RhcmdldE9wZXJhdG9ySWQ6bix0YXJnZXRPcGVyYXRvck5hbWU6cn09dC5wYXlsb2FkO3JldHVybnsuLi5lLGFzc2lnbmVkT3BlcmF0b3JzOltuXSxhc3NpZ25lZE9wZXJhdG9yc0RhdGE6RHQoZS5hc3NpZ25lZE9wZXJhdG9yc0RhdGEsW3tpZDpuLG5hbWU6cn1dKX19Y2FzZSBYZS52RE06e2NvbnN0e29wZXJhdG9ySWQ6bixpc09ubGluZTpyfT10LG89KDAsZy5tZykoZS5vcGVyYXRvcnMpLm1hcChlPT5lLmlkPT09bj97Li4uZSxpc09ubGluZTpyfTplKTtyZXR1cm57Li4uZSxvcGVyYXRvcnM6b319Y2FzZSBYZS5sMm86e2NvbnN0e21vZGFsOm59PXQ7cmV0dXJuey4uLmUsc2hvd1VzZXJEYXRhTW9kYWw6bn19Y2FzZSBYZS5NZGo6e2xldCBuPXt9O3JldHVybiBvdC5yMi5mb3JFYWNoKGU9Pntjb25zdCByPXQudXBkYXRlRGF0YVtlXTt2b2lkIDAhPT1yJiYobj17W2VdOnIsLi4ubn0pfSksey4uLmUscHJlQ2hhdDp7Li4uZS5wcmVDaGF0LGlzRmlsbGVkOiEwfSx2aXNpdG9yOnsuLi5lLnZpc2l0b3IsLi4ubn0sc2hvd1VzZXJEYXRhTW9kYWw6ITF9fWNhc2UgWGUucTFtOntjb25zdHtlbWFpbDpufT10O3JldHVybnsuLi5lLHZpc2l0b3I6ey4uLmUudmlzaXRvcixlbWFpbDpufSxzaG93VXNlckRhdGFNb2RhbDohMX19Y2FzZSBYZS5KZU46e2NvbnN0e2VtYWlsOm59PXQ7cmV0dXJuey4uLmUsdmlzaXRvcjp7Li4uZS52aXNpdG9yLGVtYWlsOm59LGJsb2NrZWRNZXNzYWdlOm51bGx9fWNhc2UgWGUuTU9LOnJldHVybnsuLi5lLG5ld01lc3NhZ2VFbW9qaTp0LmVtb2ppLGlzRW1vamlQYW5lbFZpc2libGU6ITF9O2Nhc2UgWGUuSFRGOnJldHVybnsuLi5lLGlzRW1vamlQYW5lbFZpc2libGU6dC5zdGF0dXN9O2Nhc2UgWGUucFUxOntjb25zdHtwYXlsb2FkOm59PXQ7cmV0dXJuIG4uaXNEZWxpdmVyZWQ9ITAsey4uLmUsbWVzc2FnZXM6ZS5tZXNzYWdlcy5jb25jYXQobiksYmxvY2tlZE1lc3NhZ2U6bnVsbCxvcGVuVGFiOiJjb252ZXJzYXRpb25zIn19Y2FzZSBYZS5fd1c6cmV0dXJuey4uLmUsbWVzc2FnZXM6ZS5tZXNzYWdlcy5jb25jYXQodC5tZXNzYWdlKSxibG9ja2VkTWVzc2FnZTpudWxsfTtjYXNlIFhlLkNRNTpyZXR1cm4gZS5wZW5kaW5nQXR0YWNobWVudHMubGVuZ3RoPj1nLnF1P2U6ey4uLmUscGVuZGluZ0F0dGFjaG1lbnRzOlsuLi5lLnBlbmRpbmdBdHRhY2htZW50cyx7aWQ6dC5wYXlsb2FkLmlkLGZpbGVOYW1lOnQucGF5bG9hZC5maWxlLm5hbWUsdXBsb2FkU3RhdHVzOiJ1cGxvYWRpbmcifV19O2Nhc2UgWGUuajJGOnJldHVybnsuLi5lLHBlbmRpbmdBdHRhY2htZW50czplLnBlbmRpbmdBdHRhY2htZW50cy5tYXAoZT0+ZS5pZD09PXQucGF5bG9hZC5pZD97Li4uZSx1cGxvYWRTdGF0dXM6dC5wYXlsb2FkLnN0YXR1cyx1cGxvYWRlZFVybDp0LnBheWxvYWQudXBsb2FkZWRVcmwsdXBsb2FkZWRUaHVtYjp0LnBheWxvYWQudXBsb2FkZWRUaHVtYixlcnJvck1lc3NhZ2U6dC5wYXlsb2FkLmVycm9yTWVzc2FnZX06ZSl9O2Nhc2UgWGUuTlhrOnJldHVybiBlLnBlbmRpbmdBdHRhY2htZW50cy5maW5kKGU9PmUuaWQ9PT10LnBheWxvYWQuaWQpP3suLi5lLHBlbmRpbmdBdHRhY2htZW50czplLnBlbmRpbmdBdHRhY2htZW50cy5maWx0ZXIoZT0+ZS5pZCE9PXQucGF5bG9hZC5pZCl9OmU7Y2FzZSBYZS5qb2s6cmV0dXJuey4uLmUscGVuZGluZ0F0dGFjaG1lbnRzOltdfTtjYXNlIFhlLlcweTpyZXR1cm57Li4uZSxibG9ja2VkTWVzc2FnZTp0Lm1lc3NhZ2V9O2Nhc2UgWGUuVHJ2Ontjb25zdCBuPSgwLGcubWcpKGUubWVzc2FnZXMpLHI9bi5maW5kSW5kZXgoZT0+ZS5pZD09PXQubWVzc2FnZUlkKTtyZXR1cm4tMT09PXI/ZToobltyXS5pc0RlbGl2ZXJlZD10LnN0YXR1cyxuW3JdLmlkRnJvbVNlcnZlcj10LmlkRnJvbVNlcnZlcix7Li4uZSxtZXNzYWdlczpufSl9Y2FzZSBYZS53UHY6e2NvbnN0IG49KDAsZy5tZykoZS5tZXNzYWdlcykscj1uLmZpbmRJbmRleChlPT5lLmlkPT09dC5tZXNzYWdlSWQpO2lmKC0xPT09cilyZXR1cm4gZTtuW3JdLmlzSGlkZGVuPSEwO2NvbnN0IG89bltyXSxpPSgwLG90LmUkKShvLHQudXJsLHQubmFtZSx0LmV4dGVuc2lvbix0LmF0dGFjaG1lbnRUeXBlLHQudGh1bWIsdC5pbWFnZUxvYWRlZCx0Lm1lc3NhZ2VJZCk7cmV0dXJuIG4uc3BsaWNlKHIrMSwwLGkpLHsuLi5lLG1lc3NhZ2VzOm59fWNhc2UgWGUuQWNnOntjb25zdCBuPSgwLGcubWcpKGUubWVzc2FnZXMpLHI9bi5maW5kKGU9PmUuaWQ9PT10Lm1lc3NhZ2VJZCk7cmV0dXJuIHI/KHIuaW1hZ2VMb2FkZWQ9ITAsey4uLmUsbWVzc2FnZXM6bn0pOmV9Y2FzZSBYZS5ZNjU6e2NvbnN0IG49KDAsZy5tZykoZS5tZXNzYWdlcyk7bGV0IHI9dC5tZXNzYWdlSWRPckFycmF5T2ZJZHM7QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtyZXR1cm4oKGUsdCk9Pntmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rPTEpe2lmKC0xPT09ZS5maW5kSW5kZXgoZT0+ZS5pZD09PXRbbl0pKXJldHVybiExfXJldHVybiEwfSkobixyKT8oci5mb3JFYWNoKGU9Pntjb25zdCB0PW4uZmluZEluZGV4KHQ9PnQuaWQ9PT1lKTtuW3RdLmRpc2FibGVkPSEwfSksey4uLmUsbWVzc2FnZXM6bn0pOmV9Y2FzZSBYZS5RTkM6e2NvbnN0e2lzQWN0aXZlOm59PXQ7cmV0dXJuey4uLmUsaXNCb3RBY3RpdmU6bn19Y2FzZSBYZS5hJFE6e2NvbnN0IG49KDAsZy5tZykoZS5tZXNzYWdlcykscj1uLmZpbmRJbmRleChlPT5lLmlkPT09dC5tZXNzYWdlSWQpO3JldHVybi0xPT09cj9lOihuW3JdLmRpc2FibGVkPSEwLG5bcl0uY29udGVudD10LmNvbW1lbnQsey4uLmUsbWVzc2FnZXM6bn0pfWNhc2UgWGUuam5rOntjb25zdHt2aWV3Om59PXQ7aWYoIU9iamVjdC52YWx1ZXMoUnQubCkuaW5jbHVkZXMobikpcmV0dXJuIGU7Y29uc3Qgcj0oMCxqdC5QWSkoZSk7cmV0dXJuey4uLmUsdmlldzpuLHVucmVhZE1lc3NhZ2VzOnI/MDplLnVucmVhZE1lc3NhZ2VzfX1jYXNlIFhlLmdmdDpyZXR1cm57Li4uZSx2aXNpdG9yOnsuLi5lLnZpc2l0b3IsLi4udC51cGRhdGVEYXRhfX07Y2FzZSBYZS5CUVQ6cmV0dXJuey4uLmUsYWxlcnQ6e2lzVmlzaWJsZTohMCxjb250ZW50OnQubWVzc2FnZX19O2Nhc2UgWGUub2Y1OnJldHVybnsuLi5lLGFsZXJ0OnsuLi5lLmFsZXJ0LGlzVmlzaWJsZTohMX19O2Nhc2UgWGUuSER5Ontjb25zdCBuPSgwLGcubWcpKGUubWVzc2FnZXMpLHI9bi5maW5kSW5kZXgoZT0+ZS5pZD09PXQubWVzc2FnZUlkKTtyZXR1cm4tMT09PXI/ZToobltyXS5pc0hpZGRlbj0hMCx7Li4uZSxtZXNzYWdlczpufSl9Y2FzZSBYZS5Kb3E6e2lmKCEoMCxnLkREKSgpKXJldHVybiBlO2NvbnN0e3Byb3A6bixwYXlsb2FkOnJ9PXQ7aWYoInByZXZpZXdNb2RlRW5hYmxlZCI9PT1uKXJldHVybnsuLi5lLHByZXZpZXdNb2RlOnJ9O2lmKCJjb2xvciI9PT1uKXJldHVybnsuLi5lLHdpZGdldENvbG9yOigwLGcuTVEpKHIpfTtpZigicG9zaXRpb24iPT09bilyZXR1cm57Li4uZSxjaGF0SWZyYW1lU3R5bGVzOnsuLi5lLmNoYXRJZnJhbWVTdHlsZXMsd2lkZ2V0UG9zaXRpb246ci5pbmRleE9mKCItIik+LTE/ci5zcGxpdCgiLSIpWzFdOnJ9fTtpZigib3BlcmF0b3JzIj09PW4pcmV0dXJuey4uLmUsb3BlcmF0b3JzOnJ9O2lmKCJ0cmFuc2xhdGlvbnMiPT09bilyZXR1cm4oMCxiLlU1KShyLCJlbiIpLGU7aWYoImJhbm5lckltYWdlIj09PW4pcmV0dXJuey4uLmUsYmFubmVySW1hZ2U6cn07aWYoImhpZGVXaGVuT2ZmbGluZSI9PT1uKXJldHVybnsuLi5lLGhpZGVXaGVuT2ZmbGluZTpyfTtpZigid2lkZ2V0TGFiZWxTdGF0dXMiPT09bilyZXR1cm57Li4uZSx3aWRnZXRMYWJlbFN0YXR1czpyfTtpZigid2lkZ2V0U291bmRTdGF0dXMiPT09bilyZXR1cm57Li4uZSxpc1NvdW5kRW5hYmxlZDpyfTtpZigiY2hhdE9uU2l0ZSI9PT1uKXJldHVybnsuLi5lLHZpc2l0b3I6ey4uLmUudmlzaXRvcixpc19jaGF0X29uX3NpdGU6cn19O2lmKCJzaWRlYmFyIj09PW4pe2xldCBuPSExO2NvbnN0IHI9dC5wYXlsb2FkO3JldHVybiByPy52aXNpYmxlPyhuPXtwb3NpdGlvbjpyLnBvc2l0aW9uLGNvbG9yOnIuY29sb3IsZm9udENvbG9yOnIuZm9udENvbG9yfSx7Li4uZSxzaWRlYmFySWZyYW1lU3R5bGVzOm4sY2hhdElmcmFtZVN0eWxlczp7Li4uZS5jaGF0SWZyYW1lU3R5bGVzLGlmcmFtZVZpZXc6ZS52aWV3PT09bnQuU3MuQ0xPU0VEP250Lk5PLk9OTFlfU0lERUJBUjplLmNoYXRJZnJhbWVTdHlsZXMuaWZyYW1lVmlld319KTp7Li4uZSxzaWRlYmFySWZyYW1lU3R5bGVzOm4sY2hhdElmcmFtZVN0eWxlczp7Li4uZS5jaGF0SWZyYW1lU3R5bGVzLGlmcmFtZVZpZXc6ZS52aWV3PT09bnQuU3MuQ0xPU0VEP250Lk5PLk9OTFlfQlVCQkxFOmUuY2hhdElmcmFtZVN0eWxlcy5pZnJhbWVWaWV3fX19aWYoIm1lc3NhZ2VzIj09PW4pcmV0dXJuey4uLmUsbWVzc2FnZXM6ImNsZWFyIj09PXI/W106cn07aWYoInByZUNoYXREYXRhIj09PW4pcmV0dXJuIHIuc3RhdHVzP3suLi5lLHZpc2l0b3I6ey4uLmUudmlzaXRvcixuYW1lOiIiLGVtYWlsOiIiLHBob25lOiIifSxwcmVDaGF0OnsuLi5lLnByZUNoYXQsaXNGaWxsZWQ6ITEsZGF0YTp7ZmllbGRzOnIuZmllbGRzfX19OnsuLi5lLHByZUNoYXQ6ey4uLmUucHJlQ2hhdCxpc0ZpbGxlZDohMSxkYXRhOm51bGx9LHNob3dVc2VyRGF0YU1vZGFsOiExfTtpZigicm91dGluZ1J1bGVzIj09PW4pcmV0dXJuey4uLmUscm91dGluZ1J1bGVzOnJ9O2lmKCJwcmV2aWV3VmlldyI9PT1uKXtjb25zdCB0PXI7bGV0IG49ITAse21lc3NhZ2VzOm99PWUsaT1udC5Tcy5DSEFULHt2aXNpdG9yOmF9PWUse29wZW5UYWI6c309ZTsiaG9tZSI9PT10fHwiaG9tZU9mZmxpbmUiPT09dD8ocz0iaG9tZSIsaT1udC5Tcy5DSEFUKToiZ2V0dGluZ1N0YXJ0ZWQiPT09dD8obz1bXSxzPSJob21lIixpPW50LlNzLkNIQVQpOiJwcmVmb3JtIj09PXQ/YT17Li4uZS52aXNpdG9yLG5hbWU6IiIsZW1haWw6IiIscGhvbmU6IiJ9OiJjbG9zZWQiPT09dD9pPW50LlNzLkNMT1NFRDoiZmx5Ij09PXQ/aT1udC5Tcy5GTFk6KHM9ImNvbnZlcnNhdGlvbnMiLG89KChlLHQpPT5lLm1hcChlPT4ib3BlcmF0b3IiPT09ZS5zZW5kZXI/ey4uLmUsb3BlcmF0b3JfaWQ6dH06ZSkpKFt7aWQ6ImE3OTM5ODllLWRjNjktNDhjMy1iZjNiLTE2ZTcxMjQyY2M3MCIsdHlwZTpudC5Hby5URVhULHNlbmRlcjpudC5EJC5WSVNJVE9SLGlzRGVsaXZlcmVkOiEwLGlkRnJvbVNlcnZlcjoyODc3NjcxMSxjb250ZW50OigwLGIucHcpKCJIaSBhZ2FpbiIpLHRpbWVfc2VudDpEYXRlLm5vdygpLzFlMy0zNjB9LHtpZDoiNjM0Zjc5YmEtMTc5NC00MTg0LWI1ZTYtMzAzZDkzNGNiYTUwIix0eXBlOm50LkdvLlRFWFQsc2VuZGVyOm50LkQkLlZJU0lUT1IsaXNEZWxpdmVyZWQ6ITAsaWRGcm9tU2VydmVyOjI4Nzc2NzEyLGNvbnRlbnQ6KDAsYi5wdykoIkRvIHlvdSBoYXZlIHRob3NlIiksdGltZV9zZW50OkRhdGUubm93KCkvMWUzLTMwMH0se2lkOiJmNzJiMTVkMS00Y2NmLTQ4OTEtOWYxMS1lYTgyYjUyYjJkMDIiLGlkRnJvbVNlcnZlcjoyODc3NjcxNCx0eXBlOm50LkdvLlRFWFQsY29udGVudDooMCxiLnB3KSgiSGVsbG8iKSxzZW5kZXI6bnQuRCQuT1BFUkFUT1Isb3BlcmF0b3JfaWQ6bnVsbCx0aW1lX3NlbnQ6RGF0ZS5ub3coKS8xZTMtMjQwfSx7aWQ6Ijg1MTljYjYxLTgzZWUtNDJmZC1iZGMzLTFiYWVhMTMxNjBiNiIsdHlwZTpudC5Hby5URVhULHNlbmRlcjpudC5EJC5WSVNJVE9SLGlzRGVsaXZlcmVkOiEwLGlkRnJvbVNlcnZlcjoyODc3NjcxNSxjb250ZW50OigwLGIucHcpKCJJJ3ZlIGJlZW4gbG9va2luZyBmb3IiKSx0aW1lX3NlbnQ6RGF0ZS5ub3coKS8xZTMtMTgwfSx7aWQ6IjVkNDgyODUwLWU0ODAtNGE0OS05YWU2LTlmYjIwODlmNzE0OSIsaWRGcm9tU2VydmVyOjI4Nzc2NzE2LHR5cGU6bnQuR28uVEVYVCxjb250ZW50OigwLGIucHcpKCJMZXQgbWUgY2hlY2sgdGhhdCIpLHNlbmRlcjpudC5EJC5PUEVSQVRPUixvcGVyYXRvcl9pZDpudWxsLHRpbWVfc2VudDpEYXRlLm5vdygpLzFlMy0xMjB9LHtpZDoiZDg0Y2Y2MTUtMDE1Yy00NzMyLWIyOGUtZjI3NDQ3OTk3YmFmIix0eXBlOm50LkdvLlRFWFQsc2VuZGVyOm50LkQkLlZJU0lUT1IsaXNEZWxpdmVyZWQ6ITAsaWRGcm9tU2VydmVyOjI4Nzc2NzE3LGNvbnRlbnQ6KDAsYi5wdykoIlRoYXQncyBncmVhdCEiKSx0aW1lX3NlbnQ6RGF0ZS5ub3coKS8xZTMtNjB9LHtpZDoiMjI1OTdjODEtYTMyYi00ZjA5LTlhODYtMTBhZmQ4Mjg2NWM5Iix0eXBlOm50LkdvLlRFWFQsc2VuZGVyOm50LkQkLlZJU0lUT1IsaXNEZWxpdmVyZWQ6ITAsaWRGcm9tU2VydmVyOjI4Nzc2NzE4LGNvbnRlbnQ6KDAsYi5wdykoIlRoYW5rIHlvdSB2ZXJ5IG11Y2ghIiksdGltZV9zZW50OkRhdGUubm93KCkvMWUzfV0sZS5vcGVyYXRvcnNbMF0uaWQpKTtsZXQgYz1bZS5vcGVyYXRvcnNbMF0uaWRdO3JldHVybiJvcGVyYXRvcnNPZmZsaW5lIiE9PXQmJiJvcGVyYXRvcnNPZmZsaW5lTW9kYWwiIT09dCYmImhvbWVPZmZsaW5lIiE9PXR8fChuPSExLGM9W10pLHsuLi5lLGlzUHJvamVjdE9ubGluZTpuLG1lc3NhZ2VzOm8sYmxvY2tlZE1lc3NhZ2U6bnVsbCxhc3NpZ25lZE9wZXJhdG9yczpjLHZpc2l0b3I6YSx2aWV3Omksb3BlblRhYjpzLHNob3dVc2VyRGF0YU1vZGFsOiExfX1yZXR1cm4ibWVzc2FnZUZvckZseSI9PT1uP3suLi5lLG1lc3NhZ2VGb3JGbHk6cn06InNob3dCcmFuZGluZyI9PT1uP3suLi5lLHNob3dCcmFuZGluZzpyfToiY3VzdG9tQnJhbmRpbmciPT09bj97Li4uZSxjdXN0b21CcmFuZGluZzpyfToiY3VzdG9tQXZhdGFyIj09PW4/ey4uLmUsY3VzdG9tQXZhdGFyOnJ9OiJjb252ZXJzYXRpb25TdGFydGVycyI9PT1uP3suLi5lLGNvbnZlcnNhdGlvblN0YXJ0ZXJzOnJ9OiJkZXNpZ25WZXJzaW9uIj09PW4/ey4uLmUsZGVzaWduVmVyc2lvbjpyfToiaXNQcml2YWN5UG9saWN5RW5hYmxlZCI9PT1uP3suLi5lLGlzUHJpdmFjeVBvbGljeUVuYWJsZWQ6cn06InBsYXRmb3JtIj09PW4/ey4uLmUscGxhdGZvcm06cn06ZX1jYXNlIFhlLlQwVTpyZXR1cm57Li4uZSxoaWRlSGVhZGVyOnQuc3RhdHVzfTtjYXNlIFhlLl9BMTpyZXR1cm57Li4uZSxkaXNhYmxlQm90c0J1dHRvbkFuaW1hdGlvbjp0LnN0YXR1c307Y2FzZSBYZS5oSjc6cmV0dXJuey4uLmUsLi4udC5mZWF0dXJlc307Y2FzZSBYZS5TcGM6cmV0dXJuey4uLmUsc2hvd09sZE1lc3NhZ2VzOnQuc3RhdHVzLHNob3dNZXNzYWdlc0J1dHRvbkNsaWNrZWRUaW1lc3RhbXA6TWF0aC5mbG9vcihEYXRlLm5vdygpLzFlMyl9O2Nhc2UgWGUuJDQxOnJldHVybnsuLi5lLGlzRHJhZ0FuZERyb3BBY3RpdmU6dC5zdGF0dXN9O2Nhc2UgWGUuTWhYOnJldHVybnsuLi5lLGlzUGFnZVZpc2libGU6dC5zdGF0dXN9O2Nhc2UgWGUuc3ljOmNhc2UgWGUubndqOnJldHVybnsuLi5lLHVucmVhZE1lc3NhZ2VzOjB9O2Nhc2UgWGUuQXRMOnJldHVybnsuLi5lLGlzQXdlc29tZUlmcmFtZTp0LnN0YXR1c307Y2FzZSBYZS5JQVU6cmV0dXJuey4uLmUscG9wdXBJbWFnZVNyYzp0LmltYWdlfTtjYXNlIFhlLk9zTDpyZXR1cm57Li4uZSxwb3B1cEltYWdlU3JjOiIifTtjYXNlIFhlLmtvRDpyZXR1cm57Li4uZSxpZnJhbWVNb2RhbFVybDp0LnVybH07Y2FzZSBYZS5YenU6cmV0dXJuey4uLmUsbWVzc2FnZUZvckZseTp0Lm1lc3NhZ2V9O2Nhc2UgWGUub2RJOntjb25zdCBuPSgwLGcubWcpKGUubWVzc2FnZXMpLHI9bi5maW5kSW5kZXgoZT0+ZS5pZD09PXQubWVzc2FnZUlkKTtyZXR1cm4tMT09PXI/ZToobltyXS5yYXRpbmc9dC5yYXRpbmcsey4uLmUsbWVzc2FnZXM6bn0pfWNhc2UgWGUuVEdwOnJldHVybnsuLi5lLHJlY29ubmVjdEF0dGVtcHRDb3VudDp0LmNvdW50fTtjYXNlIFhlLmxpeTpyZXR1cm57Li4uZSxkaXNhYmxlVGV4dElucHV0OnQuc3RhdHVzfTtjYXNlIFhlLndNSTpyZXR1cm57Li4uZSxzYXRpc2ZhY3Rpb25TdXJ2ZXk6ey4uLmUuc2F0aXNmYWN0aW9uU3VydmV5LFt0LnRocmVhZElkXTp7Li4udC5jb25maWcsdGhyZWFkU291cmNlOnQudGhyZWFkU291cmNlLG1lc3NhZ2VJZDp0Lm1lc3NhZ2VJZH19fTtjYXNlIFhlLk5KNTpyZXR1cm57Li4uZSxzYXRpc2ZhY3Rpb25TdXJ2ZXk6ey4uLmUuc2F0aXNmYWN0aW9uU3VydmV5LFt0LnRocmVhZElkXTp7Li4uZS5zYXRpc2ZhY3Rpb25TdXJ2ZXlbdC50aHJlYWRJZF0scmVzcG9uc2U6ey4uLmUuc2F0aXNmYWN0aW9uU3VydmV5W3QudGhyZWFkSWRdLnJlc3BvbnNlLHJhdGluZzp0LnJhdGluZ319fX07Y2FzZSBYZS5TUiQ6cmV0dXJuey4uLmUsc2F0aXNmYWN0aW9uU3VydmV5OnsuLi5lLnNhdGlzZmFjdGlvblN1cnZleSxbdC50aHJlYWRJZF06ey4uLmUuc2F0aXNmYWN0aW9uU3VydmV5W3QudGhyZWFkSWRdLHJlc3BvbnNlOnsuLi5lLnNhdGlzZmFjdGlvblN1cnZleVt0LnRocmVhZElkXS5yZXNwb25zZSxjb21tZW50OnQuY29tbWVudH19fX07Y2FzZSBYZS5PeGs6cmV0dXJuey4uLmUsYWlBc3Npc3RhbnRJc1RoaW5raW5nOnQuc3RhdHVzfTtjYXNlIFhlLnEwNTpyZXR1cm57Li4uZSxvcGVuVGFiOnQub3BlblRhYn07Y2FzZSBYZS53Rlg6cmV0dXJuey4uLmUsdmlzaXRvckN1cnJlbmN5RGF0YTp0LmN1cnJlbmN5RGF0YX07Y2FzZSBYZS5kRDA6cmV0dXJuey4uLmUsaXNNb2JpbGU6Im1vYmlsZSI9PT10LmRldmljZVR5cGV9O2Nhc2UgWGUudG5vOnJldHVybnsuLi5lLGlzUHJpdmFjeVBvbGljeURpc21pc3NlZDohMH07Y2FzZSBYZS5OUU46cmV0dXJuey4uLmUscGVuZGluZ0FkZFRvQ2FydENhcmRLZXk6dC5jYXJkSWR9O2RlZmF1bHQ6cmV0dXJuIGV9fXZhciBIdD1uKDE4NDMpO2NvbnN0ICR0PWU9PntsZXQgdD0wO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4iYTAiO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9MSl7dD0oMzEqdCtlLmNoYXJDb2RlQXQobikpJTIxNDc0ODM2NDd9cmV0dXJuYGEke01hdGguYWJzKHQpLnRvU3RyaW5nKDM2KX1gfSxZdD1lPT5gdGlkaW8tY3VzdG9tLXN0eWxlcy0ke2V9YCxxdD0iOTk5OTk5OTk5IixXdD0vei1pbmRleFxzKjpccyooXGQrKS9pLEd0PWU9PntpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuO2NvbnN0e3pJbmRleDp0LHN0eWxlc1dpdGhvdXRaSW5kZXg6bn09KGU9Pntjb25zdCB0PWUubWF0Y2goV3QpO2lmKCF0KXJldHVybnt6SW5kZXg6bnVsbCxzdHlsZXNXaXRob3V0WkluZGV4OmV9O2NvbnN0IG49ZS5yZXBsYWNlKFd0LCIiKTtyZXR1cm57ekluZGV4OnRbMV0sc3R5bGVzV2l0aG91dFpJbmRleDpufX0pKGUpLHI9bi5yZXBsYWNlKC8oXnxccykjdGlkaW8oXHN8e3wkKS9nLCIkMSN0aWRpby1jaGF0LWlmcmFtZSQyIiksbz0kdChlKSxpPSgwLEh0LkdZKSgpO2lmKCFpKXtjb25zdCB0PSgpPT57R3QoZSksSHQuYXgub2ZmKCJkb2N1bWVudEFuZFdpbmRvd1JlZlNldCIsdCl9O3JldHVybiBIdC5heC5vbigiZG9jdW1lbnRBbmRXaW5kb3dSZWZTZXQiLHQpLG99dCYmKChlLHQsbik9Pntjb25zdCByPWU7ci5zdHlsZS5zZXRQcm9wZXJ0eSgiei1pbmRleCIsdCwiaW1wb3J0YW50Iiksci5kYXRhc2V0LnRpZGlvWmluZGV4SGFzaD1uO2NvbnN0IG89ci5wYXJlbnRFbGVtZW50OyJ0aWRpby1jaGF0Ij09PW8/LmlkJiYoby5zdHlsZS5zZXRQcm9wZXJ0eSgiei1pbmRleCIsdCwiaW1wb3J0YW50Iiksby5kYXRhc2V0LnRpZGlvWmluZGV4SGFzaD1uKX0pKGksdCxvKTtjb25zdCBhPVl0KG8pO2lmKGkucXVlcnlTZWxlY3RvcihgIyR7YX1gKSlyZXR1cm4gbztjb25zdCBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIHMuaWQ9YSxzLmNsYXNzTmFtZT0idGlkaW8tY3VzdG9tLXN0eWxlcyIscy50ZXh0Q29udGVudD1yLGkuYXBwZW5kQ2hpbGQocyksb30sUXQ9ZT0+e2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4hMTtjb25zdCB0PSgwLEh0LkdZKSgpO2lmKCF0KXtjb25zdCB0PSgpPT57UXQoZSksSHQuYXgub2ZmKCJkb2N1bWVudEFuZFdpbmRvd1JlZlNldCIsdCl9O3JldHVybiBIdC5heC5vbigiZG9jdW1lbnRBbmRXaW5kb3dSZWZTZXQiLHQpLCEwfWlmKCJDU1MiaW4gd2luZG93JiYiZXNjYXBlImluIENTUyl7aWYoQ1NTLmVzY2FwZShlKSE9PWUpcmV0dXJuITF9dHJ5eygoZSx0KT0+e2NvbnN0IG49ZTtuLmRhdGFzZXQudGlkaW9aaW5kZXhIYXNoPT09dCYmKG4uc3R5bGUuc2V0UHJvcGVydHkoInotaW5kZXgiLHF0LCJpbXBvcnRhbnQiKSxkZWxldGUgbi5kYXRhc2V0LnRpZGlvWmluZGV4SGFzaCk7Y29uc3Qgcj1uLnBhcmVudEVsZW1lbnQ7InRpZGlvLWNoYXQiPT09cj8uaWQmJnIuZGF0YXNldC50aWRpb1ppbmRleEhhc2g9PT10JiYoci5zdHlsZS5zZXRQcm9wZXJ0eSgiei1pbmRleCIscXQsImltcG9ydGFudCIpLGRlbGV0ZSByLmRhdGFzZXQudGlkaW9aaW5kZXhIYXNoKX0pKHQsZSk7Y29uc3Qgbj1ZdChlKSxyPXQucXVlcnlTZWxlY3RvcihgIyR7bn1gKTtpZihyKXJldHVybiByLnJlbW92ZSgpLCEwfWNhdGNoe3JldHVybiExfXJldHVybiExfSxLdD1lPT5gdGlkaW8tc2hhZG93LXN0eWxlcy0ke2V9YCxadD0vei1pbmRleFxzKjpccyooXGQrKS9pLFh0PWU9PntpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuO2NvbnN0e3pJbmRleDp0LHN0eWxlc1dpdGhvdXRaSW5kZXg6bn09KGU9Pntjb25zdCB0PWUubWF0Y2goWnQpO2lmKCF0KXJldHVybnt6SW5kZXg6bnVsbCxzdHlsZXNXaXRob3V0WkluZGV4OmV9O2NvbnN0IG49ZS5yZXBsYWNlKFp0LCIiKTtyZXR1cm57ekluZGV4OnRbMV0sc3R5bGVzV2l0aG91dFpJbmRleDpufX0pKGUpLHI9YFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICBhbGw6IGluaXRpYWw7XG4gICAgICAgICAgICAke24ucmVwbGFjZSgvKF58XHMpI3RpZGlvKFxzfHt8JCkvZywiJDEjdGlkaW8tY2hhdC1yb290JDIiKX1cbiAgICAgICAgfVxuICAgIGAsbz0kdChlKSxpPSgwLEh0LmJpKSgpO2lmKCFpKXtjb25zdCB0PSgpPT57WHQoZSksSHQuYXgub2ZmKCJkb2N1bWVudEFuZFdpbmRvd1JlZlNldCIsdCl9O3JldHVybiBIdC5heC5vbigiZG9jdW1lbnRBbmRXaW5kb3dSZWZTZXQiLHQpLG99dCYmKChlLHQsbik9PntpZighKCJob3N0ImluIGUpKXJldHVybjtjb25zdCByPWUuaG9zdDtyLnN0eWxlLnNldFByb3BlcnR5KCJ6LWluZGV4Iix0LCJpbXBvcnRhbnQiKSxyLmRhdGFzZXQudGlkaW9aaW5kZXhIYXNoPW59KShpLHQsbyk7Y29uc3QgYT1LdChvKTtpZihpLnF1ZXJ5U2VsZWN0b3IoYCMke2F9YCkpcmV0dXJuIG87Y29uc3Qgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiBzLmlkPWEscy50ZXh0Q29udGVudD1yLGkuYXBwZW5kQ2hpbGQocyksb30sSnQ9ZT0+e2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4hMTtjb25zdCB0PSgwLEh0LmJpKSgpO2lmKCF0KXtjb25zdCB0PSgpPT57SnQoZSksSHQuYXgub2ZmKCJkb2N1bWVudEFuZFdpbmRvd1JlZlNldCIsdCl9O3JldHVybiBIdC5heC5vbigiZG9jdW1lbnRBbmRXaW5kb3dSZWZTZXQiLHQpLCEwfWlmKCJDU1MiaW4gd2luZG93JiYiZXNjYXBlImluIENTUyl7aWYoQ1NTLmVzY2FwZShlKSE9PWUpcmV0dXJuITF9dHJ5eygoZSx0KT0+e2lmKCEoImhvc3QiaW4gZSkpcmV0dXJuO2NvbnN0IG49ZS5ob3N0O24uZGF0YXNldC50aWRpb1ppbmRleEhhc2g9PT10JiYobi5zdHlsZS5zZXRQcm9wZXJ0eSgiei1pbmRleCIsIjk5OTk5OTk5OSIsImltcG9ydGFudCIpLGRlbGV0ZSBuLmRhdGFzZXQudGlkaW9aaW5kZXhIYXNoKX0pKHQsZSk7Y29uc3Qgbj1LdChlKSxyPXQucXVlcnlTZWxlY3RvcihgIyR7bn1gKTtpZihyKXJldHVybiByLnJlbW92ZSgpLCEwfWNhdGNoe3JldHVybiExfXJldHVybiExfTt2YXIgZW49big2OTI0KSx0bj1uKDc3NjcpLG5uPW4oNjU0Mikscm49big0MTIxKTtsZXQgb249bnVsbDtsZXQgYW49bnVsbCxzbj0yNzA7bGV0IGNuPSExLHVuPXt9O2xldCBsbj1udWxsO2Z1bmN0aW9uIGRuKGUsdCl7aWYoZS5pc01vYmlsZSlyZXR1cm4hMTtpZighdD8uYWN0aXZlRWxlbWVudClyZXR1cm4hMTtpZihlLnByZXZpZXdNb2RlKXJldHVybiExO2lmKCJJTlBVVCIhPT10LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSl7Y29uc3QgdD0oMCxqdC5zeSkoZSk7cmV0dXJuIXR8fCEodC50eXBlPT09b3QudF8uY2FyZHN8fHQucXVpY2tSZXBsaWVzJiZ0LnF1aWNrUmVwbGllcy5sZW5ndGg+MCl9cmV0dXJuITF9dmFyIGZuPWU9PntsZXR7Z2V0U3RhdGU6dCxkaXNwYXRjaDpufT1lO3JldHVybiBlPT5yPT57c3dpdGNoKHIudHlwZSl7Y2FzZSBYZS5ITTp7Y29uc3R7c2hvdWxkU2VuZDp0fT1yO3JldHVybiB0JiZzZXRUaW1lb3V0KCgpPT57bigoMCxYZS56cnMpKCExKSl9LDApLGUocil9Y2FzZSBYZS5RdnM6e2NvbnN0IG89dCgpLHtpZGVudGlmeURhdGE6aX09cjtsZXQgYT0hMDt0cnl7YT0hby50aWRpb0lkZW50aWZ5RGF0YXx8MD09PU9iamVjdC5rZXlzKG8udGlkaW9JZGVudGlmeURhdGEpLmxlbmd0aH1jYXRjaCh0KXtyZXR1cm4oMCx2LnNRKSh0KSxlKHIpfWlmKCFpJiZhKXJldHVybiBlKHIpO2NvbnN0IHM9KDAsZy5tMCkoaSk7aWYoIXMpcmV0dXJuIGUocik7Y29uc3R7ZGlzdGluY3RfaWQ6Y309cztpZihjKXtsZXQgZT1TdHJpbmcoYyk7ZS5sZW5ndGg+NTUmJihjb25zb2xlLndhcm4oInRpZGlvSWRlbnRpZnkgLSBkaXN0aW5jdF9pZCBwcm9wZXJ0eSB2YWx1ZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gNTUgY2hhcmFjdGVycy4gQ3VycmVudCB2YWx1ZSB3aWxsIGJlIHRyaW1tZWQuIiksZT1lLnN1YnN0cmluZygwLDU1KSxzLmRpc3RpbmN0X2lkPWUpfWlmKCEoMCxnLnduKShvLnRpZGlvSWRlbnRpZnlEYXRhfHx7fSxzKSl7Y29uc3QgdD1lKHIpO3JldHVybiBuKCgwLFhlLlBQRykocykpLHR9cmV0dXJuIGUocil9Y2FzZSBYZS5ncE46aWYoci5zdGF0dXMpe2NvbnN0IG49dCgpO2lmKG4uaXNNb3VudGVkKXJldHVybiExO2NvbnN0IG89KDAsanQuc3kpKG4pO28/LmlzV2FpdGluZ0ZvckFuc3dlciYmKGNuPSEwKTtjb25zdCBpPWUocikse3dpZHRoOmEsaGVpZ2h0OnN9PSgwLGVuLkxZKShuLmNoYXRJZnJhbWVTdHlsZXMuaWZyYW1lVmlldyk7cmV0dXJuIHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoInJlc2l6ZSIse3dpZHRoOmEsaGVpZ2h0OnMsaWZyYW1lOigwLEh0LkdZKSgpfSksaX1yZXR1cm4gd2luZG93LnRpZGlvQ2hhdEFwaT8udHJpZ2dlcigicmVzaXplIix7d2lkdGg6MCxoZWlnaHQ6MCxpZnJhbWU6bnVsbH0pLGUocik7Y2FzZSBYZS5lNmU6e2NvbnN0IG89ci5vcGVuLGk9dCgpLHtkZXNpZ25Nb2RlOmF9PWk7aWYoYSYmbylyZXR1cm4hMTtpZighbyYmaS52aWV3PT09bnQuU3MuQ0xPU0VEKXJldHVybiExO2lmKG8mJmkudmlldyE9PW50LlNzLkNMT1NFRClyZXR1cm4hMTtjb25zdCBzPSExIT09aS5zaWRlYmFySWZyYW1lU3R5bGVzLGM9ImxlZnQiPT09aS5jaGF0SWZyYW1lU3R5bGVzLndpZGdldFBvc2l0aW9ufHxzO2xldCB1O3JldHVybiB1PW8/bnQuTk8uQ0hBVF9TSVpFXzE6cz9udC5OTy5PTkxZX1NJREVCQVI6bnQuTk8uT05MWV9CVUJCTEUsaS5pc01vYmlsZSYmKG8/dT1udC5OTy5NT0JJTEU6cz91PW50Lk5PLk9OTFlfU0lERUJBUjoodT1udC5OTy5PTkxZX0JVQkJMRSwic21hbGwiPT09aS5tb2JpbGVCdXR0b25TaXplP3U9bnQuTk8uT05MWV9CVUJCTEVfU01BTEw6Im1lZGl1bSI9PT1pLm1vYmlsZUJ1dHRvblNpemUmJih1PW50Lk5PLk9OTFlfQlVCQkxFX01FRElVTSkpKSxhbiYmKGNsZWFyVGltZW91dChhbiksYW49bnVsbCksc249Yz8yNzA6NTAsbz8oY3x8bigoMCxYZS5vT20pKHUpKSx3aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJiZWZvcmVPcGVuIiksYW49c2V0VGltZW91dCgoKT0+e2MmJnUmJm4oKDAsWGUub09tKSh1KSksc2V0VGltZW91dCgoKT0+e2NvbnN0IGU9KDAsSHQuYmkpKCk7ZG4oaSxlKSYmKDAsSHQueUcpKCl9LDApLHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoIm9wZW4iKSx3aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJwb3BVcFNob3ciKX0sc24pLGUocikpOih3aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJiZWZvcmVDbG9zZSIpLGFuPXNldFRpbWVvdXQoKCk9Pnt3aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJjbG9zZSIpLHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoInBvcFVwSGlkZSIpO2NvbnN0IGU9dCgpLHI9KDAsanQuengpKGUpLG89dT09PWVuLk55Lm9ubHlCdWJibGV8fHU9PT1lbi5OeS5vbmx5QnViYmxlTWVkaXVtfHx1PT09ZW4uTnkub25seUJ1YmJsZVNtYWxsfHx1PT09ZW4uTnkub25seVNpZGViYXI7cmV0dXJuIShvJiZlLnZpZXchPT1udC5Tcy5DTE9TRUR8fHImJm8pJiYodSYmbigoMCxYZS5vT20pKHUpKSwhMCl9LDMwMCksZShyKSl9Y2FzZSBYZS5qbms6cmV0dXJuIHNldFRpbWVvdXQoKCk9Pntkbih0KCksKDAsSHQuYmkpKCkpJiYoMCxIdC55RykoKX0sMCksci52aWV3PT09bnQuU3MuQ0hBVCYmd2luZG93LnRpZGlvQ2hhdEFwaT8udHJpZ2dlcigib3BlbiIpLGUocik7Y2FzZSBYZS5yX2w6cmV0dXJuITEhPT1yLm9wZXJhdG9ySWRPclN0YXR1cyYmKG9uJiZjbGVhclRpbWVvdXQob24pLG9uPXNldFRpbWVvdXQoKCk9Pm4oKDAsWGUubTdfKSghMSkpLHIudGltZW91dFZhbHVlPz8zZTMpKSxlKHIpO2Nhc2UgWGUuT3hrOnJldHVybiByLnN0YXR1cyYmKGxuJiZjbGVhclRpbWVvdXQobG4pLGxuPXNldFRpbWVvdXQoKCk9Pm4oKDAsWGUuZDlRKSghMSkpLGcuQWopKSxlKHIpO2Nhc2UgWGUucFUxOntjb25zdCBvPXQoKTtpZihvLmlzQm90QWN0aXZlKXJldHVybiB3aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJtZXNzYWdlRnJvbVZpc2l0b3IiLHttZXNzYWdlOnIubWVzc2FnZSxmcm9tQm90OiEwLHR5cGU6InRleHQifSksZShyKTtpZihjbilyZXR1cm4gY249ITEsd2luZG93LnRpZGlvQ2hhdEFwaT8udHJpZ2dlcigibWVzc2FnZUZyb21WaXNpdG9yIix7bWVzc2FnZTpyLm1lc3NhZ2UsZnJvbUJvdDohMCx0eXBlOiJ0ZXh0In0pLGUocik7Y29uc3R7cGF5bG9hZDppfT1yO2lmKGkucGF5bG9hZClyZXR1cm4gd2luZG93LnRpZGlvQ2hhdEFwaT8udHJpZ2dlcigibWVzc2FnZUZyb21WaXNpdG9yIix7bWVzc2FnZTpyLm1lc3NhZ2UsZnJvbUJvdDohMCx0eXBlOiJ0ZXh0In0pLGUocik7Y29uc3QgYT0oMCxqdC5aWCkobykscz0oMCxqdC5ZTikobyksYz0oMCxnLk1fKSgpLHU9KDAsb3QudHIpKG8ucHJlQ2hhdC5kYXRhLG8udmlzaXRvcikubGVuZ3RofHxhJiYhcyxsPSgwLGcuTUkpKCkmJigwLGcucVMpKCk/LmlzTHlyb1BsYXlncm91bmQ7aWYoIW8uYWlBc3Npc3RhbnQmJiFvLmlzUHJvamVjdE9ubGluZSYmIWwmJigwLGp0LnB6KShvKSlyZXR1cm4gbigoMCxYZS5TOGgpKHIubWVzc2FnZSkpLG4oKDAsWGUuZXN2KSgiY3JlYXRlVGlja2V0IikpLCExO2lmKGN8fG8ucHJlQ2hhdC5pc0ZpbGxlZHx8IXV8fGwpe2lmKCFvLmlzUHJvamVjdE9ubGluZSYmKCEoMCxqdC5leikobyl8fCgwLGp0LmRCKShvKSkpe2NvbnN0IHQ9KDAsb3QuUVYpKCk7aWYoIXQpcmV0dXJuIGUocik7Y29uc3QgaT1vLnZpc2l0b3IuZW1haWw7aWYoIW8uYWlBc3Npc3RhbnQmJiFsKXtpZighaSlyZXR1cm4gbigoMCxYZS5TOGgpKHIubWVzc2FnZSkpLG4oKDAsWGUuZXN2KSgiYWx3YXlzT25saW5lIikpLCExO3QuY29udGVudD1pLHQuZGlzYWJsZWQ9ITAsc2V0VGltZW91dCgoKT0+e24oKDAsWGUudGpSKSh0KSl9KX19fWVsc2V7aWYoISgwLGp0LnpIKShvKXx8YSlyZXR1cm4gbigoMCxYZS5TOGgpKHIubWVzc2FnZSkpLG4oKDAsWGUuZXN2KSgicHJlY2hhdCIpKSwhMX1jb25zdCBkPSgwLHR0LnZ1KSgibGFzdE1lc3NhZ2VGcm9tVmlzaXRvclRpbWVzdGFtcCIpfHwwLGY9KDAsZy5MbikoKTtyZXR1cm4gZi1kPjg2NDAwJiZ3aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJjb252ZXJzYXRpb25TdGFydCIpLCgwLHR0LkhvKSgibGFzdE1lc3NhZ2VGcm9tVmlzaXRvclRpbWVzdGFtcCIsZiksd2luZG93LnRpZGlvQ2hhdEFwaT8udHJpZ2dlcigibWVzc2FnZUZyb21WaXNpdG9yIix7bWVzc2FnZTpyLm1lc3NhZ2UsZnJvbUJvdDohMSx0eXBlOiJ0ZXh0In0pLGUocil9Y2FzZSBYZS5xMW06e2NvbnN0IG89KDAsb3QuUVYpKCksaT1lKHIpO3tjb25zdCBlPXQoKTtvJiYhZS5haUFzc2lzdGFudCYmbigoMCxYZS50alIpKG8pKX1yZXR1cm4gbigoMCxYZS56cnMpKCEwKSksc2V0VGltZW91dCgoKT0+e3QoKS5haUFzc2lzdGFudHx8bigoMCxYZS50alIpKCgwLG90LkgxKSgoMCxiLnB3KSgiYWx3YXlzT25saW5lVGhhbmtzIikpKSl9LDApLGl9Y2FzZSBYZS5KZU46e2NvbnN0IHQ9KDAsb3QuS3QpKCksbz1lKHIpO3JldHVybiBuKCgwLFhlLnRqUikodCkpLG99Y2FzZSBYZS5xZWI6e2NvbnN0IG89dCgpO2lmKCJyYXRlQ29udmVyc2F0aW9uIj09PXIubWVzc2FnZS50eXBlKXtpZigoMCxqdC5iSSkobyxudC5Hby5SQVRFX0NPTlZFUlNBVElPTikuZmlsdGVyKGU9PiFlLmRpc2FibGVkKS5sZW5ndGg+MClyZXR1cm4oMCxIdC5lMikoKSwhMX1jb25zdCBpPW8uaGlkZVdoZW5PZmZsaW5lJiYhby5pc1Byb2plY3RPbmxpbmUmJiFvLnZpc2l0b3IuaXNfY2hhdF9vbl9zaXRlO2lmKG8uaXNTb3VuZEVuYWJsZWQmJiFvLm5vdGlmaWNhdGlvblNub296ZWQmJm8uaXNNb3VudGVkJiYhaSl0cnl7Y29uc3QgZT01PT09by5kZXNpZ25WZXJzaW9ufHwoMCx0bi5jKSgpOygwLG5uLiRFKShlKX1jYXRjaChlKXsoMCx2LnNRKShlKX1vLmFpQXNzaXN0YW50SXNUaGlua2luZyYmbigoMCxYZS5kOVEpKCExKSksd2luZG93LnRpZGlvQ2hhdEFwaT8udHJpZ2dlcigibWVzc2FnZUZyb21PcGVyYXRvciIse21lc3NhZ2U6ci5tZXNzYWdlLmNvbnRlbnQsZnJvbUJvdDpyLm1lc3NhZ2Uuc2VuZGVyPT09b3QuQmcuYm90fSk7Y29uc3R7aXNXYWl0aW5nRm9yQW5zd2VyOmF9PXIubWVzc2FnZTtyZXR1cm4gYSYmKGNuPSEwKSxlKHIpfWNhc2UgWGUuJG1BOntjb25zdHtvcGVyYXRvcklkOm59PXI7cmV0dXJuISh0KCkuYXNzaWduZWRPcGVyYXRvcnMuaW5kZXhPZihuKT4tMSkmJmUocil9Y2FzZSBYZS5kNWc6e2NvbnN0e29wZXJhdG9ySWQ6bn09cjtyZXR1cm4tMT09PXQoKS5hc3NpZ25lZE9wZXJhdG9ycy5pbmRleE9mKG4pPygoMCx2LnNRKShgJHtyLnR5cGV9IC0gTm8gb3BlcmF0b3JJZCBmb3VuZCBpbiBhc3NpZ25lZE9wZXJhdG9yc2Ase29wZXJhdG9ySWQ6bn0pLCExKTplKHIpfWNhc2UgWGUuT2RoOntjb25zdCB0PSgwLG90Lkg0KShyLnJhdGluZ0lzR29vZCk7cmV0dXJuIG4oKDAsWGUudGpSKSh0KSksZShyKX1jYXNlIFhlLmdmdDp7Y29uc3QgdD0oMCxnLmlGKShyLnVwZGF0ZURhdGEpO3JldHVybiEoIm9iamVjdCIhPXR5cGVvZiByLnVwZGF0ZURhdGF8fCF0KSYmZSh7Li4ucix1cGRhdGVEYXRhOigwLGcuaUYpKHIudXBkYXRlRGF0YSl9KX1jYXNlIFhlLlNLODpyZXR1cm4gd2luZG93LnRpZGlvQ2hhdEFwaT8udHJpZ2dlcigic2V0U3RhdHVzIixyLnN0YXR1cyksZShyKTtjYXNlIFhlLk1kajp7ci51cGRhdGVEYXRhJiZ3aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJwcmVGb3JtRmlsbGVkIix7Zm9ybV9kYXRhOnIudXBkYXRlRGF0YX0pO2NvbnN0IG89dCgpLGk9KDAsb3QudFQpKG8ucHJlQ2hhdC5kYXRhLG8udmlzaXRvciksYT1lKHIpO3JldHVybiBpJiZuKCgwLFhlLnRqUikoaSkpLG4oKDAsWGUuenJzKSghMCkpLGF9Y2FzZSBYZS53WG46e2NvbnN0e2lmcmFtZVZpZXc6dCxkaW1lbnNpb25zOm59PXI7bGV0IG8saTtyZXR1cm4gbj8oKHt3aWR0aDpvLGhlaWdodDppfT1uKSwoMCxlbi5PUikobyxpKSk6KHt3aWR0aDpvLGhlaWdodDppfT0oMCxlbi5MWSkodCkpLHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyaWdnZXIoInJlc2l6ZSIse3dpZHRoOm8saGVpZ2h0OmksaWZyYW1lOigwLEh0LkdZKSgpfSksZShyKX1jYXNlIFhlLmlUZDpyZXR1cm4gc2V0VGltZW91dCgoKT0+e24oKDAsWGUuZzZRKShudC5Tcy5DSEFUKSl9LDIwMCksZShyKTtjYXNlIFhlLkpvcTp7Y29uc3R7cHJvcDp0LHBheWxvYWQ6b309cjtyZXR1cm4icHJldmlld1ZpZXciPT09dCYmc2V0VGltZW91dCgoKT0+e2NvbnN0IGU9bzsiY2xvc2VkIj09PWU/bigoMCxYZS5ucHcpKCExKSk6KG4oKDAsWGUubnB3KSghMCkpLCJvcGVyYXRvcnNPZmZsaW5lIj09PWUmJnNldFRpbWVvdXQoKCk9PntuKCgwLFhlLnE3dikoImNvbnZlcnNhdGlvbnMiKSksbigoMCxYZS5nNlEpKG50LlNzLkNIQVQpKX0sMCksIm9wZXJhdG9yc09mZmxpbmVNb2RhbCI9PT1lJiZzZXRUaW1lb3V0KCgpPT57bigoMCxYZS5xN3YpKCJjb252ZXJzYXRpb25zIikpLG4oKDAsWGUuZzZRKShudC5Tcy5DSEFUKSksbigoMCxYZS5lc3YpKCJhbHdheXNPbmxpbmUiKSl9LDApLCJjcmVhdGVUaWNrZXQiPT09ZSYmc2V0VGltZW91dCgoKT0+e24oKDAsWGUucTd2KSgiY29udmVyc2F0aW9ucyIpKSxuKCgwLFhlLmc2USkobnQuU3MuQ0hBVCkpLG4oKDAsWGUuZXN2KSgiY3JlYXRlVGlja2V0IikpfSwwKSwicHJlZm9ybSI9PT1lJiZzZXRUaW1lb3V0KCgpPT57bigoMCxYZS5xN3YpKCJjb252ZXJzYXRpb25zIikpLG4oKDAsWGUuZzZRKShudC5Tcy5DSEFUKSksbigoMCxYZS5lc3YpKCJwcmVjaGF0IikpfSwwKSl9KSxlKHIpfWNhc2UgWGUuZTc3Ontjb25zdCB0PWUocik7cmV0dXJuIE9iamVjdC5rZXlzKHVuKS5sZW5ndGg+MCYmbigoMCxYZS51T3kpKHVuKSksdH1jYXNlIFhlLmhKNzp7Y29uc3QgdD0oMCxnLnNFKShyLmZlYXR1cmVzKTtpZigib2JqZWN0IiE9dHlwZW9mIHIuZmVhdHVyZXN8fCF0KXJldHVybiExO2NvbnN0IG89ey4uLnIsZmVhdHVyZXM6dH07cmV0dXJuIHVuPXsuLi51biwuLi50fSx0LmN1c3RvbUJyYW5kaW5nJiYoKDAscm4udSkocm4uWC53aGl0ZWxhYmVsaW5nRW5hYmxlZCl8fG4oKDAsWGUucE82KShybi5YLndoaXRlbGFiZWxpbmdFbmFibGVkKSkpLGUobyl9Y2FzZSBYZS5Ibl86e2NvbnN0e3N0eWxlczpufT1yLG89dCgpLHtkZXNpZ25WZXJzaW9uOml9PW87bGV0IGE7cmV0dXJuIGE9NT09PWl8fCgwLHRuLmMpKCk/WHQobik6R3QobiksZShyKSxhfWNhc2UgWGUuV2VUOntjb25zdHtzdHlsZUlkOm59PXIsbz10KCkse2Rlc2lnblZlcnNpb246aX09bztyZXR1cm4gNT09PWl8fCgwLHRuLmMpKCk/SnQobik6UXQobiksZShyKX1jYXNlIFhlLndGWDp7Y29uc3QgdD0oMCxnLndQKShyLmN1cnJlbmN5RGF0YSk7cmV0dXJuISgib2JqZWN0IiE9dHlwZW9mIHIuY3VycmVuY3lEYXRhfHwhdCkmJmUoey4uLnIsY3VycmVuY3lEYXRhOnR9KX1kZWZhdWx0OnJldHVybiBlKHIpfX19LHBuPW4oNjI2NSksaG49bigxNTg0KSxtbj1uKDkyMTYpO2NvbnN0IGduPVtdO2Z1bmN0aW9uIHluKGUpe2NvbnN0IHQ9ZS5kZWZhdWx0SW50ZWdyYXRpb25zfHxbXSxuPWUuaW50ZWdyYXRpb25zO2xldCByO2lmKHQuZm9yRWFjaChlPT57ZS5pc0RlZmF1bHRJbnN0YW5jZT0hMH0pLEFycmF5LmlzQXJyYXkobikpcj1bLi4udCwuLi5uXTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXtjb25zdCBlPW4odCk7cj1BcnJheS5pc0FycmF5KGUpP2U6W2VdfWVsc2Ugcj10O2NvbnN0IG89ZnVuY3Rpb24oZSl7Y29uc3QgdD17fTtyZXR1cm4gZS5mb3JFYWNoKGU9Pntjb25zdHtuYW1lOm59PWUscj10W25dO3ImJiFyLmlzRGVmYXVsdEluc3RhbmNlJiZlLmlzRGVmYXVsdEluc3RhbmNlfHwodFtuXT1lKX0pLE9iamVjdC52YWx1ZXModCl9KHIpLGk9by5maW5kSW5kZXgoZT0+IkRlYnVnIj09PWUubmFtZSk7aWYoaT4tMSl7Y29uc3RbZV09by5zcGxpY2UoaSwxKTtvLnB1c2goZSl9cmV0dXJuIG99ZnVuY3Rpb24gdm4oZSx0KXtmb3IoY29uc3QgbiBvZiB0KW4mJm4uYWZ0ZXJBbGxTZXR1cCYmbi5hZnRlckFsbFNldHVwKGUpfWZ1bmN0aW9uIGJuKGUsdCxuKXtpZihuW3QubmFtZV0paG4uVCYmbW4udkYubG9nKGBJbnRlZ3JhdGlvbiBza2lwcGVkIGJlY2F1c2UgaXQgd2FzIGFscmVhZHkgaW5zdGFsbGVkOiAke3QubmFtZX1gKTtlbHNle2lmKG5bdC5uYW1lXT10LC0xPT09Z24uaW5kZXhPZih0Lm5hbWUpJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5zZXR1cE9uY2UmJih0LnNldHVwT25jZSgpLGduLnB1c2godC5uYW1lKSksdC5zZXR1cCYmImZ1bmN0aW9uIj09dHlwZW9mIHQuc2V0dXAmJnQuc2V0dXAoZSksImZ1bmN0aW9uIj09dHlwZW9mIHQucHJlcHJvY2Vzc0V2ZW50KXtjb25zdCBuPXQucHJlcHJvY2Vzc0V2ZW50LmJpbmQodCk7ZS5vbigicHJlcHJvY2Vzc0V2ZW50IiwodCxyKT0+bih0LHIsZSkpfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiB0LnByb2Nlc3NFdmVudCl7Y29uc3Qgbj10LnByb2Nlc3NFdmVudC5iaW5kKHQpLHI9T2JqZWN0LmFzc2lnbigodCxyKT0+bih0LHIsZSkse2lkOnQubmFtZX0pO2UuYWRkRXZlbnRQcm9jZXNzb3Iocil9aG4uVCYmbW4udkYubG9nKGBJbnRlZ3JhdGlvbiBpbnN0YWxsZWQ6ICR7dC5uYW1lfWApfX12YXIgd249bigyMDM2KSxfbj1uKDcxMzcpO2NvbnN0IFNuPVsvXlNjcmlwdCBlcnJvclwuPyQvLC9eSmF2YXNjcmlwdCBlcnJvcjogU2NyaXB0IGVycm9yXC4/IG9uIGxpbmUgMCQvLC9eUmVzaXplT2JzZXJ2ZXIgbG9vcCBjb21wbGV0ZWQgd2l0aCB1bmRlbGl2ZXJlZCBub3RpZmljYXRpb25zLiQvLC9eQ2Fubm90IHJlZGVmaW5lIHByb3BlcnR5OiBnb29nbGV0YWckLywidW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2EuTCcpIiwnY2FuXCd0IHJlZGVmaW5lIG5vbi1jb25maWd1cmFibGUgcHJvcGVydHkgInNvbGFuYSInLCJ2digpLmdldFJlc3RyaWN0aW9ucyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd2digpLmdldFJlc3RyaWN0aW9ucygxLGEpJywgJ3Z2KCkuZ2V0UmVzdHJpY3Rpb25zJyBpcyB1bmRlZmluZWQpIiwiQ2FuJ3QgZmluZCB2YXJpYWJsZTogX0F1dG9maWxsQ2FsbGJhY2tIYW5kbGVyIiwvXk5vbi1FcnJvciBwcm9taXNlIHJlamVjdGlvbiBjYXB0dXJlZCB3aXRoIHZhbHVlOiBPYmplY3QgTm90IEZvdW5kIE1hdGNoaW5nIElkOlxkKywgTWV0aG9kTmFtZTpzaW11bGF0ZUV2ZW50LCBQYXJhbUNvdW50OlxkKyQvXSxFbj1mdW5jdGlvbigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtyZXR1cm57bmFtZToiSW5ib3VuZEZpbHRlcnMiLHByb2Nlc3NFdmVudCh0LG4scil7Y29uc3Qgbz1yLmdldE9wdGlvbnMoKSxpPWZ1bmN0aW9uKCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3JldHVybnthbGxvd1VybHM6Wy4uLmUuYWxsb3dVcmxzfHxbXSwuLi50LmFsbG93VXJsc3x8W11dLGRlbnlVcmxzOlsuLi5lLmRlbnlVcmxzfHxbXSwuLi50LmRlbnlVcmxzfHxbXV0saWdub3JlRXJyb3JzOlsuLi5lLmlnbm9yZUVycm9yc3x8W10sLi4udC5pZ25vcmVFcnJvcnN8fFtdLC4uLmUuZGlzYWJsZUVycm9yRGVmYXVsdHM/W106U25dLGlnbm9yZVRyYW5zYWN0aW9uczpbLi4uZS5pZ25vcmVUcmFuc2FjdGlvbnN8fFtdLC4uLnQuaWdub3JlVHJhbnNhY3Rpb25zfHxbXV0saWdub3JlSW50ZXJuYWw6dm9pZCAwPT09ZS5pZ25vcmVJbnRlcm5hbHx8ZS5pZ25vcmVJbnRlcm5hbH19KGUsbyk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodC5pZ25vcmVJbnRlcm5hbCYmZnVuY3Rpb24oZSl7dHJ5e3JldHVybiJTZW50cnlFcnJvciI9PT1lLmV4Y2VwdGlvbi52YWx1ZXNbMF0udHlwZX1jYXRjaChlKXt9cmV0dXJuITF9KGUpKXJldHVybiBobi5UJiZtbi52Ri53YXJuKGBFdmVudCBkcm9wcGVkIGR1ZSB0byBiZWluZyBpbnRlcm5hbCBTZW50cnkgRXJyb3IuXG5FdmVudDogJHsoMCx3bi4kWCkoZSl9YCksITA7aWYoZnVuY3Rpb24oZSx0KXtpZihlLnR5cGV8fCF0fHwhdC5sZW5ndGgpcmV0dXJuITE7cmV0dXJuIGZ1bmN0aW9uKGUpe2NvbnN0IHQ9W107ZS5tZXNzYWdlJiZ0LnB1c2goZS5tZXNzYWdlKTtsZXQgbjt0cnl7bj1lLmV4Y2VwdGlvbi52YWx1ZXNbZS5leGNlcHRpb24udmFsdWVzLmxlbmd0aC0xXX1jYXRjaChlKXt9biYmbi52YWx1ZSYmKHQucHVzaChuLnZhbHVlKSxuLnR5cGUmJnQucHVzaChgJHtuLnR5cGV9OiAke24udmFsdWV9YCkpO3JldHVybiB0fShlKS5zb21lKGU9PigwLF9uLlhyKShlLHQpKX0oZSx0Lmlnbm9yZUVycm9ycykpcmV0dXJuIGhuLlQmJm1uLnZGLndhcm4oYEV2ZW50IGRyb3BwZWQgZHVlIHRvIGJlaW5nIG1hdGNoZWQgYnkgXGBpZ25vcmVFcnJvcnNcYCBvcHRpb24uXG5FdmVudDogJHsoMCx3bi4kWCkoZSl9YCksITA7aWYoZnVuY3Rpb24oZSl7aWYoZS50eXBlKXJldHVybiExO2lmKCFlLmV4Y2VwdGlvbnx8IWUuZXhjZXB0aW9uLnZhbHVlc3x8MD09PWUuZXhjZXB0aW9uLnZhbHVlcy5sZW5ndGgpcmV0dXJuITE7cmV0dXJuIWUubWVzc2FnZSYmIWUuZXhjZXB0aW9uLnZhbHVlcy5zb21lKGU9PmUuc3RhY2t0cmFjZXx8ZS50eXBlJiYiRXJyb3IiIT09ZS50eXBlfHxlLnZhbHVlKX0oZSkpcmV0dXJuIGhuLlQmJm1uLnZGLndhcm4oYEV2ZW50IGRyb3BwZWQgZHVlIHRvIG5vdCBoYXZpbmcgYW4gZXJyb3IgbWVzc2FnZSwgZXJyb3IgdHlwZSBvciBzdGFja3RyYWNlLlxuRXZlbnQ6ICR7KDAsd24uJFgpKGUpfWApLCEwO2lmKGZ1bmN0aW9uKGUsdCl7aWYoInRyYW5zYWN0aW9uIiE9PWUudHlwZXx8IXR8fCF0Lmxlbmd0aClyZXR1cm4hMTtjb25zdCBuPWUudHJhbnNhY3Rpb247cmV0dXJuISFuJiYoMCxfbi5Ycikobix0KX0oZSx0Lmlnbm9yZVRyYW5zYWN0aW9ucykpcmV0dXJuIGhuLlQmJm1uLnZGLndhcm4oYEV2ZW50IGRyb3BwZWQgZHVlIHRvIGJlaW5nIG1hdGNoZWQgYnkgXGBpZ25vcmVUcmFuc2FjdGlvbnNcYCBvcHRpb24uXG5FdmVudDogJHsoMCx3bi4kWCkoZSl9YCksITA7aWYoZnVuY3Rpb24oZSx0KXtpZighdHx8IXQubGVuZ3RoKXJldHVybiExO2NvbnN0IG49Q24oZSk7cmV0dXJuISFuJiYoMCxfbi5Ycikobix0KX0oZSx0LmRlbnlVcmxzKSlyZXR1cm4gaG4uVCYmbW4udkYud2FybihgRXZlbnQgZHJvcHBlZCBkdWUgdG8gYmVpbmcgbWF0Y2hlZCBieSBcYGRlbnlVcmxzXGAgb3B0aW9uLlxuRXZlbnQ6ICR7KDAsd24uJFgpKGUpfS5cblVybDogJHtDbihlKX1gKSwhMDtpZighZnVuY3Rpb24oZSx0KXtpZighdHx8IXQubGVuZ3RoKXJldHVybiEwO2NvbnN0IG49Q24oZSk7cmV0dXJuIW58fCgwLF9uLlhyKShuLHQpfShlLHQuYWxsb3dVcmxzKSlyZXR1cm4gaG4uVCYmbW4udkYud2FybihgRXZlbnQgZHJvcHBlZCBkdWUgdG8gbm90IGJlaW5nIG1hdGNoZWQgYnkgXGBhbGxvd1VybHNcYCBvcHRpb24uXG5FdmVudDogJHsoMCx3bi4kWCkoZSl9LlxuVXJsOiAke0NuKGUpfWApLCEwO3JldHVybiExfSh0LGkpP251bGw6dH19fTtmdW5jdGlvbiBDbihlKXt0cnl7bGV0IHQ7dHJ5e3Q9ZS5leGNlcHRpb24udmFsdWVzWzBdLnN0YWNrdHJhY2UuZnJhbWVzfWNhdGNoKGUpe31yZXR1cm4gdD9mdW5jdGlvbigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXTtmb3IobGV0IHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSl7Y29uc3Qgbj1lW3RdO2lmKG4mJiI8YW5vbnltb3VzPiIhPT1uLmZpbGVuYW1lJiYiW25hdGl2ZSBjb2RlXSIhPT1uLmZpbGVuYW1lKXJldHVybiBuLmZpbGVuYW1lfHxudWxsfXJldHVybiBudWxsfSh0KTpudWxsfWNhdGNoKHQpe3JldHVybiBobi5UJiZtbi52Ri5lcnJvcihgQ2Fubm90IGV4dHJhY3QgdXJsIGZvciBldmVudCAkeygwLHduLiRYKShlKX1gKSxudWxsfX12YXIga249big3ODApLEFuPW4oMjI0Nyk7bGV0IE9uO2NvbnN0IFRuPW5ldyBXZWFrTWFwLHhuPSgpPT4oe25hbWU6IkZ1bmN0aW9uVG9TdHJpbmciLHNldHVwT25jZSgpe09uPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZzt0cnl7RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7Y29uc3QgZT0oMCxBbi5zcCkodGhpcyksdD1Ubi5oYXMoKDAsa24uS1UpKCkpJiZ2b2lkIDAhPT1lP2U6dGhpcztmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuKSxvPTA7bzxuO28rKylyW29dPWFyZ3VtZW50c1tvXTtyZXR1cm4gT24uYXBwbHkodCxyKX19Y2F0Y2goZSl7fX0sc2V0dXAoZSl7VG4uc2V0KGUsITApfX0pO3ZhciBJbj1uKDgwNDEpO2NvbnN0IE5uPSgpPT57bGV0IGU7cmV0dXJue25hbWU6IkRlZHVwZSIscHJvY2Vzc0V2ZW50KHQpe2lmKHQudHlwZSlyZXR1cm4gdDt0cnl7aWYoZnVuY3Rpb24oZSx0KXtpZighdClyZXR1cm4hMTtpZihmdW5jdGlvbihlLHQpe2NvbnN0IG49ZS5tZXNzYWdlLHI9dC5tZXNzYWdlO2lmKCFuJiYhcilyZXR1cm4hMTtpZihuJiYhcnx8IW4mJnIpcmV0dXJuITE7aWYobiE9PXIpcmV0dXJuITE7aWYoIVBuKGUsdCkpcmV0dXJuITE7aWYoIUxuKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9KGUsdCkpcmV0dXJuITA7aWYoZnVuY3Rpb24oZSx0KXtjb25zdCBuPU1uKHQpLHI9TW4oZSk7aWYoIW58fCFyKXJldHVybiExO2lmKG4udHlwZSE9PXIudHlwZXx8bi52YWx1ZSE9PXIudmFsdWUpcmV0dXJuITE7aWYoIVBuKGUsdCkpcmV0dXJuITE7aWYoIUxuKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9KGUsdCkpcmV0dXJuITA7cmV0dXJuITF9KHQsZSkpcmV0dXJuIGhuLlQmJm1uLnZGLndhcm4oIkV2ZW50IGRyb3BwZWQgZHVlIHRvIGJlaW5nIGEgZHVwbGljYXRlIG9mIHByZXZpb3VzbHkgY2FwdHVyZWQgZXZlbnQuIiksbnVsbH1jYXRjaChlKXt9cmV0dXJuIGU9dH19fTtmdW5jdGlvbiBMbihlLHQpe2xldCBuPSgwLEluLlJWKShlKSxyPSgwLEluLlJWKSh0KTtpZighbiYmIXIpcmV0dXJuITA7aWYobiYmIXJ8fCFuJiZyKXJldHVybiExO2lmKHIubGVuZ3RoIT09bi5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspe2NvbnN0IHQ9cltlXSxvPW5bZV07aWYodC5maWxlbmFtZSE9PW8uZmlsZW5hbWV8fHQubGluZW5vIT09by5saW5lbm98fHQuY29sbm8hPT1vLmNvbG5vfHx0LmZ1bmN0aW9uIT09by5mdW5jdGlvbilyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBQbihlLHQpe2xldCBuPWUuZmluZ2VycHJpbnQscj10LmZpbmdlcnByaW50O2lmKCFuJiYhcilyZXR1cm4hMDtpZihuJiYhcnx8IW4mJnIpcmV0dXJuITE7dHJ5e3JldHVybiEobi5qb2luKCIiKSE9PXIuam9pbigiIikpfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBNbihlKXtyZXR1cm4gZS5leGNlcHRpb24mJmUuZXhjZXB0aW9uLnZhbHVlcyYmZS5leGNlcHRpb24udmFsdWVzWzBdfXZhciBSbj1uKDMwNDgpLERuPW4oMzIyNSk7Y29uc3QgRm49RG4uTztmdW5jdGlvbiBqbigpe2lmKCEoImZldGNoImluIEZuKSlyZXR1cm4hMTt0cnl7cmV0dXJuIG5ldyBIZWFkZXJzLG5ldyBSZXF1ZXN0KCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIiksbmV3IFJlc3BvbnNlLCEwfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBCbihlKXtyZXR1cm4gZSYmL15mdW5jdGlvblxzK1x3K1woXClccytce1xzK1xbbmF0aXZlIGNvZGVcXVxzK1x9JC8udGVzdChlLnRvU3RyaW5nKCkpfWZ1bmN0aW9uIFZuKGUsdCl7ITA9PT10LmRlYnVnJiYoaG4uVD9tbi52Ri5lbmFibGUoKTooMCxtbi5wcSkoKCk9Pntjb25zb2xlLndhcm4oIltTZW50cnldIENhbm5vdCBpbml0aWFsaXplIFNESyB3aXRoIGBkZWJ1Z2Agb3B0aW9uIHVzaW5nIGEgbm9uLWRlYnVnIGJ1bmRsZS4iKX0pKTsoMCxrbi5vNSkoKS51cGRhdGUodC5pbml0aWFsU2NvcGUpO2NvbnN0IG49bmV3IGUodCk7cmV0dXJuIGZ1bmN0aW9uKGUpeygwLGtuLm81KSgpLnNldENsaWVudChlKX0obiksbi5pbml0KCksbn1mdW5jdGlvbiBVbihlKXtjb25zdCB0PWUucHJvdG9jb2w/YCR7ZS5wcm90b2NvbH06YDoiIixuPWUucG9ydD9gOiR7ZS5wb3J0fWA6IiI7cmV0dXJuYCR7dH0vLyR7ZS5ob3N0fSR7bn0ke2UucGF0aD9gLyR7ZS5wYXRofWA6IiJ9L2FwaS9gfWZ1bmN0aW9uIHpuKGUsdCxuKXtyZXR1cm4gdHx8YCR7ZnVuY3Rpb24oZSl7cmV0dXJuYCR7VW4oZSl9JHtlLnByb2plY3RJZH0vZW52ZWxvcGUvYH0oZSl9PyR7ZnVuY3Rpb24oZSx0KXtjb25zdCBuPXtzZW50cnlfdmVyc2lvbjoiNyJ9O3JldHVybiBlLnB1YmxpY0tleSYmKG4uc2VudHJ5X2tleT1lLnB1YmxpY0tleSksdCYmKG4uc2VudHJ5X2NsaWVudD1gJHt0Lm5hbWV9LyR7dC52ZXJzaW9ufWApLG5ldyBVUkxTZWFyY2hQYXJhbXMobikudG9TdHJpbmcoKX0oZSxuKX1gfWNvbnN0IEhuPS9eKD86KFx3Kyk6KVwvXC8oPzooXHcrKSg/OjooXHcrKT8pP0ApKFtcdy4tXSspKD86OihcZCspKT9cLyguKykvO2Z1bmN0aW9uICRuKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07Y29uc3R7aG9zdDpuLHBhdGg6cixwYXNzOm8scG9ydDppLHByb2plY3RJZDphLHByb3RvY29sOnMscHVibGljS2V5OmN9PWU7cmV0dXJuYCR7c306Ly8ke2N9JHt0JiZvP2A6JHtvfWA6IiJ9QCR7bn0ke2k/YDoke2l9YDoiIn0vJHtyP2Ake3J9L2A6cn0ke2F9YH1mdW5jdGlvbiBZbihlKXtyZXR1cm57cHJvdG9jb2w6ZS5wcm90b2NvbCxwdWJsaWNLZXk6ZS5wdWJsaWNLZXl8fCIiLHBhc3M6ZS5wYXNzfHwiIixob3N0OmUuaG9zdCxwb3J0OmUucG9ydHx8IiIscGF0aDplLnBhdGh8fCIiLHByb2plY3RJZDplLnByb2plY3RJZH19ZnVuY3Rpb24gcW4oZSl7Y29uc3QgdD0ic3RyaW5nIj09dHlwZW9mIGU/ZnVuY3Rpb24oZSl7Y29uc3QgdD1Ibi5leGVjKGUpO2lmKCF0KXJldHVybiB2b2lkKDAsbW4ucHEpKCgpPT57Y29uc29sZS5lcnJvcihgSW52YWxpZCBTZW50cnkgRHNuOiAke2V9YCl9KTtjb25zdFtuLHIsbz0iIixpPSIiLGE9IiIscz0iIl09dC5zbGljZSgxKTtsZXQgYz0iIix1PXM7Y29uc3QgbD11LnNwbGl0KCIvIik7aWYobC5sZW5ndGg+MSYmKGM9bC5zbGljZSgwLC0xKS5qb2luKCIvIiksdT1sLnBvcCgpKSx1KXtjb25zdCBlPXUubWF0Y2goL15cZCsvKTtlJiYodT1lWzBdKX1yZXR1cm4gWW4oe2hvc3Q6aSxwYXNzOm8scGF0aDpjLHByb2plY3RJZDp1LHBvcnQ6YSxwcm90b2NvbDpuLHB1YmxpY0tleTpyfSl9KGUpOlluKGUpO2lmKHQmJmZ1bmN0aW9uKGUpe2lmKCFSbi5UKXJldHVybiEwO2NvbnN0e3BvcnQ6dCxwcm9qZWN0SWQ6bixwcm90b2NvbDpyfT1lO3JldHVybiEoWyJwcm90b2NvbCIsInB1YmxpY0tleSIsImhvc3QiLCJwcm9qZWN0SWQiXS5maW5kKHQ9PiFlW3RdJiYobW4udkYuZXJyb3IoYEludmFsaWQgU2VudHJ5IERzbjogJHt0fSBtaXNzaW5nYCksITApKXx8KG4ubWF0Y2goL15cZCskLyk/ZnVuY3Rpb24oZSl7cmV0dXJuImh0dHAiPT09ZXx8Imh0dHBzIj09PWV9KHIpP3QmJmlzTmFOKHBhcnNlSW50KHQsMTApKSYmKG1uLnZGLmVycm9yKGBJbnZhbGlkIFNlbnRyeSBEc246IEludmFsaWQgcG9ydCAke3R9YCksMSk6KG1uLnZGLmVycm9yKGBJbnZhbGlkIFNlbnRyeSBEc246IEludmFsaWQgcHJvdG9jb2wgJHtyfWApLDEpOihtbi52Ri5lcnJvcihgSW52YWxpZCBTZW50cnkgRHNuOiBJbnZhbGlkIHByb2plY3RJZCAke259YCksMSkpKX0odCkpcmV0dXJuIHR9dmFyIFduPW4oMzY5Nyk7ZnVuY3Rpb24gR24oZSl7cmV0dXJuW2UsYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdXX1mdW5jdGlvbiBRbihlLHQpe2NvbnN0W24scl09ZTtyZXR1cm5bbixbLi4ucix0XV19ZnVuY3Rpb24gS24oZSx0KXtjb25zdCBuPWVbMV07Zm9yKGNvbnN0IGUgb2Ygbil7aWYodChlLGVbMF0udHlwZSkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gWm4oZSl7cmV0dXJuIERuLk8uX19TRU5UUllfXyYmRG4uTy5fX1NFTlRSWV9fLmVuY29kZVBvbHlmaWxsP0RuLk8uX19TRU5UUllfXy5lbmNvZGVQb2x5ZmlsbChlKToobmV3IFRleHRFbmNvZGVyKS5lbmNvZGUoZSl9ZnVuY3Rpb24gWG4oZSl7Y29uc3RbdCxuXT1lO2xldCByPUpTT04uc3RyaW5naWZ5KHQpO2Z1bmN0aW9uIG8oZSl7InN0cmluZyI9PXR5cGVvZiByP3I9InN0cmluZyI9PXR5cGVvZiBlP3IrZTpbWm4ociksZV06ci5wdXNoKCJzdHJpbmciPT10eXBlb2YgZT9abihlKTplKX1mb3IoY29uc3QgZSBvZiBuKXtjb25zdFt0LG5dPWU7aWYobyhgXG4ke0pTT04uc3RyaW5naWZ5KHQpfVxuYCksInN0cmluZyI9PXR5cGVvZiBufHxuIGluc3RhbmNlb2YgVWludDhBcnJheSlvKG4pO2Vsc2V7bGV0IGU7dHJ5e2U9SlNPTi5zdHJpbmdpZnkobil9Y2F0Y2godCl7ZT1KU09OLnN0cmluZ2lmeSgoMCxXbi5TOCkobikpfW8oZSl9fXJldHVybiJzdHJpbmciPT10eXBlb2Ygcj9yOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5yZWR1Y2UoKGUsdCk9PmUrdC5sZW5ndGgsMCksbj1uZXcgVWludDhBcnJheSh0KTtsZXQgcj0wO2Zvcihjb25zdCB0IG9mIGUpbi5zZXQodCxyKSxyKz10Lmxlbmd0aDtyZXR1cm4gbn0ocil9ZnVuY3Rpb24gSm4oZSl7Y29uc3QgdD0ic3RyaW5nIj09dHlwZW9mIGUuZGF0YT9abihlLmRhdGEpOmUuZGF0YTtyZXR1cm5bKDAsQW4uQ2UpKHt0eXBlOiJhdHRhY2htZW50IixsZW5ndGg6dC5sZW5ndGgsZmlsZW5hbWU6ZS5maWxlbmFtZSxjb250ZW50X3R5cGU6ZS5jb250ZW50VHlwZSxhdHRhY2htZW50X3R5cGU6ZS5hdHRhY2htZW50VHlwZX0pLHRdfWNvbnN0IGVyPXtzZXNzaW9uOiJzZXNzaW9uIixzZXNzaW9uczoic2Vzc2lvbiIsYXR0YWNobWVudDoiYXR0YWNobWVudCIsdHJhbnNhY3Rpb246InRyYW5zYWN0aW9uIixldmVudDoiZXJyb3IiLGNsaWVudF9yZXBvcnQ6ImludGVybmFsIix1c2VyX3JlcG9ydDoiZGVmYXVsdCIscHJvZmlsZToicHJvZmlsZSIscHJvZmlsZV9jaHVuazoicHJvZmlsZSIscmVwbGF5X2V2ZW50OiJyZXBsYXkiLHJlcGxheV9yZWNvcmRpbmc6InJlcGxheSIsY2hlY2tfaW46Im1vbml0b3IiLGZlZWRiYWNrOiJmZWVkYmFjayIsc3Bhbjoic3BhbiIsc3RhdHNkOiJtZXRyaWNfYnVja2V0IixyYXdfc2VjdXJpdHk6InNlY3VyaXR5In07ZnVuY3Rpb24gdHIoZSl7cmV0dXJuIGVyW2VdfWZ1bmN0aW9uIG5yKGUpe2lmKCFlfHwhZS5zZGspcmV0dXJuO2NvbnN0e25hbWU6dCx2ZXJzaW9uOm59PWUuc2RrO3JldHVybntuYW1lOnQsdmVyc2lvbjpufX1mdW5jdGlvbiBycihlLHQsbixyKXtjb25zdCBvPW5yKG4pLGk9ZS50eXBlJiYicmVwbGF5X2V2ZW50IiE9PWUudHlwZT9lLnR5cGU6ImV2ZW50IjshZnVuY3Rpb24oZSx0KXt0JiYoZS5zZGs9ZS5zZGt8fHt9LGUuc2RrLm5hbWU9ZS5zZGsubmFtZXx8dC5uYW1lLGUuc2RrLnZlcnNpb249ZS5zZGsudmVyc2lvbnx8dC52ZXJzaW9uLGUuc2RrLmludGVncmF0aW9ucz1bLi4uZS5zZGsuaW50ZWdyYXRpb25zfHxbXSwuLi50LmludGVncmF0aW9uc3x8W11dLGUuc2RrLnBhY2thZ2VzPVsuLi5lLnNkay5wYWNrYWdlc3x8W10sLi4udC5wYWNrYWdlc3x8W11dKX0oZSxuJiZuLnNkayk7Y29uc3QgYT1mdW5jdGlvbihlLHQsbixyKXtjb25zdCBvPWUuc2RrUHJvY2Vzc2luZ01ldGFkYXRhJiZlLnNka1Byb2Nlc3NpbmdNZXRhZGF0YS5keW5hbWljU2FtcGxpbmdDb250ZXh0O3JldHVybntldmVudF9pZDplLmV2ZW50X2lkLHNlbnRfYXQ6KG5ldyBEYXRlKS50b0lTT1N0cmluZygpLC4uLnQmJntzZGs6dH0sLi4uISFuJiZyJiZ7ZHNuOiRuKHIpfSwuLi5vJiZ7dHJhY2U6KDAsQW4uQ2UpKHsuLi5vfSl9fX0oZSxvLHIsdCk7ZGVsZXRlIGUuc2RrUHJvY2Vzc2luZ01ldGFkYXRhO3JldHVybiBHbihhLFtbe3R5cGU6aX0sZV1dKX12YXIgb3I9big1NzkwKSxpcj1uKDkwMDMpLGFyPW4oNzM3Myk7Y2xhc3Mgc3IgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06Indhcm4iO3N1cGVyKGUpLHRoaXMubWVzc2FnZT1lLHRoaXMubG9nTGV2ZWw9dH19dmFyIGNyPW4oOTAwNCksdXI9bigxNzU4KTt2YXIgbHI9big5MDA3KSxkcj1uKDI5MjkpO2NvbnN0IGZyPSJOb3QgY2FwdHVyaW5nIGV4Y2VwdGlvbiBiZWNhdXNlIGl0J3MgYWxyZWFkeSBiZWVuIGNhcHR1cmVkLiI7Y2xhc3MgcHJ7Y29uc3RydWN0b3IoZSl7aWYodGhpcy5fb3B0aW9ucz1lLHRoaXMuX2ludGVncmF0aW9ucz17fSx0aGlzLl9udW1Qcm9jZXNzaW5nPTAsdGhpcy5fb3V0Y29tZXM9e30sdGhpcy5faG9va3M9e30sdGhpcy5fZXZlbnRQcm9jZXNzb3JzPVtdLGUuZHNuP3RoaXMuX2Rzbj1xbihlLmRzbik6aG4uVCYmbW4udkYud2FybigiTm8gRFNOIHByb3ZpZGVkLCBjbGllbnQgd2lsbCBub3Qgc2VuZCBldmVudHMuIiksdGhpcy5fZHNuKXtjb25zdCB0PXpuKHRoaXMuX2RzbixlLnR1bm5lbCxlLl9tZXRhZGF0YT9lLl9tZXRhZGF0YS5zZGs6dm9pZCAwKTt0aGlzLl90cmFuc3BvcnQ9ZS50cmFuc3BvcnQoe3R1bm5lbDp0aGlzLl9vcHRpb25zLnR1bm5lbCxyZWNvcmREcm9wcGVkRXZlbnQ6dGhpcy5yZWNvcmREcm9wcGVkRXZlbnQuYmluZCh0aGlzKSwuLi5lLnRyYW5zcG9ydE9wdGlvbnMsdXJsOnR9KX1jb25zdCB0PVsiZW5hYmxlVHJhY2luZyIsInRyYWNlc1NhbXBsZVJhdGUiLCJ0cmFjZXNTYW1wbGVyIl0uZmluZCh0PT50IGluIGUmJm51bGw9PWVbdF0pO3QmJigwLG1uLnBxKSgoKT0+e2NvbnNvbGUud2FybihgW1NlbnRyeV0gRGVwcmVjYXRpb24gd2FybmluZzogXGAke3R9XGAgaXMgc2V0IHRvIHVuZGVmaW5lZCwgd2hpY2ggbGVhZHMgdG8gdHJhY2luZyBiZWluZyBlbmFibGVkLiBJbiB2OSwgYSB2YWx1ZSBvZiBcYHVuZGVmaW5lZFxgIHdpbGwgcmVzdWx0IGluIHRyYWNpbmcgYmVpbmcgZGlzYWJsZWQuYCl9KX1jYXB0dXJlRXhjZXB0aW9uKGUsdCxuKXtjb25zdCByPSgwLHduLmVKKSgpO2lmKCgwLHduLkdSKShlKSlyZXR1cm4gaG4uVCYmbW4udkYubG9nKGZyKSxyO2NvbnN0IG89e2V2ZW50X2lkOnIsLi4udH07cmV0dXJuIHRoaXMuX3Byb2Nlc3ModGhpcy5ldmVudEZyb21FeGNlcHRpb24oZSxvKS50aGVuKGU9PnRoaXMuX2NhcHR1cmVFdmVudChlLG8sbikpKSxvLmV2ZW50X2lkfWNhcHR1cmVNZXNzYWdlKGUsdCxuLHIpe2NvbnN0IG89e2V2ZW50X2lkOigwLHduLmVKKSgpLC4uLm59LGk9KDAsY3IuTkYpKGUpP2U6U3RyaW5nKGUpLGE9KDAsY3Iuc08pKGUpP3RoaXMuZXZlbnRGcm9tTWVzc2FnZShpLHQsbyk6dGhpcy5ldmVudEZyb21FeGNlcHRpb24oZSxvKTtyZXR1cm4gdGhpcy5fcHJvY2VzcyhhLnRoZW4oZT0+dGhpcy5fY2FwdHVyZUV2ZW50KGUsbyxyKSkpLG8uZXZlbnRfaWR9Y2FwdHVyZUV2ZW50KGUsdCxuKXtjb25zdCByPSgwLHduLmVKKSgpO2lmKHQmJnQub3JpZ2luYWxFeGNlcHRpb24mJigwLHduLkdSKSh0Lm9yaWdpbmFsRXhjZXB0aW9uKSlyZXR1cm4gaG4uVCYmbW4udkYubG9nKGZyKSxyO2NvbnN0IG89e2V2ZW50X2lkOnIsLi4udH0saT0oZS5zZGtQcm9jZXNzaW5nTWV0YWRhdGF8fHt9KS5jYXB0dXJlZFNwYW5TY29wZTtyZXR1cm4gdGhpcy5fcHJvY2Vzcyh0aGlzLl9jYXB0dXJlRXZlbnQoZSxvLGl8fG4pKSxvLmV2ZW50X2lkfWNhcHR1cmVTZXNzaW9uKGUpeyJzdHJpbmciIT10eXBlb2YgZS5yZWxlYXNlP2huLlQmJm1uLnZGLndhcm4oIkRpc2NhcmRlZCBzZXNzaW9uIGJlY2F1c2Ugb2YgbWlzc2luZyBvciBub24tc3RyaW5nIHJlbGVhc2UiKToodGhpcy5zZW5kU2Vzc2lvbihlKSwoMCxvci5xTykoZSx7aW5pdDohMX0pKX1nZXREc24oKXtyZXR1cm4gdGhpcy5fZHNufWdldE9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fb3B0aW9uc31nZXRTZGtNZXRhZGF0YSgpe3JldHVybiB0aGlzLl9vcHRpb25zLl9tZXRhZGF0YX1nZXRUcmFuc3BvcnQoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0fWZsdXNoKGUpe2NvbnN0IHQ9dGhpcy5fdHJhbnNwb3J0O3JldHVybiB0Pyh0aGlzLmVtaXQoImZsdXNoIiksdGhpcy5faXNDbGllbnREb25lUHJvY2Vzc2luZyhlKS50aGVuKG49PnQuZmx1c2goZSkudGhlbihlPT5uJiZlKSkpOigwLHVyLlhXKSghMCl9Y2xvc2UoZSl7cmV0dXJuIHRoaXMuZmx1c2goZSkudGhlbihlPT4odGhpcy5nZXRPcHRpb25zKCkuZW5hYmxlZD0hMSx0aGlzLmVtaXQoImNsb3NlIiksZSkpfWdldEV2ZW50UHJvY2Vzc29ycygpe3JldHVybiB0aGlzLl9ldmVudFByb2Nlc3NvcnN9YWRkRXZlbnRQcm9jZXNzb3IoZSl7dGhpcy5fZXZlbnRQcm9jZXNzb3JzLnB1c2goZSl9aW5pdCgpeyh0aGlzLl9pc0VuYWJsZWQoKXx8dGhpcy5fb3B0aW9ucy5pbnRlZ3JhdGlvbnMuc29tZShlPT57bGV0e25hbWU6dH09ZTtyZXR1cm4gdC5zdGFydHNXaXRoKCJTcG90bGlnaHQiKX0pKSYmdGhpcy5fc2V0dXBJbnRlZ3JhdGlvbnMoKX1nZXRJbnRlZ3JhdGlvbkJ5TmFtZShlKXtyZXR1cm4gdGhpcy5faW50ZWdyYXRpb25zW2VdfWFkZEludGVncmF0aW9uKGUpe2NvbnN0IHQ9dGhpcy5faW50ZWdyYXRpb25zW2UubmFtZV07Ym4odGhpcyxlLHRoaXMuX2ludGVncmF0aW9ucyksdHx8dm4odGhpcyxbZV0pfXNlbmRFdmVudChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307dGhpcy5lbWl0KCJiZWZvcmVTZW5kRXZlbnQiLGUsdCk7bGV0IG49cnIoZSx0aGlzLl9kc24sdGhpcy5fb3B0aW9ucy5fbWV0YWRhdGEsdGhpcy5fb3B0aW9ucy50dW5uZWwpO2Zvcihjb25zdCBlIG9mIHQuYXR0YWNobWVudHN8fFtdKW49UW4obixKbihlKSk7Y29uc3Qgcj10aGlzLnNlbmRFbnZlbG9wZShuKTtyJiZyLnRoZW4odD0+dGhpcy5lbWl0KCJhZnRlclNlbmRFdmVudCIsZSx0KSxudWxsKX1zZW5kU2Vzc2lvbihlKXtjb25zdCB0PWZ1bmN0aW9uKGUsdCxuLHIpe2NvbnN0IG89bnIobik7cmV0dXJuIEduKHtzZW50X2F0OihuZXcgRGF0ZSkudG9JU09TdHJpbmcoKSwuLi5vJiZ7c2RrOm99LC4uLiEhciYmdCYme2Rzbjokbih0KX19LFsiYWdncmVnYXRlcyJpbiBlP1t7dHlwZToic2Vzc2lvbnMifSxlXTpbe3R5cGU6InNlc3Npb24ifSxlLnRvSlNPTigpXV0pfShlLHRoaXMuX2Rzbix0aGlzLl9vcHRpb25zLl9tZXRhZGF0YSx0aGlzLl9vcHRpb25zLnR1bm5lbCk7dGhpcy5zZW5kRW52ZWxvcGUodCl9cmVjb3JkRHJvcHBlZEV2ZW50KGUsdCxuKXtpZih0aGlzLl9vcHRpb25zLnNlbmRDbGllbnRSZXBvcnRzKXtjb25zdCByPSJudW1iZXIiPT10eXBlb2Ygbj9uOjEsbz1gJHtlfToke3R9YDtobi5UJiZtbi52Ri5sb2coYFJlY29yZGluZyBvdXRjb21lOiAiJHtvfSIke3I+MT9gICgke3J9IHRpbWVzKWA6IiJ9YCksdGhpcy5fb3V0Y29tZXNbb109KHRoaXMuX291dGNvbWVzW29dfHwwKStyfX1vbihlLHQpe2NvbnN0IG49dGhpcy5faG9va3NbZV09dGhpcy5faG9va3NbZV18fFtdO3JldHVybiBuLnB1c2godCksKCk9Pntjb25zdCBlPW4uaW5kZXhPZih0KTtlPi0xJiZuLnNwbGljZShlLDEpfX1lbWl0KGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTtjb25zdCBvPXRoaXMuX2hvb2tzW2VdO28mJm8uZm9yRWFjaChlPT5lKC4uLm4pKX1zZW5kRW52ZWxvcGUoZSl7cmV0dXJuIHRoaXMuZW1pdCgiYmVmb3JlRW52ZWxvcGUiLGUpLHRoaXMuX2lzRW5hYmxlZCgpJiZ0aGlzLl90cmFuc3BvcnQ/dGhpcy5fdHJhbnNwb3J0LnNlbmQoZSkudGhlbihudWxsLGU9Pihobi5UJiZtbi52Ri5lcnJvcigiRXJyb3Igd2hpbGUgc2VuZGluZyBlbnZlbG9wZToiLGUpLGUpKTooaG4uVCYmbW4udkYuZXJyb3IoIlRyYW5zcG9ydCBkaXNhYmxlZCIpLCgwLHVyLlhXKSh7fSkpfV9zZXR1cEludGVncmF0aW9ucygpe2NvbnN0e2ludGVncmF0aW9uczplfT10aGlzLl9vcHRpb25zO3RoaXMuX2ludGVncmF0aW9ucz1mdW5jdGlvbihlLHQpe2NvbnN0IG49e307cmV0dXJuIHQuZm9yRWFjaCh0PT57dCYmYm4oZSx0LG4pfSksbn0odGhpcyxlKSx2bih0aGlzLGUpfV91cGRhdGVTZXNzaW9uRnJvbUV2ZW50KGUsdCl7bGV0IG49ImZhdGFsIj09PXQubGV2ZWwscj0hMTtjb25zdCBvPXQuZXhjZXB0aW9uJiZ0LmV4Y2VwdGlvbi52YWx1ZXM7aWYobyl7cj0hMDtmb3IoY29uc3QgZSBvZiBvKXtjb25zdCB0PWUubWVjaGFuaXNtO2lmKHQmJiExPT09dC5oYW5kbGVkKXtuPSEwO2JyZWFrfX19Y29uc3QgaT0ib2siPT09ZS5zdGF0dXM7KGkmJjA9PT1lLmVycm9yc3x8aSYmbikmJigoMCxvci5xTykoZSx7Li4ubiYme3N0YXR1czoiY3Jhc2hlZCJ9LGVycm9yczplLmVycm9yc3x8TnVtYmVyKHJ8fG4pfSksdGhpcy5jYXB0dXJlU2Vzc2lvbihlKSl9X2lzQ2xpZW50RG9uZVByb2Nlc3NpbmcoZSl7cmV0dXJuIG5ldyB1ci5UMih0PT57bGV0IG49MDtjb25zdCByPXNldEludGVydmFsKCgpPT57MD09dGhpcy5fbnVtUHJvY2Vzc2luZz8oY2xlYXJJbnRlcnZhbChyKSx0KCEwKSk6KG4rPTEsZSYmbj49ZSYmKGNsZWFySW50ZXJ2YWwociksdCghMSkpKX0sMSl9KX1faXNFbmFibGVkKCl7cmV0dXJuITEhPT10aGlzLmdldE9wdGlvbnMoKS5lbmFibGVkJiZ2b2lkIDAhPT10aGlzLl90cmFuc3BvcnR9X3ByZXBhcmVFdmVudChlLHQpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTooMCxrbi5vNSkoKSxyPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTooMCxrbi5ybSkoKTtjb25zdCBvPXRoaXMuZ2V0T3B0aW9ucygpLGk9T2JqZWN0LmtleXModGhpcy5faW50ZWdyYXRpb25zKTtyZXR1cm4hdC5pbnRlZ3JhdGlvbnMmJmkubGVuZ3RoPjAmJih0LmludGVncmF0aW9ucz1pKSx0aGlzLmVtaXQoInByZXByb2Nlc3NFdmVudCIsZSx0KSxlLnR5cGV8fHIuc2V0TGFzdEV2ZW50SWQoZS5ldmVudF9pZHx8dC5ldmVudF9pZCksKDAsbHIubUcpKG8sZSx0LG4sdGhpcyxyKS50aGVuKGU9PntpZihudWxsPT09ZSlyZXR1cm4gZTtlLmNvbnRleHRzPXt0cmFjZTooMCxrbi52bikobiksLi4uZS5jb250ZXh0c307Y29uc3QgdD0oMCxpci5hbykodGhpcyxuKTtyZXR1cm4gZS5zZGtQcm9jZXNzaW5nTWV0YWRhdGE9e2R5bmFtaWNTYW1wbGluZ0NvbnRleHQ6dCwuLi5lLnNka1Byb2Nlc3NpbmdNZXRhZGF0YX0sZX0pfV9jYXB0dXJlRXZlbnQoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LG49YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDA7cmV0dXJuIHRoaXMuX3Byb2Nlc3NFdmVudChlLHQsbikudGhlbihlPT5lLmV2ZW50X2lkLGU9Pntobi5UJiYoZSBpbnN0YW5jZW9mIHNyJiYibG9nIj09PWUubG9nTGV2ZWw/bW4udkYubG9nKGUubWVzc2FnZSk6bW4udkYud2FybihlKSl9KX1fcHJvY2Vzc0V2ZW50KGUsdCxuKXtjb25zdCByPXRoaXMuZ2V0T3B0aW9ucygpLHtzYW1wbGVSYXRlOm99PXIsaT1tcihlKSxhPWhyKGUpLHM9ZS50eXBlfHwiZXJyb3IiLGM9YGJlZm9yZSBzZW5kIGZvciB0eXBlIFxgJHtzfVxgYCx1PXZvaWQgMD09PW8/dm9pZCAwOmZ1bmN0aW9uKGUpe2lmKCJib29sZWFuIj09dHlwZW9mIGUpcmV0dXJuIE51bWJlcihlKTtjb25zdCB0PSJzdHJpbmciPT10eXBlb2YgZT9wYXJzZUZsb2F0KGUpOmU7aWYoISgibnVtYmVyIiE9dHlwZW9mIHR8fGlzTmFOKHQpfHx0PDB8fHQ+MSkpcmV0dXJuIHQ7aG4uVCYmbW4udkYud2FybihgW1RyYWNpbmddIEdpdmVuIHNhbXBsZSByYXRlIGlzIGludmFsaWQuIFNhbXBsZSByYXRlIG11c3QgYmUgYSBib29sZWFuIG9yIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMS4gR290ICR7SlNPTi5zdHJpbmdpZnkoZSl9IG9mIHR5cGUgJHtKU09OLnN0cmluZ2lmeSh0eXBlb2YgZSl9LmApfShvKTtpZihhJiYibnVtYmVyIj09dHlwZW9mIHUmJk1hdGgucmFuZG9tKCk+dSlyZXR1cm4gdGhpcy5yZWNvcmREcm9wcGVkRXZlbnQoInNhbXBsZV9yYXRlIiwiZXJyb3IiLGUpLCgwLHVyLnhnKShuZXcgc3IoYERpc2NhcmRpbmcgZXZlbnQgYmVjYXVzZSBpdCdzIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmFuZG9tIHNhbXBsZSAoc2FtcGxpbmcgcmF0ZSA9ICR7b30pYCwibG9nIikpO2NvbnN0IGw9InJlcGxheV9ldmVudCI9PT1zPyJyZXBsYXkiOnMsZD0oZS5zZGtQcm9jZXNzaW5nTWV0YWRhdGF8fHt9KS5jYXB0dXJlZFNwYW5Jc29sYXRpb25TY29wZTtyZXR1cm4gdGhpcy5fcHJlcGFyZUV2ZW50KGUsdCxuLGQpLnRoZW4obj0+e2lmKG51bGw9PT1uKXRocm93IHRoaXMucmVjb3JkRHJvcHBlZEV2ZW50KCJldmVudF9wcm9jZXNzb3IiLGwsZSksbmV3IHNyKCJBbiBldmVudCBwcm9jZXNzb3IgcmV0dXJuZWQgYG51bGxgLCB3aWxsIG5vdCBzZW5kIGV2ZW50LiIsImxvZyIpO2lmKHQuZGF0YSYmITA9PT10LmRhdGEuX19zZW50cnlfXylyZXR1cm4gbjtjb25zdCBvPWZ1bmN0aW9uKGUsdCxuLHIpe2NvbnN0e2JlZm9yZVNlbmQ6byxiZWZvcmVTZW5kVHJhbnNhY3Rpb246aSxiZWZvcmVTZW5kU3BhbjphfT10O2lmKGhyKG4pJiZvKXJldHVybiBvKG4scik7aWYobXIobikpe2lmKG4uc3BhbnMmJmEpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IHIgb2Ygbi5zcGFucyl7Y29uc3Qgbj1hKHIpO24/dC5wdXNoKG4pOigoMCxkci54bCkoKSxlLnJlY29yZERyb3BwZWRFdmVudCgiYmVmb3JlX3NlbmQiLCJzcGFuIikpfW4uc3BhbnM9dH1pZihpKXtpZihuLnNwYW5zKXtjb25zdCBlPW4uc3BhbnMubGVuZ3RoO24uc2RrUHJvY2Vzc2luZ01ldGFkYXRhPXsuLi5uLnNka1Byb2Nlc3NpbmdNZXRhZGF0YSxzcGFuQ291bnRCZWZvcmVQcm9jZXNzaW5nOmV9fXJldHVybiBpKG4scil9fXJldHVybiBufSh0aGlzLHIsbix0KTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtjb25zdCBuPWAke3R9IG11c3QgcmV0dXJuIFxgbnVsbFxgIG9yIGEgdmFsaWQgZXZlbnQuYDtpZigoMCxjci5RZykoZSkpcmV0dXJuIGUudGhlbihlPT57aWYoISgwLGNyLlFkKShlKSYmbnVsbCE9PWUpdGhyb3cgbmV3IHNyKG4pO3JldHVybiBlfSxlPT57dGhyb3cgbmV3IHNyKGAke3R9IHJlamVjdGVkIHdpdGggJHtlfWApfSk7aWYoISgwLGNyLlFkKShlKSYmbnVsbCE9PWUpdGhyb3cgbmV3IHNyKG4pO3JldHVybiBlfShvLGMpfSkudGhlbihyPT57aWYobnVsbD09PXIpe2lmKHRoaXMucmVjb3JkRHJvcHBlZEV2ZW50KCJiZWZvcmVfc2VuZCIsbCxlKSxpKXtjb25zdCB0PTErKGUuc3BhbnN8fFtdKS5sZW5ndGg7dGhpcy5yZWNvcmREcm9wcGVkRXZlbnQoImJlZm9yZV9zZW5kIiwic3BhbiIsdCl9dGhyb3cgbmV3IHNyKGAke2N9IHJldHVybmVkIFxgbnVsbFxgLCB3aWxsIG5vdCBzZW5kIGV2ZW50LmAsImxvZyIpfWNvbnN0IG89biYmbi5nZXRTZXNzaW9uKCk7aWYoIWkmJm8mJnRoaXMuX3VwZGF0ZVNlc3Npb25Gcm9tRXZlbnQobyxyKSxpKXtjb25zdCBlPShyLnNka1Byb2Nlc3NpbmdNZXRhZGF0YSYmci5zZGtQcm9jZXNzaW5nTWV0YWRhdGEuc3BhbkNvdW50QmVmb3JlUHJvY2Vzc2luZ3x8MCktKHIuc3BhbnM/ci5zcGFucy5sZW5ndGg6MCk7ZT4wJiZ0aGlzLnJlY29yZERyb3BwZWRFdmVudCgiYmVmb3JlX3NlbmQiLCJzcGFuIixlKX1jb25zdCBhPXIudHJhbnNhY3Rpb25faW5mbztpZihpJiZhJiZyLnRyYW5zYWN0aW9uIT09ZS50cmFuc2FjdGlvbil7Y29uc3QgZT0iY3VzdG9tIjtyLnRyYW5zYWN0aW9uX2luZm89ey4uLmEsc291cmNlOmV9fXJldHVybiB0aGlzLnNlbmRFdmVudChyLHQpLHJ9KS50aGVuKG51bGwsZT0+e2lmKGUgaW5zdGFuY2VvZiBzcil0aHJvdyBlO3Rocm93IHRoaXMuY2FwdHVyZUV4Y2VwdGlvbihlLHtkYXRhOntfX3NlbnRyeV9fOiEwfSxvcmlnaW5hbEV4Y2VwdGlvbjplfSksbmV3IHNyKGBFdmVudCBwcm9jZXNzaW5nIHBpcGVsaW5lIHRocmV3IGFuIGVycm9yLCBvcmlnaW5hbCBldmVudCB3aWxsIG5vdCBiZSBzZW50LiBEZXRhaWxzIGhhdmUgYmVlbiBzZW50IGFzIGEgbmV3IGV2ZW50LlxuUmVhc29uOiAke2V9YCl9KX1fcHJvY2VzcyhlKXt0aGlzLl9udW1Qcm9jZXNzaW5nKyssZS50aGVuKGU9Pih0aGlzLl9udW1Qcm9jZXNzaW5nLS0sZSksZT0+KHRoaXMuX251bVByb2Nlc3NpbmctLSxlKSl9X2NsZWFyT3V0Y29tZXMoKXtjb25zdCBlPXRoaXMuX291dGNvbWVzO3JldHVybiB0aGlzLl9vdXRjb21lcz17fSxPYmplY3QuZW50cmllcyhlKS5tYXAoZT0+e2xldFt0LG5dPWU7Y29uc3RbcixvXT10LnNwbGl0KCI6Iik7cmV0dXJue3JlYXNvbjpyLGNhdGVnb3J5Om8scXVhbnRpdHk6bn19KX1fZmx1c2hPdXRjb21lcygpe2huLlQmJm1uLnZGLmxvZygiRmx1c2hpbmcgb3V0Y29tZXMuLi4iKTtjb25zdCBlPXRoaXMuX2NsZWFyT3V0Y29tZXMoKTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHZvaWQoaG4uVCYmbW4udkYubG9nKCJObyBvdXRjb21lcyB0byBzZW5kIikpO2lmKCF0aGlzLl9kc24pcmV0dXJuIHZvaWQoaG4uVCYmbW4udkYubG9nKCJObyBkc24gcHJvdmlkZWQsIHdpbGwgbm90IHNlbmQgb3V0Y29tZXMiKSk7aG4uVCYmbW4udkYubG9nKCJTZW5kaW5nIG91dGNvbWVzOiIsZSk7Y29uc3QgdD0obj1lLEduKChyPXRoaXMuX29wdGlvbnMudHVubmVsJiYkbih0aGlzLl9kc24pKT97ZHNuOnJ9Ont9LFtbe3R5cGU6ImNsaWVudF9yZXBvcnQifSx7dGltZXN0YW1wOm98fCgwLGFyLmx1KSgpLGRpc2NhcmRlZF9ldmVudHM6bn1dXSkpO3ZhciBuLHIsbzt0aGlzLnNlbmRFbnZlbG9wZSh0KX19ZnVuY3Rpb24gaHIoZSl7cmV0dXJuIHZvaWQgMD09PWUudHlwZX1mdW5jdGlvbiBtcihlKXtyZXR1cm4idHJhbnNhY3Rpb24iPT09ZS50eXBlfXZhciBncj1uKDc5NTApO2Z1bmN0aW9uIHlyKGUsdCl7bGV0IG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOlt0XSxyPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXToibnBtIjtjb25zdCBvPWUuX21ldGFkYXRhfHx7fTtvLnNka3x8KG8uc2RrPXtuYW1lOmBzZW50cnkuamF2YXNjcmlwdC4ke3R9YCxwYWNrYWdlczpuLm1hcChlPT4oe25hbWU6YCR7cn06QHNlbnRyeS8ke2V9YCx2ZXJzaW9uOmdyLk19KSksdmVyc2lvbjpnci5NfSksZS5fbWV0YWRhdGE9b31jb25zdCB2cj0idW5kZWZpbmVkIj09dHlwZW9mIF9fU0VOVFJZX0RFQlVHX198fF9fU0VOVFJZX0RFQlVHX187ZnVuY3Rpb24gYnIoZSx0KXtjb25zdCBuPVNyKGUsdCkscj17dHlwZTprcih0KSx2YWx1ZTpBcih0KX07cmV0dXJuIG4ubGVuZ3RoJiYoci5zdGFja3RyYWNlPXtmcmFtZXM6bn0pLHZvaWQgMD09PXIudHlwZSYmIiI9PT1yLnZhbHVlJiYoci52YWx1ZT0iVW5yZWNvdmVyYWJsZSBlcnJvciBjYXVnaHQiKSxyfWZ1bmN0aW9uIHdyKGUsdCxuLHIpe2NvbnN0IG89KDAsa24uS1UpKCksaT1vJiZvLmdldE9wdGlvbnMoKS5ub3JtYWxpemVEZXB0aCxhPWZ1bmN0aW9uKGUpe2Zvcihjb25zdCB0IGluIGUpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCkpe2NvbnN0IG49ZVt0XTtpZihuIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIG59cmV0dXJufSh0KSxzPXtfX3NlcmlhbGl6ZWRfXzooMCxXbi5jZCkodCxpKX07aWYoYSlyZXR1cm57ZXhjZXB0aW9uOnt2YWx1ZXM6W2JyKGUsYSldfSxleHRyYTpzfTtjb25zdCBjPXtleGNlcHRpb246e3ZhbHVlczpbe3R5cGU6KDAsY3IueEgpKHQpP3QuY29uc3RydWN0b3IubmFtZTpyPyJVbmhhbmRsZWRSZWplY3Rpb24iOiJFcnJvciIsdmFsdWU6eHIodCx7aXNVbmhhbmRsZWRSZWplY3Rpb246cn0pfV19LGV4dHJhOnN9O2lmKG4pe2NvbnN0IHQ9U3IoZSxuKTt0Lmxlbmd0aCYmKGMuZXhjZXB0aW9uLnZhbHVlc1swXS5zdGFja3RyYWNlPXtmcmFtZXM6dH0pfXJldHVybiBjfWZ1bmN0aW9uIF9yKGUsdCl7cmV0dXJue2V4Y2VwdGlvbjp7dmFsdWVzOlticihlLHQpXX19fWZ1bmN0aW9uIFNyKGUsdCl7Y29uc3Qgbj10LnN0YWNrdHJhY2V8fHQuc3RhY2t8fCIiLHI9ZnVuY3Rpb24oZSl7aWYoZSYmRXIudGVzdChlLm1lc3NhZ2UpKXJldHVybiAxO3JldHVybiAwfSh0KSxvPWZ1bmN0aW9uKGUpe2lmKCJudW1iZXIiPT10eXBlb2YgZS5mcmFtZXNUb1BvcClyZXR1cm4gZS5mcmFtZXNUb1BvcDtyZXR1cm4gMH0odCk7dHJ5e3JldHVybiBlKG4scixvKX1jYXRjaChlKXt9cmV0dXJuW119Y29uc3QgRXI9L01pbmlmaWVkIFJlYWN0IGVycm9yICNcZCs7L2k7ZnVuY3Rpb24gQ3IoZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBXZWJBc3NlbWJseSYmdm9pZCAwIT09V2ViQXNzZW1ibHkuRXhjZXB0aW9uJiZlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuRXhjZXB0aW9ufWZ1bmN0aW9uIGtyKGUpe2NvbnN0IHQ9ZSYmZS5uYW1lO2lmKCF0JiZDcihlKSl7cmV0dXJuIGUubWVzc2FnZSYmQXJyYXkuaXNBcnJheShlLm1lc3NhZ2UpJiYyPT1lLm1lc3NhZ2UubGVuZ3RoP2UubWVzc2FnZVswXToiV2ViQXNzZW1ibHkuRXhjZXB0aW9uIn1yZXR1cm4gdH1mdW5jdGlvbiBBcihlKXtjb25zdCB0PWUmJmUubWVzc2FnZTtyZXR1cm4gdD90LmVycm9yJiYic3RyaW5nIj09dHlwZW9mIHQuZXJyb3IubWVzc2FnZT90LmVycm9yLm1lc3NhZ2U6Q3IoZSkmJkFycmF5LmlzQXJyYXkoZS5tZXNzYWdlKSYmMj09ZS5tZXNzYWdlLmxlbmd0aD9lLm1lc3NhZ2VbMV06dDoiTm8gZXJyb3IgbWVzc2FnZSJ9ZnVuY3Rpb24gT3IoZSx0LG4scixvKXtsZXQgaTtpZigoMCxjci5UMikodCkmJnQuZXJyb3Ipe3JldHVybiBfcihlLHQuZXJyb3IpfWlmKCgwLGNyLkJEKSh0KXx8KDAsY3IuVzYpKHQpKXtjb25zdCBvPXQ7aWYoInN0YWNrImluIHQpaT1fcihlLHQpO2Vsc2V7Y29uc3QgdD1vLm5hbWV8fCgoMCxjci5CRCkobyk/IkRPTUVycm9yIjoiRE9NRXhjZXB0aW9uIiksYT1vLm1lc3NhZ2U/YCR7dH06ICR7by5tZXNzYWdlfWA6dDtpPVRyKGUsYSxuLHIpLCgwLHduLmdPKShpLGEpfXJldHVybiJjb2RlImluIG8mJihpLnRhZ3M9ey4uLmkudGFncywiRE9NRXhjZXB0aW9uLmNvZGUiOmAke28uY29kZX1gfSksaX1pZigoMCxjci5iSikodCkpcmV0dXJuIF9yKGUsdCk7aWYoKDAsY3IuUWQpKHQpfHwoMCxjci54SCkodCkpe3JldHVybiBpPXdyKGUsdCxuLG8pLCgwLHduLk02KShpLHtzeW50aGV0aWM6ITB9KSxpfXJldHVybiBpPVRyKGUsdCxuLHIpLCgwLHduLmdPKShpLGAke3R9YCx2b2lkIDApLCgwLHduLk02KShpLHtzeW50aGV0aWM6ITB9KSxpfWZ1bmN0aW9uIFRyKGUsdCxuLHIpe2NvbnN0IG89e307aWYociYmbil7Y29uc3Qgcj1TcihlLG4pO3IubGVuZ3RoJiYoby5leGNlcHRpb249e3ZhbHVlczpbe3ZhbHVlOnQsc3RhY2t0cmFjZTp7ZnJhbWVzOnJ9fV19KSwoMCx3bi5NNikobyx7c3ludGhldGljOiEwfSl9aWYoKDAsY3IuTkYpKHQpKXtjb25zdHtfX3NlbnRyeV90ZW1wbGF0ZV9zdHJpbmdfXzplLF9fc2VudHJ5X3RlbXBsYXRlX3ZhbHVlc19fOm59PXQ7cmV0dXJuIG8ubG9nZW50cnk9e21lc3NhZ2U6ZSxwYXJhbXM6bn0sb31yZXR1cm4gby5tZXNzYWdlPXQsb31mdW5jdGlvbiB4cihlLHQpe2xldHtpc1VuaGFuZGxlZFJlamVjdGlvbjpufT10O2NvbnN0IHI9KDAsQW4uSEYpKGUpLG89bj8icHJvbWlzZSByZWplY3Rpb24iOiJleGNlcHRpb24iO2lmKCgwLGNyLlQyKShlKSlyZXR1cm5gRXZlbnQgXGBFcnJvckV2ZW50XGAgY2FwdHVyZWQgYXMgJHtvfSB3aXRoIG1lc3NhZ2UgXGAke2UubWVzc2FnZX1cYGA7aWYoKDAsY3IueEgpKGUpKXtyZXR1cm5gRXZlbnQgXGAke2Z1bmN0aW9uKGUpe3RyeXtjb25zdCB0PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4gdD90LmNvbnN0cnVjdG9yLm5hbWU6dm9pZCAwfWNhdGNoKGUpe319KGUpfVxgICh0eXBlPSR7ZS50eXBlfSkgY2FwdHVyZWQgYXMgJHtvfWB9cmV0dXJuYE9iamVjdCBjYXB0dXJlZCBhcyAke299IHdpdGgga2V5czogJHtyfWB9Y29uc3QgSXI9RG4uTztsZXQgTnI9MDtmdW5jdGlvbiBMcigpe3JldHVybiBOcj4wfWZ1bmN0aW9uIFByKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZighZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV9KGUpKXJldHVybiBlO3RyeXtjb25zdCB0PWUuX19zZW50cnlfd3JhcHBlZF9fO2lmKHQpcmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDplO2lmKCgwLEFuLnNwKShlKSlyZXR1cm4gZX1jYXRjaCh0KXtyZXR1cm4gZX1jb25zdCBuPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkobiksbz0wO288bjtvKyspcltvXT1hcmd1bWVudHNbb107dHJ5e2NvbnN0IG49ci5tYXAoZT0+UHIoZSx0KSk7cmV0dXJuIGUuYXBwbHkodGhpcyxuKX1jYXRjaChlKXt0aHJvdyBOcisrLHNldFRpbWVvdXQoKCk9PntOci0tfSksKDAsa24udjQpKG49PntuLmFkZEV2ZW50UHJvY2Vzc29yKGU9Pih0Lm1lY2hhbmlzbSYmKCgwLHduLmdPKShlLHZvaWQgMCx2b2lkIDApLCgwLHduLk02KShlLHQubWVjaGFuaXNtKSksZS5leHRyYT17Li4uZS5leHRyYSxhcmd1bWVudHM6cn0sZSkpLCgwLHBuLkNwKShlKX0pLGV9fTt0cnl7Zm9yKGNvbnN0IHQgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSYmKG5bdF09ZVt0XSl9Y2F0Y2goZSl7fSgwLEFuLnBPKShuLGUpLCgwLEFuLm15KShlLCJfX3NlbnRyeV93cmFwcGVkX18iLG4pO3RyeXtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sIm5hbWUiKS5jb25maWd1cmFibGUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJuYW1lIix7Z2V0KCl7cmV0dXJuIGUubmFtZX19KX1jYXRjaChlKXt9cmV0dXJuIG59Y2xhc3MgTXIgZXh0ZW5kcyBwcntjb25zdHJ1Y3RvcihlKXtjb25zdCB0PXtwYXJlbnRTcGFuSXNBbHdheXNSb290U3BhbjohMCwuLi5lfTt5cih0LCJicm93c2VyIixbImJyb3dzZXIiXSxJci5TRU5UUllfU0RLX1NPVVJDRXx8Im5wbSIpLHN1cGVyKHQpLHQuc2VuZENsaWVudFJlcG9ydHMmJklyLmRvY3VtZW50JiZJci5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIiwoKT0+eyJoaWRkZW4iPT09SXIuZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlJiZ0aGlzLl9mbHVzaE91dGNvbWVzKCl9KX1ldmVudEZyb21FeGNlcHRpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scil7Y29uc3Qgbz1PcihlLHQsbiYmbi5zeW50aGV0aWNFeGNlcHRpb258fHZvaWQgMCxyKTtyZXR1cm4oMCx3bi5NNikobyksby5sZXZlbD0iZXJyb3IiLG4mJm4uZXZlbnRfaWQmJihvLmV2ZW50X2lkPW4uZXZlbnRfaWQpLCgwLHVyLlhXKShvKX0odGhpcy5fb3B0aW9ucy5zdGFja1BhcnNlcixlLHQsdGhpcy5fb3B0aW9ucy5hdHRhY2hTdGFja3RyYWNlKX1ldmVudEZyb21NZXNzYWdlKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiaW5mbyIsbj1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMDtyZXR1cm4gZnVuY3Rpb24oZSx0KXtsZXQgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06ImluZm8iLHI9YXJndW1lbnRzLmxlbmd0aD4zP2FyZ3VtZW50c1szXTp2b2lkIDAsbz1hcmd1bWVudHMubGVuZ3RoPjQ/YXJndW1lbnRzWzRdOnZvaWQgMDtjb25zdCBpPVRyKGUsdCxyJiZyLnN5bnRoZXRpY0V4Y2VwdGlvbnx8dm9pZCAwLG8pO3JldHVybiBpLmxldmVsPW4sciYmci5ldmVudF9pZCYmKGkuZXZlbnRfaWQ9ci5ldmVudF9pZCksKDAsdXIuWFcpKGkpfSh0aGlzLl9vcHRpb25zLnN0YWNrUGFyc2VyLGUsdCxuLHRoaXMuX29wdGlvbnMuYXR0YWNoU3RhY2t0cmFjZSl9Y2FwdHVyZVVzZXJGZWVkYmFjayhlKXtpZighdGhpcy5faXNFbmFibGVkKCkpcmV0dXJuIHZvaWQodnImJm1uLnZGLndhcm4oIlNESyBub3QgZW5hYmxlZCwgd2lsbCBub3QgY2FwdHVyZSB1c2VyIGZlZWRiYWNrLiIpKTtjb25zdCB0PWZ1bmN0aW9uKGUsdCl7bGV0e21ldGFkYXRhOm4sdHVubmVsOnIsZHNuOm99PXQ7Y29uc3QgaT17ZXZlbnRfaWQ6ZS5ldmVudF9pZCxzZW50X2F0OihuZXcgRGF0ZSkudG9JU09TdHJpbmcoKSwuLi5uJiZuLnNkayYme3Nkazp7bmFtZTpuLnNkay5uYW1lLHZlcnNpb246bi5zZGsudmVyc2lvbn19LC4uLiEhciYmISFvJiZ7ZHNuOiRuKG8pfX0sYT1mdW5jdGlvbihlKXtyZXR1cm5be3R5cGU6InVzZXJfcmVwb3J0In0sZV19KGUpO3JldHVybiBHbihpLFthXSl9KGUse21ldGFkYXRhOnRoaXMuZ2V0U2RrTWV0YWRhdGEoKSxkc246dGhpcy5nZXREc24oKSx0dW5uZWw6dGhpcy5nZXRPcHRpb25zKCkudHVubmVsfSk7dGhpcy5zZW5kRW52ZWxvcGUodCl9X3ByZXBhcmVFdmVudChlLHQsbil7cmV0dXJuIGUucGxhdGZvcm09ZS5wbGF0Zm9ybXx8ImphdmFzY3JpcHQiLHN1cGVyLl9wcmVwYXJlRXZlbnQoZSx0LG4pfX1jb25zdCBScj17fSxEcj17fTtmdW5jdGlvbiBGcihlLHQpe1JyW2VdPVJyW2VdfHxbXSxScltlXS5wdXNoKHQpfWZ1bmN0aW9uIGpyKGUsdCl7aWYoIURyW2VdKXtEcltlXT0hMDt0cnl7dCgpfWNhdGNoKHQpe1JuLlQmJm1uLnZGLmVycm9yKGBFcnJvciB3aGlsZSBpbnN0cnVtZW50aW5nICR7ZX1gLHQpfX19ZnVuY3Rpb24gQnIoZSx0KXtjb25zdCBuPWUmJlJyW2VdO2lmKG4pZm9yKGNvbnN0IHIgb2Ygbil0cnl7cih0KX1jYXRjaCh0KXtSbi5UJiZtbi52Ri5lcnJvcihgRXJyb3Igd2hpbGUgdHJpZ2dlcmluZyBpbnN0cnVtZW50YXRpb24gaGFuZGxlci5cblR5cGU6ICR7ZX1cbk5hbWU6ICR7KDAsSW4ucVEpKHIpfVxuRXJyb3I6YCx0KX19Y29uc3QgVnI9RG4uTztsZXQgVXIsenIsSHI7ZnVuY3Rpb24gJHIoKXtpZighVnIuZG9jdW1lbnQpcmV0dXJuO2NvbnN0IGU9QnIuYmluZChudWxsLCJkb20iKSx0PVlyKGUsITApO1ZyLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0LCExKSxWci5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlwcmVzcyIsdCwhMSksWyJFdmVudFRhcmdldCIsIk5vZGUiXS5mb3JFYWNoKHQ9Pntjb25zdCBuPVZyW3RdLHI9biYmbi5wcm90b3R5cGU7ciYmci5oYXNPd25Qcm9wZXJ0eSYmci5oYXNPd25Qcm9wZXJ0eSgiYWRkRXZlbnRMaXN0ZW5lciIpJiYoKDAsQW4uR1MpKHIsImFkZEV2ZW50TGlzdGVuZXIiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuLHIsbyl7aWYoImNsaWNrIj09PW58fCJrZXlwcmVzcyI9PW4pdHJ5e2NvbnN0IHI9dGhpcy5fX3NlbnRyeV9pbnN0cnVtZW50YXRpb25faGFuZGxlcnNfXz10aGlzLl9fc2VudHJ5X2luc3RydW1lbnRhdGlvbl9oYW5kbGVyc19ffHx7fSxpPXJbbl09cltuXXx8e3JlZkNvdW50OjB9O2lmKCFpLmhhbmRsZXIpe2NvbnN0IHI9WXIoZSk7aS5oYW5kbGVyPXIsdC5jYWxsKHRoaXMsbixyLG8pfWkucmVmQ291bnQrK31jYXRjaChlKXt9cmV0dXJuIHQuY2FsbCh0aGlzLG4scixvKX19KSwoMCxBbi5HUykociwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtpZigiY2xpY2siPT09dHx8ImtleXByZXNzIj09dCl0cnl7Y29uc3Qgbj10aGlzLl9fc2VudHJ5X2luc3RydW1lbnRhdGlvbl9oYW5kbGVyc19ffHx7fSxvPW5bdF07byYmKG8ucmVmQ291bnQtLSxvLnJlZkNvdW50PD0wJiYoZS5jYWxsKHRoaXMsdCxvLmhhbmRsZXIsciksby5oYW5kbGVyPXZvaWQgMCxkZWxldGUgblt0XSksMD09PU9iamVjdC5rZXlzKG4pLmxlbmd0aCYmZGVsZXRlIHRoaXMuX19zZW50cnlfaW5zdHJ1bWVudGF0aW9uX2hhbmRsZXJzX18pfWNhdGNoKGUpe31yZXR1cm4gZS5jYWxsKHRoaXMsdCxuLHIpfX0pKX0pfWZ1bmN0aW9uIFlyKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07cmV0dXJuIG49PntpZighbnx8bi5fc2VudHJ5Q2FwdHVyZWQpcmV0dXJuO2NvbnN0IHI9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBlLnRhcmdldH1jYXRjaChlKXtyZXR1cm4gbnVsbH19KG4pO2lmKGZ1bmN0aW9uKGUsdCl7cmV0dXJuImtleXByZXNzIj09PWUmJighdHx8IXQudGFnTmFtZXx8IklOUFVUIiE9PXQudGFnTmFtZSYmIlRFWFRBUkVBIiE9PXQudGFnTmFtZSYmIXQuaXNDb250ZW50RWRpdGFibGUpfShuLnR5cGUscikpcmV0dXJuOygwLEFuLm15KShuLCJfc2VudHJ5Q2FwdHVyZWQiLCEwKSxyJiYhci5fc2VudHJ5SWQmJigwLEFuLm15KShyLCJfc2VudHJ5SWQiLCgwLHduLmVKKSgpKTtjb25zdCBvPSJrZXlwcmVzcyI9PT1uLnR5cGU/ImlucHV0IjpuLnR5cGU7aWYoIWZ1bmN0aW9uKGUpe2lmKGUudHlwZSE9PXpyKXJldHVybiExO3RyeXtpZighZS50YXJnZXR8fGUudGFyZ2V0Ll9zZW50cnlJZCE9PUhyKXJldHVybiExfWNhdGNoKGUpe31yZXR1cm4hMH0obikpe2Uoe2V2ZW50Om4sbmFtZTpvLGdsb2JhbDp0fSksenI9bi50eXBlLEhyPXI/ci5fc2VudHJ5SWQ6dm9pZCAwfWNsZWFyVGltZW91dChVciksVXI9VnIuc2V0VGltZW91dCgoKT0+e0hyPXZvaWQgMCx6cj12b2lkIDB9LDFlMyl9fWNvbnN0IHFyPSJfX3NlbnRyeV94aHJfdjNfXyI7ZnVuY3Rpb24gV3IoKXtpZighVnIuWE1MSHR0cFJlcXVlc3QpcmV0dXJuO2NvbnN0IGU9WE1MSHR0cFJlcXVlc3QucHJvdG90eXBlO2Uub3Blbj1uZXcgUHJveHkoZS5vcGVuLHthcHBseShlLHQsbil7Y29uc3Qgcj1uZXcgRXJyb3Isbz0xZTMqKDAsYXIuemYpKCksaT0oMCxjci5LZykoblswXSk/blswXS50b1VwcGVyQ2FzZSgpOnZvaWQgMCxhPWZ1bmN0aW9uKGUpe2lmKCgwLGNyLktnKShlKSlyZXR1cm4gZTt0cnl7cmV0dXJuIGUudG9TdHJpbmcoKX1jYXRjaChlKXt9cmV0dXJufShuWzFdKTtpZighaXx8IWEpcmV0dXJuIGUuYXBwbHkodCxuKTt0W3FyXT17bWV0aG9kOmksdXJsOmEscmVxdWVzdF9oZWFkZXJzOnt9fSwiUE9TVCI9PT1pJiZhLm1hdGNoKC9zZW50cnlfa2V5LykmJih0Ll9fc2VudHJ5X293bl9yZXF1ZXN0X189ITApO2NvbnN0IHM9KCk9Pntjb25zdCBlPXRbcXJdO2lmKGUmJjQ9PT10LnJlYWR5U3RhdGUpe3RyeXtlLnN0YXR1c19jb2RlPXQuc3RhdHVzfWNhdGNoKGUpe31CcigieGhyIix7ZW5kVGltZXN0YW1wOjFlMyooMCxhci56ZikoKSxzdGFydFRpbWVzdGFtcDpvLHhocjp0LHZpcnR1YWxFcnJvcjpyfSl9fTtyZXR1cm4ib25yZWFkeXN0YXRlY2hhbmdlImluIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0Lm9ucmVhZHlzdGF0ZWNoYW5nZT90Lm9ucmVhZHlzdGF0ZWNoYW5nZT1uZXcgUHJveHkodC5vbnJlYWR5c3RhdGVjaGFuZ2Use2FwcGx5KGUsdCxuKXtyZXR1cm4gcygpLGUuYXBwbHkodCxuKX19KTp0LmFkZEV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLHMpLHQuc2V0UmVxdWVzdEhlYWRlcj1uZXcgUHJveHkodC5zZXRSZXF1ZXN0SGVhZGVyLHthcHBseShlLHQsbil7Y29uc3RbcixvXT1uLGk9dFtxcl07cmV0dXJuIGkmJigwLGNyLktnKShyKSYmKDAsY3IuS2cpKG8pJiYoaS5yZXF1ZXN0X2hlYWRlcnNbci50b0xvd2VyQ2FzZSgpXT1vKSxlLmFwcGx5KHQsbil9fSksZS5hcHBseSh0LG4pfX0pLGUuc2VuZD1uZXcgUHJveHkoZS5zZW5kLHthcHBseShlLHQsbil7Y29uc3Qgcj10W3FyXTtpZighcilyZXR1cm4gZS5hcHBseSh0LG4pO3ZvaWQgMCE9PW5bMF0mJihyLmJvZHk9blswXSk7cmV0dXJuIEJyKCJ4aHIiLHtzdGFydFRpbWVzdGFtcDoxZTMqKDAsYXIuemYpKCkseGhyOnR9KSxlLmFwcGx5KHQsbil9fSl9Y29uc3QgR3I9RG4uTztsZXQgUXI7ZnVuY3Rpb24gS3IoZSl7Y29uc3QgdD0iaGlzdG9yeSI7RnIodCxlKSxqcih0LFpyKX1mdW5jdGlvbiBacigpe2lmKCFmdW5jdGlvbigpe2NvbnN0IGU9R3IuY2hyb21lLHQ9ZSYmZS5hcHAmJmUuYXBwLnJ1bnRpbWUsbj0iaGlzdG9yeSJpbiBHciYmISFHci5oaXN0b3J5LnB1c2hTdGF0ZSYmISFHci5oaXN0b3J5LnJlcGxhY2VTdGF0ZTtyZXR1cm4hdCYmbn0oKSlyZXR1cm47Y29uc3QgZT1Wci5vbnBvcHN0YXRlO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07Y29uc3Qgbz1uLmxlbmd0aD4yP25bMl06dm9pZCAwO2lmKG8pe2NvbnN0IGU9UXIsdD1TdHJpbmcobyk7UXI9dDtCcigiaGlzdG9yeSIse2Zyb206ZSx0bzp0fSl9cmV0dXJuIGUuYXBwbHkodGhpcyxuKX19VnIub25wb3BzdGF0ZT1mdW5jdGlvbigpe2NvbnN0IHQ9VnIubG9jYXRpb24uaHJlZixuPVFyO1FyPXQ7aWYoQnIoImhpc3RvcnkiLHtmcm9tOm4sdG86dH0pLGUpdHJ5e2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW9baV09YXJndW1lbnRzW2ldO3JldHVybiBlLmFwcGx5KHRoaXMsbyl9Y2F0Y2goZSl7fX0sKDAsQW4uR1MpKFZyLmhpc3RvcnksInB1c2hTdGF0ZSIsdCksKDAsQW4uR1MpKFZyLmhpc3RvcnksInJlcGxhY2VTdGF0ZSIsdCl9ZnVuY3Rpb24gWHIoKXsiY29uc29sZSJpbiBEbi5PJiZtbi5Pdy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UgaW4gRG4uTy5jb25zb2xlJiYoMCxBbi5HUykoRG4uTy5jb25zb2xlLGUsZnVuY3Rpb24odCl7cmV0dXJuIG1uLlo5W2VdPXQsZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPWFyZ3VtZW50c1tyXTtCcigiY29uc29sZSIse2FyZ3M6bixsZXZlbDplfSk7Y29uc3Qgbz1tbi5aOVtlXTtvJiZvLmFwcGx5KERuLk8uY29uc29sZSxuKX19KX0pfWZ1bmN0aW9uIEpyKGUpe2FyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0mJiFmdW5jdGlvbigpe2lmKCJzdHJpbmciPT10eXBlb2YgRWRnZVJ1bnRpbWUpcmV0dXJuITA7aWYoIWpuKCkpcmV0dXJuITE7aWYoQm4oRm4uZmV0Y2gpKXJldHVybiEwO2xldCBlPSExO2NvbnN0IHQ9Rm4uZG9jdW1lbnQ7aWYodCYmImZ1bmN0aW9uIj09dHlwZW9mIHQuY3JlYXRlRWxlbWVudCl0cnl7Y29uc3Qgbj10LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO24uaGlkZGVuPSEwLHQuaGVhZC5hcHBlbmRDaGlsZChuKSxuLmNvbnRlbnRXaW5kb3cmJm4uY29udGVudFdpbmRvdy5mZXRjaCYmKGU9Qm4obi5jb250ZW50V2luZG93LmZldGNoKSksdC5oZWFkLnJlbW92ZUNoaWxkKG4pfWNhdGNoKGUpe1JuLlQmJm1uLnZGLndhcm4oIkNvdWxkIG5vdCBjcmVhdGUgc2FuZGJveCBpZnJhbWUgZm9yIHB1cmUgZmV0Y2ggY2hlY2ssIGJhaWxpbmcgdG8gd2luZG93LmZldGNoOiAiLGUpfXJldHVybiBlfSgpfHwoMCxBbi5HUykoRG4uTywiZmV0Y2giLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe2NvbnN0IG49bmV3IEVycm9yO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG89bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW9baV09YXJndW1lbnRzW2ldO2NvbnN0e21ldGhvZDphLHVybDpzfT1mdW5jdGlvbihlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJue21ldGhvZDoiR0VUIix1cmw6IiJ9O2lmKDI9PT1lLmxlbmd0aCl7Y29uc3RbdCxuXT1lO3JldHVybnt1cmw6dG8odCksbWV0aG9kOmVvKG4sIm1ldGhvZCIpP1N0cmluZyhuLm1ldGhvZCkudG9VcHBlckNhc2UoKToiR0VUIn19Y29uc3QgdD1lWzBdO3JldHVybnt1cmw6dG8odCksbWV0aG9kOmVvKHQsIm1ldGhvZCIpP1N0cmluZyh0Lm1ldGhvZCkudG9VcHBlckNhc2UoKToiR0VUIn19KG8pLGM9e2FyZ3M6byxmZXRjaERhdGE6e21ldGhvZDphLHVybDpzfSxzdGFydFRpbWVzdGFtcDoxZTMqKDAsYXIuemYpKCksdmlydHVhbEVycm9yOm59O3JldHVybiBlfHxCcigiZmV0Y2giLHsuLi5jfSksdC5hcHBseShEbi5PLG8pLnRoZW4oYXN5bmMgdD0+KGU/ZSh0KTpCcigiZmV0Y2giLHsuLi5jLGVuZFRpbWVzdGFtcDoxZTMqKDAsYXIuemYpKCkscmVzcG9uc2U6dH0pLHQpLGU9Pnt0aHJvdyBCcigiZmV0Y2giLHsuLi5jLGVuZFRpbWVzdGFtcDoxZTMqKDAsYXIuemYpKCksZXJyb3I6ZX0pLCgwLGNyLmJKKShlKSYmdm9pZCAwPT09ZS5zdGFjayYmKGUuc3RhY2s9bi5zdGFjaywoMCxBbi5teSkoZSwiZnJhbWVzVG9Qb3AiLDEpKSxlfSl9fSl9ZnVuY3Rpb24gZW8oZSx0KXtyZXR1cm4hIWUmJiJvYmplY3QiPT10eXBlb2YgZSYmISFlW3RdfWZ1bmN0aW9uIHRvKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9lOmU/ZW8oZSwidXJsIik/ZS51cmw6ZS50b1N0cmluZz9lLnRvU3RyaW5nKCk6IiI6IiJ9Y29uc3Qgbm89MTAwO2Z1bmN0aW9uIHJvKGUsdCl7Y29uc3Qgbj0oMCxrbi5LVSkoKSxyPSgwLGtuLnJtKSgpO2lmKCFuKXJldHVybjtjb25zdHtiZWZvcmVCcmVhZGNydW1iOm89bnVsbCxtYXhCcmVhZGNydW1iczppPW5vfT1uLmdldE9wdGlvbnMoKTtpZihpPD0wKXJldHVybjtjb25zdCBhPXt0aW1lc3RhbXA6KDAsYXIubHUpKCksLi4uZX0scz1vPygwLG1uLnBxKSgoKT0+byhhLHQpKTphO251bGwhPT1zJiYobi5lbWl0JiZuLmVtaXQoImJlZm9yZUFkZEJyZWFkY3J1bWIiLHMsdCksci5hZGRCcmVhZGNydW1iKHMsaSkpfXZhciBvbz1uKDM1NjIpO2Z1bmN0aW9uIGlvKGUpe3JldHVybiJ3YXJuIj09PWU/Indhcm5pbmciOlsiZmF0YWwiLCJlcnJvciIsIndhcm5pbmciLCJsb2ciLCJpbmZvIiwiZGVidWciXS5pbmNsdWRlcyhlKT9lOiJsb2cifWZ1bmN0aW9uIGFvKGUpe3JldHVybiB2b2lkIDA9PT1lP3ZvaWQgMDplPj00MDAmJmU8NTAwPyJ3YXJuaW5nIjplPj01MDA/ImVycm9yIjp2b2lkIDB9ZnVuY3Rpb24gc28oZSl7aWYoIWUpcmV0dXJue307Y29uc3QgdD1lLm1hdGNoKC9eKChbXjovPyNdKyk6KT8oXC9cLyhbXi8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpPyQvKTtpZighdClyZXR1cm57fTtjb25zdCBuPXRbNl18fCIiLHI9dFs4XXx8IiI7cmV0dXJue2hvc3Q6dFs0XSxwYXRoOnRbNV0scHJvdG9jb2w6dFsyXSxzZWFyY2g6bixoYXNoOnIscmVsYXRpdmU6dFs1XStuK3J9fWNvbnN0IGNvPTEwMjQsdW89ZnVuY3Rpb24oKXtjb25zdCBlPXtjb25zb2xlOiEwLGRvbTohMCxmZXRjaDohMCxoaXN0b3J5OiEwLHNlbnRyeTohMCx4aHI6ITAsLi4uYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9fTtyZXR1cm57bmFtZToiQnJlYWRjcnVtYnMiLHNldHVwKHQpe3ZhciBuO2UuY29uc29sZSYmZnVuY3Rpb24oZSl7Y29uc3QgdD0iY29uc29sZSI7RnIodCxlKSxqcih0LFhyKX0oZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKCgwLGtuLktVKSgpIT09ZSlyZXR1cm47Y29uc3Qgbj17Y2F0ZWdvcnk6ImNvbnNvbGUiLGRhdGE6e2FyZ3VtZW50czp0LmFyZ3MsbG9nZ2VyOiJjb25zb2xlIn0sbGV2ZWw6aW8odC5sZXZlbCksbWVzc2FnZTooMCxfbi5ndCkodC5hcmdzLCIgIil9O2lmKCJhc3NlcnQiPT09dC5sZXZlbCl7aWYoITEhPT10LmFyZ3NbMF0pcmV0dXJuO24ubWVzc2FnZT1gQXNzZXJ0aW9uIGZhaWxlZDogJHsoMCxfbi5ndCkodC5hcmdzLnNsaWNlKDEpLCIgIil8fCJjb25zb2xlLmFzc2VydCJ9YCxuLmRhdGEuYXJndW1lbnRzPXQuYXJncy5zbGljZSgxKX1ybyhuLHtpbnB1dDp0LmFyZ3MsbGV2ZWw6dC5sZXZlbH0pfX0odCkpLGUuZG9tJiYobj1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtpZigoMCxrbi5LVSkoKSE9PWUpcmV0dXJuO2xldCByLG8saT0ib2JqZWN0Ij09dHlwZW9mIHQ/dC5zZXJpYWxpemVBdHRyaWJ1dGU6dm9pZCAwLGE9Im9iamVjdCI9PXR5cGVvZiB0JiYibnVtYmVyIj09dHlwZW9mIHQubWF4U3RyaW5nTGVuZ3RoP3QubWF4U3RyaW5nTGVuZ3RoOnZvaWQgMDthJiZhPmNvJiYodnImJm1uLnZGLndhcm4oYFxgZG9tLm1heFN0cmluZ0xlbmd0aFxgIGNhbm5vdCBleGNlZWQgMTAyNCwgYnV0IGEgdmFsdWUgb2YgJHthfSB3YXMgY29uZmlndXJlZC4gU2VudHJ5IHdpbGwgdXNlIDEwMjQgaW5zdGVhZC5gKSxhPWNvKSwic3RyaW5nIj09dHlwZW9mIGkmJihpPVtpXSk7dHJ5e2NvbnN0IGU9bi5ldmVudCx0PWZ1bmN0aW9uKGUpe3JldHVybiEhZSYmISFlLnRhcmdldH0oZSk/ZS50YXJnZXQ6ZTtyPSgwLG9vLkhkKSh0LHtrZXlBdHRyczppLG1heFN0cmluZ0xlbmd0aDphfSksbz0oMCxvby54RSkodCl9Y2F0Y2goZSl7cj0iPHVua25vd24+In1pZigwPT09ci5sZW5ndGgpcmV0dXJuO2NvbnN0IHM9e2NhdGVnb3J5OmB1aS4ke24ubmFtZX1gLG1lc3NhZ2U6cn07byYmKHMuZGF0YT17InVpLmNvbXBvbmVudF9uYW1lIjpvfSkscm8ocyx7ZXZlbnQ6bi5ldmVudCxuYW1lOm4ubmFtZSxnbG9iYWw6bi5nbG9iYWx9KX19KHQsZS5kb20pLEZyKCJkb20iLG4pLGpyKCJkb20iLCRyKSksZS54aHImJmZ1bmN0aW9uKGUpe0ZyKCJ4aHIiLGUpLGpyKCJ4aHIiLFdyKX0oZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKCgwLGtuLktVKSgpIT09ZSlyZXR1cm47Y29uc3R7c3RhcnRUaW1lc3RhbXA6bixlbmRUaW1lc3RhbXA6cn09dCxvPXQueGhyW3FyXTtpZighbnx8IXJ8fCFvKXJldHVybjtjb25zdHttZXRob2Q6aSx1cmw6YSxzdGF0dXNfY29kZTpzLGJvZHk6Y309byx1PXttZXRob2Q6aSx1cmw6YSxzdGF0dXNfY29kZTpzfSxsPXt4aHI6dC54aHIsaW5wdXQ6YyxzdGFydFRpbWVzdGFtcDpuLGVuZFRpbWVzdGFtcDpyfTtybyh7Y2F0ZWdvcnk6InhociIsZGF0YTp1LHR5cGU6Imh0dHAiLGxldmVsOmFvKHMpfSxsKX19KHQpKSxlLmZldGNoJiZmdW5jdGlvbihlLHQpe2NvbnN0IG49ImZldGNoIjtGcihuLGUpLGpyKG4sKCk9PkpyKHZvaWQgMCx0KSl9KGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtpZigoMCxrbi5LVSkoKSE9PWUpcmV0dXJuO2NvbnN0e3N0YXJ0VGltZXN0YW1wOm4sZW5kVGltZXN0YW1wOnJ9PXQ7aWYociYmKCF0LmZldGNoRGF0YS51cmwubWF0Y2goL3NlbnRyeV9rZXkvKXx8IlBPU1QiIT09dC5mZXRjaERhdGEubWV0aG9kKSlpZih0LmVycm9yKXtybyh7Y2F0ZWdvcnk6ImZldGNoIixkYXRhOnQuZmV0Y2hEYXRhLGxldmVsOiJlcnJvciIsdHlwZToiaHR0cCJ9LHtkYXRhOnQuZXJyb3IsaW5wdXQ6dC5hcmdzLHN0YXJ0VGltZXN0YW1wOm4sZW5kVGltZXN0YW1wOnJ9KX1lbHNle2NvbnN0IGU9dC5yZXNwb25zZSxvPXsuLi50LmZldGNoRGF0YSxzdGF0dXNfY29kZTplJiZlLnN0YXR1c30saT17aW5wdXQ6dC5hcmdzLHJlc3BvbnNlOmUsc3RhcnRUaW1lc3RhbXA6bixlbmRUaW1lc3RhbXA6cn07cm8oe2NhdGVnb3J5OiJmZXRjaCIsZGF0YTpvLHR5cGU6Imh0dHAiLGxldmVsOmFvKG8uc3RhdHVzX2NvZGUpfSxpKX19fSh0KSksZS5oaXN0b3J5JiZLcihmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoKDAsa24uS1UpKCkhPT1lKXJldHVybjtsZXQgbj10LmZyb20scj10LnRvO2NvbnN0IG89c28oSXIubG9jYXRpb24uaHJlZik7bGV0IGk9bj9zbyhuKTp2b2lkIDA7Y29uc3QgYT1zbyhyKTtpJiZpLnBhdGh8fChpPW8pLG8ucHJvdG9jb2w9PT1hLnByb3RvY29sJiZvLmhvc3Q9PT1hLmhvc3QmJihyPWEucmVsYXRpdmUpLG8ucHJvdG9jb2w9PT1pLnByb3RvY29sJiZvLmhvc3Q9PT1pLmhvc3QmJihuPWkucmVsYXRpdmUpLHJvKHtjYXRlZ29yeToibmF2aWdhdGlvbiIsZGF0YTp7ZnJvbTpuLHRvOnJ9fSl9fSh0KSksZS5zZW50cnkmJnQub24oImJlZm9yZVNlbmRFdmVudCIsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpeygwLGtuLktVKSgpPT09ZSYmcm8oe2NhdGVnb3J5OiJzZW50cnkuIisoInRyYW5zYWN0aW9uIj09PXQudHlwZT8idHJhbnNhY3Rpb24iOiJldmVudCIpLGV2ZW50X2lkOnQuZXZlbnRfaWQsbGV2ZWw6dC5sZXZlbCxtZXNzYWdlOigwLHduLiRYKSh0KX0se2V2ZW50OnR9KX19KHQpKX19fTtjb25zdCBsbz1bIkV2ZW50VGFyZ2V0IiwiV2luZG93IiwiTm9kZSIsIkFwcGxpY2F0aW9uQ2FjaGUiLCJBdWRpb1RyYWNrTGlzdCIsIkJyb2FkY2FzdENoYW5uZWwiLCJDaGFubmVsTWVyZ2VyTm9kZSIsIkNyeXB0b09wZXJhdGlvbiIsIkV2ZW50U291cmNlIiwiRmlsZVJlYWRlciIsIkhUTUxVbmtub3duRWxlbWVudCIsIklEQkRhdGFiYXNlIiwiSURCUmVxdWVzdCIsIklEQlRyYW5zYWN0aW9uIiwiS2V5T3BlcmF0aW9uIiwiTWVkaWFDb250cm9sbGVyIiwiTWVzc2FnZVBvcnQiLCJNb2RhbFdpbmRvdyIsIk5vdGlmaWNhdGlvbiIsIlNWR0VsZW1lbnRJbnN0YW5jZSIsIlNjcmVlbiIsIlNoYXJlZFdvcmtlciIsIlRleHRUcmFjayIsIlRleHRUcmFja0N1ZSIsIlRleHRUcmFja0xpc3QiLCJXZWJTb2NrZXQiLCJXZWJTb2NrZXRXb3JrZXIiLCJXb3JrZXIiLCJYTUxIdHRwUmVxdWVzdCIsIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQiLCJYTUxIdHRwUmVxdWVzdFVwbG9hZCJdLGZvPWZ1bmN0aW9uKCl7Y29uc3QgZT17WE1MSHR0cFJlcXVlc3Q6ITAsZXZlbnRUYXJnZXQ6ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lOiEwLHNldEludGVydmFsOiEwLHNldFRpbWVvdXQ6ITAsLi4uYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9fTtyZXR1cm57bmFtZToiQnJvd3NlckFwaUVycm9ycyIsc2V0dXBPbmNlKCl7ZS5zZXRUaW1lb3V0JiYoMCxBbi5HUykoSXIsInNldFRpbWVvdXQiLHBvKSxlLnNldEludGVydmFsJiYoMCxBbi5HUykoSXIsInNldEludGVydmFsIixwbyksZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUmJigwLEFuLkdTKShJciwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIixobyksZS5YTUxIdHRwUmVxdWVzdCYmIlhNTEh0dHBSZXF1ZXN0ImluIElyJiYoMCxBbi5HUykoWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJzZW5kIixtbyk7Y29uc3QgdD1lLmV2ZW50VGFyZ2V0O2lmKHQpeyhBcnJheS5pc0FycmF5KHQpP3Q6bG8pLmZvckVhY2goZ28pfX19fTtmdW5jdGlvbiBwbyhlKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPWFyZ3VtZW50c1tyXTtjb25zdCBvPW5bMF07cmV0dXJuIG5bMF09UHIobyx7bWVjaGFuaXNtOntkYXRhOntmdW5jdGlvbjooMCxJbi5xUSkoZSl9LGhhbmRsZWQ6ITEsdHlwZToiaW5zdHJ1bWVudCJ9fSksZS5hcHBseSh0aGlzLG4pfX1mdW5jdGlvbiBobyhlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxbUHIodCx7bWVjaGFuaXNtOntkYXRhOntmdW5jdGlvbjoicmVxdWVzdEFuaW1hdGlvbkZyYW1lIixoYW5kbGVyOigwLEluLnFRKShlKX0saGFuZGxlZDohMSx0eXBlOiJpbnN0cnVtZW50In19KV0pfX1mdW5jdGlvbiBtbyhlKXtyZXR1cm4gZnVuY3Rpb24oKXtjb25zdCB0PXRoaXM7WyJvbmxvYWQiLCJvbmVycm9yIiwib25wcm9ncmVzcyIsIm9ucmVhZHlzdGF0ZWNoYW5nZSJdLmZvckVhY2goZT0+e2UgaW4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHRbZV0mJigwLEFuLkdTKSh0LGUsZnVuY3Rpb24odCl7Y29uc3Qgbj17bWVjaGFuaXNtOntkYXRhOntmdW5jdGlvbjplLGhhbmRsZXI6KDAsSW4ucVEpKHQpfSxoYW5kbGVkOiExLHR5cGU6Imluc3RydW1lbnQifX0scj0oMCxBbi5zcCkodCk7cmV0dXJuIHImJihuLm1lY2hhbmlzbS5kYXRhLmhhbmRsZXI9KDAsSW4ucVEpKHIpKSxQcih0LG4pfSl9KTtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuKSxvPTA7bzxuO28rKylyW29dPWFyZ3VtZW50c1tvXTtyZXR1cm4gZS5hcHBseSh0aGlzLHIpfX1mdW5jdGlvbiBnbyhlKXtjb25zdCB0PUlyW2VdLG49dCYmdC5wcm90b3R5cGU7biYmbi5oYXNPd25Qcm9wZXJ0eSYmbi5oYXNPd25Qcm9wZXJ0eSgiYWRkRXZlbnRMaXN0ZW5lciIpJiYoKDAsQW4uR1MpKG4sImFkZEV2ZW50TGlzdGVuZXIiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuLHIsbyl7dHJ5eyJmdW5jdGlvbiI9PXR5cGVvZiByLmhhbmRsZUV2ZW50JiYoci5oYW5kbGVFdmVudD1QcihyLmhhbmRsZUV2ZW50LHttZWNoYW5pc206e2RhdGE6e2Z1bmN0aW9uOiJoYW5kbGVFdmVudCIsaGFuZGxlcjooMCxJbi5xUSkociksdGFyZ2V0OmV9LGhhbmRsZWQ6ITEsdHlwZToiaW5zdHJ1bWVudCJ9fSkpfWNhdGNoKGUpe31yZXR1cm4gdC5hcHBseSh0aGlzLFtuLFByKHIse21lY2hhbmlzbTp7ZGF0YTp7ZnVuY3Rpb246ImFkZEV2ZW50TGlzdGVuZXIiLGhhbmRsZXI6KDAsSW4ucVEpKHIpLHRhcmdldDplfSxoYW5kbGVkOiExLHR5cGU6Imluc3RydW1lbnQifX0pLG9dKX19KSwoMCxBbi5HUykobiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXt0cnl7Y29uc3Qgbz1uLl9fc2VudHJ5X3dyYXBwZWRfXztvJiZlLmNhbGwodGhpcyx0LG8scil9Y2F0Y2goZSl7fXJldHVybiBlLmNhbGwodGhpcyx0LG4scil9fSkpfWNvbnN0IHlvPSgpPT4oe25hbWU6IkJyb3dzZXJTZXNzaW9uIixzZXR1cE9uY2UoKXt2b2lkIDAhPT1Jci5kb2N1bWVudD8oKDAscG4uSjApKHtpZ25vcmVEdXJhdGlvbjohMH0pLCgwLHBuLko1KSgpLEtyKGU9PntsZXR7ZnJvbTp0LHRvOm59PWU7dm9pZCAwIT09dCYmdCE9PW4mJigoMCxwbi5KMCkoe2lnbm9yZUR1cmF0aW9uOiEwfSksKDAscG4uSjUpKCkpfSkpOnZyJiZtbi52Ri53YXJuKCJVc2luZyB0aGUgYGJyb3dzZXJTZXNzaW9uSW50ZWdyYXRpb25gIGluIG5vbi1icm93c2VyIGVudmlyb25tZW50cyBpcyBub3Qgc3VwcG9ydGVkLiIpfX0pO2xldCB2bz1udWxsO2Z1bmN0aW9uIGJvKCl7dm89RG4uTy5vbmVycm9yLERuLk8ub25lcnJvcj1mdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBCcigiZXJyb3IiLHtjb2x1bW46cixlcnJvcjpvLGxpbmU6bixtc2c6ZSx1cmw6dH0pLCEhdm8mJnZvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sRG4uTy5vbmVycm9yLl9fU0VOVFJZX0lOU1RSVU1FTlRFRF9fPSEwfWxldCB3bz1udWxsO2Z1bmN0aW9uIF9vKCl7d289RG4uTy5vbnVuaGFuZGxlZHJlamVjdGlvbixEbi5PLm9udW5oYW5kbGVkcmVqZWN0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBCcigidW5oYW5kbGVkcmVqZWN0aW9uIixlKSwhd298fHdvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sRG4uTy5vbnVuaGFuZGxlZHJlamVjdGlvbi5fX1NFTlRSWV9JTlNUUlVNRU5URURfXz0hMH1jb25zdCBTbz1mdW5jdGlvbigpe2NvbnN0IGU9e29uZXJyb3I6ITAsb251bmhhbmRsZWRyZWplY3Rpb246ITAsLi4uYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9fTtyZXR1cm57bmFtZToiR2xvYmFsSGFuZGxlcnMiLHNldHVwT25jZSgpe0Vycm9yLnN0YWNrVHJhY2VMaW1pdD01MH0sc2V0dXAodCl7ZS5vbmVycm9yJiYoIWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXtjb25zdCB0PSJlcnJvciI7RnIodCxlKSxqcih0LGJvKX0odD0+e2NvbnN0e3N0YWNrUGFyc2VyOm4sYXR0YWNoU3RhY2t0cmFjZTpyfT1DbygpO2lmKCgwLGtuLktVKSgpIT09ZXx8THIoKSlyZXR1cm47Y29uc3R7bXNnOm8sdXJsOmksbGluZTphLGNvbHVtbjpzLGVycm9yOmN9PXQsdT1mdW5jdGlvbihlLHQsbixyKXtjb25zdCBvPWUuZXhjZXB0aW9uPWUuZXhjZXB0aW9ufHx7fSxpPW8udmFsdWVzPW8udmFsdWVzfHxbXSxhPWlbMF09aVswXXx8e30scz1hLnN0YWNrdHJhY2U9YS5zdGFja3RyYWNlfHx7fSxjPXMuZnJhbWVzPXMuZnJhbWVzfHxbXSx1PXIsbD1uLGQ9KDAsY3IuS2cpKHQpJiZ0Lmxlbmd0aD4wP3Q6KDAsb28uJE4pKCk7MD09PWMubGVuZ3RoJiZjLnB1c2goe2NvbG5vOnUsZmlsZW5hbWU6ZCxmdW5jdGlvbjpJbi55Rixpbl9hcHA6ITAsbGluZW5vOmx9KTtyZXR1cm4gZX0oT3IobixjfHxvLHZvaWQgMCxyLCExKSxpLGEscyk7dS5sZXZlbD0iZXJyb3IiLCgwLHBuLnIpKHUse29yaWdpbmFsRXhjZXB0aW9uOmMsbWVjaGFuaXNtOntoYW5kbGVkOiExLHR5cGU6Im9uZXJyb3IifX0pfSl9KHQpLEVvKCJvbmVycm9yIikpLGUub251bmhhbmRsZWRyZWplY3Rpb24mJighZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUpe2NvbnN0IHQ9InVuaGFuZGxlZHJlamVjdGlvbiI7RnIodCxlKSxqcih0LF9vKX0odD0+e2NvbnN0e3N0YWNrUGFyc2VyOm4sYXR0YWNoU3RhY2t0cmFjZTpyfT1DbygpO2lmKCgwLGtuLktVKSgpIT09ZXx8THIoKSlyZXR1cm47Y29uc3Qgbz1mdW5jdGlvbihlKXtpZigoMCxjci5zTykoZSkpcmV0dXJuIGU7dHJ5e2lmKCJyZWFzb24iaW4gZSlyZXR1cm4gZS5yZWFzb247aWYoImRldGFpbCJpbiBlJiYicmVhc29uImluIGUuZGV0YWlsKXJldHVybiBlLmRldGFpbC5yZWFzb259Y2F0Y2goZSl7fXJldHVybiBlfSh0KSxpPSgwLGNyLnNPKShvKT97ZXhjZXB0aW9uOnt2YWx1ZXM6W3t0eXBlOiJVbmhhbmRsZWRSZWplY3Rpb24iLHZhbHVlOmBOb24tRXJyb3IgcHJvbWlzZSByZWplY3Rpb24gY2FwdHVyZWQgd2l0aCB2YWx1ZTogJHtTdHJpbmcobyl9YH1dfX06T3IobixvLHZvaWQgMCxyLCEwKTtpLmxldmVsPSJlcnJvciIsKDAscG4ucikoaSx7b3JpZ2luYWxFeGNlcHRpb246byxtZWNoYW5pc206e2hhbmRsZWQ6ITEsdHlwZToib251bmhhbmRsZWRyZWplY3Rpb24ifX0pfSl9KHQpLEVvKCJvbnVuaGFuZGxlZHJlamVjdGlvbiIpKX19fTtmdW5jdGlvbiBFbyhlKXt2ciYmbW4udkYubG9nKGBHbG9iYWwgSGFuZGxlciBhdHRhY2hlZDogJHtlfWApfWZ1bmN0aW9uIENvKCl7Y29uc3QgZT0oMCxrbi5LVSkoKTtyZXR1cm4gZSYmZS5nZXRPcHRpb25zKCl8fHtzdGFja1BhcnNlcjooKT0+W10sYXR0YWNoU3RhY2t0cmFjZTohMX19Y29uc3Qga289KCk9Pih7bmFtZToiSHR0cENvbnRleHQiLHByZXByb2Nlc3NFdmVudChlKXtpZighSXIubmF2aWdhdG9yJiYhSXIubG9jYXRpb24mJiFJci5kb2N1bWVudClyZXR1cm47Y29uc3QgdD1lLnJlcXVlc3QmJmUucmVxdWVzdC51cmx8fElyLmxvY2F0aW9uJiZJci5sb2NhdGlvbi5ocmVmLHtyZWZlcnJlcjpufT1Jci5kb2N1bWVudHx8e30se3VzZXJBZ2VudDpyfT1Jci5uYXZpZ2F0b3J8fHt9LG89ey4uLmUucmVxdWVzdCYmZS5yZXF1ZXN0LmhlYWRlcnMsLi4ubiYme1JlZmVyZXI6bn0sLi4uciYmeyJVc2VyLUFnZW50IjpyfX0saT17Li4uZS5yZXF1ZXN0LC4uLnQmJnt1cmw6dH0saGVhZGVyczpvfTtlLnJlcXVlc3Q9aX19KTtmdW5jdGlvbiBBbyhlLHQpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToyNTAscj1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMCxvPWFyZ3VtZW50cy5sZW5ndGg+ND9hcmd1bWVudHNbNF06dm9pZCAwLGk9YXJndW1lbnRzLmxlbmd0aD41P2FyZ3VtZW50c1s1XTp2b2lkIDAsYT1hcmd1bWVudHMubGVuZ3RoPjY/YXJndW1lbnRzWzZdOnZvaWQgMDtpZighKGkuZXhjZXB0aW9uJiZpLmV4Y2VwdGlvbi52YWx1ZXMmJmEmJigwLGNyLnRIKShhLm9yaWdpbmFsRXhjZXB0aW9uLEVycm9yKSkpcmV0dXJuO2NvbnN0IHM9aS5leGNlcHRpb24udmFsdWVzLmxlbmd0aD4wP2kuZXhjZXB0aW9uLnZhbHVlc1tpLmV4Y2VwdGlvbi52YWx1ZXMubGVuZ3RoLTFdOnZvaWQgMDt2YXIgYyx1O3MmJihpLmV4Y2VwdGlvbi52YWx1ZXM9KGM9T28oZSx0LG8sYS5vcmlnaW5hbEV4Y2VwdGlvbixyLGkuZXhjZXB0aW9uLnZhbHVlcyxzLDApLHU9bixjLm1hcChlPT4oZS52YWx1ZSYmKGUudmFsdWU9KDAsX24ueHYpKGUudmFsdWUsdSkpLGUpKSkpfWZ1bmN0aW9uIE9vKGUsdCxuLHIsbyxpLGEscyl7aWYoaS5sZW5ndGg+PW4rMSlyZXR1cm4gaTtsZXQgYz1bLi4uaV07aWYoKDAsY3IudEgpKHJbb10sRXJyb3IpKXtUbyhhLHMpO2NvbnN0IGk9ZSh0LHJbb10pLHU9Yy5sZW5ndGg7eG8oaSxvLHUscyksYz1PbyhlLHQsbixyW29dLG8sW2ksLi4uY10saSx1KX1yZXR1cm4gQXJyYXkuaXNBcnJheShyLmVycm9ycykmJnIuZXJyb3JzLmZvckVhY2goKHIsaSk9PntpZigoMCxjci50SCkocixFcnJvcikpe1RvKGEscyk7Y29uc3QgdT1lKHQsciksbD1jLmxlbmd0aDt4byh1LGBlcnJvcnNbJHtpfV1gLGwscyksYz1PbyhlLHQsbixyLG8sW3UsLi4uY10sdSxsKX19KSxjfWZ1bmN0aW9uIFRvKGUsdCl7ZS5tZWNoYW5pc209ZS5tZWNoYW5pc218fHt0eXBlOiJnZW5lcmljIixoYW5kbGVkOiEwfSxlLm1lY2hhbmlzbT17Li4uZS5tZWNoYW5pc20sLi4uIkFnZ3JlZ2F0ZUVycm9yIj09PWUudHlwZSYme2lzX2V4Y2VwdGlvbl9ncm91cDohMH0sZXhjZXB0aW9uX2lkOnR9fWZ1bmN0aW9uIHhvKGUsdCxuLHIpe2UubWVjaGFuaXNtPWUubWVjaGFuaXNtfHx7dHlwZToiZ2VuZXJpYyIsaGFuZGxlZDohMH0sZS5tZWNoYW5pc209ey4uLmUubWVjaGFuaXNtLHR5cGU6ImNoYWluZWQiLHNvdXJjZTp0LGV4Y2VwdGlvbl9pZDpuLHBhcmVudF9pZDpyfX1jb25zdCBJbz1mdW5jdGlvbigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtjb25zdCB0PWUubGltaXR8fDUsbj1lLmtleXx8ImNhdXNlIjtyZXR1cm57bmFtZToiTGlua2VkRXJyb3JzIixwcmVwcm9jZXNzRXZlbnQoZSxyLG8pe2NvbnN0IGk9by5nZXRPcHRpb25zKCk7QW8oYnIsaS5zdGFja1BhcnNlcixpLm1heFZhbHVlTGVuZ3RoLG4sdCxlLHIpfX19O2Z1bmN0aW9uIE5vKGUsdCxuLHIpe2NvbnN0IG89e2ZpbGVuYW1lOmUsZnVuY3Rpb246Ijxhbm9ueW1vdXM+Ij09PXQ/SW4ueUY6dCxpbl9hcHA6ITB9O3JldHVybiB2b2lkIDAhPT1uJiYoby5saW5lbm89biksdm9pZCAwIT09ciYmKG8uY29sbm89ciksb31jb25zdCBMbz0vXlxzKmF0IChcUys/KSg/OjooXGQrKSkoPzo6KFxkKykpXHMqJC9pLFBvPS9eXHMqYXQgKD86KC4rP1wpKD86IFxbLitcXSk/fC4qPykgP1woKD86YWRkcmVzcyBhdCApPyk/KD86YXN5bmMgKT8oKD86PGFub255bW91cz58Wy1hLXpdKzp8LipidW5kbGV8XC8pPy4qPykoPzo6KFxkKykpPyg/OjooXGQrKSk/XCk/XHMqJC9pLE1vPS9cKChcUyopKD86OihcZCspKSg/OjooXGQrKSlcKS8sUm89WzMwLGU9Pntjb25zdCB0PUxvLmV4ZWMoZSk7aWYodCl7Y29uc3RbLGUsbixyXT10O3JldHVybiBObyhlLEluLnlGLCtuLCtyKX1jb25zdCBuPVBvLmV4ZWMoZSk7aWYobil7aWYoblsyXSYmMD09PW5bMl0uaW5kZXhPZigiZXZhbCIpKXtjb25zdCBlPU1vLmV4ZWMoblsyXSk7ZSYmKG5bMl09ZVsxXSxuWzNdPWVbMl0sbls0XT1lWzNdKX1jb25zdFtlLHRdPVVvKG5bMV18fEluLnlGLG5bMl0pO3JldHVybiBObyh0LGUsblszXT8rblszXTp2b2lkIDAsbls0XT8rbls0XTp2b2lkIDApfX1dLERvPS9eXHMqKC4qPykoPzpcKCguKj8pXCkpPyg/Ol58QCk/KCg/OlstYS16XSspPzpcLy4qP3xcW25hdGl2ZSBjb2RlXF18W15AXSooPzpidW5kbGV8XGQrXC5qcyl8XC9bXHdcLS4gLz1dKykoPzo6KFxkKykpPyg/OjooXGQrKSk/XHMqJC9pLEZvPS8oXFMrKSBsaW5lIChcZCspKD86ID4gZXZhbCBsaW5lIFxkKykqID4gZXZhbC9pLGpvPVs1MCxlPT57Y29uc3QgdD1Eby5leGVjKGUpO2lmKHQpe2lmKHRbM10mJnRbM10uaW5kZXhPZigiID4gZXZhbCIpPi0xKXtjb25zdCBlPUZvLmV4ZWModFszXSk7ZSYmKHRbMV09dFsxXXx8ImV2YWwiLHRbM109ZVsxXSx0WzRdPWVbMl0sdFs1XT0iIil9bGV0IGU9dFszXSxuPXRbMV18fEluLnlGO3JldHVybltuLGVdPVVvKG4sZSksTm8oZSxuLHRbNF0/K3RbNF06dm9pZCAwLHRbNV0/K3RbNV06dm9pZCAwKX19XSxCbz1bUm8sam9dLFZvPSgwLEluLmdkKSguLi5CbyksVW89KGUsdCk9Pntjb25zdCBuPS0xIT09ZS5pbmRleE9mKCJzYWZhcmktZXh0ZW5zaW9uIikscj0tMSE9PWUuaW5kZXhPZigic2FmYXJpLXdlYi1leHRlbnNpb24iKTtyZXR1cm4gbnx8cj9bLTEhPT1lLmluZGV4T2YoIkAiKT9lLnNwbGl0KCJAIilbMF06SW4ueUYsbj9gc2FmYXJpLWV4dGVuc2lvbjoke3R9YDpgc2FmYXJpLXdlYi1leHRlbnNpb246JHt0fWBdOltlLHRdfSx6bz0idW5kZWZpbmVkIj09dHlwZW9mIF9fU0VOVFJZX0RFQlVHX198fF9fU0VOVFJZX0RFQlVHX18sSG89e307ZnVuY3Rpb24gJG8oZSl7Y29uc3QgdD1Ib1tlXTtpZih0KXJldHVybiB0O2xldCBuPVZyW2VdO2lmKEJuKG4pKXJldHVybiBIb1tlXT1uLmJpbmQoVnIpO2NvbnN0IHI9VnIuZG9jdW1lbnQ7aWYociYmImZ1bmN0aW9uIj09dHlwZW9mIHIuY3JlYXRlRWxlbWVudCl0cnl7Y29uc3QgdD1yLmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO3QuaGlkZGVuPSEwLHIuaGVhZC5hcHBlbmRDaGlsZCh0KTtjb25zdCBvPXQuY29udGVudFdpbmRvdztvJiZvW2VdJiYobj1vW2VdKSxyLmhlYWQucmVtb3ZlQ2hpbGQodCl9Y2F0Y2godCl7em8mJm1uLnZGLndhcm4oYENvdWxkIG5vdCBjcmVhdGUgc2FuZGJveCBpZnJhbWUgZm9yICR7ZX0gY2hlY2ssIGJhaWxpbmcgdG8gd2luZG93LiR7ZX06IGAsdCl9cmV0dXJuIG4/SG9bZV09bi5iaW5kKFZyKTpufWZ1bmN0aW9uIFlvKGUpe0hvW2VdPXZvaWQgMH1mdW5jdGlvbiBxbyhlKXtjb25zdCB0PVtdO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHQuc3BsaWNlKHQuaW5kZXhPZihlKSwxKVswXXx8UHJvbWlzZS5yZXNvbHZlKHZvaWQgMCl9cmV0dXJueyQ6dCxhZGQ6ZnVuY3Rpb24ocil7aWYoISh2b2lkIDA9PT1lfHx0Lmxlbmd0aDxlKSlyZXR1cm4oMCx1ci54ZykobmV3IHNyKCJOb3QgYWRkaW5nIFByb21pc2UgYmVjYXVzZSBidWZmZXIgbGltaXQgd2FzIHJlYWNoZWQuIikpO2NvbnN0IG89cigpO3JldHVybi0xPT09dC5pbmRleE9mKG8pJiZ0LnB1c2gobyksby50aGVuKCgpPT5uKG8pKS50aGVuKG51bGwsKCk9Pm4obykudGhlbihudWxsLCgpPT57fSkpLG99LGRyYWluOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdXIuVDIoKG4scik9PntsZXQgbz10Lmxlbmd0aDtpZighbylyZXR1cm4gbighMCk7Y29uc3QgaT1zZXRUaW1lb3V0KCgpPT57ZSYmZT4wJiZuKCExKX0sZSk7dC5mb3JFYWNoKGU9PnsoMCx1ci5YVykoZSkudGhlbigoKT0+ey0tb3x8KGNsZWFyVGltZW91dChpKSxuKCEwKSl9LHIpfSl9KX19fWZ1bmN0aW9uIFdvKGUsdCl7bGV0e3N0YXR1c0NvZGU6bixoZWFkZXJzOnJ9PXQsbz1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06RGF0ZS5ub3coKTtjb25zdCBpPXsuLi5lfSxhPXImJnJbIngtc2VudHJ5LXJhdGUtbGltaXRzIl0scz1yJiZyWyJyZXRyeS1hZnRlciJdO2lmKGEpZm9yKGNvbnN0IGUgb2YgYS50cmltKCkuc3BsaXQoIiwiKSl7Y29uc3RbdCxuLCwscl09ZS5zcGxpdCgiOiIsNSksYT1wYXJzZUludCh0LDEwKSxzPTFlMyooaXNOYU4oYSk/NjA6YSk7aWYobilmb3IoY29uc3QgZSBvZiBuLnNwbGl0KCI7IikpIm1ldHJpY19idWNrZXQiPT09ZSYmciYmIXIuc3BsaXQoIjsiKS5pbmNsdWRlcygiY3VzdG9tIil8fChpW2VdPW8rcyk7ZWxzZSBpLmFsbD1vK3N9ZWxzZSBzP2kuYWxsPW8rZnVuY3Rpb24oZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOkRhdGUubm93KCk7Y29uc3Qgbj1wYXJzZUludChgJHtlfWAsMTApO2lmKCFpc05hTihuKSlyZXR1cm4gMWUzKm47Y29uc3Qgcj1EYXRlLnBhcnNlKGAke2V9YCk7cmV0dXJuIGlzTmFOKHIpPzZlNDpyLXR9KHMsbyk6NDI5PT09biYmKGkuYWxsPW8rNmU0KTtyZXR1cm4gaX1mdW5jdGlvbiBHbyhlLHQpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpxbyhlLmJ1ZmZlclNpemV8fDY0KSxyPXt9O3JldHVybntzZW5kOmZ1bmN0aW9uKG8pe2NvbnN0IGk9W107aWYoS24obywodCxuKT0+e2NvbnN0IG89dHIobik7aWYoZnVuY3Rpb24oZSx0KXtsZXQgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06RGF0ZS5ub3coKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XXx8ZS5hbGx8fDB9KGUsdCk+bn0ocixvKSl7Y29uc3Qgcj1Rbyh0LG4pO2UucmVjb3JkRHJvcHBlZEV2ZW50KCJyYXRlbGltaXRfYmFja29mZiIsbyxyKX1lbHNlIGkucHVzaCh0KX0pLDA9PT1pLmxlbmd0aClyZXR1cm4oMCx1ci5YVykoe30pO2NvbnN0IGE9R24ob1swXSxpKSxzPXQ9PntLbihhLChuLHIpPT57Y29uc3Qgbz1RbyhuLHIpO2UucmVjb3JkRHJvcHBlZEV2ZW50KHQsdHIociksbyl9KX07cmV0dXJuIG4uYWRkKCgpPT50KHtib2R5OlhuKGEpfSkudGhlbihlPT4odm9pZCAwIT09ZS5zdGF0dXNDb2RlJiYoZS5zdGF0dXNDb2RlPDIwMHx8ZS5zdGF0dXNDb2RlPj0zMDApJiZobi5UJiZtbi52Ri53YXJuKGBTZW50cnkgcmVzcG9uZGVkIHdpdGggc3RhdHVzIGNvZGUgJHtlLnN0YXR1c0NvZGV9IHRvIHNlbnQgZXZlbnQuYCkscj1XbyhyLGUpLGUpLGU9Pnt0aHJvdyBzKCJuZXR3b3JrX2Vycm9yIiksZX0pKS50aGVuKGU9PmUsZT0+e2lmKGUgaW5zdGFuY2VvZiBzcilyZXR1cm4gaG4uVCYmbW4udkYuZXJyb3IoIlNraXBwZWQgc2VuZGluZyBldmVudCBiZWNhdXNlIGJ1ZmZlciBpcyBmdWxsLiIpLHMoInF1ZXVlX292ZXJmbG93IiksKDAsdXIuWFcpKHt9KTt0aHJvdyBlfSl9LGZsdXNoOmU9Pm4uZHJhaW4oZSl9fWZ1bmN0aW9uIFFvKGUsdCl7aWYoImV2ZW50Ij09PXR8fCJ0cmFuc2FjdGlvbiI9PT10KXJldHVybiBBcnJheS5pc0FycmF5KGUpP2VbMV06dm9pZCAwfWZ1bmN0aW9uIEtvKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTokbygiZmV0Y2giKSxuPTAscj0wO3JldHVybiBHbyhlLGZ1bmN0aW9uKG8pe2NvbnN0IGk9by5ib2R5Lmxlbmd0aDtuKz1pLHIrKztjb25zdCBhPXtib2R5Om8uYm9keSxtZXRob2Q6IlBPU1QiLHJlZmVycmVyUG9saWN5OiJvcmlnaW4iLGhlYWRlcnM6ZS5oZWFkZXJzLGtlZXBhbGl2ZTpuPD02ZTQmJnI8MTUsLi4uZS5mZXRjaE9wdGlvbnN9O2lmKCF0KXJldHVybiBZbygiZmV0Y2giKSwoMCx1ci54ZykoIk5vIGZldGNoIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSIpO3RyeXtyZXR1cm4gdChlLnVybCxhKS50aGVuKGU9PihuLT1pLHItLSx7c3RhdHVzQ29kZTplLnN0YXR1cyxoZWFkZXJzOnsieC1zZW50cnktcmF0ZS1saW1pdHMiOmUuaGVhZGVycy5nZXQoIlgtU2VudHJ5LVJhdGUtTGltaXRzIiksInJldHJ5LWFmdGVyIjplLmhlYWRlcnMuZ2V0KCJSZXRyeS1BZnRlciIpfX0pKX1jYXRjaChlKXtyZXR1cm4gWW8oImZldGNoIiksbi09aSxyLS0sKDAsdXIueGcpKGUpfX0pfWZ1bmN0aW9uIFpvKGUpe2NvbnN0IHQ9W0VuKCkseG4oKSxmbygpLHVvKCksU28oKSxJbygpLE5uKCksa28oKV07cmV0dXJuITEhPT1lLmF1dG9TZXNzaW9uVHJhY2tpbmcmJnQucHVzaCh5bygpKSx0fWZ1bmN0aW9uIFhvKCl7Y29uc3QgZT1mdW5jdGlvbigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtjb25zdCB0PXtkZWZhdWx0SW50ZWdyYXRpb25zOlpvKGUpLHJlbGVhc2U6InN0cmluZyI9PXR5cGVvZiBfX1NFTlRSWV9SRUxFQVNFX18/X19TRU5UUllfUkVMRUFTRV9fOklyLlNFTlRSWV9SRUxFQVNFJiZJci5TRU5UUllfUkVMRUFTRS5pZD9Jci5TRU5UUllfUkVMRUFTRS5pZDp2b2lkIDAsYXV0b1Nlc3Npb25UcmFja2luZzohMCxzZW5kQ2xpZW50UmVwb3J0czohMH07cmV0dXJuIG51bGw9PWUuZGVmYXVsdEludGVncmF0aW9ucyYmZGVsZXRlIGUuZGVmYXVsdEludGVncmF0aW9ucyx7Li4udCwuLi5lfX0oYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9KTtpZighZS5za2lwQnJvd3NlckV4dGVuc2lvbkNoZWNrJiZmdW5jdGlvbigpe2NvbnN0IGU9dm9pZCAwIT09SXIud2luZG93JiZJcjtpZighZSlyZXR1cm4hMTtjb25zdCB0PWVbZS5jaHJvbWU/ImNocm9tZSI6ImJyb3dzZXIiXSxuPXQmJnQucnVudGltZSYmdC5ydW50aW1lLmlkLHI9SXIubG9jYXRpb24mJklyLmxvY2F0aW9uLmhyZWZ8fCIiLG89ISFuJiZJcj09PUlyLnRvcCYmWyJjaHJvbWUtZXh0ZW5zaW9uOiIsIm1vei1leHRlbnNpb246IiwibXMtYnJvd3Nlci1leHRlbnNpb246Iiwic2FmYXJpLXdlYi1leHRlbnNpb246Il0uc29tZShlPT5yLnN0YXJ0c1dpdGgoYCR7ZX0vL2ApKSxpPXZvaWQgMCE9PWUubnc7cmV0dXJuISFuJiYhbyYmIWl9KCkpcmV0dXJuIHZvaWQoMCxtbi5wcSkoKCk9Pntjb25zb2xlLmVycm9yKCJbU2VudHJ5XSBZb3UgY2Fubm90IHJ1biBTZW50cnkgdGhpcyB3YXkgaW4gYSBicm93c2VyIGV4dGVuc2lvbiwgY2hlY2s6IGh0dHBzOi8vZG9jcy5zZW50cnkuaW8vcGxhdGZvcm1zL2phdmFzY3JpcHQvYmVzdC1wcmFjdGljZXMvYnJvd3Nlci1leHRlbnNpb25zLyIpfSk7dnImJihqbigpfHxtbi52Ri53YXJuKCJObyBGZXRjaCBBUEkgZGV0ZWN0ZWQuIFRoZSBTZW50cnkgU0RLIHJlcXVpcmVzIGEgRmV0Y2ggQVBJIGNvbXBhdGlibGUgZW52aXJvbm1lbnQgdG8gc2VuZCBldmVudHMuIFBsZWFzZSBhZGQgYSBGZXRjaCBBUEkgcG9seWZpbGwuIikpO2NvbnN0IHQ9ey4uLmUsc3RhY2tQYXJzZXI6KDAsSW4udmspKGUuc3RhY2tQYXJzZXJ8fFZvKSxpbnRlZ3JhdGlvbnM6eW4oZSksdHJhbnNwb3J0OmUudHJhbnNwb3J0fHxLb307cmV0dXJuIFZuKE1yLHQpfXZhciBKbz1uKDM0ODApO2NvbnN0IGVpPW5ldyBNYXAsdGk9bmV3IFNldDtmdW5jdGlvbiBuaShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihEbi5PLl9zZW50cnlNb2R1bGVNZXRhZGF0YSlmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhEbi5PLl9zZW50cnlNb2R1bGVNZXRhZGF0YSkpe2NvbnN0IG49RG4uTy5fc2VudHJ5TW9kdWxlTWV0YWRhdGFbdF07aWYodGkuaGFzKHQpKWNvbnRpbnVlO3RpLmFkZCh0KTtjb25zdCByPWUodCk7Zm9yKGNvbnN0IGUgb2Ygci5yZXZlcnNlKCkpaWYoZS5maWxlbmFtZSl7ZWkuc2V0KGUuZmlsZW5hbWUsbik7YnJlYWt9fX0oZSksZWkuZ2V0KHQpfWNvbnN0IHJpPWU9Pih7bmFtZToiVGhpcmRQYXJ0eUVycm9yc0ZpbHRlciIsc2V0dXAoZSl7ZS5vbigiYmVmb3JlRW52ZWxvcGUiLGU9PntLbihlLChlLHQpPT57aWYoImV2ZW50Ij09PXQpe2NvbnN0IHQ9QXJyYXkuaXNBcnJheShlKT9lWzFdOnZvaWQgMDt0JiYoIWZ1bmN0aW9uKGUpe3RyeXtlLmV4Y2VwdGlvbi52YWx1ZXMuZm9yRWFjaChlPT57aWYoZS5zdGFja3RyYWNlKWZvcihjb25zdCB0IG9mIGUuc3RhY2t0cmFjZS5mcmFtZXN8fFtdKWRlbGV0ZSB0Lm1vZHVsZV9tZXRhZGF0YX0pfWNhdGNoKGUpe319KHQpLGVbMV09dCl9fSl9KSxlLm9uKCJhcHBseUZyYW1lTWV0YWRhdGEiLHQ9PntpZih0LnR5cGUpcmV0dXJuOyFmdW5jdGlvbihlLHQpe3RyeXt0LmV4Y2VwdGlvbi52YWx1ZXMuZm9yRWFjaCh0PT57aWYodC5zdGFja3RyYWNlKWZvcihjb25zdCBuIG9mIHQuc3RhY2t0cmFjZS5mcmFtZXN8fFtdKXtpZighbi5maWxlbmFtZXx8bi5tb2R1bGVfbWV0YWRhdGEpY29udGludWU7Y29uc3QgdD1uaShlLG4uZmlsZW5hbWUpO3QmJihuLm1vZHVsZV9tZXRhZGF0YT10KX19KX1jYXRjaChlKXt9fShlLmdldE9wdGlvbnMoKS5zdGFja1BhcnNlcix0KX0pfSxwcm9jZXNzRXZlbnQodCl7Y29uc3Qgbj1mdW5jdGlvbihlKXtjb25zdCB0PSgwLEluLlJWKShlKTtpZighdClyZXR1cm47cmV0dXJuIHQuZmlsdGVyKGU9PiEhZS5maWxlbmFtZSkubWFwKGU9PmUubW9kdWxlX21ldGFkYXRhP09iamVjdC5rZXlzKGUubW9kdWxlX21ldGFkYXRhKS5maWx0ZXIoZT0+ZS5zdGFydHNXaXRoKG9pKSkubWFwKGU9PmUuc2xpY2Uob2kubGVuZ3RoKSk6W10pfSh0KTtpZihuKXtpZihuWyJkcm9wLWVycm9yLWlmLWNvbnRhaW5zLXRoaXJkLXBhcnR5LWZyYW1lcyI9PT1lLmJlaGF2aW91cnx8ImFwcGx5LXRhZy1pZi1jb250YWlucy10aGlyZC1wYXJ0eS1mcmFtZXMiPT09ZS5iZWhhdmlvdXI/InNvbWUiOiJldmVyeSJdKHQ9PiF0LnNvbWUodD0+ZS5maWx0ZXJLZXlzLmluY2x1ZGVzKHQpKSkpe2lmKCJkcm9wLWVycm9yLWlmLWNvbnRhaW5zLXRoaXJkLXBhcnR5LWZyYW1lcyI9PT1lLmJlaGF2aW91cnx8ImRyb3AtZXJyb3ItaWYtZXhjbHVzaXZlbHktY29udGFpbnMtdGhpcmQtcGFydHktZnJhbWVzIj09PWUuYmVoYXZpb3VyKXJldHVybiBudWxsO3QudGFncz17Li4udC50YWdzLHRoaXJkX3BhcnR5X2NvZGU6ITB9fX1yZXR1cm4gdH19KTtjb25zdCBvaT0iX3NlbnRyeUJ1bmRsZXJQbHVnaW5BcHBLZXk6IixpaT17YXR0YWNoUmVkdXhTdGF0ZTohMCxhY3Rpb25UcmFuc2Zvcm1lcjplPT5lLHN0YXRlVHJhbnNmb3JtZXI6ZT0+ZXx8bnVsbH07Y29uc3QgYWk9ZT0+eyFmdW5jdGlvbihlKXtjb25zdCB0PXsuLi5lfTt5cih0LCJyZWFjdCIpLCgwLHBuLm8pKCJyZWFjdCIse3ZlcnNpb246Sm8udmVyc2lvbn0pLFhvKHQpfSh7ZHNuOiJodHRwczovLzYxMWY1YjdkNjJhMDQ5YjY4ZWQ3MjIyMTNlMGFmYmUzQHNlbnRyeS50aWRpby5jby8xNSIscmVsZWFzZTplLGlnbm9yZUVycm9yczpbIlR5cGVFcnJvcjogTG9hZCBmYWlsZWQiLCJUeXBlRXJyb3I6IEZhaWxlZCB0byBmZXRjaCIsIlR5cGVFcnJvcjogTmV0d29ya0Vycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBmZXRjaCByZXNvdXJjZS4iLCJPYmplY3QgTm90IEZvdW5kIE1hdGNoaW5nIElkIiwiQWJvcnRFcnJvcjogRmV0Y2ggaXMgYWJvcnRlZCJdLGF1dG9TZXNzaW9uVHJhY2tpbmc6ITEsbWF4QnJlYWRjcnVtYnM6MzAsYWxsb3dVcmxzOlsvdGlkaW8vXSxub3JtYWxpemVNYXhCcmVhZHRoOjUwMCxpbnRlZ3JhdGlvbnM6W3JpKHtmaWx0ZXJLZXlzOlsidGlkaW8tc2VudHJ5LXdpZGdldC1hcHAta2V5Il0sYmVoYXZpb3VyOiJhcHBseS10YWctaWYtZXhjbHVzaXZlbHktY29udGFpbnMtdGhpcmQtcGFydHktZnJhbWVzIn0pLHVvKHtjb25zb2xlOiExLGRvbTohMCxmZXRjaDohMCxoaXN0b3J5OiEwLHhocjohMH0pXX0pfSxzaT1mdW5jdGlvbihlKXtjb25zdCB0PXsuLi5paSwuLi5lfTtyZXR1cm4gZT0+KG4scik9Pnt0LmF0dGFjaFJlZHV4U3RhdGUmJigwLGtuLm02KSgpLmFkZEV2ZW50UHJvY2Vzc29yKChlLHQpPT57dHJ5e3ZvaWQgMD09PWUudHlwZSYmInJlZHV4Ij09PWUuY29udGV4dHMuc3RhdGUuc3RhdGUudHlwZSYmKHQuYXR0YWNobWVudHM9Wy4uLnQuYXR0YWNobWVudHN8fFtdLHtmaWxlbmFtZToicmVkdXhfc3RhdGUuanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeShlLmNvbnRleHRzLnN0YXRlLnN0YXRlLnZhbHVlKX1dKX1jYXRjaChlKXt9cmV0dXJuIGV9KTtyZXR1cm4gZSgoZSxyKT0+e2NvbnN0IG89bihlLHIpLGk9KDAsa24ubzUpKCksYT10LmFjdGlvblRyYW5zZm9ybWVyKHIpO251bGwhPWEmJnJvKHtjYXRlZ29yeToicmVkdXguYWN0aW9uIixkYXRhOmEsdHlwZToiaW5mbyJ9KTtjb25zdCBzPXQuc3RhdGVUcmFuc2Zvcm1lcihvKTtpZihudWxsIT1zKXtjb25zdCBlPSgwLGtuLktVKSgpLHQ9ZSYmZS5nZXRPcHRpb25zKCksbj10JiZ0Lm5vcm1hbGl6ZURlcHRofHwzLHI9e3N0YXRlOnt0eXBlOiJyZWR1eCIsdmFsdWU6c319OygwLEFuLm15KShyLCJfX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX18iLDMrbiksaS5zZXRDb250ZXh0KCJzdGF0ZSIscil9ZWxzZSBpLnNldENvbnRleHQoInN0YXRlIixudWxsKTtjb25zdHtjb25maWd1cmVTY29wZVdpdGhTdGF0ZTpjfT10O3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBjJiZjKGksbyksb30scil9fSh7YXR0YWNoUmVkdXhTdGF0ZTohMX0pO3ZhciBjaT1uKDY1OTMpLHVpPW4ubihjaSksbGk9bigzOTUyKSxkaT1uKDE3OTcpLGZpPW4oNDc2Nyk7Y29uc3QgcGk9ZT0+Wy4uLmUuc3BsaXQoIiAiKS5zbGljZSgwLDUpLmpvaW4oIiAiKV0uc2xpY2UoMCwyNTUpLmpvaW4oIiIpO2Z1bmN0aW9uIGhpKGUpe2xldHtlbWl0UXVldWU6dCxjbG9zZUNvbm5lY3Rpb246bn09ZTtyZXR1cm4gZT0+e2xldHtnZXRTdGF0ZTpyLGRpc3BhdGNoOm99PWU7Y29uc3QgaT10KHIsbyksYT11aSgpKGksNTAwLHttYXhXYWl0OjUwMH0pO3JldHVybiBlPT50PT57c3dpdGNoKHQudHlwZSl7Y2FzZSBYZS5lNzc6e2lmKCJiYW5uZWQiPT09dC5kYXRhLnZpc2l0b3Jfc3RhdHVzfHwiYmxhY2tsaXN0ZWQiPT09dC5kYXRhLnZpc2l0b3Jfc3RhdHVzKXJldHVybiBuKCksdC5jYWxsYmFjayghMSksITE7Y29uc3Qgcj10LmRhdGEud2lkZ2V0X2RhdGE/LmludGVncmF0aW9ucz8ubWFwKGU9PmUucGxhdGZvcm0pOygwLHJ0LmkpKHtpbnRlZ3JhdGlvbnNQbGF0Zm9ybXM6cixlbWl0Oml9KTtjb25zdHt1bnJlYWRfbWVzc2FnZXM6bz0wfT10LmRhdGE7bz4wJiZpKEplLlVIKTtjb25zdCBhPWUodCk7cmV0dXJuIHQuY2FsbGJhY2soITApLGF9Y2FzZSBYZS5Tcjg6e2NvbnN0e21lc3NhZ2VzVG9NZXJnZTpuLGxhc3RNZXNzYWdlSWQ6b309dCxhPXIoKSx7aXNQYWdlVmlzaWJsZTpzfT1hLGM9KDAsanQuUFkpKGEpJiZzO2lmKG4ubGVuZ3RoPjApe2NvbnN0IGU9bltuLmxlbmd0aC0xXS5pZDtlIT09byYmYyYmaShKZS5mTCxlKX1yZXR1cm4gZSh0KX1jYXNlIFhlLnBVMTppZih0LmVtaXQpe2EuY2FuY2VsKCksaShKZS5Pcyx0LnBheWxvYWQpO2NvbnN0IGU9cigpLHthc3NpZ25lZE9wZXJhdG9yczpufT1lLG89KDAsanQuQW8pKGUpLHM9by5sZW5ndGgsYz1uLmxlbmd0aD4wOygwLHJ0LnMpKCkudHJhY2tFdmVudE9uY2Uoe2V2ZW50TmFtZToidGlkaW9fY29udmVyc2F0aW9uX3N0YXJ0ZWQiLHBhcmFtczp7dmlzaXRvcl9pZDooMCxqdC5ZQSkoZSksc291cmNlOnQucGF5bG9hZC5zZW5kZXIsb3BlcmF0b3Jfc3RhdHVzOigwLGp0LnZMKShlKX19KTt0cnl7Y29uc3Qgbj1zPjAmJnQucGF5bG9hZC50aW1lX3NlbnQtb1tzLTFdLnRpbWVfc2VudD44NjQwMDshYyYmbiYmKDAscnQucykoKS50cmFja0V2ZW50KHtldmVudE5hbWU6InRpZGlvX2NvbnZlcnNhdGlvbl9zdGFydGVkIixwYXJhbXM6e3Zpc2l0b3JfaWQ6KDAsanQuWUEpKGUpLHNvdXJjZTp0LnBheWxvYWQuc2VuZGVyLG9wZXJhdG9yX3N0YXR1czooMCxqdC52TCkoZSl9fSl9Y2F0Y2h7fX1yZXR1cm4gZSh0KTtjYXNlIFhlLk1kajp7Y29uc3R7dXBkYXRlRGF0YTpufT10O3JldHVybiBuJiYoaShKZS5VNSxuKSwoMCxydC5zKSgpLnRyYWNrRXZlbnQoe2V2ZW50TmFtZToidGlkaW9fcHJlY2hhdF9maW5pc2hlZCIscGFyYW1zOntlbWFpbDpCb29sZWFuKG4uZW1haWwpLHBob25lOkJvb2xlYW4obi5waG9uZSksbmFtZTpCb29sZWFuKG4ubmFtZSksY29uc2VudF9naXZlbjpCb29sZWFuKCJzdWJzY3JpYmVkIj09PW4uZW1haWxDb25zZW50Py52YWx1ZSl9fSkpLGUodCl9Y2FzZSBYZS5xMW06e2NvbnN0e2VtYWlsOm59PXQ7cmV0dXJuIG4mJmkoSmUuVTUse2VtYWlsOm59KSxlKHQpfWNhc2UgWGUuSmVOOntjb25zdHtlbWFpbDpuLG1lc3NhZ2U6cn09dDtyZXR1cm4gaShKZS5GYyx7dGlja2V0Ontjb250YWN0RW1haWw6bixzdWJqZWN0OnBpKHIpfSxtZXNzYWdlOntjb250ZW50OnJ9fSksZSh0KX1jYXNlIFhlLmU2ZTp7Y29uc3Qgbj1yKCksbz0oMCxqdC5ZQSkobik7cmV0dXJuIHQub3Blbj8oMCxydC5zKSgpLnRyYWNrRXZlbnQoe2V2ZW50TmFtZToidGlkaW9fd2lkZ2V0X29wZW4iLHBhcmFtczp7dmlzaXRvcl9pZDpvfX0pOigwLHJ0LnMpKCkudHJhY2tFdmVudCh7ZXZlbnROYW1lOiJ0aWRpb193aWRnZXRfY2xvc2UiLHBhcmFtczp7dmlzaXRvcl9pZDpvfX0pLGUodCl9Y2FzZSBYZS5xZWI6e2NvbnN0IG49ZSh0KSxvPXIoKTsiYWx3YXlzT25saW5lIj09PXQubWVzc2FnZS50eXBlJiYoMCxydC5zKSgpLnRyYWNrRXZlbnQoe2V2ZW50TmFtZToidGlkaW9fY29udmVyc2F0aW9uX3JlcGx5IixwYXJhbXM6e3Zpc2l0b3JfaWQ6KDAsanQuWUEpKG8pLHNvdXJjZToib2ZmbGluZV9tZXNzYWdlIixtZXNzYWdlX3R5cGU6dC5tZXNzYWdlLnR5cGUsb3BlcmF0b3Jfc3RhdHVzOigwLGp0LnZMKShvKX19KTtjb25zdCBpPSgwLGp0LkFvKShvKSxhPWkubGVuZ3RoLHM9YT4wJiZ0Lm1lc3NhZ2UudGltZV9zZW50LWlbYS0xXS50aW1lX3NlbnQ+ODY0MDA7cmV0dXJuIHQubWVzc2FnZS5zZW5kZXIhPT1vdC5CZy5vcGVyYXRvcnx8ImFsd2F5c09ubGluZSI9PT10Lm1lc3NhZ2UudHlwZXx8MCE9PWEmJiFzfHwoMCxydC5zKSgpLnRyYWNrRXZlbnQoe2V2ZW50TmFtZToidGlkaW9fY29udmVyc2F0aW9uX3N0YXJ0ZWQiLHBhcmFtczp7dmlzaXRvcl9pZDooMCxqdC5ZQSkobyksc291cmNlOnQubWVzc2FnZS5zZW5kZXIsb3BlcmF0b3Jfc3RhdHVzOigwLGp0LnZMKShvKX19KSx0Lm1lc3NhZ2Uuc2VuZGVyIT09b3QuQmcuYm90fHwwIT09YSYmIXN8fCgwLHJ0LnMpKCkudHJhY2tFdmVudCh7ZXZlbnROYW1lOiJ0aWRpb19jb252ZXJzYXRpb25fc3RhcnRlZCIscGFyYW1zOnt2aXNpdG9yX2lkOigwLGp0LllBKShvKSxzb3VyY2U6ImNoYXRib3QiLGNoYXRib3RfbmFtZTp0Lm1lc3NhZ2UuY2hhdF9ib3RfbmFtZSxtZXNzYWdlX3R5cGU6dC5tZXNzYWdlLnR5cGUsb3BlcmF0b3Jfc3RhdHVzOigwLGp0LnZMKShvKX19KSxufWNhc2UgWGUuT2RoOnJldHVybiBpKEplLldCLHQucmF0aW5nSXNHb29kKSxlKHQpO2Nhc2UgWGUuR2dvOnJldHVybiBhKEplLnM2LHQubWVzc2FnZSksZSh0KTtjYXNlIFhlLmEkUTpyZXR1cm4gaShKZS5DVSx0LmNvbW1lbnQpLGUodCk7Y2FzZSBYZS53UHY6e2NvbnN0IG49ZSh0KSx7bWVzc2FnZXM6b309cigpLHM9by5maW5kKGU9PmUub3JpZ2luYWxNZXNzYWdlSWQ9PT10Lm1lc3NhZ2VJZCk7cmV0dXJuIHMmJihhLmNhbmNlbCgpLHdpbmRvdz8udGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJtZXNzYWdlRnJvbVZpc2l0b3IiLHttZXNzYWdlOnQudXJsLGZyb21Cb3Q6ITEsdHlwZToidXBsb2FkIn0pLGkoSmUuT3MscykpLG59Y2FzZSBYZS5fd1c6cmV0dXJuIGEuY2FuY2VsKCksaShKZS5Pcyx7Li4udC5tZXNzYWdlLGNvbnRlbnQ6e3R5cGU6dC5tZXNzYWdlLnR5cGUsZm9ybVJlc3BvbnNlOnQubWVzc2FnZS5mb3JtUmVzcG9uc2UsbWVzc2FnZToiIn19KSxlKHQpO2Nhc2UgWGUuZ2Z0OnJldHVybiB0LmVtaXQmJmkoSmUuV0ssdC51cGRhdGVEYXRhKSxlKHQpO2Nhc2UgWGUuQmZjOnJldHVybiBpKEplLkRqLHQudGFncyksZSh0KTtjYXNlIFhlLlM4VzpyZXR1cm4gaShKZS5XSyx7cHJvcGVydGllczp0LnByb3BlcnRpZXN9KSxlKHQpO2Nhc2UgWGUuX0tyOnJldHVybiBpKEplLnVzLHQuZXZlbnROYW1lLHQuZXZlbnREYXRhLHQuc3VjY2Vzc0NhbGxiYWNrKSxlKHQpO2Nhc2UgWGUuYlhBOntjb25zdHtpZHM6bn09dDtyZXR1cm4gaShKZS55VixuKSxlKHQpfWNhc2UgWGUuUXVkOnJldHVybiBpKEplLkopLGUodCk7Y2FzZSBYZS5pVGQ6e2koSmUuVEEpO2NvbnN0IG49cigpO3JldHVybigwLHJ0LnMpKCkudHJhY2tFdmVudE9uY2VJbkludGVydmFsKHtldmVudE5hbWU6InRpZGlvX3dpZGdldF92aXNpdG9yX3N0YXJ0ZWRfYm90IixwYXJhbXM6e3Zpc2l0b3JfaWQ6KDAsanQuWUEpKG4pfX0pLGUodCl9Y2FzZSBYZS5MYVk6cmV0dXJuIGkoSmUuTEssdC51cmwpLGUodCk7Y2FzZSBYZS51Zms6aWYodC5zdGF0dXMpe2NvbnN0IGU9cigpOygwLHJ0LnMpKCkudHJhY2tFdmVudCh7ZXZlbnROYW1lOiJ0aWRpb193aWRnZXRfbXV0ZV9ub3RpZmljYXRpb25zIixwYXJhbXM6e3Zpc2l0b3JfaWQ6KDAsanQuWUEpKGUpfX0pLGkoSmUuWFAscm4uWC5ub3RpZmljYXRpb25zVHVybmVkT2ZmKX1lbHNlIGkoSmUuWFAscm4uWC5ub3RpZmljYXRpb25zVHVybmVkT24pO3JldHVybiBlKHQpO2Nhc2UgWGUuam5rOnJldHVybiB0LnZpZXc9PT1SdC5sLmZseSYmaShKZS5YUCxybi5YLmZseU1lc3NhZ2VEaXNwbGF5ZWQpLGUodCk7Y2FzZSBYZS5NbXo6cmV0dXJuIG4oKSxlKHQpO2Nhc2UgWGUuWEM1OnJldHVybiBpKHQuY2FsbGJhY2ssbiksZSh0KTtjYXNlIFhlLk1CVjpyZXR1cm4gaShKZS5PdCksZSh0KTtjYXNlIFhlLlJTaTpyZXR1cm4gaShKZS52Rix0LnBhcmFtcyksZSh0KTtjYXNlIFhlLl9QdzpyZXR1cm4gaShKZS5qXyx0LnBhcmFtcyksZSh0KTtjYXNlIFhlLnJmRTpyZXR1cm4gaShKZS5mWSx0LnBhcmFtcyksZSh0KTtjYXNlIFhlLkdTQTpyZXR1cm4gaShKZS5zRCx0LnBhcmFtcyksZSh0KTtjYXNlIFhlLmdwTjpyZXR1cm4gdC5zdGF0dXMmJmkoSmUuWFAscm4uWC53aWRnZXRMb2FkZWQpLGUodCk7Y2FzZSBYZS5sMm86e2NvbnN0e21vZGFsOm59PXQ7cmV0dXJuIG4mJmkoSmUuWFAsInByZWNoYXQiPT09bj9ybi5YLnByZWNoYXRPcGVuZWQ6cm4uWC5hbHdheXNPbmxpbmVPcGVuZWQpLGUodCl9Y2FzZSBYZS5IVEY6cmV0dXJuITA9PT10LnN0YXR1cyYmaShKZS5YUCxybi5YLmVtb2ppUGFuZWxPcGVuZWQpLGUodCk7Y2FzZSBYZS5saXk6cmV0dXJuIGkoSmUuWFAsdC5zdGF0dXM/cm4uWC50ZXh0SW5wdXREaXNhYmxlZDpybi5YLnRleHRJbnB1dEVuYWJsZWQpLGUodCk7Y2FzZSBYZS56bkI6cmV0dXJuIGkoSmUuWFAsdC5ldmVudCx0LmFkZGl0aW9uYWxEYXRhKSxlKHQpO2Nhc2UgWGUuZFA2OnJldHVybigwLGxpLk9BKSgpLnRoZW4oZT0+e2koSmUubnYse2RhdGE6ZX0pfSkuY2F0Y2goZT0+eygwLHYuc1EpKCJTaG9waWZ5IENhcnQgcmVxdWVzdCBlcnJvciIse21lc3NhZ2U6ZT8ubWVzc2FnZX0pfSksZSh0KTtjYXNlIFhlLmdDYjp0cnl7KDAsbGkuQjcpKCkuY2F0Y2goZT0+eygwLHYuc1EpKCJTaG9waWZ5IENhcnQgVXBkYXRlIHJlcXVlc3QgZXJyb3IiLHttZXNzYWdlOmU/Lm1lc3NhZ2V9KX0pfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBFcnJvciYmKDAsdi5zUSkoIlNob3BpZnkgdXBkYXRlIHZpc2l0b3IgaWQgZXJyb3IgIix7bWVzc2FnZTplLm1lc3NhZ2V9KX1yZXR1cm4gZSh0KTtjYXNlIFhlLm9kSTpyZXR1cm4gaShKZS5Bbyx0LnJhdGluZ0lkLHQucmF0aW5nKSxlKHQpO2Nhc2UgWGUuTko1OntpKEplLmF1LHQucmF0aW5nLHQudGhyZWFkU291cmNlPz8iY29udmVyc2F0aW9uIix0LnRocmVhZElkLHQubWVzc2FnZUlkKTtjb25zdCBuPXIoKTtyZXR1cm4oMCxydC5zKSgpLnRyYWNrRXZlbnQoe2V2ZW50TmFtZToidGlkaW9fY29udmVyc2F0aW9uX3JhdGVkIixwYXJhbXM6e3RocmVhZF9pZDp0LnRocmVhZElkLHZpc2l0b3JfaWQ6KDAsanQuWUEpKG4pLHJhdGluZzp0LnJhdGluZ319KSx3aW5kb3c/LnRpZGlvQ2hhdEFwaT8udHJpZ2dlcigibWVzc2FnZUZyb21WaXNpdG9yIix7bWVzc2FnZTpTdHJpbmcodC5yYXRpbmcpLGZyb21Cb3Q6ITEsdHlwZToic2F0aXNmYWN0aW9uX3N1cnZleV9yYXRpbmcifSksZSh0KX1jYXNlIFhlLlNSJDpyZXR1cm4gaShKZS5QbSx0LmNvbW1lbnQsdC50aHJlYWRTb3VyY2U/PyJjb252ZXJzYXRpb24iLHQudGhyZWFkSWQsdC5tZXNzYWdlSWQpLGUodCk7Y2FzZSBYZS5LM2w6cmV0dXJuIGkoSmUuVHQsdC5yYXRpbmcpLGUodCk7Y2FzZSBYZS5CdFc6cmV0dXJuIGkoSmUuT2UsdC5yYXRpbmcpLGUodCk7Y2FzZSBYZS5MM3Q6cmV0dXJuIGkoSmUuX1ksdC5ldmVudERhdGEpLGUodCk7Y2FzZSBYZS5SQjE6cmV0dXJuIGkoSmUuYmgpLGUodCk7Y2FzZSBYZS5keXI6cmV0dXJuIGkoSmUuQWosdC5wYXlsb2FkKSxlKHQpO2Nhc2UgWGUuRkhZOnJldHVybiBpKEplLm5BLHQucGF5bG9hZCksZSh0KTtjYXNlIFhlLlFQRzpyZXR1cm4gaShKZS51OCx7cHJvZHVjdElkOnQucHJvZHVjdElkLGNoYXRCb3RJZDp0LmNoYXRCb3RJZCxjdGE6dC5jdGEscHJpY2U6dC5wcmljZSxjdXJyZW5jeTp0LmN1cnJlbmN5fSksZSh0KTtjYXNlIFhlLnlXMzpyZXR1cm4gaShKZS5RRix7cHJvZHVjdElkOnQucHJvZHVjdElkLGN0YTp0LmN0YSxwcmljZTp0LnByaWNlLGN1cnJlbmN5OnQuY3VycmVuY3l9KSxlKHQpO2Nhc2UgWGUubndqOnJldHVybiBpKEplLmZMKSxlKHQpO2Nhc2UgWGUud0ZYOntjb25zdCBuPXIoKTtyZXR1cm4oMCxnLnduKShuLnZpc2l0b3JDdXJyZW5jeURhdGEsdC5jdXJyZW5jeURhdGEpfHxpKEplLldmLHQuY3VycmVuY3lEYXRhKSxlKHQpfWNhc2UgWGUuQ1E1Ontjb25zdCBuPWUodCksaT1yKCkse3B1YmxpY0tleTphLHZpc2l0b3I6c309aTtyZXR1cm4gYSYmcy5pZCYmKGFzeW5jKGUsdCxuLHIsbyk9PntpZihuJiZyKXRyeXtjb25zdCBpPSgwLG90LlFDKSh0Lm5hbWUpO2lmKCFpfHwtMT09PW90LlVPLmluZGV4T2YoaSkpe2NvbnN0IHQ9ZGkuJG0uRVhURU5TSU9OX05PVF9TVVBQT1JURUQsbj0oMCxmaS54bSkodCk7cmV0dXJuIHZvaWQgbygoMCxYZS5tTykoZSwiZXJyb3IiLHtlcnJvck1lc3NhZ2U6bn0pKX10cnl7YXdhaXQoMCxmaS5HZykoe2ZpbGVTaXplOnQuc2l6ZSxwdWJsaWNLZXk6bix2aXNpdG9ySWQ6cn0pfWNhdGNoKHQpe2xldCBuO249dCBpbnN0YW5jZW9mIEVycm9yP3QubWVzc2FnZTpkaS4kbS5HRU5FUklDX1VQTE9BRF9FUlJPUjtjb25zdCByPSgwLGZpLnhtKShuLHQgaW5zdGFuY2VvZiBFcnJvcj90LmNhdXNlOnZvaWQgMCk7cmV0dXJuIHZvaWQgbygoMCxYZS5tTykoZSwiZXJyb3IiLHtlcnJvck1lc3NhZ2U6cn0pKX1jb25zdCBhPWF3YWl0KDAsZmkuWXQpKHtmaWxlOnQscHVibGljS2V5Om4sdmlzaXRvcklkOnJ9KTtpZihhLmlzRXJyb3Ipe2xldCB0LG47c3dpdGNoKGEuc3RhdHVzKXtjYXNlIDA6dD1kaS4kbS5HRU5FUklDX1VQTE9BRF9FUlJPUjticmVhaztjYXNlIDQxMzp7dD1kaS4kbS5GSUxFX1RPT19CSUc7Y29uc3QgZT0oMCxkaS5vYikoYS5kYXRhKTtudWxsIT09ZSYmKG49e2xpbWl0SW5NQjplfSk7YnJlYWt9Y2FzZSA0MjI6dD1kaS4kbS5FWFRFTlNJT05fTk9UX1NVUFBPUlRFRDticmVhaztkZWZhdWx0OigwLHYuc1EpKGBQZW5kaW5nQXR0YWNobWVudDogdXBsb2FkIGZhaWxlZCB3aXRoIHN0YXR1cyAke2Euc3RhdHVzfWAse3Jlc3BvbnNlOmEuZGF0YX0pLHQ9ZGkuJG0uR0VORVJJQ19VUExPQURfRVJST1J9Y29uc3Qgcj0oMCxmaS54bSkodCxuKTtvKCgwLFhlLm1PKShlLCJlcnJvciIse2Vycm9yTWVzc2FnZTpyfSkpfWVsc2UgbygoMCxYZS5tTykoZSwidXBsb2FkZWQiLHt1cGxvYWRlZFVybDphLmRhdGEudXJsLHVwbG9hZGVkVGh1bWI6YS5kYXRhLnRodW1iPy5tZWRpdW18fCIifSkpfWNhdGNoe2NvbnN0IHQ9KDAsZmkueG0pKGRpLiRtLkdFTkVSSUNfVVBMT0FEX0VSUk9SKTtvKCgwLFhlLm1PKShlLCJlcnJvciIse2Vycm9yTWVzc2FnZTp0fSkpfX0pKHQucGF5bG9hZC5pZCx0LnBheWxvYWQuZmlsZSxhLHMuaWQsbyksbn1jYXNlIFhlLlFPTjp7Y29uc3Qgbj1lKHQpLHtwZW5kaW5nQXR0YWNobWVudHM6c309cigpLGM9cy5maWx0ZXIoZT0+InVwbG9hZGVkIj09PWUudXBsb2FkU3RhdHVzKTtyZXR1cm4gYy5sZW5ndGg+MCYmKGEuY2FuY2VsKCksYy5mb3JFYWNoKGU9Pntjb25zdCB0PSgwLG90LnBRKShlKTtvKCgwLFhlLkc4YykodC5jb250ZW50LCExKSksd2luZG93Py50aWRpb0NoYXRBcGk/LnRyaWdnZXIoIm1lc3NhZ2VGcm9tVmlzaXRvciIse21lc3NhZ2U6dC5jb250ZW50LGZyb21Cb3Q6ITEsdHlwZToidXBsb2FkIn0pLGkoSmUuT3MsdCl9KSxvKCgwLFhlLkh0XykoKSkpLG59ZGVmYXVsdDpyZXR1cm4gZSh0KX19fX1jb25zdCBtaT1tKCkoKTtsZXQgZ2k9MCx5aT0wLHZpPW51bGwsYmk9InVuZGVmaW5lZCIhPXR5cGVvZiBCcm9hZGNhc3RDaGFubmVsLHdpPW51bGwsX2k9bnVsbCxTaT0hMTtjb25zdCBFaT0oZSx0KT0+e2NvbnN0IG49ZS52aXNpdG9yPy5pZCxyPWUudmlzaXRvcj8ub3JpZ2luYWxWaXNpdG9ySWQsbz10LnZpc2l0b3I/LmlkLGk9dC52aXNpdG9yPy5vcmlnaW5hbFZpc2l0b3JJZDtyZXR1cm4gbj09PW98fG49PT1pfHxyPT09b3x8dm9pZCAwIT09ciYmcj09PWl9LENpPXVpKCkoYXN5bmMgZT0+e2lmKCExIT09X2kmJigwLHR0LnYpKGUpLHZpJiZiaSl0cnl7dmkucG9zdE1lc3NhZ2Uoe3R5cGU6IlNUQVRFX1VQREFURSIsc3RhdGU6ZSxzb3VyY2VUYWJJZDptaSx0aW1lc3RhbXA6Z2l9KX1jYXRjaHtiaT0hMX19LDFlMyk7dmFyIGtpPWU9PntsZXR7Z2V0U3RhdGU6dCxkaXNwYXRjaDpufT1lO3JldHVybiBlPT57aWYoYmkmJiF2aSl0cnl7dmk9bmV3IEJyb2FkY2FzdENoYW5uZWwoKCgpPT57bGV0IGU9YHRpZGlvX3N5bmNfJHsoMCxnLkQwKSgpfHwicHJldmlldyJ9YDtyZXR1cm4oMCxnLnZVKSgpJiYoZSs9Il9kZXNpZ25tb2RlIiksZX0pKCkpLHZpLm9ubWVzc2FnZT1lPT57aWYoIlNUQVRFX1VQREFURSI9PT1lLmRhdGEudHlwZSl7aWYoZS5kYXRhLnNvdXJjZVRhYklkPT09bWkpcmV0dXJuO2NvbnN0IHI9dCgpLG89ZS5kYXRhLnN0YXRlLGk9ZS5kYXRhLnRpbWVzdGFtcHx8MDtpZighRWkocixvKSlyZXR1cm47Y29uc3QgYT1yLm1lc3NhZ2VzPy5sZW5ndGh8fDAscz1vLm1lc3NhZ2VzPy5sZW5ndGh8fDA7aWYoczxhKXJldHVybjtpZihzPT09YSl7aWYoaTw9TWF0aC5tYXgoZ2kseWkpKXJldHVybn15aT1pLG4oKDAsWGUubnVyKShvKSl9fX1jYXRjaHtiaT0hMSx2aT1udWxsfXJldHVybiBiaXx8d2l8fCh3aT1lPT57aWYoZS5rZXk9PT0oKCk9PntsZXQgZT1gdGlkaW9fc3RhdGVfJHsoMCxnLkQwKSgpfHwicHJldmlldyJ9YDtyZXR1cm4oMCxnLnZVKSgpJiYoZSs9Il9kZXNpZ25tb2RlIiksZX0pKCkmJmUubmV3VmFsdWUpdHJ5e2NvbnN0IHI9dCgpLG89SlNPTi5wYXJzZShlLm5ld1ZhbHVlKTtpZighRWkocixvKSlyZXR1cm47Y29uc3QgaT1EYXRlLm5vdygpLGE9ci5tZXNzYWdlcz8ubGVuZ3RofHwwLHM9by5tZXNzYWdlcz8ubGVuZ3RofHwwO2lmKHM8YSlyZXR1cm47aWYocz09PWEpe2lmKGk8PU1hdGgubWF4KGdpLHlpKSlyZXR1cm59eWk9aSxuKCgwLFhlLm51cikobykpfWNhdGNoe319LHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzdG9yYWdlIix3aSkpLHI9Pntzd2l0Y2goci50eXBlKXtjYXNlIFhlLlN2VzpjYXNlIFhlLkdnbzpjYXNlIFhlLiQ0MTpjYXNlIFhlLmwybzpyZXR1cm4gZShyKTtkZWZhdWx0Ontjb25zdCBvPWUocik7aWYoITE9PT1faSlyZXR1cm4gU2l8fChTaT0hMCxzZXRUaW1lb3V0KCgpPT57bigoMCxYZS5TNzkpKCgwLGIucHcpKCJsb2NhbFN0b3JhZ2VOb3RBdmFpbGFibGUiLG51bGwsIllvdSdyZSB2aWV3aW5nIHRoaXMgcGFnZSBpbiBQcml2YXRlL0luY29nbml0byBtb2RlIGFuZCB5b3VyIG1lc3NhZ2VzIGFyZW4ndCBzYXZlZCB3aGVuIHlvdSBnbyB0byBvdGhlciBwYWdlcy4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBlbmFibGUgbG9jYWxTdG9yYWdlIGlmIGl0J3MgYmxvY2tlZCBpbiB5b3VyIGJyb3dzZXIuIikpKX0sMWUzKSksbztjb25zdCBpPXQoKTtyZXR1cm4gbnVsbD09PV9pP19pPSgwLHR0LkxaKShpKTooZ2k9RGF0ZS5ub3coKSxDaShpKSksb319fX19LEFpPW4oMzYxNyk7dmFyIE9pPWU9PntsZXR7Z2V0U3RhdGU6dCxkaXNwYXRjaDpufT1lO3JldHVybiBlPT5yPT57c3dpdGNoKHIudHlwZSl7Y2FzZSBYZS5xZWI6e2NvbnN0IG89dCgpO2lmKG8uaXNTb3VuZEVuYWJsZWQmJm8ubm90aWZpY2F0aW9uU25vb3plZClyZXR1cm4gZShyKTtjb25zdHt0eXBlOml9PXIubWVzc2FnZTtpZihvLnZpZXc9PT1udC5Tcy5DTE9TRUQpe2NvbnN0IGU9InJhdGVDb252ZXJzYXRpb24iPT09aT9udC5Tcy5DSEFUOm50LlNzLkZMWTtzZXRUaW1lb3V0KCgpPT57bigoMCxYZS5rRzcpKHIubWVzc2FnZSkpLG4oKDAsWGUuZzZRKShlKSl9LDApfWVsc2UgaWYoby52aWV3PT09bnQuU3MuRkxZKXsicmF0ZUNvbnZlcnNhdGlvbiI9PT1pJiZzZXRUaW1lb3V0KCgpPT57bigoMCxYZS5nNlEpKG50LlNzLkNIQVQpKX0sMCl9ZWxzZSBvLnZpZXc9PT1udC5Tcy5DSEFUJiZzZXRUaW1lb3V0KCgpPT57bigoMCxYZS5xN3YpKCJjb252ZXJzYXRpb25zIikpfSwwKTtyZXR1cm4gZShyKX1jYXNlIFhlLnBVMTpyZXR1cm4gdCgpLnZpZXchPT1udC5Tcy5DSEFUJiZuKCgwLFhlLmc2USkobnQuU3MuQ0hBVCkpLGUocik7ZGVmYXVsdDpyZXR1cm4gZShyKX19fTtjb25zdCBUaT1tKCkoKTtsZXQgeGk9cDtnLmdyJiYoeGk9d2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX0NPTVBPU0VfX3x8cCk7dmFyIElpPWZ1bmN0aW9uKCl7Zy5ncnx8YWkoIjEuNDQ3LjAiKTtjb25zdCBlPSgwLGcuREQpKCksdD0oMCxnLlBoKSgpLHI9KDAsZy5EMCkoKTtpZigoMCxnLmJ0KSgpKXJldHVybjtpZighZSYmIXQmJiExPT09cilyZXR1cm47Y29uc3Qgbz0oMCxnLk1JKSgpLGk9KDAsZy52VSkoKTtsZXQgYztlfHxvfHx0fHxpfHwoYz0oMCx0dC5DNykoKSksYyYmKGM9KDAsdHQuYjYpKGMsVnQpKTtjb25zdCB1PVtPaSxmbl0sbD13aW5kb3cucGFyZW50LmRvY3VtZW50LnRpZGlvQ2hhdFByZXZpZXdNb2RlRGF0YTtsZXQgZCxoO2V8fHR8fChkPSgwLHR0LnZ1KSgiY2FjaGUiKSx1LnVuc2hpZnQoZnVuY3Rpb24oZSl7cmV0dXJuKCk9PnQ9Pm49PntpZihuLnR5cGU9PT1YZS5lNzcpe2lmKGUpe2NvbnN0IHI9bj8uZGF0YT8ud2lkZ2V0X2RhdGE/LmNhY2hlX2hhc2g7aWYoZS5jYWNoZV9oYXNoPT09cnx8dm9pZCAwPT09cil7Y29uc3Qgcj0oMCxnLm1nKShuKTtyZXR1cm4gci5kYXRhLndpZGdldF9kYXRhPXsuLi5lLC4uLm4uZGF0YS53aWRnZXRfZGF0YX0sKDAsdHQuSG8pKCJjYWNoZSIsci5kYXRhLndpZGdldF9kYXRhKSx0KHIpfXJldHVybigwLHR0LkhvKSgiY2FjaGUiLG4/LmRhdGE/LndpZGdldF9kYXRhKSx0KG4pfXJldHVybigwLHR0LkhvKSgiY2FjaGUiLG4/LmRhdGE/LndpZGdldF9kYXRhKSx0KG4pfXJldHVybiB0KG4pfX0oZCkpKSxlJiZsJiYiZnVuY3Rpb24iPT10eXBlb2YgbC5wcmVNaWRkbGV3YXJlJiZ1LnVuc2hpZnQobC5wcmVNaWRkbGV3YXJlKSxlfHx0fHwoaD1QdChkKSx1LnB1c2goaGkoaCkpKSxlfHxvfHx0fHx1LnB1c2goa2kpO2NvbnN0IG09W107bS5wdXNoKHNpKTtjb25zdCBfPWYoenQsY3x8dm9pZCAwLHhpKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykscj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihzKDE1KSl9LG89e2dldFN0YXRlOm4uZ2V0U3RhdGUsZGlzcGF0Y2g6ZnVuY3Rpb24oKXtyZXR1cm4gci5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX19LGk9dC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUobyl9KTtyZXR1cm4gcj1wLmFwcGx5KHZvaWQgMCxpKShuLmRpc3BhdGNoKSxhKGEoe30sbikse30se2Rpc3BhdGNoOnJ9KX19fSguLi51KSwuLi5tKSk7dCYmbi5lKDEyNikudGhlbihuLmJpbmQobiw5Mjg5KSkudGhlbihlPT57bGV0e2RlZmF1bHQ6dH09ZTtjb25zdCBuPXQoKTtuJiZfLmRpc3BhdGNoKCgwLFhlLm51cikobikpfSk7e2NvbnN0IGU9Xy5nZXRTdGF0ZSgpOyhlPT57bGV0e3B1YmxpY0tleTp0LG9yaWdpbmFsVmlzaXRvcklkOm4sdmlzaXRvcklkOnIsZGVzaWduVmVyc2lvbjpvfT1lO3BuLld0KHtwdWJsaWNLZXk6dCx2aXNpdG9ySWQ6cixvcmlnaW5hbFZpc2l0b3JJZDpuLHVybDooMCxnLmJwKSgpLGRlc2lnblZlcnNpb246b30pfSkoe3B1YmxpY0tleTplLnB1YmxpY0tleSx2aXNpdG9ySWQ6ZS52aXNpdG9yLmlkLG9yaWdpbmFsVmlzaXRvcklkOmUudmlzaXRvci5vcmlnaW5hbFZpc2l0b3JJZCxkZXNpZ25WZXJzaW9uOmUuZGVzaWduVmVyc2lvbn0pO2NvbnN0IHQ9ZS52aXNpdG9yLmVtYWlsLG49ZS52aXNpdG9yLm5hbWUscj17aWQ6ZS52aXNpdG9yLmlkfTt0JiYoci5lbWFpbD10KSxuJiYoci51c2VybmFtZT1uKSxTPXIscG4uZ1YoUyl9dmFyIFM7Yz9fLmRpc3BhdGNoKCgwLFhlLmU1OSkoYykpOl8uZGlzcGF0Y2goKDAsWGUuWGViKSgoMCxNdC50KSgpKSk7Y29uc3QgRT0oMCxnLkl0KSgpO18uZGlzcGF0Y2goKDAsWGUuTnd6KShFKSk7dHJ5e2lmKHdpbmRvdy5wYXJlbnQ/Lmhpc3Rvcnkpe2NvbnN0IGU9d2luZG93LnBhcmVudC5oaXN0b3J5LHtwdXNoU3RhdGU6dH09d2luZG93LnBhcmVudC5oaXN0b3J5O3dpbmRvdy5wYXJlbnQuaGlzdG9yeS5wdXNoU3RhdGU9ZnVuY3Rpb24oKXt0cnl7ImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5vbnB1c2hzdGF0ZSYmd2luZG93Lm9ucHVzaHN0YXRlKGFyZ3VtZW50cyl9Y2F0Y2h7fXJldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19fWNhdGNoKGUpeygwLHYuc1EpKCJDYW4ndCBhY2Nlc3Mgd2luZG93LnBhcmVudCB3aGVuIHRyeWluZyB0byBwYXRjaCBwdXNoU3RhdGUiLHtlOmV9KX1pZigoMCxnLm9OKSgoKT0+e3NldFRpbWVvdXQoKCk9Pntjb25zdCBlPSgwLGcuYnApKCk7ZS5pbmNsdWRlcyh3LmQkKXx8Xy5kaXNwYXRjaCgoMCxYZS5MS3gpKGUpKX0pfSksIWUmJmgpeygwLHkubykoKS5tYXJrRHVyYXRpb24oIndpZGdldF93c19pbml0aWFsX2Nvbm5lY3Rpb25faW5fbXMiLCJzdGFydCIpO2NvbnN0IGU9Xy5nZXRTdGF0ZSgpLHQ9ZT8udmlzaXRvcj8uaWQsbj17cHBrOnIsZGV2aWNlOigwLGcuS3UpKCk/Im1vYmlsZSI6ImRlc2t0b3AiLGNtdjoiMl8wIix2ZXI6ImRldiIsc2VpZDpUaSwuLi50JiZ7dmlkOigwLGcuRUQpKHQpfX07MCxnLmdyfHwobi52ZXI9IjEuNDQ3LjAiKSxoLmNvbm5lY3RUb1NvY2tldHMoXyx7cHVzaDpmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dfX0sKCk9Pnt9LCgpPT57fSx7cXVlcnk6bn0pfXJldHVybigwLEFpLkEpKF8pLGUmJihfLmRpc3BhdGNoKCgwLFhlLk5ldikoInByZXZpZXdNb2RlRW5hYmxlZCIsITApKSx3aW5kb3cucGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGU9PntpZighKGUub3JpZ2luLmluY2x1ZGVzKCJ0aWRpb2NoYXQuY29tIil8fGUub3JpZ2luLmluY2x1ZGVzKCJ0aWRpby5jb20iKXx8ZS5vcmlnaW4uaW5jbHVkZXMoInRpZGlvLmRldiIpfHxlLm9yaWdpbi5pbmNsdWRlcygidGlkaW8uaW4iKXx8ZS5vcmlnaW4uaW5jbHVkZXMoInRpZGlvLWxvY2FsIil8fGUub3JpZ2luLmluY2x1ZGVzKCJwYW5lbC50aWRpby5sb2NhbGhvc3QiKSkmJiJodHRwOi8vdGlkaW8ubG9jYWwiIT09ZS5vcmlnaW4mJiJodHRwOi8vbG9jYWxob3N0OjM0NTYiIT09ZS5vcmlnaW4mJiJodHRwczovL3dpZGdldC50aWRpby5sb2NhbGhvc3QiIT09ZS5vcmlnaW4pcmV0dXJuITE7bGV0e2RhdGE6dH09ZTtyZXR1cm4gdD1KU09OLnBhcnNlKHQpLF8uZGlzcGF0Y2goKDAsWGUuTmV2KSh0LnByb3AsdC5wYXlsb2FkKSksXy5kaXNwYXRjaCgoMCxYZS5vT20pKG50Lk5PLkNIQVRfU0laRV8xKSksITB9LCExKSxsJiYobC5wcmVmb3JtRGF0YSYmXy5kaXNwYXRjaCgoMCxYZS5OZXYpKCJwcmVDaGF0RGF0YSIsbC5wcmVmb3JtRGF0YSkpLGwucm91dGluZ1J1bGVzJiZfLmRpc3BhdGNoKCgwLFhlLk5ldikoInJvdXRpbmdSdWxlcyIsbC5yb3V0aW5nUnVsZXMpKSxsLm9wZXJhdG9ycyYmXy5kaXNwYXRjaCgoMCxYZS5OZXYpKCJvcGVyYXRvcnMiLGwub3BlcmF0b3JzKSksbC5jb2xvciYmXy5kaXNwYXRjaCgoMCxYZS5OZXYpKCJjb2xvciIsbC5jb2xvcikpLGwuYmFubmVySW1hZ2UmJl8uZGlzcGF0Y2goKDAsWGUuTmV2KSgiYmFubmVySW1hZ2UiLGwuYmFubmVySW1hZ2UpKSxsLnRyYW5zbGF0aW9ucyYmKDAsYi5VNSkobC50cmFuc2xhdGlvbnMsImVuIiksdm9pZCAwIT09bC5zaWRlYmFyJiZfLmRpc3BhdGNoKCgwLFhlLk5ldikoInNpZGViYXIiLGwuc2lkZWJhcikpLGwubWVzc2FnZXMmJl8uZGlzcGF0Y2goKDAsWGUuTmV2KSgibWVzc2FnZXMiLGwubWVzc2FnZXMpKSxsLnByZXZpZXdWaWV3JiZfLmRpc3BhdGNoKCgwLFhlLk5ldikoInByZXZpZXdWaWV3IixsLnByZXZpZXdWaWV3KSksbC5oaWRlV2hlbk9mZmxpbmUmJl8uZGlzcGF0Y2goKDAsWGUuTmV2KSgiaGlkZVdoZW5PZmZsaW5lIixsLmhpZGVXaGVuT2ZmbGluZSkpLGwud2lkZ2V0TGFiZWxTdGF0dXMmJl8uZGlzcGF0Y2goKDAsWGUuTmV2KSgid2lkZ2V0TGFiZWxTdGF0dXMiLGwud2lkZ2V0TGFiZWxTdGF0dXMpKSwhMT09PWwud2lkZ2V0U291bmRTdGF0dXMmJl8uZGlzcGF0Y2goKDAsWGUuTmV2KSgid2lkZ2V0U291bmRTdGF0dXMiLGwud2lkZ2V0U291bmRTdGF0dXMpKSxsLmNoYXRPblNpdGUmJl8uZGlzcGF0Y2goKDAsWGUuTmV2KSgiY2hhdE9uU2l0ZSIsbC5jaGF0T25TaXRlKSksbC5tZXNzYWdlRm9yRmx5JiZfLmRpc3BhdGNoKCgwLFhlLk5ldikoIm1lc3NhZ2VGb3JGbHkiLGwubWVzc2FnZUZvckZseSkpLCExPT09bC5zaG93QnJhbmRpbmcmJl8uZGlzcGF0Y2goKDAsWGUuTmV2KSgic2hvd0JyYW5kaW5nIixsLnNob3dCcmFuZGluZykpLGwuY3VzdG9tQnJhbmRpbmcmJl8uZGlzcGF0Y2goKDAsWGUuTmV2KSgiY3VzdG9tQnJhbmRpbmciLGwuY3VzdG9tQnJhbmRpbmcpKSxsLmN1c3RvbUF2YXRhciYmXy5kaXNwYXRjaCgoMCxYZS5OZXYpKCJjdXN0b21BdmF0YXIiLGwuY3VzdG9tQXZhdGFyKSksbC5jb252ZXJzYXRpb25TdGFydGVycyYmXy5kaXNwYXRjaCgoMCxYZS5OZXYpKCJjb252ZXJzYXRpb25TdGFydGVycyIsbC5jb252ZXJzYXRpb25TdGFydGVycykpLGwuZGVzaWduVmVyc2lvbiYmXy5kaXNwYXRjaCgoMCxYZS5OZXYpKCJkZXNpZ25WZXJzaW9uIixsLmRlc2lnblZlcnNpb24pKSxsLmlzUHJpdmFjeVBvbGljeUVuYWJsZWQmJl8uZGlzcGF0Y2goKDAsWGUuTmV2KSgiaXNQcml2YWN5UG9saWN5RW5hYmxlZCIsbC5pc1ByaXZhY3lQb2xpY3lFbmFibGVkKSksbC5wbGF0Zm9ybSYmXy5kaXNwYXRjaCgoMCxYZS5OZXYpKCJwbGF0Zm9ybSIsbC5wbGF0Zm9ybSkpKSxfLmRpc3BhdGNoKCgwLFhlLnRhRykoKSkpLF99fSw0OTg3OmZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPVN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKSxyPVN5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpLG89U3ltYm9sLmZvcigicmVhY3QuZnJhZ21lbnQiKSxpPVN5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIiksYT1TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpLHM9U3ltYm9sLmZvcigicmVhY3QucHJvdmlkZXIiKSxjPVN5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKSx1PVN5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIiksbD1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpLGQ9U3ltYm9sLmZvcigicmVhY3QubWVtbyIpLGY9U3ltYm9sLmZvcigicmVhY3QubGF6eSIpLHA9U3ltYm9sLml0ZXJhdG9yO3ZhciBoPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxtPU9iamVjdC5hc3NpZ24sZz17fTtmdW5jdGlvbiB5KGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPWcsdGhpcy51cGRhdGVyPW58fGh9ZnVuY3Rpb24gdigpe31mdW5jdGlvbiBiKGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPWcsdGhpcy51cGRhdGVyPW58fGh9eS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSx5LnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPWUpdGhyb3cgRXJyb3IoInNldFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLiIpO3RoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxlLHQsInNldFN0YXRlIil9LHkucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxlLCJmb3JjZVVwZGF0ZSIpfSx2LnByb3RvdHlwZT15LnByb3RvdHlwZTt2YXIgdz1iLnByb3RvdHlwZT1uZXcgdjt3LmNvbnN0cnVjdG9yPWIsbSh3LHkucHJvdG90eXBlKSx3LmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwO3ZhciBfPUFycmF5LmlzQXJyYXksUz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEU9e2N1cnJlbnQ6bnVsbH0sQz17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIGsoZSx0LHIpe3ZhciBvLGk9e30sYT1udWxsLHM9bnVsbDtpZihudWxsIT10KWZvcihvIGluIHZvaWQgMCE9PXQucmVmJiYocz10LnJlZiksdm9pZCAwIT09dC5rZXkmJihhPSIiK3Qua2V5KSx0KVMuY2FsbCh0LG8pJiYhQy5oYXNPd25Qcm9wZXJ0eShvKSYmKGlbb109dFtvXSk7dmFyIGM9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1jKWkuY2hpbGRyZW49cjtlbHNlIGlmKDE8Yyl7Zm9yKHZhciB1PUFycmF5KGMpLGw9MDtsPGM7bCsrKXVbbF09YXJndW1lbnRzW2wrMl07aS5jaGlsZHJlbj11fWlmKGUmJmUuZGVmYXVsdFByb3BzKWZvcihvIGluIGM9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09aVtvXSYmKGlbb109Y1tvXSk7cmV0dXJueyQkdHlwZW9mOm4sdHlwZTplLGtleTphLHJlZjpzLHByb3BzOmksX293bmVyOkUuY3VycmVudH19ZnVuY3Rpb24gQShlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09bn12YXIgTz0vXC8rL2c7ZnVuY3Rpb24gVChlLHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJm51bGwhPWUua2V5P2Z1bmN0aW9uKGUpe3ZhciB0PXsiPSI6Ij0wIiwiOiI6Ij0yIn07cmV0dXJuIiQiK2UucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSl9KCIiK2Uua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiB4KGUsdCxvLGksYSl7dmFyIHM9dHlwZW9mIGU7InVuZGVmaW5lZCIhPT1zJiYiYm9vbGVhbiIhPT1zfHwoZT1udWxsKTt2YXIgYz0hMTtpZihudWxsPT09ZSljPSEwO2Vsc2Ugc3dpdGNoKHMpe2Nhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Yz0hMDticmVhaztjYXNlIm9iamVjdCI6c3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgbjpjYXNlIHI6Yz0hMH19aWYoYylyZXR1cm4gYT1hKGM9ZSksZT0iIj09PWk/Ii4iK1QoYywwKTppLF8oYSk/KG89IiIsbnVsbCE9ZSYmKG89ZS5yZXBsYWNlKE8sIiQmLyIpKyIvIikseChhLHQsbywiIixmdW5jdGlvbihlKXtyZXR1cm4gZX0pKTpudWxsIT1hJiYoQShhKSYmKGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm57JCR0eXBlb2Y6bix0eXBlOmUudHlwZSxrZXk6dCxyZWY6ZS5yZWYscHJvcHM6ZS5wcm9wcyxfb3duZXI6ZS5fb3duZXJ9fShhLG8rKCFhLmtleXx8YyYmYy5rZXk9PT1hLmtleT8iIjooIiIrYS5rZXkpLnJlcGxhY2UoTywiJCYvIikrIi8iKStlKSksdC5wdXNoKGEpKSwxO2lmKGM9MCxpPSIiPT09aT8iLiI6aSsiOiIsXyhlKSlmb3IodmFyIHU9MDt1PGUubGVuZ3RoO3UrKyl7dmFyIGw9aStUKHM9ZVt1XSx1KTtjKz14KHMsdCxvLGwsYSl9ZWxzZSBpZihsPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiBlP251bGw6ImZ1bmN0aW9uIj09dHlwZW9mKGU9cCYmZVtwXXx8ZVsiQEBpdGVyYXRvciJdKT9lOm51bGx9KGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBsKWZvcihlPWwuY2FsbChlKSx1PTA7IShzPWUubmV4dCgpKS5kb25lOyljKz14KHM9cy52YWx1ZSx0LG8sbD1pK1Qocyx1KyspLGEpO2Vsc2UgaWYoIm9iamVjdCI9PT1zKXRocm93IHQ9U3RyaW5nKGUpLEVycm9yKCJPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICIrKCJbb2JqZWN0IE9iamVjdF0iPT09dD8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyhlKS5qb2luKCIsICIpKyJ9Ijp0KSsiKS4gSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSBpbnN0ZWFkLiIpO3JldHVybiBjfWZ1bmN0aW9uIEkoZSx0LG4pe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIHI9W10sbz0wO3JldHVybiB4KGUsciwiIiwiIixmdW5jdGlvbihlKXtyZXR1cm4gdC5jYWxsKG4sZSxvKyspfSkscn1mdW5jdGlvbiBOKGUpe2lmKC0xPT09ZS5fc3RhdHVzKXt2YXIgdD1lLl9yZXN1bHQ7KHQ9dCgpKS50aGVuKGZ1bmN0aW9uKHQpezAhPT1lLl9zdGF0dXMmJi0xIT09ZS5fc3RhdHVzfHwoZS5fc3RhdHVzPTEsZS5fcmVzdWx0PXQpfSxmdW5jdGlvbih0KXswIT09ZS5fc3RhdHVzJiYtMSE9PWUuX3N0YXR1c3x8KGUuX3N0YXR1cz0yLGUuX3Jlc3VsdD10KX0pLC0xPT09ZS5fc3RhdHVzJiYoZS5fc3RhdHVzPTAsZS5fcmVzdWx0PXQpfWlmKDE9PT1lLl9zdGF0dXMpcmV0dXJuIGUuX3Jlc3VsdC5kZWZhdWx0O3Rocm93IGUuX3Jlc3VsdH12YXIgTD17Y3VycmVudDpudWxsfSxQPXt0cmFuc2l0aW9uOm51bGx9LE09e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6TCxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzpQLFJlYWN0Q3VycmVudE93bmVyOkV9O2Z1bmN0aW9uIFIoKXt0aHJvdyBFcnJvcigiYWN0KC4uLikgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBvZiBSZWFjdC4iKX10LkNoaWxkcmVuPXttYXA6SSxmb3JFYWNoOmZ1bmN0aW9uKGUsdCxuKXtJKGUsZnVuY3Rpb24oKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sbil9LGNvdW50OmZ1bmN0aW9uKGUpe3ZhciB0PTA7cmV0dXJuIEkoZSxmdW5jdGlvbigpe3QrK30pLHR9LHRvQXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIEkoZSxmdW5jdGlvbihlKXtyZXR1cm4gZX0pfHxbXX0sb25seTpmdW5jdGlvbihlKXtpZighQShlKSl0aHJvdyBFcnJvcigiUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuIik7cmV0dXJuIGV9fSx0LkNvbXBvbmVudD15LHQuRnJhZ21lbnQ9byx0LlByb2ZpbGVyPWEsdC5QdXJlQ29tcG9uZW50PWIsdC5TdHJpY3RNb2RlPWksdC5TdXNwZW5zZT1sLHQuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9TSx0LmFjdD1SLHQuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUsdCxyKXtpZihudWxsPT1lKXRocm93IEVycm9yKCJSZWFjdC5jbG9uZUVsZW1lbnQoLi4uKTogVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCAiK2UrIi4iKTt2YXIgbz1tKHt9LGUucHJvcHMpLGk9ZS5rZXksYT1lLnJlZixzPWUuX293bmVyO2lmKG51bGwhPXQpe2lmKHZvaWQgMCE9PXQucmVmJiYoYT10LnJlZixzPUUuY3VycmVudCksdm9pZCAwIT09dC5rZXkmJihpPSIiK3Qua2V5KSxlLnR5cGUmJmUudHlwZS5kZWZhdWx0UHJvcHMpdmFyIGM9ZS50eXBlLmRlZmF1bHRQcm9wcztmb3IodSBpbiB0KVMuY2FsbCh0LHUpJiYhQy5oYXNPd25Qcm9wZXJ0eSh1KSYmKG9bdV09dm9pZCAwPT09dFt1XSYmdm9pZCAwIT09Yz9jW3VdOnRbdV0pfXZhciB1PWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09dSlvLmNoaWxkcmVuPXI7ZWxzZSBpZigxPHUpe2M9QXJyYXkodSk7Zm9yKHZhciBsPTA7bDx1O2wrKyljW2xdPWFyZ3VtZW50c1tsKzJdO28uY2hpbGRyZW49Y31yZXR1cm57JCR0eXBlb2Y6bix0eXBlOmUudHlwZSxrZXk6aSxyZWY6YSxwcm9wczpvLF9vd25lcjpzfX0sdC5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKGUpe3JldHVybihlPXskJHR5cGVvZjpjLF9jdXJyZW50VmFsdWU6ZSxfY3VycmVudFZhbHVlMjplLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbCxfZGVmYXVsdFZhbHVlOm51bGwsX2dsb2JhbE5hbWU6bnVsbH0pLlByb3ZpZGVyPXskJHR5cGVvZjpzLF9jb250ZXh0OmV9LGUuQ29uc3VtZXI9ZX0sdC5jcmVhdGVFbGVtZW50PWssdC5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGUpe3ZhciB0PWsuYmluZChudWxsLGUpO3JldHVybiB0LnR5cGU9ZSx0fSx0LmNyZWF0ZVJlZj1mdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fSx0LmZvcndhcmRSZWY9ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOnUscmVuZGVyOmV9fSx0LmlzVmFsaWRFbGVtZW50PUEsdC5sYXp5PWZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpmLF9wYXlsb2FkOntfc3RhdHVzOi0xLF9yZXN1bHQ6ZX0sX2luaXQ6Tn19LHQubWVtbz1mdW5jdGlvbihlLHQpe3JldHVybnskJHR5cGVvZjpkLHR5cGU6ZSxjb21wYXJlOnZvaWQgMD09PXQ/bnVsbDp0fX0sdC5zdGFydFRyYW5zaXRpb249ZnVuY3Rpb24oZSl7dmFyIHQ9UC50cmFuc2l0aW9uO1AudHJhbnNpdGlvbj17fTt0cnl7ZSgpfWZpbmFsbHl7UC50cmFuc2l0aW9uPXR9fSx0LnVuc3RhYmxlX2FjdD1SLHQudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTC5jdXJyZW50LnVzZUNhbGxiYWNrKGUsdCl9LHQudXNlQ29udGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gTC5jdXJyZW50LnVzZUNvbnRleHQoZSl9LHQudXNlRGVidWdWYWx1ZT1mdW5jdGlvbigpe30sdC51c2VEZWZlcnJlZFZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBMLmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShlKX0sdC51c2VFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTC5jdXJyZW50LnVzZUVmZmVjdChlLHQpfSx0LnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIEwuY3VycmVudC51c2VJZCgpfSx0LnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBMLmN1cnJlbnQudXNlSW1wZXJhdGl2ZUhhbmRsZShlLHQsbil9LHQudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEwuY3VycmVudC51c2VJbnNlcnRpb25FZmZlY3QoZSx0KX0sdC51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTC5jdXJyZW50LnVzZUxheW91dEVmZmVjdChlLHQpfSx0LnVzZU1lbW89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTC5jdXJyZW50LnVzZU1lbW8oZSx0KX0sdC51c2VSZWR1Y2VyPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gTC5jdXJyZW50LnVzZVJlZHVjZXIoZSx0LG4pfSx0LnVzZVJlZj1mdW5jdGlvbihlKXtyZXR1cm4gTC5jdXJyZW50LnVzZVJlZihlKX0sdC51c2VTdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gTC5jdXJyZW50LnVzZVN0YXRlKGUpfSx0LnVzZVN5bmNFeHRlcm5hbFN0b3JlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gTC5jdXJyZW50LnVzZVN5bmNFeHRlcm5hbFN0b3JlKGUsdCxuKX0sdC51c2VUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIEwuY3VycmVudC51c2VUcmFuc2l0aW9uKCl9LHQudmVyc2lvbj0iMTguMy4xIn0sNTAwMjpmdW5jdGlvbihlKXt2YXIgdD0idW5kZWZpbmVkIiE9dHlwZW9mIGNyeXB0byYmY3J5cHRvLmdldFJhbmRvbVZhbHVlcyYmY3J5cHRvLmdldFJhbmRvbVZhbHVlcy5iaW5kKGNyeXB0byl8fCJ1bmRlZmluZWQiIT10eXBlb2YgbXNDcnlwdG8mJiJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzJiZtc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMuYmluZChtc0NyeXB0byk7aWYodCl7dmFyIG49bmV3IFVpbnQ4QXJyYXkoMTYpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiB0KG4pLG59fWVsc2V7dmFyIHI9bmV3IEFycmF5KDE2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD0wO3Q8MTY7dCsrKTMmdHx8KGU9NDI5NDk2NzI5NipNYXRoLnJhbmRvbSgpKSxyW3RdPWU+Pj4oKDMmdCk8PDMpJjI1NTtyZXR1cm4gcn19fSw1MDI3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big2Njc0KSxvPW4oNzQ0MyksaT1yKHt9Lmhhc093blByb3BlcnR5KTtlLmV4cG9ydHM9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShvKGUpLHQpfX0sNTEwMTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNzU3MCkubmF2aWdhdG9yLG89ciYmci51c2VyQWdlbnQ7ZS5leHBvcnRzPW8/U3RyaW5nKG8pOiIifSw1MjY0OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big5NzkpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGU/bnVsbCE9PWU6cihlKX19LDUzNTU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDM0ODApLG89big0ODA2KSxpPW4oNDA1NSksYT1uKDg5NDgpLHM9bigyMzE4KSxjPW4oNzc2NyksdT1uKDM2NTApLGw9big4Mjg5KTtjb25zdCBkPXIubGF6eSgoKT0+bi5lKDk4NykudGhlbihuLmJpbmQobiw0MDYyKSkpO3ZhciBmPSgpPT57Y29uc3QgZT0oMCxpLmQ0KShlPT5lLmlzTW91bnRlZCksdD0oMCxpLmQ0KShlPT5lLmhpZGVXaGVuT2ZmbGluZSksbj0oMCxpLmQ0KShlPT5lLmlzUHJvamVjdE9ubGluZSksbz0oMCxpLmQ0KSh1LlR3KTtyZXR1cm4hZXx8dCYmIW4mJiFvP251bGw6KDAsbC5ZKShyLlN1c3BlbnNlLHtmYWxsYmFjazpudWxsLGNoaWxkcmVuOigwLGwuWSkoZCx7fSl9KX07KDAsYS5pcikoKTtjb25zdCBwPWU9Pntjb25zdCB0PWUuZ2V0U3RhdGUoKSxuPSgwLHUuVHcpKHQpLHI9KDAsYS5ERCkoKTtsZXQgcz0oMCx1LnRsKSh0KSxkPSgwLHUuTnkpKHQpLHA9bnVsbCxoPW51bGw7Y29uc3QgbT0oKT0+e2gmJihoLnVubW91bnQoKSxoPW51bGwpO2NvbnN0IHQ9NT09PXN8fCgwLGMuYykoKTtwPSgoZSx0LG4pPT57Y29uc3R7ZG9jdW1lbnQ6cn09d2luZG93LnBhcmVudCxvPXIuZ2V0RWxlbWVudEJ5SWQoInRpZGlvLWNoYXQiKTtvJiZvLnJlbW92ZSgpO2NvbnN0IGk9ci5jcmVhdGVFbGVtZW50KCJkaXYiKTtpZihpLmlkPSJ0aWRpby1jaGF0IixpLmNsYXNzTGlzdC5hZGQoIm5lZWRzY2xpY2siKSxyLmJvZHkuYXBwZW5kQ2hpbGQoaSksaS5zdHlsZS5zZXRQcm9wZXJ0eSgiei1pbmRleCIsIjk5OTk5OTk5OSIsImltcG9ydGFudCIpLG58fCF0KWkuc3R5bGUuc2V0UHJvcGVydHkoInBvc2l0aW9uIiwiZml4ZWQiKTtlbHNle2NvbnN0IGU9ci5ib2R5LnF1ZXJ5U2VsZWN0b3IoIi5yaWdodCIpO2lmKGU/LnBhcmVudE5vZGUpe2xldCB0PXIucXVlcnlTZWxlY3Rvcigic2VjdGlvbi5jZW50ZXIiKTt0fHwodD1yLmNyZWF0ZUVsZW1lbnQoInNlY3Rpb24iKSx0LmNsYXNzTmFtZT0iY2VudGVyIixlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQsZSkpLGkucmVtb3ZlKCksdC5hcHBlbmRDaGlsZChpKX19aWYoIWUpcmV0dXJuIGk7dCYmKGkuc3R5bGUuc2V0UHJvcGVydHkoInBvc2l0aW9uIiwicmVsYXRpdmUiKSxpLnN0eWxlLnNldFByb3BlcnR5KCJ3aWR0aCIsIjEwMCUiKSxpLnN0eWxlLnNldFByb3BlcnR5KCJoZWlnaHQiLCIxMDAlIikpLGkuc3R5bGUud2lkdGg9IjEwMCUiLGkuc3R5bGUuaGVpZ2h0PSIxMDAlIixpLnN0eWxlLmJvdHRvbT0iMCIsaS5zdHlsZS5yaWdodD0iMCIsaS5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIixpLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjtjb25zdCBhPWkuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIn0pLHM9ci5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3MudGV4dENvbnRlbnQ9IlxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICBhbGw6IGluaXRpYWw7XG4gICAgICAgICAgICBjb2xvci1zY2hlbWU6IGxpZ2h0O1xuICAgICAgICB9XG4gICAgIixhLmFwcGVuZENoaWxkKHMpO2NvbnN0IGM9ci5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gYy5pZD0iYm9keSIsYy5jbGFzc0xpc3QuYWRkKCJhd2Vzb21lLWlmcmFtZSIpLGEuYXBwZW5kQ2hpbGQoYyksY30pKHQsbixyKSxwJiYoaD0oMCxvLkgpKHApLGgucmVuZGVyKCgwLGwuWSkoaS5LcSx7c3RvcmU6ZSxjaGlsZHJlbjooMCxsLlkpKGYse30pfSkpKX0sZz1lLnN1YnNjcmliZSgoKT0+e2NvbnN0IHQ9KDAsdS50bCkoZS5nZXRTdGF0ZSgpKSxuPSgwLHUuTnkpKGUuZ2V0U3RhdGUoKSk7dCE9PXMmJihzPXQsbSgpKSxuIT09ZCYmKGQ9bixtKCkpfSk7cmV0dXJuIG0oKSwoKT0+e2g/LnVubW91bnQoKSxnKCl9fTt3aW5kb3cudGlkaW9DaGF0QXBpPXdpbmRvdy50aWRpb0NoYXRBcGl8fG5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZXZlbnRQcmVmaXg9InRpZGlvQ2hhdC0iLHRoaXMucmVhZHlFdmVudFdhc0ZpcmVkPSExLHRoaXMucXVldWU9W10sdGhpcy5wb3BVcE9wZW49dGhpcy5vcGVuLHRoaXMucG9wVXBIaWRlPXRoaXMuY2xvc2UsdGhpcy5jaGF0RGlzcGxheT10aGlzLmRpc3BsYXksdGhpcy5zZXRDb2xvclBhbGxldGU9dGhpcy5zZXRDb2xvclBhbGV0dGV9b24oZSx0KXsicmVhZHkiPT09ZSYmdGhpcy5yZWFkeUV2ZW50V2FzRmlyZWQ/dCgpOmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoYCR7dGhpcy5ldmVudFByZWZpeH0ke2V9YCxlPT57dChlLmRhdGEpfSwhMSl9dHJpZ2dlcihlLHQpe2lmKCJyZWFkeSI9PT1lJiZ0aGlzLnJlYWR5RXZlbnRXYXNGaXJlZClyZXR1cm4hMTt0cnl7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtpZihuLmluaXRFdmVudChgJHt0aGlzLmV2ZW50UHJlZml4fSR7ZX1gLCEwLCEwKSxuLmRhdGE9dCxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG4pLCJyZWFkeSI9PT1lKXtpZih0aGlzLnJlYWR5RXZlbnRXYXNGaXJlZClyZXR1cm4hMTt0aGlzLl9mbHVzaEFsbEZyb21RdWV1ZSgpLHRoaXMucmVhZHlFdmVudFdhc0ZpcmVkPSEwfX1jYXRjaHtyZXR1cm4hMX1yZXR1cm4hMH1tZXRob2QoZSx0KXtyZXR1cm4icmVhZHkiPT09ZSYmImZ1bmN0aW9uIj09dHlwZW9mIHQ/KHRoaXMub24oInJlYWR5Iix0KSwhMCk6KHRoaXNbZV0mJnRoaXNbZV0odCksITApfV9hZGRUb1F1ZXVlKGUsdD1udWxsKXt0aGlzLnF1ZXVlLnB1c2goe21ldGhvZDplLGFyZ3M6dH0pfV9mbHVzaEFsbEZyb21RdWV1ZSgpe2Zvcig7MCE9PXRoaXMucXVldWUubGVuZ3RoOyl7Y29uc3R7bWV0aG9kOmUsYXJnczp0fT10aGlzLnF1ZXVlLnNoaWZ0KCk7dGhpc1tlXS5hcHBseShudWxsLHQpfX1vcGVuKCl7dGhpcy5fYWRkVG9RdWV1ZSgib3BlbiIpfWNsb3NlKCl7dGhpcy5fYWRkVG9RdWV1ZSgiY2xvc2UiKX1kaXNwbGF5KGU9ITApe3RoaXMuX2FkZFRvUXVldWUoImRpc3BsYXkiLFtlXSl9c2hvdygpe3RoaXMuX2FkZFRvUXVldWUoInNob3ciKX1oaWRlKCl7dGhpcy5fYWRkVG9RdWV1ZSgiaGlkZSIpfXNldENvbG9yUGFsZXR0ZShlKXt0aGlzLl9hZGRUb1F1ZXVlKCJzZXRDb2xvclBhbGV0dGUiLFtlXSl9dHJhY2soZSx0LG4pe3ZvaWQgMD09PWUmJihlPSJ0cmFjayIpLHZvaWQgMD09PXQmJih0PXt9KSx2b2lkIDA9PT1uJiYobj0oKT0+e30pLHRoaXMuX2FkZFRvUXVldWUoInRyYWNrIixbZSx0LG5dKX1tZXNzYWdlRnJvbVZpc2l0b3IoZSl7dGhpcy5fYWRkVG9RdWV1ZSgibWVzc2FnZUZyb21WaXNpdG9yIixbZV0pfW1lc3NhZ2VGcm9tT3BlcmF0b3IoZSx0PSEwKXt0aGlzLl9hZGRUb1F1ZXVlKCJtZXNzYWdlRnJvbU9wZXJhdG9yIixbZSx0XSl9c2V0VmlzaXRvckRhdGEoZSx0KXt0aGlzLl9hZGRUb1F1ZXVlKCJzZXRWaXNpdG9yRGF0YSIsW2UsdF0pfXNldENvbnRhY3RQcm9wZXJ0aWVzKGUsdCl7dGhpcy5fYWRkVG9RdWV1ZSgic2V0Q29udGFjdFByb3BlcnRpZXMiLFtlLHRdKX1hZGRWaXNpdG9yVGFncyhlLHQpe3RoaXMuX2FkZFRvUXVldWUoImFkZFZpc2l0b3JUYWdzIixbZSx0XSl9c2V0RmVhdHVyZXMoZT17fSl7dGhpcy5fYWRkVG9RdWV1ZSgic2V0RmVhdHVyZXMiLFtlXSl9YWRqdXN0U3R5bGVzKGUpe3RoaXMuX2FkZFRvUXVldWUoImFkanVzdFN0eWxlcyIsW2VdKX1zZXRWaXNpdG9yQ3VycmVuY3koZSl7dGhpcy5fYWRkVG9RdWV1ZSgic2V0VmlzaXRvckN1cnJlbmN5IixbZV0pfXNldERldmljZVR5cGUoZSl7dGhpcy5fYWRkVG9RdWV1ZSgic2V0RGV2aWNlVHlwZSIsW2VdKX19LHdpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrPXdpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrfHxmdW5jdGlvbihlKXtjb25zdCB0PURhdGUubm93KCk7cmV0dXJuIHNldFRpbWVvdXQoKCk9PntlKHtkaWRUaW1lb3V0OiExLHRpbWVSZW1haW5pbmcoKXtyZXR1cm4gTWF0aC5tYXgoMCw1MC0oRGF0ZS5ub3coKS10KSl9fSl9LDEpfSx3aW5kb3cuY2FuY2VsSWRsZUNhbGxiYWNrPXdpbmRvdy5jYW5jZWxJZGxlQ2FsbGJhY2t8fGZ1bmN0aW9uKGUpe2NsZWFyVGltZW91dChlKX0sd2luZG93LnJlcXVlc3RJZGxlQ2FsbGJhY2soKCk9Pntjb25zdCBlPW4oNDkyNikuQTt3aW5kb3cucmVxdWVzdElkbGVDYWxsYmFjaygoKT0+e2NvbnN0IHQ9ZSgpO3dpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrKCgpPT57aWYoKDAscy5vKSgpLm1hcmtEdXJhdGlvbigid2lkZ2V0X3RvdGFsX2xvYWRfaW5fbXMiLCJzdGFydCIsd2luZG93LkZJUlNUX1BPU1NJQkxFX0pTX0VYRUNVVElPTiksKDAscy5vKSgpLm1hcmtEdXJhdGlvbigid2lkZ2V0X2pzX3RvdGFsX2xvYWRfaW5fbXMiLCJzdGFydCIsd2luZG93LkZJUlNUX1BPU1NJQkxFX0pTX0VYRUNVVElPTiksKDAscy5vKSgpLm1hcmtEdXJhdGlvbigid2lkZ2V0X2pzX3RvdGFsX2xvYWRfaW5fbXMiLCJlbmQiKSx0KXtwKHQpOzB9fSx7dGltZW91dDo1MH0pfSx7dGltZW91dDoxMDB9KX0se3RpbWVvdXQ6MTAwfSl9LDUzOTE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDM5MzIpLG89big4NzI3KSxpPW4oODAwKSxhPW4oMzExNykscz1uKDk3MjkpLGM9big4NTI0KSx1PW4oMzI0NSksbD1uKDM5NzcpLGQ9bigxNTEwKSxmPW4oNzM2OCkscD1uKDc3MDkpLGg9IXAmJiFkKCJtYXAiLGZ1bmN0aW9uKCl7fSksbT0hcCYmIWgmJmYoIm1hcCIsVHlwZUVycm9yKSxnPXB8fGh8fG0seT1jKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5pdGVyYXRvcix0PWEobyh0aGlzLm5leHQsZSkpO2lmKCEodGhpcy5kb25lPSEhdC5kb25lKSlyZXR1cm4gdShlLHRoaXMubWFwcGVyLFt0LnZhbHVlLHRoaXMuY291bnRlcisrXSwhMCl9KTtyKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpnfSx7bWFwOmZ1bmN0aW9uKGUpe2EodGhpcyk7dHJ5e2koZSl9Y2F0Y2goZSl7bCh0aGlzLCJ0aHJvdyIsZSl9cmV0dXJuIG0/byhtLHRoaXMsZSk6bmV3IHkocyh0aGlzKSx7bWFwcGVyOmV9KX19KX0sNTQzMDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNjY3NCksbz1yKHt9LnRvU3RyaW5nKSxpPXIoIiIuc2xpY2UpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaShvKGUpLDgsLTEpfX0sNTQ2OTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24oNDA3MCl9LDU2ODU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDUwMjcpLG89big5NzkpLGk9big3NDQzKSxhPW4oNTk3Nykscz1uKDQzNjEpLGM9YSgiSUVfUFJPVE8iKSx1PU9iamVjdCxsPXUucHJvdG90eXBlO2UuZXhwb3J0cz1zP3UuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9aShlKTtpZihyKHQsYykpcmV0dXJuIHRbY107dmFyIG49dC5jb25zdHJ1Y3RvcjtyZXR1cm4gbyhuKSYmdCBpbnN0YW5jZW9mIG4/bi5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIHU/bDpudWxsfX0sNTcxODpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24oMTk5Myl9LDU3OTA6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7VnU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sZmo6ZnVuY3Rpb24oKXtyZXR1cm4gYX0scU86ZnVuY3Rpb24oKXtyZXR1cm4gc319KTt2YXIgcj1uKDIyNDcpLG89big3MzczKSxpPW4oMjAzNik7ZnVuY3Rpb24gYShlKXtjb25zdCB0PSgwLG8uemYpKCksbj17c2lkOigwLGkuZUopKCksaW5pdDohMCx0aW1lc3RhbXA6dCxzdGFydGVkOnQsZHVyYXRpb246MCxzdGF0dXM6Im9rIixlcnJvcnM6MCxpZ25vcmVEdXJhdGlvbjohMSx0b0pTT046KCk9PmZ1bmN0aW9uKGUpe3JldHVybigwLHIuQ2UpKHtzaWQ6YCR7ZS5zaWR9YCxpbml0OmUuaW5pdCxzdGFydGVkOm5ldyBEYXRlKDFlMyplLnN0YXJ0ZWQpLnRvSVNPU3RyaW5nKCksdGltZXN0YW1wOm5ldyBEYXRlKDFlMyplLnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKSxzdGF0dXM6ZS5zdGF0dXMsZXJyb3JzOmUuZXJyb3JzLGRpZDoibnVtYmVyIj09dHlwZW9mIGUuZGlkfHwic3RyaW5nIj09dHlwZW9mIGUuZGlkP2Ake2UuZGlkfWA6dm9pZCAwLGR1cmF0aW9uOmUuZHVyYXRpb24sYWJub3JtYWxfbWVjaGFuaXNtOmUuYWJub3JtYWxfbWVjaGFuaXNtLGF0dHJzOntyZWxlYXNlOmUucmVsZWFzZSxlbnZpcm9ubWVudDplLmVudmlyb25tZW50LGlwX2FkZHJlc3M6ZS5pcEFkZHJlc3MsdXNlcl9hZ2VudDplLnVzZXJBZ2VudH19KX0obil9O3JldHVybiBlJiZzKG4sZSksbn1mdW5jdGlvbiBzKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZih0LnVzZXImJighZS5pcEFkZHJlc3MmJnQudXNlci5pcF9hZGRyZXNzJiYoZS5pcEFkZHJlc3M9dC51c2VyLmlwX2FkZHJlc3MpLGUuZGlkfHx0LmRpZHx8KGUuZGlkPXQudXNlci5pZHx8dC51c2VyLmVtYWlsfHx0LnVzZXIudXNlcm5hbWUpKSxlLnRpbWVzdGFtcD10LnRpbWVzdGFtcHx8KDAsby56ZikoKSx0LmFibm9ybWFsX21lY2hhbmlzbSYmKGUuYWJub3JtYWxfbWVjaGFuaXNtPXQuYWJub3JtYWxfbWVjaGFuaXNtKSx0Lmlnbm9yZUR1cmF0aW9uJiYoZS5pZ25vcmVEdXJhdGlvbj10Lmlnbm9yZUR1cmF0aW9uKSx0LnNpZCYmKGUuc2lkPTMyPT09dC5zaWQubGVuZ3RoP3Quc2lkOigwLGkuZUopKCkpLHZvaWQgMCE9PXQuaW5pdCYmKGUuaW5pdD10LmluaXQpLCFlLmRpZCYmdC5kaWQmJihlLmRpZD1gJHt0LmRpZH1gKSwibnVtYmVyIj09dHlwZW9mIHQuc3RhcnRlZCYmKGUuc3RhcnRlZD10LnN0YXJ0ZWQpLGUuaWdub3JlRHVyYXRpb24pZS5kdXJhdGlvbj12b2lkIDA7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIHQuZHVyYXRpb24pZS5kdXJhdGlvbj10LmR1cmF0aW9uO2Vsc2V7Y29uc3QgdD1lLnRpbWVzdGFtcC1lLnN0YXJ0ZWQ7ZS5kdXJhdGlvbj10Pj0wP3Q6MH10LnJlbGVhc2UmJihlLnJlbGVhc2U9dC5yZWxlYXNlKSx0LmVudmlyb25tZW50JiYoZS5lbnZpcm9ubWVudD10LmVudmlyb25tZW50KSwhZS5pcEFkZHJlc3MmJnQuaXBBZGRyZXNzJiYoZS5pcEFkZHJlc3M9dC5pcEFkZHJlc3MpLCFlLnVzZXJBZ2VudCYmdC51c2VyQWdlbnQmJihlLnVzZXJBZ2VudD10LnVzZXJBZ2VudCksIm51bWJlciI9PXR5cGVvZiB0LmVycm9ycyYmKGUuZXJyb3JzPXQuZXJyb3JzKSx0LnN0YXR1cyYmKGUuc3RhdHVzPXQuc3RhdHVzKX1mdW5jdGlvbiBjKGUsdCl7bGV0IG49e307dD9uPXtzdGF0dXM6dH06Im9rIj09PWUuc3RhdHVzJiYobj17c3RhdHVzOiJleGl0ZWQifSkscyhlLG4pfX0sNTc5NDpmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2VudW1lcmFibGU6ISgxJmUpLGNvbmZpZ3VyYWJsZTohKDImZSksd3JpdGFibGU6ISg0JmUpLHZhbHVlOnR9fX0sNTgxMTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0wO248MjU2Oysrbil0W25dPShuKzI1NikudG9TdHJpbmcoMTYpLnN1YnN0cigxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSxuKXt2YXIgcj1ufHwwLG89dDtyZXR1cm5bb1tlW3IrK11dLG9bZVtyKytdXSxvW2VbcisrXV0sb1tlW3IrK11dLCItIixvW2VbcisrXV0sb1tlW3IrK11dLCItIixvW2VbcisrXV0sb1tlW3IrK11dLCItIixvW2VbcisrXV0sb1tlW3IrK11dLCItIixvW2VbcisrXV0sb1tlW3IrK11dLG9bZVtyKytdXSxvW2VbcisrXV0sb1tlW3IrK11dLG9bZVtyKytdXV0uam9pbigiIil9fSw1ODU1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7big0NTc4KX0sNTg3NTpmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixyPVN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKSxvPVN5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpLGk9U3ltYm9sLmZvcigicmVhY3QuZnJhZ21lbnQiKSxhPVN5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIikscz1TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpLGM9U3ltYm9sLmZvcigicmVhY3QucHJvdmlkZXIiKSx1PVN5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKSxsPVN5bWJvbC5mb3IoInJlYWN0LnNlcnZlcl9jb250ZXh0IiksZD1TeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpLGY9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKSxwPVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlX2xpc3QiKSxoPVN5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKSxtPVN5bWJvbC5mb3IoInJlYWN0LmxhenkiKSxnPVN5bWJvbC5mb3IoInJlYWN0Lm9mZnNjcmVlbiIpO2Z1bmN0aW9uIHkoZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSl7dmFyIHQ9ZS4kJHR5cGVvZjtzd2l0Y2godCl7Y2FzZSByOnN3aXRjaChlPWUudHlwZSl7Y2FzZSBpOmNhc2UgczpjYXNlIGE6Y2FzZSBmOmNhc2UgcDpyZXR1cm4gZTtkZWZhdWx0OnN3aXRjaChlPWUmJmUuJCR0eXBlb2Ype2Nhc2UgbDpjYXNlIHU6Y2FzZSBkOmNhc2UgbTpjYXNlIGg6Y2FzZSBjOnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuIHR9fWNhc2UgbzpyZXR1cm4gdH19fW49U3ltYm9sLmZvcigicmVhY3QubW9kdWxlLnJlZmVyZW5jZSIpLHQuaXNDb250ZXh0Q29uc3VtZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHkoZSk9PT11fX0sNTkyMzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtGVzpmdW5jdGlvbigpe3JldHVybiB1fSxyaTpmdW5jdGlvbigpe3JldHVybiBjfX0pO24oNTcxOCksbig3NDUwKTt2YXIgcj1uKDM0ODApLG89big0MDU1KSxpPW4oNTgzKSxhPW4oOTc4OCk7Y29uc3Qgcz1bYS5EJC5CT1QsYS5EJC5PUEVSQVRPUl07ZnVuY3Rpb24gYyhlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmZpbHRlcihlPT5lLmlkRnJvbVNlcnZlciYmcy5pbmNsdWRlcyhlLnNlbmRlcikpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gbnVsbDtyZXR1cm4gdFt0Lmxlbmd0aC0xXS5pZEZyb21TZXJ2ZXI/P251bGx9ZnVuY3Rpb24gdShlKXtjb25zdCB0PWMoZSksbj0oMCxyLnVzZVJlZikobnVsbCksYT0oMCxvLmQ0KShlPT5lLmlzUGFnZVZpc2libGUpLHM9KDAsby53QSkoKTsoMCxyLnVzZUVmZmVjdCkoKCk9PnthJiZudWxsIT09dCYmdCE9PW4uY3VycmVudCYmKHMoKDAsaS5pU0QpKCkpLG4uY3VycmVudD10KX0sW3MsYSx0XSl9fSw1OTY5OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big5MTcwKSxvPW4oNjY3NCksaT1uKDg0NjEpLGE9bigyNjM0KSxzPVVSTFNlYXJjaFBhcmFtcyxjPXMucHJvdG90eXBlLHU9byhjLmFwcGVuZCksbD1vKGMuZGVsZXRlKSxkPW8oYy5mb3JFYWNoKSxmPW8oW10ucHVzaCkscD1uZXcgcygiYT0xJmE9MiZiPTMiKTtwLmRlbGV0ZSgiYSIsMSkscC5kZWxldGUoImIiLHZvaWQgMCkscCsiIiE9ImE9MiImJnIoYywiZGVsZXRlIixmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49dDwyP3ZvaWQgMDphcmd1bWVudHNbMV07aWYodCYmdm9pZCAwPT09bilyZXR1cm4gbCh0aGlzLGUpO3ZhciByPVtdO2QodGhpcyxmdW5jdGlvbihlLHQpe2Yocix7a2V5OnQsdmFsdWU6ZX0pfSksYSh0LDEpO2Zvcih2YXIgbyxzPWkoZSksYz1pKG4pLHA9MCxoPTAsbT0hMSxnPXIubGVuZ3RoO3A8Zzspbz1yW3ArK10sbXx8by5rZXk9PT1zPyhtPSEwLGwodGhpcyxvLmtleSkpOmgrKztmb3IoO2g8ZzspKG89cltoKytdKS5rZXk9PT1zJiZvLnZhbHVlPT09Y3x8dSh0aGlzLG8ua2V5LG8udmFsdWUpfSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sNTk3NzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNjYwNyksbz1uKDM0MTMpLGk9cigia2V5cyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaVtlXXx8KGlbZV09byhlKSl9fSw2ZTM6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDk5NTMpLG89bigzMDExKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuLmdldCYmcihuLmdldCx0LHtnZXR0ZXI6ITB9KSxuLnNldCYmcihuLnNldCx0LHtzZXR0ZXI6ITB9KSxvLmYoZSx0LG4pfX0sNjAzMTpmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXt9fSw2MDQzOmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e319LDYwNTg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7dnU6ZnVuY3Rpb24oKXtyZXR1cm4geH0sVEg6ZnVuY3Rpb24oKXtyZXR1cm4gVH0sQzc6ZnVuY3Rpb24oKXtyZXR1cm4gYn0sYjY6ZnVuY3Rpb24oKXtyZXR1cm4gRX0sbEU6ZnVuY3Rpb24oKXtyZXR1cm4gU30sUG86ZnVuY3Rpb24oKXtyZXR1cm4gX30sb3U6ZnVuY3Rpb24oKXtyZXR1cm4gSX0sSG86ZnVuY3Rpb24oKXtyZXR1cm4gQX0seDI6ZnVuY3Rpb24oKXtyZXR1cm4ga30sTFo6ZnVuY3Rpb24oKXtyZXR1cm4geX0sdjpmdW5jdGlvbigpe3JldHVybiBnfX0pO24oOTMyOCksbig1NzE4KSxuKDIwMjApLG4oODM3Nyk7dmFyIHI9big4OTQ4KSxvPW4oNzMyNiksaT1uKDI3MjQpLGE9big2Mzg0KSxzPW4oOTc4OCk7bGV0IGM9bnVsbDtjb25zdCB1PSgpPT57aWYoIWMpe2NvbnN0IGU9KDAsci5EMCkoKXx8InByZXZpZXciO2M9YHRpZGlvX3N0YXRlX2xvY2tfJHtlfWAsKDAsci52VSkoKSYmKGMrPSJfZGVzaWdubW9kZSIpfXJldHVybiBjfSxsPSgpPT4idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmImxvY2tzImluIG5hdmlnYXRvcixkPWFzeW5jIGU9PmwoKT9uYXZpZ2F0b3IubG9ja3MucmVxdWVzdCh1KCkse21vZGU6ImV4Y2x1c2l2ZSJ9LCgpPT5lKCkpOmUoKTtsZXQgZj1udWxsO2NvbnN0IHA9KCk9PntpZighZil7Y29uc3QgZT0oMCxyLkQwKSgpfHwicHJldmlldyI7Zj1gdGlkaW9fc3RhdGVfJHtlfWAsKDAsci52VSkoKSYmKGYrPSJfZGVzaWdubW9kZSIpfXJldHVybiBmfTtsZXQgaD0hMDtjb25zdCBtPWU9PntpZighaClyZXR1cm4hMTt0cnl7Y29uc3QgdD0oMCxyLm1nKShlKSxuPUpTT04uc3RyaW5naWZ5KHQpO3JldHVybiBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShwKCksbiksITB9Y2F0Y2h7cmV0dXJuIGg9ITEsITF9fSxnPWFzeW5jIGU9PmQoKCk9Pm0oZSkpLHk9ZT0+bShlKSx2PWZ1bmN0aW9uKCl7bGV0IGU9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXTt0cnl7aWYoIWgpcmV0dXJuITE7Y29uc3QgdD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShwKCkpO2lmKCF0KXJldHVybjt0cnl7Y29uc3Qgbj04NjQwMCxyPUpTT04ucGFyc2UodCk7aWYoIXIudmlzaXRvcj8uaWQpcmV0dXJuO2lmKGUpe2xldCBlPXIudmlldztyLnZpZXc9PT1pLmwuZmx5JiYoZT1zLlNzLkNMT1NFRCk7bGV0IHQ9ci5zaG93TWVzc2FnZXNCdXR0b25DbGlja2VkVGltZXN0YW1wLG89ci5zaG93T2xkTWVzc2FnZXM7ci5zaG93TWVzc2FnZXNCdXR0b25DbGlja2VkVGltZXN0YW1wJiZNYXRoLmZsb29yKERhdGUubm93KCkvMWUzKS1yLnNob3dNZXNzYWdlc0J1dHRvbkNsaWNrZWRUaW1lc3RhbXA+biYmKHQ9bnVsbCxvPSExKTtjb25zdCBhPXtyZWNvbm5lY3RBdHRlbXB0Q291bnQ6MCxpc01vdW50ZWQ6ITEsdGlkaW9JZGVudGlmeUNoYW5nZWQ6ITEsb3BlcmF0b3JJc1R5cGluZzohMSxzaG93T3B0aW9uc0Ryb3Bkb3duOiExLG5ld01lc3NhZ2VFbW9qaTpudWxsLGJsb2NrZWRNZXNzYWdlOm51bGwsaXNFbW9qaVBhbmVsVmlzaWJsZTohMSxzZW5kVmlzaXRvck1lc3NhZ2VGbGFnOiExLGlzRHJhZ0FuZERyb3BBY3RpdmU6ITEsc2hvd1VzZXJEYXRhTW9kYWw6ITEsaXNQYWdlVmlzaWJsZTohMCxwb3B1cEltYWdlU3JjOiIiLGN1c3RvbUJyYW5kaW5nOiIiLGN1c3RvbUF2YXRhcjoiIix3aWRnZXRMYWJlbFRleHQ6IiIsbW9iaWxlSGFzaDohMCxhbGxvd0F0dGFjaG1lbnRzOiEwLGFsbG93RW1vamlzOiEwLGhpZGVDaGF0V2l0aFVzT25Ib21lOiExLG1lc3NhZ2VGb3JGbHk6bnVsbCxwcmVjaGF0U3Vic2NyaXB0aW9uQ2hlY2tib3hEZWZhdWx0VmFsdWU6ITEsYWlBc3Npc3RhbnQ6ITEsYWlBc3Npc3RhbnRJc1RoaW5raW5nOiExLGlmcmFtZU1vZGFsVXJsOm51bGwsZGVzaWduTW9kZTohMSxhbGxvd0Nsb3NlOiEwLHBlbmRpbmdBdHRhY2htZW50czpbXSx2aWV3OmUsc2hvd01lc3NhZ2VzQnV0dG9uQ2xpY2tlZFRpbWVzdGFtcDp0LHNob3dPbGRNZXNzYWdlczpvLHBlbmRpbmdBZGRUb0NhcnRDYXJkS2V5Om51bGx9O09iamVjdC5hc3NpZ24ocixhKX1yZXR1cm4gci5tZXNzYWdlcyYmKHIubWVzc2FnZXM9ci5tZXNzYWdlcy5tYXAoZT0+e2lmKCJ1cGxvYWRlZEZpbGUiPT09ZS50eXBlJiYiaW1hZ2UiPT09ZS5hdHRhY2htZW50VHlwZSl7Y29uc3QgdD1lO3JldHVybiB0LmltYWdlTG9hZGVkPSExLHR9cmV0dXJuIGV9KSkscn1jYXRjaChlKXtyZXR1cm4gdm9pZCgwLG8uc1EpKGUpfX1jYXRjaHtyZXR1cm59fSxiPWZ1bmN0aW9uKCl7cmV0dXJuIHYoIShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSl9LHc9ZT0+e2lmKGgpdHJ5e3JldHVybiBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHtwKCl9XyR7ZX1gKSwhMH1jYXRjaHtyZXR1cm4gdm9pZChoPSExKX19LF89YXN5bmMgZT0+ZCgoKT0+ITA9PT13KGUpKSxTPWU9PncoZSk7ZnVuY3Rpb24gRShlLHQpe3RyeXtpZihlLnZlcnNpb249PT10LnZlcnNpb24pcmV0dXJuIGU7Y29uc3Qgbj0oMCxyLm1nKSh0KSxvPSgwLHIubWcpKGUubWVzc2FnZXMpLGk9ey4uLmUudmlzaXRvciwuLi4oMCxhLmopKCl9LHM9ey4uLmUucHJlQ2hhdH0sYz0oMCxyLm1nKShlLnRpZGlvSWRlbnRpZnlEYXRhKTtyZXR1cm4gUygiY2FjaGUiKSx7Li4ubixtZXNzYWdlczpvLHZpc2l0b3I6aSx0aWRpb0lkZW50aWZ5RGF0YTpjLHByZUNoYXQ6c319Y2F0Y2goZSl7cmV0dXJuKDAsby5zUSkoZSksUygiY2FjaGUiKSwoMCxyLm1nKSh0KX19Y29uc3QgQz0oZSx0KT0+e2lmKCFoKXJldHVybiExO3RyeXtjb25zdCBuPUpTT04uc3RyaW5naWZ5KHQpO3JldHVybiB2b2lkIDA9PT1ufHxsb2NhbFN0b3JhZ2Uuc2V0SXRlbShgJHtwKCl9XyR7ZX1gLG4pLCEwfWNhdGNoe3JldHVybiBoPSExLCExfX0saz1hc3luYyhlLHQpPT5kKCgpPT5DKGUsdCkpLEE9KGUsdCk9PkMoZSx0KSxPPWU9PntpZihoKXRyeXtjb25zdCB0PWxvY2FsU3RvcmFnZS5nZXRJdGVtKGAke3AoKX1fJHtlfWApO2lmKCJ1bmRlZmluZWQiPT09dClyZXR1cm47cmV0dXJuIEpTT04ucGFyc2UodCl9Y2F0Y2h7cmV0dXJuIHZvaWQoaD0hMSl9fSxUPWFzeW5jIGU9Pihhc3luYyBlPT5sKCk/bmF2aWdhdG9yLmxvY2tzLnJlcXVlc3QodSgpLHttb2RlOiJzaGFyZWQifSwoKT0+ZSgpKTplKCkpKCgpPT5PKGUpKSx4PWU9Pk8oZSksST0oKT0+e2lmKCFoKXJldHVybiExO3RyeXtyZXR1cm4gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0ocCgpKSwhMH1jYXRjaHtyZXR1cm4gaD0hMSwhMX19fSw2MjY1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse0NwOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LEowOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LEo1OmZ1bmN0aW9uKCl7cmV0dXJuIHl9LFd0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LGdWOmZ1bmN0aW9uKCl7cmV0dXJuIHB9LG86ZnVuY3Rpb24oKXtyZXR1cm4gZH0scjpmdW5jdGlvbigpe3JldHVybiBsfSx3ZDpmdW5jdGlvbigpe3JldHVybiB1fX0pO3ZhciByPW4oMjY5MSksbz1uKDc4MCksaT1uKDU3OTApLGE9bigzMjI1KSxzPW4oOTAwNyk7ZnVuY3Rpb24gYyhlLHQpe3JldHVybigwLG8ubzUpKCkuY2FwdHVyZUV4Y2VwdGlvbihlLCgwLHMubGkpKHQpKX1mdW5jdGlvbiB1KGUsdCl7Y29uc3Qgbj0ic3RyaW5nIj09dHlwZW9mIHQ/dDp2b2lkIDAscj0ic3RyaW5nIiE9dHlwZW9mIHQ/e2NhcHR1cmVDb250ZXh0OnR9OnZvaWQgMDtyZXR1cm4oMCxvLm81KSgpLmNhcHR1cmVNZXNzYWdlKGUsbixyKX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuKDAsby5vNSkoKS5jYXB0dXJlRXZlbnQoZSx0KX1mdW5jdGlvbiBkKGUsdCl7KDAsby5ybSkoKS5zZXRDb250ZXh0KGUsdCl9ZnVuY3Rpb24gZihlKXsoMCxvLnJtKSgpLnNldFRhZ3MoZSl9ZnVuY3Rpb24gcChlKXsoMCxvLnJtKSgpLnNldFVzZXIoZSl9ZnVuY3Rpb24gaChlKXtjb25zdCB0PSgwLG8uS1UpKCksbj0oMCxvLnJtKSgpLHM9KDAsby5vNSkoKSx7cmVsZWFzZTpjLGVudmlyb25tZW50OnU9ci5VfT10JiZ0LmdldE9wdGlvbnMoKXx8e30se3VzZXJBZ2VudDpsfT1hLk8ubmF2aWdhdG9yfHx7fSxkPSgwLGkuZmopKHtyZWxlYXNlOmMsZW52aXJvbm1lbnQ6dSx1c2VyOnMuZ2V0VXNlcigpfHxuLmdldFVzZXIoKSwuLi5sJiZ7dXNlckFnZW50Omx9LC4uLmV9KSxmPW4uZ2V0U2Vzc2lvbigpO3JldHVybiBmJiYib2siPT09Zi5zdGF0dXMmJigwLGkucU8pKGYse3N0YXR1czoiZXhpdGVkIn0pLG0oKSxuLnNldFNlc3Npb24oZCkscy5zZXRTZXNzaW9uKGQpLGR9ZnVuY3Rpb24gbSgpe2NvbnN0IGU9KDAsby5ybSkoKSx0PSgwLG8ubzUpKCksbj10LmdldFNlc3Npb24oKXx8ZS5nZXRTZXNzaW9uKCk7biYmKDAsaS5WdSkobiksZygpLGUuc2V0U2Vzc2lvbigpLHQuc2V0U2Vzc2lvbigpfWZ1bmN0aW9uIGcoKXtjb25zdCBlPSgwLG8ucm0pKCksdD0oMCxvLm81KSgpLG49KDAsby5LVSkoKSxyPXQuZ2V0U2Vzc2lvbigpfHxlLmdldFNlc3Npb24oKTtyJiZuJiZuLmNhcHR1cmVTZXNzaW9uKHIpfWZ1bmN0aW9uIHkoKXthcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdP20oKTpnKCl9fSw2Mzg0OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse2o6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sdDpmdW5jdGlvbigpe3JldHVybiBzfX0pO3ZhciByPW4oNzY1Miksbz1uLm4ociksaT1uKDg5NDgpO2Z1bmN0aW9uIGEoKXtjb25zdCBlPSgwLGkuWDUpKCksdD0oMCxpLkRqKSgpO2xldCBuPSIiO3RyeXtuPW8oKS5kZXRlcm1pbmUoKS5uYW1lKCl9Y2F0Y2h7fWxldCByPSJ1Ijt0cnl7Y29uc3QgZT13aW5kb3dbU3RyaW5nLmZyb21DaGFyQ29kZSgxMTAsOTcsMTE4LDEwNSwxMDMsOTcsMTE2LDExMSwxMTQpXVtTdHJpbmcuZnJvbUNoYXJDb2RlKDExOSwxMDEsOTgsMTAwLDExNCwxMDUsMTE4LDEwMSwxMTQpXTtyPXZvaWQgMD09PWU/InUiOiJib29sZWFuIj09dHlwZW9mIGU/ZT8iZiI6InQiOiJtIn1jYXRjaHtyPSJlIn1yZXR1cm57aXA6bnVsbCxsYW5nOigwLGkubWYpKCksYnJvd3NlcjplLm5hbWUsYnJvd3Nlcl92ZXJzaW9uOmUudmVyc2lvbix1cmw6KDAsaS5icCkoKSxyZWZlcjp3aW5kb3cucGFyZW50LmRvY3VtZW50LnJlZmVycmVyLG9zX25hbWU6dC5uYW1lLG9zX3ZlcnNpb246dC52ZXJzaW9uLHNjcmVlbl93aWR0aDp3aW5kb3cuc2NyZWVuLndpZHRoLHNjcmVlbl9oZWlnaHQ6d2luZG93LnNjcmVlbi5oZWlnaHQsdXNlcl9hZ2VudDp3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCx0aW1lem9uZTpuLG1vYmlsZTooMCxpLkt1KSgpLGlzX2NoYXRfb25fc2l0ZTooMCxpLmJ2KSgpLHdkOnJ9fWZ1bmN0aW9uIHMoKXtjb25zdCBlPSgwLGkuVzcpKCk7cmV0dXJue2lkOmUsb3JpZ2luYWxWaXNpdG9ySWQ6ZSxkaXN0aW5jdF9pZDpudWxsLGNvdW50cnk6bnVsbCxuYW1lOiIiLGNpdHk6bnVsbCxicm93c2VyX3Nlc3Npb25faWQ6IiIsY3JlYXRlZDooMCxpLkxuKSgpLGVtYWlsOiIiLHByb2plY3RfcHVibGljX2tleTooMCxpLkQwKSgpLHBob25lOiIiLC4uLmEoKX19fSw2NDIwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzOTUzKSxvPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighZGVsZXRlIGVbdF0pdGhyb3cgbmV3IG8oIkNhbm5vdCBkZWxldGUgcHJvcGVydHkgIityKHQpKyIgb2YgIityKGUpKX19LDY0NzE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDcyNDEpLG89big5NzkpLGk9big3NjIzKSxhPW4oNDIxNCkscz1PYmplY3Q7ZS5leHBvcnRzPWE/ZnVuY3Rpb24oZSl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBlfTpmdW5jdGlvbihlKXt2YXIgdD1yKCJTeW1ib2wiKTtyZXR1cm4gbyh0KSYmaSh0LnByb3RvdHlwZSxzKGUpKX19LDY1NDI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7JEU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sQWs6ZnVuY3Rpb24oKXtyZXR1cm4gc30scGM6ZnVuY3Rpb24oKXtyZXR1cm4gYX19KTt2YXIgcj1uKDg5NDgpO2NvbnN0IG89e2RlZmF1bHRTb3VuZFBhdGg6YCR7ci5QRX0vdHVydXJ1Lm1wM2AsbmV3U2tpblNvdW5kUGF0aDpgJHtyLlBFfS9ub3RpZmljYXRpb24tc291bmQubXAzYH0saT1uZXcgQXVkaW87ZnVuY3Rpb24gYShlKXtlJiYoaS5zcmM9by5uZXdTa2luU291bmRQYXRoKTt0cnl7aS52b2x1bWU9MDtjb25zdCBlPWkucGxheSgpOyJmaXJlZm94IiE9PXIuTGQmJihpLnBhdXNlKCksaS5sb2FkJiZpLmxvYWQoKSksdm9pZCAwIT09ZSYmZS5jYXRjaCgoKT0+e30pfWNhdGNoe319ZnVuY3Rpb24gcyhlKXt0cnl7ZS52b2x1bWU9Ljc7Y29uc3QgdD1lLnBsYXkoKTt2b2lkIDAhPT10JiZ0LmNhdGNoKCgpPT57fSl9Y2F0Y2h7fX1mdW5jdGlvbiBjKGUpe2UmJihpLnNyYz1vLm5ld1NraW5Tb3VuZFBhdGgpLHMoaSl9aS5zcmM9by5kZWZhdWx0U291bmRQYXRoLGkudm9sdW1lPS43fSw2NTkzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0vXlxzK3xccyskL2csbz0vXlstK10weFswLTlhLWZdKyQvaSxpPS9eMGJbMDFdKyQvaSxhPS9eMG9bMC03XSskL2kscz1wYXJzZUludCxjPSJvYmplY3QiPT10eXBlb2Ygbi5nJiZuLmcmJm4uZy5PYmplY3Q9PT1PYmplY3QmJm4uZyx1PSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsbD1jfHx1fHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxmPU1hdGgubWF4LHA9TWF0aC5taW4saD1mdW5jdGlvbigpe3JldHVybiBsLkRhdGUubm93KCl9O2Z1bmN0aW9uIG0oZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuISFlJiYoIm9iamVjdCI9PXR8fCJmdW5jdGlvbiI9PXQpfWZ1bmN0aW9uIGcoZSl7aWYoIm51bWJlciI9PXR5cGVvZiBlKXJldHVybiBlO2lmKGZ1bmN0aW9uKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZXx8ZnVuY3Rpb24oZSl7cmV0dXJuISFlJiYib2JqZWN0Ij09dHlwZW9mIGV9KGUpJiYiW29iamVjdCBTeW1ib2xdIj09ZC5jYWxsKGUpfShlKSlyZXR1cm4gTmFOO2lmKG0oZSkpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlLnZhbHVlT2Y/ZS52YWx1ZU9mKCk6ZTtlPW0odCk/dCsiIjp0fWlmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gMD09PWU/ZTorZTtlPWUucmVwbGFjZShyLCIiKTt2YXIgbj1pLnRlc3QoZSk7cmV0dXJuIG58fGEudGVzdChlKT9zKGUuc2xpY2UoMiksbj8yOjgpOm8udGVzdChlKT9OYU46K2V9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGksYSxzLGMsdT0wLGw9ITEsZD0hMSx5PSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIGEgZnVuY3Rpb24iKTtmdW5jdGlvbiB2KHQpe3ZhciBuPXIsaT1vO3JldHVybiByPW89dm9pZCAwLHU9dCxhPWUuYXBwbHkoaSxuKX1mdW5jdGlvbiBiKGUpe3ZhciBuPWUtYztyZXR1cm4gdm9pZCAwPT09Y3x8bj49dHx8bjwwfHxkJiZlLXU+PWl9ZnVuY3Rpb24gdygpe3ZhciBlPWgoKTtpZihiKGUpKXJldHVybiBfKGUpO3M9c2V0VGltZW91dCh3LGZ1bmN0aW9uKGUpe3ZhciBuPXQtKGUtYyk7cmV0dXJuIGQ/cChuLGktKGUtdSkpOm59KGUpKX1mdW5jdGlvbiBfKGUpe3JldHVybiBzPXZvaWQgMCx5JiZyP3YoZSk6KHI9bz12b2lkIDAsYSl9ZnVuY3Rpb24gUygpe3ZhciBlPWgoKSxuPWIoZSk7aWYocj1hcmd1bWVudHMsbz10aGlzLGM9ZSxuKXtpZih2b2lkIDA9PT1zKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdT1lLHM9c2V0VGltZW91dCh3LHQpLGw/dihlKTphfShjKTtpZihkKXJldHVybiBzPXNldFRpbWVvdXQodyx0KSx2KGMpfXJldHVybiB2b2lkIDA9PT1zJiYocz1zZXRUaW1lb3V0KHcsdCkpLGF9cmV0dXJuIHQ9Zyh0KXx8MCxtKG4pJiYobD0hIW4ubGVhZGluZyxpPShkPSJtYXhXYWl0ImluIG4pP2YoZyhuLm1heFdhaXQpfHwwLHQpOmkseT0idHJhaWxpbmciaW4gbj8hIW4udHJhaWxpbmc6eSksUy5jYW5jZWw9ZnVuY3Rpb24oKXt2b2lkIDAhPT1zJiZjbGVhclRpbWVvdXQocyksdT0wLHI9Yz1vPXM9dm9pZCAwfSxTLmZsdXNoPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PXM/YTpfKGgoKSl9LFN9fSw2NjA3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big5NzQzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcltlXXx8KHJbZV09dHx8e30pfX0sNjY3NDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTI0Miksbz1GdW5jdGlvbi5wcm90b3R5cGUsaT1vLmNhbGwsYT1yJiZvLmJpbmQuYmluZChpLGkpO2UuZXhwb3J0cz1yP2E6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGkuYXBwbHkoZSxhcmd1bWVudHMpfX19LDY3MDE6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7eTpmdW5jdGlvbigpe3JldHVybiByfX0pO2NvbnN0IHI9ZT0+ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYibGltaXRJbk1CImluIGUmJm51bGwhPT1lLmxpbWl0SW5NQiYmIm51bWJlciI9PXR5cGVvZiBlLmxpbWl0SW5NQj97bGltaXRJbk1COmUubGltaXRJbk1CfTpudWxsfSw2NzYzOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzNDgwKSxvPVN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKSxpPVN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50IiksYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHM9ci5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixjPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07ZnVuY3Rpb24gdShlLHQsbil7dmFyIHIsaT17fSx1PW51bGwsbD1udWxsO2ZvcihyIGluIHZvaWQgMCE9PW4mJih1PSIiK24pLHZvaWQgMCE9PXQua2V5JiYodT0iIit0LmtleSksdm9pZCAwIT09dC5yZWYmJihsPXQucmVmKSx0KWEuY2FsbCh0LHIpJiYhYy5oYXNPd25Qcm9wZXJ0eShyKSYmKGlbcl09dFtyXSk7aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKHIgaW4gdD1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1pW3JdJiYoaVtyXT10W3JdKTtyZXR1cm57JCR0eXBlb2Y6byx0eXBlOmUsa2V5OnUscmVmOmwscHJvcHM6aSxfb3duZXI6cy5jdXJyZW50fX10LkZyYWdtZW50PWksdC5qc3g9dSx0LmpzeHM9dX0sNjkyNDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtLNTpmdW5jdGlvbigpe3JldHVybiBzfSxMWTpmdW5jdGlvbigpe3JldHVybiBkfSxOeTpmdW5jdGlvbigpe3JldHVybiBhfSxPUjpmdW5jdGlvbigpe3JldHVybiBsfSxUSDpmdW5jdGlvbigpe3JldHVybiBvfSxhTDpmdW5jdGlvbigpe3JldHVybiBjfX0pO3ZhciByPW4oODQ0OCk7Y29uc3Qgbz0yNCxpPTc0NyxhPXtvbmx5QnViYmxlOiJvbmx5QnViYmxlIixvbmx5QnViYmxlU21hbGw6Im9ubHlCdWJibGVTbWFsbCIsb25seUJ1YmJsZU1lZGl1bToib25seUJ1YmJsZU1lZGl1bSIsb25seUJ1YmJsZUxhcmdlOiJvbmx5QnViYmxlTGFyZ2UiLG9ubHlTaWRlYmFyOiJvbmx5U2lkZWJhciIsYnViYmxlV2l0aExhYmVsOiJidWJibGVXaXRoTGFiZWwiLGNoYXRTaXplMToiY2hhdFNpemUxIixjaGF0U2l6ZTI6ImNoYXRTaXplMiIsY2hhdFNpemUzOiJjaGF0U2l6ZTMiLG1vYmlsZToibW9iaWxlIixkeW5hbWljOiJkeW5hbWljIn0scz17W2Eub25seUJ1YmJsZV06e3dpZHRoOiI5NHB4IixoZWlnaHQ6Ijk0cHgiLGJvdHRvbToiMzVweCIscmlnaHQ6IjlweCIsbGVmdDoiOXB4In0sW2Eub25seUJ1YmJsZVNtYWxsXTp7d2lkdGg6IjYwcHgiLGhlaWdodDoiNjBweCIsYm90dG9tOiIyMHB4IixyaWdodDoiMTBweCIsbGVmdDoiMTBweCJ9LFthLm9ubHlCdWJibGVNZWRpdW1dOnt3aWR0aDoiODBweCIsaGVpZ2h0OiI4MHB4Iixib3R0b206IjEwcHgifSxbYS5vbmx5QnViYmxlTGFyZ2VdOnt3aWR0aDoiOTRweCIsaGVpZ2h0OiI5NHB4Iixib3R0b206IjE1cHgiLHJpZ2h0OiItN3B4IixsZWZ0OiItN3B4In0sW2EuYnViYmxlV2l0aExhYmVsXTp7Ym90dG9tOiIzNXB4IixyaWdodDoiOXB4IixsZWZ0OiI5cHgifSxbYS5vbmx5U2lkZWJhcl06e2JvdHRvbToiNTAlIn19LGM9KDAsci5WOCkoKT8iMzBweCA0N3B4IDQ3cHggNDdweCI6IjQ3cHggMzBweCA0N3B4IDQ3cHgiLHU9e3dpZHRoOiI0MjRweCIsaGVpZ2h0OiI3NDdweCIsbWF4SGVpZ2h0OiIxMDAlIn0sbD0oZSx0KT0+e2xldCBuPWU7InN0cmluZyI9PXR5cGVvZiBlJiYoZS5pbmNsdWRlcygicHgiKXx8ZS5pbmNsdWRlcygiJSIpfHwobj1gJHtlfXB4YCkpO2xldCByPXQ7InN0cmluZyI9PXR5cGVvZiB0JiYodC5pbmNsdWRlcygicHgiKXx8dC5pbmNsdWRlcygiJSIpfHwocj1gJHt0fXB4YCkpLHUud2lkdGg9InN0cmluZyI9PXR5cGVvZiBuP246YCR7bn1weGAsdS5oZWlnaHQ9InN0cmluZyI9PXR5cGVvZiByP3I6YCR7cn1weGB9LGQ9ZT0+KHtbYS5vbmx5QnViYmxlXTp7d2lkdGg6IjExMnB4IixoZWlnaHQ6IjE0MHB4In0sW2Eub25seUJ1YmJsZVNtYWxsXTp7d2lkdGg6IjcwcHgiLGhlaWdodDoiNzVweCJ9LFthLm9ubHlCdWJibGVNZWRpdW1dOnt3aWR0aDoiODBweCIsaGVpZ2h0OiI4NXB4In0sW2Eub25seVNpZGViYXJdOnt3aWR0aDoiNjBweCIsaGVpZ2h0OiIzNTBweCIsYm90dG9tOiI1MCUiLHRyYW5zZm9ybToidHJhbnNsYXRlWSg1MCUpIn0sW2EuY2hhdFNpemUxXTp7d2lkdGg6IjQyNHB4IixoZWlnaHQ6Ijc0N3B4IixtYXhIZWlnaHQ6IjEwMCUifSxbYS5jaGF0U2l6ZTJdOnt3aWR0aDoiNDI0cHgiLGhlaWdodDpgJHtpK299cHhgLG1heEhlaWdodDoiMTAwJSJ9LFthLmNoYXRTaXplM106e3dpZHRoOiI0MjRweCIsaGVpZ2h0OmAke2krMipvfXB4YCxtYXhIZWlnaHQ6IjEwMCUifSxbYS5tb2JpbGVdOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19W2VdfHx1KX0sNzEzNzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtYcjpmdW5jdGlvbigpe3JldHVybiBhfSxndDpmdW5jdGlvbigpe3JldHVybiBpfSx4djpmdW5jdGlvbigpe3JldHVybiBvfX0pO3ZhciByPW4oOTAwNCk7ZnVuY3Rpb24gbyhlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV8fDA9PT10fHxlLmxlbmd0aDw9dD9lOmAke2Uuc2xpY2UoMCx0KX0uLi5gfWZ1bmN0aW9uIGkoZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4iIjtjb25zdCBuPVtdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCBvPWVbdF07dHJ5eygwLHIuTDIpKG8pP24ucHVzaCgiW1Z1ZVZpZXdNb2RlbF0iKTpuLnB1c2goU3RyaW5nKG8pKX1jYXRjaChlKXtuLnB1c2goIlt2YWx1ZSBjYW5ub3QgYmUgc2VyaWFsaXplZF0iKX19cmV0dXJuIG4uam9pbih0KX1mdW5jdGlvbiBhKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07cmV0dXJuKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXSkuc29tZShuPT5mdW5jdGlvbihlLHQpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07cmV0dXJuISEoMCxyLktnKShlKSYmKCgwLHIuZ2QpKHQpP3QudGVzdChlKTohISgwLHIuS2cpKHQpJiYobj9lPT09dDplLmluY2x1ZGVzKHQpKSl9KGUsbix0KSl9fSw3MjQxOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3NTcwKSxvPW4oOTc5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyPyhuPXJbZV0sbyhuKT9uOnZvaWQgMCk6cltlXSYmcltlXVt0XTt2YXIgbn19LDczMjY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7REg6ZnVuY3Rpb24oKXtyZXR1cm4gc30sc1E6ZnVuY3Rpb24oKXtyZXR1cm4gYX19KTt2YXIgcj1uKDYyNjUpLG89big3ODApO2NvbnN0IGk9ImJvb2xlYW4iPT10eXBlb2YgUFJPRFVDVElPTl9ERVZFTE9QTUVOVF9CVUlMRCYmITA9PT1QUk9EVUNUSU9OX0RFVkVMT1BNRU5UX0JVSUxELGE9ZnVuY3Rpb24oZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LG49ZTtpZigic3RyaW5nIj09dHlwZW9mIGUpe2NvbnN0IHQ9bmV3IEVycm9yKGUpO3QubmFtZT1lLG49dH1pfHxvLnY0KGU9Pnt0JiZlLnNldEV4dHJhcyh0KSxlLnNldExldmVsKCJ3YXJuaW5nIiksci5DcChuKX0pfSxzPWZ1bmN0aW9uKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpfHxvLnY0KG49Pnt0JiZuLnNldEV4dHJhcyh0KSxuLnNldExldmVsKCJpbmZvIiksci53ZChlKX0pfX0sNzM2NjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtBOmZ1bmN0aW9uKCl7cmV0dXJuIG9lfX0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdD10aGlzO3RoaXMuX2luc2VydFRhZz1mdW5jdGlvbihlKXt2YXIgbjtuPTA9PT10LnRhZ3MubGVuZ3RoP3QuaW5zZXJ0aW9uUG9pbnQ/dC5pbnNlcnRpb25Qb2ludC5uZXh0U2libGluZzp0LnByZXBlbmQ/dC5jb250YWluZXIuZmlyc3RDaGlsZDp0LmJlZm9yZTp0LnRhZ3NbdC50YWdzLmxlbmd0aC0xXS5uZXh0U2libGluZyx0LmNvbnRhaW5lci5pbnNlcnRCZWZvcmUoZSxuKSx0LnRhZ3MucHVzaChlKX0sdGhpcy5pc1NwZWVkeT12b2lkIDA9PT1lLnNwZWVkeXx8ZS5zcGVlZHksdGhpcy50YWdzPVtdLHRoaXMuY3RyPTAsdGhpcy5ub25jZT1lLm5vbmNlLHRoaXMua2V5PWUua2V5LHRoaXMuY29udGFpbmVyPWUuY29udGFpbmVyLHRoaXMucHJlcGVuZD1lLnByZXBlbmQsdGhpcy5pbnNlcnRpb25Qb2ludD1lLmluc2VydGlvblBvaW50LHRoaXMuYmVmb3JlPW51bGx9dmFyIHQ9ZS5wcm90b3R5cGU7cmV0dXJuIHQuaHlkcmF0ZT1mdW5jdGlvbihlKXtlLmZvckVhY2godGhpcy5faW5zZXJ0VGFnKX0sdC5pbnNlcnQ9ZnVuY3Rpb24oZSl7dGhpcy5jdHIlKHRoaXMuaXNTcGVlZHk/NjVlMzoxKT09MCYmdGhpcy5faW5zZXJ0VGFnKGZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJkYXRhLWVtb3Rpb24iLGUua2V5KSx2b2lkIDAhPT1lLm5vbmNlJiZ0LnNldEF0dHJpYnV0ZSgibm9uY2UiLGUubm9uY2UpLHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpKSx0LnNldEF0dHJpYnV0ZSgiZGF0YS1zIiwiIiksdH0odGhpcykpO3ZhciB0PXRoaXMudGFnc1t0aGlzLnRhZ3MubGVuZ3RoLTFdO2lmKHRoaXMuaXNTcGVlZHkpe3ZhciBuPWZ1bmN0aW9uKGUpe2lmKGUuc2hlZXQpcmV0dXJuIGUuc2hlZXQ7Zm9yKHZhciB0PTA7dDxkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGg7dCsrKWlmKGRvY3VtZW50LnN0eWxlU2hlZXRzW3RdLm93bmVyTm9kZT09PWUpcmV0dXJuIGRvY3VtZW50LnN0eWxlU2hlZXRzW3RdfSh0KTt0cnl7bi5pbnNlcnRSdWxlKGUsbi5jc3NSdWxlcy5sZW5ndGgpfWNhdGNoKGUpe319ZWxzZSB0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpKTt0aGlzLmN0cisrfSx0LmZsdXNoPWZ1bmN0aW9uKCl7dGhpcy50YWdzLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIG51bGw9PSh0PWUucGFyZW50Tm9kZSk/dm9pZCAwOnQucmVtb3ZlQ2hpbGQoZSl9KSx0aGlzLnRhZ3M9W10sdGhpcy5jdHI9MH0sZX0oKSxvPU1hdGguYWJzLGk9U3RyaW5nLmZyb21DaGFyQ29kZSxhPU9iamVjdC5hc3NpZ247ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZS50cmltKCl9ZnVuY3Rpb24gYyhlLHQsbil7cmV0dXJuIGUucmVwbGFjZSh0LG4pfWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gZS5pbmRleE9mKHQpfWZ1bmN0aW9uIGwoZSx0KXtyZXR1cm4gMHxlLmNoYXJDb2RlQXQodCl9ZnVuY3Rpb24gZChlLHQsbil7cmV0dXJuIGUuc2xpY2UodCxuKX1mdW5jdGlvbiBmKGUpe3JldHVybiBlLmxlbmd0aH1mdW5jdGlvbiBwKGUpe3JldHVybiBlLmxlbmd0aH1mdW5jdGlvbiBoKGUsdCl7cmV0dXJuIHQucHVzaChlKSxlfXZhciBtPTEsZz0xLHk9MCx2PTAsYj0wLHc9IiI7ZnVuY3Rpb24gXyhlLHQsbixyLG8saSxhKXtyZXR1cm57dmFsdWU6ZSxyb290OnQscGFyZW50Om4sdHlwZTpyLHByb3BzOm8sY2hpbGRyZW46aSxsaW5lOm0sY29sdW1uOmcsbGVuZ3RoOmEscmV0dXJuOiIifX1mdW5jdGlvbiBTKGUsdCl7cmV0dXJuIGEoXygiIixudWxsLG51bGwsIiIsbnVsbCxudWxsLDApLGUse2xlbmd0aDotZS5sZW5ndGh9LHQpfWZ1bmN0aW9uIEUoKXtyZXR1cm4gYj12PjA/bCh3LC0tdik6MCxnLS0sMTA9PT1iJiYoZz0xLG0tLSksYn1mdW5jdGlvbiBDKCl7cmV0dXJuIGI9djx5P2wodyx2KyspOjAsZysrLDEwPT09YiYmKGc9MSxtKyspLGJ9ZnVuY3Rpb24gaygpe3JldHVybiBsKHcsdil9ZnVuY3Rpb24gQSgpe3JldHVybiB2fWZ1bmN0aW9uIE8oZSx0KXtyZXR1cm4gZCh3LGUsdCl9ZnVuY3Rpb24gVChlKXtzd2l0Y2goZSl7Y2FzZSAwOmNhc2UgOTpjYXNlIDEwOmNhc2UgMTM6Y2FzZSAzMjpyZXR1cm4gNTtjYXNlIDMzOmNhc2UgNDM6Y2FzZSA0NDpjYXNlIDQ3OmNhc2UgNjI6Y2FzZSA2NDpjYXNlIDEyNjpjYXNlIDU5OmNhc2UgMTIzOmNhc2UgMTI1OnJldHVybiA0O2Nhc2UgNTg6cmV0dXJuIDM7Y2FzZSAzNDpjYXNlIDM5OmNhc2UgNDA6Y2FzZSA5MTpyZXR1cm4gMjtjYXNlIDQxOmNhc2UgOTM6cmV0dXJuIDF9cmV0dXJuIDB9ZnVuY3Rpb24geChlKXtyZXR1cm4gbT1nPTEseT1mKHc9ZSksdj0wLFtdfWZ1bmN0aW9uIEkoZSl7cmV0dXJuIHc9IiIsZX1mdW5jdGlvbiBOKGUpe3JldHVybiBzKE8odi0xLE0oOTE9PT1lP2UrMjo0MD09PWU/ZSsxOmUpKSl9ZnVuY3Rpb24gTChlKXtmb3IoOyhiPWsoKSkmJmI8MzM7KUMoKTtyZXR1cm4gVChlKT4yfHxUKGIpPjM/IiI6IiAifWZ1bmN0aW9uIFAoZSx0KXtmb3IoOy0tdCYmQygpJiYhKGI8NDh8fGI+MTAyfHxiPjU3JiZiPDY1fHxiPjcwJiZiPDk3KTspO3JldHVybiBPKGUsQSgpKyh0PDYmJjMyPT1rKCkmJjMyPT1DKCkpKX1mdW5jdGlvbiBNKGUpe2Zvcig7QygpOylzd2l0Y2goYil7Y2FzZSBlOnJldHVybiB2O2Nhc2UgMzQ6Y2FzZSAzOTozNCE9PWUmJjM5IT09ZSYmTShiKTticmVhaztjYXNlIDQwOjQxPT09ZSYmTShlKTticmVhaztjYXNlIDkyOkMoKX1yZXR1cm4gdn1mdW5jdGlvbiBSKGUsdCl7Zm9yKDtDKCkmJmUrYiE9PTU3JiYoZStiIT09ODR8fDQ3IT09aygpKTspO3JldHVybiIvKiIrTyh0LHYtMSkrIioiK2koNDc9PT1lP2U6QygpKX1mdW5jdGlvbiBEKGUpe2Zvcig7IVQoaygpKTspQygpO3JldHVybiBPKGUsdil9dmFyIEY9Ii1tcy0iLGo9Ii1tb3otIixCPSItd2Via2l0LSIsVj0iY29tbSIsVT0icnVsZSIsej0iZGVjbCIsSD0iQGtleWZyYW1lcyI7ZnVuY3Rpb24gJChlLHQpe2Zvcih2YXIgbj0iIixyPXAoZSksbz0wO288cjtvKyspbis9dChlW29dLG8sZSx0KXx8IiI7cmV0dXJuIG59ZnVuY3Rpb24gWShlLHQsbixyKXtzd2l0Y2goZS50eXBlKXtjYXNlIkBsYXllciI6aWYoZS5jaGlsZHJlbi5sZW5ndGgpYnJlYWs7Y2FzZSJAaW1wb3J0IjpjYXNlIHo6cmV0dXJuIGUucmV0dXJuPWUucmV0dXJufHxlLnZhbHVlO2Nhc2UgVjpyZXR1cm4iIjtjYXNlIEg6cmV0dXJuIGUucmV0dXJuPWUudmFsdWUrInsiKyQoZS5jaGlsZHJlbixyKSsifSI7Y2FzZSBVOmUudmFsdWU9ZS5wcm9wcy5qb2luKCIsIil9cmV0dXJuIGYobj0kKGUuY2hpbGRyZW4scikpP2UucmV0dXJuPWUudmFsdWUrInsiK24rIn0iOiIifWZ1bmN0aW9uIHEoZSl7cmV0dXJuIEkoVygiIixudWxsLG51bGwsbnVsbCxbIiJdLGU9eChlKSwwLFswXSxlKSl9ZnVuY3Rpb24gVyhlLHQsbixyLG8sYSxzLGQscCl7Zm9yKHZhciBtPTAsZz0wLHk9cyx2PTAsYj0wLHc9MCxfPTEsUz0xLE89MSxUPTAseD0iIixJPW8sTT1hLEY9cixqPXg7Uzspc3dpdGNoKHc9VCxUPUMoKSl7Y2FzZSA0MDppZigxMDghPXcmJjU4PT1sKGoseS0xKSl7LTEhPXUoais9YyhOKFQpLCImIiwiJlxmIiksIiZcZiIpJiYoTz0tMSk7YnJlYWt9Y2FzZSAzNDpjYXNlIDM5OmNhc2UgOTE6ais9TihUKTticmVhaztjYXNlIDk6Y2FzZSAxMDpjYXNlIDEzOmNhc2UgMzI6ais9TCh3KTticmVhaztjYXNlIDkyOmorPVAoQSgpLTEsNyk7Y29udGludWU7Y2FzZSA0Nzpzd2l0Y2goaygpKXtjYXNlIDQyOmNhc2UgNDc6aChRKFIoQygpLEEoKSksdCxuKSxwKTticmVhaztkZWZhdWx0OmorPSIvIn1icmVhaztjYXNlIDEyMypfOmRbbSsrXT1mKGopKk87Y2FzZSAxMjUqXzpjYXNlIDU5OmNhc2UgMDpzd2l0Y2goVCl7Y2FzZSAwOmNhc2UgMTI1OlM9MDtjYXNlIDU5K2c6LTE9PU8mJihqPWMoaiwvXGYvZywiIikpLGI+MCYmZihqKS15JiZoKGI+MzI/SyhqKyI7IixyLG4seS0xKTpLKGMoaiwiICIsIiIpKyI7IixyLG4seS0yKSxwKTticmVhaztjYXNlIDU5OmorPSI7IjtkZWZhdWx0OmlmKGgoRj1HKGosdCxuLG0sZyxvLGQseCxJPVtdLE09W10seSksYSksMTIzPT09VClpZigwPT09ZylXKGosdCxGLEYsSSxhLHksZCxNKTtlbHNlIHN3aXRjaCg5OT09PXYmJjExMD09PWwoaiwzKT8xMDA6dil7Y2FzZSAxMDA6Y2FzZSAxMDg6Y2FzZSAxMDk6Y2FzZSAxMTU6VyhlLEYsRixyJiZoKEcoZSxGLEYsMCwwLG8sZCx4LG8sST1bXSx5KSxNKSxvLE0seSxkLHI/STpNKTticmVhaztkZWZhdWx0OlcoaixGLEYsRixbIiJdLE0sMCxkLE0pfX1tPWc9Yj0wLF89Tz0xLHg9aj0iIix5PXM7YnJlYWs7Y2FzZSA1ODp5PTErZihqKSxiPXc7ZGVmYXVsdDppZihfPDEpaWYoMTIzPT1UKS0tXztlbHNlIGlmKDEyNT09VCYmMD09XysrJiYxMjU9PUUoKSljb250aW51ZTtzd2l0Y2goais9aShUKSxUKl8pe2Nhc2UgMzg6Tz1nPjA/MTooais9IlxmIiwtMSk7YnJlYWs7Y2FzZSA0NDpkW20rK109KGYoaiktMSkqTyxPPTE7YnJlYWs7Y2FzZSA2NDo0NT09PWsoKSYmKGorPU4oQygpKSksdj1rKCksZz15PWYoeD1qKz1EKEEoKSkpLFQrKzticmVhaztjYXNlIDQ1OjQ1PT09dyYmMj09ZihqKSYmKF89MCl9fXJldHVybiBhfWZ1bmN0aW9uIEcoZSx0LG4scixpLGEsdSxsLGYsaCxtKXtmb3IodmFyIGc9aS0xLHk9MD09PWk/YTpbIiJdLHY9cCh5KSxiPTAsdz0wLFM9MDtiPHI7KytiKWZvcih2YXIgRT0wLEM9ZChlLGcrMSxnPW8odz11W2JdKSksaz1lO0U8djsrK0UpKGs9cyh3PjA/eVtFXSsiICIrQzpjKEMsLyZcZi9nLHlbRV0pKSkmJihmW1MrK109ayk7cmV0dXJuIF8oZSx0LG4sMD09PWk/VTpsLGYsaCxtKX1mdW5jdGlvbiBRKGUsdCxuKXtyZXR1cm4gXyhlLHQsbixWLGkoYiksZChlLDIsLTIpLDApfWZ1bmN0aW9uIEsoZSx0LG4scil7cmV0dXJuIF8oZSx0LG4seixkKGUsMCxyKSxkKGUscisxLC0xKSxyKX12YXIgWj1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsbz0wO3I9byxvPWsoKSwzOD09PXImJjEyPT09byYmKHRbbl09MSksIVQobyk7KUMoKTtyZXR1cm4gTyhlLHYpfSxYPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEkoZnVuY3Rpb24oZSx0KXt2YXIgbj0tMSxyPTQ0O2Rve3N3aXRjaChUKHIpKXtjYXNlIDA6Mzg9PT1yJiYxMj09PWsoKSYmKHRbbl09MSksZVtuXSs9Wih2LTEsdCxuKTticmVhaztjYXNlIDI6ZVtuXSs9TihyKTticmVhaztjYXNlIDQ6aWYoNDQ9PT1yKXtlWysrbl09NTg9PT1rKCk/IiZcZiI6IiIsdFtuXT1lW25dLmxlbmd0aDticmVha31kZWZhdWx0OmVbbl0rPWkocil9fXdoaWxlKHI9QygpKTtyZXR1cm4gZX0oeChlKSx0KSl9LEo9bmV3IFdlYWtNYXAsZWU9ZnVuY3Rpb24oZSl7aWYoInJ1bGUiPT09ZS50eXBlJiZlLnBhcmVudCYmIShlLmxlbmd0aDwxKSl7Zm9yKHZhciB0PWUudmFsdWUsbj1lLnBhcmVudCxyPWUuY29sdW1uPT09bi5jb2x1bW4mJmUubGluZT09PW4ubGluZTsicnVsZSIhPT1uLnR5cGU7KWlmKCEobj1uLnBhcmVudCkpcmV0dXJuO2lmKCgxIT09ZS5wcm9wcy5sZW5ndGh8fDU4PT09dC5jaGFyQ29kZUF0KDApfHxKLmdldChuKSkmJiFyKXtKLnNldChlLCEwKTtmb3IodmFyIG89W10saT1YKHQsbyksYT1uLnByb3BzLHM9MCxjPTA7czxpLmxlbmd0aDtzKyspZm9yKHZhciB1PTA7dTxhLmxlbmd0aDt1KyssYysrKWUucHJvcHNbY109b1tzXT9pW3NdLnJlcGxhY2UoLyZcZi9nLGFbdV0pOmFbdV0rIiAiK2lbc119fX0sdGU9ZnVuY3Rpb24oZSl7aWYoImRlY2wiPT09ZS50eXBlKXt2YXIgdD1lLnZhbHVlOzEwOD09PXQuY2hhckNvZGVBdCgwKSYmOTg9PT10LmNoYXJDb2RlQXQoMikmJihlLnJldHVybj0iIixlLnZhbHVlPSIiKX19O2Z1bmN0aW9uIG5lKGUsdCl7c3dpdGNoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIDQ1XmwoZSwwKT8oKCh0PDwyXmwoZSwwKSk8PDJebChlLDEpKTw8Ml5sKGUsMikpPDwyXmwoZSwzKTowfShlLHQpKXtjYXNlIDUxMDM6cmV0dXJuIEIrInByaW50LSIrZStlO2Nhc2UgNTczNzpjYXNlIDQyMDE6Y2FzZSAzMTc3OmNhc2UgMzQzMzpjYXNlIDE2NDE6Y2FzZSA0NDU3OmNhc2UgMjkyMTpjYXNlIDU1NzI6Y2FzZSA2MzU2OmNhc2UgNTg0NDpjYXNlIDMxOTE6Y2FzZSA2NjQ1OmNhc2UgMzAwNTpjYXNlIDYzOTE6Y2FzZSA1ODc5OmNhc2UgNTYyMzpjYXNlIDYxMzU6Y2FzZSA0NTk5OmNhc2UgNDg1NTpjYXNlIDQyMTU6Y2FzZSA2Mzg5OmNhc2UgNTEwOTpjYXNlIDUzNjU6Y2FzZSA1NjIxOmNhc2UgMzgyOTpyZXR1cm4gQitlK2U7Y2FzZSA1MzQ5OmNhc2UgNDI0NjpjYXNlIDQ4MTA6Y2FzZSA2OTY4OmNhc2UgMjc1NjpyZXR1cm4gQitlK2orZStGK2UrZTtjYXNlIDY4Mjg6Y2FzZSA0MjY4OnJldHVybiBCK2UrRitlK2U7Y2FzZSA2MTY1OnJldHVybiBCK2UrRisiZmxleC0iK2UrZTtjYXNlIDUxODc6cmV0dXJuIEIrZStjKGUsLyhcdyspLisoOlteXSspLyxCKyJib3gtJDEkMiIrRisiZmxleC0kMSQyIikrZTtjYXNlIDU0NDM6cmV0dXJuIEIrZStGKyJmbGV4LWl0ZW0tIitjKGUsL2ZsZXgtfC1zZWxmLywiIikrZTtjYXNlIDQ2NzU6cmV0dXJuIEIrZStGKyJmbGV4LWxpbmUtcGFjayIrYyhlLC9hbGlnbi1jb250ZW50fGZsZXgtfC1zZWxmLywiIikrZTtjYXNlIDU1NDg6cmV0dXJuIEIrZStGK2MoZSwic2hyaW5rIiwibmVnYXRpdmUiKStlO2Nhc2UgNTI5MjpyZXR1cm4gQitlK0YrYyhlLCJiYXNpcyIsInByZWZlcnJlZC1zaXplIikrZTtjYXNlIDYwNjA6cmV0dXJuIEIrImJveC0iK2MoZSwiLWdyb3ciLCIiKStCK2UrRitjKGUsImdyb3ciLCJwb3NpdGl2ZSIpK2U7Y2FzZSA0NTU0OnJldHVybiBCK2MoZSwvKFteLV0pKHRyYW5zZm9ybSkvZywiJDEiK0IrIiQyIikrZTtjYXNlIDYxODc6cmV0dXJuIGMoYyhjKGUsLyh6b29tLXxncmFiKS8sQisiJDEiKSwvKGltYWdlLXNldCkvLEIrIiQxIiksZSwiIikrZTtjYXNlIDU0OTU6Y2FzZSAzOTU5OnJldHVybiBjKGUsLyhpbWFnZS1zZXRcKFteXSopLyxCKyIkMSRgJDEiKTtjYXNlIDQ5Njg6cmV0dXJuIGMoYyhlLC8oLis6KShmbGV4LSk/KC4qKS8sQisiYm94LXBhY2s6JDMiK0YrImZsZXgtcGFjazokMyIpLC9zListYlteO10rLywianVzdGlmeSIpK0IrZStlO2Nhc2UgNDA5NTpjYXNlIDM1ODM6Y2FzZSA0MDY4OmNhc2UgMjUzMjpyZXR1cm4gYyhlLC8oLispLWlubGluZSguKykvLEIrIiQxJDIiKStlO2Nhc2UgODExNjpjYXNlIDcwNTk6Y2FzZSA1NzUzOmNhc2UgNTUzNTpjYXNlIDU0NDU6Y2FzZSA1NzAxOmNhc2UgNDkzMzpjYXNlIDQ2Nzc6Y2FzZSA1NTMzOmNhc2UgNTc4OTpjYXNlIDUwMjE6Y2FzZSA0NzY1OmlmKGYoZSktMS10PjYpc3dpdGNoKGwoZSx0KzEpKXtjYXNlIDEwOTppZig0NSE9PWwoZSx0KzQpKWJyZWFrO2Nhc2UgMTAyOnJldHVybiBjKGUsLyguKzopKC4rKS0oW15dKykvLCIkMSIrQisiJDItJDMkMSIraisoMTA4PT1sKGUsdCszKT8iJDMiOiIkMi0kMyIpKStlO2Nhc2UgMTE1OnJldHVybn51KGUsInN0cmV0Y2giKT9uZShjKGUsInN0cmV0Y2giLCJmaWxsLWF2YWlsYWJsZSIpLHQpK2U6ZX1icmVhaztjYXNlIDQ5NDk6aWYoMTE1IT09bChlLHQrMSkpYnJlYWs7Y2FzZSA2NDQ0OnN3aXRjaChsKGUsZihlKS0zLSh+dShlLCIhaW1wb3J0YW50IikmJjEwKSkpe2Nhc2UgMTA3OnJldHVybiBjKGUsIjoiLCI6IitCKStlO2Nhc2UgMTAxOnJldHVybiBjKGUsLyguKzopKFteOyFdKykoO3whLispPy8sIiQxIitCKyg0NT09PWwoZSwxNCk/ImlubGluZS0iOiIiKSsiYm94JDMkMSIrQisiJDIkMyQxIitGKyIkMmJveCQzIikrZX1icmVhaztjYXNlIDU5MzY6c3dpdGNoKGwoZSx0KzExKSl7Y2FzZSAxMTQ6cmV0dXJuIEIrZStGK2MoZSwvW3N2aF1cdystW3RibHJdezJ9LywidGIiKStlO2Nhc2UgMTA4OnJldHVybiBCK2UrRitjKGUsL1tzdmhdXHcrLVt0YmxyXXsyfS8sInRiLXJsIikrZTtjYXNlIDQ1OnJldHVybiBCK2UrRitjKGUsL1tzdmhdXHcrLVt0YmxyXXsyfS8sImxyIikrZX1yZXR1cm4gQitlK0YrZStlfXJldHVybiBlfXZhciByZT1bZnVuY3Rpb24oZSx0LG4scil7aWYoZS5sZW5ndGg+LTEmJiFlLnJldHVybilzd2l0Y2goZS50eXBlKXtjYXNlIHo6ZS5yZXR1cm49bmUoZS52YWx1ZSxlLmxlbmd0aCk7YnJlYWs7Y2FzZSBIOnJldHVybiAkKFtTKGUse3ZhbHVlOmMoZS52YWx1ZSwiQCIsIkAiK0IpfSldLHIpO2Nhc2UgVTppZihlLmxlbmd0aClyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5tYXAodCkuam9pbigiIil9KGUucHJvcHMsZnVuY3Rpb24odCl7c3dpdGNoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuKGU9dC5leGVjKGUpKT9lWzBdOmV9KHQsLyg6OnBsYWNcdyt8OnJlYWQtXHcrKS8pKXtjYXNlIjpyZWFkLW9ubHkiOmNhc2UiOnJlYWQtd3JpdGUiOnJldHVybiAkKFtTKGUse3Byb3BzOltjKHQsLzoocmVhZC1cdyspLywiOi1tb3otJDEiKV19KV0scik7Y2FzZSI6OnBsYWNlaG9sZGVyIjpyZXR1cm4gJChbUyhlLHtwcm9wczpbYyh0LC86KHBsYWNcdyspLywiOiIrQisiaW5wdXQtJDEiKV19KSxTKGUse3Byb3BzOltjKHQsLzoocGxhY1x3KykvLCI6LW1vei0kMSIpXX0pLFMoZSx7cHJvcHM6W2ModCwvOihwbGFjXHcrKS8sRisiaW5wdXQtJDEiKV19KV0scil9cmV0dXJuIiJ9KX19XSxvZT1mdW5jdGlvbihlKXt2YXIgdD1lLmtleTtpZigiY3NzIj09PXQpe3ZhciBuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlW2RhdGEtZW1vdGlvbl06bm90KFtkYXRhLXNdKSIpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobixmdW5jdGlvbihlKXstMSE9PWUuZ2V0QXR0cmlidXRlKCJkYXRhLWVtb3Rpb24iKS5pbmRleE9mKCIgIikmJihkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGUpLGUuc2V0QXR0cmlidXRlKCJkYXRhLXMiLCIiKSl9KX12YXIgbyxpLGE9ZS5zdHlsaXNQbHVnaW5zfHxyZSxzPXt9LGM9W107bz1lLmNvbnRhaW5lcnx8ZG9jdW1lbnQuaGVhZCxBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlW2RhdGEtZW1vdGlvbl49IicrdCsnICJdJyksZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUuZ2V0QXR0cmlidXRlKCJkYXRhLWVtb3Rpb24iKS5zcGxpdCgiICIpLG49MTtuPHQubGVuZ3RoO24rKylzW3Rbbl1dPSEwO2MucHVzaChlKX0pO3ZhciB1LGwsZCxmLGg9W1ksKGY9ZnVuY3Rpb24oZSl7dS5pbnNlcnQoZSl9LGZ1bmN0aW9uKGUpe2Uucm9vdHx8KGU9ZS5yZXR1cm4pJiZmKGUpfSldLG09KGw9W2VlLHRlXS5jb25jYXQoYSxoKSxkPXAobCksZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBvPSIiLGk9MDtpPGQ7aSsrKW8rPWxbaV0oZSx0LG4scil8fCIiO3JldHVybiBvfSk7aT1mdW5jdGlvbihlLHQsbixyKXt1PW4sJChxKGU/ZSsieyIrdC5zdHlsZXMrIn0iOnQuc3R5bGVzKSxtKSxyJiYoZy5pbnNlcnRlZFt0Lm5hbWVdPSEwKX07dmFyIGc9e2tleTp0LHNoZWV0Om5ldyByKHtrZXk6dCxjb250YWluZXI6byxub25jZTplLm5vbmNlLHNwZWVkeTplLnNwZWVkeSxwcmVwZW5kOmUucHJlcGVuZCxpbnNlcnRpb25Qb2ludDplLmluc2VydGlvblBvaW50fSksbm9uY2U6ZS5ub25jZSxpbnNlcnRlZDpzLHJlZ2lzdGVyZWQ6e30saW5zZXJ0Oml9O3JldHVybiBnLnNoZWV0Lmh5ZHJhdGUoYyksZ319LDczNjg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDc1NzApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPXIuSXRlcmF0b3Isbz1uJiZuLnByb3RvdHlwZSxpPW8mJm9bZV0sYT0hMTtpZihpKXRyeXtpLmNhbGwoe25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTohMH19LHJldHVybjpmdW5jdGlvbigpe2E9ITB9fSwtMSl9Y2F0Y2goZSl7ZSBpbnN0YW5jZW9mIHR8fChhPSExKX1pZighYSlyZXR1cm4gaX19LDczNzM6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7bHU6ZnVuY3Rpb24oKXtyZXR1cm4gaX0semY6ZnVuY3Rpb24oKXtyZXR1cm4gYX19KTt2YXIgcj1uKDMyMjUpO2NvbnN0IG89MWUzO2Z1bmN0aW9uIGkoKXtyZXR1cm4gRGF0ZS5ub3coKS9vfWNvbnN0IGE9ZnVuY3Rpb24oKXtjb25zdHtwZXJmb3JtYW5jZTplfT1yLk87aWYoIWV8fCFlLm5vdylyZXR1cm4gaTtjb25zdCB0PURhdGUubm93KCktZS5ub3coKSxuPW51bGw9PWUudGltZU9yaWdpbj90OmUudGltZU9yaWdpbjtyZXR1cm4oKT0+KG4rZS5ub3coKSkvb30oKTtsZXQgczsoKCk9Pntjb25zdHtwZXJmb3JtYW5jZTplfT1yLk87aWYoIWV8fCFlLm5vdylyZXR1cm4gdm9pZChzPSJub25lIik7Y29uc3QgdD0zNmU1LG49ZS5ub3coKSxvPURhdGUubm93KCksaT1lLnRpbWVPcmlnaW4/TWF0aC5hYnMoZS50aW1lT3JpZ2luK24tbyk6dCxhPWk8dCxjPWUudGltaW5nJiZlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQsdT0ibnVtYmVyIj09dHlwZW9mIGM/TWF0aC5hYnMoYytuLW8pOnQ7YXx8dTx0P2k8PXU/KHM9InRpbWVPcmlnaW4iLGUudGltZU9yaWdpbik6cz0ibmF2aWdhdGlvblN0YXJ0IjpzPSJkYXRlTm93In0pKCl9LDczOTk6ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZX19LDc0MTI6ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixyPW4/U3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpOjYwMTAzLG89bj9TeW1ib2wuZm9yKCJyZWFjdC5wb3J0YWwiKTo2MDEwNixpPW4/U3ltYm9sLmZvcigicmVhY3QuZnJhZ21lbnQiKTo2MDEwNyxhPW4/U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKTo2MDEwOCxzPW4/U3ltYm9sLmZvcigicmVhY3QucHJvZmlsZXIiKTo2MDExNCxjPW4/U3ltYm9sLmZvcigicmVhY3QucHJvdmlkZXIiKTo2MDEwOSx1PW4/U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpOjYwMTEwLGw9bj9TeW1ib2wuZm9yKCJyZWFjdC5hc3luY19tb2RlIik6NjAxMTEsZD1uP1N5bWJvbC5mb3IoInJlYWN0LmNvbmN1cnJlbnRfbW9kZSIpOjYwMTExLGY9bj9TeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpOjYwMTEyLHA9bj9TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpOjYwMTEzLGg9bj9TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZV9saXN0Iik6NjAxMjAsbT1uP1N5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKTo2MDExNSxnPW4/U3ltYm9sLmZvcigicmVhY3QubGF6eSIpOjYwMTE2LHk9bj9TeW1ib2wuZm9yKCJyZWFjdC5ibG9jayIpOjYwMTIxLHY9bj9TeW1ib2wuZm9yKCJyZWFjdC5mdW5kYW1lbnRhbCIpOjYwMTE3LGI9bj9TeW1ib2wuZm9yKCJyZWFjdC5yZXNwb25kZXIiKTo2MDExOCx3PW4/U3ltYm9sLmZvcigicmVhY3Quc2NvcGUiKTo2MDExOTtmdW5jdGlvbiBfKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUpe3ZhciB0PWUuJCR0eXBlb2Y7c3dpdGNoKHQpe2Nhc2Ugcjpzd2l0Y2goZT1lLnR5cGUpe2Nhc2UgbDpjYXNlIGQ6Y2FzZSBpOmNhc2UgczpjYXNlIGE6Y2FzZSBwOnJldHVybiBlO2RlZmF1bHQ6c3dpdGNoKGU9ZSYmZS4kJHR5cGVvZil7Y2FzZSB1OmNhc2UgZjpjYXNlIGc6Y2FzZSBtOmNhc2UgYzpyZXR1cm4gZTtkZWZhdWx0OnJldHVybiB0fX1jYXNlIG86cmV0dXJuIHR9fX1mdW5jdGlvbiBTKGUpe3JldHVybiBfKGUpPT09ZH10LkFzeW5jTW9kZT1sLHQuQ29uY3VycmVudE1vZGU9ZCx0LkNvbnRleHRDb25zdW1lcj11LHQuQ29udGV4dFByb3ZpZGVyPWMsdC5FbGVtZW50PXIsdC5Gb3J3YXJkUmVmPWYsdC5GcmFnbWVudD1pLHQuTGF6eT1nLHQuTWVtbz1tLHQuUG9ydGFsPW8sdC5Qcm9maWxlcj1zLHQuU3RyaWN0TW9kZT1hLHQuU3VzcGVuc2U9cCx0LmlzQXN5bmNNb2RlPWZ1bmN0aW9uKGUpe3JldHVybiBTKGUpfHxfKGUpPT09bH0sdC5pc0NvbmN1cnJlbnRNb2RlPVMsdC5pc0NvbnRleHRDb25zdW1lcj1mdW5jdGlvbihlKXtyZXR1cm4gXyhlKT09PXV9LHQuaXNDb250ZXh0UHJvdmlkZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIF8oZSk9PT1jfSx0LmlzRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09cn0sdC5pc0ZvcndhcmRSZWY9ZnVuY3Rpb24oZSl7cmV0dXJuIF8oZSk9PT1mfSx0LmlzRnJhZ21lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIF8oZSk9PT1pfSx0LmlzTGF6eT1mdW5jdGlvbihlKXtyZXR1cm4gXyhlKT09PWd9LHQuaXNNZW1vPWZ1bmN0aW9uKGUpe3JldHVybiBfKGUpPT09bX0sdC5pc1BvcnRhbD1mdW5jdGlvbihlKXtyZXR1cm4gXyhlKT09PW99LHQuaXNQcm9maWxlcj1mdW5jdGlvbihlKXtyZXR1cm4gXyhlKT09PXN9LHQuaXNTdHJpY3RNb2RlPWZ1bmN0aW9uKGUpe3JldHVybiBfKGUpPT09YX0sdC5pc1N1c3BlbnNlPWZ1bmN0aW9uKGUpe3JldHVybiBfKGUpPT09cH0sdC5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZXx8ZT09PWl8fGU9PT1kfHxlPT09c3x8ZT09PWF8fGU9PT1wfHxlPT09aHx8Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmKGUuJCR0eXBlb2Y9PT1nfHxlLiQkdHlwZW9mPT09bXx8ZS4kJHR5cGVvZj09PWN8fGUuJCR0eXBlb2Y9PT11fHxlLiQkdHlwZW9mPT09Znx8ZS4kJHR5cGVvZj09PXZ8fGUuJCR0eXBlb2Y9PT1ifHxlLiQkdHlwZW9mPT09d3x8ZS4kJHR5cGVvZj09PXkpfSx0LnR5cGVPZj1ffSw3NDQzOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3NjU2KSxvPU9iamVjdDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8ocihlKSl9fSw3NDUwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bigzMTE5KX0sNzUwMjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJue2FsbDplPWV8fG5ldyBNYXAsb246ZnVuY3Rpb24odCxuKXt2YXIgcj1lLmdldCh0KTtyP3IucHVzaChuKTplLnNldCh0LFtuXSl9LG9mZjpmdW5jdGlvbih0LG4pe3ZhciByPWUuZ2V0KHQpO3ImJihuP3Iuc3BsaWNlKHIuaW5kZXhPZihuKT4+PjAsMSk6ZS5zZXQodCxbXSkpfSxlbWl0OmZ1bmN0aW9uKHQsbil7dmFyIHI9ZS5nZXQodCk7ciYmci5zbGljZSgpLm1hcChmdW5jdGlvbihlKXtlKG4pfSksKHI9ZS5nZXQoIioiKSkmJnIuc2xpY2UoKS5tYXAoZnVuY3Rpb24oZSl7ZSh0LG4pfSl9fX1uLmQodCx7QTpmdW5jdGlvbigpe3JldHVybiByfX0pfSw3NTA1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxNDMwKSxvPW4oMTIxMCksaT1UeXBlRXJyb3IsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHM9ciYmIWZ1bmN0aW9uKCl7aWYodm9pZCAwIT09dGhpcylyZXR1cm4hMDt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCJsZW5ndGgiLHt3cml0YWJsZTohMX0pLmxlbmd0aD0xfWNhdGNoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgVHlwZUVycm9yfX0oKTtlLmV4cG9ydHM9cz9mdW5jdGlvbihlLHQpe2lmKG8oZSkmJiFhKGUsImxlbmd0aCIpLndyaXRhYmxlKXRocm93IG5ldyBpKCJDYW5ub3Qgc2V0IHJlYWQgb25seSAubGVuZ3RoIik7cmV0dXJuIGUubGVuZ3RoPXR9OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGVuZ3RoPXR9fSw3NTQzOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oNTg3NSl9LDc1NTE6ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciB0PU1hdGguY2VpbCxuPU1hdGguZmxvb3I7ZS5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uKGUpe3ZhciByPStlO3JldHVybihyPjA/bjp0KShyKX19LDc1NzA6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5NYXRoPT09TWF0aCYmZX07ZS5leHBvcnRzPXIoIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzKXx8cigib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93KXx8cigib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYpfHxyKCJvYmplY3QiPT10eXBlb2Ygbi5nJiZuLmcpfHxyKCJvYmplY3QiPT10eXBlb2YgdGhpcyYmdGhpcyl8fGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCl8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl9LDc2MjM6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDY2NzQpO2UuZXhwb3J0cz1yKHt9LmlzUHJvdG90eXBlT2YpfSw3NjUyOmZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9big5NDQwKX0sNzY1NjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNzM5OSksbz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHIoZSkpdGhyb3cgbmV3IG8oIkNhbid0IGNhbGwgbWV0aG9kIG9uICIrZSk7cmV0dXJuIGV9fSw3NzA5OmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ITF9LDc3NjI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDM5MzIpLG89big4NzI3KSxpPW4oNDQ3NCksYT1uKDgwMCkscz1uKDMxMTcpLGM9big5NzI5KSx1PW4oMzk3NyksbD1uKDczNjgpKCJmaW5kIixUeXBlRXJyb3IpO3Ioe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmx9LHtmaW5kOmZ1bmN0aW9uKGUpe3ModGhpcyk7dHJ5e2EoZSl9Y2F0Y2goZSl7dSh0aGlzLCJ0aHJvdyIsZSl9aWYobClyZXR1cm4gbyhsLHRoaXMsZSk7dmFyIHQ9Yyh0aGlzKSxuPTA7cmV0dXJuIGkodCxmdW5jdGlvbih0LHIpe2lmKGUodCxuKyspKXJldHVybiByKHQpfSx7SVNfUkVDT1JEOiEwLElOVEVSUlVQVEVEOiEwfSkucmVzdWx0fX0pfSw3NzY3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse2M6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTtuKDU5NjkpLG4oNTU2KSxuKDgzOTEpO2xldCByPSJvbGQiO3RyeXtjb25zdCBlPW5ldyBVUkwod2luZG93LnBhcmVudD8ubG9jYXRpb24uaHJlZik7IjEiPT09ZS5zZWFyY2hQYXJhbXMuZ2V0KCJ0aWRpb1dpZGdldE5ld1NraW4iKSYmc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgidGlkaW9XaWRnZXROZXdTa2luIiwiMSIpLCIxIj09PXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oInRpZGlvV2lkZ2V0TmV3U2tpbiIpJiYocj0ibmV3IiksInRydWUiPT09bG9jYWxTdG9yYWdlLmdldEl0ZW0oIm5ld1NraW4iKSYmKHI9Im5ldyIpfWNhdGNoe31mdW5jdGlvbiBvKCl7cmV0dXJuIm5ldyI9PT1yfX0sNzg1MDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtIOmZ1bmN0aW9uKCl7cmV0dXJuIG19fSk7dmFyIHI9big1NzkwKSxvPW4oOTAwNCksaT1uKDkyMTYpLGE9bigyMDM2KSxzPW4oOTYwOSksYz1uKDczNzMpLHU9bigwKSxsPW4oMjI0Nyk7Y29uc3QgZD0iX3NlbnRyeVNwYW4iO2Z1bmN0aW9uIGYoZSx0KXt0PygwLGwubXkpKGUsZCx0KTpkZWxldGUgZVtkXX1mdW5jdGlvbiBwKGUpe3JldHVybiBlW2RdfWNsYXNzIGh7Y29uc3RydWN0b3IoKXt0aGlzLl9ub3RpZnlpbmdMaXN0ZW5lcnM9ITEsdGhpcy5fc2NvcGVMaXN0ZW5lcnM9W10sdGhpcy5fZXZlbnRQcm9jZXNzb3JzPVtdLHRoaXMuX2JyZWFkY3J1bWJzPVtdLHRoaXMuX2F0dGFjaG1lbnRzPVtdLHRoaXMuX3VzZXI9e30sdGhpcy5fdGFncz17fSx0aGlzLl9leHRyYT17fSx0aGlzLl9jb250ZXh0cz17fSx0aGlzLl9zZGtQcm9jZXNzaW5nTWV0YWRhdGE9e30sdGhpcy5fcHJvcGFnYXRpb25Db250ZXh0PXt0cmFjZUlkOigwLHMuZWwpKCksc3BhbklkOigwLHMuWkYpKCl9fWNsb25lKCl7Y29uc3QgZT1uZXcgaDtyZXR1cm4gZS5fYnJlYWRjcnVtYnM9Wy4uLnRoaXMuX2JyZWFkY3J1bWJzXSxlLl90YWdzPXsuLi50aGlzLl90YWdzfSxlLl9leHRyYT17Li4udGhpcy5fZXh0cmF9LGUuX2NvbnRleHRzPXsuLi50aGlzLl9jb250ZXh0c30sdGhpcy5fY29udGV4dHMuZmxhZ3MmJihlLl9jb250ZXh0cy5mbGFncz17dmFsdWVzOlsuLi50aGlzLl9jb250ZXh0cy5mbGFncy52YWx1ZXNdfSksZS5fdXNlcj10aGlzLl91c2VyLGUuX2xldmVsPXRoaXMuX2xldmVsLGUuX3Nlc3Npb249dGhpcy5fc2Vzc2lvbixlLl90cmFuc2FjdGlvbk5hbWU9dGhpcy5fdHJhbnNhY3Rpb25OYW1lLGUuX2ZpbmdlcnByaW50PXRoaXMuX2ZpbmdlcnByaW50LGUuX2V2ZW50UHJvY2Vzc29ycz1bLi4udGhpcy5fZXZlbnRQcm9jZXNzb3JzXSxlLl9yZXF1ZXN0U2Vzc2lvbj10aGlzLl9yZXF1ZXN0U2Vzc2lvbixlLl9hdHRhY2htZW50cz1bLi4udGhpcy5fYXR0YWNobWVudHNdLGUuX3Nka1Byb2Nlc3NpbmdNZXRhZGF0YT17Li4udGhpcy5fc2RrUHJvY2Vzc2luZ01ldGFkYXRhfSxlLl9wcm9wYWdhdGlvbkNvbnRleHQ9ey4uLnRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dH0sZS5fY2xpZW50PXRoaXMuX2NsaWVudCxlLl9sYXN0RXZlbnRJZD10aGlzLl9sYXN0RXZlbnRJZCxmKGUscCh0aGlzKSksZX1zZXRDbGllbnQoZSl7dGhpcy5fY2xpZW50PWV9c2V0TGFzdEV2ZW50SWQoZSl7dGhpcy5fbGFzdEV2ZW50SWQ9ZX1nZXRDbGllbnQoKXtyZXR1cm4gdGhpcy5fY2xpZW50fWxhc3RFdmVudElkKCl7cmV0dXJuIHRoaXMuX2xhc3RFdmVudElkfWFkZFNjb3BlTGlzdGVuZXIoZSl7dGhpcy5fc2NvcGVMaXN0ZW5lcnMucHVzaChlKX1hZGRFdmVudFByb2Nlc3NvcihlKXtyZXR1cm4gdGhpcy5fZXZlbnRQcm9jZXNzb3JzLnB1c2goZSksdGhpc31zZXRVc2VyKGUpe3JldHVybiB0aGlzLl91c2VyPWV8fHtlbWFpbDp2b2lkIDAsaWQ6dm9pZCAwLGlwX2FkZHJlc3M6dm9pZCAwLHVzZXJuYW1lOnZvaWQgMH0sdGhpcy5fc2Vzc2lvbiYmKDAsci5xTykodGhpcy5fc2Vzc2lvbix7dXNlcjplfSksdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKSx0aGlzfWdldFVzZXIoKXtyZXR1cm4gdGhpcy5fdXNlcn1nZXRSZXF1ZXN0U2Vzc2lvbigpe3JldHVybiB0aGlzLl9yZXF1ZXN0U2Vzc2lvbn1zZXRSZXF1ZXN0U2Vzc2lvbihlKXtyZXR1cm4gdGhpcy5fcmVxdWVzdFNlc3Npb249ZSx0aGlzfXNldFRhZ3MoZSl7cmV0dXJuIHRoaXMuX3RhZ3M9ey4uLnRoaXMuX3RhZ3MsLi4uZX0sdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKSx0aGlzfXNldFRhZyhlLHQpe3JldHVybiB0aGlzLl90YWdzPXsuLi50aGlzLl90YWdzLFtlXTp0fSx0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpLHRoaXN9c2V0RXh0cmFzKGUpe3JldHVybiB0aGlzLl9leHRyYT17Li4udGhpcy5fZXh0cmEsLi4uZX0sdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKSx0aGlzfXNldEV4dHJhKGUsdCl7cmV0dXJuIHRoaXMuX2V4dHJhPXsuLi50aGlzLl9leHRyYSxbZV06dH0sdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKSx0aGlzfXNldEZpbmdlcnByaW50KGUpe3JldHVybiB0aGlzLl9maW5nZXJwcmludD1lLHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCksdGhpc31zZXRMZXZlbChlKXtyZXR1cm4gdGhpcy5fbGV2ZWw9ZSx0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpLHRoaXN9c2V0VHJhbnNhY3Rpb25OYW1lKGUpe3JldHVybiB0aGlzLl90cmFuc2FjdGlvbk5hbWU9ZSx0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpLHRoaXN9c2V0Q29udGV4dChlLHQpe3JldHVybiBudWxsPT09dD9kZWxldGUgdGhpcy5fY29udGV4dHNbZV06dGhpcy5fY29udGV4dHNbZV09dCx0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpLHRoaXN9c2V0U2Vzc2lvbihlKXtyZXR1cm4gZT90aGlzLl9zZXNzaW9uPWU6ZGVsZXRlIHRoaXMuX3Nlc3Npb24sdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKSx0aGlzfWdldFNlc3Npb24oKXtyZXR1cm4gdGhpcy5fc2Vzc2lvbn11cGRhdGUoZSl7aWYoIWUpcmV0dXJuIHRoaXM7Y29uc3QgdD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lKHRoaXMpOmUsW24scl09dCBpbnN0YW5jZW9mIG0/W3QuZ2V0U2NvcGVEYXRhKCksdC5nZXRSZXF1ZXN0U2Vzc2lvbigpXTooMCxvLlFkKSh0KT9bZSxlLnJlcXVlc3RTZXNzaW9uXTpbXSx7dGFnczppLGV4dHJhOmEsdXNlcjpzLGNvbnRleHRzOmMsbGV2ZWw6dSxmaW5nZXJwcmludDpsPVtdLHByb3BhZ2F0aW9uQ29udGV4dDpkfT1ufHx7fTtyZXR1cm4gdGhpcy5fdGFncz17Li4udGhpcy5fdGFncywuLi5pfSx0aGlzLl9leHRyYT17Li4udGhpcy5fZXh0cmEsLi4uYX0sdGhpcy5fY29udGV4dHM9ey4uLnRoaXMuX2NvbnRleHRzLC4uLmN9LHMmJk9iamVjdC5rZXlzKHMpLmxlbmd0aCYmKHRoaXMuX3VzZXI9cyksdSYmKHRoaXMuX2xldmVsPXUpLGwubGVuZ3RoJiYodGhpcy5fZmluZ2VycHJpbnQ9bCksZCYmKHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dD1kKSxyJiYodGhpcy5fcmVxdWVzdFNlc3Npb249ciksdGhpc31jbGVhcigpe3JldHVybiB0aGlzLl9icmVhZGNydW1icz1bXSx0aGlzLl90YWdzPXt9LHRoaXMuX2V4dHJhPXt9LHRoaXMuX3VzZXI9e30sdGhpcy5fY29udGV4dHM9e30sdGhpcy5fbGV2ZWw9dm9pZCAwLHRoaXMuX3RyYW5zYWN0aW9uTmFtZT12b2lkIDAsdGhpcy5fZmluZ2VycHJpbnQ9dm9pZCAwLHRoaXMuX3JlcXVlc3RTZXNzaW9uPXZvaWQgMCx0aGlzLl9zZXNzaW9uPXZvaWQgMCxmKHRoaXMsdm9pZCAwKSx0aGlzLl9hdHRhY2htZW50cz1bXSx0aGlzLnNldFByb3BhZ2F0aW9uQ29udGV4dCh7dHJhY2VJZDooMCxzLmVsKSgpfSksdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKSx0aGlzfWFkZEJyZWFkY3J1bWIoZSx0KXtjb25zdCBuPSJudW1iZXIiPT10eXBlb2YgdD90OjEwMDtpZihuPD0wKXJldHVybiB0aGlzO2NvbnN0IHI9e3RpbWVzdGFtcDooMCxjLmx1KSgpLC4uLmV9O3JldHVybiB0aGlzLl9icmVhZGNydW1icy5wdXNoKHIpLHRoaXMuX2JyZWFkY3J1bWJzLmxlbmd0aD5uJiYodGhpcy5fYnJlYWRjcnVtYnM9dGhpcy5fYnJlYWRjcnVtYnMuc2xpY2UoLW4pLHRoaXMuX2NsaWVudCYmdGhpcy5fY2xpZW50LnJlY29yZERyb3BwZWRFdmVudCgiYnVmZmVyX292ZXJmbG93IiwibG9nX2l0ZW0iKSksdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKSx0aGlzfWdldExhc3RCcmVhZGNydW1iKCl7cmV0dXJuIHRoaXMuX2JyZWFkY3J1bWJzW3RoaXMuX2JyZWFkY3J1bWJzLmxlbmd0aC0xXX1jbGVhckJyZWFkY3J1bWJzKCl7cmV0dXJuIHRoaXMuX2JyZWFkY3J1bWJzPVtdLHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCksdGhpc31hZGRBdHRhY2htZW50KGUpe3JldHVybiB0aGlzLl9hdHRhY2htZW50cy5wdXNoKGUpLHRoaXN9Y2xlYXJBdHRhY2htZW50cygpe3JldHVybiB0aGlzLl9hdHRhY2htZW50cz1bXSx0aGlzfWdldFNjb3BlRGF0YSgpe3JldHVybnticmVhZGNydW1iczp0aGlzLl9icmVhZGNydW1icyxhdHRhY2htZW50czp0aGlzLl9hdHRhY2htZW50cyxjb250ZXh0czp0aGlzLl9jb250ZXh0cyx0YWdzOnRoaXMuX3RhZ3MsZXh0cmE6dGhpcy5fZXh0cmEsdXNlcjp0aGlzLl91c2VyLGxldmVsOnRoaXMuX2xldmVsLGZpbmdlcnByaW50OnRoaXMuX2ZpbmdlcnByaW50fHxbXSxldmVudFByb2Nlc3NvcnM6dGhpcy5fZXZlbnRQcm9jZXNzb3JzLHByb3BhZ2F0aW9uQ29udGV4dDp0aGlzLl9wcm9wYWdhdGlvbkNvbnRleHQsc2RrUHJvY2Vzc2luZ01ldGFkYXRhOnRoaXMuX3Nka1Byb2Nlc3NpbmdNZXRhZGF0YSx0cmFuc2FjdGlvbk5hbWU6dGhpcy5fdHJhbnNhY3Rpb25OYW1lLHNwYW46cCh0aGlzKX19c2V0U0RLUHJvY2Vzc2luZ01ldGFkYXRhKGUpe3JldHVybiB0aGlzLl9zZGtQcm9jZXNzaW5nTWV0YWRhdGE9KDAsdS5oKSh0aGlzLl9zZGtQcm9jZXNzaW5nTWV0YWRhdGEsZSwyKSx0aGlzfXNldFByb3BhZ2F0aW9uQ29udGV4dChlKXtyZXR1cm4gdGhpcy5fcHJvcGFnYXRpb25Db250ZXh0PXtzcGFuSWQ6KDAscy5aRikoKSwuLi5lfSx0aGlzfWdldFByb3BhZ2F0aW9uQ29udGV4dCgpe3JldHVybiB0aGlzLl9wcm9wYWdhdGlvbkNvbnRleHR9Y2FwdHVyZUV4Y2VwdGlvbihlLHQpe2NvbnN0IG49dCYmdC5ldmVudF9pZD90LmV2ZW50X2lkOigwLGEuZUopKCk7aWYoIXRoaXMuX2NsaWVudClyZXR1cm4gaS52Ri53YXJuKCJObyBjbGllbnQgY29uZmlndXJlZCBvbiBzY29wZSAtIHdpbGwgbm90IGNhcHR1cmUgZXhjZXB0aW9uISIpLG47Y29uc3Qgcj1uZXcgRXJyb3IoIlNlbnRyeSBzeW50aGV0aWNFeGNlcHRpb24iKTtyZXR1cm4gdGhpcy5fY2xpZW50LmNhcHR1cmVFeGNlcHRpb24oZSx7b3JpZ2luYWxFeGNlcHRpb246ZSxzeW50aGV0aWNFeGNlcHRpb246ciwuLi50LGV2ZW50X2lkOm59LHRoaXMpLG59Y2FwdHVyZU1lc3NhZ2UoZSx0LG4pe2NvbnN0IHI9biYmbi5ldmVudF9pZD9uLmV2ZW50X2lkOigwLGEuZUopKCk7aWYoIXRoaXMuX2NsaWVudClyZXR1cm4gaS52Ri53YXJuKCJObyBjbGllbnQgY29uZmlndXJlZCBvbiBzY29wZSAtIHdpbGwgbm90IGNhcHR1cmUgbWVzc2FnZSEiKSxyO2NvbnN0IG89bmV3IEVycm9yKGUpO3JldHVybiB0aGlzLl9jbGllbnQuY2FwdHVyZU1lc3NhZ2UoZSx0LHtvcmlnaW5hbEV4Y2VwdGlvbjplLHN5bnRoZXRpY0V4Y2VwdGlvbjpvLC4uLm4sZXZlbnRfaWQ6cn0sdGhpcykscn1jYXB0dXJlRXZlbnQoZSx0KXtjb25zdCBuPXQmJnQuZXZlbnRfaWQ/dC5ldmVudF9pZDooMCxhLmVKKSgpO3JldHVybiB0aGlzLl9jbGllbnQ/KHRoaXMuX2NsaWVudC5jYXB0dXJlRXZlbnQoZSx7Li4udCxldmVudF9pZDpufSx0aGlzKSxuKTooaS52Ri53YXJuKCJObyBjbGllbnQgY29uZmlndXJlZCBvbiBzY29wZSAtIHdpbGwgbm90IGNhcHR1cmUgZXZlbnQhIiksbil9X25vdGlmeVNjb3BlTGlzdGVuZXJzKCl7dGhpcy5fbm90aWZ5aW5nTGlzdGVuZXJzfHwodGhpcy5fbm90aWZ5aW5nTGlzdGVuZXJzPSEwLHRoaXMuX3Njb3BlTGlzdGVuZXJzLmZvckVhY2goZT0+e2UodGhpcyl9KSx0aGlzLl9ub3RpZnlpbmdMaXN0ZW5lcnM9ITEpfX1jb25zdCBtPWh9LDc4NTE6ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe3ZhciBuPWUubGVuZ3RoO2UucHVzaCh0KTtlOmZvcig7MDxuOyl7dmFyIHI9bi0xPj4+MSxvPWVbcl07aWYoISgwPGkobyx0KSkpYnJlYWsgZTtlW3JdPXQsZVtuXT1vLG49cn19ZnVuY3Rpb24gcihlKXtyZXR1cm4gMD09PWUubGVuZ3RoP251bGw6ZVswXX1mdW5jdGlvbiBvKGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgdD1lWzBdLG49ZS5wb3AoKTtpZihuIT09dCl7ZVswXT1uO2U6Zm9yKHZhciByPTAsbz1lLmxlbmd0aCxhPW8+Pj4xO3I8YTspe3ZhciBzPTIqKHIrMSktMSxjPWVbc10sdT1zKzEsbD1lW3VdO2lmKDA+aShjLG4pKXU8byYmMD5pKGwsYyk/KGVbcl09bCxlW3VdPW4scj11KTooZVtyXT1jLGVbc109bixyPXMpO2Vsc2V7aWYoISh1PG8mJjA+aShsLG4pKSlicmVhayBlO2Vbcl09bCxlW3VdPW4scj11fX19cmV0dXJuIHR9ZnVuY3Rpb24gaShlLHQpe3ZhciBuPWUuc29ydEluZGV4LXQuc29ydEluZGV4O3JldHVybiAwIT09bj9uOmUuaWQtdC5pZH1pZigib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiYiZnVuY3Rpb24iPT10eXBlb2YgcGVyZm9ybWFuY2Uubm93KXt2YXIgYT1wZXJmb3JtYW5jZTt0LnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBhLm5vdygpfX1lbHNle3ZhciBzPURhdGUsYz1zLm5vdygpO3QudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIHMubm93KCktY319dmFyIHU9W10sbD1bXSxkPTEsZj1udWxsLHA9MyxoPSExLG09ITEsZz0hMSx5PSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6bnVsbCx2PSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Om51bGwsYj0idW5kZWZpbmVkIiE9dHlwZW9mIHNldEltbWVkaWF0ZT9zZXRJbW1lZGlhdGU6bnVsbDtmdW5jdGlvbiB3KGUpe2Zvcih2YXIgdD1yKGwpO251bGwhPT10Oyl7aWYobnVsbD09PXQuY2FsbGJhY2spbyhsKTtlbHNle2lmKCEodC5zdGFydFRpbWU8PWUpKWJyZWFrO28obCksdC5zb3J0SW5kZXg9dC5leHBpcmF0aW9uVGltZSxuKHUsdCl9dD1yKGwpfX1mdW5jdGlvbiBfKGUpe2lmKGc9ITEsdyhlKSwhbSlpZihudWxsIT09cih1KSltPSEwLFAoUyk7ZWxzZXt2YXIgdD1yKGwpO251bGwhPT10JiZNKF8sdC5zdGFydFRpbWUtZSl9fWZ1bmN0aW9uIFMoZSxuKXttPSExLGcmJihnPSExLHYoQSksQT0tMSksaD0hMDt2YXIgaT1wO3RyeXtmb3IodyhuKSxmPXIodSk7bnVsbCE9PWYmJighKGYuZXhwaXJhdGlvblRpbWU+bil8fGUmJiF4KCkpOyl7dmFyIGE9Zi5jYWxsYmFjaztpZigiZnVuY3Rpb24iPT10eXBlb2YgYSl7Zi5jYWxsYmFjaz1udWxsLHA9Zi5wcmlvcml0eUxldmVsO3ZhciBzPWEoZi5leHBpcmF0aW9uVGltZTw9bik7bj10LnVuc3RhYmxlX25vdygpLCJmdW5jdGlvbiI9PXR5cGVvZiBzP2YuY2FsbGJhY2s9czpmPT09cih1KSYmbyh1KSx3KG4pfWVsc2Ugbyh1KTtmPXIodSl9aWYobnVsbCE9PWYpdmFyIGM9ITA7ZWxzZXt2YXIgZD1yKGwpO251bGwhPT1kJiZNKF8sZC5zdGFydFRpbWUtbiksYz0hMX1yZXR1cm4gY31maW5hbGx5e2Y9bnVsbCxwPWksaD0hMX19InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nJiZ2b2lkIDAhPT1uYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZyYmbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcuYmluZChuYXZpZ2F0b3Iuc2NoZWR1bGluZyk7dmFyIEUsQz0hMSxrPW51bGwsQT0tMSxPPTUsVD0tMTtmdW5jdGlvbiB4KCl7cmV0dXJuISh0LnVuc3RhYmxlX25vdygpLVQ8Tyl9ZnVuY3Rpb24gSSgpe2lmKG51bGwhPT1rKXt2YXIgZT10LnVuc3RhYmxlX25vdygpO1Q9ZTt2YXIgbj0hMDt0cnl7bj1rKCEwLGUpfWZpbmFsbHl7bj9FKCk6KEM9ITEsaz1udWxsKX19ZWxzZSBDPSExfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBiKUU9ZnVuY3Rpb24oKXtiKEkpfTtlbHNlIGlmKCJ1bmRlZmluZWQiIT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBOPW5ldyBNZXNzYWdlQ2hhbm5lbCxMPU4ucG9ydDI7Ti5wb3J0MS5vbm1lc3NhZ2U9SSxFPWZ1bmN0aW9uKCl7TC5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSBFPWZ1bmN0aW9uKCl7eShJLDApfTtmdW5jdGlvbiBQKGUpe2s9ZSxDfHwoQz0hMCxFKCkpfWZ1bmN0aW9uIE0oZSxuKXtBPXkoZnVuY3Rpb24oKXtlKHQudW5zdGFibGVfbm93KCkpfSxuKX10LnVuc3RhYmxlX0lkbGVQcmlvcml0eT01LHQudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHk9MSx0LnVuc3RhYmxlX0xvd1ByaW9yaXR5PTQsdC51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eT0zLHQudW5zdGFibGVfUHJvZmlsaW5nPW51bGwsdC51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eT0yLHQudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24oZSl7ZS5jYWxsYmFjaz1udWxsfSx0LnVuc3RhYmxlX2NvbnRpbnVlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7bXx8aHx8KG09ITAsUChTKSl9LHQudW5zdGFibGVfZm9yY2VGcmFtZVJhdGU9ZnVuY3Rpb24oZSl7MD5lfHwxMjU8ZT9jb25zb2xlLmVycm9yKCJmb3JjZUZyYW1lUmF0ZSB0YWtlcyBhIHBvc2l0aXZlIGludCBiZXR3ZWVuIDAgYW5kIDEyNSwgZm9yY2luZyBmcmFtZSByYXRlcyBoaWdoZXIgdGhhbiAxMjUgZnBzIGlzIG5vdCBzdXBwb3J0ZWQiKTpPPTA8ZT9NYXRoLmZsb29yKDFlMy9lKTo1fSx0LnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHB9LHQudW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gcih1KX0sdC51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKGUpe3N3aXRjaChwKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgdD0zO2JyZWFrO2RlZmF1bHQ6dD1wfXZhciBuPXA7cD10O3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7cD1ufX0sdC51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe30sdC51bnN0YWJsZV9yZXF1ZXN0UGFpbnQ9ZnVuY3Rpb24oKXt9LHQudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5PWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6YnJlYWs7ZGVmYXVsdDplPTN9dmFyIG49cDtwPWU7dHJ5e3JldHVybiB0KCl9ZmluYWxseXtwPW59fSx0LnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s9ZnVuY3Rpb24oZSxvLGkpe3ZhciBhPXQudW5zdGFibGVfbm93KCk7c3dpdGNoKCJvYmplY3QiPT10eXBlb2YgaSYmbnVsbCE9PWk/aT0ibnVtYmVyIj09dHlwZW9mKGk9aS5kZWxheSkmJjA8aT9hK2k6YTppPWEsZSl7Y2FzZSAxOnZhciBzPS0xO2JyZWFrO2Nhc2UgMjpzPTI1MDticmVhaztjYXNlIDU6cz0xMDczNzQxODIzO2JyZWFrO2Nhc2UgNDpzPTFlNDticmVhaztkZWZhdWx0OnM9NWUzfXJldHVybiBlPXtpZDpkKyssY2FsbGJhY2s6byxwcmlvcml0eUxldmVsOmUsc3RhcnRUaW1lOmksZXhwaXJhdGlvblRpbWU6cz1pK3Msc29ydEluZGV4Oi0xfSxpPmE/KGUuc29ydEluZGV4PWksbihsLGUpLG51bGw9PT1yKHUpJiZlPT09cihsKSYmKGc/KHYoQSksQT0tMSk6Zz0hMCxNKF8saS1hKSkpOihlLnNvcnRJbmRleD1zLG4odSxlKSxtfHxofHwobT0hMCxQKFMpKSksZX0sdC51bnN0YWJsZV9zaG91bGRZaWVsZD14LHQudW5zdGFibGVfd3JhcENhbGxiYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49cDtwPXQ7dHJ5e3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e3A9bn19fX0sNzg4ODpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtDOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LEU6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sVDpmdW5jdGlvbigpe3JldHVybiBkfSxjOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LGg6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sdzpmdW5jdGlvbigpe3JldHVybiBsfX0pO3ZhciByPW4oMzQ4MCksbz1uKDczNjYpLGk9big5ODUzKSxhPW4oNzkzMikscz1uKDg3OTUpLGM9ci5jcmVhdGVDb250ZXh0KCJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTEVsZW1lbnQ/KDAsby5BKSh7a2V5OiJjc3MifSk6bnVsbCksdT1jLlByb3ZpZGVyLGw9ZnVuY3Rpb24oZSl7cmV0dXJuKDAsci5mb3J3YXJkUmVmKShmdW5jdGlvbih0LG4pe3ZhciBvPSgwLHIudXNlQ29udGV4dCkoYyk7cmV0dXJuIGUodCxvLG4pfSl9LGQ9ci5jcmVhdGVDb250ZXh0KHt9KTt2YXIgZj17fS5oYXNPd25Qcm9wZXJ0eSxwPSJfX0VNT1RJT05fVFlQRV9QTEVBU0VfRE9fTk9UX1VTRV9fIixoPWZ1bmN0aW9uKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIHQpZi5jYWxsKHQscikmJihuW3JdPXRbcl0pO3JldHVybiBuW3BdPWUsbn0sbT1mdW5jdGlvbihlKXt2YXIgdD1lLmNhY2hlLG49ZS5zZXJpYWxpemVkLHI9ZS5pc1N0cmluZ1RhZztyZXR1cm4oMCxpLlNGKSh0LG4sciksKDAscy5zKShmdW5jdGlvbigpe3JldHVybigwLGkuc2spKHQsbixyKX0pLG51bGx9LGc9bChmdW5jdGlvbihlLHQsbil7dmFyIG89ZS5jc3M7InN0cmluZyI9PXR5cGVvZiBvJiZ2b2lkIDAhPT10LnJlZ2lzdGVyZWRbb10mJihvPXQucmVnaXN0ZXJlZFtvXSk7dmFyIHM9ZVtwXSxjPVtvXSx1PSIiOyJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWU/dT0oMCxpLlJrKSh0LnJlZ2lzdGVyZWQsYyxlLmNsYXNzTmFtZSk6bnVsbCE9ZS5jbGFzc05hbWUmJih1PWUuY2xhc3NOYW1lKyIgIik7dmFyIGw9KDAsYS5KKShjLHZvaWQgMCxyLnVzZUNvbnRleHQoZCkpO3UrPXQua2V5KyItIitsLm5hbWU7dmFyIGg9e307Zm9yKHZhciBnIGluIGUpZi5jYWxsKGUsZykmJiJjc3MiIT09ZyYmZyE9PXAmJihoW2ddPWVbZ10pO3JldHVybiBoLmNsYXNzTmFtZT11LG4mJihoLnJlZj1uKSxyLmNyZWF0ZUVsZW1lbnQoci5GcmFnbWVudCxudWxsLHIuY3JlYXRlRWxlbWVudChtLHtjYWNoZTp0LHNlcmlhbGl6ZWQ6bCxpc1N0cmluZ1RhZzoic3RyaW5nIj09dHlwZW9mIHN9KSxyLmNyZWF0ZUVsZW1lbnQocyxoKSl9KX0sNzkzMjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtKOmZ1bmN0aW9uKCl7cmV0dXJuIGd9fSk7dmFyIHI9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OjEsYXNwZWN0UmF0aW86MSxib3JkZXJJbWFnZU91dHNldDoxLGJvcmRlckltYWdlU2xpY2U6MSxib3JkZXJJbWFnZVdpZHRoOjEsYm94RmxleDoxLGJveEZsZXhHcm91cDoxLGJveE9yZGluYWxHcm91cDoxLGNvbHVtbkNvdW50OjEsY29sdW1uczoxLGZsZXg6MSxmbGV4R3JvdzoxLGZsZXhQb3NpdGl2ZToxLGZsZXhTaHJpbms6MSxmbGV4TmVnYXRpdmU6MSxmbGV4T3JkZXI6MSxncmlkUm93OjEsZ3JpZFJvd0VuZDoxLGdyaWRSb3dTcGFuOjEsZ3JpZFJvd1N0YXJ0OjEsZ3JpZENvbHVtbjoxLGdyaWRDb2x1bW5FbmQ6MSxncmlkQ29sdW1uU3BhbjoxLGdyaWRDb2x1bW5TdGFydDoxLG1zR3JpZFJvdzoxLG1zR3JpZFJvd1NwYW46MSxtc0dyaWRDb2x1bW46MSxtc0dyaWRDb2x1bW5TcGFuOjEsZm9udFdlaWdodDoxLGxpbmVIZWlnaHQ6MSxvcGFjaXR5OjEsb3JkZXI6MSxvcnBoYW5zOjEsc2NhbGU6MSx0YWJTaXplOjEsd2lkb3dzOjEsekluZGV4OjEsem9vbToxLFdlYmtpdExpbmVDbGFtcDoxLGZpbGxPcGFjaXR5OjEsZmxvb2RPcGFjaXR5OjEsc3RvcE9wYWNpdHk6MSxzdHJva2VEYXNoYXJyYXk6MSxzdHJva2VEYXNob2Zmc2V0OjEsc3Ryb2tlTWl0ZXJsaW1pdDoxLHN0cm9rZU9wYWNpdHk6MSxzdHJva2VXaWR0aDoxfTtmdW5jdGlvbiBvKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB2b2lkIDA9PT10W25dJiYodFtuXT1lKG4pKSx0W25dfX12YXIgaT0hMSxhPS9bQS1aXXxebXMvZyxzPS9fRU1PXyhbXl9dKz8pXyhbXl0qPylfRU1PXy9nLGM9ZnVuY3Rpb24oZSl7cmV0dXJuIDQ1PT09ZS5jaGFyQ29kZUF0KDEpfSx1PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiYiYm9vbGVhbiIhPXR5cGVvZiBlfSxsPW8oZnVuY3Rpb24oZSl7cmV0dXJuIGMoZSk/ZTplLnJlcGxhY2UoYSwiLSQmIikudG9Mb3dlckNhc2UoKX0pLGQ9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJhbmltYXRpb24iOmNhc2UiYW5pbWF0aW9uTmFtZSI6aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0LnJlcGxhY2UocyxmdW5jdGlvbihlLHQsbil7cmV0dXJuIGg9e25hbWU6dCxzdHlsZXM6bixuZXh0Omh9LHR9KX1yZXR1cm4gMT09PXJbZV18fGMoZSl8fCJudW1iZXIiIT10eXBlb2YgdHx8MD09PXQ/dDp0KyJweCJ9LGY9IkNvbXBvbmVudCBzZWxlY3RvcnMgY2FuIG9ubHkgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIEBlbW90aW9uL2JhYmVsLXBsdWdpbiwgdGhlIHN3YyBFbW90aW9uIHBsdWdpbiwgb3IgYW5vdGhlciBFbW90aW9uLWF3YXJlIGNvbXBpbGVyIHRyYW5zZm9ybS4iO2Z1bmN0aW9uIHAoZSx0LG4pe2lmKG51bGw9PW4pcmV0dXJuIiI7dmFyIHI9bjtpZih2b2lkIDAhPT1yLl9fZW1vdGlvbl9zdHlsZXMpcmV0dXJuIHI7c3dpdGNoKHR5cGVvZiBuKXtjYXNlImJvb2xlYW4iOnJldHVybiIiO2Nhc2Uib2JqZWN0Ijp2YXIgbz1uO2lmKDE9PT1vLmFuaW0pcmV0dXJuIGg9e25hbWU6by5uYW1lLHN0eWxlczpvLnN0eWxlcyxuZXh0Omh9LG8ubmFtZTt2YXIgYT1uO2lmKHZvaWQgMCE9PWEuc3R5bGVzKXt2YXIgcz1hLm5leHQ7aWYodm9pZCAwIT09cylmb3IoO3ZvaWQgMCE9PXM7KWg9e25hbWU6cy5uYW1lLHN0eWxlczpzLnN0eWxlcyxuZXh0Omh9LHM9cy5uZXh0O3JldHVybiBhLnN0eWxlcysiOyJ9cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iIjtpZihBcnJheS5pc0FycmF5KG4pKWZvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXIrPXAoZSx0LG5bb10pKyI7IjtlbHNlIGZvcih2YXIgYSBpbiBuKXt2YXIgcz1uW2FdO2lmKCJvYmplY3QiIT10eXBlb2Ygcyl7dmFyIGM9cztudWxsIT10JiZ2b2lkIDAhPT10W2NdP3IrPWErInsiK3RbY10rIn0iOnUoYykmJihyKz1sKGEpKyI6IitkKGEsYykrIjsiKX1lbHNle2lmKCJOT19DT01QT05FTlRfU0VMRUNUT1IiPT09YSYmaSl0aHJvdyBuZXcgRXJyb3IoZik7aWYoIUFycmF5LmlzQXJyYXkocyl8fCJzdHJpbmciIT10eXBlb2Ygc1swXXx8bnVsbCE9dCYmdm9pZCAwIT09dFtzWzBdXSl7dmFyIGg9cChlLHQscyk7c3dpdGNoKGEpe2Nhc2UiYW5pbWF0aW9uIjpjYXNlImFuaW1hdGlvbk5hbWUiOnIrPWwoYSkrIjoiK2grIjsiO2JyZWFrO2RlZmF1bHQ6cis9YSsieyIraCsifSJ9fWVsc2UgZm9yKHZhciBtPTA7bTxzLmxlbmd0aDttKyspdShzW21dKSYmKHIrPWwoYSkrIjoiK2QoYSxzW21dKSsiOyIpfX1yZXR1cm4gcn0oZSx0LG4pO2Nhc2UiZnVuY3Rpb24iOmlmKHZvaWQgMCE9PWUpe3ZhciBjPWgsbT1uKGUpO3JldHVybiBoPWMscChlLHQsbSl9fXZhciBnPW47aWYobnVsbD09dClyZXR1cm4gZzt2YXIgeT10W2ddO3JldHVybiB2b2lkIDAhPT15P3k6Z312YXIgaCxtPS9sYWJlbDpccyooW15cczt7XSspXHMqKDt8JCkvZztmdW5jdGlvbiBnKGUsdCxuKXtpZigxPT09ZS5sZW5ndGgmJiJvYmplY3QiPT10eXBlb2YgZVswXSYmbnVsbCE9PWVbMF0mJnZvaWQgMCE9PWVbMF0uc3R5bGVzKXJldHVybiBlWzBdO3ZhciByPSEwLG89IiI7aD12b2lkIDA7dmFyIGk9ZVswXTtudWxsPT1pfHx2b2lkIDA9PT1pLnJhdz8ocj0hMSxvKz1wKG4sdCxpKSk6bys9aVswXTtmb3IodmFyIGE9MTthPGUubGVuZ3RoO2ErKyl7aWYobys9cChuLHQsZVthXSkscilvKz1pW2FdfW0ubGFzdEluZGV4PTA7Zm9yKHZhciBzLGM9IiI7bnVsbCE9PShzPW0uZXhlYyhvKSk7KWMrPSItIitzWzFdO3ZhciB1PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPTAscj0wLG89ZS5sZW5ndGg7bz49NDsrK3Isby09NCl0PTE1NDA0ODM0NzcqKDY1NTM1Jih0PTI1NSZlLmNoYXJDb2RlQXQocil8KDI1NSZlLmNoYXJDb2RlQXQoKytyKSk8PDh8KDI1NSZlLmNoYXJDb2RlQXQoKytyKSk8PDE2fCgyNTUmZS5jaGFyQ29kZUF0KCsrcikpPDwyNCkpKyg1OTc5NyoodD4+PjE2KTw8MTYpLG49MTU0MDQ4MzQ3NyooNjU1MzUmKHRePXQ+Pj4yNCkpKyg1OTc5NyoodD4+PjE2KTw8MTYpXjE1NDA0ODM0NzcqKDY1NTM1Jm4pKyg1OTc5Nyoobj4+PjE2KTw8MTYpO3N3aXRjaChvKXtjYXNlIDM6bl49KDI1NSZlLmNoYXJDb2RlQXQocisyKSk8PDE2O2Nhc2UgMjpuXj0oMjU1JmUuY2hhckNvZGVBdChyKzEpKTw8ODtjYXNlIDE6bj0xNTQwNDgzNDc3Kig2NTUzNSYobl49MjU1JmUuY2hhckNvZGVBdChyKSkpKyg1OTc5Nyoobj4+PjE2KTw8MTYpfXJldHVybigoKG49MTU0MDQ4MzQ3NyooNjU1MzUmKG5ePW4+Pj4xMykpKyg1OTc5Nyoobj4+PjE2KTw8MTYpKV5uPj4+MTUpPj4+MCkudG9TdHJpbmcoMzYpfShvKStjO3JldHVybntuYW1lOnUsc3R5bGVzOm8sbmV4dDpofX19LDc5NDg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDY2NzQpLG89big5NzkpLGk9big5NzQzKSxhPXIoRnVuY3Rpb24udG9TdHJpbmcpO28oaS5pbnNwZWN0U291cmNlKXx8KGkuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gYShlKX0pLGUuZXhwb3J0cz1pLmluc3BlY3RTb3VyY2V9LDc5NDk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDc2MjMpLG89VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKHIodCxlKSlyZXR1cm4gZTt0aHJvdyBuZXcgbygiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LDc5NTA6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7TTpmdW5jdGlvbigpe3JldHVybiByfX0pO2NvbnN0IHI9IjguNTUuMCJ9LDc5OTM6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDE0MzApLG89big4NzI3KSxpPW4oMzcxKSxhPW4oNTc5NCkscz1uKDMzOTkpLGM9big0ODE1KSx1PW4oNTAyNyksbD1uKDgyMDcpLGQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjt0LmY9cj9kOmZ1bmN0aW9uKGUsdCl7aWYoZT1zKGUpLHQ9Yyh0KSxsKXRyeXtyZXR1cm4gZChlLHQpfWNhdGNoKGUpe31pZih1KGUsdCkpcmV0dXJuIGEoIW8oaS5mLGUsdCksZVt0XSl9fSw4MDQxOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse1JWOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LGdkOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LHFROmZ1bmN0aW9uKCl7cmV0dXJuIGR9LHZrOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHlGOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7Y29uc3Qgcj01MCxvPSI/IixpPS9cKGVycm9yOiAoLiopXCkvLGE9L2NhcHR1cmVNZXNzYWdlfGNhcHR1cmVFeGNlcHRpb24vO2Z1bmN0aW9uIHMoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtjb25zdCBzPXQuc29ydCgoZSx0KT0+ZVswXS10WzBdKS5tYXAoZT0+ZVsxXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjA7Y29uc3QgYz1bXSxsPWUuc3BsaXQoIlxuIik7Zm9yKGxldCBlPXQ7ZTxsLmxlbmd0aDtlKyspe2NvbnN0IHQ9bFtlXTtpZih0Lmxlbmd0aD4xMDI0KWNvbnRpbnVlO2NvbnN0IG89aS50ZXN0KHQpP3QucmVwbGFjZShpLCIkMSIpOnQ7aWYoIW8ubWF0Y2goL1xTKkVycm9yOiAvKSl7Zm9yKGNvbnN0IGUgb2Ygcyl7Y29uc3QgdD1lKG8pO2lmKHQpe2MucHVzaCh0KTticmVha319aWYoYy5sZW5ndGg+PXIrbilicmVha319cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClyZXR1cm5bXTtjb25zdCB0PUFycmF5LmZyb20oZSk7L3NlbnRyeVdyYXBwZWQvLnRlc3QodSh0KS5mdW5jdGlvbnx8IiIpJiZ0LnBvcCgpO3QucmV2ZXJzZSgpLGEudGVzdCh1KHQpLmZ1bmN0aW9ufHwiIikmJih0LnBvcCgpLGEudGVzdCh1KHQpLmZ1bmN0aW9ufHwiIikmJnQucG9wKCkpO3JldHVybiB0LnNsaWNlKDAscikubWFwKGU9Pih7Li4uZSxmaWxlbmFtZTplLmZpbGVuYW1lfHx1KHQpLmZpbGVuYW1lLGZ1bmN0aW9uOmUuZnVuY3Rpb258fG99KSl9KGMuc2xpY2UobikpfX1mdW5jdGlvbiBjKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP3MoLi4uZSk6ZX1mdW5jdGlvbiB1KGUpe3JldHVybiBlW2UubGVuZ3RoLTFdfHx7fX1jb25zdCBsPSI8YW5vbnltb3VzPiI7ZnVuY3Rpb24gZChlKXt0cnl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLm5hbWV8fGx9Y2F0Y2goZSl7cmV0dXJuIGx9fWZ1bmN0aW9uIGYoZSl7Y29uc3QgdD1lLmV4Y2VwdGlvbjtpZih0KXtjb25zdCBlPVtdO3RyeXtyZXR1cm4gdC52YWx1ZXMuZm9yRWFjaCh0PT57dC5zdGFja3RyYWNlLmZyYW1lcyYmZS5wdXNoKC4uLnQuc3RhY2t0cmFjZS5mcmFtZXMpfSksZX1jYXRjaChlKXtyZXR1cm59fX19LDgxNjg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7cmV0dXJuIHI9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxyLmFwcGx5KG51bGwsYXJndW1lbnRzKX1uLmQodCx7QTpmdW5jdGlvbigpe3JldHVybiByfX0pfSw4MTkwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzNDgwKSxvPW4oMjgwNCk7dmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXQmJigwIT09ZXx8MS9lPT0xL3QpfHxlIT1lJiZ0IT10fSxhPW8udXNlU3luY0V4dGVybmFsU3RvcmUscz1yLnVzZVJlZixjPXIudXNlRWZmZWN0LHU9ci51c2VNZW1vLGw9ci51c2VEZWJ1Z1ZhbHVlO3QudXNlU3luY0V4dGVybmFsU3RvcmVXaXRoU2VsZWN0b3I9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgZD1zKG51bGwpO2lmKG51bGw9PT1kLmN1cnJlbnQpe3ZhciBmPXtoYXNWYWx1ZTohMSx2YWx1ZTpudWxsfTtkLmN1cnJlbnQ9Zn1lbHNlIGY9ZC5jdXJyZW50O2Q9dShmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7aWYoIWMpe2lmKGM9ITAsYT1lLGU9cihlKSx2b2lkIDAhPT1vJiZmLmhhc1ZhbHVlKXt2YXIgdD1mLnZhbHVlO2lmKG8odCxlKSlyZXR1cm4gcz10fXJldHVybiBzPWV9aWYodD1zLGkoYSxlKSlyZXR1cm4gdDt2YXIgbj1yKGUpO3JldHVybiB2b2lkIDAhPT1vJiZvKHQsbik/KGE9ZSx0KTooYT1lLHM9bil9dmFyIGEscyxjPSExLHU9dm9pZCAwPT09bj9udWxsOm47cmV0dXJuW2Z1bmN0aW9uKCl7cmV0dXJuIGUodCgpKX0sbnVsbD09PXU/dm9pZCAwOmZ1bmN0aW9uKCl7cmV0dXJuIGUodSgpKX1dfSxbdCxuLHIsb10pO3ZhciBwPWEoZSxkWzBdLGRbMV0pO3JldHVybiBjKGZ1bmN0aW9uKCl7Zi5oYXNWYWx1ZT0hMCxmLnZhbHVlPXB9LFtwXSksbChwKSxwfX0sODIwNzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTQzMCksbz1uKDM0ODkpLGk9bigzNDA5KTtlLmV4cG9ydHM9IXImJiFvKGZ1bmN0aW9uKCl7cmV0dXJuIDchPT1PYmplY3QuZGVmaW5lUHJvcGVydHkoaSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LDgyNjQ6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuKDQ0MDkpfSw4Mjg5OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse0ZEOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LEZLOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LFk6ZnVuY3Rpb24oKXtyZXR1cm4gYX19KTt2YXIgcj1uKDM5ODgpLG89big3ODg4KSxpPShuKDM0ODApLG4oNzM2NiksbigzNDU0KSxuKDc5MzIpLG4oODc5NSksci5GcmFnbWVudCksYT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG8uaC5jYWxsKHQsImNzcyIpP3IuanN4KG8uRSwoMCxvLmMpKGUsdCksbik6ci5qc3goZSx0LG4pfSxzPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gby5oLmNhbGwodCwiY3NzIik/ci5qc3hzKG8uRSwoMCxvLmMpKGUsdCksbik6ci5qc3hzKGUsdCxuKX19LDgzNTY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDM5MzIpLG89big3NDQzKSxpPW4oNzIpLGE9big3NTA1KSxzPW4oOTM5KTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxhcml0eToxLGZvcmNlZDpuKDM0ODkpKGZ1bmN0aW9uKCl7cmV0dXJuIDQyOTQ5NjcyOTchPT1bXS5wdXNoLmNhbGwoe2xlbmd0aDo0Mjk0OTY3Mjk2fSwxKX0pfHwhZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCJsZW5ndGgiLHt3cml0YWJsZTohMX0pLnB1c2goKX1jYXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCl9LHtwdXNoOmZ1bmN0aW9uKGUpe3ZhciB0PW8odGhpcyksbj1pKHQpLHI9YXJndW1lbnRzLmxlbmd0aDtzKG4rcik7Zm9yKHZhciBjPTA7YzxyO2MrKyl0W25dPWFyZ3VtZW50c1tjXSxuKys7cmV0dXJuIGEodCxuKSxufX0pfSw4Mzc3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7big0OTEwKX0sODM5MTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTQzMCksbz1uKDY2NzQpLGk9big2ZTMpLGE9VVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZSxzPW8oYS5mb3JFYWNoKTtyJiYhKCJzaXplImluIGEpJiZpKGEsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgZT0wO3JldHVybiBzKHRoaXMsZnVuY3Rpb24oKXtlKyt9KSxlfSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfSw4NDEyOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big4NTY1KSxvPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1yKGUpO3JldHVybiB0PjA/byh0LDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSw4NDQ4OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse0JpOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LERSOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LFU1OmZ1bmN0aW9uKCl7cmV0dXJuIGx9LFY4OmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHB3OmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSk7big1NzE4KSxuKDMxNDcpLG4oNTg1NSk7dmFyIHI9big3NTAyKSxvPW4oNzMyNik7Y29uc3QgaT0oMCxyLkEpKCk7bGV0IGE9e2RhdGE6e30sbGFuZzoiIn07ZnVuY3Rpb24gcygpe3JldHVybiBhLmxhbmd9ZnVuY3Rpb24gYygpe2NvbnN0IGU9cygpO3JldHVyblsiYXIiLCJkdiIsImZhIiwiaGUiLCJrdSIsInBzIiwic2QiLCJ1ZyIsInVyIiwieWkiXS5pbmRleE9mKGUpPi0xfWZ1bmN0aW9uIHUoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxyPWEuZGF0YVtlXTtyZXR1cm4gdD8ocnx8KCgwLG8uc1EpKGBUcmFuczogTm8gdHJhbnNsYXRpb24gZm9yIGtleSAke2V9IGZvdW5kLmAse2tleTplfSkscj1ufHwiIiksT2JqZWN0LmtleXModCkuZm9yRWFjaChlPT57cj1yLnJlcGxhY2UoZSx0W2VdKX0pLHIpOnJ8fChudWxsIT09bj9uOiIiKX1mdW5jdGlvbiBsKGUsdCl7dHJ5e2NvbnN0IG49ZS5maW5kKGU9PmUubGFuZz09PXQpO2E9bnx8ZnVuY3Rpb24oZSl7dHJ5e2lmKHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGlkaW9DaGF0TGFuZyl7Y29uc3QgdD13aW5kb3cucGFyZW50LmRvY3VtZW50LnRpZGlvQ2hhdExhbmc7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBuPXQuc3BsaXQoIi0iKVswXS50b0xvd2VyQ2FzZSgpLHI9ZS5maW5kKGU9PmUubGFuZz09PW4pO2lmKHIpcmV0dXJuIHJ9fWlmKG5hdmlnYXRvci5sYW5ndWFnZXMmJkFycmF5LmlzQXJyYXkobmF2aWdhdG9yLmxhbmd1YWdlcykmJm5hdmlnYXRvci5sYW5ndWFnZXMubGVuZ3RoPjApZm9yKGxldCB0PTA7dDxuYXZpZ2F0b3IubGFuZ3VhZ2VzLmxlbmd0aDt0Kz0xKXtjb25zdCBuPW5hdmlnYXRvci5sYW5ndWFnZXNbdF0udG9Mb3dlckNhc2UoKTtsZXQgcj1lLmZpbmQoZT0+ZS5sYW5nPT09bik7aWYocilyZXR1cm4gcjtjb25zdCBvPW4uc3BsaXQoIi0iKVswXTtpZihyPWUuZmluZChlPT5lLmxhbmc9PT1vKSxyKXJldHVybiByfWlmKG5hdmlnYXRvci5sYW5ndWFnZSYmInN0cmluZyI9PXR5cGVvZiBuYXZpZ2F0b3IubGFuZ3VhZ2Upe2NvbnN0IHQ9bmF2aWdhdG9yLmxhbmd1YWdlLnNwbGl0KCItIilbMF07aWYoMj09PXQubGVuZ3RoKXtjb25zdCBuPWUuZmluZChlPT5lLmxhbmc9PT10KTtpZihuKXJldHVybiBufX19Y2F0Y2h7fXJldHVybiBlLmZpbmQoZT0+ImVuIj09PWUubGFuZyl8fGVbMF19KGUpLGEuZGF0YXx8KGEuZGF0YT17fSksaS5lbWl0KCJ0cmFuc2xhdGlvbnNDaGFuZ2VkIil9Y2F0Y2h7YT17ZGF0YTp7fX19fX0sODQ2MTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMzUyOSksbz1TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJTeW1ib2wiPT09cihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyIpO3JldHVybiBvKGUpfX0sODQ5MDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNjY3NCk7ZS5leHBvcnRzPXIoW10uc2xpY2UpfSw4NTI0OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big4NzI3KSxvPW4oMjA4MiksaT1uKDE0MTMpLGE9bigyNjIyKSxzPW4oMTM4NSksYz1uKDg1MzkpLHU9big5OTMyKSxsPW4oMzI2NykuSXRlcmF0b3JQcm90b3R5cGUsZD1uKDEyMzkpLGY9bigzOTc3KSxwPW4oOTMzNSksaD1zKCJ0b1N0cmluZ1RhZyIpLG09Ikl0ZXJhdG9ySGVscGVyIixnPSJXcmFwRm9yVmFsaWRJdGVyYXRvciIseT0ibm9ybWFsIix2PSJ0aHJvdyIsYj1jLnNldCx3PWZ1bmN0aW9uKGUpe3ZhciB0PWMuZ2V0dGVyRm9yKGU/ZzptKTtyZXR1cm4gYShvKGwpLHtuZXh0OmZ1bmN0aW9uKCl7dmFyIG49dCh0aGlzKTtpZihlKXJldHVybiBuLm5leHRIYW5kbGVyKCk7aWYobi5kb25lKXJldHVybiBkKHZvaWQgMCwhMCk7dHJ5e3ZhciByPW4ubmV4dEhhbmRsZXIoKTtyZXR1cm4gbi5yZXR1cm5IYW5kbGVyUmVzdWx0P3I6ZChyLG4uZG9uZSl9Y2F0Y2goZSl7dGhyb3cgbi5kb25lPSEwLGV9fSxyZXR1cm46ZnVuY3Rpb24oKXt2YXIgbj10KHRoaXMpLG89bi5pdGVyYXRvcjtpZihuLmRvbmU9ITAsZSl7dmFyIGk9dShvLCJyZXR1cm4iKTtyZXR1cm4gaT9yKGksbyk6ZCh2b2lkIDAsITApfWlmKG4uaW5uZXIpdHJ5e2Yobi5pbm5lci5pdGVyYXRvcix5KX1jYXRjaChlKXtyZXR1cm4gZihvLHYsZSl9aWYobi5vcGVuSXRlcnMpdHJ5e3Aobi5vcGVuSXRlcnMseSl9Y2F0Y2goZSl7cmV0dXJuIGYobyx2LGUpfXJldHVybiBvJiZmKG8seSksZCh2b2lkIDAsITApfX0pfSxfPXcoITApLFM9dyghMSk7aShTLGgsIkl0ZXJhdG9yIEhlbHBlciIpLGUuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZnVuY3Rpb24ocixvKXtvPyhvLml0ZXJhdG9yPXIuaXRlcmF0b3Isby5uZXh0PXIubmV4dCk6bz1yLG8udHlwZT10P2c6bSxvLnJldHVybkhhbmRsZXJSZXN1bHQ9ISFuLG8ubmV4dEhhbmRsZXI9ZSxvLmNvdW50ZXI9MCxvLmRvbmU9ITEsYih0aGlzLG8pfTtyZXR1cm4gci5wcm90b3R5cGU9dD9fOlMscn19LDg1Mzk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcixvLGksYT1uKDQwOTIpLHM9big3NTcwKSxjPW4oNTI2NCksdT1uKDE0MTMpLGw9big1MDI3KSxkPW4oOTc0MyksZj1uKDU5NzcpLHA9big2MDQzKSxoPSJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCIsbT1zLlR5cGVFcnJvcixnPXMuV2Vha01hcDtpZihhfHxkLnN0YXRlKXt2YXIgeT1kLnN0YXRlfHwoZC5zdGF0ZT1uZXcgZyk7eS5nZXQ9eS5nZXQseS5oYXM9eS5oYXMseS5zZXQ9eS5zZXQscj1mdW5jdGlvbihlLHQpe2lmKHkuaGFzKGUpKXRocm93IG5ldyBtKGgpO3JldHVybiB0LmZhY2FkZT1lLHkuc2V0KGUsdCksdH0sbz1mdW5jdGlvbihlKXtyZXR1cm4geS5nZXQoZSl8fHt9fSxpPWZ1bmN0aW9uKGUpe3JldHVybiB5LmhhcyhlKX19ZWxzZXt2YXIgdj1mKCJzdGF0ZSIpO3Bbdl09ITAscj1mdW5jdGlvbihlLHQpe2lmKGwoZSx2KSl0aHJvdyBuZXcgbShoKTtyZXR1cm4gdC5mYWNhZGU9ZSx1KGUsdix0KSx0fSxvPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUsdik/ZVt2XTp7fX0saT1mdW5jdGlvbihlKXtyZXR1cm4gbChlLHYpfX1lLmV4cG9ydHM9e3NldDpyLGdldDpvLGhhczppLGVuZm9yY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSk/byhlKTpyKGUse30pfSxnZXR0ZXJGb3I6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuO2lmKCFjKHQpfHwobj1vKHQpKS50eXBlIT09ZSl0aHJvdyBuZXcgbSgiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK2UrIiByZXF1aXJlZCIpO3JldHVybiBufX19fSw4NTY1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3NTUxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuIHQhPXR8fDA9PT10PzA6cih0KX19LDg1ODc6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlpZih7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpe2lmKC0xIT09dC5pbmRleE9mKHIpKWNvbnRpbnVlO25bcl09ZVtyXX1yZXR1cm4gbn1uLmQodCx7QTpmdW5jdGlvbigpe3JldHVybiByfX0pfSw4NTk3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHIsbyxpPW4oNzU3MCksYT1uKDUxMDEpLHM9aS5wcm9jZXNzLGM9aS5EZW5vLHU9cyYmcy52ZXJzaW9uc3x8YyYmYy52ZXJzaW9uLGw9dSYmdS52ODtsJiYobz0ocj1sLnNwbGl0KCIuIikpWzBdPjAmJnJbMF08ND8xOisoclswXStyWzFdKSksIW8mJmEmJighKHI9YS5tYXRjaCgvRWRnZVwvKFxkKykvKSl8fHJbMV0+PTc0KSYmKHI9YS5tYXRjaCgvQ2hyb21lXC8oXGQrKS8pKSYmKG89K3JbMV0pLGUuZXhwb3J0cz1vfSw4NjA2OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxNDg2KSxvPW4oOTkzMykuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTt0LmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKGUpe3JldHVybiByKGUsbyl9fSw4NjExOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse0o6ZnVuY3Rpb24oKXtyZXR1cm4gbmV9LFRBOmZ1bmN0aW9uKCl7cmV0dXJuIHJlfSx5VjpmdW5jdGlvbigpe3JldHVybiB0ZX0sX1k6ZnVuY3Rpb24oKXtyZXR1cm4gdmV9LEFvOmZ1bmN0aW9uKCl7cmV0dXJuIHBlfSx6QjpmdW5jdGlvbigpe3JldHVybiBFZX0sVHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ2V9LE9lOmZ1bmN0aW9uKCl7cmV0dXJuIHllfSxQbTpmdW5jdGlvbigpe3JldHVybiBtZX0sYXU6ZnVuY3Rpb24oKXtyZXR1cm4gaGV9LG52OmZ1bmN0aW9uKCl7cmV0dXJuIGZlfSxuQTpmdW5jdGlvbigpe3JldHVybiBTZX0sQWo6ZnVuY3Rpb24oKXtyZXR1cm4gX2V9LHNEOmZ1bmN0aW9uKCl7cmV0dXJuIHNlfSxqXzpmdW5jdGlvbigpe3JldHVybiBsZX0sZlk6ZnVuY3Rpb24oKXtyZXR1cm4gdWV9LHZGOmZ1bmN0aW9uKCl7cmV0dXJuIGNlfSxYUDpmdW5jdGlvbigpe3JldHVybiBkZX0sYmg6ZnVuY3Rpb24oKXtyZXR1cm4gd2V9LExLOmZ1bmN0aW9uKCl7cmV0dXJuIGllfSxEajpmdW5jdGlvbigpe3JldHVybiBLfSxRRjpmdW5jdGlvbigpe3JldHVybiBrZX0sT3Q6ZnVuY3Rpb24oKXtyZXR1cm4gYWV9LEZjOmZ1bmN0aW9uKCl7cmV0dXJuIGJlfSxXZjpmdW5jdGlvbigpe3JldHVybiBBZX0sVUg6ZnVuY3Rpb24oKXtyZXR1cm4gWX0saGs6ZnVuY3Rpb24oKXtyZXR1cm4gen0sdTc6ZnVuY3Rpb24oKXtyZXR1cm4gSH0sczY6ZnVuY3Rpb24oKXtyZXR1cm4gR30sT3M6ZnVuY3Rpb24oKXtyZXR1cm4gV30sVTU6ZnVuY3Rpb24oKXtyZXR1cm4gWH0sdTg6ZnVuY3Rpb24oKXtyZXR1cm4gQ2V9LGZMOmZ1bmN0aW9uKCl7cmV0dXJuIHF9LHVxOmZ1bmN0aW9uKCl7cmV0dXJuICR9LENVOmZ1bmN0aW9uKCl7cmV0dXJuIEp9LFdCOmZ1bmN0aW9uKCl7cmV0dXJuIFp9LHVzOmZ1bmN0aW9uKCl7cmV0dXJuIGVlfSxXSzpmdW5jdGlvbigpe3JldHVybiBRfX0pO24oNTcxOCksbig3NDUwKTt2YXIgcj1uKDg5NDgpLG89big1OTIzKSxpPW4oNzMyNiksYT1uKDg0NDgpLHM9big0NDY3KSxjPShuKDgzNTYpLG4oMzE0Nyksbig1ODMpKSx1PW4oNjA1OCksbD1uKDY1OTMpLGQ9bi5uKGwpO2xldCBmO3ZhciBwPWZ1bmN0aW9uKGUpe3RyeXtmJiZ3aW5kb3cucGFyZW50LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixmKTtjb25zdCB0PWQoKSh0PT57ZSgoMCxjLlR0dSkodCkpfSwyZTMpO2Y9ZT0+e2xldHt0YXJnZXQ6bn09ZTtpZihuIGluc3RhbmNlb2Ygd2luZG93LnBhcmVudC5IVE1MRWxlbWVudCYmbi5jbGFzc0xpc3QuY29udGFpbnMoImpkZ20tc3RhciIpKXtjb25zdCBlPW4uZGF0YXNldC5hbHQmJnBhcnNlSW50KG4uZGF0YXNldC5hbHQsMTApOyJudW1iZXIiPT10eXBlb2YgZSYmWzEsMiwzLDQsNV0uaW5jbHVkZXMoZSkmJnQoZSl9fSx3aW5kb3cucGFyZW50LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmKX1jYXRjaChlKXtjb25zdCBuPSh0PWUsQm9vbGVhbih0JiYib2JqZWN0Ij09dHlwZW9mIHQmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LCJtZXNzYWdlIikmJiJzdHJpbmciPT10eXBlb2YgdC5tZXNzYWdlKT9lLm1lc3NhZ2U6dm9pZCAwKTsoMCxpLnNRKSgicnVuT25KdWRnZU1lUmF0aW5nQ2xpY2sgZXJyb3IiLHttZXNzYWdlOm59KX12YXIgdH07dmFyIGg9ZnVuY3Rpb24oZSl7dHJ5e2NvbnN0e2pkZ206dCxqZGdtU2V0dGluZ3M6bn09d2luZG93LnBhcmVudDtpZihuKXtjb25zdCByPW4uY2JSZXZTdWJtaXRTdWNjZXNzLG89bj0+e2NvbnN0IG89dD8uZ2V0Rm9ybURhdGEobikucmF0aW5nO2lmKG8pe2NvbnN0IHQ9cGFyc2VJbnQobywxMCk7WzEsMiwzLDQsNV0uaW5jbHVkZXModCkmJmUoKDAsYy5PZTYpKHQpKX1yPy4obil9O24uY2JSZXZTdWJtaXRTdWNjZXNzPW99fWNhdGNoKGUpeygwLGkuc1EpKCJydW5Pbkp1ZGdlTWVSZXZpZXdTZW50IGVycm9yIix7bWVzc2FnZTplIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOnZvaWQgMH0pfX07Y2xhc3MgbXtjb25zdHJ1Y3Rvcigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSx0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLG49YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAscj1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMCxvPWFyZ3VtZW50cy5sZW5ndGg+ND9hcmd1bWVudHNbNF06dm9pZCAwLGk9YXJndW1lbnRzLmxlbmd0aD41P2FyZ3VtZW50c1s1XTp2b2lkIDA7KDAscy5BKSh0aGlzLCJ2aXNpdG9ySWQiLHZvaWQgMCksKDAscy5BKSh0aGlzLCJkaXNwYXRjaCIsdm9pZCAwKSwoMCxzLkEpKHRoaXMsInByb2plY3RPbmxpbmUiLHZvaWQgMCksKDAscy5BKSh0aGlzLCJoaWRlV2hlbk9mZmxpbmUiLHZvaWQgMCksKDAscy5BKSh0aGlzLCJpc0NoYXRPblNpdGUiLHZvaWQgMCksKDAscy5BKSh0aGlzLCJhdXRvbWF0aW9ucyIsdm9pZCAwKSwoMCxzLkEpKHRoaXMsImJvdHNUb1RyaWdnZXJPblNjcm9sbCIsW10pLCgwLHMuQSkodGhpcywid2luZG93TGVmdCIsdm9pZCAwKSwoMCxzLkEpKHRoaXMsImdldEF1dG9tYXRpb25EYXRhIixlPT50aGlzLmF1dG9tYXRpb25zLmZpbmQodD0+dC50cmlnZ2VyX2lkPT09ZSkpLCgwLHMuQSkodGhpcywiZmlsdGVyT2ZmbGluZUF1dG9tYXRpb25zIixlPT57Y29uc3QgdD10aGlzLmdldEF1dG9tYXRpb25EYXRhKGUpO3JldHVybiEhdCYmIXQucGF5bG9hZD8ub2ZmbGluZV9kaXNhYmxlZH0pLHRoaXMuYXV0b21hdGlvbnM9ZSx0aGlzLnZpc2l0b3JJZD10LHRoaXMucHJvamVjdE9ubGluZT1yLHRoaXMuaGlkZVdoZW5PZmZsaW5lPW8sdGhpcy5pc0NoYXRPblNpdGU9aSx0aGlzLmlucHV0Q2hhbmdlZD10aGlzLmlucHV0Q2hhbmdlZC5iaW5kKHRoaXMpLHRoaXMuZGlzcGF0Y2g9bix0aGlzLmluaXRBdXRvbWF0aW9ucyh0aGlzLmF1dG9tYXRpb25zKX1zZXRWaXNpdG9ySWQoZSl7dGhpcy52aXNpdG9ySWQhPT1lJiYodGhpcy52aXNpdG9ySWQ9ZSl9aW5pdEF1dG9tYXRpb25zKGUpe2NvbnN0IHQ9W10sbj1bXTtsZXQgcj0hMSxvPSExO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSs9MSlzd2l0Y2goZVtpXS50eXBlKXtjYXNlIm9uQWJhbmRvbmVkRm9ybSI6bi5wdXNoKGVbaV0udHJpZ2dlcl9pZCk7YnJlYWs7Y2FzZSJvblBvaW50ZXJMZWZ0V2luZG93Ijp0LnB1c2goZVtpXS50cmlnZ2VyX2lkKTticmVhaztjYXNlIm9uSnVkZ2VNZVJhdGluZ0NsaWNrIjpyPSEwO2JyZWFrO2Nhc2Uib25KdWRnZU1lUmV2aWV3U2VudCI6bz0hMDticmVhaztjYXNlIm9uU2Nyb2xsUGVyY2VudGFnZSI6dGhpcy5ib3RzVG9UcmlnZ2VyT25TY3JvbGwucHVzaCh7aWQ6ZVtpXS50cmlnZ2VyX2lkLHVybDplW2ldLnBheWxvYWQ/LnVybCxtYXRjaDplW2ldLnBheWxvYWQ/Lm1hdGNoLHNjcm9sbFBlcmNlbnRhZ2U6ZVtpXS5wYXlsb2FkPy5wZXJjZW50YWdlfSl9dGhpcy5ydW5MZWF2ZVdpbmRvdyh0KSx0aGlzLnJ1bkxlYXZlRm9ybShuKSx0aGlzLnJ1blNjcm9sbFdpbmRvdygpLHImJnAodGhpcy5kaXNwYXRjaCksbyYmaCh0aGlzLmRpc3BhdGNoKX1pbnB1dENoYW5nZWQoKXsoMCx1LkhvKSgiYXV0b21hdGlvbl9mb3JtTGVmdCIsMSl9cnVuTGVhdmVGb3JtKGUpe2xldCB0PWU7aWYodGhpcy5wcm9qZWN0T25saW5lfHwodD1lLmZpbHRlcih0aGlzLmZpbHRlck9mZmxpbmVBdXRvbWF0aW9ucykpLDE9PT0oMCx1LnZ1KSgiYXV0b21hdGlvbl9mb3JtTGVmdCIpJiZ0Lmxlbmd0aD4wKSgwLHUuSG8pKCJhdXRvbWF0aW9uX2Zvcm1MZWZ0IiwwKSx0aGlzLmV4ZWN1dGUodCk7ZWxzZXtjb25zdCBlPXdpbmRvdy5wYXJlbnQuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiZm9ybSIpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCs9MSl7ZVt0XS5hZGRFdmVudExpc3RlbmVyKCJzdWJtaXQiLCgpPT4oMCx1LkhvKSgiYXV0b21hdGlvbl9mb3JtTGVmdCIsMCkpO2NvbnN0IG49ZVt0XS5xdWVyeVNlbGVjdG9yQWxsKCJ0ZXh0YXJlYSwgc2VsZWN0Iik7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKz0xKW5bZV0uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoKT0+dGhpcy5pbnB1dENoYW5nZWQoKSk7Y29uc3Qgcj1lW3RdLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0Iik7Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKz0xKXN3aXRjaChyW2VdLnR5cGUpe2Nhc2UicGFzc3dvcmQiOmNhc2UiZmlsZSI6ZGVmYXVsdDpyW2VdLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKCk9PnRoaXMuaW5wdXRDaGFuZ2VkKCkpO2Nhc2UiaGlkZGVuIjp9fX1yZXR1cm4hMH1ydW5MZWF2ZVdpbmRvdyhlKXtsZXQgdD1lO3RoaXMucHJvamVjdE9ubGluZXx8KHQ9ZS5maWx0ZXIodGhpcy5maWx0ZXJPZmZsaW5lQXV0b21hdGlvbnMpKTtsZXQgbj1udWxsO3JldHVybiBkb2N1bWVudD8uYm9keSYmKG49ZG9jdW1lbnQuYm9keSksd2luZG93LnBhcmVudD8uZG9jdW1lbnQ/LmJvZHkmJihuPXdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuYm9keSksbiYmKG4uYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsKCk9Pnt0aGlzLndpbmRvd0xlZnQmJmNsZWFyVGltZW91dCh0aGlzLndpbmRvd0xlZnQpfSksbi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsZT0+e2NvbnN0IG49ZS5yZWxhdGVkVGFyZ2V0O24mJiJIVE1MIiE9PW4ubm9kZU5hbWV8fHQubGVuZ3RoPjAmJih0aGlzLndpbmRvd0xlZnQmJmNsZWFyVGltZW91dCh0aGlzLndpbmRvd0xlZnQpLHRoaXMud2luZG93TGVmdD1zZXRUaW1lb3V0KCgpPT57dGhpcy5leGVjdXRlKHQpfSw1ZTMpKX0pKSwhMH1ydW5TY3JvbGxXaW5kb3coKXt0cnl7dGhpcy5wcm9qZWN0T25saW5lfHwodGhpcy5ib3RzVG9UcmlnZ2VyT25TY3JvbGw9dGhpcy5ib3RzVG9UcmlnZ2VyT25TY3JvbGwuZmlsdGVyKGU9PntsZXR7aWQ6dH09ZTtyZXR1cm4gdGhpcy5maWx0ZXJPZmZsaW5lQXV0b21hdGlvbnModCl9KSk7Y29uc3QgZT13aW5kb3cucGFyZW50Py53aW5kb3csdD13aW5kb3cucGFyZW50Py5kb2N1bWVudDtsZXQgbjtjb25zdCBvPSgpPT57biYmY2xlYXJUaW1lb3V0KG4pLG49c2V0VGltZW91dCgoKT0+e2NvbnN0IG49KGUuc2Nyb2xsWS8odC5ib2R5LnNjcm9sbEhlaWdodC1lLmlubmVySGVpZ2h0KSoxMDApLnRvRml4ZWQoMCksaT1bXSxhPVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5ib3RzVG9UcmlnZ2VyT25TY3JvbGwubGVuZ3RoO2UrPTEpe2NvbnN0IHQ9dGhpcy5ib3RzVG9UcmlnZ2VyT25TY3JvbGxbZV0se3Njcm9sbFBlcmNlbnRhZ2U6byxtYXRjaDpzLHVybDpjfT10O2xldCB1PSEwO2NvbnN0IGw9KDAsci5icCkoKTsoYyYmInBhcnRpYWwiPT09cyYmLTE9PT1sLmluZGV4T2YoYyl8fCJleGFjdCI9PT1zJiZjIT09bCkmJih1PSExKSx2b2lkIDAhPT1vJiZwYXJzZUludChuLDEwKT5vJiZ1P2kucHVzaCh0KTphLnB1c2godCl9aS5sZW5ndGgmJih0aGlzLmV4ZWN1dGUoaS5tYXAoZT0+e2xldHtpZDp0fT1lO3JldHVybiB0fSkpLHRoaXMuYm90c1RvVHJpZ2dlck9uU2Nyb2xsPWEpLGEubGVuZ3RofHxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsbyl9LDEwMCl9O2UmJnQmJnRoaXMuYm90c1RvVHJpZ2dlck9uU2Nyb2xsLmxlbmd0aCYmZS5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLG8pfWNhdGNoe319ZXhlY3V0ZShlKXsoISh0aGlzLmhpZGVXaGVuT2ZmbGluZSYmIXRoaXMucHJvamVjdE9ubGluZSl8fHRoaXMuaXNDaGF0T25TaXRlKSYmdGhpcy5kaXNwYXRjaCgoMCxjLnlWeikoZSkpfX12YXIgZz1uKDQxMjEpLHk9bigzNjE3KTtuKDU4NTUpO2Z1bmN0aW9uIHYoZSl7Y29uc3QgdD1lLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0W3R5cGU9J3RleHQnXSwgaW5wdXRbdHlwZT0nZW1haWwnXSIpLG49ZS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFt0eXBlPSdwYXNzd29yZCddIik7cmV0dXJuIDE9PT1lLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0W3R5cGU9J2hpZGRlbiddW25hbWU9J2Zvcm1fdHlwZSddW3ZhbHVlPSdjdXN0b21lcl9sb2dpbiddIikubGVuZ3RofHwoImN1c3RvbWVyX2xvZ2luIj09PWUuaWR8fCJsb2dpbiI9PT1lLmlkfHwxPT09dD8ubGVuZ3RoJiYxPT09bj8ubGVuZ3RoKX1mdW5jdGlvbiBiKGUpe2NvbnN0IHQ9ZS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFt0eXBlPSd0ZXh0J10sIGlucHV0W3R5cGU9J2VtYWlsJ10iKSxuPWUucXVlcnlTZWxlY3RvckFsbCgiaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSIpO3JldHVybiAxPT09ZS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFt0eXBlPSdoaWRkZW4nXVtuYW1lPSdmb3JtX3R5cGUnXVt2YWx1ZT0nY3JlYXRlX2N1c3RvbWVyJ10iKS5sZW5ndGh8fCgiY3JlYXRlX2N1c3RvbWVyIj09PWUuaWR8fCJyZWdpc3RlciI9PT1lLmlkfHwoISEodCYmdC5sZW5ndGg+PTEmJjI9PT1uPy5sZW5ndGgpfHwhIShlLmFjdGlvbiYmInN0cmluZyI9PXR5cGVvZiBlLmFjdGlvbiYmZS5hY3Rpb24uaW5kZXhPZigicmVnaXN0ZXIiKT4tMSkpKX1mdW5jdGlvbiB3KGUpe3JldHVybiAxPT09ZS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFt0eXBlPSdoaWRkZW4nXVtuYW1lPSdmb3JtX3R5cGUnXVt2YWx1ZT0ncmVjb3Zlcl9jdXN0b21lcl9wYXNzd29yZCddIikubGVuZ3RofHwoImZvcmdvdF9wYXNzd29yZCI9PT1lLmlkfHwhKCFlLmFjdGlvbnx8InN0cmluZyIhPXR5cGVvZiBlLmFjdGlvbnx8IShlLmFjdGlvbi5pbmRleE9mKCJmb3Jnb3RfcGFzc3dvcmQiKT4tMXx8ZS5hY3Rpb24uaW5kZXhPZigiZm9yZ290LXBhc3N3b3JkIik+LTEpKSl9dmFyIF89Y2xhc3N7Y29uc3RydWN0b3IoZSl7Y29uc3QgdD17Y29udGFjdF92aXNpdGVkOntldmVudE5hbWU6ImdlbmVyaWMuY29udGFjdF92aXNpdGVkIixmdW5jOnRoaXMuY29udGFjdFZpc2l0ZWR9LGxpa2VkX29uX2ZhY2Vib29rOntldmVudE5hbWU6ImdlbmVyaWMubGlrZWRfb25fZmFjZWJvb2siLGZ1bmM6dGhpcy5saWtlZE9uRmFjZWJvb2t9LHVubGlrZWRfb25fZmFjZWJvb2s6e2V2ZW50TmFtZToiZ2VuZXJpYy51bmxpa2VkX29uX2ZhY2Vib29rIixmdW5jOnRoaXMudW5MaWtlZE9uRmFjZWJvb2t9LGxvZ2dlZF9pbjp7ZXZlbnROYW1lOiJnZW5lcmljLmxvZ2dlZF9pbiIsZnVuYzp0aGlzLmxvZ2dlZElufSxyZWdpc3RlcmVkOntldmVudE5hbWU6ImdlbmVyaWMucmVnaXN0ZXJlZCIsZnVuYzp0aGlzLnJlZ2lzdGVyZWR9LGZvcmdvdF9wYXNzd29yZDp7ZXZlbnROYW1lOiJnZW5lcmljLmZvcmdvdF9wYXNzd29yZCIsZnVuYzp0aGlzLmZvcmdvdFBhc3N3b3JkfSxlbWFpbF9maWxsZWQ6e2V2ZW50TmFtZToiZ2VuZXJpYy5lbWFpbF9maWxsZWQiLGZ1bmM6dGhpcy5lbWFpbEZpbGxlZH19O3RoaXMuaW5pdEdlbmVyaWNFdmVudHMoZSx0KX1pbml0R2VuZXJpY0V2ZW50cyhlLHQpe09iamVjdC5rZXlzKHQpLmZvckVhY2gobj0+e2VbdFtuXS5ldmVudE5hbWVdJiYodFtuXS5mdW5jPXRbbl0uZnVuYy5iaW5kKHRoaXMpLHRbbl0uZnVuYyh0W25dLmV2ZW50TmFtZSkpfSl9Y29udGFjdFZpc2l0ZWQoZSl7bGV0IHQ9ITE7Y29uc3Qgbj0oMCxyLmJwKSgpOyF0JiZuLm1hdGNoKC9bXmEtekEtWjAtOV0oY29udGFjdHxjb250YWN0b3xjb250YXRvfGNvbnRhdHRvfGtvbnRha3QpKFteYS16QS1aMC05XXwkKS8pJiYodD0hMCksdCYmd2luZG93LnRpZGlvQ2hhdEFwaT8udHJhY2soZSl9bGlrZWRPbkZhY2Vib29rKGUpe3ZvaWQgMCE9PXdpbmRvdy5wYXJlbnQuRkImJndpbmRvdy5wYXJlbnQuRkI/LkV2ZW50Py5zdWJzY3JpYmUmJndpbmRvdy5wYXJlbnQuRkIuRXZlbnQuc3Vic2NyaWJlKCJlZGdlLmNyZWF0ZSIsKCk9Pnt3aW5kb3cudGlkaW9DaGF0QXBpPy50cmFjayhlKX0pfXVuTGlrZWRPbkZhY2Vib29rKGUpe3ZvaWQgMCE9PXdpbmRvdy5wYXJlbnQuRkImJndpbmRvdy5wYXJlbnQuRkI/LkV2ZW50Py5zdWJzY3JpYmUmJndpbmRvdy5wYXJlbnQuRkIuRXZlbnQuc3Vic2NyaWJlKCJlZGdlLnJlbW92ZSIsKCk9Pnt3aW5kb3cudGlkaW9DaGF0QXBpPy50cmFjayhlKX0pfWxvZ2dlZEluKGUpezE9PT0oMCx1LnZ1KSgiYXV0b21hdGlvbl9sb2dnZWRJbkV4ZWN1dGUiKSYmKHdpbmRvdy50aWRpb0NoYXRBcGk/LnRyYWNrKGUpLCgwLHUubEUpKCJhdXRvbWF0aW9uX2xvZ2dlZEluRXhlY3V0ZSIpKTtsZXQgdD0hMTtjb25zdCBuPSgwLHIuYnApKCk7IXQmJm4ubWF0Y2goL1teYS16QS1aMC05XShsb2dpbnxsb2dvd2FuaWV8emFsb2d1anxzaWduaW4pKFteYS16QS1aMC05XXwkKS8pJiYodD0hMCk7Y29uc3Qgbz1bXSxpPXdpbmRvdy5wYXJlbnQuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiZm9ybSIpO2lmKGkpZm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKz0xKXtjb25zdCB0PWlbZV07IXYodCl8fGIodCl8fHcodCl8fG8ucHVzaCh0KX10JiZvLmxlbmd0aCxvLmxlbmd0aD4wJiZvLmZvckVhY2godD0+e3QuYWRkRXZlbnRMaXN0ZW5lcigic3VibWl0IiwoKT0+ezEhPT0oMCx1LnZ1KSgiYXV0b21hdGlvbl9sb2dnZWRJbkV4ZWN1dGUiKSYmKCgwLHUuSG8pKCJhdXRvbWF0aW9uX2xvZ2dlZEluRXhlY3V0ZSIsMSksd2luZG93LnRpZGlvQ2hhdEFwaT8udHJhY2soZSx7fSwoKT0+eygwLHUubEUpKCJhdXRvbWF0aW9uX2xvZ2dlZEluRXhlY3V0ZSIpfSkpfSl9KX1yZWdpc3RlcmVkKGUpezE9PT0oMCx1LnZ1KSgiYXV0b21hdGlvbl9yZWdpc3RlcmVkRXhlY3V0ZSIpJiYod2luZG93LnRpZGlvQ2hhdEFwaT8udHJhY2soZSksKDAsdS5sRSkoImF1dG9tYXRpb25fcmVnaXN0ZXJlZEV4ZWN1dGUiKSk7bGV0IHQ9ITE7Y29uc3Qgbj0oMCxyLmJwKSgpOyF0JiZuLm1hdGNoKC9bXmEtekEtWjAtOV0ocmVnaXN0ZXJ8cmVqZXN0cmFjamF8emFyZWplc3RydWp8c2lnbnVwKShbXmEtekEtWjAtOV18JCkvKSYmKHQ9ITApO2NvbnN0IG89W10saT13aW5kb3cucGFyZW50LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImZvcm0iKTtpZihpKWZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSs9MSl7Y29uc3QgdD1pW2VdO3YodCl8fCFiKHQpfHx3KHQpfHxvLnB1c2godCl9dCYmby5sZW5ndGgsby5sZW5ndGg+MCYmby5mb3JFYWNoKHQ9Pnt0LmFkZEV2ZW50TGlzdGVuZXIoInN1Ym1pdCIsKCk9PnsxIT09KDAsdS52dSkoImF1dG9tYXRpb25fcmVnaXN0ZXJlZEV4ZWN1dGUiKSYmKCgwLHUuSG8pKCJhdXRvbWF0aW9uX3JlZ2lzdGVyZWRFeGVjdXRlIiwxKSx3aW5kb3cudGlkaW9DaGF0QXBpPy50cmFjayhlLHt9LCgpPT57KDAsdS5sRSkoImF1dG9tYXRpb25fcmVnaXN0ZXJlZEV4ZWN1dGUiKX0pKX0pfSl9Zm9yZ290UGFzc3dvcmQoZSl7MT09PSgwLHUudnUpKCJhdXRvbWF0aW9uX2ZvcmdvdFBhc3N3b3JkRXhlY3V0ZSIpJiYod2luZG93LnRpZGlvQ2hhdEFwaT8udHJhY2soZSksKDAsdS5sRSkoImF1dG9tYXRpb25fZm9yZ290UGFzc3dvcmRFeGVjdXRlIikpO2xldCB0PSExO2NvbnN0IG49KDAsci5icCkoKTshdCYmbi5tYXRjaCgvW15hLXpBLVowLTldKGZvcmdvdC1wYXNzd29yZHxmb3Jnb3R0ZW4pKFteYS16QS1aMC05XXwkKS8pJiYodD0hMCk7Y29uc3Qgbz1bXSxpPXdpbmRvdy5wYXJlbnQuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiZm9ybSIpO2lmKGkpZm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKz0xKXtjb25zdCB0PWlbZV07dih0KXx8Yih0KXx8IXcodCl8fG8ucHVzaCh0KX10JiZvLmxlbmd0aCxvLmxlbmd0aD4wJiZvLmZvckVhY2godD0+e3QuYWRkRXZlbnRMaXN0ZW5lcigic3VibWl0IiwoKT0+ezEhPT0oMCx1LnZ1KSgiYXV0b21hdGlvbl9mb3Jnb3RQYXNzd29yZEV4ZWN1dGUiKSYmKCgwLHUuSG8pKCJhdXRvbWF0aW9uX2ZvcmdvdFBhc3N3b3JkRXhlY3V0ZSIsMSksd2luZG93LnRpZGlvQ2hhdEFwaT8udHJhY2soZSx7fSwoKT0+eygwLHUubEUpKCJhdXRvbWF0aW9uX2ZvcmdvdFBhc3N3b3JkRXhlY3V0ZSIpfSkpfSl9KX1lbWFpbEZpbGxlZChlKXtjb25zdCB0PVtdLG49d2luZG93LnBhcmVudC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFt0eXBlPSd0ZXh0J10sIGlucHV0W3R5cGU9J2VtYWlsJ10iKTtpZihuKWZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSs9MSl7Y29uc3Qgcj1uW2VdOygiZW1haWwiPT09ci50eXBlfHxyLm5hbWUubWF0Y2goL2VtYWlsfG1haWx8ZS1tYWlsLykpJiZ0LnB1c2gocil9dC5mb3JFYWNoKHQ9Pnt0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdD0+e3Q/LnRhcmdldD8udmFsdWUmJi9eKChbXjw+KClcXFtcXS4sOzpcc0AiXSsoXC5bXjw+KClbXF0uLDs6XHNAIl0rKSopfCgiLisiKSlAKChbXjw+KClbXF0uLDs6XHNAIl0rXC4pK1tePD4oKVtcXS4sOzpcc0AiXXsyLH0pJC9pLnRlc3QodC50YXJnZXQudmFsdWUpJiZ3aW5kb3cudGlkaW9DaGF0QXBpPy50cmFjayhlKX0pfSl9fSxTPShuKDgyNjQpLG4oODM3NyksbigzOTUyKSksRT0obig1NDY5KSxuKDIwMjApLG4oMTg0MykpO2NvbnN0IEM9ZT0+e3RyeXtyZXR1cm4iW29iamVjdCBGb3JtRGF0YV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfWNhdGNoe3JldHVybiExfX0saz1lPT57bGV0e2RhdGE6dCxmaWVsZE5hbWU6bn09ZTtpZigic3RyaW5nIj09dHlwZW9mIHQpdHJ5e3JldHVybiBrKHtkYXRhOkpTT04ucGFyc2UodCksZmllbGROYW1lOm59KX1jYXRjaHtyZXR1cm4gdC5zcGxpdCgiJiIpLmZpbmQoZT0+ZS5pbmNsdWRlcyhuKSk/LnNwbGl0KCI9IilbMV18fG51bGx9aWYoQyh0KSl7Y29uc3QgZT10LmdldChuKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfWlmKCJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXQmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pKXRyeXtjb25zdCBlPXRbbl07cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/U3RyaW5nKGUpOm51bGx9Y2F0Y2h7cmV0dXJuIG51bGx9cmV0dXJuIG51bGx9LEE9KCk9Pnt0cnl7Y29uc3QgZT0oMCxFLmJpKSgpO2xldCB0PVtdO2lmKHQ9Imhvc3QiaW4gZT9lLmhvc3Qub3duZXJEb2N1bWVudC5jb29raWUuc3BsaXQoIjsgIik6ZS5jb29raWUuc3BsaXQoIjsgIiksMD09PXQubGVuZ3RoKXJldHVybnt9O2NvbnN0IG49dC5maW5kKGU9PmUuaW5jbHVkZXMoImNhcnRfY3VycmVuY3kiKSk/LnNwbGl0KCI9IilbMV0scj10LmZpbmQoZT0+ZS5pbmNsdWRlcygibG9jYWxpemF0aW9uIikpPy5zcGxpdCgiPSIpWzFdO3JldHVybntsb2NhbGl6YXRpb246cixjYXJ0Q3VycmVuY3k6bn19Y2F0Y2h7cmV0dXJue319fSxPPWU9Pm51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJiJsb2NhbGl6YXRpb24iaW4gZSYmKCJwcm9kdWN0SWQiaW4gZXx8InZhcmlhbnRJZCJpbiBlKSxUPWU9PntpZigic3RyaW5nIiE9dHlwZW9mIGUmJiJudW1iZXIiIT10eXBlb2YgZSlyZXR1cm47Y29uc3QgdD1OdW1iZXIoZSk7cmV0dXJuIU51bWJlci5pc0Zpbml0ZSh0KXx8dDw9MD92b2lkIDA6TWF0aC5mbG9vcih0KX0seD1lPT57aWYoInN0cmluZyI9PXR5cGVvZiBlKXRyeXtyZXR1cm4geChKU09OLnBhcnNlKGUpKX1jYXRjaHtyZXR1cm59aWYobnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgZSlyZXR1cm47Y29uc3QgdD1lLG49dC5pdGVtcz8uWzBdO3JldHVybiBudWxsIT09biYmIm9iamVjdCI9PXR5cGVvZiBuP1Qobi5xdWFudGl0eSk6dm9pZCAwfSxJPWU9PntpZigic3RyaW5nIj09dHlwZW9mIGUpdHJ5e3JldHVybiBJKEpTT04ucGFyc2UoZSkpfWNhdGNoe3JldHVybiBudWxsfXRyeXtpZihudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYiaXRlbXMiaW4gZSYmQXJyYXkuaXNBcnJheShlLml0ZW1zKSlyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUuaXRlbXNbMF0/LmlkfHwic3RyaW5nIj09dHlwZW9mIGUuaXRlbXNbMF0/LmlkP1N0cmluZyhlLml0ZW1zWzBdPy5pZCk6bnVsbH1jYXRjaHtyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH0sTj1lPT5udWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYiaWQiaW4gZSYmInZhcmlhbnRfaWQiaW4gZSYmInByb2R1Y3RfaWQiaW4gZSYmInByaWNlImluIGUsTD0oZSx0KT0+e2NvbnN0IG49ZT8ub3JpZ2luYWxfdG90YWxfcHJpY2Uscj1lPy5jdXJyZW5jeTtpZigibnVtYmVyIiE9dHlwZW9mIG58fCJzdHJpbmciIT10eXBlb2YgcilyZXR1cm4gdm9pZCgwLGkuREgpKCJTaG9waWZ5VHJhY2tlciAtIEludmFsaWQgY2FydCBkYXRhIix7Y2FydFZhbHVlVHlwZTp0eXBlb2YgbixjYXJ0Q3VycmVuY3lUeXBlOnR5cGVvZiByfSk7Y29uc3Qgbz0oYT1lPy5pdGVtcyxBcnJheS5pc0FycmF5KGEpJiZhLmV2ZXJ5KE4pP2UuaXRlbXM6W10pO3ZhciBhO3ZhciBzO3JldHVybntjYXJ0VmFsdWU6bixjYXJ0Q3VycmVuY3k6cixjdXJyZW5jeVJhdGU6dCxjYXJ0OihzPXtpdGVtczpvfSwocz8uaXRlbXM/P1tdKS5tYXAoZT0+KHtwcm9kdWN0SWQ6ZS5wcm9kdWN0X2lkLHZhcmlhbnRJZDplLnZhcmlhbnRfaWQscHJvZHVjdFRpdGxlOmUucHJvZHVjdF90aXRsZT8/IiIscHJpY2U6TnVtYmVyKChlLnByaWNlLzEwMCkudG9GaXhlZCgyKSkscXVhbnRpdHk6ZS5xdWFudGl0eT8/MSxvcHRpb25zV2l0aFZhbHVlczplLm9wdGlvbnNfd2l0aF92YWx1ZXM/P1tdfSkpKX19O2xldCBQPWZ1bmN0aW9uKGUpe3JldHVybiBlLkFERF9UT19DQVJUPSJhZGRfdG9fY2FydCIsZS5DQVJUX1VQREFURUQ9ImNhcnRfdXBkYXRlZCIsZS5BQkFORE9ORURfQ0FSVD0iYWJhbmRvbmVkX2NhcnQiLGUuR09fVE9fQ0FSVD0iZ29fdG9fY2FydCIsZS5MT0dJTj0ibG9naW4iLGUuUkVNT1ZFX0ZST01fQ0FSVD0icmVtb3ZlX2Zyb21fY2FydCIsZS5DUkVBVEVfQUNDT1VOVD0iY3JlYXRlX2FjY291bnQiLGUuUEFZTUVOVF9DSEFSR0VEPSJwYXltZW50X2NoYXJnZWQiLGUuR09fVE9fUEFZTUVOVD0iZ29fdG9fcGF5bWVudCIsZS5HT19UT19DSEVDS09VVD0iZ29fdG9fY2hlY2tvdXQiLGV9KHt9KTtjb25zdCBNPWU9PkJvb2xlYW4oZT8ub2spJiZbImFwcGxpY2F0aW9uL2pzb24iLCJ0ZXh0L2phdmFzY3JpcHQiXS5zb21lKHQ9PmU/LmhlYWRlcnM/LmdldCgiY29udGVudC10eXBlIik/LmluY2x1ZGVzKHQpKSxSPWU9PntlLmNhdGNoKCgpPT57fSl9O3ZhciBEPWNsYXNze2NvbnN0cnVjdG9yKGUpe3ZhciB0PXRoaXM7bGV0e2Rpc3BhdGNoOm4sbW9kZTpyfT1lOygwLHMuQSkodGhpcywiZGlzcGF0Y2giLHZvaWQgMCksKDAscy5BKSh0aGlzLCJtb2RlIix2b2lkIDApLCgwLHMuQSkodGhpcywiYWRkVG9DYXJkRmluaXNoZWQiLCExKSwoMCxzLkEpKHRoaXMsInJlYmluZFNob3BpZnlFdmVudHMiLHZvaWQgMCksKDAscy5BKSh0aGlzLCJyb3V0ZXMiLHtjYXJ0OndpbmRvdy5wYXJlbnQubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZigiL2NhcnQiKT4tMSx0aGFua1lvdTp3aW5kb3cucGFyZW50LmxvY2F0aW9uLnBhdGhuYW1lLmluZGV4T2YoIi90aGFua195b3UiKT4tMSYmNT09PXdpbmRvdy5wYXJlbnQubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoIi8iKS5sZW5ndGh9KSwoMCxzLkEpKHRoaXMsImVuZHBvaW50cyIse2NhcnRDaGFuZ2U6Ii9jYXJ0L2NoYW5nZSIsYWRkVG9DYXJ0OiIvY2FydC9hZGQiLGNsZWFyOiIvY2FydC9jbGVhciIsdXBkYXRlOiIvY2FydC91cGRhdGUiLGNoZWNrb3V0OiIvd2FsbGV0cy9jaGVja291dHMifSksKDAscy5BKSh0aGlzLCJhamF4Q29tcGxldGVDYWxsYmFjayIsYXN5bmMoZSx0LG4pPT57aWYobj8udXJsKXtjb25zdHt1cmw6ZX09bjtpZihlLmluY2x1ZGVzKHRoaXMuZW5kcG9pbnRzLmFkZFRvQ2FydCkpe2NvbnN0IGU9ayh7ZGF0YTpuLmRhdGEsZmllbGROYW1lOiJwcm9kdWN0LWlkIn0pLHQ9ayh7ZGF0YTpuLmRhdGEsZmllbGROYW1lOiJpZCJ9KSxyPVQoayh7ZGF0YTpuLmRhdGEsZmllbGROYW1lOiJxdWFudGl0eSJ9KSk7YXdhaXQgdGhpcy50cmFja0FkZFRvQ2FydEV2ZW50KHtwcm9kdWN0SWQ6ZSx2YXJpYW50SWQ6dCxxdWFudGl0eTpyfSksdGhpcy5hZGRUb0NhcmRGaW5pc2hlZD0hMH1pZihlLmluY2x1ZGVzKHRoaXMuZW5kcG9pbnRzLmNhcnRDaGFuZ2UpfHxlLmluY2x1ZGVzKHRoaXMuZW5kcG9pbnRzLnVwZGF0ZSl8fGUuaW5jbHVkZXModGhpcy5lbmRwb2ludHMuY2xlYXIpKXRyeXtjb25zdCBlPWF3YWl0IHRoaXMuZ2V0Q2FydERhdGFBbmRTdG9yZUNhcnRUb2tlbigpO2F3YWl0IHRoaXMuc2F2ZUNhcnRWYWx1ZShlKX1jYXRjaHt9Y29uc3Qgcj10Py5yZXNwb25zZUpTT04/LmNoZWNrb3V0Py50b2tlbjtpZihlLmluY2x1ZGVzKHRoaXMuZW5kcG9pbnRzLmNoZWNrb3V0KSYmciYmdGhpcy50cmFja0NoZWNrb3V0KHIpLHRoaXMuYWRkVG9DYXJkRmluaXNoZWQmJmUuaW5kZXhPZigiL2NhcnQiKT4tMSYmKHRoaXMuYWRkVG9DYXJkRmluaXNoZWQ9ITEsc2V0VGltZW91dCh0aGlzLnJlYmluZEV2ZW50cyw3NzcpKSxlLmluZGV4T2YoIi9jYXJ0LmpzIik+LTEmJnQ/LnJlc3BvbnNlSlNPTil0cnl7Y29uc3QgZT1MKHQucmVzcG9uc2VKU09OLHRoaXMuZ2V0Q3VycmVuY3lSYXRlKCk/PyIiKTtlJiZhd2FpdCB0aGlzLnNhdmVDYXJ0VmFsdWUoZSksYXdhaXQoMCx1LngyKSgiY2FydEl0ZW1Db3VudCIsdC5yZXNwb25zZUpTT04uaXRlbV9jb3VudCl9Y2F0Y2h7fX1yZXR1cm4hMH0pLCgwLHMuQSkodGhpcywiaW5pdFRyYWNraW5nIixhc3luYygpPT57Y29uc3QgZT1Cb29sZWFuKGF3YWl0KDAsdS5USCkoInJlbW92ZUZyb21DYXJ0IikpO3RoaXMucm91dGVzLmNhcnQmJiFlJiZ0aGlzLmdvVG9DYXJ0KCksZSYmYXdhaXQgdGhpcy5yZW1vdmVGcm9tQ2FydCgpLHRoaXMuY2FydEFqYXhJbml0KCksdGhpcy5yZWJpbmRFdmVudHMoKSx0aGlzLnRyYWNrUGF5bWVudENoYXJnZWQoKTt0cnl7d2luZG93LnBhcmVudC5qUXVlcnkmJiJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cucGFyZW50LmpRdWVyeSh3aW5kb3cucGFyZW50LmRvY3VtZW50KS5hamF4Q29tcGxldGU/d2luZG93LnBhcmVudC5qUXVlcnkod2luZG93LnBhcmVudC5kb2N1bWVudCkuYWpheENvbXBsZXRlKHRoaXMuYWpheENvbXBsZXRlQ2FsbGJhY2spOndpbmRvdy5wYXJlbnQualF1ZXJ5JiZ3aW5kb3cucGFyZW50LmpRdWVyeSh3aW5kb3cucGFyZW50LmRvY3VtZW50KS5vbigiYWpheENvbXBsZXRlIix0aGlzLmFqYXhDb21wbGV0ZUNhbGxiYWNrKX1jYXRjaHt9dGhpcy5vdmVycmlkZUZldGNoKCl9KSwoMCxzLkEpKHRoaXMsImdldEN1cnJlbmN5UmF0ZSIsKCk9Pntjb25zdCBlPXdpbmRvdy5wYXJlbnQuU2hvcGlmeS5jdXJyZW5jeT8ucmF0ZTtyZXR1cm4gZX0pLCgwLHMuQSkodGhpcywidHJhY2tFdmVudCIsYXN5bmMgZnVuY3Rpb24oZSxuKXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06KCk9Pnt9O2lmKCJhZHZhbmNlZCI9PT10Lm1vZGUpe2NvbnN0IG89ey4uLmF3YWl0KDAsdS5USCkoImNhcnREYXRhIiksLi4ubn07bj8uY2FydEN1cnJlbmN5JiZuPy5jYXJ0VmFsdWUmJihvLmN1cnJlbmN5UmF0ZT10LmdldEN1cnJlbmN5UmF0ZSgpKSx3aW5kb3cudGlkaW9DaGF0QXBpPy50cmFjayhgc2hvcGlmeS4ke2V9YCxvLHIpfX0pLCgwLHMuQSkodGhpcywiY2FydEFqYXhJbml0Iixhc3luYygpPT57Y29uc3QgZT1hd2FpdCgwLHUuVEgpKCJjYXJ0SXRlbUNvdW50Iil8fDA7ZXx8YXdhaXQoMCx1LngyKSgiY2FydEl0ZW1Db3VudCIsMCk7dHJ5e2NvbnN0IHQ9YXdhaXQoMCxTLk9BKSgpLG49TCh0LHRoaXMuZ2V0Q3VycmVuY3lSYXRlKCk/PyIiKTtpZihhd2FpdCgwLHUuVEgpKCJhZGRUb0NhcnQiKSYmbil7Y29uc3QgZT1hd2FpdCgwLHUuVEgpKCJhZGRlZFByb2R1Y3RQcm9wZXJ0aWVzIik7aWYoTyhlKSl7Y29uc3R7cHJvZHVjdElkOnQsdmFyaWFudElkOnJ9PWUsbz1UKGUucXVhbnRpdHkpO2F3YWl0IHRoaXMudHJhY2tBZGRUb0NhcnRFdmVudCh7cHJvZHVjdElkOnQsdmFyaWFudElkOnIsY2FydERhdGE6bixxdWFudGl0eTpvfSl9ZWxzZSBhd2FpdCB0aGlzLnRyYWNrQWRkVG9DYXJ0RXZlbnQoe3Byb2R1Y3RJZDpudWxsLHZhcmlhbnRJZDpudWxsLGNhcnREYXRhOm59KTthd2FpdCgwLHUuUG8pKCJhZGRUb0NhcnQiKSxhd2FpdCgwLHUuUG8pKCJhZGRlZFByb2R1Y3RQcm9wZXJ0aWVzIil9Y29uc3Qgcj0wPT09Wy9cL2FjY291bnRcL2xvZ2luKC4qPykvaSwvXC9hY2NvdW50XC9yZWdpc3RlciguKj8pL2ksL1wvY2hhbGxlbmdlKC4qPykvaSwvXC9jaGVja291dHMoLio/KS9pXS5tYXAoZT0+ZS50ZXN0KHdpbmRvdy5wYXJlbnQubG9jYXRpb24uaHJlZikpLmZpbHRlcihlPT5lKS5sZW5ndGgsbz10Py50b2tlbixpPW8mJnQ/Lml0ZW1fY291bnQ+MDthd2FpdCgwLHUuVEgpKCJnb1RvQ2hlY2tvdXQiKSYmciYmKGF3YWl0KDAsdS54MikoImdvVG9DaGVja291dCIsITEpLHQuaXRlbV9jb3VudCYmdGhpcy5hYmFuZG9uZWRDYXJ0KCksYXdhaXQoMCx1LngyKSgiY2FydEl0ZW1Db3VudCIsMCkpLG8mJmF3YWl0IHRoaXMuc2F2ZUNhcnRUb2tlbihvKSxpJiZhd2FpdCB0aGlzLnRyYWNrQ2FydFRva2VuKCksK2UhPT0rdC5pdGVtX2NvdW50JiZhd2FpdCgwLHUueDIpKCJjYXJ0SXRlbUNvdW50Iix0Lml0ZW1fY291bnQpLHQ/LmF0dHJpYnV0ZXM/LlsiVGlkaW8gVmlzaXRvciBJZCJdJiZ0aGlzLmRpc3BhdGNoKCgwLGMueHhoKSgpKSx0Py5jdXJyZW5jeSYmbiYmYXdhaXQgdGhpcy5zYXZlQ2FydFZhbHVlKG4pfWNhdGNoKGUpe319KSwoMCxzLkEpKHRoaXMsInRyYWNrQWRkVG9DYXJ0RXZlbnQiLGFzeW5jIGU9PntsZXR7cHJvZHVjdElkOnQsdmFyaWFudElkOm4sY2FydERhdGE6cixxdWFudGl0eTpvfT1lO3RyeXtjb25zdCBlPXJ8fGF3YWl0IHRoaXMuZ2V0Q2FydERhdGFBbmRTdG9yZUNhcnRUb2tlbigpLHtjYXJ0Q3VycmVuY3k6aSxjYXJ0VmFsdWU6YSxjYXJ0OnN9PWUsYz1UKG8pPz8xLGw9cy5maW5kKGU9PiEhbiYmU3RyaW5nKGUudmFyaWFudElkKT09PW4pPz9zLmZpbmQoZT0+ISF0JiZTdHJpbmcoZS5wcm9kdWN0SWQpPT09dCksZD1sJiZOdW1iZXIuaXNGaW5pdGUobC5wcmljZSk/TWF0aC5yb3VuZCgxMDAqbC5wcmljZSpjKTp2b2lkIDA7YXdhaXQoMCx1LlBvKSgiYWRkVG9DYXJ0IiksYXdhaXQgdGhpcy5zYXZlQ2FydFZhbHVlKGUpO2NvbnN0e2xvY2FsaXphdGlvbjpmfT1BKCkscD0oZT0+e2xldHtwcm9kdWN0SWQ6dCx2YXJpYW50SWQ6bixpdGVtc0luQ2FydDpyfT1lLG89dDtpZighdCYmbil7Y29uc3QgZT1yLmZpbmQoZT0+U3RyaW5nKGUudmFyaWFudElkKT09PW4pPy5wcm9kdWN0SWQ7bz12b2lkIDAhPT1lP1N0cmluZyhlKTpudWxsfXJldHVybiBvfSkoe3Byb2R1Y3RJZDp0LHZhcmlhbnRJZDpuLGl0ZW1zSW5DYXJ0OnN9KTthd2FpdCB0aGlzLnRyYWNrRXZlbnQoUC5BRERfVE9fQ0FSVCx7Y2FydFZhbHVlOmEsY2FydEN1cnJlbmN5OmksLi4uInN0cmluZyI9PXR5cGVvZiBwJiZ7cHJvZHVjdElkOnAsbG9jYWxpemF0aW9uOmZ9LC4uLiJudW1iZXIiPT10eXBlb2YgZCYme3RvdGFsUHJpY2U6ZH0sLi4ucy5sZW5ndGg+MCYme2NhcnQ6c319KX1jYXRjaChlKXtFcnJvcn19KSwoMCxzLkEpKHRoaXMsImFkZFRvQ2FydCIsYXN5bmMgZT0+e2NvbnN0IHQ9ZS50YXJnZXQ7dHJ5e2NvbnN0IGU9bmV3IEZvcm1EYXRhKHQpLG49ZS5nZXQoInByb2R1Y3QtaWQiKSxyPWUuZ2V0KCJpZCIpLG89VChlLmdldCgicXVhbnRpdHkiKSkse2xvY2FsaXphdGlvbjppfT1BKCksYT17Li4uInN0cmluZyI9PXR5cGVvZiBuJiZ7cHJvZHVjdElkOm59LC4uLiJzdHJpbmciPT10eXBlb2YgciYme3ZhcmlhbnRJZDpyfSwuLi4ibnVtYmVyIj09dHlwZW9mIG8mJntxdWFudGl0eTpvfSxsb2NhbGl6YXRpb246aX07TyhhKSYmYXdhaXQoMCx1LngyKSgiYWRkZWRQcm9kdWN0UHJvcGVydGllcyIsYSl9Y2F0Y2goZSl7KDAsaS5zUSkoIkNvdWxkIG5vdCByZXRyaWV2ZSBwcm9kdWN0IGRhdGEgZnJvbSBzdWJtaXR0ZWQgZm9ybSIse2Vycm9yOmV9KX1hd2FpdCgwLHUueDIpKCJhZGRUb0NhcnQiLCEwKSxjbGVhclRpbWVvdXQodGhpcy5yZWJpbmRTaG9waWZ5RXZlbnRzKSx0aGlzLnJlYmluZFNob3BpZnlFdmVudHM9c2V0VGltZW91dCh0aGlzLnJlYmluZEV2ZW50cywxNTAwKX0pLCgwLHMuQSkodGhpcywiY2FydFVwZGF0ZWQiLCgpPT57dGhpcy50cmFja0V2ZW50KFAuQ0FSVF9VUERBVEVEKX0pLCgwLHMuQSkodGhpcywiYWJhbmRvbmVkQ2FydCIsKCk9Pnt0aGlzLnRyYWNrRXZlbnQoUC5BQkFORE9ORURfQ0FSVCl9KSwoMCxzLkEpKHRoaXMsImdvVG9DYXJ0IiwoKT0+e3RoaXMudHJhY2tFdmVudChQLkdPX1RPX0NBUlQpfSksKDAscy5BKSh0aGlzLCJsb2dpbiIsKCk9Pnt0aGlzLnRyYWNrRXZlbnQoUC5MT0dJTil9KSwoMCxzLkEpKHRoaXMsInJlbW92ZUZyb21DYXJ0U3RvcmFnZUtleSIsInJlbW92ZUZyb21DYXJ0IiksKDAscy5BKSh0aGlzLCJyZW1vdmVGcm9tQ2FydENsaWNrIixhc3luYygpPT57YXdhaXQoMCx1LngyKSh0aGlzLnJlbW92ZUZyb21DYXJ0U3RvcmFnZUtleSwhMCl9KSwoMCxzLkEpKHRoaXMsInJlbW92ZUZyb21DYXJ0Iixhc3luYyBlPT57aWYoYXdhaXQoMCx1LlBvKSgicmVtb3ZlRnJvbUNhcnQiKSxlKWF3YWl0IHRoaXMuc2F2ZUNhcnRWYWx1ZShlKSxhd2FpdCB0aGlzLnRyYWNrRXZlbnQoUC5SRU1PVkVfRlJPTV9DQVJULGUpO2Vsc2UgdHJ5e2NvbnN0IGU9YXdhaXQgdGhpcy5nZXRDYXJ0RGF0YUFuZFN0b3JlQ2FydFRva2VuKCk7YXdhaXQgdGhpcy5zYXZlQ2FydFZhbHVlKGUpLGF3YWl0IHRoaXMudHJhY2tFdmVudChQLlJFTU9WRV9GUk9NX0NBUlQse2NhcnRWYWx1ZTplLmNhcnRWYWx1ZSxjYXJ0Q3VycmVuY3k6ZS5jYXJ0Q3VycmVuY3ksY3VycmVuY3lSYXRlOmUuY3VycmVuY3lSYXRlLC4uLmUuY2FydC5sZW5ndGg+MCYme2NhcnQ6ZS5jYXJ0fX0pfWNhdGNoe319KSwoMCxzLkEpKHRoaXMsImNyZWF0ZUFjY291bnQiLCgpPT57dGhpcy50cmFja0V2ZW50KFAuQ1JFQVRFX0FDQ09VTlQpfSksKDAscy5BKSh0aGlzLCJ0cmFja1BheW1lbnRDaGFyZ2VkIiwoKT0+e2lmKCF0aGlzLnJvdXRlcy50aGFua1lvdSlyZXR1cm4hMTt0aGlzLnRyYWNrRXZlbnQoUC5QQVlNRU5UX0NIQVJHRUQpO3RyeXtjb25zdHtjdXN0b21lcl9pZDplLG9yZGVyX2lkOnR9PXdpbmRvdy5wYXJlbnQuU2hvcGlmeS5jaGVja291dDtlJiZ0JiZ0aGlzLmRpc3BhdGNoKCgwLGMudkYzKSh7Y3VzdG9tZXJJZDplLG9yZGVySWQ6dH0pKX1jYXRjaChlKXtlIGluc3RhbmNlb2YgRXJyb3ImJigwLGkuc1EpKCJQYXltZW50IHRyYWNraW5nIGVycm9yIix7bWVzc2FnZTplPy5tZXNzYWdlfSl9cmV0dXJuITB9KSwoMCxzLkEpKHRoaXMsInRyYWNrQ2hlY2tvdXQiLGU9Pnt0aGlzLmRpc3BhdGNoKCgwLGMuZlkyKSh7Y2hlY2tvdXRUb2tlbjplfSkpfSksKDAscy5BKSh0aGlzLCJjYXJ0VG9rZW5TdG9yYWdlS2V5IiwiY2FydFRva2VuIiksKDAscy5BKSh0aGlzLCJnZXRDYXJ0VG9rZW4iLGFzeW5jKCk9PigwLHUuVEgpKHRoaXMuY2FydFRva2VuU3RvcmFnZUtleSkpLCgwLHMuQSkodGhpcywic2F2ZUNhcnRUb2tlbiIsYXN5bmMgZT0+e2NvbnN0IHQ9YXdhaXQoMCx1LlRIKSh0aGlzLmNhcnRUb2tlblN0b3JhZ2VLZXkpO3ZhciBuO2UmJmUhPT10JiZhd2FpdCgwLHUueDIpKHRoaXMuY2FydFRva2VuU3RvcmFnZUtleSwobj1lLG4uaW5jbHVkZXMoIj9rZXk9Iik/bi5zcGxpdCgiP2tleT0iKVswXTpuKSl9KSwoMCxzLkEpKHRoaXMsInRyYWNrQ2FydFRva2VuIixhc3luYygpPT57Y29uc3QgZT1hd2FpdCB0aGlzLmdldENhcnRUb2tlbigpLHQ9YXdhaXQoMCx1LlRIKSgic2VudENhcnRUb2tlbiIpO2UmJmUhPT10JiYodGhpcy5kaXNwYXRjaCgoMCxjLmpfQSkoe2NhcnRUb2tlbjplfSkpLGF3YWl0KDAsdS54MikoInNlbnRDYXJ0VG9rZW4iLGUpKX0pLCgwLHMuQSkodGhpcywiZ2V0Q2FydERhdGFBbmRTdG9yZUNhcnRUb2tlbiIsYXN5bmMoKT0+e3RyeXtjb25zdCBlPWF3YWl0KDAsUy5PQSkoKTtlLnRva2VuJiZlLml0ZW1fY291bnQ+MCYmKGF3YWl0IHRoaXMuc2F2ZUNhcnRUb2tlbihlLnRva2VuKSxhd2FpdCB0aGlzLnRyYWNrQ2FydFRva2VuKCkpO2NvbnN0IHQ9TChlLHRoaXMuZ2V0Q3VycmVuY3lSYXRlKCk/PyIiKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoInVuYWJsZSB0byBmZXRjaCBzaG9waWZ5IGNhcnQiKTtyZXR1cm4gdH1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoInVuYWJsZSB0byBmZXRjaCBzaG9waWZ5IGNhcnQiKX19KSwoMCxzLkEpKHRoaXMsIm92ZXJyaWRlRmV0Y2giLCgpPT57dHJ5e2NvbnN0e2ZldGNoOmV9PXdpbmRvdy5wYXJlbnQ7cmV0dXJuIHZvaWQod2luZG93LnBhcmVudC5mZXRjaD1hc3luYyBmdW5jdGlvbigpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KG4pLG89MDtvPG47bysrKXJbb109YXJndW1lbnRzW29dO2NvbnN0W2Esc109cjtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGUoLi4ucik7aWYoYS5pbmNsdWRlcyh0LmVuZHBvaW50cy5hZGRUb0NhcnQpKXtjb25zdCBuPWF3YWl0IGUoLi4ucik7dHJ5e2NvbnN0IGU9ayh7ZGF0YTpzPy5ib2R5LGZpZWxkTmFtZToicHJvZHVjdC1pZCJ9KSxuPWsoe2RhdGE6cz8uYm9keSxmaWVsZE5hbWU6ImlkIn0pLHI9VChrKHtkYXRhOnM/LmJvZHksZmllbGROYW1lOiJxdWFudGl0eSJ9KSk/P3gocz8uYm9keSksbz1JKHM/LmJvZHkpO1IodC50cmFja0FkZFRvQ2FydEV2ZW50KHtwcm9kdWN0SWQ6ZSx2YXJpYW50SWQ6bj8/byxxdWFudGl0eTpyfSkpfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBFcnJvciYmKDAsaS5zUSkoIkFkZCB0byBjYXJ0IHRyYWNraW5nIGVycm9yIix7bWVzc2FnZTplLm1lc3NhZ2V9KX1yZXR1cm4gbn1pZihhLmluY2x1ZGVzKHQuZW5kcG9pbnRzLmNoZWNrb3V0KSl7Y29uc3Qgbj1hd2FpdCBlKC4uLnIpO3RyeXtjb25zdCBlPW4/LmhlYWRlcnM/LmdldCgiY29udGVudC10eXBlIik7aWYobj8ub2smJmU/LmluY2x1ZGVzKCJhcHBsaWNhdGlvbi9qc29uIikpe2NvbnN0IGU9YXdhaXQgbi5jbG9uZSgpLmpzb24oKSxyPWU/LmNoZWNrb3V0Py50b2tlbjtyJiZ0LnRyYWNrQ2hlY2tvdXQocil9fWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBFcnJvciYmKDAsaS5zUSkoIkNoZWNrb3V0IHRyYWNraW5nIGVycm9yIix7bWVzc2FnZTplPy5tZXNzYWdlfSl9cmV0dXJuIG59aWYoYS5pbmNsdWRlcyh0LmVuZHBvaW50cy5jYXJ0Q2hhbmdlKSl7Y29uc3Qgbj1hd2FpdCBlKC4uLnIpO3RyeXtpZihNKG4pKXtsZXQgZTtpZihDKHM/LmJvZHkpKWU9cz8uYm9keS5nZXQoInF1YW50aXR5Iik7ZWxzZSB0cnl7aWYoInN0cmluZyI9PXR5cGVvZiBzPy5ib2R5KXtjb25zdCB0PUpTT04ucGFyc2Uocy5ib2R5KTtlPXQ/LnF1YW50aXR5fX1jYXRjaHtlPXZvaWQgMH1jb25zdCByPWF3YWl0IG4uY2xvbmUoKS5qc29uKCksbz1MKHIsdC5nZXRDdXJyZW5jeVJhdGUoKT8/IiIpO28mJih0LmNhcnRVcGRhdGVkKCksIm51bWJlciIhPXR5cGVvZiBlJiYhZXx8MCE9PU51bWJlcihlKT9SKHQuc2F2ZUNhcnRWYWx1ZShvKSk6Uih0LnJlbW92ZUZyb21DYXJ0KG8pKSl9fWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBFcnJvciYmKDAsaS5zUSkoIkNhcnQgY2hhbmdlIHRyYWNraW5nIGVycm9yIix7bWVzc2FnZTplPy5tZXNzYWdlfSl9cmV0dXJuIG59aWYoYS5pbmNsdWRlcyh0LmVuZHBvaW50cy51cGRhdGUpKXtjb25zdCBuPWF3YWl0IGUoLi4ucik7dHJ5e2lmKE0obikpe3QuY2FydFVwZGF0ZWQoKTtjb25zdCBlPWF3YWl0IG4uY2xvbmUoKS5qc29uKCkscj1MKGUsdC5nZXRDdXJyZW5jeVJhdGUoKT8/IiIpO2lmKHIpe2xldCBlO3RyeXtpZigic3RyaW5nIj09dHlwZW9mIHM/LmJvZHk/ZT1KU09OLnBhcnNlKHMuYm9keSk6Im9iamVjdCI9PXR5cGVvZiBzPy5ib2R5JiZudWxsIT09cz8uYm9keSYmKGU9cy5ib2R5KSxlKXtjb25zdCBuPU9iamVjdC52YWx1ZXMoZS51cGRhdGVzKTtuPy5zb21lKGU9PjA9PT1lKT9SKHQucmVtb3ZlRnJvbUNhcnQocikpOlIodC5zYXZlQ2FydFZhbHVlKHIpKX19Y2F0Y2h7Uih0LnNhdmVDYXJ0VmFsdWUocikpfX19fWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBFcnJvciYmKDAsaS5zUSkoIkNhcnQgdXBkYXRlIGVycm9yIix7bWVzc2FnZTplPy5tZXNzYWdlfSl9cmV0dXJuIG59aWYoYS5pbmNsdWRlcyh0LmVuZHBvaW50cy5jbGVhcikpe2NvbnN0IG49YXdhaXQgZSguLi5yKTt0cnl7aWYoTShuKSl7Y29uc3QgZT1hd2FpdCBuLmNsb25lKCkuanNvbigpLHI9TChlLHQuZ2V0Q3VycmVuY3lSYXRlKCk/PyIiKTtyJiZSKHQucmVtb3ZlRnJvbUNhcnQocikpfX1jYXRjaChlKXtlIGluc3RhbmNlb2YgRXJyb3ImJigwLGkuc1EpKCJDYXJ0IGNsZWFyIGVycm9yIix7bWVzc2FnZTplPy5tZXNzYWdlfSl9cmV0dXJuIG59cmV0dXJuIGUoLi4ucil9KX1jYXRjaChlKXtyZXR1cm4gdm9pZChlIGluc3RhbmNlb2YgRXJyb3ImJigwLGkuc1EpKCJPdmVycmlkZSBmZXRjaCBlcnJvciIse21lc3NhZ2U6ZS5tZXNzYWdlfSkpfX0pLCgwLHMuQSkodGhpcywiZ29Ub1BheW1lbnQiLCgpPT57dGhpcy50cmFja0V2ZW50KFAuR09fVE9fUEFZTUVOVCl9KSwoMCxzLkEpKHRoaXMsImdvVG9DaGVja291dCIsYXN5bmMoKT0+e2F3YWl0KDAsdS54MikoImdvVG9DaGVja291dCIsITApLHRoaXMudHJhY2tFdmVudChQLkdPX1RPX0NIRUNLT1VUKX0pLCgwLHMuQSkodGhpcywic2VuZENhcnRWYWx1ZSIsZT0+e3RoaXMuZGlzcGF0Y2goKDAsYy5Va0kpKHtjYXJ0VmFsdWU6ZS5jYXJ0VmFsdWUsY2FydEN1cnJlbmN5OmUuY2FydEN1cnJlbmN5LGN1cnJlbmN5UmF0ZTplLmN1cnJlbmN5UmF0ZSwuLi5lLmNhcnQubGVuZ3RoPjAmJntjYXJ0OmUuY2FydH19KSl9KSwoMCxzLkEpKHRoaXMsInNhdmVDYXJ0VmFsdWUiLGFzeW5jIGU9Pntjb25zdHtjYXJ0VmFsdWU6dCxjYXJ0Q3VycmVuY3k6bixjYXJ0OnIsY3VycmVuY3lSYXRlOm99PWUsaT1hd2FpdCgwLHUuVEgpKCJjYXJ0RGF0YSIpO2k/LmNhcnRWYWx1ZSE9PXQmJihhd2FpdCgwLHUueDIpKCJjYXJ0RGF0YSIse2NhcnRWYWx1ZTp0LGNhcnRDdXJyZW5jeTpuLGN1cnJlbmN5UmF0ZTpvLGNhcnQ6cn0pLHRoaXMuc2VuZENhcnRWYWx1ZShlKSl9KSwoMCxzLkEpKHRoaXMsInNlbGVjdG9ycyIsW3tzZWxlY3RvcjoiZm9ybVthY3Rpb249Jy9jYXJ0L2FkZCddIixmdW5jOnRoaXMuYWRkVG9DYXJ0LGV2ZW50OiJzdWJtaXQifSx7c2VsZWN0b3I6ImZvcm1bYWN0aW9uKj0nYWNjb3VudC9sb2dpbiddIixmdW5jOnRoaXMubG9naW4sZXZlbnQ6InN1Ym1pdCJ9LHtzZWxlY3RvcjoiYVtocmVmKj0nL2NhcnQvY2hhbmdlJ10sIHRkIGFbb25jbGlja149J3JlbW92ZV9pdGVtJ10iLGZ1bmM6dGhpcy5yZW1vdmVGcm9tQ2FydENsaWNrLGV2ZW50OiJjbGljayJ9LHtzZWxlY3RvcjoiaW5wdXRbbmFtZV49J2NoZWNrb3V0J10sIGJ1dHRvbltuYW1lXj0nY2hlY2tvdXQnXSwgYS5jaGVja291dC1idXR0b24iLGZ1bmM6dGhpcy5nb1RvQ2hlY2tvdXQsZXZlbnQ6ImNsaWNrIn0se3NlbGVjdG9yOiJmb3JtW2FjdGlvbj0nL2NoZWNrb3V0J10iLGZ1bmM6dGhpcy5nb1RvQ2hlY2tvdXQsZXZlbnQ6InN1Ym1pdCJ9LHtzZWxlY3RvcjoiI2NvbW1pdC1idXR0b24iLGZ1bmM6dGhpcy5nb1RvUGF5bWVudCxldmVudDoiY2xpY2sifV0pLCgwLHMuQSkodGhpcywicmViaW5kRXZlbnRzIiwoKT0+e2NsZWFyVGltZW91dCh0aGlzLnJlYmluZFNob3BpZnlFdmVudHMpLHRoaXMuaW5pdFdpdGhvdXRqUXVlcnkoKX0pLCgwLHMuQSkodGhpcywiaW5pdFdpdGhvdXRqUXVlcnkiLCgpPT57Zm9yKGxldCBlPTA7ZTx0aGlzLnNlbGVjdG9ycy5sZW5ndGg7ZSs9MSl7Y29uc3QgdD13aW5kb3cucGFyZW50LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5zZWxlY3RvcnNbZV0uc2VsZWN0b3IpO2lmKHQmJnQubGVuZ3RoPjApZm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKz0xKXRbbl0ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLnNlbGVjdG9yc1tlXS5ldmVudCx0aGlzLnNlbGVjdG9yc1tlXS5mdW5jLCEwKSx0W25dLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5zZWxlY3RvcnNbZV0uZXZlbnQsdGhpcy5zZWxlY3RvcnNbZV0uZnVuYywhMCl9Y29uc3QgZT13aW5kb3cucGFyZW50LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImZvcm0iKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrPTEpe2NvbnN0IG49ZVt0XS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPWZvcm1fdHlwZV1bdmFsdWU9Y3JlYXRlX2N1c3RvbWVyXSIpO24mJm4ubGVuZ3RoPjAmJihlW3RdLnJlbW92ZUV2ZW50TGlzdGVuZXIoInN1Ym1pdCIsdGhpcy5jcmVhdGVBY2NvdW50LCEwKSxlW3RdLmFkZEV2ZW50TGlzdGVuZXIoInN1Ym1pdCIsdGhpcy5jcmVhdGVBY2NvdW50LCEwKSl9fSksdGhpcy5kaXNwYXRjaD1uLHRoaXMubW9kZT1yLHZvaWQgMCE9PXdpbmRvdy5wYXJlbnQuU2hvcGlmeSYmdGhpcy5pbml0VHJhY2tpbmcoKX19O2xldCBGLGosQixWPSEwO2NvbnN0IFU9ZT0+e2lmKCJzdHJpbmciPT10eXBlb2YgZSYmMzI9PT1lLmxlbmd0aClyZXR1cm57aWQ6ZSxpZGVudGlmeURhdGE6e319O2NvbnN0IHQ9KDAsci5XNykoKTtyZXR1cm57aWQ6dCxvcmlnaW5hbFZpc2l0b3JJZDp0LGlkZW50aWZ5RGF0YTp7fX19LHo9KGUsdCxuLG8pPT57bGV0e3RpZGlvSWRlbnRpZnlEYXRhOmkscHVibGljS2V5OmEsdmlzaXRvcjp7b3JpZ2luYWxWaXNpdG9ySWQ6cz0iIn19PXQ7ZSgidmlzaXRvcklkZW50aWZ5Iix7aWRlbnRpZnlEYXRhOmkscHJvamVjdFB1YmxpY0tleTphfSwoZSx0KT0+e2lmKHQpe2NvbnN0IGU9VShzKTtyZXR1cm4gbigoMCxjLkoxSCkoZSkpLG8oKSwhMH1jb25zdCBhPSgoZSx0LG4pPT57aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiBlJiYzMj09PWUubGVuZ3RoKXJldHVybntpZGVudGlmeURhdGE6dCxpZDplfTtpZih0LmRpc3RpbmN0X2lkfHx0LmVtYWlsKXJldHVybntpZGVudGlmeURhdGE6dCxpZDooMCxyLlc3KSgpfX1yZXR1cm57Li4uVShuKSxpZGVudGlmeURhdGE6dHx8e319fSkoZSxpLHMpO3JldHVybiBuKCgwLGMuSjFIKShhKSksbygpLCEwfSl9LEg9KGUsdCxuLHIsbyk9PntsZXR7cHVibGljS2V5Oml9PXQ7ciYmInN0cmluZyI9PXR5cGVvZiByP2UoInZpc2l0b3JJZGVudGlmeUpXVCIse2p3dDpyLHByb2plY3RQdWJsaWNLZXk6aX0sZT0+e2lmKCExPT09ZSlyZXR1cm4gbygpLCEwO2lmKGUmJiJvYmplY3QiPT10eXBlb2YgZSYmZS52YWxpZGF0ZWRWaXNpdG9ySWQpe2UudmFsaWRhdGVkVmlzaXRvcklkfXJldHVybiBvKCksITB9KTpvKCl9LCQ9KGUsdCxuLG8sYSxzKT0+e2NvbnN0e3Zpc2l0b3I6bCxpc1Byb2plY3RPbmxpbmU6ZCxoaWRlV2hlbk9mZmxpbmU6Zix2aXNpdG9yOntpc19jaGF0X29uX3NpdGU6cD0hMX19PXQsaD0oMCxyLk1JKSgpLGc9KDAsci52VSkoKSx2PWg/KDAsci5xUykoKT8uYWlBc3Npc3RhbnRTYW5kYm94VHJpZ2dlcklkOnZvaWQgMCxiPWg/KDAsci5xUykoKT8uYWlBc3Npc3RhbnRTYW5kYm94QWN0aW9uSWQ6dm9pZCAwLHc9aD8oMCxyLnFTKSgpPy5haUFzc2lzdGFudFNhbmRib3hHdWlkYW5jZTp2b2lkIDAsUz0oMCxyLk1fKSgpO2UoInZpc2l0b3JSZWdpc3RlciIsey4uLmwsc2FuZGJveDpoLGlzRGVzaWduTW9kZTpnLGFpQXNzaXN0YW50U2FuZGJveFRyaWdnZXJJZDp2LGFpQXNzaXN0YW50U2FuZGJveEFjdGlvbklkOmIsYWlBc3Npc3RhbnRTYW5kYm94R3VpZGFuY2U6dyxpc1Byb2plY3RPbmxpbmU6ZCxjYWNoZV9oYXNoOm8/LmNhY2hlX2hhc2h8fG51bGwsYWZ0ZXJfcmVjb25uZWN0OiFhLHVybHM6KDAsci54MikoKSwuLi5TP3t0dWRwOiEwfTp7fX0sKGUsdCk9PntpZigiSU5WQUxJRF9QUk9KRUNUX1BVQkxJQ19LRVkiPT09dCYmKDAsaS5ESCkoInZpc2l0b3JJZCBjb2xsaXNpb24iLHt2aXNpdG9ySWQ6bC5pZH0pLCFlKXJldHVybiBzKCksc2V0VGltZW91dCgoKT0+eygwLHUub3UpKCksd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfSwxZTQpLCExO2NvbnN0IGE9bz97Li4ubywuLi5lPy53aWRnZXRfZGF0YX06ZT8ud2lkZ2V0X2RhdGE7cmV0dXJuIGU/LndpZGdldF9kYXRhJiYib2JqZWN0Ij09dHlwZW9mIGUud2lkZ2V0X2RhdGEmJihlLndpZGdldF9kYXRhLmRlc2lnbl9tb2RlPWcpLG4oKDAsYy5uenUpKGUsZT0+e2lmKGgpe2NvbnN0e2F1dG9tYXRpb25JZDplLHRpbWVvdXQ6dD0xMDB9PSgwLHIucVMpKCl8fHt9O2UmJnNldFRpbWVvdXQoKCk9PntuKCgwLGMueVZ6KShbK2VdKSl9LHQpfWVsc2UgaWYoIWcpe2lmKGE/LnRyYWNraW5nPy5nZW5lcmljJiYhKEYgaW5zdGFuY2VvZiBfKSl7Y29uc3QgZT1hLnRyYWNraW5nLmdlbmVyaWM7Rj1uZXcgXyhlKX1pZigic2hvcGlmeSIhPT1hPy50cmFja2luZz8ucGxhdGZvcm1fdHJhY2tlZHx8aiBpbnN0YW5jZW9mIER8fChqPW5ldyBEKHtkaXNwYXRjaDpuLG1vZGU6ImFkdmFuY2VkIn0pKSxhPy5pc190ZXh0X2lucHV0X2Rpc2FibGVkJiZuKCgwLGMudWR4KSghMCkpLCJzaG9waWZ5IiE9PWE/LnBsYXRmb3JtfHxqIGluc3RhbmNlb2YgRHx8KGo9bmV3IEQoe2Rpc3BhdGNoOm4sbW9kZToic2ltcGxlIn0pKSxhPy5ib3RzJiZBcnJheS5pc0FycmF5KGEuYm90cykmJmEuYm90cy5sZW5ndGg+MCYmbC5pZClpZihCIGluc3RhbmNlb2YgbSlCLnNldFZpc2l0b3JJZChsLmlkKTtlbHNle2NvbnN0IGU9ZDtCPW5ldyBtKGEuYm90cyxsLmlkLG4sZSxmLHApfX13aW5kb3cudGlkaW9DaGF0QXBpPy50cmlnZ2VyKCJyZWFkeSIpLGV8fCgwLHkuQSkoe2Rpc3BhdGNoOigpPT57fX0pLFYmJihuKCgwLGMudGFHKShlLCJ2aXNpdG9yUmVnaXN0ZXIiKSksVj0hMSksZyYmKHMoKSxuKCgwLGMubnB3KSghMSkpKX0pKSwhMH0pfSxZPShlLHQsbik9PntsZXR7bWVzc2FnZXM6cn09dDtjb25zdCBvPXIuZmlsdGVyKGU9PmUuaWRGcm9tU2VydmVyKSxpPW9bby5sZW5ndGgtMV0/LmlkRnJvbVNlcnZlcnx8bnVsbDtlKCJ2aXNpdG9yR2V0Q29udmVyc2F0aW9uSGlzdG9yeSIse2xhc3RNZXNzYWdlSWQ6aX0sZT0+ISFlJiYobigoMCxjLmU4TSkoZS5tZXNzYWdlcyxpKSksITApKSxpfHxuKCgwLGMucE82KShnLlguZnVsbENvbnZlcnNhdGlvbkhpc3RvcnlSZXF1ZXN0ZWQpKX07ZnVuY3Rpb24gcShlLHQsbixyKXtsZXR7bWVzc2FnZXM6aX09dDtlKCJ2aXNpdG9yUmVhZE1lc3NhZ2VzIix7bGFzdFJlYWRNZXNzYWdlSWQ6cj8/KDAsby5yaSkoaSksbGFzdFJlYWRNZXNzYWdlVGltZToobmV3IERhdGUpLnRvSVNPU3RyaW5nKCl9KX1mdW5jdGlvbiBXKGUsdCxuLG8pe2NvbnN0e2lkOml9PW8sYT10LmFpQXNzaXN0YW50fHwoMCxyLk1JKSgpJiYoMCxyLnFTKSgpPy5haUFzc2lzdGFudFNhbmRib3hUcmlnZ2VySWQ/ci5Bajo2ZTMscz1zZXRUaW1lb3V0KCgpPT57bigoMCxjLlVYSSkoaSxudWxsLCExKSl9LGEpO2UoInZpc2l0b3JOZXdNZXNzYWdlIix7bWVzc2FnZTpvLmNvbnRlbnQsbWVzc2FnZUlkOmkscGF5bG9hZDpvLnBheWxvYWQsdXJsOm8udXJsLG1ldGFkYXRhOm8ubWV0YWRhdGF9LChlLHQpPT57bGV0e2lkOnJ9PXQ7cmV0dXJuISFlJiYoY2xlYXJUaW1lb3V0KHMpLG4oKDAsYy5VWEkpKGksciwhMCkpLCEwKX0pfWZ1bmN0aW9uIEcoZSx0LG4sbyl7ZSgidmlzaXRvcklzVHlwaW5nIix7bWVzc2FnZTpvLHRpbWU6KDAsci5MbikoKX0pfWZ1bmN0aW9uIFEoZSx0LG4scil7ZSgidmlzaXRvclVwZGF0ZURhdGEiLHt1cGRhdGVEYXRhOnJ9KX1mdW5jdGlvbiBLKGUsdCxuLHIpe2UoInZpc2l0b3JBZGRUYWdzIix7dGFnczpyfSl9ZnVuY3Rpb24gWihlLHQsbixyKXtlKCJ2aXNpdG9yU2V0UmF0aW5nIix7dmFsdWU6cj8iMSI6IjAifSl9ZnVuY3Rpb24gWChlLHQsbixyKXtlKCJ2aXNpdG9yUHJlRm9ybSIse3VwZGF0ZURhdGE6ey4uLnJ9fSwoKT0+e30pfWZ1bmN0aW9uIEooZSx0LG4scil7ZSgidmlzaXRvclNldENvbW1lbnQiLHtjb21tZW50OnJ9KX1mdW5jdGlvbiBlZShlLHQsbixyLG8saSl7ZSgidmlzaXRvclRyYWNraW5nIix7Li4ubyxldmVudDpyfSxpKX1mdW5jdGlvbiB0ZShlLHQsbixyKXtlKCJib3RUcmlnZ2VyIix7Ym90czpyfSl9ZnVuY3Rpb24gbmUoZSl7ZSgiYm90Q2FuY2VsQm90QXBwcyIpfWZ1bmN0aW9uIHJlKGUpe2UoImJvdEdldFN0YXJ0ZWQiKX1sZXQgb2U9KDAsci5icCkoKTtmdW5jdGlvbiBpZShlLHQsbixyKXtyIT09b2UmJihvZT1yLGUoInZpc2l0b3JFbnRlclBhZ2UiLHt1cmw6cn0pKX1mdW5jdGlvbiBhZShlKXtlKCJ2aXNpdG9yQ2xpY2tzT25DaGF0SWNvbiIpfWZ1bmN0aW9uIHNlKGUsdCxuLHIpe2UoInZpc2l0b3JXaWRnZXRQb3NpdGlvbiIscil9ZnVuY3Rpb24gY2UoZSx0LG4scil7ZSgic2hvcGlmeU9yZGVyQ3JlYXRlZCIscil9ZnVuY3Rpb24gdWUoZSx0LG4scil7ZSgic2hvcGlmeUNoZWNrb3V0Q3JlYXRlZCIscil9ZnVuY3Rpb24gbGUoZSx0LG4scil7ZSgic2hvcGlmeUNhcnRUb2tlblVwZGF0ZWQiLHIpfWZ1bmN0aW9uIGRlKGUsdCxuLHIsbyl7ZSgid2lkZ2V0QW5hbHl0aWNzIix7ZXZlbnROYW1lOnIsLi4ub30pfWZ1bmN0aW9uIGZlKGUsdCxuLHIpe2UoInNlbmRDYXJ0RGF0YSIscil9ZnVuY3Rpb24gcGUoZSx0LG4scixvKXtlKCJjaGF0Qm90UmF0ZWQiLHtyYXRpbmdJZDpyLHJhdGluZzpvfSl9ZnVuY3Rpb24gaGUoZSx0LG4scixvLGksYSl7ZSgic2F0aXNmYWN0aW9uUmF0aW5nU2V0Iix7cmF0aW5nOnIsdGhyZWFkU291cmNlOm8sdGhyZWFkSWQ6aSxtZXNzYWdlSWQ6YX0pfWZ1bmN0aW9uIG1lKGUsdCxuLHIsbyxpLGEpe2UoInNhdGlzZmFjdGlvblJhdGluZ0NvbW1lbnRTZXQiLHtjb21tZW50OnIsdGhyZWFkU291cmNlOm8sdGhyZWFkSWQ6aSxtZXNzYWdlSWQ6YX0pfWZ1bmN0aW9uIGdlKGUsdCxuLHIpe2UoImp1ZGdlTWVSYXRpbmdDbGljayIse3JhdGluZzpyfSl9ZnVuY3Rpb24geWUoZSx0LG4scil7ZSgianVkZ2VNZVJldmlld1NlbnQiLHtyYXRpbmc6cn0pfWZ1bmN0aW9uIHZlKGUsdCxuLHIpe2UoImNhcnRWYWx1ZUNoYW5nZWQiLHIpfWZ1bmN0aW9uIGJlKGUsdCxuLHIpe2UoInZpc2l0b3JDcmVhdGVzVGlja2V0IixyKX1mdW5jdGlvbiB3ZShlLHQsbil7ZSgidmlzaXRvclNlbmRTYXRpc2ZhY3Rpb25TdXJ2ZXlRdWVzdGlvbiIse30sZT0+ISFlfHwoKDAsaS5zUSkoIkNvdWxkIG5vdCB0cmlnZ2VyIG1hbnVhbCBzYXRpc2ZhY3Rpb24gc3VydmV5IiksbigoMCxjLlM3OSkoKDAsYS5wdykoInNhdGlzZmFjdGlvblN1cnZleUFsZXJ0IixudWxsLCJTb3JyeSwgc29tZXRoaW5nIHdlbnQgd3JvbmcuIFBsZWFzZSB0cnkgYWdhaW4uIikpKSwhMSkpfWZ1bmN0aW9uIF9lKGUsdCxuLHIpe2UoInZpc2l0b3JWaWRlb0NhbGxPZmZlciIsey4uLnJ9KX1mdW5jdGlvbiBTZShlLHQsbixyKXtlKCJ2aXNpdG9yU2VuZFZpZGVvQ2FsbEljZUNhbmRpZGF0ZXMiLHsuLi5yfSl9ZnVuY3Rpb24gRWUoZSx0LG4scil7ZSgiZmV0Y2hHb29nbGVBbmFseXRpY3NUYWdJZCIse30scil9YXN5bmMgZnVuY3Rpb24gQ2UoZSx0LG4scil7ZSgidmlzaXRvclByb2R1Y3RSZWNvbW1lbmRhdGlvbkNsaWNrZWQiLHtwcm9kdWN0SWQ6ci5wcm9kdWN0SWQsY2hhdEJvdElkOnIuY2hhdEJvdElkLGN0YTpyLmN0YSxwcmljZTpyLnByaWNlLGN1cnJlbmN5OnIuY3VycmVuY3l9KX1hc3luYyBmdW5jdGlvbiBrZShlLHQsbixyKXtlKCJ2aXNpdG9yQWlBc3Npc3RhbnRQcm9kdWN0UmVjb21tZW5kYXRpb25DbGlja2VkIix7cHJvZHVjdElkOnIucHJvZHVjdElkLGN0YTpyLmN0YSxwcmljZTpyLnByaWNlLGN1cnJlbmN5OnIuY3VycmVuY3l9KX1mdW5jdGlvbiBBZShlLHQsbixyKXtlKCJ2aXNpdG9yQ3VycmVuY3lTZXQiLHtjdXJyZW5jeUNvZGU6ci5jdXJyZW5jeUNvZGUsY3VycmVuY3lSYXRlOnIuY3VycmVuY3lSYXRlfSl9fSw4Njg3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse00wOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LFI2OmZ1bmN0aW9uKCl7cmV0dXJuIG99LG42OmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7Y29uc3Qgcj0iZW1haWxDb25zZW50IixvPSJkZXBhcnRtZW50X2lkIixpPSJnZHByQ29uc2VudCJ9LDg3MDY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7czpmdW5jdGlvbigpe3JldHVybiBmfSxpOmZ1bmN0aW9uKCl7cmV0dXJuIHB9fSk7dmFyIHI9big0NDY3KSxvPShuKDgzNTYpLG4oODk0OCkpLGk9big3MzI2KSxhPW4oODYxMSkscz1uKDYwNTgpLGM9big5Nzg4KTtsZXQgdSxsPWZ1bmN0aW9uKGUpe3JldHVybiBlLkdUQUc9Imd0YWciLGUuREFUQV9MQVlFUj0iZGF0YUxheWVyIixlfSh7fSk7Y2xhc3MgZHtjb25zdHJ1Y3RvcigpeygwLHIuQSkodGhpcywidHlwZSIsdm9pZCAwKSwoMCxyLkEpKHRoaXMsInRhZ0lkIix2b2lkIDApLCgwLHIuQSkodGhpcywidHJhY2tpbmdGdW5jdGlvbiIsdm9pZCAwKSwoMCxyLkEpKHRoaXMsImlzSW5pdGlhbGl6ZWQiLCExKSwoMCxyLkEpKHRoaXMsInF1ZXVlIixbXSksKDAsci5BKSh0aGlzLCJhdmFpbGFibGVUcmFja2luZ0Z1bmN0aW9ucyIse2d0YWc6ZT0+e3ZvaWQgMCE9PXdpbmRvdy5wYXJlbnQuZ3RhZz93aW5kb3cucGFyZW50Lmd0YWcoImV2ZW50IixlLmV2ZW50TmFtZSx7Li4uZS5wYXJhbXMsLi4udGhpcy50YWdJZD97c2VuZF90bzp0aGlzLnRhZ0lkfTp7fX0pOnRoaXMuYXZhaWxhYmxlVHJhY2tpbmdGdW5jdGlvbnMuZGF0YUxheWVyKGUpfSxkYXRhTGF5ZXI6ZT0+e3ZvaWQgMCE9PXdpbmRvdy5wYXJlbnQuZGF0YUxheWVyPy5wdXNoJiZ3aW5kb3cucGFyZW50LmRhdGFMYXllci5wdXNoKHtldmVudDplLmV2ZW50TmFtZSwuLi5lLnBhcmFtc30pfX0pfWluaXRpYWxpemUoZSl7bGV0e3R5cGU6dCx0YWdJZDpufT1lO3RoaXMudHlwZT10LHRoaXMudGFnSWQ9bix0aGlzLnRyYWNraW5nRnVuY3Rpb249dGhpcy5hdmFpbGFibGVUcmFja2luZ0Z1bmN0aW9uc1t0XSx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITAsdGhpcy5mbHVzaEFsbEZyb21RdWV1ZSgpfWFkZFRvUXVldWUoZSx0KXt0aGlzLnF1ZXVlLnB1c2goe21ldGhvZDplLGFyZ3M6dH0pLHRoaXMuaXNJbml0aWFsaXplZCYmdGhpcy5mbHVzaEFsbEZyb21RdWV1ZSgpfWZsdXNoQWxsRnJvbVF1ZXVlKCl7aWYodGhpcy5pc0luaXRpYWxpemVkJiZ0aGlzLnRyYWNraW5nRnVuY3Rpb24pZm9yKDswIT09dGhpcy5xdWV1ZS5sZW5ndGg7KXtjb25zdCBlPXRoaXMucXVldWUuc2hpZnQoKTtpZihlKXtjb25zdHttZXRob2Q6dCxhcmdzOm59PWU7c3dpdGNoKHQpe2Nhc2UidHJhY2tFdmVudCI6dGhpcy5leGVjdXRlVHJhY2tFdmVudChuWzBdKTticmVhaztjYXNlInRyYWNrRXZlbnRPbmNlIjp0aGlzLmV4ZWN1dGVUcmFja0V2ZW50T25jZShuWzBdKTticmVhaztjYXNlInRyYWNrRXZlbnRPbmNlSW5JbnRlcnZhbCI6dGhpcy5leGVjdXRlVHJhY2tFdmVudE9uY2VJbkludGVydmFsKG5bMF0sblsxXSk7YnJlYWs7ZGVmYXVsdDooMCxvLmRyKSgiR29vZ2xlVHJhY2tlci5mbHVzaEFsbEZyb21RdWV1ZSIsdCl9fX19dHJhY2tFdmVudE9uY2UoZSl7cmV0dXJuIHRoaXMuYWRkVG9RdWV1ZSgidHJhY2tFdmVudE9uY2UiLFtlXSksITB9ZXhlY3V0ZVRyYWNrRXZlbnRPbmNlKGUpe2NvbnN0IHQ9YHRyYWNrRXZlbnRfJHtlLmV2ZW50TmFtZX1gO3JldHVybiEoMCxzLnZ1KSh0KSYmKCgwLHMuSG8pKHQsMSksdGhpcy5leGVjdXRlVHJhY2tFdmVudChlKSwhMCl9dHJhY2tFdmVudE9uY2VJbkludGVydmFsKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo4NjQwMDtyZXR1cm4gdGhpcy5hZGRUb1F1ZXVlKCJ0cmFja0V2ZW50T25jZUluSW50ZXJ2YWwiLFtlLHRdKSwhMH1leGVjdXRlVHJhY2tFdmVudE9uY2VJbkludGVydmFsKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo4NjQwMDtjb25zdCBuPU1hdGgucm91bmQoRGF0ZS5ub3coKS8xZTMpLHI9YHRyYWNrRXZlbnRfJHtlLmV2ZW50TmFtZX1gO3RyeXtjb25zdCBlPXBhcnNlSW50KGAkeygwLHMudnUpKHIpfWAsMTApO2lmKGU+MSYmbjxlKXJldHVybiExOygwLHMuSG8pKHIsbit0KX1jYXRjaHtyZXR1cm4hMX1yZXR1cm4gdGhpcy5leGVjdXRlVHJhY2tFdmVudChlKX10cmFja0V2ZW50KGUpe3JldHVybiB0aGlzLmFkZFRvUXVldWUoInRyYWNrRXZlbnQiLFtlXSksITB9ZXhlY3V0ZVRyYWNrRXZlbnQoZSl7dHJ5e3RoaXMudHJhY2tpbmdGdW5jdGlvbj8uKGUpfWNhdGNoKGUpeygwLGkuc1EpKGUpfXJldHVybiEwfWdldFR5cGUoKXtyZXR1cm4gdGhpcy50eXBlfWdldFRhZ0lkKCl7cmV0dXJuIHRoaXMudGFnSWR9fWZ1bmN0aW9uIGYoKXtyZXR1cm4gdm9pZCAwPT09dSYmKHU9bmV3IGQpLHV9Y29uc3QgcD1hc3luYyBlPT57bGV0e2ludGVncmF0aW9uc1BsYXRmb3Jtczp0LGVtaXQ6bn09ZTtjb25zdCByPWYoKTtpZih0KWlmKHQuaW5jbHVkZXMoYy5NbS5HT09HTEVfQU5BTFlUSUNTX0dBNCkpe2NvbnN0IGU9YXdhaXQoZT0+bmV3IFByb21pc2UodD0+e2U/LihhLnpCLGU9PntsZXR7dGFnSWQ6bn09ZTt0KG4pfSl9KSkobik7ci5pbml0aWFsaXplKHt0eXBlOmwuR1RBRyx0YWdJZDplfSl9ZWxzZSB0LmluY2x1ZGVzKGMuTW0uR09PR0xFX1RBR19NQU5BR0VSKSYmci5pbml0aWFsaXplKHt0eXBlOmwuREFUQV9MQVlFUn0pfX0sODcyNzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTI0Miksbz1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtlLmV4cG9ydHM9cj9vLmJpbmQobyk6ZnVuY3Rpb24oKXtyZXR1cm4gby5hcHBseShvLGFyZ3VtZW50cyl9fSw4Nzk1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI7bi5kKHQse2k6ZnVuY3Rpb24oKXtyZXR1cm4gc30sczpmdW5jdGlvbigpe3JldHVybiBhfX0pO3ZhciBvPW4oMzQ4MCksaT0hIShyfHwocj1uLnQobywyKSkpLnVzZUluc2VydGlvbkVmZmVjdCYmKHJ8fChyPW4udChvLDIpKSkudXNlSW5zZXJ0aW9uRWZmZWN0LGE9aXx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0scz1pfHxvLnVzZUxheW91dEVmZmVjdH0sODg4MzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNzI0MSk7ZS5leHBvcnRzPXIoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LDg5NDU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtjb25zdCByPSgwLG4oNzUwMikuQSkoKTt0LkE9e3B1Ymxpc2g6ZnVuY3Rpb24oZSx0KXtyLmVtaXQoZSx0KX0sc3Vic2NyaWJlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIub24oZSx0KSwoKT0+e3Iub2ZmKGUsdCl9fX19LDg5NDg6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7QWo6ZnVuY3Rpb24oKXtyZXR1cm4gbWV9LEFyOmZ1bmN0aW9uKCl7cmV0dXJuIEd9LEI5OmZ1bmN0aW9uKCl7cmV0dXJuICR9LEJuOmZ1bmN0aW9uKCl7cmV0dXJuIFp9LEQwOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LEREOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LERqOmZ1bmN0aW9uKCl7cmV0dXJuIHh9LERsOmZ1bmN0aW9uKCl7cmV0dXJuIHNlfSxFRDpmdW5jdGlvbigpe3JldHVybiBrfSxGZTpmdW5jdGlvbigpe3JldHVybiBkZX0sSFA6ZnVuY3Rpb24oKXtyZXR1cm4gcGV9LEhZOmZ1bmN0aW9uKCl7cmV0dXJuIGFlfSxIXzpmdW5jdGlvbigpe3JldHVybiBiZX0sSUY6ZnVuY3Rpb24oKXtyZXR1cm4gY2V9LEl0OmZ1bmN0aW9uKCl7cmV0dXJuIEx9LEowOmZ1bmN0aW9uKCl7cmV0dXJuIFR9LEt1OmZ1bmN0aW9uKCl7cmV0dXJuIE99LExkOmZ1bmN0aW9uKCl7cmV0dXJuIG9lfSxMbjpmdW5jdGlvbigpe3JldHVybiBBfSxNSTpmdW5jdGlvbigpe3JldHVybiBnfSxNUTpmdW5jdGlvbigpe3JldHVybiBXfSxNXzpmdW5jdGlvbigpe3JldHVybiBSfSxOMjpmdW5jdGlvbigpe3JldHVybiBQfSxQRTpmdW5jdGlvbigpe3JldHVybiBKfSxQaDpmdW5jdGlvbigpe3JldHVybiBwfSxQaTpmdW5jdGlvbigpe3JldHVybiBEfSxRNTpmdW5jdGlvbigpe3JldHVybiBffSxRTzpmdW5jdGlvbigpe3JldHVybiB5ZX0sVzc6ZnVuY3Rpb24oKXtyZXR1cm4gQ30sWDU6ZnVuY3Rpb24oKXtyZXR1cm4gcmV9LFhWOmZ1bmN0aW9uKCl7cmV0dXJuIGdlfSxYZjpmdW5jdGlvbigpe3JldHVybiB1ZX0sYWU6ZnVuY3Rpb24oKXtyZXR1cm4geX0sYnA6ZnVuY3Rpb24oKXtyZXR1cm4gZWV9LGJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGxlfSxidjpmdW5jdGlvbigpe3JldHVybiBFfSxkcjpmdW5jdGlvbigpe3JldHVybiBfZX0sZ3I6ZnVuY3Rpb24oKXtyZXR1cm4gWH0saUY6ZnVuY3Rpb24oKXtyZXR1cm4gVX0saXI6ZnVuY3Rpb24oKXtyZXR1cm4gdmV9LGo1OmZ1bmN0aW9uKCl7cmV0dXJuIFF9LGxLOmZ1bmN0aW9uKCl7cmV0dXJuIFl9LGxlOmZ1bmN0aW9uKCl7cmV0dXJuIG5lfSxtMDpmdW5jdGlvbigpe3JldHVybiBWfSxtZjpmdW5jdGlvbigpe3JldHVybiBxfSxtZzpmdW5jdGlvbigpe3JldHVybiBJfSxvTjpmdW5jdGlvbigpe3JldHVybiBLfSxxUzpmdW5jdGlvbigpe3JldHVybiBTfSxxdTpmdW5jdGlvbigpe3JldHVybiB3ZX0sc0U6ZnVuY3Rpb24oKXtyZXR1cm4gen0sdk46ZnVuY3Rpb24oKXtyZXR1cm4gZmV9LHZVOmZ1bmN0aW9uKCl7cmV0dXJuIGJ9LHZzOmZ1bmN0aW9uKCl7cmV0dXJuIGhlfSx3UDpmdW5jdGlvbigpe3JldHVybiBIfSx3aDpmdW5jdGlvbigpe3JldHVybiBpZX0sd246ZnVuY3Rpb24oKXtyZXR1cm4gTn0seDI6ZnVuY3Rpb24oKXtyZXR1cm4gdGV9fSk7big5MzI4KSxuKDU3MTgpLG4oNzQ1MCksbigyMDIwKSxuKDM5MzgpLG4oNTk2OSksbig1NTYpLG4oODM5MSk7dmFyIHI9big5MTczKSxvPW4ubihyKSxpPW4oMTYyKSxhPW4ubihpKSxzPW4oOTc4OCksYz1uKDczMjYpO2Z1bmN0aW9uIHUoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06d2luZG93LnBhcmVudC5kb2N1bWVudDtyZXR1cm4gZnVuY3Rpb24oKXt0cnl7bGV0IHQ9ZS5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbc3JjKj0iY29kZS50aWRpby5jbyJdJyk7aWYodHx8KHQ9ZS5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbc3JjKj0iY29kZS50aWRpbyJdLHNjcmlwdFtzcmMqPSJjb2RlIl1bc3JjKj0idGlkaW8iXSxzY3JpcHRbc3JjKj0idXBsb2Fkcy9yZWRpcmVjdCJdW3NyYyo9InRpZGlvIl0nKSksbnVsbD09PXQpe2NvbnN0IHQ9ZnVuY3Rpb24oZSl7dHJ5e2NvbnN0IHQ9ZS50aWRpb0NoYXRDb2RlO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmdC5sZW5ndGg+MClyZXR1cm4gdC50b0xvd2VyQ2FzZSgpfWNhdGNoe3JldHVybiExfXJldHVybiExfShlKTtyZXR1cm4gdHx8ITF9Y29uc3Qgbj0vKFthLXowLTldKykoXC5qc3wkKS9pLmV4ZWModC5zcmMpO3JldHVybiEoIW58fDA9PT1uLmxlbmd0aHx8MzIhPT1uWzFdLmxlbmd0aCkmJm5bMV0udG9Mb3dlckNhc2UoKX1jYXRjaChlKXtyZXR1cm4oMCxjLnNRKShlKSwhMX19KCl9bGV0IGw9bnVsbDtmdW5jdGlvbiBkKCl7aWYobnVsbD09PWwpdHJ5e2w9ITA9PT13aW5kb3cucGFyZW50LmRvY3VtZW50LnRpZGlvQ2hhdFByZXZpZXdNb2RlfWNhdGNoKGUpeygwLGMuc1EpKGUpLGw9ITF9cmV0dXJuIGx9bGV0IGY9bnVsbDtmdW5jdGlvbiBwKCl7aWYobnVsbD09PWYpdHJ5e2Y9ITA9PT13aW5kb3cucGFyZW50LmRvY3VtZW50LnRpZGlvQ2hhdFRlc3RpbmdNb2RlfWNhdGNoKGUpeygwLGMuc1EpKGUpLGY9ITF9cmV0dXJuIGZ9Y29uc3QgaD1bInRpZGlvLmNvbSIsInRpZGlvLmRldiIsImxvY2FsaG9zdCIsImRldi50aWRpby5pbiIsIndpZGdldC50aWRpby5sb2NhbGhvc3QiXTtsZXQgbT1udWxsO2Z1bmN0aW9uIGcoKXt0cnl7aWYobnVsbD09PW0pe2NvbnN0IGU9d2luZG93LnBhcmVudC5kb2N1bWVudCx0PXdpbmRvdy5wYXJlbnQub3JpZ2luLG49aC5zb21lKGU9PnQuaW5jbHVkZXMoZSkpO209Qm9vbGVhbihlLnRpZGlvU2FuZGJveCYmT2JqZWN0LmtleXMoZS50aWRpb1NhbmRib3gpLmxlbmd0aD4wJiZuKX19Y2F0Y2h7bT0hMX1yZXR1cm4gbX1mdW5jdGlvbiB5KCl7dHJ5e3JldHVybiB2b2lkIDAhPT13aW5kb3cucGFyZW50LlNob3BpZnl9Y2F0Y2h7cmV0dXJuITF9fWxldCB2PW51bGw7ZnVuY3Rpb24gYigpe3RyeXtudWxsPT09diYmKHY9Qm9vbGVhbighMD09PXdpbmRvdy5wYXJlbnQuU2hvcGlmeT8uZGVzaWduTW9kZSkpfWNhdGNoe31yZXR1cm4gdnx8ITF9bGV0IHc9bnVsbDtmdW5jdGlvbiBfKCl7dHJ5e251bGw9PT13JiYodz1Cb29sZWFuKHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGlkaW9DaGF0UHJldmlld01vZGVEYXRhPy5pc0luVG91cikpfWNhdGNoKGUpeygwLGMuc1EpKGUpLHc9ITF9cmV0dXJuIHd9ZnVuY3Rpb24gUygpe3JldHVybiB3aW5kb3cucGFyZW50LmRvY3VtZW50LnRpZGlvU2FuZGJveHx8e319ZnVuY3Rpb24gRSgpe3RyeXtyZXR1cm4hMD09PXdpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGlkaW9DaGF0T25TaXRlfWNhdGNoKGUpe3JldHVybigwLGMuc1EpKGUpLCExfX1mdW5jdGlvbiBDKCl7cmV0dXJuIGEoKSgpLnJlcGxhY2UoLy0vZywiIil9ZnVuY3Rpb24gayhlKXtyZXR1cm4gZS5zcGxpdCgiIikubWFwKGU9Pntjb25zdCB0PWUuY2hhckNvZGVBdCgwKTtyZXR1cm4gdD49NDgmJnQ8PTU3P1N0cmluZy5mcm9tQ2hhckNvZGUoKHQtNDgrNSklMTArNDgpOnQ+PTY1JiZ0PD05MD9TdHJpbmcuZnJvbUNoYXJDb2RlKCh0LTY1KzEzKSUyNis2NSk6dD49OTcmJnQ8PTEyMj9TdHJpbmcuZnJvbUNoYXJDb2RlKCh0LTk3KzEzKSUyNis5Nyk6ZX0pLmpvaW4oIiIpfWZ1bmN0aW9uIEEoKXtyZXR1cm4gTWF0aC5mbG9vcigobmV3IERhdGUpLmdldFRpbWUoKS8xZTMpfWZ1bmN0aW9uIE8oKXtpZihkKCkmJl8oKSlyZXR1cm4hMTt0cnl7cmV0dXJuIEJvb2xlYW4obmF2aWdhdG9yLnVzZXJBZ2VudCYmL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIFQoKXt0cnl7cmV0dXJuLTEhPT1uYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCJpUGFkIil9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIHgoKXtsZXQgZT1zLk9zLlVOS05PV047cmV0dXJuLTEhPT1uYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCJXaW4iKT9lPXMuT3MuV0lORE9XUzotMSE9PW5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoIkFuZHJvaWQiKT9lPXMuT3MuQU5EUk9JRDotMSE9PW5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoImlQYWQiKXx8LTEhPT1uYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCJpUGhvbmUiKT9lPXMuT3MuSU9TOi0xIT09bmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZigiTWFjIik/ZT1zLk9zLk9TWDotMSE9PW5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoIlgxMSIpP2U9cy5Pcy5VTklYOi0xIT09bmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZigiTGludXgiKSYmKGU9cy5Pcy5MSU5VWCkse25hbWU6ZSx2ZXJzaW9uOiIifX1mdW5jdGlvbiBJKGUpe3JldHVybiBvKCkoZSl9ZnVuY3Rpb24gTihlLHQpe2lmKHR5cGVvZiBlIT10eXBlb2YgdClyZXR1cm4hMTtjb25zdCBuPU9iamVjdC5rZXlzKGUpLHI9T2JqZWN0LmtleXModCk7aWYobi5sZW5ndGghPT1yLmxlbmd0aClyZXR1cm4hMTtmb3IoY29uc3QgbiBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZlW25dIT09dFtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBMKCl7dHJ5e2xldCBlPXdpbmRvdyx0PW51bGw7Y29uc3Qgbj0zO2xldCByPTA7Zm9yKDshdCYmcjxuJiYodD1lLmRvY3VtZW50LnRpZGlvSWRlbnRpZnksZSE9PXdpbmRvdy50b3ApOyl0fHwoZT13aW5kb3cucGFyZW50KSxyKz0xO3JldHVybiB0JiYib2JqZWN0Ij09dHlwZW9mIHQmJnR8fG51bGx9Y2F0Y2goZSl7cmV0dXJuKDAsYy5zUSkoZSksbnVsbH19ZnVuY3Rpb24gUCgpe3RyeXtsZXQgZT13aW5kb3csdD1udWxsO2NvbnN0IG49MztsZXQgcj0wO2Zvcig7IXQmJnI8biYmKHQ9ZS5kb2N1bWVudC50aWRpb0lkZW50aWZ5SldULGUhPT13aW5kb3cudG9wKTspdHx8KGU9d2luZG93LnBhcmVudCkscis9MTtyZXR1cm4gdCYmInN0cmluZyI9PXR5cGVvZiB0JiZ0Lmxlbmd0aD4wP3Q6bnVsbH1jYXRjaChlKXtyZXR1cm4oMCxjLnNRKShlKSxudWxsfX1sZXQgTT0hMTtmdW5jdGlvbiBSKCl7dHJ5e2xldCBlPXdpbmRvdztjb25zdCB0PTM7bGV0IG49MCxyPSExO2Zvcig7IXImJm48dCYmKHI9ITA9PT1lLmRvY3VtZW50LnRpZGlvVW5zYWZlRGlzYWJsZVByZWNoYXQsZSE9PXdpbmRvdy50b3ApOylyfHwoZT13aW5kb3cucGFyZW50KSxuKz0xO3JldHVybiBNPXIscn1jYXRjaChlKXtyZXR1cm4oMCxjLnNRKShlKSxNfHwhMX19Y29uc3QgRD17ZGlzdGluY3RfaWQ6bnVsbCxlbWFpbDoiIixuYW1lOiIiLHBob25lOiIiLHRhZ3M6bnVsbH0sRj17Y2xpZW50UHVibGljS2V5Om51bGx9LGo9e3Byb3BlcnRpZXM6e30sZW1haWxDb25zZW50OiEwfTtmdW5jdGlvbiBCKGUsdCl7Y29uc3Qgbj10LnJlZHVjZSgodCxuKT0+KHsuLi50LFtuXTplW25dfSkse30pO3JldHVybiAwIT09T2JqZWN0LmtleXMobikubGVuZ3RoJiZufWZ1bmN0aW9uIFYoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuISFlJiZCKGUsT2JqZWN0LmtleXMoZSkuZmlsdGVyKHQ9PihPYmplY3Qua2V5cyhEKS5pbmNsdWRlcyh0KXx8T2JqZWN0LmtleXMoRikuaW5jbHVkZXModCkpJiZCb29sZWFuKGVbdF0pKSl9ZnVuY3Rpb24gVSgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtyZXR1cm4hIWUmJkIoZSxPYmplY3Qua2V5cyhlKS5maWx0ZXIoZT0+Wy4uLk9iamVjdC5rZXlzKEQpLC4uLk9iamVjdC5rZXlzKGopXS5pbmNsdWRlcyhlKSkpfWZ1bmN0aW9uIHooKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307aWYoIWUpcmV0dXJuITE7Y29uc3QgdD17d2lkZ2V0TGFiZWxTdGF0dXM6ITEsd2lkZ2V0TGFiZWxUZXh0OiExLG1vYmlsZUhhc2g6ITEsYWxsb3dBdHRhY2htZW50czohMSxjdXN0b21CcmFuZGluZzohMSxwcmVjaGF0U3Vic2NyaXB0aW9uQ2hlY2tib3hEZWZhdWx0VmFsdWU6ITEsYWxsb3dDbG9zZTohMSxhbGxvd0Vtb2ppczohMSxoaWRlQ2hhdFdpdGhVc09uSG9tZTohMX07cmV0dXJuIEIoZSxPYmplY3Qua2V5cyhlKS5maWx0ZXIoZT0+Wy4uLk9iamVjdC5rZXlzKHQpXS5pbmNsdWRlcyhlKSkpfWZ1bmN0aW9uIEgoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuISFlJiYoInN0cmluZyI9PXR5cGVvZiBlLmNvZGUmJigibnVtYmVyIj09dHlwZW9mIGUuZXhjaGFuZ2VSYXRlJiZ7Y3VycmVuY3lDb2RlOmUuY29kZSxjdXJyZW5jeVJhdGU6ZS5leGNoYW5nZVJhdGV9KSl9ZnVuY3Rpb24gJChlKXtpZigtMT09PWUuaW5kZXhPZigiQCIpfHwtMT09PWUuaW5kZXhPZigiLiIpKXJldHVybiExO3JldHVybi9eKChbXjw+KClbXF1cXC4sOzpcc0AiXSsoXC5bXjw+KClbXF1cXC4sOzpcc0AiXSspKil8KCIuKyIpKUAoKFxbWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlwtMC05XStcLikrW2EtekEtWl17Mix9KSkkLy50ZXN0KGUpfWNvbnN0IFk9ZT0+L14oXCs/XGQrWyAtXT8pPyhcKFxkK1wpKT8oID9cLyA/KT8oW1xzLS5dP1xkezEsNX0pezUsfS4qXGQkLy50ZXN0KGV8fCIiKSxxPSgpPT57dHJ5e2NvbnN0IGU9d2luZG93LnBhcmVudC5kb2N1bWVudDtpZihlLnRpZGlvQ2hhdExhbmcpe2NvbnN0IHQ9ZS50aWRpb0NoYXRMYW5nO2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdC50b0xvd2VyQ2FzZSgpfXJldHVybiBuYXZpZ2F0b3IubGFuZ3VhZ2UmJiJzdHJpbmciPT10eXBlb2YgbmF2aWdhdG9yLmxhbmd1YWdlP25hdmlnYXRvci5sYW5ndWFnZS50b0xvd2VyQ2FzZSgpOm5hdmlnYXRvci5sYW5ndWFnZXMmJkFycmF5LmlzQXJyYXkobmF2aWdhdG9yLmxhbmd1YWdlcykmJm5hdmlnYXRvci5sYW5ndWFnZXMubGVuZ3RoPjA/bmF2aWdhdG9yLmxhbmd1YWdlc1swXS50b0xvd2VyQ2FzZSgpOiJlbiJ9Y2F0Y2goZSl7cmV0dXJuKDAsYy5zUSkoZSksImVuIn19O2Z1bmN0aW9uIFcoZSl7aWYoNT09PWUubGVuZ3RoKXJldHVybiBlO2lmKGVbMF09PT1lWzFdfHw0IT09ZS5sZW5ndGgpcmV0dXJuW2VbMF0sZVswXSxlWzJdfHwiI2ZmZiIsIiMwMjA2MTAiXTtjb25zdCB0PVtbIiMwYTBlODgiLCIjMDBiMWNlIiwiI2ZmZiIsIiMwMjA2MTAiXSxbIiMxOTAyNWMiLCIjNmUyOGJmIiwiI2ZmZiIsIiMwMjA2MTAiXSxbIiMzMTAwM2UiLCIjYzMyODZlIiwiI2ZmZiIsIiMwMjA2MTAiXSxbIiM5ODAzM2EiLCIjZjc0ZjI4IiwiI2ZmZiIsIiMwMjA2MTAiXSxbIiMwNDdjOGQiLCIjMmZmMjg5IiwiI2ZmZiIsIiMwMjA2MTAiXV07c3dpdGNoKGVbMF0pe2Nhc2UiIzAwNDhlYSI6cmV0dXJuIHRbMF07Y2FzZSIjN2QyZGZmIjpyZXR1cm4gdFsxXTtjYXNlIiNiMjJjZDQiOnJldHVybiB0WzJdO2Nhc2UiI2Y3Mjc0OSI6cmV0dXJuIHRbM107Y2FzZSIjMDBiNmJmIjpyZXR1cm4gdFs0XTtkZWZhdWx0OnJldHVybiBlfX1mdW5jdGlvbiBHKGUpe2lmKGVbMF09PT1lWzFdKXJldHVybiBlO2NvbnN0IHQ9W1siIzAwNDhlYSIsIiMxY2UyZmYiXSxbIiM3ZDJkZmYiLCIjMWY2ZWZmIl0sWyIjYjIyY2Q0IiwiI2YwMzk3YSJdLFsiI2Y3Mjc0OSIsIiNmNzgzMjAiXSxbIiMwMGI2YmYiLCIjOWJlNjhkIl1dLG49WyIjMGEwZTg4IiwiIzE5MDI1YyIsIiMzMTAwM2UiLCIjOTgwMzNhIiwiIzA0N2M4ZCJdO2xldCByO3N3aXRjaChlWzBdKXtjYXNlIG5bMF06cj10WzBdO2JyZWFrO2Nhc2UgblsxXTpyPXRbMV07YnJlYWs7Y2FzZSBuWzJdOnI9dFsyXTticmVhaztjYXNlIG5bM106cj10WzNdO2JyZWFrO2Nhc2Ugbls0XTpyPXRbNF07YnJlYWs7ZGVmYXVsdDpyPVtlWzBdLGVbMV1dfXJldHVybltyWzBdLHJbMV0sZVsyXSxlWzNdXX1mdW5jdGlvbiBRKGUsdCl7bGV0IG49ZTt0cnl7cmV0dXJuYHJnYmEoJHsobj1uLnJlcGxhY2UoIiMiLCIiKSkubWF0Y2gobmV3IFJlZ0V4cChgKC57JHtuLmxlbmd0aC8zfX0pYCwiZyIpKT8ubWFwKGU9PnBhcnNlSW50KG4ubGVuZ3RoJTI/ZStlOmUsMTYpKS5jb25jYXQodHx8MSkuam9pbigiLCIpfSlgfHxlfWNhdGNoKGUpe3JldHVybigwLGMuc1EpKGUpLG59fWNvbnN0IEs9ZT0+e3RyeXtpZih3aW5kb3cucGFyZW50KWlmKCJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cucGFyZW50Lm9ucG9wc3RhdGUpe2NvbnN0IHQ9d2luZG93LnBhcmVudC5vbnBvcHN0YXRlO3dpbmRvdy5wYXJlbnQub25wb3BzdGF0ZT1mdW5jdGlvbigpe2lmKGUoKSwiZnVuY3Rpb24iPT10eXBlb2YgdCl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkobiksbz0wO288bjtvKyspcltvXT1hcmd1bWVudHNbb107dChyKX19fWVsc2V7Y29uc3QgdD13aW5kb3cucGFyZW50Lm9uaGFzaGNoYW5nZTt3aW5kb3cucGFyZW50Lm9uaGFzaGNoYW5nZT1mdW5jdGlvbigpe2lmKGUoKSwiZnVuY3Rpb24iPT10eXBlb2YgdCl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkobiksbz0wO288bjtvKyspcltvXT1hcmd1bWVudHNbb107dChyKX19fWNvbnN0IHQ9d2luZG93Lm9ucHVzaHN0YXRlO3dpbmRvdy5vbnB1c2hzdGF0ZT1mdW5jdGlvbigpe2lmKGUoKSwiZnVuY3Rpb24iPT10eXBlb2YgdCl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkobiksbz0wO288bjtvKyspcltvXT1hcmd1bWVudHNbb107dChyKX19fWNhdGNoKGUpeygwLGMuc1EpKCJDYW4ndCBhY2Nlc3Mgd2luZG93LnBhcmVudCB3aGVuIHRyeWluZyB0byBhZGQgU1BBIGFjdGlvbnMiLHtlOmV9KX19LFo9e3dvcmRwcmVzczoid29yZHByZXNzIix3b29jb21tZXJjZToid29vY29tbWVyY2UiLHNob3BpZnk6InNob3BpZnkiLG90aGVyczoib3RoZXJzIn0sWD0oT2JqZWN0LnZhbHVlcyhaKSwiYm9vbGVhbiI9PXR5cGVvZiBQUk9EVUNUSU9OX0RFVkVMT1BNRU5UX0JVSUxEJiYhMD09PVBST0RVQ1RJT05fREVWRUxPUE1FTlRfQlVJTEQpLEo9WD8iaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC8vZGlzdC8iOiJodHRwczovL2NvZGUudGlkaW8uY28vd2lkZ2V0LXY0LyIsZWU9KCk9Pnt0cnl7cmV0dXJuIHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGlkaW9Mb2NhdGlvblVSTD93aW5kb3cucGFyZW50LmRvY3VtZW50LnRpZGlvTG9jYXRpb25VUkw6d2luZG93LnBhcmVudC5sb2NhdGlvbi5ocmVmfWNhdGNoe3JldHVybiIifX0sdGU9KCk9Pntjb25zdCBlPXt9O3RyeXt3aW5kb3cucGFyZW50LmxvY2F0aW9uLmhyZWYmJihlLmg9d2luZG93LnBhcmVudC5sb2NhdGlvbi5ocmVmKSx3aW5kb3cucGFyZW50LmRvY3VtZW50LnRpZGlvTG9jYXRpb25VUkwmJihlLnRsdT13aW5kb3cucGFyZW50LmRvY3VtZW50LnRpZGlvTG9jYXRpb25VUkwpfWNhdGNoe31yZXR1cm4gZX0sbmU9KCk9Pnt0cnl7aWYod2luZG93LnBhcmVudC5kb2N1bWVudC50aWRpb0xvY2F0aW9uVVJMKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtyZXR1cm4gZS5ocmVmPXdpbmRvdy5wYXJlbnQuZG9jdW1lbnQudGlkaW9Mb2NhdGlvblVSTCxlLmhvc3RuYW1lfWNvbnN0IGU9d2luZG93LnRvcD8ubG9jYXRpb247cmV0dXJuIGU/YCR7ZS5ob3N0bmFtZX1gOiIifWNhdGNoe3JldHVybiIifX0scmU9KCk9Pntjb25zdHthcHBOYW1lOmUsdXNlckFnZW50OnR9PW5hdmlnYXRvcjtsZXQgbixyPXQubWF0Y2goLyhjcmlvc3xvcGVyYXxjaHJvbWV8c2FmYXJpfGZpcmVmb3h8bXNpZXx0cmlkZW50KD89XC8pKVwvP1xzKihcZCspL2kpO3RyeXtyZXR1cm4gciYmL3RyaWRlbnQvaS50ZXN0KHQpJiYobj0vXGJydlsgOl0rKFxkKykvZy5leGVjKHQpfHxbXSxyWzFdPSJJRSIsclsyXT1uWzFdfHwiIiksIkNocm9tZSI9PT1yPy5bMV0mJihuPXQubWF0Y2goL1xiKE9QUnxFZGdlKVwvKFxkKykvKSxudWxsIT09biYmKG5bMV09blsxXS5yZXBsYWNlKCJPUFIiLCJPcGVyYSIpLHI9bikpLCJDcmlPUyI9PT1yPy5bMV0mJihyWzFdPSJDaHJvbWUiKSxuPXQubWF0Y2goL3ZlcnNpb25cLyhbLlxkXSspL2kpLHImJm51bGwhPT1uJiYoclsyXT1uWzFdKSxyPXI/W3JbMV0sclsyXV06W2Ake2V9LT9gLG5hdmlnYXRvci5hcHBWZXJzaW9uXSx7bmFtZTpyWzBdLHZlcnNpb246cGFyc2VGbG9hdChyWzFdKX19Y2F0Y2h7cmV0dXJue25hbWU6IiIsdmVyc2lvbjowfX19LG9lPXJlKCkubmFtZS50b0xvd2VyQ2FzZSgpLGllPSJmaXJlZm94Ij09PW9lP3tzcmNEb2M6IiJ9Ont9LGFlPWU9Pnt0cnl7Y29uc3R7cHJvdG9jb2w6dH09bmV3IFVSTChlLnJlcGxhY2UoL1tceDAwLVx4MjBdKy9nLCIiKSk7cmV0dXJuL14oPzpcdytzY3JpcHR8ZGF0YSk6L2kudGVzdCh0KX1jYXRjaHtyZXR1cm4hMX19LHNlPWU9PntpZighZXx8YWUoZSkpcmV0dXJuIG51bGw7dHJ5e2lmKCFlLmluY2x1ZGVzKCJodHRwOi8vIikmJiFlLmluY2x1ZGVzKCJodHRwczovLyIpJiYhZS5zdGFydHNXaXRoKCIvLyIpKXJldHVybiBzZShgaHR0cHM6Ly8ke2V9YCk7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7dC5ocmVmPWU7Y29uc3R7cHJvdG9jb2w6bixob3N0OnIscGF0aG5hbWU6byxzZWFyY2g6aSxoYXNoOmF9PXQ7cmV0dXJue3Byb3RvY29sOm4saG9zdDpyLHBhdGhuYW1lOm8sc2VhcmNoOmksaGFzaDphfX1jYXRjaHtyZXR1cm4gbnVsbH19LGNlPWU9Pntjb25zdCB0PXNlKGUpO3JldHVybiB0P2Ake3QucHJvdG9jb2x9Ly8ke3QuaG9zdH0ke3QucGF0aG5hbWV9JHt0LnNlYXJjaH0ke3QuaGFzaH1gOiIifSx1ZT0oZSx0KT0+e2lmKCFlfHwhdClyZXR1cm4hMTt0cnl7Y29uc3Qgbj1zZShlKSxyPXNlKHQpO3JldHVybiBuPy5ob3N0PT09cj8uaG9zdH1jYXRjaHtyZXR1cm4hMX19O2Z1bmN0aW9uIGxlKCl7aWYoZnVuY3Rpb24oKXtsZXQgZT0iIix0PSIiO3RyeXtlPW5lKCl9Y2F0Y2h7cmV0dXJuITF9dHJ5e3Q9ZWUoKX1jYXRjaHtyZXR1cm4hMX1yZXR1cm4hIWUubWF0Y2goL3RpZGlvY2hhdFwuY29tLyl8fCghIWUubWF0Y2goL3RpZGlvXC5kZXYvKXx8KCEhZS5tYXRjaCgvdGlkaW9cLmluLyl8fCghIXQubWF0Y2goL2xvY2FsaG9zdDpcZHs0fS8pfHwoISF0Lm1hdGNoKC93aWRnZXQtdjQ6XGR7NH0vKXx8KCEhZS5tYXRjaCgvdGlkaW9cLmNvbS8pfHwoISF0Lm1hdGNoKC93aWRnZXRcLnRpZGlvXC5sb2NhbGhvc3QvKXx8KCEhdC5tYXRjaCgvZGV2NDctZTJlXC5teXNob3BpZnlcLmNvbS8pfHwhIWUubWF0Y2goL2xpZ2h0aG91c2UtdGVzdC8pKSkpKSkpKX0oKSlyZXR1cm4hMTtsZXQgZT0hMTt0cnl7ZT1Cb29sZWFuKHdpbmRvd1tTdHJpbmcuZnJvbUNoYXJDb2RlKDExMCw5NywxMTgsMTA1LDEwMyw5NywxMTYsMTExLDExNCldW1N0cmluZy5mcm9tQ2hhckNvZGUoMTE5LDEwMSw5OCwxMDAsMTE0LDEwNSwxMTgsMTAxLDExNCldKX1jYXRjaHt9cmV0dXJuIGV9Y29uc3QgZGU9ZT0+e2NvbnN0IHQ9dWUoZWUoKSxlKTt0cnl7dCYmd2luZG93LnRvcD93aW5kb3cudG9wLmxvY2F0aW9uLmFzc2lnbihlKTp3aW5kb3cub3BlbihlKX1jYXRjaHt3aW5kb3cub3BlbihlKX19O2Z1bmN0aW9uIGZlKGUpe3JldHVybiBCb29sZWFuKGUpfWZ1bmN0aW9uIHBlKGUpe3JldHVybiJ3MGk0YjdmZGVlcmZxcW40dzhsd2I3YWhqYXNqbnJtZCI9PT1lfWZ1bmN0aW9uIGhlKGUpe3JldHVybiBlLnJlcGxhY2UoInMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2F2YXRhcnMudGlkaW9jaGF0LmNvbSIsImF2YXRhcnMudGlkaW9jaGF0LmNvbSIpfWNvbnN0IG1lPTg2ZTMsZ2U9WyIjMDBBOUZGIiwiIzAxQ0NGRiJdLHllPSJMeXJvIjtmdW5jdGlvbiB2ZSgpe2lmKCFbImRldmVsb3BtZW50IiwidGVzdCJdLmluY2x1ZGVzKCJwcm9kdWN0aW9uIikpcmV0dXJuO2NvbnNvbGUuZXJyb3I9ZnVuY3Rpb24oKXt9fWNvbnN0IGJlPTNlNCx3ZT00O2Z1bmN0aW9uIF9lKGUsdCl7KDAsYy5zUSkobmV3IEVycm9yKGBVbnJlYWNoYWJsZSBjYXNlIGluICR7ZX06ICR7SlNPTi5zdHJpbmdpZnkodCl9YCkpfX0sOTAwMzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHthbzpmdW5jdGlvbigpe3JldHVybiBtfSxrMTpmdW5jdGlvbigpe3JldHVybiBnfX0pO3ZhciByPW4oMjY5MSksbz1uKDc4MCksaT1uKDk4NTcpLGE9big5MDA0KTtjb25zdCBzPSJzZW50cnktIixjPS9ec2VudHJ5LS87ZnVuY3Rpb24gdShlKXtjb25zdCB0PWZ1bmN0aW9uKGUpe2lmKCFlfHwhKDAsYS5LZykoZSkmJiFBcnJheS5pc0FycmF5KGUpKXJldHVybjtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLnJlZHVjZSgoZSx0KT0+e2NvbnN0IG49bCh0KTtyZXR1cm4gT2JqZWN0LmVudHJpZXMobikuZm9yRWFjaCh0PT57bGV0W24scl09dDtlW25dPXJ9KSxlfSx7fSk7cmV0dXJuIGwoZSl9KGUpO2lmKCF0KXJldHVybjtjb25zdCBuPU9iamVjdC5lbnRyaWVzKHQpLnJlZHVjZSgoZSx0KT0+e2xldFtuLHJdPXQ7aWYobi5tYXRjaChjKSl7ZVtuLnNsaWNlKHMubGVuZ3RoKV09cn1yZXR1cm4gZX0se30pO3JldHVybiBPYmplY3Qua2V5cyhuKS5sZW5ndGg+MD9uOnZvaWQgMH1mdW5jdGlvbiBsKGUpe3JldHVybiBlLnNwbGl0KCIsIikubWFwKGU9PmUuc3BsaXQoIj0iKS5tYXAoZT0+ZGVjb2RlVVJJQ29tcG9uZW50KGUudHJpbSgpKSkpLnJlZHVjZSgoZSx0KT0+e2xldFtuLHJdPXQ7cmV0dXJuIG4mJnImJihlW25dPXIpLGV9LHt9KX12YXIgZD1uKDIyNDcpO3ZhciBmPW4oMjkyOSk7Y29uc3QgcD0iX2Zyb3plbkRzYyI7ZnVuY3Rpb24gaChlLHQpe2NvbnN0IG49dC5nZXRPcHRpb25zKCkse3B1YmxpY0tleTpvfT10LmdldERzbigpfHx7fSxpPSgwLGQuQ2UpKHtlbnZpcm9ubWVudDpuLmVudmlyb25tZW50fHxyLlUscmVsZWFzZTpuLnJlbGVhc2UscHVibGljX2tleTpvLHRyYWNlX2lkOmV9KTtyZXR1cm4gdC5lbWl0KCJjcmVhdGVEc2MiLGkpLGl9ZnVuY3Rpb24gbShlLHQpe2NvbnN0IG49dC5nZXRQcm9wYWdhdGlvbkNvbnRleHQoKTtyZXR1cm4gbi5kc2N8fGgobi50cmFjZUlkLGUpfWZ1bmN0aW9uIGcoZSl7Y29uc3QgdD0oMCxvLktVKSgpO2lmKCF0KXJldHVybnt9O2NvbnN0IG49KDAsZi56VSkoZSkscj1uW3BdO2lmKHIpcmV0dXJuIHI7Y29uc3QgYT1uLnNwYW5Db250ZXh0KCkudHJhY2VTdGF0ZSxzPWEmJmEuZ2V0KCJzZW50cnkuZHNjIiksYz1zJiZ1KHMpO2lmKGMpcmV0dXJuIGM7Y29uc3QgbD1oKGUuc3BhbkNvbnRleHQoKS50cmFjZUlkLHQpLGQ9KDAsZi5ldCkobiksbT1kLmRhdGF8fHt9LGc9bVtpLnN5XTtudWxsIT1nJiYobC5zYW1wbGVfcmF0ZT1gJHtnfWApO2NvbnN0IHk9bVtpLmlfXSx2PWQuZGVzY3JpcHRpb247cmV0dXJuInVybCIhPT15JiZ2JiYobC50cmFuc2FjdGlvbj12KSxmdW5jdGlvbihlKXtpZigiYm9vbGVhbiI9PXR5cGVvZiBfX1NFTlRSWV9UUkFDSU5HX18mJiFfX1NFTlRSWV9UUkFDSU5HX18pcmV0dXJuITE7Y29uc3QgdD0oMCxvLktVKSgpLG49ZXx8dCYmdC5nZXRPcHRpb25zKCk7cmV0dXJuISFuJiYobi5lbmFibGVUcmFjaW5nfHwidHJhY2VzU2FtcGxlUmF0ZSJpbiBufHwidHJhY2VzU2FtcGxlciJpbiBuKX0oKSYmKGwuc2FtcGxlZD1TdHJpbmcoKDAsZi5wSykobikpKSx0LmVtaXQoImNyZWF0ZURzYyIsbCxuKSxsfX0sOTAwNDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtCRDpmdW5jdGlvbigpe3JldHVybiBzfSxLZzpmdW5jdGlvbigpe3JldHVybiB1fSxMMjpmdW5jdGlvbigpe3JldHVybiBifSxORjpmdW5jdGlvbigpe3JldHVybiBsfSxRZDpmdW5jdGlvbigpe3JldHVybiBmfSxRZzpmdW5jdGlvbigpe3JldHVybiBnfSxUMjpmdW5jdGlvbigpe3JldHVybiBhfSxXNjpmdW5jdGlvbigpe3JldHVybiBjfSxiSjpmdW5jdGlvbigpe3JldHVybiBvfSxnZDpmdW5jdGlvbigpe3JldHVybiBtfSxtRTpmdW5jdGlvbigpe3JldHVybiB5fSxzTzpmdW5jdGlvbigpe3JldHVybiBkfSx0SDpmdW5jdGlvbigpe3JldHVybiB2fSx2cTpmdW5jdGlvbigpe3JldHVybiBofSx4SDpmdW5jdGlvbigpe3JldHVybiBwfX0pO2NvbnN0IHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBvKGUpe3N3aXRjaChyLmNhbGwoZSkpe2Nhc2UiW29iamVjdCBFcnJvcl0iOmNhc2UiW29iamVjdCBFeGNlcHRpb25dIjpjYXNlIltvYmplY3QgRE9NRXhjZXB0aW9uXSI6Y2FzZSJbb2JqZWN0IFdlYkFzc2VtYmx5LkV4Y2VwdGlvbl0iOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuIHYoZSxFcnJvcil9fWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4gci5jYWxsKGUpPT09YFtvYmplY3QgJHt0fV1gfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGkoZSwiRXJyb3JFdmVudCIpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIGkoZSwiRE9NRXJyb3IiKX1mdW5jdGlvbiBjKGUpe3JldHVybiBpKGUsIkRPTUV4Y2VwdGlvbiIpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIGkoZSwiU3RyaW5nIil9ZnVuY3Rpb24gbChlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiYiX19zZW50cnlfdGVtcGxhdGVfc3RyaW5nX18iaW4gZSYmIl9fc2VudHJ5X3RlbXBsYXRlX3ZhbHVlc19fImluIGV9ZnVuY3Rpb24gZChlKXtyZXR1cm4gbnVsbD09PWV8fGwoZSl8fCJvYmplY3QiIT10eXBlb2YgZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGV9ZnVuY3Rpb24gZihlKXtyZXR1cm4gaShlLCJPYmplY3QiKX1mdW5jdGlvbiBwKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgRXZlbnQmJnYoZSxFdmVudCl9ZnVuY3Rpb24gaChlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQmJnYoZSxFbGVtZW50KX1mdW5jdGlvbiBtKGUpe3JldHVybiBpKGUsIlJlZ0V4cCIpfWZ1bmN0aW9uIGcoZSl7cmV0dXJuIEJvb2xlYW4oZSYmZS50aGVuJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50aGVuKX1mdW5jdGlvbiB5KGUpe3JldHVybiBmKGUpJiYibmF0aXZlRXZlbnQiaW4gZSYmInByZXZlbnREZWZhdWx0ImluIGUmJiJzdG9wUHJvcGFnYXRpb24iaW4gZX1mdW5jdGlvbiB2KGUsdCl7dHJ5e3JldHVybiBlIGluc3RhbmNlb2YgdH1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gYihlKXtyZXR1cm4hKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCFlLl9faXNWdWUmJiFlLl9pc1Z1ZSl9fSw5MDA3OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse2xpOmZ1bmN0aW9uKCl7cmV0dXJuIFR9LG1HOmZ1bmN0aW9uKCl7cmV0dXJuIE99fSk7dmFyIHI9bigyNjkxKSxvPW4oNzgwKSxpPW4oMTU4NCksYT1uKDkwMDQpLHM9big5MjE2KSxjPW4oMTc1OCk7ZnVuY3Rpb24gdShlLHQsbil7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjA7cmV0dXJuIG5ldyBjLlQyKChvLGMpPT57Y29uc3QgbD1lW3JdO2lmKG51bGw9PT10fHwiZnVuY3Rpb24iIT10eXBlb2YgbClvKHQpO2Vsc2V7Y29uc3QgZD1sKHsuLi50fSxuKTtpLlQmJmwuaWQmJm51bGw9PT1kJiZzLnZGLmxvZyhgRXZlbnQgcHJvY2Vzc29yICIke2wuaWR9IiBkcm9wcGVkIGV2ZW50YCksKDAsYS5RZykoZCk/ZC50aGVuKHQ9PnUoZSx0LG4scisxKS50aGVuKG8pKS50aGVuKG51bGwsYyk6dShlLGQsbixyKzEpLnRoZW4obykudGhlbihudWxsLGMpfX0pfXZhciBsPW4oNzg1MCksZD1uKDMyMjUpO2xldCBmLHAsaDtmdW5jdGlvbiBtKGUpe2NvbnN0IHQ9ZC5PLl9zZW50cnlEZWJ1Z0lkcztpZighdClyZXR1cm57fTtjb25zdCBuPU9iamVjdC5rZXlzKHQpO3JldHVybiBoJiZuLmxlbmd0aD09PXB8fChwPW4ubGVuZ3RoLGg9bi5yZWR1Y2UoKG4scik9PntmfHwoZj17fSk7Y29uc3Qgbz1mW3JdO2lmKG8pbltvWzBdXT1vWzFdO2Vsc2V7Y29uc3Qgbz1lKHIpO2ZvcihsZXQgZT1vLmxlbmd0aC0xO2U+PTA7ZS0tKXtjb25zdCBpPW9bZV0sYT1pJiZpLmZpbGVuYW1lLHM9dFtyXTtpZihhJiZzKXtuW2FdPXMsZltyXT1bYSxzXTticmVha319fXJldHVybiBufSx7fSkpLGh9dmFyIGc9bigyMDM2KSx5PW4oMzY5Nyksdj1uKDcxMzcpLGI9big3MzczKSx3PW4oOTAwMyksXz1uKDIyNDcpLFM9bigwKSxFPW4oMjkyOSk7ZnVuY3Rpb24gQyhlLHQpe2NvbnN0e2ZpbmdlcnByaW50Om4sc3BhbjpyLGJyZWFkY3J1bWJzOm8sc2RrUHJvY2Vzc2luZ01ldGFkYXRhOml9PXQ7IWZ1bmN0aW9uKGUsdCl7Y29uc3R7ZXh0cmE6bix0YWdzOnIsdXNlcjpvLGNvbnRleHRzOmksbGV2ZWw6YSx0cmFuc2FjdGlvbk5hbWU6c309dCxjPSgwLF8uQ2UpKG4pO2MmJk9iamVjdC5rZXlzKGMpLmxlbmd0aCYmKGUuZXh0cmE9ey4uLmMsLi4uZS5leHRyYX0pO2NvbnN0IHU9KDAsXy5DZSkocik7dSYmT2JqZWN0LmtleXModSkubGVuZ3RoJiYoZS50YWdzPXsuLi51LC4uLmUudGFnc30pO2NvbnN0IGw9KDAsXy5DZSkobyk7bCYmT2JqZWN0LmtleXMobCkubGVuZ3RoJiYoZS51c2VyPXsuLi5sLC4uLmUudXNlcn0pO2NvbnN0IGQ9KDAsXy5DZSkoaSk7ZCYmT2JqZWN0LmtleXMoZCkubGVuZ3RoJiYoZS5jb250ZXh0cz17Li4uZCwuLi5lLmNvbnRleHRzfSk7YSYmKGUubGV2ZWw9YSk7cyYmInRyYW5zYWN0aW9uIiE9PWUudHlwZSYmKGUudHJhbnNhY3Rpb249cyl9KGUsdCksciYmZnVuY3Rpb24oZSx0KXtlLmNvbnRleHRzPXt0cmFjZTooMCxFLmtYKSh0KSwuLi5lLmNvbnRleHRzfSxlLnNka1Byb2Nlc3NpbmdNZXRhZGF0YT17ZHluYW1pY1NhbXBsaW5nQ29udGV4dDooMCx3LmsxKSh0KSwuLi5lLnNka1Byb2Nlc3NpbmdNZXRhZGF0YX07Y29uc3Qgbj0oMCxFLnpVKSh0KSxyPSgwLEUuZXQpKG4pLmRlc2NyaXB0aW9uO3ImJiFlLnRyYW5zYWN0aW9uJiYidHJhbnNhY3Rpb24iPT09ZS50eXBlJiYoZS50cmFuc2FjdGlvbj1yKX0oZSxyKSxmdW5jdGlvbihlLHQpe2UuZmluZ2VycHJpbnQ9ZS5maW5nZXJwcmludD9BcnJheS5pc0FycmF5KGUuZmluZ2VycHJpbnQpP2UuZmluZ2VycHJpbnQ6W2UuZmluZ2VycHJpbnRdOltdLHQmJihlLmZpbmdlcnByaW50PWUuZmluZ2VycHJpbnQuY29uY2F0KHQpKTtlLmZpbmdlcnByaW50JiYhZS5maW5nZXJwcmludC5sZW5ndGgmJmRlbGV0ZSBlLmZpbmdlcnByaW50fShlLG4pLGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1bLi4uZS5icmVhZGNydW1ic3x8W10sLi4udF07ZS5icmVhZGNydW1icz1uLmxlbmd0aD9uOnZvaWQgMH0oZSxvKSxmdW5jdGlvbihlLHQpe2Uuc2RrUHJvY2Vzc2luZ01ldGFkYXRhPXsuLi5lLnNka1Byb2Nlc3NpbmdNZXRhZGF0YSwuLi50fX0oZSxpKX1mdW5jdGlvbiBrKGUsdCl7Y29uc3R7ZXh0cmE6bix0YWdzOnIsdXNlcjpvLGNvbnRleHRzOmksbGV2ZWw6YSxzZGtQcm9jZXNzaW5nTWV0YWRhdGE6cyxicmVhZGNydW1iczpjLGZpbmdlcnByaW50OnUsZXZlbnRQcm9jZXNzb3JzOmwsYXR0YWNobWVudHM6ZCxwcm9wYWdhdGlvbkNvbnRleHQ6Zix0cmFuc2FjdGlvbk5hbWU6cCxzcGFuOmh9PXQ7QShlLCJleHRyYSIsbiksQShlLCJ0YWdzIixyKSxBKGUsInVzZXIiLG8pLEEoZSwiY29udGV4dHMiLGkpLGUuc2RrUHJvY2Vzc2luZ01ldGFkYXRhPSgwLFMuaCkoZS5zZGtQcm9jZXNzaW5nTWV0YWRhdGEscywyKSxhJiYoZS5sZXZlbD1hKSxwJiYoZS50cmFuc2FjdGlvbk5hbWU9cCksaCYmKGUuc3Bhbj1oKSxjLmxlbmd0aCYmKGUuYnJlYWRjcnVtYnM9Wy4uLmUuYnJlYWRjcnVtYnMsLi4uY10pLHUubGVuZ3RoJiYoZS5maW5nZXJwcmludD1bLi4uZS5maW5nZXJwcmludCwuLi51XSksbC5sZW5ndGgmJihlLmV2ZW50UHJvY2Vzc29ycz1bLi4uZS5ldmVudFByb2Nlc3NvcnMsLi4ubF0pLGQubGVuZ3RoJiYoZS5hdHRhY2htZW50cz1bLi4uZS5hdHRhY2htZW50cywuLi5kXSksZS5wcm9wYWdhdGlvbkNvbnRleHQ9ey4uLmUucHJvcGFnYXRpb25Db250ZXh0LC4uLmZ9fWZ1bmN0aW9uIEEoZSx0LG4pe2VbdF09KDAsUy5oKShlW3RdLG4sMSl9ZnVuY3Rpb24gTyhlLHQsbixpLGEscyl7Y29uc3R7bm9ybWFsaXplRGVwdGg6Yz0zLG5vcm1hbGl6ZU1heEJyZWFkdGg6ZD0xZTN9PWUsZj17Li4udCxldmVudF9pZDp0LmV2ZW50X2lkfHxuLmV2ZW50X2lkfHwoMCxnLmVKKSgpLHRpbWVzdGFtcDp0LnRpbWVzdGFtcHx8KDAsYi5sdSkoKX0scD1uLmludGVncmF0aW9uc3x8ZS5pbnRlZ3JhdGlvbnMubWFwKGU9PmUubmFtZSk7IWZ1bmN0aW9uKGUsdCl7Y29uc3R7ZW52aXJvbm1lbnQ6bixyZWxlYXNlOm8sZGlzdDppLG1heFZhbHVlTGVuZ3RoOmE9MjUwfT10O2UuZW52aXJvbm1lbnQ9ZS5lbnZpcm9ubWVudHx8bnx8ci5VLCFlLnJlbGVhc2UmJm8mJihlLnJlbGVhc2U9byk7IWUuZGlzdCYmaSYmKGUuZGlzdD1pKTtlLm1lc3NhZ2UmJihlLm1lc3NhZ2U9KDAsdi54dikoZS5tZXNzYWdlLGEpKTtjb25zdCBzPWUuZXhjZXB0aW9uJiZlLmV4Y2VwdGlvbi52YWx1ZXMmJmUuZXhjZXB0aW9uLnZhbHVlc1swXTtzJiZzLnZhbHVlJiYocy52YWx1ZT0oMCx2Lnh2KShzLnZhbHVlLGEpKTtjb25zdCBjPWUucmVxdWVzdDtjJiZjLnVybCYmKGMudXJsPSgwLHYueHYpKGMudXJsLGEpKX0oZixlKSxmdW5jdGlvbihlLHQpe3QubGVuZ3RoPjAmJihlLnNkaz1lLnNka3x8e30sZS5zZGsuaW50ZWdyYXRpb25zPVsuLi5lLnNkay5pbnRlZ3JhdGlvbnN8fFtdLC4uLnRdKX0oZixwKSxhJiZhLmVtaXQoImFwcGx5RnJhbWVNZXRhZGF0YSIsdCksdm9pZCAwPT09dC50eXBlJiZmdW5jdGlvbihlLHQpe2NvbnN0IG49bSh0KTt0cnl7ZS5leGNlcHRpb24udmFsdWVzLmZvckVhY2goZT0+e2Uuc3RhY2t0cmFjZS5mcmFtZXMuZm9yRWFjaChlPT57biYmZS5maWxlbmFtZSYmKGUuZGVidWdfaWQ9bltlLmZpbGVuYW1lXSl9KX0pfWNhdGNoKGUpe319KGYsZS5zdGFja1BhcnNlcik7Y29uc3QgaD1mdW5jdGlvbihlLHQpe2lmKCF0KXJldHVybiBlO2NvbnN0IG49ZT9lLmNsb25lKCk6bmV3IGwuSDtyZXR1cm4gbi51cGRhdGUodCksbn0oaSxuLmNhcHR1cmVDb250ZXh0KTtuLm1lY2hhbmlzbSYmKDAsZy5NNikoZixuLm1lY2hhbmlzbSk7Y29uc3Qgdz1hP2EuZ2V0RXZlbnRQcm9jZXNzb3JzKCk6W10sXz0oMCxvLm02KSgpLmdldFNjb3BlRGF0YSgpO2lmKHMpe2soXyxzLmdldFNjb3BlRGF0YSgpKX1pZihoKXtrKF8saC5nZXRTY29wZURhdGEoKSl9Y29uc3QgUz1bLi4ubi5hdHRhY2htZW50c3x8W10sLi4uXy5hdHRhY2htZW50c107Uy5sZW5ndGgmJihuLmF0dGFjaG1lbnRzPVMpLEMoZixfKTtyZXR1cm4gdShbLi4udywuLi5fLmV2ZW50UHJvY2Vzc29yc10sZixuKS50aGVuKGU9PihlJiZmdW5jdGlvbihlKXtjb25zdCB0PXt9O3RyeXtlLmV4Y2VwdGlvbi52YWx1ZXMuZm9yRWFjaChlPT57ZS5zdGFja3RyYWNlLmZyYW1lcy5mb3JFYWNoKGU9PntlLmRlYnVnX2lkJiYoZS5hYnNfcGF0aD90W2UuYWJzX3BhdGhdPWUuZGVidWdfaWQ6ZS5maWxlbmFtZSYmKHRbZS5maWxlbmFtZV09ZS5kZWJ1Z19pZCksZGVsZXRlIGUuZGVidWdfaWQpfSl9KX1jYXRjaChlKXt9aWYoMD09PU9iamVjdC5rZXlzKHQpLmxlbmd0aClyZXR1cm47ZS5kZWJ1Z19tZXRhPWUuZGVidWdfbWV0YXx8e30sZS5kZWJ1Z19tZXRhLmltYWdlcz1lLmRlYnVnX21ldGEuaW1hZ2VzfHxbXTtjb25zdCBuPWUuZGVidWdfbWV0YS5pbWFnZXM7T2JqZWN0LmVudHJpZXModCkuZm9yRWFjaChlPT57bGV0W3Qscl09ZTtuLnB1c2goe3R5cGU6InNvdXJjZW1hcCIsY29kZV9maWxlOnQsZGVidWdfaWQ6cn0pfSl9KGUpLCJudW1iZXIiPT10eXBlb2YgYyYmYz4wP2Z1bmN0aW9uKGUsdCxuKXtpZighZSlyZXR1cm4gbnVsbDtjb25zdCByPXsuLi5lLC4uLmUuYnJlYWRjcnVtYnMmJnticmVhZGNydW1iczplLmJyZWFkY3J1bWJzLm1hcChlPT4oey4uLmUsLi4uZS5kYXRhJiZ7ZGF0YTooMCx5LlM4KShlLmRhdGEsdCxuKX19KSl9LC4uLmUudXNlciYme3VzZXI6KDAseS5TOCkoZS51c2VyLHQsbil9LC4uLmUuY29udGV4dHMmJntjb250ZXh0czooMCx5LlM4KShlLmNvbnRleHRzLHQsbil9LC4uLmUuZXh0cmEmJntleHRyYTooMCx5LlM4KShlLmV4dHJhLHQsbil9fTtlLmNvbnRleHRzJiZlLmNvbnRleHRzLnRyYWNlJiZyLmNvbnRleHRzJiYoci5jb250ZXh0cy50cmFjZT1lLmNvbnRleHRzLnRyYWNlLGUuY29udGV4dHMudHJhY2UuZGF0YSYmKHIuY29udGV4dHMudHJhY2UuZGF0YT0oMCx5LlM4KShlLmNvbnRleHRzLnRyYWNlLmRhdGEsdCxuKSkpO2Uuc3BhbnMmJihyLnNwYW5zPWUuc3BhbnMubWFwKGU9Pih7Li4uZSwuLi5lLmRhdGEmJntkYXRhOigwLHkuUzgpKGUuZGF0YSx0LG4pfX0pKSk7ZS5jb250ZXh0cyYmZS5jb250ZXh0cy5mbGFncyYmci5jb250ZXh0cyYmKHIuY29udGV4dHMuZmxhZ3M9KDAseS5TOCkoZS5jb250ZXh0cy5mbGFncywzLG4pKTtyZXR1cm4gcn0oZSxjLGQpOmUpKX1mdW5jdGlvbiBUKGUpe2lmKGUpcmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgbC5IfHwiZnVuY3Rpb24iPT10eXBlb2YgZX0oZSl8fGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5zb21lKGU9PnguaW5jbHVkZXMoZSkpfShlKT97Y2FwdHVyZUNvbnRleHQ6ZX06ZX1jb25zdCB4PVsidXNlciIsImxldmVsIiwiZXh0cmEiLCJjb250ZXh0cyIsInRhZ3MiLCJmaW5nZXJwcmludCIsInJlcXVlc3RTZXNzaW9uIiwicHJvcGFnYXRpb25Db250ZXh0Il19LDkxNDQ6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDUyNjQpLG89big4NTM5KS5nZXQ7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFyKGUpKXJldHVybiExO3ZhciB0PW8oZSk7cmV0dXJuISF0JiYiUmF3SlNPTiI9PT10LnR5cGV9fSw5MTcwOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big5NzkpLG89bigzMDExKSxpPW4oOTk1MyksYT1uKDQ1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLHMpe3N8fChzPXt9KTt2YXIgYz1zLmVudW1lcmFibGUsdT12b2lkIDAhPT1zLm5hbWU/cy5uYW1lOnQ7aWYocihuKSYmaShuLHUscykscy5nbG9iYWwpYz9lW3RdPW46YSh0LG4pO2Vsc2V7dHJ5e3MudW5zYWZlP2VbdF0mJihjPSEwKTpkZWxldGUgZVt0XX1jYXRjaChlKXt9Yz9lW3RdPW46by5mKGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohcy5ub25Db25maWd1cmFibGUsd3JpdGFibGU6IXMubm9uV3JpdGFibGV9KX1yZXR1cm4gZX19LDkxNzM6ZnVuY3Rpb24oZSx0LG4pe2U9bi5ubWQoZSk7dmFyIHI9Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iLG89OTAwNzE5OTI1NDc0MDk5MSxpPSJbb2JqZWN0IEFyZ3VtZW50c10iLGE9IltvYmplY3QgQm9vbGVhbl0iLHM9IltvYmplY3QgRGF0ZV0iLGM9IltvYmplY3QgRnVuY3Rpb25dIix1PSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsbD0iW29iamVjdCBNYXBdIixkPSJbb2JqZWN0IE51bWJlcl0iLGY9IltvYmplY3QgT2JqZWN0XSIscD0iW29iamVjdCBQcm9taXNlXSIsaD0iW29iamVjdCBSZWdFeHBdIixtPSJbb2JqZWN0IFNldF0iLGc9IltvYmplY3QgU3RyaW5nXSIseT0iW29iamVjdCBTeW1ib2xdIix2PSJbb2JqZWN0IFdlYWtNYXBdIixiPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsdz0iW29iamVjdCBEYXRhVmlld10iLF89IltvYmplY3QgRmxvYXQzMkFycmF5XSIsUz0iW29iamVjdCBGbG9hdDY0QXJyYXldIixFPSJbb2JqZWN0IEludDhBcnJheV0iLEM9IltvYmplY3QgSW50MTZBcnJheV0iLGs9IltvYmplY3QgSW50MzJBcnJheV0iLEE9IltvYmplY3QgVWludDhBcnJheV0iLE89IltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIixUPSJbb2JqZWN0IFVpbnQxNkFycmF5XSIseD0iW29iamVjdCBVaW50MzJBcnJheV0iLEk9L1x3KiQvLE49L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sTD0vXig/OjB8WzEtOV1cZCopJC8sUD17fTtQW2ldPVBbIltvYmplY3QgQXJyYXldIl09UFtiXT1QW3ddPVBbYV09UFtzXT1QW19dPVBbU109UFtFXT1QW0NdPVBba109UFtsXT1QW2RdPVBbZl09UFtoXT1QW21dPVBbZ109UFt5XT1QW0FdPVBbT109UFtUXT1QW3hdPSEwLFBbIltvYmplY3QgRXJyb3JdIl09UFtjXT1QW3ZdPSExO3ZhciBNPSJvYmplY3QiPT10eXBlb2Ygbi5nJiZuLmcmJm4uZy5PYmplY3Q9PT1PYmplY3QmJm4uZyxSPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsRD1NfHxSfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLEY9dCYmIXQubm9kZVR5cGUmJnQsaj1GJiZlJiYhZS5ub2RlVHlwZSYmZSxCPWomJmouZXhwb3J0cz09PUY7ZnVuY3Rpb24gVihlLHQpe3JldHVybiBlLnNldCh0WzBdLHRbMV0pLGV9ZnVuY3Rpb24gVShlLHQpe3JldHVybiBlLmFkZCh0KSxlfWZ1bmN0aW9uIHooZSx0LG4scil7dmFyIG89LTEsaT1lP2UubGVuZ3RoOjA7Zm9yKHImJmkmJihuPWVbKytvXSk7KytvPGk7KW49dChuLGVbb10sbyxlKTtyZXR1cm4gbn1mdW5jdGlvbiBIKGUpe3ZhciB0PSExO2lmKG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nKXRyeXt0PSEhKGUrIiIpfWNhdGNoKGUpe31yZXR1cm4gdH1mdW5jdGlvbiAkKGUpe3ZhciB0PS0xLG49QXJyYXkoZS5zaXplKTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGUscil7blsrK3RdPVtyLGVdfSksbn1mdW5jdGlvbiBZKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBlKHQobikpfX1mdW5jdGlvbiBxKGUpe3ZhciB0PS0xLG49QXJyYXkoZS5zaXplKTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe25bKyt0XT1lfSksbn12YXIgVyxHPUFycmF5LnByb3RvdHlwZSxRPUZ1bmN0aW9uLnByb3RvdHlwZSxLPU9iamVjdC5wcm90b3R5cGUsWj1EWyJfX2NvcmUtanNfc2hhcmVkX18iXSxYPShXPS9bXi5dKyQvLmV4ZWMoWiYmWi5rZXlzJiZaLmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIitXOiIiLEo9US50b1N0cmluZyxlZT1LLmhhc093blByb3BlcnR5LHRlPUsudG9TdHJpbmcsbmU9UmVnRXhwKCJeIitKLmNhbGwoZWUpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpLHJlPUI/RC5CdWZmZXI6dm9pZCAwLG9lPUQuU3ltYm9sLGllPUQuVWludDhBcnJheSxhZT1ZKE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpLHNlPU9iamVjdC5jcmVhdGUsY2U9Sy5wcm9wZXJ0eUlzRW51bWVyYWJsZSx1ZT1HLnNwbGljZSxsZT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGRlPXJlP3JlLmlzQnVmZmVyOnZvaWQgMCxmZT1ZKE9iamVjdC5rZXlzLE9iamVjdCkscGU9amUoRCwiRGF0YVZpZXciKSxoZT1qZShELCJNYXAiKSxtZT1qZShELCJQcm9taXNlIiksZ2U9amUoRCwiU2V0IikseWU9amUoRCwiV2Vha01hcCIpLHZlPWplKE9iamVjdCwiY3JlYXRlIiksYmU9SGUocGUpLHdlPUhlKGhlKSxfZT1IZShtZSksU2U9SGUoZ2UpLEVlPUhlKHllKSxDZT1vZT9vZS5wcm90b3R5cGU6dm9pZCAwLGtlPUNlP0NlLnZhbHVlT2Y6dm9pZCAwO2Z1bmN0aW9uIEFlKGUpe3ZhciB0PS0xLG49ZT9lLmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PG47KXt2YXIgcj1lW3RdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWZ1bmN0aW9uIE9lKGUpe3ZhciB0PS0xLG49ZT9lLmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PG47KXt2YXIgcj1lW3RdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWZ1bmN0aW9uIFRlKGUpe3ZhciB0PS0xLG49ZT9lLmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PG47KXt2YXIgcj1lW3RdO3RoaXMuc2V0KHJbMF0sclsxXSl9fWZ1bmN0aW9uIHhlKGUpe3RoaXMuX19kYXRhX189bmV3IE9lKGUpfWZ1bmN0aW9uIEllKGUsdCl7dmFyIG49WWUoZSl8fGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuISFlJiYib2JqZWN0Ij09dHlwZW9mIGV9KGUpJiZxZShlKX0oZSkmJmVlLmNhbGwoZSwiY2FsbGVlIikmJighY2UuY2FsbChlLCJjYWxsZWUiKXx8dGUuY2FsbChlKT09aSl9KGUpP2Z1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPS0xLHI9QXJyYXkoZSk7KytuPGU7KXJbbl09dChuKTtyZXR1cm4gcn0oZS5sZW5ndGgsU3RyaW5nKTpbXSxyPW4ubGVuZ3RoLG89ISFyO2Zvcih2YXIgYSBpbiBlKSF0JiYhZWUuY2FsbChlLGEpfHxvJiYoImxlbmd0aCI9PWF8fFVlKGEscikpfHxuLnB1c2goYSk7cmV0dXJuIG59ZnVuY3Rpb24gTmUoZSx0LG4pe3ZhciByPWVbdF07ZWUuY2FsbChlLHQpJiYkZShyLG4pJiYodm9pZCAwIT09bnx8dCBpbiBlKXx8KGVbdF09bil9ZnVuY3Rpb24gTGUoZSx0KXtmb3IodmFyIG49ZS5sZW5ndGg7bi0tOylpZigkZShlW25dWzBdLHQpKXJldHVybiBuO3JldHVybi0xfWZ1bmN0aW9uIFBlKGUsdCxuLHIsbyxwLHYpe3ZhciBOO2lmKHImJihOPXA/cihlLG8scCx2KTpyKGUpKSx2b2lkIDAhPT1OKXJldHVybiBOO2lmKCFRZShlKSlyZXR1cm4gZTt2YXIgTD1ZZShlKTtpZihMKXtpZihOPWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoLG49ZS5jb25zdHJ1Y3Rvcih0KTt0JiYic3RyaW5nIj09dHlwZW9mIGVbMF0mJmVlLmNhbGwoZSwiaW5kZXgiKSYmKG4uaW5kZXg9ZS5pbmRleCxuLmlucHV0PWUuaW5wdXQpO3JldHVybiBufShlKSwhdClyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj0tMSxyPWUubGVuZ3RoO3R8fCh0PUFycmF5KHIpKTtmb3IoOysrbjxyOyl0W25dPWVbbl07cmV0dXJuIHR9KGUsTil9ZWxzZXt2YXIgTT1WZShlKSxSPU09PWN8fE09PXU7aWYoV2UoZSkpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4gZS5zbGljZSgpO3ZhciBuPW5ldyBlLmNvbnN0cnVjdG9yKGUubGVuZ3RoKTtyZXR1cm4gZS5jb3B5KG4pLG59KGUsdCk7aWYoTT09Znx8TT09aXx8UiYmIXApe2lmKEgoZSkpcmV0dXJuIHA/ZTp7fTtpZihOPWZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiBlLmNvbnN0cnVjdG9yfHx6ZShlKT97fToodD1hZShlKSxRZSh0KT9zZSh0KTp7fSk7dmFyIHR9KFI/e306ZSksIXQpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7cmV0dXJuIERlKGUsQmUoZSksdCl9KGUsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmRGUodCxLZSh0KSxlKX0oTixlKSl9ZWxzZXtpZighUFtNXSlyZXR1cm4gcD9lOnt9O049ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ZS5jb25zdHJ1Y3Rvcjtzd2l0Y2godCl7Y2FzZSBiOnJldHVybiBSZShlKTtjYXNlIGE6Y2FzZSBzOnJldHVybiBuZXcgbygrZSk7Y2FzZSB3OnJldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPXQ/UmUoZS5idWZmZXIpOmUuYnVmZmVyO3JldHVybiBuZXcgZS5jb25zdHJ1Y3RvcihuLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpfShlLHIpO2Nhc2UgXzpjYXNlIFM6Y2FzZSBFOmNhc2UgQzpjYXNlIGs6Y2FzZSBBOmNhc2UgTzpjYXNlIFQ6Y2FzZSB4OnJldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPXQ/UmUoZS5idWZmZXIpOmUuYnVmZmVyO3JldHVybiBuZXcgZS5jb25zdHJ1Y3RvcihuLGUuYnl0ZU9mZnNldCxlLmxlbmd0aCl9KGUscik7Y2FzZSBsOnJldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIHI9dD9uKCQoZSksITApOiQoZSk7cmV0dXJuIHoocixWLG5ldyBlLmNvbnN0cnVjdG9yKX0oZSxyLG4pO2Nhc2UgZDpjYXNlIGc6cmV0dXJuIG5ldyBvKGUpO2Nhc2UgaDpyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGUuY29uc3RydWN0b3IoZS5zb3VyY2UsSS5leGVjKGUpKTtyZXR1cm4gdC5sYXN0SW5kZXg9ZS5sYXN0SW5kZXgsdH0oZSk7Y2FzZSBtOnJldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIHI9dD9uKHEoZSksITApOnEoZSk7cmV0dXJuIHoocixVLG5ldyBlLmNvbnN0cnVjdG9yKX0oZSxyLG4pO2Nhc2UgeTpyZXR1cm4gaT1lLGtlP09iamVjdChrZS5jYWxsKGkpKTp7fX12YXIgaX0oZSxNLFBlLHQpfX12fHwodj1uZXcgeGUpO3ZhciBEPXYuZ2V0KGUpO2lmKEQpcmV0dXJuIEQ7aWYodi5zZXQoZSxOKSwhTCl2YXIgRj1uP2Z1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIHI9dChlKTtyZXR1cm4gWWUoZSk/cjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0tMSxyPXQubGVuZ3RoLG89ZS5sZW5ndGg7KytuPHI7KWVbbytuXT10W25dO3JldHVybiBlfShyLG4oZSkpfShlLEtlLEJlKX0oZSk6S2UoZSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPS0xLHI9ZT9lLmxlbmd0aDowOysrbjxyJiYhMSE9PXQoZVtuXSxuLGUpOyk7fShGfHxlLGZ1bmN0aW9uKG8saSl7RiYmKG89ZVtpPW9dKSxOZShOLGksUGUobyx0LG4scixpLGUsdikpfSksTn1mdW5jdGlvbiBNZShlKXtyZXR1cm4hKCFRZShlKXx8KHQ9ZSxYJiZYIGluIHQpKSYmKEdlKGUpfHxIKGUpP25lOk4pLnRlc3QoSGUoZSkpO3ZhciB0fWZ1bmN0aW9uIFJlKGUpe3ZhciB0PW5ldyBlLmNvbnN0cnVjdG9yKGUuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyBpZSh0KS5zZXQobmV3IGllKGUpKSx0fWZ1bmN0aW9uIERlKGUsdCxuLHIpe258fChuPXt9KTtmb3IodmFyIG89LTEsaT10Lmxlbmd0aDsrK288aTspe3ZhciBhPXRbb10scz1yP3IoblthXSxlW2FdLGEsbixlKTp2b2lkIDA7TmUobixhLHZvaWQgMD09PXM/ZVthXTpzKX1yZXR1cm4gbn1mdW5jdGlvbiBGZShlLHQpe3ZhciBuLHIsbz1lLl9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KHI9dHlwZW9mKG49dCkpfHwibnVtYmVyIj09cnx8InN5bWJvbCI9PXJ8fCJib29sZWFuIj09cj8iX19wcm90b19fIiE9PW46bnVsbD09PW4pP29bInN0cmluZyI9PXR5cGVvZiB0PyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gamUoZSx0KXt2YXIgbj1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfShlLHQpO3JldHVybiBNZShuKT9uOnZvaWQgMH1BZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPXZlP3ZlKG51bGwpOnt9fSxBZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmhhcyhlKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bZV19LEFlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXztpZih2ZSl7dmFyIG49dFtlXTtyZXR1cm4gbj09PXI/dm9pZCAwOm59cmV0dXJuIGVlLmNhbGwodCxlKT90W2VdOnZvaWQgMH0sQWUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiB2ZT92b2lkIDAhPT10W2VdOmVlLmNhbGwodCxlKX0sQWUucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9fZGF0YV9fW2VdPXZlJiZ2b2lkIDA9PT10P3I6dCx0aGlzfSxPZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdfSxPZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18sbj1MZSh0LGUpO3JldHVybiEobjwwKSYmKG49PXQubGVuZ3RoLTE/dC5wb3AoKTp1ZS5jYWxsKHQsbiwxKSwhMCl9LE9lLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxuPUxlKHQsZSk7cmV0dXJuIG48MD92b2lkIDA6dFtuXVsxXX0sT2UucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gTGUodGhpcy5fX2RhdGFfXyxlKT4tMX0sT2UucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19kYXRhX18scj1MZShuLGUpO3JldHVybiByPDA/bi5wdXNoKFtlLHRdKTpuW3JdWzFdPXQsdGhpc30sVGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgQWUsbWFwOm5ldyhoZXx8T2UpLHN0cmluZzpuZXcgQWV9fSxUZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3JldHVybiBGZSh0aGlzLGUpLmRlbGV0ZShlKX0sVGUucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gRmUodGhpcyxlKS5nZXQoZSl9LFRlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIEZlKHRoaXMsZSkuaGFzKGUpfSxUZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEZlKHRoaXMsZSkuc2V0KGUsdCksdGhpc30seGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgT2V9LHhlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uZGVsZXRlKGUpfSx4ZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldChlKX0seGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoZSl9LHhlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fZGF0YV9fO2lmKG4gaW5zdGFuY2VvZiBPZSl7dmFyIHI9bi5fX2RhdGFfXztpZighaGV8fHIubGVuZ3RoPDE5OSlyZXR1cm4gci5wdXNoKFtlLHRdKSx0aGlzO249dGhpcy5fX2RhdGFfXz1uZXcgVGUocil9cmV0dXJuIG4uc2V0KGUsdCksdGhpc307dmFyIEJlPWxlP1kobGUsT2JqZWN0KTpmdW5jdGlvbigpe3JldHVybltdfSxWZT1mdW5jdGlvbihlKXtyZXR1cm4gdGUuY2FsbChlKX07ZnVuY3Rpb24gVWUoZSx0KXtyZXR1cm4hISh0PW51bGw9PXQ/bzp0KSYmKCJudW1iZXIiPT10eXBlb2YgZXx8TC50ZXN0KGUpKSYmZT4tMSYmZSUxPT0wJiZlPHR9ZnVuY3Rpb24gemUoZSl7dmFyIHQ9ZSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4gZT09PSgiZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5wcm90b3R5cGV8fEspfWZ1bmN0aW9uIEhlKGUpe2lmKG51bGwhPWUpe3RyeXtyZXR1cm4gSi5jYWxsKGUpfWNhdGNoKGUpe310cnl7cmV0dXJuIGUrIiJ9Y2F0Y2goZSl7fX1yZXR1cm4iIn1mdW5jdGlvbiAkZShlLHQpe3JldHVybiBlPT09dHx8ZSE9ZSYmdCE9dH0ocGUmJlZlKG5ldyBwZShuZXcgQXJyYXlCdWZmZXIoMSkpKSE9d3x8aGUmJlZlKG5ldyBoZSkhPWx8fG1lJiZWZShtZS5yZXNvbHZlKCkpIT1wfHxnZSYmVmUobmV3IGdlKSE9bXx8eWUmJlZlKG5ldyB5ZSkhPXYpJiYoVmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGUuY2FsbChlKSxuPXQ9PWY/ZS5jb25zdHJ1Y3Rvcjp2b2lkIDAscj1uP0hlKG4pOnZvaWQgMDtpZihyKXN3aXRjaChyKXtjYXNlIGJlOnJldHVybiB3O2Nhc2Ugd2U6cmV0dXJuIGw7Y2FzZSBfZTpyZXR1cm4gcDtjYXNlIFNlOnJldHVybiBtO2Nhc2UgRWU6cmV0dXJuIHZ9cmV0dXJuIHR9KTt2YXIgWWU9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiBxZShlKXtyZXR1cm4gbnVsbCE9ZSYmZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlJiZlPi0xJiZlJTE9PTAmJmU8PW99KGUubGVuZ3RoKSYmIUdlKGUpfXZhciBXZT1kZXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX07ZnVuY3Rpb24gR2UoZSl7dmFyIHQ9UWUoZSk/dGUuY2FsbChlKToiIjtyZXR1cm4gdD09Y3x8dD09dX1mdW5jdGlvbiBRZShlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4hIWUmJigib2JqZWN0Ij09dHx8ImZ1bmN0aW9uIj09dCl9ZnVuY3Rpb24gS2UoZSl7cmV0dXJuIHFlKGUpP0llKGUpOmZ1bmN0aW9uKGUpe2lmKCF6ZShlKSlyZXR1cm4gZmUoZSk7dmFyIHQ9W107Zm9yKHZhciBuIGluIE9iamVjdChlKSllZS5jYWxsKGUsbikmJiJjb25zdHJ1Y3RvciIhPW4mJnQucHVzaChuKTtyZXR1cm4gdH0oZSl9ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBQZShlLCEwLCEwKX19LDkyMTY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7T3c6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sWjk6ZnVuY3Rpb24oKXtyZXR1cm4gYX0scHE6ZnVuY3Rpb24oKXtyZXR1cm4gc30sdkY6ZnVuY3Rpb24oKXtyZXR1cm4gY319KTt2YXIgcj1uKDMwNDgpLG89bigzMjI1KTtjb25zdCBpPVsiZGVidWciLCJpbmZvIiwid2FybiIsImVycm9yIiwibG9nIiwiYXNzZXJ0IiwidHJhY2UiXSxhPXt9O2Z1bmN0aW9uIHMoZSl7aWYoISgiY29uc29sZSJpbiBvLk8pKXJldHVybiBlKCk7Y29uc3QgdD1vLk8uY29uc29sZSxuPXt9LHI9T2JqZWN0LmtleXMoYSk7ci5mb3JFYWNoKGU9Pntjb25zdCByPWFbZV07bltlXT10W2VdLHRbZV09cn0pO3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7ci5mb3JFYWNoKGU9Pnt0W2VdPW5bZV19KX19Y29uc3QgYz0oMCxvLkIpKCJsb2dnZXIiLGZ1bmN0aW9uKCl7bGV0IGU9ITE7Y29uc3QgdD17ZW5hYmxlOigpPT57ZT0hMH0sZGlzYWJsZTooKT0+e2U9ITF9LGlzRW5hYmxlZDooKT0+ZX07cmV0dXJuIHIuVD9pLmZvckVhY2gobj0+e3Rbbl09ZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheSh0KSxpPTA7aTx0O2krKylyW2ldPWFyZ3VtZW50c1tpXTtlJiZzKCgpPT57by5PLmNvbnNvbGVbbl0oYFNlbnRyeSBMb2dnZXIgWyR7bn1dOmAsLi4ucil9KX19KTppLmZvckVhY2goZT0+e3RbZV09KCk9Pnt9fSksdH0pfSw5MzI4OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzOTMyKSxvPW4oNzI0MSksaT1uKDk2NTEpLGE9big4NzI3KSxzPW4oNjY3NCksYz1uKDM0ODkpLHU9bigxMjEwKSxsPW4oOTc5KSxkPW4oOTE0NCksZj1uKDY0NzEpLHA9big1NDMwKSxoPW4oODQ2MSksbT1uKDg0OTApLGc9big0MjY2KSx5PW4oMzQxMyksdj1uKDM1NyksYj1uKDE2MzcpLHc9U3RyaW5nLF89bygiSlNPTiIsInN0cmluZ2lmeSIpLFM9cygvLi8uZXhlYyksRT1zKCIiLmNoYXJBdCksQz1zKCIiLmNoYXJDb2RlQXQpLGs9cygiIi5yZXBsYWNlKSxBPXMoIiIuc2xpY2UpLE89cyhbXS5wdXNoKSxUPXMoMS4xLnRvU3RyaW5nKSx4PS9bXHVEODAwLVx1REZGRl0vZyxJPS9eW1x1RDgwMC1cdURCRkZdJC8sTj0vXltcdURDMDAtXHVERkZGXSQvLEw9eSgpLFA9TC5sZW5ndGgsTT0hdnx8YyhmdW5jdGlvbigpe3ZhciBlPW8oIlN5bWJvbCIpKCJzdHJpbmdpZnkgZGV0ZWN0aW9uIik7cmV0dXJuIltudWxsXSIhPT1fKFtlXSl8fCJ7fSIhPT1fKHthOmV9KXx8Int9IiE9PV8oT2JqZWN0KGUpKX0pLFI9YyhmdW5jdGlvbigpe3JldHVybiciXFx1ZGYwNlxcdWQ4MzQiJyE9PV8oIlx1ZGYwNlx1ZDgzNCIpfHwnIlxcdWRlYWQiJyE9PV8oIlx1ZGVhZCIpfSksRD1NP2Z1bmN0aW9uKGUsdCl7dmFyIG49bShhcmd1bWVudHMpLHI9aih0KTtpZihsKHIpfHx2b2lkIDAhPT1lJiYhZihlKSlyZXR1cm4gblsxXT1mdW5jdGlvbihlLHQpe2lmKGwocikmJih0PWEocix0aGlzLHcoZSksdCkpLCFmKHQpKXJldHVybiB0fSxpKF8sbnVsbCxuKX06XyxGPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1FKG4sdC0xKSxvPUUobix0KzEpO3JldHVybiBTKEksZSkmJiFTKE4sbyl8fFMoTixlKSYmIVMoSSxyKT8iXFx1IitUKEMoZSwwKSwxNik6ZX0saj1mdW5jdGlvbihlKXtpZihsKGUpKXJldHVybiBlO2lmKHUoZSkpe2Zvcih2YXIgdD1lLmxlbmd0aCxuPVtdLHI9MDtyPHQ7cisrKXt2YXIgbz1lW3JdOyJzdHJpbmciPT10eXBlb2Ygbz9PKG4sbyk6Im51bWJlciIhPXR5cGVvZiBvJiYiTnVtYmVyIiE9PXAobykmJiJTdHJpbmciIT09cChvKXx8TyhuLGgobykpfXZhciBpPW4ubGVuZ3RoLGE9ITA7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoYSlyZXR1cm4gYT0hMSx0O2lmKHUodGhpcykpcmV0dXJuIHQ7Zm9yKHZhciByPTA7cjxpO3IrKylpZihuW3JdPT09ZSlyZXR1cm4gdH19fTtfJiZyKHt0YXJnZXQ6IkpTT04iLHN0YXQ6ITAsYXJpdHk6Myxmb3JjZWQ6TXx8Unx8IWJ9LHtzdHJpbmdpZnk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWoodCksbz1bXSxpPUQoZSxmdW5jdGlvbihlLHQpe3ZhciBuPWwocik/YShyLHRoaXMsdyhlKSx0KTp0O3JldHVybiFiJiZkKG4pP0wrKE8obyxuLnJhd0pTT04pLTEpOm59LG4pO2lmKCJzdHJpbmciIT10eXBlb2YgaSlyZXR1cm4gaTtpZihSJiYoaT1rKGkseCxGKSksYilyZXR1cm4gaTtmb3IodmFyIHM9IiIsYz1pLmxlbmd0aCx1PTA7dTxjO3UrKyl7dmFyIGY9RShpLHUpO2lmKCciJz09PWYpe3ZhciBwPWcoaSwrK3UpLmVuZC0xLGg9QShpLHUscCk7cys9QShoLDAsUCk9PT1MP29bQShoLFApXTonIicraCsnIicsdT1wfWVsc2Ugcys9Zn1yZXR1cm4gc319KX0sOTMzNDpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1uKDgxOTApfSw5MzM1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzOTc3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgbz1lLmxlbmd0aC0xO28+PTA7by0tKWlmKHZvaWQgMCE9PWVbb10pdHJ5e249cihlW29dLml0ZXJhdG9yLHQsbil9Y2F0Y2goZSl7dD0idGhyb3ciLG49ZX1pZigidGhyb3ciPT09dCl0aHJvdyBuO3JldHVybiBufX0sOTQ0MDpmdW5jdGlvbihlLHQsbil7dmFyIHIsbzsobz1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT17REFZOjg2NGU1LEhPVVI6MzZlNSxNSU5VVEU6NmU0LFNFQ09ORDoxZTMsQkFTRUxJTkVfWUVBUjoyMDE0LE1BWF9TQ09SRTo4NjRlNixBTUJJR1VJVElFUzp7IkFtZXJpY2EvRGVudmVyIjpbIkFtZXJpY2EvTWF6YXRsYW4iXSwiRXVyb3BlL0xvbmRvbiI6WyJBZnJpY2EvQ2FzYWJsYW5jYSJdLCJBbWVyaWNhL0NoaWNhZ28iOlsiQW1lcmljYS9NZXhpY29fQ2l0eSJdLCJBbWVyaWNhL0FzdW5jaW9uIjpbIkFtZXJpY2EvQ2FtcG9fR3JhbmRlIiwiQW1lcmljYS9TYW50aWFnbyJdLCJBbWVyaWNhL01vbnRldmlkZW8iOlsiQW1lcmljYS9TYW9fUGF1bG8iLCJBbWVyaWNhL1NhbnRpYWdvIl0sIkFzaWEvQmVpcnV0IjpbIkFzaWEvQW1tYW4iLCJBc2lhL0plcnVzYWxlbSIsIkV1cm9wZS9IZWxzaW5raSIsIkFzaWEvRGFtYXNjdXMiLCJBZnJpY2EvQ2Fpcm8iLCJBc2lhL0dhemEiLCJFdXJvcGUvTWluc2siXSwiUGFjaWZpYy9BdWNrbGFuZCI6WyJQYWNpZmljL0ZpamkiXSwiQW1lcmljYS9Mb3NfQW5nZWxlcyI6WyJBbWVyaWNhL1NhbnRhX0lzYWJlbCJdLCJBbWVyaWNhL05ld19Zb3JrIjpbIkFtZXJpY2EvSGF2YW5hIl0sIkFtZXJpY2EvSGFsaWZheCI6WyJBbWVyaWNhL0dvb3NlX0JheSJdLCJBbWVyaWNhL0dvZHRoYWIiOlsiQW1lcmljYS9NaXF1ZWxvbiJdLCJBc2lhL0R1YmFpIjpbIkFzaWEvWWVyZXZhbiJdLCJBc2lhL0pha2FydGEiOlsiQXNpYS9LcmFzbm95YXJzayJdLCJBc2lhL1NoYW5naGFpIjpbIkFzaWEvSXJrdXRzayIsIkF1c3RyYWxpYS9QZXJ0aCJdLCJBdXN0cmFsaWEvU3lkbmV5IjpbIkF1c3RyYWxpYS9Mb3JkX0hvd2UiXSwiQXNpYS9Ub2t5byI6WyJBc2lhL1lha3V0c2siXSwiQXNpYS9EaGFrYSI6WyJBc2lhL09tc2siXSwiQXNpYS9CYWt1IjpbIkFzaWEvWWVyZXZhbiJdLCJBdXN0cmFsaWEvQnJpc2JhbmUiOlsiQXNpYS9WbGFkaXZvc3RvayJdLCJQYWNpZmljL05vdW1lYSI6WyJBc2lhL1ZsYWRpdm9zdG9rIl0sIlBhY2lmaWMvTWFqdXJvIjpbIkFzaWEvS2FtY2hhdGthIiwiUGFjaWZpYy9GaWppIl0sIlBhY2lmaWMvVG9uZ2F0YXB1IjpbIlBhY2lmaWMvQXBpYSJdLCJBc2lhL0JhZ2hkYWQiOlsiRXVyb3BlL01pbnNrIiwiRXVyb3BlL01vc2NvdyJdLCJBc2lhL0thcmFjaGkiOlsiQXNpYS9ZZWthdGVyaW5idXJnIl0sIkFmcmljYS9Kb2hhbm5lc2J1cmciOlsiQXNpYS9HYXphIiwiQWZyaWNhL0NhaXJvIl19fSx0PWZ1bmN0aW9uKGUpe3ZhciB0PS1lLmdldFRpbWV6b25lT2Zmc2V0KCk7cmV0dXJuIG51bGwhPT10P3Q6MH0sbj1mdW5jdGlvbigpe3ZhciBuPXQobmV3IERhdGUoZS5CQVNFTElORV9ZRUFSLDAsMikpLHI9dChuZXcgRGF0ZShlLkJBU0VMSU5FX1lFQVIsNSwyKSksbz1uLXI7cmV0dXJuIG88MD9uKyIsMSI6bz4wP3IrIiwxLHMiOm4rIiwwIn0scj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IERhdGUoZSwwLDEsMCwwLDEsMCkuZ2V0VGltZSgpLG49bmV3IERhdGUoZSwxMiwzMSwyMyw1OSw1OSkuZ2V0VGltZSgpLHI9dCxvPW5ldyBEYXRlKHIpLmdldFRpbWV6b25lT2Zmc2V0KCksYT1udWxsLHM9bnVsbDtyPG4tODY0ZTU7KXt2YXIgYz1uZXcgRGF0ZShyKSx1PWMuZ2V0VGltZXpvbmVPZmZzZXQoKTt1IT09byYmKHU8byYmKGE9YyksdT5vJiYocz1jKSxvPXUpLHIrPTg2NGU1fXJldHVybiEoIWF8fCFzKSYme3M6aShhKS5nZXRUaW1lKCksZTppKHMpLmdldFRpbWUoKX19LGk9ZnVuY3Rpb24gdChuLHIsbyl7dm9pZCAwPT09ciYmKHI9ZS5EQVksbz1lLkhPVVIpO2Zvcih2YXIgaT1uZXcgRGF0ZShuLmdldFRpbWUoKS1yKS5nZXRUaW1lKCksYT1uLmdldFRpbWUoKStyLHM9bmV3IERhdGUoaSkuZ2V0VGltZXpvbmVPZmZzZXQoKSxjPWksdT1udWxsO2M8YS1vOyl7dmFyIGw9bmV3IERhdGUoYyk7aWYobC5nZXRUaW1lem9uZU9mZnNldCgpIT09cyl7dT1sO2JyZWFrfWMrPW99cmV0dXJuIHI9PT1lLkRBWT90KHUsZS5IT1VSLGUuTUlOVVRFKTpyPT09ZS5IT1VSP3QodSxlLk1JTlVURSxlLlNFQ09ORCk6dX0sYT1mdW5jdGlvbih0KXt2YXIgbj1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxvLm9sc29uLmRzdF9ydWxlcy55ZWFycy5sZW5ndGg7dCsrKXt2YXIgbj1yKG8ub2xzb24uZHN0X3J1bGVzLnllYXJzW3RdKTtlLnB1c2gobil9cmV0dXJuIGV9KCksaT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylpZighMSE9PWVbdF0pcmV0dXJuITA7cmV0dXJuITF9KG4pO3JldHVybiBpP2Z1bmN0aW9uKHQsbil7Zm9yKHZhciByPWZ1bmN0aW9uKHIpe2Zvcih2YXIgbz0wLGk9MDtpPHQubGVuZ3RoO2krKylpZihyLnJ1bGVzW2ldJiZ0W2ldKXtpZighKHRbaV0ucz49ci5ydWxlc1tpXS5zJiZ0W2ldLmU8PXIucnVsZXNbaV0uZSkpe289Ik4vQSI7YnJlYWt9aWYobz0wLG8rPU1hdGguYWJzKHRbaV0ucy1yLnJ1bGVzW2ldLnMpLChvKz1NYXRoLmFicyhyLnJ1bGVzW2ldLmUtdFtpXS5lKSk+ZS5NQVhfU0NPUkUpe289Ik4vQSI7YnJlYWt9fXJldHVybiBvPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCJOL0EiIT09bilyZXR1cm4gbjtpZigiQXNpYS9CZWlydXQiPT09dCl7aWYoIkFmcmljYS9DYWlybyI9PT1yLm5hbWUmJjEzOTgzNzY4ZTU9PT1lWzZdLnMmJjE0MTE2Nzg4ZTU9PT1lWzZdLmUpcmV0dXJuIDA7aWYoIkFzaWEvSmVydXNhbGVtIj09PXIubmFtZSYmMTM5NTk2NDhlNT09PWVbNl0ucyYmMTQxMTg1ODhlNT09PWVbNl0uZSlyZXR1cm4gMH1lbHNlIGlmKCJBbWVyaWNhL1NhbnRpYWdvIj09PXQpe2lmKCJBbWVyaWNhL0FzdW5jaW9uIj09PXIubmFtZSYmMTQxMjQ4MTZlNT09PWVbNl0ucyYmMTM5NzM1OGU2PT09ZVs2XS5lKXJldHVybiAwO2lmKCJBbWVyaWNhL0NhbXBvX0dyYW5kZSI9PT1yLm5hbWUmJjE0MTM2OTEyZTU9PT1lWzZdLnMmJjEzOTI1MTk2ZTU9PT1lWzZdLmUpcmV0dXJuIDB9ZWxzZSBpZigiQW1lcmljYS9Nb250ZXZpZGVvIj09PXQpe2lmKCJBbWVyaWNhL1Nhb19QYXVsbyI9PT1yLm5hbWUmJjE0MTM2ODc2ZTU9PT1lWzZdLnMmJjEzOTI1MTZlNj09PWVbNl0uZSlyZXR1cm4gMH1lbHNlIGlmKCJQYWNpZmljL0F1Y2tsYW5kIj09PXQmJiJQYWNpZmljL0ZpamkiPT09ci5uYW1lJiYxNDE0MjQ1NmU1PT09ZVs2XS5zJiYxMzk2MTAxNmU1PT09ZVs2XS5lKXJldHVybiAwO3JldHVybiBufSh0LG4sbyxyKSxvfSxpPXt9LGE9by5vbHNvbi5kc3RfcnVsZXMuem9uZXMscz1hLmxlbmd0aCxjPWUuQU1CSUdVSVRJRVNbbl0sdT0wO3U8czt1Kyspe3ZhciBsPWFbdV0sZD1yKGFbdV0pOyJOL0EiIT09ZCYmKGlbbC5uYW1lXT1kKX1mb3IodmFyIGYgaW4gaSlpZihpLmhhc093blByb3BlcnR5KGYpKWZvcih2YXIgcD0wO3A8Yy5sZW5ndGg7cCsrKWlmKGNbcF09PT1mKXJldHVybiBmO3JldHVybiBufShuLHQpOnR9O3JldHVybntkZXRlcm1pbmU6ZnVuY3Rpb24oKXt2YXIgcj1mdW5jdGlvbigpe3ZhciBlLHQ7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBJbnRsJiZ2b2lkIDAhPT1JbnRsLkRhdGVUaW1lRm9ybWF0JiZ2b2lkIDAhPT0oZT1JbnRsLkRhdGVUaW1lRm9ybWF0KCkpJiZ2b2lkIDAhPT1lLnJlc29sdmVkT3B0aW9ucylyZXR1cm4odD1lLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lKSYmKHQuaW5kZXhPZigiLyIpPi0xfHwiVVRDIj09PXQpJiYwIT10LmluZGV4T2YoIkV0YyIpP3Q6dm9pZCAwfSgpO3JldHVybiByfHwocj1vLm9sc29uLnRpbWV6b25lc1tuKCldLHZvaWQgMCE9PWUuQU1CSUdVSVRJRVNbcl0mJihyPWEocikpKSx7bmFtZTpmdW5jdGlvbigpe3JldHVybiByfSxzdGRUaW1lem9uZU9mZnNldDpmdW5jdGlvbigpe3JldHVybi1uKCkuc3BsaXQoIiwiKVswXX0sdGltZXpvbmVPZmZzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4tdChuZXcgRGF0ZSl9fX19fSgpKS5vbHNvbj1vLm9sc29ufHx7fSxvLm9sc29uLnRpbWV6b25lcz17Ii03MjAsMCI6IkV0Yy9HTVQrMTIiLCItNjYwLDAiOiJQYWNpZmljL1BhZ29fUGFnbyIsIi02NjAsMSxzIjoiUGFjaWZpYy9BcGlhIiwiLTYwMCwxIjoiQW1lcmljYS9BZGFrIiwiLTYwMCwwIjoiUGFjaWZpYy9Ib25vbHVsdSIsIi01NzAsMCI6IlBhY2lmaWMvTWFycXVlc2FzIiwiLTU0MCwwIjoiUGFjaWZpYy9HYW1iaWVyIiwiLTU0MCwxIjoiQW1lcmljYS9BbmNob3JhZ2UiLCItNDgwLDEiOiJBbWVyaWNhL0xvc19BbmdlbGVzIiwiLTQ4MCwwIjoiUGFjaWZpYy9QaXRjYWlybiIsIi00MjAsMCI6IkFtZXJpY2EvUGhvZW5peCIsIi00MjAsMSI6IkFtZXJpY2EvRGVudmVyIiwiLTM2MCwwIjoiQW1lcmljYS9HdWF0ZW1hbGEiLCItMzYwLDEiOiJBbWVyaWNhL0NoaWNhZ28iLCItMzYwLDEscyI6IlBhY2lmaWMvRWFzdGVyIiwiLTMwMCwwIjoiQW1lcmljYS9Cb2dvdGEiLCItMzAwLDEiOiJBbWVyaWNhL05ld19Zb3JrIiwiLTI3MCwwIjoiQW1lcmljYS9DYXJhY2FzIiwiLTI0MCwxIjoiQW1lcmljYS9IYWxpZmF4IiwiLTI0MCwwIjoiQW1lcmljYS9TYW50b19Eb21pbmdvIiwiLTI0MCwxLHMiOiJBbWVyaWNhL0FzdW5jaW9uIiwiLTIxMCwxIjoiQW1lcmljYS9TdF9Kb2hucyIsIi0xODAsMSI6IkFtZXJpY2EvR29kdGhhYiIsIi0xODAsMCI6IkFtZXJpY2EvQXJnZW50aW5hL0J1ZW5vc19BaXJlcyIsIi0xODAsMSxzIjoiQW1lcmljYS9Nb250ZXZpZGVvIiwiLTEyMCwwIjoiQW1lcmljYS9Ob3JvbmhhIiwiLTEyMCwxIjoiQW1lcmljYS9Ob3JvbmhhIiwiLTYwLDEiOiJBdGxhbnRpYy9Bem9yZXMiLCItNjAsMCI6IkF0bGFudGljL0NhcGVfVmVyZGUiLCIwLDAiOiJVVEMiLCIwLDEiOiJFdXJvcGUvTG9uZG9uIiwiNjAsMSI6IkV1cm9wZS9CZXJsaW4iLCI2MCwwIjoiQWZyaWNhL0xhZ29zIiwiNjAsMSxzIjoiQWZyaWNhL1dpbmRob2VrIiwiMTIwLDEiOiJBc2lhL0JlaXJ1dCIsIjEyMCwwIjoiQWZyaWNhL0pvaGFubmVzYnVyZyIsIjE4MCwwIjoiQXNpYS9CYWdoZGFkIiwiMTgwLDEiOiJFdXJvcGUvTW9zY293IiwiMjEwLDEiOiJBc2lhL1RlaHJhbiIsIjI0MCwwIjoiQXNpYS9EdWJhaSIsIjI0MCwxIjoiQXNpYS9CYWt1IiwiMjcwLDAiOiJBc2lhL0thYnVsIiwiMzAwLDEiOiJBc2lhL1lla2F0ZXJpbmJ1cmciLCIzMDAsMCI6IkFzaWEvS2FyYWNoaSIsIjMzMCwwIjoiQXNpYS9Lb2xrYXRhIiwiMzQ1LDAiOiJBc2lhL0thdGhtYW5kdSIsIjM2MCwwIjoiQXNpYS9EaGFrYSIsIjM2MCwxIjoiQXNpYS9PbXNrIiwiMzkwLDAiOiJBc2lhL1Jhbmdvb24iLCI0MjAsMSI6IkFzaWEvS3Jhc25veWFyc2siLCI0MjAsMCI6IkFzaWEvSmFrYXJ0YSIsIjQ4MCwwIjoiQXNpYS9TaGFuZ2hhaSIsIjQ4MCwxIjoiQXNpYS9Jcmt1dHNrIiwiNTI1LDAiOiJBdXN0cmFsaWEvRXVjbGEiLCI1MjUsMSxzIjoiQXVzdHJhbGlhL0V1Y2xhIiwiNTQwLDEiOiJBc2lhL1lha3V0c2siLCI1NDAsMCI6IkFzaWEvVG9reW8iLCI1NzAsMCI6IkF1c3RyYWxpYS9EYXJ3aW4iLCI1NzAsMSxzIjoiQXVzdHJhbGlhL0FkZWxhaWRlIiwiNjAwLDAiOiJBdXN0cmFsaWEvQnJpc2JhbmUiLCI2MDAsMSI6IkFzaWEvVmxhZGl2b3N0b2siLCI2MDAsMSxzIjoiQXVzdHJhbGlhL1N5ZG5leSIsIjYzMCwxLHMiOiJBdXN0cmFsaWEvTG9yZF9Ib3dlIiwiNjYwLDEiOiJBc2lhL0thbWNoYXRrYSIsIjY2MCwwIjoiUGFjaWZpYy9Ob3VtZWEiLCI2OTAsMCI6IlBhY2lmaWMvTm9yZm9sayIsIjcyMCwxLHMiOiJQYWNpZmljL0F1Y2tsYW5kIiwiNzIwLDAiOiJQYWNpZmljL01hanVybyIsIjc2NSwxLHMiOiJQYWNpZmljL0NoYXRoYW0iLCI3ODAsMCI6IlBhY2lmaWMvVG9uZ2F0YXB1IiwiNzgwLDEscyI6IlBhY2lmaWMvQXBpYSIsIjg0MCwwIjoiUGFjaWZpYy9LaXJpdGltYXRpIn0sby5vbHNvbi5kc3RfcnVsZXM9e3llYXJzOlsyMDA4LDIwMDksMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0XSx6b25lczpbe25hbWU6IkFmcmljYS9DYWlybyIscnVsZXM6W3tlOjEyMTk5NTcyZTUsczoxMjA5MDc0NGU1fSx7ZToxMjUwODAyZTYsczoxMjQwNTI0ZTZ9LHtlOjEyODU4ODA0ZTUsczoxMjg0MDY5NmU1fSwhMSwhMSwhMSx7ZToxNDExNjc4OGU1LHM6MTQwNjg0NGU2fV19LHtuYW1lOiJBZnJpY2EvQ2FzYWJsYW5jYSIscnVsZXM6W3tlOjEyMjAyMjM2ZTUsczoxMjEyMjc4NGU1fSx7ZToxMjUwODA5MmU1LHM6MTI0MzgxNDRlNX0se2U6MTI4MTIyMmU2LHM6MTI3Mjc1ODRlNX0se2U6MTMxMjA2NjhlNSxzOjEzMDE3ODg4ZTV9LHtlOjEzNDg5NzA0ZTUsczoxMzQ1NDI4ZTZ9LHtlOjEzODI4MzkyZTUsczoxMzc2MWU4fSx7ZToxNDE0Mjg4OGU1LHM6MTQwNjk0NDhlNX1dfSx7bmFtZToiQW1lcmljYS9Bc3VuY2lvbiIscnVsZXM6W3tlOjEyMDUwMzE2ZTUsczoxMjI0Mzg4OGU1fSx7ZToxMjM2NDgxMmU1LHM6MTI1NTgzODRlNX0se2U6MTI3MDk1NDhlNSxzOjEyODYwNzg0ZTV9LHtlOjEzMDI0MDQ0ZTUsczoxMzE3NTI4ZTZ9LHtlOjEzMzM4NTRlNixzOjEzNDk1ODI0ZTV9LHtlOjEzNjQwOTRlNixzOjEzODEwMzJlNn0se2U6MTM5NTU0MzZlNSxzOjE0MTI0ODE2ZTV9XX0se25hbWU6IkFtZXJpY2EvQ2FtcG9fR3JhbmRlIixydWxlczpbe2U6MTIwMzIxNzJlNSxzOjEyMjQzODg4ZTV9LHtlOjEyMzQ2NjY4ZTUsczoxMjU1ODM4NGU1fSx7ZToxMjY2NzIxMmU1LHM6MTI4NzI4OGU2fSx7ZToxMjk4MTcwOGU1LHM6MTMxODczNzZlNX0se2U6MTMzMDIyNTJlNSxzOjEzNTA3OTJlNn0se2U6MTM2MTA3ZTcsczoxMzgyMjQxNmU1fSx7ZToxMzkyNTE5NmU1LHM6MTQxMzY5MTJlNX1dfSx7bmFtZToiQW1lcmljYS9Hb29zZV9CYXkiLHJ1bGVzOlt7ZToxMjI1NTk0ODZlNCxzOjEyMDUwMzUyNmU0fSx7ZToxMjU3MDQ0NDZlNCxzOjEyMzY0ODQ4NmU0fSx7ZToxMjg5MDk4ODZlNCxzOjEyNjg1MzkyNmU0fSx7ZToxMzIwNTU1NmU1LHM6MTI5OTk4ODg2ZTR9LHtlOjEzNTIwMDUyZTUsczoxMzMxNDQ1NmU1fSx7ZToxMzgzNDU0OGU1LHM6MTM2Mjg5NTJlNX0se2U6MTQxNDkwNDRlNSxzOjEzOTQzNDQ4ZTV9XX0se25hbWU6IkFtZXJpY2EvSGF2YW5hIixydWxlczpbe2U6MTIyNDk5NzJlNSxzOjEyMDU2NDM2ZTV9LHtlOjEyNTY0NDY4ZTUsczoxMjM2NDg4NGU1fSx7ZToxMjg4NTAxMmU1LHM6MTI2ODU0MjhlNX0se2U6MTMyMTE2MDRlNSxzOjEzMDA1OTcyZTV9LHtlOjEzNTIwMDUyZTUsczoxMzMzMjU2NGU1fSx7ZToxMzgzNDU0OGU1LHM6MTM2Mjg5MTZlNX0se2U6MTQxNDkwNDRlNSxzOjEzOTQzNDEyZTV9XX0se25hbWU6IkFtZXJpY2EvTWF6YXRsYW4iLHJ1bGVzOlt7ZToxMjI1MDA4ZTYsczoxMjA3NDcyNGU1fSx7ZToxMjU2NDU3NmU1LHM6MTIzODkyMmU2fSx7ZToxMjg4NTEyZTYsczoxMjcwMzcxNmU1fSx7ZToxMzE5OTYxNmU1LHM6MTMwMTgyMTJlNX0se2U6MTM1MTQxMTJlNSxzOjEzMzMyNzA4ZTV9LHtlOjEzODI4NjA4ZTUsczoxMzY1MzI1MmU1fSx7ZToxNDE0MzEwNGU1LHM6MTM5Njc3NDhlNX1dfSx7bmFtZToiQW1lcmljYS9NZXhpY29fQ2l0eSIscnVsZXM6W3tlOjEyMjUwMDQ0ZTUsczoxMjA3NDY4OGU1fSx7ZToxMjU2NDU0ZTYsczoxMjM4OTE4NGU1fSx7ZToxMjg4NTA4NGU1LHM6MTI3MDM2OGU2fSx7ZToxMzE5OTU4ZTYsczoxMzAxODE3NmU1fSx7ZToxMzUxNDA3NmU1LHM6MTMzMzI2NzJlNX0se2U6MTM4Mjg1NzJlNSxzOjEzNjUzMjE2ZTV9LHtlOjE0MTQzMDY4ZTUsczoxMzk2NzcxMmU1fV19LHtuYW1lOiJBbWVyaWNhL01pcXVlbG9uIixydWxlczpbe2U6MTIyNTU5ODRlNSxzOjEyMDUwMzg4ZTV9LHtlOjEyNTcwNDhlNixzOjEyMzY0ODg0ZTV9LHtlOjEyODkxMDI0ZTUsczoxMjY4NTQyOGU1fSx7ZToxMzIwNTUyZTYsczoxMjk5OTkyNGU1fSx7ZToxMzUyMDAxNmU1LHM6MTMzMTQ0MmU2fSx7ZToxMzgzNDUxMmU1LHM6MTM2Mjg5MTZlNX0se2U6MTQxNDkwMDhlNSxzOjEzOTQzNDEyZTV9XX0se25hbWU6IkFtZXJpY2EvU2FudGFfSXNhYmVsIixydWxlczpbe2U6MTIyNTAxMTZlNSxzOjEyMDc0NzZlNn0se2U6MTI1NjQ2MTJlNSxzOjEyMzg5MjU2ZTV9LHtlOjEyODg1MTU2ZTUsczoxMjcwMzc1MmU1fSx7ZToxMzE5OTY1MmU1LHM6MTMwMTgyNDhlNX0se2U6MTM1MTQxNDhlNSxzOjEzMzMyNzQ0ZTV9LHtlOjEzODI4NjQ0ZTUsczoxMzY1MzI4OGU1fSx7ZToxNDE0MzE0ZTYsczoxMzk2Nzc4NGU1fV19LHtuYW1lOiJBbWVyaWNhL1NhbnRpYWdvIixydWxlczpbe2U6MTIwNjg0NmU2LHM6MTIyMzc4NGU2fSx7ZToxMjM3MDg2ZTYsczoxMjU1MjMzNmU1fSx7ZToxMjcwMzVlNyxzOjEyODY2ODMyZTV9LHtlOjEzMDQ4MjM2ZTUsczoxMzEzODk5MmU1fSx7ZToxMzM1NjY4NGU1LHM6MTM0NjU1ODRlNX0se2U6MTM2NzExOGU2LHM6MTM3ODYxMjhlNX0se2U6MTM5ODU2NzZlNSxzOjE0MTAwNjI0ZTV9XX0se25hbWU6IkFtZXJpY2EvU2FvX1BhdWxvIixydWxlczpbe2U6MTIwMzIxMzZlNSxzOjEyMjQzODUyZTV9LHtlOjEyMzQ2NjMyZTUsczoxMjU1ODM0OGU1fSx7ZToxMjY2NzE3NmU1LHM6MTI4NzI4NDRlNX0se2U6MTI5ODE2NzJlNSxzOjEzMTg3MzRlNn0se2U6MTMzMDIyMTZlNSxzOjEzNTA3ODg0ZTV9LHtlOjEzNjEwNjY0ZTUsczoxMzgyMjM4ZTZ9LHtlOjEzOTI1MTZlNixzOjE0MTM2ODc2ZTV9XX0se25hbWU6IkFzaWEvQW1tYW4iLHJ1bGVzOlt7ZToxMjI1NDA0ZTYsczoxMjA2NjU1MmU1fSx7ZToxMjU2ODUzNmU1LHM6MTIzODEwNDhlNX0se2U6MTI4ODMwMzJlNSxzOjEyNjk1NTQ0ZTV9LHtlOjEzMTk3NTI4ZTUsczoxMzAxNjA4OGU1fSwhMSwhMSx7ZToxNDE0NzA2NGU1LHM6MTM5NTk1NzZlNX1dfSx7bmFtZToiQXNpYS9EYW1hc2N1cyIscnVsZXM6W3tlOjEyMjU0ODY4ZTUsczoxMjA3MjZlN30se2U6MTI1Njg1ZTcsczoxMjM4MTA0OGU1fSx7ZToxMjg4Mjk5NmU1LHM6MTI3MDE1OTJlNX0se2U6MTMxOTc0OTJlNSxzOjEzMDE2MDg4ZTV9LHtlOjEzNTExOTg4ZTUsczoxMzMzMDU4NGU1fSx7ZToxMzgyNjQ4NGU1LHM6MTM2NDUwOGU2fSx7ZToxNDE0NzAyOGU1LHM6MTM5NTk1NzZlNX1dfSx7bmFtZToiQXNpYS9EdWJhaSIscnVsZXM6WyExLCExLCExLCExLCExLCExLCExXX0se25hbWU6IkFzaWEvR2F6YSIscnVsZXM6W3tlOjEyMTk5NTcyZTUsczoxMjA2NjU1MmU1fSx7ZToxMjUyMDE1MmU1LHM6MTIzODEwNDhlNX0se2U6MTI4MTQ3NGU2LHM6MTI2OTY0MDg2ZTR9LHtlOjEzMTIxNDZlNixzOjEzMDE2MDg4NmU0fSx7ZToxMzQ4MTc4NGU1LHM6MTMzMzA1ODRlNX0se2U6MTM4MDIyOTJlNSxzOjEzNjQ1MDhlNn0se2U6MTQxNDA5OGU2LHM6MTM5NTk1NzZlNX1dfSx7bmFtZToiQXNpYS9Jcmt1dHNrIixydWxlczpbe2U6MTIyNDk1NzZlNSxzOjEyMDY4MTM2ZTV9LHtlOjEyNTY0MDcyZTUsczoxMjM4MjYzMmU1fSx7ZToxMjg4NDYxNmU1LHM6MTI2OTcxMjhlNX0sITEsITEsITEsITFdfSx7bmFtZToiQXNpYS9KZXJ1c2FsZW0iLHJ1bGVzOlt7ZToxMjIzMTYxMmU1LHM6MTIwNjY2MjRlNX0se2U6MTI1NDAwNmU2LHM6MTIzODExMmU2fSx7ZToxMjg0MjQ2ZTYsczoxMjY5NTYxNmU1fSx7ZToxMzE3NTFlNyxzOjEzMDE2MTZlNn0se2U6MTM0ODM1NDhlNSxzOjEzMzMwNjU2ZTV9LHtlOjEzODI4Mjg0ZTUsczoxMzY0NTE1MmU1fSx7ZToxNDE0Mjc4ZTYsczoxMzk1OTY0OGU1fV19LHtuYW1lOiJBc2lhL0thbWNoYXRrYSIscnVsZXM6W3tlOjEyMjQ5NDMyZTUsczoxMjA2Nzk5MmU1fSx7ZToxMjU2MzkyOGU1LHM6MTIzODI0ODhlNX0se2U6MTI4ODQ1MDhlNSxzOjEyNjk2OTg0ZTV9LCExLCExLCExLCExXX0se25hbWU6IkFzaWEvS3Jhc25veWFyc2siLHJ1bGVzOlt7ZToxMjI0OTYxMmU1LHM6MTIwNjgxNzJlNX0se2U6MTI1NjQxMDhlNSxzOjEyMzgyNjY4ZTV9LHtlOjEyODg0NjUyZTUsczoxMjY5NzE2NGU1fSwhMSwhMSwhMSwhMV19LHtuYW1lOiJBc2lhL09tc2siLHJ1bGVzOlt7ZToxMjI0OTY0OGU1LHM6MTIwNjgyMDhlNX0se2U6MTI1NjQxNDRlNSxzOjEyMzgyNzA0ZTV9LHtlOjEyODg0Njg4ZTUsczoxMjY5NzJlN30sITEsITEsITEsITFdfSx7bmFtZToiQXNpYS9WbGFkaXZvc3RvayIscnVsZXM6W3tlOjEyMjQ5NTA0ZTUsczoxMjA2ODA2NGU1fSx7ZToxMjU2NGU4LHM6MTIzODI1NmU2fSx7ZToxMjg4NDU0NGU1LHM6MTI2OTcwNTZlNX0sITEsITEsITEsITFdfSx7bmFtZToiQXNpYS9ZYWt1dHNrIixydWxlczpbe2U6MTIyNDk1NGU2LHM6MTIwNjgxZTd9LHtlOjEyNTY0MDM2ZTUsczoxMjM4MjU5NmU1fSx7ZToxMjg4NDU4ZTYsczoxMjY5NzA5MmU1fSwhMSwhMSwhMSwhMV19LHtuYW1lOiJBc2lhL1lla2F0ZXJpbmJ1cmciLHJ1bGVzOlt7ZToxMjI0OTY4NGU1LHM6MTIwNjgyNDRlNX0se2U6MTI1NjQxOGU2LHM6MTIzODI3NGU2fSx7ZToxMjg4NDcyNGU1LHM6MTI2OTcyMzZlNX0sITEsITEsITEsITFdfSx7bmFtZToiQXNpYS9ZZXJldmFuIixydWxlczpbe2U6MTIyNDk3MmU2LHM6MTIwNjgyOGU2fSx7ZToxMjU2NDIxNmU1LHM6MTIzODI3NzZlNX0se2U6MTI4ODQ3NmU2LHM6MTI2OTcyNzJlNX0se2U6MTMxOTkyNTZlNSxzOjEzMDExNzY4ZTV9LCExLCExLCExXX0se25hbWU6IkF1c3RyYWxpYS9Mb3JkX0hvd2UiLHJ1bGVzOlt7ZToxMjA3NDA3NmU1LHM6MTIyMzEzNDJlNX0se2U6MTIzODg1NzJlNSxzOjEyNTQ1ODM4ZTV9LHtlOjEyNzAzMDY4ZTUsczoxMjg2MDMzNGU1fSx7ZToxMzAxNzU2NGU1LHM6MTMxNzQ4M2U2fSx7ZToxMzMzMjA2ZTYsczoxMzQ5NTM3NGU1fSx7ZToxMzY1MjYwNGU1LHM6MTM4MDk4N2U2fSx7ZToxMzk2NzFlNyxzOjE0MTI0MzY2ZTV9XX0se25hbWU6IkF1c3RyYWxpYS9QZXJ0aCIscnVsZXM6W3tlOjEyMDY4MTM2ZTUsczoxMjI0OTU3NmU1fSwhMSwhMSwhMSwhMSwhMSwhMV19LHtuYW1lOiJFdXJvcGUvSGVsc2lua2kiLHJ1bGVzOlt7ZToxMjI0OTgyOGU1LHM6MTIwNjgzODhlNX0se2U6MTI1NjQzMjRlNSxzOjEyMzgyODg0ZTV9LHtlOjEyODg0ODY4ZTUsczoxMjY5NzM4ZTZ9LHtlOjEzMTk5MzY0ZTUsczoxMzAxMTg3NmU1fSx7ZToxMzUxMzg2ZTYsczoxMzMyNjM3MmU1fSx7ZToxMzgyODM1NmU1LHM6MTM2NDY5MTZlNX0se2U6MTQxNDI4NTJlNSxzOjEzOTYxNDEyZTV9XX0se25hbWU6IkV1cm9wZS9NaW5zayIscnVsZXM6W3tlOjEyMjQ5NzkyZTUsczoxMjA2ODM1MmU1fSx7ZToxMjU2NDI4OGU1LHM6MTIzODI4NDhlNX0se2U6MTI4ODQ4MzJlNSxzOjEyNjk3MzQ0ZTV9LCExLCExLCExLCExXX0se25hbWU6IkV1cm9wZS9Nb3Njb3ciLHJ1bGVzOlt7ZToxMjI0OTc1NmU1LHM6MTIwNjgzMTZlNX0se2U6MTI1NjQyNTJlNSxzOjEyMzgyODEyZTV9LHtlOjEyODg0Nzk2ZTUsczoxMjY5NzMwOGU1fSwhMSwhMSwhMSwhMV19LHtuYW1lOiJQYWNpZmljL0FwaWEiLHJ1bGVzOlshMSwhMSwhMSx7ZToxMzAxNzUyOGU1LHM6MTMxNjg3MjhlNX0se2U6MTMzMzIwMjRlNSxzOjEzNDg5MjcyZTV9LHtlOjEzNjUyNTY4ZTUsczoxMzgwMzc2OGU1fSx7ZToxMzk2NzA2NGU1LHM6MTQxMTgyNjRlNX1dfSx7bmFtZToiUGFjaWZpYy9GaWppIixydWxlczpbITEsITEse2U6MTI2OTY5ODRlNSxzOjEyODc4NDI0ZTV9LHtlOjEzMjcxNTQ0ZTUsczoxMzE5MjkyZTZ9LHtlOjEzNTg2MDRlNixzOjEzNTA3NDE2ZTV9LHtlOjEzOTAwNWU3LHM6MTM4Mjc5NmU2fSx7ZToxNDIxNTAzMmU1LHM6MTQxNDg1MDRlNX1dfSx7bmFtZToiRXVyb3BlL0xvbmRvbiIscnVsZXM6W3tlOjEyMjQ5ODI4ZTUsczoxMjA2ODM4OGU1fSx7ZToxMjU2NDMyNGU1LHM6MTIzODI4ODRlNX0se2U6MTI4ODQ4NjhlNSxzOjEyNjk3MzhlNn0se2U6MTMxOTkzNjRlNSxzOjEzMDExODc2ZTV9LHtlOjEzNTEzODZlNixzOjEzMzI2MzcyZTV9LHtlOjEzODI4MzU2ZTUsczoxMzY0NjkxNmU1fSx7ZToxNDE0Mjg1MmU1LHM6MTM5NjE0MTJlNX1dfV19LHZvaWQgMCE9PWUuZXhwb3J0cz9lLmV4cG9ydHM9bzpudWxsIT09bi5hbWREJiZudWxsIT1uLmFtZE8/dm9pZCAwPT09KHI9ZnVuY3Rpb24oKXtyZXR1cm4gb30uYXBwbHkodCxbXSkpfHwoZS5leHBvcnRzPXIpOndpbmRvdy5qc3R6PW99LDk1MzU6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDQwNTUpLG89big3NzY3KSxpPW4oMzY1MCk7dC5BPSgpPT4oe2lzTmV3U2tpbjo1PT09KDAsci5kNCkoaS50bCl8fCgwLG8uYykoKX0pfSw5NTY5OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzNDgwKTt2YXIgbz0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmlzP09iamVjdC5pczpmdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKDAhPT1lfHwxL2U9PTEvdCl8fGUhPWUmJnQhPXR9LGk9ci51c2VTdGF0ZSxhPXIudXNlRWZmZWN0LHM9ci51c2VMYXlvdXRFZmZlY3QsYz1yLnVzZURlYnVnVmFsdWU7ZnVuY3Rpb24gdShlKXt2YXIgdD1lLmdldFNuYXBzaG90O2U9ZS52YWx1ZTt0cnl7dmFyIG49dCgpO3JldHVybiFvKGUsbil9Y2F0Y2goZSl7cmV0dXJuITB9fXZhciBsPSJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHx2b2lkIDA9PT13aW5kb3cuZG9jdW1lbnR8fHZvaWQgMD09PXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50P2Z1bmN0aW9uKGUsdCl7cmV0dXJuIHQoKX06ZnVuY3Rpb24oZSx0KXt2YXIgbj10KCkscj1pKHtpbnN0Ont2YWx1ZTpuLGdldFNuYXBzaG90OnR9fSksbz1yWzBdLmluc3QsbD1yWzFdO3JldHVybiBzKGZ1bmN0aW9uKCl7by52YWx1ZT1uLG8uZ2V0U25hcHNob3Q9dCx1KG8pJiZsKHtpbnN0Om99KX0sW2Usbix0XSksYShmdW5jdGlvbigpe3JldHVybiB1KG8pJiZsKHtpbnN0Om99KSxlKGZ1bmN0aW9uKCl7dShvKSYmbCh7aW5zdDpvfSl9KX0sW2VdKSxjKG4pLG59O3QudXNlU3luY0V4dGVybmFsU3RvcmU9dm9pZCAwIT09ci51c2VTeW5jRXh0ZXJuYWxTdG9yZT9yLnVzZVN5bmNFeHRlcm5hbFN0b3JlOmx9LDk2MDk6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtuLmQodCx7WkY6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sZWw6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgcj1uKDIwMzYpO2Z1bmN0aW9uIG8oKXtyZXR1cm4oMCxyLmVKKSgpfWZ1bmN0aW9uIGkoKXtyZXR1cm4oMCxyLmVKKSgpLnN1YnN0cmluZygxNil9fSw5NjQ1OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7IWZ1bmN0aW9uIGUoKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyYmImZ1bmN0aW9uIj09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRSl0cnl7X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGUpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9fSgpLGUuZXhwb3J0cz1uKDI3MTUpfSw5NjUxOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxMjQyKSxvPUZ1bmN0aW9uLnByb3RvdHlwZSxpPW8uYXBwbHksYT1vLmNhbGw7ZS5leHBvcnRzPSJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5hcHBseXx8KHI/YS5iaW5kKGkpOmZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoaSxhcmd1bWVudHMpfSl9LDk3MDY6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDI5OTQpLG89big4MDApLGk9bigxMjQyKSxhPXIoci5iaW5kKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbyhlKSx2b2lkIDA9PT10P2U6aT9hKGUsdCk6ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fX0sOTcyOTpmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybntpdGVyYXRvcjplLG5leHQ6ZS5uZXh0LGRvbmU6ITF9fX0sOTc0MzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNzcwOSksbz1uKDc1NzApLGk9big0NTUpLGE9Il9fY29yZS1qc19zaGFyZWRfXyIscz1lLmV4cG9ydHM9b1thXXx8aShhLHt9KTsocy52ZXJzaW9uc3x8KHMudmVyc2lvbnM9W10pKS5wdXNoKHt2ZXJzaW9uOiIzLjQ3LjAiLG1vZGU6cj8icHVyZSI6Imdsb2JhbCIsY29weXJpZ2h0OiJceGE5IDIwMTQtMjAyNSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSwgMjAyNSBDb3JlSlMgQ29tcGFueSAoY29yZS1qcy5pbykiLGxpY2Vuc2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuNDcuMC9MSUNFTlNFIixzb3VyY2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzIn0pfSw5NzYzOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big0MTc5KSxvPVtSZWZlcmVuY2VFcnJvcixUeXBlRXJyb3IsUmFuZ2VFcnJvcl0saT0hMTtmdW5jdGlvbiBhKCl7aT0hMSxyLl9CPW51bGwsci5fQz1udWxsfWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gdC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBlIGluc3RhbmNlb2YgdH0pfXQuZGlzYWJsZT1hLHQuZW5hYmxlPWZ1bmN0aW9uKGUpe2U9ZXx8e30saSYmYSgpO2k9ITA7dmFyIHQ9MCxuPTAsYz17fTtmdW5jdGlvbiB1KHQpeyhlLmFsbFJlamVjdGlvbnN8fHMoY1t0XS5lcnJvcixlLndoaXRlbGlzdHx8bykpJiYoY1t0XS5kaXNwbGF5SWQ9bisrLGUub25VbmhhbmRsZWQ/KGNbdF0ubG9nZ2VkPSEwLGUub25VbmhhbmRsZWQoY1t0XS5kaXNwbGF5SWQsY1t0XS5lcnJvcikpOihjW3RdLmxvZ2dlZD0hMCxmdW5jdGlvbihlLHQpe2NvbnNvbGUud2FybigiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uIChpZDogIitlKyIpOiIpLCgodCYmKHQuc3RhY2t8fHQpKSsiIikuc3BsaXQoIlxuIikuZm9yRWFjaChmdW5jdGlvbihlKXtjb25zb2xlLndhcm4oIiAgIitlKX0pfShjW3RdLmRpc3BsYXlJZCxjW3RdLmVycm9yKSkpfXIuX0I9ZnVuY3Rpb24odCl7Mj09PXQuX3kmJmNbdC5fRV0mJihjW3QuX0VdLmxvZ2dlZD9mdW5jdGlvbih0KXtjW3RdLmxvZ2dlZCYmKGUub25IYW5kbGVkP2Uub25IYW5kbGVkKGNbdF0uZGlzcGxheUlkLGNbdF0uZXJyb3IpOmNbdF0ub25VbmhhbmRsZWR8fChjb25zb2xlLndhcm4oIlByb21pc2UgUmVqZWN0aW9uIEhhbmRsZWQgKGlkOiAiK2NbdF0uZGlzcGxheUlkKyIpOiIpLGNvbnNvbGUud2FybignICBUaGlzIG1lYW5zIHlvdSBjYW4gaWdub3JlIGFueSBwcmV2aW91cyBtZXNzYWdlcyBvZiB0aGUgZm9ybSAiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uIiB3aXRoIGlkICcrY1t0XS5kaXNwbGF5SWQrIi4iKSkpfSh0Ll9FKTpjbGVhclRpbWVvdXQoY1t0Ll9FXS50aW1lb3V0KSxkZWxldGUgY1t0Ll9FXSl9LHIuX0M9ZnVuY3Rpb24oZSxuKXswPT09ZS5feCYmKGUuX0U9dCsrLGNbZS5fRV09e2Rpc3BsYXlJZDpudWxsLGVycm9yOm4sdGltZW91dDpzZXRUaW1lb3V0KHUuYmluZChudWxsLGUuX0UpLHMobixvKT8xMDA6MmUzKSxsb2dnZWQ6ITF9KX19fSw5Nzg4OmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse0QkOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LEdvOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LE1tOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LE5POmZ1bmN0aW9uKCl7cmV0dXJuIGl9LE9EOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LE9zOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LFNzOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LFZ3OmZ1bmN0aW9uKCl7cmV0dXJuIHN9LGFWOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7bGV0IHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuU0hPUElGWT0ic2hvcGlmeSIsZS5XT1JEUFJFU1M9IndvcmRwcmVzcyIsZS5XT09DT01NRVJDRT0id29vY29tbWVyY2UiLGUuT1RIRVJTPSJvdGhlcnMiLGV9KHt9KSxvPWZ1bmN0aW9uKGUpe3JldHVybiBlLlNNQUxMPSJzbWFsbCIsZS5NRURJVU09Im1lZGl1bSIsZS5MQVJHRT0ibGFyZ2UiLGV9KHt9KSxpPWZ1bmN0aW9uKGUpe3JldHVybiBlLk9OTFlfQlVCQkxFPSJvbmx5QnViYmxlIixlLk9OTFlfQlVCQkxFX1NNQUxMPSJvbmx5QnViYmxlU21hbGwiLGUuT05MWV9CVUJCTEVfTUVESVVNPSJvbmx5QnViYmxlTWVkaXVtIixlLk9OTFlfQlVCQkxFX0xBUkdFPSJvbmx5QnViYmxlTGFyZ2UiLGUuT05MWV9TSURFQkFSPSJvbmx5U2lkZWJhciIsZS5CVUJCTEVfV0lUSF9MQUJFTD0iYnViYmxlV2l0aExhYmVsIixlLkNIQVRfU0laRV8xPSJjaGF0U2l6ZTEiLGUuQ0hBVF9TSVpFXzI9ImNoYXRTaXplMiIsZS5DSEFUX1NJWkVfMz0iY2hhdFNpemUzIixlLk1PQklMRT0ibW9iaWxlIixlLkRZTkFNSUM9ImR5bmFtaWMiLGV9KHt9KSxhPWZ1bmN0aW9uKGUpe3JldHVybiBlLkNMT1NFRD0iY2xvc2VkIixlLkZMWT0iZmx5IixlLkNIQVQ9ImNoYXQiLGV9KHt9KSxzPWZ1bmN0aW9uKGUpe3JldHVybiBlLkVNQUlMPSJlbWFpbCIsZS5URVhUPSJ0ZXh0IixlLkxPTkdfVEVYVD0ibG9uZy10ZXh0IixlLk5VTUJFUj0ibnVtYmVyIixlLk5BTUU9Im5hbWUiLGUuUEhPTkU9InBob25lIixlLlVSTD0idXJsIixlLlNFTEVDVD0ic2VsZWN0IixlLk1VTFRJU0VMRUNUPSJtdWx0aXNlbGVjdCIsZS5DSEVDS0JPWD0iY2hlY2tib3giLGUuRklMRT0iZmlsZSIsZX0oe30pLGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuVEVYVD0idGV4dCIsZS5QUkVDSEFUPSJwcmVDaGF0IixlLlJBVEVfQ09OVkVSU0FUSU9OPSJyYXRlQ29udmVyc2F0aW9uIixlLkFMV0FZU19PTkxJTkU9ImFsd2F5c09ubGluZSIsZS5SQVRFX0NPTU1FTlRfR09PRD0icmF0ZUNvbnZlcnNhdGlvbkNvbW1lbnRSYXRlV2FzR29vZCIsZS5SQVRFX0NPTU1FTlRfQkFEPSJyYXRlQ29udmVyc2F0aW9uQ29tbWVudFJhdGVXYXNCYWQiLGUuVVBMT0FESU5HX0ZJTEU9InVwbG9hZGluZ0ZpbGUiLGUuVVBMT0FERURfRklMRT0idXBsb2FkZWRGaWxlIixlLkNBUkRfR0FMTEVSWT0iY2FyZEdhbGxlcnkiLGUuQlVUVE9OUz0iYnV0dG9ucyIsZS5DT1VQT05fQ09ERT0iY291cG9uQ29kZSIsZS5TWVNURU09InN5c3RlbSIsZS5DT05WRVJTQVRJT05fTUFSS0VEX0FTX1NPTFZFRD0iY29udmVyc2F0aW9uTWFya2VkQXNTb2x2ZWQiLGUuQVVUT01BVElDX1NVUlZFWT0icmF0ZUF1dG9tYXRpY1N1cnZleSIsZS5BVVRPTUFUSUNfU1VSVkVZX1JBVEVEPSJyYXRlZEF1dG9tYXRpY1N1cnZleSIsZS5BVVRPTUFUSUNfU1VSVkVZX0NPTU1FTlRFRD0iY29tbWVudEF1dG9tYXRpY1N1cnZleSIsZS5DUkVBVEVfVElDS0VUX1NVQ0NFU1M9ImNyZWF0ZVRpY2tldFN1Y2Nlc3MiLGUuRk9STT0iZm9ybSIsZS5GT1JNX1JFU1BPTlNFPSJmb3JtUmVzcG9uc2UiLGUuSUZSQU1FPSJpZnJhbWUiLGUuUkVDT01NRU5ERURfUFJPRFVDVFM9InJlY29tbWVuZGVkUHJvZHVjdHMiLGUuQUlfQVNTSVNUQU5UX1JFQ09NTUVOREVEX1BST0RVQ1RTPSJhaUFzc2lzdGFudFJlY29tbWVuZGVkUHJvZHVjdHMiLGV9KHt9KSx1PWZ1bmN0aW9uKGUpe3JldHVybiBlLk9QRVJBVE9SPSJvcGVyYXRvciIsZS5WSVNJVE9SPSJ2aXNpdG9yIixlLkJPVD0iYm90IixlLlNZU1RFTT0ic3lzdGVtIixlLkxPRz0ibG9nIixlfSh7fSksbD1mdW5jdGlvbihlKXtyZXR1cm4gZS5VTktOT1dOPSJ1bmtub3duIixlLldJTkRPV1M9IldpbmRvd3MiLGUuQU5EUk9JRD0iQW5kcm9pZCIsZS5JT1M9ImlPUyIsZS5PU1g9Ik9TIFgiLGUuVU5JWD0iVW5peCIsZS5MSU5VWD0iTGludXgiLGV9KHt9KSxkPWZ1bmN0aW9uKGUpe3JldHVybiBlLk1BSUxDSElNUD0ibWFpbGNoaW1wIixlLktMQVZJWU89ImtsYXZpeW8iLGUuTUFJTENISU1QX1YyPSJtYWlsY2hpbXBfdjIiLGUuR09PR0xFX0FOQUxZVElDU19HQTQ9ImdhX2dhNCIsZS5HT09HTEVfVEFHX01BTkFHRVI9Imdvb2dsZV90YWdfbWFuYWdlciIsZX0oe30pfSw5ODUzOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5kKHQse1JrOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LFNGOmZ1bmN0aW9uKCl7cmV0dXJuIG99LHNrOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7ZnVuY3Rpb24gcihlLHQsbil7dmFyIHI9IiI7cmV0dXJuIG4uc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZvaWQgMCE9PWVbbl0/dC5wdXNoKGVbbl0rIjsiKTpuJiYocis9bisiICIpfSkscn12YXIgbz1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5rZXkrIi0iK3QubmFtZTshMT09PW4mJnZvaWQgMD09PWUucmVnaXN0ZXJlZFtyXSYmKGUucmVnaXN0ZXJlZFtyXT10LnN0eWxlcyl9LGk9ZnVuY3Rpb24oZSx0LG4pe28oZSx0LG4pO3ZhciByPWUua2V5KyItIit0Lm5hbWU7aWYodm9pZCAwPT09ZS5pbnNlcnRlZFt0Lm5hbWVdKXt2YXIgaT10O2Rve2UuaW5zZXJ0KHQ9PT1pPyIuIityOiIiLGksZS5zaGVldCwhMCksaT1pLm5leHR9d2hpbGUodm9pZCAwIT09aSl9fX0sOTg1NzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LHtKRDpmdW5jdGlvbigpe3JldHVybiBhfSxpXzpmdW5jdGlvbigpe3JldHVybiByfSxzeTpmdW5jdGlvbigpe3JldHVybiBvfSx1VDpmdW5jdGlvbigpe3JldHVybiBpfX0pO2NvbnN0IHI9InNlbnRyeS5zb3VyY2UiLG89InNlbnRyeS5zYW1wbGVfcmF0ZSIsaT0ic2VudHJ5Lm9wIixhPSJzZW50cnkub3JpZ2luIn0sOTg4MjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXt9O3JbbigxMzg1KSgidG9TdHJpbmdUYWciKV09InoiLGUuZXhwb3J0cz0iW29iamVjdCB6XSI9PT1TdHJpbmcocil9LDk5MzI6ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDgwMCksbz1uKDczOTkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWVbdF07cmV0dXJuIG8obik/dm9pZCAwOnIobil9fSw5OTMzOmZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sOTk1MzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNjY3NCksbz1uKDM0ODkpLGk9big5NzkpLGE9big1MDI3KSxzPW4oMTQzMCksYz1uKDEwMzIpLkNPTkZJR1VSQUJMRSx1PW4oNzk0OCksbD1uKDg1MzkpLGQ9bC5lbmZvcmNlLGY9bC5nZXQscD1TdHJpbmcsaD1PYmplY3QuZGVmaW5lUHJvcGVydHksbT1yKCIiLnNsaWNlKSxnPXIoIiIucmVwbGFjZSkseT1yKFtdLmpvaW4pLHY9cyYmIW8oZnVuY3Rpb24oKXtyZXR1cm4gOCE9PWgoZnVuY3Rpb24oKXt9LCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSksYj1TdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIiksdz1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4peyJTeW1ib2woIj09PW0ocCh0KSwwLDcpJiYodD0iWyIrZyhwKHQpLC9eU3ltYm9sXCgoW14pXSopXCkuKiQvLCIkMSIpKyJdIiksbiYmbi5nZXR0ZXImJih0PSJnZXQgIit0KSxuJiZuLnNldHRlciYmKHQ9InNldCAiK3QpLCghYShlLCJuYW1lIil8fGMmJmUubmFtZSE9PXQpJiYocz9oKGUsIm5hbWUiLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMH0pOmUubmFtZT10KSx2JiZuJiZhKG4sImFyaXR5IikmJmUubGVuZ3RoIT09bi5hcml0eSYmaChlLCJsZW5ndGgiLHt2YWx1ZTpuLmFyaXR5fSk7dHJ5e24mJmEobiwiY29uc3RydWN0b3IiKSYmbi5jb25zdHJ1Y3Rvcj9zJiZoKGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSk6ZS5wcm90b3R5cGUmJihlLnByb3RvdHlwZT12b2lkIDApfWNhdGNoKGUpe312YXIgcj1kKGUpO3JldHVybiBhKHIsInNvdXJjZSIpfHwoci5zb3VyY2U9eShiLCJzdHJpbmciPT10eXBlb2YgdD90OiIiKSksZX07RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nPXcoZnVuY3Rpb24oKXtyZXR1cm4gaSh0aGlzKSYmZih0aGlzKS5zb3VyY2V8fHUodGhpcyl9LCJ0b1N0cmluZyIpfX0saT17fTtmdW5jdGlvbiBhKGUpe3ZhciB0PWlbZV07aWYodm9pZCAwIT09dClyZXR1cm4gdC5leHBvcnRzO3ZhciBuPWlbZV09e2lkOmUsbG9hZGVkOiExLGV4cG9ydHM6e319O3JldHVybiBvW2VdLmNhbGwobi5leHBvcnRzLG4sbi5leHBvcnRzLGEpLG4ubG9hZGVkPSEwLG4uZXhwb3J0c31hLm09byxhLmFtZEQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoImRlZmluZSBjYW5ub3QgYmUgdXNlZCBpbmRpcmVjdCIpfSxhLmFtZE89e30sYS5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBhLmQodCx7YTp0fSksdH0sdD1PYmplY3QuZ2V0UHJvdG90eXBlT2Y/ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffSxhLnQ9ZnVuY3Rpb24obixyKXtpZigxJnImJihuPXRoaXMobikpLDgmcilyZXR1cm4gbjtpZigib2JqZWN0Ij09dHlwZW9mIG4mJm4pe2lmKDQmciYmbi5fX2VzTW9kdWxlKXJldHVybiBuO2lmKDE2JnImJiJmdW5jdGlvbiI9PXR5cGVvZiBuLnRoZW4pcmV0dXJuIG59dmFyIG89T2JqZWN0LmNyZWF0ZShudWxsKTthLnIobyk7dmFyIGk9e307ZT1lfHxbbnVsbCx0KHt9KSx0KFtdKSx0KHQpXTtmb3IodmFyIHM9MiZyJiZuOygib2JqZWN0Ij09dHlwZW9mIHN8fCJmdW5jdGlvbiI9PXR5cGVvZiBzKSYmIX5lLmluZGV4T2Yocyk7cz10KHMpKU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHMpLmZvckVhY2goZnVuY3Rpb24oZSl7aVtlXT1mdW5jdGlvbigpe3JldHVybiBuW2VdfX0pO3JldHVybiBpLmRlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sYS5kKG8saSksb30sYS5kPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpYS5vKHQsbikmJiFhLm8oZSxuKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMCxnZXQ6dFtuXX0pfSxhLmY9e30sYS5lPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhhLmYpLnJlZHVjZShmdW5jdGlvbih0LG4pe3JldHVybiBhLmZbbl0oZSx0KSx0fSxbXSkpfSxhLnU9ZnVuY3Rpb24oZSl7cmV0dXJuIjFfNDQ3XzAvc3RhdGljL2pzL2NodW5rLSIrezEyNjoidmlzdWFsUmVncmVzaW9uSGVscGVycyIsMTMxOiJJbmNvbWluZ1ZpZGVvQ2FsbE1vZGFsIiwxODE6IkVtb2ppUGlja2VyIiw0MDI6IkFkZEFuc3dlciIsNTY2OiJJbWFnZSIsNzQyOiJJZnJhbWVNb2RhbCIsOTg3OiJXaWRnZXRJZnJhbWUifVtlXSsiLSIrYS5oKCkrIi5qcyJ9LGEuaD1mdW5jdGlvbigpe3JldHVybiJjMjAxYTM0ZWYxYmZkYjc4NmZiYSJ9LGEuZz1mdW5jdGlvbigpe2lmKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpczt0cnl7cmV0dXJuIHRoaXN8fG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfWNhdGNoKGUpe2lmKCJvYmplY3QiPT10eXBlb2Ygd2luZG93KXJldHVybiB3aW5kb3d9fSgpLGEubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sbj17fSxyPSJ0aWRpb193aWRnZXRfdjQ6IixhLmw9ZnVuY3Rpb24oZSx0LG8saSl7aWYobltlXSluW2VdLnB1c2godCk7ZWxzZXt2YXIgcyxjO2lmKHZvaWQgMCE9PW8pZm9yKHZhciB1PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxsPTA7bDx1Lmxlbmd0aDtsKyspe3ZhciBkPXVbbF07aWYoZC5nZXRBdHRyaWJ1dGUoInNyYyIpPT1lfHxkLmdldEF0dHJpYnV0ZSgiZGF0YS13ZWJwYWNrIik9PXIrbyl7cz1kO2JyZWFrfX1zfHwoYz0hMCwocz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSkuY2hhcnNldD0idXRmLTgiLGEubmMmJnMuc2V0QXR0cmlidXRlKCJub25jZSIsYS5uYykscy5zZXRBdHRyaWJ1dGUoImRhdGEtd2VicGFjayIscitvKSxzLnNyYz1lKSxuW2VdPVt0XTt2YXIgZj1mdW5jdGlvbih0LHIpe3Mub25lcnJvcj1zLm9ubG9hZD1udWxsLGNsZWFyVGltZW91dChwKTt2YXIgbz1uW2VdO2lmKGRlbGV0ZSBuW2VdLHMucGFyZW50Tm9kZSYmcy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHMpLG8mJm8uZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZShyKX0pLHQpcmV0dXJuIHQocil9LHA9c2V0VGltZW91dChmLmJpbmQobnVsbCx2b2lkIDAse3R5cGU6InRpbWVvdXQiLHRhcmdldDpzfSksMTJlNCk7cy5vbmVycm9yPWYuYmluZChudWxsLHMub25lcnJvcikscy5vbmxvYWQ9Zi5iaW5kKG51bGwscy5vbmxvYWQpLGMmJmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyl9fSxhLnI9ZnVuY3Rpb24oZSl7InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sYS5ubWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGF0aHM9W10sZS5jaGlsZHJlbnx8KGUuY2hpbGRyZW49W10pLGV9LGEucD0iaHR0cHM6Ly9jb2RlLnRpZGlvLmNvL3dpZGdldC12NC8iLGZ1bmN0aW9uKCl7dmFyIGU9ezMwMzowfTthLmYuaj1mdW5jdGlvbih0LG4pe3ZhciByPWEubyhlLHQpP2VbdF06dm9pZCAwO2lmKDAhPT1yKWlmKHIpbi5wdXNoKHJbMl0pO2Vsc2V7dmFyIG89bmV3IFByb21pc2UoZnVuY3Rpb24obixvKXtyPWVbdF09W24sb119KTtuLnB1c2goclsyXT1vKTt2YXIgaT1hLnArYS51KHQpLHM9bmV3IEVycm9yO2EubChpLGZ1bmN0aW9uKG4pe2lmKGEubyhlLHQpJiYoMCE9PShyPWVbdF0pJiYoZVt0XT12b2lkIDApLHIpKXt2YXIgbz1uJiYoImxvYWQiPT09bi50eXBlPyJtaXNzaW5nIjpuLnR5cGUpLGk9biYmbi50YXJnZXQmJm4udGFyZ2V0LnNyYztzLm1lc3NhZ2U9IkxvYWRpbmcgY2h1bmsgIit0KyIgZmFpbGVkLlxuKCIrbysiOiAiK2krIikiLHMubmFtZT0iQ2h1bmtMb2FkRXJyb3IiLHMudHlwZT1vLHMucmVxdWVzdD1pLHJbMV0ocyl9fSwiY2h1bmstIit0LHQpfX07dmFyIHQ9ZnVuY3Rpb24odCxuKXt2YXIgcixvLGk9blswXSxzPW5bMV0sYz1uWzJdLHU9MDtpZihpLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIDAhPT1lW3RdfSkpe2ZvcihyIGluIHMpYS5vKHMscikmJihhLm1bcl09c1tyXSk7aWYoYyljKGEpfWZvcih0JiZ0KG4pO3U8aS5sZW5ndGg7dSsrKW89aVt1XSxhLm8oZSxvKSYmZVtvXSYmZVtvXVswXSgpLGVbb109MH0sbj1zZWxmLndlYnBhY2tDaHVua3RpZGlvX3dpZGdldF92ND1zZWxmLndlYnBhY2tDaHVua3RpZGlvX3dpZGdldF92NHx8W107bi5mb3JFYWNoKHQuYmluZChudWxsLDApKSxuLnB1c2g9dC5iaW5kKG51bGwsbi5wdXNoLmJpbmQobikpfSgpLHNldFRpbWVvdXQoKCk9PnthKDIyNzkpLHNldFRpbWVvdXQoKCk9PmEoNTM1NSksMCl9LDApfSgpOw=="}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"metrics-collector.tidio.co/metrics/WidgetRegistry/observe","fqdn":"metrics-collector.tidio.co","domain":"tidio.co","tld":"co"},"ip":{"addr":"104.26.0.115","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:17.097Z","timestamp":1785145637097,"http_version":"HTTP/2","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":"tidio.co","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 21 Jun 2026 20:02:32 GMT","end":"Sat, 19 Sep 2026 21:02:13 GMT"},"fingerprint":{"sha1":"B4:2F:9E:39:BF:54:A9:3D:84:9B:3D:A5:1E:C6:7A:DE:29:83:DC:D2","sha256":"CF:10:9D:C6:D1:72:BD:AB:36:BF:B0:F3:01:C9:0F:59:EA:1D:4A:4A:8A:18:0E:B4:82:77:9B:92:D7:AE:5E:4E"}}},"request":{"raw":"POST /metrics/WidgetRegistry/observe HTTP/1.1\r\nHost: metrics-collector.tidio.co\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\nReferer: https://bit-core.top/\r\nContent-Type: application/json\r\nContent-Length: 197\r\nOrigin: https://bit-core.top\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"POST","post_data":{"size":197,"data":"{\"metrics\":[{\"metric\":\"widget_ws_initial_connection_in_ms\",\"value\":271},{\"metric\":\"widget_total_load_in_ms\",\"value\":752},{\"metric\":\"widget_js_total_load_in_ms\",\"value\":255}],\"deviceType\":\"desktop\"}"}},"response":{"raw":"HTTP/2 201 \r\ndate: Mon, 27 Jul 2026 09:47:17 GMT\r\ncontent-length: 0\r\naccess-control-allow-origin: *\r\ncf-cache-status: DYNAMIC\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=lmzw%2BnPsui3icqAFFvJAljCUB5KCW1I4Na5mUIr%2BQnDgX8v%2BVnXnQNSi%2BQfETrplw6RyIiy8RvKzI9flVniNzLJOokkmjA2baW9QO%2FxmNg2ZEHz9%2Bf31p5rOzE6sVjdn1LhLpPeOr7aftZud\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nserver: cloudflare\r\ncf-ray: a21ab8c93a5656cb-OSL\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"201","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"]}],"data":{"size":0,"size_decoded":1282,"mime_type":"text/plain","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-29T06:56:24.505941Z","times_seen":17593773,"resource_available":true,"data":""}},"time_used":59,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":59,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"api-iam.intercom.io/messenger/web/ping","fqdn":"api-iam.intercom.io","domain":"intercom.io","tld":"io"},"ip":{"addr":"52.2.13.117","port":443,"asn":14618,"as":"AMAZON-AES","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"xhr","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:17.169Z","timestamp":1785145637169,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.intercom.com","organization":""},"issuer":{"commonName":"Amazon RSA 2048 M04","organization":"Amazon"},"validity":{"start":"Thu, 13 Nov 2025 00:00:00 GMT","end":"Fri, 11 Dec 2026 23:59:59 GMT"},"fingerprint":{"sha1":"E2:7C:0F:4C:CC:B1:6F:45:04:99:4A:D4:CB:5C:0B:60:CA:75:CD:8E","sha256":"A6:51:D4:CB:51:4E:EF:B9:AD:B6:95:84:A1:3B:92:C1:BF:81:F5:22:36:A3:50:A2:8E:92:09:4A:15:D0:7E:CC"}}},"request":{"raw":"POST /messenger/web/ping HTTP/1.1\r\nHost: api-iam.intercom.io\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\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 397\r\nOrigin: https://bit-core.top\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://bit-core.top/\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"POST","post_data":{"size":397,"data":"app_id=p60ru8yf\u0026v=3\u0026g=66bb81a04b6586d610d306b31f5535a175253c0c\u0026s=f1b3322a-825f-4e3b-91a8-6d4ca5d99e26\u0026r=\u0026platform=web\u0026installation_type=js-snippet\u0026installation_version=undefined\u0026Idempotency-Key=7ce60e7c9e2f3006\u0026internal=%7B%7D\u0026is_intersection_booted=false\u0026page_title=bit-core.top\u0026user_active_company_id=undefined\u0026user_data=%7B%7D\u0026source=apiBoot\u0026sampling=false\u0026referer=https%3A%2F%2Fbit-core.top%2F"}},"response":{"raw":"HTTP/2 403 \r\ndate: Mon, 27 Jul 2026 09:47:17 GMT\r\ncontent-type: application/json; charset=utf-8\r\nstatus: 403 Forbidden\r\nvary: Accept-Encoding, Accept\r\nx-intercom-version: 79771425bbe06a5229fb046ba0643ee6ad9dd05e\r\naccess-control-expose-headers: x-request-id, x-runtime\r\nx-request-id: 001pqlfijfhomjo8fgtg\r\nx-frame-options: SAMEORIGIN\r\ncache-control: no-cache\r\naccess-control-allow-origin: https://bit-core.top\r\nstrict-transport-security: max-age=31556952; includeSubDomains; preload\r\nreferrer-policy: strict-origin-when-cross-origin\r\naccess-control-max-age: 86400\r\nx-xss-protection: 1; mode=block\r\nx-request-queueing: 0\r\ntiming-allow-origin: *\r\naccess-control-allow-headers: Content-Type, Idempotency-Key, X-INTERCOM-APP, X-INTERCOM-PAGE-TITLE, X-INTERCOM-USER-DATA, traceparent, X-Continue-Intercom-Trace\r\naccess-control-allow-credentials: true\r\naccess-control-allow-methods: POST, GET, OPTIONS\r\nx-runtime: 0.014348\r\nx-content-type-options: nosniff\r\nserver: nginx\r\ncontent-encoding: gzip\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"403","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Nginx","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":113,"size_decoded":1134,"mime_type":"application/json; charset=utf-8","magic":"JSON text data","md5":"684c5ad0edfecfb4a20ba22d6d0a8ded","sha1":"888a55a58f490bd053a72c97faa311efb2a2843e","sha256":"140a2e82c0fdfbc84dc10d8a100b9ee48be853d677c5b146578d563131880a23","sha512":"b0016c20732f1af7921babeab0e86a0b7c3f41f8f7e2db9d6c60d6421cdfe0577c62f762a3648154f4a73d51469169a6ad158c18bad9810112f9a586cbcebb65","ssdeep":"","tlshash":"13b0121f815becb7df9100abec4e109285e8d0e2b4e004ca889a915c854e106951725a","first_seen":"2026-07-27T09:47:52.617364Z","last_seen":"2026-07-27T09:47:52.617364Z","times_seen":1,"resource_available":false,"data":"eyJ0eXBlIjoiZXJyb3IubGlzdCIsInJlcXVlc3RfaWQiOiIwMDFwcWxmaWpmaG9tam84Zmd0ZyIsImVycm9ycyI6W3siY29kZSI6ImJsb2NrZWQiLCJtZXNzYWdlIjoiQXBwIHN1c3BlbmRlZCJ9XX0="}},"time_used":403,"timings":{"blocked":0,"dns":0,"connect":93,"send":0,"wait":122,"receive":0,"ssl":188},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bit-core.top/img/blue-oval.png","fqdn":"bit-core.top","domain":"bit-core.top","tld":"top"},"ip":{"addr":"2.57.91.215","port":443,"asn":47583,"as":"Hostinger International Limited","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://bit-core.top/","date":"2026-07-27T09:47:16.145Z","timestamp":1785145636145,"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":"bit-core.top","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 10 Jun 2026 00:10:05 GMT","end":"Tue, 08 Sep 2026 00:10:04 GMT"},"fingerprint":{"sha1":"B4:0D:27:56:EB:73:78:63:FF:DD:1E:7E:7E:F4:BD:9A:25:CA:94:64","sha256":"E4:8B:F1:85:C3:76:93:72:39:EB:D3:4D:A9:08:0B:1F:39:39:7B:E7:ED:46:9D:5F:5A:25:32:94:F5:A6:14:EA"}}},"request":{"raw":"GET /img/blue-oval.png HTTP/1.1\r\nHost: bit-core.top\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://bit-core.top/css/main.css?v=1684946825\r\nCookie: PHPSESSID=7d00072f40b00a82b09100afcbf12c7f\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 200 \r\ndate: Mon, 27 Jul 2026 09:47:16 GMT\r\ncontent-type: image/webp\r\ncontent-length: 135130\r\ncache-control: public, max-age=604800\r\nage: 6412\r\nserver: hcdn\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-hcdn-request-id: 665fe15dc6b85f217e48416219843e57-fra-edge4\r\nx-hcdn-cache-status: HIT\r\naccept-ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger CDN","description":"Hostinger Content Delivery Network (CDN).","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["CDN"]}],"data":{"size":135130,"size_decoded":135437,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"edf5e84116685f9d7cb319e5c6cd252a","sha1":"5d47243080bdd6697a3fce52373464d4abeb04c3","sha256":"a643526532f44eb9b0279d76eace5727882772b13b12b4ab3ee1f50f5acee83e","sha512":"89a1de8e7676f28bee722f5f511fc667951d0b86d49be5adb754cb4d015ba9c5a01b30fea17430379162c9f18ac1551d2667dae1370c6fdc67eea128513941c1","ssdeep":"3072:6bGei4Op9vXUCP/aSeH5LzQtqa9ERhVFoktPk1eWCjBAgR+kuiwS1gL:6Cei4OzPUo/aX5QtqKqhV+1eWM9kk9+L","tlshash":"58d31228771c3462cd891bbbdabea0d5b220c51395f726a15e8d501ed3b286efc3d4e1","first_seen":"2026-07-27T08:06:16.606072Z","last_seen":"2026-07-27T09:48:29.861246Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":64,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":21,"receive":43,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}}]}
